Fix handling of relocations against TLS section symbols.
[platform/upstream/binutils.git] / gold / ChangeLog
1 2014-09-26  Cary Coutant  <ccoutant@google.com>
2
3         PR gold/16773
4         * object.cc (Sized_relobj_file): Compute value of section symbols
5         for TLS sections the same as TLS symbols.
6
7 2014-09-25  Cary Coutant  <ccoutant@google.com>
8
9         PR gold/17432
10         * resolve.cc (Symbol_table::resolve): Override common placeholder
11         symbols, but adjust sizes.
12         * symtab.cc (Symbol_table::add_from_object): Don't add placeholder
13         symbols to common lists.
14
15 2014-09-24  Alan Modra  <amodra@gmail.com>
16
17         * po/POTFILES.in: Regenerate.
18
19 2014-09-23  Taiju Tsuiki  <tzik@google.com>
20             Cary Coutant  <ccoutant@google.com>
21
22         PR gold/14860
23         * gold.cc (queue_final_tasks): Add Write_sections_task as a blocker
24         on input_sections_blocker.
25         * layout.cc (Write_sections_task::locks): Unblock
26         input_sections_blocker_.
27         * layout.h (Write_sections_task::Write_sections_task): Add
28         input_sections_blocker.
29         * testsuite/Makefile.am (exception_x86_64_bnd_test): Add gcctestdir/ld
30         to DEPENDENCIES.
31         * testsuite/Makefile.in: Regenerate.
32
33 2014-09-18  Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
34
35         * testsuite/Makefile.am (plugin_test_10): New test.
36         * testsuite/Makefile.in: Regenerate
37         * testsuite/plugin_common_test_2.c (c1): Align to 8.
38         * testsuite/plugin_test_10.sh: New file.
39
40 2014-09-17  Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
41
42         * plugin.cc (Sized_pluginobj::do_add_symbols): Ignore isym->size.
43         * resolve.cc (Symbol_table::resolve): Don't override common symbols
44         during the replacement phase.
45
46 2014-09-17  Han Shen  <shenhan@google.com>
47             Jing Yu  <jingyu@google.com>
48
49         * aarch64-reloc.def: Add TLSGD_ADR_PAGE21, TLSGD_ADD_LO12_NC,
50         TLSDESC_ADR_PAGE21, TLSDESC_LD64_LO12, TLSDESC_ADD_LO12, TLSDESC_CALL.
51         * aarch64.cc (Target_aarch64): Add data members
52         got_irelative_, got_tlsdesc_, rela_irelative_, got_mod_index_offset_,
53         tlsdesc_reloc_info_, tls_base_symbol_defined_. Initialize them in
54         constructor.
55         (Target_aarch64::do_reloc_symbol_index): New method.
56         (Target_aarch64::do_reloc_addend): New method.
57         (Target_aarch64::add_tlsdesc_info): New method.
58         (Target_aarch64::do_dynsym_value): New method.
59         (Target_aarch64::do_make_data_plt): Add new parameters: got,
60         got_irelative. Pass them to Output_data_plt_aarch64_standard.
61         (Target_aarch64::make_data_plt): Add new parameters: got,
62         got_irelative. Pass them to do_make_data_plt.
63         (Target_aarch64::Relocate): Add skip_call_tls_get_addr_ variable.
64         (Target_aarch64::Relocate:tls_gd_to_le): New method.
65         (Target_aarch64::Relocate:tls_ie_to_le): New method.
66         (Target_aarch64::Relocate:tls_desc_gd_to_le): New method.
67         (Target_aarch64::Relocate:tls_desc_gd_to_ie): New method.
68         (Target_aarch64::got_tlsdesc_section): New method.
69         (Target_aarch64::make_local_ifunc_plt_entry): New method.
70         (Target_aarch64::define_tls_base_symbol): New method.
71         (Target_aarch64::reserve_tlsdesc_entries): New method.
72         (Target_aarch64::got_mod_index_entry): New method.
73         (Target_aarch64::rela_tlsdesc_section): New method.
74         (Target_aarch64::rela_irelative_section): New method.
75         (Target_aarch64::Tlsdesc_info): New struct.
76         (Target_aarch64::got_section): Create .got.plt space for IRELATIVE
77         relocations and tlsdesc relocations.
78         (Target_aarch64::optimize_tls_reloc): Implement method.
79         (Output_data_plt_aarch64): Add member variables: tlsdesc_rel_, got_,
80         got_irelative_, irelative_count_, tlsdesc_got_offset_. Initialize them
81         in constructor.
82         (Output_data_plt_aarch64::reserve_tlsdesc_entry): New method.
83         (Output_data_plt_aarch64::has_tlsdesc_entry): New method.
84         (Output_data_plt_aarch64::get_tlsdesc_got_offset): New method.
85         (Output_data_plt_aarch64::get_tlsdesc_plt_offset): New method.
86         (Output_data_plt_aarch64::rela_tlsdesc): New method.
87         (Output_data_plt_aarch64::rela_irelative): New method.
88         (Output_data_plt_aarch64::entry_count): Count IRELATIVE relocations.
89         (Output_data_plt_aarch64::first_plt_entry_offset): Add const attribute.
90         (Output_data_plt_aarch64::get_plt_tlsdesc_entry_size): New method.
91         (Output_data_plt_aarch64::fill_tlsdesc_entry): New method.
92         (Output_data_plt_aarch64::do_get_plt_tlsdesc_entry_size): New method.
93         (Output_data_plt_aarch64::do_fill_tlsdesc_entry): New method.
94         (Output_data_plt_aarch64_standard): New member variables:
95         plt_tlsdesc_entry_size, tlsdesc_plt_entry.
96         (Output_data_plt_aarch64_standard::Output_data_plt_aarch64_standard):
97         New parameter: got, got_irelative.
98         (Output_data_plt_aarch64_standard::do_get_plt_entry_size): New method.
99         (Output_data_plt_aarch64_standard::do_fill_tlsdesc_entry): New method.
100         (Output_data_plt_aarch64::do_write): Replace got_address with
101         gotplt_address. Add irelative_count_ to count. Write tlsdesc entry.
102         (AArch64_relocate_functions::update_movnz): New method.
103         (AArch64_relocate_functions): Correct format.
104         (AArch64_relocate_functions::movnz): New method.
105         (Target_aarch64::Scan::local): Correct format. Move r_sym, got to
106         before the switch. Add new cases to switch.
107         Check ie_to_le relaxation on tlsie relocations. Add code handling
108         tlsgd tlsdesc cases.
109         (Target_aarch64::Scan::global): Move arp to front. Do copy_reloc when
110         needed. Add new cases to switch. Insert dynamic RELATIVE relocation
111         when needed. Add code handling tlsgd, tlsie, tlsdesc cases.
112         Call reloc_name_in_error_message to print unsupported reloc.
113         (Target_aarch64::make_plt_section): Pass got_ and got_irelative_ to
114         make_data_plt.
115         (Target_aarch64::do_finalize_sections): Emit relocs to save COPY
116         relocs. Fill in some more dynamic tags.
117         (Target_aarch64::Relocate::relocate): Handle tlsgd, tlsdesc relocs.
118         Skip call tls_get_addr when tlsgd is relaxed.
119         (Target_aarch64::Relocate::relocate_tls): Correct format. Add code
120         handling tlsgd, tlsdesc relocs, and tls gd->le, ie->le, tlsdesc->le,
121         tlsdesc->ie relaxation.
122
123 2014-09-03  Sasa Stankovic  <Sasa.Stankovic@imgtec.com>
124
125         * mips.cc (Target_mips_nacl): New class.
126         (Target_selector_mips_nacl): New class.
127         (target_selector_mips32): Rename from target_selector_mips32be and use
128         Target_selector_mips_nacl instead of Target_selector_mips.
129         (target_selector_mips32el): Rename from target_selector_mips32 and use
130         Target_selector_mips_nacl instead of Target_selector_mips.
131         (target_selector_mips64): Rename from target_selector_mips64be and use
132         Target_selector_mips_nacl instead of Target_selector_mips.
133         (target_selector_mips64el): Rename from target_selector_mips64 and use
134         Target_selector_mips_nacl instead of Target_selector_mips.
135         (Target_mips::mips_info): Add const attribute.
136
137 2014-09-02  Cary Coutant  <ccoutant@google.com>
138
139         * dwp.cc (Sized_relobj_dwo::do_section_name): Add const attribute.
140         * dynobj.h (Sized_dynobj::do_section_name): Likewise.
141         * incremental.cc (Sized_relobj_incr::do_section_name): Likewise.
142         (Sized_incr_dynobj::do_section_name): Likewise.
143         * incremental.h (Sized_relobj_incr::do_section_name): Likewise.
144         (Sized_incr_dynobj::do_section_name): Likewise.
145         * object.h (Object::section_name): Likewise.
146         (Object::do_section_name): Likewise.
147         (Sized_relobj_file::do_section_name): Likewise.
148         * plugin.cc (Sized_pluginobj::do_section_name): Likewise.
149         * plugin.h (Sized_pluginobj::do_section_name): Likewise.
150
151 2014-09-02  Cary Coutant  <ccoutant@google.com>
152
153         PR gold/17005
154         * ehframe.cc (Fde::write): Add output_offset parameter.
155         (Cie::write): Likewise.
156         (Eh_frame::set_final_data_size): Account for offset within output
157         section.
158         (Eh_frame::do_sized_write): Likewise.
159         * ehframe.h (Fde::write): Add output_offset parameter.
160         (Cie::write): Likewise.
161         * output.cc (Output_section::Input_section_sort_entry): Remove
162         section_has_name_; add output_section_name parameter. Use
163         output section name for non-input sections.
164         (Output_section::Input_section_sort_entry::section_has_name): Remove.
165         (Output_section::Input_section_sort_entry::section_has_name_): Remove.
166         (Output_section::Input_section_sort_compare): Remove logic for
167         sections without names.
168         (Output_section::Input_section_sort_init_fini_compare): Likewise.
169         (Output_section::Input_section_sort_section_prefix_special_ordering_compare):
170         Likewise.
171         (Output_section::Input_section_sort_section_name_compare): Likewise.
172
173 2014-08-29 Han Shen <shenhan@google.com>
174            Jing Yu <jingyu@google.com>
175
176         * aarch64-reloc-property.cc
177         (AArch64_reloc_property_table::reloc_name_in_error_message): Fix bug in
178         reference reloc property in the table.
179         * aarch64-reloc.def: Add TLSLE reloc types and fix some errors in
180         3 other entries.
181         * aarch64.cc: (Output_data_got_aarch64::add_static_reloc):
182         2 new overloaded methods.
183         (Output_data_got_aarch64::do_write): Add code to write out
184         static relocs.
185         (class Output_data_got_aarch64::Static_reloc): New class to wrap
186         static relocs.
187         (Output_data_got_aarch64::static_relocs): New vector to
188         hold static relocs.
189         (Target_aarch64::TCB_SIZE): New const static memeber.
190         (Target_aarch64::tcb_size): New method.
191         (Target_aarch64::Relocate::relocate): Add code handling new reloc types.
192         (Target_aarch64::Relocate::relocate_tls): New method.
193         (Target_aarch64::Scan::local): Add code handling new reloc types.
194         (Target_aarch64::Scan::global): Add code handling new reloc types.
195
196 2014-08-13  Sriraman Tallam  <tmsriram@google.com>
197
198         * options.h (-no-pie): Add option.
199
200 2014-08-08  Jing Yu  <jingyu@google.com>
201             Han Shen  <shenhan@google.com>
202
203         * Makefile.am (HFILES): Add aarch64-reloc-property.h.
204         (DEFFILES): add aarch64-reloc.def.
205         (TARGETSOURCES): Add aarch64-reloc-property.cc.
206         (ALL_TARGETOBJS): Add aarch64-reloc-property.$(OBJEXT).
207         * Makefile.in: Regenerate.
208         * aarch64-reloc-property.cc: New file.
209         * aarch64-reloc-property.h: New file.
210         * aarch64-reloc.def: New file.
211         * aarch64.cc: Include aarch64-reloc-property.h. Replace spaces
212         with tab to make the format consistent.
213         (Output_data_got_aarch64::symbol_table_): New method.
214         (Target_aarch64::do_plt_address_for_global): New method.
215         (Target_aarch64::do_plt_address_for_local): New method.
216         (Target_aarch64::do_select_as_default_target): New method.
217         (Target_aarch64::do_make_data_plt): New method.
218         (Target_aarch64::make_data_plt): New method.
219         (Output_data_plt_aarch64::has_irelative_section): New method.
220         (Output_data_plt_aarch64::address_for_global): New method.
221         (Output_data_plt_aarch64::address_for_local): New method.
222         (Output_data_plt_aarch64::irelative_rel_): New parameter.
223         (Output_data_plt_aarch64::add_entry): Implement contents.
224         (Output_data_plt_aarch64::set_final_data_size): Fix typo.
225         (Output_data_plt_aarch64::do_write): Remove useless got_base. Set
226         the got_pov entry to plt0.
227         (Output_data_plt_aarch64_standard::do_fill_first_plt_entry):
228         Implement contents.
229         (Output_data_plt_aarch64_standard::do_fill_plt_entry): Implement.
230         (AArch64_howto): New struct.
231         (aarch64_howto[]): New static const array.
232         (AArch64_relocate_functions): New class.
233         (Target_aarch64::Scan::get_reference_flags): Remove method.
234         (Target_aarch64::Scan::local): Implement to support a few relocations.
235         (Target_aarch64::Scan::global): Implement to support a few relocations.
236         (Target_aarch64::make_plt_section): Implement contents.
237         (Target_aarch64::make_plt_entry): Implement contents.
238         (Target_aarch64::do_finalize_sections): Implement contents.
239         (Target_aarch64::Relocate::relocate): Implement a few relocations.
240         (Target_aarch64::relocate_section): Implement contents.
241
242 2014-08-06  Alan Modra  <amodra@gmail.com>
243
244         * testsuite/defsym_test.sh: Allow ppc64le localentry annotation.
245
246 2014-08-06  Alan Modra  <amodra@gmail.com>
247
248         PR 13227
249         * symtab.cc (Symbol_table::add_from_relobj): Warn on __gnu_lto_slim.
250
251 2014-07-21  Sriraman Tallam  <tmsriram@google.com>
252
253         * object.cc (Relobj::is_section_name_included): Add
254         ".rodata.nptl_version" to not garbage collect this section.
255
256 2014-07-08  Cary Coutant  <ccoutant@google.com>
257
258         * expression.cc (struct Expression::Expression_eval_info): Add
259         new fields type_pointer, vis_pointer, and nonvis_pointer.
260         (Expression::eval_maybe_dot): Add type_pointer, vis_pointer, and
261         nonvis_pointer parameters. Adjust all calls.
262         (Symbol_expression::value): Update type, visibility, and nonvis bits
263         in caller.
264         * script.cc (Symbol_assignment::sized_finalize): Update type,
265         visibility, and remaining st_other bits for new symbol.
266         * script.h: (Expression::eval_maybe_dot): Add type_pointer,
267         vis_pointer, and nonvis_pointer parameters.
268         * symtab.h (Symbol::set_type): New method.
269
270         * testsuite/Makefile.am (defsym_test): New test.
271         * testsuite/Makefile.in: Regenerate.
272         * testsuite/defsym_test.c: New file.
273         * testsuite/defsym_test.sh: New file.
274
275 2014-07-08  Cary Coutant  <ccoutant@google.com>
276
277         PR gold/15639
278         * dynobj.h (Sized_dynobj::base_read_symbols): New method.
279         * dynobj.cc (Sized_dynobj::do_read_symbols): Move body to...
280         (Sized_dynobj::base_read_symbols): ...new method.
281         * object.h (Sized_relobj_file::base_read_symbols): New method.
282         * object.cc (Sized_relobj_file::do_read_symbols): Move body to...
283         (Sized_relobj_file::base_read_symbols): ...new method.
284         * arm.cc (Arm_relobj::do_read_symbols): Call base_read_symbols.
285         * mips.cc: (Mips_relobj::do_read_symbols): Likewise.
286         * powerpc.cc (Powerpc_dynobj::do_read_symbols): Likewise.
287
288 2014-07-04  Alan Modra  <amodra@gmail.com>
289
290         * po/POTFILES.in: Regenerate.
291
292 2014-07-02  Jing Yu  <jingyu@google.com>
293
294         * aarch64.cc: New file
295         * Makefile.am (TARGETSOURCES): Add aarch64.cc
296         (ALL_TARGETOBJS): Add aarch64.$(OBJEXT)
297         * Makefile.in: Regenerate.
298         * configure.tgt: Add entries for aarch64*.
299         * configure.ac:  Likewise.
300         * configure: Likewise.
301
302 2014-06-27  Alan Modra  <amodra@gmail.com>
303
304         * symtab.cc (Symbol::should_add_dynsym_entry): Don't make inline.
305
306 2014-06-24  Cary Coutant  <ccoutant@google.com>
307
308         * dwp.cc (Dwo_file::read): Allow files with no .debug_types
309         sections.
310         (Dwo_file::sized_read_unit_index): Likewise.
311
312 2014-06-23  Sasa Stankovic  <Sasa.Stankovic@imgtec.com>
313
314         * mips.cc: New file.
315         * Makefile.am (TARGETSOURCES): Add mips.cc
316         (ALL_TARGETOBJS): Add mips.$(OBJEXT)
317         * configure.tgt: Add entries for mips*.
318         * configure.ac: Likewise.
319         * Makefile.in: Regenerate.
320         * configure: Likewise.
321
322 2014-06-09  Cary Coutant  <ccoutant@google.com>
323
324         * dwarf_reader.cc (Dwarf_pubnames_table::read_header): Check that
325         unit_length is within section bounds.
326
327 2014-06-09  Cary Coutant  <ccoutant@google.com>
328
329         PR gold/16980
330         * layout.cc (Layout::print_to_mapfile): Print unattached sections in
331         map.
332
333 2014-06-07  Alan Modra  <amodra@gmail.com>
334
335         * powerpc.cc (relocate): Treat field of cmpli insn as a bitfield.
336
337 2014-06-06  Cary Coutant  <ccoutant@google.com>
338
339         * dwarf_reader.h (Dwarf_pubnames_table): Remove output_section_offset_.
340         * dwarf_reader.cc (Dwarf_pubnames_table::read_section): Likewise.
341         (Dwarf_pubnames_table::read_header): Likewise.
342         * layout.cc (gdb_fast_lookup_sections): Add .debug_gnu_pubnames and
343         .debug_gnu_pubtypes.
344
345 2014-06-05  Joel Brobecker  <brobecker@adacore.com>
346
347         * Makefile.am (CONFIG_STATUS_DEPENDENCIES): New.
348         * Makefile.in, configure: Regenerate.
349
350 2014-06-03  Alan Modra  <amodra@gmail.com>
351
352         * powerpc.cc (addis_12_2): Define.
353         (Stub_table::do_write): Support fusion on ELFv2 stubs.
354
355 2014-06-03  Alan Modra  <amodra@gmail.com>
356
357         * testsuite/plugin_test.c (parse_readelf_line): Skip non-visibility
358         st_other output.
359
360 2014-06-02  Alan Modra  <amodra@gmail.com>
361
362         * powerpc.cc (Target_powerpc::local_reloc_may_be_function_pointer):
363         Only ignore relocs on ELFv1.
364         (Target_powerpc::global_reloc_may_be_function_pointer): Likewise.
365
366 2014-05-30  Cary Coutant  <ccoutant@google.com>
367
368         * testsuite/Makefile.am (ehdr_start_test_4): Fix typo in -B option.
369         * testsuite/Makefile.in: Regenerate.
370         * testsuite/ehdr_start_test_4.sh: Look for "U" instead of "w".
371
372 2014-05-27  H.J. Lu  <hongjiu.lu@intel.com>
373
374         PR gold/16945
375         * x86_64.cc (Target_x86_64::Relocate::relocate): Use signed int
376         for got_offset.  Properly get GOT address for R_X86_64_PLTOFF64.
377
378 2014-05-15  Alan Modra  <amodra@gmail.com>
379
380         * powerpc.cc (do_plt_fde_location): Handle zero length .glink.
381         Compare FDE contents with DW_CFA_nop rather than 0.
382
383 2014-05-13  Sriraman Tallam  <tmsriram@google.com>
384
385         * symtab.h (may_need_copy_reloc): Remove check for position independent
386         code.
387         * x86_64.cc (Target_x86_64<size>::Scan::global): Add check for no
388         position independence before pc absolute may_need_copy_reloc call.
389         Add check for executable output befor pc relative may_need_copy_reloc
390         call.
391         * i386.cc: Ditto.
392         * arm.cc: Ditto.
393         * sparc.cc: Ditto.
394         * tilegx.cc: Ditto.
395         * powerpc.cc: Add check for no position independence before
396         may_need_copy_reloc calls.
397         * testsuite/pie_copyrelocs_test.cc: New file.
398         * testsuite/pie_copyrelocs_shared_test.cc: New file.
399         * Makefile.am (pie_copyrelocs_test): New test.
400         * Makefile.in: Regenerate.
401
402 2014-05-08  Martin Liška  <mliska@suse.cz>
403
404         * output.cc (Sized_relobj_file::do_layout): Fix typo in info message.
405
406 2014-05-06  Cary Coutant  <ccoutant@google.com>
407
408         PR gold/16900
409         * i386.cc (Output_data_got_plt_i386): New class.
410         (Output_data_plt_i386::Output_data_plt_i386): Change type of got_plt
411         parameter. Change all callers.
412         (Output_data_plt_i386::layout_): Remove.
413         (Output_data_plt_i386::got_plt_): Change type.
414         (Target_i386::got_plt_): Change type. Change all references.
415         (Target_i386::got_section): Create instance of new class.
416         (Output_data_got_plt_i386::do_write): New function.
417         * x86_64.cc (Output_data_got_plt_x86_64): New class.
418         (Output_data_plt_x86_64::Output_data_plt_x86_64): Change type of got_plt
419         parameter. Change all callers.
420         (Output_data_plt_x86_64::layout_): Remove.
421         (Output_data_plt_x86_64::got_plt_): Change type.
422         (Target_x86_64::got_plt_): Change type. Change all references.
423         (Target_x86_64::got_section): Create instance of new class.
424         (Output_data_got_plt_x86_64::do_write): New function.
425         (Output_data_plt_x86_64::do_write): Don't write reserved words in GOT.
426         (Target_x86_64<size>::init_got_plt_for_update): Create instance of new
427         class.
428
429 2014-05-05  Cary Coutant  <ccoutant@google.com>
430
431         * gdb-index.cc (Gdb_index_info_reader): Don't complain about language
432         if we have pubnames/pubtypes.
433
434 2014-05-02  Cary Coutant  <ccoutant@google.com>
435
436         * defstd.cc (in_segment): Define __ehdr_start here...
437         * layout.cc (Layout::finalize): ...Instead of here.  Set the
438         output segment when known.
439         * resolve.cc (Symbol::override_base_with_special): Remember
440         the original binding.
441         * symtab.cc (Symbol::set_output_segment): New function.
442         (Symbol::set_undefined): New function.
443         * symtab.h (Symbol::is_weak_undefined): Check original undef
444         binding.
445         (Symbol::is_strong_undefined): New function.
446         (Symbol::set_output_segment): New function.
447         (Symbol::set_undefined): New function.
448         * target-reloc.h (is_strong_undefined): Remove.
449         (issue_undefined_symbol_error): Call Symbol::is_weak_undefined.
450         Check for hidden undefs.
451         (relocate_section): Call Symbol::is_strong_undefined.
452
453         * testsuite/Makefile.am (ehdr_start_test_1)
454         (ehdr_start_test_2, ehdr_start_test_3)
455         (ehdr_start_test_4, ehdr_start_test_5): New test cases.
456         * testsuite/Makefile.in: Regenerate.
457         * testsuite/ehdr_start_def.cc: New source file.
458         * testsuite/ehdr_start_test.cc: New source file.
459         * testsuite/ehdr_start_test.t: New linker script.
460         * testsuite/ehdr_start_test_4.sh: New shell script.
461
462 2014-04-23  Cary Coutant  <ccoutant@google.com>
463
464         PR gold/16870
465         * x86_64.cc (Target_x86_64::Relocate::relocate): Add missing break.
466
467 2014-04-15  Sasa Stankovic  <Sasa.Stankovic@imgtec.com>
468
469         * layout.cc (Layout::include_section): Allow a target to decide
470         whether to include a section.
471         * target.h (Target::should_include_section): New function.
472         (Target::do_should_include_section): New function.
473
474 2014-04-15  Sasa Stankovic  <Sasa.Stankovic@imgtec.com>
475
476         * copy-relocs.cc (Copy_relocs::Copy_reloc_entry::emit): Remove and
477         inline into ...
478         (Copy_relocs::emit): ... here.
479         * copy-relocs.h (Copy_reloc_entry): Change from class to struct.
480         (Copy_reloc_entry::make_copy_reloc): Change from private to protected.
481         (Copy_reloc_entry::entries_): Change from private to protected.
482
483 2014-04-02  Sriraman Tallam  <tmsriram@google.com>
484
485         * icf.cc (get_section_contents): Replace copies of reloc
486         vectors with const references.
487
488 2014-04-02  Cary Coutant  <ccoutant@google.com>
489
490         * configure.ac (HAVE_PUBNAMES): Use C instead of C++.
491         (HAVE_NO_USE_LINKER_PLUGIN): Check for -fno-use-linker-plugin.
492         * configure: Regenerate.
493         * testsuite/Makefile.am (OPT_NO_PLUGINS): New macro for
494         -fno-use-linker-plugin.
495         (LINK1, CXXLINK1): Add it to the link command.
496         * testsuite/Makefile.in: Regenerate.
497
498 2014-03-12  Alan Modra  <amodra@gmail.com>
499
500         * Makefile.in: Regenerate.
501
502 2014-03-10  Sasa Stankovic  <Sasa.Stankovic@imgtec.com>
503
504         * symtab.h (Symbol::set_nonvis): New function.
505
506 2014-03-10  Sasa Stankovic  <Sasa.Stankovic@imgtec.com>
507
508         * symtab.cc (Sized_symbol<32>::init_output_data):
509         Instantiate the template.
510         (Sized_symbol<64>::init_output_data): Likewise.
511
512 2014-03-10  Sasa Stankovic  <Sasa.Stankovic@imgtec.com>
513
514         * symtab.cc (Symbol_table::sized_write_globals): Allow a target to
515         adjust dynamic symbol value.
516         * target.h (Target::adjust_dyn_symbol): New function.
517         (Target::do_adjust_dyn_symbol): New function.
518
519 2014-03-10  Sasa Stankovic  <Sasa.Stankovic@imgtec.com>
520
521         * output.cc (Output_data_dynamic::Dynamic_entry::write):
522         Get the value of DYNAMIC_CUSTOM dynamic entry.
523         * output.h (Output_data_dynamic::add_custom): New function.
524         (Dynamic_entry::Dynamic_entry): New constructor for DYNAMIC_CUSTOM
525         dynamic entry.
526         (enum Dynamic_entry::Classification): Add DYNAMIC_CUSTOM.
527         * target.h (Target::dynamic_tag_custom_value): New function.
528         (Target::do_dynamic_tag_custom_value): New function.
529
530 2014-03-10  Sasa Stankovic  <Sasa.Stankovic@imgtec.com>
531
532         * symtab.cc (Symbol_table::set_dynsym_indexes): Allow a target to set
533         dynsym indexes.
534         * target.h (Target::has_custom_set_dynsym_indexes): New function.
535         (Target::do_has_custom_set_dynsym_indexes): New function.
536         (Target::set_dynsym_indexes): New function.
537         (Target::do_set_dynsym_indexes): New function.
538
539 2014-03-07  Alan Modra  <amodra@gmail.com>
540
541         * powerpc.cc (Powerpc_relocate_functions::Overflow_check): Add
542         CHECK_UNSIGNED, CHECK_LOW_INSN, CHECK_HIGH_INSN.
543         (Powerpc_relocate_functions::has_overflow_unsigned): New function.
544         (Powerpc_relocate_functions::has_overflow_bitfield,
545         overflowed): Use the above.
546         (Target_powerpc::Relocate::relocate): Correct overflow checking
547         for a number of relocations.  Modify overflow test for 16-bit
548         fields in instructions to signed/unsigned according to whether
549         the field takes a signed or unsigned value.
550
551 2014-03-05  Alan Modra  <amodra@gmail.com>
552
553         Update copyright years.
554
555 2014-03-05  Alan Modra  <amodra@gmail.com>
556
557         * powerpc.cc (Target_powerpc::Scan::local, global): Support
558         R_PPC64_ADDR64_LOCAL.
559         (Target_powerpc::Relocate::relocate): Likewise.
560
561 2014-03-03  Alan Modra  <amodra@gmail.com>
562
563         * dwp.cc (print_version): Update copyright year to current.
564
565 2014-02-10  Alan Modra  <amodra@gmail.com>
566
567         * po/gold.pot: Regenerate.
568
569 2014-02-06  Cary Coutant  <ccoutant@google.com>
570
571         Fix problem where -u is ignored when a weak undef is seen.
572
573         * archive.cc (Library_base::should_include_member): Reorder
574         code to check for -u option if a weak undef has already been seen.
575         * testsuite/Makefile.am (weak_undef_test_2): New test case.
576         * testsuite/Makefile.in: Regenerate.
577         * testsuite/weak_undef_file3.cc: New file.
578         * testsuite/weak_undef_file4.cc: New file.
579         * testsuite/weak_undef_test_2.cc: New file.
580
581 2014-02-05  Cary Coutant  <ccoutant@google.com>
582
583         Fix issues with gold undefined symbol diagnostics.
584
585         PR binutils/15435
586         * errors.cc (Errors::undefined_symbol): Move undef vtable symbol
587         check to here.
588         * target-reloc.h (is_strong_undefined): New function.
589         (relocate_section): Move undef vtable symbol check from here.
590         Check for is_strong_undefined.
591
592 2014-02-05  Cary Coutant  <ccoutant@google.com>
593
594         Fix problems with the --dynamic-list option.
595
596         PR gold/13577
597         * options.cc (General_options::parse_dynamic_list):
598         Set have_dynamic_list_.
599         (General_options::General_options): Initialize have_dynamic_list_.
600         (General_options::finalize): Turn off -Bsymbolic and
601         -Bsymbolic-functions if --dynamic-list provided.
602         * options.h (General_options::have_dynamic_list): New function.
603         (General_options::have_dynamic_list_): New data member.
604         * symtab.h (Symbol::is_preemptible): Handle --dynamic-list
605         correctly.
606
607         PR gold/16530
608         * symtab.cc (Symbol_table::add_from_relobj): If symbol is named
609         in --dynamic-list, mark it.
610
611         * testsuite/Makefile.am (gc_dynamic_list_test.sh): New test case.
612         (dynamic_list_2): New test case.
613         * testsuite/Makefile.in: Regenerate.
614         * testsuite/dynamic_list_2.cc: New file.
615         * testsuite/dynamic_list_2.t: New file.
616         * testsuite/dynamic_list_lib1.cc: New file.
617         * testsuite/dynamic_list_lib2.cc: New file.
618         * testsuite/gc_dynamic_list_test.c: New file.
619         * testsuite/gc_dynamic_list_test.sh: New file.
620         * testsuite/gc_dynamic_list_test.t: New file.
621
622 2014-01-28  Cary Coutant  <ccoutant@google.com>
623
624         Add .gdb_index version 7 support.
625
626         * gold/dwarf_reader.cc: include <utility> (for make_pair).
627         (Dwarf_abbrev_table::do_read_abbrevs): Check for compressed
628         debug sections.
629         (Dwarf_ranges_table::read_ranges_table): Likewise.
630         (Dwarf_pubnames_table::read_section): Check for GNU-style
631         sections, and for compressed debug sections.
632         (Dwarf_pubnames_table::read_header): Compute end address of table.
633         (Dwarf_pubnames_table::next_name): Return flag_byte.  Check
634         for end of list by offset, not by offset == 0.
635         (Dwarf_info_reader::do_read_string_table): Check for compressed
636         debug sections.
637         * gold/dwarf_reader.h (Dwarf_pubnames_table::Dwarf_pubnames_table):
638         Initialize new data members.
639         (Dwarf_pubnames_table::next_name): return flag_byte.
640         (Dwarf_pubnames_table::end_of_table_): New data member.
641         (Dwarf_pubnames_table::is_gnu_style_): New data member.
642         * gold/gdb-index.cc (gdb_index_version): Update to version 7.
643         (Gdb_index_info_reader::read_pubtable): Read flag_byte.
644         (Gdb_index_info_reader::read_pubnames_and_pubtypes): Don't
645         read skeleton type unit DIEs.
646         (Gdb_index::add_symbol): Add flag_byte; adjust all callers.
647         (Gdb_index::do_write): Write flag_byte.
648         * gold/gdb-index.h (Gdb_index::add_symbol): Add flags parameter.
649         (Gdb_index::Cu_vector): Store flags along with cu indexes.
650         * gold/testsuite/gdb_index_test_3.sh: Allow versions 4-7.
651         * gold/testsuite/gdb_index_test_comm.sh: Likewise.
652
653 2014-01-08  H.J. Lu  <hongjiu.lu@intel.com>
654
655         * version.cc (print_version): Update copyright year to 2014.
656
657 2013-12-19  Dimitry Andric  <dimitry@andric.com>
658
659         * stringpool.cc (Stringpool_template::reserve): Add
660         HAVE_UNORDERED_MAP case.
661         * stringpool.cc (Stringpool_template::print_stats): Likewise.
662
663 2013-12-18  Cary Coutant  <ccoutant@google.com>
664
665         * configure.ac: Check for <unordered_set> and <unordered_map>.
666         * config.in: Regenerate.
667         * configure: Regenerate.
668         * system.h: Use <unordered_set> and <unordered_map> if available.
669
670 2013-12-10  Roland McGrath  <mcgrathr@google.com>
671
672         * Makefile.am (install-exec-local): Prefix $(INSTALL_PROGRAM) uses
673         with $(INSTALL_PROGRAM_ENV).
674         * Makefile.in: Regenerate.
675
676 2013-11-22  Cary Coutant  <ccoutant@google.com>
677
678         * configure.ac: Add check for which library is needed for
679         dlopen.
680         * configure: Regenerate.
681
682 2013-11-22  Cary Coutant  <ccoutant@google.com>
683
684         * testsuite/Makefile.am (exception_x86_64_bnd_test): Use in-tree
685         assembler.
686         * testsuite/Makefile.in: Regenerate.
687
688 2013-11-17  H.J. Lu  <hongjiu.lu@intel.com>
689
690         * x86_64.cc (Target_x86_64<size>::Scan::get_reference_flags):
691         Handle R_X86_64_PC32_BND and R_X86_64_PLT32_BND just like
692         R_X86_64_PC32 and R_X86_64_PLT32, respectively.
693         (Target_x86_64<size>::Scan::local): Likewise.
694         (Target_x86_64<size>::Scan::global): Likewise.
695         (Target_x86_64<size>::Relocate::relocate): Likewise.
696         (Target_x86_64<size>::Relocatable_size_for_reloc::get_size_for_reloc):
697         Likewise.
698         (Target_x86_64<size>::Scan::check_non_pic(): Handle
699         R_X86_64_PC32_BND.
700
701         * testsuite/Makefile.am (check_PROGRAMS): Add
702         exception_x86_64_bnd_test.
703         (exception_x86_64_bnd_test_SOURCES): New macro.
704         (exception_x86_64_bnd_test_DEPENDENCIES): Likewise.
705         (exception_x86_64_bnd_test_LDFLAGS): Likewise.
706         (exception_x86_64_bnd_test_LDADD): Likewise.
707         (exception_x86_64_bnd_1.o): New rule.
708         (exception_x86_64_bnd_2.o): Likewise.
709         * testsuite/Makefile.in: Regenerated.
710
711 2013-11-15  Alan Modra  <amodra@gmail.com>
712
713         * powerpc.cc (Target_powerpc::glink_section): Provide non-const
714         accessor.
715         (Target_powerpc::Branch_info::make_stub): Make global entry stubs.
716         Only call ppc64_local_entry_offset for 64-bit.  Restrict
717         symval_for_branch lookup to ELFv1.
718         (Stub_table::add_plt_call_entry): Use unsigned int off.
719         (Output_data_glink::Address, invalid_address): New.
720         (Output_data_glink::add_eh_frame): Move out of line.  Add
721         support for ELFv2.
722         (Output_data_glink::add_global_entry, find_global_entry,
723         global_entry_address): New functions.
724         (Output_data_glink::global_entry_stubs_, end_branch_table_,
725         ge_size): New variables.
726         (Output_data_glink::set_final_data_size): Add global entry
727         stub sizing.
728         (Output_data_glink::do_write): Write global entry stubs.
729         (Target_powerpc::Scan::reloc_needs_plt_for_ifunc): Add target
730         parameter.  Return true for ELFv2.  Adjust callers.
731         (Target_powerpc::Scan::local, global): Restrict opd lookup to
732         ELFv1.  Similarly for ifunc and dynamic relocation processing
733         specific to ELFv1.  Recognize that symbols are defined on
734         their plt entries for ELFv2.
735         (Target_powerpc::symval_for_branch): Assert if called for
736         ELFv2 or ppc32.
737         (Target_powerpc::Relocate::relocate): Use global entry plt
738         stub for symbol value if such exists on ELFv2.
739         (Target_powerpc::Relocate::relocate): Don't call
740         symval_for_branch when ELFv2.  Do adjust for local entry
741         offset when ELFv2.
742         (Target_powerpc::do_dynsym_value): Set symbols to global entry
743         plt stub for ELFv2.
744         (Target_powerpc::do_plt_address_for_global): Similarly.
745
746 2013-11-14  Cary Coutant  <ccoutant@google.com>
747
748         Revert patch -- this did not fix the problem, and there is
749         no race there.
750
751         2013-11-14  Cary Coutant  <ccoutant@google.com>
752
753             PR gold/14860
754             * ehframe.cc (Eh_frame_hdr::Eh_frame_hdr): Initialize lock_.
755             (Ehframe_hdr::set_final_data_size): Allocate a Lock.
756             * ehframe.h (Eh_frame_hdr::record_fde): Hold the lock while
757             updating fde_offsets_.
758             (Eh_frame_hdr::lock_): New data member.
759
760 2013-11-14  Cary Coutant  <ccoutant@google.com>
761
762         * dwp.cc (Dwo_file_entry): New type.
763         (File_list): Use Dwo_file_entry.
764         (Dwo_file::verify): New function.
765         (Dwo_file::verify_dwo_list): New function.
766         (Dwo_file::sized_verify_dwo_list): New function.
767         (Dwo_name_info_reader::visit_compilation_unit): Add dwo_id to file
768         list.
769         (Dwp_options): New enum type.
770         (dwp_options): Add --verify-only.
771         (usage): Likewise.
772         (main): Likewise.
773         * dwp.h (gold_info): Add declaration.
774
775 2013-11-14  Cary Coutant  <ccoutant@google.com>
776
777         PR gold/14860
778         * ehframe.cc (Eh_frame_hdr::Eh_frame_hdr): Initialize lock_.
779         (Ehframe_hdr::set_final_data_size): Allocate a Lock.
780         * ehframe.h (Eh_frame_hdr::record_fde): Hold the lock while
781         updating fde_offsets_.
782         (Eh_frame_hdr::lock_): New data member.
783
784 2013-11-06  Cary Coutant  <ccoutant@google.com>
785
786         PR gold/15758
787         * object.cc (Sized_relobj_file::do_layout): Handle .eh_frame sections
788         before reloc sections.
789
790 2013-11-04  Alan Modra  <amodra@gmail.com>
791
792         * symtab.h (Symbol::Reference_flags): Add FUNC_DESC_ABI.
793         (Symbol::needs_dynamic_reloc): Test new flag.
794         * powerpc.cc (needs_dynamic_reloc, use_plt_offset): Delete.
795         (Target_powerpc::Scan::get_reference_flags): Add target param.
796         Return FUNC_DESC_ABI for 64-bit ELFv1.
797         (Target_powerpc::Branch_info::make_stub): Adjust get_reference_flags
798         call.
799         (Target_powerpc::Scan::global): Use Symbol::needs_dynamic_reloc.
800         (Target_powerpc::Relocate::relocate): Use Symbol::use_plt_offset.
801
802 2013-10-31  Cary Coutant  <ccoutant@google.com>
803
804         Restore support for dwp v2 DWARF package file format.
805
806         * dwarf_reader.cc (Dwarf_info_reader::visit_type_unit): Add
807         tu_length parameter.  Adjust all callers.
808         * dwarf_reader.h (Dwarf_info_reader::visit_type_unit): Likewise.
809         * dwp.cc: Include dwarf.h.
810         (Section_bounds): New struct type.
811         (Unit_set): New struct type.
812         (Dwo_file::Dwo_file): Initialize new data member.
813         (Dwo_file::read_compunit_index, Dwo_file::read_typeunit_index):
814         Combine and rename to...
815         (Dwo_file::read_unit_index): ...this.
816         (Dwo_file::sized_read_compunit_index)
817         (Dwo_file::sized_read_typeunit_index): Combine and rename to...
818         (Dwo_file::sized_read_unit_index): ...this.
819         (Dwo_file::copy_section): Remove section_name, is_str_offsets
820         parameters; add section_id parameter.
821         (Dwo_file::add_cu_set, Dwo_file::add_tu_set): Combine and rename to...
822         (Dwo_file::add_unit_set): ...this.
823         (Dwo_file::shndx_map_): Remove.
824         (Dwo_file::sect_offsets_): New data member.
825         (Dwp_output_file::Dwp_output_file): Initialize new data members.
826         (Dwp_output_file::add_section): Rename to...
827         (Dwp_output_file::add_contribution): ...this.
828         (Dwp_output_file::add_cu_set): Combine parameters into a struct.
829         (Dwp_output_file::add_tu_set): Likewise.
830         (Dwp_output_file::Contribution): New type.
831         (Dwp_output_file::Section::contributions): New data member.
832         (Dwp_output_file::Cu_or_tu_set): Remove.
833         (Dwp_output_file::Section::Section): New ctor.
834         (Dwp_output_file::Dwp_index::Shndx_pool): Remove.
835         (Dwp_output_file::Dwp_index::Section_table): New type.
836         (Dwp_output_file::Dwp_index::Dwp_index): Initialize new data members.
837         (Dwp_output_file::Dwp_index::enter_set): Change type of "set"
838         parameter.
839         (Dwp_output_file::Dwp_index::shndx_pool): Remove.
840         (Dwp_output_file::Dwp_index::shndx_pool_end): Remove.
841         (Dwp_output_file::Dwp_index::section_table): New member function.
842         (Dwp_output_file::Dwp_index::section_table_end): New member function.
843         (Dwp_output_file::Dwp_index::shndx_pool_size): Remove.
844         (Dwp_output_file::Dwp_index::section_table_rows): New member function.
845         (Dwp_output_file::Dwp_index::section_table_cols): New member function.
846         (Dwp_output_file::Dwp_index::shndx_pool_): Remove.
847         (Dwp_output_file::Dwp_index::section_table_): New data member.
848         (Dwp_output_file::Dwp_index::section_mask_): New data member.
849         (Dwp_output_file::add_output_section): New member function.
850         (Dwp_output_file::write_new_section): New member function.
851         (Dwp_output_file::write_contributions): New member function.
852         (Dwp_output_file::section_id_map_): New data member.
853         (class Dwo_id_info_reader): Remove.
854         (class Unit_reader): New class.
855         (get_dwarf_section_name): New function.
856         (Dwo_file::read_executable): Adjust initializations of class data.
857         (Dwo_file::read): Add support for v2 package file format.
858         (Dwo_file::read_unit_index): Likewise.
859         (Dwo_file::sized_read_unit_index): Likewise.
860         (Dwo_file::copy_section): Likewise.
861         (Dwo_file::add_unit_set): Likewise.
862         (Dwp_output_file::add_output_section): Likewise.
863         (Dwp_output_file::add_contribution): Likewise.
864         (Dwp_output_file::Dwp_index::find_or_add): Use row index to check
865         for empty slot.
866         (Dwp_output_file::Dwp_index::enter_set): Add support for v2 package
867         file format.
868         (Dwp_output_file::Dwp_index::grow): Use row index to check for empty
869         slot.
870         (Dwp_output_file::initialize): Remove unused function.
871         (Dwp_output_file::finalize): Add support for v2 package file format.
872         (Dwp_output_file::write_index): Likewise.
873         * gdb-index.cc (Gdb_index_info_reader::visit_type_unit): Adjust
874         function prototype.
875
876 2013-10-31  Cary Coutant  <ccoutant@google.com>
877
878         * configure.ac: Fix check for -fmerge-constants.
879         * configure.ac: Regenerate.
880
881 2013-10-30  Roland McGrath  <mcgrathr@google.com>
882
883         * x86_64.cc (Output_data_plt_x86_64_nacl::first_plt_entry):
884         Correct 9-byte nop sequence to match what the assembler generates.
885
886 2013-10-30  Alan Modra  <amodra@gmail.com>
887
888         * powerpc.cc (Powerpc_relobj::abiversion, set_abiversion,
889         ppc64_local_entry_offset, ppc64_local_entry_offset,
890         do_read_symbols): New functions.
891         (Powerpc_relobj::e_flags_, st_other_): New vars.
892         (Powerpc_relobj::Powerpc_relobj): Call set_abiversion.
893         (Powerpc_dynobj::abiversion, set_abiversion): New functions.
894         (Powerpc_relobj::e_flags_): New var.
895         (Target_powerpc::first_plt_entry_offset, plt_entry_size): Inline
896         and adjust for ELFv2.
897         (Target_powerpc::abiversion, set_abiversion, stk_toc): New functions.
898         (Powerpc_relobj::do_find_special_sections): Check no .opd in ELFv2.
899         (Powerpc_dynobj::do_find_special_sections): Likewise.
900         (Target_powerpc::do_define_standard_symbols): Define ".TOC.".
901         (Target_powerpc::Branch_info::make_stub): Adjust stub destination
902         to ELFv2 local entry.
903         (Target_powerpc::do_relax): No thread safe barriers needed for
904         ELFv2.
905         (Output_data_plt_powerpc::initial_plt_entry_size_,
906         plt_entry_size): Delete.  Replace all uses with
907         first_plt_entry_offset() and plt_entry_size().
908         (Output_data_plt_powerpc::Output_data_plt_powerpc): Remove
909         reserved_size parm.  Update callers.
910         (Output_data_plt_powerpc::entry_count): Update.
911         (Output_data_plt_powerpc::first_plt_entry_offset): Make private
912         and use Target_powerpc::first_plt_entry_offset().
913         (Output_data_plt_powerpc::get_plt_entry_size): Similarly and
914         rename to plt_entry_size.
915         (Output_data_plt_powerpc::add_ifunc_entry,
916         add_local_ifunc_entry): Adjust reloc for ELFv2.
917         (glink_eh_frame_fde_64): Rename to glink_eh_frame_fde_64v1.
918         (glink_eh_frame_fde_64v2): New.
919         (Stub_table::plt_call_size): Support ELFv2 sizing.
920         (Output_data_glink::add_eh_frame): Use the new FDE.
921         (Output_data_glink::set_final_data_size): Adjust for ELFv2 glink.
922         (Stub_table::do_write): Write ELFv2 stubs and glink.
923         (Target_powerpc::Relocate::relocate): Replaces nop after call
924         with ld 2,24(1) and adjust local offset destination for ELFv2.
925
926 2013-10-30  Alan Modra  <amodra@gmail.com>
927
928         * powerpc.cc (Target_powerpc::Scan::check_non_pic): Handle new relocs.
929         (Target_powerpc::Scan::global, local): Likewise.
930         (Target_powerpc::Relocate::relocate): Likewise.  Check for overflow
931         on all ppc64 @h and @ha relocs.
932
933 2013-10-14  Alan Modra  <amodra@gmail.com>
934
935         * output.h (Output_data_got::add_constant): Tidy.
936         (Output_data_got::add_constant_pair): New function.
937         * powerpc.cc (Output_data_got_powerpc): Override all Output_data_got
938         methods used so as to first call reserve_ent().
939
940 2013-10-11  Roland McGrath  <mcgrathr@google.com>
941
942         * powerpc.cc (Output_data_got_powerpc): Remove unused methods
943         add_got_entry and add_got_entry_pair.
944
945         * configure.ac (TLS_GNU2_DIALECT): Use -Werror in test.
946         (HAVE_PUBNAMES): Likewise.
947         * configure: Regenerate.
948
949         * testsuite/Makefile.am: Replace '-T foo' with '-Wl,-T,foo' throughout.
950         * testsuite/Makefile.in: Regenerate.
951
952         * target.h (Target::adjust_elf_header, Target::do_adjust_elf_header):
953         Remove const from declaration.
954         * target.cc (Sized_target::do_adjust_elf_header): Update definition.
955         * sparc.cc (Target_sparc::do_adjust_elf_header): Likewise.
956         * output.h (Output_file_header): Remove const from member target_
957         and corresponding constructor argument.
958         * output.cc (Output_file_header::Output_file_header): Update prototype.
959         (Output_file_header::do_sized_write): Use this->target_ in place
960         of parameters()->target().
961
962         * testsuite/undef_symbol.cc (Foo::get_a): New method.
963
964         * configure.ac (MERGE_CONSTANTS_FLAG): New check.
965         * configure: Regenerate.
966         * Makefile.in: Regenerate.
967         * testsuite/merge_string_literals_1.c: Renamed to have .cc suffix.
968         * testsuite/merge_string_literals_2.c: Likewise.
969         * testsuite/Makefile.am
970         (merge_string_literals_1.o, merge_string_literals_2.o): Update deps.
971         (AM_CFLAGS, AM_CXXFLAGS): Use $(MERGE_CONSTANTS_FLAG) in place of
972         literal -fmerge-constants.
973         * testsuite/Makefile.in: Regenerate.
974
975         * i386.cc (Target_i386): Remove unused member dynbss_.
976         * arm.cc (Target_arm): Likewise.
977         * powerpc.cc (Target_powerpc): Likewise.
978         * sparc.cc (Target_sparc): Likewise.
979         * tilegx.cc (Target_tilegx): Likewise.
980         * x86_64.cc (Target_x86_64): Likewise.
981         * dwarf_reader.h (Dwarf_info_reader): Remove unused members
982         type_signature_, type_offset_.
983         * plugin.h (Plugin_hook): Remove unused member layout_.
984         * readsyms.h (Add_symbols): Remove unused members dirpath_, dirindex_,
985         mapfile_.
986         (Read_member): Remove unused members input_objects_, symtab_,
987         mapfile_, layout_.
988         (Check_library): Remove unused member symtab_.
989         * archive.h (Lib_group): Remove unused member lib_.
990         * archive.cc (Lib_group::Lib_group): Update initializer.
991         * incremental.h (Incremental_binary): Remove unused member target_.
992         (Incremental_script_entry): Removed unused member script_.
993         * layout.h (Write_symbols_task): Remove unused member input_objects_.
994         * icf.h (Icf): Remove unused member num_tracked_relocs.
995
996         * gold-threads.h (Once): Conditionalize member was_run_lock_ on
997         [ENABLE_THREADS && __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4], matching
998         its only use.
999         * gold-threads.cc (Once::Once): Likewise conditionalize initializer.
1000
1001         * archive.h: Use struct rather than class for forward declaration
1002         of Read_symbols_data.
1003
1004 2013-10-07  Cary Coutant  <ccoutant@google.com>
1005
1006         PR gold/16010
1007         * testsuite/Makefile.am (icf_test): Fix dependencies.
1008         (icf_safe_test): Likewise.
1009         (icf_safe_so_test): Likewise.
1010         (large_symbol_alignment): Add empty _LDADD rule.
1011         * testsuite/Makefile.in: Regenerate.
1012
1013 2013-09-03  Pavel Chupin  <pavel.v.chupin@intel.com>
1014
1015         PR gold/15927
1016         * x86_64.cc (Target_x86_64<size>::Scan::global): Use relative
1017         relocation for R_X86_64_32 on x32.
1018
1019 2013-08-27  Roland McGrath  <mcgrathr@google.com>
1020
1021         * output.cc (Output_segment::set_section_addresses): Take new
1022         Target* argument.  If target->isolate_execinstr() and the segment
1023         is executable and starts at a target->abi_pagesize() boundary,
1024         pad its end out to a target->abi_pagesize() boundary with code fill.
1025         * output.h (Output_segment::set_section_addresses): Update decl.
1026         * layout.h (Layout::check_output_data_for_reset_values): Take new
1027         argument RELAX_OUTPUTS.
1028         (Layout): New member relax_output_list_.
1029         (Layout::add_relax_output): New method.
1030         * layout.cc (Layout::Layout): Update constructor.
1031         (Layout::reset_relax_output): New method.
1032         (Layout::clean_up_after_relaxation): Call it.
1033         (Layout::prepare_for_relaxation): Update caller.
1034         (Layout::set_segment_offsets): Update callers of set_section_addresses.
1035         Call reset_relax_output before re-processing segments for
1036         isolate_execinstr case.
1037         (Layout::write_data): Handle relax_output_list_.
1038         (Layout::Relaxation_debug_check::check_output_data_for_reset_values):
1039         Take new argument RELAX_OUTPUTS.  Assert it's an empty collection.
1040
1041 2013-08-23  Yuri Chornoivan  <yurchor@ukr.net>
1042
1043         PR binutils/15834
1044         * object.h: Fix typos.
1045
1046 2013-08-16  Roland McGrath  <mcgrathr@google.com>
1047
1048         * i386.cc (Target_i386_nacl::do_code_fill): New virtual function.
1049         * x86_64.cc (Target_x86_64_nacl::do_code_fill): New virtual function.
1050
1051 2013-08-07  Cary Coutant  <ccoutant@google.com>
1052
1053         Revert support for v2 DWP files:
1054
1055         2013-03-01  Cary Coutant  <ccoutant@google.com>
1056
1057             Add dwp support for v2 DWARF package file format.
1058             * dwarf_reader.cc (Dwarf_info_reader::visit_type_unit): Add
1059             tu_length parameter.  Adjust all callers.
1060             * dwarf_reader.h (Dwarf_info_reader::visit_type_unit): Likewise.
1061             * dwp.cc: Include dwarf.h.
1062             (Section_bounds): New struct type.
1063             (Unit_set): New struct type.
1064             (Dwo_file::Dwo_file): Initialize new data member.
1065             (Dwo_file::read_compunit_index, Dwo_file::read_typeunit_index):
1066             Combine and rename to...
1067             (Dwo_file::read_unit_index): ...this.
1068             (Dwo_file::sized_read_compunit_index)
1069             (Dwo_file::sized_read_typeunit_index): Combine and rename to...
1070             (Dwo_file::sized_read_unit_index): ...this.
1071             (Dwo_file::copy_section): Remove section_name, is_str_offsets
1072             parameters; add section_id parameter.
1073             (Dwo_file::add_cu_set, Dwo_file::add_tu_set): Combine and rename to...
1074             (Dwo_file::add_unit_set): ...this.
1075             (Dwo_file::shndx_map_): Remove.
1076             (Dwo_file::sect_offsets_): New data member.
1077             (Dwp_output_file::Dwp_output_file): Initialize new data members.
1078             (Dwp_output_file::add_section): Rename to...
1079             (Dwp_output_file::add_contribution): ...this.
1080             (Dwp_output_file::add_cu_set): Combine parameters into a struct.
1081             (Dwp_output_file::add_tu_set): Likewise.
1082             (Dwp_output_file::Contribution): New type.
1083             (Dwp_output_file::Section::contributions): New data member.
1084             (Dwp_output_file::Cu_or_tu_set): Remove.
1085             (Dwp_output_file::Section::Section): New ctor.
1086             (Dwp_output_file::Dwp_index::Shndx_pool): Remove.
1087             (Dwp_output_file::Dwp_index::Section_table): New type.
1088             (Dwp_output_file::Dwp_index::Dwp_index): Initialize new data members.
1089             (Dwp_output_file::Dwp_index::enter_set): Change type of "set"
1090             parameter.
1091             (Dwp_output_file::Dwp_index::shndx_pool): Remove.
1092             (Dwp_output_file::Dwp_index::shndx_pool_end): Remove.
1093             (Dwp_output_file::Dwp_index::section_table): New member function.
1094             (Dwp_output_file::Dwp_index::section_table_end): New member function.
1095             (Dwp_output_file::Dwp_index::shndx_pool_size): Remove.
1096             (Dwp_output_file::Dwp_index::section_table_rows): New member function.
1097             (Dwp_output_file::Dwp_index::section_table_cols): New member function.
1098             (Dwp_output_file::Dwp_index::shndx_pool_): Remove.
1099             (Dwp_output_file::Dwp_index::section_table_): New data member.
1100             (Dwp_output_file::Dwp_index::section_mask_): New data member.
1101             (Dwp_output_file::add_output_section): New member function.
1102             (Dwp_output_file::write_new_section): New member function.
1103             (Dwp_output_file::write_contributions): New member function.
1104             (Dwp_output_file::section_id_map_): New data member.
1105             (class Dwo_id_info_reader): Remove.
1106             (class Unit_reader): New class.
1107             (get_dwarf_section_name): New function.
1108             (Dwo_file::read_executable): Adjust initializations of class data.
1109             (Dwo_file::read): Add support for v2 package file format.
1110             (Dwo_file::read_unit_index): Likewise.
1111             (Dwo_file::sized_read_unit_index): Likewise.
1112             (Dwo_file::copy_section): Likewise.
1113             (Dwo_file::add_unit_set): Likewise.
1114             (Dwp_output_file::add_output_section): Likewise.
1115             (Dwp_output_file::add_contribution): Likewise.
1116             (Dwp_output_file::Dwp_index::find_or_add): Use row index to check
1117             for empty slot.
1118             (Dwp_output_file::Dwp_index::enter_set): Add support for v2 package
1119             file format.
1120             (Dwp_output_file::Dwp_index::grow): Use row index to check for empty
1121             slot.
1122             (Dwp_output_file::initialize): Remove unused function.
1123             (Dwp_output_file::finalize): Add support for v2 package file format.
1124             (Dwp_output_file::write_index): Likewise.
1125             * gdb-index.cc (Gdb_index_info_reader::visit_type_unit): Adjust
1126             function prototype.
1127
1128 2013-07-31  Cary Coutant  <ccoutant@google.com>
1129
1130         * object.cc (Sized_relobj::do_output_section_address): New function.
1131         (Sized_relobj): Instantiate explicitly.
1132         * object.h (Object::output_section_address): New function.
1133         (Object::do_output_section_address): New function.
1134         (Sized_relobj::do_output_section_address): New function.
1135         * powerpc.cc (Target_powerpc::symval_for_branch): Use it.
1136
1137 2013-07-30  Cary Coutant  <ccoutant@google.com>
1138             Sasa Stankovic  <Sasa.Stankovic@imgtec.com>
1139
1140         * parameters.cc (Parameters::entry): Return target-specific entry
1141         symbol name.
1142         * target.h (Target::entry_symbol_name): New function.
1143         (Target_info::entry_symbol_name): New data member.
1144
1145         * arm.cc (Target_arm::arm_info): Add entry_symbol_name.
1146         * i386.cc (Target_i386::i386_info): Likewise.
1147         (Target_i386_nacl::i386_nacl_info): Likewise.
1148         * sparc.cc (Target_sparc::sparc_info): Likewise.
1149         * tilegx.cc (Target_tilegx::tilegx_info): Likewise.
1150         * x86_64.cc: (Target_x86_64::x86_64_info) Likewise.
1151         (Target_x86_64_nacl::x86_64_nacl_info) Likewise.
1152         * testsuite/testfile.cc (Target_test::test_target_info): Likewise.
1153
1154 2013-07-22  Sterling Augustine  <saugustine@google.com>
1155
1156         * dwarf_reader.cc (Dwarf_pubnames_table::read_section):
1157         Convert parameter shndx to local variable. Add parameters symtab
1158         and symtab_size.  Scan over section names.  Find relocation
1159         section corresponding to current section.  Create and initialize
1160         reloc_mapper_ and reloc_type_.
1161         (Dwarf_pubnames_table::read_header):  Add assertion.  Change
1162         unit_length to off_t.  Initialize member unit_length_.  Fill in field
1163         cu_offset_.
1164         * dwarf_reader.h (Dwarf_pubnames_table::Dwarf_pubnames_table):
1165         Initialize new fields unit_length_ and cu_offset_.
1166         (Dwarf_pubnames_table::read_section): Update prototype.
1167         (Dwarf_pubnames_table::cu_offset): New member function.
1168         (Dwarf_pubnames_table::subsection_size): Likewise.
1169         (Dwarf_pubnames_table::cu_offset_, Dwarf_pubnames_table::unit_length):
1170         New fields.
1171         (Dwarf_info_reader::symtab, Dwarf_info_reader::symtab_size): Make
1172         member functions public.
1173         * gdb_index.cc (Gdb_index_info_reader::read_pubnames_and_pubtypes):
1174         Update comment.  Rework logic.  Move repeated parts to...
1175         (Gdb_index_info_reader::read_pubtable): ...here. New function.
1176         (Gdb_index::Gdb_index): Initialize new fields, pubnames_table_,
1177         pubtypes_table_, and stmt_list_offset.
1178         (Gdb_index::map_pubtable_to_dies, Gdb_index::find_pubname_offset,
1179         Gdb_index::find_pubtype_offset,
1180         Gdb_index::map_pubnames_and_types_to_dies): Define new functions.
1181         (Gdb_index::pubnames_read): Update prototype and rework logic.
1182         * gdb_index.h (Gdb_index_info_reader, Dwarf_pubnames_table):
1183         Forward declare.
1184         (Gdb_index::map_pubtable_to_dies, Gdb_index::find_pubname_offset,
1185         Gdb_index::find_pubtype_offset, Gdb_index::pubnames_table)
1186         Gdb_index::pubtypes_table, Gdb_index::map_pubnames_and_types_to_dies,
1187         Gdb_index::map_pubtable_to_dies):
1188         Declare functions.
1189         (Gdb_index::pubnames_read): Update declaration.
1190         (Gdb_index::Pubname_offset_map): New type.
1191         (Gdb_index::cu_pubname_map_, Gdb_index::cu_pubtype_map_,
1192         Gdb_index::pubnames_table_, Gdb_index::pubtypes_table_,
1193         Gdb_index::stmt_list_offset): Declare.
1194         (Gdb_index::pubnames_shndx_, Gdb_index::pubnames_offet_,
1195         Gdb_index::pubtypes_object_, Gdb_index::pubtypes_shndx_)
1196         Gdb_index::pubtypes_offset_): Remove.
1197
1198 2013-07-19  Roland McGrath  <mcgrathr@google.com>
1199
1200         * options.h (General_options): Add -Trodata-segment option.
1201         * parameters.cc (Parameters::check_rodata_segment): New function.
1202         (Parameters::set_target_once): Call it.
1203         * parameters.h (Parameters): Declare it (private member function).
1204         * layout.cc (load_seg_unusable_for_headers): New function, broken
1205         out of Layout::relaxation_loop_body.  If TARGET->isolate_execinstr()
1206         then validate rodata segment rather than text segment.
1207         (relaxation_loop_body): Call that.
1208         (is_text_segment): New function.  Don't admit a non-executable
1209         segment if TARGET->isolate_execinstr().
1210         (set_segment_offsets): Call it.  Honor -Trodata-segment option.
1211
1212 2013-07-15  Shawn Landden  <shawnlandden@gmail.com>
1213
1214         PR gold/15070
1215         * fileread.h (File_read::get_view): Clarify comment about ALIGNED.
1216         * nacl.h (Sniff_file::View::View): Request aligned view.
1217
1218 2013-07-11  Cary Coutant  <ccoutant@google.com>
1219
1220         * powerpc.cc (Target_powerpc::write_branch_lookup_table): Use
1221         correct BRLT entry size.
1222
1223 2013-07-03  Alan Modra  <amodra@gmail.com>
1224
1225         * powerpc.cc (Target_powerpc::Relocate::relocate): Update self-call
1226         comment.
1227
1228 2013-07-01  Cary Coutant  <ccoutant@google.com>
1229
1230         * dwarf_reader.cc (Dwarf_ranges_table::read_ranges_table): Save
1231         reloc_type_.
1232         (Dwarf_ranges_table::read_range_list): Call lookup_reloc.
1233         (Dwarf_ranges_table::lookup_reloc): New function.
1234         * dwarf_reader.h (Dwarf_ranges_table::Dwarf_ranges_table): Initialize
1235         reloc_type_.
1236         (Dwarf_ranges_table::lookup_reloc): New function.
1237         (Dwarf_ranges_table::reloc_type_): New data member.
1238
1239 2013-06-27  Jing Yu  <jingyu@google.com>
1240
1241         PR gold/15662
1242         * powerpc.cc (Output_data_brlt_powerpc::reset_brlt_sizes): New
1243         function.
1244         (Output_data_brlt_powerpc::finalize_brlt_sizes): New function.
1245         (Target_powerpc::do_relax): Call the above.
1246
1247 2013-06-27  Cary Coutant  <ccoutant@google.com>
1248
1249         * powerpc.cc (Target_powerpc::symval_for_branch): Don't assert
1250         on garbage collected .opd section.
1251
1252 2013-06-27  Alan Modra  <amodra@gmail.com>
1253
1254         * powerpc.cc (Target_powerpc::do_gc_add_reference): Test dst_shndx
1255         is non-zero.
1256         (Target_powerpc::do_gc_mark_symbols): Likewise for sym->shndx().
1257         (Target_powerpc::do_function_location): Likewise for loc->shndx.
1258
1259 2013-06-14  Cary Coutant  <ccoutant@google.com>
1260
1261         * resolve.cc (Symbol::override_base): Don't override st_type
1262         from plugin placeholder symbols.
1263         (Symbol_table::resolve): Likewise.
1264         (Symbol_table::should_override): Don't complain about TLS mismatch
1265         if the TO symbol is a plugin placeholder.
1266         * testsuite/Makefile.am (plugin_test_tls): New test.
1267         * testsuite/Makefile.in: Regenerate.
1268         * testsuite/plugin_test_tls.sh: New test script.
1269         * testsuite/two_file_test_2_tls.cc: New test source.
1270         * testsuite/two_file_test_tls.cc: New test source.
1271
1272 2013-06-05  Alexander Ivchenko  <alexander.ivchenko@intel.com>
1273
1274         * layout.cc (Layout::set_segment_offsets): Taking care of the case when
1275         the maximum segment alignment is larger than the page size.
1276         * testsuite/Makefile.am (large_symbol_alignment): Test that Gold
1277         correctly aligns the symbols with large alignemnt.
1278         * testsuite/Makefile.in: Regenerate.
1279         * testsuite/large_symbol_alignment.cc: New file.
1280
1281 2013-05-30  Alexander Ivchenko  <alexander.ivchenko@intel.com>
1282             Sriraman Tallam  <tmsriram@google.com>
1283
1284         * options.h (sort_section): New option.
1285         * output.h (Input_section_sort_section_prefix_special_ordering_compare):
1286         Rename from Input_section_sort_section_name_special_ordering_compare.
1287         (Input_section_sort_section_name_compare): New struct.
1288         * output.cc (Output_section::Input_section_sort_section_name_compare::
1289         operator()): New function.
1290         (Output_section::sort_attached_input_sections): Use new sort function
1291         for .text if --sort-section=name is specified.
1292         * layout.cc (Layout::make_output_section):
1293         Add sorting by name when --sort-section=name is specified.
1294         * testsuite/Makefile.am (text_section_grouping): Test option
1295         --sort-section=name.
1296         * testsuite/Makefile.in: Regenerate.
1297         * testsuite/section_sorting_name.cc: New file.
1298         * testsuite/section_sorting_name.sh: New file.
1299
1300 2013-05-21  Cary Coutant  <ccoutant@google.com>
1301
1302         * symtab.h (Symbol::is_cxx_vtable): New function.
1303         * target-reloc.h (relocate_section): Check for vtable symbol.
1304         * testsuite/Makefile.am (missing_key_func.sh): New test case.
1305         * testsuite/Makefile.in: Regenerate.
1306         * testsuite/missing_key_func.cc: New test source.
1307         * testsuite/missing_key_func.sh: New test script.
1308
1309 2013-05-21  Cary Coutant  <ccoutant@google.com>
1310
1311         * object.cc (Sized_relobj_file::get_symbol_location_info): Set
1312         type of enclosing symbol.
1313         (Relocate_info::location): Check symbol type when describing symbol.
1314         * object.h (Symbol_location_info): Remove unused line_number;
1315         add enclosing_symbol_type.
1316         * testsuite/debug_msg.sh: Adjust expected output.
1317
1318 2013-05-13  Cary Coutant  <ccoutant@google.com>
1319
1320         * configure.ac: Export DEFAULT_TARGET.
1321         * configure: Regenerate.
1322         * Makefile.in: Regenerate.
1323         * testsuite/Makefile.am: Add .EXPORT_ALL_VARIABLES.
1324         * testsuite/Makefile.in: Regenerate.
1325         * testsuite/debug_msg.sh: Delete duplicate tests.
1326         Don't check undef_int error message match for powerpc where the
1327         source file and line number aren't available.
1328
1329 2013-05-10  Roland McGrath  <mcgrathr@google.com>
1330
1331         * options.h (General_options): Add --rosegment-gap option.
1332         * options.cc (finalize): --rosegment-gap implies --rosegment.
1333         * layout.cc (set_segment_offsets): Let user option override
1334         target->rosegment_gap().
1335
1336 2013-05-10  Roland McGrath  <mcgrathr@google.com>
1337
1338         * options.h (General_options): Remove leading space from help
1339         messages for -nostdlib and --rosegment.
1340
1341 2013-05-03  Maciej W. Rozycki  <macro@codesourcery.com>
1342
1343         PR ld/15365
1344         * layout.cc (Layout::finalize): Make __ehdr_start STV_HIDDEN.
1345
1346 2013-05-03  Alan Modra  <amodra@gmail.com>
1347
1348         * merge.cc (Output_merge_string::do_add_input_section): Correct
1349         scan for number of strings.  Rename vars to avoid shadowing.
1350         Include missing terminator in input_size_.
1351
1352 2013-05-01  H.J. Lu  <hongjiu.lu@intel.com>
1353
1354         * merge.cc (Output_merge_string<Char_type>::do_add_input_section):
1355         Restore empty string handling.
1356
1357 2013-05-01  Cary Coutant  <ccoutant@google.com>
1358
1359         * stringpool.cc (Stringpool_template::new_key_offset): Fix
1360         uninitialized warning.
1361
1362 2013-04-29  Alexander Ivchenko  <alexander.ivchenko@intel.com>
1363
1364         * output.cc (Output_section::add_merge_input_section): Allow
1365         to merge sections if the alignment is more than character size.
1366         * merge.h (Output_merge_string::Output_merge_string): Remove
1367         assert.
1368         * merge.cc (Output_merge_string<Char_type>::do_add_input_section): Count
1369         only not-null strings. Check the alignment of strings.
1370         * stringpool.h
1371         (Stringpool_template<Stringpool_char>::Stringpool_template): Add
1372         alignment as the argument.
1373         (Stringpool_template<Stringpool_char>::addralign_): New class member.
1374         * stringpool.cc (Stringpool_template<Stringpool_char>::new_key_offset):
1375         Align non-zero length strings according to the addralign_.
1376         (Stringpool_template<Stringpool_char>::set_string_offsets):
1377         Updating offsets according to the given alignment.
1378         * testsuite/Makefile.am (text_section_grouping): Test if string
1379         literals are getting merged.
1380         * testsuite/Makefile.in: Regenerate.
1381         * testsuite/merge_string_literals_1.c: New file.
1382         * testsuite/merge_string_literals_2.c: Ditto.
1383         * testsuite/merge_string_literals.sh: Ditto.
1384
1385 2013-04-26  Ian Lance Taylor  <iant@google.com>
1386
1387         * target-reloc.h (relocate_section): If the reloc offset is out of
1388         range, pass VIEW as NULL to relocate.relocate.
1389         * arm.cc (Target_arm:Relocate::relocate): Check for a NULL view.
1390         * i386.cc (Target_i386::Relocate::relocate): Likewise.
1391         * powerpc.cc (Target_powerpc::Relocate::relocate): Likewise.
1392         * sparc.cc (Target_sparc::Relocate::relocate): Likewise.
1393         * tilegx.cc (Target_tilegx::Relocate::relocate): Likewise.
1394         * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
1395
1396 2013-04-26  Geoff Pike  <gpike@chromium.org>
1397
1398         * gold.cc (queue_final_tasks): invoke layout->queue_build_id_tasks().
1399         * layout.cc (Hash_task): New class.
1400         (Layout::queue_build_id_tasks): New function.
1401         (Layout::write_build_id): Handle single-thread portion of build ID
1402         computation.  (In some cases, all of it is single-threaded.)  Replace
1403         {sha1,md5}_process_bytes with {sha1,md5}_buffer to get the same
1404         functionality in fewer lines of code.
1405         * layout.h (Layout::queue_build_id_tasks): New function declaration.
1406         * options.h (General_options): make "--build-id" default to tree
1407         rather than sha1.  Add two new options related to --build-id=tree:
1408         --build-id-chunk-size-for-treehash and
1409         --build-id-min-file-size-for-treehash.
1410         * Makefile.am: add testing of --build-id=tree and related new options
1411         (these tests will be invoked by "make check").
1412         * Makefile.in: Regenerate.
1413
1414 2013-04-25  Alan Modra  <amodra@gmail.com>
1415
1416         * configure.tgt: Add powerpcle and powerpc64le.
1417
1418 2013-04-22  Alan Modra  <amodra@gmail.com>
1419
1420         PR gold/15355
1421         * layout.cc (Layout::segment_precedes): Allow more than one
1422         segment with the same type and flags.
1423
1424 2013-04-15  Cary Coutant  <ccoutant@google.com>
1425
1426         * layout.cc (Layout::set_relocatable_section_offsets): Don't
1427         allocate space in file for BSS sections.
1428
1429 2013-04-15  Cary Coutant  <ccoutant@google.com>
1430
1431         * script-sections.cc (Orphan_output_section): Reset address
1432         to zero after each orphaned section for relocatable links.
1433
1434 2013-04-15  Cary Coutant  <ccoutant@google.com>
1435
1436         * symtab.cc (Symbol_table::sized_write_globals): Subtract
1437         section starting address for relocatable link.
1438         * testsuite/Makefile.am (script_test_11): New test.
1439         * testsuite/Makefile.in: Regenerate.
1440         * testsuite/script_test_11.c: New source file.
1441         * testsuite/script_test_11.t: New linker script.
1442
1443 2013-04-13  Alan Modra  <amodra@gmail.com>
1444
1445         * powerpc.cc (Stub_control::can_add_to_stub_group): Don't set
1446         owner when sections are not adjacent and exceed group size.
1447         (Target_powerpc::group_sections): Handle corner case.
1448         (Target_powerpc::Branch_info::make_stub): Handle case where
1449         stub table doesn't exist due to branches in non-exec sections.
1450         (Target_powerpc::Relocate::relocate): Likewise.
1451
1452 2013-04-11  Alan Modra  <amodra@gmail.com>
1453
1454         PR gold/15354
1455         * powerpc.cc (Target_powerpc::make_brlt_section): Name section
1456         .branch_lt to match bfd ld.  Adjust comments throughout file.
1457
1458 2013-04-04  Ian Lance Taylor  <iant@google.com>
1459
1460         GCC PR c++/56840
1461         * object.cc (do_layout_deferred_sections): Handle .eh_frame
1462         sections before checking whether they are included in the link.
1463
1464 2013-03-29  Sriraman Tallam  <tmsriram@google.com>
1465
1466         * archive.cc (Archive::get_elf_object_for_member):  Create the elf
1467         object before calling the plugin claim_file handler.  Pass the elf
1468         object of the archive to the plugin. Delete the elf object if the
1469         plugin claims the file.
1470
1471 2013-03-21  Alan Modra  <amodra@gmail.com>
1472
1473         * layout.cc (Layout::set_segment_offsets): Accept writable .text
1474         segment when omagic.
1475
1476 2013-03-21  Alan Modra  <amodra@gmail.com>
1477
1478         * dwp.cc (Dwp_output_file::add_contribution): Avoid signed/unsigned
1479         comparison warning.
1480         * layout.cc (Layout::create_dynamic_symtab): Avoid "may be used
1481         uninitialized" warning.
1482
1483 2013-03-20  Alan Modra  <amodra@gmail.com>
1484
1485         * symtab.h (Symbol::clear_version): New function.
1486         * symtab.cc (Symbol_table::set_dynsym_indexes): Don't set object
1487         is_needed by weak references.  Clear version for symbols defined
1488         in as-needed objects that are not needed.
1489
1490 2013-03-15  Alan Modra  <amodra@gmail.com>
1491
1492         * powerpc.cc (Target_powerpc::Scan::reloc_needs_plt_for_ifunc): Make
1493         static and public.  Add report_err param.  Return false for data refs.
1494         (Target_powerpc::rela_dyn_section): New overloaded function.
1495         (Target_powerpc::plt_, iplt_): Elucidate.
1496         (Output_data_plt_powerpc::entry_count): Handle current_data_size()==0.
1497         (Output_data_plt_powerpc::do_write): Don't write .iplt.
1498         (Output_data_plt_powerpc::plt_entry_count): Don't add .iplt entries.
1499         (Target_powerpc::Scan::local, global): Adjust reloc_needs_plt_for_ifunc
1500         calls.  Put ifunc dynamic relocs in irela_dyn_section.  Only
1501         push_branch and make_plt_entry for ifunc syms when
1502         reloc_needs_plt_for_ifunc.
1503         (Target_powerpc::Relocate::relocate): Don't use plt entry value
1504         for ifunc unless reloc_needs_plt_for_ifunc.
1505
1506 2013-03-15  Alan Modra  <amodra@gmail.com>
1507
1508         * gc.h (gc_process_relocs): Don't look through function descriptors.
1509         * icf.cc (get_section_contents): Do so here instead.
1510
1511 2013-03-13  Alan Modra  <amodra@gmail.com>
1512
1513         * powerpc.cc (is_branch_reloc): Forward declare.
1514         (Target_powerpc::do_can_check_for_function_pointers): New predicate.
1515         (Target_powerpc::Scan::local_reloc_may_be_function_pointer): Return
1516         false for 64-bit, true for 32-bit non-branch relocs.
1517         (Target_powerpc::Scan::global_reloc_may_be_function_pointer): Likewise.
1518         * testsuite/Makefile.am (icf_test): Use linker map file instead of
1519         nm output.
1520         (icf_safe_test): Generate linker map file as well as nm output.
1521         (icf_safe_so_test): Likewise.
1522         * testsuite/Makefile.in: Regenerate.
1523         * testsuite/icf_test.sh: Parse linker map file to determine
1524         section folding.
1525         * testsuite/icf_safe_test.sh: Likewise.  Expect folding for PowerPC.
1526         * testsuite/icf_safe_so_test.sh: Likewise.
1527         (X86_32_or_ARM_specific_safe_fold): Merge into..
1528         (arch_specific_safe_fold): ..this.
1529         (X86_64_specific_safe_fold): Delete unused function.
1530
1531 2013-03-12  Alan Modra  <amodra@gmail.com>
1532
1533         * gc.h (gc_process_relocs): Look through function descriptors
1534         to determine shndx, symvalue and addend used by ICF.  Tidy
1535         variable duplication.
1536
1537 2013-03-11  Alan Modra  <amodra@gmail.com>
1538
1539         * gold.cc (queue_middle_tasks): Move detect_odr_violations..
1540         * layout.cc (Layout_task_runner::run): ..to here.
1541         * symtab.h (struct Symbol_location): Extract from..
1542         (class Symbol_table): ..here.
1543         * symtab.cc (Symbol_table::linenos_from_loc): Invoke function_location.
1544         * target.h (class Target): Add function_location and
1545         do_function_location functions.
1546         (class Sized_target): Add do_function_location.
1547         * object.h (class Sized_relobj_file): Move find_shdr..
1548         (class Object): ..to here.
1549         * object.cc: Likewise.  Update to suit.  Instantiate.
1550         (Sized_relobj_file::find_eh_frame): Update find_shdr call.
1551         * powerpc.cc (class Powerpc_dynobj): New.
1552         (Target_powerpc::do_function_location): New function.
1553         (Powerpc_relobj::do_find_special_sections): Update find_shdr call.
1554         (Powerpc_dynobj::do_read_symbols): New function.
1555         (Target_powerpc::do_make_elf_object): Make a Powerpc_dynobj.
1556
1557 2013-03-08  Ian Lance Taylor  <iant@google.com>
1558
1559         * options.cc (General_options::string_to_object_format): Accept
1560         "default".
1561
1562 2013-03-08  Alan Modra  <amodra@gmail.com>
1563
1564         * ehframe.h (Post_fdes) Make it a vector of Post_fde rather than
1565         pointer to Post_fde.
1566         (struct Post_fde): Move definition to here..
1567         * ehframe.cc (struct Post_fde): ..from here.
1568         (Cie::write): Don't alloc Post_fde.
1569         (Eh_frame::do_sized_write): Update.  Don't free Post_fde.
1570
1571 2013-03-07  Alan Modra  <amodra@gmail.com>
1572
1573         * testsuite/discard_locals_relocatable_test.c: Add a powerpc
1574         relocation referencing .LC0.
1575         * testsuite/discard_locals_test.sh: Remove FIXMEs.
1576
1577 2013-03-07  Alan Modra  <amodra@gmail.com>
1578
1579         * testsuite/ifunc-sel.h (ifunc_sel, ifunc_one): Mark
1580         always_inline.  Add assembly for powerpc to avoid GOT.
1581
1582 2013-03-07  Alan Modra  <amodra@gmail.com>
1583
1584         * testsuite/script_test_10.sh: Don't test .bss section
1585         header number.
1586
1587 2013-03-06  Alan Modra  <amodra@gmail.com>
1588
1589         * powerpc.cc (class Powerpc_relobj): Move some member functions.
1590         (Target_powerpc::symval_for_branch):  Add symtab param.  Update
1591         all callers.  Handle folded sections.
1592         (Target_powerpc::do_gc_add_reference): Don't cast dynamic object
1593         to Powerpc_relobj.
1594         (Global_symbol_visitor_opd::operator()): Likewise.
1595
1596 2013-03-04  Alan Modra  <amodra@gmail.com>
1597
1598         * testsuite/Makefile.am (final_layout_script.lds): Add .sbss.
1599         * testsuite/Makefile.in: Regenerate.
1600
1601 2013-03-01  Cary Coutant  <ccoutant@google.com>
1602
1603         Add dwp support for v2 DWARF package file format.
1604         * dwarf_reader.cc (Dwarf_info_reader::visit_type_unit): Add
1605         tu_length parameter.  Adjust all callers.
1606         * dwarf_reader.h (Dwarf_info_reader::visit_type_unit): Likewise.
1607         * dwp.cc: Include dwarf.h.
1608         (Section_bounds): New struct type.
1609         (Unit_set): New struct type.
1610         (Dwo_file::Dwo_file): Initialize new data member.
1611         (Dwo_file::read_compunit_index, Dwo_file::read_typeunit_index):
1612         Combine and rename to...
1613         (Dwo_file::read_unit_index): ...this.
1614         (Dwo_file::sized_read_compunit_index)
1615         (Dwo_file::sized_read_typeunit_index): Combine and rename to...
1616         (Dwo_file::sized_read_unit_index): ...this.
1617         (Dwo_file::copy_section): Remove section_name, is_str_offsets
1618         parameters; add section_id parameter.
1619         (Dwo_file::add_cu_set, Dwo_file::add_tu_set): Combine and rename to...
1620         (Dwo_file::add_unit_set): ...this.
1621         (Dwo_file::shndx_map_): Remove.
1622         (Dwo_file::sect_offsets_): New data member.
1623         (Dwp_output_file::Dwp_output_file): Initialize new data members.
1624         (Dwp_output_file::add_section): Rename to...
1625         (Dwp_output_file::add_contribution): ...this.
1626         (Dwp_output_file::add_cu_set): Combine parameters into a struct.
1627         (Dwp_output_file::add_tu_set): Likewise.
1628         (Dwp_output_file::Contribution): New type.
1629         (Dwp_output_file::Section::contributions): New data member.
1630         (Dwp_output_file::Cu_or_tu_set): Remove.
1631         (Dwp_output_file::Section::Section): New ctor.
1632         (Dwp_output_file::Dwp_index::Shndx_pool): Remove.
1633         (Dwp_output_file::Dwp_index::Section_table): New type.
1634         (Dwp_output_file::Dwp_index::Dwp_index): Initialize new data members.
1635         (Dwp_output_file::Dwp_index::enter_set): Change type of "set"
1636         parameter.
1637         (Dwp_output_file::Dwp_index::shndx_pool): Remove.
1638         (Dwp_output_file::Dwp_index::shndx_pool_end): Remove.
1639         (Dwp_output_file::Dwp_index::section_table): New member function.
1640         (Dwp_output_file::Dwp_index::section_table_end): New member function.
1641         (Dwp_output_file::Dwp_index::shndx_pool_size): Remove.
1642         (Dwp_output_file::Dwp_index::section_table_rows): New member function.
1643         (Dwp_output_file::Dwp_index::section_table_cols): New member function.
1644         (Dwp_output_file::Dwp_index::shndx_pool_): Remove.
1645         (Dwp_output_file::Dwp_index::section_table_): New data member.
1646         (Dwp_output_file::Dwp_index::section_mask_): New data member.
1647         (Dwp_output_file::add_output_section): New member function.
1648         (Dwp_output_file::write_new_section): New member function.
1649         (Dwp_output_file::write_contributions): New member function.
1650         (Dwp_output_file::section_id_map_): New data member.
1651         (class Dwo_id_info_reader): Remove.
1652         (class Unit_reader): New class.
1653         (get_dwarf_section_name): New function.
1654         (Dwo_file::read_executable): Adjust initializations of class data.
1655         (Dwo_file::read): Add support for v2 package file format.
1656         (Dwo_file::read_unit_index): Likewise.
1657         (Dwo_file::sized_read_unit_index): Likewise.
1658         (Dwo_file::copy_section): Likewise.
1659         (Dwo_file::add_unit_set): Likewise.
1660         (Dwp_output_file::add_output_section): Likewise.
1661         (Dwp_output_file::add_contribution): Likewise.
1662         (Dwp_output_file::Dwp_index::find_or_add): Use row index to check
1663         for empty slot.
1664         (Dwp_output_file::Dwp_index::enter_set): Add support for v2 package
1665         file format.
1666         (Dwp_output_file::Dwp_index::grow): Use row index to check for empty
1667         slot.
1668         (Dwp_output_file::initialize): Remove unused function.
1669         (Dwp_output_file::finalize): Add support for v2 package file format.
1670         (Dwp_output_file::write_index): Likewise.
1671         * gdb-index.cc (Gdb_index_info_reader::visit_type_unit): Adjust
1672         function prototype.
1673
1674 2013-03-01  Cary Coutant  <ccoutant@google.com>
1675
1676         * dwarf_reader.cc (Dwarf_info_reader::check_buffer): Move
1677         function into class definition in header file.
1678         (Dwarf_info_reader::warn_corrupt_debug_section): New function.
1679         * dwarf_reader.h (Dwarf_info_reader::warn_corrupt_debug_section):
1680         New function.
1681         (Dwarf_info_reader::check_buffer): Move here from .cc file.
1682
1683 2013-02-28  Alan Modra  <amodra@gmail.com>
1684
1685         * target.h (Target::plt_fde_location, do_plt_fde_location): Declare.
1686         * target.cc (Target::do_plt_fde_location): New function.
1687         * ehframe.h (class FDE): Add post_map field to u_.from_linker,
1688         accessor function, and constructor param.
1689         (struct Post_fde, Post_fdes): Declare.
1690         (Cie::write): Add post_fdes param.
1691         * ehframe.cc (Fde::write): Use plt_fde_location.
1692         (struct Post_fde): Define.
1693         (Cie::write): Stash FDEs added post merge mapping.
1694         (Eh_frame::add_ehframe_for_plt): Assert no new CIEs after mapping.
1695         Adjust Fde constructor call.  Bump final_data_size_ for post map FDEs.
1696         (Eh_frame::do_sized_write): Arrange to write post map FDES after
1697         other FDEs.
1698         * powerpc.cc (Target_powerpc::do_plt_fde_location): New function.
1699         (Target_powerpc::has_glink): New function.
1700         (Target_powerpc::do_relax): Add eh_frame info for stubs.
1701         (struct Eh_cie, eh_frame_cie, glink_eh_frame_fde_64,
1702         glink_eh_frame_fde_32, default_fde): New data.
1703         (Stub_table::eh_frame_added_): New var.
1704         (Stub_table::find_long_branch_entry, stub_address, stub_offset):
1705         Make const.
1706         (Stub_table::add_eh_frame): New function.
1707         (Output_data_glink::add_eh_frame): New function.
1708         (Target_powerpc::make_glink_section): Call add_eh_frame.
1709
1710 2013-02-15  Ian Lance Taylor  <iant@google.com>
1711
1712         * options.h (DEFINE_uint64_alias): Define.
1713         (class General_options): Add -Ttext-segment as an alias for
1714         -Ttext.
1715
1716 2013-02-15  Alan Modra  <amodra@gmail.com>
1717
1718         * powerpc.cc (Stub_table::plt_off): New function, extracted from..
1719         (Stub_table::do_write): ..here, two places.
1720         (Stub_table::plt_call_size): Use it here too.
1721
1722 2013-02-11  Ian Lance Taylor  <iant@google.com>
1723
1724         * descriptors.cc (Descriptors::close_all): New function.
1725         * descriptors.h (class Descriptors): Declare close_all.
1726         (close_all_descriptors): New inline function.
1727         * plugin.cc: Include "descriptors.h".
1728         (Plugin_manager::cleanup): Call close_all_descriptors.
1729
1730 2013-02-06  Alan Modra  <amodra@gmail.com>
1731
1732         * README: Update coding style link.
1733
1734 2013-01-28  Cary Coutant  <ccoutant@google.com>
1735
1736         * dwp.cc (File_list): New typedef.
1737         (Dwo_name_info_reader): New class.
1738         (Dwo_id_info_reader::Dwo_id_info_reader): Remove unused parameters.
1739         (Dwo_id_info_reader::visit_top_die): Remove unused member function.
1740         (Dwo_file::~Dwo_file): Delete input_file_ after obj_.
1741         (Dwo_file::read_executable): New function.
1742         (Dwo_file::read): Move common setup code to ...
1743         (Dwo_file::make_object): ... here.
1744         (dwp_options): Add --exec/-e.
1745         (usage): Likewise.
1746         (main): Likewise.
1747
1748 2013-01-24  Sriraman Tallam  <tmsriram@google.com>
1749
1750         * layout.cc (Layout::layout): Check for option text_reorder.
1751         (Layout::make_output_section): Ditto.
1752         * options.h (text_reorder): New option.
1753         * output.cc (Input_section_sort_compare): Remove special ordering
1754         of section names.
1755         (Output_section::
1756          Input_section_sort_section_name_special_ordering_compare::
1757          operator()): New function.
1758         (Output_section::sort_attached_input_sections): Use new sort function
1759         for .text.
1760         * output.h (Input_section_sort_section_name_special_ordering_compare):
1761         New struct.
1762         * testsuite/Makefile.am (text_section_grouping): Test option
1763         --no-text-reorder
1764         * testsuite/Makefile.in: Regenerate.
1765         * testsuite/text_section_grouping.sh: Check order of functions without
1766         default text reordering.
1767
1768 2013-01-18  Mike Frysinger  <vapier@gentoo.org>
1769
1770         * options.h (General_options): Change default to true for new_dtags.
1771
1772 2013-01-18  Mike Frysinger  <vapier@gentoo.org>
1773
1774         * layout.cc (Layout::finish_dynamic_section): Only add DT_RPATH
1775         when enable_new_dtags is false.  Only add DT_RUNPATH when
1776         enable_new_dtags is true.
1777
1778 2013-01-17  Serge Pavlov  <serge.v.pavlov@gmail.com>
1779
1780         * powerpc.cc (Stub_table::find_plt_call_entry): Make types
1781         used in declaration and definition consistent.
1782         (Target_powerpc::symval_for_branch): Ditto.
1783
1784 2013-01-16  Sriraman Tallam  <tmsriram@google.com>
1785
1786         * testsuite/plugin_final_layout.cc: Fix comment.
1787
1788 2013-01-16  Sriraman Tallam  <tmsriram@google.com>
1789
1790         * layout.cc (Layout::layout): Do not do default sorting for
1791         text sections when section ordering is specified.
1792         (make_output_section): Ditto.
1793         * testsuite/plugin_final_layout.cc: Name the function sections
1794         to catch reordering issues.
1795
1796 2013-01-15  Alan Modra  <amodra@gmail.com>
1797
1798         * powerpc.cc (Target_powerpc::do_relax): Default shared libs to
1799         plt-thread-safe.
1800
1801 2013-01-15  Alan Modra  <amodra@gmail.com>
1802
1803         * testsuite/Makefile.am (final_layout_script.lds): Handle .got section.
1804         * testsuite/Makefile.in: Regenerate.
1805
1806 2013-01-14  Alan Modra  <amodra@gmail.com>
1807
1808         * testsuite/Makefile.am (MOSTLYCLEANFILES): Add various output files.
1809         * testsuite/Makefile.in: Regenerate.
1810
1811 2013-01-11  Pavel Chupin  <pavel.v.chupin@intel.com>
1812
1813         PR bfd/14430
1814         Fix mingw gold build with plugins enabled
1815         * Makefile.am: Replace -ldl with @DLOPEN_LIBS@.
1816         * configure.ac: Export DLOPEN_LIBS and add headers check.
1817         * plugin.cc: Handle non-dlfcn case.
1818         * Makefile.in: Regenerate.
1819         * config.in: Regenerate.
1820         * configure: Regenerate.
1821         * testsuite/Makefile.in: Regenerate.
1822
1823 2013-01-09  Sriraman Tallam  <tmsriram@google.com>
1824
1825         * output.h (sort_attached_input_sections): Change to be public.
1826         * script-sections.cc
1827         (Output_section_definition::set_section_addresses): Sort
1828         attached input sections according to section order before linker
1829         script assigns section addresses.
1830         (Orphan_output_section::set_section_addresses): Sort
1831         attached input sections according to section order before linker
1832         script assigns section addresses.
1833         * Makefile.am (final_layout.sh): Use a simple linker script to
1834         check if section ordering still works.
1835         * Makefile.in: Regenerate.
1836
1837 2013-01-09  Ben Cheng  <bccheng@google.com>
1838
1839         * arm.cc (Target_arm::attributes_accept_div): New function.
1840         (Target_arm::attributes_forbid_div): New function.
1841         (Target_arm::merge_object_attributes): Merge the Tag_DIV_use
1842         attribute using the same new functions as what bfd/elf32_arm.c
1843         does.
1844
1845 2013-01-07  Cary Coutant  <ccoutant@google.com>
1846
1847         PR gold/14993
1848         * output.cc (Output_section::add_input_section): For incremental
1849         updates, don't track input sections that are allocated from patch
1850         space.
1851
1852 2013-01-07  H.J. Lu  <hongjiu.lu@intel.com>
1853             Ian Lance Taylor  <iant@google.com>
1854
1855         PR gold/14897
1856         * configure.ac (--enable-ld): Removed.
1857         (install_as_default): Set to yes only for --enable-gold=default
1858         or --disable-ld.
1859         * configure: Regenerated.
1860
1861 2013-01-07  H.J. Lu  <hongjiu.lu@intel.com>
1862
1863         * options.h (General_options): Add -fuse-ld= for GCC linker
1864         option compatibility.
1865
1866 2013-01-04  Cary Coutant  <ccoutant@google.com>
1867
1868         * configure.ac: Fix typo restoring CXXFLAGS.
1869         * configure: Regenerate.
1870
1871 2013-01-04  Cary Coutant  <ccoutant@google.com>
1872
1873         * testsuite/Makefile.am (CXXLINK_S): New macro.
1874         (debug_msg_so.err, debug_msg_ndebug.err): Use CXXLINK_S.
1875         * testsuite/Makefile.in: Regenerate.
1876
1877 2013-01-02  H.J. Lu  <hongjiu.lu@intel.com>
1878
1879         * version.cc (print_version): Update copyright year to 2013.
1880
1881 2012-12-20  Ian Lance Taylor  <iant@google.com>
1882
1883         * layout.cc (Layout::special_ordering_of_input_section): New
1884         function.
1885         (Layout::layout): If input section requires special ordering, must
1886         sort input sections.
1887         (Layout::make_output_section): May sort .text input sections.
1888         (Layout::is_section_name_prefix_grouped): Remove.
1889         * layout.h (class Layout): Declare
1890         special_ordering_of_input_section.  Don't declare
1891         is_section_name_prefix_grouped.
1892         * output.cc (Output_section::add_input_section): Revert last
1893         change.
1894         (Output_section::Input_section_sort::match_file_name): Don't crash
1895         if called on output section data.
1896         (Output_section::Input_section_sort_compare): Sort based on
1897         special ordering.
1898         (Output_section::Input_section_sort_section_order_index_compare):
1899         Revert last patch.
1900         (Output_section::sort_attached_input_sections): Likewise.
1901
1902 2012-12-18  Sriraman Tallam  <tmsriram@google.com>
1903
1904         * layout.cc (Layout::is_section_name_prefix_grouped): New function.
1905         * layout.h (Layout::is_section_name_prefix_grouped): New function.
1906         * output.cc (Output_section::add_input_section): Check if section
1907         name contains special prefix.  Keep input sections to sort such
1908         sections.
1909         (Output_section::Input_section_sort_section_order_index_compare
1910          ::operator()): Group sections according to prefixes.
1911         (Output_section::sort_attached_input_sections): Add condition to
1912         Input_section_entry constructor call.
1913         * testsuite/Makefile.am (text_section_grouping): New test.
1914         * testsuite/Makefile.in: Regenerate.
1915         * testsuite/text_section_grouping.cc: New file.
1916         * testsuite/text_section_grouping.sh: New file.
1917
1918 2012-12-17  Nick Clifton  <nickc@redhat.com>
1919
1920         * Makefile.am: Add copyright notice.
1921         * NEWS: Likewise.
1922         * README: Likewise.
1923         * configure.ac: Likewise.
1924         * ftruncate.c: Likewise.
1925         * Makefile.in: Regenerate.
1926
1927 2012-12-14  Cary Coutant  <ccoutant@google.com>
1928
1929         * testsuite/Makefile.am (exception_separate_shared_12_test): Add
1930         --no-as-needed flag.
1931         (exception_separate_shared_12_test): Likewise.
1932         (incremental_copy_test): Likewise.
1933         * testsuite/Makefile.in: Regenerate.
1934
1935 2012-12-14  Cary Coutant  <ccoutant@google.com>
1936
1937         * dwp.cc (Dwp_output_file::add_cu_set): Check for duplicate CUs.
1938         (Dwp_output_file::Dwp_index::enter_set): Add assert.
1939
1940 2012-12-12  Alan Modra  <amodra@gmail.com>
1941
1942         * powerpc.cc (class Track_tls): New.
1943         (class Relocate, class Scan): Inherit Track_tls.
1944         (Target_powerpc::Scan::local, global): Track tls optimization
1945         and avoid creating plt entry for __tls_get_addr if all uses
1946         are optimized away.
1947         (Target_powerpc::Relocate::relocate): Update to use Track_tls.
1948
1949 2012-12-12  Alan Modra  <amodra@gmail.com>
1950
1951         * options.h (General_options): Add --toc-sort/--no-toc-sort.
1952         Replace no_toc_optimize with toc_optimize.
1953         * output.h (Output_section::input_sections): Provide non-const variant.
1954         * powerpc.cc (Powerpc_relobj::has_small_toc_reloc_,
1955         set_has_small_toc_reloc, has_small_toc_reloc): New variable and
1956         accessors.
1957         (Target_powerpc::Scan::local, global): Call set_has_small_toc_reloc.
1958         (class Sort_toc_sections): New.
1959         (Target_powerpc::do_finalize_sections): Sort toc sections.
1960         (Target_powerpc::Relocate::relocate): Update toc_optimize test.
1961
1962 2012-12-10  Roland McGrath  <mcgrathr@google.com>
1963
1964         * testsuite/binary_unittest.cc (read_all): New function.
1965         (Sized_binary_test): Use it instead of ::read.
1966         * fileread.cc (do_read): Don't assume pread always reads the whole
1967         amount in a single call.
1968
1969 2012-12-10  Alan Modra  <amodra@gmail.com>
1970
1971         * powerpc.cc (Target_selector_powerpc::Target_selector_powerpc):
1972         Set EM_PPC64 or EM_PPC here.
1973         (Target_selector_powerpc::do_recognize): Delete.
1974
1975 2012-12-10  Alan Modra  <amodra@gmail.com>
1976
1977         * powerpc.cc (Powerpc_relobj::Powerpc_relobj): Init has14_ and
1978         stub_table_.
1979         (Target_powerpc::Branch_info::make_stub): Don't omit addend.
1980
1981 2012-12-07  Roland McGrath  <mcgrathr@google.com>
1982
1983         * testsuite/binary_unittest.cc (Sized_binary_test):
1984         Use open_descriptor rather than ::open.
1985
1986 2012-12-07  Alan Modra  <amodra@gmail.com>
1987
1988         * powerpc.cc (Stub_table::do_write): Delete redundant Address
1989         typedef and invalid_address constant.
1990         (Output_data_glink, Stub_table, Target_powerpc): Explicitly
1991         instantiate constants.
1992
1993 2012-12-06  Roland McGrath  <mcgrathr@google.com>
1994
1995         * configure.ac (HAVE_ZLIB): Use AM_ZLIB instead of AC_SEARCH_LIBS.
1996         Use $ac_cv_header_zlib_h = yes as the condition in AM_CONDITIONAL.
1997         * aclocal.m4: Regenerate.
1998         * configure: Regenerate.
1999         * Makefile.in: Regenerate.
2000         * testsuite/Makefile.in: Regenerate.
2001
2002 2012-12-07  Alan Modra  <amodra@gmail.com>
2003
2004         * options.h (General_options): Add no_toc_optimize.
2005         * powerpc.cc (ok_lo_toc_insn): New function.
2006         (Target_powerpc::Relocate::relocate): Optimize toc access sequences.
2007
2008 2012-12-06  Alan Modra  <amodra@gmail.com>
2009
2010         * options.h (General_options): Add plt_align, plt_static_chain,
2011         plt_thread_safe.  Update stub_group_size help text.
2012         * powerpc.cc (Target_powerpc::plt_thread_safe): New access function
2013         for new plt_thread_safe_ var.
2014         (use_plt_offset): Correct comments.
2015         (Target_powerpc::do_relax): Look for thread creation symbols to
2016         determine default plt_thread_safe value.  Clear plt call stubs
2017         as well as branch stubs each iteration.
2018         (add_2_2_11, add_12_12_11, bnectr_p4, cmpldi_2_0, xor_11_11_11): New
2019         insn constants.
2020         (l, hi, ha, write_insn): Move earlier.
2021         (Stub_table): Delete prev_size, add last_plt_size and last_branch_size.
2022         (Stub_table::clear_stubs): Rename from clear_long_branch_stubs, clear
2023         plt stubs too.
2024         (Stub_table::update_size): Adjust.
2025         (Stub_table::prev_size, set_prev_size): Delete.
2026         (Stub_table::stub_align): Let --plt-align affect result.
2027         (Stub_table::plt_call_size): Calculate sizes for various stubs.
2028         (Stub_table::branch_stub_size): Use last_plt_size in address calc.
2029         (Stub_table::add_plt_call_stub): Pass iterator to plt_call_size.
2030         (Stub_table::do_write): Support more stub variants.
2031
2032 2012-12-04  Alan Modra  <amodra@gmail.com>
2033
2034         * powerpc.cc (Powerpc_relobj::do_scan_relocs): Delete.
2035         (Target_powerpc::do_define_standard_symbols): New function.
2036
2037 2012-12-03  Alan Modra  <amodra@gmail.com>
2038
2039         * output.h: Formatting, whitespace.
2040
2041 2012-12-03  Alan Modra  <amodra@gmail.com>
2042
2043         * layout.h (Layout::get_executable_sections): Declare.
2044         * layout.cc (Layout::get_executable_sections): New function.
2045         * arm.cc (Target_arm::group_sections): Use it.
2046         (Arm_output_section::group_sections): Delete now redundant test.
2047         * output.cc (Output_reloc::Output_reloc): Add is_relative.
2048         param to handle relative relocs.
2049         * output.h (Output_reloc::Output_reloc <absolute reloc>): Likewise.
2050         (Output_data_reloc::add_absolute): Adjust.
2051         (Output_data_reloc::add_relative): New function.
2052         (Output_data::reset_data_size): New function.
2053         (Output_relaxed_input_section::set_relobj, set_shndx): New functions.
2054         (Output_section::set_addralign): New function.
2055         (Output_section::checkpoint_set_addralign): New function.
2056         (Output_section::clear_section_offsets_need_adjustment): New function.
2057         (Output_section::input_sections): Make public.
2058         * powerpc.cc (class Output_data_brlt_powerpc): New.
2059         (class Stub_table, class Stub_control): New.
2060         (Powerpc_relobj::has14_, set_has_14bit_branch, has_14bit_branch,
2061         stub_table_, set_stub_table, stub_table): New vectors and accessor
2062         functions.
2063         (Target_powerpc::do_may_relax, do_relax, push_branch,
2064         new_stub_table, stub_tables, brlt_section, group_sections,
2065         add_branch_lookup_table, find_branch_lookup_table,
2066         write_branch_lookup_table, make_brlt_section): New functions.
2067         (Target_powerpc::struct Sort_sections, class Branch_info): New.
2068         (Target_powerpc::brlt_section_, stub_tables_, branch_lookup_table_,
2069         branch_info_): New vars.
2070         (Target_powerpc::make_plt_entry, make_local_ifunc_plt_entry): Don't
2071         make call stubs here.
2072         (Output_data_glink): Remove all call stub handling from this class.
2073         (Target_powerpc::Scan::local, global): Save interesting branch
2074         relocs and relocs for ifunc.  Adjust calls to plt entry functions.
2075         (Target_powerpc::do_finalize_sections): Only make reg save/restore
2076         functions on final link.
2077         (Target_powerpc::Relocate::relocate): Adjust lookup of call stubs.
2078         Handle long branch destinations too.
2079         (Target_powerpc::do_dynsym_value, do_plt_address_for_global,
2080         do_plt_address_for_local): Adjust lookup of plt call stubs.
2081
2082 2012-11-30  Alan Modra  <amodra@gmail.com>
2083
2084         * powerpc.c (Target_powerpc::Scan::global): Don't emit relative
2085         relocs against protected symbols when building 32-bit shared libs.
2086
2087 2012-11-30  Alan Modra  <amodra@gmail.com>
2088
2089         * powerpc.cc (Target_powerpc::make_plt_section): Add symtab
2090         param.  Call got_section() to make .got.  Update all callers
2091         and their callers and so on.
2092
2093 2012-11-30  Alan Modra  <amodra@gmail.com>
2094
2095         * powerpc.cc (Powerpc_relobj::do_scan_relocs): Make STB_LOCAL
2096         _GLOBAL_OFFSET_TABLE_ rather than STB_WEAK.
2097         (Output_data_got_powerpc::make_header): Update _GLOBAL_OFFSET_TABLE_
2098         value if it already exists.
2099
2100 2012-11-19  H.J. Lu  <hongjiu.lu@intel.com>
2101
2102         PR gold/14858
2103         * x86_64.cc (Relocate::tls_ld_to_le): Support x32.
2104
2105 2012-11-14  Roland McGrath  <mcgrathr@google.com>
2106
2107         * arm.cc (Output_data_plt_arm_nacl::first_plt_entry): Use bic rather
2108         than bfc instruction for data sandboxing.
2109
2110 2012-11-08  Alan Modra  <amodra@gmail.com>
2111
2112         * po/POTFILES.in: Regenerate.
2113
2114 2012-11-05  Alan Modra  <amodra@gmail.com>
2115
2116         * configure.ac: Apply 2012-09-10 change to config.in here.
2117         * configure: Regenerate.
2118
2119 2012-11-05  Alan Modra  <amodra@gmail.com>
2120
2121         * powerpc.cc (Powerpc_relobj): Delete "Offset" typedef.
2122         (struct Opd_ent): Use "Address" rather than "Offset".
2123         (Output_data_got_powerpc::got_base_offset): Return Valtype.
2124         (Target_powerpc::got_section): Make public.
2125         (Target_powerpc::scan_relocs): Move code setting symbols..
2126         (Powerpc_relobj::do_scan_relocs): ..to here, new function.
2127         Create _SDA_BASE_ only when referenced.
2128
2129 2012-11-02  Roland McGrath  <mcgrathr@google.com>
2130
2131         * i386.cc (Target_i386::relocate_relocs): Remove extraneous typename
2132         from last change.
2133
2134 2012-11-01  Roland McGrath  <mcgrathr@google.com>
2135
2136         * target.h (Sized_target::relocate_relocs): Use Elf_Off
2137         for offset_in_output_section parameter.
2138         (Sized_target::relocate_special_relocatable): Likewise.
2139         * arm.cc (Target_arm::relocate_relocs): Likewise.
2140         (Target_arm::relocate_special_relocatable): Likewise.
2141         * i386.cc (Target_i386::relocate_relocs): Likewise.
2142         * powerpc.cc (Target_powerpc::relocate_relocs): Likewise.
2143         * sparc.cc (Target_sparc::relocate_relocs): Likewise.
2144         * target-reloc.h (relocate_relocs): Likewise.
2145         * testsuite/testfile.cc (Target_test): Likewise.
2146         * tilegx.cc (Target_tilegx::relocate_relocs): Likewise.
2147         * x86_64.cc (Target_x86_64::relocate_relocs): Likewise.
2148
2149         * system.h: Move inclusion of <clocale> to after <libintl.h> in
2150         [ENABLE_NLS] section, and separately at top of [!ENABLE_NLS] section.
2151
2152         * descriptors.cc (set_close_on_exec): Add ATTRIBUTE_UNUSED to the
2153         parameter, which is unused in the [!F_SETFD] case.
2154
2155         * dwarf_reader.cc (Sized_elf_reloc_mapper::symbol_section): Cast
2156         SYMNDX to off_t before comparing it to this->data_size().
2157         * output.cc (Output_symtab_xindex::endian_do_write): Likewise.
2158         * incremental.cc (Output_section_incremental_inputs::do_write):
2159         Cast GLOBAL_SYM_COUNT to off_t before comparing it to SYMTAB_SIZE.
2160
2161         * nacl.cc: Include "libiberty.h" for vasprintf declaration.
2162
2163 2012-10-30  Steve McIntyre  <steve.mcintyre@linaro.org>
2164
2165         * gold.cc (Target_arm::do_adjust_elf_header): Add the
2166         hard-float/soft-float ABI flag as appropriate for ET_DYN/ET_EXEC
2167         in EABI_VER5.
2168
2169 2012-10-29  Cary Coutant  <ccoutant@google.com>
2170
2171         * dwp.cc (usage): Add file and exit status parameters;
2172         add --help and --version options.
2173         (print_version): New function.
2174         (main): Add --help and --version options.
2175
2176 2012-10-25  H.J. Lu  <hongjiu.lu@intel.com>
2177
2178         * testsuite/Makefile.am (MOSTLYCLEANFILES): Add
2179         final_layout_sequence.txt.
2180         * testsuite/Makefile.in: Regenerated.
2181
2182 2012-10-25  H.J. Lu  <hongjiu.lu@intel.com>
2183
2184         * testsuite/Makefile.am (COMPILE1): New variable. Renamed from
2185         COMPILE generated by automake.
2186         (LINK1): Likewise.
2187         (CXXCOMPILE1): Likewise.
2188         (CXXLINK1): Likewise.
2189         (COMPILE): Strip out -Wp,-D_FORTIFY_SOURCE= from COMPILE1.
2190         (LINK): Likewise.
2191         (CXXCOMPILE): Likewise.
2192         (CXXLINK): Likewise.
2193         * testsuite/Makefile.in: Regenerated.
2194
2195 2012-10-25  H.J. Lu  <hongjiu.lu@intel.com>
2196
2197         * dwp.cc (Dwo_file::record_target_info): Issue a fatal error
2198         on bad fwrite return.
2199
2200 2012-10-25  H.J. Lu  <hongjiu.lu@intel.com>
2201
2202         * dwp.cc (Dwo_file::remap_str_offset): Use section_offset_type
2203         on val.
2204
2205 2012-10-23  Cary Coutant  <ccoutant@google.com>
2206
2207         * testsuite/Makefile.am (TEST_OBJCOPY): New macro.
2208         * testsuite/Makefile.in: Regenerate.
2209         * testsuite/dwp_test.h: New source file.
2210         * testsuite/dwp_test_1.cc: New source file.
2211         * testsuite/dwp_test_1.s: New source file.
2212         * testsuite/dwp_test_1.sh: New source file.
2213         * testsuite/dwp_test_1b.cc: New source file.
2214         * testsuite/dwp_test_1b.s: New source file.
2215         * testsuite/dwp_test_2.cc: New source file.
2216         * testsuite/dwp_test_2.s: New source file.
2217         * testsuite/dwp_test_2.sh: New source file.
2218         * testsuite/dwp_test_main.cc: New source file.
2219         * testsuite/dwp_test_main.s: New source file.
2220
2221 2012-10-23  Cary Coutant  <ccoutant@google.com>
2222
2223         * dwp.h: New header file.
2224         * dwp.cc: New source file.
2225         * gold.h: Move shared declarations to system.h.
2226         * system.h: New header file.
2227         * Makefile.am: Add dwp.
2228         * Makefile.in: Regenerate.
2229
2230 2012-10-23  Cary Coutant  <ccoutant@google.com>
2231
2232         * dwarf_reader.cc (Dwarf_ranges_table::read_range_list): Call
2233         Dwarf_info_reader::read_from_pointer.
2234         (Dwarf_pubnames_table::read_header): Likewise.
2235         (Dwarf_pubnames_table::next_name): Likewise.
2236         (Dwarf_die::read_attributes): Likewise.
2237         (Dwarf_die::skip_attributes): Likewise.
2238         (Dwarf_info_reader::read_from_pointer): New function template.
2239         * dwarf_reader.h (Dwarf_ranges_table): Add dwinfo_.
2240         (Dwarf_pubnames_table): Likewise.
2241         (Dwarf_info_reader::read_from_pointer): New function template.
2242         * gdb-index.cc (Gdb_index_info_reader): Adjust call to
2243         Dwarf_pubnames_table ctor.
2244
2245 2012-10-23  Cary Coutant  <ccoutant@google.com>
2246
2247         * dwarf_reader.cc (Dwarf_info_reader::do_parse): Use stored
2248         abbrev_shndx.
2249         * dwarf_reader.h (Dwarf_info_reader::Dwarf_info_reader): Initialize
2250         abbrev_shndx_.
2251         (Dwarf_info_reader::set_abbrev_shndx): New method.
2252         (Dwarf_info_reader::abbrev_shndx_): New data member.
2253
2254 2012-10-23  Cary Coutant  <ccoutant@google.com>
2255
2256         * dwarf_reader.cc (make_elf_reloc_mapper): Check size and endianness
2257         from object, not parameters.
2258         (Dwarf_info_reader::parse): Likewise.
2259         * object.h (Relobj::elfsize, Relobj::is_big_endian): New methods.
2260         (Relobj::do_elfsize, Relobj::do_is_big_endian): New methods.
2261         (Sized_relobj::do_elfsize, Sized_relobj::do_is_big_endian): New
2262         methods.
2263
2264 2012-10-23  Cary Coutant  <ccoutant@google.com>
2265
2266         * fileread.cc (Input_file::Input_file): New constructor.
2267         * fileread.h (class Input_file): Add new constructor.
2268
2269 2012-10-18  Alan Modra  <amodra@gmail.com>
2270
2271         PR gold/14727
2272         * object.cc (Relobj::is_section_name_included): Also match
2273         .sdata personality section.
2274
2275 2012-10-18  Alan Modra  <amodra@gmail.com>
2276
2277         * target-reloc.h (class Default_comdat_behavior): New, package up..
2278         (get_comdat_behaviour): ..this.
2279         (relocate_section): Add Relocate_comdat_behavior template arg,
2280         adjust code to suit.
2281         * arm.cc (Target_arm::relocate_section): Adjust to suit.
2282         (Target_arm::scan_reloc_section): Likewise.
2283         * i386.cc (Target_i386::relocate_section): Likewise.
2284         * sparc.cc (Target_sparc::relocate_section): Likewise.
2285         * tilegx.cc (Target_tilegx::relocate_section): Likewise.
2286         * x86_64.cc (Target_x86_64::relocate_section): Likewise.
2287         * powerpc.cc (class Relocate_comdat_behavior): New.
2288         (Target_powerpc::relocate_section): Don't zap opd relocs.  Supply
2289         gold::relocate_section with new template arg.
2290
2291 2012-10-18  Alan Modra  <amodra@gmail.com>
2292
2293         * powerpc.cc (Target_powerpc::Scan::local, global): Always emit
2294         dynamic relocs for GOT_TPREL got entries, without symbol if
2295         resolving locally.
2296         (Target_powerpc::do_gc_add_reference): Don't add for dynamic objects.
2297         (Target_powerpc::scan_relocs): Define _GLOBAL_OFFSET_TABLE_ early.
2298         (Target_powerpc::Relocate:relocate): REL32 reloc may be unaligned.
2299
2300 2012-10-17  Alan Modra  <amodra@gmail.com>
2301
2302         PR gold/14726
2303         * gold.cc (queue_middle_tasks): Call gc_mark_symbol on _init and _fini.
2304
2305 2012-10-16  Sriraman Tallam  <tmsriram@google.com>
2306
2307         * layout.cc (Layout::include_section): Keep sections marked
2308         SHF_EXCLUDE when doing relocatable links.
2309
2310 2012-10-16  Alan Modra  <amodra@gmail.com>
2311
2312         * powerpc.cc (Target_powerpc::define_save_restore_funcs): New func.
2313         (Target_powerpc::do_finalize_sections): Call it.
2314         (Output_data_save_res): New class and supporting functions.
2315         (Target_powerpc::symval_for_branch): Only look up .opd entry for
2316         normal symbols defined in object files.
2317
2318 2012-10-12  Alan Modra  <amodra@gmail.com>
2319
2320         * powerpc.cc (Powerpc_relobj::add_gc_mark, process_gc_mark): New.
2321         (struct Opd_ent): Make "discard" a bit field.  Add "gc_mark".
2322         (Target_powerpc::do_gc_mark_symbol): Delay marking function code
2323         section if scan_opd_relocs not yet called.
2324         (Target_powerpc::gc_process_relocs): Call process_gc_mark.
2325
2326 2012-10-12  Alan Modra  <amodra@gmail.com>
2327
2328         * powerpc.cc (Output_data_plt_powerpc::add_entry, add_ifunc_entry,
2329         add_local_ifunc_entry): Revert last change.
2330         (Target_powerpc::make_plt_entry, make_local_ifunc_plt_entry): Likewise.
2331
2332 2012-10-05  Alan Modra  <amodra@gmail.com>
2333
2334         * powerpc.cc (Target_powerpc::do_plt_address_for_local,
2335         do_plt_address_for_global): New functions.
2336         (Output_data_got_powerpc::do_write): Don't segfault when linking
2337         statically.
2338         (Output_data_plt_powerpc::add_entry, add_ifunc_entry,
2339         add_local_ifunc_entry): Return true on adding entry..
2340         (Target_powerpc::make_plt_entry): ..use to avoid unnecessary
2341         glink->add_entry call.  Remove unused symtab param.  Adjust calls.
2342         (Target_powerpc::make_local_ifunc_plt_entry): Likewise.
2343         (Target_powerpc::make_iplt_section): Remove symtab param.  Don't
2344         set up symbols here.
2345         (Target_powerpc::do_finalize_sections): Instead set up __rela_iplt
2346         syms here.  Do so even when no .iplt.  Don't segfault when linking
2347         statically.
2348         (Output_data_glink::add_entry, find_entry): Rearrange params.  Add
2349         new variants without reloc param.
2350         (Glink_sym_ent::Glink_sym_ent): Likewise.
2351         (Target_powerpc::Scan::reloc_needs_plt_for_ifunc): Accept any
2352         reloc when refs will resolve to plt call stub.
2353         (Target_powerpc::Scan::local): Correct ifunc handling.  Allow
2354         R_PPC_PLTREL24 to resolve locally.
2355         (Target_powerpc::Scan::global): Correct ifunc handling.
2356         (Target_powerpc::Relocate::relocate): Correct local sym glink
2357         lookup.  Don't destroy "value" when we have a plt call stub,
2358         and when checking plt call validity.
2359         (Target_powerpc::do_dynsym_value): Simplify.
2360
2361 2012-10-05  Alan Modra  <amodra@gmail.com>
2362
2363         * i386.cc (Output_data_plt_i386::address_for_global,
2364         address_for_local): Add plt offset to returned value.  Adjust uses.
2365         * sparc.cc (Output_data_plt_sparc::address_for_global,
2366         address_for_local): Likewise.
2367         * tilegx.cc (Output_data_plt_tilegx::address_for_global,
2368         address_for_local): Likewise.
2369         * x86_64.cc (Output_data_plt_x86_64::address_for_global,
2370         address_for_local): Likewise.
2371         * target.h (Target::plt_address_for_global, plt_address_for_local):
2372         Update comment.
2373         * output.cc (Output_reloc::symbol_value): Don't add plt offset here.
2374         (Output_data_got::Got_entry::write): Nor here.
2375         * output.h: Comment fix.
2376
2377 2012-10-02  Jiong Wang  <jiwang@tilera.com>
2378
2379         * tilegx.cc (Target_tilegx::do_finalize_sections): Adjust
2380         global_offset_table_ value for larget got.
2381         (Target_tilegx::Relocate::relocate): Handle adjusted got value.
2382
2383 2012-09-29  Alan Modra  <amodra@gmail.com>
2384
2385         * powerpc.cc (Target_powerpc::iplt_): New output section.
2386         (Target_powerpc::iplt_section, make_iplt_section,
2387         reloc_needs_plt_for_ifunc, make_local_ifunc_plt_entry): New functions.
2388         (Target_powerpc::make_plt_entry): Handle ifunc syms.
2389         Target_powerpc::plt_entry_count): Count iplt entries too.
2390         (Output_data_plt_powerpc::Output_data_plt_powerpc): Don't create
2391         reloc section in constructor.  New params.
2392         (Target_powerpc::make_plt_section): Create reloc section here instead.
2393         (Output_data_plt_powerpc::add_ifunc_entry, add_local_ifunc_entry): New
2394         functions.
2395         (Output_data_plt_powerpc::initial_plt_entry_size_, name_): New vars.
2396         (Output_data_glink::add_entry, find_entry): New functions to
2397         deal with local syms.
2398         (Glink_sym_ent): Add support for local syms.
2399         (Output_data_glink::do_write): Handle ifunc plt entries.
2400         (Target_powerpc::Scan::get_reference_flags): Handle more relocs.
2401         (Target_powerpc::Scan::local, global): Handle ifunc syms.
2402         (Target_powerpc::Relocate::relocate): Likewise.
2403         (Target_powerpc::do_dynsym_value): Use glink stub, not plt entry.
2404
2405 2012-09-25  Alan Modra  <amodra@gmail.com>
2406
2407         * object.h (Sized_relobj_file::adjust_local_symbol,
2408         do_adjust_local_symbol): New functions.
2409         * object.cc (Sized_relobj_file::do_count_local_symbols): Use the above.
2410         * powerpc.cc (Powerpc_relobj::do_adjust_local_symbol): New function.
2411         (Powerpc_relobj::scan_opd_relocs): Warn on unexpected opd relocs
2412         and irregular opd entry spacing.
2413         (Powerpc_relobj::do_read_relocs): Add opd size checks.
2414         (Global_symbol_visitor_opd): New functor.
2415         (Target_powerpc::do_finalize_sections): Omit global symbols defined
2416         on deleted opd entries.
2417
2418 2012-09-15  Jiong Wang  <jiwang@tilera.com>
2419
2420         * tilegx.cc: New file.
2421         * Makefile.am (TARGETSOURCES): Add tilegx.cc
2422         (ALL_TARGETOBJS): Add tilegx.$(OBJEXT)
2423         * configure.tgt: Add entries for tilegx*.
2424         * configure.ac: Likewise.
2425         * Makefile.in: Rebuild.
2426         * configure: Likewise.
2427         * testsuite/icf_safe_test.sh (arch_specific_safe_fold): Handle
2428         tilegx.
2429
2430 2012-09-13  Alan Modra  <amodra@gmail.com>
2431
2432         * target-reloc.h (scan_relocs): Call scan.local for relocs
2433         against symbols in discarded sections.  Pass is_discarded
2434         param.
2435         * arm.cc, * i386.cc, * sparc.cc, * x86_64.cc (Target_*::Scan::local):
2436         Add is_discarded param.
2437         * powerpc (Target_powerpc::Scan::local): Likewise.  Use
2438         is_discarded to flag opd entry as discarded.  Don't emit dyn
2439         relocs on such entries.
2440         (Target_powerpc::Scan::global): Similarly detect and handle
2441         such opd entries.
2442         (Powerpc_relobj): Replace opd_ent_shndx_ and opd_ent_off_ with
2443         opd_ent_.  Update all uses.
2444         (Powerpc_relobj::get_opd_discard, set_opd_discard): New functions.
2445         (Target_powerpc::relocate_section): Zero out discarded opd
2446         entry relocs.
2447
2448 2012-09-12  Ian Lance Taylor  <iant@google.com>
2449
2450         PR gold/14570
2451         * output.cc: Rename Output_data_got template parameter from size
2452         to got_size for all functions.  Compile all variants of
2453         Output_data_got.
2454         (Output_data_got::Got_entry::write): Correct use of size for
2455         symbol value.  Use local_is_tls rather than casting to
2456         Sized_relobj_file.
2457         * object.h (class Object): Add local_is_tls and do_local_is_tls.
2458         (class Sized_relobj_file): Add do_local_is_tls.
2459         * incremental.h (class Sized_relobj_incr): Add do_local_is_tls.
2460
2461 2012-09-11  Alan Modra  <amodra@gmail.com>
2462
2463         PR gold/14566
2464         * layout.cc (Layout::set_segment_offsets): When using
2465         common-page-size alignment, ensure we are on a new max-page-size
2466         page.
2467         * output.cc (Output_segment::set_section_addresses): Use
2468         abi_pagesize, not common_pagesize for relro boundary.
2469         (Output_segment::set_offset): Likewise.
2470
2471 2012-09-11  Alan Modra  <amodra@gmail.com>
2472
2473         * output.h (Output_data_got::add_global_tls, add_local_tls,
2474         add_local_tls_pair): New functions.
2475         (Output_data_got::add_local_pair_with_rel): Remove second
2476         reloc param.  Expand comment.
2477         (Output_data_got::Got_entry): Rename use_plt_offset_ to
2478         use_plt_or_tls_offset_, similarly for constructor param.
2479         (Output_data_got::Got_entry::write): Add got_index param.
2480         * output.cc (Output_data_got::add_global_tls, add_local_tls,
2481         add_local_tls_pair): New functions.
2482         (Output_data_got::Got_entry::write): Handle tls symbols
2483         with use_plt_or_tls_offset_ set specially.
2484         (Output_data_got::add_local_pair_with_rel): Only one reloc.
2485         (Output_data_got::do_write): Replace iterator with index, pass
2486         index to entry write function.
2487         * target.h (Target::tls_offset_for_local, tls_offset_for_global,
2488         do_tls_offset_for_local, do_tls_offset_for_global): New functions.
2489         * arm.cc (Target_arm::Scan::local): Update add_local_pair_with_rel
2490         call.
2491         * i386.cc (Target_i386::Scan::local): Likewise.
2492         * sparc.cc (Target_sparc::Scan::local): Likewise.
2493         * x86_64.cc (Target_x86_64::Scan::local): Likewise.
2494         * powerpc.cc (Target_powerpc::do_tls_offset_for_local,
2495         do_tls_offset_for_global): New functions.
2496         (Target_powerpc::Scan::local): Correct TLS relocations and got
2497         entry values.
2498         (Target_powerpc::Scan::global): Don't emit unnecessary
2499         dynamic relocations on TLS GOT entries.
2500
2501 2012-09-10  Matthias Klose  <doko@ubuntu.com>
2502
2503         * config.in: Disable sanity check for kfreebsd.
2504
2505 2012-09-10  Sterling Augustine  <saugustine@google.com>
2506
2507         * gdb-index.cc (Gdb_index::pubnames_read): New parameter.
2508         (Gdb_index::pubtypes_read): New parameter.
2509         (Gdb_index_info_reader::read_pubnames_and_pubtypes): Add parameters
2510         to calls.
2511         * gdb-index.h (Gdb_index): New fields pubnames_object_ and
2512         pubtypes_object_.
2513
2514 2012-09-09  Alan Modra  <amodra@gmail.com>
2515
2516         * target.h (Target::gc_mark_symbol, do_gc_mark_symbol): New functions.
2517         (Sized_target::gc_add_reference, do_gc_add_reference): New functions.
2518         * gc.h (gc_process_relocs): Call target gc_add_reference.
2519         * gold.cc (queue_middle_tasks): Use gc_mark_symbol on start sym.
2520         * symtab.cc (Symbol_table::gc_mark_undef_symbols): Use gc_mark_symbol.
2521         (Symbol_table::gc_mark_symbol): Call target gc_mark_symbol. Remove
2522         unnecessary cast.
2523         * powerpc.cc (Powerpc_relobj::get_opd_ent): Rearrange parameters
2524         to cater for when we don't need code offset.  Update use.
2525         (Powerpc_relobj::access_from_map_, opd_valid_): New vars.
2526         (Powerpc_relobj::access_from_map, add_reference, opd_valid,
2527         set_opd_valid): New functions.
2528         (Target_powerpc::do_gc_add_reference): New function.
2529         (Target_powerpc::gc_process_relocs): Call gc()->add_reference on
2530         stashed refs.
2531         (Target_powerpc::do_gc_mark_symbol): New function.
2532
2533 2012-09-06  Cary Coutant  <ccoutant@google.com>
2534
2535         * dwarf_reader.cc (Dwarf_die::read_attributes): Add
2536         DW_FORM_GNU_addr_index and DW_FORM_GNU_str_index.
2537         (Dwarf_die::skip_attributes): Likewise.
2538         * object.cc (Read_symbols_data::~Read_symbols_data): Update comment.
2539         * testsuite/gdb_index_test.cc (inline_func_1): New function.
2540         (main): Call it.
2541         * testsuite/gdb_index_test_comm.sh: Check index for inline function.
2542
2543 2012-09-05  H.J. Lu  <hongjiu.lu@intel.com>
2544
2545         * testsuite/script_test_3.t: Add .got.plt output section
2546         statement.
2547         * testsuite/script_test_4.t: Likewise.
2548
2549 2012-09-05  Alan Modra  <amodra@gmail.com>
2550
2551         * powerpc.cc (Powerpc_relocate_functions): Upcase enum values,
2552         update all uses and lose "enum" when using type.
2553
2554 2012-09-05  Alan Modra  <amodra@gmail.com>
2555
2556         * configure.ac (FN_PTRS_IN_SO_WITHOUT_PIC): False for powerpc.
2557         * configure: Regenerate.
2558         * testsuite/Makefile.am (final_layout.stdout): Pass --synthetic to nm.
2559         (plugin_final_layout.stdout): Likewise.
2560         (memory_test): Set page sizes to 0x1000.
2561         * testsuite/Makefile.in: Regenerate.
2562         * testsuite/discard_locals_test.sh: Add FIXME comment.
2563         * testsuite/justsyms_exec.c: Disable function test for powerpc64.
2564         * testsuite/pr14265.t: Add .got output section statement.
2565         * testsuite/script_test_2.t: Likewise.
2566         * testsuite/script_test_3.t: Likewise.
2567         * testsuite/script_test_4.t: Likewise.
2568         * testsuite/script_test_5.t: Likewise.
2569         * testsuite/script_test_6.t: Likewise.
2570         * testsuite/script_test_7.t: Likewise.
2571         * testsuite/script_test_9.t: Likewise.
2572
2573 2012-09-05  Alan Modra  <amodra@gmail.com>
2574
2575         * powerpc.cc (Powerpc_relobj::get_opd_ent): Make const.
2576         (Powerpc_relocate_functions::Status): New typedef.
2577         (Target_powerpc::Scan::get_reference_flags): Handle more relocs.
2578         (Target_powerpc::Scan::local): Handle REL64.
2579         (Target_powerpc::Scan::global): Likewise, and dynamic relocs
2580         for REL32 and REL64.
2581         (Target_powerpc::symval_for_branch): New function, extracted from..
2582         (Target_powerpc::Relocate::relocate): ..here.  Correct plt call
2583         checks.  Report overflow errors.
2584
2585 2012-09-05  Alan Modra  <amodra@gmail.com>
2586
2587         * object.h (Sized_relobj_file::emit_relocs): Delete.
2588         (Sized_relobj_file::emit_relocs_reltype): Delete.
2589         * reloc.cc (Sized_relobj_file::do_relocate_sections): Call target
2590         relocate_relocs for --emit-relocs.
2591         (Sized_relobj_file::emit_relocs, emit_relocs_reltype): Delete.
2592         * output.h: Update comment.
2593         (Output_segment::first_section): New function.
2594         (Output_segment::first_section_load_address): Use first_section.
2595         * output.cc (Output_segment::first_section): New function extracted..
2596         (Output_segment::first_section_load_address): ..from here.  Delete.
2597         * target-reloc.h (relocate_for_relocatable): Rename to relocate_relocs.
2598         * target.h (Sized_target::relocate_for_relocatable): Likewise.
2599         * arm.cc (Target_arm::relocate_for_relocatable): Likewise, and
2600         adjust call to target.h function.
2601         * i386.cc (Target_i386): Likewise.
2602         * sparc.cc (Target_sparc): Likewise.
2603         * x86_64.cc (Target_x86_64): Likewise.
2604         * powerpc.cc (Target_powerpc): Likewise.
2605         (Target_powerpc::Scan::local, global): Handle R_POWERPC_TLS.  Ensure
2606         first tls section has section symbol for optimised local dynamic
2607         output relocs.
2608         (Target_powerpc::Relocate::relocate): Correct local dynamic value.
2609         (Target_powerpc::relocate_relocs): Adjust relocs emitted for
2610         optimised tls code.
2611         * testsuite/testfile.cc (Target_test::relocate_for_relocatable):
2612         Rename to relocate_relocs.  Update error message.
2613
2614 2012-09-04  Andreas Schwab  <schwab@linux-m68k.org>
2615
2616         * powerpc.cc (do_make_elf_object): Allow ET_EXEC files with
2617         --just-symbols.
2618
2619 2012-08-31  Alan Modra  <amodra@gmail.com>
2620
2621         * powerpc.cc (Powerpc_relobj): Add and use Address typedef.
2622         (Powerpc_relobj::toc_base_offset): New stub function.
2623         (Target_powerpc): Add tp_offset, dtp_offset.  Rename
2624         got_mod_index_offset to tlsld_got_offset.  Update all refs.
2625         (Target_powerpc::Relocate::enum skip_tls): New.
2626         (Target_powerpc::call_tls_get_addr_): New var.
2627         (Target_powerpc::is_branch_reloc): Move to file scope.
2628         (Target_powerpc::relocate_tls, optimize_tls_reloc): Delete.
2629         (Target_powerpc::optimize_tls_gd, optimize_tls_ld, optimize_tls_ie):
2630         New functions.
2631         (Target_powerpc::enum Got_type): Delete old values, add new ones.
2632         (powerpc_info): Correct common_pagesize for ppc64.
2633         (at_tls_transform, needs_dynamic_reloc, use_plt_offset): New functions.
2634         (Powerpc_relocate_functions): Add overflow check enums and functions.
2635         Add non-shift version of rela, rela_ua.  Delete all rel public
2636         functions.  Delete addr16_lo.  Add addr64, addr64_u, addr32,
2637         addr32_u, addr24, addr16_u, addr16_hi2, addr16_ha2, addr16_hi3,
2638         addr16_ha3, addr14 functions.
2639         (Output_data_got_powerpc::add_constant_pair): New function.
2640         (Output_data_got_powerpc::got_base_offset): Likewise.
2641         (Output_data_got_powerpc::do_write): Correct 64-bit got header.
2642         (instruction constants): Sort, add some more.
2643         (Output_data_glink::do_write): Add and use Address typedef.  Use
2644         object->toc_base_offset() stub for 64-bit.
2645         (Target_powerpc::tlsld_got_offset): Use add_constant_pair.
2646         (Target_powerpc::Scan::get_reference_flags): Handle more relocs.
2647         (Target_powerpc::Scan::local, global): Emit relative dynamic reloc
2648         for R_PPC64_TOC.  Handle more relocs.  Generate got entries for TLS.
2649         Always treat .opd relocs as against locally defined symbol.
2650         Correct condition for RELATIVE relocs.
2651         (Target_powerpc::do_finalize_sections): Test for NULL sections.
2652         (Target_powerpc::Relocate::relocate): Use plt call stub as value
2653         for 32-bit syms with a plt entry.  Correct ppc64 toc base
2654         calculations.  Handle TLS relocs, and more.  Add overflow
2655         checking and adjust for Powerpc_relocate_functions changes.
2656         (Target_powerpc::relocate_for_relocatable): Handle zero r_sym.
2657         Reinstate --emit-relocs code with FIXME.
2658
2659 2012-08-30  Alan Modra  <amodra@gmail.com>
2660
2661         * layout.cc (Layout::set_segment_offsets): Set p_align to
2662         abi_pagesize, not common_pagesize.
2663         (Layout::relaxation_loop_body): Similarly use abi_pagesize
2664         to determine whether file header can go in segment.
2665
2666 2012-08-30  Alan Modra  <amodra@gmail.com>
2667
2668         * output.h (Output_reloc::Output_reloc <output section>): Add
2669         is_relative param.  Adjust calls.
2670         (Output_reloc::add_output_section_relative): New functions.
2671         * output.cc (Output_reloc::Output_reloc <output section>): Handle
2672         is_relative.
2673         (Output_reloc::symbol_value): Handle SECTION_CODE.
2674
2675 2012-08-24  Sriraman Tallam  <tmsriram@google.com>
2676
2677         * gold.cc (queue_middle_tasks): Call layout again when unique
2678         segments for sections is desired.
2679         * layout.cc (Layout::Layout): Initialize new members.
2680         (Layout::get_output_section_flags): New function.
2681         (Layout::choose_output_section): Call get_output_section_flags.
2682         (Layout::layout): Make output section for mapping to a unique segment.
2683         (Layout::insert_section_segment_map): New function.
2684         (Layout::attach_allocated_section_to_segment): Make unique segment for
2685         output sections marked so.
2686         (Layout::segment_precedes): Check for unique segments when sorting.
2687         * layout.h (Layout::Unique_segment_info): New struct.
2688         (Layout::Section_segment_map): New typedef.
2689         (Layout::insert_section_segment_map): New function.
2690         (Layout::get_output_section_flags): New function.
2691         (Layout::is_unique_segment_for_sections_specified): New function.
2692         (Layout::set_unique_segment_for_sections_specified): New function.
2693         (Layout::unique_segment_for_sections_specified_): New member.
2694         (Layout::section_segment_map_): New member.
2695         * object.cc (Sized_relobj_file<size, big_endian>::do_layout):
2696         Rename is_gc_pass_one to is_pass_one.
2697         Rename is_gc_pass_two to is_pass_two.
2698         Rename is_gc_or_icf to is_two_pass.
2699         Check for which pass based on whether symbols data is present.
2700         Make it two pass when unique segments for sections is desired.
2701         * output.cc (Output_section::Output_section): Initialize new
2702         members.
2703         * output.h (Output_section::is_unique_segment): New function.
2704         (Output_section::set_is_unique_segment): New function.
2705         (Output_section::is_unique_segment_): New member.
2706         (Output_section::extra_segment_flags): New function.
2707         (Output_section::set_extra_segment_flags): New function.
2708         (Output_section::extra_segment_flags_): New member.
2709         (Output_section::segment_alignment): New function.
2710         (Output_section::set_segment_alignment): New function.
2711         (Output_section::segment_alignment_): New member.
2712         (Output_segment::Output_segment): Initialize is_unique_segment_.
2713         (Output_segment::is_unique_segment): New function.
2714         (Output_segment::set_is_unique_segment): New function.
2715         (Output_segment::is_unique_segment_): New member.
2716         * plugin.cc (allow_unique_segment_for_sections): New function.
2717         (unique_segment_for_sections): New function.
2718         (Plugin::load): Add new functions to transfer vector.
2719         * Makefile.am (plugin_final_layout.readelf.stdout): Add readelf output.
2720         * Makefile.in: Regenerate.
2721         * testsuite/plugin_final_layout.sh: Check if unique segment
2722         functionality works.
2723         * testsuite/plugin_section_order.c (onload): Check if new interfaces
2724         are available.
2725         (allow_unique_segment_for_sections): New global.
2726         (unique_segment_for_sections): New global.
2727         (claim_file_hook): Call allow_unique_segment_for_sections.
2728         (all_symbols_read_hook): Call unique_segment_for_sections.
2729
2730 2012-08-22  Cary Coutant  <ccoutant@google.com>
2731
2732         * layout.cc (Layout::include_section): Don't assert on GROUP
2733         sections with --emit-relocs.
2734
2735 2012-08-21  Cary Coutant  <ccoutant@google.com>
2736
2737         * symtab.cc (Symbol_table::gc_mark_undef_symbols): Don't assert
2738         if --export-dynamic-symbol names an undef symbol.
2739
2740 2012-08-18  Alan Modra  <amodra@gmail.com>
2741
2742         * powerpc.cc: Formatting and white space.
2743         (Powerpc_relobj): Rename got2_section_ to special_.
2744         Add opd_ent_shndx_ and opd_ent_off_ vectors.
2745         (Powerpc_relobj::opd_shndx, init_opd, get_opd_ent, set_opd_ent,
2746         scan_opd_relocs, do_read_relocs, opd_ent_ndx): New functions.
2747         (Target_powerpc): Add Address typedef and invalid_address.  Use
2748         throughout.
2749         (Target_powerpc::is_branch_reloc): New function.
2750         (Powerpc_relocate_functions): Add Address typedef, use throughout.
2751         (Powerpc_relocate_functions:rela, rela_ua): Correct type used
2752         for dst_mask, value and addend.
2753         (Powerpc_relobj::do_find_special_sections): Find .opd for 64-bit.
2754         (ld_2_1, cror_15_15_15, cror_31_31_31): New insn constants.
2755         (Output_data_glink::do_write): Correct toc base.  Don't try to use
2756         uint16_t for 24-bit offset.  Use get_output_section_offset and
2757         check return.
2758         (Target_powerpc::Scan::local): Handle more relocs.
2759         (Target_powerpc::do_finalize_sections): Set up DT_PPC64_GLINK.
2760         (Target_powerpc::Relocate::relocate): Correct toc base calculation.
2761         Plug in toc restoring insn after plt calls.  Translate branches
2762         to function descriptor symbols to corresponding entry point.
2763         (Target_powerpc::relocate_for_relocatable): Check return from
2764         get_output_section_offset.
2765         * symtab.h: Comment typo.
2766
2767 2012-08-14  Ian Lance Taylor  <iant@google.com>
2768
2769         * x86_64.cc (Target_x86_64::Scan::global): Fix erroneous call to
2770         unsupported_relocal_local to call unsupported_reloc_global.
2771
2772 2012-08-14  Nick Clifton  <nickc@redhat.com>
2773
2774         PR ld/14265
2775         * script-sections.cc (Sections_element::output_section_name): Add
2776         keep return parameter.
2777         (Output_section_element::match_name): Add keep return parameter.
2778         Return the value of the keep_ member.
2779         * script-sections.h (class Output_section): Update
2780         output_section_name prototype.
2781         * layout.cc (Layout::keep_input_section): New public member
2782         function.
2783         (Layout::choose_output_section): Pass keep parameter to
2784         output_section_name.
2785         * layout.h (class Layout): Add keep_input_section.
2786         * object.cc (Sized_relobj_file::do_layout): Check for kept input
2787         sections.
2788         * testsuite/Makefile.am: Add a test.
2789         * testsuite/Makefile.in: Regenerate.
2790         * testsuite/pr14265.c: Source file for the test.
2791         * testsuite/pr14265.t: Linker script for the test.
2792         * testsuite/pr14265.sh: Shell script for the test.
2793
2794 2012-08-14  Alan Modra  <amodra@gmail.com>
2795
2796         * target.h (Target::output_section_name): New function.
2797         (Target::do_output_section_name): New function.
2798         * layout.cc (Layout::choose_output_section): Call the above.
2799         * powerpc.cc (Target_powerpc::do_output_section_name): New function.
2800
2801 2012-08-14  Alan Modra  <amodra@gmail.com>
2802
2803         * powerpc.cc: Update for renamed R_PPC_REL16 relocs.
2804         (Output_data_got_powerpc::do_write): Don't rely on base class lookup
2805         for replace_constant call.
2806         (Output_data_plt_powerpc::do_print_to_mapfile): New function.
2807         (Output_data_glink::do_print_to_mapfile): New function.
2808         (Target_powerpc::Scan::local): Ignore R_PPC64_TOCSAVE.
2809         (Target_powerpc::Relocate::relocate): Likewise.
2810
2811 2012-08-14  Alan Modra  <amodra@gmail.com>
2812
2813         * powerpc.cc (Powerpc_relobj::set_got2_shndx): Delete.
2814         (Powerpc_relobj::do_find_special_sections): Don't use set_got2_shndx.
2815         (Output_data_glink::add_entry,find_entry): Remove shndx param.
2816         (class Glink_sym_ent): Rename from struct Glink_sym_ent.  Remove
2817         all references to shndx_.  Handle special case for R_PPC_PLTREL24
2818         here.
2819         (class Glink_sym_ent_hash): Rename from struct Glink_sym_ent_hash.
2820         (Output_data_glink::do_write): Retrieve got2_shdnx from object.
2821         (Target_powerpc::make_plt_entry): Don't special case R_PPC_PLTREL24
2822         here.
2823         (Target_powerpc::Scan::global): Nor on make_plt_entry call.
2824         (Target_powerpc::Relocate::relocate): Nor on glink->find_entry call.
2825
2826 2012-08-12  Alan Modra  <amodra@gmail.com>
2827
2828         * powerpc.cc: Whitespace fixes.  Wrap overly long lines.
2829         (glink insn constants): Use uint32_t.
2830         (Output_data_glink::add_entry): Use insert, not [] operator.
2831
2832 2012-08-11  Alan Modra  <amodra@gmail.com>
2833
2834         * object.h (Sized_relobj_file::find_shdr): New function.
2835         (Sized_relobj_file::find_special_sections): New function.
2836         * object.cc (Sized_relobj_file::find_shdr): New function.
2837         (Sized_relobj_file::find_eh_frame): Use find_shdr.
2838         (Sized_relobj_file::find_special_sections): New function, split out..
2839         (Sized_relobj_file::do_read_symbols): ..from here.
2840         * output.h (Output_data_got::replace_constant): New function.
2841         (Output_data_got::num_entries): New function.
2842         (Output_data_got::last_got_offset,set_got_size): Use num_entries.
2843         (Output_data_got::got_offset): Protected rather than private.
2844         (Output_data_got::replace_got_entry): New function.
2845         * output.cc (Output_data_got::replace_got_entry): New function.
2846         * powerpc.cc (class Powerpc_relobj): New.
2847         (class Powerpc_relocate_functions): Delete all psymval variants or
2848         convert to value,addend type.  Delete pcrela, pcrela_unaligned.
2849         Implement _ha functions using corresponding _hi function.
2850         (Powerpc_relobj::find_special_sections): New function.
2851         (Target_powerpc::do_make_elf_object): New function.
2852         (class Output_data_got_powerpc): New.
2853         (class Output_data_glink): New.
2854         (class Powerpc_scan_relocatable_reloc): New.
2855         Many more changes througout file.
2856
2857 2012-08-09  Nick Clifton  <nickc@redhat.com>
2858
2859         * po/vi.po: Updated Vietnamese translation.
2860
2861 2012-08-07  Ian Lance Taylor  <iant@google.com>
2862
2863         * layout.cc (Layout::add_target_dynamic_tags): If
2864         dynrel_includes_plt but no dyn_rel, emit dynamic reloc tags for
2865         plt_rel.
2866
2867 2012-07-30  Nick Clifton  <nickc@redhat.com>
2868
2869         * po/gold.pot: Updated template.
2870         * po/es.po: Updated Spanish translation.
2871
2872 2012-07-18  Cary Coutant  <ccoutant@google.com>
2873
2874         PR gold/14344
2875         * configure.ac: Add check for -gpubnames support.
2876         * configure: Regenerate.
2877         * testsuite/Makefile.am (gdb_index_test_1): Add check for -gpubnames
2878         support; force -gno-pubnames.
2879         (gdb_index_test_2, gdb_index_test_3): Add check for -gpubnames
2880         support.
2881         (gdb_index_test_4): New test.
2882         * testsuite/Makefile.in: Regenerate.
2883         * testsuite/gdb_index_test_1.sh: Refactor code into common file.
2884         * testsuite/gdb_index_test_2.sh: Likewise.
2885         * testsuite/gdb_index_test_3.sh: Don't look for space after colon.
2886         * testsuite/gdb_index_test_4.sh: New script.
2887         * testsuite/gdb_index_test_comm.sh: New script with common code;
2888         don't look for space after colon.
2889
2890 2012-07-16  Sriraman Tallam  <tmsriram@google.com>
2891
2892         * gold.cc (queue_middle_tasks): Update function order only after
2893         deferred objects due to plugins are processed.
2894
2895 2012-07-11  Ian Lance Taylor  <iant@google.com>
2896
2897         * arm.cc (Arm_relocate_functions::abs16): Remove unused typedef.
2898         (Arm_exidx_cantunwind::do_fixed_endian_write): Likewise.
2899         (Target_arm::scan_reloc_for_stub): Likewise.
2900         * common.cc (Symbol_table::do_allocate_commons_list): Likewise.
2901         * dwarf_reader.cc (Dwarf_die::skip_attributes): Likewise.
2902         * ehframe.cc (Eh_frame::do_add_ehframe_input_section): Likewise.
2903         * incremental.cc (Sized_incr_dynobj::do_add_symbols): Likewise.
2904         * powerpc.cc (Target_powerpc::relocate_tls): Likewise.
2905
2906 2012-07-10  Dodji Seketeli  <dodji@redhat.com>
2907             Ian Lance Taylor  <iant@google.com>
2908
2909         PR gold/14309
2910         * configure.ac: Test whether std::tr1::hash<off_t> works.
2911         * gold.h: Add a specialization for std::tr1::hash<off_t> if
2912         needed.
2913         * output.h (class Output_fill): Add virtual destructor.
2914         * configure, config.in: Rebuild.
2915
2916 2012-06-22  Roland McGrath  <mcgrathr@google.com>
2917
2918         * layout.cc (finalize): Define __ehdr_start symbol if applicable.
2919
2920 2012-06-12  Rafael Ávila de Espíndola <respindola@mozilla.com>
2921
2922         * plugin.cc (Plugin::load): Handle position independent executables.
2923
2924 2012-06-06  Cary Coutant  <ccoutant@google.com>
2925
2926         * layout.cc (gdb_sections): Remove ".debug_" prefixes,
2927         add .debug_macro.
2928         (lines_only_debug_sections): Likewise.
2929         (gdb_fast_lookup_sections): New static array.
2930         (is_gdb_debug_section): Rename formal parameter.
2931         (is_lines_only_debug_section): Likewise.
2932         (is_gdb_fast_lookup_section): New function.
2933         (Layout::include_section): Check for ".zdebug_" prefix; pass
2934         section name suffix to is_gdb_debug_section, et al.; check for
2935         fast-lookup sections when building .gdb_index.
2936         * options.h (--strip-debug-gdb): Update GDB version number.
2937
2938 2012-06-06  Cary Coutant  <ccoutant@google.com>
2939
2940         * configure.ac: Add check for fallocate.
2941         * configure: Regenerate.
2942         * config.in: Regenerate.
2943
2944         * options.h (class General_options): Add --mmap-output-file and
2945         --posix-fallocate options.
2946         * output.cc: (posix_fallocate): Remove; replace with...
2947         (gold_fallocate): New function.
2948         (Output_file::map_no_anonymous): Call gold_fallocate.
2949         (Output_file::map): Check --mmap-output-file option.
2950
2951 2012-06-05  Jing Yu  <jingyu@google.com>
2952
2953         * gold.h (textdomain): Add do {} to empty while(0).
2954         (bindtextdomain): Likewise.
2955
2956 2012-06-04  Cary Coutant  <ccoutant@google.com>
2957
2958         * dynobj.cc (Sized_dynobj::do_get_global_symbol_counts): Call
2959         has_dynsym_index.
2960
2961 2012-05-25  Sriraman Tallam  <tmsriram@google.com>
2962
2963         * symtab.cc (Symbol_table::define_special_symbol):
2964         Initialize *poldsym to prevent uninitialized variable errors.
2965
2966 2012-05-23  Cary Coutant  <ccoutant@google.com>
2967
2968         * layout.cc (Layout::section_name_mapping): Add rules to handle
2969         exact match on .data.rel.ro.local or .data.rel.ro.
2970         (Layout::output_section_name): Check for exact matches.
2971
2972 2012-05-23  Cary Coutant  <ccoutant@google.com>
2973
2974         * layout.cc (Layout::section_name_mapping): Match .data.rel.ro.*
2975         more carefully.
2976
2977 2012-05-22  Cary Coutant  <ccoutant@google.com>
2978
2979         * symtab.cc (Symbol::should_add_dynsym_entry): Check for relocatable
2980         object before exporting symbol.
2981
2982 2012-05-21  H.J. Lu  <hongjiu.lu@intel.com>
2983
2984         * testsuite/tls_test.cc: Include "config.h" first.
2985         * testsuite/tls_test_c.c: Likewise.
2986
2987 2012-05-17  Daniel Richard G.  <skunk@iskunk.org>
2988             Nick Clifton  <nickc@redhat.com>
2989
2990         PR 14072
2991         * configure.in: Add check that sysdep.h has been included before
2992         any system header files.
2993         * configure: Regenerate.
2994         * config.in: Regenerate.
2995
2996 2012-05-14  Cary Coutant  <ccoutant@google.com>
2997
2998         * layout.cc (Layout::make_output_section): Mark .tdata section
2999         as RELRO.
3000         * testsuite/relro_test.cc: Add a TLS variable.
3001
3002 2012-05-10  H.J. Lu  <hongjiu.lu@intel.com>
3003
3004         PR gold/14091
3005         * x86_64.cc (Target_x86_64::Scan::local): For x32, generate
3006         R_X86_64_RELATIVE64 instead of R_X86_64_RELATIVE in case of
3007         R_X86_64_64.
3008
3009 2012-05-08  Cary Coutant  <ccoutant@google.com>
3010
3011         * layout.cc (gdb_sections): Update GDB version, add .debug_addr.
3012         (lines_only_debug_sections): Likewise.
3013
3014 2012-05-02  Roland McGrath  <mcgrathr@google.com>
3015
3016         * nacl.cc: New file.
3017         * nacl.h: New file.
3018         * Makefile.am (CCFILES, HFILES): Add them.
3019         * Makefile.in: Regenerate.
3020         * i386.cc (Output_data_plt_i386_nacl): New class.
3021         (Output_data_plt_i386_nacl_exec): New class.
3022         (Output_data_plt_i386_nacl_dyn): New class.
3023         (Target_i386_nacl): New class.
3024         (Target_selector_i386_nacl): New class.
3025         (target_selector_i386): Use it instead of Target_selector_i386.
3026         * x86_64.cc (Output_data_plt_x86_64_nacl): New class.
3027         (Target_x86_64_nacl): New class.
3028         (Target_selector_x86_64_nacl): New class.
3029         (target_selector_x86_64, target_selector_x32): Use it instead of
3030         Target_selector_x86_64.
3031         * arm.cc (Output_data_plt_arm_nacl): New class.
3032         (Target_arm_nacl): New class.
3033         (Target_selector_arm_nacl): New class.
3034         (target_selector_arm, target_selector_armbe): Use it instead of
3035         Target_selector_arm.
3036
3037         * target-select.cc (select_target): Take new Input_file* and off_t
3038         arguments, pass them on to recognize method of selector.
3039         * object.cc (make_elf_sized_object): Update caller.
3040         * parameters.cc (parameters_force_valid_target): Likewise.
3041         * incremental.cc (make_sized_incremental_binary): Likewise.
3042         * target-select.h: Update decl.
3043         (Target_selector::recognize): Take new Input_file* argument,
3044         pass it on to do_recognize.
3045         (Target_selector::do_recognize): Take new Input_file* argument.
3046         * freebsd.h (Target_selector_freebsd::do_recognize): Likewise.
3047         * powerpc.cc (Target_selector_powerpc::do_recognize): Likewise.
3048         * sparc.cc (Target_selector_sparc::do_recognize): Likewise.
3049         * testsuite/testfile.cc (Target_selector::do_recognize): Likewise.
3050
3051         * target.h (Target::Target_info): New members isolate_execinstr
3052         and rosegment_gap.
3053         (Target::isolate_execinstr, Target::rosegment_gap): New methods.
3054         * arm.cc (Target_arm::arm_info): Update initializer.
3055         * i386.cc (Target_i386::i386_info): Likewise.
3056         * powerpc.cc (Target_powerpc::powerpc_info): Likewise.
3057         * sparc.cc (Target_sparc::sparc_info): Likewise.
3058         * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
3059         * testsuite/testfile.cc (Target_test::test_target_info): Likewise.
3060         * layout.cc (Layout::attach_allocated_section_to_segment):
3061         Take new const Target* argument.  If target->isolate_execinstr(), act
3062         like --rosegment.
3063         (Layout::find_first_load_seg): Take new const Target* argument;
3064         if target->isolate_execinstr(), reject PF_X segments.
3065         (Layout::relaxation_loop_body): Update caller.
3066         (Layout::set_segment_offsets): If target->isolate_execinstr(),
3067         reset file offset to zero when we hit LOAD_SEG, and then do a second
3068         loop over the segments before LOAD_SEG to reassign offsets after
3069         addresses have been determined.  Handle target->rosegment_gap().
3070         (Layout::attach_section_to_segment): Take new const Target* argument;
3071         pass it to attach_allocated_section_to_segment.
3072         (Layout::make_output_section): Update caller.
3073         (Layout::attach_sections_to_segments): Take new const Target* argument;
3074         pass it to attach_section_to_segment.
3075         * gold.cc (queue_middle_tasks): Update caller.
3076         * layout.h (Layout): Update method decls with new arguments.
3077
3078         * arm.cc (Target_arm::Target_arm): Take optional argument for the
3079         Target_info pointer to use.
3080         (Target_arm::do_make_data_plt): New virtual method.
3081         (Target_arm::make_data_plt): New method that calls it.
3082         (Target_arm::make_plt_entry): Use it.
3083         (Output_data_plt_arm::Output_data_plt_arm): Take additional argument
3084         for the section alignment.
3085         (Output_data_plt_arm::do_first_plt_entry_offset): New abstract virtual
3086         method.
3087         (Output_data_plt_arm::first_plt_entry_offset): Call it.
3088         (Output_data_plt_arm::do_get_plt_entry_size): New abstract virtual
3089         method.
3090         (Output_data_plt_arm::get_plt_entry_size): Call it.
3091         (Output_data_plt_arm::do_fill_plt_entry): New abstract virtual method.
3092         (Output_data_plt_arm::fill_plt_entry): New method that calls it.
3093         (Output_data_plt_arm::do_fill_first_plt_entry): New abstract virtual
3094         method.
3095         (Output_data_plt_arm::fill_first_plt_entry): New method that calls it.
3096         (Output_data_plt_arm::set_final_data_size): Use get_plt_entry_size
3097         method instead of sizeof(plt_entry).
3098         (Output_data_plt_arm::add_entry): Likewise.
3099         Use first_plt_entry_offset method instead of sizeof(first_plt_entry).
3100         (Target_arm::first_plt_entry_offset): Call method on this->plt_ rather
3101         than static method.
3102         (Target_arm::plt_entry_size): Likewise.
3103         (Output_data_plt_arm::first_plt_entry, Output_data_plt_arm::plt_entry):
3104         Move to ...
3105         (Output_data_plt_arm_standard): ... here, new class.
3106         (Output_data_plt_arm::do_write): Move guts of PLT filling to...
3107         (Output_data_plt_arm_standard::do_fill_first_plt_entry): ... here ...
3108         (Output_data_plt_arm_standard::do_fill_plt_entry): ... and here.
3109
3110         * x86_64.cc (Output_data_plt_x86_64::Output_data_plt_x86_64):
3111         Take additional argument for the PLT entry size.
3112         (Output_data_plt_x86_64::get_tlsdesc_plt_offset):
3113         Use get_plt_entry_size method rather than plt_entry_size variable.
3114         (Output_data_plt_x86_64::reserve_slot): Likewise.
3115         (Output_data_plt_x86_64::do_adjust_output_section): Likewise.
3116         (Output_data_plt_x86_64::add_entry): Likewise.
3117         (Output_data_plt_x86_64::add_local_ifunc_entry): Likewise.
3118         (Output_data_plt_x86_64::address_for_global): Likewise.
3119         (Output_data_plt_x86_64::address_for_local): Likewise.
3120         (Output_data_plt_x86_64::set_final_data_size): Likewise.
3121         (Output_data_plt_x86_64::first_plt_entry_offset): Likewise.
3122         Make method non-static.
3123         (Output_data_plt_x86_64::do_get_plt_entry_size): New abstract virtual
3124         method.
3125         (Output_data_plt_x86_64::get_plt_entry_size): Just call that.
3126         (Output_data_plt_x86_64::do_add_eh_frame): New abstract virtual method.
3127         (Output_data_plt_x86_64::add_eh_frame): New method to call it.
3128         (Output_data_plt_x86_64::do_fill_first_plt_entry): New abstract
3129         virtual method.
3130         (Output_data_plt_x86_64::fill_first_plt_entry): New method to call it.
3131         (Output_data_plt_x86_64::do_fill_plt_entry): New abstract
3132         virtual method.
3133         (Output_data_plt_x86_64::fill_plt_entry): New method to call it.
3134         (Output_data_plt_x86_64::do_fill_tlsdesc_entry): New abstract
3135         virtual method.
3136         (Output_data_plt_x86_64::fill_tlsdesc_entry): New method to call it.
3137         (Output_data_plt_x86_64::plt_entry_size)
3138         (Output_data_plt_x86_64::first_plt_entry)
3139         (Output_data_plt_x86_64::plt_entry)
3140         (Output_data_plt_x86_64::tlsdesc_plt_entry)
3141         (Output_data_plt_x86_64::plt_eh_frame_fde_size)
3142         (Output_data_plt_x86_64::plt_eh_frame_fde): Move to ...
3143         (Output_data_plt_x86_64_standard): ... here, new class.
3144         (Target_x86_64::Target_x86_64): Take optional argument for the
3145         Target_info pointer to use.
3146         (Target_x86_64::do_make_data_plt): New virtual method.
3147         (Target_x86_64::make_data_plt): New method to call it.
3148         (Target_x86_64::init_got_plt_for_update): Use that.
3149         Call this->plt_->add_eh_frame method here.
3150         (Output_data_plt_x86_64::init): Don't do add_eh_frame_for_plt here.
3151         (Target_x86_64::first_plt_entry_offset): Call method on this->plt_
3152         rather than static method.
3153         (Target_x86_64::plt_entry_size): Likewise.
3154         (Output_data_plt_x86_64::do_write): Use get_plt_entry_size method
3155         rather than plt_entry_size variable.  Move guts of PLT filling to...
3156         (Output_data_plt_x86_64_standard::do_fill_first_plt_entry): ... here ...
3157         (Output_data_plt_x86_64_standard::do_fill_plt_entry): ... and here ...
3158         (Output_data_plt_x86_64_standard::do_fill_tlsdesc_entry): ... and here.
3159
3160         * i386.cc (Output_data_plt_i386::Output_data_plt_i386): Take
3161         additional argument for the section alignment.
3162         Don't do add_eh_frame_for_plt here.
3163         (Output_data_plt_i386::first_plt_entry_offset): Make the method
3164         non-static.  Use get_plt_entry_size method rather than plt_entry_size
3165         variable.
3166         (Output_data_plt_i386::do_get_plt_entry_size): New abstract virtual
3167         method.
3168         (Output_data_plt_i386::get_plt_entry_size): Call it.
3169         (Output_data_plt_i386::do_add_eh_frame): New abstract virtual method.
3170         (Output_data_plt_i386::add_eh_frame): New method to call it.
3171         (Output_data_plt_i386::do_fill_first_plt_entry): New abstract virtual
3172         method.
3173         (Output_data_plt_i386::fill_first_plt_entry): New method to call it.
3174         (Output_data_plt_i386::do_fill_plt_entry): New abstract virtual
3175         method.
3176         (Output_data_plt_i386::fill_plt_entry): New method to call it.
3177         (Output_data_plt_i386::set_final_data_size): Use get_plt_entry_size
3178         method instead of plt_entry_size.
3179         (Output_data_plt_i386::plt_entry_size)
3180         (Output_data_plt_i386::plt_eh_frame_fde_size)
3181         (Output_data_plt_i386::plt_eh_frame_fde): Move to ...
3182         (Output_data_plt_i386_standard): ... here, new class.
3183         (Output_data_plt_i386_exec): New class.
3184         (Output_data_plt_i386::exec_first_plt_entry): Move to ...
3185         (Output_data_plt_i386_exec::first_plt_entry): ... here.
3186         (Output_data_plt_i386::exec_plt_entry): Move to ...
3187         (Output_data_plt_i386_exec::plt_entry): ... here.
3188         (Output_data_plt_i386_dyn): New class.
3189         (Output_data_plt_i386::first_plt_entry): Move to ...
3190         (Output_data_plt_i386_dyn::first_plt_entry): ... here.
3191         (Output_data_plt_i386::dyn_plt_entry): Move to ...
3192         (Output_data_plt_i386_dyn::plt_entry): ... here.
3193         (Target_i386::Target_i386): Take optional argument for the Target_info
3194         pointer to use.
3195         (Target_i386::do_make_data_plt): New virtual method.
3196         (Target_i386::make_data_plt): New method to call it.
3197         (Target_i386::make_plt_section): Use that.
3198         Call this->plt_->add_eh_frame method here.
3199         (Output_data_plt_i386::add_entry): Use get_plt_entry_size method
3200         rather than plt_entry_size variable.
3201         (Output_data_plt_i386::add_local_ifunc_entry): Likewise.
3202         (Output_data_plt_i386::address_for_local): Likewise.
3203         (Output_data_plt_i386::do_write): Likewise.
3204         Move guts of PLT filling to...
3205         (Output_data_plt_i386_exec::do_fill_first_plt_entry): ... here ...
3206         (Output_data_plt_i386_exec::do_fill_plt_entry): ... and here ...
3207         (Output_data_plt_i386_dyn::do_fill_first_plt_entry): ... and here ...
3208         (Output_data_plt_i386_dyn::do_fill_plt_entry): ... and here.
3209
3210 2012-05-01  Cary Coutant  <ccoutant@google.com>
3211
3212         * dwarf_reader.cc (Dwarf_die::read_attributes)
3213         (Dwarf_die::skip_attributes, Dwarf_die::int_attribute)
3214         (Dwarf_die::uint_attribute): Remove DW_FORM_null.
3215         * reduced_debug_output.cc
3216         (Output_reduced_debug_info_section::get_die_end): Remove
3217         DW_FORM_GNU_ref_index.  Add default case.
3218
3219 2012-04-26  Mark Wielaard  <mjw@redhat.com>
3220
3221         * dwarf_reader.cc (Dwarf_die::address_attribute): New function.
3222         * dwarf_reader.h (Dwarf_die::address_attribute): Likewise.
3223         * gdb-index.cc (Gdb_index_info_reader::record_cu_ranges): Handle
3224         DW_AT_high_pc as offset from DW_AT_low_pc.
3225
3226         * testsuite/Makefile.am (gdb_index_test_3.sh): New test case.
3227         * testsuite/Makefile.in: Regenerate.
3228         * testsuite/gdb_index_test_3.c: New test source file.
3229         * testsuite/gdb_index_test_3.sh: New test source file.
3230
3231 2012-04-25  Ian Lance Taylor  <iant@google.com>
3232
3233         * arm.cc (Target_arm::do_is_defined_by_abi): Make sym a const
3234         pointer.
3235         (Stub_addend_reader::operator()): Declare Arm_relocate_functions
3236         as a class, not a struct.
3237         (Target_arm::scan_span_for_cortex_a8_erratum): Likewise.
3238         (Target_arm::apply_cortex_a8_workaround): Likewise.
3239         * gc.h: Declare Reloc_types as a struct, not a class.
3240         * object.h: Declare Symbols_data as a struct.
3241         * reloc.h: Declare Read_relocs_data as a struct.
3242         * target.h: Declare Relocate_info as a struct.
3243
3244 2012-04-24  David S. Miller  <davem@davemloft.net>
3245
3246         * sparc.cc (Target_sparc::Relocate::relax_call): New function.
3247         (Target_sparc::Relocate::relocate): Call it for R_SPARC_WDISP30
3248         and R_SPARC_WPLT30.
3249
3250 2012-04-24  Cary Coutant  <ccoutant@google.com>
3251
3252         * incremental-dump.cc (find_input_containing_global): Replace
3253         magic number with symbolic constant.
3254         (dump_incremental_inputs): Update version number.
3255         * incremental.cc (Output_section_incremental_inputs): Update version
3256         number; import symbolic constants from Incremental_inputs_reader.
3257         (Incremental_inputs::create_data_sections): Align relocations
3258         section correctly for 64-bit targets.
3259         (Output_section_incremental_inputs::set_final_data_size): Use symbolic
3260         constants; add padding.
3261         (Output_section_incremental_inputs::write_header): Add assert for
3262         header_size.
3263         (Output_section_incremental_inputs::write_input_files): Add assert
3264         for input_entry_size.
3265         (Output_section_incremental_inputs::write_info_blocks): Add padding;
3266         add assert for object_info_size, input_section_entry_size,
3267         global_sym_entry_size.
3268         * incremental.h (Incremental_inputs_reader): Add symbolic constants
3269         for data structure sizes; use them.
3270         (Incremental_input_entry_reader): Import symbolic constants from
3271         Incremental_inputs_reader; use them.
3272
3273 2012-04-23  David S. Miller  <davem@davemloft.net>
3274
3275         * sparc.cc (class Target_sparc): Add elf_machine_, elf_flags_,
3276         and elf_flags_set_.
3277         (Target_sparc::Target_sparc): Initialize new fields.
3278         (Target_sparc::do_make_elf_object): New function.
3279         (Target_sparc::do_adjust_elf_header): New function.
3280
3281 2012-04-23  Cary Coutant  <ccoutant@google.com>
3282
3283         * gdb-index.cc (Gdb_index::do_write): Use Swap_aligned32 for writing
3284         CU range table of gdb index.
3285
3286 2012-04-20  David S. Miller  <davem@davemloft.net>
3287
3288         * target.cc (Sized_target::do_adjust_elf_header): Use big_endian
3289         instead of false.
3290
3291 2012-04-16  David S. Miller  <davem@davemloft.net>
3292
3293         * sparc.cc (Target_sparc::got_address): New function.
3294         (Sparc_relocate_functions::gdop_hix22): New function.
3295         (Sparc_relocate_functions::gdop_lox10): New function.
3296         (Target_sparc::Scan::local): Do not emit a GOT entry for GOTDATA
3297         relocs.
3298         (Target_sparc::Scan::local): Likewise if the global symbol is not
3299         preemptible and is not IFUNC.
3300         (Target_sparc::Relocate::relocate): Perform GOTDATA code
3301         transformations for local and non-preemptible non-IFUNC global
3302         symbols.
3303
3304         * gdb-index.cc (Gdb_index::do_write): Use Swap_unaligned when
3305         writing out 64-bit part of ranges.
3306
3307         * Makefile.am: Build IFUNC tests with -fPIC and -fPIE instead of
3308         -fpic and -fpie respectively.
3309         * Makefile.in: Regenerate.
3310
3311         * sparc.cc (class Target_sparc): Add rela_ifunc_.
3312         (Target_sparc::Target_sparc): Initialize new field.
3313         (Target_sparc::do_plt_section_for_global): New function.
3314         (Target_sparc::do_plt_section_for_local): New function.
3315         (Target_sparc::reloc_needs_plt_for_ifunc): New function.
3316         (Target_sparc::make_plt_section): New function, broken out of
3317         make_plt_entry.  Use ORDER_NON_RELRO_FIRST for ".plt".
3318         (Target_sparc::make_plt_entry): Call make_plt_section.
3319         (Target_sparc::make_local_ifunc_plt_entry): New function.
3320         (Target_sparc::rela_ifunc_section): New function.
3321         (Target_sparc::plt_section): Remove const.
3322         (Output_data_plt_sparc): Update declarations.  Define Global_ifunc
3323         and Local_ifunc types.  Add global_ifuncs_, local_ifuncs_, ifunc_rel_,
3324         and ifunc_count_ fields.
3325         (Output_data_plt_sparc::Output_data_plt_sparc): Initialize new fields.
3326         (Output_data_plt_sparc::add_entry): Handle IFUNC symbols.
3327         (Output_data_plt_sparc::add_local_ifunc_entry): New function.
3328         (Output_data_plt_sparc::rela_ifunc): New function.
3329         (Output_data_plt_sparc::emit_pending_ifunc_relocs): New function.
3330         (Output_data_plt_sparc::has_ifunc_section): New function.
3331         (Output_data_plt_sparc::entry_count): Include ifunc_count_.
3332         (Output_data_plt_sparc::address_for_global): New function.
3333         (Output_data_plt_sparc::address_for_local): New function.
3334         (Output_data_plt_sparc::plt_index_to_offset): New function.
3335         (Output_data_plt_sparc::set_final_data_size): Use plt_index_to_offset
3336         and entry_count.
3337         (Output_data_plt_sparc::do_write): Use first_plt_entry_offset and
3338         entry_count.
3339         (Target_sparc::Scan::get_reference_flags): Add R_SPARC_IRELATIVE and
3340         R_SPARC_JMP_IREL to switch.
3341         (Target_sparc::Scan::check_non_pic): Likewise.
3342         (Target_sparc::Scan::local): Handle IFUNC symbols.
3343         (Target_sparc::Scan::local): Likewise.
3344         (Target_sparc::Relocate::relocate): Likewise, use plt_address_for_global
3345         and plt_address_for_local.
3346         (Target_sparc::do_finalize_sections): Call emit_pending_ifunc_relocs.
3347         Define __rel_iplt_start and __rel_iplt_end if doing a static link.
3348
3349         * output.h (Output_reloc): Allow use_plt_offset for global relocs too.
3350         (class Output_data_reloc): Adjust calls to Output_reloc_type.
3351         (Output_data_reloc::add_global_relative): (RELA only) Add use_plt_offset.
3352         * output.cc (Output_reloc::Output_reloc): Add use_plt_offset flag for
3353         global relocs too.
3354         (Output_reloc::symbol_value): Respect use_plt_offset_ for global symbols.
3355         * powerpc.cc (Target_powerpc::Scan::global): Adjust add_global_relative
3356         calls.
3357         * sparc.cc (Target_sparc::Scan::global): Likewise.
3358         * x86_64.cc (Target_x86_64::Scan::global): Likewise.
3359
3360 2012-04-16  Cary Coutant  <ccoutant@google.com>
3361
3362         * archive.cc (Library_base::should_include_member): Check for
3363         --export-dynamic-symbol.
3364         * options.h (class General_options): Add --export-dynamic-symbol.
3365         * symtab.cc (Symbol::should_add_dynsym_entry): Check for
3366         --export-dynamic-symbol.
3367         (Symbol_table::gc_mark_undef_symbols): Likewise.
3368         (Symbol_table::do_add_undefined_symbols_from_command_line): Likewise.
3369
3370 2012-04-12  David S. Miller  <davem@davemloft.net>
3371
3372         * sparc.cc (Reloc::wdisp10): New relocation method.
3373         (Reloc::h34): Likewise.
3374         (Target_sparc::Scan::check_non_pic): Handle R_SPARC_H34.
3375         (Target_sparc::Scan::get_reference_flags): Handle R_SPARC_H34 and
3376         R_SPARC_WDISP10.
3377         (Target_sparc::Scan::local): Likewise.
3378         (Target_sparc::Scan::global): Likewise.
3379         (Target_sparc::Relocate::relocate): Likewise.
3380
3381 2012-04-09  Cary Coutant  <ccoutant@google.com>
3382
3383         * gdb-index.cc (Gdb_index_info_reader::record_cu_ranges): Allow
3384         low_pc == 0.
3385
3386 2012-04-06  Ian Lance Taylor  <iant@google.com>
3387
3388         * timer.cc: #include <unistd.h>.
3389
3390 2012-04-06  Roland McGrath  <mcgrathr@google.com>
3391
3392         * configure.in (AC_CHECK_HEADERS): Add locale.h.
3393         * config.in: Regenerate.
3394         * configure: Regenerate.
3395
3396 2012-04-05  Nick Clifton  <nickc@redhat.com>
3397
3398         * configure.ac (AC_CHECK_FUNCS): Add setlocale.
3399         (AM_LC_MESSAGES): Add.
3400         * aclocal.m4: Regenerate.
3401         * config.in: Regenerate.
3402         * configure: Regenerate.
3403
3404 2012-03-21  Cary Coutant  <ccoutant@google.com>
3405
3406         * Makefile.am: Add gdb-index.cc, gdb-index.h.
3407         * Makefile.in: Regenerate.
3408         * dwarf_reader.cc (Sized_elf_reloc_mapper::do_initialize): New function.
3409         (Sized_elf_reloc_mapper::symbol_section): New function.
3410         (Sized_elf_reloc_mapper::do_get_reloc_target): New function.
3411         (make_elf_reloc_mapper): New function.
3412         (Dwarf_abbrev_table::clear_abbrev_codes): New function.
3413         (Dwarf_abbrev_table::do_read_abbrevs): New function.
3414         (Dwarf_abbrev_table::do_get_abbrev): New function.
3415         (Dwarf_ranges_table::read_ranges_table): New function.
3416         (Dwarf_ranges_table::read_range_list): New function.
3417         (Dwarf_pubnames_table::read_section): New function.
3418         (Dwarf_pubnames_table::read_header): New function.
3419         (Dwarf_pubnames_table::next_name): New function.
3420         (Dwarf_die::Dwarf_die): New function.
3421         (Dwarf_die::read_attributes): New function.
3422         (Dwarf_die::skip_attributes): New function.
3423         (Dwarf_die::set_name): New function.
3424         (Dwarf_die::set_linkage_name): New function.
3425         (Dwarf_die::attribute): New function.
3426         (Dwarf_die::string_attribute): New function.
3427         (Dwarf_die::int_attribute): New function.
3428         (Dwarf_die::uint_attribute): New function.
3429         (Dwarf_die::ref_attribute): New function.
3430         (Dwarf_die::child_offset): New function.
3431         (Dwarf_die::sibling_offset): New function.
3432         (Dwarf_info_reader::check_buffer): New function.
3433         (Dwarf_info_reader::parse): New function.
3434         (Dwarf_info_reader::do_parse): New function.
3435         (Dwarf_info_reader::do_read_string_table): New function.
3436         (Dwarf_info_reader::lookup_reloc): New function.
3437         (Dwarf_info_reader::get_string): New function.
3438         (Dwarf_info_reader::visit_compilation_unit): New function.
3439         (Dwarf_info_reader::visit_type_unit): New function.
3440         (Sized_dwarf_line_info::Sized_dwarf_line_info): Use
3441         Sized_elf_reloc_mapper.
3442         (Sized_dwarf_line_info::symbol_section): Remove function.
3443         (Sized_dwarf_line_info::read_relocs): Use Sized_elf_reloc_mapper.
3444         (Sized_dwarf_line_info::read_line_mappings): Remove object
3445         parameter, adjust callers.
3446         (Sized_dwarf_line_info::format_file_lineno): Fix type of cast.
3447         * dwarf_reader.h: Include <sys/types.h>.
3448         (class Track_relocs): Remove forward declaration.
3449         (class Elf_reloc_mapper): New class.
3450         (class Sized_elf_reloc_mapper): New class.
3451         (class Dwarf_abbrev_table): New class.
3452         (class Dwarf_range_list): New class.
3453         (class Dwarf_ranges_table): New class.
3454         (class Dwarf_pubnames_table): New class.
3455         (class Dwarf_die): New class.
3456         (class Dwarf_info_reader): New class.
3457         (Sized_dwarf_line_info::read_line_mappings): Remove object parameter.
3458         (Sized_dwarf_line_info::symbol_section): Remove member function.
3459         * dynobj.h (Sized_dynobj::do_section_contents): Refactor code from
3460         base class.
3461         * gdb-index.cc: New source file.
3462         * gdb-index.h: New source file.
3463         * incremental.cc (Sized_relobj_incr::do_layout): Track .debug_info
3464         and .debug_types sections, call Layout::add_to_gdb_index.
3465         (Sized_relobj_incr::do_section_name): Implement.
3466         (Sized_relobj_incr::do_section_contents): Adjust parameter list and
3467         return type; Implement.
3468         (Sized_incr_dynobj::do_section_contents): Adjust parameter list and
3469         return type.
3470         * incremental.h (Sized_relobj_incr::do_section_contents): Adjust
3471         parameter list and return type.
3472         (Sized_incr_dynobj::do_section_contents): Likewise.
3473         * layout.cc: Include gdb-index.h.
3474         (Layout::Layout): Initialize gdb_index_data_.
3475         (Layout::init_fixed_output_section): Check for .gdb_index section.
3476         (Layout::add_to_gdb_index): New function. Instantiate.
3477         * layout.h: Add forward declaration for class Gdb_index.
3478         (Layout::add_to_gdb_index): New member function.
3479         (Layout::gdb_index_data_): New data member.
3480         * main.cc: Include gdb-index.h.
3481         (main): Print statistics for gdb index.
3482         * object.cc (Object::section_contents): Move code into
3483         do_section_contents.
3484         (need_decompressed_section): Check for sections needed when building
3485         gdb index.
3486         (build_compressed_section_map): Likewise.
3487         (Sized_relobj_file::do_read_symbols): Need local symbols when building
3488         gdb index.
3489         (Sized_relobj_file::do_layout): Track .debug_info and .debug_types
3490         sections; call Layout::add_to_gdb_index.
3491         (Sized_relobj_file::do_decompressed_section_contents): Call
3492         do_section_contents directly.
3493         * object.h (Object::do_section_contents): Adjust parameter list and
3494         return type.
3495         (Object::do_decompressed_section_contents): Call do_section_contents
3496         directly.
3497         (Sized_relobj_file::do_section_contents): Adjust parameter list and
3498         return type.
3499         * options.h (class General_options): Add --gdb-index option.
3500         * plugin.cc (Sized_pluginobj::do_section_contents): Adjust parameter
3501         list and return type.
3502         * plugin.h (Sized_pluginobj::do_section_contents): Likewise.
3503         * reloc.h (Track_relocs::checkpoint): New function.
3504         (Track_relocs::reset): New function.
3505
3506         * testsuite/Makefile.am (gdb_index_test_1.sh, gdb_index_test_2.sh):
3507         New test cases.
3508         * testsuite/Makefile.in: Regenerate.
3509         * testsuite/gdb_index_test.cc: New test source file.
3510         * testsuite/gdb_index_test_1.sh: New test source file.
3511         * testsuite/gdb_index_test_2.sh: New test source file.
3512
3513 2012-03-19  Doug Kwan  <dougkwan@google.com>
3514
3515         * arm.cc (Target_arm::do_define_standard_symbols): New method.
3516         (Target_arm::do_finalize_sections): Remove code which defines
3517         __exidx_start and __exidx_end.  Make symbol table parameter
3518         anonymous as it is not used.
3519         * gold.cc (queue_middle_tasks): Call target hook to define any
3520         target-specific symbols.
3521         * target.h (Target::define_standard_symbols): New method.
3522         (Target::do_define_standard_symbols): Same.
3523         * testsuite/Makefile.am (arm_exidx_test): Dump relocations also.
3524         * testsuite/Makefile.in: Regenerate.
3525         * testsuite/arm_exidx.s: Generate data relocations for __exidx_start
3526         and __exidx_end.
3527         * testsuite/arm_exidx_test.sh: Check that no unused dynamic
3528         relocations are generated for __exidx_start and __exidx_end.
3529
3530 2012-03-16  Doug Kwan  <dougkwan@google.com>
3531
3532         * testsuite/Makefile.am: Disable test initpri3b.
3533         * testsuite/Makefile.in: Regenerate.
3534
3535 2012-03-15  Doug Kwan  <dougkwan@google.com>
3536
3537         * arm.cc (Target_arm::got_section): Make .got section read-only
3538         if -z now is given.
3539
3540 2012-03-15  Ian Lance Taylor  <iant@google.com>
3541
3542         PR gold/13850
3543         * layout.cc (Layout::make_output_section): Correctly mark
3544         SHT_INIT_ARRAY, et. al., as relro.
3545
3546 2012-03-14  Doug Kwan  <dougkwan@google.com>
3547
3548         * gold/arm.cc (Target_arm::Scan::global): Generate R_ARM_GLOB_DAT
3549         dynamic relocations for protected symbols in shared objects.
3550
3551 2012-03-13  Ian Lance Taylor  <iant@google.com>
3552
3553         * resolve.cc (Symbol_table::resolve): When merging common symbols,
3554         keep the larger alignment.
3555
3556 2012-03-12  Cary Coutant  <ccoutant@google.com>
3557
3558         * dwarf_reader.cc (Sized_dwarf_line_info::process_one_opcode): Fix
3559         handling of DW_LNE_define_file.
3560
3561 2012-03-12  Cary Coutant  <ccoutant@google.com>
3562
3563         * reduced_debug_output.cc
3564         (Output_reduced_debug_info_section::get_die_end): Add new FORM
3565         codes to switch.
3566
3567 2012-02-29  Cary Coutant  <ccoutant@google.com>
3568
3569         * object.cc (need_decompressed_section): Add #ifdef ENABLE_THREADS.
3570
3571 2012-02-29  Cary Coutant  <ccoutant@google.com>
3572
3573         * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
3574         Call Object::decompressed_section_contents.
3575         * dwarf_reader.h (Sized_dwarf_line_info::~Sized_dwarf_line_info):
3576         New dtor.
3577         (Sized_dwarf_line_info::buffer_start_): New data member.
3578         * merge.cc (Output_merge_data::do_add_input_section): Call
3579         Object::decompressed_section_contents.
3580         (Output_merge_string::do_add_input_section): Likewise.
3581         * object.cc (need_decompressed_section): New function.
3582         (build_compressed_section_map): Decompress sections needed later.
3583         (Sized_relobj_file::do_decompressed_section_contents): New function.
3584         (Sized_relobj_file::do_discard_decompressed_sections): New function.
3585         * object.h (Object::decompressed_section_contents): New function.
3586         (Object::discard_decompressed_sections): New function.
3587         (Object::do_decompressed_section_contents): New function.
3588         (Object::do_discard_decompressed_sections): New function.
3589         (Compressed_section_info): New type.
3590         (Compressed_section_map): Include decompressed section contents.
3591         (Sized_relobj_file::do_decompressed_section_contents): New function.
3592         (Sized_relobj_file::do_discard_decompressed_sections): New function.
3593
3594 2012-02-16  Cary Coutant  <ccoutant@google.com>
3595
3596         * testsuite/Makefile.am (initpri2): Add --ctors-in-init-array option.
3597         * testsuite/Makefile.in: Regenerate.
3598
3599 2012-02-14  Cary Coutant  <ccoutant@google.com>
3600
3601         * options.cc (General_options::finalize): Disallow -pie and -static.
3602
3603 2012-02-03  Doug Kwan  <dougkwan@google.com>
3604
3605         * arm.cc (Arm_relocate_functions::abs8,
3606         Arm_relocate_functions::abs16): Use
3607         Bits::has_signed_unsigned_overflow32.
3608         (Arm_relocate_functions::thm_abs8): Correct range of
3609         overflow check.
3610         * reloc.h (Bits class): Change minimum number of bits from 0 to 1
3611         in assertions.
3612
3613 2012-02-02  Doug Kwan  <dougkwan@google.com>
3614
3615         * arm.cc (Reloc_stub::stub_type_for_reloc): Use PIC stubs in all
3616         position independent outputs, not just shared objects.
3617
3618 2012-01-30  H.J. Lu  <hongjiu.lu@intel.com>
3619
3620         * configure.ac: Check if -fpic -mtls-dialect=gnu2 works.
3621         * configure: Regenerated.
3622
3623 2012-01-27  Ian Lance Taylor  <iant@google.com>
3624
3625         * reloc.h (Bits): New class with static functions, copied from
3626         namespace utils in arm.cc.
3627         * arm.cc (namespace utils): Remove.  Rewrite all uses to use Bits
3628         instead.
3629
3630 2012-01-27  H.J. Lu  <hongjiu.lu@intel.com>
3631
3632         * incremental.cc (write_info_blocks): Correct relocation offset.
3633
3634 2012-01-27  H.J. Lu  <hongjiu.lu@intel.com>
3635
3636         * x86_64.cc (Relocate::tls_gd_to_ie): Support x32.
3637         (Relocate::tls_gd_to_le): Likewise.
3638
3639 2012-01-27  H.J. Lu  <hongjiu.lu@intel.com>
3640
3641         * x86_64.cc (Scan::global): Support x32 IFUNC function pointer.
3642
3643 2012-01-27  H.J. Lu  <hongjiu.lu@intel.com>
3644
3645         * configure.ac: Check if -mcmodel=medium works.
3646         * configure: Regenerated.
3647
3648 2012-01-24  Cary Coutant  <ccoutant@google.com>
3649
3650         * int_encoding.cc (read_unsigned_LEB_128): Replaced with inline
3651         definition and ...
3652         (read_unsigned_LEB_128_x): ... this new function.
3653         (read_signed_LEB_128): Replaced with inline definition and ...
3654         (read_signed_LEB_128_x): ... this new function.
3655         * int_encoding.h  (read_unsigned_LEB_128_x): New function.
3656         (read_unsigned_LEB_128): Add inline definition.
3657         (read_signed_LEB_128_x): New function.
3658         (read_signed_LEB_128): Add inline definition.
3659         * testsuite/Makefile.am (leb128_unittest): New unit test.
3660         * testsuite/Makefile.in: Regenerate.
3661         * testsuite/leb128_unittest.cc: New unit test.
3662
3663 2012-01-23  Ian Lance Taylor  <iant@google.com>
3664
3665         PR gold/13617
3666         * i386.cc (Target_i386::do_code_fill): When using a jmp
3667         instruction, pad with nop instructions.
3668         * x86_64.cc (Target_x86_64::do_code_fill): Likewise.
3669
3670 2012-01-22  H.J. Lu  <hongjiu.lu@intel.com>
3671
3672         * x86_64.cc (gc_process_relocs): Add typename on types used in
3673         template.
3674         (scan_relocs): Likewise.
3675         (relocate_section): Likewise.
3676         (apply_relocation): Likewise.
3677
3678 2012-01-10  H.J. Lu  <hongjiu.lu@intel.com>
3679
3680         * x86_64.cc (Scan::check_non_pic): Allow R_X86_64_32 for x32.
3681         (Scan::local): Use R_X86_64_RELATIVE relocation for R_X86_64_32
3682         under x32.
3683
3684 2012-01-09  H.J. Lu  <hongjiu.lu@intel.com>
3685
3686         * x86_64.cc: Initial support for x32.
3687
3688 2012-01-03  Cary Coutant  <ccoutant@google.com>
3689
3690         * gold/incremental.cc (Sized_incremental_binary::do_process_got_plt):
3691         Use abstract base class for GOT.
3692         * gold/output.h (class Output_data_got_base): New abstract base class.
3693         (class Output_data_got): Derive from new base class, adjust ctors.
3694         (Output_data_got::reserve_slot): Make virtual; rename to
3695         do_reserve_slot; Adjust callers.
3696         * gold/target.h (Sized_target::init_got_plt_for_update): Return
3697         pointer to abstract base class.
3698         * gold/x86_64.cc (Target_x86_64::init_got_plt_for_update): Likewise.
3699
3700 2011-12-18  Ian Lance Taylor  <iant@google.com>
3701
3702         * object.h (Relobj::local_symbol_value): New function.
3703         (Relobj::local_plt_offset): New function.
3704         (Relobj::local_has_got_offset): New function.
3705         (Relobj::local_got_offset): New function.
3706         (Relobj::set_local_got_offset): New function.
3707         (Relobj::do_local_symbol_value): New pure virtual function.
3708         (Relobj::do_local_plt_offset): Likewise.
3709         (Relobj::do_local_has_got_offset): Likewise.
3710         (Relobj::do_local_got_offset): Likewise.
3711         (Relobj::do_set_local_got_offset): Likewise.
3712         (Sized_relobj::do_local_has_got_offset): Rename from
3713         local_has_got_offset.
3714         (Sized_relobj::do_local_got_offset): Rename from local_got_offset.
3715         (Sized_relobj::do_set_local_got_offset): Rename from
3716         set_local_got_offset.
3717         (Sized_relobj_file::do_local_plt_offset): Rename from
3718         local_plt_offset.
3719         (Sized_relobj_file::do_local_symbol_value): New function.
3720         * object.cc (Sized_relobj_file::do_local_plt_offset): Rename from
3721         local_plt_offset.
3722         * output.cc (Output_data_got::Got_entry::write): Change object to
3723         Relobj.  Use local_symbol_value.
3724         (Output_data_got::add_global_with_rel): Change rel_dyn to
3725         Output_data_reloc_generic*.  Use add_global_generic.
3726         (Output_data_got::add_global_with_rela): Remove.  Change all
3727         callers to use add_global_with_rel.
3728         (Output_data_got::add_global_pair_with_rel): Change rel_dyn to
3729         Output_data_reloc_generic*.  Use add_global_generic.
3730         (Output_data_got::add_global_pair_with_rela): Remove.  Change all
3731         callers to use add_global_pair_with_rel.
3732         (Output_data_got::add_local): Change object to Relobj*.
3733         (Output_data_got::add_local_plt): Likewise.
3734         (Output_data_got::add_local_with_rel): Change object to Relobj*,
3735         change rel_dyn to Output_data_reloc_generic*.  Use
3736         add_local_generic.
3737         (Output_data_got::add_local_with_rela): Remove.  Change all
3738         callers to use all_local_with_rel.
3739         (Output_data_got::add_local_pair_with_rel): Change object to
3740         Relobj*, change rel_dyn to Output_data_reloc_generic*.  Use
3741         add_output_section_generic.
3742         (Output_data_got::add_local_pair_with_rela): Remove.  Change all
3743         callers to use add_local_pair_with_rel.
3744         (Output_data_got::reserve_local): Change object to Relobj*.
3745         * output.h: (class Output_data_reloc_generic): Add pure virtual
3746         declarations for add_global_generic, add_local_generic,
3747         add_output_section_generic.
3748         (class Output_data_reloc) [SHT_REL, SHT_RELA]: Implement new
3749         functions for Output_data_reloc_generic.  Update declarations for
3750         changes listed in output.cc.
3751         (class Output_data_got): Change template parameter to got_size.
3752         Don't define Rel_dyn or Rela_dyn.  Update declarations per above.
3753         * incremental.h (Sized_relobj_incr::do_local_symbol_value): New
3754         function.
3755         (Sized_relobj_incr::do_local_plt_offset): New function.
3756         * copy-relocs.cc (Copy_relocs::Copy_reloc_entry::emit): Call
3757         add_global_generic.
3758
3759 2011-12-17  Cary Coutant  <ccoutant@google.com>
3760
3761         * dwarf_reader.cc (Sized_dwarf_line_info::read_lines): Add casts.
3762         * resolve.cc (Symbol_table::resolve): Likewise.
3763         * i386.cc (Target_i386::do_code_fill): Use char constants for nop
3764         arrays.
3765         * x86_64.cc (Target_x86_64::do_code_fill): Likewise.
3766
3767 2011-12-16  Ian Lance Taylor  <iant@google.com>
3768
3769         * output.h (Output_data_reloc_generic::add): Only call
3770         add_dynamic_reloc if this is a dynamic reloc section.
3771
3772 2011-12-15  H.J. Lu  <hongjiu.lu@intel.com>
3773
3774         PR gold/13505
3775         * target-reloc.h (apply_relocation): Replace <64, false> with
3776         <size, big_endian>.
3777
3778 2011-11-25  Nick Clifton  <nickc@redhat.com>
3779
3780         * po/it.po: New Italian translation.
3781
3782 2011-11-17  Sterling Augustine  <saugustine@google.com>
3783
3784         * script.cc (script_include_directive): Implement.
3785         (read_script_file): New local variables name and search_path. Update
3786         comment. Call IS_ABSOLUTE_PATH and Dirsearch::find_file_in_dir_list.
3787         * dirsearch.h (Dirsearch::find_file_in_dir_list): Declare new method.
3788         * dirsearch.cc (Dirsearch::find_file_in_dir_list): Implement it.
3789
3790 2011-11-11  Sterling Augustine  <saugustine@google.com>
3791
3792         * yyscript.y (section_cmd): Add support for INCLUDE directive.
3793         (file_or_sections_cmd): Likewise.
3794
3795 2011-11-11  Doug Kwan  <dougkwan@google.com>
3796
3797         * arm.cc (Target_arm::do_make_elf_object): Allow executable also
3798         if --just-symbols is given.
3799
3800 2011-11-10  Doug Kwan  <dougkwan@google.com>
3801
3802         PR gold/13362
3803         * arm.cc (Target_arm::Relocate::relocate_tls): Do unaligned accesses
3804         when processing data relocs.
3805         * reloc.h (Relocate_functions::rel_unaligned): New method.
3806         (Relocate_functions::pcrel_unaligned): Ditto.
3807         (Relocate_functions::rel32_unaligned): Ditto.
3808         (Relocate_functions::pcrel32_unaligned): Ditto.
3809
3810 2011-11-09  Doug Kwan  <dougkwan@google.com>
3811
3812         PR gold/13362
3813         * arm.cc (Arm_scan_relocatable_relocs::Default_scan_relocatable_relocs):
3814         Use unaligned 4-byte relocs for static 32-bit data as required by EABI.
3815         * reloc.h (Relocatable_relocs::Reloc_strategy): New enum
3816         RELOC_ADJUST_FOR_SECTION_4_UNALIGNED.
3817         (Relocate_functions::rel_unaligned): New.
3818         (Relocate_functions::rel32_unaligned): New.
3819         * target-reloc.h (relocate_for_relocatable): Add code to handle
3820         RELOC_ADJUST_FOR_SECTION_4_UNALIGNED.
3821         * testsuite/Makefile.am (arm_unaligned_reloc_r.stdout,
3822         arm_unaligned_reloc_r): New targets.
3823         * testsuite/Makefile.in: Regenerate.
3824         * arm_unaligned_reloc.sh: Check unaligned relocs in relocatable
3825         linking.
3826
3827 2011-11-02  Ian Lance Taylor  <iant@google.com>
3828
3829         * configure.ac: Add --with-lib-path option.  Define LIB_PATH and
3830         NATIVE_LINKER.
3831         * Makefile.am (AM_CPPFLAGS): Define TOOLLIBDIR.
3832         * options.cc (General_options::finalize): Use library search path
3833         from configure script if specified.  If not native and no sysroot,
3834         only search TOOLLIBDIR.
3835         * options.h (Search_directory::Search_directory): Change name to
3836         const std::string&.
3837         (General_options::add_to_library_path_with_sysroot): Change arg to
3838         const std::string&.
3839         * configure, Makefile.in, config.in: Rebuild.
3840
3841 2011-11-02  Matthew Gretton-Dann  <matthew.gretton-dann@arm.com>
3842
3843         * arm.cc (Target_arm::may_use_v5t_interworking): Check whether
3844         we are working around the ARM1176 Erratum.
3845         * options.h (General_options::fix_arm1176): Add option.
3846         * testsuite/Makefile.am: Add testcases, and keep current ones
3847         working.
3848         * testsuite/Makefile.in: Regenerate.
3849         * testsuite/arm_fix_1176.s: New file.
3850         * testsuite/arm_fix_1176.sh: Likewise.
3851
3852 2011-11-02  Matthew Gretton-Dann  <matthew.gretton-dann@arm.com>
3853
3854         * arm.cc (Target_arm::Target_arm): Remove initialisation of
3855         may_use_blx_.
3856         (Target_arm::may_use_blx): Remove method.
3857         (Target_arm::set_may_use_blx): Likewise.
3858         (Target_arm::may_use_v4t_interworking): New method.
3859         (Target_arm::may_use_v5t_interworking): Likewise.
3860         (Target_arm::may_use_blx_): Remove member variable.
3861         (Arm_relocate_functions::arm_branch_common): Check for v5T
3862         interworking.
3863         (Arm_relocate_functions::thumb_branch_common): Likewise.
3864         (Reloc_stub::stub_type_for_reloc): Likewise.
3865         (Target_arm::do_finalize_sections): Correct interworking checks.
3866         * testsuite/Makefile.am: Add new tests.
3867         * testsuite/Makefile.in: Regenerate.
3868         * testsuite/arm_farcall_arm_arm.s: New test.
3869         * testsuite/arm_farcall_arm_arm.sh: Likewise.
3870         * testsuite/arm_farcall_arm_thumb.s: Likewise.
3871         * testsuite/arm_farcall_arm_thumb.sh: Likewise.
3872         * testsuite/arm_farcall_thumb_arm.s: Likewise.
3873         * testsuite/arm_farcall_thumb_arm.sh: Likewise.
3874         * testsuite/arm_farcall_thumb_thumb.s: Likewise.
3875         * testsuite/arm_farcall_thumb_thumb.sh: Likewise.
3876
3877 2011-10-31  Cary Coutant  <ccoutant@google.com>
3878
3879         PR gold/13023
3880         * expression.cc (Expression::eval_with_dot): Add
3881         is_section_dot_assignment parameter.
3882         (Expression::eval_maybe_dot): Likewise.  Adjust value when rhs is
3883         absolute and assigning to dot within a section.
3884         * script-sections.cc
3885         (Output_section_element_assignment::set_section_addresses): Pass
3886         dot_section to set_if_absolute.
3887         (Output_section_element_dot_assignment::finalize_symbols): Pass TRUE
3888         as is_section_dot_assignment flag to eval_with_dot.
3889         (Output_section_element_dot_assignment::set_section_addresses):
3890         Likewise.
3891         * script.cc (Symbol_assignment::set_if_absolute): Add dot_section
3892         parameter.  Also set value if relative to dot_section; set the
3893         symbol's output_section.
3894         * script.h (Expression::eval_with_dot): Add is_section_dot_assignment
3895         parameter.  Adjust all callers.
3896         (Expression::eval_maybe_dot): Likewise.
3897         (Symbol_assignment::set_if_absolute): Add dot_section parameter.
3898         Adjust all callers.
3899         * testsuite/script_test_2.t: Test assignment of an absolute value
3900         to dot within an output section element.
3901
3902 2011-10-31  Cary Coutant  <ccoutant@google.com>
3903
3904         * options.h (class General_options): Add --[no-]gnu-unique options.
3905         * symtab.cc (Symbol_table::sized_write_globals): Convert
3906         STB_GNU_UNIQUE to STB_GLOBAL if --no-gnu-unique.
3907
3908 2011-10-31  Cary Coutant  <ccoutant@google.com>
3909
3910         PR gold/13359
3911         * i386.cc (Target_i386::Relocate::relocate_tls): Remove
3912         unnecessary assertion.
3913         * x86_64.cc (Target_x86_64::Relocate::relocate_tls): Likewise.
3914
3915 2011-10-31 Sriraman Tallam  <tmsriram@google.com>
3916
3917         * symtab.h (Symbol_table::gc_mark_symbol_for_shlib): Rename to
3918         gc_mark_symbol.
3919         * symtab.cc (Symbol_table::gc_mark_symbol_for_shlib): Rename to
3920         gc_mark_symbol.
3921         Change to just keep the section associated with symbol.
3922         (Symbol_table::add_from_relobj): Mark symbols as not garbage when
3923         they are externally visible and --export-dynamic is turned on.
3924         (Symbol_table::gc_mark_dyn_syms): Call gc_mark_symbol.
3925
3926 2011-10-19  Ian Lance Taylor  <iant@google.com>
3927
3928         PR gold/13163
3929         * script-sections.cc
3930         (Output_section_element_dot_assignment::needs_output_section): New
3931         function.
3932
3933 2011-10-19  Ian Lance Taylor  <iant@google.com>
3934
3935         PR gold/13204
3936         * layout.cc (Layout::segment_precedes): Don't assert failure if a
3937         --section-start option was seen.
3938         * options.h (General_options::any_section_start): New function.
3939
3940 2011-10-18  David S. Miller  <davem@davemloft.net>
3941
3942         PR binutils/13301
3943         * sparc.cc (Target_sparc::Relocate::reloc_adjust_addr_): New
3944         member to track relocation locations that have moved during TLS
3945         reloc optimizations.
3946         (Target_sparc::Relocate::Relocate): Initialize to NULL.
3947         (Target_sparc::Relocate::relocate): Adjust view down by 4
3948         bytes if it matches reloc_adjust_addr_.
3949         (Target_sparc::Relocate::relocate_tls): Always move the
3950         __tls_get_addr call delay slot instruction forward 4 bytes when
3951         performing relaxation.
3952
3953 2011-10-18  Cary Coutant  <ccoutant@google.com>
3954
3955         * output.cc (posix_fallocate): Return 0 on success, errno on failure.
3956         (Output_file::map_no_anonymous): Check for non-zero
3957         return code from posix_fallocate.
3958
3959 2011-10-17  Cary Coutant  <ccoutant@google.com>
3960
3961         PR gold/13245
3962         * plugin.cc (is_visible_from_outside): Check for symbols
3963         referenced from dynamic objects.
3964         * resolve.cc (Symbol_table::resolve): Don't count references
3965         from dynamic objects as references from real ELF files.
3966         * testsuite/plugin_test_2.sh: Adjust expected result.
3967
3968 2011-10-17  Cary Coutant  <ccoutant@google.com>
3969
3970         * gold.cc: Include timer.h.
3971         (queue_middle_tasks): Stamp time.
3972         (queue_final_tasks): Likewise.
3973         * main.cc (main): Store timer in parameters.  Print timers
3974         for each pass.
3975         * parameters.cc (Parameters::Parameters): Initialize timer_.
3976         (Parameters::set_timer): New function.
3977         (set_parameters_timer): New function.
3978         * parameters.h (Parameters::set_timer): New function.
3979         (Parameters::timer): New function.
3980         (Parameters::timer_): New data member.
3981         (set_parameters_timer): New function.
3982         * timer.cc (Timer::stamp): New function.
3983         (Timer::get_pass_time): New function.
3984         * timer.h (Timer::stamp): New function.
3985         (Timer::get_pass_time): New function.
3986         (Timer::pass_times_): New data member.
3987
3988 2011-10-17  Cary Coutant  <ccoutant@google.com>
3989
3990         * readsyms.cc (Read_symbols::run): Don't queue an unblocker
3991         task for members of lib groups.
3992
3993 2011-10-17  Cary Coutant  <ccoutant@google.com>
3994
3995         PR gold/13288
3996         * fileread.cc (File_read::find_view): Add assert.
3997         (File_read::make_view): Move bounds check (replace with assert)...
3998         (File_read::find_or_make_view): ... to here.
3999
4000 2011-10-12  Cary Coutant  <ccoutant@google.com>
4001
4002         * output.cc (Output_file::open_base_file): Handle case where
4003         ::read returns less than requested size.
4004
4005 2011-10-10  Cary Coutant  <ccoutant@google.com>
4006
4007         * incremental.cc (Sized_relobj_incr::Sized_relobj_incr):
4008         Initialize defined_count_.
4009         (Sized_relobj_incr::do_add_symbols): Count defined symbols.
4010         (Sized_relobj_incr::do_get_global_symbol_counts): Rewrite.
4011         (Sized_incr_dynobj::Sized_incr_dynobj): Initialize defined_count_.
4012         (Sized_incr_dynobj::do_add_symbols): Count defined symbols.
4013         (Sized_incr_dynobj::do_get_global_symbol_counts): Rewrite.
4014         * incremental.h (Sized_relobj_incr::defined_count_): New data
4015         member.
4016         (Sized_incr_dynobj::defined_count_): New data member.
4017         * plugin.cc (Sized_pluginobj::do_get_global_symbol_counts):
4018         Return zeroes instead of internal error.
4019
4020 2011-10-10  Cary Coutant  <ccoutant@google.com>
4021
4022         PR gold/13249
4023         * output.cc (Output_reloc::Output_reloc): Add use_plt_offset flag.
4024         (Output_reloc::symbol_value): Return PLT offset if flag is set.
4025         * output.h (class Output_reloc): Add use_plt_offset flag.
4026         (Output_reloc::type_): Adjust size of bit field.
4027         (Output_reloc::use_plt_offset_): New bit field.
4028         (class Output_data_reloc): Adjust all calls to Output_reloc_type.
4029         (Output_data_reloc::add_local_relative): (RELA only) Add use_plt_offset
4030         flag.  Adjust all callers.
4031         * x86_64.cc (Target_x86_64::Scan::local): Check for IFUNC when
4032         creating RELATIVE relocations.
4033
4034 2011-10-10  Nick Clifton  <nickc@redhat.com>
4035
4036         * po/es.po: Updated Spanish translation.
4037         * po/fi.po: Updated Finnish translation.
4038
4039 2011-10-03   Diego Novillo  <dnovillo@google.com>
4040
4041         * options.cc (parse_uint): Fix dereference of RETVAL.
4042
4043 2011-09-29  Sriraman Tallam  <tmsriram@google.com>
4044
4045         * layout.h (section_order_map_): New member.
4046         (get_section_order_map): New member function.
4047         * output.cc (Output_section::add_input_section): Check for patterns
4048         only when --section-ordering-file is specified.
4049         * gold.cc (queue_middle_tasks): Delay updating order of sections till
4050         output_sections have been formed.
4051         * layout.cc (Layout_Layout): Initialize section_order_map_.
4052         * plugin.cc (update_section_order): Store order in order_map. Do not
4053         update the order.
4054         * testsuite/Makefile.am: Add test case for plugin_final_layout.
4055         * testsuite/Makefile.in: Regenerate.
4056         * testsuite/plugin_section_order.c: New file.
4057         * testsuite/plugin_final_layout.cc: New file.
4058         * testsuite/plugin_final_layout.sh: New file.
4059
4060 2011-09-29  Cary Coutant  <ccoutant@google.com>
4061
4062         * incremental.cc (Sized_incremental_binary::do_process_got_plt):
4063         Check for NULL.
4064         * symtab.cc (Symbol_table::add_from_relobj): Ignore version
4065         symbols during incremental update.
4066         (Symbol_table::add_from_dynobj): Likewise.
4067
4068 2011-09-27  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
4069             Ian Lance Taylor  <iant@google.com>
4070
4071         * symtab.cc (Symbol_table::define_special_symbol): Always
4072         canonicalize version string.
4073
4074 2011-09-26  Cary Coutant  <ccoutant@google.com>
4075
4076         * gold.cc (queue_initial_tasks): Move option checks ...
4077         * options.cc (General_options::finalize): ... to here. Disable
4078         some options; make others fatal.
4079
4080 2011-09-26  Cary Coutant  <ccoutant@google.com>
4081
4082         gcc PR lto/47247
4083         * plugin.cc (get_symbols_v2): New function.
4084         (Plugin::load): Add LDPT_GET_SYMBOLS_V2.
4085         (is_referenced_from_outside): New function.
4086         (Pluginobj::get_symbol_resolution_info): Add version parameter, return
4087         LDPR_PREVAILING_DEF_IRONLY_EXP when using new version.
4088         (get_symbols): Pass version parameter.
4089         (get_symbols_v2): New function.
4090         * plugin.h (Pluginobj::get_symbol_resolution_info): Add version
4091         parameter.
4092         * testsuite/plugin_test.c (get_symbols_v2): New static variable.
4093         (onload): Add LDPT_GET_SYMBOLS_V2.
4094         (all_symbols_read_hook): Use get_symbols_v2; check for
4095         LDPR_PREVAILING_DEF_IRONLY_EXP.
4096         * testsuite/plugin_test_3.sh: Update expected results.
4097
4098 2011-09-23  Simon Baldwin  <simonb@google.com>
4099
4100         * configure.ac: Add new --with-gold-ldadd and --with-gold-ldflags
4101         configuration options.
4102         * configure: Regenerate.
4103         * Makefile.am: Handle GOLD_LDADD and GOLD_LDFLAGS.
4104         * Makefile.in: Regenerate.
4105         * testsuite/Makefile.in: Regenerate.
4106
4107 2011-09-19  Sriraman Tallam  <tmsriram@google.com>
4108
4109         * plugin.h (should_defer_layout): Modify to check for any_claimed_.
4110
4111 2011-09-19  Cary Coutant  <ccoutant@google.com>
4112
4113         * incremental.cc (can_incremental_update): Fix typo in comment.
4114         * incremental.h (can_incremental_update): Likewise.
4115
4116 2011-09-18  Cary Coutant  <ccoutant@google.com>
4117
4118         * incremental.cc (can_incremental_update): New function.
4119         * incremental.h (can_incremental_update): New function.
4120         * layout.cc (Layout::init_fixed_output_section): Call it.
4121         (Layout::make_output_section): Don't allow patch space in .eh_frame.
4122         * object.cc (Sized_relobj_file::do_layout): Call
4123         can_incremental_update.
4124
4125 2011-09-13  Cary Coutant  <ccoutant@google.com>
4126
4127         * configure.ac: Check for glibc support for gnu_indirect_function
4128         support with static linking, setting automake conditional
4129         IFUNC_STATIC.
4130         * Makefile.in: Regenerate.
4131         * configure: Regenerate.
4132
4133         * testsuite/Makefile.am (ifuncmain1static, ifuncmain2static)
4134         (ifuncmain4static, ifuncmain5static, ifuncmain7static): Add check
4135         for IFUNC_STATIC.
4136         * testsuite/Makefile.in: Regenerate.
4137
4138 2011-09-13  Cary Coutant  <ccoutant@google.com>
4139
4140         * incremental.cc (Sized_relobj_incr::do_layout): Call
4141         report_comdat_group for kept comdat sections.
4142         * testsuite/Makefile.am (incremental_comdat_test_1): New test.
4143         * testsuite/Makefile.in: Regenerate.
4144         * testsuite/incr_comdat_test_1.cc: New source file.
4145         * testsuite/incr_comdat_test_2_v1.cc: New source file.
4146         * testsuite/incr_comdat_test_2_v2.cc: New source file.
4147         * testsuite/incr_comdat_test_2_v3.cc: New source file.
4148
4149 2011-09-13  Ian Lance Taylor  <iant@google.com>
4150
4151         * object.cc (Sized_relobj_file::do_layout): Remove unused local
4152         variable external_symbols_offset.
4153
4154 2011-09-12  Ian Lance Taylor  <iant@google.com>
4155
4156         * object.cc (Sized_relobj_file::do_layout): Remove assertion which
4157         triggered if object has no symbols.
4158
4159 2011-09-09  David S. Miller  <davem@davemloft.net>
4160
4161         * output.cc (Output_fill_debug_info::do_write): Use Swap_unaligned.
4162         (Output_fill_debug_line::do_write): Likewise.
4163
4164 2011-08-29  Cary Coutant  <ccoutant@google.com>
4165
4166         * output.cc: (Output_fill_debug_info::do_minimum_hole_size): Add
4167         casts to match formatting specs.
4168         (Output_fill_debug_line::do_minimum_hole_size): Likewise.
4169
4170 2011-08-26  Cary Coutant  <ccoutant@google.com>
4171
4172         * layout.cc (Free_list::allocate): Provide guarantee of minimum
4173         remaining hole size when allocating.
4174         (Layout::make_output_section): Set fill methods for debug sections.
4175         * layout.h (Free_list::Free_list_node): Move from private to
4176         public.
4177         (Free_list::set_min_hole_size): New function.
4178         (Free_list::begin, Free_list::end): New functions.
4179         (Free_list::min_hole_): New data member.
4180         * output.cc: Include dwarf.h.
4181         (Output_fill_debug_info::do_minimum_hole_size): New function.
4182         (Output_fill_debug_info::do_write): New function.
4183         (Output_fill_debug_line::do_minimum_hole_size): New function.
4184         (Output_fill_debug_line::do_write): New function.
4185         (Output_section::Output_section): Initialize new data member.
4186         (Output_section::set_final_data_size): Ensure patch space is larger
4187         than minimum hole size.
4188         (Output_section::do_write): Fill holes in debug sections.
4189         * output.h (Output_fill): New class.
4190         (Output_fill_debug_info): New class.
4191         (Output_fill_debug_line): New class.
4192         (Output_section::set_free_space_fill): New function.
4193         (Output_section::free_space_fill_): New data member.
4194         * testsuite/Makefile.am (incremental_test_3): Add
4195         --incremental-patch option.
4196         (incremental_test_4): Likewise.
4197         (incremental_test_5): Likewise.
4198         (incremental_test_6): Likewise.
4199         (incremental_copy_test): Likewise.
4200         (incremental_common_test_1): Likewise.
4201         * testsuite/Makefile.in: Regenerate.
4202
4203 2011-08-26  Nick Clifton  <nickc@redhat.com>
4204
4205         * po/es.po: Updated Spanish translation.
4206
4207 2011-08-01  Cary Coutant  <ccoutant@google.com>
4208
4209         * gold/testsuite/Makefile.am (justsyms_exec): New testcase.
4210         * gold/testsuite/Makefile.in: Regenerate.
4211         * gold/testsuite/justsyms_exec.c: New source file.
4212         * gold/testsuite/justsyms_lib.c: New source file.
4213
4214 2011-08-01  Cary Coutant  <ccoutant@google.com>
4215
4216         * layout.cc (Layout::set_segment_offsets): Don't realign text
4217         segment if -Ttext was specified.
4218         * object.cc (Sized_relobj_file::Sized_relobj_file): Store the ELF
4219         file type.
4220         * object.h (Sized_relobj_file::e_type): New function.
4221         (Sized_relobj_file::e_type_): New data member.
4222         * symtab.cc (Symbol_table::add_from_relobj): Don't add section
4223         base address for ET_EXEC files.
4224         * target.cc (Target::do_make_elf_object_implementation): Allow
4225         ET_EXEC files with --just-symbols option.
4226
4227 2011-07-28  Cary Coutant  <ccoutant@google.com>
4228
4229         * workqueue-internal.h (Workqueue_threader::should_cancel_thread):
4230         Add thread_number parameter.
4231         (Workqueue_threader_threadpool::should_cancel_thread): Likewise.
4232         * workqueue-threads.cc
4233         (Workqueue_threader_threadpool::should_cancel_thread): Cancel
4234         current thread if its thread number is greater than desired thread
4235         count.
4236         * workqueue.cc (Workqueue_threader_single::should_cancel_thread):
4237         Add thread_number parameter.
4238         (Workqueue::should_cancel_thread): Likewise.
4239         (Workqueue::find_runnable_or_wait): Pass thread_number to
4240         should_cancel_thread.
4241         * workqueue.h (Workqueue::should_cancel_thread): Add thread_number
4242         parameter.
4243
4244 2011-07-22  Sriraman Tallam  <tmsriram@google.com>
4245
4246         * symtab.cc (Symbol_table::add_from_relobj): Mark symbol as referenced
4247         only after checking if it cannot be forced local.
4248         * symtab.h (is_externally_visible): Check if the symbol is not forced
4249         local.
4250
4251 2011-07-15  Ian Lance Taylor  <iant@google.com>
4252
4253         * options.h (class General_options): Add --print-output-format.
4254         Move -EL next to -EB, for  better --help output.
4255         * target-select.cc: Include <cstdio>, "options.h", and
4256         "parameters.h".
4257         (Target_selector::do_target_bfd_name): New function.
4258         (print_output_format): New function.
4259         * target-select.h (class Target_selector): Update declarations.
4260         (Target_selector::target_bfd_name): New function.
4261         (print_output_format): Declare.
4262         * main.cc: Include "target-select.h".
4263         (main): Handle --print-output-format.
4264         * gold.cc: Include "target-select.h".
4265         (queue_initial_tasks): Handle --print-output-format when there are
4266         no input files.
4267         * parameters.cc (parameters_force_valid_target): Give a better
4268         error message if -EB/-EL does not match target.
4269         * freebsd.h (Target_selector_freebsd::do_target_bfd_name): New
4270         function.
4271
4272 2011-07-15  Ian Lance Taylor  <iant@google.com>
4273
4274         * i386.cc (class Output_data_plt_i386): Add layout_ field.
4275         (Output_data_plt_i386::Output_data_plt_i386): Initialize layout_.
4276         (Output_data_plt_i386::do_write): Write address of .dynamic
4277         section to first entry in .got.plt section.
4278         * x86_64.cc (class Output_data_plt_x86_64): Add layout_ field.
4279         (Output_data_plt_x86_64::Output_data_plt_x86_64) [both versions]:
4280         Initialize layout_.
4281         (Output_data_plt_x86_64::do_write): Write address of .dynamic
4282         section to first entry in .got.plt section.
4283         * layout.h (Layout::dynamic_section): New function.
4284
4285 2011-07-13  Sriraman Tallam  <tmsriram@google.com>
4286
4287         * archive.cc (Archive::get_elf_object_for_member): Add extra parameter
4288         to claim_file call.
4289         * layout.cc (Layout::Layout): Initialize section_ordering_specified_,
4290         input_section_position_, and input_section_glob_.
4291         (read_layout_from_file): Call function section_ordering_specified.
4292         * layout.h (is_section_ordering_specified): New function.
4293         (section_ordering_specified): New function.
4294         (section_ordering_specified_): New boolean member.
4295         * main.cc(main): Call load_plugins after layout object is defined.
4296         * output.cc (Output_section::add_input_section): Use
4297         function section_ordering_specified to check if section ordering is
4298         needed.
4299         * output.cc (Output_section::add_relaxed_input_section): Use
4300         function section_ordering_specified to check if section ordering is
4301         needed.
4302         (Output_section::update_section_layout): New function.
4303         (Output_section::sort_attached_input_sections): Check if input section
4304         must be reordered.
4305         * output.h (Output_section::update_section_layout): New function.
4306         * plugin.cc (get_section_count): New function.
4307         (get_section_type): New function.
4308         (get_section_name): New function.
4309         (get_section_contents): New function.
4310         (update_section_order): New function.
4311         (allow_section_ordering): New function.
4312         (Plugin::load): Add the new interfaces to the transfer vector.
4313         (Plugin_manager::load_plugins): New parameter.
4314         (Plugin_manager::all_symbols_read): New parameter.
4315         (Plugin_manager::claim_file): New parameter. Save the elf object for
4316         unclaimed objects.
4317         (Plugin_manager::get_elf_object): New function.
4318         (Plugin_manager::get_view): Change to directly use the bool to check
4319         if get_view is called from claim_file_hook.
4320         * plugin.h (input_objects): New function
4321         (Plugin__manager::load_plugins): New parameter.
4322         (Plugin_manager::claim_file): New parameter.
4323         (Plugin_manager::get_elf_object): New function.
4324         (Plugin_manager::in_claim_file_handler): New function.
4325         (Plugin_manager::in_claim_file_handler_): New member.
4326         (layout): New function.
4327         * readsyms.cc (Read_symbols::do_read_symbols): Call the claim_file
4328         handler with an extra parameter. Make the elf object before calling
4329         claim_file handler.
4330         * testsuite/plugin_test.c (get_section_count): New function pointer.
4331         (get_section_type): New function pointer.
4332         (get_section_name): New function pointer.
4333         (get_section_contents): New function pointer.
4334         (update_section_order): New function pointer.
4335         (allow_section_ordering): New function pointer.
4336         (onload): Check if the new interfaces exist.
4337
4338 2011-07-13  Ian Lance Taylor  <iant@google.com>
4339
4340         * i386.cc (Target_i386::got_section): If -z now, make .got.plt a
4341         relro section.
4342         * x86_64.cc (Target_x86_64::got_section): Likewise.
4343         * testsuite/Makefile.am (check_PROGRAMS): Add relro_now_test.
4344         (relro_now_test_SOURCES): New variable.
4345         (relro_now_test_DEPENDENCIES): New variable.
4346         (relro_now_test_LDFLAGS): New variable.
4347         (relro_now_test_LDADD): New variable.
4348         (relro_now_test.so): New target.
4349         * testsuite/Makefile.in: Rebuild.
4350
4351 2011-07-12  Ian Lance Taylor  <iant@google.com>
4352
4353         PR gold/12980
4354         * i386.cc (Target_i386::Scan::global): For a GOT reloc, use a
4355         GLOB_DAT relocation rather than a RELATIVE relocation for a
4356         protected symbol when creating a shared library.
4357         * x86_64.cc (Target_x86_64::Scan::global): Likewise.
4358         * testsuite/protected_1.cc (f2, get_f2_addr): New functions.
4359         * testsuite/protected_main_1.cc (main): Test that protected
4360         function has same address.
4361
4362 2011-07-11  Ian Lance Taylor  <iant@google.com>
4363
4364         PR gold/12979
4365         * options.h (class General_options): Add -Bgroup.
4366         * options.cc (General_options::finalize): If -Bgroup is set,
4367         default to --unresolved-symbols=report-all.
4368         * layout.cc (Layout::finish_dynamic_section): Implement -Bgroup.
4369         * target-reloc.h (issue_undefined_symbol_error): Handle
4370         --unresolved-symbols=report-all.
4371
4372 2011-07-08  Ian Lance Taylor  <iant@google.com>
4373
4374         PR gold/11985
4375         * layout.cc (Layout::create_initial_dynamic_sections): Don't crash
4376         if linker script discards key sections.
4377         (Layout::create_dynamic_symtab): Likewise.
4378         (Layout::assign_local_dynsym_offsets): Likewise.
4379         (Layout::sized_create_version_sections): Likewise.
4380         (Layout::create_interp): Likewise.
4381         (Layout::finish_dynamic_section): Likewise.
4382         (Layout::set_dynamic_symbol_size): Likewise.
4383
4384 2011-07-08  Ian Lance Taylor  <iant@google.com>
4385
4386         PR gold/12386
4387         * options.h (class General_options): Add --unresolved-symbols.
4388         * target-reloc.h (issue_undefined_symbol_error): Check
4389         --unresolved-symbols.  Add comments.
4390
4391 2011-07-08  Ian Lance Taylor  <iant@google.com>
4392
4393         * testsuite/odr_violation2.cc (Ordering::operator()): Make
4394         expression more complex.
4395
4396 2011-07-08  Ian Lance Taylor  <iant@google.com>
4397
4398         PR gold/11317
4399         * target-reloc.h (issue_undefined_symbol_error): New inline
4400         function, broken out of relocate_section.
4401         (relocate_section): Call issue_undefined_symbol_error.
4402         * i386.cc (Target_i386::Relocate::relocate_tls): Don't crash if
4403         there is no TLS segment if we are about to issue an undefined
4404         symbol error.
4405         * x86_64.cc (Target_x86_64::relocate_tls): Likewise.
4406
4407 2011-07-08  Ian Lance Taylor  <iant@google.com>
4408
4409         PR gold/12279
4410         * resolve.cc (Symbol_table::should_override): Add fromtype
4411         parameter.  Change all callers.  Give error when linking together
4412         TLS and non-TLS symbol.
4413         (Symbol_table::should_override_with_special): Add fromtype
4414         parameter.  Change all callers.
4415         * i386.cc (Target_i386::Relocate::relocate_tls): Don't crash if
4416         there is no TLS segment if we have reported some errors.
4417         * x86_64.cc (Target_x86_64::relocate_tls): Likewise.
4418
4419 2011-07-08  Ian Lance Taylor  <iant@google.com>
4420
4421         PR gold/12372
4422         * target.h (Target::plt_address_for_global): New function.
4423         (Target::plt_address_for_local): New function.
4424         (Target::plt_section_for_global): Remove.
4425         (Target::plt_section_for_local): Remove.
4426         (Target::do_plt_address_for_global): New virtual function.
4427         (Target::do_plt_address_for_local): New virtual function.
4428         (Target::do_plt_section_for_global): Remove.
4429         (Target::do_plt_section_for_local): Remove.
4430         (Target::register_global_plt_entry): Add Symbol_table and Layout
4431         parameters.
4432         * output.cc (Output_data_got::Got_entry::write): Use
4433         plt_address_for_global and plt_address_for_local.
4434         * layout.cc (Layout::add_target_dynamic_tags): Use size and
4435         address of output section.
4436         * i386.cc (class Output_data_plt_i386): Add irelative_rel_,
4437         got_irelative_, and irelative_count_ fields.  Update
4438         declarations.
4439         (Output_data_plt_i386::has_irelative_section): New function.
4440         (Output_data_plt_i386::entry_count): Add irelative_count_.
4441         (Output_data_plt_i386::set_final_data_size): Likewise.
4442         (class Target_i386): Add got_irelative_ and rel_irelative_
4443         fields.  Update declarations.
4444         (Target_i386::Target_i386): Initialize new fields.
4445         (Target_i386::do_plt_address_for_global): New function replacing
4446         do_plt_section_for_global.
4447         (Target_i386::do_plt_address_for_local): New function replacing
4448         do_plt_section_for_local.
4449         (Target_i386::got_section): Create got_irelative_.
4450         (Target_i386::rel_irelative_section): New function.
4451         (Output_data_plt_i386::Output_data_plt_i386): Initialize new
4452         fields.  Don't define __rel_iplt_{start,end}.
4453         (Output_data_plt_i386::add_entry): Add symtab and layout
4454         parameters.  Change all callers.  Use different PLT and GOT for
4455         IFUNC symbols.
4456         (Output_data_plt_i386::add_local_ifunc_entry): Add symtab and
4457         layout parameters.  Change all callers.  Use different PLT and
4458         GOT.
4459         (Output_data_plt_i386::rel_tls_desc): Fix formatting.
4460         (Output_data_plt_i386::rel_irelative): New function.
4461         (Output_data_plt_i386::address_for_global): New function.
4462         (Output_data_plt_i386::address_for_local): New function.
4463         (Output_data_plt_i386::do_write): Write out IRELATIVE area.  Use
4464         IRELATIVE GOT when changing IFUNC GOT entries.
4465         (Target_i386::Scan::global): Use IRELATIVE GOT for IRELATIVE
4466         reloc.
4467         (Target_i386::do_finalize_sections): Create the __rel_iplt symbols
4468         if we didn't create an IRELATIVE GOT.
4469         (Target_i386::Relocate::relocate): Use plt_address_for_global and
4470         plt_address_for_local.
4471         (Target_i386::do_dynsym_value): Use plt_address_for_global.
4472         * x86_64.cc (class Output_data_plt_x86_64): Add irelative_rel_,
4473         got_irelative_, and irelative_count_ fields.  Update
4474         declarations.
4475         (Output_data_plt_x86_64::Output_data_plt_x86_64) [both versions]:
4476         Initialize new fields.  Remove symtab parameter.  Change all
4477         callers.
4478         (Output_data_plt_x86_64::get_tlsdesc_plt_offset): Add
4479         irelative_count_.
4480         (Output_data_plt_x86_64::has_irelative_section): New function.
4481         (Output_data_plt_x86_64::entry_count): Add irelative_count_.
4482         (class Target_x86_64): Add got_irelative_ and rel_irelative_
4483         fields.  Update declarations.
4484         (Target_x86_64::Target_x86_64): Initialize new fields.
4485         (Target_x86_64::do_plt_address_for_global): New function replacing
4486         do_plt_section_for_global.
4487         (Target_x86_64::do_plt_address_for_local): New function replacing
4488         do_plt_section_for_local.
4489         (Target_x86_64::got_section): Create got_irelative_.
4490         (Target_x86_64::rela_irelative_section): New function.
4491         (Output_data_plt_x86_64::init): Remove symtab parameter.  Change
4492         all callers.  Don't create __rel_iplt_{start,end}.
4493         (Output_data_plt_x86_64::add_entry): Add symtab and layout
4494         parameters.  Change all callers.  Use different PLT and GOT for
4495         IFUNC symbols.
4496         (Output_data_plt_x86_64::add_local_ifunc_entry): Add symtab and
4497         layout parameters.  Change all callers.  Use different PLT and
4498         GOT.
4499         (Output_data_plt_x86_64::add_relocation): Add symtab and layout
4500         parameters.  Change all callers.  Use different PLT and GOT for
4501         IFUNC symbols.
4502         (Output_data_plt_x86_64::rela_tlsdesc): Fix formatting.
4503         (Output_data_plt_x86_64::rela_irelative): New function.
4504         (Output_data_plt_x86_64::address_for_global): New function.
4505         (Output_data_plt_x86_64::address_for_local): New function.
4506         (Output_data_plt_x86_64::set_final_data_size): Likewise.
4507         (Output_data_plt_x86_64::do_write): Write out IRELATIVE area.
4508         (Target_x86_64::init_got_plt_for_update): Create got_irelative_.
4509         (Target_x86_64::register_global_plt_entry): Add symtab and layout
4510         parameters.
4511         (Target_x86_64::Scan::global): Use IRELATIVE GOT for IRELATIVE
4512         reloc.
4513         (Target_x86_64::do_finalize_sections): Create the __rela_iplt
4514         symbols if we didn't create an IRELATIVE GOT.
4515         (Target_x86_64::Relocate::relocate): Use plt_address_for_global and
4516         plt_address_for_local.
4517         (Target_x86_64::do_dynsym_value): Use plt_address_for_global.
4518         * testsuite/ifuncvar1.c: New test file.
4519         * testsuite/ifuncvar2.c: New test file.
4520         * testsuite/ifuncvar3.c: New test file.
4521         * testsuite/Makefile.am (check_PROGRAMS): Add ifuncvar.
4522         (ifuncvar1_pic.o, ifuncvar2_pic.o, ifuncvar.so): New targets.
4523         (ifuncvar_SOURCES, ifuncvar_DEPENDENCIES): New variables.
4524         (ifuncvar_LDFLAGS, ifuncvar_LDADD): New variables.
4525         * testsuite/Makefile.in: Rebuild.
4526
4527 2011-07-07  Cary Coutant  <ccoutant@google.com>
4528
4529         * testsuite/Makefile.am (two_file_test_1_v1_ndebug.o): New target.
4530         (two_file_test_1_ndebug.o): Likewise.
4531         (two_file_test_1b_ndebug.o): Likewise.
4532         (two_file_test_2_ndebug.o): Likewise.
4533         (two_file_test_main_ndebug.o): Likewise.
4534         (incremental_test_2): Link with no-debug versions.
4535
4536 2011-07-06  Cary Coutant  <ccoutant@google.com>
4537
4538         * gold/incremental.cc
4539         (Output_section_incremental_inputs::write_info_blocks): Check for
4540         hidden and internal symbols.
4541
4542 2011-07-06  Cary Coutant  <ccoutant@google.com>
4543
4544         * incremental.cc (Sized_incremental_binary::do_file_has_changed):
4545         Check disposition for startup file.
4546         (Incremental_inputs::report_command_line): Ignore
4547         --incremental-startup-unchanged option.
4548         * options.cc (General_options::parse_incremental_startup_unchanged):
4549         New function.
4550         (General_options::General_options): Initialize new data member.
4551         * options.h (Incremental_disposition): Add INCREMENTAL_STARTUP.
4552         (General_options): Add --incremental-startup-unchanged option.
4553         (General_options::incremental_startup_disposition): New function.
4554         (General_options::incremental_startup_disposition_): New data member.
4555
4556 2011-07-06  Cary Coutant  <ccoutant@google.com>
4557
4558         * incremental.cc (Sized_incremental_binary::setup_readers): Pass
4559         input file index to Script_info ctor.
4560         (Sized_incremental_binary::do_file_has_changed): Find the
4561         command-line argument for files named in scripts.
4562         * incremental.h (Script_info::Script_info): New ctor
4563         with input file index.
4564         (Script_info::input_file_index): New function.
4565         (Script_info::input_file_index_): New data member.
4566         (Incremental_binary::get_library): Add const.
4567         (Incremental_binary::get_script_info): Add const.
4568         * readsyms.cc (Read_member::is_runnable): Check for this_blocker_.
4569         * testsuite/Makefile.am (incremental_test_5): New test case.
4570         (incremental_test_6): New test case.
4571         * testsuite/Makefile.in: Regenerate.
4572
4573 2011-07-06  Cary Coutant  <ccoutant@google.com>
4574
4575         * incremental.cc (Sized_incremental_binary::do_check_inputs): Add
4576         debug output when command lines differ.
4577
4578 2011-07-06  Cary Coutant  <ccoutant@google.com>
4579
4580         * incremental.cc (Incremental_inputs::report_command_line): Ignore
4581         --incremental-patch option.
4582         * layout.cc (Free_list::allocate): Extend allocation beyond original
4583         end if enabled.
4584         (Layout::make_output_section): Mark sections that should get
4585         patch space.
4586         * options.cc (parse_percent): New function.
4587         * options.h (parse_percent): New function.
4588         (DEFINE_percent): New macro.
4589         (General_options): Add --incremental-patch option.
4590         * output.cc (Output_section::Output_section): Initialize new data
4591         members.
4592         (Output_section::add_input_section): Print section name when out
4593         of patch space.
4594         (Output_section::add_output_section_data): Likewise.
4595         (Output_section::set_final_data_size): Add patch space when
4596         doing --incremental-full.
4597         (Output_section::do_reset_address_and_file_offset): Remove patch
4598         space.
4599         (Output_segment::set_section_list_addresses): Print debug output
4600         only if --incremental-update.
4601         * output.h (Output_section::set_is_patch_space_allowed): New function.
4602         (Output_section::is_patch_space_allowed_): New data member.
4603         (Output_section::patch_space_): New data member.
4604         * parameters.cc (Parameters::incremental_full): New function.
4605         * parameters.h (Parameters::incremental_full): New function
4606         * testsuite/Makefile.am (incremental_test_2): Add test for
4607         --incremental-patch option.
4608         * testsuite/Makefile.in: Regenerate.
4609         * testsuite/two_file_test_1_v1.cc (t1, t2, t3): Add comments.
4610         (t18): Remove function body.
4611
4612 2011-07-05  Doug Kwan  <dougkwan@google.com>
4613
4614         PR gold/12771
4615         * arm.cc (Arm_relocate_functions::abs8): Use int32_t for addend and
4616         Arm_Address type for relocation result.
4617         (Arm_relocate_functions::abs16): Use unaligned access.  Also fix
4618         overflow check.
4619         (Arm_relocate_functions::abs32): Use unaligned access.
4620         (Arm_relocate_functions::rel32): Ditto.
4621         (Arm_relocate_functions::prel31): Ditto.
4622         (Arm_exidix_cantunwind::do_fixed_endian_write): Ditto.
4623         * testsuite/Makefile.am: Add new test arm_unaligned_reloc for unaligned
4624         static data relocations.
4625         * testsuite/Makefile.in: Regnerate.
4626         * testsuite/arm_unaligned_reloc.{s,sh}: New files.
4627
4628 2011-07-05  Ian Lance Taylor  <iant@google.com>
4629
4630         PR gold/12392
4631         * i386.cc (Target_i386::do_finalize_sections): Define __rel_iplt
4632         symbols if necessary.
4633         * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
4634
4635 2011-07-05  Ian Lance Taylor  <iant@google.com>
4636
4637         PR gold/12952
4638         * resolve.cc (Symbol::override_base_with_special): Simply override
4639         version with special symbol version, ignoring previous version.
4640
4641 2011-07-05  Ian Lance Taylor  <iant@google.com>
4642
4643         * object.cc (Sized_relobj_file::include_section_group): Add
4644         information to comment about signature location.
4645
4646 2011-07-02  Ian Lance Taylor  <iant@google.com>
4647
4648         PR gold/12957
4649         * options.h (class General_options): Add -f and -F.
4650         * options.cc (General_options::finalize): Fatal error if -f/-F
4651         are used without -shared.
4652         * layout.cc (Layout::finish_dynamic_section): Implement -f/-F.
4653
4654 2011-07-02  Ian Lance Taylor  <iant@google.com>
4655
4656         * dirsearch.cc (Dir_cache::read_files): Ignore ENOTDIR errors.
4657
4658 2011-07-01  Ian Lance Taylor  <iant@google.com>
4659
4660         PR gold/12525
4661         PR gold/12952
4662         * resolve.cc (Symbol::override_base_with_special): Don't override
4663         the version if the overriding symbol has a different name.
4664         * dynobj.cc (Versions::add_def): Add dynpool parameter.  Change
4665         all callers.  If we give an error about an undefined version,
4666         define the base version if necessary.
4667         * dynobj.h (class Versions): Update declaration.
4668         * testsuite/weak_alias_test_5.cc: New file.
4669         * testsuite/weak_alias_test.script: New file.
4670         * testsuite/weak_alias_test_main.cc: Check that versioned_symbol
4671         and versioned_alias have the right value, and call t2.
4672         * testsuite/Makefile.am (weak_alias_test_DEPENDENCIES): Add
4673         weak_alias_test_5.so.
4674         (weak_alias_test_LDADD): Likewise.
4675         (weak_alias_test_5_pic.o, weak_alias_test_5.so): New targets.
4676         * testsuite/Makefile.in: Rebuild.
4677
4678 2011-07-01  Ian Lance Taylor  <iant@google.com>
4679
4680         PR gold/12525
4681         * options.h (class General_options): Support -z notext.
4682         * testsuite/Makefile.am (two_file_shared_1_nonpic.so): Use
4683         -Wl,-z,notext.
4684         (two_file_shared_nonpic.so): Likewise.
4685         (two_file_shared_mixed.so): Likewise.
4686         (two_file_shared_mixed_1.so): Likewise.
4687         (weak_undef_lib_nonpic.so): Likewise.
4688         (alt/weak_undef_lib_nonpic.so): Likewise.
4689         (tls_test_shared_nonpic.so): Likewise.
4690         * testsuite/Makefile.in: Rebuild.
4691
4692 2011-07-01  Ian Lance Taylor  <iant@google.com>
4693
4694         PR gold/12525
4695         * configure.ac: Test whether static linking works, setting
4696         the automake conditional HAVE_STATIC.
4697         * testsuite/Makefile.am: Disable tests using -static if
4698         HAVE_STATIC is not true.
4699         * configure, testsuite/Makefile.in: Rebuild.
4700
4701 2011-07-01  Ian Lance Taylor  <iant@google.com>
4702
4703         PR gold/12525
4704         * ehframe.cc (Eh_frame_hdr::get_fde_pc): Handle DW_EH_PE_datarel.
4705         Assert if we see DW_EH_PE_indirect.
4706         * target.h (Target::ehframe_datarel_base): New function.
4707         (Target::do_ehframe_datarel_base): New target function.
4708         * i386.cc (Target_i386::do_ehframe_datarel_base): New function.
4709         * x86_64.cc (Target_x86_64::do_ehframe_datarel_base): New
4710         function.
4711
4712 2011-07-01  Ian Lance Taylor  <iant@google.com>
4713
4714         PR gold/12571
4715         * options.h (class General_options): Add
4716         --ld-generated-unwind-info.
4717         * ehframe.cc (Fde::write): Add address parameter.  Change all
4718         callers.  If associated with PLT, fill in address and size.
4719         (Cie::set_output_offset): Only add merge mapping if there is an
4720         object.
4721         (Cie::write): Add address parameter.  Change all callers.
4722         (Eh_frame::add_ehframe_for_plt): New function.
4723         * ehframe.h (class Fde): Update declarations.  Move shndx_ and
4724         input_offset_ fields into union u_, with new plt field.
4725         (Fde::Fde): Adjust for new union field.
4726         (Fde::Fde) [Output_data version]: New constructor.
4727         (Fde::add_mapping): Only add merge mapping if there is an object.
4728         (class Cie): Update declarations.
4729         (class Eh_frame): Declare add_ehframe_for_plt.
4730         * layout.cc (Layout::layout_eh_frame): Break out code into
4731         make_eh_frame_section, and call it.
4732         (Layout::make_eh_frame_section): New function.
4733         (Layout::add_eh_frame_for_plt): New function.
4734         * layout.h (class Layout): Update declarations.
4735         * merge.cc (Merge_map::add_mapping): Add assertion.
4736         * i386.cc: Include "dwarf.h".
4737         (class Output_data_plt_i386): Make first_plt_entry,
4738         dyn_first_plt_entry, exec_plt_entry, and dyn_plt_entry const.  Add
4739         plt_eh_frame_cie_size, plt_eh_frame_fde_size, plt_eh_frame_cie,
4740         and plt_eh_frame_fde.
4741         (Output_data_plt_i386::Output_data_plt_i386): Align to 16-byte
4742         boundary.  Call add_eh_frame_for_plt if appropriate.
4743         * x86_64.cc: Include "dwarf.h".
4744         (class Output_data_plt_x86_64): Align to 16-byte boundary.  Make
4745         first_plt_entry, plt_entry and tlsdesc_plt_entry const.  Add
4746         plt_eh_frame_cie_size, plt_eh_frame_fde_size, plt_eh_frame_cie,
4747         and plt_eh_frame_fde.
4748         (Output_data_plt_x86_64::init): Call add_eh_frame_for_plt if
4749         appropriate.
4750
4751 2011-06-29  Ian Lance Taylor  <iant@google.com>
4752
4753         PR gold/12629
4754         * object.cc (Sized_relobj_file::layout_section): Change shdr
4755         parameter to be const.
4756         (Sized_relobj_file::layout_eh_frame_section): New function, broken
4757         out of do_layout.
4758         (Sized_relobj_file::do_layout): Defer .eh_frame sections if
4759         appropriate.  Call layout_eh_frame_section.
4760         (Sized_relobj_file::do_layout_deferred_sections): Handle .eh_frame
4761         sections.
4762         * object.h (class Sized_relobj_file): Update declarations.
4763
4764 2011-06-29  Ian Lance Taylor  <iant@google.com>
4765
4766         PR gold/12652
4767         * script.cc (Token::integer_value): Accept trailing M/m/K/k
4768         modifier.
4769         (Lex::gather_token): Accept trailing M/m/K/k for integers.
4770
4771 2011-06-29  Ian Lance Taylor  <iant@google.com>
4772
4773         PR gold/12675
4774         * object.cc (Sized_relobj_file::check_eh_frame_flags): Check for
4775         SHT_X86_64_UNWIND.
4776         * layout.cc (Layout::layout_eh_frame): Likewise.
4777
4778 2011-06-29  Ian Lance Taylor  <iant@google.com>
4779
4780         PR gold/12695
4781         * layout.cc (Layout::symtab_section_shndx): New function.
4782         * layout.h (class Layout): Declare symtab_section_shndx.
4783         * output.cc (Output_section::write_header): Call it.
4784
4785 2011-06-29  Ian Lance Taylor  <iant@google.com>
4786
4787         PR gold/12818
4788         * symtab.cc (Symbol::should_add_dynsym_entry): Don't add undefined
4789         symbols which are not used in a relocation.
4790
4791 2011-06-28  Ian Lance Taylor  <iant@google.com>
4792
4793         PR gold/12898
4794         * layout.cc (Layout::segment_precedes): Don't crash if a linker
4795         script create indistinguishable segments.
4796         (Layout::set_segment_offsets): Use stable_sort when sorting
4797         segments.  Pass this to Compare_segments constructor.
4798         * layout.h (class Layout): Make segment_precedes non-static.
4799         (class Compare_segments): Change from struct to class.  Add
4800         layout_ field.  Add constructor.
4801         * script-sections.cc
4802         (Script_sections::attach_sections_using_phdrs_clause): Rename
4803         local orphan to is_orphan.  Don't report failure to put empty
4804         section in segment.  On attachment failure, report name of
4805         section, and attach to first PT_LOAD segment.
4806
4807 2011-06-28  Ian Lance Taylor  <iant@google.com>
4808
4809         PR gold/12934
4810         * target-select.cc (Target_selector::Target_selector): Add
4811         emulation parameter.  Change all callers.
4812         (select_target_by_bfd_name): Rename from select_target_by_name.
4813         Change all callers.
4814         (select_target_by_emulation): New function.
4815         (supported_emulation_names): New function.
4816         * target-select.h (class Target_selector): Add emulation_ field.
4817         Update declarations.
4818         (Target_selector::recognize_by_bfd_name): Rename from
4819         recognize_by_name.  Change all callers.
4820         (Target_selector::supported_bfd_names): Rename from
4821         supported_names.  Change all callers.
4822         (Target_selector::recognize_by_emulation): New function.
4823         (Target_selector::supported_emulations): New function.
4824         (Target_selector::emulation): New function.
4825         (Target_selector::do_recognize_by_bfd_name): Rename from
4826         do_recognize_by_name.  Change all callers.
4827         (Target_selector::do_supported_bfd_names): Rename from
4828         do_supported_names.  Change all callers.
4829         (Target_selector::do_recognize_by_emulation): New function.
4830         (Target_selector::do_supported_emulations): New function.
4831         (select_target_by_bfd_name): Change name in declaration.
4832         (select_target_by_emulation): Declare.
4833         (supported_emulation_names): Declare.
4834         * parameters.cc (parameters_force_valid_target): Try to find
4835         target based on emulation from -m option.
4836         * options.h (class General_options): Change doc string for -m.
4837         * options.cc (help): Print emulations.
4838         (General_options::parse_V): Likewise.
4839         * freebsd.h (Target_selector_freebsd::Target_selector_freebsd):
4840         Add emulation parameter.  Change all callers.
4841
4842 2011-06-28  Ian Lance Taylor  <iant@google.com>
4843
4844         * target.h (class Target): Add osabi_ field.
4845         (Target::osabi): New function.
4846         (Target::set_osabi): New function.
4847         (Target::Target): Initialize osabi_.
4848         (Target::do_adjust_elf_header): Make pure virtual.
4849         (Sized_target::do_adjust_elf_header): Declare.
4850         * target.cc (Sized_target::do_adjust_elf_header): New function.
4851         (class Sized_target): Instantiate all versions.
4852         * freebsd.h (class Target_freebsd): Remove.
4853         (Target_selector_freebsd::do_recognize): Call set_osabi on
4854         Target.
4855         (Target_selector_freebsd::do_recognize_by_name): Likewise.
4856         (Target_selector_freebsd::set_osabi): Remove.
4857         * i386.cc (class Target_i386): Inherit from Sized_target rather
4858         than Target_freebsd.
4859         * x86_64.cc (class Target_x86_64): Likewise.
4860
4861 2011-06-28  Ian Lance Taylor  <iant@google.com>
4862
4863         * target.h (Target::can_check_for_function_pointers): Rewrite.
4864         Make non-virtual.
4865         (Target::can_icf_inline_merge_sections): Likewise.
4866         (Target::section_may_have_icf_unsafe_poineters): Likewise.
4867         (Target::Target_info): Add can_icf_inline_merge_sections field.
4868         (Target::do_can_check_for_function_pointers): New virtual
4869         function.
4870         (Target::do_section_may_have_icf_unsafe_pointers): Likewise.
4871         * arm.cc (Target_arm::do_can_check_for_function_pointers): Rename
4872         from can_check_for_function_pointers, move in file.
4873         (Target_arm::do_section_may_have_icf_unsafe_pointers): Rename from
4874         section_may_have_icf_unsafe_poineters, move in file.
4875         (Target_arm::arm_info): Initialize can_icf_inline_merge_sections.
4876         * i386.cc (Target_i386::do_can_check_for_function_pointers):
4877         Rename from can_check_for_function_pointers, move in file.
4878         (Target_i386::can_icf_inline_merge_sections): Remove.
4879         (Target_i386::i386_info): Initialize
4880         can_icf_inline_merge_sections.
4881         * powerpc.cc (Target_powerpc::powerpc_info) [all versions]:
4882         Initialize can_icf_inline_merge_sections.
4883         * sparc.cc (Target_sparc::sparc_info) [both version]: Likewise.
4884         * x86_64.cc (Target_x86_64::do_can_check_for_function_pointers):
4885         Rename from can_check_for_function_pointers, move in file.
4886         (Target_x86_64::can_icf_inline_merge_sections): Remove.
4887         (Target_x86_64::x86_64_info): Initialize
4888         can_icf_inline_merge_sections.
4889         * testsuite/testfile.cc (Target_test::test_target_info):
4890         Likewise.
4891         * icf.cc (get_section_contents): Correct formatting.
4892
4893 2011-06-27  Ian Lance Taylor  <iant@google.com>
4894
4895         * symtab.cc (Symbol::versioned_name): New function.
4896         (Symbol_table::add_to_final_symtab): Use versioned_name when
4897         appropriate.
4898         (Symbol_table::sized_write_symbol): Likewise.
4899         * symtab.h (class Symbol): Declare versioned_name.
4900         * stringpool.h (class Stringpool_template): Add variant of add
4901         which takes a std::basic_string.
4902         * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_12.
4903         (ver_test_12_SOURCES, ver_test_12_DEPENDENCIES): New variables.
4904         (ver_test_12_LDFLAGS, ver_test_12_LDADD): New variables.
4905         (ver_test_12.o): New target.
4906         * testsuite/Makefile.in: Rebuild.
4907
4908 2011-06-27  Doug Kwan  <dougkwan@google.com>
4909
4910         * arm.cc (Arm_relocate_functions::thm_jump8,
4911         Arm_relocate_functions::thm_jump11): Use a wider signed
4912         type to compute offset.
4913         * testsuite/Makefile.am: Add new tests arm_thm_jump11 and
4914         arm_thm_jump8.
4915         * testsuite/Makefile.in: Regenerate.
4916         * testsuite/arm_branch_in_range.sh: Check test results of
4917         arm_thm_jump11 and arm_thm_jump8.
4918         * testsuite/arm_thm_jump11.s: New test source file.
4919         * testsuite/arm_thm_jump11.t: New linker script.
4920         * testsuite/arm_thm_jump8.s: New test source file.
4921         * testsuite/arm_thm_jump8.t: New linker script.
4922
4923 2011-06-24  Ian Lance Taylor  <iant@google.com>
4924
4925         * layout.cc: Include "object.h".
4926         (ctors_sections_in_init_array): New static variable.
4927         (Layout::is_ctors_in_init_array): New function.
4928         (Layout::layout): Add entry to ctors_sections_in_init_array if
4929         appropriate.
4930         * layout.h (class Layout): Declare is_ctors_in_init_array.
4931         * reloc.cc (Sized_relobj_file::do_relocate): Call reverse_words if
4932         is_ctors_reverse_view is set.
4933         (Sized_relobj_file::write_sections): Add layout parameter.  Change
4934         all callers.  Set is_ctors_reverse_view field of View_size.
4935         (Sized_relobj_file::reverse_words): New function.
4936         * object.h (Sized_relobj_file::View_size): Add
4937         is_ctors_reverse_view field.
4938         (class Sized_relobj_file): Update declarations.
4939         * testsuite/initpri3.c: New test.
4940         * testsuite/Makefile.am: (check_PROGRAMS): Add initpri3a and
4941         initpri3b.
4942         (initpri3a_SOURCES, initpri3a_DEPENDENCIES): New variables.
4943         (initpri3a_LDFLAGS, initpri3a_LDADD): New variables.
4944         (initpri3b_SOURCES, initpri3b_DEPENDENCIES): New variables.
4945         (initpri3b_LDFLAGS, initpri3b_LDADD): New variables.
4946         * testsuite/Makefile.in: Rebuild.
4947
4948 2011-06-24  Cary Coutant  <ccoutant@google.com>
4949
4950         * testsuite/Makefile.am: Add in-tree assembler to gcctestdir.
4951         (debug_msg_cdebug.o, odr_violation1_cdebug.o, odr_violation2_cdebug.o)
4952         (debug_msg_cdebug.err): New targets.
4953         * testsuite/Makefile.in: Regenerate.
4954         * testsuite/debug_msg.sh: Check output of link with compressed debug.
4955         Fix checks for link with shared library.
4956
4957 2011-06-24  Doug Kwan  <dougkwan@google.com>
4958
4959         * arm.cc (Arm_output_section::append_text_sections_to_list): Do not
4960         skip empty text sections.
4961         * testsuite/arm_exidx_test.s: Test handling of an empty text section.
4962
4963 2011-06-22  Ian Lance Taylor  <iant@google.com>
4964
4965         PR gold/12910
4966         * options.h (class General_options): Add --ctors-in-init-array.
4967         * layout.cc (Layout::get_output_section): Treat SHT_INIT_ARRAY and
4968         friends as SHT_PROGBITS for merging sections.
4969         (Layout::layout): Remove special handling of .init_array and
4970         friends.  Don't sort if doing relocatable link.  Sort for .ctors
4971         and .dtors if ctors_in_init_array.
4972         (Layout::make_output_section): Force correct section types for
4973         .init_array and friends.  Don't sort if doing relocatable link,
4974         Don't sort .ctors and .dtors if ctors_in_init_array.
4975         (Layout::section_name_mapping): Remove .ctors. and .dtorso.
4976         (Layout::output_section_name): Add relobj parameter.  Change all
4977         callers.  Handle .ctors. and .dtors. in code rather than table.
4978         Handle .ctors and .dtors if ctors_in_init_array.
4979         (Layout::match_file_name): New function, moved from output.cc.
4980         * layout.h (class Layout): Update declarations.
4981         * output.cc: Include "layout.h".
4982         (Input_section_sort_entry::get_priority): New function.
4983         (Input_section_sort_entry::match_file_name): Just call
4984         Layout::match_file_name.
4985         (Output_section::Input_section_sort_init_fini_compare::operator()):
4986         Handle .ctors and .dtors.  Sort by explicit priority rather than
4987         by name.
4988         * configure.ac: Remove CONSTRUCTOR_PRIORITY test and conditional.
4989         * testsuite/initpri2.c: New test.
4990         * testsuite/Makefile.am: Don't test CONSTRUCTOR_PRIORITY.
4991         (check_PROGRAMS): Add initpri2.
4992         (initpri2_SOURCES, initpri2_DEPENDENCIES): New variables.
4993         (initpri2_LDFLAGS, initpri2_LDADD): New variables.
4994         * configure, testsuite/Makefile.in: Rebuild.
4995
4996 2011-06-19  Ian Lance Taylor  <iant@google.com>
4997
4998         PR gold/12880
4999         * layout.cc (Layout::attach_allocated_section_to_segment): Add a
5000         .interp section to a PT_INTERP segment even if we have seen a
5001         --dynamic-linker option.  Don't do it if we have seen a PHDRS
5002         clause in a linker script.
5003         (Layout::finalize): Don't create a .interp section if we've
5004         already create a PT_INTERP segment.
5005         (Layout::create_interp): Always call choose_output_section (revert
5006         patch of 2011-06-17).  Don't create PT_INTERP segment.
5007         * script-sections.cc
5008         (Script_sections::create_note_and_tls_segments): Add a .interp
5009         section to a PT_INTERP segment even if we have seen a
5010         --dynamic-linker option.
5011
5012 2011-06-18  Ian Lance Taylor  <iant@google.com>
5013
5014         * layout.cc (Layout::finish_dynamic_section): Don't set DT_TEXTREL
5015         merely because a non-PT_LOAD segment has a dynamic reloc.
5016
5017 2011-06-18  Ian Lance Taylor  <iant@google.com>
5018
5019         * layout.cc (Layout::finish_dynamic_section): Don't create
5020         DT_FLAGS entry if not needed.
5021
5022 2011-06-18  Ian Lance Taylor  <iant@google.com>
5023
5024         PR gold/12745
5025         * layout.cc (Layout::layout_eh_frame): Correct handling of
5026         writable .eh_frame section.
5027
5028 2011-06-17  Ian Lance Taylor  <iant@google.com>
5029
5030         PR gold/12893
5031         * resolve.cc (Symbol_table::resolve): Don't give an error if a
5032         symbol is redefined with the exact same object and value.
5033
5034 2011-06-17  Ian Lance Taylor  <iant@google.com>
5035
5036         PR gold/12880
5037         * layout.h (class Layout): Add interp_segment_ field.
5038         * layout.cc (Layout::Layout): Initialize interp_segment_ field.
5039         (Layout::attach_allocated_section_to_segment): If making shared
5040         library, put .interp section in PT_INTERP segment.
5041         (Layout::finalize): Also call create_interp if -dynamic-linker
5042         option was used.
5043         (Layout::create_interp): Assert that there is no PT_INTERP
5044         segment.  If not using a SECTIONS clause, use make_output_section.
5045         (Layout::make_output_segment): Set interp_segment_ if PT_INTERP.
5046         * script-sections.cc
5047         (Script_sections::create_note_and_tls_segments): If making shared
5048         library, put .interp section in PT_INTERP segment.
5049
5050 2011-06-17  Ian Lance Taylor  <iant@google.com>
5051
5052         * object.cc (Sized_relobj_file::do_layout): Keep warning sections
5053         when making a shared library.
5054
5055 2011-06-17  Ian Lance Taylor  <iant@google.com>
5056
5057         * x86_64.cc (Target_x86_64::Scan::check_non_pic): Add gsym
5058         parameter.  Change all callers.  Don't issue warning about PC32
5059         against locally defined symbol.
5060
5061 2011-06-16  Ian Lance Taylor  <iant@google.com>
5062
5063         * symtab.cc (Warnings::issue_warning): Don't warn if relocation
5064         occurs in same object.
5065
5066 2011-06-14  Alan Modra  <amodra@gmail.com>
5067
5068         * po/POTFILES.in: Regenerate.
5069
5070 2011-06-09  Ian Lance Taylor  <iant@google.com>
5071
5072         * script-sections.cc
5073         (Orphan_output_section::set_section_addresses): For a relocatable
5074         link set address to 0.
5075
5076 2011-06-09  Cary Coutant  <ccoutant@google.com>
5077
5078         PR gold/12804
5079         * gold/gold.cc (queue_initial_tasks): Warn if --incremental is
5080         used with --compress-debug-sections.
5081         * gold/object.cc (Sized_relobj_file::do_layout): Report
5082         uncompressed size of compressed input sections.
5083
5084 2011-06-08  Cary Coutant  <ccoutant@google.com>
5085
5086         PR gold/12804
5087         * testsuite/two_file_test_2_v1.cc: Change initialization of
5088         v2 to keep it in .data.
5089
5090 2011-06-07  Cary Coutant  <ccoutant@google.com>
5091
5092         * common.cc (Symbol_table::do_allocate_commons_list): Call
5093         gold_fallback.
5094         * errors.cc (Errors::fatal): Adjust call to gold_exit.
5095         (Errors::fallback): New function.
5096         (gold_fallback): New function.
5097         * errors.h (Errors::fallback): New function.
5098         * gold.cc (gold_exit): Change status parameter to enum; adjust
5099         all callers.
5100         (queue_initial_tasks): Call gold_fallback.
5101         * gold.h: Include cstdlib.
5102         (Exit_status): New enum type.
5103         (gold_exit): Change status parameter to enum.
5104         (gold_fallback): New function.
5105         * layout.cc (Layout::set_section_offsets): Call gold_fallback.
5106         (Layout::create_symtab_sections): Likewise.
5107         (Layout::create_shdrs): Likewise.
5108         * main.cc (main): Adjust call to gold_exit.
5109         * output.cc (Output_data_got::add_got_entry): Call gold_fallback.
5110         (Output_data_got::add_got_entry_pair): Likewise.
5111         (Output_section::add_input_section): Likewise.
5112         (Output_section::add_output_section_data): Likewise.
5113         (Output_segment::set_section_list_addresses): Likewise.
5114         * x86_64.cc (Output_data_plt_x86_64::add_entry): Likewise.
5115
5116 2011-06-07  Cary Coutant  <ccoutant@google.com>
5117
5118         * layout.cc (Layout::set_segment_offsets): Don't adjust layout
5119         for incremental links.
5120         * output.cc (Output_segment::set_section_list_addresses): Remove
5121         FIXME and test for TLS or BSS.
5122
5123 2011-06-07  Cary Coutant  <ccoutant@google.com>
5124
5125         * testsuite/Makefile.am: Add incremental_copy_test,
5126         incremental_common_test_1.
5127         * testsuite/Makefile.in: Regenerate.
5128         * testsuite/common_test_1_v1.c: New source file.
5129         * testsuite/common_test_1_v2.c: New source file.
5130         * testsuite/copy_test_v1.cc: New source file.
5131
5132 2011-06-07  Cary Coutant  <ccoutant@google.com>
5133
5134         * common.cc (Symbol_table::do_allocate_commons_list): For incremental
5135         update, allocate common from bss section's free list.
5136         * incremental-dump.cc (dump_incremental_inputs): Print flag for
5137         linker-defined symbols.
5138         * incremental.cc (Sized_incremental_binary::do_process_got_plt):
5139         Skip GOT and PLT entries that are no longer referenced.
5140         (Output_section_incremental_inputs::write_info_blocks): Mark
5141         linker-defined symbols.
5142         (Sized_incr_relobj::do_add_symbols): Process linker-defined symbols.
5143         * output.cc (Output_section::allocate): New function.
5144         * output.h (Output_section::allocate): New function.
5145         * resolve.cc (Symbol_table::report_resolve_problem): Add case for
5146         linker-defined symbols.
5147         (Symbol::override_base_with_special): Copy is_predefined_ flag.
5148         * symtab.cc (Symbol::init_fields): Initialize is_predefined_ flag.
5149         (Symbol::init_base_output_data): Likewise.
5150         (Symbol::init_base_output_segment): Likewise.
5151         (Symbol::init_base_constant): Likewise.
5152         (Sized_symbol::init_output_data): Likewise.
5153         (Sized_symbol::init_output_segment): Likewise.
5154         (Sized_symbol::init_constant): Likewise.
5155         (Symbol_table::do_define_in_output_data): Likewise.
5156         (Symbol_table::do_define_in_output_segment): Likewise.
5157         (Symbol_table::do_define_as_constant): Likewise.
5158         * symtab.h (Symbol::is_predefined): New function.
5159         (Symbol::init_base_output_data): Add is_predefined parameter.
5160         (Symbol::init_base_output_segment): Likewise.
5161         (Symbol::init_base_constant): Likewise.
5162         (Symbol::is_predefined_): New data member.
5163         (Sized_symbol::init_output_data): Add is_predefined parameter.
5164         (Sized_symbol::init_output_segment): Likewise.
5165         (Sized_symbol::init_constant): Likewise.
5166         (enum Symbol_table::Defined): Add INCREMENTAL_BASE.
5167
5168 2011-06-07  Cary Coutant  <ccoutant@google.com>
5169
5170         * copy-relocs.cc (Copy_relocs::copy_reloc): Call make_copy_reloc
5171         instead of emit_copy_reloc.
5172         (Copy_relocs::emit_copy_reloc): Refactor.
5173         (Copy_relocs::make_copy_reloc): New function.
5174         (Copy_relocs::add_copy_reloc): Remove.
5175         * copy-relocs.h (Copy_relocs::emit_copy_reloc): Move to public
5176         section.
5177         (Copy_relocs::make_copy_reloc): New function.
5178         (Copy_relocs::add_copy_reloc): Remove.
5179         * gold.cc (queue_middle_tasks): Emit old COPY relocations from
5180         unchanged input files.
5181         * incremental-dump.cc (dump_incremental_inputs): Print "COPY" flag.
5182         * incremental.cc (Sized_incremental_binary::do_reserve_layout):
5183         Reserve BSS space for COPY relocations.
5184         (Sized_incremental_binary::do_emit_copy_relocs): New function.
5185         (Output_section_incremental_inputs::write_info_blocks): Record
5186         whether a symbol is copied from a shared object.
5187         (Sized_incr_dynobj::do_add_symbols): Record COPY relocations.
5188         * incremental.h (enum Incremental_shlib_symbol_flags): New type.
5189         (INCREMENTAL_SHLIB_SYM_FLAGS_SHIFT): New constant.
5190         (Incremental_input_entry_reader::get_output_symbol_index): Add
5191         is_copy parameter.
5192         (Incremental_binary::emit_copy_relocs): New function.
5193         (Incremental_binary::do_emit_copy_relocs): New function.
5194         (Sized_incremental_binary::Sized_incremental_binary): Initialize
5195         new data member.
5196         (Sized_incremental_binary::add_copy_reloc): New function.
5197         (Sized_incremental_binary::do_emit_copy_relocs): New function.
5198         (Sized_incremental_binary::Copy_reloc): New struct.
5199         (Sized_incremental_binary::Copy_relocs): New typedef.
5200         (Sized_incremental_binary::copy_relocs_): New data member.
5201         * symtab.cc (Symbol_table::add_from_incrobj): Change return type.
5202         * symtab.h (Symbol_table::add_from_incrobj): Change return type.
5203         * target.h (Sized_target::emit_copy_reloc): New function.
5204         * x86_64.cc (Target_x86_64::emit_copy_reloc): New function.
5205
5206 2011-06-02  Cary Coutant  <ccoutant@google.com>
5207
5208         PR gold/12163
5209         * gold/archive.cc (Archive::Archive): Initialize new data member.
5210         (Archive::include_all_members): Return if archive has already been
5211         included.
5212         * gold/archive.h (Archive::include_all_members_): New data member.
5213
5214 2011-06-02  Nick Clifton  <nickc@redhat.com>
5215
5216         * dynobj.h: Fix spelling mistake in comment.
5217         * output.cc: Likewise.
5218
5219 2011-05-31  Doug Kwan  <dougkwan@google.com>
5220             Asier Llano
5221
5222         PR gold/12826
5223         * arm.cc (Target_arm::tag_cpu_arch_combine): Fix handling of
5224         arch value that equals to elfcpp::MAX_TAG_CPU_ARCH.
5225         * testsuite/Makefile.am: (MOSTLYCLEANFILES): Clean up.  Remove
5226         redundant arm_exidx_test.so.
5227         * testsuite/Makefile.in: Regenerate.
5228         (check_SCRIPTS): Add pr12826.sh
5229         (check_DATA): Add pr12826.stdout
5230         (pr12826.stdout, pr12826.so, pr12826_1.o, pr12826_2.o): New rules.
5231         * testsuite/pr12826.sh: New file.
5232         * testsuite/pr12826_1.s: Ditto.
5233         * testsuite/pr12826_1.s: Ditto.
5234
5235 2011-05-30  Ian Lance Taylor  <iant@google.com>
5236
5237         * reloc.cc (Sized_relobj_file::do_read_relocs): Ignore empty reloc
5238         sections.
5239
5240 2011-05-29  Ian Lance Taylor  <iant@google.com>
5241
5242         PR gold/12804
5243         * testsuite/Makefile.am: Use different file name for two_file_test
5244         temporary file for each incremental test.
5245         * testsuite/Makefile.in: Rebuild.
5246
5247 2011-05-29  Ian Lance Taylor  <iant@google.com>
5248
5249         * binary.cc (Binary_to_elf::sized_convert): Don't crash if the
5250         binary input file is empty.
5251
5252 2011-05-27  Ian Lance Taylor  <iant@google.com>
5253
5254         * testsuite/Makefile.am (ver_test_2.so): Use -Wl,-R,.
5255         (ver_test_9.so): Likewise.
5256         * testsuite/Makefile.in: Rebuild.
5257
5258 2011-05-26 Cary Coutant  <ccoutant@google.com>
5259
5260         * incremental-dump.cc (dump_incremental_inputs): Print COMDAT groups.
5261         * incremental.cc (Incremental_inputs::report_input_section): Fix
5262         comment, indentation.
5263         (Incremental_inputs::report_comdat_group): New function.
5264         (Output_section_incremental_inputs::set_final_data_size): Adjust size
5265         of data for incremental input file entry.
5266         (Output_section_incremental_inputs::write_info_blocks): Write COMDAT
5267         group count, COMDAT group signatures.
5268         (Sized_incr_relobj::do_layout): Record kept COMDAT group info from
5269         an unchanged input file.
5270         * incremental.h (Incremental_object_entry::Incremental_object_entry):
5271         Initialize new data member.
5272         (Incremental_object_entry::add_comdat_group): New function.
5273         (Incremental_object_entry::get_comdat_group_count): New function.
5274         (Incremental_object_entry::get_comdat_signature_key): New function.
5275         (Incremental_object_entry::groups_): New data member.
5276         (Incremental_inputs::report_comdat_group): New function.
5277         (Incremental_input_entry_reader::get_symbol_offset): Adjust size of
5278         data for incremental input file entry.
5279         (Incremental_input_entry_reader::get_comdat_group_count): New function.
5280         (Incremental_input_entry_reader::get_input_section): Adjust size of
5281         data for incremental input file entry.
5282         (Incremental_input_entry_reader::get_global_symbol_reader): Likewise.
5283         (Incremental_input_entry_reader::get_comdat_group_signature): New
5284         function.
5285         * object.cc (Sized_relobj::include_section_group): Report kept
5286         COMDAT groups for incremental links.
5287
5288 2011-05-24  David Meyer  <pdox@google.com>
5289
5290         * dirsearch.cc (Dirsearch::find): Replace n1 and n2 parameters
5291         with name parameter.  Add found_name parameter.
5292         * fileread.cc (Input_file::find_file): Adjust code accordingly.
5293         * dirsearch.h (class Dirsearch): Update declaration.
5294
5295 2011-05-24  Ian Lance Taylor  <iant@google.com>
5296
5297         * archive.cc (Library_base::should_include_member): Pull in object
5298         from archive if it defines the entry symbol.
5299         * parameters.cc (Parameters::entry): New function.
5300         * parameters.h (class Parameters): Declare entry.
5301         * output.h (class Output_file_header): Remove entry_ field.
5302         * output.cc (Output_file_header::Output_file_header): Remove entry
5303         parameter.  Change all callers.
5304         (Output_file_header::entry): Use parameters->entry.
5305         * gold.cc (queue_middle_tasks): Likewise.
5306         * plugin.cc (Plugin_hook::run): Likewise.
5307
5308 2011-05-24 Cary Coutant  <ccoutant@google.com>
5309
5310         * gold.cc (queue_initial_tasks): Pass incremental base filename
5311         to Output_file::open_base_file; don't print error message.
5312         * incremental-dump.cc (main): Adjust call to
5313         Output_file::open_for_modification.
5314         * incremental-dump.cc (main): Likewise.
5315         * incremental.cc (Incremental_inputs::report_command_line):
5316         Ignore --incremental-base option when comparing command lines.
5317         Ignore parameter when given as separate argument.
5318         * options.h (class General_options): Add --incremental-base.
5319         * output.cc (Output_file::Output_file):
5320         (Output_file::open_base_file): Add base_name and writable parameters;
5321         read base file into new file; print error message here.
5322         (Output_file::map_no_anonymous): Add writable parameter; adjust all
5323         callers.
5324         * output.h (Output_file::open_for_modification): Rename to...
5325         (Output_file::open_base_file): ...this; add base_name and
5326         writable parameters; adjust all callers.
5327         (Output_file::map_no_anonymous): Add writable parameter; adjust all
5328         callers.
5329         * testsuite/Makefile.am (incremental_test_4): Test
5330         --incremental-base.
5331         * testsuite/Makefile.in: Regenerate.
5332
5333 2011-05-24 Cary Coutant  <ccoutant@google.com>
5334
5335         * testsuite/Makefile.am: Add incremental_test_2, incremental_test_3,
5336         incremental_test_4.
5337         * testsuite/Makefile.in: Regenerate.
5338         * testsuite/two_file_test_1_v1.cc: New test source file.
5339         * testsuite/two_file_test_1b_v1.cc: New test source file.
5340         * testsuite/two_file_test_2_v1.cc: New test source file.
5341
5342 2011-05-24 Cary Coutant  <ccoutant@google.com>
5343
5344         * dynobj.h (Dynobj::do_dynobj): New function.
5345         * incremental-dump.cc (dump_incremental_inputs): Print as_needed
5346         flag and soname for shared objects.
5347         * incremental.cc (Incremental_inputs::report_object): Make
5348         either Incremental_object_entry or Incremental_dynobj_entry; add
5349         soname to string table.
5350         (Incremental_inputs::report_input_section): Add assertion.
5351         (Output_section_incremental_inputs::set_final_data_size): Adjust
5352         type of input file entry for shared libraries; adjust size of
5353         shared library info entry.
5354         (Output_section_incremental_inputs::write_input_files): Write
5355         as_needed flag for shared libraries.
5356         (Output_section_incremental_inputs::write_info_blocks): Adjust type
5357         of input file entry for shared libraries; write soname.
5358         (Sized_incr_dynobj::Sized_incr_dynobj): Read as_needed flag and
5359         soname from incremental info.
5360         * incremental.h (enum Incremental_input_flags): Add
5361         INCREMENTAL_INPUT_AS_NEEDED.
5362         (Incremental_input_entry::Incremental_input_entry): Initialize new
5363         data member.
5364         (Incremental_input_entry::set_as_needed): New function.
5365         (Incremental_input_entry::as_needed): New function.
5366         (Incremental_input_entry::do_dynobj_entry): New function.
5367         (Incremental_input_entry::as_needed_): New data member.
5368         (Incremental_object_entry::Incremental_object_entry): Don't check
5369         for shared library.
5370         (Incremental_object_entry::do_type): Likewise.
5371         (class Incremental_dynobj_entry): New class.
5372         (Incremental_input_entry_reader::as_needed): New function.
5373         (Incremental_input_entry_reader::get_soname): New function.
5374         (Incremental_input_entry_reader::get_global_symbol_count): Rewrite.
5375         (Incremental_input_entry_reader::get_output_symbol_index): Adjust
5376         size of shared library info entry.
5377         * layout.cc (Layout::finish_dynamic_section): Don't test for
5378         incremental link when adding DT_NEEDED entries.
5379         * object.h (Object::Object): Initialize new data member.
5380         (Object::dynobj): New function.
5381         (Object::set_as_needed): New function.
5382         (Object::as_needed): New function.
5383         (Object::do_dynobj): New function.
5384         (Object::as_needed_): New data member.
5385
5386 2011-05-24 Cary Coutant  <ccoutant@google.com>
5387
5388         * incremental-dump.cc (dump_incremental_inputs): Print dynamic reloc
5389         info; adjust display of GOT entries.
5390         * incremental.cc (Sized_incremental_binary::setup_readers): Allocate
5391         vector of input objects; remove file_status_.
5392         (Sized_incremental_binary::do_reserve_layout): Remove file_status_.
5393         (Sized_incremental_binary::do_process_got_plt): Adjust calls to
5394         got_plt reader; call target hooks to reserve GOT entries.
5395         (Output_section_incremental_inputs::set_final_data_size): Adjust size
5396         of input file info header and GOT info entry.
5397         (Output_section_incremental_inputs::write_info_blocks): Write dynamic
5398         relocation info.
5399         (Got_plt_view_info::got_descriptor): Remove.
5400         (Got_plt_view_info::sym_index): New data member.
5401         (Got_plt_view_info::input_index): New data member.
5402         (Local_got_offset_visitor::visit): Write input file index.
5403         (Global_got_offset_visitor::visit): Write 0 for input file index.
5404         (Global_symbol_visitor_got_plt::operator()): Replace got_descriptor
5405         with sym_index and input_index.
5406         (Output_section_incremental_inputs::write_got_plt): Adjust size of
5407         incremental info GOT entry; replace got_descriptor with input_index.
5408         (Sized_relobj_incr::Sized_relobj_incr): Adjust initializers; record
5409         map from input file index to object.
5410         (Sized_relobj_incr::do_layout): Replace direct data member reference
5411         with accessor function.
5412         (Sized_relobj_incr::do_for_all_local_got_entries): Move to base class.
5413         * incremental.h (Incremental_input_entry_reader::get_symbol_offset):
5414         Adjust size of input file info header.
5415         (Incremental_input_entry_reader::get_first_dyn_reloc): New function.
5416         (Incremental_input_entry_reader::get_dyn_reloc_count): New function.
5417         (Incremental_input_entry_reader::get_input_section): Adjust size of
5418         input file info header.
5419         (Incremental_got_plt_reader::Incremental_got_plt_reader): Adjust size
5420         of incremental info GOT entry.
5421         (Incremental_got_plt_reader::get_got_desc): Remove.
5422         (Incremental_got_plt_reader::get_got_symndx): New function.
5423         (Incremental_got_plt_reader::get_got_input_index): New function.
5424         (Sized_incremental_binary::Sized_incremental_binary): Remove
5425         file_status_; add input_objects_.
5426         (Sized_incremental_binary::~Sized_incremental_binary): Remove.
5427         (Sized_incremental_binary::set_file_is_unchanged): Remove.
5428         (Sized_incremental_binary::file_is_unchanged): Remove.
5429         (Sized_incremental_binary::set_input_object): New function.
5430         (Sized_incremental_binary::input_object): New function.
5431         (Sized_incremental_binary::file_status_): Remove.
5432         (Sized_incremental_binary::input_objects_): New data member.
5433         (Sized_relobj_incr): Rename Sized_incr_relobj to this; adjust all
5434         references.
5435         (Sized_relobj_incr::invalid_address): Move to base class.
5436         (Sized_relobj_incr::is_output_section_offset_invalid): Move to base
5437         class.
5438         (Sized_relobj_incr::do_output_section_offset): Likewise.
5439         (Sized_relobj_incr::do_for_all_local_got_entries): Likewise.
5440         (Sized_relobj_incr::section_offsets_): Likewise.
5441         * object.cc (Sized_relobj::do_for_all_local_got_entries): New
5442         function.
5443         (Sized_relobj_file::Sized_relobj_file): Remove local_got_offsets_.
5444         (Sized_relobj_file::layout_section): Replace refs to section_offsets_
5445         with accessor function.
5446         (Sized_relobj_file::do_layout): Likewise.
5447         (Sized_relobj_file::do_layout_deferred_sections): Likewise.
5448         (Sized_relobj_file::do_for_all_local_got_entries): Move to base class.
5449         (Sized_relobj_file::compute_final_local_value): Replace refs to
5450         section_offsets_ with accessor function.
5451         (Sized_relobj_file::do_finalize_local_symbols): Likewise.
5452         * object.h (Relobj::Relobj): Initialize new data members.
5453         (Relobj::add_dyn_reloc): New function.
5454         (Relobj::first_dyn_reloc): New function.
5455         (Relobj::dyn_reloc_count): New function.
5456         (Relobj::first_dyn_reloc_): New data member.
5457         (Relobj::dyn_reloc_count_): New data member.
5458         (Sized_relobj): Rename Sized_relobj_base to this; adjust all
5459         references.
5460         (Sized_relobj::Address): New typedef.
5461         (Sized_relobj::invalid_address): Move here from child class.
5462         (Sized_relobj::Sized_relobj): Initialize new data members.
5463         (Sized_relobj::sized_relobj): New function.
5464         (Sized_relobj::is_output_section_offset_invalid): Move here from
5465         child class.
5466         (Sized_relobj::get_output_section_offset): Likewise.
5467         (Sized_relobj::local_has_got_offset): Likewise.
5468         (Sized_relobj::local_got_offset): Likewise.
5469         (Sized_relobj::set_local_got_offset): Likewise.
5470         (Sized_relobj::do_for_all_local_got_entries): Likewise.
5471         (Sized_relobj::clear_got_offsets): New function.
5472         (Sized_relobj::section_offsets): Move here from child class.
5473         (Sized_relobj::do_output_section_offset): Likewise.
5474         (Sized_relobj::do_set_section_offset): Likewise.
5475         (Sized_relobj::Local_got_offsets): Likewise.
5476         (Sized_relobj::local_got_offsets_): Likewise.
5477         (Sized_relobj::section_offsets_): Likewise.
5478         (Sized_relobj_file): Rename Sized_relobj to this; adjust all
5479         references.
5480         (Sized_relobj_file::is_output_section_offset_invalid): Move to base
5481         class.
5482         (Sized_relobj_file::sized_relobj): New function
5483         (Sized_relobj_file::local_has_got_offset): Move to base class.
5484         (Sized_relobj_file::local_got_offset): Likewise.
5485         (Sized_relobj_file::set_local_got_offset): Likewise.
5486         (Sized_relobj_file::get_output_section_offset): Likewise.
5487         (Sized_relobj_file::do_for_all_local_got_entries): Likewise.
5488         (Sized_relobj_file::do_output_section_offset): Likewise.
5489         (Sized_relobj_file::do_set_section_offset): Likewise.
5490         (Sized_relobj_file::Local_got_offsets): Likewise.
5491         (Sized_relobj_file::local_got_offsets_): Likewise.
5492         (Sized_relobj_file::section_offsets_): Likewise.
5493         * output.cc (Output_reloc::Output_reloc): Adjust type of relobj
5494         (all constructors).
5495         (set_needs_dynsym_index): Convert relobj to derived class pointer.
5496         (Output_reloc::get_symbol_index): Likewise.
5497         (Output_reloc::local_section_offset): Likewise.
5498         (Output_reloc::get_address): Likewise.
5499         (Output_reloc::symbol_value): Likewise.
5500         (Output_data_got::reserve_slot): Move to class definition.
5501         (Output_data_got::reserve_local): New function.
5502         (Output_data_got::reserve_slot_for_global): Remove.
5503         (Output_data_got::reserve_global): New function.
5504         * output.h (Output_reloc::Output_reloc): Adjust type of relobj
5505         (all constructors, two instantiations).
5506         (Output_reloc::get_relobj): New function (two instantiations).
5507         (Output_reloc::u1_.relobj, Output_reloc::u2_.relobj): Adjust type.
5508         (Output_data_reloc_base::add): Convert relobj to derived class pointer.
5509         (Output_data_reloc::add_global): Adjust type of relobj.
5510         (Output_data_reloc::add_global_relative): Likewise.
5511         (Output_data_reloc::add_symbolless_global_addend): Likewise.
5512         (Output_data_reloc::add_local): Likewise.
5513         (Output_data_reloc::add_local_relative): Likewise.
5514         (Output_data_reloc::add_symbolless_local_addend): Likewise.
5515         (Output_data_reloc::add_local_section): Likewise.
5516         (Output_data_reloc::add_output_section): Likewise.
5517         (Output_data_reloc::add_absolute): Likewise.
5518         (Output_data_reloc::add_target_specific): Likewise.
5519         (Output_data_got::reserve_slot): Move definition here.
5520         (Output_data_got::reserve_local): New function.
5521         (Output_data_got::reserve_global): New function.
5522         * reloc.cc (Sized_relobj_file::do_read_relocs): Replace refs to
5523         section_offsets_ with accessor function.
5524         (Sized_relobj_file::write_sections): Likewise.
5525         (Sized_relobj_file::do_relocate_sections): Likewise.
5526         * target.h (Sized_target::reserve_local_got_entry): New function.
5527         (Sized_target::reserve_global_got_entry): New function.
5528         * x86_64.cc (Target_x86_64::reserve_local_got_entry): New function.
5529         (Target_x86_64::reserve_global_got_entry): New function.
5530         (Target_x86_64::init_got_plt_for_update): Create rela_dyn section.
5531
5532 2011-05-23 Cary Coutant  <ccoutant@google.com>
5533
5534         * gold.cc (queue_middle_tasks): Process existing GOT/PLT entries.
5535         * incremental-dump.cc (dump_incremental_inputs): Mask high-order
5536         bit when checking got_type.
5537         * incremental.cc (Sized_incremental_binary::setup_readers):
5538         Store symbol table and string table locations; initialize bit vector
5539         of file status flags.
5540         (Sized_incremental_binary::do_reserve_layout): Set bit flag for
5541         unchanged files.
5542         (Sized_incremental_binary::do_process_got_plt): New function.
5543         (Sized_incremental_binary::get_symtab_view): Use stored locations.
5544         (Output_section_incremental_inputs::set_final_data_size): Record
5545         file index for each input file.
5546         (Output_section_incremental_inputs::write_got_plt): Store file index
5547         instead of input entry offset for each GOT entry.
5548         * incremental.h
5549         (Incremental_input_entry::Incremental_input_entry): Initialize new
5550         data member.
5551         (Incremental_input_entry::set_offset): Store file index.
5552         (Incremental_input_entry::get_file_index): New function.
5553         (Incremental_input_entry::file_index_): New data member.
5554         (Incremental_binary::process_got_plt): New function.
5555         (Incremental_binary::do_process_got_plt): New function.
5556         (Sized_incremental_binary::Sized_incremental_binary): Initialize new
5557         data members.
5558         (Sized_incremental_binary::~Sized_incremental_binary): New destructor.
5559         (Sized_incremental_binary::set_file_is_unchanged): New function.
5560         (Sized_incremental_binary::file_is_unchanged): New function.
5561         (Sized_incremental_binary::do_process_got_plt): New function.
5562         (Sized_incremental_binary::file_status_): New data member.
5563         (Sized_incremental_binary::main_symtab_loc_): New data member.
5564         (Sized_incremental_binary::main_strtab_loc_): New data member.
5565         * output.cc (Output_data_got::Got_entry::write): Add case
5566         RESERVED_CODE.
5567         (Output_data_got::add_global): Call add_got_entry.
5568         (Output_data_got::add_global_plt): Likewise.
5569         (Output_data_got::add_global_with_rel): Likewise.
5570         (Output_data_got::add_global_with_rela): Likewise.
5571         (Output_data_got::add_global_pair_with_rel): Call add_got_entry_pair.
5572         (Output_data_got::add_global_pair_with_rela): Likewise.
5573         (Output_data_got::add_local): Call add_got_entry.
5574         (Output_data_got::add_local_plt): Likewise.
5575         (Output_data_got::add_local_with_rel): Likewise.
5576         (Output_data_got::add_local_with_rela): Likewise.
5577         (Output_data_got::add_local_pair_with_rel): Call add_got_entry_pair.
5578         (Output_data_got::add_local_pair_with_rela): Likewise.
5579         (Output_data_got::reserve_slot): New function.
5580         (Output_data_got::reserve_slot_for_global): New function.
5581         (Output_data_got::add_got_entry): New function.
5582         (Output_data_got::add_got_entry_pair): New function.
5583         (Output_section::add_output_section_data): Edit FIXME.
5584         * output.h
5585         (Output_section_data_build::Output_section_data_build): New
5586         constructor with size parameter.
5587         (Output_data_space::Output_data_space): Likewise.
5588         (Output_data_got::Output_data_got): Initialize new data member; new
5589         constructor with size parameter.
5590         (Output_data_got::add_constant): Call add_got_entry.
5591         (Output_data_got::reserve_slot): New function.
5592         (Output_data_got::reserve_slot_for_global): New function.
5593         (class Output_data_got::Got_entry): Add RESERVED_CODE.
5594         (Output_data_got::add_got_entry): New function.
5595         (Output_data_got::add_got_entry_pair): New function.
5596         (Output_data_got::free_list_): New data member.
5597         * target.h (Sized_target::init_got_plt_for_update): New function.
5598         (Sized_target::register_global_plt_entry): New function.
5599         * x86_64.cc (Output_data_plt_x86_64::Output_data_plt_x86_64):
5600         Initialize new data member; call init; add constructor with PLT count.
5601         (Output_data_plt_x86_64::init): New function.
5602         (Output_data_plt_x86_64::add_relocation): New function.
5603         (Output_data_plt_x86_64::reserve_slot): New function.
5604         (Output_data_plt_x86_64::free_list_): New data member.
5605         (Target_x86_64::init_got_plt_for_update): New function.
5606         (Target_x86_64::register_global_plt_entry): New function.
5607         (Output_data_plt_x86_64::add_entry): Allocate from free list for
5608         incremental updates.
5609         (Output_data_plt_x86_64::add_relocation): New function.
5610         * testsuite/object_unittest.cc (Object_test): Set default options.
5611
5612 2011-05-16  Ian Lance Taylor  <iant@google.com>
5613
5614         * options.h (class General_options): Make -i a synonym for -r.
5615
5616 2011-05-16  Ian Lance Taylor  <iant@google.com>
5617
5618         * testsuite/tls_test_main.cc: Use semaphores instead of mutexes.
5619
5620 2011-05-10 Cary Coutant  <ccoutant@google.com>
5621
5622         * object.cc (Sized_relobj::do_count_local_symbols): Check for
5623         strip_all (-s).
5624
5625 2011-05-06  Ian Lance Taylor  <iant@google.com>
5626
5627         * layout.cc (Layout::layout): If the output section flags change,
5628         update the ordering.
5629
5630 2011-04-25 Cary Coutant  <ccoutant@google.com>
5631
5632         * incremental-dump.cc (dump_incremental_inputs): Print local
5633         symbol info for each input file.
5634         * incremental.cc
5635         (Output_section_incremental_inputs::set_final_data_size): Add local
5636         symbol info to input file entries in incremental info.
5637         (Output_section_incremental_inputs::write_info_blocks): Likewise.
5638         (Sized_incr_relobj::Sized_incr_relobj): Initialize new data members.
5639         (Sized_incr_relobj::do_add_symbols): Cosmetic change.
5640         (Sized_incr_relobj::do_count_local_symbols): Replace stub with
5641         implementation.
5642         (Sized_incr_relobj::do_finalize_local_symbols): Likewise.
5643         (Sized_incr_relobj::do_relocate): Write the local symbols.
5644         (Sized_incr_dynobj::do_add_symbols): Cosmetic change.
5645         * incremental.h (Incremental_inputs_reader::get_symbol_offset):
5646         Adjust size of input file header.
5647         (Incremental_inputs_reader::get_local_symbol_offset): New function.
5648         (Incremental_inputs_reader::get_local_symbol_count): New function.
5649         (Incremental_inputs_reader::get_input_section): Adjust size of input
5650         file header.
5651         (Incremental_inputs_reader::get_global_symbol_reader): Likewise.
5652         (Sized_incr_relobj::This): New typedef.
5653         (Sized_incr_relobj::sym_size): New const data member.
5654         (Sized_incr_relobj::Local_symbol): New struct.
5655         (Sized_incr_relobj::do_output_local_symbol_count): New function.
5656         (Sized_incr_relobj::do_local_symbol_offset): New function.
5657         (Sized_incr_relobj::local_symbol_count_): New data member.
5658         (Sized_incr_relobj::output_local_dynsym_count_): New data member.
5659         (Sized_incr_relobj::local_symbol_index_): New data member.
5660         (Sized_incr_relobj::local_symbol_offset_): New data member.
5661         (Sized_incr_relobj::local_dynsym_offset_): New data member.
5662         (Sized_incr_relobj::local_symbols_): New data member.
5663         * object.h (Relobj::output_local_symbol_count): New function.
5664         (Relobj::local_symbol_offset): New function.
5665         (Relobj::do_output_local_symbol_count): New function.
5666         (Relobj::do_local_symbol_offset): New function.
5667         (Sized_relobj::do_output_local_symbol_count): New function.
5668         (Sized_relobj::do_local_symbol_offset): New function.
5669
5670 2011-04-22  Vladimir Simonov  <sv@sw.ru>
5671
5672         * descriptors.cc (set_close_on_exec): New function.
5673         (Descriptors::open): Use set_close_on_exec.
5674         * output.cc (S_ISLNK): Define if not defined.
5675
5676 2011-04-22 Cary Coutant  <ccoutant@google.com>
5677
5678         * incremental.cc (Sized_incremental_binary::setup_readers): Allocate
5679         global symbol map.
5680         (Sized_incremental_binary::do_apply_incremental_relocs): New function.
5681         (Sized_incr_relobj::do_add_symbols): Add symbols to global symbol map.
5682         (Sized_incr_relobj::do_relocate): Remap section indices in incremental
5683         relocations.
5684         (Sized_incr_dynobj::do_add_symbols): Add symbols to global symbol map.
5685         (Sized_incr_dynobj::do_for_all_global_symbols): Remove FIXME.
5686         (Sized_incr_dynobj::do_for_all_local_got_entries): Likewise.
5687         * incremental.h
5688         (Incremental_inputs_reader::global_symbol_reader_at_offset): New
5689         function.
5690         (Incremental_binary::apply_incremental_relocs): New function.
5691         (Incremental_binary::do_apply_incremental_relocs): New function.
5692         (Sized_incremental_binary::Sized_incremental_binary): Initialize new
5693         data member.
5694         (Sized_incremental_binary::add_global_symbol): New function.
5695         (Sized_incremental_binary::global_symbol): New function.
5696         (Sized_incremental_binary::do_apply_incremental_relocs): New function.
5697         (Sized_incremental_binary::symbol_map_): New data member.
5698         * layout.cc (Layout_task_runner::run): Apply incremental relocations.
5699         * target.h (Sized_target::apply_relocation): New function.
5700         * target-reloc.h (apply_relocation): New function.
5701         * x86_64.cc (Target_x86_64::apply_relocation): New function.
5702
5703 2011-04-22  Doug Kwan  <dougkwan@google.com>
5704
5705         * arm.cc (Arm_output_section::Arm_output_section): Set SHF_LINK_ORDER
5706         flag of a SHT_ARM_EXIDX section.
5707         * testsuite/Makefile.am (arm_exidx_test): New test rules.
5708         * testsuite/Makefile.in: Regenerate.
5709         * testsuite/arm_exidx_test.s: New file.
5710         * testsuite/arm_exidx_test.sh: Same.
5711
5712 2011-04-20 Cary Coutant  <ccoutant@google.com>
5713
5714         PR gold/12689
5715         * archive.h (Incremental_archive_entry::Archive_member):
5716         Initialize arg_serial_ (second constructor).
5717
5718 2011-04-17  Ian Lance Taylor  <iant@google.com>
5719
5720         * object.cc (Relocate_info::location): Simplify location string.
5721         * errors.cc (Errors::error_at_location): Don't print program
5722         name.
5723         (Errors::warning_at_location): Likewise.
5724         (Errors::undefined_symbol): Likewise.
5725         * testsuite/debug_msg.sh: Update accordingly.
5726
5727 2011-04-14 Cary Coutant  <ccoutant@google.com>
5728
5729         * gold/layout.cc (Layout::symtab_section_offset): New function.
5730         * gold/layout.h (Layout::symtab_section_offset): New function.
5731         * gold/reloc.cc (Sized_relobj::do_relocate): Call it.
5732
5733 2011-04-12  Ian Lance Taylor  <iant@google.com>
5734
5735         * configure.ac: Check for sys/mman.h and mmap.  Check for mremap
5736         with MREMAP_MAYMOVE.
5737         * output.h (class Output_file): Add map_is_allocated_ field.
5738         * output.cc: Only #include <sys/mman.h> if it exists.  If mmap is
5739         not available, provide stubs.  If mremap is not available, #define
5740         it to gold_mremap.
5741         (MREMAP_MAYMOVE): Define if not defined.
5742         (Output_file::Output_file): Initialize map_is_allocated_.
5743         (Output_file::resize): Check map_is_allocated_.
5744         (Output_file::map_anonymous): If mmap fails, use malloc.
5745         (Output_file::unmap): Don't do anything for an anonymous map.
5746         * fileread.cc: Only #include <sys/mman.h> if it exists.  If mmap
5747         is not available, provide stubs.
5748         (File_read::View::~View): Use free rather than delete[].
5749         (File_read::make_view): Use malloc rather than new[].  If mmap
5750         fails, use malloc.
5751         (File_read::find_or_make_view): Use malloc rather than new[].
5752         * gold.h: Remove HAVE_REMAP code.
5753         * mremap.c: #include <errno.h>.  Only #include <sys/mman.h> if it
5754         exists.  Rename mremap to gold_mremap.  If mmap is not available
5755         don't do anything.
5756         * configure, config.in: Rebuild.
5757
5758 2011-04-11  Ian Lance Taylor  <iant@google.com>
5759
5760         * incremental.cc (Sized_incr_relobj::do_add_symbols): Always
5761         initialize local variable v.
5762
5763 2011-04-11  Cary Coutant  <ccoutant@google.com>
5764
5765         * archive.cc (Archive::include_member): Adjust call to
5766         report_object.
5767         (Add_archive_symbols::run): Track argument serial numbers.
5768         (Lib_group::include_member): Likewise.
5769         (Add_lib_group_symbols::run): Adjust call to report_archive_begin.
5770         * archive.h (Incremental_archive_entry::Archive_member):
5771         Initialize arg_serial_.
5772         (Archive_member::arg_serial_): New data member.
5773         * dynobj.cc (Dynobj::Dynobj): Allow input_file_ to be NULL.
5774         (Sized_dynobj::do_add_symbols): Track symbols when doing an
5775         incremental link.
5776         (Sized_dynobj::do_for_all_local_got_entries): New function.
5777         * dynobj.h: (Sized_dynobj::do_for_all_local_got_entries): New
5778         function.
5779         * fileread.cc (get_mtime): New function.
5780         * fileread.h (get_mtime): New function.
5781         * gold.cc (queue_initial_tasks): Check for incremental update.
5782         (process_incremental_input): New function.
5783         (queue_middle_tasks): Don't force valid target for incremental
5784         update.
5785         * incremental-dump.cc (find_input_containing_global): Adjust
5786         size of symbol info entry.
5787         (dump_incremental_inputs): Dump argument serial number and
5788         in_system_directory flag; bias shndx by 1; print symbol names
5789         when dumping per-file symbol lists; use new symbol info readers.
5790         * incremental.cc
5791         (Output_section_incremental_inputs:update_data_size): New function.
5792         (Sized_incremental_binary::setup_readers): Setup input readers
5793         for each input file; build maps for files added from libraries
5794         and scripts.
5795         (Sized_incremental_binary::check_input_args): New function.
5796         (Sized_incremental_binary::do_check_inputs): Build map of argument
5797         serial numbers to input arguments.
5798         (Sized_incremental_binary::do_file_has_changed): Rename
5799         do_file_is_unchanged to this; compare file modification times.
5800         (Sized_incremental_binary::do_init_layout): New function.
5801         (Sized_incremental_binary::do_reserve_layout): New function.
5802         (Sized_incremental_binary::do_get_input_reader): Remove.
5803         (Sized_incremental_binary::get_symtab_view): New function.
5804         (Incremental_checker::can_incrementally_link_output_file): Remove.
5805         (Incremental_inputs::report_command_line): Exclude --debug options.
5806         (Incremental_inputs::report_archive_begin): Add parameter; track
5807         argument serial numbers; don't put input file entry for archive
5808         before archive members.
5809         (Incremental_inputs::report_archive_end): Put input file entry
5810         for archive after archive members.
5811         (Incremental_inputs::report_object): Add parameter; track argument
5812         serial numbers and in_system_directory flag.
5813         (Incremental_inputs::report_script): Add parameter; track argument
5814         serial numbers.
5815         (Output_section_incremental_inputs::set_final_data_size): Adjust
5816         size of symbol info entry; check for forwarding symbols.
5817         (Output_section_incremental_inputs::write_input_files): Write
5818         in_system_directory flag and argument serial number.
5819         (Output_section_incremental_inputs::write_info_blocks): Map section
5820         indices between incremental info and original input file; store
5821         input section index for each symbol.
5822         (class Local_got_offset_visitor): Derive from Got_offset_list::Visitor;
5823         change operator() to visit().
5824         (class Global_got_offset_visitor): Likewise.
5825         (class Global_symbol_visitor_got_plt):
5826         (Output_section_incremental_inputs::write_got_plt): Use new visitor
5827         classes.
5828         (Sized_incr_relobj::Sized_incr_relobj): New constructor.
5829         (Sized_incr_relobj::do_read_symbols): New function.
5830         (Sized_incr_relobj::do_layout): New function.
5831         (Sized_incr_relobj::do_layout_deferred_sections): New function.
5832         (Sized_incr_relobj::do_add_symbols): New function.
5833         (Sized_incr_relobj::do_should_include_member): New function.
5834         (Sized_incr_relobj::do_for_all_global_symbols): New function.
5835         (Sized_incr_relobj::do_for_all_local_got_entries): New function.
5836         (Sized_incr_relobj::do_section_size): New function.
5837         (Sized_incr_relobj::do_section_name): New function.
5838         (Sized_incr_relobj::do_section_contents): New function.
5839         (Sized_incr_relobj::do_section_flags): New function.
5840         (Sized_incr_relobj::do_section_entsize): New function.
5841         (Sized_incr_relobj::do_section_address): New function.
5842         (Sized_incr_relobj::do_section_type): New function.
5843         (Sized_incr_relobj::do_section_link): New function.
5844         (Sized_incr_relobj::do_section_info): New function.
5845         (Sized_incr_relobj::do_section_addralign): New function.
5846         (Sized_incr_relobj::do_initialize_xindex): New function.
5847         (Sized_incr_relobj::do_get_global_symbol_counts): New function.
5848         (Sized_incr_relobj::do_read_relocs): New function.
5849         (Sized_incr_relobj::do_gc_process_relocs): New function.
5850         (Sized_incr_relobj::do_scan_relocs): New function.
5851         (Sized_incr_relobj::do_count_local_symbols): New function.
5852         (Sized_incr_relobj::do_finalize_local_symbols): New function.
5853         (Sized_incr_relobj::do_set_local_dynsym_indexes): New function.
5854         (Sized_incr_relobj::do_set_local_dynsym_offset): New function.
5855         (Sized_incr_relobj::do_relocate): New function.
5856         (Sized_incr_relobj::do_set_section_offset): New function.
5857         (Sized_incr_dynobj::Sized_incr_dynobj): New function.
5858         (Sized_incr_dynobj::do_read_symbols): New function.
5859         (Sized_incr_dynobj::do_layout): New function.
5860         (Sized_incr_dynobj::do_add_symbols): New function.
5861         (Sized_incr_dynobj::do_should_include_member): New function.
5862         (Sized_incr_dynobj::do_for_all_global_symbols): New function.
5863         (Sized_incr_dynobj::do_for_all_local_got_entries): New function.
5864         (Sized_incr_dynobj::do_section_size): New function.
5865         (Sized_incr_dynobj::do_section_name): New function.
5866         (Sized_incr_dynobj::do_section_contents): New function.
5867         (Sized_incr_dynobj::do_section_flags): New function.
5868         (Sized_incr_dynobj::do_section_entsize): New function.
5869         (Sized_incr_dynobj::do_section_address): New function.
5870         (Sized_incr_dynobj::do_section_type): New function.
5871         (Sized_incr_dynobj::do_section_link): New function.
5872         (Sized_incr_dynobj::do_section_info): New function.
5873         (Sized_incr_dynobj::do_section_addralign): New function.
5874         (Sized_incr_dynobj::do_initialize_xindex): New function.
5875         (Sized_incr_dynobj::do_get_global_symbol_counts): New function.
5876         (make_sized_incremental_object): New function.
5877         (Incremental_library::copy_unused_symbols): New function.
5878         (Incremental_library::do_for_all_unused_symbols): New function.
5879         * incremental.h (enum Incremental_input_flags): New type.
5880         (class Incremental_checker): Remove.
5881         (Incremental_input_entry::Incremental_input_entry): Add argument
5882         serial number.
5883         (Incremental_input_entry::arg_serial): New function.
5884         (Incremental_input_entry::set_is_in_system_directory): New function.
5885         (Incremental_input_entry::is_in_system_directory): New function.
5886         (Incremental_input_entry::arg_serial_): New data member.
5887         (Incremental_input_entry::is_in_system_directory_): New data member.
5888         (class Script_info): Move here from script.h.
5889         (Script_info::Script_info): Add filename parameter.
5890         (Script_info::filename): New function.
5891         (Script_info::filename_): New data member.
5892         (Incremental_script_entry::Incremental_script_entry): Add argument
5893         serial number.
5894         (Incremental_object_entry::Incremental_object_entry): Likewise.
5895         (Incremental_object_entry::add_input_section): Build list of input
5896         sections with map to original shndx.
5897         (Incremental_object_entry::get_input_section_index): New function.
5898         (Incremental_object_entry::shndx_): New data member.
5899         (Incremental_object_entry::name_key_): Rename; adjust all refs.
5900         (Incremental_object_entry::sh_size_): Rename; adjust all refs.
5901         (Incremental_archive_entry::Incremental_archive_entry): Add argument
5902         serial number.
5903         (Incremental_inputs::report_archive_begin): Likewise.
5904         (Incremental_inputs::report_object): Likewise.
5905         (Incremental_inputs::report_script): Likewise.
5906         (class Incremental_global_symbol_reader): New class.
5907         (Incremental_input_entry_reader::Incremental_input_entry_reader): Read
5908         and store flags and input file type.
5909         (Incremental_input_entry_reader::arg_serial): New function.
5910         (Incremental_input_entry_reader::type): Extract type from flags.
5911         (Incremental_input_entry_reader::is_in_system_directory): New function.
5912         (Incremental_input_entry_reader::get_input_section_count): Call
5913         accessor function for type.
5914         (Incremental_input_entry_reader::get_symbol_offset): Call accessor
5915         function for type; adjust size of global symbol entry.
5916         (Incremental_input_entry_reader::get_global_symbol_count): Call
5917         accessor function for type.
5918         (Incremental_input_entry_reader::get_object_count): Likewise.
5919         (Incremental_input_entry_reader::get_object_offset): Likewise.
5920         (Incremental_input_entry_reader::get_member_count): Likewise.
5921         (Incremental_input_entry_reader::get_unused_symbol_count): Likewise.
5922         (Incremental_input_entry_reader::get_member_offset): Likewise.
5923         (Incremental_input_entry_reader::get_unused_symbol): Likewise.
5924         (Incremental_input_entry_reader::Global_symbol_info): Remove.
5925         (Incremental_input_entry_reader::get_global_symbol_info): Remove.
5926         (Incremental_input_entry_reader::get_global_symbol_reader): New
5927         function.
5928         (Incremental_input_entry_reader::get_output_symbol_index): New
5929         function.
5930         (Incremental_input_entry_reader::type_): Remove.
5931         (Incremental_input_entry_reader::flags_): New data member.
5932         (Incremental_inputs_reader::input_file_offset): New function.
5933         (Incremental_inputs_reader::input_file_index): New function.
5934         (Incremental_inputs_reader::input_file): Call input_file_offset.
5935         (Incremental_inputs_reader::input_file_at_offset): New function.
5936         (Incremental_relocs_reader::get_r_type): Reformat.
5937         (Incremental_relocs_reader::get_r_shndx): Reformat.
5938         (Incremental_relocs_reader::get_r_offset): Reformat.
5939         (Incremental_relocs_reader::data): New function.
5940         (Incremental_binary::Incremental_binary): Initialize new data members.
5941         (Incremental_binary::check_inputs): Add cmdline parameter.
5942         (Incremental_binary::file_is_unchanged): Remove.
5943         (Input_reader::arg_serial): New function.
5944         (Input_reader::get_unused_symbol_count): New function.
5945         (Input_reader::get_unused_symbol): New function.
5946         (Input_reader::do_arg_serial): New function.
5947         (Input_reader::do_get_unused_symbol_count): New function.
5948         (Input_reader::do_get_unused_symbol): New function.
5949         (Incremental_binary::input_file_count): New function.
5950         (Incremental_binary::get_input_reader): Change signature to use
5951         index instead of filename.
5952         (Incremental_binary::file_has_changed): New function.
5953         (Incremental_binary::get_input_argument): New function.
5954         (Incremental_binary::get_library): New function.
5955         (Incremental_binary::get_script_info): New function.
5956         (Incremental_binary::init_layout): New function.
5957         (Incremental_binary::reserve_layout): New function.
5958         (Incremental_binary::output_file): New function.
5959         (Incremental_binary::do_check_inputs): New function.
5960         (Incremental_binary::do_file_is_unchanged): Remove.
5961         (Incremental_binary::do_file_has_changed): New function.
5962         (Incremental_binary::do_init_layout): New function.
5963         (Incremental_binary::do_reserve_layout): New function.
5964         (Incremental_binary::do_input_file_count): New function.
5965         (Incremental_binary::do_get_input_reader): Change signature.
5966         (Incremental_binary::input_args_map_): New data member.
5967         (Incremental_binary::library_map_): New data member.
5968         (Incremental_binary::script_map_): New data member.
5969         (Sized_incremental_binary::Sized_incremental_binary): Initialize
5970         new data members.
5971         (Sized_incremental_binary::output_section): New function.
5972         (Sized_incremental_binary::inputs_reader): Add const.
5973         (Sized_incremental_binary::symtab_reader): Add const.
5974         (Sized_incremental_binary::relocs_reader): Add const.
5975         (Sized_incremental_binary::got_plt_reader): Add const.
5976         (Sized_incremental_binary::get_symtab_view): New function.
5977         (Sized_incremental_binary::Inputs_reader): New typedef.
5978         (Sized_incremental_binary::Input_entry_reader): New typedef.
5979         (Sized_incremental_binary::do_check_inputs): Add cmdline parameter.
5980         (Sized_incremental_binary::do_file_is_unchanged): Remove.
5981         (Sized_incremental_binary::do_file_has_changed): New function.
5982         (Sized_incremental_binary::do_init_layout): New function.
5983         (Sized_incremental_binary::do_reserve_layout): New function.
5984         (Sized_input_reader::Inputs_reader): Remove.
5985         (Sized_input_reader::Input_entry_reader): Remove.
5986         (Sized_input_reader::do_arg_serial): New function.
5987         (Sized_input_reader::do_get_unused_symbol_count): New function.
5988         (Sized_input_reader::do_get_unused_symbol): New function.
5989         (Sized_incremental_binary::do_input_file_count): New function.
5990         (Sized_incremental_binary::do_get_input_reader): Change signature;
5991         use index instead of filename.
5992         (Sized_incremental_binary::section_map_): New data member.
5993         (Sized_incremental_binary::input_entry_readers_): New data member.
5994         (class Sized_incr_relobj): New class.
5995         (class Sized_incr_dynobj): New class.
5996         (make_sized_incremental_object): New function.
5997         (class Incremental_library): New class.
5998         * layout.cc (Free_list::num_lists): New static data member.
5999         (Free_list::num_nodes): New static data member.
6000         (Free_list::num_removes): New static data member.
6001         (Free_list::num_remove_visits): New static data member.
6002         (Free_list::num_allocates): New static data member.
6003         (Free_list::num_allocate_visits): New static data member.
6004         (Free_list::init): New function.
6005         (Free_list::remove): New function.
6006         (Free_list::allocate): New function.
6007         (Free_list::dump): New function.
6008         (Free_list::print_stats): New function.
6009         (Layout_task_runner::run): Resize output file for incremental updates.
6010         (Layout::Layout): Initialize new data members.
6011         (Layout::set_incremental_base): New function.
6012         (Layout::init_fixed_output_section): New function.
6013         (Layout::layout_eh_frame): Do not build .eh_frame_hdr section for
6014         incremental updates.
6015         (Layout::create_gold_note): Do not create gold note section for
6016         incremental updates.
6017         (Layout::set_segment_offsets): Do not recalculate RELRO alignment
6018         for incremental updates.
6019         (Layout::set_section_offsets): For incremental updates, allocate space
6020         from free list.
6021         (Layout::create_symtab_sections): Layout with offsets relative to
6022         start of section; for incremental updates, allocate space from free
6023         list.
6024         (Layout::create_shdrs): For incremental updates, allocate space from
6025         free list.
6026         (Layout::finish_dynamic_section): For incremental updates, do not
6027         check --as-needed (fixed in subsequent patch).
6028         * layout.h (class Free_list): New class.
6029         (Layout::set_incremental_base): New function.
6030         (Layout::incremental_base): New function.
6031         (Layout::init_fixed_output_section): New function.
6032         (Layout::allocate): New function.
6033         (Layout::incremental_base_): New data member.
6034         (Layout::free_list_): New data member.
6035         * main.cc (main): Print Free_list statistics.
6036         * object.cc (Relobj::finalize_incremental_relocs): Add
6037         clear_counts parameter; clear counts only when clear_counts is set.
6038         (Sized_relobj::Sized_relobj): Initialize new base class.
6039         (Sized_relobj::do_layout): Don't report special sections.
6040         (Sized_relobj::do_for_all_local_got_entries): New function.
6041         (Sized_relobj::write_local_symbols): Add symtab_off parameter; add
6042         symtab_off to all symbol table offsets.
6043         (Sized_relobj::do_get_global_symbol_counts): Add typename keyword.
6044         * object.h (class Got_offset_list): Move to top of file.
6045         (Object::Object): Allow case where input_file == NULL.
6046         (Object::~Object): Likewise.
6047         (Object::input_file): Assert that input_file != NULL.
6048         (Object::lock): Allow case where input_file == NULL.
6049         (Object::unlock): Likewise.
6050         (Object::is_locked): Likewise.
6051         (Object::token): Likewise.
6052         (Object::release): Likewise.
6053         (Object::is_incremental): New function.
6054         (Object::get_mtime): New function.
6055         (Object::for_all_local_got_entries): New function.
6056         (Object::clear_view_cache_marks): Allow case where input_file == NULL.
6057         (Object::set_is_in_system_directory): New function.
6058         (Object::is_in_system_directory): New function.
6059         (Object::do_is_incremental): New function.
6060         (Object::do_get_mtime): New function.
6061         (Object::do_for_all_local_got_entries): New function.
6062         (Object::is_in_system_directory_): New data member.
6063         (Relobj::finalize_incremental_relocs): Add clear_counts parameter.
6064         (class Sized_relobj_base): New class.
6065         (class Sized_relobj): Derive from Sized_relobj_base.
6066         (class Sized_relobj::Symbols): Redeclare from base class.
6067         (class Sized_relobj::local_got_offset_list): Remove.
6068         (class Sized_relobj::Output_sections): Redeclare from base class.
6069         (class Sized_relobj::do_for_all_local_got_entries): New function.
6070         (class Sized_relobj::write_local_symbols): Add offset parameter.
6071         (class Sized_relobj::local_symbol_offset_): Update comment.
6072         (class Sized_relobj::local_dynsym_offset_): Update comment.
6073         * options.cc (Input_arguments::add_file): Remove const.
6074         * options.h (Input_file_argument::Input_file_argument):
6075         Initialize arg_serial_ (all constructors).
6076         (Input_file_argument::set_arg_serial): New function.
6077         (Input_file_argument::arg_serial): New function.
6078         (Input_file_argument::arg_serial_): New data member.
6079         (Input_arguments::Input_arguments): Initialize file_count_.
6080         (Input_arguments::add_file): Remove const.
6081         (Input_arguments::number_of_input_files): New function.
6082         (Input_arguments::file_count_): New data member.
6083         (Command_line::number_of_input_files): Call
6084         Input_arguments::number_of_input_files.
6085         * output.cc (Output_segment_headers::Output_segment_headers):
6086         Set current size.
6087         (Output_section::Input_section::current_data_size): New function.
6088         (Output_section::Output_section): Initialize new data members.
6089         (Output_section::add_input_section): Don't do merge sections for
6090         an incremental link; allocate space from free list for an
6091         incremental update.
6092         (Output_section::add_output_section_data): Allocate space from
6093         free list for an incremental update.
6094         (Output_section::update_data_size): New function.
6095         (Output_section::set_fixed_layout): New function.
6096         (Output_section::reserve): New function.
6097         (Output_segment::set_section_addresses): Remove const.
6098         (Output_segment::set_section_list_addresses): Remove const; allocate
6099         space from free list for an incremental update.
6100         (Output_segment::set_offset): Adjust size of RELRO segment for an
6101         incremental update.
6102         * output.h (Output_data::current_data_size): Move here from
6103         child classes.
6104         (Output_data::pre_finalize_data_size): New function.
6105         (Output_data::update_data_size): New function.
6106         (Output_section_headers::update_data_size): new function.
6107         (Output_section_data_build::current_data_size): Move to Output_data.
6108         (Output_data_strtab::update_data_size): New function.
6109         (Output_section::current_data_size): Move to Output_data.
6110         (Output_section::set_fixed_layout): New function.
6111         (Output_section::has_fixed_layout): New function.
6112         (Output_section::reserve): New function.
6113         (Output_section::update_data_size): New function.
6114         (Output_section::has_fixed_layout_): New data member.
6115         (Output_section::free_list_): New data member.
6116         (Output_segment::set_section_addresses): Remove const.
6117         (Output_segment::set_section_list_addresses): Remove const.
6118         * plugin.cc (Sized_pluginobj::do_for_all_local_got_entries):
6119         New function.
6120         * plugin.h (Sized_pluginobj::do_for_all_local_got_entries):
6121         New function.
6122         * readsyms.cc (Read_symbols::do_read_symbols): Add library
6123         parameter when calling Add_symbols constructor; store argument
6124         serial number for members of a lib group.
6125         (Add_symbols::locks): Allow case where token == NULL.
6126         (Add_symbols::run): Report libraries denoted by --start-lib/--end-lib.
6127         (Read_member::~Read_member): New function.
6128         (Read_member::is_runnable): New function.
6129         (Read_member::locks): New function.
6130         (Read_member::run): New function.
6131         (Check_script::~Check_script): New function.
6132         (Check_script::is_runnable): New function.
6133         (Check_script::locks): New function.
6134         (Check_script::run): New function.
6135         (Check_library::~Check_library): New function.
6136         (Check_library::is_runnable): New function.
6137         (Check_library::locks): New function.
6138         (Check_library::run): New function.
6139         * readsyms.h (Add_symbols::Add_symbols): Add library parameter.
6140         (Add_symbols::library_): New data member.
6141         (class Read_member): New class.
6142         (class Check_script): New class.
6143         (class Check_library): New class.
6144         * reloc.cc (Read_relocs::is_runnable): Allow case where
6145         token == NULL.
6146         (Read_relocs::locks): Likewise.
6147         (Scan_relocs::locks): Likewise.
6148         (Relocate_task::locks): Likewise.
6149         (Sized_relobj::do_scan_relocs): Tell finalize_incremental_relocs
6150         to clear counters.
6151         (Sized_relobj::incremental_relocs_scan): Fix comment.
6152         (Sized_relobj::do_relocate): Pass output file offset to
6153         write_local_symbols.
6154         (Sized_relobj::incremental_relocs_write_reltype): Use reloc_size
6155         from class declaration.
6156         * script.cc (read_input_script): Allocate Script_info; pass
6157         argument serial number to report_script.
6158         * script.h (class Script_info): Move to incremental.h.
6159         * symtab.cc (Symbol_table::add_from_incrobj): New function.
6160         * symtab.h (Symbol_table::add_from_incrobj): New function.
6161         (Symbol_table::set_file_offset): New function.
6162
6163 2011-04-05  Cary Coutant  <ccoutant@google.com>
6164
6165         * incremental-dump.cc (dump_incremental_inputs): Change signature
6166         to take a Sized_incremental_binary; change caller.  Use readers
6167         in Sized_incremental_binary.
6168         * incremental.cc
6169         (Sized_incremental_binary::find_incremental_inputs_sections):
6170         Rename do_find_incremental_inputs_sections to this.
6171         (Sized_incremental_binary::setup_readers): New function.
6172         (Sized_incremental_binary::do_check_inputs): Check
6173         has_incremental_info_ flag; move setup code to setup_readers;
6174         use input readers.
6175         (Sized_incremental_binary::do_file_is_unchanged): New function.
6176         (Sized_incremental_binary::do_get_input_reader): New function.
6177         * incremental.h (class Incremental_binary): Move to end of file.
6178         (Incremental_binary::file_is_unchanged): New function.
6179         (Incremental_binary::do_file_is_unchanged): New function.
6180         (Incremental_binary::Input_reader): New class.
6181         (Incremental_binary::get_input_reader): New function.
6182         (class Sized_incremental_binary): Move to end of file.
6183         (Sized_incremental_binary::Sized_incremental_binary): Setup the
6184         input section reader classes.
6185         (Sized_incremental_binary::has_incremental_info): New function.
6186         (Sized_incremental_binary::inputs_reader): New function.
6187         (Sized_incremental_binary::symtab_reader): New function.
6188         (Sized_incremental_binary::relocs_reader): New function.
6189         (Sized_incremental_binary::got_plt_reader): New function.
6190         (Sized_incremental_binary::do_file_is_unchanged): New function.
6191         (Sized_incremental_binary::Sized_input_reader): New class.
6192         (Sized_incremental_binary::get_input_reader): New function.
6193         (Sized_incremental_binary::find_incremental_inputs_sections):
6194         Rename do_find_incremental_inputs_sections to this.
6195         (Sized_incremental_binary::setup_readers): New function.
6196         (Sized_incremental_binary::has_incremental_info_): New data member.
6197         (Sized_incremental_binary::inputs_reader_): New data member.
6198         (Sized_incremental_binary::symtab_reader_): New data member.
6199         (Sized_incremental_binary::relocs_reader_): New data member.
6200         (Sized_incremental_binary::got_plt_reader_): New data member.
6201         (Sized_incremental_binary::current_input_file_): New data member.
6202
6203 2011-04-05  Paul Pluzhnikov  <ppluzhnikov@google.com>
6204
6205         PR gold/12640
6206         * dwarf_reader.cc (Sized_dwarf_line_info): Fix vector bounds
6207         violation.
6208
6209 2011-03-30  Cary Coutant  <ccoutant@google.com>
6210
6211         * archive.cc (Archive::include_member): Adjust call to report_object.
6212         (Add_archive_symbols::run): Add script_info to call to
6213         report_archive_begin.
6214         (Lib_group::include_member): Adjust call to report_object.
6215         (Add_lib_group_symbols::run): Adjust call to report_object.
6216         * incremental-dump.cc (dump_incremental_inputs): Remove unnecessary
6217         blocks.  Add object count for script input files.
6218         * incremental.cc (Incremental_inputs::report_archive_begin): Add
6219         script_info parameter; change all callers.
6220         (Incremental_inputs::report_object): Add script_info parameter;
6221         change all callers.
6222         (Incremental_inputs::report_script): Store backpointer to
6223         incremental info entry.
6224         (Output_section_incremental_inputs::set_final_data_size): Record
6225         additional information for scripts.
6226         (Output_section_incremental_inputs::write_info_blocks): Likewise.
6227         * incremental.h (Incremental_script_entry::add_object): New function.
6228         (Incremental_script_entry::get_object_count): New function.
6229         (Incremental_script_entry::get_object): New function.
6230         (Incremental_script_entry::objects_): New data member; adjust
6231         constructor.
6232         (Incremental_inputs::report_archive_begin): Add script_info parameter.
6233         (Incremental_inputs::report_object): Add script_info parameter.
6234         (Incremental_inputs_reader::get_object_count): New function.
6235         (Incremental_inputs_reader::get_object_offset): New function.
6236         * options.cc (Input_arguments::add_file): Return reference to
6237         new input argument.
6238         * options.h (Input_argument::set_script_info): New function.
6239         (Input_argument::script_info): New function.
6240         (Input_argument::script_info_): New data member; adjust all
6241         constructors.
6242         (Input_file_group::add_file): Return reference to new input argument.
6243         (Input_file_lib::add_file): Likewise.
6244         (Input_arguments::add_file): Likewise.
6245         * readsyms.cc (Add_symbols::run): Adjust call to report_object.
6246         * script.cc (Parser_closure::Parser_closure): Add script_info
6247         parameter; adjust all callers.
6248         (Parser_closure::script_info): New function.
6249         (Parser_closure::script_info_): New data member.
6250         (read_input_script): Report scripts earlier to incremental info.
6251         (script_add_file): Set script_info in Input_argument.
6252         (script_add_library): Likewise.
6253         * script.h (Script_options::Script_info): Rewrite class.
6254
6255 2011-03-29  Cary Coutant  <ccoutant@google.com>
6256
6257         * archive.cc (Library_base::should_include_member): Move
6258         method here from class Archive.
6259         (Archive::Archive): Initialize base class.
6260         (Archive::should_include_member): Move to base class.
6261         (Archive::do_for_all_unused_symbols): New function.
6262         (Add_archive_symbols::run): Remove redundant access to
6263         incremental_inputs.
6264         (Lib_group::Lib_group): Initialize base class.
6265         (Lib_group::do_filename): New function.
6266         (Lib_group::include_member): Pass pointer to Lib_group to
6267         report_object.
6268         (Lib_group::do_for_all_unused_symbols): New function.
6269         (Add_lib_group_symbols::run): Report archive information for
6270         incremental links.
6271         * archive.h (class Library_base): New base class.
6272         (class Archive): Derive from Library_base.
6273         (Archive::filename): Move to base class.
6274         (Archive::set_incremental_info): Likewise.
6275         (Archive::incremental_info): Likewise.
6276         (Archive::Should_include): Likewise.
6277         (Archive::should_include_member): Likewise.
6278         (Archive::Armap_entry): Remove.
6279         (Archive::Unused_symbol_iterator): Remove.
6280         (Archive::unused_symbols_begin): Remove.
6281         (Archive::unused_symbols_end): Remove.
6282         (Archive::do_filename): New function.
6283         (Archive::do_get_mtime): New function.
6284         (Archive::do_for_all_unused_symbols): New function.
6285         (Archive::task_): Move to base class.
6286         (Archive::incremental_info_): Likewise.
6287         (class Lib_group): Derive from Library_base.
6288         (Lib_group::do_filename): New function.
6289         (Lib_group::do_get_mtime): New function.
6290         (Lib_group::do_for_all_unused_symbols): New function.
6291         (Lib_group::task_): Move to base class.
6292         * dynobj.cc (Sized_dynobj::do_for_all_global_symbols): New
6293         function.
6294         * dynobj.h (Sized_dynobj::do_for_all_global_symbols): New
6295         function.
6296         * incremental.cc (Incremental_inputs::report_archive_begin):
6297         Use Library_base; call library's get_mtime; add incremental inputs
6298         entry before members.
6299         (class Unused_symbol_visitor): New class.
6300         (Incremental_inputs::report_archive_end): Use Library_base; use
6301         visitor class to record unused symbols; don't add incremental inputs
6302         entry after members.
6303         (Incremental_inputs::report_object): Use Library_base.
6304         * incremental.h
6305         (Incremental_archive_entry::Incremental_archive_entry): Remove
6306         unused Archive parameter.
6307         (Incremental_inputs::report_archive_begin): Use Library_base.
6308         (Incremental_inputs::report_archive_end): Likewise.
6309         (Incremental_inputs::report_object): Likewise.
6310         * object.cc (Sized_relobj::do_for_all_global_symbols): New
6311         function.
6312         * object.h (Object::for_all_global_symbols): New function.
6313         (Object::do_for_all_global_symbols): New function.
6314         (Sized_relobj::do_for_all_global_symbols): New function.
6315         * plugin.cc (Sized_pluginobj::do_for_all_global_symbols):  New
6316         function.
6317         * plugin.h (Sized_pluginobj::do_for_all_global_symbols):  New
6318         function.
6319
6320 2011-03-27  Ian Lance Taylor  <iant@google.com>
6321
6322         * archive.cc (Archive::interpret_header): Return -1 if something
6323         goes wrong.  Change callers accordingly.
6324
6325 2011-03-25  Cary Coutant  <ccoutant@google.com>
6326
6327         * testsuite/Makefile.am (final_layout.stdout): Use -n option with nm.
6328         * testsuite/Makefile.in: Regenerate.
6329
6330 2011-03-23  Rafael Ávila de Espíndola <respindola@mozilla.com>
6331
6332         * plugin.cc (get_view): New.
6333         (Plugin::load): Pass get_view to the plugin.
6334         (Plugin_manager::get_view): New.
6335
6336 2011-03-21  Ian Lance Taylor  <iant@google.com>
6337
6338         * testsuite/final_layout.sh: Rewrite to not use dc.
6339         * testsuite/relro_test.sh: Fail if dc is not present.
6340
6341 2011-03-21  Sriraman Tallam  <tmsriram@google.com>
6342
6343         * testsuite/icf_safe_so_test.sh: Add #!/bin/sh to start.
6344         Change == to -eq.
6345         * testsuite/icf_string_merge_test.sh: Add #!/bin/sh to start.
6346         * testsuite/icf_safe_test.sh: Add #!/bin/sh to start.
6347         Change == to -eq.
6348         * testsuite/icf_sht_rel_addend_test.sh: Add #!/bin/sh to start.
6349         * testsuite/icf_preemptible_functions_test.sh: Add #!/bin/sh to start.
6350
6351 2011-03-14  Ian Lance Taylor  <iant@google.com>
6352
6353         * script-sections.cc (Sort_output_sections::script_compare):
6354         Rename from is_before, change return type.
6355         (Sort_output_sections::operator()): Adjust accordingly.
6356
6357 2011-03-11  Jeffrey Yasskin  <jyasskin@google.com>
6358
6359         PR gold/12572
6360         * testsuite/odr_violation2.cc: Add comment to make all error line
6361         numbers double digits.
6362         * testsuite/debug_msg.sh: Adjust expected errors.
6363
6364 2011-03-09  Jeffrey Yasskin  <jyasskin@google.com>
6365
6366         * dwarf_reader.cc (Sized_dwarf_line_info): Include all lines,
6367         but mark earlier ones as non-canonical
6368         (offset_to_iterator): Update search target and example
6369         (do_addr2line): Return extra lines in a vector*
6370         (format_file_lineno): Extract from do_addr2line
6371         (one_addr2line): Add vector* out-param
6372         * dwarf_reader.h (Offset_to_lineno_entry): New field recording
6373         when a lineno entry appeared last for its instruction
6374         (Dwarf_line_info): Add vector* out-param
6375         * object.cc (Relocate_info): Pass NULL for the vector* out-param
6376         * symtab.cc (Odr_violation_compare): Include the lineno in the
6377         comparison again.
6378         (linenos_from_loc): New. Combine the canonical line for an
6379         address with its other lines.
6380         (True_if_intersect): New. Helper functor to make
6381         std::set_intersection a query.
6382         (detect_odr_violations): Compare sets of lines instead of just
6383         one line for each function. This became less deterministic, but
6384         has fewer false positives.
6385         * symtab.h: Declarations.
6386         * testsuite/Makefile.am (odr_violation2.o): Compile with -O2 to
6387         mix an optimized and non-optimized object in the same binary
6388         (odr_violation2.so): Same.
6389         * testsuite/Makefile.in: Regenerate from Makefile.am.
6390         * testsuite/debug_msg.cc (main): Make OdrDerived classes.
6391         * testsuite/debug_msg.sh: Update line numbers and add
6392         assertions.
6393         * testsuite/odr_violation1.cc: Use OdrDerived, in a
6394         non-optimized context.
6395         * testsuite/odr_violation2.cc: Make sure Ordering::operator()
6396         isn't inlined, and use OdrDerived in an optimized context.
6397         * testsuite/odr_header1.h: Defines OdrDerived, where
6398         optimization will change the
6399         first-instruction-in-the-destructor's file and line number.
6400         * testsuite/odr_header2.h: Defines OdrBase.
6401
6402 2011-03-09  Ian Lance Taylor  <iant@google.com>
6403
6404         * fileread.cc (File_read::clear_views): Don't delete the whole
6405         file view.
6406
6407 2011-03-08  Ian Lance Taylor  <iant@google.com>
6408
6409         PR gold/12525
6410         * fileread.cc: #include <climits>.
6411         (GOLD_IOV_MAX): Define.
6412         (File_read::read_multiple): Limit number of entries by iov_max.
6413         * fileread.h (class File_read): Always set max_readv_entries to
6414         128.
6415
6416 2011-03-07  Ian Lance Taylor  <iant@google.com>
6417
6418         PR gold/12525
6419         * options.h (class General_options): Add -dy and -dn.
6420
6421 2011-03-02  Cary Coutant  <ccoutant@google.com>
6422
6423         * testsuite/script_test_9.t: Add TLS segment.
6424
6425 2011-03-02  Simon Baldwin  <simonb@google.com>
6426
6427         * configure.ac: Add check for gnu_indirect_function support in
6428         the toolchain building binutils.
6429         * configure: Rebuild.
6430
6431 2011-02-18  Rafael Ávila de Espíndola <respindola@mozilla.com>
6432
6433         * symtab.cc (Symbol::should_add_dynsym_entry) Return false for
6434         plugin only symbols.
6435         (Symbol_table::sized_finalize_symbol) Mark symbol only present
6436         in plugin files as not needed in the symbol table.
6437
6438 2011-02-11  Sriraman Tallam  <tmsriram@google.com>
6439
6440         * output.cc (Output_section::add_input_section): Delay fill
6441         generation for section ordering.
6442
6443 2011-02-09  Ian Lance Taylor  <iant@google.com>
6444
6445         PR gold/12316
6446         * object.h (class Sized_relobj): Remove clear_local_symbols.
6447         * reloc.cc (Sized_relobj::do_relocate): Don't call
6448         clear_local_symbols.
6449
6450 2011-02-08  Rafael Ávila de Espíndola <respindola@mozilla.com>
6451
6452         * plugin.cc (is_visible_from_outside): Return true for symbols
6453         in the -u option.
6454
6455 2011-02-04  Jeffrey Yasskin  <jyasskin@google.com>
6456
6457         * symtab.cc (Odr_violation_compare::operator()): Sort by just the
6458         filename.
6459
6460 2011-02-02  Sriraman Tallam  <tmsriram@google.com>
6461
6462         * icf.h (is_section_foldable_candidate): Change type of parameter
6463         to std::string.
6464         * icf.cc (Icf::find_identical_sections): Change type of local variable
6465         section_name to be std::string.
6466         (is_function_ctor_or_dtor): Change type of parameter to std::string.
6467
6468 2011-01-25  Ian Lance Taylor  <iant@google.com>
6469
6470         * script.cc (script_add_extern): Rewrite to use
6471         add_symbol_reference.
6472
6473 2011-01-25  Doug Kwan  <dougkwan@google.com>
6474
6475         * icf.cc (get_section_contents): Always lock section's object.
6476
6477 2011-01-24  Ian Lance Taylor  <iant@google.com>
6478
6479         * options.h (class General_options): Accept
6480         --no-detect-odr-violations.
6481
6482 2011-01-24  Ian Lance Taylor  <iant@google.com>
6483
6484         * version.cc (version_string): Bump to 1.11.
6485
6486 2011-01-24  Ian Lance Taylor  <iant@google.com>
6487
6488         * plugin.cc (class Plugin_rescan): Define new class.
6489         (Plugin_manager::claim_file): Set any_claimed_.
6490         (Plugin_manager::save_archive): New function.
6491         (Plugin_manager::save_input_group): New function.
6492         (Plugin_manager::all_symbols_read): Create Plugin_rescan task if
6493         necessary.
6494         (Plugin_manager::new_undefined_symbol): New function.
6495         (Plugin_manager::rescan): New function.
6496         (Plugin_manager::rescannable_defines): New function.
6497         (Plugin_manager::add_input_file): Set any_added_.
6498         * plugin.h (class Plugin_manager): define new fields rescannable_,
6499         undefined_symbols_, any_claimed_, and any_added_.  Declare
6500         Plugin_rescan as friend.  Declare new functions.
6501         (Plugin_manager::Rescannable): Define type.
6502         (Plugin_manager::Rescannable_list): Define type.
6503         (Plugin_manager::Undefined_symbol_list): Define type.
6504         (Plugin_manager::Plugin_manager): Initialize new fields.
6505         * archive.cc (Archive::defines_symbol): New function.
6506         (Add_archive_symbols::run): Pass archive to plugins if any.
6507         * archive.h (class Archive): Declare defines_symbol.
6508         * readsyms.cc (Input_group::~Input_group): New function.
6509         (Finish_group::run): Pass input_group to plugins if any.
6510         * readsyms.h (class Input_group): Declare destructor.
6511         * symtab.cc (add_from_object): Pass undefined symbol to plugins if
6512         any.
6513
6514 2011-01-10  Ian Lance Taylor  <iant@google.com>
6515
6516         * layout.cc (Layout::layout_eh_frame): Mark a writable .eh_frame
6517         section as relro.
6518         (Layout::set_segment_offsets): Reset increase_relro before calling
6519         set_section_addresses a second time.
6520
6521 2011-01-04  Cary Coutant  <ccoutant@google.com>
6522
6523         * script-sections.cc (Sort_output_sections::operator()): Sort TLS
6524         sections before NOBITS sections.
6525
6526 2011-01-01  H.J. Lu  <hongjiu.lu@intel.com>
6527
6528         * version.cc (print_version): Update copyright to 2011.
6529
6530 2010-12-23  Cary Coutant  <ccoutant@google.com>
6531
6532         * output.h (Output_data_reloc::add_output_section): Pass OD instead
6533         of OS to this->add.  Add OD parameter to second form of the function.
6534
6535 2010-12-20  Ian Lance Taylor  <iant@google.com>
6536
6537         * dwarf_reader.cc (Sized_dwarf_line_info::read_lines): Only keep
6538         second of two consecutive entries with same offset.
6539
6540 2010-12-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6541
6542         * testsuite/Makefile.am (ifuncmain2static_LDADD)
6543         (ifuncmain2_LDADD, ifuncmain4static_LDADD, ifuncmain4_LDADD)
6544         (ifuncmain7static_LDADD, ifuncmain7_LDADD): New empty variables,
6545         to avoid unneeded links against $(LDADD).
6546         * testsuite/Makefile.in: Regenerate.
6547
6548 2010-12-15  Ian Lance Taylor  <iant@google.com>
6549
6550         PR gold/12324
6551         * x86_64.cc (Target_x86_64::Scan::check_non_pic): Give an error
6552         for R_X86_64_32 and R_X86_64_PC32.
6553         * testsuite/Makefile.am (ver_matching_def.so): Depend on and use
6554         ver_matching_def_pic.o.
6555         (ver_matching_def_pic.o): New target.
6556
6557 2010-12-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6558
6559         * fileread.cc (file_counts_lock, file_counts_initialize_lock)
6560         (total_mapped_bytes, current_mapped_bytes, maximum_mapped_bytes):
6561         Move definition before File_read::View member definitions.
6562         (File_read::View::~View): Initialize and hold lock before
6563         updating current_mapped_bytes.
6564
6565 2010-12-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6566
6567         * dwarf_reader.cc: Remove outdated comment.
6568         * gold-threads.cc: Fix typo in error message.
6569         * archive.cc: Fix typos in comments.
6570         * archive.h: Likewise.
6571         * arm-reloc-property.cc: Likewise.
6572         * arm-reloc-property.h: Likewise.
6573         * arm-reloc.def: Likewise.
6574         * arm.cc: Likewise.
6575         * attributes.h: Likewise.
6576         * cref.cc: Likewise.
6577         * ehframe.cc: Likewise.
6578         * fileread.h: Likewise.
6579         * gold.h: Likewise.
6580         * i386.cc: Likewise.
6581         * icf.cc: Likewise.
6582         * incremental.h: Likewise.
6583         * int_encoding.cc: Likewise.
6584         * layout.h: Likewise.
6585         * main.cc: Likewise.
6586         * merge.h: Likewise.
6587         * object.cc: Likewise.
6588         * object.h: Likewise.
6589         * options.cc: Likewise.
6590         * readsyms.cc: Likewise.
6591         * reduced_debug_output.cc: Likewise.
6592         * reloc.cc: Likewise.
6593         * script-sections.cc: Likewise.
6594         * sparc.cc: Likewise.
6595         * symtab.h: Likewise.
6596         * target-reloc.h: Likewise.
6597         * target.cc: Likewise.
6598         * target.h: Likewise.
6599         * timer.cc: Likewise.
6600         * timer.h: Likewise.
6601         * x86_64.cc: Likewise.
6602
6603 2010-12-09  Cary Coutant  <ccoutant@google.com>
6604
6605         * layout.cc (Layout::layout_gnu_stack): Add warnings for executable
6606         stack.
6607         * layout.h (Layout::layout_gnu_stack): Add pointer to Object
6608         parameter; change all callers.
6609         * object.cc (Sized_relobj::do_layout): Adjust call to layout_gnu_stack.
6610         * options.h (warn_execstack): New option.
6611
6612 2010-12-07  Doug Kwan  <dougkwan@google.com>
6613
6614         * arm.cc (Target_arm::Scan::get_reference_flags): Treat R_ARM_PREL31
6615         like function call relocations.
6616
6617 2010-12-07  Ian Lance Taylor  <iant@google.com>
6618
6619         * archive.cc (Archive::get_elf_object_for_member): Permit
6620         punconfigured to be NULL.
6621         (Archive::read_symbols): Pass NULL to get_elf_object_for_member.
6622         (Archive::include_member): Pass NULL to get_elf_object_for_member
6623         if we searched for the archive and this is the first included
6624         object.
6625
6626 2010-12-01  Ian Lance Taylor  <iant@google.com>
6627
6628         * dwarf_reader.h (class Sized_dwarf_line_info): Add
6629         track_relocs_type_ field.
6630         * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
6631         Set track_relocs_type_.
6632         (Sized_dwarf_line_info::process_one_opcode): Ignore the section
6633         contents when using RELA relocs.
6634         (Sized_dwarf_line_info::read_relocs): Add the reloc addend to
6635         reloc_map_.
6636         * reloc.cc (Track_relocs::next_addend): New function.
6637         * reloc.h (class Track_relocs): Declare next_addend.
6638
6639 2010-12-01  Ian Lance Taylor  <iant@google.com>
6640
6641         * testsuite/icf_virtual_function_folding_test.cc (class Bar): Add
6642         virtual destructor.
6643
6644 2010-12-01  Ian Lance Taylor  <iant@google.com>
6645
6646         * README: Update compilers known to work and fail.
6647
6648 2010-11-23  Matthias Klose  <doko@ubuntu.com>
6649
6650         * configure.in: For --enable-gold, handle value `default' instead of
6651         `both*'.  Always install ld as ld.bfd, install as ld if gold is
6652         not the default.
6653         * configure: Regenerate.
6654
6655 2010-11-18  Doug Kwan  <dougkwan@google.com>
6656
6657         * expression.cc (BINARY_EXPRESSION): Initialize left_alignment
6658         and right_alignment to be zero.  Store result alignment only if it is
6659         greater than existing alignment.
6660
6661 2010-11-16  Cary Coutant  <ccoutant@google.com>
6662
6663         PR gold/12220
6664         * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
6665         Check for ".zdebug_line".
6666
6667 2010-11-16  Doug Kwan  <dougkwan@google.com>
6668             Cary Coutant  <ccoutant@google.com>
6669
6670         * output.h (Output_segment::set_section_addresses): Pass increase_relro
6671         by reference; adjust all callers.
6672         * output.cc (Output_segment::set_section_addresses): Adjust references
6673         to increase_relro. Add padding to *increase_relro when ORDER_RELRO_LAST
6674         list is empty.
6675         (Output_segment::set_offset): Assert if PT_GNU_RELRO segment does not
6676         end at page boundary.
6677
6678 2010-11-16  Cary Coutant  <ccoutant@google.com>
6679
6680         PR gold/12220
6681         * layout.cc (Layout::choose_output_section): Transform names of
6682         compressed sections even when using a script with a SECTIONS clause.
6683         (Layout::output_section_name): Remove code to transform
6684         compressed debug section names.
6685         * output.cc (Output_section::add_input_section): Use uncompressed
6686         section size when tracking input sections.
6687
6688 2010-11-11  Richard Sandiford  <richard.sandiford@linaro.org>
6689
6690         * symtab.h (Symbol::NON_PIC_REF): Remove.
6691         (Symbol::RELATIVE_REF, Symbol::TLS_REF): New Reference_flags.
6692         (Symbol::FUNCTION_CALL): Renumber.  Reword comment.
6693         (Symbol::needs_dynamic_reloc): Don't check NON_PIC_REF.
6694         (Symbol::use_plt_offset): Take a flags argument and pass it
6695         directly to needs_dynamic_reloc.  Restrict check for undefined
6696         weak symbols to function calls.
6697         * arm.cc (Target_arm::Scan::get_reference_flags): New function.
6698         (Target_arm::Scan::global): Use it.
6699         (Target_arm::Scan::scan_reloc_for_stub): Likewise.
6700         (Target_arm::Relocate::relocate): Likewise.
6701         (Target_arm::Relocate::should_apply_static_reloc): Replace flags
6702         parameter with an r_type parameter.  Use get_reference_flags
6703         to get the flags.
6704         (Target_arm::Relocate::relocate): Update accordingly.
6705         * i386.cc (Target_i386::Scan::get_reference_flags): New function.
6706         (Target_i386::Scan::reloc_needs_plt_for_ifunc): Use it.
6707         (Target_i386::Scan::global): Likewise.
6708         (Target_i386::Relocate::relocate): Likewise.
6709         (Target_i386::Relocate::should_apply_static_reloc): Replace flags
6710         parameter with an r_type parameter.  Use get_reference_flags
6711         to get the flags.
6712         (Target_i386::Relocate::relocate): Update accordingly.
6713         * powerpc.cc (Target_powerpc::Scan::get_reference_flags): New function.
6714         (Target_powerpc::Scan::global): Use it.
6715         (Target_powerpc::Scan::scan_reloc_for_stub): Likewise.
6716         (Target_powerpc::Relocate::relocate): Likewise.
6717         * sparc.cc (Target_sparc::Scan::get_reference_flags): New function.
6718         (Target_sparc::Scan::global): Use it.
6719         (Target_sparc::Scan::scan_reloc_for_stub): Likewise.
6720         (Target_sparc::Relocate::relocate): Likewise.
6721         * x86_64.cc (Target_x86_64::Scan::get_reference_flags): New function.
6722         (Target_x86_64::Scan::reloc_needs_plt_for_ifunc): Use it.
6723         (Target_x86_64::Scan::global): Likewise.
6724         (Target_x86_64::Relocate::relocate): Likewise.
6725
6726 2010-11-08  Doug Kwan  <dougkwan@google.com>
6727             Cary Coutant  <ccoutant@google.com>
6728
6729         * arm.cc (Arm_exidx_merge_section::build_contents): New method.
6730         (Arm_exidx_merge_section::section_contents_): New data member.
6731         (Arm_input_section::Arm_input_section): Initialize original_contents_.
6732         (Arm_input_section::~Arm_input_section): De-allocate memory.
6733         (Arm_input_section::original_contents_): New data member.
6734         (Arm_exidx_fixup::process_exidx_section): Pass EXIDX section contents
6735         in parameters instead of calling Object::section_contents without
6736         locking.
6737         (Arm_output_section::group_section): New parameter TASK.  Pass it
6738         to callees that need locking objects.
6739         (Arm_output_section::fix_exidx_coverage): New parameter TASK.  Use it
6740         to lock EXIDX input sections.  Fix a formatting issue.  Call
6741         Arm_exidx_merged_section::build_contents to create merged section
6742         contents.
6743         (Arm_output_section::create_stub_group): New parameter TASK.  Use it
6744         to lock object of stub table owner.
6745         (Arm_exidx_input_section::Arm_exidx_input_section): Add new parameter
6746         TEXT_SIZE to initialize data member TEXT_SIZE_.
6747         (Arm_exidx_input_section::addralign): Fix typo in comment.
6748         (Arm_exidx_input_section::text_size): New method.
6749         (Target_arm::do_relax): New parameter TASK.  Pass it to callees
6750         that require locking objects.  Lock objects before scanning for stubs
6751         and updating local symbols.
6752         (Arm_input_section<big_endian>::init): Copy contents of original
6753         input section.
6754         (Arm_input_section<big_endian>::do_write): Use saved contents of
6755         original input section instead of calling Object::section_contents
6756         without locking.
6757         (Arm_exidx_cantunwind::do_fixed_endian_write): Find out text section
6758         size without calling Object::section_size().
6759         (Arm_exidx_merged_section::Arm_exidx_merged_section): Add sanity check
6760         for size.  Allocate a buffer for merged EXIDX entries.
6761         (Arm_exidx_merged_section::build_contents): New method.
6762         (Arm_exidx_merged_section::do_write): Move merge section contents
6763         building code to Arm_exidx_merged_section::build_contetns.  Write
6764         out contetns in buffer instead of building it on the fly.
6765         (Arm_relobj::make_exidx_input_section): Also pass text section size
6766         to Arm_exidx_input_section constructor.
6767         (Arm_relobj::do_read_symbols): Fix memory leak.  Fix a formatting issue.
6768         (Arm_dynobj::do_read_symbols): Fix memory leak.
6769         * layout.cc (Layout::finalize): Pass TASK to Target::relax().
6770         * target.h: (class Task): Add forward declaration.
6771         (Target::relax): Add new parameter TASK and pass it to
6772         Target::do_relax().
6773         (Target::do_relax):: New parameter TASK.  Fix a formatting issue.
6774
6775 2010-11-05  Cary Coutant  <ccoutant@google.com>
6776
6777         PR gold/10708
6778         * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Hold a lock on the
6779         object when reading from the file.
6780         * gold.cc (queue_middle_tasks): Hold a lock on the object when doing
6781         second layout pass.
6782         * icf.cc (preprocess_for_unique_sections): Hold a lock on the object
6783         when reading section contents.
6784         (get_section_contents): Likewise.
6785         (icf::find_identical_sections): Likewise.
6786         * mapfile.cc (Mapfile::print_discarded_sections): Hold a lock on the
6787         object when reading from the file.
6788         * plugin.cc (Plugin_manager::layout_deferred_objects): Hold a lock on
6789         the object when doing deferred section layout.
6790
6791 2010-11-03  Nick Clifton  <nickc@redhat.com>
6792
6793         PR gold/12001
6794         * script.h (class Symbol_assignment: name): New member.  Returns
6795         the name of the symbol.
6796         * scrfipt.cc (Script_options::is_pending_assignment): New member.
6797         Returns true if the given symbol name is on the list of
6798         assignments wating to be processed.
6799         * archive.cc (should_incldue_member): If the symbol is undefined,
6800         check to see if it is on the list of symbols pending assignment.
6801
6802 2010-11-03  Ryan Mansfield  <rmansfield@qnx.com>
6803
6804         * script-sections.cc (Script_sections::find_memory_region): Check
6805         for a NULL output section pointer.
6806
6807 2010-10-29  Doug Kwan  <dougkwan@google.com>
6808
6809         * arm.cc (Arm_outout_section::fix_exidx_coverage): Adjust call to
6810         Output_section::add_relaxed_input_section.
6811         * output.cc (Output_section::add_relaxed_input_section): Add new
6812         arguments LAYOUT and NAME.  Set section order index.
6813         (Output_section::convert_input_sections_in_list_to_relaxed_sections):
6814         Copy section order index.
6815         * output.h (Output_section::add_relaxed_input_section): Add new
6816         arguments LAYOUT and NAME.
6817
6818 2010-10-29  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
6819
6820         * testsuite/Makefile.am: Move gcctestdir/ld rule to
6821         NATIVE_OR_CROSS_LINKER.
6822         * testsuite/Makefile.in: Regenerate.
6823
6824 2010-10-20  Doug Kwan  <dougkwan@google.com>
6825
6826         * arm.cc (Arm_relobj::do_read_symbols): Warn about ARM EXIDX sections
6827         without SHF_LINK_ORDER flags.
6828         * layout.cc (Layout::choose_output_section): Do not filter
6829         SHF_LINK_ORDER flag in a relocatable link.
6830
6831 2010-10-17  Cary Coutant  <ccoutant@google.com>
6832
6833         * output.h (Output_segment::set_section_addresses): Change function
6834         signature.  Update all callers.
6835         * output.cc (Output_segment::is_first_section_relro): Ignore TLS
6836         sections.
6837         (Output_segment::set_section_addresses): Align after last TLS
6838         section.  Add padding before last relro section instead of after.
6839
6840 2010-10-17  Doug Kwan  <dougkwan@google.com>
6841
6842         * gold/arm.cc (Target_arm::got_section): Use correct order and set
6843         GOT output section to be writable.
6844
6845 2010-10-14  Cary Coutant  <ccoutant@google.com>
6846
6847         * debug.h (DEBUG_INCREMENTAL): New flag.
6848         (debug_string_to_enum): Add DEBUG_INCREMENTAL).
6849         * gold.cc (queue_initial_tasks): Check parameters for incremental link
6850         mode.
6851         * incremental.cc (report_command_line): Ignore all forms of
6852         --incremental.
6853         * layout.cc (Layout::Layout): Check parameters for incremental link
6854         mode.
6855         * options.cc (General_options::parse_incremental): New function.
6856         (General_options::parse_no_incremental): New function.
6857         (General_options::parse_incremental_full): New function.
6858         (General_options::parse_incremental_update): New function.
6859         (General_options::incremental_mode_): New data member.
6860         (General_options::finalize): Check incremental_mode_.
6861         * options.h (General_options): Update help text for --incremental.
6862         Add --no-incremental, --incremental-full, --incremental-update.
6863         (General_options::Incremental_mode): New enum type.
6864         (General_options::incremental_mode): New function.
6865         (General_options::incremental_mode_): New data member.
6866         * parameters.cc (Parameters::incremental_mode_): New data member.
6867         (Parameters::set_options): Set incremental_mode_.
6868         (Parameters::set_incremental_full): New function.
6869         (Parameters::incremental): New function.
6870         (Parameters::incremental_update): New function.
6871         (set_parameters_incremental_full): New function.
6872         * parameters.h (Parameters::set_incremental_full): New function.
6873         (Parameters::incremental): New function.
6874         (Parameters::incremental_update): New function.
6875         (Parameters::incremental_mode_): New data member.
6876         (set_parameters_incremental_full): New function.
6877         * plugin.cc (Plugin_manager::add_input_file): Check parameters for
6878         incremental link mode.
6879         * reloc.cc (Sized_relobj::do_read_relocs): Likewise.
6880         (Sized_relobj::do_relocate_sections): Likewise.
6881         * testsuite/Makefile.am (incremental_test): Use --incremental-full
6882         option.
6883         * testsuite/Makefile.in: Regenerate.
6884         * testsuite/incremental_test.sh: Filter all forms of --incremental.
6885
6886 2010-10-12  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
6887
6888         * script-sections.h (class Script_sections): Make
6889         Sections_elements typedef public.
6890         * script-sections.cc (class Sort_output_sections): Add elements_
6891         field.  Add constructor which sets it; change all callers.
6892         (Sort_output_sections::is_before): New function.
6893         (Sort_output_sections::operator()): Call is_before.
6894         * configure.ac (NATIVE_OR_CROSS_LINKER): New automake
6895         conditional.
6896         * testsuite/script_test_10.sh: New test. Test script section
6897         order.
6898         * testsuite/script_test_10.t: Likewise.
6899         * testsuite/script_test_10.s: Likewise.
6900         * testsuite/Makefile.am: Wrap the cross linker tests and the
6901         common tests into NATIVE_OR_CROSS_LINKER.
6902         (check_SCRIPTS): Add script_test_10.sh.
6903         (check_DATA): Add script_test_10.stdout.
6904         (script_test_10.o, script_test_10): New targets.
6905         (script_test_10.stdout): New target.
6906         * configure, testsuite/Makefile.in: Regenerate.
6907
6908 2010-10-12  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
6909
6910         * arm.cc (Target_arm::Scan::local): Report the unsupported reloc
6911         error for the deprecated relocations.
6912         (Target_arm::Scan::global): Likewise.
6913         (Target_arm::Relocate::relocate): Likewise.
6914
6915 2010-10-12  Richard Sandiford  <richard.sandiford@linaro.org>
6916
6917         * fileread.cc (Input_file::find_file): Initialize *found_name
6918         and *namep when using the fallback search for case 4.
6919
6920 2010-10-11  Cary Coutant  <ccoutant@google.com>
6921
6922         * options.h (class General_options): Redefine -z lazy as an alias for
6923         the negation of -z now.
6924
6925 2010-10-11  Ian Lance Taylor  <iant@google.com>
6926
6927         * resolve.cc (symbol_to_bits): Report the value of the unsupported
6928         binding.
6929
6930 2010-10-06  Nick Clifton  <nickc@redhat.com>
6931
6932         * script-sections.cc(class Memory_region): Remove
6933         current_lma_offset_ field.  Rename current_vma_offset_ to
6934         current_offset_.  Add last_section_ field.
6935         (Memory_region::get_current_vma_address): Rename to
6936         get_current_address.
6937         (Memory_region::get_current_lma_address): Delete.
6938         (Memory_region::increment_vma_offset): Rename to
6939         increment_offset.
6940         (Memory_region::increment_lma_offset): Delete.
6941         (Memory_region::attributes_compatible): New method.  Returns
6942         true if the provided section is compatible with the region.
6943         (Memory_region::get_last_section): New method.  Returns the last
6944         section to use the region.
6945         (Memory_region::set_last_section): New method.  Stores the last
6946         section to use the region.
6947         (Script_sections::block_in_region): New method.  Returns true if
6948         a block of memory is contained within a region.
6949         (Script_sections::find_memory_region): New method.  Locates a
6950         memory region to be used to set a VMA or LMA address.
6951         (Output_section_definition::set_section_addresses): Add code to
6952         check for addresses set by memory regions.
6953         (Output_segment::set_section_addresses): Remove memory region
6954         walking code.
6955         (Script_sections::create_segment): Add a warning if a header
6956         segment is created outside of any region.
6957         * script-sections.h (class Script_sections): Add prototypes for
6958         find_memory_region and block_in_region methods.
6959         * testsuite/memory_test.s: Use .long instead of .word.
6960         * testsuite/memory_test.t: Add some more output sections.
6961         * testsuite/memory_test.sh: Update expected output.
6962
6963 2010-10-02  Doug Kwan  <dougkwan@google.com>
6964
6965         * symtab.cc (Symbol_table::Symbol_table_hash::operator()): Move
6966         defintion to symtab.h
6967         * symtab.h (Symbol_table::Symbol_table_hash::operator()): Change
6968         declaration to defintion.
6969
6970 2010-10-01  Nick Clifton  <nickc@redhat.com>
6971
6972         * expression.cc (eval): Replace dummy argument with NULL.
6973         (eval_maybe_dot): Check for a NULL result section pointer.
6974         (Symbol_expression::value): Likewise.
6975         (Dot_expression::value): Likewise.
6976         (BINARY_EXPRESSION): Likewise.
6977         (Max_expression::value): Likewise.
6978         (Min_expression::value): Likewise.
6979         (Absolute_expression::value): Likewise.
6980         (Addr_expression::value_from_output_section): Likewise.
6981         (Loaddddr_expression::value_from_output_section): Likewise.
6982         (Segment_start_expression::value): Likewise.
6983         * script-sections.cc
6984         (Sections_elememt_dot_assignment::finalize_symbols): Replace dummy
6985         argument with NULL.
6986         (Sections_elememt_dot_assignment::set_section_addresses):
6987         Likewise.
6988         (Output_data_expression::do_write_to_buffer): Likewise.
6989         (Output_section_definition::finalize_symbols): Likewise.
6990         (Output_section_definition::set_section_addresses): Likewise.
6991
6992 2010-09-30  Doug Kwan  <dougkwan@google.com>
6993
6994         * gold/testsuite/arm_branch_out_of_range.sh: Fix broken tests.
6995
6996 2010-09-28  Sriraman Tallam  <tmsriram@google.com>
6997
6998         * target.h (Target::can_icf_inline_merge_sections): New virtual
6999         function.
7000         * x86_64.cc (Target__x86_64::can_icf_inline_merge_sections): New
7001         virtual function.
7002         * i386.cc (Target_i386::can_icf_inline_merge_sections): New
7003         virtual function.
7004         * icf.cc (get_section_contents): Inline merge sections only when
7005         target allows it.
7006
7007 2010-09-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7008
7009         * configure: Regenerate.
7010
7011 2010-09-17  Ian Lance Taylor  <iant@google.com>
7012
7013         * testsuite/memory_test.sh: Adjust for change of 2010-09-10.
7014         * testsuite/Makefile.am (memory_test.o): New target.
7015         (memory_test): Depend on memory_test.o, gcctestdir/ld, and
7016         memory_test.t.
7017         * testsuite/Makefile.in: Rebuild.
7018
7019 2010-09-17  Doug Kwan  <dougkwan@google.com>
7020
7021         * arm.cc (Target_arm::Relocate::relocate): Ignore symbol type and
7022         defintion if relocation uses GOT entries of the symbol.
7023         * testsuite/icf_safe_test.sh: Fix test.
7024         * testsuite/icf_safe_so_test.sh: Fix test.
7025
7026 2010-09-16  Cary Coutant  <ccoutant@google.com>
7027
7028         * script_sections.cc (class Memory_region): Remove "NULL" from
7029         vector initializations.
7030
7031 2010-09-15  Cary Coutant  <ccoutant@google.com>
7032
7033         * incremental.cc (Output_section_incremental_inputs::write_info_blocks):
7034         Resolve forwarding symbols.
7035
7036 2010-09-15  Doug Kwan  <dougkwan@google.com>
7037
7038         * gold/testsuite/script_test_3.t: Add ARM special sections.
7039         * gold/testsuite/script_test_4.t: Same.
7040         * gold/testsuite/script_test_5.t: Same.
7041         * gold/testsuite/script_test_6.t: Same.
7042         * gold/testsuite/script_test_7.t: Same.
7043         * gold/testsuite/script_test_7.t: Same.
7044         * gold/testsuite/thumb_blx_out_of_range.s: Fix instruction alignment.
7045
7046 2010-09-14  Cary Coutant  <ccoutant@google.com>
7047
7048         * x86_64.cc (Target_x86_64::saw_tls_block_reloc_): Remove member.
7049         (Target_x86_64::Relocate::relocate_tls): Replace check for
7050         saw_tls_block_reloc_ with test for executable section.
7051
7052 2010-09-12  Cary Coutant  <ccoutant@google.com>
7053
7054         * symtab.h (Symbol::needs_dynamic_reloc): Non-PIC calls from
7055         position-independent executables to shared libraries need dynamic
7056         relocations.
7057         (Symbol::may_need_copy_reloc): Do not generate COPY relocs in
7058         position-independent executables.
7059         * testsuite/Makefile.am (two_file_mixed_pie_test): New test.
7060         * testsuite/Makefile.in: Regenerate.
7061
7062 2010-09-10  Nick Clifton  <nickc@redhat.com>
7063
7064         PR gold/11997
7065         * testsuite/memory_test.t: Discard any sections that are not
7066         needed.
7067
7068 2010-09-09  H.J. Lu  <hongjiu.lu@intel.com>
7069
7070         PR gold/11996
7071         * object.cc (Sized_relobj::do_finalize_local_symbols): Remove
7072         "This::" to work around a bug in gcc 4.2.
7073
7074         * testsuite/ifuncmain7.c (foo_ifunc): Add __attribute__ ((used)).
7075
7076 2010-09-09  Rafael Espindola  <espindola@google.com>
7077
7078         * layout.cc (Layout::attach_allocated_section_to_segment): Don't put
7079         sections with different PF_X flags in the same segment.
7080         (Layout::find_first_load_seg): Search all segments to find the first
7081         one.
7082         * options.h (rosegment): New.
7083
7084 2010-09-08  Rafael Espindola  <espindola@google.com>
7085
7086         * layout.cc (Layout::set_segment_offsets): Always advance to a new page.
7087
7088 2010-09-08  Doug Kwan  <dougkwan@google.com>
7089
7090         * arm.cc (Arm_exidx_cantunwind::do_print_to_mapfile): New method.
7091         (Arm_relobj::do_relocate_sections): Add new parameter for output
7092         file to match the parent.
7093         (Target_arm::scan_reloc_section_for_stubs): Use would-be final values
7094         of local symbols instead of input values.  Update code to track
7095         changes in gold::relocate_section.
7096         * object.cc (Sized_relobj::compute_final_local_value): New methods.
7097         (Sized_relobj::compute_final_local_value_internal): New methods.
7098         (Sized_relobj::do_finalize_local_symbols): Move code from loop
7099         body into private version of Sized_relobj::compute_final_local_value.
7100         Call the inline method.
7101         * object.h (Symbol_value::Symbol_value): Define destructor.  Free
7102         merged symbol value if there is one.
7103         (Symbol_value::has_output_value): New method defintiion.
7104         (Sized_relobj::Compute_final_local_value_status): New enum type.
7105         (Sized_relobj::compute_final_local_value): New methods.
7106         (Sized_relobj::compute_final_local_value_internal): New methods.
7107         * Makefile.am (check_SCRIPTS): Add arm_branch_out_of_range.sh
7108         and arm_cortex_a8.sh.
7109         (thumb_bl_out_of_range_local, arm_cortex_a8_b_cond, arm_cortex_a8_bl,
7110         arm_cortex_a8_blx, arm_cortex_a8_local, arm_corte_a8_local_reloc):
7111         New tests.
7112         * Makefile.in: Regenerate.
7113         * testsuite/arm_bl_out_of_range.s: Update test.
7114         * testsuite/thumb_bl_out_of_range.s: Ditto.
7115         * testsuite/thumb_blx_out_of_range.s: Ditto.
7116         * testsuite/arm_branch_out_of_range.sh: New file.
7117         * testsuite/arm_cortex_a8.sh: Ditto.
7118         * testsuite/arm_cortex_a8_b.s: Ditto.
7119         * testsuite/arm_cortex_a8_b_cond.s: Ditto.
7120         * testsuite/arm_cortex_a8_b_local.s: Ditto.
7121         * testsuite/arm_cortex_a8_bl.s: Ditto.
7122         * testsuite/arm_cortex_a8_blx.s: Ditto.
7123         * testsuite/arm_cortex_a8_local.s: Ditto.
7124         * testsuite/arm_cortex_a8_local_reloc.s: Ditto.
7125         * testsuite/thumb_bl_out_of_range_local.s: Ditto.
7126
7127 2010-09-08  Rafael Espindola  <espindola@google.com>
7128
7129         * Makefile.am (memory_test.stdout): Run readelf with -W.
7130         * Makefile.in: Regenerate.
7131         * testsuite/memory_test.sh: Make the regexps accept both 32 and
7132         64 bit output.
7133
7134 2010-09-08  Rafael Espindola  <espindola@google.com>
7135
7136         * script-sections.cc (Script_sections::add_memory_region): Convert
7137         field precision to int.
7138         * script.cc (script_set_section_region, script_set_section_region):
7139         Convert field precision to int.
7140
7141 2010-09-08  Rafael Espindola  <espindola@google.com>
7142
7143         * arm.cc (do_finalize_sections): Create the __exidx_start and
7144         __exdix_end symbols even when the section is missing.
7145
7146 2010-09-08  Nick Clifton  <nickc@redhat.com>
7147
7148         * README: Remove claim that MEMORY is not supported.
7149         * expression.cc (script_exp_function_origin)
7150         (script_exp_function_length): Move from here to ...
7151         * script.cc: ... here.
7152         (script_set_section_region, script_add_memory)
7153         (script_parse_memory_attr, script_include_directive): New
7154         functions.
7155         * script-sections.cc
7156         (class Memory_region): New class.
7157         (class Output_section_definition): Add set_memory_region,
7158         set_section_vma, set_section_lma and get_section_name methods.
7159         (class Script_Sections): Add add_memory_region,
7160         find_memory_region, find_memory_region_origin,
7161         find_memory_region_length and set_memory_region methods.
7162         Have set_section_addresses method walk the list of set memory
7163         regions.
7164         Extend the print methos to display memory regions.
7165         * script-sections.h: Add prototypes for new methods.
7166         Add enum for MEMORY region attributes.
7167         * yyscript.y: Add support for parsing MEMORY regions.
7168         * script-c.h: Add prototypes for new functions.
7169         * testsuite/Makefile.am: Add test of MEMORY region functionality.
7170         * testsuite/Makefile.in: Regenerate.
7171         * testsuite/memory_test.sh: New script.
7172         * testsuite/memory_test.s: New assembler source file.
7173         * testsuite/memory_test.t: New linker script.
7174
7175 2010-08-27  Doug Kwan  <dougkwan@google.com>
7176
7177         * gold/resolve.cc (Symbol_table::should_override): Let a weak
7178         reference override an existing dynamic weak reference.
7179         * testsuite/Makefile.am: Add new test dyn_weak_ref.
7180         * testsuite/Makefile.in: Regenerate.
7181         * testsuite/dyn_weak_ref.sh: New file.
7182         * testsuite/dyn_weak_ref_1.c: Ditto.
7183         * testsuite/dyn_weak_ref_2.c: Ditto.
7184
7185 2010-08-27  Ian Lance Taylor  <iant@google.com>
7186
7187         * incremental.h (class Incremental_input_entry): Add virtual
7188         destructor.
7189
7190 2010-08-27  Ian Lance Taylor  <iant@google.com>
7191
7192         * testsuite/start_lib_test_3.c: Mark t3 as used.
7193
7194 2010-08-27  Nick Clifton  <nickc@redhat.com>
7195
7196         * options.cc (version_script): Fix small typo in previous
7197         whitespace tidyup.
7198
7199 2010-08-25  Nick Clifton  <nickc@redhat.com>
7200
7201         * archive.cc: Formatting fixes: Remove whitespace between
7202         typename and following asterisk.  Remove whitespace between
7203         function name and opening parenthesis.
7204         * archive.h: Likewise.
7205         * arm.cc: Likewise.
7206         * attributes.cc: Likewise.
7207         * attributes.h: Likewise.
7208         * common.cc: Likewise.
7209         * copy-relocs.cc: Likewise.
7210         * dirsearch.h: Likewise.
7211         * dynobj.cc: Likewise.
7212         * ehframe.cc: Likewise.
7213         * ehframe.h: Likewise.
7214         * expression.cc: Likewise.
7215         * fileread.cc: Likewise.
7216         * fileread.h: Likewise.
7217         * gc.h: Likewise.
7218         * gold-threads.cc: Likewise.
7219         * gold.cc: Likewise.
7220         * i386.cc: Likewise.
7221         * icf.h: Likewise.
7222         * incremental-dump.cc: Likewise.
7223         * incremental.cc: Likewise.
7224         * layout.cc: Likewise.
7225         * layout.h: Likewise.
7226         * main.cc: Likewise.
7227         * merge.cc: Likewise.
7228         * merge.h: Likewise.
7229         * object.cc: Likewise.
7230         * object.h: Likewise.
7231         * options.cc: Likewise.
7232         * options.h: Likewise.
7233         * output.cc: Likewise.
7234         * output.h: Likewise.
7235         * plugin.cc: Likewise.
7236         * plugin.h: Likewise.
7237         * powerpc.cc: Likewise.
7238         * reloc.cc: Likewise.
7239         * script-c.h: Likewise.
7240         * script-sections.cc: Likewise.
7241         * script.cc: Likewise.
7242         * stringpool.cc: Likewise.
7243         * symtab.cc: Likewise.
7244         * symtab.h: Likewise.
7245         * target.cc: Likewise.
7246         * timer.cc: Likewise.
7247         * timer.h: Likewise.
7248         * version.cc: Likewise.
7249         * x86_64.cc: Likewise.
7250
7251 2010-08-24  Nick Clifton  <nickc@redhat.com>
7252
7253         PR 11899
7254         * layout.cc (segment_precedes): Sort segments by their physical
7255         addresses, if they have been set.
7256
7257 2010-08-23  Cary Coutant  <ccoutant@google.com>
7258
7259         * archive.cc (Lib_group::add_symbols): Lock object before deleting its
7260         symbols data.
7261         (Lib_group::include_member): Unlock object after deleting its
7262         symbols data.
7263         * testsuite/start_lib_test_3.c: Remove all global symbols to trigger
7264         the bug fixed here.
7265
7266 2010-08-19  Neil Vachharajani  <nvachhar@google.com>
7267             Cary Coutant  <ccoutant@google.com>
7268
7269         * gold/archive.h (Add_lib_group_symbols): Add readsyms_blocker_, adjust
7270         constructor, and set_blocker.
7271         * gold/archive.cc (Add_lib_group_symbols::is_runnable): Also check
7272         readsyms_blocker_.
7273         * gold/readsyms.cc (Read_symbols::do_lib_group): Also pass
7274         this->this_blocker_ to Add_lib_group_symbols::set_blocker.
7275         * testsuite/Makefile.am (start_lib_test): New test case.
7276         * testsuite/Makefile.in: Regenerate.
7277         * testsuite/start_lib_test_main.c: New file.
7278         * testsuite/start_lib_test_1.c: New file.
7279         * testsuite/start_lib_test_2.c: New file.
7280         * testsuite/start_lib_test_3.c: New file.
7281
7282 2010-08-19  Ian Lance Taylor  <iant@google.com>
7283
7284         * Makefile.in: Rebuild with automake 1.11.1.
7285         * aclocal.m4: Likewise.
7286         * testsuite/Makefile.in: Likewise.
7287
7288 2010-08-19  Ian Lance Taylor  <iant@google.com>
7289
7290         PR 10893
7291         * i386.cc (class Output_data_plt_i386): Update declarations.
7292         Define Global_ifunc and Local_ifunc types.  Add global_ifuncs_ and
7293         local_ifuncs_ fields.
7294         (Target_i386::do_plt_section_for_global): New function.
7295         (Target_i386::do_plt_section_for_local): New function.
7296         (Output_data_plt_i386::Output_data_plt_i386): Add symtab
7297         parameter; change all callers.  Initialize global_ifuncs_ and
7298         local_ifuncs_.  If doing a static link define __rel_iplt_start and
7299         __rel_iplt_end.
7300         (Output_data_plt_i386::add_entry): Handle IFUNC symbols.
7301         (Output_data_plt_i386::add_local_ifunc_entry): New function.
7302         (Output_data_plt_i386::do_write): Fix GOT entries for IFUNC
7303         symbols.
7304         (Target_i386::make_plt_section): New function, broken out of
7305         make_plt_entry.  Set sh_info field of .rel.plt to point to .plt.
7306         (Target_i386::make_plt_entry): Call make_plt_section.
7307         (Target_i386::make_local_ifunc_plt_entry): New function.
7308         (Target_i386::Scan::reloc_needs_iplt_for_ifunc): New function.
7309         (Target_i386::Scan::local): Handle IFUNC symbols.  Add
7310         R_386_IRELATIVE to switch.
7311         (Target_i386::Scan::global): Likewise.
7312         (Target_i386::Relocate::relocate): Likewise.
7313         (Target_i386::Relocatable_size_for_reloc): Add R_386_IRELATIVE to
7314         switch.
7315         * x86_64.cc (class Output_data_plt_x86_64): Update declarations.
7316         (Target_x86_64::do_plt_section_for_global): New function.
7317         (Target_x86_64::do_plt_section_for_local): New function.
7318         (Output_data_plt_x86_64::Output_data_plt_x86_64): Add symtab
7319         parameter; change all callers.  If doing a static link define
7320         __rela_iplt_start and __rela_iplt_end.
7321         (Output_data_plt_x86_64::add_entry): Handle IFUNC symbols.
7322         (Output_data_plt_x86_64::add_local_ifunc_entry): New function.
7323         (Target_x86_64::make_plt_section): Set sh_info field of .rel.plt
7324         to point to .plt.
7325         (Target_x86_64::make_local_ifunc_plt_entry): New function.
7326         (Target_x86_64::Scan::check_non_pic): Add R_X86_64_IRELATIVE to
7327         switch.
7328         (Target_x86_64::Scan::reloc_needs_iplt_for_ifunc): New function.
7329         (Target_x86_64::Scan::local): Handle IFUNC symbols.  Add
7330         R_X86_64_IRELATIVE to switch.
7331         (Target_x86_64::Scan::global): Likewise.
7332         (Target_x86_64::Relocate::relocate): Likewise.
7333         (Target_x86_64::Relocatable_size_for_reloc): Add R_X86_64_IRELATIVE to
7334         switch.
7335         * target.h (class Target): Add plt_section_for_global and
7336         plt_section_for_local functions.  Add do_plt_section_for_global
7337         and do_plt_section_for_local virtual functions.
7338         * symtab.h (Symbol::needs_plt_entry): Handle IFUNC symbol.  Add
7339         clarifying comments.
7340         (Symbol::use_plt_offset): Handle IFUNC symbol.
7341         * object.cc (Sized_relobj::Sized_relobj): Initialize
7342         local_plt_offsets_.
7343         (Sized_relobj::local_has_plt_offset): New function.
7344         (Sized_relobj::local_plt_offset): New function.
7345         (Sized_relobj::set_local_plt_offset): New function.
7346         (Sized_relobj::do_count): Handle IFUNC symbol.
7347         * object.h (class Symbol_value): Add is_ifunc_symbol_ field.  Take
7348         a bit away from input_shndx_ field.  Add set_is_func_symbol and
7349         is_ifunc_symbol functions.
7350         (class Sized_relobj): Update declarations.  Remove Tls_got_entry
7351         and Local_tls_got_offsets.  Define Local_plt_offsets.  Add
7352         local_plt_offsets_ field.
7353         (Sized_relobj::clear_local_symbols): Clear local_plt_offsets_.
7354         * output.h (class Output_section_data): Add non-const
7355         output_section function.
7356         (class Output_data_got): Update declarations.
7357         (class Output_data_got::Got_entry): Add use_plt_offset_ field.
7358         Add use_plt_offset parameter to global and local constructors.
7359         Change all callers.  Change local_sym_index_ field to 31 bits.
7360         Change GSYM_CODE and CONSTANT_CODE accordingly.
7361         * output.cc (Output_data_reloc_base::do_adjust_output_section): If
7362         doing a static link don't set sh_link field.
7363         (Output_data_got::Got_entry::write): Use PLT offset if
7364         appropriate.
7365         (Output_data_got::add_global_plt): New function.
7366         (Output_data_got::add_local_plt): New function.
7367         * target-reloc.h (relocate_section): Handle IFUNC symbol.
7368         * defstd.cc (in_section): Remove entries for __rel_iplt_start,
7369         __rel_iplt_end, __rela_iplt_start, and __rela_iplt_end.
7370         * configure.ac: Set IFUNC automake conditional for glibc >= 2.11.
7371         * testsuite/Makefile.am: Add a bunch of IFUNC tests, all within
7372         IFUNC conditional.
7373         * testsuite/ifunc-sel.h: New file.
7374         * testsuite/ifuncmain1.c: New file.
7375         * testsuite/ifuncmain1vis.c: New file.
7376         * testsuite/ifuncmod1.c: New file.
7377         * testsuite/ifuncdep2.c: New file.
7378         * testsuite/ifuncmain2.c: New file.
7379         * testsuite/ifuncmain3.c: New file.
7380         * testsuite/ifuncmod3.c: New file.
7381         * testsuite/ifuncmain4.c: New file.
7382         * testsuite/ifuncmain5.c: New file.
7383         * testsuite/ifuncmod5.c: New file.
7384         * testsuite/ifuncmain6pie.c: New file.
7385         * testsuite/ifuncmod6.c: New file.
7386         * testsuite/ifuncmain7.c: New file.
7387         * configure, testsuite/Makefile.in: Rebuild.
7388
7389 2010-08-18  Ian Lance Taylor  <iant@google.com>
7390
7391         * incremental.cc
7392         (Output_section_incremental_inputs::write_input_files): Add cast
7393         to avoid signed/unsigned comparison warning.
7394         (Output_section_incremental_inputs::write_info_blocks): Likewise.
7395
7396 2010-08-12  Cary Coutant  <ccoutant@google.com>
7397
7398         * common.cc (Sort_commons::operator()): Remove unnecessary code.
7399
7400 2010-08-13  Ian Lance Taylor  <iant@google.com>
7401
7402         * testsuite/incremental_test_1.c: Add prototype to avoid warning.
7403
7404 2010-08-12  Cary Coutant  <ccoutant@google.com>
7405             Doug Kwan  <dougkwan@google.com>
7406
7407         * resolve.cc (Symbol_table::should_override): When a weak dynamic
7408         defintion overrides non-weak undef, remember that the original undef
7409         is not weak.
7410         * symtab.cc (Symbol_table::sized_write_global): For undef without
7411         an original weak binding, set binding to global in output.
7412         * testsuite/Makefile.am: Add new test strong_ref_weak_def.
7413         * testsuite/Makefile.in: Regenerate.
7414         * testsuite/strong_ref_weak_def.sh: New file.
7415         * testsuite/strong_ref_weak_def_1.c: Ditto.
7416         * testsuite/strong_ref_weak_def_2.c: Ditto.
7417
7418 2010-08-12  Cary Coutant  <ccoutant@google.com>
7419
7420         * testsuite/incremental_test.sh: Rewrite.
7421         * testsuite/incremental_test_1.c: Rewrite.
7422         * testsuite/incremental_test_2.c: Rewrite.
7423
7424 2010-08-12  Cary Coutant  <ccoutant@google.com>
7425
7426         * arm.cc (Target_arm::got_size): Add const.
7427         (Target_arm::got_entry_count): New function.
7428         (Target_arm::plt_entry_count): New function.
7429         (Target_arm::first_plt_entry_offset): New function.
7430         (Target_arm::plt_entry_size): New function.
7431         (Output_data_plt_arm::entry_count): New function.
7432         (Output_data_plt_arm::first_plt_entry_offset): New function.
7433         (Output_data_plt_arm::get_plt_entry_size): New function.
7434         * i386.cc (Target_i386::got_size): Add const.
7435         (Target_i386::got_entry_count): New function.
7436         (Target_i386::plt_entry_count): New function.
7437         (Target_i386::first_plt_entry_offset): New function.
7438         (Target_i386::plt_entry_size): New function.
7439         (Output_data_plt_i386::entry_count): New function.
7440         (Output_data_plt_i386::first_plt_entry_offset): New function.
7441         (Output_data_plt_i386::get_plt_entry_size): New function.
7442         * incremental-dump.cc (dump_incremental_inputs): Adjust call to
7443         find_incremental_inputs_sections.  Dump incremental_got_plt section.
7444         * incremental.cc: Include target.h.
7445         (Sized_incremental_binary::do_find_incremental_inputs_sections): Add
7446         parameter.  Adjust all callers.  Find incremental_got_plt section.
7447         (Incremental_inputs::create_data_sections): Create incremental_got_plt
7448         section.
7449         (Output_section_incremental_inputs::set_final_data_size): Calculate
7450         size of incremental_got_plt section.
7451         (Output_section_incremental_inputs::do_write): Write the
7452         incremental_got_plt section.
7453         (Got_plt_view_info): New struct.
7454         (Local_got_offset_visitor): New class.
7455         (Global_got_offset_visitor): New class.
7456         (Global_symbol_visitor_got_plt): New class.
7457         (Output_section_incremental_inputs::write_got_plt): New function.
7458         * incremental.h (Incremental_binary::find_incremental_inputs_sections):
7459         Add parameter.  Adjust all callers.
7460         (Incremental_binary::do_find_incremental_inputs_sections): Likewise.
7461         (Incremental_inputs::got_plt_section): New function.
7462         (Incremental_inputs::got_plt_section_): New data member.
7463         (Incremental_got_plt_reader): New class.
7464         * layout.cc (Layout::create_incremental_info_sections): Add the
7465         incremental_got_plt section.
7466         * object.h (Got_offset_list::get_list): New function.
7467         (Got offset_list::for_all_got_offsets): New function.
7468         (Sized_relobj::local_got_offset_list): New function.
7469         * powerpc.cc (Target_powerpc::got_size): Add const.
7470         (Target_powerpc::got_entry_count): New function.
7471         (Target_powerpc::plt_entry_count): New function.
7472         (Target_powerpc::first_plt_entry_offset): New function.
7473         (Target_powerpc::plt_entry_size): New function.
7474         (Output_data_plt_powerpc::entry_count): New function.
7475         (Output_data_plt_powerpc::first_plt_entry_offset): New function.
7476         (Output_data_plt_powerpc::get_plt_entry_size): New function.
7477         * sparc.cc (Target_sparc::got_size): Add const.
7478         (Target_sparc::got_entry_count): New function.
7479         (Target_sparc::plt_entry_count): New function.
7480         (Target_sparc::first_plt_entry_offset): New function.
7481         (Target_sparc::plt_entry_size): New function.
7482         (Output_data_plt_sparc::entry_count): New function.
7483         (Output_data_plt_sparc::first_plt_entry_offset): New function.
7484         (Output_data_plt_sparc::get_plt_entry_size): New function.
7485         * symtab.h (Symbol::got_offset_list): New function.
7486         (Symbol_table::for_all_symbols): New function.
7487         * target.h (Sized_target::got_entry_count): New function.
7488         (Sized_target::plt_entry_count): New function.
7489         (Sized_target::plt_entry_size): New function.
7490         * x86_64.cc (Target_x86_64::got_size): Add const.
7491         (Target_x86_64::got_entry_count): New function.
7492         (Target_x86_64::plt_entry_count): New function.
7493         (Target_x86_64::first_plt_entry_offset): New function.
7494         (Target_x86_64::plt_entry_size): New function.
7495         (Output_data_plt_x86_64::entry_count): New function.
7496         (Output_data_plt_x86_64::first_plt_entry_offset): New function.
7497         (Output_data_plt_x86_64::get_plt_entry_size): New function.
7498
7499 2010-08-12  Cary Coutant  <ccoutant@google.com>
7500
7501         * archive.cc: Include incremental.h.
7502         (Archive::Archive): Initialize incremental_info_.
7503         (Archive::include_member): Record archive members in incremental info.
7504         (Add_archive_symbols::run): Record begin and end of an archive in
7505         incremental info.
7506         (Lib_group::include_member): Record objects in incremental info.
7507         * archive.h (Incremental_archive_entry): Forward declaration.
7508         (Archive::set_incremental_info): New member function.
7509         (Archive::incremental_info): New member function.
7510         (Archive::Unused_symbol_iterator): New class.
7511         (Archive::unused_symbols_begin): New member function.
7512         (Archive::unused_symbols_end): New member function.
7513         (Archive::incremental_info_): New data member.
7514         * incremental-dump.cc (find_input_containing_global): New function.
7515         (dump_incremental_inputs): Dump new incremental info sections.
7516         * incremental.cc: Include symtab.h.
7517         (Output_section_incremental_inputs): New class.
7518         (Sized_incremental_binary::do_find_incremental_inputs_sections): Support
7519         new incremental info sections.
7520         (Sized_incremental_binary::do_check_inputs): Likewise.
7521         (Incremental_inputs::report_archive): Remove.
7522         (Incremental_inputs::report_archive_begin): New function.
7523         (Incremental_inputs::report_archive_end): New function.
7524         (Incremental_inputs::report_object): New function.
7525         (Incremental_inputs::finalize_inputs): Remove.
7526         (Incremental_inputs::report_input_section): New function.
7527         (Incremental_inputs::report_script): Rewrite.
7528         (Incremental_inputs::finalize): Do nothing but finalize string table.
7529         (Incremental_inputs::create_incremental_inputs_section_data): Remove.
7530         (Incremental_inputs::sized_create_inputs_section_data): Remove.
7531         (Incremental_inputs::create_data_sections): New function.
7532         (Incremental_inputs::relocs_entsize): New function.
7533         (Output_section_incremental_inputs::set_final_data_size): New function.
7534         (Output_section_incremental_inputs::do_write): New function.
7535         (Output_section_incremental_inputs::write_header): New function.
7536         (Output_section_incremental_inputs::write_input_files): New function.
7537         (Output_section_incremental_inputs::write_info_blocks): New function.
7538         (Output_section_incremental_inputs::write_symtab): New function.
7539         * incremental.h (Incremental_script_entry): Forward declaration.
7540         (Incremental_object_entry): Forward declaration.
7541         (Incremental_archive_entry): Forward declaration.
7542         (Incremental_inputs): Forward declaration.
7543         (Incremental_inputs_header_data): Remove.
7544         (Incremental_inputs_header): Remove.
7545         (Incremental_inputs_header_write): Remove.
7546         (Incremental_inputs_entry_data): Remove.
7547         (Incremental_inputs_entry): Remove.
7548         (Incremental_inputs_entry_write): Remove.
7549         (enum Incremental_input_type): Add INCREMENTAL_INPUT_ARCHIVE_MEMBER.
7550         (Incremental_binary::find_incremental_inputs_sections): Add parameters.
7551         (Incremental_binary::do_find_incremental_inputs_sections): Likewise.
7552         (Sized_ncremental_binary::do_find_incremental_inputs_sections):
7553         Likewise.
7554         (Incremental_input_entry): New class.
7555         (Incremental_script_entry): New class.
7556         (Incremental_object_entry): New class.
7557         (Incremental_archive_entry): New class.
7558         (Incremental_inputs::Incremental_inputs): Initialize new data members.
7559         (Incremental_inputs::report_inputs): Remove.
7560         (Incremental_inputs::report_archive): Remove.
7561         (Incremental_inputs::report_archive_begin): New function.
7562         (Incremental_inputs::report_archive_end): New function.
7563         (Incremental_inputs::report_object): Change prototype.
7564         (Incremental_inputs::report_input_section): New function.
7565         (Incremental_inputs::report_script): Change prototype.
7566         (Incremental_inputs::get_reloc_count): New function.
7567         (Incremental_inputs::set_reloc_count): New function.
7568         (Incremental_inputs::create_data_sections): New function.
7569         (Incremental_inputs::create_incremental_inputs_section_data): Remove.
7570         (Incremental_inputs::inputs_section): New function.
7571         (Incremental_inputs::symtab_section): New function.
7572         (Incremental_inputs::relocs_section): New function.
7573         (Incremental_inputs::get_stringpool): Add const.
7574         (Incremental_inputs::command_line): Add const.
7575         (Incremental_inputs::inputs): Remove.
7576         (Incremental_inputs::command_line_key): New function.
7577         (Incremental_inputs::input_file_count): New function.
7578         (Incremental_inputs::input_files): New function.
7579         (Incremental_inputs::relocs_entsize): New function.
7580         (Incremental_inputs::sized_create_inputs_section_data): Remove.
7581         (Incremental_inputs::finalize_inputs): Remove.
7582         (Incremental_inputs::Input_info): Remove.
7583         (Incremental_inputs::lock_): Remove.
7584         (Incremental_inputs::inputs_): Change type.
7585         (Incremental_inputs::inputs_map_): Remove.
7586         (Incremental_inputs::current_object_entry_): New data member.
7587         (Incremental_inputs::inputs_section_): New data member.
7588         (Incremental_inputs::symtab_section_): New data member.
7589         (Incremental_inputs::relocs_section_): New data member.
7590         (Incremental_inputs::reloc_count_): New data member.
7591         (Incremental_inputs_reader): New class.
7592         (Incremental_symtab_reader): New class.
7593         (Incremental_relocs_reader): New class.
7594         * layout.cc (Layout::finalize): Move finalization of incremental info
7595         and creation of incremental info sections to follow finalization of
7596         symbol table.  Set offsets for postprocessing sections.
7597         (Layout::create_incremental_info_sections): Call
7598         Incremental_inputs::create_data_sections.  Add incremental symtab
7599         and relocs sections.  Set sh_entsize and sh_link fields.  Arrange for
7600         sections to layout after input sections.
7601         * layout.h (struct Timespec): Forward declaration.
7602         (Layout::incremental_inputs): Add const.
7603         (Layout::create_incremental_info_sections): Add parameter.
7604         * main.cc (main): Remove call to Incremental_inputs::report_inputs.
7605         * object.cc: Include incremental.h.
7606         (Relobj::finalize_incremental_relocs): New function.
7607         (Sized_relobj::do_layout): Record input sections in incremental info.
7608         * object.h (Object::output_section): New function.
7609         (Object::output_section_offset): Moved from Relobj.
7610         (Object::get_incremental_reloc_base): New function.
7611         (Object::get_incremental_reloc_count): New function.
7612         (Object::do_output_section): New function.
7613         (Object::do_output_section_offset): Moved from Relobj.
7614         (Object::do_get_incremental_reloc_base): New function.
7615         (Object::do_get_incremental_reloc_count): New function.
7616         (Object::Object): Initialize new data members.
7617         (Relobj::output_section): Renamed do_output_section and moved to
7618         protected.
7619         (Relobj::output_section_offset): Moved to Object.
7620         (Relobj::do_get_incremental_reloc_base): New function.
7621         (Relobj::do_get_incremental_reloc_count): New function.
7622         (Relobj::allocate_incremental_reloc_counts): New function.
7623         (Relobj::count_incremental_reloc): New function.
7624         (Relobj::finalize_incremental_relocs): New function.
7625         (Relobj::next_incremental_reloc_index): New function.
7626         (Relobj::reloc_counts_): New data member.
7627         (Relobj::reloc_bases_): New data member.
7628         (Sized_relobj::do_relocate_sections): Add parameter.  Change caller.
7629         (Sized_relobj::relocate_sections): Add parameter.  Change all callers.
7630         (Sized_relobj::incremental_relocs_scan): New function.
7631         (Sized_relobj::incremental_relocs_scan_reltype): New function.
7632         (Sized_relobj::incremental_relocs_write): New function.
7633         (Sized_relobj::incremental_relocs_write_reltype): New function.
7634         * plugin.cc (Plugin_manager::add_input_file): Rewrite test for
7635         incremental link.
7636         * readsyms.cc (Read_symbols::do_read_symbols): Move reporting of
7637         archives and object files elsewhere.
7638         (Add_symbols::run): Report object files here.
7639         (Finish_group::run): Report end of archive at end of group.
7640         * reloc.cc: Include layout.h, incremental.h.
7641         (Sized_relobj::do_read_relocs): Need relocations for incremental link.
7642         (Sized_relobj::do_scan_relocs): Record relocations for incremental link.
7643         (Sized_relobj::incremental_relocs_scan): New function.
7644         (Sized_relobj::incremental_relocs_scan_reltype): New function.
7645         (Sized_relobj::do_relocate_sections): Write incremental relocations.
7646         (Sized_relobj::incremental_relocs_write): New function.
7647         (Sized_relobj::incremental_relocs_write_reltype): New function.
7648         * script.cc (read_input_script): Rewrite test for incremental link.
7649         Change call to Incremental_inputs::report_script.
7650         * symtab.h (Symbol_table::first_global_index): New function.
7651         (Symbol_table::output_count): New function.
7652
7653 2010-08-12  Doug Kwan  <dougkwan@google.com>
7654
7655         * arm.cc (Target_arm::merge_object_attributes): Check command line
7656         options --no-wchar-size-warning and --no-enum-size-warning.
7657         * options.h (General_options): Add ld-compatible options
7658         --no-enum-size-warning and --no-wchar-size-warning.
7659
7660 2010-08-04  Ian Lance Taylor  <iant@google.com>
7661
7662         * x86_64.cc (Target_x86_64::Scan::local): Use
7663         R_X86_64_GNU_VTINHERIT instead of R_386_GNU_VTINHERIT and
7664         R_X86_64_GNU_VTENTRY instead of R_386_GNU_VTENTRY.
7665         (Target_x86_64::Scan::global): Likewise.
7666         (Target_x86_64::Relocate::relocate): Likewise.
7667         (Target_x86_64::Relocatable_size_for_reloc::get_size_for_reloc):
7668         Likewise.
7669
7670 2010-08-03  Cary Coutant  <ccoutant@google.com>
7671
7672         * merge.cc (Output_merge_string::do_add_input_section): Count strings
7673         to reserve space in merged_strings vector. Keep total input size
7674         for stats.
7675         (Output_merge_string::do_print_merge_stats): Print total input size.
7676         * merge.h (Output_merge_string): Add input_size_ field.
7677         * stringpool.cc (Stringpool_template::string_length): Move
7678         implementations out of Stringpool_template class and place in
7679         stringpool.h.
7680         * stringpool.h (string_length): Move out of Stringpool_template.
7681
7682 2010-08-03  Ian Lance Taylor  <iant@google.com>
7683
7684         PR 11712
7685         * layout.cc (relaxation_loop_body): If address of load segment is
7686         set, adjust address to include headers if possible.
7687
7688 2010-08-03  Ian Lance Taylor  <iant@google.com>
7689
7690         * version.cc (version_string): Bump to 1.10.
7691
7692 2010-08-03  Ian Lance Taylor  <iant@google.com>
7693
7694         PR 11805
7695         * layout.h (enum Output_section_order): Define.
7696         (class Layout): Update declarations.
7697         * layout.cc (Layout::get_output_section): Add order parameter.
7698         Remove is_interp, is_dynamic_linker_section, is_last_relro, and
7699         is_first_non_relro parameters.  Change all callers.
7700         (Layout::choose_output_section): Likewise.
7701         (Layout::add_output_section_data): Likewise.
7702         (Layout::make_output_section): Likewise.  Set order.
7703         (Layout::default_section_order): New function.
7704         (Layout::layout_eh_frame): Call add_output_section_to_nonload.
7705         * output.cc (Output_section::Output_section): Initialize order_.
7706         Don't initialize deleted fields.
7707         (Output_segment::Output_segment): Don't initialize deleted
7708         fields.
7709         (Output_segment::add_output_section_to_load): New function
7710         replacing add_output_section.  Change all callers to call this or
7711         add_output_section_to_nonload.
7712         (Output_segment::add_output_section_to_nonload): New function.
7713         (Output_segment::remove_output_section): Rewrite.
7714         (Output_segment::add_initial_output_data): Likewise.
7715         (Output_segment::has_any_data_sections): Likewise.
7716         (Output_segment::is_first_section_relro): Likewise.
7717         (Output_segment::maximum_alignment): Likewise.
7718         (Output_segment::has_dynamic_reloc): New function replacing
7719         dynamic_reloc_count.  Change all callers.
7720         (Output_segment::has_dynamic_reloc_list): New function replacing
7721         dynamic_reloc_count_list.  Change all callers.
7722         (Output_segment::set_section_addresses): Rewrite.
7723         (Output_segment::set_offset): Rewrite.
7724         (Output_segment::find_first_and_last_list): Remove.
7725         (Output_segment::set_tls_offsets): Rewrite.
7726         (Output_segment::first_section_load_address): Likewise.
7727         (Output_segment::output_section_count): Likewise.
7728         (Output_segment::section_with_lowest_load_address): Likewise.
7729         (Output_segment::write_section_headers): Likewise.
7730         (Output_segment::print_sections_to_map): Likewise.
7731         * output.h (class Output_data): Remove dynamic_reloc_count_
7732         field.  Add has_dynamic_reloc_ field.  Make bools into bitfields.
7733         (Output_data::add_dynamic_reloc): Rewrite.
7734         (Output_data::has_dynamic_reloc): New function.
7735         (Output_data::dynamic_reloc_count): Remove.
7736         (class Output_section): Add order_ field.  Remvoe is_relro_local_,
7737         is_last_relro_, is_first_non_relro_, is_interp_,
7738         is_dynamic_linker_section_ fields.  Add order and set_order
7739         functions.  Remove is_relro_local, set_is_relro_local,
7740         is_last_relro, set_is_last_relro, is_first_non_relro,
7741         set_is_first_non_relro functions, is_interp, set_is_interp,
7742         is_dynamic_linker_section, and set_is_dynamic_linker_section
7743         functions.
7744         (class Output_segment): Change Output_data_list from std::list to
7745         std:;vector.  Add output_lists_ field.  Remove output_data_ and
7746         output_bss_ fields.  Update declarations.
7747
7748 2010-08-02  Ian Lance Taylor  <iant@google.com>
7749
7750         * arm.cc (Target_arm::gc_process_relocs): Use typename.
7751         * powerpc.cc (Target_powerpc::gc_process_relocs): Likewise.
7752         * sparc.cc (Target_sparc::gc_process_relocs): Likewise.
7753
7754 2010-08-02  Ian Lance Taylor  <iant@google.com>
7755
7756         PR 11855
7757         * script.cc (Script_options::Script_options): Initialize
7758         symbol_definitions_ and symbol_references_.
7759         (Script_options::add_symbol_assignment): Update
7760         symbol_definitions_ and symbol_references_.
7761         (Script_options::add_symbol_reference): New function.
7762         (script_symbol): New function.
7763         * script.h (class Script_options): Add symbol_definitions_ and
7764         symbol_references_ fields.
7765         (Script_options::referenced_const_iterator): New type.
7766         (Script_options::referenced_begin): New function.
7767         (Script_options::referenced_end): New function.
7768         (Script_options::is_referenced): New function.
7769         (Script_options::any_unreferenced): New function.
7770         * script-c.h (script_symbol): Declare.
7771         * yyscript.y (exp): Call script_symbol.
7772         * symtab.cc: Include "script.h".
7773         (Symbol_table::gc_mark_undef_symbols): Add layout parameter.
7774         Change all callers.  Check symbols referenced by scripts.
7775         (Symbol_table::add_undefined_symbols_from_command_line): Add
7776         layout parameter.  Change all callers.
7777         (Symbol_table::do_add_undefined_symbols_from_command_line):
7778         Likewise.  Break out loop body.  Check symbols referenced by
7779         scripts.
7780         (Symbol_table::add_undefined_symbol_from_command_line): New
7781         function broken out of
7782         do_add_undefined_symbols_from_command_line.
7783         * symtab.h (class Symbol_table): Update declarations.
7784         * archive.cc: Include "layout.h".
7785         (Archive::should_include_member): Add layout parameter.  Change
7786         all callers.  Check for symbol mentioned in expression.
7787         * archive.h (class Archive): Update declaration.
7788         * object.cc (Sized_relobj::do_should_include_member): Add layout
7789         parameter.
7790         * object.h (Object::should_include_member): Add layout parameter.
7791         Change all callers.
7792         (Object::do_should_include_member): Add layout parameter.
7793         (class Sized_relobj): Update declaration.
7794         * dynobj.cc (Sized_dynobj::do_should_include_member): Add layout
7795         parameter.
7796         * dynobj.h (class Sized_dynobj): Update declaration.
7797         * plugin.cc (Sized_pluginobj::do_should_include_member): Add
7798         layout parameter.
7799         * plugin.h (class Sized_pluginobj): Update declaration.
7800
7801 2010-08-02  Ian Lance Taylor  <iant@google.com>
7802
7803         PR 11866
7804         * output.cc (Output_segment::set_offset): Search for the first and
7805         last sections rather than assuming that the list is in order.
7806         (Output_segment::find_first_and_last_list): New function.
7807         * output.h (class Output_segment): Update declarations.
7808         * testsuite/Makefile.am (check_PROGRAMS): Add relro_strip_test.
7809         (relro_strip_test_SOURCES): New variable.
7810         (relro_strip_test_DEPENDENCIES): New variable.
7811         (relro_strip_test_LDFLAGS): New variable.
7812         (relro_strip_test_LDADD): New variable.
7813         (relro_strip_test.so): New target.
7814
7815 2010-08-02  Ian Lance Taylor  <iant@google.com>
7816
7817         * i386.cc (class Target_i386): Add got_tlsdesc_ field.
7818         (Target_i386::Target_i386):: Initialize got_tlsdesc_.
7819         (Target_i386::got_tlsdesc_section): New function.
7820         (Target_i386::got_section): Create space for GOT entries for
7821         TLSDESC relocations.
7822         (Target_i386::Scan::local): Use TLSDESC GOT for unoptimized
7823         R_386_TLS_GOTDESC.
7824         (Target_i386::Scan::global): Likewise.
7825         (Target_i386::Relocate::relocate_tls): Adjust GOT offset when
7826         using TLSDESC GOT.
7827         * x86_64.cc (class Target_x86_64): Add got_tlsdesc_ field.
7828         (Target_x86_64::Target_x86_64):: Initialize got_tlsdesc_.
7829         (Target_x86_64::got_tlsdesc_section): New function.
7830         (Target_x86_64::got_section): Create space for GOT entries for
7831         TLSDESC relocations.
7832         (Target_x86_64::Scan::local): Use TLSDESC GOT for unoptimized
7833         R_386_TLS_GOTDESC.
7834         (Target_x86_64::Scan::global): Likewise.
7835         (Target_x86_64::Relocate::relocate_tls): Adjust GOT offset when
7836         using TLSDESC GOT.
7837
7838 2010-08-02  Ian Lance Taylor  <iant@google.com>
7839
7840         * testsuite/final_layout.sh: Use dc to convert from hex to
7841         decimal.
7842
7843 2010-07-29  Sriraman Tallam  <tmsriram@google.com>
7844
7845         * arm.cc (Target_arm<big_endian>::gc_process_relocs): Add template
7846         paramter to the call to gold::gc_process_relocs.
7847         * i386.cc (Target_i386<big_endian>::gc_process_relocs): Add template
7848         paramter to the call to gold::gc_process_relocs.
7849         * x86_64.cc (Target_x86_64<big_endian>::gc_process_relocs): Add template
7850         parameter to the call to gold::gc_process_relocs.
7851         * powerpc.cc (Target_powerpc<big_endian>::gc_process_relocs): Add
7852         template parameter to the call to gold::gc_process_relocs.
7853         * sparc.cc (Target_sparc<big_endian>::gc_process_relocs): Add template
7854         paramter to the call to gold::gc_process_relocs.
7855         * gc.h (get_embedded_addend_size): New function.
7856         (gc_process_relocs): Save the size of the reloc for use by ICF.
7857         * icf.cc (get_section_contents): Get the addend from the text section
7858         for SHT_REL relocation sections.
7859         * icf.h (Icf::Reloc_addend_size_info): New typedef.
7860         (Icf::Reloc_info): Add new member reloc_addend_size_info.
7861         * int_encoding.h (read_from_pointer): New overloaded function.
7862         * testsuite/Makefile.am (icf_sht_rel_addend_test): New test.
7863         * testsuite/icf_sht_rel_addend_test.sh: New file.
7864         * testsuite/icf_sht_rel_addend_test_1.cc: New file.
7865         * testsuite/icf_sht_rel_addend_test_2.cc: New file.
7866
7867 2010-07-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7868
7869         * configure.ac (AM_INIT_AUTOMAKE): Use parallel-tests option.
7870         * Makefile.in: Regenerate.
7871         * testsuite/Makefile.in: Regenerate.
7872
7873 2010-07-27  Jeffrey Yasskin  <jyasskin@google.com>
7874
7875         * testsuite/debug_msg.sh: Test mixed weak/strong symbol behavior.
7876         * gold/testsuite/debug_msg.cc: Likewise.
7877         * gold/testsuite/odr_violation1.cc
7878         * gold/testsuite/odr_violation2.cc
7879
7880 2010-07-21  Cary Coutant  <ccoutant@google.com>
7881
7882         * merge.h (Output_merge_string::Merged_string): Remove object, shndx,
7883         string, and length fields.
7884         (Output_merge_string::Merged_strings_list): New type.
7885         (Output_merge_string::Merged_strings_lists): New typedef.
7886         (Output_merge_string): Replace merged_strings_ with
7887         merged_strings_lists_.
7888         * merge.cc (Output_merge_string::do_add_input_section): Allocate new
7889         Merged_strings_list per input object and section.  Don't store pointer
7890         to the string.  Don't store length with each merged string entry.
7891         (Output_merge_string::finalize_merged_data): Loop over list of merged
7892         strings lists.  Recompute length of each merged string.
7893
7894 2010-07-15  Cary Coutant  <ccoutant@google.com>
7895
7896         * plugin.cc (Plugin_finish::run): Don't call cleanup handlers from
7897         here.
7898
7899 2010-07-14  Ian Lance Taylor  <iant@google.com>
7900
7901         * descriptors.cc (Descriptors::open): Report correct name in error
7902         message.
7903
7904 2010-07-13  Doug Kwan  <dougkwan@google.com>
7905
7906         * arm.cc (Arm_input_section::Arm_input_section): For a
7907         SHT_ARM_EXIDX section, always keeps the input sections.
7908         (Arm_input_section::set_exidx_section_link): New method.
7909         (Arm_exidx_input_section::Arm_exidx_input_section): Initialize
7910         has_errors_ to false.
7911         (Arm_exidx_input_section::has_errors,
7912         Arm_exidx_input_section::set_has_errors): New methods.
7913         (Arm_exidx_input_section::has_errors_): New data member.
7914         (Arm_relobj::get_exidx_shndx_list): New method.
7915         (Arm_output_section::append_text_sections_to_list): Do not skip
7916         section without SHF_EXECINSTR.
7917         (Arm_output_section::fix_exidx_coverage): Skip input sections with
7918         errors.
7919         (Arm_relobj::make_exidx_input_section): Add new parameter for text
7920         section header.  Make error messages more verbose.  Check for
7921         a non-executable section linked to an EXIDX section.
7922         (Arm_relobj::do_read_symbols): Remove error checking, which has been
7923         moved to Arm_relobj::make_exidx_input_section.  Add an assertion to
7924         check that there is no deferred EXIDX section if we exit early.
7925         Instead of not making an EXIDX section in case of an error, make one
7926         and set the has_errors flag of it.
7927         (Target_arm::do_finalize_sections): Fix up links of EXIDX sections
7928         in a relocatable link.
7929         (Target_arm::do_relax): Look for the EXIDX output section instead of
7930         assuming that it is called .ARM.exidx.
7931         (Target_arm::fix_exidx_coverage): Add a new parameter for input
7932         section list.  Do not check for SHF_EXECINSTR section flags but
7933         skip any input section with errors.
7934         * output.cc (Output_section::Output_section): Initialize
7935         always_keeps_input_sections_ to false.
7936         (Output_section::add_input_section): Check for
7937         always_keeps_input_sections_.
7938         *  output.h (Output_section::always_keeps_input_sections,
7939         Output_section::set_always_keeps_input_sections): New methods.
7940         (Output_section::always_keeps_input_sections): New data member.
7941
7942 2010-07-13  Rafael Espindola  <espindola@google.com>
7943
7944         * fileread.cc (try_extra_search_path, find_file): Move to Input_file.
7945         * fileread.h (Input_file): Add try_extra_search_path and find_file.
7946
7947 2010-07-13  Philip Herron  <herron.philip@googlemail.com>
7948             Ian Lance Taylor  <iant@google.com>
7949
7950         * output.h (Output_section_lookup_maps::add_merge_section):
7951         Correct check of whether value was inserted.
7952         (Output_section_lookup_maps::add_merge_input_section): Likewise.
7953         (Output_section_lookup_maps::add_relaxed_input_section):
7954         Likewise.
7955         * arm.cc (Target_arm::got_section): Remove used local os.
7956         * i386.cc (Target_i386::got_section): Likewise.
7957         * x86_64.cc (Target_x86_64::got_section): Likewise.
7958         * sparc.cc (Target_sparc::got_section): Likewise.
7959         (Target_sparc::relocate): Remove unused local have_got_offset.
7960         * powerpc.cc (Target_powerpc::relocate): Likewise.
7961
7962 2010-07-13  Ian Lance Taylor  <iant@google.com>
7963
7964         * compressed_output.cc (zlib_decompress): Fix signature in
7965         !HAVE_ZLIB_H case.
7966
7967         * archive.cc (Archive::include_member): Unlock an external member
7968         of a thin archive.  Don't bother to delete an object we know is
7969         NULL.
7970
7971 2010-07-12  Cary Coutant  <ccoutant@google.com>
7972
7973         * compressed_output.cc (zlib_decompress): New function.
7974         (get_uncompressed_size): New function.
7975         (decompress_input_section): New function.
7976         * compressed_output.h (get_uncompressed_size): New function.
7977         (decompress_input_section): New function.
7978         * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info)
7979         Handle compressed debug sections.
7980         * layout.cc (is_compressed_debug_section): New function.
7981         (Layout::output_section_name): Map compressed section names to
7982         canonical names.
7983         * layout.h (is_compressed_debug_section): New function.
7984         (is_debug_info_section): Recognize compressed debug sections.
7985         * merge.cc: Include compressed_output.h.
7986         (Output_merge_data::do_add_input_section): Handle compressed
7987         debug sections.
7988         (Output_merge_string::do_add_input_section): Handle compressed
7989         debug sections.
7990         * object.cc: Include compressed_output.h.
7991         (Sized_relobj::Sized_relobj): Initialize new data members.
7992         (build_compressed_section_map): New function.
7993         (Sized_relobj::do_read_symbols): Handle compressed debug sections.
7994         * object.h (Object::section_is_compressed): New method.
7995         (Object::do_section_is_compressed): New method.
7996         (Sized_relobj::Compressed_section_map): New type.
7997         (Sized_relobj::do_section_is_compressed): New method.
7998         (Sized_relobj::compressed_sections_): New data member.
7999         * output.cc (Output_section::add_input_section): Handle compressed
8000         debug sections.
8001         * reloc.cc: Include compressed_output.h.
8002         (Sized_relobj::write_sections): Handle compressed debug sections.
8003
8004 2010-07-08  Cary Coutant  <ccoutant@google.com>
8005
8006         * resolve.cc (Symbol_table::resolve): Remember whether undef was
8007         weak when resolving to a dynamic def.
8008         (Symbol_table::should_override): Add adjust_dyndef flag; set it
8009         for weak undef/dynamic def cases. Adjust callers.
8010         * symtab.cc (Symbol::init_fields): Initialize undef_binding_set_ and
8011         undef_binding_weak_.
8012         (Symbol_table::sized_write_globals): Adjust symbol binding.
8013         (Symbol_table::sized_write_symbol): Add binding parameter.
8014         * symtab.h (Symbol::set_undef_binding): New method.
8015         (Symbol::is_undef_binding_weak): New method.
8016         (Symbol::undef_binding_set_, Symbol::undef_binding_weak_): New members.
8017         (Symbol_table::should_override): Add new parameter.
8018         (Symbol_table::sized_write_symbol): Add new parameter.
8019
8020         * testsuite/weak_undef_file1.cc: Add new test case.
8021         * testsuite/weak_undef_file2.cc: Fix header comment.
8022         * testsuite/weak_undef_test.cc: Add new test case.
8023
8024 2010-06-29  Doug Kwan  <dougkwan@google.com>
8025
8026         * arm-reloc-property.cc (Arm_reloc_property::Arm_reloc_property):
8027         Initialize USE_SYMBOL_.
8028         * arm-reloc-property.h (Arm_reloc_property::uses_symbol): New method
8029         definition.
8030         (Arm_reloc_property::uses_symbol_): New data member declaration.
8031         * arm.cc (Target_arm::Relocate::relocate): Exit early if relocation
8032         uses symbol value and symbol is undefined but not weakly undefined.
8033
8034 2010-06-28  Rafael Espindola  <espindola@google.com>
8035
8036         * plugin.cc (Plugin::load): Use dlerror.
8037
8038 2010-06-26  Jeffrey Yaskin  <jyasskin@google.com>
8039
8040         * symtab.cc (detect_odr_violations): When reporting an ODR
8041         violation, report an object where the symbol is defined.
8042
8043 2010-06-25  Doug Kwan  <dougkwan@google.com>
8044
8045         * arm.cc (Target_arm::can_check_for_functions_pointers): Return true.
8046         (Target_arm::section_may_have_icf_unsafe_pointers): New method
8047         definition.
8048         (Target_arm::Scan::local_reloc_may_be_function_pointer,
8049         Target_arm::Scan::global_reloc_may_be_function_pointer): Implement
8050         target hook to detect function points.
8051         (Target_arm::Scan::possible_function_pointer_reloc): New method.
8052         * icf.h (Icf::check_section_for_function_pointers): Change type of
8053         parameter SECTION_NAME to const reference to std::string.  Use
8054         target hook to determine if section may have unsafe pointers.
8055         * target.h (Target::section_may_have_icf_unsafe_pointers): New
8056         method definition.
8057
8058 2010-06-21  Rafael Espindola  <espindola@google.com>
8059
8060         * fileread.cc (Input_file::find_fie): New
8061         (Input_file::open): Use Input_file::find_fie.
8062         * fileread.h (Input_file::find_fie): New
8063         * plugin.cc (set_extra_library_path): New.
8064         (Plugin::load): Add set_extra_library_path to the transfer vector.
8065         (Plugin_manager::set_extra_library_path): New.
8066         (Plugin_manager::add_input_file): Use the extra search path if set.
8067         (set_extra_library_path(): New.
8068         * plugin.h (Plugin_manager): Add set_extra_library_path and
8069         extra_search_path_.
8070
8071 2010-06-19  Cary Coutant  <ccoutant@google.com>
8072
8073         * layout.cc (gdb_sections): Add .debug_types.
8074         (lines_only_debug_sections): Likewise.
8075
8076 2010-06-18  Rafael Espindola  <espindola@google.com>
8077
8078         * plugin.cc (add_input_file,add_input_library)
8079         (Plugin_manager::add_input_file): Make filename arguments const.
8080         * plugin.h (Plugin_manager::add_input_file): Make filename arguments
8081         const.
8082
8083 2010-06-16  Doug Kwan  <dougkwan@google.com>
8084
8085         * arm.cc (Target_arm::do_finalize_sections): Do not emit an
8086         .ARM.attributes section if we have not merged any input
8087         attributes sections.
8088
8089 2010-06-15  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
8090
8091         * arm.cc: Allow combining objects with no EABI version
8092         information.
8093
8094 2010-06-15  Rafael Espindola  <espindola@google.com>
8095
8096         * plugin.cc (Plugin_hook::run): Set in_real_elf for the start symbol.
8097
8098 2010-06-15  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
8099
8100         * fileread.cc: Only #include <sys/uio.h> if HAVE_READV.
8101         (struct iovec): Correct !HAVE_READV definition.
8102
8103 2010-06-10  Cary Coutant  <ccoutant@google.com>
8104
8105         * object.cc (Sized_relobj::do_layout): Defer layout for reloc sections.
8106         (Sized_relobj::do_layout_deferred_sections): Do layout for deferred
8107         reloc sections.
8108         * object.h (Sized_relobj::deferred_layout_relocs_): New data member.
8109
8110         PR 11683
8111         * symtab.h (Symbol::is_placeholder): New member function.
8112         * target-reloc.h (relocate_section): Check for placeholder symbols.
8113
8114         * testsuite/Makefile.am (plugin_test_8): New test.
8115         (plugin_test_9): New test.
8116         * testsuite/Makefile.in: Regenerate.
8117
8118 2010-06-09  Nick Clifton  <nickc@redhat.com>
8119
8120         * yyscript.y (input_list_element): Allow strings prefixed with
8121         the '-' character.  Treat these as libraries.
8122         * script.cc (script_add_library): New function.  Adds a library
8123         specified by "-l<name>" found in an input script.
8124         * script-c.h: Add prototype for script_add_library.
8125
8126 2010-06-07  Doug Kwan  <dougkwan@google.com>
8127
8128         * arm.cc (Target_arm::do_relax): Reserve more space for stubs.
8129         Restrict stub-group size to be within long conditional branch
8130         range when working around cortex-A8 erratum.
8131
8132 2010-06-07  Damien Diederen  <dd@crosstwine.com>
8133
8134         * gold-threads.cc (Lock_impl_threads::Lock_impl_threads): Correct
8135         #ifdef typo.
8136
8137 2010-06-03  Sriraman Tallam  <tmsriram@google.com>
8138
8139         PR gold/11658
8140         * output.cc
8141         (Output_section::Input_section_sort_entry::compare_section_ordering):
8142         Change to return non-zero correctly.
8143         (Output_section::Input_section_sort_section_order_index_compare
8144         ::operator()): Change to fix ambiguity in comparisons.
8145
8146 2010-06-01  Sriraman Tallam  <tmsriram@google.com>
8147
8148         * gold.h (is_wildcard_string): New function.
8149         * layout.cc (Layout::layout): Pass this pointer to add_input_section.
8150         (Layout::layout_eh_frame): Ditto.
8151         (Layout::find_section_order_index): New method.
8152         (Layout::read_layout_from_file): New method.
8153         * layout.h (Layout::find_section_order_index): New method.
8154         (Layout::read_layout_from_file): New method.
8155         (Layout::input_section_position_): New private member.
8156         (Layout::input_section_glob_): New private member.
8157         * main.cc (main): Call read_layout_from_file here.
8158         * options.h (--section-ordering-file): New option.
8159         * output.cc (Output_section::input_section_order_specified_): New
8160         member.
8161         (Output_section::Output_section): Initialize new member.
8162         (Output_section::add_input_section): Add new parameter.
8163         Keep input sections when --section-ordering-file is used.
8164         (Output_section::set_final_data_size): Sort input sections when
8165         section ordering file is specified.
8166         (Output_section::Input_section_sort_entry): Add new parameter.
8167         Check sorting type.
8168         (Output_section::Input_section_sort_entry::compare_section_ordering):
8169         New method.
8170         (Output_section::Input_section_sort_compare::operator()): Change to
8171         consider section_order_index.
8172         (Output_section::Input_section_sort_init_fini_compare::operator()):
8173         Change to consider section_order_index.
8174         (Output_section::Input_section_sort_section_order_index_compare
8175         ::operator()): New method.
8176         (Output_section::sort_attached_input_sections): Change to sort
8177         according to section order when specified.
8178         (Output_section::add_input_section<32, true>): Add new parameter.
8179         (Output_section::add_input_section<64, true>): Add new parameter.
8180         (Output_section::add_input_section<32, false>): Add new parameter.
8181         (Output_section::add_input_section<64, false>): Add new parameter.
8182         * output.h (Output_section::add_input_section): Add new parameter.
8183         (Output_section::input_section_order_specified): New
8184         method.
8185         (Output_section::set_input_section_order_specified): New method.
8186         (Input_section::Input_section): Initialize section_order_index_.
8187         (Input_section::section_order_index): New method.
8188         (Input_section::set_section_order_index): New method.
8189         (Input_section::section_order_index_): New member.
8190         (Input_section::Input_section_sort_section_order_index_compare): New
8191         struct.
8192         (Output_section::input_section_order_specified_): New member.
8193         * script-sections.cc (is_wildcard_string): Delete and move modified
8194         method to gold.h.
8195         (Output_section_element_input::Output_section_element_input): Modify
8196         call to is_wildcard_string.
8197         (Output_section_element_input::Input_section_pattern
8198         ::Input_section_pattern): Ditto.
8199         (Output_section_element_input::Output_section_element_input): Ditto.
8200         * testsuite/Makefile.am (final_layout): New test case.
8201         * testsuite/Makefile.in: Regenerate.
8202         * testsuite/final_layout.cc: New file.
8203         * testsuite/final_layout.sh: New file.
8204
8205 2010-06-01  Rafael Espindola  <espindola@google.com>
8206
8207         * plugin.cc (Plugin::load): Pass the output name to the plugin.
8208
8209 2010-06-01  Rafael Espindola  <espindola@google.com>
8210
8211         * plugin.cc (Sized_pluginobj::::do_add_symbols): Correctly set the
8212         visibility of symbols.
8213
8214 2010-05-27  Doug Kwan  <dougkwan@google.com>
8215
8216         * object.cc (Sized_relobj::do_finalize_local_symbols): Use offset
8217         from start of output section instead of address for a local symbol
8218         in a merged or relaxed section when doing a relocatable link.
8219
8220 2010-05-26  Rafael Espindola  <espindola@google.com>
8221
8222         PR 11604
8223         * gold/object.cc(Sized_relobj::do_layout_deferred_sections): Avoid
8224         adding sections the garbage collector removed.
8225         * gold/testsuite/Makefile.am: Add test.
8226         * gold/testsuite/Makefile.in: Regenerate.
8227         * gold/testsuite/plugin_test_7.sh: New.
8228         * gold/testsuite/plugin_test_7_1.c: New.
8229         * gold/testsuite/plugin_test_7_2.c: New.
8230
8231 2010-05-26  Rafael Espindola  <espindola@google.com>
8232
8233         * script-sections.cc (Output_section_definition::set_section_addresses):
8234         Check for --section-start.
8235
8236 2010-05-26  Doug Kwan  <dougkwan@google.com>
8237
8238         * arm.cc (Arm_scan_relocatable_relocs): New class.
8239         (Target_arm::relocate_special_relocatable): New method.
8240         (Arm_relocate_functions::arm_branch_common): Handle relocatable link.
8241         (Arm_relocate_functions::thumb_branch_common): Same.
8242         (Target_arm::scan_relocatable_relocs): Use Arm_scan_relocatable_relocs
8243         instead of Default_scan_relocatable_relocs.
8244         * target-reloc.h (relocate_for_relocatable): Let target handle
8245         relocation strategy Relocatable_relocs::RELOC_SPECIAL.
8246         * target.h (Sized_target::relocate_special_relocatable): New method.
8247
8248 2010-05-25  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
8249
8250         * timer.cc: Only #include <sys/times.h> if HAVE_TIMES is defined.
8251
8252 2010-05-23  Doug Kwan  <dougkwan@google.com>
8253
8254         * arm.cc (Arm_input_section::do_output_offset): Use convert_types
8255         instead of a cast.
8256         (Target_arm::apply_cortex_a8_workaround): Rewrite a conditional branch
8257         with a direct branch, not a conditional branch, to a stub.
8258         * merge.cc (Output_merge_base::record_input_section): New method
8259         defintion.
8260         (Output_merge_data::do_add_input_section): Record input section if
8261         keeps-input-sections flag is set.
8262         (Output_merge_string::do_add_input_section): Ditto.
8263         * merge.h (Output_merge_base::Output_merge_base): Initialize new data
8264         members KEEPS_INPUT_SECTIONS_, FIRST_RELOBJ_, FIRST_SHNDX_ and
8265         INPUT_SECTIONS_.
8266         (Output_merge_base::keeps_input_sections,
8267         Output_merge_base::set_keeps_input_sections,
8268         Output_merge_base::first_relobj, Output_merge_base::first_shndx): New
8269         method definitions.
8270         (Output_merge_base::Input_sections): New type declaration.
8271         (Output_merge_base::input_sections_begin,
8272         Output_merge_base::input_sections_end,
8273         Output_merge_base::do_set_keeps_input_sections): New method definitions.
8274         (Output_merge_base::bool keeps_input_sections_,
8275         Output_merge_base::first_relobj_, Output_merge_base::first_shndx_,
8276         Output_merge_base::input_sections_): New data members.
8277         (Output_merge_data::do_set_keeps_input_sections): New method
8278         defintion.
8279         (Output_merge_string::do_set_keeps_input_sections): Ditto.
8280         * output.cc (Output_section::Input_section::relobj): Move method
8281         defintion from class declaration to here and handle merge sections.
8282         (Output_section::Input_section::shndx): Ditto.
8283         (Output_section::Output_section): Remove initializations of removed
8284         data members and initialize new data member LOOKUP_MAPS_.
8285         (Output_section::add_input_section): Set keeps-input-sections flag
8286         for a newly created merge output section as appropriate.  Adjust code
8287         to use Output_section_lookup_maps class.
8288         (Output_section::add_relaxed_input_section): Adjst code for lookup
8289         maps code refactoring.
8290         (Output_section::add_merge_input_section): Add a new parameter
8291         KEEPS_INPUT_SECTION.  Adjust code to use Output_section_lookup_maps
8292         class.  If adding input section to a newly created merge output
8293         section fails, remove the new merge section.
8294         (Output_section::convert_input_sections_in_list_to_relaxed_input_sections):
8295         Adjust code for use of the Output_section_lookup_maps class.
8296         (Output_section::find_merge_section): Ditto.
8297         (Output_section::build_lookup_maps): New method defintion.
8298         (Output_section::find_relaxed_input_section): Adjust code to use
8299         Output_section_lookup_maps class.
8300         (Output_section::get_input_sections): Export merge sections.  Adjust
8301         code to use Output_section_lookup_maps class.
8302         (Output_section:::add_script_input_section): Adjust code to use
8303         Output_section_lookup_maps class.  Update lookup maps for merge
8304         sections also.
8305         (Output_section::discard_states): Use Output_section_lookup_maps.
8306         (Output_section::restore_states): Same.
8307         * output.h (Merge_section_properties): Move class defintion out of
8308         Output_section.
8309         (Output_section_lookup_maps): New class.
8310         (Output_section::Input_section::is_merge_section): New method
8311         defintion.
8312         (Output_section::Input_section::relobj): Move defintion out of class
8313         defintion.  Declare method only.
8314         (Output_section::Input_section::shndx): Ditto.
8315         (Output_section::Input_section::output_merge_base): New method defintion.
8316         (Output_section::Input_section::u2_.pomb): New union field.
8317         (Output_section::Merge_section_by_properties_map,
8318         Output_section::Output_section_data_by_input_section_map,
8319         Output_section::Ouptut_relaxed_input_section_by_input_section_map):
8320         Remove types.
8321         (Output_section::add_merge_input_section): Add new parameter
8322         KEEPS_INPUT_SECTIONS.
8323         (Output_section::build_lookup_maps): New method declaration.
8324         (Output_section::merge_section_map_,
8325         Output_section::merge_section_by_properties_map_,
8326         Output_section::relaxed_input_section_map_,
8327         Output_section::is_relaxed_input_section_map_valid_): Remove data
8328         members.
8329         (Output_section::lookup_maps_): New data member.
8330
8331 2010-05-21  Doug Kwan  <dougkwan@google.com>
8332
8333         PR gold/11619
8334         * arm.cc (Arm_input_section::do_output_offset): Add a cast to
8335         avoid a compilation error.
8336
8337 2010-05-19  Rafael Espindola  <espindola@google.com>
8338
8339         * script-sections.cc (Output_section_definition::allocate_to_segment):
8340         Update the phdrs_list even when the output section is NULL.
8341         * testsuite/Makefile.am: Add test.
8342         * testsuite/Makefile.in: Regenerate.
8343         * testsuite/script_test_9.cc: New.
8344         * testsuite/script_test_9.sh: New.
8345         * testsuite/script_test_9.t: New.
8346
8347 2010-05-19  Doug Kwan  <dougkwan@google.com>
8348
8349         * arm.cc (Arm_input_section::original_size): New method.
8350         (Arm_input_section::do_addralign): Add a cast.
8351         (Arm_input_section::do_output_offset): Remove static cast.
8352         (Arm_input_section::original_addralign,
8353          Arm_input_section::original_size_): Change type to uint32_t.
8354         (Arm_input_section::init): Add safe casts for section alignment
8355         and size.
8356         (Arm_input_section::set_final_data_size): Do not set address and
8357         offset of stub table.
8358         (Arm_output_section::fix_exidx_coverage): Change use of of
8359         Output_section::Simple_input_section to that of
8360         Output_section::Input_section.
8361         (Target_arm::do_relax): Set addresses and file offsets of Stub_tables
8362         except for the first pass.
8363         * output.cc (Output_section::get_input_sections): Change type of
8364         input_sections to std::list<Input_section>.
8365         (Output_section::add_script_input_section): Rename from
8366         Output_section::add_simple_input_section.  Change type of SIS
8367         parameter from Simple_input_section to Input_section.
8368         * output.h (Output_section::Simple_input_section): Remove class.
8369         (Output_section::Input_section): Change class visibility to public.
8370         (Output_section::Input_section::addralign): Use stored alignments
8371         for special input sections if set.
8372         (Output_section::Input_section::set_addralign): New method.
8373         (Output_section::get_input_sections): Change parameter type from
8374         list of Simple_input_section to list of Input_section.
8375         (Output_section::add_script_input_section): Rename from
8376         Output_section::add_simple_input_section. Change first parameter's
8377         type from Simple_input_section to Input_section and remove the
8378         second and third parameters.
8379         * script-sections.cc (Input_section::Input_section_list): Change
8380         type to list of Output_section::Input_section/
8381         (Input_section_info::Input_section_info): Change parameter type of
8382         INPUT_SECTION to Output_section::Input_section.
8383         (Input_section_info::input_section): Change return type.
8384         (Input_section_info::input_section_): Change type to
8385         Output_section::Input_section.
8386         (Output_section_element_input::set_section_addresses): Adjust code
8387         to use Output_section::Input_section instead of
8388         Output_section::Simple_input_section.  Adjust code for renaming
8389         of Output_section::add_simple_input_section.
8390         (Orphan_output_section::set_section_addresses): Ditto.
8391
8392 2010-05-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
8393
8394         * gold.h (Unordered_multimap, Unordered_map): Fix defines for
8395         when neither HAVE_TR1_UNORDERED_MAP nor HAVE_EXT_HASH_MAP are set.
8396
8397 2010-05-18  Rafael Espindola  <espindola@google.com>
8398
8399         * options.cc (General_options::finalize): Handle -nostdlib.
8400         * options.h (nostdlib): New option.
8401         * script.cc (script_add_search_dir): Handle -nostdlib.
8402
8403 2010-05-12  Doug Kwan  <dougkwan@google.com>
8404
8405         * arm.cc (Target_arm::do_finalize_sections): Create an empty
8406         attributes section only if there no attributes section after merging.
8407         (Target_arm::merge_object_attributes): Move value of
8408         Tag_MPextension_use_legacy to that of Tag_MPextension_use.
8409         Handle Tag_DIV_use and Tag_MPextension_use_legacy.
8410         * testsuite/Makefile.am (check_SCRIPTS): Add arm_attr_merge.sh
8411         (check_DATA): Add arm_attr_merge_6.stdout, arm_attr_merge_6r_stdout
8412         and arm_attr_merge_7.stdout.
8413         (arm_attr_merge_6.stdout, arm_attr_merge_6 arm_attr_merge_6a.o
8414         arm_attr_merge_6b.o, arm_attr_merge_6r.stdout, arm_attr_merge_6r,
8415         arm_attr_merge_7.stdout, arm_attr_merge_7, arm_attr_merge_7a.o,
8416         arm_attr_merge_7b.o): New rules.
8417         (MOSTLYCLEANFILES): Add arm_attr_merge_6, arm_attr_merge_6r and
8418         arm_attr_merge_7
8419         * testsuite/Makefile.in: Regenerate.
8420         * testsuite/arm_attr_merge.sh: New file.
8421         * testsuite/arm_attr_merge_[67][ab].s: Same.
8422
8423 2010-05-05  Nick Clifton  <nickc@redhat.com>
8424
8425         * po/es.po: Updated Spanish translation.
8426
8427 2010-04-27  H.J. Lu  <hongjiu.lu@intel.com>
8428
8429         * Makefile.am (install-exec-local): Properly install gold as
8430         default cross linker.
8431         * Makefile.in: Regenerated.
8432
8433 2010-04-27  H.J. Lu  <hongjiu.lu@intel.com>
8434             Nick Clifton  <nickc@redhat.com>
8435
8436         * configure.ac (install_as_default): Define and set to false
8437         unless --enable-gold or --enable-gold=both/gold has been
8438         specified.
8439         * configure: Regenerate.
8440
8441         * Makefile.am (install-exec-local): Install the executable as
8442         'ld.gold'.  If install_as_default is true then also install it as
8443         'ld'.
8444         * Makefile.in: Regenerated.
8445
8446 2010-04-24  Ian Lance Taylor  <iant@google.com>
8447
8448         * layout.cc (Layout::layout_reloc): In relocatable link don't
8449         combine reloc sections for grouped sections.
8450
8451 2010-04-23  Sriraman Tallam  <tmsriram@google.com>
8452
8453         * gc.h (gc_process_relocs): Pass information on relocs pointing to
8454         sections that are not ordinary to icf.
8455         * icf.cc (get_section_contents): Handle relocation pointing to section
8456         with no object or shndx information.
8457         * testsuite/Makefile.am: Remove icf_virtual_function_folding_test.sh
8458         * testsuite/Makefile.in: Regenerate.
8459         * testsuite/icf_virtual_function_folding_test.cc: Remove printf.
8460         * testsuite/icf_virtual_function_folding_test.sh: Delete file.
8461
8462 2010-04-22  Ian Lance Taylor  <iant@google.com>
8463
8464         * expression.cc (Expression::Expression_eval_info): Add
8465         result_alignment_pointer field.
8466         (Expression::eval_with_dot): Add result_alignment_pointer
8467         parameter.  Change all callers.
8468         (Expression::eval_maybe_dot): Likewise.
8469         (class Binary_expression): Add alignment_pointer parameter to
8470         left_value and right_value.  Change all callers.
8471         (BINARY_EXPRESSION): Set result alignment.
8472         (class Trinary_expression): Add alignment_pointer parameter to
8473         arg2_value and arg3_value.  Change all callers.
8474         (Trinary_cond::value): Set result alignment.
8475         (Max_expression::value, Min_expression::value): Likewise.
8476         (Align_expression::value): Likewise.
8477         * script-sections.cc (class Sections_element): Add dot_alignment
8478         parameter to set_section_addresses virtual function.  Update
8479         instantiations.
8480         (class Output_section_element): Likewise.
8481         (Script_sections::create_segments): Add dot_alignment parameter.
8482         Change all callers.
8483         (Script_sections::create_segments_from_phdrs_clause): Likewise.
8484         (Script_sections::set_phdrs_clause_addresses): Likewise.
8485         * script-sections.h: Update declarations.
8486         * script.h: Update declarations.
8487         * output.h (Output_segment::set_minimum_p_align): Don't decrease
8488         min_p_align.
8489         * testsuite/script_test_3.t: Set large alignment.
8490         * testsuite/script_test_3.sh: Make sure that at least one LOAD
8491         segment has expected alignment.
8492
8493 2010-04-22  Nick Clifton  <nickc@redhat.com>
8494
8495         * po/gold.pot: Updated by the Translation project.
8496         * po/vi.po: Updated Vietnamese translation.
8497
8498 2010-04-22  H.J. Lu  <hongjiu.lu@intel.com>
8499
8500         * testsuite/Makefile.am (check_PROGRAMS): Add
8501         icf_virtual_function_folding_test.
8502         * testsuite/Makefile.in: Regenerated.
8503
8504 2010-04-15  Andrew Haley  <aph@redhat.com>
8505
8506         * options.h (merge_exidx_entries): New option.
8507         * arm.cc (class Arm_exidx_fixup): Add new arg, merge_exidx_entries.
8508         (class Arm_exidx_fixup::merge_exidx_entries_): New member.
8509         (Output_section::fix_exidx_coverage): Add new arg, merge_exidx_entries.
8510         (Target_arm::merge_exidx_entries): New function.
8511         (process_exidx_entry): Don't merge if merge_exidx_entries_ is false.
8512         (Arm_output_section::fix_exidx_coverage): Pass merge_exidx_entries
8513         to Arm_exidx_fixup constructor.
8514         Add new arg, merge_exidx_entries.
8515         (Target_arm::fix_exidx_coverage): pass merge_exidx_entries to
8516         Arm_output_section::fix_exidx_coverage.
8517
8518 2010-04-18  Sriraman Tallam  <tmsriram@google.com>
8519
8520         * icf.cc (get_section_contents): Check for preemptible functions.
8521         Ignore addend when appropriate.
8522         * symtab.cc (should_add_dynsym_entry): Add new parameter.  Check for
8523         section folded.
8524         (add_from_relobj): Check for section folded.
8525         (set_dynsym_indexes): Fix call to should_add_dynsym_entry.
8526         * symtab.h (should_add_dynsym_entry): Add new parameter.
8527         * target-reloc.h (scan_relocs): Check for section folded.
8528         * x86_64.cc (Target_x86_64::Scan::possible_function_pointer_reloc):
8529         Check reloc types for function pointers in shared objects.
8530         * testsuite/Makefile.am (icf_virtual_function_folding_test): New test
8531         case.
8532         (icf_preemptible_functions_test): New test case.
8533         (icf_string_merge_test): New test case.
8534         * testsuite.Makefile.in: Regenerate.
8535         * testsuite/icf_safe_so_test.sh: Change to not fold foo_glob and
8536         bar_glob.  Refactor code.
8537         * testsuite/icf_preemptible_functions_test.cc: New file.
8538         * testsuite/icf_preemptible_functions_test.sh: New file.
8539         * testsuite/icf_string_merge_test.cc: New file.
8540         * testsuite/icf_string_merge_test.sh: New file.
8541         * testsuite/icf_virtual_function_folding_test.cc: New file.
8542         * testsuite/icf_virtual_function_folding_test.sh: New file.
8543
8544 2010-04-14  Doug Kwan  <dougkwan@google.com>
8545
8546         * arm.cc (Arm_output_section::fix_exidx_coverage): Mark object
8547         for local symbol recounting if we remove a section due to ICF.
8548         * gold.cc (queue_middle_gc_tasks): Create a dummy blocker if
8549         there are no regular objects in input.
8550
8551 2010-04-13  Doug Kwan  <dougkwan@google.com>
8552
8553         * arm.cc (Arm_input_section::set_final_data_size): Compute
8554         accurate final data size instead of using current data size.
8555
8556 2010-04-09  Doug Kwan  <dougkwan@google.com>
8557
8558         * layout.cc (Layout::choose_output_section): Handle script section
8559         types.
8560         (Layout::make_output_section_for_script): Add section type parameter.
8561         Handle script section types.
8562         * layout.h (Layout::make_output_section_for_script): Add section
8563         type parameter.
8564         * output.cc (Output_section::Output_section): Initialize data member
8565         is_noload_.
8566         (Output_section::do_reset_address_and_file_offset): Do not set address
8567         to 0 if section is a NOLOAD section.
8568         * output.h (Output_section::is_noload): New method.
8569         (Output_section::set_is_noload): Ditto.
8570         (Output_section::is_noload_): New data member.
8571         * script-c.h (Script_section_type): New enum type.
8572         (struct Parser_output_section_header): Add new file section_type.
8573         * script-sections.cc (Sections_element::output_section_name): Add
8574         parameter for returning script section type.
8575         (Output_section_definition::output_section_name): Ditto.
8576         (Output_section_definition::section_type)P; New method.
8577         (Output_section_definiton::script_section_type_name): Ditto.
8578         (Output_section_definition::script_section_type_): New data member.
8579         (Output_section_definition::Output_section_definition): Initialize
8580         data member Output_section_definition::script_section_type_.
8581         (Output_section_definition::create_sections): Pass script section type
8582         to Layout::make_output_section_for_script.
8583         (Output_section_definition::output_section_name): Return script
8584         section type to caller.
8585         (Output_section_definition::set_section_address): Do not advance
8586         dot value and load address if section type is NOLOAD.  Set address
8587         of NOLOAD sections regardless of section flags.
8588         (Output_section_definition::print): Print section type if it is
8589         not SCRIPT_SECTION_TYPE_NONE.
8590         (Output_section_definition::section_type): New method.
8591         (Output_section_definition::script_section_type_name): Ditto.
8592         (Script_sections::output_section_name): Add new parameter
8593         PSECTION_TYPE for returning script section type.  Pass it to
8594         section elements.  Handle discard sections.
8595         (Sort_output_sections::operator()): Handle NOLOAD sections.
8596         * script-sections.h (Script_sections::Section_type): New enum type.
8597         (Script_sections::output_section_name): Add a new parameter for
8598         returning script section type.
8599         * script.cc (script_keyword_parsecodes): Add keywords COPY, DSECT,
8600         INFO and NOLOAD.
8601         * yyscript.y (union): Add new field SECTION_TYPE.
8602         (COPY, DSECT, INFO, NOLOAD): New tokens.
8603         (opt_address_and_section_type): Change type to output_section_header.
8604         (section_type): New non-terminal
8605         (section_header): Handle section type.
8606         (opt_address_and_section_type): Return section type value.
8607
8608 2010-04-09  H.J. Lu  <hongjiu.lu@intel.com>
8609
8610         * testsuite/plugin_common_test_1.c (foo): Add prototype.
8611         * testsuite/plugin_common_test_2.c (foo): Likewise.
8612
8613 2010-04-08  Doug Kwan  <dougkwan@google.com>
8614
8615         * merge.cc (Output_merge_data::set_final_data_size): Handle empty
8616         Output_merge_data.
8617         * output.cc (Output_section::add_merge_input_section): Simplify
8618         code and return status of Output_merge_base::add_input_section.
8619         Update merge section map only if Output_merge_base::add_input_section
8620         returns true.
8621
8622 2010-04-07  Doug Kwan  <dougkwan@google.com>
8623
8624         * arm.cc (Arm_relobj::scan_section_for_cortex_a8_erratum): Warn
8625         if section is marked as containing instructions but has no mapping
8626         symbols.
8627         (Arm_relobj::do_count_local_symbols): Call adjust_sym_shndx to get
8628         correct section index.
8629         (Arm_relobj::find_linked_text_section): Ditto.
8630
8631 2010-04-07  Cary Coutant  <ccoutant@google.com>
8632
8633         * archive.cc (include_member): Destroy Read_symbols_data object before
8634         releasing file.
8635         * object.cc (Read_symbols_data::~Read_symbols_data) New destructor.
8636         * object.h (Read_symbols_data::Read_symbols_data) New constructor.
8637         (Read_symbols_data::~Read_symbols_data) New destructor.
8638         (Section_relocs::Section_relocs) New constructor.
8639         (Section_relocs::~Section_relocs) New destructor.
8640         (Read_relocs_data::Read_relocs_data) New constructor.
8641         (Read_relocs_data::~Read_relocs_data) New destructor.
8642         * testsuite/binary_unittest.cc (Sized_binary_test): Set sd member
8643         pointers to NULL after deleting.
8644
8645 2010-04-07  Doug Kwan  <dougkwan@google.com>
8646
8647         * arm.cc: Replace "endianity" with "endianness" in comments.
8648         (Arm_exidx_cantunwind): Ditto.
8649         (Arm_relobj::Arm_relobj): Initialize merge_flags_and_attribures.
8650         (Arm_relobj::merge_flags_and_attributes): New method.
8651         (Arm_relobj::merge_flags_and_attributes_): New data member.
8652         (Arm_exidx_cantunwind::do_fixed_endian_write): Fix formatting.
8653         (Arm_relobj::scan_sections_for_stubs): Ditto.
8654         (Arm_relobj::do_read_symbols): Check to see if we really want to
8655         merge processor-specific flags and attributes.  Exit early if
8656         an object is empty except for section names and the undefined symbol.
8657         (Target_arm::do_finalize_sections): Move check for ELF format to
8658         Arm_relobj::do_read_symbols.  Merge processor specific flags and
8659         attributes from a regular object only when we have determined that
8660         it is aapropriate.  Do not create an .ARM.attributes section in
8661         output if there is no regular input object.
8662         (Target_arm::merge_processor_specific_flags): Check
8663         --warn-mismatch before printing any error.
8664         (Target_arm::merge_object_attributes): Ditto.
8665         * gold.cc (queue_middle_tasks): Handle the case in which there is
8666         no regular object in input.
8667         * options.cc (General_options::parse_EB): New method.
8668         (General_options::parse_EL): Same.
8669         (General_options::General_options): Initialize endianness_.
8670         * options.h (-EB, -EL, -no-pipeline-knowledge, -p, --warn-mismatch):
8671         New options.
8672         (General_options::Endianness): New enum.
8673         (General_options::endianness): New method.
8674         (General_options::endianness_): New data member.
8675         * parameters.cc (Parameters::set_options): Check target endianness.
8676         (Parameters::set_target_once): Ditto.
8677         (Parameters::check_target_endianness): New method.
8678         (parameters_force_valid_target): If either -EL or -EB is specified,
8679         use it to define endianness of default target.
8680         * parameters.h (Parameters::check_target_endianness): New method
8681         declaration.
8682         * target.h (class Target): Change "endianity" to "endianness"
8683         in comments.
8684
8685 2010-04-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
8686
8687         * configure.ac (AM_INIT_AUTOMAKE): Add option no-dist.
8688         * configure: Regenerate.
8689         * Makefile.in: Regenerate.
8690         * testsuite/Makefile.in: Regenerate.
8691
8692 2010-04-06  Cary Coutant  <ccoutant@google.com>
8693
8694         gcc PR lto/42757
8695         * plugin.cc (Pluginobj::get_symbol_resolution_info): Check for
8696         prevailing definitions of common symbols.
8697         * testsuite/plugin_test_6.sh: New test case.
8698         * testsuite/plugin_common_test_1.c: New test case.
8699         * testsuite/plugin_common_test_2.c: New test case.
8700         * testsuite/Makefile.am (plugin_test_6): New test case.
8701         * testsuite/Makefile.in: Regenerate.
8702
8703 2010-04-06  Nick Clifton  <nickc@redhat.com>
8704
8705         * po/vi.po: New Vietnamese translation.
8706
8707 2010-03-30  Doug Kwan  <dougkwan@google.com>
8708
8709         * arm.cc (Target_arm::using_thumb_only): Handle v6-M
8710
8711 2010-03-25  Doug Kwan  <dougkwan@google.com>
8712
8713         * gold/arm.cc (Arm_exidx_fixup::update_offset_map): Rearrange code
8714         to avoid a conversion warning on a 32-bit host.
8715
8716 2010-03-24  Ian Lance Taylor  <iant@google.com>
8717
8718         * testsuite/script_test_3.t: Add a TLS segment.
8719         * testsuite/Makefile.am (check_PROGRAMS): Add
8720         tls_phdrs_script_test.
8721         (tls_phdrs_script_test_SOURCES): Define.
8722         (tls_phdrs_script_test_DEPENDENCIES): Define.
8723         (tls_phdrs_script_test_LDFLAGS): Define.
8724         (tls_phdrs_script_test_LDADD): Define.
8725         * testsuite/Makefile.in: Rebuild.
8726
8727 2010-03-23  Cary Coutant  <ccoutant@google.com>
8728
8729         * fileread.cc (find_or_make_view): Fix comment.
8730
8731 2010-03-23  Ian Lance Taylor  <iant@google.com>
8732
8733         * script-sections.cc (class Orphan_section_placement): Define
8734         PLACE_TLS and PLACE_TLS_BSS.
8735         (Orphan_section_placement::Orphan_section_placement): Initialize
8736         new places.
8737         (Orphan_section_placement::find_place): Handle SHF_TLS sections.
8738         * testsuite/Makefile.am (check_PROGRAMS): Add tls_script_test.
8739         (tls_script_test_SOURCES): Define.
8740         (tls_script_test_DEPENDENCIES): Define.
8741         (tls_script_test_LDFLAGS): Define.
8742         (tls_script_test_LDADD): Define.
8743         * testsuite/Makefile.in: Rebuild.
8744
8745 2010-03-22  Doug Kwan  <dougkwan@google.com>
8746
8747         * arm.cc (Arm_relocate_functions::abs8,
8748         Arm_relocate_functions::abs16): Use correct check for overflow
8749         specified in the ARM ELF specs.
8750         (Arm_relocate_functions): thumb_branch_common.  Handle bit 1 of branch
8751         target of a BLX instruction specially.
8752         (Reloc_stub::stub_type_for_reloc): Ditto.
8753         (Relocate::relocate): Use symbolic names instead of numeric relocation
8754         codes to report error.
8755         (Target_arm::do_relox): Reduce default stub-group size for Cortex-A8
8756         workaround.
8757         * testsuite/Makefile.am (check_DATA): add thumb_blx_in_range.stdout,
8758         thumb_blx_out_of_range.stdout, thumb2_blx_in_range.stdout and
8759         thumb2_blx_out_of_range.stdout
8760         (thumb_bl_out_of_range, thumb_bl_out_of_range.o,
8761         thumb2_bl_out_of_range, thumb2_bl_out_of_range.o): Fix dependenices.
8762         (thumb_blx_in_range.stdout, thumb_blx_in_range, thumb_blx_in_range.o,
8763         thumb_blx_out_of_range.stdout, thumb_blx_out_of_range,
8764         thumb_blx_out_of_range.o, thumb2_blx_in_range.stdout,
8765         thumb2_blx_in_range, thumb2_blx_in_range.o,
8766         thumb2_blx_out_of_range.stdout, thumb2_blx_out_of_range,
8767         thumb2_blx_out_of_range.o): New rules.
8768         (MOSTLYCLEANFILES): Add thumb_blx_in_range, thumb_blx_out_of_range,
8769         thumb2_blx_in_range and thumb2_blx_out_of_range.
8770         * testsuite/Makefile.in: Regenerate.
8771         * arm_branch_in_range.sh: Add tests for THUMB BLX.
8772         * testsuite/thumb_blx_in_range.s: New file.
8773         * testsuite/thumb_blx_out_of_range.s: New file.
8774
8775 2010-03-22  Rafael Espindola  <espindola@google.com>
8776
8777         * archive.cc (Should_include): Move to archive.h.
8778         (should_include_member): Make it a member of Archive.
8779         (Lib_group): New.
8780         (Add_lib_group_symbols): New.
8781         * archive.h: Include options.h.
8782         (Archive_member): Moved from Archive.
8783         (Should_include): Moved from archive.cc.
8784         (Lib_group): New.
8785         (Add_lib_group_symbols): New.
8786         * dynobj.cc (do_should_include_member): New.
8787         * dynobj.h (do_should_include_member): New.
8788         * gold.cc (queue_initial_tasks): Update call to queue.
8789         * main.cc (main): Print lib group stats.
8790         * object.cc (do_should_include_member): New.
8791         * object.h: Include archive.h.
8792         (Object::should_include_member): New.
8793         (Object::do_should_include_member): New.
8794         (Sized_relobj::do_should_include_member): New.
8795         * options.cc (General_options::parse_start_lib): New.
8796         (General_options::parse_end_lib): New.
8797         (Input_arguments::add_file): Handle lib groups.
8798         (Input_arguments::start_group): Check we are not in a lib.
8799         (Input_arguments::start_lib): New.
8800         (Input_arguments::end_lib): New.
8801         * options.h (General_options): Add start_lib and end_lib.
8802         (Input_argument::lib_): New.
8803         (Input_argument::lib): New.
8804         (Input_argument::is_lib): New.
8805         (Input_file_lib): New.
8806         (Input_arguments::in_lib_): New.
8807         (Input_arguments::in_lib): New.
8808         (Input_arguments::start_lib): New.
8809         (Input_arguments::end_lib_): New.
8810         * plugin.cc (Pluginobj::get_symbol_resolution_info): Mark symbols
8811         in unused members as preempted.
8812         (Sized_pluginobj::do_should_include_member): New.
8813         * plugin.h (Sized_pluginobj::do_should_include_member): New.
8814         * readsyms.cc (Read_symbols::locks): If we are just reading a member,
8815         return the blocker.
8816         (Read_symbols::do_whole_lib_group): New.
8817         (Read_symbols::do_lib_group): New.
8818         (Read_symbols::do_read_symbols): Handle lib groups.
8819         (Read_symbols::get_name): Handle lib groups.
8820         * readsyms.h (Read_symbols): Add an archive member pointer.
8821         (Read_symbols::do_whole_lib_group): New.
8822         (Read_symbols::do_lib_group): New.
8823         (Read_symbols::member_): New.
8824         * script.cc (read_input_script): Update call to queue_soon.
8825
8826 2010-03-19  Doug Kwan  <dougkwan@google.com>
8827
8828         * arm.cc (Stub_table::Stub_table): Initialize new data members
8829         Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_.
8830         (Stub_table::add_reloc_stub): Assign stub offset and update
8831         Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_.
8832         (Stub_table::reloc_stubs_size_, Stub_table::reloc_stubs_addralign_):
8833         New data members.
8834         (Stub_table::update_data_size_and_addralign): Use
8835         Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_
8836         instead of going over all reloc stubs.
8837         (Stub_table::finalize_stubs): Do not assign reloc stub offsets.
8838         * stringpool.cc (Stringpool_template::Stringpool_template): Initialize
8839         Stringpool_template::offset_ to size of Stringpool_char.
8840         (Stringpool_template::new_key_offset): Remove code to initialize
8841         Stringpool_template::offset_.
8842         * stringpool.h (Stringpool_template::set_no_zero_null): Set
8843         Stringpool_template::offset_ to zero.
8844
8845 2010-03-15  Doug Kwan  <dougkwan@google.com>
8846
8847         * stringpool.cc (Stringpool_template::Stringpool_template): Initialize
8848         offset_.
8849         (Stringpool_template::new_key_offset): New method.
8850         (Stringpool_template::add_string): Assign offsets when adding new
8851         strings.
8852         (Stringpool_template::set_string_offsets): Do not set string offsets
8853         when not optimizing.
8854         * stringpool.h (Chunked_vector::Chunked_vector): Initialize data
8855         member size_.
8856         (Chunked_vector::clear): Clear size_.
8857         (Chunked_vector::reserve): Call reserve method of all Element_vectors.
8858         (Chunked_vector::size): Return size_.
8859         (Chunked_vector::push_back): Use size_ to find insert position.
8860         (Chunked_vector::size_): New data member.
8861         (Stringpool_template::set_no_zero_null): Assert string set is empty.
8862         (Stringpool_template::new_key_offset): New method declaration.
8863         (Stringpool_template::offset_): New data member.
8864
8865 2010-03-15   Rafael Espindola  <espindola@google.com>
8866
8867         * readsyms.cc (Read_symbols::do_read_symbols): Update calls to
8868         Add_symbols' constructor.
8869         * readsyms.h (Add_symbols): Remove the input_group member.
8870
8871 2010-03-10  Ian Lance Taylor  <iant@google.com>
8872
8873         * reloc.cc (Sized_relobj::split_stack_adjust_reltype): Call the
8874         target to ask whether a reference to a symbol requires a stack
8875         split.
8876         * target.h (Target::is_call_to_non_split): New function.
8877         (Target::do_is_call_to_non_split): Declare virtual function.
8878         * target.cc: Include "symtab.h".
8879         (Target::do_is_call_to_non_split): New function.
8880         * i386.cc (Target_i386::do_is_call_to_non_split): New function.
8881
8882 2010-03-10  Cary Coutant  <ccoutant@google.com>
8883
8884         * fileread.cc (File_read::~File_read): Don't delete whole_file_view_.
8885         (File_read::open[1]): Remove initial mapping of whole_file_view_.
8886         (File_read::open[2]): Add whole_file_view_ to list of views.
8887         (File_read::make_view): Remove test of whole_file_view_.
8888         (File_read::find_or_make_view): Create whole_file_view_ if
8889         necessary.
8890         (File_read::clear_views): Replace bool parameter with enum;
8891         adjust all callers.  Don't delete views with permanent data;
8892         do delete cached views and views from archives if
8893         --no-keep-files-mapped is set.  Set whole_file_view_ to NULL
8894         if clearing the corresponding view.
8895         * fileread.h (File_read::Clear_views_mode): New enum.
8896         (File_read::View::is_permanent_view): New method.
8897         (File_read::clear_views): Replace bool parameter
8898         with enum; adjust all callers.
8899         * options.h (General_options): Change keep_files_mapped option;
8900         add map_whole_files.
8901         * readsyms.cc (Add_symbols::run): Delete sd_ object before
8902         releasing the file.
8903         * reloc.cc (Scan_relocs::run): Delete rd_ object before releasing
8904         the file.
8905
8906 2010-03-10  David S. Miller  <davem@davemloft.net>
8907
8908         * sparc.cc (Target_sparc::Scan::local): Accept R_SPARC_WPLT30.
8909
8910 2010-03-09  Sriraman Tallam  <tmsriram@google.com>
8911
8912         * icf.cc (get_section_contents): Add '@' marker after processing the
8913         merge reloc.
8914
8915 2010-03-08  Doug Kwan  <dougkwan@google.com>
8916
8917         * gold/arm.cc (Arm_exidx_fixup::update_offset_map): Fix build breakage
8918         due to a conversion warning.
8919         (Arm_relobj::update_output_local_symbol_count): Check for local
8920         symbol with unset output index.
8921
8922 2010-03-05  Ian Lance Taylor  <iant@google.com>
8923
8924         * options.h (class General_options): Add --spare-dynamic-tags.
8925         * output.cc (Output_data_dynamic::set_final_data_size): Implement
8926         --spare-dynamic-tags.
8927
8928 2010-03-05  Ian Lance Taylor  <iant@google.com>
8929
8930         * incremental.cc: Include "libiberty.h".
8931
8932 2010-03-05  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
8933
8934         * dynobj.h (Verdef::Verdef): Add is_info arg, is_info member
8935         function, is_info_ member.
8936         * dynobj.cc (Verdef::write): Set VER_FLG_INFO if this->is_info_.
8937         (Versions::Versions): Update caller.
8938         (Versions::define_base_version): Likewise.
8939         (Versions::add_def): Likewise.
8940
8941 2010-03-03  Sriraman Tallam  <tmsriram@google.com>
8942
8943         * i386.cc (Target_i386::can_check_for_function_pointers): New function.
8944         (Scan::possible_function_pointer_reloc): New function.
8945         (Scan::local_reloc_may_be_function_pointer): Change to call
8946         possible_function_pointer_reloc.
8947         (Scan::global_reloc_may_be_function_pointer): Ditto.
8948         * icf.h (Icf::check_section_for_function_pointers): Change to reject
8949         relocations in ".data.rel.ro._ZTV" section.
8950         * testsuite/icf_safe_so_test.sh: Change to pass i386.
8951         * testsuite/icf_safe_so_test.cc: Ditto.
8952         * testsuite/icf_safe_test.cc: Ditto.
8953         * testsuite/icf_safe_test.sh: Ditto.
8954
8955 2010-03-03  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
8956             Ian Lance Taylor  <iant@google.com>
8957
8958         * target-reloc.h (relocate_section): Check the symbol table index
8959         for -1U before setting the local symbol index.
8960         (scan_relocatable_relocs): If copying the relocation, record that
8961         the local symbol is required.
8962         * object.h (Symbol_value::is_output_symtab_index_set): New
8963         function.
8964         (Symbol_value::may_be_discarded_from_output_symtab): New
8965         function.
8966         (Symbol_value::has_output_symtab_entry): New function.
8967         (Symbol_value::needs_output_symtab_entry): Remove.
8968         (Symbol_value::output_symtab_index): Make sure the symbol index is
8969         set.
8970         (Symbol_value::set_output_symtab_index): Make sure the symbol
8971         index is not set.  Make sure the new index is valid.
8972         (Symbol_value::set_must_have_output_symtab_entry): New function.
8973         (Symbol_value::has_output_dynsym_entry): New function.
8974         (Symbol_value::set_output_dynsym_index): Make sure the new index
8975         is valid.
8976         (Sized_relobj::set_must_have_output_symtab_entry): New function.
8977         * object.cc (Sized_relobj::do_count_local_symbols): Only discard a
8978         local symbol if permitted.
8979         (Sized_relobj::do_finalize_local_symbols): Call
8980         is_output_symtab_index_set rather than needs_output_symtab_entry.
8981         (Sized_relobj::write_local_symbols): Call has_output_symtab_entry
8982         rather than needs_output_symtab_entry.  Call
8983         has_output_dynsym_entry rather than needs_output_dynsym_entry.
8984         * arm.cc (Arm_relobj::update_output_local_symbol_count): Call
8985         is_output_symtab_index_set rather than needs_output_symtab_entry.
8986         * testsuite/discard_locals_relocatable_test.c: New file.
8987         * testsuite/discard_locals_test.sh: Test -r.
8988         * testsuite/Makefile.am (check_DATA): Add
8989         discard_locals_relocatable_test1.syms,
8990         discard_local_relocatable_test2.syms.
8991         (MOSTLYCLEANFILES): Likewise.  Also add
8992         discard_locals_relocatable_test1.lout and
8993         discard_locals_relocatable_test2.out.
8994         (discard_locals_relocatable_test1.syms): New target.
8995         (discard_locals_relocatable_test.o): New target.
8996         (discard_locals_relocatable_test1.out): New target.
8997         (discard_locals_relocatable_test2.syms): New target.
8998         (discard_locals_relocatable_test2.out): New target.
8999         (various): Add missing ../ld-new dependencies.
9000         * testsuite/Makefile.in: Rebuild.
9001
9002 2010-03-03  Nick Clifton  <nickc@redhat.com>
9003
9004         * po/fi.po: New Finnish translation.
9005
9006 2010-03-01  Doug Kwan  <dougkwan@google.com>
9007
9008         * layout.cc (Layout::Layout): Force section types of .init_array*,
9009         .preinit_array* and .fini_array* sections.
9010         * output.cc (Output_section::Input_section_sort_entry::has_priority):
9011         Fix check of return value of std::string::find.().
9012         (Output_section::Input_section_sort_compare::operator()): Remove
9013         comment about .init_array.
9014         (Output_section::Input_section_sort_init_fini_compare::operator()):
9015         New method.
9016         (Output_section::sort_attached_input_sections): Handle .init_array
9017         and .fini_array specially.
9018         * output.h (Output_section::Inut_section_sort_compare): Update
9019         comment.
9020         (Output_section::Input_section_sort_init_fini_compare): New struct.
9021
9022 2010-02-26  Doug Kwan  <dougkwan@google.com>
9023
9024         * arm.cc (Target_arm::Relocate::reloc_is_non_pic): Treat
9025         R_ARM_PREL31 and R_ARM_SBREL31 as position independent.
9026         * testsuite/debug_msg.sh: Avoid matching source line number for
9027         use of global variable undef_int.
9028
9029 2010-02-26  Doug Kwan  <dougkwan@google.com>
9030
9031         * arm.cc (Target_arm::scan_reloc_for_stub): Move code handling
9032         R_ARM_V4BX to Target_arm::scan_reloc_section_for_stubs.
9033         (Target_arm::scan_reloc_section_for_stubs): Instead of calling
9034         scan_reloc_for_stub, do all processing of R_ARM_V4BX here.
9035         * options.cc (General_options::General_options): Initialize member
9036         fix_v4bx_.
9037         * testsuite/Makefile.am (check_SCRIPTS): Add arm_fix_v4bx.sh
9038         (check_DATA): Add arm_fix_v4bx.stdout, arm_fix_v4bx_interworking.stdout
9039         and rm_no_fix_v4bx.stdout
9040         (arm_fix_v4bx.stdout, arm_fix_v4bx, arm_fix_v4bx.o,
9041         arm_fix_v4bx_interworking.stdout, arm_fix_v4bx_interworking,
9042         arm_no_fix_v4bx.stdout, arm_no_fix_v4bx): New make rules.
9043         (MOSTLYCLEANFILES): Add arm_fix_v4bx, arm_fix_v4bx_interworking
9044         and arm_no_fix_v4bx.
9045         * Makefile.in: Regenerate.
9046         * testsuite/arm_fix_v4bx.s: New file.
9047         * testsuite/arm_fix_v4bx.sh: Ditto.
9048
9049 2010-02-24  Doug Kwan  <dougkwan@google.com>
9050
9051         * arm.cc (Target_arm::got_section): Make the .got section the first
9052         non RELRO section in the data segment.
9053         * testsuite/script_test_5.sh: Fix match patterns to avoid matching
9054         suffixes of section names.
9055
9056 2010-02-24  Doug Kwan  <dougkwan@google.com>
9057
9058         * arm.cc (Target_arm::do_finalize_sections): Skip processor specific
9059         flags and attributes merging if an input file is a binary file.
9060         * fileread.cc (Input_file::open): Record format of original file.
9061         * fileread.h (Input_file::Format): New enum type.
9062         (Input_file::Input_file): Initialize data member format_.
9063         (Input_file::format): New method definition.
9064         (Input_file::format_):: New data member.
9065
9066 2010-02-24  Doug Kwan  <dougkwan@google.com>
9067
9068         * arm.cc (Arm_output_data_got): New class.
9069         (ARM_TCB_SIZE): New constant
9070         (Target_arm): Use Arm_output_data_got instead of Output_data_got.
9071         (Arm_output_section::fix_exidx_coverage): Add a parameter for layout.
9072         If user uses a script with a SECTIONS clause, issue only a warning
9073         for a misplaced EXIDX input section.  Otherwise, issue an error.
9074         (Arm_relobj::do_gc_process_relocs): Exit early if we are not doing
9075         garbage collection.
9076         (Target_arm::got_mode_index_entry): Handle static linking.
9077         (Target_arm::Scan::local): Ditto.
9078         (Target_arm::Scan::global): Ditto.
9079         (Target_arm::Relocate::relocate_tls): Handle static linking.  Fix
9080         all incorrectly implemented relocations.
9081         (Target_arm::fix_exidx_coverage): Pass layout to
9082         Arm_output_section::fix_exidx_coverage.
9083         * layout.cc (Layout::section_name_mapping): Remove trailing dots
9084         from ".ARM.exidx." and ".ARM.extab.".
9085
9086 2010-02-23  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
9087
9088         * arm.cc (Target_arm::do_finalize_sections): Create attribute
9089         section if it does not already exist.
9090         * attributes.cc (Attributes_section_data::Attributes_section_data):
9091         Don't crash if size is zero.
9092
9093 2010-02-23  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
9094             Ian Lance Taylor  <iant@google.com>
9095
9096         * gold.cc (queue_middle_tasks): If no input files were opened,
9097         exit.
9098         * workqueue.h (Task_function::Task_function): Assert that there is
9099         a blocker.
9100
9101 2010-02-22  Doug Kwan  <dougkwan@google.com>
9102
9103         * gold-threads.h (Once::~Once): Explicitly define virtual destructor.
9104         * icf.cc (get_section_contents): Cast snprintf arguments to long long
9105         types to avoid warnings due to different uint64_t implementations
9106         on different hosts.
9107
9108 2010-02-21  Doug Kwan  <dougkwan@google.com>
9109
9110         * arm.cc (Arm_relocate_functions::arm_branch_common): Fix bug in
9111         handling of the maximum backward branch offset.
9112         (Arm_relocate_functions::thumb_branch_common): Ditto.
9113         * testsuite/Makefile.am (check_SCRIPTS): Add arm_branch_in_range.sh.
9114         (check_DATA): Add arm_bl_in_range.stdout, arm_bl_out_of_range.stdout
9115         thumb_bl_in_range.stdout, thumb_bl_out_of_range.stdout,
9116         thumb2_bl_in_range.stdout and thumb2_bl_out_of_range.stdout.
9117         (arm_bl_in_range.stdout, arm_bl_in_range, arm_bl_in_range.o,
9118         arm_bl_out_of_range.stdout, arm_bl_out_of_range,
9119         arm_bl_out_of_range.o, thumb_bl_in_range.stdout, thumb_bl_in_range,
9120         thumb_bl_in_range.o, thumb_bl_out_of_range.stdout,
9121         thumb_bl_out_of_range thumb_bl_out_of_range.o,
9122         thumb2_bl_in_range.stdout, thumb2_bl_in_range, thumb2_bl_in_range.o
9123         thumb2_bl_out_of_range.stdout, thumb2_bl_out_of_range,
9124         thumb2_bl_out_of_range.o): New rules.
9125         (MOSTLYCLEANFILES): Add arm_bl_in_range, arm_bl_out_of_range,
9126         thumb_bl_in_range, thumb_bl_out_of_range, thumb2_bl_in_range and
9127         thumb2_bl_out_of_range
9128         * testsuite/Makefile.in: Regenerate.
9129         * testsuite/arm_bl_in_range.s: New file.
9130         * testsuite/arm_bl_out_of_range.s: Ditto.
9131         * testsuite/arm_branch_in_range.sh: Ditto.
9132         * testsuite/arm_branch_range.t: Ditto.
9133         * testsuite/thumb2_branch_range.t: Ditto.
9134         * testsuite/thumb_bl_in_range.s: Ditto.
9135         * testsuite/thumb_bl_out_of_range.s: Ditto.
9136         * testsuite/thumb_branch_range.t: Ditto.
9137
9138 2010-02-20  Sriraman Tallam  <tmsriram@google.com>
9139
9140         * gc.h (gc_process_relocs): Change vectors to point to the new list.
9141         Add reloc offset information.
9142         * icf.cc (get_section_contents): Change iterators to point to the new
9143         vectors. Add reloc offset information to the contents.
9144         * icf.h (Icf::Sections_reachable_info): New typedef.
9145         (Icf::Sections_reachable_list): New typedef.
9146         (Icf::Offset_info): New typedef.
9147         (Icf::Reloc_info): New struct typedef.
9148         (Icf::Reloc_info_list): New typedef.
9149         (Icf::symbol_reloc_list): Delete method.
9150         (Icf::addend_reloc_list): Delete method.
9151         (Icf::section_reloc_list): Delete method.
9152         (Icf::reloc_info_list): New method.
9153         (Icf::reloc_info_list_): New member.
9154
9155 2010-02-19  Doug Kwan  <dougkwan@google.com>
9156
9157         * arm-reloc.def: Mark R_ARM_TLS_GD32, R_ARM_TLS_LDM32,
9158         R_ARM_TLS_LDO32, R_ARM_TLS_IE32 and R_ARM_TLS_LE32 are implemented.
9159         * arm.cc (Arm_relocation_functions): New forward declaration.
9160         (Target_arm::Target_arm): Initialize new data members
9161         got_mod_index_offset_ and tls_base_symbol_defined_.
9162         (Target_arm::Relocate::relocate_tls): New method.
9163         (Target_arm::optimize_tls_reloc, Target_arm::define_tls_base_symbol,
9164          Target_arm::got_mod_index_entry, Target_arm::rel_tls_desc_section):
9165         New methods.
9166         (Target_arm::Got_type): Add GOT_TYPE_TLS_NOFFSET, GOT_TYPE_OFFSET,
9167         GOT_TYPE_TLS_PAIR and GOT_TYPE_TLS_DESC.
9168         (Target_arm::got_mod_index_offset_,
9169         Target_arm::tls_base_symbol_defined_): New data members.
9170         (Target_arm::Scan::local, Target::Scan::global,
9171         Target_arm::Relocate::relocate): Handle 32-bit initial TLS
9172         relocations.
9173
9174 2010-02-18  Doug Kwan  <dougkwan@google.com>
9175
9176         * arm.cc (Arm_relobj::find_linked_text_section): New method.
9177         (Arm_relobj::make_exidx_input_section): Pass section index of linked
9178         text section as a parameter becuase some broken tools may not set
9179         the link in section header.
9180         (Target_arm::has_got_section): New method.
9181         (Target_arm::scan_section_for_cortex_a8_stubs): Treat an input section
9182         without any mapping symbol as data only.  Remove warning.
9183         (Arm_relobj::do_read_synbols): If an EXIDX input section has no
9184         link in its section header, try to discover the link by inspecting the
9185         REL31 relocation at the beginning of the section.
9186         (Target_arm::Scan::check_non_pic): Report name of offending relocation
9187         in error message.
9188         (Target_arm::Scan::global): Treat any reference to the symbol
9189         _GLOBAL_OFFSET_TABLE_ as a GOT access.
9190
9191 2010-02-12  Sriraman Tallam  <tmsriram@google.com>
9192
9193         * arm.cc (Scan::local_reloc_may_be_function_pointer): New function.
9194         (Scan::global_reloc_may_be_function_pointer): New function.
9195         * sparc.cc (Scan::local_reloc_may_be_function_pointer): New function.
9196         (Scan::global_reloc_may_be_function_pointer): New function.
9197         * powerpc.cc (Scan::local_reloc_may_be_function_pointer): New function.
9198         (Scan::global_reloc_may_be_function_pointer): New function.
9199         * i386.cc (Scan::local_reloc_may_be_function_pointer): New function.
9200         (Scan::global_reloc_may_be_function_pointer): New function.
9201         * x86_64.cc (Scan::local_reloc_may_be_function_pointer): New function.
9202         (Scan::global_reloc_may_be_function_pointer): New function.
9203         (Scan::possible_function_pointer_reloc): New function.
9204         (Target_x86_64::can_check_for_function_pointers): New function.
9205         * gc.h (gc_process_relocs): Scan relocation types to determine if
9206         function pointers were taken for targets that support it.
9207         * icf.cc (Icf::find_identical_sections): Include functions for
9208         folding in safe ICF whose pointer is not taken.
9209         * icf.h (Secn_fptr_taken_set): New typedef.
9210         (fptr_section_id_): New member.
9211         (section_has_function_pointers): New function.
9212         (set_section_has_function_pointers): New function.
9213         (check_section_for_function_pointers): New function.
9214         * options.h: Fix comment for safe ICF option.
9215         * target.h (can_check_for_function_pointers): New function.
9216         * testsuite/Makefile.am: Add icf_safe_so_test test case.
9217         Modify icf_safe_test for X86-64.
9218         * testsuite/Makefile.in: Regenerate.
9219         * testsuite/icf_safe_so_test.cc: New file.
9220         * testsuite/icf_safe_so_test.sh: New file.
9221         * testsuite/icf_safe_test.cc (kept_func_3): New function.
9222         (main): Change to take pointer to function kept_func_3.
9223         * testsuite/icf_safe_test.sh (arch_specific_safe_fold): Check if safe
9224         folding is done correctly for X86-64.
9225
9226 2010-02-12  David S. Miller  <davem@davemloft.net>
9227
9228         * output.h (Output_reloc<SHT_REL>::Output_reloc): Add
9229         is_symbolless parameter.
9230         (Output_reloc<SHT_REL>::is_symbolless): New.
9231         (Output_reloc<SHT_REL>::is_symbolless_): New.
9232         (Output_reloc<SHT_REL>::type_): Decrease to 29 bits.
9233         (Output_reloc<SHT_RELA>::Output_reloc): Add is_symbolless parameter.
9234         (Output_reloc<SHT_RELA>::is_symbolless): New.
9235         (Output_data_reloc::add_global): Handle is_symbolless.
9236         (Output_data_reloc::add_global_relative): Likewise.
9237         (Output_data_reloc::add_local): Likewise.
9238         (Output_data_reloc::add_local_relative): Likewise.
9239         (Output_data_reloc::add_symbolless_global_addend): New.
9240         (Output_data_reloc::add_symbolless_local_addend): New.
9241         * output.cc (Output_reloc<SHT_REL>::Output_reloc): Handle
9242         is_symbolless.
9243         (Output_reloc::set_needs_dynsym_index): Test ->is_symbolless_
9244         instead of ->is_relative_
9245         (Output_reloc::write): Likewise.
9246         (Output_reloc::get_symbol_index): Return 0 when ->is_symbolless_
9247         (Output_reloc::write_rel): Simplify.
9248
9249         * sparc.cc (Target_sparc::Scan::local): Use
9250         ->add_symbolless_local_addend as needed.
9251         (Target_sparc::Scan::global): Use ->add_symbolless_global_addend as
9252         needed.  Also, emit appropriate unaligned vs. aligned dynamic reloc
9253         based upon relocation offset.
9254
9255 2010-02-11  Doug Kwan  <dougkwan@google.com>
9256
9257         * arm.cc (Target_arm::Scan::local): Fix bugs in relocation handling.
9258         (Target_arm::Scan::global): Ditto.  Also remove a comment before the
9259         beginning of function.
9260         (Target_arm::Relocate::relocate): Remove error messages for MOVW_ABS
9261         and MOVT_ABS relocations.  Those are non issued in scanning.  Fix
9262         parameter is_32bit in calls to should_apply_static_reloc.
9263         * testsuite/Makefile.am (check_SCRIPTS): Add arm_abs_global.sh.
9264         (check_DATA): Add arm_abs_global.stdout.
9265         (arm_abs_lib.o, libarm_abs.so, arm_abs_global.o, arm_abs_global,
9266         arm_abs_global.stdout): New rules.
9267         (MOSTLLYCLEANFILES): Add arm_abs_global
9268         * Makefile.in: Regenerate.
9269         * testsuite/arm_abs_global.s: New file.
9270         * testsuite/arm_abs_global.sh: Ditto.
9271         * testsuite/arm_abs_lib.s: Ditto.
9272
9273 2010-02-11  Ian Lance Taylor  <iant@google.com>
9274
9275         * gold.cc (queue_middle_gc_tasks): Use a separate blocker for each
9276         Read_relocs task.
9277         (queue_middle_tasks): Likewise, and also for Scan_relocs.  Run
9278         Allocate_commons_task first.
9279         * reloc.cc (Read_relocs::run): Pass next_blocker_ down to next
9280         task, rather than symtab_lock_.
9281         (Gc_process_relocs::~Gc_process_relocs): New function.
9282         (Gc_process_relocs::is_runnable): Check this_blocker_.
9283         (Gc_process_relocs::locks): Use next_blocker_ rather than
9284         blocker_.
9285         (Scan_relocs::~Scan_relocs): New function.
9286         (Scan_relocs::is_runnable): Check this_blocker_ rather than
9287         symtab_lock_.
9288         (Scan_relocs::locks): Drop symtab_lock_ and blocker_.  Add
9289         next_blocker_.
9290         * reloc.h (class Read_relocs): Drop symtab_lock_ and blocker_
9291         fields.  Add this_blocker_ and next_blocker_ fields.  Adjust
9292         constructor accordingly.
9293         (class Gc_process_relocs): Likewise.
9294         (class Scan_relocs): Likewise.
9295         * common.h (class Allocate_commons_task): Remove symtab_lock_
9296         field, and corresponding constructor parameter.
9297         * common.cc (Allocate_commons_tasK::is_runnable): Remove use of
9298         symtab_lock_.
9299         (Allocate_commons_task::locks): Likewise.
9300
9301 2010-02-11  Ian Lance Taylor  <iant@google.com>
9302
9303         * gold-threads.h (class Once): Define.
9304         (class Initialize_lock): Rewrite as child of Once.
9305         * gold-threads.cc (class Once_initialize): Define.
9306         (once_pointer_control): New static variable.
9307         (once_pointer, once_arg): New static variables.
9308         (c_run_once): New static function.
9309         (Once::Once, Once::run_once, Once::internal_run): New functions.
9310         (class Initialize_lock_once): Remove.
9311         (initialize_lock_control): Remove.
9312         (initialize_lock_pointer): Remove.
9313         (initialize_lock_once): Remove.
9314         (Initialize_lock::Initialize_lock): Move to gold-threads.h.
9315         (Initialize_lock::initialize): Rewrite.
9316         (Initialize_lock::do_run_once): New function.
9317         * archive.cc (Archive::interpret_header): Only clear name if it is
9318         not already empty.
9319         * fileread.cc: Include "gold-threads.h"
9320         (file_counts_lock): New static variable.
9321         (file_counts_initialize_lock): Likewise.
9322         (File_read::release): Only increment counts when using --stats.
9323         Use a lock around the increment.
9324         * parameters.cc (class Set_parameters_target_once): Define.
9325         (set_parameters_target_once): New static variable.
9326         (Parameters::Parameters): Move here from parameters.h.
9327         (Parameters::set_target): Rewrite.
9328         (Parameters::set_target_once): New function.
9329         (Parameters::clear_target): Move here and rewrite.
9330         * parameters.h (class Parameters): Update declarations.  Add
9331         set_parameters_target_once_ field.
9332         (Parameters::Parameters): Move to parameters.cc.
9333         (Parameters::clear_target): Likewise.
9334         * readsyms.cc (Read_symbols::do_group): Create a Start_group
9335         task.
9336         (Start_group::~Start_group): New function.
9337         (Start_group::is_runnable): New function.
9338         (Start_group::locks, Start_group::run): New functions.
9339         (Finish_group::run): Change saw_undefined to size_t.
9340         * readsyms.h (class Start_group): Define.
9341         (class Finish_group): Change saw_undefined_ field to size_t.
9342         (Finish_group::Finish_group): Remove saw_undefined and
9343         this_blocker parameters.  Change all callers.
9344         (Finish_group::set_saw_undefined): New function.
9345         (Finish_group::set_blocker): New function.
9346         * symtab.h (class Symbol_table): Change saw_undefined to return
9347         size_t.  Change saw_undefined_ field to size_t.
9348         * target-select.cc (Set_target_once::do_run_once): New function.
9349         (Target_selector::Target_selector): Initialize set_target_once_
9350         field.  Don't initialize lock_ and initialize_lock_ fields.
9351         (Target_selector::instantiate_target): Rewrite.
9352         (Target_selector::set_target): New function.
9353         * target-select.h (class Set_target_once): Define.
9354         (class Target_selector): Update declarations.  Make
9355         Set_target_once a friend.  Remove lock_ and initialize_lock_
9356         fields.  Add set_target_once_ field.
9357
9358 2010-02-10  Ian Lance Taylor  <iant@google.com>
9359
9360         * dirsearch.cc (Dirsearch::initialize): Add all blockers before
9361         queueing any tasks.
9362         * gold.cc (queue_middle_gc_tasks): Likewise.  Fix final blocker.
9363         (queue_middle_tasks): Add all blockers before queueing any tasks.
9364         (queue_final_tasks): Likewise.
9365         * token.h (Task_token::add_blockers): New function.
9366         * object.h (Input_objects::number_of_relobjs): New function.
9367
9368 2010-02-10  Ian Lance Taylor  <iant@google.com>
9369
9370         * i386.cc (Relocate::relocate_tls): A local symbol is final if not
9371         shared, not if not position independent.
9372         * x86_64.cc (Relocate::relocate_tls): Likewise.
9373         * testsuite/Makefile.am (check_PROGRAMS): Add tls_pie_pic_test.
9374         (tls_pie_pic_test): New target.
9375         * testsuite/Makefile.in: Rebuild.
9376
9377         * testsuite/Makefile.am (check_PROGRAMS): Add tls_pie_test.
9378         (tls_test_main_pie.o, tls_test_pie.o): New targets.
9379         (tls_test_file2_pie.o, tls_test_c_pie.o, tls_pie_test): Likewise.
9380         * testsuite/Makefile.in: Rebuild.
9381
9382 2010-02-09  David S. Miller  <davem@davemloft.net>
9383
9384         * sparc.cc (Target_sparc::Scan::local): Do not emit relocs other than
9385         R_SPARC_RELATIVE using ->add_local_relative().
9386         (Target_sparc::Scan::global): Likewise for ->add_global_relative().
9387
9388         * output.h (Output_data_dynamic::add_section_size): New method
9389         that takes two Output_data objects.
9390         (Output_data_dynamic::Dynamic_entry): Create storage for secondary
9391         entry param.  Handle it in initializers.
9392         * output.cc (Output_data_dynamic::Dynamic_entry::write): For
9393         DYNAMIC_SECTION_SIZE, add in second object size if non-NULL.
9394         * layout.h (Layout::add_target_dynamic_tags): Add dynrel_includes_plt
9395         arg.
9396         * layout.cc (Layout::add_target_dynamic_tags): If dynrel_includes_plt,
9397         and .rela.plt exists, set DT_REL{,A}SZ to sum of .rela.dyn and .rela.plt
9398         * arm.cc (Target_arm::do_finalize_sections): Update to pass false
9399         for dynrel_includes_plt.
9400         * i386.cc (Target_i386::do_finalize_sections): Likewise.
9401         * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
9402         * sparc.cc (Target_sparc::make_plt_entry): Force .rela.dyn to be output
9403         before .rela.plt
9404         (Target_sparc::do_finalize_sections): Update to pass true for
9405         dynrel_includes_plt.
9406         * powerpc.cc (Target_powerpc::make_plt_entry): Force .rela.dyn to be
9407         output before .rela.plt
9408         (Target_powerpc::do_finalize_sections): Update to pass true for
9409         dynrel_includes_plt when 32-bit.
9410
9411 2010-02-08  Doug Kwan  <dougkwan@google.com>
9412
9413         * arm.cc (Arm_relobj::simple_input_section_output_address): New
9414         method.
9415         (Arm_relobj::section_needs_cortex_a8_stub_scanning,
9416         Arm_relobj::scan_section_for_cortex_a8_stubs,
9417         Arm_relobj::do_relocation_section): Instead of calling
9418         Output_section::output_address, use faster
9419         Arm_relobj::simple_input_section_output_address.
9420
9421 2010-02-08  David S. Miller  <davem@davemloft.net>
9422
9423         * sparc.cc (Target_sparc::Relocate::relocate): If relocation offset is
9424         unaligned for R_SPARC_16, R_SPARC_32, or R_SPARC_64, use the unaligned
9425         relocation helper function.
9426
9427         * sparc.cc (Target_sparc::Scan::local): Handle R_SPARC_GOTDATA_OP*
9428         just like R_SPARC_GOT{10,13,22}.
9429         (Target_sparc::Scan::local): Likewise.
9430         (Target_sparc::Relocate:relocate): Likewise.
9431
9432 2010-02-06  Ian Lance Taylor  <iant@google.com>
9433
9434         * configure.ac: Rewrite targetobjs duplicate removal code to use
9435         only shell constructs.
9436         * configure: Rebuild.
9437
9438 2010-02-05  Doug Kwan  <dougkwan@google.com>
9439
9440         PR 11247
9441         * arm.cc (Arm_relobj::section_is_scannable): New method.
9442         (Arm_relobj::section_needs_reloc_stub_scanning): Use it.
9443         (Arm_relobj::section_needs_cortex_a8_stub_scanning): Same.
9444
9445 2010-02-04  Doug Kwan  <dougkwan@google.com>
9446
9447         PR 11247
9448         * arm-reloc-property.cc (cstdio): Include.
9449         * configure.ac (targetobjs): Remove duplicates.
9450         * configure: Regenerate.
9451         * resolve.cc (Symbol_table::resolve): Explicit instantiate both
9452         big and little endian version for a given address size.
9453
9454 2010-02-03  Doug Kwan  <dougkwan@google.com>
9455
9456         * arm-reloc-property.cc
9457         (Arm_reloc_property_table::reloc_name_in_error_message): New method
9458         definition.
9459         * arm-reloc-property.h
9460         (Arm_reloc_property_table::get_implemented_static_reloc_property):
9461         New method definition.
9462         (Arm_reloc_property_table::reloc_name_in_error_message): New method
9463         declaration.
9464         * arm-reloc.def (THM_MOVT_ABS, THM_MOVT_PREL, THM_MOVT_BREL): Change
9465         overflow to N.
9466         (GOT_PREL): Change implemented to Y.
9467         * arm.cc (Target_arm::reloc_uses_thumb_bit): Remove method.
9468         (Target_arm::Relocate::reloc_needs_sym_origin): Remove method.
9469         (Arm_relocate_functions::movw_abs_nc): Remove method.
9470         (Arm_relocate_functions::movt_abs): Ditto.
9471         (Arm_relocate_functions::thm_movw_abs_nc): Ditto.
9472         (Arm_relocate_functions::thm_movt_abs): Ditto.
9473         (Arm_relocate_functions::movw_rel_nc): Ditto.
9474         (Arm_relocate_functions::movw_rel): Ditto.
9475         (Arm_relocate_functions::movt_rel): Ditto.
9476         (Arm_relocate_functions:thm_movw_rel_nc): Ditto.
9477         (Arm_relocate_functions:thm_movw_rel): Ditto.
9478         (Arm_relocate_functions:thm_movt_rel): Ditto.
9479         (Arm_relocate_functions::movw, Arm_relocate_functions::movt,
9480         (Arm_relocate_functions::thm_movw, Arm_relocate_functions::thm_movt):
9481         New method definitions.
9482         (Arm_relocation_functions::arm_grp_alu): Add assertion for group index.
9483         (Arm_relocation_functions::arm_grp_ldr): Ditto.
9484         (Arm_relocation_functions::arm_grp_ldrs): Ditto.
9485         (Arm_relocation_functions::arm_grp_ldc): Ditto.
9486         (Target_arm::Relocate::relocate): Check for non-static or
9487         unimplemented relocation code and exit early.  Change calls to
9488         Target_arm::reloc_uses_thumb_bit and
9489         Target_arm::Reloc::reloc_needs_sym_origin to use relocation property
9490         instead.  Refactor code to handle similar relocations to increase
9491         code sharing.  Remove check for unsupported relocation code in switch
9492         statement.
9493         (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Use
9494         relocation property table to find out size.  Change error message to
9495         print out the name of a relocation code instead of the numeric value.
9496         (Target_arm::scan_reloc_for_stub): Use relocation property table
9497         instead of calling Target_arm::reloc_uses_thumb_bit().
9498
9499 2010-02-02  Doug Kwan  <dougkwan@google.com>
9500
9501         * arm.cc (Target_arm::relocate_section): Do view adjustment for all
9502         types of relaxed input section.
9503
9504 2010-02-02  Doug Kwan  <dougkwan@google.com>
9505
9506         * Makefile.am (HFILES): Add arm-reloc-property.h.
9507         (DEFFILES): New.
9508         (TARGETSOURCES): Add arm-reloc-property.cc
9509         (ALL_TARGETOBJS): Add arm-reloc-property.$(OBJEXT)
9510         (libgold_a_SOURCES): $(DEFFILES)
9511         * Makefile.in: Regenerate.
9512         * arm-reloc-property.cc: New file.
9513         * arm-reloc-property.h: New file.
9514         * arm-reloc.def: New file.
9515         * arm.cc: Update comments.
9516         (arm-reloc-property.h): New included header.
9517         (arm_reloc_property_table): New global variable.
9518         (Target_arm::do_select_as_default_target): New method definition.
9519         * configure.tgt (armeb*-*-*,armbe*-*-*,arm*-*-*): Add
9520         arm-reloc-property to targ_extra_obj.
9521         * parameters.cc (set_parameters_target): Call
9522         Target::select_as_default_target().
9523         * target.h (Target::select_as_default_target): New method definition.
9524         (Target::do_select_as_default_target): Same.
9525
9526 2010-02-01  Doug Kwan  <dougkwan@google.com>
9527
9528         * arm.cc (Arm_exidx_fixup::Arm_exidx_fixup): Initialize
9529         first_output_text_section_.
9530         (Arm_exidx_fixup::first_output_text_section): New method definition.
9531         (Arm_exidx_fixup::first_output_text_section_): New data member.
9532         (Arm_exidx_fixup::process_exidx_section): Record the first text
9533         output section seen.
9534         (Arm_output_section::fix_exidx_coverage): Set correct linked section
9535         and entsize in output section header.
9536
9537 2010-01-29  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
9538
9539         * gold/arm.cc: Added support for the ARM relocations: R_ARM_THM_PC8,
9540         R_ARM_THM_PC12, R_ARM_THM_ALU_PREL_11_0.
9541         (Arm_relocate_functions::thm_alu11): New Method.
9542         (Arm_relocate_functions::thm_pc8): New Method.
9543         (Arm_relocate_functions::thm_pc12): New Method.
9544         (Target_arm::Scan::local): Handle the relocations.
9545         (Target_arm::Scan::global): Likewise.
9546         (Target_arm::Relocate::relocate): Likewise.
9547         (Target_arm:Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
9548
9549 2010-01-29  Doug Kwan  <dougkwan@google.com>
9550
9551         * arm.cc (Target_arm::Scan::global): General PLTs for the same set
9552         of relocation types as ld.
9553
9554 2010-01-29  Doug Kwan  <dougkwan@google.com>
9555
9556         * arm.cc (Arm_relocate_functions::arm_branch_common) Change visibility
9557         to public.
9558         (Arm_relocate_functions::thumb_branch_common): Ditto.
9559         (Arm_relocate_functions::thm_call, Arm_relocate_functions::thm_jump24,
9560         Arm_relocate_functions::thm_xpc22, Arm_relocate_functions::plt32,
9561         Arm_relocate_functions::xpc25, Arm_relocate_functions::call,
9562         Arm_relocate_functions::jump24): Remove.
9563         (Target_arm::Relocate::relocate): Adjust code to call
9564         Arm_relocation_functions::arm_branch_common and
9565         Arm_relocation_functions::thumb_branch_common instead of their removed
9566         wrappers.  Merge switch-cases together to reduce source code size.
9567
9568 2010-01-29  Doug Kwan  <dougkwan@google.com>
9569
9570         * arm.cc (Arm_relobj::Arm_relobj): Initialize new data member
9571         output_local_symbol_count_needs_update_.
9572         (Arm_relobj::output_local_symbol_count_needs_update,
9573          Arm_relobj::set_output_local_symbol_count_needs_update,
9574          Arm_relobj::update_output_local_symbol_count): New methods.
9575         (Arm_relobj::output_local_symbol_count_needs_update_): New data
9576         member.
9577         (Arm_exidx_cantunwind::do_fixed_endian_write): Write address
9578         of pointed function as in a R_ARM_PREL31 relocation.
9579         (Arm_output_section<big_endian>::fix_exidx_coverage): Mark objects
9580         for output local symbol count updating.
9581         (Target_arm::do_relax): Update output local symbol counts in objects
9582         if necessary.
9583         * object.h (Sized_relobj::set_output_local_symbol_count): New method.
9584
9585 2010-01-29  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
9586
9587         * arm.cc: Added support for the ARM relocations:
9588         R_ARM_MOVW_BREL_NC, R_ARM_MOVT_BREL, R_ARM_MOVW_BREL,
9589         R_ARM_THM_MOVW_BREL_NC, R_ARM_THM_MOVT_BREL, R_ARM_THM_MOVW_BREL.
9590         (Arm_relocate_functions::movw_rel_nc): Renamed (was
9591         movw_prel_nc).
9592         (Arm_relocate_functions::movw_rel): New method.
9593         (Arm_relocate_functions::movt_rel): Renamed (was movt_prel).
9594         (Arm_relocate_functions::thm_movw_rel_nc): Renamed (was
9595         thm_movw_prel_nc).
9596         (Arm_relocate_functions::thm_movw_rel): New method.
9597         (Arm_relocate_functions::thm_movt_rel): Renamed (was
9598         thm_movt_prel).
9599         (Target_arm::Scan::local): Handle MOVW_BREL/MOVT_BREL
9600         relocations.
9601         (Target_arm::Scan::global): Likewise.
9602         (Target_arm::Relocate::relocate): Likewise.
9603         (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
9604         Likewise.
9605
9606 2010-01-27  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
9607
9608         * arm.cc: Added support for ARM group relocations.
9609         (Target_arm::reloc_needs_sym_origin): New method.
9610         (Arm_relocate_functions::calc_grp_kn): New method.
9611         (Arm_relocate_functions::calc_grp_residual): New method.
9612         (Arm_relocate_functions::calc_grp_gn): New method.
9613         (Arm_relocate_functions::arm_grp_alu): New Method.
9614         (Arm_relocate_functions::arm_grp_ldr): New Method.
9615         (Arm_relocate_functions::arm_grp_ldrs): New Method.
9616         (Arm_relocate_functions::arm_grp_ldc): New Method.
9617         (Target_arm::Scan::local): Handle the ARM group relocations.
9618         (Target_arm::Scan::global): Likewise.
9619         (Target_arm::Relocate::relocate): Likewise.
9620         (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
9621         Likewise.
9622
9623 2010-01-26  Doug Kwan  <dougkwan@google.com>
9624
9625         * arm.cc (set): Include.
9626         (class Arm_exidx_fixup): Change type of last_input_section_ to const
9627         pointer type.
9628         (Arm_output_section::Text_section_list): New type.
9629         (Arm_output_section::append_text_sections_to_list): New method.
9630         (Arm_output_section::fix_exidx_coverage): Ditto.
9631         (Arm_relobj::Arm_relobj): Initialize exidx_section_map_.
9632         (Arm_relobj::convert_input_section_to_relaxed_section): Use
9633         Relobj::set_section_offset() instead of
9634         Sized_relobj::invalidate_section_offset().
9635         (Arm_relobj::section_needs_reloc_stub_scanning): Add an extra
9636         parameter for section headers. Ignore relocation sections for
9637         unallocated sections and EXIDX sections.
9638         (Target_arm::fix_exidx_coverage): New method.
9639         (Target_arm::output_section_address_less_than): New type.
9640         (Arm_exidx_fixup::add_exidx_cantunwind_as_needed): Use index of the
9641         linked text section instead of the EXIDX section.
9642         (Arm_output_section::create_stub_group): Add an assertion to check
9643         that this is not an EXIDX output section.
9644         (Arm_output_section::append_text_sections_to_list): New method.
9645         (Arm_output_section::fix_exidx_coverage): Ditto.
9646         (Arm_relobj::scan_sections_for_stubs): Adjust call to
9647         Arm_relobj::section_needs_reloc_stub_scanning.
9648         (Target_arm::do_relax): Fix EXIDX output section coverage in the
9649         first pass.
9650         (Target_arm::fix_exidx_coverage): New method.
9651         * object.h (Relobj::set_output_section): New method.
9652         (Sized_relobj::invalidate_section_offset): Remove method.
9653         (Sized_relobj::do_invalidate_section_offset): Remove method.
9654         (Sized_relobj::do_set_section_offset): Handle offset value -1.
9655
9656 2010-01-25  Doug Kwan  <dougkwan@google.com>
9657
9658         * arm.cc (Arm_exidx_merged_section::do_output_offset):
9659         Fix warning due to signed and unsigned comparison on a 32-bit host.
9660
9661 2010-01-22  Doug Kwan  <dougkwan@google.com>
9662
9663         * arm.cc (Target_arm::do_relax): Record an output section for section
9664         offset adjustment it contains any stub table that has changed.
9665         * layout.cc (Layout::clean_up_after_relaxation): Adjust section
9666         offsets in an output section if necessary.
9667         * output.cc (Output_section::Output_section): Initialize
9668         section_offsets_need_adjustments_.
9669         (Output_section::add_input_section_for_script): Renamed to
9670         Output_section::add_simple_input_section.
9671         (Output_section::save_states): Add a comment.
9672         (Output_section::discard_states): New method defintion.
9673         (Output_section::adjust_section_offsets): Same.
9674         * output.h (Output_section::add_input_section_for_script): Renamed to
9675         Output_section::add_simple_input_section.
9676         (Output_section::discard_states): New method declaration.
9677         (Output_section::adjust_section_offsets): Same.
9678         (Output_section::section_offsets_need_adjustment,
9679         Output_section::set_section_offsets_need_adjustment): New method
9680         definitions.
9681         (Output_section::section_offsets_need_adjustment_): New data member.
9682         * script-sections.cc
9683         (Output_section_element_input::set_section_address): Adjust code for
9684         renaming of Output_section::add_input_section_for_script.
9685         (Orphan_output_section::set_section_address): Same.
9686
9687 2010-01-22  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
9688
9689         * gold/arm.cc (Target_arm): Updated fix_v4bx method and usage of
9690         Fix_v4bx enum values .
9691         * gold/options.h (General_options): New option definitions.
9692         (General_options::fix_v4bx): New method.
9693         (General_options::Fix_v4bx): New enum.
9694         * gold/options.cc (General_options::parse_fix_v4bx): New method.
9695         (General_options::parse_fix_v4bx_interworking): New method.
9696
9697 2010-01-22  Doug Kwan  <dougkwan@google.com>
9698
9699         * arm.cc (Arm_exidx_fixup): New class.
9700
9701 2010-01-21  Doug Kwan  <dougkwan@google.com>
9702
9703         * arm.cc (Arm_exidx_cantunwind, Arm_exidx_merged_section): New
9704         classes.
9705         (Arm_exidx_section_offset_map): New type.
9706
9707 2010-01-21  Doug Kwan  <dougkwan@google.com>
9708
9709         * arm.cc (Arm_exidx_input_section): New class.
9710         (Arm_relobj::exidx_input_section_by_link,
9711         Arm_relobj::exidx_input_section_by_shndx,
9712         Arm_relobj::make_exidx_input_section): New methods.
9713         (read_arm_attributes_section): Remove.
9714         (Arm_relobj::do_read_symbols): Look for ARM.exidx sections and record
9715         information about them.
9716         (Arm_dynobj::do_read_symbols): Move code in read_arm_attributes_section
9717         to here.
9718
9719 2010-01-20  Doug Kwan  <dougkwan@google.com>
9720
9721         * arm.cc (Target_arm::Arm_input_section_map): Change key type from
9722         Input_section_specifier to Section_id.
9723         (Target_arm::new_arm_input_section: Adjust code for change of key
9724         type.
9725         (Target_arm::find_arm_input_section): Ditto.
9726         * gc.h (object.h): Include for Section_id nand Section_id_hash.
9727         (Section_id): Remove.
9728         (Garbage_collection::Section_id_hash): Remove.
9729         * icf.h (object.h): Include for Section_id nand Section_id_hash.
9730         (Section_id): Remove.
9731         (Icf::Section_id_hash): Remove.
9732         * object.h (Section_id, Const_section_id, Section_id_hash,
9733         Const_section_id_hash): New type definitions.
9734         * output.cc (Output_section::add_relaxed_input_section): Change to
9735         use Const_section_id instead of Input_section_specifier as key type.
9736         (Output_section::add_merge_input_section): Ditto.
9737         (Output_section::build_relaxation_map): Change to use Section_id
9738         instead of Input_section_specifier as key type.
9739         (Output_section::convert_input_sections_in_list_to_relaxed_sections):
9740         Ditto.
9741         (Output_section::convert_input_sections_to_relaxed_sections): Change
9742         to use Const_section_id instead of Input_section_specifier as key type.
9743         (Output_section::find_merge_section): Ditto.
9744         (Output_section::find_relaxed_input_section): Ditto.
9745         * output.h (Input_section_specifier): Remove class.
9746         (Output_section::Output_section_data_by_input_section_map): Change
9747         key type to Const_section_id.
9748         (Output_section::Output_relaxed_input_section_by_input_section_map):
9749         Ditto.
9750         (Output_section::Relaxation_map): Change key type to Section_id.
9751
9752 2010-01-20  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
9753
9754         * gold/arm.cc: Added support for R_ARM_V4BX relocation
9755         (class Arm_v4bx_stub): New class.
9756         (DEF_STUBS): Updated definition to support v4_veneer_bx.
9757         (Stub_factory::make_arm_v4bx_stub): New method.
9758         (Stub_factory::elf32_arm_stub_v4_veneer_bx): New veneer template.
9759         (Stub_table::empty): Handle v4bx stubs.
9760         (Stub_table::add_arm_v4bx_stub): New method.
9761         (Stub_table::find_arm_v4bx_stub): New method.
9762         (Arm_relocate_functions::v4bx): New method.
9763         (Target_arm::fix_v4bx): New method.
9764         (Target_arm::Target_arm): Handle R_ARM_V4BX.
9765         (Stub_table::relocate_stubs): Likewise.
9766         (Stub_table::do_write): Likewise.
9767         (Stub_table::update_data_size_and_addralign): Likewise.
9768         (Stub_table::finalize_stubs):  Likewise.
9769         (Target_arm::Scan::local): Likewise.
9770         (Target_arm::Scan::global): Likewise.
9771         (Target_arm::do_finalize_sections): Likewise.
9772         (Target_arm::Relocate::relocate): Likewise.
9773         (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
9774         Likewise.
9775         (Target_arm::scan_reloc_for_stub): Likewise.
9776         (Target_arm::scan_reloc_section_for_stubs): Likewise.
9777
9778 2010-01-19  Ian Lance Taylor  <iant@google.com>
9779
9780         * output.cc (Output_section_headers::do_sized_write): Write large
9781         segment count to sh_info field.
9782         (Output_file_header::do_sized_write): For large segment count,
9783         write PN_XNUM to e_phnum field.
9784
9785 2010-01-15  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
9786
9787         * arm.cc (Arm_relocate_functions::thm_jump6): New function.
9788         (Arm_relocate_functions::thm_jump8): New function.
9789         (Arm_relocate_functions::thm_jump11): New function.
9790         (Target_arm::Scan::local): Handle R_ARM_THM_JUMP6, R_ARM_THM_JUMP8,
9791         R_ARM_THM_JUMP11.
9792         (Target_arm::Scan::global): Likewise.
9793         (Target_arm::Relocate::relocate): Likewise.
9794         (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
9795         Likewise.
9796
9797 2010-01-14  Doug Kwan  <dougkwan@google.com>
9798
9799         * arm.cc (map, utility): Include headers.
9800         (Target_arm::apply_cortex_a8_workaround): New method.
9801         (Arm_relobj::do_relocate_sections): Apply any Cortex-A8 workaround.
9802         (Target_arm::Scan::local): Handle R_ARM_THM_JUMP24, R_ARM_THM_JUMP19.
9803         (Target_arm::Scan::global): R_ARM_THM_JUMP19.
9804         (Target_arm::do_finalize_sections): Set fix_cortex_a8_ according to
9805         the --[no-]fix-cortex-a8 command line options.
9806         (Target_arm::Relocate::relocate): Handle R_ARM_JUMP19.
9807         (Target_arm::relocate_stub): Use addend in instruction template.
9808         * options.h (DEFINE_bool): Set the user-set flag.
9809         (General_options): Add --[no-]-fix-cortex options.
9810         * output.cc (Output_section::convert_input_sections_to_relaxed_sections)
9811         : Update fast look-up map after conversion.
9812
9813 2010-01-14  Sriraman Tallam  <tmsriram@google.com>
9814
9815         * object.cc (Sized_relobj::do_layout): Change to call layout_gnu_stack
9816         in the first pass of do_layout.
9817
9818 2010-01-13  Doug Kwan  <dougkwan@google.com>
9819
9820         * arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
9821         Arm_relobj::scan_sections_for_stubs): Rearrange code to avoid an
9822         apparent compiler problem of not folding static constant integral
9823         data members of elfcpp::Elf_sizes<32>.
9824
9825 2010-01-13  Doug Kwan  <dougkwan@google.com>
9826
9827         * arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
9828         Arm_relobj::section_needs_cortex_a8_stub_scanning,
9829         Arm_relobj::scan_section_for_cortex_a8_erratum,
9830         Arm_relobj::scan_span_for_cortex_a8_erratum): New methods.
9831         (Arm_relobj::scan_sections_for_stubs): Move code deciding what
9832         sections to scan for relocation stubs into a new method
9833         Arm_relobj::section_needs_reloc_stub_scanning.  Handle both
9834         relocation and Cortex-A8 stub scanning.
9835         (Target_arm::do_relax): Force stubs to be after stubbed sections
9836         if fixing the Cortex-A8 erratum.  Remove all Cortex-A8 stubs at
9837         the beginning of a new relaxation pass.  Update a comment.
9838         (Target_arm::scan_span_for_cortex_a8_erratum): New method definition.
9839
9840 2010-01-12  Ian Lance Taylor  <iant@google.com>
9841
9842         * target-reloc.h (visibility_error): New inline function.
9843         (relocate_section): Call visibility_error.
9844         * testsuite/Makefile.am (check_DATA): Add protected_3.err.
9845         (MOSTLYCLEANFILES): Likewise.
9846         (protected_4_pic.o, protected_3.err): New targets.
9847         * testsuite/protected_4.cc: New file.
9848
9849 2010-01-12  Doug Kwan  <dougkwan@google.com>
9850
9851         * arm.cc (Cortex_a8_reloc): New class.
9852         (Target_arm::Target_arm): Initialize new data members fix_cortex_a8_
9853         and cortex_a8_relocs_info_.
9854         (Target_arm::fix_cortex_a8): New method definition.
9855         (Target_arm::Cortex_a8_relocs_info): New type.
9856         (Target_arm::fix_cortex_a8_, Target_arm::cortex_a8_relocs_info_):
9857         New data member declarations.
9858         (Target_arm::scan_reloc_for_stub): Record information about
9859         relocations for THUMB branches that might be exempted from the
9860         Cortex-A8 workaround.
9861         (Target_arm::do_relax): Clear all Cortex-A8 relocation information
9862         at the beginning of a relaxation pass.
9863
9864 2010-01-12  Doug Kwan  <dougkwan@google.com>
9865
9866         * arm.cc (Arm_relobj::mapping_symbols_info_): New data member.
9867         (Arm_relobj::Mapping_symbol_position,
9868          Arm_reloj::Mapping_symbol_position_less,
9869          Arm_relobj::Mapping_symbols_info): New types.
9870         (Target_arm::is_mapping_symbol_name): New method definition.
9871         (Arm_relobj::do_count_local_symbols): Save information about mapping
9872         symbols.
9873
9874 2010-01-11  Doug Kwan  <dougkwan@google.com>
9875
9876         * arm.cc (Arm_relocate_functions::thumb32_branch_offset,
9877         Arm_relocate_functions::thumb32_branch_upper,
9878         Arm_relocate_functions::thumb32_branch_lower,
9879         Arm_relocate_functions::thumb32_cond_branch_offset,
9880         Arm_relocate_functions::thumb32_cond_branch_upper,
9881         Arm_relocate_functions::thumb32_cond_branch_lower,
9882         Arm_relocate_functions::thm_jump19): New methods to handle THUMB
9883         branch offset encoding.
9884         (Arm_relocate_functions::thumb_branch_common): Use new branch
9885         offset encoding methods to avoid code duplication.
9886         (Stub_template::Stub_template) Handle THUMB16_SPECIAL_TYPE.
9887         (Stub_addend_reader::operator()): Use new branch encoding method
9888         to avoid code duplication.
9889
9890 2010-01-11  Doug Kwan  <dougkwan@google.com>
9891
9892         * arm.cc (Arm_relobj::do_gc_process_relocs): New method.
9893         (Target_arm::do_finalize_sections): Define special EXIDX section
9894         symbols only if referenced.
9895         * gc.h (Garbage_collection::add_reference): New method.
9896         (gc_process_relocs): Use Garbage_collection::add_reference to avoid
9897         code duplication.
9898
9899 2010-01-11  Ian Lance Taylor  <iant@google.com>
9900
9901         * script.cc (Version_script_info::build_expression_list_lookup):
9902         Change complaing about duplicate wildcard match from error to
9903         warning.
9904
9905         * script.cc (class Lazy_demangler): Recreate--revert part of patch
9906         of 2009-12-30.
9907         (Version_script_info::Version_script_info): Initialize globs_,
9908         default_version_, default_is_global_, and exact_.  Don't
9909         initialize globals_ or locals_.
9910         (Version_script_info::build_lookup_tables): Build local symbols
9911         first.
9912         (Version_script_info::unquote): New function.
9913         (Version_script_info::add_exact_match): New function.
9914         (Version_script_info::build_expression_list_lookup): Remove lookup
9915         parameter.  Add is_global parameter.  Change all callers.  Handle
9916         wildcard pattern specially.  Unquote pattern.  Call
9917         add_exact_match.
9918         (Version_script_info::get_name_to_match): New function.
9919         (Version_script_info::get_symbol_version): New function.
9920         (Version_script_info::get_symbol_version_helper): Remove.
9921         (Version_script_info::check_unmatched_names): Call unquote.
9922         * script.h (class Version_script_info): Change get_symbol_version
9923         to be non-inline and add is_global parameter; change all callers.
9924         Rewrite symbol_is_local.  Update declarations.  Define struct
9925         Version_tree_match, Exact, Globs.  Don't define struct Lookup.
9926         Remove globals_ and locals_ members.  Add exact_, globs_,
9927         default_version_, is_global_.
9928         (Version_script_info::Glob): Remove pattern, add expression and
9929         is_global.  Update constructor.  Change all callers.
9930         * dynobj.cc (Versions::finalize): Mark the version symbol as the
9931         default version.
9932         (Versions::symbol_section_contents): If a symbol is undefined, or
9933         defined in a dynamic object, set the version index to
9934         VER_NDX_LOCAL.
9935         * symtab.cc (Symbol_table::add_from_relobj): Don't call
9936         symbol_is_local.
9937         (Symbol_table::add_from_pluginobj): Likewise.
9938         * testsuite/ver_matching_test.sh: blaza1 and blaza go into V2.
9939
9940 2010-01-11  Doug Kwan  <dougkwan@google.com>
9941
9942         * Makefile.am (incremental_dump_DEPENDENCIES): Add libintl dependency.
9943         (incremental_dump_LDADD): Add linking option for libintl.
9944         * Makefile.in: Regenerate.
9945
9946 2010-01-11  H.J. Lu  <hongjiu.lu@intel.com>
9947
9948         PR gold/11144
9949         * testsuite/Makefile.am (dynamic_list.stdout): Use --dyn-syms
9950         instead of -Ds.
9951         * testsuite/Makefile.in: Regenerated.
9952
9953 2010-01-10  Doug Kwan  <dougkwan@google.com>
9954
9955         * options.h (DEFINE_var): Use parentheses around argument varname__
9956         in macro body to avoid any unintended subsequent substitutions.
9957
9958 2010-01-10  Ian Lance Taylor  <iant@google.com>
9959
9960         * resolve.cc (Symbol_table::resolve): Add symbols to list of ODR
9961         candidates before doing symbol resolution.
9962
9963         * resolve.cc (Symbol_table::resolve): Add symbols to the list of
9964         ODR candidates if only one is weak.
9965
9966 2010-01-08  Ian Lance Taylor  <iant@google.com>
9967
9968         * script.cc (Version_script_info::build_expression_list_lookup):
9969         Don't warn about ambiguous version, just record the ambiguity.
9970         (Version_script_info::get_symbol_version_helper): Give error if
9971         version is ambiguous.
9972
9973 2010-01-08  Doug Kwan  <dougkwan@google.com>
9974
9975         * arm.cc (Stub_table::Stub_table): Initalize cortex_a8_stubs_,
9976         prev_data_size_ and prev_addralign_.  Remove initializer for
9977         deleted data member has_been_changed_.
9978         (Stub_table::empty): Look at both reloc_stubs_ and cortex_a8_stubs_
9979         to determine if the table is empty.
9980         (Stub_table::has_been_changed, Stub_table_set_has_been_changed):
9981         Remove.
9982         (Stub_table::add_reloc_stub): Define method in class definition
9983         instead of just declaring it there.
9984         (Stub_table::add_cortex_a8_stub): New method definition.
9985         (Stub_table::update_data_size_and_addralign): Ditto.
9986         (Stub_table::finalize_stubs): Ditto.
9987         (Stub_table::apply_cortex_a8_workaround_to_address_range): Ditto.
9988         (Stub_table::do_addralign_): Return address alignment in the
9989         (Stub_table::do_reset_address_and_file_offset): Define method in
9990         class definition instead of declaring it there.  Set current data
9991         size to be the data size of the previous pass.
9992         (Stub_table::set_final_data_size): Use current data size as the
9993         final data size.
9994         (Stub_table::relocate_stub): Change parameter type of stub from
9995         Reloc_stub pointer to Stub pointer.
9996         (Stub_table::addralign_, Stub_table::has_been_changed_): Remove.
9997         (Stub_table::Cortex_a8_stub_list): New typedef.
9998         (Stub_table::cortex_a8_stubs_, Stub_table::prev_data_size_,
9999          Stub_table::prev_addralign_): New data member.
10000         (Arm_relobj::Arm_relobj): Initialize data member
10001         section_has_cortex_a8_workaround_.
10002         (Arm_relobj::section_has_cortex_a8_workaround,
10003          Arm_relobj::mark_section_for_cortex_a8_workaround): New method
10004          definitions.
10005         (Arm_relobj::section_has_cortex_a8_workaround_): New data member
10006         declarations.
10007         (Target_arm::relocate_stub): Change parameter type of stub from
10008         Reloc_stub pointer to Stub pointer.
10009         (Insn_template::size, Insn_template::alignment): Handle
10010         THUMB16_SPECIAL_TYPE.
10011         (Stub_table::remove_all_cortex_a8_stubs, Stub_table::finalize_stubs,
10012          Stub_table::update_data_size_and_addralign,
10013          Stub_table::apply_cortex_a8_workaround_to_address_range): New method
10014         definitions.
10015         (Stub_table::relocate_stubs): Handle Cortex-A8 stubs.
10016         (Stub_table::do_write): Ditto.
10017         (Target_arm::do_relax): Adjust code for changes in Stub_table.
10018
10019 2010-01-08  Ian Lance Taylor  <iant@google.com>
10020
10021         PR 11108
10022         * symtab.h (class Symbol): Remove fields is_target_special_ and
10023         has_plt_offset_.  Add field is_defined_in_discarded_section_.
10024         (Symbol::is_defined_in_discarded_section): New function.
10025         (Symbol::set_is_defined_in_discarded_section): New function.
10026         (Symbol::has_plt_offset): Rewrite.
10027         (Symbol::set_plt_offset): Verify that new offset is not -1U.
10028         * symtab.cc (Symbol::init_fields): Initialize plt_offset_ to -1U.
10029         Don't initialize is_target_special_ or has_plt_offset_.
10030         Initialize is_defined_in_discarded_section_.
10031         (Symbol_table::add_from_relobj): If appropriate, set
10032         is_defined_in_discarded_section.
10033         * resolve.cc (Symbol::override_base_with_special): Don't test
10034         is_target_special_.  Change has_plt_offset_ to has_plt_offset().
10035         * target-reloc.h (relocate_section): Do special handling for
10036         symbols defined in discarded sections for global symbols as well
10037         as local symbols.
10038
10039 2010-01-08  Ian Lance Taylor  <iant@google.com>
10040
10041         * dynobj.cc (big_endian>::find_dynsym_sections): Set pi to NULL in
10042         the SHT_SYMTAB case.
10043
10044 2010-01-08  Ian Lance Taylor  <iant@google.com>
10045
10046         * object.cc (Sized_relobj::do_layout): Don't get confused if
10047         layout_eh_frame returns NULL.
10048
10049 2010-01-08  Ian Lance Taylor  <iant@google.com>
10050
10051         PR 11084
10052         * dynobj.cc (Sized_dynobj::find_dynsym_sections): If there is no
10053         dynamic symbol table, use the normal symbol table.
10054         (Sized_dynobj::do_read_symbols): Remove assertion about type of
10055         symbol table.
10056
10057 2010-01-08  Ian Lance Taylor  <iant@google.com>
10058
10059         PR 11072
10060         * layout.cc (Layout::include_section): Remove .gnu_debuglink
10061         sections.
10062
10063 2010-01-08  H.J. Lu  <hongjiu.lu@intel.com>
10064
10065         * version.cc (print_version): Change to "Copyright 2010".
10066
10067 2010-01-08  Ian Lance Taylor  <iant@google.com>
10068
10069         PR 10287
10070         PR 11063
10071         * i386.cc (class Target_i386): Change return type of plt_section
10072         to be non-const.
10073         (class Output_data_plt_i386): Add tls_desc_rel_ field.
10074         (Output_data_plt_i386::Output_data_plt_i386): Initialize
10075         tls_desc_rel_ field.
10076         (Output_data_plt_i386::rel_tls_desc): New function.
10077         (Target_i386::rel_tls_desc_section): New function.
10078         (Target_i386::Scan::local): Rewrite R_386_TLS_GOTDESC handling.
10079         (Target_i386::Scan::global): For R_386_TLS_GOTDESC put
10080         R_386_TLS_DESC reloc in rel_tls_desc_section.
10081         * x86_64.cc (class Target_x86_64): Add tlsdesc_reloc_info_ field.
10082         Define struct Tlsdesc_info.
10083         (Target_x86_64::Target_x86_64): Initialize tlsdesc_reloc_info_.
10084         (Target_x86_64::do_reloc_symbol_index): New function.
10085         (Target_x86_64::add_tlsdesc_info): New function.
10086         (class Output_data_plt_x86_64): Add tlsdesc_rel_ field.
10087         (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize
10088         tlsdesc_rel_ field.
10089         (Output_data_plt_x86_64::rela_plt): Rename from rel_plt.  Change
10090         all callers.
10091         (Output_data_plt_x86_64::rela_tlsdesc): New function.
10092         (Target_x86_64::rela_tlsdesc_section): New function.
10093         (Target_x86_64::Scan::local): Rewrite R_X86_64_GOTPC32_TLSDESC
10094         handling.
10095         (Target_x86_64::Scan::global): For R_X86_64_GOTPC32_TLSDESC put
10096         (Target_x86_64::do_reloc_addend): New function.
10097         R_X86_64_TLSDESC reloc in rela_tlsdesc_section.
10098         * output.h (class Output_reloc) [SHT_REL]: Add new constructor
10099         declarations.  Define TARGET_CODE.  Add arg field to u1_ union.
10100         (Output_reloc::type): New function.
10101         (Output_reloc::is_local_section_symbol): Check for TARGET_CODE.
10102         (Output_reloc::is_target_specific): New function.
10103         (Output_reloc::target_arg): New function.
10104         (class Output_reloc) [SHT_RELA]: Add four new constructors for
10105         absolute relocs and target specific relocs.
10106         (class Output_data_reloc) [SHT_REL]: Add add_absolute and
10107         add_target_specific.
10108         (class Output_data_reloc) [SHT_RELA]: Likewise.
10109         * output.cc (Output_reloc::Output_reloc): Add four new versions
10110         for absolute relocs and target specific relocs.
10111         (Output_reloc::set_needs_dynsym_index): Add TARGET_CODE case.
10112         (Output_reloc::get_symbol_index): Likewise.
10113         (Output_reloc::local_section_offset): Check that local_sym_index_
10114         is not TARGET_CODE or 0.
10115         (Output_reloc::symbol_value): Likewise.
10116         (Output_reloc::write) [SHT_RELA]: Call target for target specific
10117         reloc.
10118         * target.h (class Target): Add reloc_symbol_index and reloc_addend
10119         functions.  Add do_reloc_symbol_index and do_reloc_addend virtual
10120         functions.
10121         * layout.cc (add_target_dynamic_tags): Use output section for
10122         DT_PLTRELSZ and DT_JMPREL.
10123
10124 2010-01-07  Ian Lance Taylor  <iant@google.com>
10125
10126         PR 11061
10127         * output.h (class Output_reloc) [SHT_RELA]: Add is_relative
10128         function.
10129         (class Output_data_reloc_generic): Define.
10130         (class Output_data_reloc_base): Change base class to
10131         Output_data_reloc_generic.  Change add() method to call
10132         bump_relative_reloc_count for a relative reloc.  Remove
10133         sort_relocs_ field.
10134         * output.cc (Output_data_reloc_base::do_write): Change sort_reloc_
10135         to sort_relocs().
10136         * layout.cc (Layout::add_target_dynamic_tags): Change dyn_rel to
10137         Output_data_reloc_generic*.  Add DT_RELCOUNT/DT_RELACOUNT tag if
10138         appropriate.
10139         * layout.h (class Layout): Update declaration.
10140
10141 2010-01-07  Ian Lance Taylor  <iant@google.com>
10142
10143         * output.h (class Output_data): Add const version of
10144         output_section and do_output_section.
10145         (class Output_section_data): Add const version of
10146         do_output_section.
10147         (class Output_section): Likewise.
10148         * layout.cc (Layout::add_target_dynamic_tags): New function.
10149         * layout.h (class Layout): Update declarations.
10150         * arm.cc (Target_arm::do_finalize_sections): Use
10151         add_target_dynamic_tags.
10152         * i386.cc (Target_i386::do_finalize_sections): Likewise.
10153         * powerpc.cc (Target_powerpc::do_finalize_sections): Likewise.
10154         * sparc.cc (Target_sparc::do_finalize_sections): Likewise.
10155         * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
10156
10157 2010-01-07  Ian Lance Taylor  <iant@google.com>
10158
10159         PR 11042
10160         * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Mark the dynamic
10161         object as needed.
10162
10163 2010-01-07  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
10164             Ian Lance Taylor  <iant@google.com>
10165
10166         PR 11019
10167         * object.cc: Instantiate Xindex::initialize_symtab_xindex and
10168         Xindex::read_symtab_xindex.
10169
10170 2010-01-07  Doug Kwan  <dougkwan@google.com>
10171
10172         * arm.cc (Insn_template::Type): New enum value THUMB16_SPECIAL_TYPE.
10173         (Insn_template::thumb16_bcond_insn): New method declaration.
10174         (Insn_template): Fix spelling.
10175         (Stub::thumb16_special): New method declaration.
10176         (Stub::do_write): Define virtual method which was previously pure
10177         virtual.
10178         (Stub::do_thumb16_special): New method declaration.
10179         (Stub::do_fixed_endian_write): New template member.
10180         (Reloc_stub::do_write): Remove.
10181         (Reloc_stub::do_fixed_endian_write): Remove.
10182         (Cortex_a8_stub): New class definition.
10183         (Stub_factory::make_cortex_a8_stub): New method definition.
10184         (Stub_factory::Stub_factory): Add missing static storage class
10185         qualifier for elf32_arm_stub_a8_veneer_blx.
10186
10187 2010-01-07  Ian Lance Taylor  <iant@google.com>
10188
10189         PR 10980
10190         * options.h (class General_options): Add --warn-unresolved-symbols
10191         and --error-unresolved-symbols.
10192         * errors.cc (Errors::undefined_symbol): Implement
10193         --warn-unresolved-symbols.
10194
10195         * options.h (class General_options): Add -z text and -z textoff.
10196         * layout.cc (Layout::finish_dynamic_section): Implement -z text.
10197
10198 2010-01-06  Sriraman Tallam  <tmsriram@google.com>
10199
10200         * gc.h (Garbage_collection::Cident_section_map): New typedef.
10201         (Garbage_collection::cident_sections): New function.
10202         (Garbage_collection::add_cident_section): New function.
10203         (Garbage_collection::cident_sections_): New member.
10204         (gc_process_relocs): Add references to sections whose names are C
10205         identifiers.
10206         * gold.h (cident_section_start_prefix): New constant.
10207         (cident_section_stop_prefix): New constant.
10208         (is_cident): New function.
10209         * layout.cc (Layout::define_section_symbols): Replace string constants
10210         with the newly defined constants.
10211         * object.cc (Sized_relobj::do_layout): Track sections whose names are
10212         C identifiers.
10213         * testsuite/Makefile.am: Add gc_orphan_section_test.
10214         * testsuite/Makefile.in: Regenerate.
10215         * testsuite/gc_orphan_section_test.cc: New file.
10216         * testsuite/gc_orphan_section_test.sh: New file.
10217
10218 2010-01-06  Ian Lance Taylor  <iant@google.com>
10219
10220         PR 10980
10221         * options.h (class General_options): Add --warn-shared-textrel.
10222         * layout.cc (Layout::finish_dynamic_section): Implement
10223         --warn-shared-textrel.
10224
10225         PR 10980
10226         * options.h (class General_options): Add --warn-multiple-gp.
10227
10228 2010-01-06  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
10229
10230         * Makefile.am (incremental_dump_DEPENDENCIES): Remove
10231         $(THREADSLIB) and $(LIBDL).
10232         * Makefile.in: Rebuild.
10233
10234 2010-01-06  Ian Lance Taylor  <iant@google.com>
10235
10236         PR 10980
10237         * options.cc (General_options::parse_section_start): New function.
10238         (General_options::section_start): New function.
10239         (General_options::General_options): Initialize all members.
10240         * options.h: Include <map>
10241         (class General_options): Add --section-start.  Add section_starts_
10242         member.
10243         * layout.cc (Layout::attach_allocated_section_to_segment): If
10244         --section-start was used, set the address of the segment.  Remove
10245         local sort_sections.
10246         (Layout::relaxation_loop_body): If the address of the load segment
10247         has been set by --section-start, don't use it.
10248         * output.h (Output_segment::update_flags_for_output_section): New
10249         function.
10250         * output.cc (Output_segment::add_output_section): Call
10251         update_flags_for_output_section.
10252
10253 2010-01-05  Ian Lance Taylor  <iant@google.com>
10254
10255         PR 10980
10256         * options.h (class General_options): Add --undefined-version.
10257         * script.cc (struct Version_expression): Add was_matched_by_symbol
10258         field.
10259         (Version_script_info::matched_symbol): New function.
10260         (Version_script_info::get_symbol_version_helper): Call
10261         matched_symbol.
10262         (Version_script_info::check_unmatched_names): New function.
10263         * script.h (class Version_script_info): Update declarations.
10264         * gold.cc (queue_middle_tasks): Handle --no-undefined-version.
10265
10266         * options.h (class General_options): Use DEFINE_bool_alias for
10267         allow_multiple_definition.
10268         * resolve.cc (Symbol_table::should_override): Don't test
10269         allow_multiple_definition.
10270
10271         PR 10980
10272         * options.h (class General_options): Add --cref.
10273         * main.cc (main): Print cref table if --cref.  Don't close mapfile
10274         until after printing cref table.
10275         * cref.cc: Include "symtab.h".
10276         (class Cref_inputs): Define Cref_table_compare and Cref_table.
10277         (Cref_table_compare::operator()): New function.
10278         (Cref_inputs::gather_cref): New function.
10279         (filecol): New static const.
10280         (Cref_inputs::print_cref): New function.
10281         (Cref::print_cref): New function.
10282         * cref.h: Include <cstdio>.
10283         (class Cref): Update declarations.
10284         * mapfile.h (Mapfile::file): New function.
10285         * object.h (class Object): Define Symbols.  Declare virtual
10286         do_get_global_symbols.
10287         (Object::get_global_symbols): New function.
10288         * object.cc (Input_objects::add_object): Pass object to cref_ if
10289         --cref.
10290         (Input_objects::archive_start): Likewise.
10291         (Input_objects::archive_stop): Likewise.
10292         (Input_objects::print_cref): New function.
10293         * dynobj.h (Sized_dynobj::do_get_global_symbols): New function.
10294         * dynobj.cc (big_endian>::do_add_symbols): Create symbols_ if
10295         --cref.
10296         * plugin.cc (Sized_pluginobj::do_get_global_symbols): New
10297         function.
10298         * plugin.h (class Sized_pluginobj): Update declarations.
10299
10300 2010-01-05  Ian Lance Taylor  <iant@google.com>
10301
10302         * symtab.cc (Symbol_table::add_from_object): Rename def parameter
10303         to is_default_version.  Rename insdef to insdefault.
10304         (Symbol_table::add_from_relobj): Rename def to is_default_version
10305         and local to is_forced_local.
10306         (Symbol_table::add_from_pluginobj): Likewise.
10307         (Symbol_table::add_from_dynobj): Likewise.
10308         (Symbol_table::define_special_symbol): Rename insdef to
10309         insdefault.
10310
10311 2010-01-04  Ian Lance Taylor  <iant@google.com>
10312
10313         PR 10980
10314         * options.h (class General_options): Add
10315         --allow-multiple-definition and -z muldefs.
10316         * resolve.cc (Symbol_table::should_override): Don't warn about a
10317         multiple symbol definition if --allow-multiple-definition or -z
10318         muldefs.
10319
10320         PR 10980
10321         * options.h (class General_options): Add --add-needed and
10322         --copy-dt-needed-entries.  Tweak --as-needed help entry.
10323         * object.cc (Input_objects::check_dynamic_dependencies): Give an
10324         error if --copy-dt-needed-entries aka --add-needed is used and
10325         would cause a change in behaviour.
10326
10327         PR 10980
10328         * options.h (class General_options): Add -G as a short version of
10329         --shared.  Add no-op options -assert, -g, and -i.
10330
10331 2010-01-04  Sriraman Tallam  <tmsriram@google.com>
10332
10333         * gc.h (gc_process_relocs): Call is_section_foldable_candidate to
10334         check for .text or .gnu.linkonce.t sections.
10335         * icf.cc (Icf::find_identical_sections): Ditto.
10336         Change the detection for mangled function name within the section
10337         name.
10338         * icf.h (is_section_foldable_candidate): New function.
10339
10340 2009-12-30  Ian Lance Taylor  <iant@google.com>
10341
10342         PR 10980
10343         * options.h (class General_options): Permit two dashes with
10344         --retain-symbols-file.
10345
10346 2009-12-30  Ian Lance Taylor  <iant@google.com>
10347
10348         PR 10979
10349         * layout.cc (Layout::relaxation_loop_body): If -Ttext was used,
10350         don't put the file header and segment headers in the text
10351         segment.
10352
10353         PR 10979
10354         * common.cc (Sort_commons::operator()): Stabilize sort when both
10355         entries are NULL.
10356         (Symbol_table::do_allocate_commons_list): When allocating common
10357         symbols, skip a symbol which is no longer common.
10358         * symtab.h (Symbol::is_common): Test whether the symbol comes from
10359         an object before checking its type.
10360         * testsuite/common_test_2.c: New file.
10361         * testsuite/common_test_3.c: New file.
10362         * testsuite/Makefile.am (check_PROGRAMS): Add common_test_2.
10363         (common_test_2_SOURCES, common_test_2_DEPENDENCIES): Define.
10364         (common_test_2_LDFLAGS, common_test_2_LDADD): Define.
10365         (common_test_2_pic.o, common_test_2.so): New targets.
10366         (common_test_3_pic.o, common_test_3.so): New targets.
10367         * testsuite/Makefile.in: Rebuild.
10368
10369         PR 10979
10370         * script.cc (read_input_script): If we see a new SECTIONS clause,
10371         and we have added an input section, give an error.
10372         * layout.h (class Layout): Add have_added_input_section function.
10373         Add have_added_input_section_ field.
10374         * layout.cc (Layout::Layout): Initialize
10375         have_added_input_section_.
10376         (Layout::layout): Set have_added_input_section_.
10377         (Layout::layout_eh_frame): Likewise.
10378
10379 2009-12-30  Ian Lance Taylor  <iant@google.com>
10380
10381         PR 10931
10382         * options.h (class General_options): Add --sort-common option.
10383         * symtab.h (class Symbol_table): Define Sort_commons_order enum.
10384         * common.cc (Sort_common): Add sort_order parameter to
10385         constructor.  Add sort_order_ field.
10386         (Sort_commons::operator): Check sort_order_.
10387         (Symbol_table::allocate_commons): Determine the sort order.
10388         (Symbol_table::do_allocate_commons): Add sort_order parameter.
10389         Change all callers.
10390         (Symbol_table::do_allocate_commons_list): Likewise.
10391
10392 2009-12-30  Ian Lance Taylor  <iant@google.com>
10393
10394         PR 10916
10395         * symtab.cc (Symbol_table::add_from_relobj): When not exporting
10396         symbols from this object, don't change the visibility of an
10397         undefined symbol.
10398         * testsuite/exclude_libs_test_1.c (lib1_ref): New function.
10399
10400 2009-12-30  Ian Lance Taylor  <iant@google.com>
10401
10402         PR 10861
10403         * script.h (class Version_script_info): Define Language enum.
10404         Update declarations.  Define Glob, Exact, and Lookup types.  Add
10405         new fields globals_, locals_, and is_finalized_.
10406         * script.cc: Various formatting fixes.
10407         (class Parser_closure): Change language_stack_ from a vector of
10408         std::string to one of Version_script_info::Language.  Adjust all
10409         uses accordingly.
10410         (class Lazy_demangler): Remove.
10411         (struct Version_expression): Change language from std::string to
10412         Version_script_info::Language.
10413         (Version_script_info::Version_script_info): New function.
10414         (Version_script_info::~Version_script_info): Don't call clear.
10415         (Version_script_info::finalize): New function.
10416         (Version_script_info::build_lookup_tables): New function.
10417         (Version_script_info::build_expression_list_lookup): New
10418         function.
10419         (Version_script_info::get_symbol_version_helper): Rewrite to use
10420         lookup tables.
10421         (Version_script_info::print_expression_list): Adjust to use
10422         Version_script_info::Language.
10423         (script_push_lex_into_version_mode): Check that the version script
10424         has not been finalized.
10425         (version_script_push_lang): Change language string to
10426         Version_script_info::Language.
10427         * options.cc (Command_line::version_script): New function.
10428         * options.h (class General_options): Add finalize_dynamic_list
10429         function.  Change version_script from declaration to definition.
10430         * testsuite/ver_test_4.script: Remove duplicate def of t2_2.
10431         * testsuite/version_script.map: Remove duplicate def of foo.
10432         * testsuite/Makefile.am (ver_matching_def.so): Depend upon
10433         version_script.map.
10434         * testsuite/Makefile.in: Rebuild.
10435
10436 2009-12-30  Ian Lance Taylor  <iant@google.com>
10437
10438         PR 10843
10439         * target-reloc.h (relocate_for_relocatable): When copying a reloc,
10440         if the input symbol index is 0, make the output symbol index 0.
10441
10442 2009-12-30  Ian Lance Taylor  <iant@google.com>
10443
10444         PR 10670
10445         * options.h (class General_options): Add -x/--discard-all.
10446         * object.cc (Sized_relobj::do_count_local_symbols): Handle
10447         --discard-all.  If the local symbol needs a dynamic entry, check
10448         that before handling --discard-locals.
10449
10450 2009-12-30  Ian Lance Taylor  <iant@google.com>
10451
10452         PR 10450
10453         * output.cc (Output_segment::Output_segment): If PT_TLS, set the
10454         flags to PF_R.
10455         (Output_segment::add_output_section): Don't change the flags if
10456         the type is PT_TLS.
10457
10458         PR 10450
10459         * dynobj.cc (Dynobj::create_gnu_hash_table): Add symbols to the
10460         GNU hash table if they need a dynamic value.  Otherwise, don't add
10461         them if they are defined in a dynamic object or are forced local.
10462
10463 2009-12-29  Ian Lance Taylor  <iant@google.com>
10464
10465         PR 10450
10466         * layout.cc (Layout::create_dynamic_symtab): Only set entsize of
10467         .gnu.hash table for a 32-bit target.
10468
10469         PR 10450
10470         * symtab.h (Symbol::needs_dynsym_entry): A symbol in both a
10471         regular and a dynamic object only needs a dynamic symbol table
10472         entry if it is externally visible.
10473
10474         PR 10450
10475         * i386.cc (class Target_i386): Initialize global_offset_table_ in
10476         constructor.  Add global_offset_table_ field.
10477         (Target_i386::got_section): Set global_offset_table_.
10478         (Target_i386::do_finalize_sections): Set global_offset_table_
10479         size.
10480         * x86_64.cc (class Target_x86_64): Initialize global_offset_table_
10481         in constructor.  Add global_offset_table_ field.
10482         (Target_x86_64::got_section): Set global_offset_table_.
10483         (Target_x86_64::do_finalize_sections): Set global_offset_table_
10484         size.
10485
10486         * layout.cc (Layout::Layout): Initialize increase_relro_.
10487         (Layout::get_output_section): Add is_relro, is_last_relro, and
10488         is_first_non_relro parameters.  Change all callers.
10489         (Layout::choose_output_section): Likewise.
10490         (Layout::add_output_section_data): Likewise.
10491         (Layout::make_output_section): Likewise.
10492         (Layout::set_segment_offsets): Clear increase_relro when using a
10493         linker script.
10494         * layout.h (class Layout): Add increase_relro method.  Add
10495         increase_relro_ field.  Update declarations.
10496         * output.cc (Output_section::Output_section): Initialize
10497         is_last_relro_ and is_first_non_relro_.
10498         (Output_segment::add_output_section): Group relro sections is
10499         do_sort is true.  Handle is_last_relro and is_first_non_relro.
10500         (Output_segment::maximum_alignment): Remove relro handling.
10501         (Output_segment::set_section_addresses): Add increase_relro
10502         parameter.  Change all callers.  Add initial alignment to align
10503         relro sections on separate page.  Remove old relro handling.
10504         (Output_segment::set_section_list_addresses): Remove in_relro
10505         parameter.  Change all callers.
10506         (Output_segment::set_offset): Add increase parameter.  Change all
10507         callers.  Remove old relro handling.
10508         * output.h (class Output_section): Add new methods: is_last_relro,
10509         set_is_last_relro, is_first_non_relro, set_is_first_non_relro.
10510         Add is_last_relro_ and is_first_non_relro_ fields.
10511         * i386.cc (Target_i386::got_section): Don't call set_is_relro.
10512         Create separate .got.plt section.  Call increase_relro.
10513         * x86_64.cc (Target_x86_64::got_section): Likewise.
10514         * testsuite/relro_script_test.t: Add .got.plt.
10515
10516         PR 10450
10517         * layout.cc (Layout::Layout): Initialize dynamic_symbol_ field.
10518         (Layout::create_initial_dynamic_sections): Set dynamic_symbol_.
10519         (Layout::finalize): Call set_dynamic_symbol_size.
10520         (Layout::set_dynamic_symbol_size): New function.
10521         * layout.h (class Layout): Add dynamic_symbol_ field.  Declare
10522         set_dynamic_symbol_size.
10523
10524         PR 10450
10525         * output.h (class Output_section): Add is_entsize_zero_ field.
10526         * output.cc (Output_section::Output_section): Initialize
10527         is_entsize_zero_.
10528         (Output_section::set_entsize): If two different entsizes are
10529         requested, force it to zero.
10530         (Output_section::add_input_section): Set flags for .debug_str
10531         before updating section flags.  Set entsize.
10532         (Output_section::update_flags_for_input_section): Set SHF_MERGE
10533         and SHF_STRING if all input sections have those flags.
10534
10535 2009-12-29   Rafael Espindola  <espindola@google.com>
10536
10537         * main.cc (main): Fix the sys time reporting.
10538         * workqueue.cc (Workqueue::find_and_run_task): Fix the sys time
10539         reporting.
10540
10541 2009-12-29  Sriraman Tallam  <tmsriram@google.com>
10542
10543         * options.cc (General_options::parse_version): Allow -v to exit
10544         without an error if there is nothing to link.
10545
10546 2009-12-29  Ian Lance Taylor  <iant@google.com>
10547
10548         * configure.ac: Set the MCMODEL_MEDIUM conditional to false if
10549         using a version of gcc before 4.1.
10550         * configure: Rebuild.
10551
10552 2009-12-28  Chris Demetriou  <cgd@google.com>
10553
10554         * attributes.cc (Output_attributes_section_data::do_write): Use
10555         std::vector::front rather than std::vector::data.
10556
10557 2009-12-28  Ian Lance Taylor  <iant@google.com>
10558
10559         * symtab.h (class Symbol_table): Add enum Defined.
10560         * resolve.cc (Symbol_table::should_override): Add defined
10561         parameter.  Change all callers.  Test whether object is NULL
10562         before calling a method on it.
10563         (Symbol_table::report_resolve_problem): Add defined parameter.
10564         Change all callers.
10565         (Symbol_table::should_override_with_special): Likewise.
10566         * symtab.cc (Symbol_table::define_in_output_data): Add defined
10567         parameter.  Change all callers.
10568         (Symbol_table::do_define_in_output_data): Likewise.
10569         (Symbol_table::define_in_output_segment): Likewise.
10570         (Symbol_table::do_define_in_output_segment): Likewise.
10571         (Symbol_table::define_as_constant): Likewise.
10572         (Symbol_table::do_define_as_constant): Likewise.
10573         * script.h (class Symbol_assignment): Add is_defsym parameter to
10574         constructor; change all callers.
10575         * script.cc (Script_options::add_symbol_assignment): Add is_defsym
10576         parameter.  Change all callers.  Add is_defsym_ field.
10577         (class Parser_closure): Add parsing_defsym parameter to
10578         constructor; change all callers.  Add parsing_defsym accessor
10579         function.  Add parsing_defsym_ field.
10580
10581 2009-12-28  Ian Lance Taylor  <iant@google.com>
10582
10583         * gold.cc (queue_middle_tasks): Fix formatting.
10584         * object.cc (Relobj::is_section_name_included): Likewise.
10585
10586 2009-12-23  Ian Lance Taylor  <iant@google.com>
10587
10588         * i386.cc (Target_i386::do_calls_non_split): Recognize
10589         -fsplit-stack prologue for a function with a static chain.
10590         * x86_64.cc (Target_x86_64::do_calls_non_split): Recognize
10591         -fsplit-stack prologue when using %r11.
10592
10593 2009-12-21  Sriraman Tallam  <tmsriram@google.com>
10594
10595         * options.cc (General_options::parse_version): Make -v continue and do
10596         the link like GNU ld does.
10597
10598 2009-12-17  Rafael Avila de Espindola  <espindola@google.com>
10599
10600         * Makefile.am (CCFILES): Add timer.cc.
10601         (HFILES): Add timer.h.
10602         * configure.ac: Check for sysconf and times.
10603         * main.cc: include timer.h.
10604         (main): Use Timer instead of get_run_time.
10605         * timer.cc: New.
10606         * timer.h: New.
10607         * workqueue.cc: include timer.h.
10608         (Workqueue::find_and_run_task):
10609         Report user, sys and wall time.
10610         * Makefile.in: Regenerate.
10611         * config.in: Regenerate.
10612         * configure: Regenerate.
10613
10614 2009-12-16  Doug Kwan  <dougkwan@google.com>
10615
10616         * arm.cc (Arm_relobj::scan_sections_for_stubs): Exclude ICF-eliminated
10617         sections.
10618         * object.cc (Sized_relobj::do_finalize_local_symbols): Handle
10619         relaxed input sections.
10620         * output.cc (Output_section::find_relaxed_input_section): Change
10621         return type to Output_relaxed_input_section pointer.  Adjust code
10622         for new type of relaxed_input_section_map_.
10623         * output.h (Output_section::find_relaxed_input_section): Change
10624         return type to Output_relaxed_input_section pointer.
10625         (Output_section::Output_relaxed_input_section_by_input_section_map):
10626         New type.
10627         (Output_section::relaxed_input_section_map_): Change type to
10628         Output_section::Output_relaxed_input_section_by_input_section_map.
10629         * symtab.cc (Symbol_table::compute_final_value): Handle relaxed
10630         input section.
10631
10632 2009-12-15  Ian Lance Taylor  <iant@google.com>
10633
10634         * layout.cc (Layout::create_shstrtab): Only write out after input
10635         sections if we are compressing debug sections.
10636
10637 2009-12-15  Ian Lance Taylor  <iant@google.com>
10638
10639         * archive.cc (Archive::add_symbols): Only look up a symbol without
10640         a version if there is, in fact, a version.
10641
10642 2009-12-14  Ian Lance Taylor  <iant@google.com>
10643
10644         Revert -Wshadow changes, all changes from:
10645         2009-12-11  Doug Kwan  <dougkwan@google.com>
10646         2009-12-11  Nick Clifton  <nickc@redhat.com>
10647         * configure.ac: Remove -Wshadow when setting WARN_CXXFLAGS.
10648
10649 2009-12-11  Doug Kwan  <dougkwan@google.com>
10650
10651         * arm.cc (Target_arm::do_finalize_sections): Fix build breakage
10652         due to -Wshadow.
10653         * attributes.cc (Object_attribute::size): Ditto.
10654         (Attributes_section_data::size): Ditto.
10655         (Attributes_section_data::Attributes_section_data): Ditto.
10656         (Output_attributes_section_data::do_write): Ditto.
10657         * attributes.h (Object_attribute::set_type): Ditto.
10658         * testsuite/tls_test_main.cc (safe_lock, safe_unlock): Ditto.
10659
10660 2009-12-11  Nick Clifton  <nickc@redhat.com>
10661
10662         * archive.cc: Fix shadowed variable warnings.
10663         * arm.cc: Likewise.
10664         * compressed_output.cc: Likewise.
10665         * compressed_output.h: Likewise.
10666         * configure: Likewise.
10667         * dwarf_reader.cc: Likewise.
10668         * dynobj.cc: Likewise.
10669         * dynobj.h: Likewise.
10670         * ehframe.cc: Likewise.
10671         * ehframe.h: Likewise.
10672         * errors.cc: Likewise.
10673         * expression.cc: Likewise.
10674         * fileread.cc: Likewise.
10675         * fileread.h: Likewise.
10676         * freebsd.h: Likewise.
10677         * i386.cc: Likewise.
10678         * icf.cc: Likewise.
10679         * incremental.h: Likewise.
10680         * layout.cc: Likewise.
10681         * layout.h: Likewise.
10682         * mapfile.cc: Likewise.
10683         * merge.cc: Likewise.
10684         * merge.h: Likewise.
10685         * object.cc: Likewise.
10686         * object.h: Likewise.
10687         * options.h: Likewise.
10688         * output.cc: Likewise.
10689         * output.h: Likewise.
10690         * parameters.cc: Likewise.
10691         * plugin.cc: Likewise.
10692         * powerpc.cc: Likewise.
10693         * reduced_debug_output.cc: Likewise.
10694         * reduced_debug_output.h: Likewise.
10695         * reloc.cc: Likewise.
10696         * reloc.h: Likewise.
10697         * resolve.cc: Likewise.
10698         * script-sections.cc: Likewise.
10699         * script.cc: Likewise.
10700         * script.h: Likewise.
10701         * sparc.cc: Likewise.
10702         * symtab.cc: Likewise.
10703         * symtab.h: Likewise.
10704         * target-select.cc: Likewise.
10705         * target-select.h: Likewise.
10706         * token.h: Likewise.
10707         * workqueue.cc: Likewise.
10708         * workqueue.h: Likewise.
10709         * x86_64.cc: Likewise.
10710
10711 2009-12-10  Doug Kwan  <dougkwan@google.com>
10712
10713         * arm.cc (attributes.h): New include.
10714         (Arm_relobj::Arm_relobj): Initialize attributes_section_data_.
10715         (Arm_relobj::~Arm_relobj): Delete object pointed by
10716         attributes_section_data_.
10717         (Arm_relobj::attributes_section_data): New method definition.
10718         (Arm_relobj::attributes_section_data_): New data member declaration.
10719         (Arm_dynobj::Arm_dynobj): Initialize attributes_section_data_.
10720         (Arm_dynobj::~Arm_dynobj): Delete object pointed by
10721         attributes_section_data_.
10722         (Arm_dynobj::attributes_section_data): New method definition.
10723         (Arm_dynobj::attributes_section_data_): New data member declaration.
10724         (Target_arm::Target_arm): Initialize attributes_section_data_.  Change
10725         initialization value of may_use_blx_ to false.
10726         (Target_arm::using_thumb2, Target_arm::using_thumb_only,
10727         Target_arm::may_use_arm_nop, Target_arm::may_use_thumb2_nop): Use
10728         object attributes to compute results instead of hard-coding.
10729         (Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order,
10730         Target_arm::get_secondary_compatible_arch,
10731         Target_arm::set_secondary_compatible_arch
10732         Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name,
10733         Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes):
10734         New method declarations.
10735         (Target_arm::get_aeabi_object_attribute): New method definition.
10736         (Target_arm::attributes_section_data_): New data member declaration.
10737         (read_arm_attributes_section): New template definition.
10738         (Arm_relobj::do_read_symbols): Read attributes section if it exists.
10739         (Arm_dynobj::do_read_symbols): Ditto.
10740         (Target_arm::do_finalize_sections): Merge attributes sections from
10741         input.  Check for BLX use after attributes section merging.
10742         Fix __exidx_start and __exidx_end visibility.  Create an
10743         .ARM.attributes section if necessary.
10744         (Target_arm::get_secondary_compatible_arch,
10745         Target_arm::set_secondary_compatible_arch,
10746         Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name,
10747         Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes,
10748         Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order):
10749         New method definitions.
10750
10751 2009-12-09  Ian Lance Taylor  <iant@google.com>
10752
10753         * plugin.cc (Plugin::load): Don't cast from void* to a function
10754         pointer.
10755
10756 2009-12-09  Ian Lance Taylor  <iant@google.com>
10757
10758         * dynobj.cc (Sized_dynobj::do_read_symbols): Clear version
10759         information fields.
10760
10761 2009-12-09  H.J. Lu  <hongjiu.lu@intel.com>
10762
10763         * testsuite/Makefile.am (two_file_shared_1_pic_2_test_DEPENDENCIES):
10764         Replace two_file_shared_1.so with two_file_shared_2.so.
10765         * testsuite/Makefile.in: Regenerated.
10766
10767 2009-12-08  Doug Kwan  <dougkwan@google.com>
10768
10769         * Makefile.am (CCFILES): Add attributes.cc and int_encoding.cc.
10770         (HFILES): Add attributes.h and int_encoding.h.
10771         * Makefile.in: Regenerate.
10772         * dwarf_reader.cc (read_unsigned_LEB_128, read_signed_LEB_128): Move
10773         function definitions to int_encoding.cc
10774         * dwarf_reader.h (read_unsigned_LEB_128, read_signed_LEB_128): Move
10775         prototypes to int_encoding.h
10776         * reduced_debug_output.cc (int_encoding.h): New include.
10777         (write_unsigned_LEB_128, get_length_as_unsigned_LEB_128): Move
10778         function definitions to int_encoding.cc
10779         (insert_into_vector, read_from_pointer): Move template definitions to
10780         int_encoding.h
10781         * attributes.cc: New file.
10782         * attributes.h: New file.
10783         * int_encoding.cc: New file.
10784         * int_encoding.h: New file.
10785
10786 2009-12-07  Rafael Avila de Espindola  <espindola@google.com>
10787
10788         PR gold/11055
10789         * incremental-dump.cc (dump_incremental_inputs): New.
10790         (main): Use dump_incremental_inputs.
10791
10792 2009-12-07  H.J. Lu  <hongjiu.lu@intel.com>
10793
10794         PR gold/10893
10795         * i386.cc (Target_i386::Scan::globa): Use is_func instead of
10796         checking elfcpp::STT_FUNC.
10797         (Target_i386::Relocate::relocate): Likewise.
10798         * x86_64.cc (Target_x86_64::Scan::global): Likewise.
10799
10800         * symtab.cc (Symbol_table::sized_write_symbol): Turn IFUNC
10801         symbols from shared libraries into normal FUNC symbols.
10802
10803         * symtab.h (Symbol): Add is_func and use it.
10804
10805 2009-12-05  Doug Kwan  <dougkwan@google.com>
10806
10807         * arm.cc (Target_arm::arm_info): Initialize new fields
10808         attributes_section and attributes_vendor.
10809         * i386.cc (Target_i386::i386_info): Same.
10810         * object.cc (Sized_relobj::do_layout): Skip attribute section.
10811         * gold/powerpc.cc (Target_powerpc::powerpc_info): Initialize new
10812         fields attributes_section and attributes_vendor.
10813         * sparc.cc (Target_sparc::sparc_info): Same.
10814         * target.h (Target::attributes_section, Target::attributes_vendor,
10815         Target::is_attributes_section, Target::attribute_arg_type,
10816         Target::attributes_order): New method definitions.
10817         (Target::Target_info::attributes_section,
10818         Target::Target_info::attributes_vendor): New fields.
10819         (Target::do_attribute_arg_type, Target::do_attributes_order): New
10820         virtual method definitions.
10821         * x86_64.cc (Target_x86_64::x86_64_info): Initialize new fields
10822         attributes_section and attributes_vendor.
10823         * testsuite/testfile.cc (Target_test::test_target_info): Same.
10824
10825 2009-12-05  Doug Kwan  <dougkwan@google.com>
10826
10827         * arm.cc: Update comments about interworking and stub generation.
10828         (Target_arm::Relocate::reloc_is_non_pic): Update list of relocations
10829         considered as non-PIC.
10830         (Arm_relocate_functions::base_abs): Fix formatting.
10831         (Arm_relocate_functions::got_prel): Fix comment.  Change interface
10832         of function to use GOT entry address instead of offset.
10833         (Target_arm::Scan::global): Issue an error if a symbol would need a
10834         PLT does not get one because it is untyped.  Remove code to create
10835         dynamic symbols for relative branches.
10836         (Target_arm::Relocate::relocate: Use 0 instead of false since function
10837         takes unsigned integer instead of boolean.
10838
10839 2009-12-05  H.J. Lu  <hongjiu.lu@intel.com>
10840
10841         * testsuite/Makefile.am (constructor_test_LDADD): New. Empty.
10842         (two_file_test_LDADD): Likewise.
10843         (common_test_1_LDADD): Likewise.
10844         (exception_test_LDADD) Likewise.
10845         (weak_test_LDADD): Likewise.
10846         (many_sections_test_LDADD): Likewise.
10847         (initpri1_LDADD): Likewise.
10848         (script_test_1_LDADD): Likewise.
10849         (script_test_2_LDADD): Likewise.
10850         (justsyms_LDADD): Likewise.
10851         (binary_test_LDADD): Likewise.
10852         (large_LDADD): Likewise.
10853         * testsuite/Makefile.in: Regenerated.
10854
10855 2009-12-04  H.J. Lu  <hongjiu.lu@intel.com>
10856
10857         * resolve.cc (symbol_to_bits): Treat STB_GNU_UNIQUE as STB_GLOBAL.
10858         (Symbol_table::override_with_special): Likewise.
10859         (Symbol_table::add_from_object): Likewise.
10860
10861 2009-12-04  Rafael Avila de Espindola  <espindola@google.com>
10862
10863         * incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
10864         Don't set the data_offset twice.
10865
10866 2009-12-04  Rafael Avila de Espindola  <espindola@google.com>
10867
10868         * testsuite/Makefile.in: Regenerate.
10869
10870 2009-12-03  Doug Kwan  <dougkwan@google.com>
10871
10872         * arm.cc: Remove comment about missing .ARM.exidx section symbols.
10873         (Target_arm::do_finalize_sections): Add parameter for symbol table
10874         pointer.  Add __exidx_start and __exidx_end symbols as appropriate.
10875         * i386.cc (Target_i386::do_finalize_sections): Add an additional
10876         parameter for symbol table pointer.
10877         * layout.cc (Layout::finalize): Call Target::finalize_sections with
10878         an additional parameter for a pointer to symbol table.
10879         * powerpc.cc (Target_powerpc::do_finalize_sections): Add an additional
10880         parameter for a symbol table pointer.
10881         * sparc.cc (Target_sparc::do_finalize_sections): Ditto.
10882         * target.h (Target::finalize_sections, Target::do_finalize_sections):
10883         Ditto.
10884         * x86_64.cc (Target_x86_64::do_finalize_sections): Add an additional
10885         parameter for a symbol table pointer.
10886
10887 2009-12-03  Rafael Avila de Espindola  <espindola@google.com>
10888
10889         * incremental.cc (Incremental_inputs_header)
10890         (Incremental_inputs_header_write, Incremental_inputs_entry)
10891         (Incremental_inputs_entry_write): Move ...
10892         * incremental.h (Incremental_inputs_header)
10893         (Incremental_inputs_header_write, Incremental_inputs_entry)
10894         (Incremental_inputs_entry_write): here.
10895
10896 2009-12-02  Rafael Avila de Espindola  <espindola@google.com>
10897
10898         * incremental.cc (make_sized_incremental_binary): Set the target.
10899         Error if it is incompatible.
10900         * output.h (Output_file): Add filename method.
10901
10902 2009-12-02  Rafael Avila de Espindola  <espindola@google.com>
10903
10904         * incremental.cc (Incremental_inputs_entry): Remove unused argument
10905         from the get_* methods.
10906
10907 2009-12-02  Rafael Avila de Espindola  <espindola@google.com>
10908
10909         * incremental-dump.cc (main): Check that the offeset of a script is 0.
10910         * incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
10911         Write 0 for the data_offset of scripts.
10912
10913 2009-12-02  Rafael Avila de Espindola  <espindola@google.com>
10914
10915         * testsuite/Makefile.am: Add the incremental_test.sh test.
10916         * testsuite/incremental_test.sh: New.
10917         * testsuite/incremental_test_1.c: New.
10918         * testsuite/incremental_test_2.c: New.
10919
10920 2009-12-01  Rafael Avila de Espindola  <espindola@google.com>
10921
10922         * incremental-dump.cc (main): Fix typos.
10923
10924 2009-11-27  Rafael Avila de Espindola  <espindola@google.com>
10925
10926         PR gold/11025
10927         * incremental-dump.cc (main): Use llu to print 64 bit values.
10928
10929 2009-11-26  Per Øyvind Karlsen <peroyvind@mandriva.org>
10930             H.J. Lu  <hongjiu.lu@intel.com>
10931
10932         * Makefile.am (incremental_dump_DEPENDENCIES): Add $(THREADSLIB)
10933         $(LIBDL).
10934         (incremental_dump_LDADD): Likewise.
10935         * Makefile.in: Regenerated.
10936
10937 2009-11-25  Doug Kwan  <dougkwan@google.com>
10938
10939         Revert:
10940
10941         2009-11-25  Doug Kwan  <dougkwan@google.com>
10942
10943                 * arm.cc (Target_arm::Target_arm): Move method definition
10944                 outside of class definition.  Add code to handle
10945                 --target1-rel, --target1-abs and --target2= options.
10946                 (Target_arm::get_reloc_reloc_type): Change method to be
10947                 non-static and const.
10948                 (Target_arm::target1_is_rel_, Target_arm::target2_reloc_):
10949                 New data member declaration.
10950                 (Target_arm::Scan::local, Target_arm::Scan::global,
10951                 Target_arm::Relocate::relocate,
10952                 Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
10953                 Adjust call to Target_arm::get_real_reloc_type.
10954                 (Target_arm::get_real_reloc_type): Use command line options
10955                 to determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
10956                 * options.h (--target1-rel, --target1-abs, --target2): New
10957                 ARM-only options.
10958
10959 2009-11-25  Doug Kwan  <dougkwan@google.com>
10960
10961         * arm.cc (Target_arm::Target_arm): Move method definition outside of
10962         class definition.  Add code to handle --target1-rel, --target1-abs
10963         and --target2= options.
10964         (Target_arm::get_reloc_reloc_type): Change method to be non-static
10965         and const.
10966         (Target_arm::target1_is_rel_, Target_arm::target2_reloc_): New data
10967         member declaration.
10968         (Target_arm::Scan::local, Target_arm::Scan::global,
10969         Target_arm::Relocate::relocate,
10970         Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Adjust
10971         call to Target_arm::get_real_reloc_type.
10972         (Target_arm::get_real_reloc_type): Use command line options to
10973         determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
10974         * options.h (--target1-rel, --target1-abs, --target2): New ARM-only
10975         options.
10976
10977 2009-11-25  Doug Kwan  <dougkwan@google.com>
10978
10979         * arm.cc (Target_arm::may_use_thumb2_nop): New method definition.
10980         (Arm_relocate_functions::thumb_branch_common): New metod declaration.
10981         (Arm_relocate_functions::abs12, Arm_relocate_functions::abs16): Fix
10982         formatting.
10983         (Arm_relocate_functions::thm_call): Replace body with a call to
10984         Arm_relocate_functions::thumb_branch_common.
10985         (Arm_relocate_functions::thm_jump24,
10986         Arm_relocate_functions::thm_xpc22): New method definitions.
10987         (Arm_relocate_functions::thumb_branch_common): New method definition.
10988         (Reloc_stub::stbu_type_for_reloc): Fix incorrect uses of bit-wise-or
10989         operator.
10990         (Target_arm::Relocate::relocate): Adjust call to thm_call.
10991         Add code to handle R_ARM_THM_XPC22 and R_ARM_THM_JUMP24.
10992
10993 2009-11-24  Rafael Avila de Espindola  <espindola@google.com>
10994
10995         * Makefile.am: Build incremental-dump
10996         * Makefile.in: Regenerate.
10997         * incremental-dump.cc: New.
10998         * incremental.cc (Incremental_inputs_header_data,
10999         Incremental_inputs_entry_data): Move to incremental.h
11000         * incremental.h: (Incremental_inputs_header_data,
11001         Incremental_inputs_entry_data): Move from incremental.cc
11002
11003 2009-11-24  Rafael Avila de Espindola  <espindola@google.com>
11004
11005         * incremental.cc (Incremental_inputs_header,
11006         Incremental_inputs_header_write, Incremental_inputs_entry,
11007         Incremental_inputs_entry_write): Add a typedef with the data type.
11008
11009 2009-11-24  Rafael Avila de Espindola  <espindola@google.com>
11010
11011         * incremental.cc (Incremental_inputs_header,
11012         Incremental_inputs_header_write, Incremental_inputs_entry,
11013         Incremental_inputs_entry_write): Update comment about which
11014         type has the filed descriptions.
11015
11016 2009-11-15  Doug Kwan  <dougkwan@google.com>
11017
11018         * arm.cc (Target_arm::may_use_arm_nop): New method definition.
11019         (Arm_relocate_functions::arm_branch_common): Change method defintion
11020         in class definition to a method declaration and update list of formal
11021         parameters.
11022         (Arm_relocate_functions::plt32, Arm_relocate_functions::call,
11023         Arm_relocation_functions::jump24): Adjust call to
11024         Arm_relocate_functions::arm_branch_common.  Update list of formal
11025         parameters.
11026         (Arm_relocate_functions::xpc25): New method definition.
11027         (Arm_relocate_functions::arm_branch_common): Move method defintion
11028         out from class definition.  Use stubs for mode-switching and extending
11029         branch ranges.
11030         (Target_arm::Relocate::relocate): Handle weakly-undefined symbols
11031         specially.  Change code to enable use of stubs in ARM branches.
11032
11033 2009-11-10  Doug Kwan  <dougkwan@google.com>
11034
11035         * arm.cc (Arm_relobj::do_relocate_sections): Remove options parameter
11036         in method declaration.
11037         (Target_arm::relocate_stub): New method declaration.
11038         (Target_arm::default_target): Change to return a pointer instead of
11039         a const reference.
11040         (Reloc_stub::stub_type_for_reloc): Adjust for the change in
11041         Target_arm::default_target.
11042         (Arm_Relobj::do_relocate_sections): Remove options paramater in
11043         method definition.
11044         (Target_arm::relocate_section): Adjust view.
11045         (Target_arm::relocate_stub): New method definition.
11046
11047 2009-11-10  Doug Kwan  <dougkwan@google.com>
11048
11049         * i386.cc (Target_i386::do_calls_non_split): Add a cast to avoid
11050         a format warning.
11051         * incremental.cc (open_incremental_binary): Initialized local
11052         variables to avoid warnings.
11053         * object.cc (make_elf_object): Ditto.
11054         * x86_64.cc (Target_x86_64::do_calls_non_split): Add a cast to avoid
11055         a format warning.
11056
11057 009-11-09  H.J. Lu  <hongjiu.lu@intel.com>
11058
11059         PR gold/10930
11060         * testsuite/plugin_test.c: Include "config.h".
11061
11062 2009-11-09  Doug Kwan  <dougkwan@google.com>
11063
11064         * arm.cc (Target_arm::fake_relnum_for_stubs): New constant.
11065         (arm_symbol_value): Remove.
11066         (Arm_relocate_functions::arm_branch_common,
11067         Arm_relocate_functions::abs8, Arm_relocate_functions::thm_abs5,
11068         Arm_relocate_functions::abs12, Arm_relocate_functions::abs16,
11069         Arm_relocate_functions::abs32, Arm_relocate_functions::rel32,
11070         Arm_relocate_functions::thm_call, Arm_relocate_functions::plt32,
11071         Arm_relocate_functions::call, Arm_relocate_functions::jump24,
11072         Arm_relocate_functions::prel31, Arm_relocate_functions::mov_abs_nc,
11073         Arm_relocate_functions::movt_abs, Arm_relocate_functions::movw_abs_nc,
11074         Arm_relocate_functions::thm_mobw_abs_nc,
11075         Arm_relocate_functions::thm_mov_abs,
11076         Arm_relocate_functions::movw_prel_nc,
11077         Arm_relocate_functions::thm_movt_abs,
11078         Arm_relocate_functions::movt_prel,
11079         Arm_relocate_functions::thm_movw_prel_nc,
11080         Arm_relocate_functions::thm_movt_prel): Adjust callers of the above.
11081         (Target_arm::Relocate::relocate): Only decompose address into two
11082         parts if relocation type uses the thumb-bit and pass the actual
11083         bit instead of a flag indicating that the thumb-bit is used.  Adjust
11084         calls to methods in Arm_relocate_functions for this change.
11085
11086 2009-11-08  Ian Lance Taylor  <iant@google.com>
11087
11088         PR 10925
11089         * reloc.cc: Instantiate
11090         Sized_relobj::initialize_input_to_output_maps and
11091         Sized_relobj:free_input_to_output_maps.
11092
11093 2009-11-06  Ian Lance Taylor  <iant@google.com>
11094
11095         PR 10876
11096         * defstd.cc (in_segment): Set only_if_ref true for "end".
11097
11098 2009-11-06  Doug Kwan  <dougkwan@google.com>
11099
11100         * arm.cc (class Reloc_stub): Correct a comment.
11101         (Target_arm::Target_arm): Initialize arm_input_section_map_.
11102         (Target_arm::scan_section_for_stubs): New method declaration.
11103         (Target_arm::do_make_elf_object, Target_arm::do_make_output_section):
11104         Change methods from private to protected.
11105         (Target_arm::do_may_relax): New method definition.
11106         (Target_arm::do_relax, Target_arm::group_sections,
11107         Target_arm::scan_reloc_for_stub,
11108         Target_arm::scan_reloc_section_for_stubs): New method declarations.
11109         (Target_arm::arm_input_section_map_): New data member declaration.
11110         (Target_arm::scan_reloc_for_stub,
11111         Target_arm::scan_reloc_section_for_stubs,
11112         Target_arm::scan_section_for_stubs, Target_arm::group_sections,
11113         Target_arm::do_relax): New method definitions.
11114
11115 2009-11-06  Mikolaj Zalewski  <mikolaj@google.com>
11116
11117         * configure.ac: Check for (struct stat)::st_mtim
11118         * fileread.cc (File_read::get_mtime): Use st_mtim if available.
11119         * config.in: Regenerate.
11120         * configure: Regenerate.
11121
11122 2009-11-05  Ian Lance Taylor  <iant@google.com>
11123
11124         PR 10910
11125         * output.cc (Output_segment::add_output_section): Add missing
11126         return statement.
11127
11128 2009-11-04  Ian Lance Taylor  <iant@google.com>
11129
11130         PR 10880
11131         * object.h (class Object): Add is_needed and set_is_needed
11132         methods.  Add is_needed_ field.  Make bool fields into bitfields.
11133         * symtab.cc (Symbol_table::set_dynsym_indexes): If a symbol is
11134         defined in a dynamic object and referenced by a regular object,
11135         set is_needed for the dynamic object.
11136         * layout.cc (Layout::finish_dynamic_section): Don't add DT_NEEDED
11137         if the file is marked with as_needed and it is not needed.
11138
11139 2009-11-04  Ian Lance Taylor  <iant@google.com>
11140
11141         PR 10887
11142         * arm.cc (Target_arm::do_finalize_sections): Don't add dynamic
11143         tags if data is discarded by linker script.
11144         * i386.cc (Target_i386::do_finalize_sections): Likewise.
11145         * powerpc.cc (Target_powerpc::do_finalize_sections): Likewise.
11146         * sparc.cc (Target_sparc::do_finalize_sections): Likewise.
11147         * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
11148
11149 2009-11-04  Ian Lance Taylor  <iant@google.com>
11150
11151         * layout.cc (Layout::get_output_section): Add is_interp and
11152         is_dynamic_linker_section parameters.  Change all callers.
11153         (Layout::choose_output_section): Likewise.
11154         (Layout::make_output_section): Likewise.
11155         (Layout::add_output_section_data): Add is_dynamic_linker_section
11156         parameter.  Change all callers.
11157         * layout.h (class Layout): Update declarations.
11158         * output.h (class Output_section): Add is_interp, set_is_interp,
11159         is_dynamic_linker_section, set_is_dynamic_linker_section methods.
11160         Add is_interp_, is_dynamic_linker_section_ fields.  Change
11161         generate_code_fills_at_write_ to a bitfield.
11162         * output.cc (Output_section::Output_sections): Initialize new
11163         fields.
11164         (Output_segment::add_output_section): Add do_sort parameter.
11165         Change all callers.
11166
11167 2009-11-03  Ian Lance Taylor  <iant@google.com>
11168
11169         PR 10860
11170         * options.h (class General_options): Add --warn-common.
11171         * resolve.cc (Symbol_table::resolve): Handle --warn-common when
11172         merging two common symbols.
11173         (Symbol_table::should_override): Handle --warn-common when merging
11174         a common symbol with a defined symbol.  Use report_resolve_problem
11175         for multiple definitions.
11176         (Symbol_table::report_resolve_problem): New function.
11177         * symtab.h (class Symbol_table): Declare report_resolve_problem.
11178
11179 2009-11-03  Doug Kwan  <dougkwan@google.com>
11180
11181         * arm.cc (Target_arm::Target_arm): Initialize stub_tables_ and
11182         stub_factory_.
11183         (Target_arm::stub_factory): New method definition.
11184         (Target_arm::new_arm_input_section,
11185         Target_arm::find_arm_input_section, Target_arm::new_stub_table,
11186         Target_arm::reloc_uses_thumb_bit): New method declarations.
11187         (Target_arm::Stub_table_list, Target_arm::Arm_input_section_map):
11188         New type definitions.
11189         (Target_arm::stub_tables_, Target_arm::stub_factory_): New data
11190         member declarations.
11191         (Target_arm::reloc_uses_thumb_bit, Target_arm::new_arm_input_section,
11192         Target_arm::find_arm_input_section, Target_arm::new_stub_table):
11193         New method definitions.
11194
11195 2009-11-03  Ian Lance Taylor  <iant@google.com>
11196
11197         * options.h (class General_options): Add --warn_constructors.
11198
11199 2009-11-03  Ian Lance Taylor  <iant@google.com>
11200
11201         PR 10893
11202         * defstd.cc (in_section): Add entries for __rel_iplt_start,
11203         __rel_iplt_end, __rela_iplt_start, __rela_iplt_end, and __stack.
11204
11205 2009-11-03  Ian Lance Taylor  <iant@google.com>
11206
11207         PR 10895
11208         * po/Make-in ($(srcdir)/$(PACKAGE).pot): Pass -C and
11209         --msgid-bugs-address.
11210         (install-pdf): New target.
11211         (install-data_yes): Look up one directory to find mkinstalldirs.
11212
11213 2009-11-03  H.J. Lu  <hongjiu.lu@intel.com>
11214
11215         * po/Make-in (.po.gmo): Don't generate .gmo files in source
11216         tree.
11217
11218 2009-10-30  Doug Kwan  <dougkwan@google.com>
11219
11220         * arm.cc (Stub_addend_reader): Fix bug in previouls check-in.
11221
11222 2009-10-30  Doug Kwan  <dougkwan@google.com>
11223
11224         * arm.cc (Stub_addend_reader): New struct template definition
11225         and partial specializations.
11226         (Stub_addend_reader::operator()): New method definition for a
11227         partially specialized template.
11228
11229 2009-10-30  Doug Kwan  <dougkwan@google.com>
11230
11231         * arm.cc (Arm_relobj::processor_specific_flags): New method
11232         definition.
11233         (Arm_relobj::do_read_symbols): New method declaration.
11234         (Arm_relobj::processor_specific_flags_): New data member declaration.
11235         (Arm_dynobj): New class definition.
11236         (Target_arm::do_finalize_sections): Add input_objects parameter.
11237         (Target_arm::do_adjust_elf_header): New method declaration.
11238         (Target_arm::are_eabi_versions_compatible,
11239         (Target_arm::merge_processor_specific_flags): New method declaration.
11240         (Target_arm::do_make_elf_object): New overloaded method definitions
11241         and declaration.
11242         (Arm_relobj::do_read_symbols): New method definition.
11243         (Arm_dynobj::do_read_symbols): Ditto.
11244         (Target_arm::do_finalize_sections): Add input_objects parameters.
11245         Merge processor-specific flags from all input objects.
11246         (Target_arm::are_eabi_versions_compatible,
11247         Target_arm::merge_processor_specific_flags,
11248         Target_arm::do_adjust_elf_header, Target_arm::do_make_elf_object):
11249         New method definitions.
11250         * i386.cc (Target_i386::do_finalize_sections): Add unnamed
11251         Input_objects pointer type parameter.
11252         * layout.cc (Layout::finalize): Pass input objects to target's.
11253         finalize_sections function.
11254         * output.cc (Output_file_header::do_sized_write): Set ELF file
11255         header's processor-specific flags.
11256         * powerpc.cc (Target_powerpc::do_finalize_sections): Add unnamed
11257         Input_objects pointer type parameter.
11258         * sparc.cc (Target_sparc::do_finalize_sections): Same.
11259         * target.h (Input_objects): New forward class declaration.
11260         (Target::processor_specific_flags,
11261         Target::are_processor_specific_flags_sect): New method definitions.
11262         (Target::finalize_sections): Add input_objects parameter.
11263         (Target::Target): Initialize processor_specific_flags_ and
11264         are_processor_specific_flags_set_.
11265         (Target::do_finalize_sections): Add unnamed Input_objects pointer type
11266         parameter.
11267         (Target::set_processor_specific_flags): New method definition.
11268         (Target::processor_specific_flags_,
11269         Target::are_processor_specific_flags_set_): New data member
11270         declarations.
11271         * x86_64.cc (Target_x86_64::do_finalize_sections): Add unnamed
11272         Input_objects pointer type parameter.
11273
11274 2009-10-30  Doug Kwan  <dougkwan@google.com>
11275
11276         * arm.cc: Use Arm_address instead of elfcpp::Elf_types<32>::Elf_Addr.
11277
11278 2009-10-28  Ian Lance Taylor  <iant@google.com>
11279
11280         * object.h (class Relobj): Drop options parameter from
11281         gc_process_relocs, scan_relocs, relocate, do_gc_process_relocs,
11282         do_scan_relocs, do_relocate.  Change all callers.
11283         (class Sized_relobj): Drop options parameters from
11284         do_gc_process_relocs, do_scan_relocs, do_relocate,
11285         do_relocate_sections, relocate_sections, emit_relocs_scan,
11286         emit_relocs_scan_reltype.  Change all callers.
11287         (struct Relocate_info): Remove options field and all references to
11288         it.
11289         * reloc.h (class Read_relocs): Remove options constructor
11290         parameter and options_ field.  Change all callers.
11291         (class Gc_process_relocs, class Scan_relocs): Likewise.
11292         (class Relocate_task): Likewise.
11293         * target-reloc.h (scan_relocs): Remove options parameter.  Change
11294         all callers.
11295         (scan_relocatable_relocs): Likewise.
11296         * target.h (class Sized_target): Remove options parameter from
11297         gc_process_relocs, scan_relocs, scan_relocatable_relocs.  Change
11298         all callers.
11299         * gc.h (gc_process_relocs): Remove options parameter.  Change all
11300         callers.
11301         * arm.cc: Update functions to remove options parameters.
11302         * i386.cc: Likewise.
11303         * powerpc.cc: Likewise.
11304         * sparc.cc: Likewise.
11305         * x86_64.cc: Likewise.
11306         * testsuite/testfile.cc: Likewise.
11307
11308 2009-10-28  Doug Kwan  <dougkwan@google.com>
11309
11310         * arm.cc (Arm_relobj): New class definition.
11311         (Arm_relobj::scan_sections_for_stubs,
11312         Arm_relobj::do_count_local_symbols, Arm_relobj::do_relocate_sections):
11313         New method definitions.
11314
11315 2009-10-28  Cary Coutant  <ccoutant@google.com>
11316
11317         * plugin.h (Plugin::Plugin): Initialize cleanup_done_.
11318         (Plugin::cleanup_done_): New member.
11319         (Plugin_manager::Plugin_manager): Remove cleanup_done_.
11320         (Plugin_manager::cleanup_done_): Remove.
11321         (Plugin_manager::add_input_file): Edit error message.
11322         * plugin.cc (Plugin::cleanup): Test and set cleanup_done_.
11323         (Plugin_manager::cleanup): Remove use of cleanup_done_.
11324
11325 2009-10-27  Mikolaj Zalewski  <mikolajz@google.com>
11326
11327         * fileread.cc: (File_read::View::~View): Use the new
11328         data_ownership_ filed.
11329         (File_read::~File_read): Dispose the new whole_file_view_.
11330         (File_read::open): Mmap the whole file if needed.
11331         (File_read::open): Use whole_file_view_ instead of contents_.
11332         (File_read::find_view): Use whole_file_view_ if applicable.
11333         (File_read::do_read): Use whole_file_view_ instead of contents_.
11334         (File_read::make_view): Use whole_file_view_ instead of contents_,
11335         update File_read::View::View call.
11336         (File_read::find_or_make_view): Update File_read::View::View
11337         call.
11338         * fileread.h: (File_read::File_read): Initialize whole_file_view_,
11339         remove contents_
11340         (File_read::View::Data_ownership): New enum.
11341         (File_read::View::View): Replace bool mapped_ with Data_ownership
11342         argument.
11343         (File_read::View::mapped_): Remove (replaced by data_ownership_).
11344         (File_read::View::data_ownership_): New field.
11345         (File_read::contents_): Remove (replaced by whole_file_view_).
11346         (File_read::whole_file_view_): New field.
11347         * options.h (class General_options): Add --keep-files-mapped.
11348
11349 2009-10-27  Cary Coutant  <ccoutant@google.com>
11350
11351         * symtab.cc (add_from_pluginobj): Pass correct value for is_ordinary.
11352         * testsuite/Makefile.am (plugin_test_5): New test case.
11353         * testsuite/Makefile.in: Regenerate.
11354
11355 2009-10-25  Doug Kwan  <dougkwan@google.com>
11356
11357         * object.h (Sized_relobj::View_size, Sized_relobj::Views): Change
11358         from private to protected to allow access by child class.
11359         (Sized_relobj::do_relocate_sections): New method declaration.
11360         (Sized_relobj::relocate_sections): Virtualize.
11361         * reloc.cc (Sized_relobj::do_relocate_sections): Rename from
11362         Sized_relobj::relocate_sections.  Instantiate template explicitly
11363         for different target sizes and endianity.
11364
11365 2009-10-24  Doug Kwan  <dougkwan@google.com>
11366
11367         * arm.cc (Arm_output_section, Arm_relobj): Forward class declarations.
11368         (Arm_input_section::as_arm_input_section): New method.
11369         (Arm_output_section): New class definition.
11370         (Arm_output_section::create_stub_group,
11371         Arm_output_section::group_sections): New method definitions.
11372
11373 2009-10-22  Doug Kwan  <dougkwan@google.com>
11374
11375         * arm.cc (Arm_input_section): New class definition.
11376         (Arm_input_section::init, Arm_input_section:do_write,
11377         Arm_input_section::set_final_data_size,
11378         Arm_input_section::do_reset_address_and_file_offset): New method
11379         definitions.
11380
11381 2009-10-21  Doug Kwan  <dougkwan@google.com>
11382
11383         * arm.cc (Stub_table, Arm_input_section): New forward class
11384         declarations.
11385         (Stub_table): New class defintion.
11386         (Stub_table::add_reloc_stub, Stub_table::relocate_stubs
11387         Stub_table::do_reset_address_and_file_offset, Stub_table::do_write):
11388         New method definition.
11389
11390 2009-10-21  Doug Kwan  <dougkwan@google.com>
11391
11392         * arm.cc: Update copyright comments.
11393         (Target_arm): New forward class template declaration.
11394         (Arm_address): New type.
11395         (ARM_MAX_FWD_BRANCH_OFFSET, ARM_MAX_BWD_BRANCH_OFFSET,
11396         THM_MAX_FWD_BRANCH_OFFSET, THM_MAX_BWD_BRANCH_OFFSET,
11397         THM2_MAX_FWD_BRANCH_OFFSET, THM2_MAX_BWD_BRANCH_OFFSET): New
11398         constants.
11399         (Insn_template): Same.
11400         (DEF_STUBS): New macro.
11401         (Stub_type): New enum type.
11402         (Stub_template): New class definition.
11403         (Stub): Same.
11404         (Reloc_stub): Same.
11405         (Stub_factory): Same.
11406         (Target_arm::Target_arm): Initialize may_use_blx_ and
11407         should_force_pic_veneer_.
11408         (Target_arm::may_use_blx, Target_arm::set_may_use_blx,
11409         Target_arm::should_force_pic_veneer,
11410         Target_arm::set_should_force_pic_veneer, Target_arm::using_thumb2,
11411         Target_arm::using_thumb_only, Target_arm:;default_target): New
11412         method defintions.
11413         (Target_arm::may_use_blx_, Target_arm::should_force_pic_veneer_):
11414         New data member declarations.
11415         (Insn_template::size, Insn_template::alignment): New method defintions.
11416         (Stub_template::Stub_template): New method definition.
11417         (Reloc_stub::Key::name, Reloc_stub::stub_type_for_reloc,
11418         Reloc_stub::do_fixed_endian_write, Reloc_stub::do_write): Same.
11419         (Stub_factory::Stub_factory): New method definition.
11420         * gold.h (string_hash): New template.
11421         * output.h (Input_section_specifier::hash_value): Use
11422         gold::string_hash.
11423         (Input_section_specifier::string_hash): Remove.
11424         * stringpool.cc (Stringpool_template::string_hash): Use
11425         gold::string_hash.
11426
11427 2009-10-20  Doug Kwan  <dougkwan@google.com>
11428
11429         * object.cc (Sized_relobj::do_finalize_local_symbols): Handle section
11430         symbols of relaxed input sections.
11431         * output.h (Output_section::find_relaxed_input_section): Make
11432         method public.
11433
11434 2009-10-16  Doug Kwan  <dougkwan@google.com>
11435
11436         * dynobj.cc (Versions::Versions): Initialize version_script_.
11437         Only insert base version symbol definition for a shared object
11438         if version script defines any version versions.
11439         (Versions::define_base_version): New method definition.
11440         (Versions::add_def): Check that base version is not needed.
11441         (Versions::add_need): Define base version lazily.
11442         * dynobj.h (Versions::define_base_version): New method declaration.
11443         (Versions::needs_base_version_): New data member declaration.
11444         * testsuite/Makefile.am (check_SCRIPTS): Add no_version_test.sh
11445         (check_DATA): Add no_version_test.stdout.
11446         (libno_version_test.so, no_version_test.o no_version_test.stdout):
11447         New make rules.
11448         * testsuite/Makefile.in: Regenerate.
11449         * testsuite/no_version_test.c: New file.
11450         * testsuite/no_version_test.sh: Ditto.
11451
11452 2009-10-16  Doug Kwan  <dougkwan@google.com>
11453
11454         * expression.cc (class Segment_start_expression): New class definition.
11455         (Segment_start_expression::value): New method definition.
11456         (script_exp_function_segment_start): Return a new
11457         Segment_start_expression.
11458         * gold/script-c.h (script_saw_segment_start_expression): New function
11459         prototype.
11460         * script-sections.cc (Script_sections::Script_sections): Initialize
11461         SAW_SEGMENT_START_EXPRESSION_ to false.
11462         (Script_sections::set_section_addresses): Use -Ttext, -Tdata
11463         and -Tbbs options to specify section addresses if given in
11464         command line and no SEGMENT_START expression is seen in a script.
11465         * script-sections.h (Script_sections::saw_segment_start_expression,
11466         Script_sections::set_saw_segment_start_expression): New method
11467         definition.
11468         (Script_sections::saw_segment_start_expression_): New data member
11469         declaration.
11470         * script.cc (script_saw_segment_start_expression): New function.
11471         * yyscript.y (SEGMENT_START): Call script_saw_segment_start_expression.
11472         * testsuite/Makefile.am (check_SCRIPTS): Add script_test_6.sh,
11473         script_test_7.sh and script_test_8.sh.
11474         (check_DATA): Add script_test_6.stdout, script_test_7.stdout and
11475         script_test_8.stdout.
11476         (MOSTLYCLEANFILES): Add script_test_6, script_test_7 and script_test_8.
11477         (script_test_6, script_test_6.stdout, script_test_7,
11478         script_test_7.stdout, script_test_8, script_test_8.stdout): New rules.
11479         * Makefile.in: Regenerate.
11480         * testsuite/script_test_6.sh: New file.
11481         * testsuite/script_test_6.t: Same.
11482         * testsuite/script_test_7.sh: Same.
11483         * testsuite/script_test_7.t: Same.
11484         * testsuite/script_test_8.sh: Same.
11485
11486 2009-10-16  Doug Kwan  <dougkwan@google.com>
11487
11488         * output.cc (Output_segment::set_section_list_address): Cast
11489         expressions to unsigned long long type to avoid format warnings.
11490
11491 2009-10-15  Ian Lance Taylor  <iant@google.com>
11492
11493         * script.cc (Script_options::add_symbol_assignment): Always add a
11494         dot assignment to script_sections_.
11495         * script-sections.cc (Script_sections::add_dot_assignment):
11496         Initialize if necessary.
11497
11498         * layout.cc (Layout::relaxation_loop_body): Don't crash if we see
11499         program headers with no load segment if there is a linker script.
11500
11501         * layout.cc (Layout::set_segment_offsets): Align the file offset
11502         to the segment aligment for -N or -n with no load segment.
11503         * output.cc (Output_segment::add_output_section): Don't crash if
11504         the first section is a TLS section.
11505         (Output_segment::set_section_list_addresses): Print an error
11506         message if the address moves backward in a linker script.
11507         * script-sections.cc
11508         (Output_section_element_input::set_section_addresses): Don't
11509         increase *dot_value for a SHF_TLS/SHT_NOBITS section.
11510         (Orphan_output_section::set_section_addresses): Likewise.
11511
11512 2009-10-15  Doug Kwan  <dougkwan@google.com>
11513
11514         * layout.cc (Layout::finish_dynamic_section): Generate tags
11515         DT_FINI_ARRAY, DT_FINI_ARRAYSZ, DT_INIT_ARRAY, DT_INIT_ARRAYSZ,
11516         DT_PREINIT_ARRAY, DT_PREINIT_ARRAYSZ as needed. If -Bsymbolic is
11517         used, add DT_SYMBOLIC and set DF_SYMBOLIC in DT_FLAGS.
11518
11519 2009-10-14  Ian Lance Taylor  <iant@google.com>
11520
11521         * object.h (class Relocate_info): Add reloc_shdr and data_shdr
11522         fields.
11523         * object.cc (Sized_relobj::relocate_sections): Set reloc_shdr and
11524         data_shdr fields of relinfo.
11525         * i386.cc (class Target_i386::Relocate): Remove ldo_addrs_ field.
11526         (Target_i386::Relocate::relocate_tls): Don't call fix_up_ldo.  For
11527         R_386_TLS_LDO_32, adjust based on section flags.
11528         (Target_i386::Relocate::fix_up_ldo): Remove.
11529
11530 2009-10-13  Ian Lance Taylor  <iant@google.com>
11531
11532         Add support for -pie.
11533         * options.h (class General_options): Add -pie and
11534         --pic-executable.
11535         (General_options::output_is_position_independent): Test -pie.
11536         (General_options::output_is_executable): Return true if not shared
11537         and not relocatable.
11538         (General_options::output_is_pie): Remove.
11539         * options.cc (General_options::finalize): Reject incompatible uses
11540         of -pie.
11541         * gold.cc (queue_middle_tasks): A -pie link is not static.
11542         * symtab.h (Symbol::needs_plt_entry): Return false if -pie.
11543         * symtab.cc (Symbol::final_value_is_known): Return false if
11544         output_is_position_independent.
11545         * layout.cc (Layout::set_segment_offsets): Start at address 0 if
11546         output_is_position_independent.
11547         * output.cc (Output_file_header::do_sized_write): Use ET_DYN if
11548         output_is_position_independent.
11549         * i386.cc (Output_data_plt_i386::do_write): Use the PIC PLT if
11550         output_is_position_independent.
11551         * testsuite/Makefile.am (check_PROGRAMS): Add basic_pie_test and
11552         two_file_pie_test.
11553         (basic_pie_test.o, basic_pie_test): New targets.
11554         (two_file_test_1_pie.o, two_file_test_1b_pie.o): New targets.
11555         (two_file_test_2_pie.o, two_file_test_main_pie.o): New targets.
11556         (two_file_pie_test): New target.
11557         * testsuite/Makefile.in: Rebuild.
11558         * README: Remove note saying that -pie is not supported.
11559
11560 2009-10-13  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11561
11562         * options.h (class General_options): Add -init and -fini.
11563         * layout.cc (Layout::finish_dynamic_section): Emit
11564         given init and fini functions.
11565
11566 2009-10-13  Sriraman Tallam  <tmsriram@google.com>
11567
11568         * gc.h (gc_process_relocs): Check if icf is enabled using new
11569         function.
11570         * gold.cc (queue_initial_tasks): Likewise.
11571         (queue_middle_tasks): Likewise.
11572         * object.cc (do_layout): Likewise.
11573         * symtab.cc (is_section_folded): Likewise.
11574         * main.cc (main): Likewise.
11575         * reloc.cc (Read_relocs::run): Likewise.
11576         (Sized_relobj::do_scan_relocs): Likewise.
11577         * icf.cc (is_function_ctor_or_dtor): New function.
11578         (Icf::find_identical_sections): Check if function is ctor or dtor when
11579         safe icf is chosen.
11580         * options.h (General_options::icf): Change option to be an enum.
11581         (Icf_status): New enum.
11582         (icf_enabled): New method.
11583         (icf_safe_folding): New method.
11584         (set_icf_status): New method.
11585         (icf_status_): New variable.
11586         * (options.cc) (General_options::finalize): Set icf_status_.
11587         * testsuite/Makefile.am: Add commands to build icf_safe_test. Modify
11588         icf_test and icf_keep_unique_test to use the --icf enum flag.
11589         * testsuite/icf_safe_test.sh: New file.
11590         * testsuite/icf_safe_test.cc: New file.
11591
11592 2009-10-12  Sriraman Tallam  <tmsriram@google.com>
11593
11594         * symtab.h: Check for GOLD_SYMTAB_H before header includes. Remove
11595         includes to gc.h and icf.h.
11596         * arm.cc: Include gc.h.
11597         * gold.cc: Likewise.
11598         * i386.cc: Likewise.
11599         * powerpc.cc: Likewise.
11600         * sparc.cc: Likewise.
11601         * x86_64.cc: Likewise.
11602         * gc.h: Include icf.h.
11603
11604 2009-10-11  Ian Lance Taylor  <iant@google.com>
11605
11606         * plugin.cc: Include "gold.h" before other header files.
11607
11608 2009-10-10  Chris Demetriou  <cgd@google.com>
11609
11610         * options.h (Input_file_argument::Input_file_type): New enum.
11611         (Input_file_argument::is_lib_): Replace with...
11612         (Input_file_argument::type_): New member.
11613         (Input_file_argument::Input_file_argument): Take Input_file_type
11614         'type' rather than boolean 'is_lib' as second argument.
11615         (Input_file_argument::is_lib): Use type_.
11616         (Input_file_argument::is_searched_file): New function.
11617         (Input_file_argument::may_need_search): Handle is_searched_file.
11618         * options.cc (General_options::parse_library): Support -l:filename.
11619         (General_options::parse_just_symbols): Update for Input_file_argument
11620         changes.
11621         (Command_line::process): Likewise.
11622         * archive.cc (Archive::get_file_and_offset): Likewise.
11623         * plugin.cc (Plugin_manager::release_input_file): Likewise.
11624         * script.cc (read_script_file, script_add_file): Likewise.
11625         * fileread.cc (Input_file::Input_file): Likewise.
11626         (Input_file::will_search_for): Handle is_searched_file.
11627         (Input_file::open): Likewise.
11628         * readsyms.cc (Read_symbols::get_name): Likewise.
11629         * testsuite/Makefile.am (searched_file_test): New test.
11630         * testsuite/Makefile.in: Regenerate.
11631         * testsuite/searched_file_test.cc: New file.
11632         * testsuite/searched_file_test_lib.cc: New file.
11633
11634 2009-10-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11635             Ian Lance Taylor  <iant@google.com>
11636
11637         * descriptor.cc: Include <cstdio> and "binary-io.h".
11638         (Descriptors::open): Open the files in binary mode always.
11639         * script.cc (Lex::get_token): Treat \r as whitespace.
11640
11641 2009-10-09  Ian Lance Taylor  <iant@google.com>
11642
11643         * testsuite/retain_symbols_file_test.sh: Don't test for __tcf_0.
11644
11645 2009-10-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11646             Ian Lance Taylor  <iant@google.com>
11647
11648         * configure.ac: Check for readv function also.
11649         * fileread.cc (readv): Define if not HAVE_READV.
11650         * fileread.h (File_read:: max_readv_entries): Set to 1 if readv
11651         does not exist.
11652         * config.in: Regenerate.
11653         * configure: Regenerate.
11654
11655 2009-10-09  Doug Kwan  <dougkwan@google.com>
11656
11657         * layout.cc (Layout::make_output_section): Call target hook to make
11658         ordinary output section.
11659         (Layout::finalize): Adjust parameter list of call the
11660         Target::may_relax().
11661         * layout.h (class Layout::section_list): New method.
11662         * merge.h (Output_merge_base::entsize): Change visibility to public.
11663         (Output_merge_base::is_string, Output_merge_base::do_is_string):
11664         New methods.
11665         (Output_merge_string::do_is_string): New method.
11666         * object.cc (Sized_relobj::do_setup): renamed from
11667         Sized_relobj::set_up.
11668         * object.h (Sized_relobj::adjust_shndx,
11669         Sized_relobj::initializ_input_to_output_maps,
11670         Sized_relobj::free_input_to_output_maps): Change visibilities to
11671         protected.
11672         (Sized_relobj::setup): Virtualize.
11673         (Sized_relobj::do_setup): New method declaration.
11674         (Sized_relobj::invalidate_section_offset,
11675         Sized_relobj::do_invalidate_section_offset): New method decfinitions.
11676         (Sized_relobj::elf_file, Sized_relobj::local_values): New methods.
11677         * options.cc (parse_int): New function.
11678         * options.h (parse_int): New declaration.
11679         (DEFINE_int): New macro.
11680         (stub_group_size): New option.
11681         * output.cc (Output_section::Output_section): Initialize memebers
11682         merge_section_map_, merge_section_by_properties_map_,
11683         relaxed_input_section_map_, is_relaxed_input_section_map_valid_.
11684         (Output_section::add_input_section): Handled deferred code-fill
11685         generation and remove an old comment.
11686         (Output_section::add_relaxed_input_section): New method definition.
11687         (Output_section::add_merge_input_section): Use merge section by
11688         properties map to speed to search.  Update merge section maps
11689         as appropriate.
11690         (Output_section::build_relaxation_map): New method definition.
11691         (Output_section::convert_input_sections_in_list_to_relaxed_sections):
11692         Same.
11693         (Output_section::relax_input_section): Renamed to
11694         Output_section::convert_input_sections_to_relaxed_sections and change
11695         interface to take a vector of pointers to relaxed sections.
11696         (Output_section::find_merge_section,
11697         Output_section::find_relaxed_input_section): New method definitions.
11698         (Output_section::is_input_address_mapped,
11699         Output_section::output_offset, Output_section::output_address):
11700         Use output section data maps to speed up searching.
11701         (Output_section::find_starting_output_address): Add comments.
11702         (Output_section::do_write,
11703         Output_section::write_to_postprocessing_buffer): Do code-fill
11704         generation as appropriate.
11705         (Output_section::get_input_sections): Invalidate relaxed input section
11706         map.
11707         (Output_section::restore_states): Adjust type of checkpoint .
11708         Invalidate relaxed input section map.
11709         * output.h (Output_merge_base): New class declaration.
11710         (Input_section_specifier): New class defintion.
11711         (class Output_relaxed_input_section) Change base class to
11712         Output_section_data_build.
11713         (Output_relaxed_input_section::Output_relaxed_input_section): Adjust
11714         base class initializer.
11715         (Output_section::add_relaxed_input_section): New method declaration.
11716         (Output_section::Input_section): Change visibility to protected.
11717         (Output_section::Input_section::relobj,
11718         Output_section::Input_section::shndx): Handle relaxed input sections.
11719         Output_section::input_sections) Change visibility to protected.  Also
11720         define overload to return a non-const pointer.
11721         (Output_section::Merge_section_properties): New class defintion.
11722         (Output_section::Merge_section_by_properties_map,
11723         Output_section::Output_section_data_by_input_section_map,
11724         Output_section::Relaxation_map): New types.
11725         (Output_section::relax_input_section): Rename method to
11726         Output_section::convert_input_sections_to_relaxed_sections and change
11727         interface to take a vector of relaxed section pointers.
11728         (Output_section::find_merge_section,
11729         Output_section::find_relaxed_input_section,
11730         Output_section::build_relaxation_map,
11731         Output_section::convert_input_sections_in_list_to_relaxed_sections):
11732         New method declarations.
11733         (Output_section::merge_section_map_
11734         Output_section::merge_section_by_properties_map_,
11735         Output_section::relaxed_input_section_map_,
11736         Output_section::is_relaxed_input_section_map_valid_,
11737         Output_section::generate_code_fills_at_write_): New data members.
11738         * script-sections.cc
11739         (Output_section_element_input::set_section_addresses): Call
11740         current_data_size and addralign methods of relaxed input sections.
11741         (Orphan_output_section::set_section_addresses): Call current_data_size
11742         and addralign methods of relaxed input sections.
11743         * symtab.cc (Symbol_table::compute_final_value): Extract template
11744         from the body of Symbol_table::sized_finalize_symbol.
11745         (Symbol_table::sized_finalized_symbol): Call
11746         Symbol_table::compute_final_value.
11747         * symtab.h (Symbol_table::Compute_final_value_status): New enum type.
11748         (Symbol_table::compute_final_value): New templated method declaration.
11749         * target.cc (Target::do_make_output_section): New method defintion.
11750         * target.h (Target::make_output_section): New method declaration.
11751         (Target::relax): Add more parameters for input objects, symbol table
11752         and layout.  Adjust call to do_relax.
11753         (Target::do_make_output_section): New method declaration.
11754         (Target::do_relax): Add parameters for input objects, symbol table
11755         and layout.
11756
11757 2009-10-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11758
11759         * pread.c: Include stdio.h.
11760
11761 2009-10-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11762
11763         * plugin.cc: Don't include dlfcn.h when ENABLE_PLUGINS is not
11764         defined.
11765
11766 2009-10-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11767
11768         * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
11769         Change read_shndx type to unsigned int.
11770         (Sized_dwarf_line_info::read_lines): Change shndx type to unsigned
11771         int.
11772         (Sized_dwarf_line_info::read_line_mappings): Likewise.
11773         * dwarf_reader.h (Sized_dwarf_line_info::Sized_dwarf_line_info):
11774         Change read_shndx type to unsigned int.
11775         (Sized_dwarf_line_info::read_lines): Change shndx type to unsigned
11776         int.
11777         (Sized_dwarf_line_info::read_line_mappings): Likewise.
11778         * layout.cc (Layout::create_symtab_sections): Cast the result of
11779         local_symcount * symsize to off_t in the gold_assert.
11780
11781 2009-10-09  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
11782
11783         * arm.cc (Target_arm::relocate::reloc_is_non_pic): Return true for
11784         R_ARM_THM_ABS5, R_ARM_ABS8, R_ARM_ABS12, R_ARM_ABS16,
11785         R_ARM_BASE_ABS.
11786         (Arm_relocate_functions::abs8): Remove has_thumb_bit parameter.
11787         (Arm_relocate_functions::thm_abs5): New function.
11788         (Arm_relocate_functions::abs12): New function.
11789         (Arm_relocate_functions::abs16): New function.
11790         (Arm_relocate_functions::base_abs): New function.
11791         (Scan::check_non_pic): Handle R_ARM_ABS32_NOI.
11792         (Scan::local): Remove special handling of R_ARM_ABS8.  Handle
11793         R_ARM_ABS32_NOI, R_ARM_THM_ABS5, R_ARM_ABS12, R_ARM_ABS16, and
11794         R_ARM_BASE_ABS.
11795         (Scan::global): Likewise.
11796         (Relocate::relocate): Handle R_ARM_ABS12, R_ARM_ABS16,
11797         R_ARM_ABS32_NOI, R_ARM_THM_ABS5, and R_ARM_BASE_ABS.
11798         (Relocatable_size_for_reloc::get_size_for_reloc): Handle
11799         R_ARM_ABS16, R_ARM_THM_ABS5, R_ARM_ABS32_NOI, R_ARM_ABS12, and
11800         R_ARM_BASE_ABS.
11801
11802 2009-10-09  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
11803
11804         * arm.cc (Arm_relocate_functions::movw_prel_nc): New function.
11805         (Arm_relocate_functions::movt_prel): New function.
11806         (Arm_relocate_functions::thm_movw_prel_nc): New function.
11807         (Arm_relocate_functions::thm_movt_prel): New function.
11808         (Scan::local): Handle R_ARM_MOVW_PREL_NC, R_ARM_MOVT_PREL,
11809         R_ARM_THM_MOVW_PREL_NC, and R_ARM_THM_MOVT_PREL.
11810         (Scan::global, Relocate::relocate): Likewise.
11811         (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
11812
11813 2009-10-09  Mikolaj Zalewski  <mikolajz@google.com>
11814
11815         * gold.cc: (queue_initial_tasks): Pass incremental_inputs to
11816         Incremental_checker.
11817         * incremental.cc: (INCREMENTAL_LINK_VERSION): Change type to
11818         unsigned int.
11819         (class Incremental_inputs_header): New class.
11820         (Incremental_inputs_header_writer): Edit comment.
11821         (Incremental_inputs_entry): New class.
11822         (Incremental_inputs_entry_writer): Edit comment.
11823         (Sized_incremental_binary::do_find_incremental_inputs_section):
11824         Add *strtab_shndx parameter, fill it.
11825         (Sized_incremental_binary::do_check_inputs): New method.
11826         (Incremental_checker::can_incrementally_link_output_file): Use
11827         Sized_incremental_binary::check_inputs.
11828         (Incremental_inputs::report_command_line): Save command line in
11829         command_line_.
11830         * incremental.h:
11831         (Incremental_binary::find_incremental_inputs_section): New
11832         method.
11833         (Incremental_binary::do_find_incremental_inputs_section): Add
11834         strtab_shndx parameter.
11835         (Incremental_binary::do_check_inputs): New pure virtual method.
11836         (Sized_incremental_binary::do_check_inputs): Declare.
11837         (Incremental_checker::Incremental_checker): Add incremental_inputs
11838         parameter, use it to initialize incremental_inputs_.
11839         (Incremental_checker::incremental_inputs_): New field.
11840         (Incremental_checker::command_line): New method.
11841         (Incremental_checker::inputs): New method.
11842         (Incremental_checker::command_line_): New field.
11843
11844 2009-10-09  Mikolaj Zalewski  <mikolajz@google.com>
11845
11846         * incremental.cc: Include <cstdarg> and "target-select.h".
11847         (vexplain_no_incremental): New function.
11848         (explain_no_incremental): New function.
11849         (Incremental_binary::error): New method.
11850         (Sized_incremental_binary::do_find_incremental_inputs_section): New
11851         method.
11852         (make_sized_incremental_binary): New function.
11853         (open_incremental_binary): New function.
11854         (can_incrementally_link_file): Add checks if output is ELF and has
11855         inputs section.
11856         * incremental.h: Include "elfcpp_file.h" and "output.h".
11857         (Incremental_binary): New class.
11858         (Sized_incremental_binary): New class.
11859         (open_incremental_binary): Declare.
11860         * object.cc (is_elf_object): Use
11861         elfcpp::Elf_recognizer::is_elf_file.
11862         (make_elf_object): Use elfcpp::Elf_recognizer::is_valid_header.
11863         * output.h (Output_file::filesize): New method.
11864
11865 2009-10-07  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
11866
11867         * arm.cc (Arm_relocate_functions::extract_arm_movw_movt_addend):
11868         New function.
11869         (Arm_relocate_functions::insert_val_arm_movw_movt): New function.
11870         (Arm_relocate_functions::extract_thumb_movw_movt_addend): New
11871         function.
11872         (Arm_relocate_functions::insert_val_thumb_movw_movt): New
11873         function.
11874         (Arm_relocate_functions::movw_abs_nc): New function.
11875         (Arm_relocate_functions::movt_abs): New function.
11876         (Arm_relocate_functions::thm_movw_abs_nc): New function.
11877         (Arm_relocate_functions::thm_movt_abs): New function.
11878         (Scan::local): Handle R_ARM_MOVW_ABS_NC, R_ARM_MOVT_ABS,
11879         R_ARM_THM_MOVW_ABS_NC, R_ARM_THM_MOVT_ABS.
11880         (Scan::global): Likewise.
11881         (Relocate::relocate): Likewise.
11882         (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
11883
11884 2009-10-07  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
11885
11886         * arm.cc (Arm_relocate_functions::got_prel) New function.
11887         (Scan::local, Scan::global): Handle R_ARM_GOT_PREL.
11888         (Relocate::relocate): Likewise.
11889         (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
11890
11891 2009-10-06  Ian Lance Taylor  <iant@google.com>
11892
11893         * options.h (class General_options): Define
11894         split_stack_adjust_size parameter.
11895         * object.h (class Object): Add uses_split_stack_ and
11896         has_no_split_stack_ fields.  Add uses_split_stack and
11897         has_no_split_stack accessor functions.  Declare
11898         handle_split_stack_section.
11899         (class Reloc_symbol_changes): Define.
11900         (class Sized_relobj): Define Function_offsets.  Declare
11901         split_stack_adjust, split_stack_adjust_reltype, and
11902         find_functions.
11903         * object.cc (Object::handle_split_stack_section): New function.
11904         (Sized_relobj::do_layout): Call handle_split_stack_section.
11905         * dynobj.cc (Sized_dynobj::do_layout): Call
11906         handle_split_stack_section.
11907         * reloc.cc (Sized_relobj::relocate_sections): Call
11908         split_stack_adjust for executable sections in split_stack
11909         objects.  Pass reloc_map to relocate_section.
11910         (Sized_relobj::split_stack_adjust): New function.
11911         (Sized_relobj::split_stack_adjust_reltype): New function.
11912         (Sized_relobj::find_functions): New function.
11913         * target-reloc.h: Include "object.h".
11914         (relocate_section): Add reloc_symbol_changes parameter.  Change
11915         all callers.
11916         * target.h (class Target): Add calls_non_split method.  Declare
11917         do_calls_non_split virtual method.  Declare match_view and
11918         set_view_to_nop.
11919         * target.cc: Include "elfcpp.h".
11920         (Target::do_calls_non_split): New function.
11921         (Target::match_view): New function.
11922         (Target::set_view_to_nop): New function.
11923         * gold.cc (queue_middle_tasks): Give an error if mixing
11924         split-stack and non-split-stack objects with -r.
11925         * i386.cc (Target_i386::relocate_section): Add
11926         reloc_symbol_changes parameter.
11927         (Target_i386::do_calls_non_split): New function.
11928         * x86_64.cc (Target_x86_64::relocate_section): Add
11929         reloc_symbol_changes parameter.
11930         (Target_x86_64::do_calls_non_split): New function.
11931         * arm.cc (Target_arm::relocate_section): Add reloc_symbol_changes
11932         parameter.
11933         * powerpc.cc (Target_powerpc::relocate_section): Add
11934         reloc_symbol_changes parameter.
11935         * sparc.cc (Target_sparc::relocate_section): Add
11936         reloc_symbol_changes parameter.
11937         * configure.ac: Call AM_CONDITIONAL for the default target.
11938         * configure: Rebuild.
11939         * testsuite/Makefile.am (TEST_AS): New variable.
11940         (check_SCRIPTS): Add split_i386.sh and split_x86_64.sh.
11941         (check_DATA): Add split_i386 and split_x86_64 files.
11942         (SPLIT_DEFSYMS): Define.
11943         (split_i386_[1234n].o): New targets.
11944         (split_i386_[124]): New targets.
11945         (split_i386_[1234r].stdout): New targets.
11946         (split_x86_64_[1234n].o): New targets.
11947         (split_x86_64_[124]): New targets.
11948         (split_x86_64_[1234r].stdout): New targets.
11949         (MOSTLYCLEANFILES): Add new executables.
11950         * testsuite/split_i386.sh: New file.
11951         * testsuite/split_x86_64.sh: New file.
11952         * testsuite/split_i386_1.s: New file.
11953         * testsuite/split_i386_2.s: New file.
11954         * testsuite/split_i386_3.s: New file.
11955         * testsuite/split_i386_4.s: New file.
11956         * testsuite/split_i386_n.s: New file.
11957         * testsuite/split_x86_64_1.s: New file.
11958         * testsuite/split_x86_64_2.s: New file.
11959         * testsuite/split_x86_64_3.s: New file.
11960         * testsuite/split_x86_64_4.s: New file.
11961         * testsuite/split_x86_64_n.s: New file.
11962         * testsuite/testfile.cc (Target_test): Update relocation_section
11963         function.
11964         * testsuite/Makefile.in: Rebuild.
11965
11966 2009-10-06  Ian Lance Taylor  <iant@google.com>
11967
11968         * i386.cc (class Target_i386::Relocate): Add ldo_addrs_ field.
11969         (Target_i386::Relocate::relocate_tls): Call fix_up_ldo before
11970         changing local_dynamic_type_ from LOCAL_DYNAMIC_NONE.  When
11971         handling R_386_TLS_LDO_32, if local_dynamic_type_ is NONE, push
11972         the address on ldo_addrs_.
11973         (Target_i386::Relocate::fix_up_ldo): New function.
11974
11975 2009-10-06   Rafael Espindola  <espindola@google.com>
11976
11977         * plugin.cc (add_input_library): New.
11978         (Plugin::load): Add add_input_library to tv.
11979         (Plugin_manager::add_input_file): Add the is_lib argument.
11980         (add_input_file): Update call to Plugin_manager::add_input_file.
11981         (add_input_library): New.
11982         * plugin.h (Plugin_manager::add_input_file): Add the is_lib argument.
11983
11984 2009-09-30  Doug Kwan  <dougkwan@google.com>
11985
11986         * arm.cc (Target_arm::may_need_copy_reloc): Check for THUMB function
11987         symbol and call Symbol::may_need_copy_reloc to determine if
11988         a copy reloc is needed.
11989         * copy-relocs.cc (Copy_relocs::need_copy_reloc): Return false if -z
11990         nocopyreloc is given in command line.
11991         (Copy_relocs::emit_copy_reloc): Assert that -z nocopyreloc is not
11992         given in command line.
11993         * i386.cc (Target_i386::may_need_copy_reloc): Remove.
11994         (Target_i386::Scan::global): Use Symbol::may_need_copy_reloc instead
11995         of the removed Target_i386::may_need_copy_reloc.
11996         * options.h (copyreloc): New option with default value false.
11997         * powerpc.cc (Target_powerpc::may_need_copy_reloc): Remove.
11998         (Target_powerpc::Scan::global): Use Symbol::may_need_copy_reloc
11999         instead of the removed Target_powerpc::may_need_copy_reloc.
12000         * sparc.cc (Target_powerpc::may_need_copy_reloc): Remove.
12001         (Target_sparc::Scan::global): Use Symbol::may_need_copy_reloc
12002         instead of the removed Target_sparc::may_need_copy_reloc.
12003         * symtab.h (Symbol::may_need_copy_reloc): New method definition.
12004         * x86_64.cc (Target_powerpc::may_need_copy_reloc): Remove.
12005         (Target_x86_64::Scan::global): Use Symbol::may_need_copy_reloc
12006         instead of the removed Target_x86_64::may_need_copy_reloc.
12007
12008 2009-09-30  Ian Lance Taylor  <iant@google.com>
12009
12010         * object.h (class Object): Remove target_ field, and target,
12011         sized_target, and set_target methods.
12012         (Object::sized_target): Remove.
12013         (class Sized_relobj): Update declarations.  Remove sized_target.
12014         * object.cc (Sized_relobj::setup): Remove target parameter.
12015         Change all callers.
12016         (Input_objects::add_object): Don't do anything with the target.
12017         (make_elf_sized_object): Add punconfigured parameter.  Change all
12018         callers.  Set or test parameter target.
12019         * dynobj.cc (Sized_dynobj::target): Remove target parameter.
12020         Change all callers.
12021         * parameters.cc (Parameters::set_target): Change parameter type to
12022         be non-const.
12023         (Parameters::default_target): Remove.
12024         (set_parameters_target): Change parameter type to be non-const.
12025         (parameters_force_valid_target): New function.
12026         (parameters_clear_target): New function.
12027         * parameters.h (class Parameters): Update declarations.  Remove
12028         default_target method.  Add sized_target and clear_target
12029         methods.  Change target_ to be non-const.
12030         (set_parameters_target): Update declaration.
12031         (parameters_force_valid_target): Declare.
12032         (parameters_clear_target): Declare.
12033         * readsyms.cc (Read_symbols::do_read_symbols): Pass punconfigured
12034         as NULL if we aren't searching.
12035         (Add_symbols::run): Don't check for compatible target.
12036         * fileread.cc (Input_file::open_binary): Call
12037         parameters_force_valid_target.
12038         * gold.cc (queue_middle_tasks): Likewise.
12039         * plugin.cc (make_sized_plugin_object): Likewise.  Don't call
12040         set_target on object.
12041         * dynobj.h (class Sized_dynobj): Update declarations.
12042         * archive.cc (Archive::get_elf_object_for_member): Return NULL if
12043         make_elf_object returns NULL.
12044         (Archive::include_member): Don't check whether object target is
12045         compatible.
12046         * output.cc (Output_section::add_input_section): Get target from
12047         parameters.
12048         (Output_section::relax_input_section): Likewise.
12049         * reloc.cc (Sized_relobj::do_gc_process_relocs): Get target from
12050         parameters.
12051         (Sized_relobj::do_scan_relocs): Likewise.
12052         (Sized_relobj::relocate_sections): Likewise.
12053         * resolve.cc (Symbol_table::resolve): Likewise.
12054         * symtab.cc (Symbol_table::wrap_symbol): Likewise.  Remove object
12055         parameter.  Change all callers.
12056         (Symbol_table::add_from_object): Get target from parameters.
12057         (Symbol_table::add_from_relobj): Don't check object target.
12058         (Symbol_table::add_from_dynobj): Likewise.
12059         (Symbol_table::define_special_symbol): Get target from
12060         parameters.
12061         * symtab.h (class Symbol_table): Update declaration.
12062         * testsuite/binary_unittest.cc (gold_testsuite): Remove target
12063         parameter.  Change all callers.  Clear parameter target.
12064         (Binary_test): Test target here.
12065         * testsuite/object_unittest.cc (gold_testsuite): Remove
12066         target_test_pointer parameter.  Change all callers.
12067         (Object_test): Test target here.
12068
12069 2009-09-26  Ian Lance Taylor  <iant@google.com>
12070
12071         * testsuite/initpri1.c: Don't try to use constructor priorities if
12072         compiling with gcc before 4.3.
12073
12074 2009-09-22  Mikolaj Zalewski  <mikolajz@google.com>
12075
12076         * testsuite/retain_symbols_file_test.sh (check_present): Change
12077         output file name to retain_symbols_file_test.stdout.
12078         (check_absent): Likewise.
12079
12080 2009-09-18  Craig Silverstein  <csilvers@google.com>
12081
12082         * object.cc (Sized_relobj::do_count): Test should_retain_symbol map.
12083         * options.cc: Include <cerrno> and <fstream>.
12084         (General_options::finalize): Parse -retain-symbols-file tag.
12085         * options.h: New flag.
12086         (General_options): New method should_retain_symbol, new
12087         variable symbols_to_retain.
12088         * symtab.cc (Symbol_table::sized_finalize_symbol): Test
12089         should_retain_symbol map.
12090         * testsuite/Makefile.am (retain_symbols_file_test): New test.
12091         * testsuite/Makefile.in: Regenerate.
12092         * testsuite/retain_symbols_file_test.sh: New file.
12093
12094 2009-09-18  Nick Clifton  <nickc@redhat.com>
12095
12096         * po/es.po: Updated Spanish translation.
12097
12098 2009-09-17  Doug Kwan  <dougkwan@google.com>
12099
12100         * debug.h (DEBUG_RELAXATION): New constant.
12101         (DEBUG_ALL): Add DEBUG_RELAXATION.
12102         (debug_string_to_enum): Add relaxation debug option.
12103         * layout.cc
12104         (Layout::Relaxation_debug_check::check_output_data_for_reset_values,
12105         Layout::Relaxation_debug_check::read_sections,
12106         Layout::Relaxation_debug_check::read_sections): New method definitions.
12107         (Layout::Layout): Initialize data members
12108         record_output_section_data_from_scrips_,
12109         script_output_section_data_list_ and relaxation_debug_check_.
12110         (Layout::save_segments, Layout::restore_segments,
12111         Layout::clean_up_after_relaxation, Layout::prepare_for_relaxation,
12112         Layout::relaxation_loop_body): New method definitions.
12113         (Layout::finalize): Support relaxation.  Move section layout code to
12114         Layout::relaxation_loop_body.
12115         (Layout::set_asection_address_from_script): Move code for orphan
12116         section placement out.
12117         (Layout::place_orphan_sections_in_script): New method definition.
12118         * layout.h (Output_segment_headers, Output_file_header):
12119         New forward class declarations.
12120         (Layout::~Layout): Define.
12121         (Layout::new_output_section_data_from_script): New method definition.
12122         (Layout::place_orphan_sections_in_script): New method declaration.
12123         (Layout::Segment_states): New type declaration.
12124         (Layout::save_segments, Layout::restore_segments,
12125         Layout::clean_up_after_relaxation, Layout::prepare_for_relaxation,
12126         Layout::relaxation_loop_body): New method declarations.
12127         (Layout::Output_section_data_list): New type declaration.
12128         (Layout::Relaxation_debug_check): New class definition.
12129         (Layout::record_output_section_data_from_script_,
12130         Layout::script_output_section_data_list_, Layout::segment_states_,
12131         Layout::relaxation_debug_check_): New data members.
12132         * output.cc: (Output_section_headers::do_size): New method definition.
12133         (Output_section_headers::Output_section_headers): Move size
12134         computation to Output_section_headers::do_size.
12135         (Output_segment_headers::do_size): New method definition.
12136         (Output_file_header::Output_file_header): Move size computation to
12137         Output_file_header::do_size and call it.
12138         (Output_file_header::do_size): New method definition.
12139         (Output_data_group::Output_data_group): Adjust call to
12140         Output_section_data.
12141         (Output_data_dynamic::set_final_data_size): Add DT_NULL tag only once.
12142         (Output_symtab_xindex::do_write): Add array bound check.
12143         (Output_section::Input_section::print_to_mapfile): Handle
12144         RELAXED_INPUT_SECTION_CODE.
12145         (Output_section::Output_section): Initialize data member checkpoint_.
12146         (Output_section::~Output_section): Delete checkpoint object pointed
12147         by checkpoint_.
12148         (Output_section::add_input_section): Always add an Input_section if
12149         relaxing.
12150         (Output_section::add_merge_input_section): Add assert.
12151         (Output_section::relax_input_section): New method definition.
12152         (Output_section::set_final_data_size): Set load address to zero for
12153         an unallocated section.
12154         (Output_section::do_address_and_file_offset_have_reset_values):
12155         New method definition.
12156         (Output_section::Input_section_sort_enty::Input_section_sort_enty):
12157         Handle relaxed input section.
12158         (Output_section::sort_attached_input_sections): Checkpoint input
12159         section list lazily.
12160         (Output_section::get_input_sections): Change type of input_sections to
12161         list of Simple_input_section pointers.  Checkpoint input section list
12162         lazily.  Also handle relaxed input sections.
12163         (Output_section::add_input_section_for_script): Take a reference to
12164         a Simple_input_section object instead of Relobj pointer and section
12165         index as parameter.  Handle relaxed input sections.
12166         (Output_section::save_states, Output_section::restore_states): New
12167         method definitions.
12168         * output.h (Output_data::Output_data): Initialize is_data_size_fixed_.
12169         (Output_data::is_data_size_fixed): New method definition.
12170         (Output_data::reset_addresss_and_file_offset): Do not reset data size
12171         if it is fixed.
12172         (Output_data::address_and_file_offset_have_reset_values): New method
12173         definition.
12174         (Output_data::do_address_and_file_offset_have_reset_values): New method
12175         definition.
12176         (Output_data::set_data_size): Check that data size is not fixed.
12177         (Output_data::fix_data_size): New method definition.
12178         (Output_data::is_data_size_fixed_): New data member.
12179         (Output_section_headers::set_final_data_size): New method definition.
12180         (Output_section_headers::do_size): New method declaration.
12181         (Output_segment_headers::set_final_data_size): New method definition.
12182         (Output_segment_headers::do_size): New method declaration.
12183         (Output_file_header::set_final_data_size)::New method definition.
12184         (Output_file_header::do_size)::New method declaration.
12185         (Output_section_data::Output_section_data): Add new parameter
12186         is_data_size_fixed and use it to fix data size.
12187         (Output_data_const::Output_data_const): Adjust call to base class
12188         constructor and fix data size.
12189         (Output_data_const_buffer::Output_data_const_buffer): Adjust call to
12190         base class constructor and fix data size.
12191         (Output_data_fixed_space::Output_data_fixed_space): Adjust call to
12192         base class constructor and fix data size.
12193         (Output_data_zero_fill::Output_data_zero_fill): Adjust call to base
12194         class constructor and fix data size.
12195         (Output_data_group::set_final_data_size): New method definition.
12196         (Output_data_dynamic::Dynamic_entry::tag): New method definition.
12197         (Output_symtab_xindex::Output_symtab_xindex): Adjust call to base
12198         class constructor and fix data size.
12199         (Output_relaxed_input_section): New class definition.
12200         (Output_section::Simple_input_section): New class definition.
12201         (Output_section::get_input_sections): Adjust parameter list.
12202         (Output_section::add_input_section_for_script): Same.
12203         (Output_section::save_states, Output_section::restore_states,
12204         Output_section::do_address_and_file_offset_have_reset_values,
12205         (Output_section::Input_section::Input_section): Handle
12206         RELAXED_INPUT_SECTION_CODE.  Add new overload for
12207         Output_relaxed_input_section.
12208         (Output_section::Input_section::is_input_section,
12209         Output_section::Input_section::set_output_section): Handle relaxed
12210         input section.
12211         (Output_section::Input_section::is_relaxed_input_section,
12212         Output_section::Input_section::output_section_data,
12213         Output_section::Input_section::relaxed_input_section): New method
12214         definitions.
12215         (Output_section::Input_section::RELAXED_INPUT_SECTION_CODE): New enum
12216         value.
12217         (Output_section::Input_section::u1_): Update comments.
12218         (Output_section::Input_section::u2_): Add new union member poris.
12219         (Output_section::Checkpoint_output_section): New classs definition.
12220         (Output_section::relax_input_section): New method declaration.
12221         (Output_section::checkpoint_): New data member.
12222         (Output_segment): Update comments.
12223         (Output_segment::Output_segment): Un-privatize copy constructor.
12224         (Output_segment::operator=): Un-privatize.
12225         * script-sections.cc (Output_section_element::Input_section_list):
12226         Change element type to Output_section::Simple_input_section.
12227         (Output_section_element_dot_assignment::set_section_addresses):
12228         Register output section data for relaxation clean up.
12229         (Output_data_exression::Output_data_expression): Adjust call to base
12230         constructor to fix data size.
12231         (Output_section_element_data::set_section_addresses): Register
12232         Output_data_expression object for relaxation clean up.
12233         (struct Input_section_info): Replace Relobj pointer and section index
12234         pair with Output_section::Simple_input_section and Convert struct to a
12235         class.
12236         (Input_section_sorter::operator()): Adjust access to
12237         Input_section_info data member to use accessors.
12238         (Output_section_element_input::set_section_addresses): Use layout
12239         parameter.  Adjust code to use Output_section::Simple_input_section
12240         and Input_secction_info classes.  Register filler for relaxation
12241         clean up.
12242         (Orphan_output_section::set_section_addresses): Replace Relobj pointer
12243         and section index pair with Output_section::Simple_input_section
12244         class.  Adjust code accordingly.
12245         (Phdrs_element::release_segment): New method definition.
12246         (Script_sections::attach_sections_using_phdrs_clause): Do not modify
12247         segment list.
12248         (Script_sections::release_segments): New method definition.
12249         * gold/script-sections.h (Script_sections::release_segments): New
12250         method declaration.
12251         * gold/target.h (Target::may_relax, Target::relax,
12252         Target::do_may_relax, Target::do_relax): New method definitions.
12253
12254 2009-09-17  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
12255
12256         * arm.cc (has_signed_unsigned_overflow): New function.
12257         (Arm_relocate_functions::abs8): New function.
12258         (Target_arm::Scan::local): Handle R_ARM_ABS8.
12259         (Target_arm::Scan::global): Likewise.
12260         (Target_arm::relocate::relocate): Likewise.
12261         (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
12262         Likewise.
12263
12264 2009-09-16  Cary Coutant  <ccoutant@google.com>
12265
12266         * testsuite/Makefile.am (MOSTLYCLEANFILES): Add more generated files.
12267         * testsuite/Makefile.in: Regenerate.
12268
12269 2009-09-11  Nick Clifton  <nickc@redhat.com>
12270
12271         * po/gold.pot: Updated by the Translation project.
12272
12273 2009-09-08  Cary Coutant  <ccoutant@google.com>
12274
12275         * output.cc (Output_file::open): Add execute permission to empty file.
12276         * testsuite/Makefile.am (permission_test): New test.
12277         * testsuite/Makefile.in: Regenerate.
12278
12279 2009-09-02  Ian Lance Taylor  <iant@google.com>
12280
12281         * output.cc (Output_file::resize): Call map_no_anonymous rather
12282         than map.
12283
12284 2009-09-01  Mikolaj Zalewski  <mikolajz@google.com>
12285
12286         * gold.cc: Include "incremental.h".
12287         (queue_initial_tasks): Call Incremental_checker methods.
12288         * incremental.cc: Include "output.h".
12289         (Incremental_checker::can_incrementally_link_output_file): New
12290         method.
12291         * incremental.h (Incremental_checker): New class.
12292
12293         * output.cc (Output_file::open_for_modification): New method.
12294         (Output_file::map_anonymous): Changed return type to bool.  Record
12295         map in base_ field.
12296         (Output_file::map_no_anonymous): New method, broken out of map.
12297         (Output_file::map): Use map_no_anonymous and map_anonymous.
12298         * output.h (class Output_file): Update declarations.
12299
12300 2009-08-24  Cary Coutant  <ccoutant@google.com>
12301
12302         * options.h (Command_line::Pre_options): New class.
12303         (Command_line::pre_options): New member.
12304         * options.cc (gold::options::ready_to_register): New variable.
12305         (One_option::register_option): Do nothing if not registering options.
12306         Assert if same short option registered twice.
12307         (General_options::General_options): Turn off option registration when
12308         done constructing.
12309         (Command_line::Pre_options::Pre_options): New constructor.
12310
12311 2009-08-24  Cary Coutant  <ccoutant@google.com>
12312
12313         * options.h (General_options::no_keep_memory): Remove incorrect
12314         short option.
12315
12316 2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12317
12318         * Makefile.am (am__skiplex, am__skipyacc): New.
12319         * Makefile.in: Regenerate.
12320
12321 2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12322
12323         * Makefile.am (AM_CPPFLAGS): Renamed from ...
12324         (INCLUDES): ... this.
12325         * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add -Wno-portability.
12326         (AM_CPPFLAGS): Renamed from ...
12327         (INCLUDE): ... this.
12328         * Makefile.in, testsuite/Makefile.in: Regenerate.
12329
12330         * Makefile.in: Regenerate.
12331         * aclocal.m4: Likewise.
12332         * config.in: Likewise.
12333         * configure: Likewise.
12334         * testsuite/Makefile.in: Likewise.
12335
12336         * Makefile.am (AUTOMAKE_OPTIONS): Add foreign.
12337         * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add foreign.
12338         * Makefile.in: Regenerate.
12339         * testsuite/Makefile.in: Regenerate.
12340
12341 2009-08-19  Cary Coutant  <ccoutant@google.com>
12342
12343         * resolve.cc (Symbol_table::resolve): Don't complain about defined
12344         symbols in shared libraries overridden by hidden or internal symbols
12345         in the main program.
12346
12347 2009-08-19  Chris Demetriou  <cgd@google.com>
12348
12349         * testsuite/debug_msg.sh: Match .* rather than ${srcdir} when
12350         checking source file names in error messages.
12351
12352 2009-08-18  Doug Kwan  <dougkwan@google.com>
12353
12354         * dynobj.cc (Sized_dynobj::setup): Take a Target object instead of
12355         an elcpp::Ehdr as parameter.  Adjust call to set_target.
12356         * dynobj.h (Sized_dynobj::setup): Take a Target object instead of
12357         an elfcpp::Ehdr as parameter.
12358         * object.cc (Object::set_target): Remove the version that looks up
12359         a target and sets it.
12360         (Sized_relobj::setup): Take a Target object instead of
12361         an elfcpp::Ehdr as parameter.  Adjust call to set_target.
12362         (make_elf_sized_object): Find target and ask target to
12363         make an ELF object.
12364         * object.h: (Object::set_target): Remove the version that looks up
12365         a target and sets it.
12366         (Sized_relobj::setup): Take a Target object instead of
12367         an elfcpp:Ehdr as parameter.
12368         * target.cc: Include dynobj.h.
12369         (Target::do_make_elf_object_implementation): New.
12370         (Target::do_make_elf_object): New.
12371         * target.h (Target::make_elf_object): New template declaration.
12372         (Target::do_make_elf_object): New method declarations.
12373         (Target::do_make_elf_object_implementation): New template declaration.
12374
12375 2009-08-14  Ian Lance Taylor  <iant@google.com>
12376
12377         * gold.h (FUNCTION_NAME): Define.
12378         (gold_unreachable): Use FUNCTION_NAME.
12379
12380 2009-08-12  Sriraman Tallam  <tmsriram@google.com>
12381
12382         * icf.cc (Icf::find_identical_sections): Issue a warning when a
12383         symbol in the --keep-unique list is not found.
12384
12385 2009-08-12  Sriraman Tallam  <tmsriram@google.com>
12386
12387         * icf.cc (Icf::find_identical_sections): Unfold symbols that have
12388         been maked as --keep-unique.
12389         (Icf::unfold_section): New function.
12390         * icf.h (Icf::unfold_section): New function.
12391         * options.h (General_options::keep_unique): New option.
12392         * testsuite/Makefile.am: Add commands to build icf_keep_unique_test.
12393         * testsuite/Makefile.in: Regenerate.
12394         * testsuite/icf_keep_unique_test.sh: New file.
12395         * testsuite/icf_keep_unique_test.cc: New file.
12396
12397 2009-08-12  Cary Coutant  <ccoutant@google.com>
12398
12399         PR 10471
12400         * resolve.cc (Symbol_table::resolve): Check for references from
12401         dynamic objects to hidden and internal symbols.
12402         * testsuite/Makefile.am (hidden_test.sh): New test.
12403         * testsuite/Makefile.in: Regenerate.
12404         * testsuite/hidden_test.sh: New script.
12405         * testsuite/hidden_test_1.c: New test source.
12406         * testsuite/hidden_test_main.c: New test source.
12407
12408 2009-08-11  Doug Kwan  <dougkwan@google.com>
12409
12410         * arm.cc: Update comments.
12411         (Target_arm::do_finalize_sections): Add a special PT_ARM_EXIDX
12412         segment to locate the .ARM.exidx section if present.
12413
12414 2009-08-09  Doug Kwan  <dougkwan@google.com>
12415
12416         * dynobj.h (Sized_dynobj::do_section_entsize): Revert the previous
12417         patch.
12418
12419 2009-08-07  Sriraman Tallam  <tmsriram@google.com>
12420         * dynobj.h (Sized_dynobj::do_section_entsize): Add return to avoid
12421         compiler warnings.
12422
12423 2009-08-06  Sriraman Tallam  <tmsriram@google.com>
12424
12425         * x86_64.cc (Target_x86_64::Relocate::relocate_tls): Check for a
12426         valid tls_segment only for non-debug-section relocations.
12427         * testsuite/Makefile.am: Add gc_tls_test.
12428         * testsuite/Makefile.in: Regenerate.
12429         * testsuite/gc_tls_test.cc: New file.
12430         * testsuite/gc_tls_test.sh: New file.
12431
12432 2009-08-05  Sriraman Tallam  <tmsriram@google.com>
12433
12434         * icf.cc: New file.
12435         * icf.h: New file.
12436         * Makefile.am (CCFILES): Add icf.cc.
12437         (HFILES): Add icf.h
12438         * Makefile.in: Regenerate.
12439         * dynobj.h (Sized_dynobj::do_section_entsize): New function.
12440         * gc.h (gc_process_relocs): Populate lists used by icf to contain
12441         section, symbol and addend information for the relocs.
12442         * gold.cc (queue_middle_tasks): Call identical code folding.
12443         * gold.h: Add defines for multimap.
12444         * layout.cc (Layout::create_symtab_sections): Add symtab as parameter
12445         to the call of finalize_local_symbols.
12446         * main.cc (main): Create object of class Icf.
12447         * object.cc (Sized_relobj::do_layout): Allow this function to be
12448         called twice during icf.
12449         (Sized_relobj::do_finalize_local_symbols): Fold symbols corresponding
12450         to sections marked as identical by icf.
12451         (Sized_relobj::do_section_flags): Get section_flags from Symbols_data
12452         when available.
12453         (Sized_relobj::do_section_entsize): New function.
12454         * object.h (Object::section_entsize): New function.
12455         (Object::do_section_entsize): New pure virtual function.
12456         (Relobj::finalize_local_symbols): Add new parameter.
12457         (Relobj::do_section_entsize): New function.
12458         * options.h (General_options::icf): New option.
12459         (General_options::icf_iterations): New option.
12460         (General_options::print_icf_sections): New option.
12461         * plugin.cc (Sized_pluginobj::do_section_entsize): New function.
12462         * plugin.h (Sized_pluginobj::do_section_entsize): New function.
12463         * reloc.cc (Read_relocs::run): Delay scanning relocs when doing
12464         icf.
12465         * symtab.cc (Symbol_table::is_section_folded): New function.
12466         (Symbol_table::sized_finalize_symbol):  Fold symbols corresponding
12467         to sections marked as identical by icf.
12468         * symtab.h (Symbol_table::set_icf): New function.
12469         (Symbol_table::icf): New function.
12470         (Symbol_table::is_section_folded): New function.
12471         (Symbol_table::icf_): New data member.
12472         * target-reloc.h (relocate_section): Ignore sections folded by icf.
12473         * testsuite/Makefile.am: Add commands to build icf_test.
12474         * testsuite/Makefile.in: Regenerate.
12475         * testsuite/icf_test.sh: New file.
12476         * testsuite/icf_test.cc: New file.
12477
12478 2009-07-24  Chris Demetriou  <cgd@google.com>
12479
12480         * layout.cc (is_compressible_debug_section): Fix incorrect
12481         comment about compressed section names.
12482
12483 2009-07-20  Ian Lance Taylor  <ian@airs.com>
12484
12485         PR 10419
12486         * x86_64.cc (Target_x86_64::do_code_fill): Correct nop sequences.
12487
12488 2009-07-16  Ian Lance Taylor  <iant@google.com>
12489
12490         PR 10400
12491         * layout.h: #include <map>.
12492         (class Kept_section): Change from struct to class.  Add accessors
12493         and setters.  Add section size to Comdat_group mapping.  Change
12494         Comdat_group to std::map.  Add is_comdat_ field.  Add
12495         linkonce_size field in union.
12496         (class Layout): Update declaration of find_or_add_kept_section.
12497         Don't declare find_kept_object.
12498         * layout.cc (Layout::find_or_add_kept_section): Remove candidate
12499         parameter.  Add object, shndx, is_comdat, and is_group_name
12500         parameters.  Change all callers.  Adjust for new Kept_section.
12501         (Layout::find_kept_object): Remove.
12502         * object.cc (Sized_relobj::include_section_group): Update use of
12503         Kept_section.  Rename secnum to shndx.  Only record
12504         Kept_comdat_section if sections are the same size.
12505         (Sized_relobj::include_linkonce_section): Update use of
12506         Kept_section.  Only record Kept_comdat_section if sections are the
12507         same size.  Set size of linkonce section.
12508         (Sized_relobj::map_to_kept_section): Update call to
12509         get_kept_comdat_section.
12510         * object.h (class Sized_relobj): Rename fields in
12511         Kept_comdat_section to drop trailing underscores; change object
12512         field to Relobj*.  Change Kept_comdat_section_table to store
12513         struct rather than pointer.
12514         (Sized_relobj::set_kept_comdat_section): Remove kept parameter.
12515         Add kept_object and kept_shndx parameters.  Change all callers.
12516         (Sized_relobj::get_kept_comdat_section): Change return type to
12517         bool.  Add kept_object and kept_shndx parameters.  Change all
12518         callers.
12519         * plugin.cc (Pluginobj::include_comdat_group): Update call to
12520         Layout::find_or_add_kept_section.
12521
12522 2009-07-09  Ian Lance Taylor  <iant@google.com>
12523
12524         * merge.cc (Object_merge_map::initialize_input_to_output_map):
12525         Reserve space in the hash table.
12526
12527 2009-07-06  Mikolaj Zalewski  <mikolajz@google.com>
12528
12529         * fileread.cc (File_read::get_mtime): New method.
12530         * fileread.h (Timespec): New structure.
12531         (File_read::get_mtime): New method.
12532         * incremental.cc (Incremental_inputs_entry_data::timestamp_usec):
12533         Renamed from timestamp_nsec.
12534         (Incremental_inputs_entry_write::timestamp_sec): Fix argument to
12535         Elf_Xword.
12536         (Incremental_inputs_entry_write::timestamp_usec): Renamed from
12537         timestamp_nsec.
12538         (Incremental_inputs::report_archive): Save mtime; style fix.
12539         (Incremental_inputs::report_obejct): Save mtime; style fix.
12540         (Incremental_inputs::report_script): Save mtime; style fix.
12541         (Incremental_inputs::finalize_inputs): Style fix.
12542         (Incremental_inputs::finalize): Style fix.
12543         (Incremental_inputs::create_input_section_data): Store inputs
12544         mtime.
12545         * incremental.h (Incremental_inputs::report_script): Add mtime
12546         argument.
12547         (Incremental_inputs::Input_info::Input_info): Intialize only one
12548         union member.
12549         (Incremental_inputs::Input_info::archive): Move to nameless
12550         union.
12551         (Incremental_inputs::Input_info::obejct): Move to nameless union.
12552         (Incremental_inputs::Input_info::script): Move to nameless union.
12553         (Incremental_inputs::mtime): New field.
12554         * script.cc (read_input_script): Pass file mtime to
12555         Incremental_input.
12556         * script.h (Script_info::inputs): Style fix.
12557
12558 2009-07-01  Ian Lance Taylor  <ian@airs.com>
12559
12560         * freebsd.h (Target_freebsd::do_adjust_elf_header): Use size
12561         instead of 32.
12562
12563 2009-06-24  Ian Lance Taylor  <iant@google.com>
12564
12565         PR 10156
12566         * layout.cc (Layout::choose_output_section): If we find an
12567         existing section, update the flags.
12568         (Layout::create_notes): New function, broken out of
12569         Layout::finalize.
12570         (Layout::finalize): Don't create note sections.
12571         (Layout::create_note): Don't crash if linker script discards
12572         section.
12573         (Layout::create_gold_note): Likewise.
12574         (Layout::create_build_id): Likewise.  Don't set
12575         after_input_sections on the section.
12576         (Layout::create_executable_stack_info): Remove target parameter.
12577         Change caller.
12578         * layout.h (class Layout): Declare create_notes.  Update
12579         declaration of create_executable_stack_info.
12580         * gold.cc (queue_middle_tasks): Call create_notes.
12581         * output.cc (Output_section::update_flags_for_input_section): Move
12582         here from output.h.  If SHF_ALLOC flag is newly set, mark address
12583         invalid.
12584         * output.h (Output_data::mark_address_invalid): New function.
12585         (class Output_section): Only declare, not define,
12586         update_flags_for_input_section.  Remove set_flags.
12587
12588 2009-06-24  Ian Lance Taylor  <iant@google.com>
12589
12590         * script-sections.cc (Output_section_definition::
12591         set_section_addresses): Rename shadowing local load_address to
12592         laddr.
12593
12594 2009-06-24  Ian Lance Taylor  <iant@google.com>
12595
12596         PR 10244
12597         * reloc.cc (relocate_sections): Skip empty relocation sections.
12598
12599 2009-06-23  Ian Lance Taylor  <iant@google.com>
12600
12601         PR 10156
12602         * layout.cc (Layout::create_note): Use choose_output_section
12603         rather than make_output_section.
12604
12605 2009-06-23  Ian Lance Taylor  <iant@google.com>
12606
12607         PR 10237
12608         * options.cc (General_options::parse_V): Set printed_version_.
12609         (General_options::General_options): Initialize printed_version_.
12610         * options.h (class General_options): Add printed_version_ field.
12611         * gold.cc (queue_initial_tasks): If there are no input files,
12612         don't give a fatal error if we printed the version information.
12613         (queue_middle_tasks): If using -r with a shared object, give a
12614         fatal error rather than an ordinary error.
12615
12616 2009-06-23  Ian Lance Taylor  <iant@google.com>
12617
12618         PR 10219
12619         * layout.cc (Layout::Layout): Initialize have_stabstr_section_.
12620         (Layout::make_output_section): Set have_stabstr_section_ if we see
12621         a .stab*str section.
12622         (Layout::finalize): Call link_stabs_sections.
12623         (Layout::link_stabs_sections): New file.
12624         * layout.h (class Layout): Add have_stabstr_section_ field.
12625         Declare link_stabs_sections.
12626
12627 2009-06-23  Doug Kwan  <dougkwan@google.com>
12628
12629         * Makefile.am (libgold_a_LIBADD): New.
12630         (ld_new_DEPENDENCIES, ld_new_LDADD): Remove LIBOBJS
12631         * Makefile.in: Regenerate.
12632         * config.in (HAVE_DECL_MEMMEM, HAVE_DECL_STRNDUP): New.
12633         * configure: Regenerate.
12634         * configure.ac (AC_CHECK_DECLS): Add strndup and memmem.
12635         * fileread.cc: Include sys/state.h
12636         * gold.h: Declare memmem and strndup if found missing.
12637         * gold_reloc.h: Include byteswap.h if HAVE_BYTESWAP_H is defined.
12638
12639 2009-06-23  Ian Lance Taylor  <iant@google.com>
12640
12641         * configure.ac: Call AC_CHECK_DECLS using C, not C++.
12642         * configure: Rebuild.
12643
12644 2009-06-23  Ian Lance Taylor  <iant@google.com>
12645
12646         PR 10147
12647         * object.cc (Object::section_contents): Don't try to get a view if
12648         the section has length zero.
12649         (Object::handle_gnu_warning_section): If the section is empty, use
12650         the name of the section as the warning.
12651
12652 2009-06-23  Ian Lance Taylor  <iant@google.com>
12653
12654         PR 10133
12655         * stringpool.h (class Stringpool_template): Add optimize_ field.
12656         (Stringpool_template::set_optimize): New function.
12657         * stringpool.cc (Stringpool_template::Stringpool_template):
12658         Initialize optimize_ field.
12659         (Stringpool_template::set_string_offsets): Test local optimize
12660         fild rather than parameter.
12661         * layout.cc (Layout::Layout): Call set_optimize on the section
12662         name stringpool.
12663
12664 2009-06-22  Ian Lance Taylor  <iant@google.com>
12665
12666         PR 10030
12667         * yyscript.y: Parse TARGET.
12668         * script.cc (script_set_target): New function.
12669         * script-c.h (script_set_target): Declare.
12670         * options.cc (General_options::string_to_object_format): Rename
12671         from string_to_object_format in anonymous namespace.  Change
12672         callers.
12673         * options.h (class General_options): Declare
12674         string_to_object_format.
12675
12676 2009-06-22  Ian Lance Taylor  <iant@google.com>
12677
12678         * script-sections.cc (Script_sections::create_segments): Don't put
12679         program headers in a PT_LOAD segment if -n or -N.
12680
12681 2009-06-22  Ian Lance Taylor  <iant@google.com>
12682
12683         PR 10141
12684         * options.h (class General_options): Add -z lazy and -z now.  Sort
12685         -z options into alphabetical order.
12686         * layout.cc (Layout::finish_dynamic_section): Handle -z now.
12687
12688 2009-06-21  Ian Lance Taylor  <iant@google.com>
12689
12690         * layout.cc (Layout::make_output_section): Call
12691         Target::new_output_section.
12692         (Layout::attach_allocated_section_to_segment): Put large section
12693         sections in a separate load segment with the large segment flag
12694         set.
12695         (Layout::segment_precedes): Sort large data segments after other
12696         load segments.
12697         (align_file_offset): New static function.
12698         (Layout::set_segment_offsets): Use align_file_offset.
12699         * output.h (class Output_section): Add is_small_section_ and
12700         is_large_section_ fields.
12701         (Output_section::is_small_section): New function.
12702         (Output_section::set_is_small_section):  New function.
12703         (Output_section::is_large_section): New function.
12704         (Output_section::set_is_large_section): New function.
12705         (Output_section::is_large_data_section): New function.
12706         (class Output_segment): Add is_large_data_segment_ field.
12707         (Output_segment::is_large_data_segment): New function.
12708         (Output_segment::set_is_large_data_segment): New function.
12709         * output.cc (Output_section::Output_section): Initialize new
12710         fields.
12711         (Output_segment::Output_segment): Likewise.
12712         (Output_segment::add_output_section): Add assertion that large
12713         data sections always go in large data segments.  Force small data
12714         sections to the end of the list of data sections.  Force small BSS
12715         sections to the start of the list of BSS sections.  For large BSS
12716         sections to the end of the list of BSS sections.
12717         * symtab.h (class Symbol): Declare is_common_shndx.
12718         (Symbol::is_defined): Check Symbol::is_common_shndx.
12719         (Symbol::is_common): Likewise.
12720         (class Symbol_table): Define enum Commons_section_type.  Update
12721         declarations.  Add small_commons_ and large_commons_ fields.
12722         * symtab.cc (Symbol::is_common_shndx): New function.
12723         (Symbol_table::Symbol_table): Initialize new fields.
12724         (Symbol_table::add_from_object): Put small and large common
12725         symbols in the right list.
12726         (Symbol_table::sized_finalized_symbol): Check
12727         Symbol::is_common_shndx.
12728         (Symbol_table::sized_write_globals): Likewise.
12729         * common.cc (Symbol_table::do_allocate_commons): Allocate new
12730         common symbol lists.  Don't call do_allocate_commons_list if the
12731         list is empty.
12732         (Symbol_table::do_allocate_commons_list): Remove is_tls
12733         parameter.  Add comons_section_type parameter.  Change all
12734         callers.  Handle small and large common symbols.
12735         * object.cc (Sized_relobj::do_finalize_local_symbols): Check
12736         Symbol::is_common_shndx.
12737         * resolve.cc (symbol_to_bits): Likewise.
12738         * target.h (Target::small_common_shndx): New function.
12739         (Target::small_common_section_flags): New function.
12740         (Target::large_common_shndx): New function.
12741         (Target::large_common_section_flags): New function.
12742         (Target::new_output_section): New function.
12743         (Target::Target_info): Add small_common_shndx, large_common_shndx,
12744         small_common_section_flags, and large_common_section_flags
12745         fields.
12746         (Target::do_new_output_section): New virtual function.
12747         * arm.cc (Target_arm::arm_info): Initialize new fields.
12748         * i386.cc (Target_i386::i386_info): Likewise.
12749         * powerpc.cc (Target_powerpc::powerpc_info) [all versions]:
12750         Likewise.
12751         * sparc.c (Target_sparc::sparc_info) [all versions]: Likewise.
12752         * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
12753         (Target_x86_64::do_new_output_section): New function.
12754         * configure.ac: Define conditional MCMODEL_MEDIUM.
12755         * testsuite/Makefile.am (check_PROGRAMS): Add large.
12756         (large_SOURCES, large_CFLAGS, large_DEPENDENCIES): Define.
12757         (large_LDFLAGS): Define.
12758         * testsuite/large.c: New file.
12759         * testsuite/testfile.cc (Target_test::test_target_info):
12760         Initialize new fields.
12761         * configure, testsuite/Makefile.in: Rebuild.
12762
12763 2009-06-05  Doug Kwan  <dougkwan@google.com>
12764
12765         * Makefile.am (CCFILES): Add target.cc.
12766         * Makefile.in: Regenerate.
12767         * i386.cc (class Target_i386): Define new virtual method to
12768         override do_is_local_label_name in parent.
12769         * object.cc (Sized_relobj::do_count_local_symbols): Discard
12770         local symbols if --discard-locals or -X is given.
12771         * options.h (class General_options): Declare new options
12772         '--discard-locals' and '-X' for discarding locals.
12773         * target.h (class Target): Define new methods is_local_label_name.
12774         Declare new virtual method do_is_local_label_name.
12775         * target.cc: New file.
12776         * testsuite/Makefile.am (check_PROGRAMS): Add discard_locals_test.
12777         (check_SCRIPTS): Add discard_locals_test.sh.
12778         (check_DATA): Add discard_local_tests.syms.
12779         (discard_locals_test_SOURCES, discard_locals_test_LDFLAGS): Define.
12780         (discard_local_tests.syms, discard_locals_test.o): New make rules.
12781         * testsuite/Makefile.in: Regenerate.
12782         * testsuite/discard_locals_test.c: New file.
12783         * testsuite/discard_locals_test.sh: Same.
12784
12785 2009-06-05  Doug Kwan  <dougkwan@google.com>
12786
12787         * object.cc (Sized_relobj::Sized_relobj): Initialize
12788         discarded_eh_frame_shndx_ to -1U.
12789         (Sized_relobj::do_layout): Record index of a discard .eh_frame
12790         section.
12791         (Sized_relobj::do_count_local_symbols): Skip local symbols in
12792         a discarded .eh_frame section.
12793         (Sized_relobj::do_finalize_local_symbols): Ditto.
12794         * object.h (class Sized_relobj): Declare new member
12795         discarded_eh_frame_shndx_.
12796         * testsuite/Makefile.am (check_PROGRAMS): Add local_labels_test.
12797         (local_labels_test.o, local_labels_test): New rules.
12798         * testsuite/Makefile.in: Regenerate.
12799
12800 2009-06-04  Doug Kwan  <dougkwan@google.com>
12801
12802         * layout.cc (Layout::section_name_mapping): Add mapping for
12803         special ARM sections.
12804
12805 2009-06-03  Doug Kwan  <dougkwan@google.com>
12806
12807         * arm.cc (utils::sign_extend): Reverse test in gold_assert.
12808         (utils::has_overflow): Same.
12809
12810 2009-06-03  Ian Lance Taylor  <iant@google.com>
12811
12812         * layout.cc (Layout::section_name_mapping): New array, replacing
12813         Layout::linkonce_mapping.
12814         (Layout::section_name_mapping_count): New variable, replacing
12815         Layout::linkonce_mapping_count.
12816         (Layout::linkonce_output_name): Remove.
12817         (Layout::output_section_name): Rewrite.
12818         * layout.h (class Layout): Rename Linkonce_mapping to
12819         Section_name_mapping, linkonce_mapping to section_name_mapping,
12820         linkonce_mapping_count to section_name_mapping_count.  Don't
12821         declare linkonce_output_name.
12822
12823 2009-06-03  Doug Kwan  <dougkwan@google.com>
12824
12825         * gold/arm.cc (namespace utils): New.
12826         (Target_arm::reloc_is_non_pic): Define new method.
12827         (class Arm_relocate_functions): New.
12828         (Target_arm::Relocate::relocate): Handle relocation types used by
12829         Android.
12830
12831 2009-06-03  Ian Lance Taylor  <iant@google.com>
12832
12833         * arm.cc (Target_arm::scan::global): Use || instead of |.
12834
12835 2009-06-02  Doug Kwan  <dougkwan@google.com>
12836
12837         * gold/arm.cc (Target_arm::Scan::Scan):  Initialize
12838         issued_non_pic_error_.
12839         (class Target_arm::Scan): Declare new method check_non_pic.
12840         Define new method symbol_needs_plt_entry.
12841         Declare new data member issued_non_pic_error_.
12842         (class Target_arm::Relocate): Declare new method
12843         should_apply_static_reloc.
12844         (Target_arm::may_need_copy_reloc): Handle STT_ARM_TFUNC.
12845         (Target_arm::Scan::check_non_pic): Define new method.
12846         (Target_arm::Scan::local): Handle a small subset of reloc types used
12847         by Android.
12848         (Target_arm::Scan::local): Same.
12849         (Target_arm::Relocate::should_apply_statci_reloc): Define new method.
12850
12851 2009-05-31  Mikolaj Zalewski  <mikolajz@google.com>
12852
12853         * incremental.cc (Incremental_inputs::report_command_line): Filter
12854         out --incremental-* options.
12855
12856 2009-05-29  Doug Kwan  <dougkwan@google.com>
12857
12858         * gold/arm.cc (Output_data_plt_arm): Forward declaration for new
12859         template class.
12860         (class Target_arm): Update comment.
12861         (Target_arm::Target_arm): Initialize new data members GOT_,
12862         PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_ and DYNBSS_.
12863         Declare new methods Target_arm::got_section, Target_arm::make_plt_entry
12864         and Target_arm::rel_dyn_section.
12865         Declare new_enum Target_arm::Got_type.
12866         Declare new data members GOT_, PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_
12867         and DYNBSS_.
12868         Update commments for member do_dynsym_value.
12869         (Target_arm::got_size, Target_arm::plt_section,
12870         Target_arm::may_need_copy_reloc and Target_arm::copy_reloc): Define
12871         new methods inside class defintion.
12872         (Target_arm::got_section): Define new method.
12873         (Target_arm::rel_dyn_section): Same.
12874         (Output_data_plt_arm): New template class.
12875         (Output_data_plt_arm::Output_data_plt_arm): Define constructor.
12876         (Output_data_plt_arm:do_adjust_output_section): Define new method.
12877         (Output_data_plt_arm::add_entry): Same.
12878         (Output_data_plt_arm::first_plt_entry): Define new
12879         static data member for PLT instruction template.
12880         (Output_data_plt_arm::plt_entry): Same.
12881         (Output_data_plt_arm::do_write): Define new method.
12882         (Target_arm::make_plt_entry): Same.
12883         (Target_arm::do_finalize_sections): Same.
12884         (Target_arm::do_dynsym_value): Same.
12885
12886 2009-05-28  Doug Kwan  <dougkwan@google.com>
12887
12888         * Makefile.am (TARGETSOURCES): Add arm.cc.
12889         (ALL_TARGETOBJECTS): Add arm.$(OBJEXT)
12890         * Makefile.in: Regenerate.
12891         * arm.cc: New file.
12892         * configure.tgt: Add armbe*-*-*, armeb*-*-* and arm*-*-* targets.
12893
12894 2009-05-26  Doug Kwan  <dougkwan@google.com>
12895
12896         * options.cc (General_options::parse_exclude_libs).  Fix a comment.
12897         (General_options::check_excluded_libs): Strip off directories in
12898         archive name before matching like GNU ld does.
12899         * testsuite/Makefile.am (MOSTLYCLEANFILES,
12900         exclude_libs_test_DEPENDENCIES): Add alt/libexclude_libs_test_3.a
12901         (exclude_libs_test_LDFLAGS): Add linker option
12902         -Wl,--exclude-libs,libexclude_libs_test_3
12903         (exclude_libs_test_LADD): Add alt/libexclude_libs_test_3.a as
12904         an explicit archive without using -l.
12905         (alt/libexclude_libs_test_3.a): New make rule.
12906         * testsuite/Makefile.in: Regenerate.
12907         * testsuite/exclude_libs_test.c : Declare lib3_default().
12908         (main): Call it.
12909         * exclude_libs_test.sh: Add tests for alt/exclude_libs_test_3.a.
12910         * exclude_libs_test_3.c: New file.
12911
12912 2009-05-26  Nick Clifton  <nickc@redhat.com>
12913
12914         * po/id.po: New Indonesian translation.
12915         * po/gold.pot: Updated template file.
12916
12917 2009-05-22  Sriraman Tallam  <tmsriram@google.com>
12918
12919         * testsuite/Makefile.am: Add -ffunction-sections to compile
12920         gc_comdat_test files.  Add -Wl,--gc-sections to build
12921         gc_comdat_test.
12922         * testsuite/Makefile.in: Regenerate.
12923         * testsuite/gc_comdat_test.sh: Fix the condition around grep.
12924
12925 2009-05-21  Sriraman Tallam  <tmsriram@google.com>
12926
12927         * object.cc (Sized_relobj::map_to_kept_section): Return NULL if the
12928         kept comdat section was garbage collected.
12929         * testsuite/Makefile.am: Add test gc_comdat_test.sh.
12930         * testsuite/Makefile.in: Regenerate.
12931         * testsuite/gc_comdat_test.sh: New file.
12932         * testsuite/gc_comdat_test_1.cc: New file.
12933         * testsuite/gc_comdat_test_2.cc: New file.
12934
12935 2009-05-19  Doug Kwan  <dougkwan@google.com>
12936
12937         * archive.cc (Archive::Archive): Move constructor from archive.h
12938         to here.  Initialize no_export_.
12939         (Archive::get_elf_object_for_member): Set no_export flag of object.
12940         * archive.h (Archive::Archive): Move constructor body to
12941         archive.cc.
12942         (Archive::no_export): New method.
12943         (Archive::no_export_): New field.
12944         * object.h (Object::Object): Initialize no_export_ to false.
12945         (Object::no_export, Object::set_no_export): New methods.
12946         (Object::no_export_): New field.
12947         * options.cc (General_options::parse_exclude_libs): New method.
12948         (General_options::check_excluded_libs) Same.
12949         * options.h (exclude_libs): New option.
12950         (General_options::check_excluded_libs): New method declaration.
12951         (General_options::excluded_libs_): New field.
12952         * symtab.cc (Symbol_table::add_from_relobj): Hide symbols with
12953         default or protected visibility if an object has no-export flag set.
12954         testsuite/Makefile.am (check_PROGRAMS): Add exclude_libs_test.
12955         (check_SCRIPTS): Add exclude_libs_test.sh.
12956         (check_DATA): Add exclude_libs_test.syms.
12957         (MOSTLYCLEANFILES): Add exclude_libs_test.syms,
12958         libexclude_libs_test_1.a and libexclude_libs_test_2.a.
12959         (exclude_libs_test_SOURCES, exclude_libs_test_DEPENDENCIES,
12960         exclude_libs_test_LDFLAGS and exclude_libs_test_LDADD): Define.
12961         (exclude_libs_test.syms, libexclude_libs_test_1.a,
12962         libexclude_libs_test_2.a): New rules.
12963         * testsuite/Makefile.in: Regenerate.
12964         * testsuite/exclude_libs_test.c: New file.
12965         * testsuite/exclude_libs_test.sh: Ditto.
12966         * testsuite/exclude_libs_test_1.c: Ditto.
12967         * testsuite/exclude_libs_test_2.c: Ditto.
12968
12969 2009-05-15  Ian Lance Taylor  <iant@google.com>
12970
12971         * configure.ac: Check for declarations for cases where libiberty.h
12972         checks HAVE_DECL_xxx.
12973         * configure, config.in: Rebuild.
12974
12975 2009-05-15  Mikolaj Zalewski  <mikolajz@google.com>
12976
12977         * gold.h (Incremental_argument_list): Remove (invalid) forward
12978         declaration.
12979         * incremental.cc (Incremental_inputs::report_achive): New method.
12980         (Incremental_inputs::report_object): New method.
12981         (Incremental_inputs::report_script): New method.
12982         (Incremental_inputs::finalize_inputs): New method.
12983         (Incremental_inputs::finalize): Call finalize_inputs().
12984         (Incremental_inputs::sized_create_incremental_inputs_section_data):
12985         Create inputs entries.
12986         * incremental.h (Incremental_input_type): New enum.
12987         (Incremental_inputs::Incremental_input): Initialize new fields.
12988         (Incremental_inputs::report_inputs): New method.
12989         (Incremental_inputs::report_achive): New method.
12990         (Incremental_inputs::report_object): New method.
12991         (Incremental_inputs::report_script): New method.
12992         (Incremental_inputs::finalize_inputs): New method.
12993         (Incremental_inputs::Input_info): New struct.
12994         (Incremental_inputs::Input_info_map): New typedef.
12995         (Incremental_inputs::lock_): New field.
12996         (Incremental_inputs::Inputs_): New field.
12997         (Incremental_inputs::Inputs_map): New field.
12998         * main.cc (main): Call Incremental_input::report_inputs.
12999         * options.h (Input_argument_list): Typedef moved from
13000         Input_arguments.
13001         (Input_file_group::Files): Remove, use ::Input_argument_list.
13002         (Input_file_group::Input_argument_list): Remove, use
13003         ::Input_argument_list.
13004         * plugin.cc (Plugin_manager::add_input_file): Add error in
13005         incremental build.
13006         * read_syms.cc (do_read_syms): Call Incremental_input::report_*
13007         functions.
13008         * script.cc (read_input_script): Call
13009         Incremental_input::report_script.
13010         * script.h (Script_info): New class.
13011
13012 2009-04-27  Ian Lance Taylor  <iant@google.com>
13013
13014         * x86_64.cc (do_adjust_output_section): Set entsize to
13015         plt_entry_size.
13016
13017 2009-04-23  Elliott Hughes  <enh@google.com>
13018
13019         * output.cc (Output_file::close): After short writes, continue
13020         writing from the correct offset in the buffer being written.
13021
13022 2009-04-23  Chris Demetriou  <cgd@google.com>
13023
13024         * configure.ac (HAVE_TR1_UNORDERED_MAP_REHASH): New define.
13025         * configure: Regenerate.
13026         * config.in: Regenerate.
13027         * gold.h: Avoid std::tr1::unordered_map and std::tr1::unordered_set
13028         if HAVE_TR1_UNORDERED_MAP_REHASH is not defined.
13029
13030 2009-04-21  Mikolaj Zalewski  <mikolajz@google.com>
13031
13032         * incremental.cc (Incremental_inputs_header_data): Renamed from
13033         Incremental_input_header_data.
13034         (Incremental_inputs_header_data::data_size): New field.
13035         (Incremental_inputs_header_data::put_input_file_count): Renamed
13036         from input_file_count.
13037         (Incremental_inputs_header_data::put_command_line_offset): Renamed
13038         from command_line_offset.
13039         (Incremental_inputs_header_data::put_reserved): Renamed from
13040         put_reserved.
13041         (Incremental_inputs_entry_data): Renamed from
13042         Incremental_input_entry_data.
13043         (Incremental_inputs_entry_data::data_size): New field.
13044         (Incremental_inputs::report_command_line): New method.
13045         (Incremental_inputs::finalize): New method.
13046         (Incremental_inputs::create_incremental_inputs_data): New method.
13047         (Incremental_inputs::sized_create_incremental_inputs_data): New method.
13048         * incremental.h: New file.
13049         * layout.cc (Layout::Layout): Handle new incremental_inputs_.
13050         (Layout::finalize): Create incremental inputs section in
13051         incremental builds.
13052         (Layout::create_incremental_info_sections): New method.
13053         * layout.h (Layout::incremental_inputs): New method.
13054         (Layout::create_incremental_info_sections): New method.
13055         (Layout::incremental_inputs_): New field.
13056         * main.cc (main): Notify Incremental_input of the command line.
13057
13058 2009-04-01  Ian Lance Taylor  <iant@google.com>
13059             Mikolaj Zalewski  <mikolajz@google.com>
13060
13061         * gold.h (reserve_unordered_map): Define, three versions, one for
13062         each version of Unordered_map.
13063         * layout.cc (Layout::Layout): Remove options parameter.  Add
13064         number_of_input_files parameter.  Don't initialize options_.
13065         Initialize number_of_input_files_ and resized_signatures_.  Move
13066         sections_are_attached_.
13067         (Layout::layout_group): Reserve space for group_signatures_.
13068         (Layout::find_or_add_kept_section): Change name parameter to be a
13069         reference.  Resize signatures_ map when it gets large enough.
13070         (Layout::layout_eh_frame): Use parameters->options() instead of
13071         this->options_.
13072         (Layout::make_output_section): Likewise.
13073         (Layout::attach_allocated_section_to_segment): Likewise.
13074         (Layout::finalize, Layout::create_executable_stack): Likewise.
13075         (Layout::set_segment_offsets, Layout::create_interp): Likewise.
13076         (Layout::finish_dynamic_section, Layout::write_binary): Likewise.
13077         * layout.h (class Layout): Update declarations.  Remove options_
13078         field.  Add number_of_input_files_ and resized_signatures_
13079         fields.  Move sections_are_attached_ field.
13080         * main.cc (main): Pass number of input files to Layout
13081         constructor.  Don't pass options.
13082
13083 2009-03-30  Ian Lance Taylor  <iant@google.com>
13084
13085         * ffsll.c (ffsll): Correct implementation.
13086
13087 2009-03-27  Ian Lance Taylor  <iant@google.com>
13088
13089         * ffsll.c: New file.
13090         * configure.ac: Call AC_REPLACE_FUNCS on ffsll.
13091         * gold.h (ffsll): Declare if HAVE_FFSLL is not defined.
13092         * ftruncate.c (ftruncate): Declare before definition.
13093         * mremap.c (mremap): Likewise.
13094         * pread.c (pread): Likewise.
13095         * configure, Makefile.in, config.in: Rebuild.
13096
13097         * mremap.c: New file.
13098         * configure.ac: Call AC_REPLACE_FUNCS on mremap.
13099         * gold.h (MREMAP_MAYMOVE): Define if HAVE_MREMAP is not defined.
13100         (mremap): Declare if HAVE_MREMAP is not defined.
13101         * configure, Makefile.in, config.in: Rebuild.
13102
13103 2009-03-27  Cary Coutant  <ccoutant@google.com>
13104
13105         * powerpc.cc (Target_powerpc::check_non_pic): Assert that output is
13106         position independent.
13107         * sparc.cc (Target_sparc::check_non_pic): Likewise.
13108         * x86_64.cc (Target_x86_64::check_non_pic): Likewise.
13109
13110 2009-03-24  Cary Coutant  <ccoutant@google.com>
13111
13112         * symtab.h (needs_plt_entry): Check for unsatisfied reference from
13113         an executable.
13114         (needs_dynamic_reloc): Likewise.
13115
13116 2009-03-24  Ian Lance Taylor  <iant@google.com>
13117
13118         * yyscript.y (file_cmd): Recognize EXTERN.
13119         (extern_name_list, extern_name_list_body): New nonterminals.
13120         * script.cc (script_add_extern): Define.
13121         * script-c.h (script_add_extern): Declare.
13122
13123 2009-03-24  Rafael Avila de Espindola  <espindola@google.com>
13124
13125         * object.cc (is_elf_object): Define.
13126         * object.h (is_elf_object): Declare.
13127         * archive.cc (Archive::get_elf_object_for_member): Call
13128         is_elf_object.
13129         * readsyms.cc (Read_symbols::do_read_symbols): Likewise.
13130
13131 2009-03-24  Elliott Hughes  <enh@google.com>
13132
13133         * output.cc (Output_file::map_anonymous): Define.
13134         (Output_file::map): Use map_anonymous.  If the regular mmap fails,
13135         try an anonymous one.  Report the size if the mmap fails.
13136         * output.h (class Output_file): Declare map_anonymous.
13137
13138 2009-03-24  Ian Lance Taylor  <iant@google.com>
13139
13140         * target-select.cc (instantiate_target): Don't acquire the lock if
13141         the instantiated_target_ field has already been set.
13142
13143 2009-03-23  Ian Lance Taylor  <iant@google.com>
13144
13145         * gold-threads.h (class Initialize_lock): Define.
13146         * gold-threads.cc (class Initialize_lock_once): Define.
13147         (initialize_lock_control): New static variable.
13148         (initialize_lock_pointer): New static variable.
13149         (initialize_lock_once): New static function.
13150         (Initialize_lock::Initialize_lock): Define.
13151         (Initialize_lock::initialize): Define.
13152         * target-select.h: Include "gold-threads.h".
13153         (class Target_selector): Add lock_ and initialize_lock_ fields.
13154         Don't define instantiate_target, just declare it.
13155         * target-select.cc (Target_selector::Target_selector): Initialize
13156         new fields.
13157         (Target_selector::instantiate_target): Define.
13158         * descriptors.h: Include "gold-threads.h".
13159         (class Descriptors): Add initialize_lock_ field.
13160         * descriptors.cc (Descriptors::Descriptors): Initialize new
13161         field.
13162         (Descriptors::open): Use initialize_lock_ field
13163         * errors.h (class Errors): Add initialize_lock_ field.
13164         * errors.cc (Errors::Errors): Initialize new field.
13165         (Errors::initialize_lock): Use initialize_lock_ field.
13166         * powerpc.cc (class Target_selector_powerpc): Remove
13167         instantiated_target_ field.  In do_recognize call
13168         instantiate_target rather than do_instantiate_target.  In
13169         do_instantiate_target just allocate a new target.
13170         * sparc.cc (class Target_selector_sparc): Likewise.
13171
13172         * freebsd.h: New file.
13173         * i386.cc: Include "freebsd.h".
13174         (Target_i386): Derive from Target_freebsd rather than
13175         Sized_target.
13176         (Target_selector_i386): Derive from Target_selector_freebsd rather
13177         than Target_selector.
13178         * x86_64.cc: Include "freebsd.h".
13179         (Target_x86_64): Derive from Target_freebsd rather than
13180         Sized_target.
13181         (Target_selector_x86_64): Derive from Target_selector_freebsd
13182         rather than Target_selector.
13183         * target.h (class Target): Add adjust_elf_header and
13184         do_adjust_elf_header.
13185         * output.cc (Output_file_header:: do_sized_write): Call target
13186         adjust_elf_header routine.
13187         * configure.tgt: Set targ_osabi.
13188         * configure.ac: Define GOLD_DEFAULT_OSABI.
13189         * parameters.cc (Parameters::default_target): Pass
13190         GOLD_DEFAULT_OSABI to select_target.
13191         * target-select.h (class Target_selector): Make instantiate_target
13192         protected rather than private.
13193         * Makefile.am (HFILES): Add freebsd.h.
13194         * configure, Makefile.in, config.in: Rebuild.
13195
13196         * merge.cc (do_add_input_section): Correct pend value.  Change
13197         message about last entry not being null terminated from error to
13198         warning.
13199
13200 2009-03-20  Mikolaj Zalewski  <mikolajz@google.com>
13201
13202         * incremental.cc: New file.
13203         * Makefile.am (CCFILES): Add incremental.cc.
13204         * Makefile.in: Rebuild.
13205
13206 2009-03-19  Paul Pluzhnikov  <ppluzhnikov@google.com>
13207
13208         * layout.cc (Layout::output_section_name): Preserve names
13209         of '.note.' sections.
13210
13211 2009-03-19  Ian Lance Taylor  <iant@google.com>
13212
13213         * descriptors.cc (Descriptors::open): Check that the options are
13214         valid before using them.
13215
13216 2009-03-18  Ian Lance Taylor  <iant@google.com>
13217
13218         * script-sections.h: Include <list>.
13219         (class Script_sections): Change Sections_elements from std::vector
13220         to std::list.  Typedef public Elements_iterator.  Add
13221         orphan_section_placement_, data_segment_align_start_, and
13222         saw_data_segment_align_ fields.  Remove data_segment_align_index_
13223         field.
13224         * script-sections.cc (class Orphan_section_placement): New class.
13225         (class Sections_element): Add virtual functions is_relro and
13226         orphan_section_init.  Remove virtual function place_orphan_here.
13227         (class Output_section_definition): Add is_relro and
13228         orphan_section_init.  Remove place_orphan_here.
13229         (class Orphan_output_section): Likewise.
13230         (Script_sections::Script_sections): Update for field changes.
13231         (Script_sections::data_segment_align): Set saw_data_segment_align_
13232         and data_segment_align_start_, not data_segment_align_index.
13233         (Script_sections::data_segment_relro_end): Check
13234         saw_data_segment_align_.  Use data_segment_align_start_ rather
13235         than data_segment_align_index_.
13236         (Script_sections::place_orphan): Rewrite to use
13237         Orphan_section_placement.
13238
13239 2009-03-17  Ian Lance Taylor  <iant@google.com>
13240
13241         * archive.cc (Archive::add_symbols): Check for a version attached
13242         to the symbol name in the archive map.
13243         * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_11.
13244         (ver_test_11_SOURCES, ver_test_11_DEPENDENCIES): Define.
13245         (ver_test_11_LDFLAGS, ver_test_11_LDADD): Define.
13246         (ver_test_11.a): New target.
13247         * testsuite/Makefile.in: Rebuild.
13248
13249         * configure.ac: Check for chsize and posix_fallocate.  Replace
13250         ftruncate.
13251         * ftruncate.c: New file, from gnulib.
13252         * output.cc (posix_fallocate): Define dummy version if not
13253         HAVE_POSIX_FALLOCATE.
13254         (Output_file::map): Call posix_fallocate rather than lseek and
13255         write.
13256         * gold.h (ftruncate): Declare if not HAVE_FTRUNCATE.
13257         * configure, Makefile.in, config.in: Rebuild.
13258
13259 2009-03-17  Paul Pluzhnikov  <ppluzhnikov@google.com>
13260
13261         * layout.h (Layout::create_note): Add section_name parameter.
13262         * layout.cc (Layout::create_note): Likewise.
13263         (Layout::create_build_id, Layout::create_gold_note): Fix callers.
13264
13265 2009-03-17  Ian Lance Taylor  <iant@google.com>
13266
13267         * descriptors.cc: Include "options.h".
13268         (FD_CLOEXEC, O_CLOEXEC): Define if not defined.
13269         (Descriptors::open): Always use O_CLOEXEC when opening a new
13270         descriptor.  If we have a plugin, and O_CLOEXEC was not defined,
13271         then set FD_CLOEXEC.
13272
13273         * sparc.cc (class Target_sparc): Add has_got_section.
13274         (Target_sparc::Scan::global): If we see _GLOBAL_OFFSET_TABLE_,
13275         make sure we have a GOT section.
13276
13277         * sparc.cc (optimize_tls_reloc): Recognize R_SPARC_TLS_IE_ADD.
13278         (Target_sparc::Scan::local): Likewise.
13279         (Target_sparc::Scan::global): Likewise.
13280         (Target_sparc::Relocate::relocate): Likewise.
13281         (Target_sparc::Relocate::relocate_tls): Likewise.
13282
13283         * symtab.cc (Symbol_table::define_default_version): New function,
13284         broken out of add_from_object.
13285         (Symbol_table::add_from_object): Call define_default_version.
13286         (Symbol_table::define_special_symbol): Add resolve_oldsym
13287         parameter.  Change all callers.  If the version for a symbol comes
13288         from a version script, resolve it with the symbol with the same
13289         name with no version.  Also add the symbol without a version if
13290         appropriate.
13291         (do_define_in_output_data): If resolving with oldsym, don't delete
13292         sym.
13293         (do_define_in_output_segment): Likewise.
13294         (do_define_as_constant): Likewise.
13295         * symtab.h (class Symbol_table): Update declarations.
13296
13297 2009-03-13  Ian Lance Taylor  <iant@google.com>
13298
13299         * readsyms.cc (Read_symbols::incompatible_warning): New function.
13300         (Read_symbols::requeue): New function.
13301         (Read_symbols::do_read_symbols): If make_elf_object fails because
13302         the target type is not configured, and the file was searched for,
13303         issue a warning and retry with the next directory.
13304         (Add_symbols::run): If the file has an incompatible format, and
13305         it was searched for, requeue the Read_symbols task.  On error,
13306         release the object.
13307         * readsyms.h (class Read_symbols): Add dirindex_ field.  Add
13308         dirindex parameter to constructor.  Change all callers.  Declare
13309         incompatible_warning and requeue.
13310         (class Add_symbols): Add dirpath_, dirindex_, mapfile_,
13311         input_argument_ and input_group_ fields.  Add them to
13312         constructor.  Change all callers.
13313         (class Read_script): Add dirindex_ field.  Add it to constructor.
13314         Change all callers.
13315         * archive.cc (Archive::setup): Remove input_objects parameter.
13316         Change all callers.
13317         (Archive::get_file_and_offset): Likewise.
13318         (Archive::read_all_symbols): Likewise.
13319         (Archive::read_symbols): Likewise.
13320         (Archive::get_elf_object_for_member): Remove input_objects
13321         parameter.  Add punconfigured parameter.  Change all callers.
13322         (Archive::add_symbols): Change return type to bool.  Check return
13323         value of include_member.
13324         (Archive::include_all_members): Likewise.
13325         (Archive::include_member): Change return type to bool.  Return
13326         false if first included object has incompatible target.  Set
13327         included_member_ field.
13328         (Add_archive_symbols::run): If add_symbols returns false, requeue
13329         Read_symbols task.
13330         * archive.h (class Archive): Add included_member_ field.
13331         Initialize it in constructor.  Add input_file and searched_for
13332         methods.  Update declarations.
13333         (class Add_archive_symbols): Add dirpath_, dirindex_, and
13334         input_argument_ fields.  Add them to constructor.  Change all
13335         callers.
13336         * script.cc: Include "target-select.h".
13337         (class Parser_closure): Add skip_on_incompatible_target_ and
13338         found_incompatible_target_ fields.  Add
13339         skip_on_incompatible_target parameter to constructor.  Change all
13340         callers.  Add methods skip_on_incompatible_target,
13341         clear_skip_on_incompatible_target, found_incompatible_target, and
13342         set_found_incompatible_target.
13343         (read_input_script): Add dirindex parameter.  Change all callers.
13344         If parser finds an incompatible target, requeue Read_symbols
13345         task.
13346         (script_set_symbol): Clear skip_on_incompatible_target in
13347         closure.
13348         (script_add_assertion, script_parse_option): Likewise.
13349         (script_start_sections, script_add_phdr): Likewise.
13350         (script_check_output_format): New function.
13351         * script.h (read_input_script): Update declaration.
13352         * script-c.h (script_check_output_format): Declare.
13353         * yyscript.y (file_cmd): Handle OUTPUT_FORMAT.
13354         (ignore_cmd): Remove OUTPUT_FORMAT.
13355         * fileread.cc (Input_file::Input_file): Add explicit this.
13356         (Input_file::will_search_for): New function.
13357         (Input_file::open): Add pindex parameter.  Change all callers.
13358         * fileread.h (class Input_file): Add input_file_argument method.
13359         Declare will_search_for.  Update declarations.
13360         * object.cc (make_elf_object): Add punconfigured parameter.
13361         Change all callers.
13362         * object.h (class Object): Make input_file public.  Add
13363         searched_for method.
13364         (make_elf_object): Update declaration.
13365         * dirsearch.cc (Dirsearch::find): Add pindex parameter.  Use it to
13366         restart search.
13367         * dirsearch.h (class Dirsearch): Update declaration.
13368         * options.h (class General_options): Add --warn-search-mismatch.
13369         * parameters.cc (Parameters::is_compatible_target): New function.
13370         * parameters.h (class Parameters): Declare is_compatible_target.
13371         * workqueue.cc (Workqueue::add_blocker): New function.
13372         * workqueue.h (class Workqueue): Declare add_blocker.
13373
13374         * fileread.cc (Input_file::open): Remove options parameter.
13375         Change all callers.
13376         (Input_file::open_binary): Likewise.
13377         * script.cc (read_input_script): Likewise.
13378         * readsyms.h (class Read_symbols): Remove options_ field.  Remove
13379         options parameter from constructor.  Change all callers.
13380         (class Read_script): Likewise.
13381         * fileread.h (class Input_file): Update declarations.
13382         * script.h (read_input_script): Update declaration.
13383
13384 2009-03-10  Nick Clifton  <nickc@redhat.com>
13385
13386         * po/es.po: New Spanish translation.
13387
13388 2009-03-06  Cary Coutant  <ccoutant@google.com>
13389
13390         * options.cc (parse_short_option): Keep dash_z from registering itself.
13391
13392 2009-03-03  Ian Lance Taylor  <iant@google.com>
13393
13394         PR 9918
13395         * target-reloc.h (relocate_section): Pass output_section to
13396         relocate.
13397         * i386.cc (Target_i386::should_apply_static_reloc): Add
13398         output_section parameter.  Change all callers.
13399         (Target_i386::Relocate::relocate): Add output_section parameter.
13400         * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
13401         * sparc.cc (Target_sparc::Relocate::relocate): Likewise.
13402         * powerpc.cc (Target_powerpc::Relocate::relocate): Likewise.
13403         * testsuite/two_file_shared.sh: New script.
13404         * testsuite/Makefile.am (check_SCRIPTS): Add two_file_shared.sh.
13405         (check_DATA): Add two_file_shared.dbg.
13406         (two_file_shared.dbg): New target.
13407         * testsuite/Makefile.in: Rebuild.
13408
13409 2009-03-01  Ian Lance Taylor  <iant@google.com>
13410
13411         * configure.ac: Check for byteswap.h.
13412         * configure: Rebuild.
13413         * config.in: Rebuild.
13414
13415 2009-03-01  Mikolaj Zalewski  <mikolajz@google.com>
13416
13417         * layout.cc (Layout::find_or_add_kept_section): New function.
13418         (Layout::add_comdat): Removed.
13419         * layout.h (struct Kept_section): Move out of class Layout.
13420         Remove trailing underscores from field names.  Add group_sections
13421         field.  Rename group_ field to is_group.  Change all uses.
13422         (class Layout): Declare find_or_add_kept_section, not add_comdat.
13423         * object.cc (Sized_relobj::Sized_relobj): Don't initialize
13424         comdat_groups_ field.
13425         (Sized_relobj::include_section_group): Use
13426         find_or_add_kept_section and Kept_section::group_sections.
13427         (Sized_relobj::include_linkonce_section): Likewise.
13428         * object.cc (class Sized_relobj): Don't define Comdat_group or
13429         Comdat_group_table.  Remove find_comdat_group and
13430         add_comdat_group.  Remove comdat_groups_ field.
13431         * plugin.cc (include_comdat_group): Use
13432         Layout::find_or_add_kept_section.
13433
13434 2009-02-28  Ian Lance Taylor  <iant@google.com>
13435
13436         * README: --gc-sections and map files are now supported.  Document
13437         some build requirements.
13438
13439         PR 6992
13440         * symtab.cc (Symbol_table::sized_write_section_symbol): In a
13441         relocatable link set the value of the section symbol to zero.
13442         * object.cc (Sized_relobj::do_finalize_local_symbols): In a
13443         relocatable link don't include the section address in the local
13444         symbol value.
13445
13446 2009-02-27  Ian Lance Taylor  <iant@google.com>
13447
13448         PR 6811
13449         * options.h (class Search_directory): Add is_system_directory.
13450         (class General_options): Declare is_in_system_directory.
13451         * options.cc (get_relative_sysroot): Make static.
13452         (get_default_sysroot): Make static.
13453         (General_optoins::is_in_system_directory): New function.
13454         * fileread.cc (Input_file::is_in_system_directory): New function.
13455         * fileread.h (class Input_file): Declare is_in_system_directory.
13456         * object.h (class Object): Add is_in_system_directory.
13457         (class Input_objects): Remove system_library_directory_ field.
13458         * object.cc (Input_objects::add_object): Don't set
13459         system_library_directory_.
13460         (input_objects::found_in_system_library_directory): Remove.
13461         * symtab.cc (Symbol_table::write_globals): Remove input_objects
13462         parameter.  Change all callers.
13463         (Symbol_table::sized_write_globals): Likewise.
13464         (Symbol_table::warn_about_undefined_dynobj_symbol): Likewise.
13465         Call Object::is_in_system_directory.
13466         * symtab.h (class Symbol_table): Update declarations.
13467
13468         PR 5990
13469         * descriptors.h (Open_descriptor): Add is_on_stack field.
13470         * descriptors.cc (Descriptors::open): If the descriptor is on the
13471         top of the stack, remove it.  Initialize is_on_stack field.
13472         (Descriptors::release): Only add pod to stack if it is not on the
13473         stack already.
13474         (Descriptors::close_some_descriptor): Clear stack_next and
13475         is_on_stack fields.
13476
13477         PR 7091
13478         * output.cc (Output_section::find_starting_output_address): Rename
13479         from starting_output_address; add PADDR parameter; change return
13480         type.
13481         * output.h (class Output_section): Declare
13482         find_starting_output_address instead of starting_output_address.
13483         * object.cc (Sized_relobj::do_finalize_local_symbols): Handle a
13484         section symbol for which we can't find a merge section.
13485
13486         PR 9836
13487         * symtab.cc (Symbol_table::add_from_object): If the visibility is
13488         hidden or internal, force the symbol to be local.
13489         * resolve.cc (Symbol::override_visibility): Define.
13490         (Symbol::override_base): Use override_visibility.
13491         (Symbol_table::resolve): Likewise.
13492         (Symbol::override_base_with_special): Likewise.
13493         (Symbol_table::override_with_special): If the visibility is hidden
13494         or internal, force the symbol to be local.
13495         * symtab.h (class Symbol): Add set_visibility and
13496         override_visibility.
13497         * testsuite/ver_test_1.sh: New file.
13498         * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_1.sh.
13499         (check_DATA): Add ver_test_1.syms.
13500         (ver_test_1.syms): New target.
13501         * testsuite/Makefile.in: Rebuild.
13502
13503 2009-02-25  Cary Coutant  <ccoutant@google.com>
13504
13505         * layout.cc (Layout::choose_output_section): Don't rename sections
13506         when using a linker script that has a SECTIONS clause.
13507         * Makefile.in: Regenerate.
13508
13509         * testsuite/Makefile.am (script_test_5.sh): New test case.
13510         * testsuite/Makefile.in: Regenerate.
13511         * testsuite/script_test_5.cc: New file.
13512         * testsuite/script_test_5.sh: New file.
13513         * testsuite/script_test_5.t: New file.
13514
13515 2009-02-13  Rafael Avila de Espindola  <espindola@google.com>
13516
13517         * archive.cc (Archive::include_member): Update calls to add_symbols.
13518         * dynobj.cc (Sized_dynobj<size, big_endian>::make_version_map): Add
13519         the Layout argument.
13520         * dynobj.h (do_add_symbols): Add the Layout argument.
13521         * object.cc (Sized_relobj<size, big_endian>::do_add_symbols): Add the
13522         Layout argument.
13523         * object.h (Object::add_symbols): Add the Layout argument.
13524         (Object::do_add_symbols): Add the Layout argument.
13525         (Sized_relobj::do_add_symbols): Add the Layout argument.
13526         * plugin.cc (Sized_pluginobj<size, big_endian>::do_add_symbols):
13527         Unify the two versions.
13528         (Add_plugin_symbols): Remove.
13529         * plugin.h (Pluginobj::add_symbols, Pluginobj::do_add_symbols): Remove.
13530         (Sized_pluginobj::do_add_symbols): Unify the two versions.
13531         (Add_plugin_symbols): Remove.
13532         * readsyms.cc (Read_symbols::do_read_symbols): Update call to
13533         Add_symbols. Use Add_symbols instead of Add_plugin_symbols.
13534         (Add_symbols::run): Make it work with Pulginobj.
13535
13536 2009-02-06  Ian Lance Taylor  <iant@google.com>
13537
13538         * object.cc (Sized_relobj::do_layout): Make info message start
13539         with lower case letter.
13540
13541 2009-02-06  Mikolaj Zalewski  <mikolajz@google.com>
13542
13543         * binary.cc: Fix file comment.
13544
13545         * options.h (enum Incremental_disposition): Define.
13546         (class General_options): Add new options: --incremental,
13547         --incremental_changed, --incremental_unchanged,
13548         --incremental_unknown.  Add incremental_disposition_ and
13549         implicit_incremental_ fields.
13550         (General_options::incremental_disposition): New function.
13551         (class Position_dependent_options): Add incremental_disposition
13552         option.
13553         (Position_dependent_options::copy_from_options): Set incremental
13554         dispositions.
13555         * options.cc (General_options::parse_incremental_changed): New
13556         function.
13557         (General_options::parse_incremental_unchanged): New function.
13558         (General_options::parse_incremental_unknown): New function.
13559         (General_options::General_options): Initialize new fields
13560         incremental_disposition_ and implicit_incremental_.
13561         (General_options::finalize): Check for uasge of --incremental-*
13562         without --incremental.
13563
13564 2009-02-06  Chris Demetriou  <cgd@google.com>
13565
13566         * gold.h (gold_undefined_symbol): Change to take only a Symbol
13567         pointer and to report location as the file name associated with
13568         the symbol.
13569         (gold_undefined_symbol_at_location): New function to replace the
13570         old gold_undefined_symbol functionality.
13571         * target-reloc.h (relocate_section): Update to use
13572         gold_undefined_symbol_at_location.
13573         * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
13574         Call gold_undefined_symbol function rather than gold_error.
13575         * errors.h (Errors::undefined_symbol): Take location as a
13576         string, rather than calculating it from a relocation.
13577         * errors.cc (Errors::fatal): Print "fatal error:" before the
13578         formatted message.
13579         (Errors::error, Errors::error_at_location): Print "error: "
13580         before the formatted message.
13581         (Errors::undefined_symbol): Take location as a string, rather
13582         than calculating it from a relocation.
13583         (gold_undefined_symbol_at_location): New function akin to
13584         old gold_undefined_symbol, calculates location from relocation.
13585         (gold_undefined_symbol): Change to take only a Symbol pointer
13586         and to report location as the file name associated with the symbol.
13587         * testsuite/debug_msg.sh: Update for changed error messages.
13588         * testsuite/undef_symbol.sh: Likewise.
13589
13590 2009-02-04  Duncan Sands  <baldrick@free.fr>
13591
13592         PR 9812
13593         * reduced_debug_output.h
13594         (Output_reduced_debug_abbrev_section::failed): Use format for
13595         gold_warning.
13596         (Output_reduced_debug_info_section::faild): Likewise.
13597
13598 2009-01-31  Mikolaj Zalewski  <mikolajz@google.com>
13599
13600         * script.cc (Lazy_demangler): New class.
13601         (Version_script_info::get_symbol_version_helper): Demangle a
13602         symbol only once.
13603
13604 2009-01-29  Cary Coutant  <ccoutant@google.com>
13605
13606         * i386.cc (Target_i386::Relocate::relocate): Recognize non-PIC calls
13607         to __tls_get_addr.
13608         * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
13609
13610 2009-01-28  Ian Lance Taylor  <iant@google.com>
13611
13612         * version.cc (version_string): Bump to 1.9.
13613
13614         * gold.h: Include <cstring> and <stdint.h>.
13615         * version.cc: Include <cstdio>.
13616         * object.cc (Sized_relobj::do_layout): Initialize gc_sd to avoid a
13617         warning.
13618         * reduced_debug_output.cc (insert_into_vector): Rename from
13619         Insert_into_vector; change all callers.  Use Swap_unaligned to
13620         avoid aliasing issue; remove union since it is unnecessary.
13621
13622 2009-01-27  Sriraman Tallam  <tmsriram@google.com>
13623
13624         * Makefile.am (CCFILES): Add gc.cc.
13625         (HFILES): Add gc.h.
13626         * Makefile.in: Regenerate.
13627         * gold.cc (Gc_runner): New class.
13628         (queue_initial_tasks): Call garbage collection related tasks
13629         when corresponding options are invoked.
13630         (queue_middle_gc_tasks): New function.
13631         (queue_middle_tasks): Reorder tasks to allow relocs to be read and
13632         processed early before laying out sections during garbage collection.
13633         * gold.h (queue_middle_gc_tasks): New function.
13634         (is_prefix_of): Move from "layout.cc".
13635         * i386.cc (Target_i386::gc_process_relocs): New function.
13636         * layout.cc (is_prefix_of): Remove. Move to "gold.h"
13637         * main.cc (main): Create object of class "Garbage_collection".
13638         * object.cc (Relobj::copy_symbols_data): New function.
13639         (Relobj::is_section_name_included): New function.
13640         (Sized_relobj::do_layout): Allow this function to be called twice
13641         during garbage collection and defer layout of section during the
13642         first call.
13643         * object.h (Relobj::get_symbols_data): New function.
13644         (Relobj::is_section_name_included): New function.
13645         (Relobj::copy_symbols_data): New function.
13646         (Relobj::set_symbols_data): New function.
13647         (Relobj::get_relocs_data): New function.
13648         (Relobj::set_relocs_data): New function.
13649         (Relobj::is_output_section_offset_invalid): New pure virtual function.
13650         (Relobj::gc_process_relocs): New function.
13651         (Relobj::do_gc_process_relocs): New pure virtual function.
13652         (Relobj::sd_): New data member.
13653         (Sized_relobj::is_output_section_offset_invalid): New function.
13654         (Sized_relobj::do_gc_process_relocs): New function.
13655         * options.h (General_options::gc_sections): Modify to not be a no-op.
13656         (General_options::print_gc_sections): New option.
13657         * plugin.cc (Plugin_finish::run): Remove function call to
13658         Plugin_manager::layout_deferred_objects.  Move it to "gold.cc".
13659         * powerpc.cc (Target_powerpc::gc_process_relocs): New function.
13660         * reloc.cc (Read_relocs::run): Add task to process relocs and
13661         determine unreferenced sections when doing garbage collection.
13662         (Gc_process_relocs): New class.
13663         (Sized_relobj::do_gc_process_relocs): New function.
13664         (Sized_relobj::do_scan_relocs): Don't try to scan the relocs for
13665         sections that are garbage collected.
13666         * reloc.h (Gc_process_relocs): New class.
13667         * sparc.cc (Target_sparc::gc_process_relocs): New function.
13668         * symtab.cc (Symbol::should_add_dynsym_entry): Do not add entries for
13669         symbols whose corresponding sections are garbage collected.
13670         (Symbol_table::Symbol_table): Add new parameter for the garbage
13671         collection object.
13672         (Symbol_table::gc_mark_undef_symbols): New function.
13673         (Symbol_table::gc_mark_symbol_for_shlib): New function.
13674         (Symbol_table::gc_mark_dyn_syms): New function.
13675         (Symbol_table::resolve): Do not treat symbols seen in dynamic objects
13676         as garbage.
13677         (Symbol_table::add_from_object): Likewise.
13678         (Symbol_table::add_from_relobj): When building shared objects, do not
13679         treat externally visible symbols as garbage.
13680         (Symbol_table::sized_finalize_symbol): Do not check dynamic symbol
13681         table information for static and relocatable links.
13682         * symtab.h (Symbol_table::set_gc): New function.
13683         (Symbol_table::gc): New function.
13684         (Symbol_table::gc_mark_undef_symbols): New function.
13685         (Symbol_table::gc_mark_symbol_for_shlib): New function.
13686         (Symbol_table::gc_mark_dyn_syms): New function.
13687         (Symbol_table::gc_): New data member.
13688         * target.h (Sized_target::gc_process_relocs): New pure virtual
13689         function.
13690         * x86_64.cc (Target_x86_64::gc_process_relocs): New function.
13691         * testsuite/testfile.cc (Target_test::gc_process_relocs): New function.
13692
13693 2009-01-20  Chris Faylor <me.sourceware@sourceware.org>
13694
13695         * options.h (General_options::gc_sections): Define as a no-op for now.
13696         (General_options::no_keep_memory): Ditto.
13697         (General_options::Bshareable): Define.
13698         * options.cc (General_options::finalize): Honor -Bshareable.
13699
13700 2009-01-20  Andreas Schwab  <schwab@suse.de>
13701
13702         * powerpc.cc (Powerpc_relocate_functions::rel16_ha): Don't try to
13703         read the value in the contents, since we don't use it.  Use the
13704         template endianness when writing.
13705         (Relocate::relocate): Use it for R_PPC_REL16_HA.
13706
13707 2009-01-19  Andreas Schwab  <schwab@suse.de>
13708
13709         * configure.tgt (powerpc64-*): Fix targ_obj.
13710
13711 2009-01-15  Ian Lance Taylor  <iant@google.com>
13712
13713         * object.cc (Sized_relobj::write_local_symbols): Don't write out
13714         local symbols when stripping all symbols.
13715
13716 2009-01-14  Cary Coutant  <ccoutant@google.com>
13717
13718         * output.cc (Output_reloc): Add explicit instantiations.
13719
13720 2009-01-14  Cary Coutant  <ccoutant@google.com>
13721
13722         * archive.cc (Archive::get_elf_object_for_member): Remove call
13723         to File_read::claim_for_plugin.
13724         * descriptors.cc (Descriptors::open): Remove reference to
13725         is_claimed.
13726         (Descriptors::claim_for_plugin): Remove.
13727         * descriptors.h (Descriptors::claim_for_plugin): Remove.
13728         (Descriptors::is_claimed): Remove.
13729         (claim_descriptor_for_plugin): Remove.
13730         * fileread.cc (File_read::claim_for_plugin): Remove.
13731         * fileread.h (File_read::claim_for_plugin): Remove.
13732         (File_read::descriptor): Reopen descriptor if necessary.
13733         * plugin.cc  (Plugin::load): Add two new APIs to transfer vector.
13734         (Plugin_manager::all_symbols_read): Add task parameter. Change
13735         all callers.
13736         (Plugin_manager::get_input_file): New function.
13737         (Plugin_manager::release_input_file): New function.
13738         (Pluginobj::Pluginobj): Add filesize parameter and initialize
13739         corresponding data member.
13740         (Sized_pluginobj::Sized_pluginobj): Add filesize parameter
13741         and pass to base constructor. Change all callers.
13742         (get_input_file, release_input_file): New functions.
13743         (make_sized_plugin_object): Add filesize parameter. Change all callers.
13744         * plugin.h (Plugin_manager::Plugin_manager): Initialize task_ member.
13745         (Plugin_manager::all_symbols_read): Add task parameter.
13746         (Plugin_manager::get_input_file): New function.
13747         (Plugin_manager::release_input_file): New function.
13748         (Plugin_manager::task_): New data member.
13749         (Pluginobj::Pluginobj): Add filesize parameter.
13750         (Pluginobj::filename): New function.
13751         (Pluginobj::descriptor): New function.
13752         (Pluginobj::filesize): New function.
13753         (Pluginobj::filesize_): New data member.
13754         (Sized_pluginobj::Sized_pluginobj): Add filesize parameter.
13755         * readsyms.cc (Read_symbols::do_read_symbols): Remove call to
13756         File_read::claim_for_plugin; use Object::unlock to unlock the file.
13757
13758         * testsuite/Makefile.am (plugin_test_4): New test case for plugins
13759         with archive libraries.
13760         * testsuite/Makefile.in: Regenerate.
13761         * testsuite/plugin_test.c (struct sym_info): New type.
13762         (get_input_file, release_input_file): New static variables.
13763         (onload): Capture new transfer vector entries.
13764         (claim_file_hook): Stop reading at end of file according to filesize.
13765         Factor out parsing of readelf output into separate function.
13766         (all_symbols_read_hook): Exercise get_input_file and release_input_file
13767         APIs and get the source file name from the symbol table.  Convert
13768         source file name to corresponding object file name.  Print info
13769         message when adding new input files.
13770         (parse_readelf_line): New function.
13771         * testsuite/plugin_test_1.sh: Add checks for new info messages.
13772         * testsuite/plugin_test_2.sh: Likewise.
13773         * testsuite/plugin_test_3.sh: Likewise.
13774         * testsuite/plugin_test_4.sh: New test case.
13775
13776 2009-01-07  Ian Lance Taylor  <iant@google.com>
13777
13778         * version.cc (version_string): Bump to 1.8.
13779
13780 2008-12-23  Cary Coutant  <ccoutant@google.com>
13781
13782         * gold.cc (gold_exit): Call plugin cleanup handlers on exit.
13783         * plugin.cc (Plugin_manager::finish): Rename as
13784         layout_deferred_objects.  Move cleanup to separate function.
13785         (Plugin_manager::cleanup): New function.
13786         (Plugin_finish::run): Call layout_deferred_objects and cleanup
13787         separately.
13788         * plugin.h (Plugin_manager::finish): Rename as
13789         layout_deferred_objects.
13790         (Plugin_manager::cleanup): New function.
13791         (Plugin_manager::cleanup_done): New field.
13792
13793 2008-12-23  Cary Coutant  <ccoutant@google.com>
13794
13795         * plugin.cc (is_visible_from_outside): New function.
13796         (Pluginobj::get_symbol_resolution_info): Call is_visible_from_outside
13797         so we don't return "IR only" status for exported symbols or -r links.
13798
13799         * testsuite/Makefile.am (plugin_test_3): New test case.
13800         * testsuite/Makefile.in: Regenerate.
13801         * testsuite/plugin_test_3.sh: New file.
13802
13803 2008-12-22  Cary Coutant  <ccoutant@google.com>
13804
13805         * object.cc (Sized_relobj::layout_section): New function.
13806         (Sized_relobj::do_layout): Defer layout of input sections until after
13807         plugin has provided replacement files.
13808         (Sized_relobj::do_layout_deferred_sections): New function.
13809         * object.h (Relobj::set_section_offset): Remove virtual keyword.
13810         (Relobj::layout_deferred_sections): New function.
13811         (Relobj::do_layout_deferred_sections): New function.
13812         (Sized_relobj::do_layout_deferred_sections): New function.
13813         (Sized_relobj::layout_section): New function.
13814         (Sized_relobj::Deferred_layout): New structure.
13815         (Sized_relobj::deferred_layout_): New field.
13816         * plugin.cc (Plugin_manager::finish): Renamed, was cleanup.
13817         Change all callers.  Layout deferred sections.
13818         (class Plugin_finish): Renamed, was Plugin_cleanup.  Change all
13819         references.
13820         (Plugin_hook::run): Move code from do_plugin_hook inline.
13821         (Plugin_hook::do_plugin_hook): Remove.
13822         * plugin.h (Plugin_manager::Plugin_manager): Add missing initializers.
13823         (Plugin_manager::finish): Renamed, was cleanup.
13824         (Plugin_manager::should_defer_layout): New function.
13825         (Plugin_manager::add_deferred_layout_object): New function.
13826         (Plugin_manager::Deferred_layout_list): New type.
13827         (Plugin_manager::deferred_layout_objects_): New field.
13828         (Plugin_hook::do_plugin_hook): Remove.
13829
13830 2008-12-17  Ian Lance Taylor  <iant@google.com>
13831
13832         * options.h (class General_options): Add --no case for
13833         --export-dynamic.
13834
13835 2008-12-16  Cary Coutant  <ccoutant@google.com>
13836
13837         * plugin.cc (Plugin::load): Move LDPT_MESSAGE to front of transfer
13838         vector.
13839         (Plugin_manager::claim_file): Create plugin object even if
13840         plugin did not call the add_symbols callback.
13841         (Plugin_obj::get_symbol_resolution_info): Guard against plugin
13842         asking for more symbols than were added.
13843         * testsuite/Makefile.am (plugin_test_1): Add test case with
13844         no global symbols.
13845         (empty.syms): New target.
13846         * testsuite/Makefile.in: Regenerate.
13847         * testsuite/plugin_test.c (claim_file_hook): Add new debug
13848         message. Don't call add_symbols if no globals.
13849         (all_symbols_read_hook): Don't provide replacement for empty
13850         claimed file.
13851
13852 2008-12-12  Ian Lance Taylor  <iant@google.com>
13853
13854         * target-reloc.h (Default_scan_relocatable_relocs): Only discard
13855         r_type == 0 for a local symbol with r_sym == 0.
13856         (scan_relocatable_relocs): Pass r_sym to
13857         local_non_section_strategy.
13858         * reloc.cc (Emit_relocs_strategy::local_non_section_strategy): Add
13859         r_sym parameter.
13860
13861         * configure.ac: Update test for TLS descriptors: they are
13862         supported as of glibc 2.9.
13863         * configure: Rebuild.
13864
13865 2008-12-11  Ian Lance Taylor  <iant@google.com>
13866
13867         PR 7091
13868         * target-reloc.h (Default_scan_relocatable_relocs): For each
13869         function, map r_type == 0 to RELOC_DISCARD.
13870
13871 2008-12-10  Cary Coutant  <ccoutant@google.com>
13872
13873         * layout.cc (Layout::add_comdat): Allow COMDAT group from a replacement
13874         object to override a kept COMDAT group from a plugin object.
13875
13876 2008-12-09  Ian Lance Taylor  <iant@google.com>
13877
13878         PR 7088
13879         * yyscript.y (file_cmd): Handle INPUT.
13880
13881         * testsuite/initpri1.c: Change all declarations to be full
13882         prototypes by adding void, to avoid compiler warnings.
13883
13884 2008-12-05  Rafael Avila de Espindola  <espindola@google.com>
13885
13886         * options.cc (General_options::parse_plugin_opt): New.
13887         (General_options::add_plugin): The argument now is just the filename.
13888         (General_options::add_plugin_option): New.
13889         * options.h (plugin_opt): New.
13890         (add_plugin): Change argument name.
13891         (add_plugin_option): New.
13892         * plugin.cc (Plugin::load): Don't parse the plugin option.
13893         * plugin.h (Plugin::Plugin): Rename argument. Init filename_.
13894         (Plugin::add_option): New.
13895         (Plugin::args_): Change type.
13896         (Plugin::filename_): New.
13897         (Plugin_manager::add_plugin_option): New.
13898         * testsuite/Makefile.am (plugin_test_1): Use new syntax.
13899         * testsuite/Makefile.in: Regenerate.
13900
13901 2008-12-05  Cary Coutant  <ccoutant@google.com>
13902
13903         * layout.cc (Layout::include_section): Check for SHF_EXCLUDE.
13904         Handle --strip-lto-sections option.
13905         * options.h (strip_lto_sections): New option.
13906
13907 2008-12-01  Cary Coutant  <ccoutant@google.com>
13908
13909         * plugin.cc (ld_plugin_message): Change format parameter to const.
13910         Fix mismatch between new[] and delete.
13911
13912 2008-11-14  Cary Coutant  <ccoutant@google.com>
13913
13914         * reloc.cc (Sized_relobj::do_read_relocs): Use constant invalid_address
13915         instead of -1U.
13916
13917 2008-11-05  Craig Silverstein  <csilvers@google.com>
13918
13919         * options.cc (General_options::parse_dynamic_list): New function.
13920         * options.h (General_options): New flags dynamic_list,
13921         dynamic_list_data, dynamic_list_cpp_new, and
13922         dynamic_list_cpp_typeinfo.  New variable dynamic_list_.
13923         (General_options::in_dynamic_list): New function.
13924         * script.cc (Lex::Mode): New enum DYNAMIC_LIST.
13925         (Lex::can_start_name): Add support for DYNAMIC_LIST mode.
13926         (Lex::can_continue_name): Likewise.
13927         (yylex): Likewise.
13928         (read_script_file): New parameter script_options.
13929         (read_dynamic_list): New function.
13930         (Script_options::define_dynamic_list): New function.
13931         (dynamic_list_keyword_parsecodes): New variable.
13932         (dynamic_list_keywords): New variable.
13933         * script.h (Script_options::define_dynamic_list): New function
13934         prototype.
13935         (read_dynamic_list): New function prototype.
13936         * symtab.cc (strprefix): New macro.
13937         (Symbol::should_add_dynsym_entry): Support dynamic_list,
13938         dynamic_list_data, dynamic_list_cpp_new, and
13939         dynamic_list_cpp_typeinfo.
13940         * yyscript.y (PARSING_DYNAMIC_LIST): New token.
13941         (dynamic_list_expr): New rule.
13942         (dynamic_list_nodes): Likewise.
13943         (dynamic_list_node): Likewise.
13944         * testsuite/Makefile.am (dynamic_list): New test.
13945         * testsuite/Makefile.in: Regenerated.
13946         * testsuite/dynamic_list.t: New file.
13947         * testsuite/dynamic_list.sh: New file.
13948
13949 2008-11-05  Craig Silverstein  <csilvers@google.com>
13950
13951         * testsuite/tls_test_c.c: Add prototype for t11 and t11_last.
13952         * testsuite/tls_test_c.c (t11): Add explicit "void" to prototype.
13953         (t11_last): Likewise.
13954         * testsuite/ver_test_6.c (main): Likewise.
13955
13956 2008-10-07  Cary Coutant  <ccoutant@google.com>
13957
13958         * options.c (General_options::finalize): Add check for -static and
13959         -shared.
13960         * gold.cc (queue_middle_tasks): Assert that list of dynamic objects
13961         is not empty.
13962
13963 2008-10-02  Cary Coutant  <ccoutant@google.com>
13964
13965         * plugin.cc (make_sized_plugin_object): Fix conditional
13966         compilation to work when not all targets are enabled.
13967
13968 2008-09-29  Cary Coutant  <ccoutant@google.com>
13969
13970         * archive.cc (Archive::get_file_and_offset): Use filename instead
13971         of name to get library path.
13972         (Archive::include_member): Unlock external member of a thin archive.
13973
13974         * testsuite/Makefile.am (TEST_AR): New variable.
13975         (thin_archive_test_1): New test.
13976         (thin_archive_test_2): New test.
13977         * testsuite/Makefile.in: Regenerate.
13978         * testsuite/thin_archive_main.cc: New file.
13979         * testsuite/thin_archive_test_1.cc: New file.
13980         * testsuite/thin_archive_test_2.cc: New file.
13981         * testsuite/thin_archive_test_3.cc: New file.
13982         * testsuite/thin_archive_test_4.cc: New file.
13983
13984 2008-09-29  Cary Coutant  <ccoutant@google.com>
13985
13986         * mapfile.cc (Mapfile::print_input_section): Change -1U to -1ULL.
13987         * object.cc (Sized_relobj::do_layout): Use constant invalid_address
13988         instead of -1U.
13989         (Sized_relobj::do_finalize_local_symbols): Likewise.
13990         (Sized_relobj::map_to_kept_section): Likewise.
13991         * object.h (Sized_relobj::invalid_address): New constant.
13992         (Sized_relobj::do_output_section_offset): Check for invalid_address
13993         and return -1ULL.
13994         * output.cc (Output_reloc::local_section_offset): Use constant
13995         invalid_address instead of -1U.
13996         (Output_reloc::get_address): Likewise.
13997         (Output_section::output_address): Change -1U to -1ULL.
13998         * output.h (Output_reloc::invalid_address): New constant.
13999         * reloc.cc (Sized_relobj::write_sections): Use constant
14000         invalid_address instead of -1U.
14001         (Sized_relobj::relocate_sections): Likewise.
14002         * symtab.cc (Symbol_table::sized_finalize_symbol): Handle symbol
14003         values for merge sections.
14004         * target-reloc.h (relocate_for_relocatable): Use constant
14005         invalid_address instead of -1U.
14006
14007 2008-09-19  Cary Coutant  <ccoutant@google.com>
14008
14009         Add plugin functionality for link-time optimization (LTO).
14010         * configure.ac (plugins): Add --enable-plugins option.
14011         * configure: Regenerate.
14012         * config.in: Regenerate.
14013         * Makefile.am (LIBDL): New variable.
14014         (CCFILES): Add plugin.cc.
14015         (HFILES): Add plugin.h.
14016         (ldadd_var): Add LIBDL.
14017         * Makefile.in: Regenerate.
14018
14019         * archive.cc: Include "plugin.h".
14020         (Archive::setup): Don't preread archive symbols when using a plugin.
14021         (Archive::get_file_and_offset): Add memsize parameter.  Change callers.
14022         (Archive::get_elf_object_for_member): Call plugin hooks for claiming
14023         files.
14024         (Archive::include_member): Add symbols from plugin objects.
14025         * archive.h (Archive::get_file_and_offset): Add memsize parameter.
14026         * descriptors.cc (Descriptors::open): Check for file descriptors
14027         abandoned by plugins.
14028         (Descriptors::claim_for_plugin): New function.
14029         * descriptors.h (Descriptors::claim_for_plugin): New function.
14030         (Open_descriptor::is_claimed): New field.
14031         (claim_descriptor_for_plugin): New function.
14032         * fileread.cc (File_read::claim_for_plugin): New function.
14033         * fileread.h (File_read::claim_for_plugin): New function.
14034         (File_read::descriptor): New function.
14035         * gold.cc: Include "plugin.h".
14036         (queue_initial_tasks): Add task to call plugin hooks for generating
14037         new object files.
14038         * main.cc: Include "plugin.h".
14039         (main): Load plugin libraries.
14040         * object.h (Pluginobj): Declare.
14041         (Object::pluginobj): New function.
14042         (Object::do_pluginobj): New function.
14043         (Object::set_target): New function.
14044         * options.cc: Include "plugin.h".
14045         (General_options::parse_plugin): New function.
14046         (General_options::General_options): Initialize plugins_ field.
14047         (General_options::add_plugin): New function.
14048         * options.h (Plugin_manager): Declare.
14049         (General_options): Add --plugin option.
14050         (General_options::has_plugins): New function.
14051         (General_options::plugins): New function.
14052         (General_options::add_plugin): New function.
14053         (General_options::plugins_): New field.
14054         * plugin.cc: New file.
14055         * plugin.h: New file.
14056         * readsyms.cc: Include "plugin.h".
14057         (Read_symbols::do_read_symbols): Check for archive before checking
14058         for ELF file.  Call plugin hooks to claim files.
14059         * resolve.cc (Symbol_table::resolve): Record when symbol is referenced
14060         from a real object file; force override when processing replacement
14061         files.
14062         * symtab.cc (Symbol::init_fields): Initialize in_real_elf_ field.
14063         (Symbol::init_base_object): Likewise.
14064         (Symbol::init_base_output_data): Likewise.
14065         (Symbol::init_base_output_segment): Likewise.
14066         (Symbol::init_base_constant): Likewise.
14067         (Symbol::init_base_undefined): Likewise.
14068         (Symbol::output_section): Assert that object is not a plugin.
14069         (Symbol_table::add_from_pluginobj): New function.
14070         (Symbol_table::sized_finalize_symbol): Treat symbols from plugins as
14071         undefined.
14072         (Symbol_table::sized_write_globals): Likewise.
14073         (Symbol_table::add_from_pluginobj): Instantiate template.
14074         * symtab.h (Sized_pluginobj): Declare.
14075         (Symbol::in_real_elf): New function.
14076         (Symbol::set_in_real_elf): New function.
14077         (Symbol::in_real_elf_): New field.
14078         (Symbol_table::add_from_pluginobj): New function.
14079
14080         * testsuite/Makefile.am (AM_CFLAGS): New variable.
14081         (LIBDL): New variable.
14082         (LDADD): Add LIBDL.
14083         (check_PROGRAMS): Add plugin_test_1 and plugin_test_2.
14084         (check_SCRIPTS): Add plugin_test_1.sh and plugin_test_2.sh.
14085         (check_DATA): Add plugin_test_1.err and plugin_test_2.err.
14086         (MOSTLYCLEANFILES): Likewise.
14087         * testsuite/Makefile.in: Regenerate.
14088         * testsuite/plugin_test.c: New file.
14089         * testsuite/plugin_test_1.sh: New file.
14090         * testsuite/plugin_test_2.sh: New file.
14091
14092 2008-09-16  Ian Lance Taylor  <iant@google.com>
14093
14094         * target-reloc.h (relocate_section): Check whether a symbol is
14095         defined by the ABI before reporting an undefined symbol error.
14096         * target.h (Target::is_defined_by_abi): Make parameter const.
14097         (Target::do_is_defined_by_abi): Likewise.
14098         * i386.cc (Target_i386::do_is_defined_by_abi): Likewise.
14099         * powerpc.cc (Target_powerpc::do_is_defined_by_abi): Likewise.
14100         * sparc.cc (Target_sparc::do_is_defined_by_abi): Likewise.
14101         * x86_64.cc (Target_x86_64::do_is_defined_by_abi): Likewise.
14102         * testsuite/Makefile.am (tls_test_shared.so): Add -Wl,-z,defs.
14103         * testsuite/Makefile.in: Rebuild.
14104
14105         * fileread.cc (make_view): Add casts to avoid warning.
14106
14107 2008-09-16  Alexandre Oliva  <aoliva@redhat.com>
14108
14109         * i386.cc (Target_i386::define_tls_base_symbol): Update comments.
14110         * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
14111
14112 2008-09-16  Alexandre Oliva  <aoliva@redhat.com>
14113
14114         * options.h (General_options::output_is_executable): New.
14115         (General_options::output_is_pie): New.
14116         * i386.cc (Target_i386::define_tls_base_symbol): Use SEGMENT_START
14117         for shared libraries.
14118         * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
14119
14120 2008-09-11  Chris Demetriou  <cgd@google.com>
14121
14122         * options.h (origin): New -z option.
14123         * layout.cc (Layout:finish_dynamic_section): If "-z origin"
14124         is specified, set DF_ORIGIN in DT_FLAGS and set DF_1_ORIGIN
14125         in DT_FLAGS_1.
14126
14127 2008-09-05  Cary Coutant  <ccoutant@google.com>
14128
14129         * fileread.cc (File_read::make_view): Add check for attempt to map
14130         beyond end of file.
14131
14132 2008-09-05  Cary Coutant  <ccoutant@google.com>
14133
14134         * symtab.cc (Symbol_table::add_from_dynobj): Fix typos in
14135         explicit instantiations.
14136
14137 2008-08-28  Kris Van Hees  <kris.van.hees@oracle.com>
14138
14139         PR gold/6858
14140         * options.cc (General_options::finalize): Allow undefined symbols
14141         in shlibs if linking -shared.
14142
14143         PR gold/6859
14144         * symtab.cc (Symbol::init_base_undefined): Mark explicitly undefined
14145         symbols as not needing a dynsym entry.
14146
14147 2008-08-20  Craig Silverstein  <csilvers@google.com>
14148
14149         * fileread.cc (File_read::open): Do not lock the file unless it
14150         was successfully opened.
14151
14152 2008-08-14  Cary Coutant  <ccoutant@google.com>
14153
14154         * x86_64.cc (Target_x86_64::Relocate::relocat_tls):
14155         Use addend for DTPOFF32, DTPOFF64, and TPOFF32 relocs.
14156         * testsuite/tls_test.cc (struct int128): 128-bit struct
14157         for testing TLS relocs with non-zero addend.
14158         (v12): New TLS variable.
14159         (t12): New test.
14160         (t_last): Add check for v12.
14161         * testsuite/tls_test.h (t12): New function.
14162         * testsuite/tls_test_main.cc (thread_routine): Call new test.
14163
14164 2008-08-13  Ian Lance Taylor  <iant@google.com>
14165
14166         * layout.cc (Layout::attach_allocated_section_to_segment): Don't
14167         set tls_segment_ or relro_segment_.
14168         (Layout::make_output_segment): Set tls_segment_ and relro_segment_
14169         when appropriate.
14170         * output.h (Output_section::clear_is_relro): New function.
14171         * output.cc (Output_segment::add_output_section): Handle SHF_TLS
14172         sections specially even when output_data_ is empty.
14173         (Output_segment::maximum_alignment): When first section is relro,
14174         only force alignment for PT_LOAD segments.
14175         * script.cc (script_data_segment_align): New function.
14176         (script_data_segment_relro_end): New function.
14177         * script-c.h (script_data_segment_align): Declare.
14178         (script_data_segment_relro_end): Declare.
14179         * script-sections.h (class Script_sections): Declare
14180         data_segment_align and data_segment_relro_end.  Add fields
14181         segment_align_index_ and saw_relro_end_.
14182         * script-sections.cc (class Sections_element): Add set_is_relro
14183         virtual function.  Add new bool* parameter to place_orphan_here.
14184         Add get_output_section virtual function.
14185         (class Output_section_definition): Add set_is_relro.  Add new
14186         bool* parameter to place_orphan_here.  Add get_output_section.
14187         Add is_relro_ field.
14188         (Output_section_definition::Output_section_definition): Initialize
14189         evaluated_address_, evaluated_load_address, evaluated_addralign_,
14190         and is_relro_ fields.
14191         (Output_section_definition::place_orphan_here): Add is_relro
14192         parameter.
14193         (Output_section_definition::set_section_addresses): Set relro for
14194         output section.
14195         (Output_section_definition::alternate_constraint): Likewise.
14196         (class Orphan_output_section): Add new bool* parameter to
14197         place_orphan_here.  Add get_output_section.
14198         (Orphan_output_section::place_orphan_here): Add is_relro
14199         parameter.
14200         (Script_sections::Script_sections): Initialize
14201         data_segment_align_index_ and saw_relro_end_.
14202         (Script_sections::data_segment_align): New function.
14203         (Script_sections::data_segment_relro_end): New function.
14204         (Script_sections::place_orphan): Set or clear is_relro.
14205         (Script_sections::set_section_addresses): Force alignment of first
14206         TLS section.
14207         * yyscript.y (exp): Call script_data_segment_align and
14208         script_data_segment_relro_end.
14209         * testsuite/relro_script_test.t: New file.
14210         * testsuite/relro_test.cc (using_script): Declare.
14211         (t1, t2): Test using_script.
14212         * testsuite/Makefile.am (check_PROGRAMS): Add relro_script_test.
14213         (relro_script_test_SOURCES): Define.
14214         (relro_script_test_DEPENDENCIES): Define.
14215         (relro_script_test_LDFLAGS): Define.
14216         (relro_script_test_LDADD): Define.
14217         (relro_script_test.so): New target.
14218         * testsuite/Makefile.in: Rebuild.
14219
14220 2008-08-06  Cary Coutant <ccoutant@google.com>
14221
14222         * archive.cc (Archive::total_archives, Archive::total_members)
14223         (Archive::total_members_loaded): New variables.
14224         (Archive::setup): Add parameter.  Add option to preread
14225         archive symbols.
14226         (Archive::read_armap): Add counter.
14227         (Archive::get_file_and_offset): New function.
14228         (Archive::get_elf_object_for_member): New function.
14229         (Archive::read_all_symbols): New function.
14230         (Archive::read_symbols): New function.
14231         (Archive::add_symbols): Add counters.
14232         (Archive::include_all_members): Use armap to find members if it's
14233         already built.
14234         (Archive::include_member): Skip reading symbols if already read.
14235         Factored code into Archive::get_file_and_offset and
14236         Archive::get_elf_object_for_member.  Changed call to
14237         Mapfile::report_include_archive_member.
14238         (Archive::print_stats): New function.
14239         * archive.h: Declare Object and Read_symbols_data classes.
14240         (Archive::Archive): Add initializers for new members.
14241         (Archive::setup): Add parameter.
14242         (Archive::print_stats): New function.
14243         (Archive::total_archives, Archive::total_members)
14244         (Archive::total_members_loaded): New variables.
14245         (Archive::get_file_and_offset): New function.
14246         (Archive::get_elf_object_for_member): New function.
14247         (Archive::read_all_symbols): New function.
14248         (Archive::read_symbols): New function.
14249         (Archive::Archive_member): New class.
14250         (Archive::members_): New member.
14251         (Archive::num_members_): New member.
14252         * main.cc: Include archive.h.
14253         (main): Call Archive::print_stats.
14254         * mapfile.cc (Mapfile::report_include_archive_member): Delete
14255         archive parameter; member_name is now the fully-decorated name.
14256         * mapfile.h (Mapfile::report_include_archive_member): Likewise.
14257         * options.h: (General_options): Add --preread-archive-symbols option.
14258         * readsyms.cc (Read_symbols::do_read_symbols): Change call to
14259         Archive::setup.
14260
14261 2008-08-04  Ian Lance Taylor  <iant@google.com>
14262
14263         * symtab.h (Symbol::use_plt_offset): New function.
14264         * i386.cc (Relocate::relocate): Call Symbol::use_plt_offset.
14265         * powerpc.cc (Relocate::relocate): Likewise.
14266         * sparc.cc (Relocate::relocate): Likewise.
14267         * x86_64.cc (Relocate::relocate): Likewise.
14268         * testsuite/weak_plt.sh: New test.
14269         * testsuite/weak_plt_main.cc: New test.
14270         * testsuite/weak_plt_shared.cc: New test.
14271         * testsuite/Makefile.am (check_SCRIPTS): Add weak_plt.sh.
14272         (check_PROGRAMS): Add weak_plt.
14273         (check_DATA): Add weak_plt_shared.so.
14274         (weak_plt_main_pic.o, weak_plt): New targets.
14275         (weak_plt_shared_pic.o, weak_plt_shared.so): New targets.
14276         * testsuite/Makefile.in: Rebuild.
14277
14278         * testsuite/Makefile.am (weak_alias_test_1.so): Depend upon
14279         gcctestdir/ld.
14280         (weak_alias_test_2.so, weak_alias_test_4.so): Likewise.
14281         * testsuite/Makefile.in: Rebuild.
14282
14283 2008-08-04  Alan Modra  <amodra@bigpond.net.au>
14284
14285         * Makefile.am (POTFILES.in): Set LC_ALL=C.
14286         * Makefile.in: Regenerate.
14287         * po/POTFILES.in: Regenerate.
14288
14289 2008-07-29  Ian Lance Taylor  <iant@google.com>
14290
14291         * script.cc (Script_options::finalize_symbols): Finalize SECTIONS
14292         symbols before other symbols.
14293         * testsuite/script_test_2.cc (test_addr): Declare.
14294         (test_addr_alias): Declare.
14295         (main): Check that test_addr and test_addr_alias have the right
14296         values.
14297         * testsuite/script_test_2.t: Define test_addr_alias and
14298         test_addr.
14299
14300 2008-07-24  Ian Lance Taylor  <iant@google.com>
14301
14302         PR 5990
14303         * descriptors.cc: New file.
14304         * descriptors.h: New file.
14305         * gold-threads.h (class Hold_optional_lock): New class.
14306         * fileread.cc: Include "descriptors.h".
14307         (File_read::~File_read): Release descriptor rather than closing
14308         it.
14309         (File_read::open) [file]: Call open_descriptor rather than open.
14310         Set is_descriptor_opened_.
14311         (File_read::open) [memory]: Assert that descriptor is not open.
14312         (File_read::reopen_descriptor): New function.
14313         (File_read::release): Release descriptor.
14314         (File_read::do_read): Make non-const.  Reopen descriptor.
14315         (File_read::read): Make non-const.
14316         (File_read::make_view): Reopen descriptor.
14317         (File_read::do_readv): Likewise.
14318         * fileread.h (class File_read): Add is_descriptor_opened_ field.
14319         Update declarations.
14320         * layout.cc: Include "descriptors.h".
14321         (Layout::create_build_id): Use open_descriptor rather than open.
14322         * output.cc: Include "descriptors.h".
14323         (Output_file::open): Use open_descriptor rather than open.
14324         * archive.cc (Archive::const_iterator): Change Archive to be
14325         non-const.
14326         (Archive::begin, Archive::end): Make non-const.
14327         (Archive::count_members): Likewise.
14328         * archive.h (class Archive): Update declarations.
14329         * object.h (Object::read): Make non-const.
14330         * Makefile.am (CCFILES): Add descriptors.cc.
14331         (HFILES): Add descriptors.h.
14332         * Makefile.in: Rebuild.
14333
14334         PR 6716
14335         * gold.h: Always include <clocale>.  Add Solaris workarounds
14336         following code in binutils/sysdep.h.
14337
14338         PR 6048
14339         * ehframe.cc (Eh_frame::add_ehframe_input_section): Check whether
14340         this->eh_frame_hdr_ is NULL before using it.
14341
14342         * dynobj.cc (Versions::Versions): Update comment.
14343
14344         * dynobj.cc (Versions::Versions): If there is an soname, use it as
14345         the base version name.
14346
14347         * stringpool.cc (Stringpool_template::add_with_length): Set key to
14348         array size plus one.
14349         (Stringpool_template::set_string_offsets): Subtract one from key
14350         before using it as an array index.
14351         (Stringpool_template::get_offset_with_length): Likewise.
14352         (Stringpool_template::write_to_buffer): Likewise.
14353         * stringpool.h (Stringpool_template::get_offset_from_key):
14354         Likewise.
14355
14356 2008-07-23  Ian Lance Taylor  <iant@google.com>
14357
14358         PR 6658
14359         * object.h (Merged_symbol_value::value): Do our best to handle a
14360         negative addend.
14361
14362         PR 6647
14363         * script.cc (Version_script_info::get_versions): Don't add empty
14364         version tag to return value.
14365         (Version_script_info::get_symbol_version_helper): Change return
14366         type to bool.  Add pversion parameter.  Change all callers.
14367         (script_register_vers_node): Don't require a non-NULL tag.
14368         * script.h (class Version_script_info): Update declarations.
14369         (Version_script_info::get_symbol_version): Change return type to
14370         bool.  Add version parameter.  Change all callers.
14371         * symtab.cc (Sized_symbol::add_from_relobj): Rework version
14372         handling.  Handle an empty version from a version script.
14373         (Symbol_table::define_special_symbol): Likewise.
14374         * testsuite/ver_test_10.script: New file.
14375         * testsuite/ver_test_10.sh: New file.
14376         * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_10.sh.
14377         (check_DATA): Add ver_test_10.syms.
14378         (ver_test_10.syms, ver_test_10.so): New target.
14379         * testsuite/Makefile.in: Rebuild.
14380
14381 2008-07-23  Simon Baldwin  <simonb@google.com>
14382
14383         * symtab.cc (Symbol_table::sized_write_symbol): Only set st_size
14384         to zero for undefined symbols from dynamic libraries.
14385
14386 2008-07-23  Ian Lance Taylor  <iant@google.com>
14387
14388         * symtab.cc (Symbol_table::resolve): Remove version parameter.
14389         Change all callers.
14390         * symtab.h (class Symbol_table): Update declaration.
14391         * testsuite/ver_test_9.cc: New file.
14392         * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_9.
14393         (ver_test_9_SOURCES, ver_test_9_DEPENDENCIES): Define.
14394         (ver_test_9_LDFLAGS, ver_test_9_LDADD): Define.
14395         (ver_test_9.so, ver_test_9.o): New targets.
14396         * testsuite/Makefile.in: Rebuild.
14397
14398 2008-07-22  Ian Lance Taylor  <iant@google.com>
14399
14400         * options.h (class General_options): Define --check-sections.
14401         * layout.cc (Layout::set_segment_offsets): Handle
14402         --check-sections.
14403
14404         * options.h (class General_options): Define -n/--nmagic and
14405         -N/--omagic.
14406         * options.cc (General_options::finalize): For -n/--nmagic or
14407         -N/--omagic, set -static.
14408         * layout.cc (Layout::attach_allocated_section_to_segment): If
14409         -N/--omagic, don't put read-only and read-write sections in
14410         different segments.
14411         (Layout::find_first_load_seg): If -N/--omagic, don't insist on
14412         finding a read-only segment.
14413         (Layout::set_segment_offsets): If -N/--omagic or -n/--nmagic,
14414         don't set the minimum segment alignment to the common page size,
14415         and don't set the file offset to the address modulo the page size.
14416         * script-sections.cc (Script_sections::create_segments): If
14417         -n/--omagic, don't put read-only and read-write sections in
14418         different segments.
14419
14420         * cref.cc: New file.
14421         * cref.h: New file.
14422         * options.h (class General_options): Add --print-symbol-counts.
14423         * main.cc (main): Issue defined symbol report if requested.
14424         * archive.cc (Archive::interpret_header): Make into a const member
14425         function.
14426         (Archive::add_symbols): Call Input_objects::archive_start and
14427         archive_stop.
14428         (Archive::const_iterator): Define new class.
14429         (Archive::begin, Archive::end): New functions.
14430         (Archive::include_all_members): Rewrite to use iterator.
14431         (Archive::count_members): New function.
14432         * archive.h (class Archive): Update declarations.
14433         (Archive::filename): New function.
14434         * object.cc: Include "cref.h".
14435         (Sized_relobj::Sized_relobj): Initialize defined_count_.
14436         (Sized_relobj::do_get_global_symbol_counts): New function.
14437         (Input_objects::add_object): Add object to cross-referencer.
14438         (Input_objects::archive_start): New function.
14439         (Input_objects::archive_stop): New function.
14440         (Input_objects::print_symbol_counts): New function.
14441         * object.h: Declare Cref and Archive.
14442         (Object::get_global_symbol_counts): New function.
14443         (Object::do_get_global_symbol_counts): New pure virtual function.
14444         (class Sized_relobj): Add defined_count_ field.  Update
14445         declarations.
14446         (class Input_objects): Add cref_ field.  Update constructor.
14447         Update declarations.
14448         * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize symbols_ and
14449         defined_count_.
14450         (Sized_dynobj::do_add_symbols): Allocate symbols_ if printing
14451         symbol counts.
14452         (Sized_dynobj::do_get_global_symbol_counts): New function.
14453         * dynobj.h (class Sized_dynobj): Add fields symbols_ and
14454         defined_count_.  Update declarations.  Define Symbols typedef.
14455         * symtab.cc (Symbol_table::add_from_relobj): Add defined
14456         parameter.  Change all callers.
14457         (Symbol_table::add_from_dynobj): Add sympointers and defined
14458         parameters.  Change all callers.
14459         * symtab.h (class Symbol_table): Update declarations.
14460         * Makefile.am (CCFILES): Add cref.cc.
14461         (HFILES): Add cref.h.
14462         * Makefile.in: Rebuild.
14463
14464 2008-07-22  Simon Baldwin  <simonb@google.com>
14465
14466         * symtab.cc (Symbol_table::sized_write_symbol): Set symbol size
14467         to zero when writing undefined symbols.
14468
14469 2008-07-22  Ian Lance Taylor  <iant@google.com>
14470
14471         * output.cc (Output_section::add_input_section): Don't try to
14472         merge empty merge sections.
14473
14474 2008-07-21  Craig Silverstein  <csilvers@google.com>
14475
14476         * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
14477         Include symbol version in error message.
14478
14479 2008-07-20  Chris Demetriou  <cgd@google.com>
14480
14481         * configure.ac (gold_cv_c_random_seed): New configured variable.
14482         (RANDOM_SEED_CFLAGS): New substituted variable.
14483         * Makefile.am (AM_CFLAGS, AM_CXXFLAGS): Add $(RANDOM_SEED_CFLAGS).
14484         * configure: Rebuild.
14485         * Makefile.in: Likewise.
14486         * testsuite/Makefile.in: Likewise.
14487
14488 2008-07-18  Ian Lance Taylor  <iant@google.com>
14489
14490         * symtab.cc (Symbol_table::add_from_object): Rewrite the case
14491         where we see NAME/NULL and NAME/VERSION  as separate symbols.
14492         * testsuite/ver_test_main.cc (main): Call t4.
14493         (t4, t4_2a): Define.
14494         * testsuite/ver_test_2.cc (t4_2): Define.
14495         * testsuite/ver_test_2.script: Put t4_2a in VER2.
14496         * testsuite/ver_test_4.cc (t4_2a): Define.
14497         * testsuite/ver_test_4.script: Put t4_2a in VER2.
14498         * testsuite/ver_test.h (t4, t4_2, t4_2a): Declare.
14499
14500 2008-07-17  Ian Lance Taylor  <iant@google.com>
14501
14502         * dynobj.cc (Versions::add_def): If we give an error about a
14503         missing version, go ahead and create the version anyhow.
14504
14505 2008-07-10  Ian Lance Taylor  <iant@google.com>
14506
14507         Handle output sections with more than 0x7fffffff bytes.
14508         * object.h (class Relobj): Change map_to_output_ to
14509         output_sections_, and just keep a section pointer.  Change all
14510         uses.  Move comdat group support to Sized_relobj.
14511         (Relobj::is_section_specially_mapped): Remove.
14512         (Relobj::output_section): Remove poff parameter.  Change all
14513         callers.
14514         (Relobj::output_section_offset): New function.
14515         (Relobj::set_section_offset): Rewrite.
14516         (Relobj::map_to_output): Remove.
14517         (Relobj::output_sections): New function.
14518         (Relobj::do_output_section_offset): New pure virtual function.
14519         (Relobj::do_set_section_offset): Likewise.
14520         (class Sized_relobj): Add section_offsets_ field.  Add comdat
14521         group support from Relobj.  Update declarations.
14522         (Sized_relobj::get_output_section_offset): New function.
14523         (Sized_relobj::do_output_section_offset): New function.
14524         (Sized_relobj::do_set_section_offset): New function.
14525         * object.cc (Relobj::output_section_address): Remove.
14526         (Sized_relobj::Sized_relobj): Initialize new fields.
14527         (Sized_relobj::include_section_group): Cast find_kept_object to
14528         Sized_relobj.
14529         (Sized_relobj::include_linkonce_section): Likewise.
14530         (Sized_relobj::do_layout): Use separate arrays for output section
14531         and output offset.
14532         (Sized_relobj::do_count_local_symbols): Change map_to_output to
14533         output_sections.
14534         (Sized_relobj::do_finalize_local_symbols): Change map_to_output to
14535         output_sections and section_offsets.
14536         (Sized_relobj::write_local_symbols): Likewise.
14537         (map_to_kept_section): Compute output address directly.
14538         * reloc.cc (Sized_relobj::do_read_relocs): Change map_to_output to
14539         output_sections and section_offsets.
14540         (Sized_relobj::write_sections): Likewise.
14541         (Sized_relobj::relocate_sections): Likewise.
14542         * symtab.cc (sized_finalize_symbol): Use output_section_offset.
14543         * output.h (class Output_reloc): Update declarations.  Change
14544         u2_.relobj to Sized_relobj*.
14545         (class Output_data_reloc): Change add functions to use
14546         Sized_relobj*.
14547         * output.cc (Output_reloc::Output_reloc): Change relobj to
14548         Sized_relobj*.
14549         (Output_reloc::local_section_offset): Change return type to
14550         Elf_Addr.  Use get_output_section_offset.
14551         (Output_reloc::get_address): Likewise.
14552         (Output_section::is_input_address_mapped): Don't call
14553         is_section_specially_mapped.
14554         (Output_section::output_offset): Likewise.
14555         (Output_section::output_address): Likewise.
14556         (Output_section::starting_output_address): Likewise.
14557         * copy-relocs.cc (Copy_relocs::copy_reloc): Change object
14558         parameter to Sized_relobj*.
14559         (Copy_relocs::need_copy_reloc): Likewise.
14560         (Copy_relocs::save): Likewise.
14561         * copy-relocs.h (class Copy_relocs): Update declarations.
14562         (class Copy_relocs::Copy_reloc_entry): Change constructor to use
14563         Sized_relobj*.  Change relobj_ field to Sized_relobj*.
14564         * target-reloc.h (relocate_for_relocatable): Change
14565         offset_in_output_section type to Elf_Addr.  Change code that uses
14566         it as well.
14567         * layout.cc (Layout::layout): Always set *off.
14568         * mapfile.cc (Mapfile::print_input_section): Use
14569         output_section_offset.
14570         * i386.cc (Target_i386::copy_reloc): Change object parameter to
14571         Sized_relobj*.
14572         * powerpc.cc (Target_powerpc::copy_reloc): Likewise.
14573         * sparc.cc (Target_sparc::copy_reloc): Likewise.
14574         * x86_64.cc (Target_x86_64::copy_reloc): Likewise.
14575
14576 2008-07-03  Ian Lance Taylor  <iant@google.com>
14577
14578         * layout.cc (Layout::include_section): Do not discard unrecognized
14579         SHT_STRTAB sections.
14580
14581 2008-06-30  Craig Silverstein  <csilvers@cs.stanford.edu>
14582
14583         * script.cc (Lex::can_continue_name): Make '?' allowable in
14584         version-script names.
14585         * testsuite/version_script.map: Change glob pattern to use '?'
14586
14587 2008-06-30  Manish Singh  <yosh@gimp.org>
14588
14589         PR 6585
14590         * symtab.cc (Symbol_table::add_undefined_symbols_from_command_line):
14591         Correct typo.
14592
14593 2008-06-30  Ian Lance Taylor  <iant@google.com>
14594
14595         PR 6660
14596         PR 6682
14597         * powerpc.cc (Powerpc_relocate_functions::addr16_ha) [both
14598         versions]: Don't try to read the value in the contents, since we
14599         don't use it.  Use the template endianness when writing.
14600
14601 2008-06-25  Cary Coutant  <ccoutant@google.com>
14602
14603         * fileread.cc (File_read::make_view): Assert on zero-length view.
14604         * object.cc (Sized_relobj::do_read_symbols): Don't try to read
14605         symbol table when there are no symbols to read.
14606
14607 2008-06-23  Craig Silverstein  <csilvers@google.com>
14608
14609         * version.cc (version_string): Bump to 1.7
14610
14611 2008-06-18  Craig Silverstein  <csilvers@google.com>
14612
14613         * powerpc.cc (Powerpc_relocate_functions::addr16_ha): cast
14614         constant 0xFFFF to type Valtype.
14615         (Powerpc_relocate_functions::rel16_ha): Likewise.
14616
14617 2008-06-17  Ian Lance Taylor  <iant@google.com>
14618
14619         * output.h (Output_section::Input_section): Initialize p2align_ to
14620         zero for Output_section_data constructors.
14621         (Output_section::Input_section::addralign): If not an input
14622         section, return the alignment of the Output_section_data.
14623         * testsuite/copy_test.cc: New file.
14624         * testsuite/copy_test_1.cc: New file.
14625         * testsuite/copy_test_2.cc: New file.
14626         * testsuite/Makefile.am (check_PROGRAMS): Add copy_test.
14627         (copy_test_SOURCES, copy_test_DEPENDENCIES): New variables.
14628         (copy_test_LDFLAGS, copy_test_LDADD): New variables.
14629         (copy_test_1_pic.o, copy_test_1.so): New targets.
14630         (copy_test_2_pic.o, copy_test_2.so): New targets.
14631         * testsuite/Makefile.in: Rebuild.
14632
14633         * script-sections.cc (Script_sections::place_orphan): Initialize
14634         local variable exact.
14635
14636 2008-06-13  David Edelsohn  <edelsohn@gnu.org>
14637
14638         * powerpc.cc (Output_data_plt_powerpc::do_write): 8 + 4 = 0xC.
14639
14640 2008-06-12  David Edelsohn  <edelsohn@gnu.org>
14641             David S. Miller  <davem@davemloft.net>
14642
14643         * powerpc.cc: New file.
14644         * Makefile.am (TARGETSOURCES): Add powerpc.cc
14645         (ALL_TARGETOBJS): Add powerpc.$(OBJEXT)
14646         * configure.tgt: Add entries for powerpc-* and powerpc64-*.
14647         * Makefile.in: Rebuild.
14648
14649 2008-06-09  Ian Lance Taylor  <iant@google.com>
14650
14651         * testsuite/relro_test.cc: Include <cstdio>, <cstdlib>, and
14652         <exception>.
14653         (throwing, orig_terminate): New static variables.
14654         (terminate_handler): New static function.
14655         (t2): Set terminate handler.
14656
14657 2008-06-05  Kris Van Hees  <kris.van.hees@oracle.com>
14658
14659         PR 6584
14660         * binary.cc (Binary_to_elf::sized_convert): Fix .data
14661         alignment.
14662
14663 2008-05-30  Cary Coutant  <ccoutant@google.com>
14664
14665         * archive.cc (Archive::include_all_members) Correct to step
14666         over symbol table and extended name table in thin archives.
14667
14668 2008-05-29  Kris Van Hees  <kris.van.hees@oracle.com>
14669
14670         PR 6407
14671         * target-reloc.h (relocate_for_relocatable): Fix new_offset
14672         calculation.
14673
14674 2008-05-28  Caleb Howe  <cshowe@google.com>
14675
14676         * reduced_debug_output.cc: New file.
14677         * reduced_debug_output.h: New file.
14678         * options.h (class General_options): Add --strip-debug-non-line.
14679         * options.cc (General_options::finalize): Add strip_debug_non_line
14680         to the strip heirarchy.
14681         * layout.h (class Layout): Add debug_abbrev_ and debug_info_
14682         fields.
14683         * layout.cc: Include "reduced_debug_output.h".
14684         (Layout::Layout): Initialize new fields.
14685         (line_only_debug_sections): New static array.
14686         (is_lines_only_debug_sections): New static inline function.
14687         (Layout::include_section): Handle --strip-debug-non-line.
14688         (Layout::make_output_section): If --strip-debug-non-line, build
14689         new output sections for .debug_abbrev and .debug_info.
14690         * dwarf_reader.cc (read_unsigned_LEB_128): Move to namespace
14691         gold.  Warn about possible overflow.
14692         (read_signed_LEB_128): Likewise.
14693         * dwarf_reader.h: (read_unsigned_LEB_128): Declare.
14694         (read_signed_LEB_128): Declare.
14695         * Makefile.am (CCFILES): Add reduced_debug_output.cc.
14696         (HFILES): Add reduced_debug_output.h.
14697         * Makefile.in: Rebuild.
14698
14699 2008-05-21  Ian Lance Taylor  <iant@google.com>
14700
14701         * mapfile.cc: New file.
14702         * mapfile.h: New file.
14703         * options.h (class General_options): Add -M/--print-map and -Map.
14704         * options.cc (General_options::finalize): Make -M equivalent to
14705         -Map -.
14706         * main.cc: Include <cstdio> and "mapfile.h".
14707         (main): Open mapfile if requested.
14708         * gold.cc (class Middle_runner): Add mapfile_ field.  Update
14709         constructor.  Change caller.
14710         (queue_initial_tasks): Add mapfile parameter.  Change caller.
14711         (queue_middle_tasks): Likewise.
14712         * gold.h (queue_initial_tasks, queue_middle_tasks): Update
14713         declarations.
14714         * archive.cc: Include "mapfile.h".
14715         (Archive::add_symbols): Add mapfile parameter.  Change all
14716         callers.  Pass mapfile, symbol, and reason to include_member.
14717         (Archive::include_all_members): Add mapfile parameter.  Change all
14718         callers.
14719         (Archive::include_member): Add mapfile, sym, and why parameters.
14720         Change all callers.  Report inclusion to map file.
14721         * archive.h: Include "fileread.h".
14722         (class Archive): Update declarations.
14723         (Archive::file): New const method.
14724         (class Add_archive_symbols): Add mapfile_ field.  Update
14725         constructor.  Change all callers.
14726         * readsyms.h (class Read_symbols): Likewise.
14727         (class Finish_group): Likewise.
14728         (class Read_script): Likewise.
14729         * common.cc: Include "mapfile.h".
14730         (Symbol_table::allocate_commons): Add mapfile parameter.  Change
14731         all callers.
14732         (Symbol_table::do_allocate_commons): Likewise.
14733         (Symbol_table::do_allocate_commons_list): Likewise.  Report common
14734         symbol allocation to mapfile.
14735         * common.h (class Allocate_commons_task): Add mapfile_ field.
14736         Update constructor.  Change all callers.
14737         * symtab.h (class Symbol_table): Update declarations.
14738         * layout.cc: Include "mapfile.h".
14739         (Layout_task_runner::run): Print information to mapfile.
14740         (Layout::create_gold_note): Change Output_data_fixed_space to
14741         Output_data_zero_fill.
14742         (Layout::create_build_id): Likewise.
14743         (Layout::print_to_mapfile): New function.
14744         * layout.h (class Layout_task_runner): Add mapfile_ field.  Update
14745         constructor.  Change caller.
14746         (class Layout): Declare print_to_mapfile.
14747         * output.cc (Output_section::Input_section::print_to_mapfile): New
14748         function.
14749         (Output_section::add_input_section): If producing a map, always
14750         add to input_sections_ list.
14751         (Output_section::do_print_to_mapfile): New function.
14752         (Output_segment::print_sections_to_mapfile): New function.
14753         (Output_segment::print_section_list_to_mapfile): New function.
14754         * output.h: Include "mapfile.h".
14755         (Output_data::print_to_mapfile): New function.
14756         (Output_data::do_print_to_mapfile): New virtual function.
14757         (Output_segment_headers::do_print_to_mapfile): New function.
14758         (Output_file_header::do_print_to_mapfile): New function.
14759         (Output_data_const::do_print_to_mapfile): New function.
14760         (class Output_data_const_buffer): Add map_name_ field.  Update
14761         constructor.  Change all callers.  Add do_print_to_mapfile
14762         function.
14763         (class Output_data_fixed_space): Likewise.
14764         (class Output_data_space): Likewise.
14765         (class Output_data_zero_fill): New class.
14766         (Output_data_strtab::do_print_to_mapfile): New function.
14767         (Output_data_reloc_base::do_print_to_mapfile): New function.
14768         (Output_relocatable_relocs::do_print_to_mapfile): New function.
14769         (Output_data_group::do_print_to_mapfile): New function.
14770         (Output_data_got::do_print_to_mapfile): New function.
14771         (Output_data_dynamic::do_print_to_mapfile): New function.
14772         (Output_symtab_xindex::do_print_to_mapfile): New function.
14773         (class Output_section): Declare do_print_to_mapflie.  Declare
14774         print_to_mapfile in Input_section.
14775         (class Output_segment): Declare new functions.
14776         * object.h (Sized_relobj::symbol_count): New function.
14777         * script-sections.cc
14778         (Output_section_element_dot_assignment::set_section_addresses):
14779         Change Output_data_fixed_space to Output_data_zero_fill.
14780         (Output_data_expression::do_print_to_mapfile): New function.
14781         * script.cc (read_input_script): Add mapfile parameter.  Change
14782         all callers.
14783         * script.h (read_input_script): Update declaration.
14784         * ehframe.h (Eh_frame_hdr::do_print_to_mapfile): New function.
14785         (Eh_frame::do_print_to_mapfile): New function.
14786         * merge.h (Output_merge_data::do_print_to_mapfile): New function.
14787         (Output_merge_string::do_print_to_mapfile): New function.
14788         * i386.cc (Output_data_plt_i386::do_print_to_mapfile): New
14789         function.
14790         * sparc.cc (Output_data_plt_sparc::do_print_to_mapfile): New
14791         function.
14792         * x86_64.cc (Output_data_plt_x86_64::do_print_to_mapfile): New
14793         function.
14794         * Makefile.am (CCFILES): Add mapfile.cc.
14795         (HFILES): Add mapfile.h.
14796         * Makefile.in: Rebuild.
14797
14798 2008-05-19  Ian Lance Taylor  <iant@google.com>
14799
14800         * options.h (class General_options): Add -z relro.
14801         * layout.cc (Layout::Layout): Initialize relro_segment_.
14802         (Layout::add_output_section_data): Return the output section.
14803         (Layout::make_output_section): Rcognize relro sections and mark
14804         them appropriately.
14805         (Layout::attach_allocated_section_to_segment): Put relro sections
14806         in a PT_GNU_RELRO segment.
14807         (Layout::create_initial_dynamic_sections): Mark the .dynamic
14808         section as relro.
14809         (Layout::segment_precedes): Sort PT_GNU_RELRO segments after
14810         PT_TLS segments.
14811         (Layout::linkonce_mapping): Map d.rel.ro.local to
14812         .data.rel.ro.local.
14813         (Layout::output_section_name): Us .data.rel.ro.local for any
14814         section which begins with that.
14815         * layout.h (class Layout): Update add_output_section_data
14816         declaration.  Add relro_segment_ field.
14817         * output.cc (Output_section::Output_section): Initialize is_relro_
14818         and is_relro_local_ fields.
14819         (Output_segment::add_output_section): Group relro sections.
14820         (Output_segment::is_first_section_relro): New function.
14821         (Output_segment::maximum_alignment): If there is a relro section,
14822         align the segment to the common page size.
14823         (Output_segment::set_section_addresses): Track whether we are
14824         looking at relro sections.  If the last section is a relro
14825         section, align to the common page size.
14826         (Output_segment::set_section_list_addresses): Add in_relro
14827         parameter.  Change all callers.  Align to the page size when
14828         moving from relro to non-relro section.
14829         (Output_segment::set_offset): Align memsz of a PT_GNU_RELRO
14830         segment.
14831         * output.h (class Output_section): Add is_relro_ and
14832         is_relro_local_ fields.
14833         (Output_section::is_relro): New function.
14834         (Output_section::set_is_relro): New function.
14835         (Output_section::is_relro_local): New function.
14836         (Output_section::set_is_relro_local): New function.
14837         (class Output_segment): Update declarations.
14838         * i386.cc (Target_i386::got_section): Mark .got section as relro.
14839         * sparc.cc (Target_sparc::got_section): Likewise.
14840         * x86_64.cc (Target_x86_64::got_section): Likewise.
14841         * testsuite/relro_test_main.cc: New file.
14842         * testsuite/relro_test.cc: New file.
14843         * testsuite/Makefile.am (check_PROGRAMS): Add relro_test.
14844         (relro_test_SOURCES, relro_test_DEPENDENCIES): New variables.
14845         (relro_test_LDFLAGS, relro_test_LDADD): New variables.
14846         (relro_test.so, relro_test_pic.o): New targets.
14847         * testsuite/Makefile.in: Rebuild.
14848
14849 2008-05-16  Ian Lance Taylor  <iant@google.com>
14850
14851         * output.cc (Output_segment::add_output_section): Remove front
14852         parameter.
14853         * output.h (class Output_segment): Remove
14854         add_initial_output_section and overloaded add_output_section.
14855         Update declaration of remaining add_output_section.
14856         * layout.cc (Layout::create_interp): Call add_output_section
14857         rather than add_initial_output_section.
14858         (Layout::finish_dynamic_section): Likewise.
14859
14860         * i386.cc (Target_i386::Relocate::relocate_tls): Set dynamic type
14861         for TLS_GOTDESC and TLS_DESC_CALL.  Only optimize TLS_LDO_32 if we
14862         know the dynamic type.
14863         * x86_64.cc (Target_x86_64::Relocate): Add saw_tls_block_reloc_
14864         field.  Initialize it in constructor.
14865         (Target_x86_64::Relocate::relocate_tls): Record that we saw a TLS
14866         block reloc for TLSGD, GOTPC32_TLSDESC, TLSDESC_CALL, and TLSLD.
14867         Only optimize DTPOFF32 and DTPOFF64 if we have seen a TLS block
14868         reloc.
14869
14870         * output.cc (Output_reloc::get_address): Change return type to
14871         Elf_Addr.
14872         * output.h (class Output_reloc): Update get_address declaration.
14873         * x86_64.cc (Output_data_plt_x86_64::do_write): Use 64-bit types
14874         for section addresses.
14875
14876 2008-05-09  Ian Lance Taylor  <iant@google.com>
14877
14878         PR 6493
14879         * gold.cc (gold_nomem): Use return value of write.
14880
14881 2008-05-08  Ian Lance Taylor  <iant@google.com>
14882
14883         * symtab.c (Symbol::init_base_output_data): Add version
14884         parameter.  Change all callers.
14885         (Symbol::init_base_output_segment): Likewise.
14886         (Symbol::init_base_constant): Likewise.
14887         (Symbol::init_base_undefined): Likewise.
14888         (Sized_symbol::init_output_data): Likewise.
14889         (Sized_symbol::init_output_segment): Likewise.
14890         (Sized_symbol::init_constant): Likewise.
14891         (Sized_symbol::init_undefined): Likewise.
14892         (Symbol_table::do_define_in_output_data): If the new symbol has a
14893         version, mark it as the default.
14894         (Symbol_table::do_define_in_output_segment): Likewise.
14895         (Symbol_table::do_define_as_constant): Likewise.
14896         * symtab.h (class Symbol): Update declarations.
14897         (class Sized_symbol): Likewise.
14898         * resolve.cc (Symbol::override_version): New function.
14899         (Symbol::override_base): Call override_version.
14900         (Symbol::override_base_with_special): Likewise.
14901         * testsuite/ver_script_8.script: New file.
14902         * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_8.
14903         (ver_test_8_SOURCES, ver_test_8_DEPENDENCIES): Define.
14904         (ver_test_8_LDFLAGS, ver_test_8_LDADD): Define.
14905         (ver_test_8_1.so, ver_test_8_2.so): New targets.
14906
14907 2008-05-06  Ian Lance Taylor  <iant@google.com>
14908
14909         PR 6049
14910         * options.h (DEFINE_set): Add VARNAME_begin and VARNAME_end
14911         functions.
14912         (class General_options): Remove existing --undefined, and add
14913         --no-undefined instead.  Add new --undefined as synonym for -u.
14914         * archive.cc (Archive::add_symbols): Check whether symbol was
14915         named with -u.
14916         * gold.cc (queue_middle_tasks): Add -u symbols to symbol table.
14917         * symtab.h (class Symbol): Rename CONSTANT to IS_CONSTANT; change
14918         all uses.  Add IS_UNDEFINED.  Update declarations to split
14919         different versions of init_base.  Declare init_base_undefined.
14920         (Symbol::is_defined): Handle IS_UNDEFINED.
14921         (Symbol::is_undefined): Likewise.
14922         (Symbol::is_weak_undefined): Call is_undefined.
14923         (Symbol::is_absolute): Handle IS_CONSTANT.
14924         (class Sized_symbol): Update declarations to split different
14925         versions of init.  Declare init_undefined.
14926         (class Symbol_table): Declare new functions.
14927         * symtab.cc (Symbol::init_base_object): Rename from init_base.
14928         Change all callers.
14929         (Symbol::init_base_output_data): Likewise.
14930         (Symbol::init_base_output_segment): Likewise.
14931         (Symbol::init_base_constant): Likewise.
14932         (Symbol::init_base_undefined): New function.
14933         (Sized_symbol::init_object): Rename from init.  Change all
14934         callers.
14935         (Sized_symbol::init_output_data): Likewise.
14936         (Sized_symbol::init_output_segment): Likewise.
14937         (Sized_symbol::init_constant): Likewise.
14938         (Sized_symbol::init_undefined): New function.
14939         (Symbol_table::add_undefined_symbols_from_command_line): New
14940         function.
14941         (Symbol_table::do_add_undefined_symbols_from_command_line): New
14942         function.
14943         (Symbol::final_value_is_known): Handle IS_UNDEFINED.
14944         (Symbol::output_section): Likewise.
14945         (Symbol::set_output_section): Likewise.
14946         (Symbol_table::sized_finalize_symbol): Likewise.
14947         (Symbol_table::sized_write_globals): Likewise.
14948         * resolve.cc (Symbol_table::should_override): Likewise.
14949         (Symbol::override_base_with_special): Likewise.
14950
14951         * symtab.cc (Symbol_table::add_from_dynobj): If we see a protected
14952         symbol, change it to have default visibility.
14953         * testsuite/protected_1.cc: New file.
14954         * testsuite/protected_2.cc: New file.
14955         * testsuite/protected_3.cc: New file.
14956         * testsuite/protected_main_1.cc: New file.
14957         * testsuite/protected_main_2.cc: New file.
14958         * testsuite/protected_main_3.cc: New file.
14959         * testsuite/Makefile.am (check_PROGRAMS): Add protected_1.
14960         (protected_1_SOURCES, protected_1_DEPENDENCIES): Define.
14961         (protected_1_LDFLAGS, protected_1_LDADD): Define.
14962         (protected_1.so): New target.
14963         (protected_1_pic.o, protected_2_pic.o): New targets.
14964         (protected_3_pic.o): New target.
14965         (check_PROGRAMS): Add protected_2.
14966         (protected_2_SOURCES, protected_2_DEPENDENCIES): Define.
14967         (protected_2_LDFLAGS, protected_2_LDADD): Define.
14968         * testsuite/Makefile.in: Rebuild.
14969
14970         * options.h (DEFINE_var): Add set_user_set_##varname__.
14971         (DEFINE_bool_alias): New macro.
14972         (class General_options): Define -Bstatic using DEFINE_bool_alias
14973         rather than DEFINE_special.  Add --undefined as an alias for -z
14974         defs.
14975         * options.cc (General_options::parse_Bstatic): Remove.
14976
14977         * options.h (class General_options): Add --fatal-warnings.
14978         * main.cc (main): Implement --fatal-warnings.
14979         * errors.h (Errors::warning_count): New function.
14980
14981         * options.h (class General_options): Add -Bsymbolic-functions.
14982         * symtab.h (Symbol::is_preemptible): Check for
14983         -Bsymbolic-functions.
14984
14985 2008-05-05  Ian Lance Taylor  <iant@google.com>
14986
14987         * options.h (DEFINE_bool): For DASH_Z, create the negative option
14988         as noVARNAME rather than no-VARNAME.
14989         (class General_options): Add option -z combreloc.
14990         * output.h (class Output_reloc) [SHT_REL]: Declare compare and
14991         get_address.
14992         (Output_reloc::sort_before) [SHT_REL]: New function.
14993         (Output_reloc::sort_before) [SHT_RELA]: New function.
14994         (class Output_data_reloc_base): Add sort_relocs_ field.  Define
14995         Sort_relocs_comparison.
14996         (Output_data_reloc_base::Output_data_reloc_base): Add sort_relocs
14997         parameter.  Change all callers.
14998         (Output_data_reloc::Output_data_reloc) [both versions]: Add
14999         sort_relocs parameter.  Change all callers.
15000         * output.cc (Output_reloc::get_address): New function, broken out
15001         of write_rel.
15002         (Output_reloc::write_rel): Call it.
15003         (Output_reloc::compare): New function.
15004         (Output_data_reloc_base::do_write): Optionally sort relocs.
15005
15006         * configure.ac: If targ_extra_obj is set, link it in.
15007         * configure.tgt: Initialize all variables.
15008         (x86_64*): Set targ_extra_obj and targ_extra_size.
15009         * configure: Rebuild.
15010
15011         * object.cc (Sized_relobj::include_section_group): Adjust section
15012         indexes read from group data.  Build vector to pass to
15013         layout_group.
15014         * layout.cc (Layout::layout_group): Add flags and shndxes
15015         parameters.  Remove contents parameter.  Change caller.  Update
15016         explicit instantiations.
15017         * layout.h (class Layout): Update layout_group declaration.
15018         * output.cc (Output_data_group::Output_data_group): Add flags and
15019         input_shndxes parameters.  Remove contents parameter.  Change
15020         caller.
15021         (Output_data_group::do_write): Change input_sections_ to
15022         input_shndxes_.
15023         * output.h (class Output_data_group): Update constructor
15024         declaration.  Rename input_sections_ to input_shndxes_.
15025         * testsuite/many_sections_test.cc: Add template.
15026
15027 2008-04-30  Cary Coutant  <ccoutant@google.com>
15028
15029         * target-reloc.h (relocate_section): Fix dead-pointer bug.
15030
15031         * layout.cc (Layout::include_section): Refactored check for debug
15032         info section.
15033         (Layout::add_comdat): Add new parameters.  Change type
15034         of signature parameter.  Add object and shndx to signatures table.
15035         (Layout::find_kept_object): New function.
15036         * layout.h: Include <cstring>.
15037         (Layout::is_debug_info_section): New function.
15038         (Layout::add_comdat): Add new parameters.
15039         (Layout::find_kept_object): New function.
15040         (Layout::Kept_section): New struct.
15041         (Layout::Signatures): Change type of map range.
15042         * object.cc (Relobj::output_section_address): New function.
15043         (Sized_relobj::include_section_group): Add new parameters.  Change
15044         calls to Layout::add_comdat.  Change to build table of kept comdat
15045         groups and table mapping discarded sections to kept sections.
15046         (Sized_relobj::include_linkonce_section): Likewise.  Add new parameter.
15047         (Sized_relobj::do_layout): Change calls to include_section_group and
15048         include_linkonce_section.
15049         (Sized_relobj::do_finalize_local_symbols): Do not set local symbol
15050         value to zero when section is discarded.
15051         (Sized_relobj::map_to_kept_section): New function.
15052         * object.h (Relobj::output_section_address): New function.
15053         (Relobj::Comdat_group): New type.
15054         (Relobj::find_comdat_group): New function.
15055         (Relobj::Comdat_group_table): New type.
15056         (Relobj::Kept_comdat_section): New type.
15057         (Relobj::Kept_comdat_section_table): New type.
15058         (Relobj::add_comdat_group): New function.
15059         (Relobj::set_kept_comdat_section): New function.
15060         (Relobj::get_kept_comdat_section): New function.
15061         (Relobj::comdat_groups_): New field.
15062         (Relobj::kept_comdat_sections_): New field.
15063         (Symbol_value::input_value): Update comment.
15064         (Sized_relobj::map_to_kept_section) New function.
15065         (Sized_relobj::include_linkonce_section): Add new parameter.
15066         * target-reloc.h (Comdat_behavior): New type.
15067         (get_comdat_behavior): New function.
15068         (relocate_section): Add code to map a discarded section to the
15069         corresponding kept section when applying a relocation.
15070
15071 2008-04-30  Craig Silverstein  <csilvers@google.com>
15072
15073         * dwarf_reader.cc (next_generation_count): New static var.
15074         (Addr2line_cache_entry): New struct.
15075         (addr2line_cache): New static var.
15076         (Dwarf_line_info::one_addr2line): Added caching.
15077         (Dwarf_line_info::clear_addr2line_cache): New function.
15078         * dwarf_reader.h (Dwarf_line_info::one_addr2line): Add
15079         cache-size parameter.
15080         (Dwarf_line_info::one_addr2line_cache): New function.
15081         * symtab.cc (Symbol_table::detect_odr_violations): Pass
15082         new cache-size argument to one_addr2line(), and clear cache.
15083
15084 2008-04-28  Cary Coutant  <ccoutant@google.com>
15085
15086         * i386.cc (Relocate::relocate): Fix typos for R_386_PC16 and
15087         R_386_PC8 relocations.
15088
15089 2008-04-23  Ian Lance Taylor  <iant@google.com>
15090
15091         * object.cc (Sized_relobj::include_section_group): Check for
15092         invalid section group.
15093
15094         * object.cc (make_elf_object): Correct test for 64-bit ELF file
15095         header size.
15096
15097         * readsyms.cc (Read_symbols::do_read_symbols): Use get_view rather
15098         than read for file header.
15099         * archive.cc (Archive::include_member): Likewise.
15100
15101 2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
15102
15103         * aclocal.m4: Regenerate.
15104         * configure: Regenerate.
15105
15106 2008-04-19  Ian Lance Taylor  <iant@google.com>
15107
15108         * version.cc (version_string): Bump to 1.6.
15109
15110         * testsuite/Makefile.am (many_sections_r_test): New target.
15111         (many_sections_r_test_SOURCES): Remove.
15112         (many_sections_r_test_DEPENDENCIES): Remove.
15113         (many_sections_r_test_LDFLAGS): Remove.
15114         (many_sections_r_test_LDADD): Remove.
15115
15116         * object.cc (Sized_relobj::do_add_symbols): Always pass
15117         local_symbol_count_ to add_from_relobj.
15118
15119         * testsuite/Makefile.am (many_sections_check.h): Only check one in
15120         every thousand variables.
15121         * testsuite/Makefile.in: Rebuild.
15122
15123         * object.cc (Xindex::initialize_symtab_xindex): New function.
15124         (Xindex::read_symtab_xindex): New function.
15125         (Xindex::sym_xindex_to_shndx): New function.
15126         (Sized_relobj::find_symtab): Pick up SHT_SYMTAB_SHNDX section if
15127         available.
15128         (Sized_relobj::do_initialize_xindex): New function.
15129         (Sized_relobj::do_read_symbols): Adjust section links.
15130         (Sized_relobj::symbol_section_and_value): Add is_ordinary
15131         parameter.  Change all callers.
15132         (Sized_relobj::include_section_group): Adjust section links and
15133         symbol section indexes.
15134         (Sized_relobj::do_layout): Adjust section links.
15135         (Sized_relobj::do_count_local_symbols): Adjust section links and
15136         symbol section indexes.
15137         (Sized_relobj::do_finalize_local_symbols): Distinguish between
15138         ordinary and special symbols.
15139         (Sized_relobj::write_local_symbols): Add symtab_xindex and
15140         dynsym_xindex parameters.  Change all callers.  Adjust section
15141         links.  Use SHN_XINDEX when needed.
15142         (Sized_relobj::get_symbol_location_info): Adjust section links.
15143         Don't get fooled by special symbols.
15144         * object.h (class Xindex): Define.
15145         (class Object): Add xindex_ parameter.  Declare virtual functoin
15146         do_initialize_xindex.
15147         (Object::adjust_sym_shndx): New function.
15148         (Object::set_xindex): New protected function.
15149         (class Symbol_value): Add is_ordinary_shndx_ field.
15150         (Symbol_value::Symbol_value): Initialize is_ordinary_shndx_.
15151         (Symbol_value::value): Assert ordinary section.
15152         (Symbol_value::initialize_input_to_output_map): Likewise.
15153         (Symbol_value::set_input_shndx): Add is_ordinary parameter.
15154         Change all callers.
15155         (Symbol_value::input_shndx): Add is_ordinary parameter.  Change
15156         all callers.
15157         (class Sized_relobj): Update declarations.
15158         (Sized_relobj::local_symbol_input_shndx): Add is_ordinary
15159         parameter.  Change all callers.
15160         (Sized_relobj::adjust_shndx): New function.
15161         * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize dynsym_shndx_
15162         field.
15163         (Sized_dynobj::find_dynsym_sections): Remove pdynsym_shndx
15164         parameter.  Change all callers.  Pick up SHT_DYNSYM_SHNDX section
15165         for SHT_DYNSYM section if available.  Set dynsym_shndx_ field.
15166         (Sized_dynobj::read_dynsym_section): Adjust section links.
15167         (Sized_dynobj::read_dynamic): Likewise.
15168         (Sized_dynobj::do_read_symbols): Use dynsym_shndx_ field.  Adjust
15169         section links.
15170         (Sized_dynobj::do_initialize_xindex): New function.
15171         * dynobj.h (class Sized_dynobj): Add dynsym_shndx_ field.  Declare
15172         do_initialize_xindex.
15173         (Sized_dynobj::adjust_shndx): New function.
15174         * layout.cc (Layout::Layout): Initialize symtab_xindex_ and
15175         dynsym_xindex_ fields.
15176         (Layout::finalize): Add a call to set_section_indexes before
15177         creating the symtab sections.
15178         (Layout::set_section_indexes): Don't do anything if the section
15179         already has a section index.
15180         (Layout::create_symtab_sections): Add shnum parameter.  Change
15181         caller.  Create .symtab_shndx section if needed.
15182         (Layout::create_shdrs): Add shstrtab_section parameter.  Change
15183         caller.
15184         (Layout::allocated_output_section_count): New function.
15185         (Layout::create_dynamic_symtab): Create .dynsym_shndx section if
15186         needed.
15187         * layout.h (class Layout): Add symtab_xindex_ and dynsym_xindex_
15188         fields.  Update declarations.
15189         (Layout::symtab_xindex): New function.
15190         (Layout::dynsym_xindex): New function.
15191         (class Write_symbols_task): Add layout_ field.
15192         (Write_symbols_task::Write_symbols_task): Add layout parameter.
15193         Change caller.
15194         * output.cc (Output_section_headers::Output_section_headers): Add
15195         shstrtab_section parameter.  Change all callers.
15196         (Output_section_headers::do_sized_write): Store overflow values
15197         for section count and section string table section index in
15198         section header zero.
15199         (Output_file_header::do_sized_write): Check for overflow of
15200         section count and section string table section index.
15201         (Output_symtab_xindex::do_write): New function.
15202         (Output_symtab_xindex::endian_do_write): New function.
15203         * output.h (class Output_section_headers): Add shstrtab_section_.
15204         Update declarations.
15205         (class Output_symtab_xindex): Define.
15206         (Output_section::has_out_shndx): New function.
15207         * symtab.cc (Symbol::init_fields): Initialize is_ordinary_shndx_
15208         field.
15209         (Symbol::init_base): Add st_shndx and is_ordinary parameters.
15210         Change all callers.
15211         (Sized_symbol::init): Likewise.
15212         (Symbol::output_section): Check for ordinary symbol.
15213         (Symbol_table::add_from_object): Remove orig_sym parameter.  Add
15214         st_shndx, is_ordinary, and orig_st_shndx parameters.  Change all
15215         callers.
15216         (Symbol_table::add_from_relobj): Add symndx_offset parameter.
15217         Change all callers.  Simplify handling of symbols from sections
15218         not included in the link.
15219         (Symbol_table::add_from_dynobj): Handle ordinary symbol
15220         distinction.
15221         (Weak_alias_sorter::operator()): Assert that symbols are
15222         ordinary.
15223         (Symbol_table::sized_finalize_symbol): Handle ordinary symbol
15224         distinction.
15225         (Symbol_table::write_globals): Add symtab_xindex and dynsym_xindex
15226         parameters.  Change all callers.
15227         (Symbol_table::sized_write_globals): Likewise.  Handle ordinary
15228         symbol distinction.  Use SHN_XINDEX when needed.
15229         (Symbol_table::write_section_symbol): Add symtab_xindex
15230         parameter.  Change all callers.
15231         (Symbol_table::sized_write_section_symbol): Likewise.  Use
15232         SHN_XINDEX when needed.
15233         * symtab.h (class Symbol): Add is_ordinary_shndx_ field.  Update
15234         declarations.
15235         (Symbol::shndx): Add is_ordinary parameter.  Change all callers.
15236         (Symbol::is_defined): Check is_ordinary.
15237         (Symbol::is_undefined, Symbol::is_weak_undefined): Likewise.
15238         (Symbol::is_absolute, Symbol::is_common): Likewise.
15239         (class Sized_symbol): Update declarations.
15240         (class Symbol_table): Update declarations.
15241         * resolve.cc (Symbol::override_base): Add st_shndx and is_ordinary
15242         parameters.  Change all callers.
15243         (Sized_symbol::override): Likewise.
15244         (Symbol_table::override): Likewise.
15245         (symbol_to_bits): Add is_ordinary parameter.  Change all callers.
15246         (Symbol_table::resolve): Remove orig_sym parameter.  Add st_shndx,
15247         is_ordinary, and orig_st_shndx parameters.  Change all callers.
15248         * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Require symbol
15249         to be in an ordinary section.
15250         * dwarf_reader.cc (Sized_dwarf_line_info::symbol_section): Add
15251         object and is_ordinary parameters.  Change all callers.
15252         (Sized_dwarf_line_info::read_relocs): Add object parameter.
15253         Change all callers.  Don't add undefined or non-ordinary symbols
15254         to reloc_map_.
15255         (Sized_dwarf_line_info::read_line_mappings): Add object parameter.
15256         Change all callers.
15257         * dwarf_reader.h (class Sized_dwarf_line_info): Update
15258         declarations.
15259         * ehframe.cc (Eh_frame::read_fde): Check for ordinary symbol.
15260         * reloc.cc (Sized_relobj::do_read_relocs): Adjust section links.
15261         (Sized_relobj::relocate_sections): Likewise.
15262         * target-reloc.h (scan_relocs): Adjust section symbol index.
15263         (scan_relocatable_relocs): Likewise.
15264         * i386.cc (Scan::local): Check for ordinary symbols.
15265         * sparc.cc (Scan::local): Likewise.
15266         * x86_64.cc (Scan::local): Likewise.
15267         * testsuite/binary_unittest.cc (Sized_binary_test): Update calls
15268         to symbol_section_and_value.
15269         * testsuite/many_sections_test.cc: New file.
15270         * testsuite/Makefile.am (BUILT_SOURCES): Define.
15271         (check_PROGRAMS): Add many_sections_test.
15272         (many_sections_test_SOURCES): Define.
15273         (many_sections_test_DEPENDENCIES): Define.
15274         (many_sections_test_LDFLAGS): Define.
15275         (BUILT_SOURCES): Add many_sections_define.h.
15276         (many_sections_define.h): New target.
15277         (BUILT_SOURCES): Add many_sections_check.h.
15278         (many_sections_check.h): New target.
15279         (check_PROGRAMS): Add many_sections_r_test.
15280         (many_sections_r_test_SOURCES): Define.
15281         (many_sections_r_test_DEPENDENCIES): Define.
15282         (many_sections_r_test_LDFLAGS): Define.
15283         (many_sections_r_test_LDADD): Define.
15284         (many_sections_r_test.o): New target.
15285         * testsuite/Makefile.in: Rebuild.
15286
15287 2008-04-17  Cary Coutant  <ccoutant@google.com>
15288
15289         * errors.cc (Errors::info): New function.
15290         (gold_info): New function.
15291         * errors.h (Errors::info): New function.
15292         * gold.h (gold_info): New function.
15293         * object.cc (Input_objects::add_object): Print trace output.
15294         * options.cc (options::parse_set): New function.
15295         (General_options::parse_wrap): Deleted.
15296         (General_options::General_options): Deleted initializer.
15297         * options.h (options::String_set): New typedef.
15298         (options::parse_set): New function.
15299         (DEFINE_set): New macro.
15300         (General_options::wrap): Changed to use DEFINE_set. Changed
15301         callers of any_wrap_symbols and is_wrap_symbol.
15302         (General_options::trace, General_options::trace_symbol):
15303         New options.
15304         (General_options::any_wrap_symbols, General_options::is_wrap_symbol)
15305         (General_options::wrap_symbols_): Deleted.
15306         * symtab.cc (Symbol_table::add_from_object): Print trace output.
15307
15308 2008-04-17  David S. Miller  <davem@davemloft.net>
15309
15310         * options.cc (General_options::parse_V): New function.
15311         * options.h: Add entries for -V and -Qy.
15312
15313 2008-04-17  Ian Lance Taylor  <iant@google.com>
15314
15315         * common.cc (Symbol_table::allocate_commons): Remove options
15316         parameter.  Change caller.
15317         (Symbol_table::do_allocate_commons): Remove options parameter.
15318         Change caller.  Just call do_allocate_commons_list twice.
15319         (Symbol_table::do_allocate_commons_list): New function, broken out
15320         of do_allocate_commons.
15321         * common.h (class Allocate_commons_task): Remove options_ field.
15322         Update constructor.
15323         * symtab.cc (Symbol_table::Symbol_table): Initialize
15324         tls_commons_.
15325         (Symbol_table::add_from_object): Put TLS common symbols on
15326         tls_commons_ list.
15327         (Symbol_table::sized_finalize_symbol): Handle STT_TLS symbols
15328         which are IN_OUTPUT_DATA.
15329         * symtab.h (class Symbol_table): Add tls_commons_ field.  Update
15330         allocate_commons and do_allocate_commons declarations.  Declare
15331         do_allocate_commons_list.
15332         * gold.cc (queue_middle_tasks): Update creation of
15333         Allocate_commons_task to not pass options.
15334         * testsuite/Makefile.am (INCLUDES): Add -I.. .
15335         (TLS_TEST_C_FLAGS): New variable.
15336         (tls_test_c_pic.o): New target.
15337         (tls_test_shared.so): Link in tls_test_c_pic.o.
15338         (tls_test_c_pic_ie.o): New target.
15339         (tls_test_ie_shared.so): Link in tls_test_c_pic_ie.o.
15340         (tls_test_DEPENDENCIES, tls_test_LDADD): Add tls_test_c.o.
15341         (tls_test_c.o): New target.
15342         (tls_pic_test_DEPENDENCIES): Add tls_test_c_pic.o.
15343         (tls_pic_test_LDADD): Likewise.
15344         (tls_shared_gd_to_ie_test_DEPENDENCIES): Add tls_test_c_pic.o.
15345         (tls_shared_gd_to_ie_test_LDADD): Likewise.
15346         (tls_test_c_gnu2.o): New target.
15347         (tls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): Add
15348         tls_test_c_gnu2.o.
15349         (tls_shared_gnu2_gd_to_ie_test_LDADD): Likewise.
15350         (tls_test_gnu2_shared.so): Link in tls_test_c_gnu2.o.
15351         (tls_test_shared_nonpic.so): Link in tls_test_c.o.
15352         * testsuite/tls_test.cc: Include "config.h".
15353         (t_last): Call t11_last.
15354         * testsuite/tls_test.h (t11, t11_last): Declare.
15355         * testsuite/tls_test_c.c: New file.
15356         * testsuite/tls_test_main.cc (thread_routine): Call t11.
15357         * configure.ac: Check for OpenMP support.
15358         * configure, config.in, Makefile.in: Rebuild.
15359         * testsuite/Makefile.in: Rebuild.
15360
15361 2008-04-16  Cary Coutant  <ccoutant@google.com>
15362
15363         * i386.cc (Target_i386::define_tls_base_symbol): New function.
15364         (Target_i386::tls_base_symbol_defined_): New field.
15365         (Target_i386::Scan::local): Define _TLS_MODULE_BASE_ symbol.
15366         (Target_i386::Scan::global): Likewise.
15367         * symtab.cc (sized_finalize_symbol): Add check for TLS symbol.
15368         * x86_64.cc (Target_x86_64::define_tls_base_symbol): New function.
15369         (Target_x86_64::tls_base_symbol_defined_): New field.
15370         (Target_x86_64::Scan::local): Define _TLS_MODULE_BASE_ symbol.
15371         (Target_x86_64::Scan::global): Likewise.
15372
15373 2008-04-16  Cary Coutant  <ccoutant@google.com>
15374
15375         * symtab.h (Symbol::is_strong_undefined): Removed unused function.
15376         (Symbol::needs_plt_entry): Allow weak undefined symbols.
15377         (Symbol::needs_dynamic_reloc): Allow weak undefined symbols when
15378         building shared libraries.
15379         * testsuite/Makefile.am (weak_undef_nonpic_test): New target.
15380         (weak_undef_file1_nonpic.o, weak_undef_file2_nonpic.o)
15381         (weak_undef_lib_nonpic.so, alt/weak_undef_lib_nonpic.so): New targets.
15382         * testsuite/Makefile.in: Rebuild.
15383         * testsuite/weak_undef.h: New file.
15384         * testsuite/weak_undef_file1.cc: Add extra test cases.
15385         * testsuite/weak_undef_file2.cc: Likewise.
15386         * testsuite/weak_undef_test.cc: Likewise.
15387
15388 2008-04-16  David S. Miller  <davem@davemloft.net>
15389
15390         * sparc.cc (Target_sparc::Scan): Change from struct to class.
15391         Add issued_non_pic_error_ field.  Declare check_non_pic.
15392         (Target_sparc::Scan::check_non_pic): New function.
15393         (Target_sparc::Scan::local): Call check_non_pic as appropriate.
15394         (Target_sparc::Scan::global): Likewise.
15395
15396         * configure.ac (FN_PTRS_IN_SO_WITHOUT_PIC): Add sparc64.
15397         * configure: Rebuild.
15398
15399         * options.h (DEFINE_enable): New macro.
15400         (new_dtags): New enable option.
15401         (initfirst, interpose, loadfltr, nodefaultlib,
15402         nodelete, nodlopen, nodump): New -z options.
15403         * layout.cc (Layout:finish_dynamic_section): If new
15404         dtags enabled, emit DT_RUNPATH.  Also, emit a
15405         DT_FLAGS_1 containing any specified -z flags.
15406
15407 2008-04-16  Ian Lance Taylor  <iant@google.com>
15408
15409         * copy-relocs.cc: New file.
15410         * copy-relocs.h: New file.
15411         * reloc.cc: Remove Copy_relocs code.
15412         * reloc.h: Likewise.
15413         * reloc-types.h (struct Reloc_types) [both versions]: Add
15414         get_reloc_addend_noerror.
15415         * output.h (class Output_data_reloc<elfcpp::SHT_REL>): Add
15416         variants of add_global which take an addend which must be zero.
15417         * i386.cc: Include "copy-relocs.h".
15418         (class Target_i386): Change type of copy_relocs_ to variable,
15419         update initializer.
15420         (Target_i386::copy_reloc): Rewrite to pass to Copy_relocs class.
15421         Change all callers.
15422         (Target_i386::do_finalize_sections): Change handling of
15423         copy_relocs_.
15424         * sparc.cc: Include "copy-relocs.h".
15425         (class Target_sparc): Change type of copy_relocs_ to variable,
15426         update initializer.
15427         (Target_sparc::copy_reloc): Rewrite to pass to Copy_relocs class.
15428         Change all callers.
15429         (Target_sparc::do_finalize_sections): Change handling of
15430         copy_relocs_.
15431         * x86_64.cc: Include "copy-relocs.h".
15432         (class Target_x86_64): Change type of copy_relocs_ to variable,
15433         update initializer.
15434         (Target_x86_64::copy_reloc): Rewrite to pass to Copy_relocs
15435         class.  Change all callers.
15436         (Target_x86_64::do_finalize_sections): Change handling of
15437         copy_relocs_.
15438         * Makefile.am (CCFILES): Add copy-relocs.cc.
15439         (HFILES): Add copy-relocs.h.
15440
15441         * Makefile.in, aclocal.m4, testsuite/Makefile.in: Rebuild.
15442
15443         * testsuite/script_test_4.sh: Permit leading zeroes.
15444
15445 2008-04-15  Ian Lance Taylor  <iant@google.com>
15446
15447         * script-sections.cc (Script_sections::create_segments): Use
15448         header_size_adjustment even when there is enough room for the
15449         headers.
15450         * testsuite/script_test_4.sh: New file.
15451         * testsuite/script_test_4.t: New file.
15452         * testsuite/Makefile.am (check_SCRIPTS): Add script_test_4.sh.
15453         (check_DATA): Add script_test_4.stdout.
15454         (MOSTLYCLEANFILES): Likewise.
15455         (script_test_4): New target.
15456         (script_test_4.stdout): New target.
15457         * testsuite/Makefile.in: Rebuild.
15458
15459         * sparc.cc: Add definitions for Output_data_plt_sparc class
15460         constants.
15461
15462 2008-04-14  David S. Miller  <davem@davemloft.net>
15463
15464         * sparc.cc: New file.
15465         * Makefile.am (TARGETSOURCES): Add sparc.cc
15466         (ALL_TARGETOBJS): Add sparc.$(OBJEXT)
15467         * configure.tgt: Document targ_extra_size and
15468         targ_extra_big_endian.  Add entries for sparc-* and
15469         sparc64-*.
15470         * configure.ac: Handle targ_extra_size and
15471         targ_extra_big_endian.
15472         * Makefile.in: Rebuild.
15473         * configure: Likewise.
15474         * po/POTFILES.in: Likewise.
15475         * po/gold.pot: Likewise.
15476
15477 2008-04-14  Ian Lance Taylor  <iant@google.com>
15478
15479         * layout.cc (Layout::Layout): Initialize sections_are_attached_.
15480         (Layout::get_output_section): Ignore SHF_WRITE and SHF_EXECINSTR
15481         in the name/type/flags to section mapping.  Don't call
15482         allocate_output_section.
15483         (Layout::choose_output_section): Change parameter from adjust_name
15484         to is_input_section.  Don't permit input sections after sections
15485         are attached to segments.  Don't call allocate_output_section.
15486         (Layout::layout_eh_frame): Call update_flags_for_input_section,
15487         not write_enable_output_section.
15488         (Layout::make_output_section): Don't push to
15489         unattached_section_list_ nor call attach_to_segment.  Call
15490         attach_section_to_segment if sections are attached.
15491         (Layout::attach_sections_to_segments): New function.
15492         (Layout::attach_section_to_segment): New function.
15493         (Layout::attach_allocated_section_to_segment): Rename from
15494         attach_to_segment.  Remove flags parameter.
15495         (Layout::allocate_output_section): Remove function.
15496         (Layout::write_enable_output_section): Remove function.
15497         * layout.h (class Layout): Update for above changes.  Add new
15498         field sections_are_attached_.
15499         * output.h (Output_section::update_flags_for_input_section): New
15500         function.
15501         * output.cc (Output_section::add_input_section): Call
15502         update_flags_for_input_section.
15503         * gold.cc (queue_middle_tasks): Call attach_sections_to_segments.
15504
15505 2008-04-11  Cary Coutant  <ccoutant@google.com>
15506
15507         * i386.cc (Target_i386::got_mod_index_entry): Restore code previously
15508         thought unnecessary.
15509         * x86_64.cc (Target_x86_64::got_mod_index_entry): Likewise.
15510
15511 2008-04-11  Ian Lance Taylor  <iant@google.com>
15512
15513         * output.h (class Output_section_data): Remove inline definition
15514         of set_addralign.
15515         * output.cc (Output_section_data::set_addralign): New function.
15516
15517 2008-04-11  Cary Coutant  <ccoutant@google.com>
15518
15519         Add support for TLS descriptors for i386 and x86_64.
15520         * i386.cc (Target_i386::Relocate::tls_desc_gd_to_ie): New function.
15521         (Target_i386::Relocate::tls_desc_gd_to_le): New function.
15522         (Target_i386::Got_type): Add GOT_TYPE_TLS_NOFFSET and
15523         GOT_TYPE_TLS_DESC.
15524         (Target_i386::got_mod_index_entry): Remove unnecessary code.
15525         (Target_i386::Scan::local): Implement R_386_TLS_GOTDESC and
15526         R_386_TLS_DESC_CALL relocations.  Fix problem with initial-exec
15527         relocations.
15528         (Target_i386::Scan::global): Fix problem with GD-to-IE relaxation.
15529         Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations;
15530         Fix problem with initial-exec relocations.
15531         (Target_i386::Relocate::relocate_tls): Likewise.
15532         (Target_i386::Relocate::tls_gd_to_ie): Fix problem with GD-to-IE
15533         relaxation.
15534         * output.cc (Output_data_dynamic::Dynamic_entry::write): Add
15535         support for section-plus-offset dynamic table entries.
15536         * output.h (Output_data_dynamic::add_section_plus_offset): New function.
15537         (Output_data_dynamic::Dynamic_entry): Add support for
15538         section-plus-offset dynamic table entries.
15539         (Output_data_dynamic::Classification): Likewise.
15540         (Output_data_dynamic::classification_): Renamed offset_.
15541         * x86_64.cc (Target_x86_64::Relocate::tls_desc_gd_to_ie): New function.
15542         (Target_x86_64::Relocate::tls_desc_gd_to_le): New function.
15543         (Target_x86_64::make_plt_section): New function.
15544         (Target_x86_64::reserve_tlsdesc_entries): New function.
15545         (Output_data_plt_x86_64::Output_data_plt_x86_64): Add new parameter.
15546         (Output_data_plt_x86_64::reserve_tlsdesc_entry): New function.
15547         (Output_data_plt_x86_64::has_tlsdesc_entry): New function.
15548         (Output_data_plt_x86_64::get_tlsdesc_got_offset): New function.
15549         (Output_data_plt_x86_64::get_tlsdesc_plt_offset): New function.
15550         (Output_data_plt_x86_64::tlsdesc_plt_entry): New field.
15551         (Output_data_plt_x86_64::set_final_data_size): Move out of line;
15552         add extra PLT entry for TLS descriptors.
15553         (Output_data_plt_x86_64::got_): New field.
15554         (Output_data_plt_x86_64::tlsdesc_got_offset_): New field.
15555         (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize new
15556         fields.
15557         (Output_data_plt_x86_64::do_write): Write extra PLT entry for TLS
15558         descriptors.
15559         (Target_x86_64::make_plt_entry): Factor out make_plt_section.
15560         (Target_x86_64::got_mod_index_entry): Remove unnecessary code.
15561         (Target_x86_64::Scan::local): Implement R_386_TLS_GOTDESC and
15562         R_386_TLS_DESC_CALL relocations.
15563         (Target_x86_64::Scan::global): Likewise.
15564         (Target_x86_64::do_finalize_sections): Add dynamic table entries
15565         for TLS descriptors.
15566         (Relocate::relocate_tls): Fix problem with GD-to-IE relaxation.
15567         Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations.
15568         (Target_x86_64::Relocate::tls_gd_to_ie): Fix problem with
15569         GD-to-IE relaxation.
15570         * configure.ac: Export new conditional variables TLS_GNU2_DIALECT
15571         and TLS_DESCRIPTORS.
15572         * Makefile.in: Rebuild.
15573         * configure: Rebuild.
15574         * testsuite/Makefile.am (tls_shared_gd_to_ie_test): New target.
15575         (tls_test_shared2.so): New target.
15576         (tls_shared_gd_to_ie_test_SOURCES): New variable.
15577         (tls_shared_gd_to_ie_test_DEPENDENCIES): New variable.
15578         (tls_shared_gd_to_ie_test_LDFLAGS): New variable.
15579         (tls_shared_gd_to_ie_test_LDADD): New variable.
15580         (tls_shared_gnu2_gd_to_ie_test): New target.
15581         (tls_test_gnu2.o, tls_test_file2_gnu2.o, tls_test_gnu2_shared2.so):
15582         New targets.
15583         (tls_shared_gnu2_gd_to_ie_test_SOURCES): New variable.
15584         (ls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): New variable.
15585         (tls_shared_gnu2_gd_to_ie_test_LDFLAGS): New variable.
15586         (tls_shared_gnu2_gd_to_ie_test_LDADD): New variable.
15587         (tls_shared_gnu2_test): New target.
15588         (tls_test_gnu2_shared.so): New target.
15589         (tls_shared_gnu2_test_SOURCES): New variable.
15590         (tls_shared_gnu2_test_DEPENDENCIES): New variable.
15591         (tls_shared_gnu2_test_LDFLAGS): New variable.
15592         (tls_shared_gnu2_test_LDADD): New variable.
15593         * testsuite/Makefile.in: Rebuild.
15594         * testsuite/Makefile.
15595
15596 2008-04-11  Ian Lance Taylor  <iant@google.com>
15597
15598         * testsuite/Makefile.am (justsyms_2r.o): Add dependency on
15599         justsyms.t.
15600         * testsuite/Makefile.in: Rebuild.
15601
15602         * testsuite/script_test_2a.cc (script_test_string_a): Make 8 bytes
15603         long.
15604         * testsuite/script_test_2.cc (main): Adjust test.
15605
15606 2008-04-11  David S. Miller  <davem@davemloft.net>
15607             Ian Lance Taylor  <iant@google.com>
15608
15609         * options.h (General_options): Add entries for '-Y' and
15610         '-relax'.
15611         * options.cc (General_options:finalize): If -Y was used, add those
15612         entries to the library path instead of the default "/lib" and
15613         "/usr/lib".
15614
15615 2008-04-11  David S. Miller  <davem@davemloft.net>
15616
15617         * testsuite/justsyms.t: Start at 0x100.
15618         * testsuite/justsyms_1.cc: Adjust justsyms_string assertion.
15619         * testsuite/script_test_2b.cc (script_test_string_b): Make 8 bytes
15620         long.
15621         * testsuite/script_test_2.cc: Adjust string and section length
15622         checks.
15623
15624 2008-04-09  Ian Lance Taylor  <iant@google.com>
15625
15626         PR gold/5996
15627         * script-sections.cc (Sections_element::allocate_to_segment): Add
15628         orphan parameter.
15629         (Output_section_definition::allocate_to_segment): Likewise.
15630         (Orphan_output_section::allocate_to_segment): Likewise.
15631         (Script_sections::attach_sections_using_phdrs_clause): Don't
15632         propagate non-PT_LOAD segments to orphan sections.
15633         * testsuite/Makefile.am (script_test_3.stdout): Generate using
15634         readelf rather than objdump.
15635         * testsuite/script_test_3.sh: Adjust accordingly.  Test that
15636         .interp section and PT_INTERP segment are the same size.
15637         * testsuite/Makefile.in: Rebuild.
15638
15639         * symtab.cc (Symbol_table::add_from_dynobj): Only look for weak
15640         aliases for symbols defined in the same object.
15641         * testsuite/Makefile.am (check_PROGRAMS): Add weak_alias_test.
15642         (weak_alias_test_SOURCES): New variable.
15643         (weak_alias_test_DEPENDENCIES): New variable.
15644         (weak_alias_test_LDFLAGS): New variable.
15645         (weak_alias_test_LDADD): New variable.
15646         (weak_alias_test_1_pic.o, weak_alias_test_1.so): New targets.
15647         (weak_alias_test_2_pic.o, weak_alias_test_2.so): New targets.
15648         (weak_alias_test_3.o): New target.
15649         (weak_alias_test_4_pic.o, weak_alias_test_4.so): New targets.
15650         * testsuite/weak_alias_test_main.cc: New file.
15651         * testsuite/weak_alias_test_1.cc: New file.
15652         * testsuite/weak_alias_test_2.cc: New file.
15653         * testsuite/weak_alias_test_3.cc: New file.
15654
15655 2008-04-08  Ian Lance Taylor  <iant@google.com>
15656
15657         * options.h (class General_options): Add --noinhibit-exec option.
15658         * main.cc (main): Check --noinhibit-exec.
15659
15660         * options.h (class General_options): Define --wrap as a special
15661         option.  Add wrap_symbols_ field.
15662         (General_options::any_wrap_symbols): New function.
15663         (General_options::is_wrap_symbol): New function.
15664         * options.cc (General_options::parse_wrap): New function.
15665         (General_options::General_options): Initialize wrap_symbols_.
15666         * symtab.cc (Symbol_table::wrap_symbol): New function.
15667         (Symbol_table::add_from_object): Handle --wrap.
15668         * symtab.h (class Symbol_table): Declare wrap_symbol.
15669         * target.h (Target::wrap_char): New function.
15670         (Target::Target_info): Add wrap_char field.
15671         * i386.cc (Target_i386::i386_info): Initialize wrap_char.
15672         * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
15673         * testsuite/testfile.cc (Target_test::test_target_info):
15674         Likewise.
15675
15676         * errors.cc (Errors::undefined_symbol): Mention symbol version if
15677         there is one.
15678
15679         * layout.h (class Layout): Add added_eh_frame_data_ field.
15680         * layout.cc (Layout::Layout): Initialize new field.
15681         (Layout::layout_eh_frame): Don't add eh_frame_data_ to .eh_frame
15682         output section until we find a section we merged successfully.
15683         * object.cc (Sized_relobj::check_eh_frame_flags): Don't require
15684         that the size be non-zero.
15685
15686         * merge.cc (Object_merge_map::get_output_offset): Remove inline
15687         qualifier.
15688
15689 2008-04-08  Craig Silverstein  <csilvers@google.com>
15690
15691         * configure.ac: Export new conditional variable HAVE_ZLIB.
15692         * testsuite/Makefile.am (flagstest_o_specialfile): Condition
15693         on HAVE_ZLIB.
15694         (flagstest_o_specialfile_and_compress_debug_sections): Likewise.
15695         * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
15696
15697 2008-04-07  Ian Lance Taylor  <iant@google.com>
15698
15699         * version.cc (version_string): Set to "1.5".
15700
15701         * x86_64.cc (Target_x86_64::Scan): Change from struct to class.
15702         Add issued_non_pic_error_ field.  Declare check_non_pic.
15703         (Target_x86_64::Scan::check_non_pic): New function.
15704         (Target_x86_64::Scan::local): Call check_non_pic as appropriate.
15705         (Target_x86_64::Scan::global): Likewise.
15706
15707         * output.cc (Output_reloc<SHT_REL>::local_section_offset): Add
15708         addend parameter.  Change caller.  Handle merge sections.
15709         (Output_reloc<SHT_REL>::symbol_value): Change parameter type from
15710         Address to Addend.  Don't add in the result of
15711         local_section_offset, pass down the addend and use the returned
15712         value.
15713         * output.h (class Output_reloc<SHT_REL>): Add Addend typedef.
15714         Update declarations of local_section_offset and symbol_value.
15715         * testsuite/two_file_test_1.cc (t18): New function.
15716         * testsuite/two_file_test_2.cc (f18): New function.
15717         * testsuite/two_file_test_main.cc (main): Call t18.
15718         * testsuite/two_file_test.h (t18, f18): Declare.
15719
15720         * configure.ac: Don't test for objdump, c++filt, or readelf.
15721         * testsuite/Makefile.am: Remove READELF and OBJDUMP_AND_CPPFILT
15722         conditionals.
15723         (TEST_READELF): New variable.
15724         (TEST_OBJDUMP, TEST_CXXFILT, TEST_STRIP): New variables.
15725         (check_PROGRAMS): Add two_file_strip_test.
15726         (two_file_strip_test): New target.
15727         (check_PROGRAMS): Add two_file_same_shared_strip_test.
15728         (two_file_same_shared_strip_test_SOURCES): New variable.
15729         (two_file_same_shared_strip_test_DEPENDENCIES): New variable.
15730         (two_file_same_shared_strip_test_LDFLAGS): New variable.
15731         (two_file_same_shared_strip_test_LDADD): New variable.
15732         (two_file_shared_strip.so): New target.
15733         (ver_test_2.syms, ver_test_4.syms): Use TEST_READELF.
15734         (ver_test_5.syms, ver_test_7.syms): Likewise.
15735         (ver_matching_test.stdout): Use TEST_OBJDUMP and TEST_CXXFILT.
15736         (strip_test_3.stdout): Use TEST_OBJDUMP.
15737         * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
15738
15739 2008-04-04  Cary Coutant  <ccoutant@google.com>
15740
15741         * symtab.h (Symbol::is_weak_undefined): New function.
15742         (Symbol::is_strong_undefined): New function.
15743         (Symbol::is_absolute): New function.
15744         (Symbol::needs_plt_entry): Exclude weak undefined symbols.
15745         (Symbol::needs_dynamic_reloc): Exclude weak undefined and
15746         absolute symbols.
15747         * testsuite/Makefile.am (check_PROGRAMS): Add weak_undef_test.
15748         (weak_undef_test): New target.
15749         * testsuite/Makefile.in: Rebuild.
15750         * testsuite/weak_undef_file1.cc: New file.
15751         * testsuite/weak_undef_file2.cc: New file.
15752         * testsuite/weak_undef_test.cc: New file.
15753
15754 2008-04-03  Craig Silverstein  <csilvers@google.com>
15755
15756         * compressed_output.h (class Output_compressed_section): Use
15757         unsigned buffer.
15758         * compressed_output.cc (zlib_compress): Use unsigned buffers,
15759         add zlib header.
15760         (zlib_compressed_suffix): Removed.
15761         (Output_compressed_section::set_final_data_size): Use unsigned
15762         buffers.
15763         * testsuite/Makefile.am (flagstest_compress_debug_sections):
15764         Fix linker invocation.
15765         (flagstest_o_specialfile_and_compress_debug_sections):
15766         Likewise.
15767         * testsuite/Makefile.in: Regenerated.
15768
15769 2008-04-02  David S. Miller  <davem@davemloft.net>
15770
15771         *  dwarf_reader.cc (Sized_dwarf_line_info::read_header_prolog,
15772         Sized_dwarf_line_info::process_one_opcode): Use Swap_unaligned.
15773
15774 2008-04-02  Craig Silverstein  <csilvers@google.com>
15775
15776         * TODO: New file.
15777
15778 2008-04-02  Ian Lance Taylor  <iant@google.com>
15779
15780         * fileread.cc (File_read::find_view): Add byteshift and vshifted
15781         parameters.  Update for new key type to views_.  Change all
15782         callers.
15783         (File_read::read): Adjust for byteshift in returned view.
15784         (File_read::add_view): New function, broken out of
15785         find_and_make_view.
15786         (File_read::make_view): New function, broken out of
15787         find_and_make_view.
15788         (File_read::find_or_make_view): Add offset and aligned
15789         parameters.  Rewrite accordingly.  Change all callers.
15790         (File_read::get_view): Add offset and aligned parameters.  Adjust
15791         for byteshift in return value.
15792         (File_read::get_lasting_view): Likewise.
15793         * fileread.h (class File_read): Update declarations.
15794         (class File_read::View): Add byteshift_ field.  Add byteshift to
15795         constructor.  Add byteshift method.
15796         * archive.h (Archive::clear_uncached_views): New function.
15797         (Archive::get_view): Add aligned parameter.  Change all callers.
15798         * object.h (Object::get_view): Add aligned parameter.  Change all
15799         callers.
15800         (Object::get_lasting_view): Likewise.
15801
15802         * fileread.cc (File_read::release): Don't call clear_views if
15803         there are multiple objects.
15804         * fileread.h (File_read::clear_uncached_views): New function.
15805         * archive.cc (Add_archive_symbols::run): Call clear_uncached_views
15806         on the archive.
15807
15808 2008-03-31  Cary Coutant  <ccoutant@google.com>
15809
15810         Add thin archive support.
15811         * archive.cc (Archive::armagt): New const.
15812         (Archive::setup): Remove task parameter and calls to unlock.
15813         (Archive::unlock_nested_archives): New function.
15814         (Archive::read_header): Add nested_off parameter. Change
15815         all callers.
15816         (Archive::interpret_header): Likewise.
15817         (Archive::include_all_members): Change to handle thin
15818         archives.
15819         (Archive::include_member): Likewise.
15820         * archive.h (Archive::Archive): Add new parameters and
15821         initializers.
15822         (Archive::armagt): New const.
15823         (Archive::setup): Remove task parameter.
15824         (Archive::unlock_nested_archives): New function.
15825         (Archive::read_header): Add nested_off parameter.
15826         (Archive::interpret_header): Likewise.
15827         (Archive::Nested_archive_table): New typedef.
15828         (Archive::is_thin_archive_): New field.
15829         (Archive::nested_archives_): New field.
15830         (Archive::options_): New field.
15831         (Archive::dirpath_): New field.
15832         (Archive::task_): New field.
15833         * readsyms.cc (Read_symbols::do_read_symbols): Add check
15834         for thin archives.  Pass additional parameters to
15835         Archive::Archive.  Unlock the archive file after calling
15836         Archive::setup.
15837
15838 2008-03-29  Ian Lance Taylor  <iant@google.com>
15839
15840         * symtab.cc (Symbol_table::do_define_as_constant): Don't force a
15841         version symbol to be local.
15842         * testsuite/ver_test_4.sh: New file.
15843         * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_4.sh.
15844         (check_DATA): Add ver_test_4.syms.
15845         (ver_test_4.syms): New target.
15846         * testsuite/Makefile.in: Rebuild.
15847
15848         * output.cc
15849         (Output_section::Input_section_sort_entry::has_priority): New
15850         function.
15851         (Output_section::Input_section_sort_entry::match_file_name): New
15852         function.
15853         (Output_section::Input_section_sort_entry::match_section_name):
15854         Remove.
15855         (Output_section::Input_section_sort_entry::match_section_name_prefix):
15856         Remove.
15857         (Output_section::Input_section_sort_entry::match_section_file):
15858         Remove.
15859         (Output_section::Input_section_sort_compare::operator()): Rewrite
15860         using new Input_section_sort_entry functions.  Sort crtbegin and
15861         crtend first.  Sort sections with no priority before sections with
15862         a priority.
15863         * testsuite/initpri1.c (d3): Check j != 4.
15864         (cd5): New constructor/destructor function.
15865         (main): Check j != 2.
15866
15867         * symtab.cc (Symbol_table::add_from_object): If we don't use the
15868         new symbol when resolving, don't call set_is_default.
15869         * testsuite/ver_test_7.cc: New file.
15870         * testsuite/ver_test_7.sh: New file.
15871         * testsuite/Makefile.am (ver_test_7.so): New target.
15872         (ver_test_7.o): New target.
15873         (check_SCRIPTS): Add ver_test_7.sh.
15874         (check_DATA): Add ver_test_7.syms.
15875         (ver_test_7.syms): New target.
15876
15877 2008-03-28  Ian Lance Taylor  <iant@google.com>
15878
15879         * layout.cc (Layout::layout): If we see an input section with a
15880         name that needs sorting, set the must_sort flag for the output
15881         section.
15882         (Layout::make_output_section): If the name of the output section
15883         indicates that it might require sorting, set the may_sort flag.
15884         * output.h (Output_section::may_sort_attached_input_sections): New
15885         function.
15886         (Output_section::set_may_sort_attached_input_sections): New
15887         function.
15888         (Output_section::must_sort_attached_input_sections): New
15889         function.
15890         (Output_section::set_must_sort_attached_input_sections): New
15891         function.
15892         (class Output_section): Declare Input_section_sort_entry.  Define
15893         Input_section_sort_compare.  Declare
15894         sort_attached_input_sections.  Add new fields:
15895         may_sort_attached_input_sections_,
15896         must_sort_attached_input_sections_,
15897         attached_input_sections_are_sorted_.
15898         * output.cc (Output_section::Output_section): Initialize new
15899         fields.
15900         (Output_section::add_input_section): Add an entry to
15901         input_sections_ if may_sort or must_sort are true.
15902         (Output_section::set_final_data_size): Call
15903         sort_attached_input_sections if necessary.
15904         (Output_section::Input_section_sort_entry): Define new class.
15905         (Output_section::Input_section_sort_compare::operator()): New
15906         function.
15907         (Output_section::sort_attached_input_sections): New function.
15908         * configure.ac: Check whether the compiler supports constructor
15909         priorities.  Define a CONSTRUCTOR_PRIORITY automake conditional.
15910         * testsuite/initpri1.c: New file.
15911         * testsuite/Makefile.am (check_PROGRAMS): Add initpri1 if
15912         CONSTRUCTOR_PRIORITY.
15913         (initpri1_SOURCES, initpri1_DEPENDENCIES): New variables.
15914         (initpri1_LDFLAGS): New variable.
15915         * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
15916
15917 2008-03-27  Ian Lance Taylor  <iant@google.com>
15918
15919         * common.cc (Sort_commons::operator): Correct sorting algorithm.
15920         * testsuite/common_test_1.c: New file.
15921         * testsuite/Makefile.am (check_PROGRAMS): Add common_test_1.
15922         (common_test_1_SOURCES): New variable.
15923         (common_test_1_DEPENDENCIES): New variable.
15924         (common_test_1_LDFLAGS): New variable.
15925
15926         * symtab.cc (Symbol_table::add_from_object): Handle saw_undefined_
15927         and commons_ correctly when NAME/VERSION does not override
15928         NAME/NULL.
15929         * testsuite/ver_test_6.c: New file.
15930         * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_6
15931         (ver_test_6_SOURCES, ver_test_6_DEPENDENCIES): New variables.
15932         (ver_test_6_LDFLAGS, ver_test_6_LDADD): New variables.
15933
15934 2008-03-26  Ian Lance Taylor  <iant@google.com>
15935
15936         * symtab.cc (Symbol_table::add_from_relobj): Don't set the version
15937         of an undefined symbol from a version script.
15938         * testsuite/Makefile.am (ver_test_5.so): New target.
15939         (ver_test_5.o): New target.
15940         (check_SCRIPTS): Add ver_test_5.sh.
15941         (check_DATA): Add ver_test_5.syms.
15942         (ver_test_5.syms): New target.
15943         * testsuite/ver_test_5.cc: New file.
15944         * testsuite/ver_test_5.script: New file.
15945         * testsuite/ver_test_5.sh: New file.
15946         * Makefile.in, testsuite/Makefile.in: Rebuild.
15947
15948         PR gold/5986
15949         Fix problems building gold with gcc 4.3.0.
15950         * gold.h (TEMPLATE_ATTRIBUTE_PRINTF_4): Define.
15951         (gold_error_at_location, gold_warning_at_location): Use it.
15952         * configure.ac: Check whether we can compile and use a template
15953         function with a printf attribute.
15954         * x86_64.cc (Target_x86_64::do_code_fill): Swap out a 32-bit value
15955         when jumping over bytes.
15956         * object.cc: Instantiate Object::read_section_data.
15957         * debug.h: Include <cstring>
15958         * dwarf_reader.cc: Include <algorithm>
15959         * main.cc: Include <cstring>.
15960         * options.cc: Include <cstring>.
15961         * output.cc: Include <cstring>.
15962         * script.cc: Include <cstring>.
15963         * script.h: Include <string>.
15964         * symtab.cc: Include <cstring> and <algorithm>.
15965         * target-select.cc: Include <cstring>.
15966         * version.cc: Include <string>.
15967         * testsuite/testmain.cc: Include <cstdlib>.
15968         * configure, config.in: Rebuild.
15969
15970 2008-03-25  Ian Lance Taylor  <iant@google.com>
15971
15972         * options.cc: Include "../bfd/bfdver.h".
15973         (options::help): Print bug reporting address.
15974
15975         * version.cc (print_version): Adjust output for current value of
15976         BFD_VERSION_STRING.
15977
15978         * NEWS: New file.
15979
15980         * options.cc (options::help): Print list of supported targets.
15981         * target-select.h: Include <vector>.
15982         (class Target_selector): Make machine_, size_, and is_big_endian_
15983         fields const.  Add bfd_name_ and instantiated_target_ fields.
15984         (Target_selector::Target_selector): Add bfd_name parameter.
15985         (Target_selector::recognize): Make non-virtual, call
15986         do_recognize.
15987         (Target_selector::recognize_by_name): Make non-virtual, call
15988         do_recognize_by_name.
15989         (Target_selector::supported_names): New function.
15990         (Target_selector::bfd_name): New function.
15991         (Target_selector::do_instantiate_target): New pure virtual
15992         function.
15993         (Target_selector::do_recognize): New virtual function.
15994         (Target_selector::do_recognize_by_name): New virtual function.
15995         (Target_selector::instantiate_target): New private function.
15996         (supported_target_names): Declare.
15997         * target-select.cc (Target_selector::Target_selector): Update for
15998         new parameter and fields.
15999         (select_target_by_name): Check that the name matches before
16000         calling recognize_by_name.
16001         (supported_target_names): New function.
16002         * i386.cc (class Target_selector_i386): Update Target_selector
16003         constructor call.  Remove recognize and recognize_by_name.  Add
16004         do_instantiate_target.
16005         * x86_64.cc (class Target_selector_x86_64): Likewise.
16006         * testsuite/testfile.cc (class Target_selector_test): Update for
16007         changes to Target_selector.
16008
16009         * README: Rewrite, with some notes on unsupported features.
16010
16011 2008-03-24  Cary Coutant  <ccoutant@google.com>
16012
16013         * i386.cc (Target_i386::Got_type): New enum declaration.
16014         (Target_i386::Scan::local): Updated callers of Output_data_got
16015         member functions.
16016         (Target_i386::Scan::global): Likewise.
16017         (Target_i386::Relocate::relocate): Likewise.
16018         (Target_i386::Relocate::relocate_tls): Likewise.
16019         * object.h (Got_offset_list): New class.
16020         (Sized_relobj::local_has_got_offset): Added got_type parameter.
16021         (Sized_relobj::local_got_offset): Likewise.
16022         (Sized_relobj::set_local_got_offset): Likewise.
16023         (Sized_relobj::local_has_tls_got_offset): Removed.
16024         (Sized_relobj::local_tls_got_offset): Removed.
16025         (Sized_relobj::set_local_tls_got_offset): Removed.
16026         (Sized_relobj::Local_got_offsets): Changed to store a list of offsets.
16027         * output.cc (Output_data_got::add_global): Added got_type parameter.
16028         (Output_data_got::add_global_with_rel): Likewise.
16029         (Output_data_got::add_global_with_rela): Likewise.
16030         (Output_data_got::add_global_pair_with_rel): New function.
16031         (Output_data_got::add_global_pair_with_rela): New function.
16032         (Output_data_got::add_local): Added got_type parameter.
16033         (Output_data_got::add_local_with_rel): Likewise.
16034         (Output_data_got::add_local_with_rela): Likewise.
16035         (Output_data_got::add_local_pair_with_rel): New function.
16036         (Output_data_got::add_local_pair_with_rela): New function.
16037         (Output_data_got::add_global_tls): Removed.
16038         (Output_data_got::add_global_tls_with_rel): Removed.
16039         (Output_data_got::add_global_tls_with_rela): Removed.
16040         (Output_data_got::add_local_tls): Removed.
16041         (Output_data_got::add_local_tls_with_rel): Removed.
16042         (Output_data_got::add_local_tls_with_rela): Removed.
16043         * output.h (Output_data_got::add_global): Added got_type parameter.
16044         (Output_data_got::add_global_with_rel): Likewise.
16045         (Output_data_got::add_global_with_rela): Likewise.
16046         (Output_data_got::add_global_pair_with_rel): New function.
16047         (Output_data_got::add_global_pair_with_rela): New function.
16048         (Output_data_got::add_local): Added got_type parameter.
16049         (Output_data_got::add_local_with_rel): Likewise.
16050         (Output_data_got::add_local_with_rela): Likewise.
16051         (Output_data_got::add_local_pair_with_rel): New function.
16052         (Output_data_got::add_local_pair_with_rela): New function.
16053         (Output_data_got::add_global_tls): Removed.
16054         (Output_data_got::add_global_tls_with_rel): Removed.
16055         (Output_data_got::add_global_tls_with_rela): Removed.
16056         (Output_data_got::add_local_tls): Removed.
16057         (Output_data_got::add_local_tls_with_rel): Removed.
16058         (Output_data_got::add_local_tls_with_rela): Removed.
16059         * resolve.cc (Symbol::override_base_with_special): Removed
16060         reference to has_got_offset_ field.
16061         * symtab.cc (Symbol::init_fields): Replaced initialization
16062         of got_offset_ with got_offsets_.  Removed initialization
16063         of has_got_offset_
16064         * symtab.h (Symbol::has_got_offset): Aded got_type parameter.
16065         (Symbol::got_offset): Likewise.
16066         (Symbol::set_got_offset): Likewise.
16067         (Symbol::has_tls_got_offset): Removed.
16068         (Symbol::tls_got_offset): Removed.
16069         (Symbol::set_tls_got_offset): Removed.
16070         (Symbol::got_offset_): Removed.
16071         (Symbol::tls_mod_got_offset_): Removed.
16072         (Symbol::tls_pair_got_offset_): Removed.
16073         (Symbol::got_offsets_): New field.
16074         (Symbol::has_got_offset): Removed.
16075         (Symbol::has_tls_mod_got_offset): Removed.
16076         (Symbol::has_tls_pair_got_offset): Removed.
16077         * x86_64.cc (Target_x86_64::Got_type): New enum declaration.
16078         (Target_x86_64::Scan::local): Updated callers of Output_data_got
16079         member functions.
16080         (Target_x86_64::Scan::global): Likewise.
16081         (Target_x86_64::Relocate::relocate): Likewise.
16082         (Target_x86_64::Relocate::relocate_tls): Likewise.
16083
16084 2008-03-25  Ben Elliston  <bje@au.ibm.com>
16085
16086         * yyscript.y: Fix spelling error in comment.
16087
16088 2008-03-24  Ian Lance Taylor  <iant@google.com>
16089
16090         * options.h (class General_options): Define build_id option.
16091         * layout.h (class Layout): Declare write_build_id, create_note,
16092         create_build_id.  Add build_id_note_ member.
16093         * layout.cc: Include <cerrno>, <fcntl.h>, <unistd.h>,
16094         "libiberty.h", "md5.h", "sha1.h".
16095         (Layout::Layout): Initialize eh_frame_data_,
16096         eh_frame_hdr_section_, and build_id_note_.
16097         (Layout::finalize): Call create_build_id.
16098         (Layout::create_note): New function, broken out of
16099         Layout::create_gold_note.
16100         (Layout::create_gold_note): Call create_note.
16101         (Layout::create_build_id): New function.
16102         (Layout::write_build_id): New function.
16103         (Close_task_runner::run): Call write_build_id.
16104
16105         * x86_64.cc: Correct license to GPLv3.
16106
16107 2008-03-23  Ian Lance Taylor  <iant@google.com>
16108
16109         * options.cc: Include "demangle.h".
16110         (parse_optional_string): New function.
16111         (parse_long_option): Handle takes_optional_argument.
16112         (parse_short_option): Update dash_z initializer.  Handle
16113         takes_optional_argument.
16114         (General_options::General_options): Initialize do_demangle_.
16115         (General_options::finalize): Set do_demangle_.  Handle demangling
16116         style.
16117         * options.h (parse_optional_string): Declare.
16118         (struct One_option): Add optional_arg field.  Update constructor.
16119         Update call constructor calls.  Add takes_optional_argument
16120         function.
16121         (DEFINE_var): Add optional_arg__ parameter.  Change all callers.
16122         (DEFINE_optional_string): Define.
16123         (General_options::demangle): Change from DEFINE_bool to
16124         DEFINE_optional_string.
16125         (General_options::no_demangle): New function.
16126         (General_options::do_demangle): New function.
16127         (General_options::set_do_demangle): New function.
16128         (General_options::execstack_status_): Move definition to end of
16129         class definition.
16130         (General_options::static_): Likewise.
16131         (General_options::do_demangle_): New field.
16132         * object.cc (big_endian>::get_symbol_location_info): Call
16133         Options::do_demangle, not Options::demangle.
16134         * symtab.cc (demangle): Likewise.
16135
16136 2008-03-22  Ian Lance Taylor  <iant@google.com>
16137
16138         * gold.h: Include <cstddef> and <sys/types.h>
16139         * options.h: Include <cstring>.
16140
16141 2008-03-21  Ian Lance Taylor  <iant@google.com>
16142
16143         * Added source code to GNU binutils.
16144 \f
16145 Copyright (C) 2008-2014 Free Software Foundation, Inc.
16146
16147 Copying and distribution of this file, with or without modification,
16148 are permitted in any medium without royalty provided the copyright
16149 notice and this notice are preserved.
16150
16151 Local Variables:
16152 mode: change-log
16153 left-margin: 8
16154 fill-column: 74
16155 version-control: never
16156 End: