Add explicit instantiations for Sized_symbol::init_output_data.
[platform/upstream/binutils.git] / gold / ChangeLog
1 2014-03-10  Sasa Stankovic  <Sasa.Stankovic@imgtec.com>
2
3         * symtab.cc (Sized_symbol<32>::init_output_data):
4         Instantiate the template.
5         (Sized_symbol<64>::init_output_data): Likewise.
6
7 2014-03-10  Sasa Stankovic  <Sasa.Stankovic@imgtec.com>
8
9         * symtab.cc (Symbol_table::sized_write_globals): Allow a target to
10         adjust dynamic symbol value.
11         * target.h (Target::adjust_dyn_symbol): New function.
12         (Target::do_adjust_dyn_symbol): New function.
13
14 2014-03-10  Sasa Stankovic  <Sasa.Stankovic@imgtec.com>
15   
16         * output.cc (Output_data_dynamic::Dynamic_entry::write):
17         Get the value of DYNAMIC_CUSTOM dynamic entry.
18         * output.h (Output_data_dynamic::add_custom): New function.
19         (Dynamic_entry::Dynamic_entry): New constructor for DYNAMIC_CUSTOM
20         dynamic entry.
21         (enum Dynamic_entry::Classification): Add DYNAMIC_CUSTOM.
22         * target.h (Target::dynamic_tag_custom_value): New function.
23         (Target::do_dynamic_tag_custom_value): New function.
24
25 2014-03-10  Sasa Stankovic  <Sasa.Stankovic@imgtec.com>
26
27         * symtab.cc (Symbol_table::set_dynsym_indexes): Allow a target to set
28         dynsym indexes.
29         * target.h (Target::has_custom_set_dynsym_indexes): New function.
30         (Target::do_has_custom_set_dynsym_indexes): New function.
31         (Target::set_dynsym_indexes): New function.
32         (Target::do_set_dynsym_indexes): New function.
33
34 2014-03-07  Alan Modra  <amodra@gmail.com>
35
36         * powerpc.cc (Powerpc_relocate_functions::Overflow_check): Add
37         CHECK_UNSIGNED, CHECK_LOW_INSN, CHECK_HIGH_INSN.
38         (Powerpc_relocate_functions::has_overflow_unsigned): New function.
39         (Powerpc_relocate_functions::has_overflow_bitfield,
40         overflowed): Use the above.
41         (Target_powerpc::Relocate::relocate): Correct overflow checking
42         for a number of relocations.  Modify overflow test for 16-bit
43         fields in instructions to signed/unsigned according to whether
44         the field takes a signed or unsigned value.
45
46 2014-03-05  Alan Modra  <amodra@gmail.com>
47
48         Update copyright years.
49
50 2014-03-05  Alan Modra  <amodra@gmail.com>
51
52         * powerpc.cc (Target_powerpc::Scan::local, global): Support
53         R_PPC64_ADDR64_LOCAL.
54         (Target_powerpc::Relocate::relocate): Likewise.
55
56 2014-03-03  Alan Modra  <amodra@gmail.com>
57
58         * dwp.cc (print_version): Update copyright year to current.
59
60 2014-02-10  Alan Modra  <amodra@gmail.com>
61
62         * po/gold.pot: Regenerate.
63
64 2014-02-06  Cary Coutant  <ccoutant@google.com>
65
66         Fix problem where -u is ignored when a weak undef is seen.
67
68         * archive.cc (Library_base::should_include_member): Reorder
69         code to check for -u option if a weak undef has already been seen.
70         * testsuite/Makefile.am (weak_undef_test_2): New test case.
71         * testsuite/Makefile.in: Regenerate.
72         * testsuite/weak_undef_file3.cc: New file.
73         * testsuite/weak_undef_file4.cc: New file.
74         * testsuite/weak_undef_test_2.cc: New file.
75
76 2014-02-05  Cary Coutant  <ccoutant@google.com>
77
78         Fix issues with gold undefined symbol diagnostics.
79
80         PR binutils/15435
81         * errors.cc (Errors::undefined_symbol): Move undef vtable symbol
82         check to here.
83         * target-reloc.h (is_strong_undefined): New function.
84         (relocate_section): Move undef vtable symbol check from here.
85         Check for is_strong_undefined.
86
87 2014-02-05  Cary Coutant  <ccoutant@google.com>
88     
89         Fix problems with the --dynamic-list option.
90
91         PR gold/13577
92         * options.cc (General_options::parse_dynamic_list):
93         Set have_dynamic_list_.
94         (General_options::General_options): Initialize have_dynamic_list_.
95         (General_options::finalize): Turn off -Bsymbolic and
96         -Bsymbolic-functions if --dynamic-list provided.
97         * options.h (General_options::have_dynamic_list): New function.
98         (General_options::have_dynamic_list_): New data member.
99         * symtab.h (Symbol::is_preemptible): Handle --dynamic-list
100         correctly.
101    
102         PR gold/16530
103         * symtab.cc (Symbol_table::add_from_relobj): If symbol is named
104         in --dynamic-list, mark it.
105    
106         * testsuite/Makefile.am (gc_dynamic_list_test.sh): New test case.
107         (dynamic_list_2): New test case.
108         * testsuite/Makefile.in: Regenerate.
109         * testsuite/dynamic_list_2.cc: New file.
110         * testsuite/dynamic_list_2.t: New file.
111         * testsuite/dynamic_list_lib1.cc: New file.
112         * testsuite/dynamic_list_lib2.cc: New file.
113         * testsuite/gc_dynamic_list_test.c: New file.
114         * testsuite/gc_dynamic_list_test.sh: New file.
115         * testsuite/gc_dynamic_list_test.t: New file.
116
117 2014-01-28  Cary Coutant  <ccoutant@google.com>
118
119         Add .gdb_index version 7 support.
120
121         * gold/dwarf_reader.cc: include <utility> (for make_pair).
122         (Dwarf_abbrev_table::do_read_abbrevs): Check for compressed
123         debug sections.
124         (Dwarf_ranges_table::read_ranges_table): Likewise.
125         (Dwarf_pubnames_table::read_section): Check for GNU-style
126         sections, and for compressed debug sections.
127         (Dwarf_pubnames_table::read_header): Compute end address of table.
128         (Dwarf_pubnames_table::next_name): Return flag_byte.  Check
129         for end of list by offset, not by offset == 0.
130         (Dwarf_info_reader::do_read_string_table): Check for compressed
131         debug sections.
132         * gold/dwarf_reader.h (Dwarf_pubnames_table::Dwarf_pubnames_table):
133         Initialize new data members.
134         (Dwarf_pubnames_table::next_name): return flag_byte.
135         (Dwarf_pubnames_table::end_of_table_): New data member.
136         (Dwarf_pubnames_table::is_gnu_style_): New data member.
137         * gold/gdb-index.cc (gdb_index_version): Update to version 7.
138         (Gdb_index_info_reader::read_pubtable): Read flag_byte.
139         (Gdb_index_info_reader::read_pubnames_and_pubtypes): Don't
140         read skeleton type unit DIEs.
141         (Gdb_index::add_symbol): Add flag_byte; adjust all callers.
142         (Gdb_index::do_write): Write flag_byte.
143         * gold/gdb-index.h (Gdb_index::add_symbol): Add flags parameter.
144         (Gdb_index::Cu_vector): Store flags along with cu indexes.
145         * gold/testsuite/gdb_index_test_3.sh: Allow versions 4-7.
146         * gold/testsuite/gdb_index_test_comm.sh: Likewise.
147
148 2014-01-08  H.J. Lu  <hongjiu.lu@intel.com>
149
150         * version.cc (print_version): Update copyright year to 2014.
151
152 2013-12-19  Dimitry Andric  <dimitry@andric.com>
153
154         * stringpool.cc (Stringpool_template::reserve): Add
155         HAVE_UNORDERED_MAP case.
156         * stringpool.cc (Stringpool_template::print_stats): Likewise.
157
158 2013-12-18  Cary Coutant  <ccoutant@google.com>
159
160         * configure.ac: Check for <unordered_set> and <unordered_map>.
161         * config.in: Regenerate.
162         * configure: Regenerate.
163         * system.h: Use <unordered_set> and <unordered_map> if available.
164
165 2013-12-10  Roland McGrath  <mcgrathr@google.com>
166
167         * Makefile.am (install-exec-local): Prefix $(INSTALL_PROGRAM) uses
168         with $(INSTALL_PROGRAM_ENV).
169         * Makefile.in: Regenerate.
170
171 2013-11-22  Cary Coutant  <ccoutant@google.com>
172
173         * configure.ac: Add check for which library is needed for
174         dlopen.
175         * configure: Regenerate.
176
177 2013-11-22  Cary Coutant  <ccoutant@google.com>
178
179         * testsuite/Makefile.am (exception_x86_64_bnd_test): Use in-tree
180         assembler.
181         * testsuite/Makefile.in: Regenerate.
182
183 2013-11-17  H.J. Lu  <hongjiu.lu@intel.com>
184
185         * x86_64.cc (Target_x86_64<size>::Scan::get_reference_flags):
186         Handle R_X86_64_PC32_BND and R_X86_64_PLT32_BND just like
187         R_X86_64_PC32 and R_X86_64_PLT32, respectively.
188         (Target_x86_64<size>::Scan::local): Likewise.
189         (Target_x86_64<size>::Scan::global): Likewise.
190         (Target_x86_64<size>::Relocate::relocate): Likewise.
191         (Target_x86_64<size>::Relocatable_size_for_reloc::get_size_for_reloc):
192         Likewise.
193         (Target_x86_64<size>::Scan::check_non_pic(): Handle
194         R_X86_64_PC32_BND.
195
196         * testsuite/Makefile.am (check_PROGRAMS): Add
197         exception_x86_64_bnd_test.
198         (exception_x86_64_bnd_test_SOURCES): New macro.
199         (exception_x86_64_bnd_test_DEPENDENCIES): Likewise.
200         (exception_x86_64_bnd_test_LDFLAGS): Likewise.
201         (exception_x86_64_bnd_test_LDADD): Likewise.
202         (exception_x86_64_bnd_1.o): New rule.
203         (exception_x86_64_bnd_2.o): Likewise.
204         * testsuite/Makefile.in: Regenerated.
205
206 2013-11-15  Alan Modra  <amodra@gmail.com>
207
208         * powerpc.cc (Target_powerpc::glink_section): Provide non-const
209         accessor.
210         (Target_powerpc::Branch_info::make_stub): Make global entry stubs.
211         Only call ppc64_local_entry_offset for 64-bit.  Restrict
212         symval_for_branch lookup to ELFv1.
213         (Stub_table::add_plt_call_entry): Use unsigned int off.
214         (Output_data_glink::Address, invalid_address): New.
215         (Output_data_glink::add_eh_frame): Move out of line.  Add
216         support for ELFv2.
217         (Output_data_glink::add_global_entry, find_global_entry,
218         global_entry_address): New functions.
219         (Output_data_glink::global_entry_stubs_, end_branch_table_,
220         ge_size): New variables.
221         (Output_data_glink::set_final_data_size): Add global entry
222         stub sizing.
223         (Output_data_glink::do_write): Write global entry stubs.
224         (Target_powerpc::Scan::reloc_needs_plt_for_ifunc): Add target
225         parameter.  Return true for ELFv2.  Adjust callers.
226         (Target_powerpc::Scan::local, global): Restrict opd lookup to
227         ELFv1.  Similarly for ifunc and dynamic relocation processing
228         specific to ELFv1.  Recognize that symbols are defined on
229         their plt entries for ELFv2.
230         (Target_powerpc::symval_for_branch): Assert if called for
231         ELFv2 or ppc32.
232         (Target_powerpc::Relocate::relocate): Use global entry plt
233         stub for symbol value if such exists on ELFv2.
234         (Target_powerpc::Relocate::relocate): Don't call
235         symval_for_branch when ELFv2.  Do adjust for local entry
236         offset when ELFv2.
237         (Target_powerpc::do_dynsym_value): Set symbols to global entry
238         plt stub for ELFv2.
239         (Target_powerpc::do_plt_address_for_global): Similarly.
240
241 2013-11-14  Cary Coutant  <ccoutant@google.com>
242
243         Revert patch -- this did not fix the problem, and there is
244         no race there.
245
246         2013-11-14  Cary Coutant  <ccoutant@google.com>
247
248             PR gold/14860
249             * ehframe.cc (Eh_frame_hdr::Eh_frame_hdr): Initialize lock_.
250             (Ehframe_hdr::set_final_data_size): Allocate a Lock.
251             * ehframe.h (Eh_frame_hdr::record_fde): Hold the lock while
252             updating fde_offsets_.
253             (Eh_frame_hdr::lock_): New data member.
254
255 2013-11-14  Cary Coutant  <ccoutant@google.com>
256
257         * dwp.cc (Dwo_file_entry): New type.
258         (File_list): Use Dwo_file_entry.
259         (Dwo_file::verify): New function.
260         (Dwo_file::verify_dwo_list): New function.
261         (Dwo_file::sized_verify_dwo_list): New function.
262         (Dwo_name_info_reader::visit_compilation_unit): Add dwo_id to file
263         list.
264         (Dwp_options): New enum type.
265         (dwp_options): Add --verify-only.
266         (usage): Likewise.
267         (main): Likewise.
268         * dwp.h (gold_info): Add declaration.
269
270 2013-11-14  Cary Coutant  <ccoutant@google.com>
271
272         PR gold/14860
273         * ehframe.cc (Eh_frame_hdr::Eh_frame_hdr): Initialize lock_.
274         (Ehframe_hdr::set_final_data_size): Allocate a Lock.
275         * ehframe.h (Eh_frame_hdr::record_fde): Hold the lock while
276         updating fde_offsets_.
277         (Eh_frame_hdr::lock_): New data member.
278
279 2013-11-06  Cary Coutant  <ccoutant@google.com>
280
281         PR gold/15758
282         * object.cc (Sized_relobj_file::do_layout): Handle .eh_frame sections
283         before reloc sections.
284
285 2013-11-04  Alan Modra  <amodra@gmail.com>
286
287         * symtab.h (Symbol::Reference_flags): Add FUNC_DESC_ABI.
288         (Symbol::needs_dynamic_reloc): Test new flag.
289         * powerpc.cc (needs_dynamic_reloc, use_plt_offset): Delete.
290         (Target_powerpc::Scan::get_reference_flags): Add target param.
291         Return FUNC_DESC_ABI for 64-bit ELFv1.
292         (Target_powerpc::Branch_info::make_stub): Adjust get_reference_flags
293         call.
294         (Target_powerpc::Scan::global): Use Symbol::needs_dynamic_reloc.
295         (Target_powerpc::Relocate::relocate): Use Symbol::use_plt_offset.
296
297 2013-10-31  Cary Coutant  <ccoutant@google.com>
298
299         Restore support for dwp v2 DWARF package file format.
300
301         * dwarf_reader.cc (Dwarf_info_reader::visit_type_unit): Add
302         tu_length parameter.  Adjust all callers.
303         * dwarf_reader.h (Dwarf_info_reader::visit_type_unit): Likewise.
304         * dwp.cc: Include dwarf.h.
305         (Section_bounds): New struct type.
306         (Unit_set): New struct type.
307         (Dwo_file::Dwo_file): Initialize new data member.
308         (Dwo_file::read_compunit_index, Dwo_file::read_typeunit_index):
309         Combine and rename to...
310         (Dwo_file::read_unit_index): ...this.
311         (Dwo_file::sized_read_compunit_index)
312         (Dwo_file::sized_read_typeunit_index): Combine and rename to...
313         (Dwo_file::sized_read_unit_index): ...this.
314         (Dwo_file::copy_section): Remove section_name, is_str_offsets
315         parameters; add section_id parameter.
316         (Dwo_file::add_cu_set, Dwo_file::add_tu_set): Combine and rename to...
317         (Dwo_file::add_unit_set): ...this.
318         (Dwo_file::shndx_map_): Remove.
319         (Dwo_file::sect_offsets_): New data member.
320         (Dwp_output_file::Dwp_output_file): Initialize new data members.
321         (Dwp_output_file::add_section): Rename to...
322         (Dwp_output_file::add_contribution): ...this.
323         (Dwp_output_file::add_cu_set): Combine parameters into a struct.
324         (Dwp_output_file::add_tu_set): Likewise.
325         (Dwp_output_file::Contribution): New type.
326         (Dwp_output_file::Section::contributions): New data member.
327         (Dwp_output_file::Cu_or_tu_set): Remove.
328         (Dwp_output_file::Section::Section): New ctor.
329         (Dwp_output_file::Dwp_index::Shndx_pool): Remove.
330         (Dwp_output_file::Dwp_index::Section_table): New type.
331         (Dwp_output_file::Dwp_index::Dwp_index): Initialize new data members.
332         (Dwp_output_file::Dwp_index::enter_set): Change type of "set"
333         parameter.
334         (Dwp_output_file::Dwp_index::shndx_pool): Remove.
335         (Dwp_output_file::Dwp_index::shndx_pool_end): Remove.
336         (Dwp_output_file::Dwp_index::section_table): New member function.
337         (Dwp_output_file::Dwp_index::section_table_end): New member function.
338         (Dwp_output_file::Dwp_index::shndx_pool_size): Remove.
339         (Dwp_output_file::Dwp_index::section_table_rows): New member function.
340         (Dwp_output_file::Dwp_index::section_table_cols): New member function.
341         (Dwp_output_file::Dwp_index::shndx_pool_): Remove.
342         (Dwp_output_file::Dwp_index::section_table_): New data member.
343         (Dwp_output_file::Dwp_index::section_mask_): New data member.
344         (Dwp_output_file::add_output_section): New member function.
345         (Dwp_output_file::write_new_section): New member function.
346         (Dwp_output_file::write_contributions): New member function.
347         (Dwp_output_file::section_id_map_): New data member.
348         (class Dwo_id_info_reader): Remove.
349         (class Unit_reader): New class.
350         (get_dwarf_section_name): New function.
351         (Dwo_file::read_executable): Adjust initializations of class data.
352         (Dwo_file::read): Add support for v2 package file format.
353         (Dwo_file::read_unit_index): Likewise.
354         (Dwo_file::sized_read_unit_index): Likewise.
355         (Dwo_file::copy_section): Likewise.
356         (Dwo_file::add_unit_set): Likewise.
357         (Dwp_output_file::add_output_section): Likewise.
358         (Dwp_output_file::add_contribution): Likewise.
359         (Dwp_output_file::Dwp_index::find_or_add): Use row index to check
360         for empty slot.
361         (Dwp_output_file::Dwp_index::enter_set): Add support for v2 package
362         file format.
363         (Dwp_output_file::Dwp_index::grow): Use row index to check for empty
364         slot.
365         (Dwp_output_file::initialize): Remove unused function.
366         (Dwp_output_file::finalize): Add support for v2 package file format.
367         (Dwp_output_file::write_index): Likewise.
368         * gdb-index.cc (Gdb_index_info_reader::visit_type_unit): Adjust
369         function prototype.
370
371 2013-10-31  Cary Coutant  <ccoutant@google.com>
372
373         * configure.ac: Fix check for -fmerge-constants.
374         * configure.ac: Regenerate.
375
376 2013-10-30  Roland McGrath  <mcgrathr@google.com>
377
378         * x86_64.cc (Output_data_plt_x86_64_nacl::first_plt_entry):
379         Correct 9-byte nop sequence to match what the assembler generates.
380
381 2013-10-30  Alan Modra  <amodra@gmail.com>
382
383         * powerpc.cc (Powerpc_relobj::abiversion, set_abiversion,
384         ppc64_local_entry_offset, ppc64_local_entry_offset,
385         do_read_symbols): New functions.
386         (Powerpc_relobj::e_flags_, st_other_): New vars.
387         (Powerpc_relobj::Powerpc_relobj): Call set_abiversion.
388         (Powerpc_dynobj::abiversion, set_abiversion): New functions.
389         (Powerpc_relobj::e_flags_): New var.
390         (Target_powerpc::first_plt_entry_offset, plt_entry_size): Inline
391         and adjust for ELFv2.
392         (Target_powerpc::abiversion, set_abiversion, stk_toc): New functions.
393         (Powerpc_relobj::do_find_special_sections): Check no .opd in ELFv2.
394         (Powerpc_dynobj::do_find_special_sections): Likewise.
395         (Target_powerpc::do_define_standard_symbols): Define ".TOC.".
396         (Target_powerpc::Branch_info::make_stub): Adjust stub destination
397         to ELFv2 local entry.
398         (Target_powerpc::do_relax): No thread safe barriers needed for
399         ELFv2.
400         (Output_data_plt_powerpc::initial_plt_entry_size_,
401         plt_entry_size): Delete.  Replace all uses with
402         first_plt_entry_offset() and plt_entry_size().
403         (Output_data_plt_powerpc::Output_data_plt_powerpc): Remove
404         reserved_size parm.  Update callers.
405         (Output_data_plt_powerpc::entry_count): Update.
406         (Output_data_plt_powerpc::first_plt_entry_offset): Make private
407         and use Target_powerpc::first_plt_entry_offset().
408         (Output_data_plt_powerpc::get_plt_entry_size): Similarly and
409         rename to plt_entry_size.
410         (Output_data_plt_powerpc::add_ifunc_entry,
411         add_local_ifunc_entry): Adjust reloc for ELFv2.
412         (glink_eh_frame_fde_64): Rename to glink_eh_frame_fde_64v1.
413         (glink_eh_frame_fde_64v2): New.
414         (Stub_table::plt_call_size): Support ELFv2 sizing.
415         (Output_data_glink::add_eh_frame): Use the new FDE.
416         (Output_data_glink::set_final_data_size): Adjust for ELFv2 glink.
417         (Stub_table::do_write): Write ELFv2 stubs and glink.
418         (Target_powerpc::Relocate::relocate): Replaces nop after call
419         with ld 2,24(1) and adjust local offset destination for ELFv2.
420
421 2013-10-30  Alan Modra  <amodra@gmail.com>
422
423         * powerpc.cc (Target_powerpc::Scan::check_non_pic): Handle new relocs.
424         (Target_powerpc::Scan::global, local): Likewise.
425         (Target_powerpc::Relocate::relocate): Likewise.  Check for overflow
426         on all ppc64 @h and @ha relocs.
427
428 2013-10-14  Alan Modra  <amodra@gmail.com>
429
430         * output.h (Output_data_got::add_constant): Tidy.
431         (Output_data_got::add_constant_pair): New function.
432         * powerpc.cc (Output_data_got_powerpc): Override all Output_data_got
433         methods used so as to first call reserve_ent().
434
435 2013-10-11  Roland McGrath  <mcgrathr@google.com>
436
437         * powerpc.cc (Output_data_got_powerpc): Remove unused methods
438         add_got_entry and add_got_entry_pair.
439
440         * configure.ac (TLS_GNU2_DIALECT): Use -Werror in test.
441         (HAVE_PUBNAMES): Likewise.
442         * configure: Regenerate.
443
444         * testsuite/Makefile.am: Replace '-T foo' with '-Wl,-T,foo' throughout.
445         * testsuite/Makefile.in: Regenerate.
446
447         * target.h (Target::adjust_elf_header, Target::do_adjust_elf_header):
448         Remove const from declaration.
449         * target.cc (Sized_target::do_adjust_elf_header): Update definition.
450         * sparc.cc (Target_sparc::do_adjust_elf_header): Likewise.
451         * output.h (Output_file_header): Remove const from member target_
452         and corresponding constructor argument.
453         * output.cc (Output_file_header::Output_file_header): Update prototype.
454         (Output_file_header::do_sized_write): Use this->target_ in place
455         of parameters()->target().
456
457         * testsuite/undef_symbol.cc (Foo::get_a): New method.
458
459         * configure.ac (MERGE_CONSTANTS_FLAG): New check.
460         * configure: Regenerate.
461         * Makefile.in: Regenerate.
462         * testsuite/merge_string_literals_1.c: Renamed to have .cc suffix.
463         * testsuite/merge_string_literals_2.c: Likewise.
464         * testsuite/Makefile.am
465         (merge_string_literals_1.o, merge_string_literals_2.o): Update deps.
466         (AM_CFLAGS, AM_CXXFLAGS): Use $(MERGE_CONSTANTS_FLAG) in place of
467         literal -fmerge-constants.
468         * testsuite/Makefile.in: Regenerate.
469
470         * i386.cc (Target_i386): Remove unused member dynbss_.
471         * arm.cc (Target_arm): Likewise.
472         * powerpc.cc (Target_powerpc): Likewise.
473         * sparc.cc (Target_sparc): Likewise.
474         * tilegx.cc (Target_tilegx): Likewise.
475         * x86_64.cc (Target_x86_64): Likewise.
476         * dwarf_reader.h (Dwarf_info_reader): Remove unused members
477         type_signature_, type_offset_.
478         * plugin.h (Plugin_hook): Remove unused member layout_.
479         * readsyms.h (Add_symbols): Remove unused members dirpath_, dirindex_,
480         mapfile_.
481         (Read_member): Remove unused members input_objects_, symtab_,
482         mapfile_, layout_.
483         (Check_library): Remove unused member symtab_.
484         * archive.h (Lib_group): Remove unused member lib_.
485         * archive.cc (Lib_group::Lib_group): Update initializer.
486         * incremental.h (Incremental_binary): Remove unused member target_.
487         (Incremental_script_entry): Removed unused member script_.
488         * layout.h (Write_symbols_task): Remove unused member input_objects_.
489         * icf.h (Icf): Remove unused member num_tracked_relocs.
490
491         * gold-threads.h (Once): Conditionalize member was_run_lock_ on
492         [ENABLE_THREADS && __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4], matching
493         its only use.
494         * gold-threads.cc (Once::Once): Likewise conditionalize initializer.
495
496         * archive.h: Use struct rather than class for forward declaration
497         of Read_symbols_data.
498
499 2013-10-07  Cary Coutant  <ccoutant@google.com>
500
501         PR gold/16010
502         * testsuite/Makefile.am (icf_test): Fix dependencies.
503         (icf_safe_test): Likewise.
504         (icf_safe_so_test): Likewise.
505         (large_symbol_alignment): Add empty _LDADD rule.
506         * testsuite/Makefile.in: Regenerate.
507
508 2013-09-03  Pavel Chupin  <pavel.v.chupin@intel.com>
509
510         PR gold/15927
511         * x86_64.cc (Target_x86_64<size>::Scan::global): Use relative
512         relocation for R_X86_64_32 on x32.
513
514 2013-08-27  Roland McGrath  <mcgrathr@google.com>
515
516         * output.cc (Output_segment::set_section_addresses): Take new
517         Target* argument.  If target->isolate_execinstr() and the segment
518         is executable and starts at a target->abi_pagesize() boundary,
519         pad its end out to a target->abi_pagesize() boundary with code fill.
520         * output.h (Output_segment::set_section_addresses): Update decl.
521         * layout.h (Layout::check_output_data_for_reset_values): Take new
522         argument RELAX_OUTPUTS.
523         (Layout): New member relax_output_list_.
524         (Layout::add_relax_output): New method.
525         * layout.cc (Layout::Layout): Update constructor.
526         (Layout::reset_relax_output): New method.
527         (Layout::clean_up_after_relaxation): Call it.
528         (Layout::prepare_for_relaxation): Update caller.
529         (Layout::set_segment_offsets): Update callers of set_section_addresses.
530         Call reset_relax_output before re-processing segments for
531         isolate_execinstr case.
532         (Layout::write_data): Handle relax_output_list_.
533         (Layout::Relaxation_debug_check::check_output_data_for_reset_values):
534         Take new argument RELAX_OUTPUTS.  Assert it's an empty collection.
535
536 2013-08-23  Yuri Chornoivan  <yurchor@ukr.net>
537
538         PR binutils/15834
539         * object.h: Fix typos.
540
541 2013-08-16  Roland McGrath  <mcgrathr@google.com>
542
543         * i386.cc (Target_i386_nacl::do_code_fill): New virtual function.
544         * x86_64.cc (Target_x86_64_nacl::do_code_fill): New virtual function.
545
546 2013-08-07  Cary Coutant  <ccoutant@google.com>
547
548         Revert support for v2 DWP files:
549
550         2013-03-01  Cary Coutant  <ccoutant@google.com>
551
552             Add dwp support for v2 DWARF package file format.
553             * dwarf_reader.cc (Dwarf_info_reader::visit_type_unit): Add
554             tu_length parameter.  Adjust all callers.
555             * dwarf_reader.h (Dwarf_info_reader::visit_type_unit): Likewise.
556             * dwp.cc: Include dwarf.h.
557             (Section_bounds): New struct type.
558             (Unit_set): New struct type.
559             (Dwo_file::Dwo_file): Initialize new data member.
560             (Dwo_file::read_compunit_index, Dwo_file::read_typeunit_index):
561             Combine and rename to...
562             (Dwo_file::read_unit_index): ...this.
563             (Dwo_file::sized_read_compunit_index)
564             (Dwo_file::sized_read_typeunit_index): Combine and rename to...
565             (Dwo_file::sized_read_unit_index): ...this.
566             (Dwo_file::copy_section): Remove section_name, is_str_offsets
567             parameters; add section_id parameter.
568             (Dwo_file::add_cu_set, Dwo_file::add_tu_set): Combine and rename to...
569             (Dwo_file::add_unit_set): ...this.
570             (Dwo_file::shndx_map_): Remove.
571             (Dwo_file::sect_offsets_): New data member.
572             (Dwp_output_file::Dwp_output_file): Initialize new data members.
573             (Dwp_output_file::add_section): Rename to...
574             (Dwp_output_file::add_contribution): ...this.
575             (Dwp_output_file::add_cu_set): Combine parameters into a struct.
576             (Dwp_output_file::add_tu_set): Likewise.
577             (Dwp_output_file::Contribution): New type.
578             (Dwp_output_file::Section::contributions): New data member.
579             (Dwp_output_file::Cu_or_tu_set): Remove.
580             (Dwp_output_file::Section::Section): New ctor.
581             (Dwp_output_file::Dwp_index::Shndx_pool): Remove.
582             (Dwp_output_file::Dwp_index::Section_table): New type.
583             (Dwp_output_file::Dwp_index::Dwp_index): Initialize new data members.
584             (Dwp_output_file::Dwp_index::enter_set): Change type of "set"
585             parameter.
586             (Dwp_output_file::Dwp_index::shndx_pool): Remove.
587             (Dwp_output_file::Dwp_index::shndx_pool_end): Remove.
588             (Dwp_output_file::Dwp_index::section_table): New member function.
589             (Dwp_output_file::Dwp_index::section_table_end): New member function.
590             (Dwp_output_file::Dwp_index::shndx_pool_size): Remove.
591             (Dwp_output_file::Dwp_index::section_table_rows): New member function.
592             (Dwp_output_file::Dwp_index::section_table_cols): New member function.
593             (Dwp_output_file::Dwp_index::shndx_pool_): Remove.
594             (Dwp_output_file::Dwp_index::section_table_): New data member.
595             (Dwp_output_file::Dwp_index::section_mask_): New data member.
596             (Dwp_output_file::add_output_section): New member function.
597             (Dwp_output_file::write_new_section): New member function.
598             (Dwp_output_file::write_contributions): New member function.
599             (Dwp_output_file::section_id_map_): New data member.
600             (class Dwo_id_info_reader): Remove.
601             (class Unit_reader): New class.
602             (get_dwarf_section_name): New function.
603             (Dwo_file::read_executable): Adjust initializations of class data.
604             (Dwo_file::read): Add support for v2 package file format.
605             (Dwo_file::read_unit_index): Likewise.
606             (Dwo_file::sized_read_unit_index): Likewise.
607             (Dwo_file::copy_section): Likewise.
608             (Dwo_file::add_unit_set): Likewise.
609             (Dwp_output_file::add_output_section): Likewise.
610             (Dwp_output_file::add_contribution): Likewise.
611             (Dwp_output_file::Dwp_index::find_or_add): Use row index to check
612             for empty slot.
613             (Dwp_output_file::Dwp_index::enter_set): Add support for v2 package
614             file format.
615             (Dwp_output_file::Dwp_index::grow): Use row index to check for empty
616             slot.
617             (Dwp_output_file::initialize): Remove unused function.
618             (Dwp_output_file::finalize): Add support for v2 package file format.
619             (Dwp_output_file::write_index): Likewise.
620             * gdb-index.cc (Gdb_index_info_reader::visit_type_unit): Adjust
621             function prototype.
622
623 2013-07-31  Cary Coutant  <ccoutant@google.com>
624
625         * object.cc (Sized_relobj::do_output_section_address): New function.
626         (Sized_relobj): Instantiate explicitly.
627         * object.h (Object::output_section_address): New function.
628         (Object::do_output_section_address): New function.
629         (Sized_relobj::do_output_section_address): New function.
630         * powerpc.cc (Target_powerpc::symval_for_branch): Use it.
631
632 2013-07-30  Cary Coutant  <ccoutant@google.com>
633             Sasa Stankovic  <Sasa.Stankovic@imgtec.com>
634
635         * parameters.cc (Parameters::entry): Return target-specific entry
636         symbol name.
637         * target.h (Target::entry_symbol_name): New function.
638         (Target_info::entry_symbol_name): New data member.
639
640         * arm.cc (Target_arm::arm_info): Add entry_symbol_name.
641         * i386.cc (Target_i386::i386_info): Likewise.
642         (Target_i386_nacl::i386_nacl_info): Likewise.
643         * sparc.cc (Target_sparc::sparc_info): Likewise.
644         * tilegx.cc (Target_tilegx::tilegx_info): Likewise.
645         * x86_64.cc: (Target_x86_64::x86_64_info) Likewise.
646         (Target_x86_64_nacl::x86_64_nacl_info) Likewise.
647         * testsuite/testfile.cc (Target_test::test_target_info): Likewise.
648
649 2013-07-22  Sterling Augustine  <saugustine@google.com>
650
651         * dwarf_reader.cc (Dwarf_pubnames_table::read_section):
652         Convert parameter shndx to local variable. Add parameters symtab
653         and symtab_size.  Scan over section names.  Find relocation
654         section corresponding to current section.  Create and initialize
655         reloc_mapper_ and reloc_type_.
656         (Dwarf_pubnames_table::read_header):  Add assertion.  Change
657         unit_length to off_t.  Initialize member unit_length_.  Fill in field
658         cu_offset_.
659         * dwarf_reader.h (Dwarf_pubnames_table::Dwarf_pubnames_table):
660         Initialize new fields unit_length_ and cu_offset_.
661         (Dwarf_pubnames_table::read_section): Update prototype.
662         (Dwarf_pubnames_table::cu_offset): New member function.
663         (Dwarf_pubnames_table::subsection_size): Likewise.
664         (Dwarf_pubnames_table::cu_offset_, Dwarf_pubnames_table::unit_length):
665         New fields.
666         (Dwarf_info_reader::symtab, Dwarf_info_reader::symtab_size): Make
667         member functions public.
668         * gdb_index.cc (Gdb_index_info_reader::read_pubnames_and_pubtypes):
669         Update comment.  Rework logic.  Move repeated parts to...
670         (Gdb_index_info_reader::read_pubtable): ...here. New function.
671         (Gdb_index::Gdb_index): Initialize new fields, pubnames_table_,
672         pubtypes_table_, and stmt_list_offset.
673         (Gdb_index::map_pubtable_to_dies, Gdb_index::find_pubname_offset,
674         Gdb_index::find_pubtype_offset,
675         Gdb_index::map_pubnames_and_types_to_dies): Define new functions.
676         (Gdb_index::pubnames_read): Update prototype and rework logic.
677         * gdb_index.h (Gdb_index_info_reader, Dwarf_pubnames_table):
678         Forward declare.
679         (Gdb_index::map_pubtable_to_dies, Gdb_index::find_pubname_offset,
680         Gdb_index::find_pubtype_offset, Gdb_index::pubnames_table)
681         Gdb_index::pubtypes_table, Gdb_index::map_pubnames_and_types_to_dies,
682         Gdb_index::map_pubtable_to_dies):
683         Declare functions.
684         (Gdb_index::pubnames_read): Update declaration.
685         (Gdb_index::Pubname_offset_map): New type.
686         (Gdb_index::cu_pubname_map_, Gdb_index::cu_pubtype_map_,
687         Gdb_index::pubnames_table_, Gdb_index::pubtypes_table_,
688         Gdb_index::stmt_list_offset): Declare.
689         (Gdb_index::pubnames_shndx_, Gdb_index::pubnames_offet_,
690         Gdb_index::pubtypes_object_, Gdb_index::pubtypes_shndx_)
691         Gdb_index::pubtypes_offset_): Remove.
692
693 2013-07-19  Roland McGrath  <mcgrathr@google.com>
694
695         * options.h (General_options): Add -Trodata-segment option.
696         * parameters.cc (Parameters::check_rodata_segment): New function.
697         (Parameters::set_target_once): Call it.
698         * parameters.h (Parameters): Declare it (private member function).
699         * layout.cc (load_seg_unusable_for_headers): New function, broken
700         out of Layout::relaxation_loop_body.  If TARGET->isolate_execinstr()
701         then validate rodata segment rather than text segment.
702         (relaxation_loop_body): Call that.
703         (is_text_segment): New function.  Don't admit a non-executable
704         segment if TARGET->isolate_execinstr().
705         (set_segment_offsets): Call it.  Honor -Trodata-segment option.
706
707 2013-07-15  Shawn Landden  <shawnlandden@gmail.com>
708
709         PR gold/15070
710         * fileread.h (File_read::get_view): Clarify comment about ALIGNED.
711         * nacl.h (Sniff_file::View::View): Request aligned view.
712
713 2013-07-11  Cary Coutant  <ccoutant@google.com>
714
715         * powerpc.cc (Target_powerpc::write_branch_lookup_table): Use
716         correct BRLT entry size.
717
718 2013-07-03  Alan Modra  <amodra@gmail.com>
719
720         * powerpc.cc (Target_powerpc::Relocate::relocate): Update self-call
721         comment.
722
723 2013-07-01  Cary Coutant  <ccoutant@google.com>
724
725         * dwarf_reader.cc (Dwarf_ranges_table::read_ranges_table): Save
726         reloc_type_.
727         (Dwarf_ranges_table::read_range_list): Call lookup_reloc.
728         (Dwarf_ranges_table::lookup_reloc): New function.
729         * dwarf_reader.h (Dwarf_ranges_table::Dwarf_ranges_table): Initialize
730         reloc_type_.
731         (Dwarf_ranges_table::lookup_reloc): New function.
732         (Dwarf_ranges_table::reloc_type_): New data member.
733
734 2013-06-27  Jing Yu  <jingyu@google.com>
735
736         PR gold/15662
737         * powerpc.cc (Output_data_brlt_powerpc::reset_brlt_sizes): New
738         function.
739         (Output_data_brlt_powerpc::finalize_brlt_sizes): New function.
740         (Target_powerpc::do_relax): Call the above.
741
742 2013-06-27  Cary Coutant  <ccoutant@google.com>
743
744         * powerpc.cc (Target_powerpc::symval_for_branch): Don't assert
745         on garbage collected .opd section.
746
747 2013-06-27  Alan Modra  <amodra@gmail.com>
748
749         * powerpc.cc (Target_powerpc::do_gc_add_reference): Test dst_shndx
750         is non-zero.
751         (Target_powerpc::do_gc_mark_symbols): Likewise for sym->shndx().
752         (Target_powerpc::do_function_location): Likewise for loc->shndx.
753
754 2013-06-14  Cary Coutant  <ccoutant@google.com>
755
756         * resolve.cc (Symbol::override_base): Don't override st_type
757         from plugin placeholder symbols.
758         (Symbol_table::resolve): Likewise.
759         (Symbol_table::should_override): Don't complain about TLS mismatch
760         if the TO symbol is a plugin placeholder.
761         * testsuite/Makefile.am (plugin_test_tls): New test.
762         * testsuite/Makefile.in: Regenerate.
763         * testsuite/plugin_test_tls.sh: New test script.
764         * testsuite/two_file_test_2_tls.cc: New test source.
765         * testsuite/two_file_test_tls.cc: New test source.
766
767 2013-06-05  Alexander Ivchenko  <alexander.ivchenko@intel.com>
768
769         * layout.cc (Layout::set_segment_offsets): Taking care of the case when
770         the maximum segment alignment is larger than the page size.
771         * testsuite/Makefile.am (large_symbol_alignment): Test that Gold
772         correctly aligns the symbols with large alignemnt.
773         * testsuite/Makefile.in: Regenerate.
774         * testsuite/large_symbol_alignment.cc: New file.
775
776 2013-05-30  Alexander Ivchenko  <alexander.ivchenko@intel.com>
777             Sriraman Tallam  <tmsriram@google.com>
778
779         * options.h (sort_section): New option.
780         * output.h (Input_section_sort_section_prefix_special_ordering_compare):
781         Rename from Input_section_sort_section_name_special_ordering_compare.
782         (Input_section_sort_section_name_compare): New struct.
783         * output.cc (Output_section::Input_section_sort_section_name_compare::
784         operator()): New function.
785         (Output_section::sort_attached_input_sections): Use new sort function
786         for .text if --sort-section=name is specified.
787         * layout.cc (Layout::make_output_section):
788         Add sorting by name when --sort-section=name is specified.
789         * testsuite/Makefile.am (text_section_grouping): Test option
790         --sort-section=name.
791         * testsuite/Makefile.in: Regenerate.
792         * testsuite/section_sorting_name.cc: New file.
793         * testsuite/section_sorting_name.sh: New file.
794
795 2013-05-21  Cary Coutant  <ccoutant@google.com>
796
797         * symtab.h (Symbol::is_cxx_vtable): New function.
798         * target-reloc.h (relocate_section): Check for vtable symbol.
799         * testsuite/Makefile.am (missing_key_func.sh): New test case.
800         * testsuite/Makefile.in: Regenerate.
801         * testsuite/missing_key_func.cc: New test source.
802         * testsuite/missing_key_func.sh: New test script.
803
804 2013-05-21  Cary Coutant  <ccoutant@google.com>
805
806         * object.cc (Sized_relobj_file::get_symbol_location_info): Set
807         type of enclosing symbol.
808         (Relocate_info::location): Check symbol type when describing symbol.
809         * object.h (Symbol_location_info): Remove unused line_number;
810         add enclosing_symbol_type.
811         * testsuite/debug_msg.sh: Adjust expected output.
812
813 2013-05-13  Cary Coutant  <ccoutant@google.com>
814
815         * configure.ac: Export DEFAULT_TARGET.
816         * configure: Regenerate.
817         * Makefile.in: Regenerate.
818         * testsuite/Makefile.am: Add .EXPORT_ALL_VARIABLES.
819         * testsuite/Makefile.in: Regenerate.
820         * testsuite/debug_msg.sh: Delete duplicate tests.
821         Don't check undef_int error message match for powerpc where the
822         source file and line number aren't available.
823
824 2013-05-10  Roland McGrath  <mcgrathr@google.com>
825
826         * options.h (General_options): Add --rosegment-gap option.
827         * options.cc (finalize): --rosegment-gap implies --rosegment.
828         * layout.cc (set_segment_offsets): Let user option override
829         target->rosegment_gap().
830
831 2013-05-10  Roland McGrath  <mcgrathr@google.com>
832
833         * options.h (General_options): Remove leading space from help
834         messages for -nostdlib and --rosegment.
835
836 2013-05-03  Maciej W. Rozycki  <macro@codesourcery.com>
837
838         PR ld/15365
839         * layout.cc (Layout::finalize): Make __ehdr_start STV_HIDDEN.
840
841 2013-05-03  Alan Modra  <amodra@gmail.com>
842
843         * merge.cc (Output_merge_string::do_add_input_section): Correct
844         scan for number of strings.  Rename vars to avoid shadowing.
845         Include missing terminator in input_size_.
846
847 2013-05-01  H.J. Lu  <hongjiu.lu@intel.com>
848
849         * merge.cc (Output_merge_string<Char_type>::do_add_input_section):
850         Restore empty string handling.
851
852 2013-05-01  Cary Coutant  <ccoutant@google.com>
853
854         * stringpool.cc (Stringpool_template::new_key_offset): Fix
855         uninitialized warning.
856
857 2013-04-29  Alexander Ivchenko  <alexander.ivchenko@intel.com>
858
859         * output.cc (Output_section::add_merge_input_section): Allow
860         to merge sections if the alignment is more than character size.
861         * merge.h (Output_merge_string::Output_merge_string): Remove
862         assert.
863         * merge.cc (Output_merge_string<Char_type>::do_add_input_section): Count
864         only not-null strings. Check the alignment of strings.
865         * stringpool.h
866         (Stringpool_template<Stringpool_char>::Stringpool_template): Add
867         alignment as the argument.
868         (Stringpool_template<Stringpool_char>::addralign_): New class member.
869         * stringpool.cc (Stringpool_template<Stringpool_char>::new_key_offset):
870         Align non-zero length strings according to the addralign_.
871         (Stringpool_template<Stringpool_char>::set_string_offsets):
872         Updating offsets according to the given alignment.
873         * testsuite/Makefile.am (text_section_grouping): Test if string
874         literals are getting merged.
875         * testsuite/Makefile.in: Regenerate.
876         * testsuite/merge_string_literals_1.c: New file.
877         * testsuite/merge_string_literals_2.c: Ditto.
878         * testsuite/merge_string_literals.sh: Ditto.
879
880 2013-04-26  Ian Lance Taylor  <iant@google.com>
881
882         * target-reloc.h (relocate_section): If the reloc offset is out of
883         range, pass VIEW as NULL to relocate.relocate.
884         * arm.cc (Target_arm:Relocate::relocate): Check for a NULL view.
885         * i386.cc (Target_i386::Relocate::relocate): Likewise.
886         * powerpc.cc (Target_powerpc::Relocate::relocate): Likewise.
887         * sparc.cc (Target_sparc::Relocate::relocate): Likewise.
888         * tilegx.cc (Target_tilegx::Relocate::relocate): Likewise.
889         * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
890
891 2013-04-26  Geoff Pike  <gpike@chromium.org>
892
893         * gold.cc (queue_final_tasks): invoke layout->queue_build_id_tasks().
894         * layout.cc (Hash_task): New class.
895         (Layout::queue_build_id_tasks): New function.
896         (Layout::write_build_id): Handle single-thread portion of build ID
897         computation.  (In some cases, all of it is single-threaded.)  Replace
898         {sha1,md5}_process_bytes with {sha1,md5}_buffer to get the same
899         functionality in fewer lines of code.
900         * layout.h (Layout::queue_build_id_tasks): New function declaration.
901         * options.h (General_options): make "--build-id" default to tree
902         rather than sha1.  Add two new options related to --build-id=tree:
903         --build-id-chunk-size-for-treehash and
904         --build-id-min-file-size-for-treehash.
905         * Makefile.am: add testing of --build-id=tree and related new options
906         (these tests will be invoked by "make check").
907         * Makefile.in: Regenerate.
908
909 2013-04-25  Alan Modra  <amodra@gmail.com>
910
911         * configure.tgt: Add powerpcle and powerpc64le.
912
913 2013-04-22  Alan Modra  <amodra@gmail.com>
914
915         PR gold/15355
916         * layout.cc (Layout::segment_precedes): Allow more than one
917         segment with the same type and flags.
918
919 2013-04-15  Cary Coutant  <ccoutant@google.com>
920
921         * layout.cc (Layout::set_relocatable_section_offsets): Don't
922         allocate space in file for BSS sections.
923
924 2013-04-15  Cary Coutant  <ccoutant@google.com>
925
926         * script-sections.cc (Orphan_output_section): Reset address
927         to zero after each orphaned section for relocatable links.
928
929 2013-04-15  Cary Coutant  <ccoutant@google.com>
930
931         * symtab.cc (Symbol_table::sized_write_globals): Subtract
932         section starting address for relocatable link.
933         * testsuite/Makefile.am (script_test_11): New test.
934         * testsuite/Makefile.in: Regenerate.
935         * testsuite/script_test_11.c: New source file.
936         * testsuite/script_test_11.t: New linker script.
937
938 2013-04-13  Alan Modra  <amodra@gmail.com>
939
940         * powerpc.cc (Stub_control::can_add_to_stub_group): Don't set
941         owner when sections are not adjacent and exceed group size.
942         (Target_powerpc::group_sections): Handle corner case.
943         (Target_powerpc::Branch_info::make_stub): Handle case where
944         stub table doesn't exist due to branches in non-exec sections.
945         (Target_powerpc::Relocate::relocate): Likewise.
946
947 2013-04-11  Alan Modra  <amodra@gmail.com>
948
949         PR gold/15354
950         * powerpc.cc (Target_powerpc::make_brlt_section): Name section
951         .branch_lt to match bfd ld.  Adjust comments throughout file.
952
953 2013-04-04  Ian Lance Taylor  <iant@google.com>
954
955         GCC PR c++/56840
956         * object.cc (do_layout_deferred_sections): Handle .eh_frame
957         sections before checking whether they are included in the link.
958
959 2013-03-29  Sriraman Tallam  <tmsriram@google.com>
960
961         * archive.cc (Archive::get_elf_object_for_member):  Create the elf
962         object before calling the plugin claim_file handler.  Pass the elf
963         object of the archive to the plugin. Delete the elf object if the
964         plugin claims the file.
965
966 2013-03-21  Alan Modra  <amodra@gmail.com>
967
968         * layout.cc (Layout::set_segment_offsets): Accept writable .text
969         segment when omagic.
970
971 2013-03-21  Alan Modra  <amodra@gmail.com>
972
973         * dwp.cc (Dwp_output_file::add_contribution): Avoid signed/unsigned
974         comparison warning.
975         * layout.cc (Layout::create_dynamic_symtab): Avoid "may be used
976         uninitialized" warning.
977
978 2013-03-20  Alan Modra  <amodra@gmail.com>
979
980         * symtab.h (Symbol::clear_version): New function.
981         * symtab.cc (Symbol_table::set_dynsym_indexes): Don't set object
982         is_needed by weak references.  Clear version for symbols defined
983         in as-needed objects that are not needed.
984
985 2013-03-15  Alan Modra  <amodra@gmail.com>
986
987         * powerpc.cc (Target_powerpc::Scan::reloc_needs_plt_for_ifunc): Make
988         static and public.  Add report_err param.  Return false for data refs.
989         (Target_powerpc::rela_dyn_section): New overloaded function.
990         (Target_powerpc::plt_, iplt_): Elucidate.
991         (Output_data_plt_powerpc::entry_count): Handle current_data_size()==0.
992         (Output_data_plt_powerpc::do_write): Don't write .iplt.
993         (Output_data_plt_powerpc::plt_entry_count): Don't add .iplt entries.
994         (Target_powerpc::Scan::local, global): Adjust reloc_needs_plt_for_ifunc
995         calls.  Put ifunc dynamic relocs in irela_dyn_section.  Only
996         push_branch and make_plt_entry for ifunc syms when
997         reloc_needs_plt_for_ifunc.
998         (Target_powerpc::Relocate::relocate): Don't use plt entry value
999         for ifunc unless reloc_needs_plt_for_ifunc.
1000
1001 2013-03-15  Alan Modra  <amodra@gmail.com>
1002
1003         * gc.h (gc_process_relocs): Don't look through function descriptors.
1004         * icf.cc (get_section_contents): Do so here instead.
1005
1006 2013-03-13  Alan Modra  <amodra@gmail.com>
1007
1008         * powerpc.cc (is_branch_reloc): Forward declare.
1009         (Target_powerpc::do_can_check_for_function_pointers): New predicate.
1010         (Target_powerpc::Scan::local_reloc_may_be_function_pointer): Return
1011         false for 64-bit, true for 32-bit non-branch relocs.
1012         (Target_powerpc::Scan::global_reloc_may_be_function_pointer): Likewise.
1013         * testsuite/Makefile.am (icf_test): Use linker map file instead of
1014         nm output.
1015         (icf_safe_test): Generate linker map file as well as nm output.
1016         (icf_safe_so_test): Likewise.
1017         * testsuite/Makefile.in: Regenerate.
1018         * testsuite/icf_test.sh: Parse linker map file to determine
1019         section folding.
1020         * testsuite/icf_safe_test.sh: Likewise.  Expect folding for PowerPC.
1021         * testsuite/icf_safe_so_test.sh: Likewise.
1022         (X86_32_or_ARM_specific_safe_fold): Merge into..
1023         (arch_specific_safe_fold): ..this.
1024         (X86_64_specific_safe_fold): Delete unused function.
1025
1026 2013-03-12  Alan Modra  <amodra@gmail.com>
1027
1028         * gc.h (gc_process_relocs): Look through function descriptors
1029         to determine shndx, symvalue and addend used by ICF.  Tidy
1030         variable duplication.
1031
1032 2013-03-11  Alan Modra  <amodra@gmail.com>
1033
1034         * gold.cc (queue_middle_tasks): Move detect_odr_violations..
1035         * layout.cc (Layout_task_runner::run): ..to here.
1036         * symtab.h (struct Symbol_location): Extract from..
1037         (class Symbol_table): ..here.
1038         * symtab.cc (Symbol_table::linenos_from_loc): Invoke function_location.
1039         * target.h (class Target): Add function_location and
1040         do_function_location functions.
1041         (class Sized_target): Add do_function_location.
1042         * object.h (class Sized_relobj_file): Move find_shdr..
1043         (class Object): ..to here.
1044         * object.cc: Likewise.  Update to suit.  Instantiate.
1045         (Sized_relobj_file::find_eh_frame): Update find_shdr call.
1046         * powerpc.cc (class Powerpc_dynobj): New.
1047         (Target_powerpc::do_function_location): New function.
1048         (Powerpc_relobj::do_find_special_sections): Update find_shdr call.
1049         (Powerpc_dynobj::do_read_symbols): New function.
1050         (Target_powerpc::do_make_elf_object): Make a Powerpc_dynobj.
1051
1052 2013-03-08  Ian Lance Taylor  <iant@google.com>
1053
1054         * options.cc (General_options::string_to_object_format): Accept
1055         "default".
1056
1057 2013-03-08  Alan Modra  <amodra@gmail.com>
1058
1059         * ehframe.h (Post_fdes) Make it a vector of Post_fde rather than
1060         pointer to Post_fde.
1061         (struct Post_fde): Move definition to here..
1062         * ehframe.cc (struct Post_fde): ..from here.
1063         (Cie::write): Don't alloc Post_fde.
1064         (Eh_frame::do_sized_write): Update.  Don't free Post_fde.
1065
1066 2013-03-07  Alan Modra  <amodra@gmail.com>
1067
1068         * testsuite/discard_locals_relocatable_test.c: Add a powerpc
1069         relocation referencing .LC0.
1070         * testsuite/discard_locals_test.sh: Remove FIXMEs.
1071
1072 2013-03-07  Alan Modra  <amodra@gmail.com>
1073
1074         * testsuite/ifunc-sel.h (ifunc_sel, ifunc_one): Mark
1075         always_inline.  Add assembly for powerpc to avoid GOT.
1076
1077 2013-03-07  Alan Modra  <amodra@gmail.com>
1078
1079         * testsuite/script_test_10.sh: Don't test .bss section
1080         header number.
1081
1082 2013-03-06  Alan Modra  <amodra@gmail.com>
1083
1084         * powerpc.cc (class Powerpc_relobj): Move some member functions.
1085         (Target_powerpc::symval_for_branch):  Add symtab param.  Update
1086         all callers.  Handle folded sections.
1087         (Target_powerpc::do_gc_add_reference): Don't cast dynamic object
1088         to Powerpc_relobj.
1089         (Global_symbol_visitor_opd::operator()): Likewise.
1090
1091 2013-03-04  Alan Modra  <amodra@gmail.com>
1092
1093         * testsuite/Makefile.am (final_layout_script.lds): Add .sbss.
1094         * testsuite/Makefile.in: Regenerate.
1095
1096 2013-03-01  Cary Coutant  <ccoutant@google.com>
1097
1098         Add dwp support for v2 DWARF package file format.
1099         * dwarf_reader.cc (Dwarf_info_reader::visit_type_unit): Add
1100         tu_length parameter.  Adjust all callers.
1101         * dwarf_reader.h (Dwarf_info_reader::visit_type_unit): Likewise.
1102         * dwp.cc: Include dwarf.h.
1103         (Section_bounds): New struct type.
1104         (Unit_set): New struct type.
1105         (Dwo_file::Dwo_file): Initialize new data member.
1106         (Dwo_file::read_compunit_index, Dwo_file::read_typeunit_index):
1107         Combine and rename to...
1108         (Dwo_file::read_unit_index): ...this.
1109         (Dwo_file::sized_read_compunit_index)
1110         (Dwo_file::sized_read_typeunit_index): Combine and rename to...
1111         (Dwo_file::sized_read_unit_index): ...this.
1112         (Dwo_file::copy_section): Remove section_name, is_str_offsets
1113         parameters; add section_id parameter.
1114         (Dwo_file::add_cu_set, Dwo_file::add_tu_set): Combine and rename to...
1115         (Dwo_file::add_unit_set): ...this.
1116         (Dwo_file::shndx_map_): Remove.
1117         (Dwo_file::sect_offsets_): New data member.
1118         (Dwp_output_file::Dwp_output_file): Initialize new data members.
1119         (Dwp_output_file::add_section): Rename to...
1120         (Dwp_output_file::add_contribution): ...this.
1121         (Dwp_output_file::add_cu_set): Combine parameters into a struct.
1122         (Dwp_output_file::add_tu_set): Likewise.
1123         (Dwp_output_file::Contribution): New type.
1124         (Dwp_output_file::Section::contributions): New data member.
1125         (Dwp_output_file::Cu_or_tu_set): Remove.
1126         (Dwp_output_file::Section::Section): New ctor.
1127         (Dwp_output_file::Dwp_index::Shndx_pool): Remove.
1128         (Dwp_output_file::Dwp_index::Section_table): New type.
1129         (Dwp_output_file::Dwp_index::Dwp_index): Initialize new data members.
1130         (Dwp_output_file::Dwp_index::enter_set): Change type of "set"
1131         parameter.
1132         (Dwp_output_file::Dwp_index::shndx_pool): Remove.
1133         (Dwp_output_file::Dwp_index::shndx_pool_end): Remove.
1134         (Dwp_output_file::Dwp_index::section_table): New member function.
1135         (Dwp_output_file::Dwp_index::section_table_end): New member function.
1136         (Dwp_output_file::Dwp_index::shndx_pool_size): Remove.
1137         (Dwp_output_file::Dwp_index::section_table_rows): New member function.
1138         (Dwp_output_file::Dwp_index::section_table_cols): New member function.
1139         (Dwp_output_file::Dwp_index::shndx_pool_): Remove.
1140         (Dwp_output_file::Dwp_index::section_table_): New data member.
1141         (Dwp_output_file::Dwp_index::section_mask_): New data member.
1142         (Dwp_output_file::add_output_section): New member function.
1143         (Dwp_output_file::write_new_section): New member function.
1144         (Dwp_output_file::write_contributions): New member function.
1145         (Dwp_output_file::section_id_map_): New data member.
1146         (class Dwo_id_info_reader): Remove.
1147         (class Unit_reader): New class.
1148         (get_dwarf_section_name): New function.
1149         (Dwo_file::read_executable): Adjust initializations of class data.
1150         (Dwo_file::read): Add support for v2 package file format.
1151         (Dwo_file::read_unit_index): Likewise.
1152         (Dwo_file::sized_read_unit_index): Likewise.
1153         (Dwo_file::copy_section): Likewise.
1154         (Dwo_file::add_unit_set): Likewise.
1155         (Dwp_output_file::add_output_section): Likewise.
1156         (Dwp_output_file::add_contribution): Likewise.
1157         (Dwp_output_file::Dwp_index::find_or_add): Use row index to check
1158         for empty slot.
1159         (Dwp_output_file::Dwp_index::enter_set): Add support for v2 package
1160         file format.
1161         (Dwp_output_file::Dwp_index::grow): Use row index to check for empty
1162         slot.
1163         (Dwp_output_file::initialize): Remove unused function.
1164         (Dwp_output_file::finalize): Add support for v2 package file format.
1165         (Dwp_output_file::write_index): Likewise.
1166         * gdb-index.cc (Gdb_index_info_reader::visit_type_unit): Adjust
1167         function prototype.
1168
1169 2013-03-01  Cary Coutant  <ccoutant@google.com>
1170
1171         * dwarf_reader.cc (Dwarf_info_reader::check_buffer): Move
1172         function into class definition in header file.
1173         (Dwarf_info_reader::warn_corrupt_debug_section): New function.
1174         * dwarf_reader.h (Dwarf_info_reader::warn_corrupt_debug_section):
1175         New function.
1176         (Dwarf_info_reader::check_buffer): Move here from .cc file.
1177
1178 2013-02-28  Alan Modra  <amodra@gmail.com>
1179
1180         * target.h (Target::plt_fde_location, do_plt_fde_location): Declare.
1181         * target.cc (Target::do_plt_fde_location): New function.
1182         * ehframe.h (class FDE): Add post_map field to u_.from_linker,
1183         accessor function, and constructor param.
1184         (struct Post_fde, Post_fdes): Declare.
1185         (Cie::write): Add post_fdes param.
1186         * ehframe.cc (Fde::write): Use plt_fde_location.
1187         (struct Post_fde): Define.
1188         (Cie::write): Stash FDEs added post merge mapping.
1189         (Eh_frame::add_ehframe_for_plt): Assert no new CIEs after mapping.
1190         Adjust Fde constructor call.  Bump final_data_size_ for post map FDEs.
1191         (Eh_frame::do_sized_write): Arrange to write post map FDES after
1192         other FDEs.
1193         * powerpc.cc (Target_powerpc::do_plt_fde_location): New function.
1194         (Target_powerpc::has_glink): New function.
1195         (Target_powerpc::do_relax): Add eh_frame info for stubs.
1196         (struct Eh_cie, eh_frame_cie, glink_eh_frame_fde_64,
1197         glink_eh_frame_fde_32, default_fde): New data.
1198         (Stub_table::eh_frame_added_): New var.
1199         (Stub_table::find_long_branch_entry, stub_address, stub_offset):
1200         Make const.
1201         (Stub_table::add_eh_frame): New function.
1202         (Output_data_glink::add_eh_frame): New function.
1203         (Target_powerpc::make_glink_section): Call add_eh_frame.
1204
1205 2013-02-15  Ian Lance Taylor  <iant@google.com>
1206
1207         * options.h (DEFINE_uint64_alias): Define.
1208         (class General_options): Add -Ttext-segment as an alias for
1209         -Ttext.
1210
1211 2013-02-15  Alan Modra  <amodra@gmail.com>
1212
1213         * powerpc.cc (Stub_table::plt_off): New function, extracted from..
1214         (Stub_table::do_write): ..here, two places.
1215         (Stub_table::plt_call_size): Use it here too.
1216
1217 2013-02-11  Ian Lance Taylor  <iant@google.com>
1218
1219         * descriptors.cc (Descriptors::close_all): New function.
1220         * descriptors.h (class Descriptors): Declare close_all.
1221         (close_all_descriptors): New inline function.
1222         * plugin.cc: Include "descriptors.h".
1223         (Plugin_manager::cleanup): Call close_all_descriptors.
1224
1225 2013-02-06  Alan Modra  <amodra@gmail.com>
1226
1227         * README: Update coding style link.
1228
1229 2013-01-28  Cary Coutant  <ccoutant@google.com>
1230
1231         * dwp.cc (File_list): New typedef.
1232         (Dwo_name_info_reader): New class.
1233         (Dwo_id_info_reader::Dwo_id_info_reader): Remove unused parameters.
1234         (Dwo_id_info_reader::visit_top_die): Remove unused member function.
1235         (Dwo_file::~Dwo_file): Delete input_file_ after obj_.
1236         (Dwo_file::read_executable): New function.
1237         (Dwo_file::read): Move common setup code to ...
1238         (Dwo_file::make_object): ... here.
1239         (dwp_options): Add --exec/-e.
1240         (usage): Likewise.
1241         (main): Likewise.
1242
1243 2013-01-24  Sriraman Tallam  <tmsriram@google.com>
1244
1245         * layout.cc (Layout::layout): Check for option text_reorder.
1246         (Layout::make_output_section): Ditto.
1247         * options.h (text_reorder): New option.
1248         * output.cc (Input_section_sort_compare): Remove special ordering
1249         of section names.
1250         (Output_section::
1251          Input_section_sort_section_name_special_ordering_compare::
1252          operator()): New function.
1253         (Output_section::sort_attached_input_sections): Use new sort function
1254         for .text.
1255         * output.h (Input_section_sort_section_name_special_ordering_compare):
1256         New struct.
1257         * testsuite/Makefile.am (text_section_grouping): Test option
1258         --no-text-reorder
1259         * testsuite/Makefile.in: Regenerate.
1260         * testsuite/text_section_grouping.sh: Check order of functions without
1261         default text reordering.
1262
1263 2013-01-18  Mike Frysinger  <vapier@gentoo.org>
1264
1265         * options.h (General_options): Change default to true for new_dtags.
1266
1267 2013-01-18  Mike Frysinger  <vapier@gentoo.org>
1268
1269         * layout.cc (Layout::finish_dynamic_section): Only add DT_RPATH
1270         when enable_new_dtags is false.  Only add DT_RUNPATH when
1271         enable_new_dtags is true.
1272
1273 2013-01-17  Serge Pavlov  <serge.v.pavlov@gmail.com>
1274
1275         * powerpc.cc (Stub_table::find_plt_call_entry): Make types
1276         used in declaration and definition consistent.
1277         (Target_powerpc::symval_for_branch): Ditto.
1278
1279 2013-01-16  Sriraman Tallam  <tmsriram@google.com>
1280
1281         * testsuite/plugin_final_layout.cc: Fix comment.
1282
1283 2013-01-16  Sriraman Tallam  <tmsriram@google.com>
1284
1285         * layout.cc (Layout::layout): Do not do default sorting for
1286         text sections when section ordering is specified.
1287         (make_output_section): Ditto.
1288         * testsuite/plugin_final_layout.cc: Name the function sections
1289         to catch reordering issues.
1290
1291 2013-01-15  Alan Modra  <amodra@gmail.com>
1292
1293         * powerpc.cc (Target_powerpc::do_relax): Default shared libs to
1294         plt-thread-safe.
1295
1296 2013-01-15  Alan Modra  <amodra@gmail.com>
1297
1298         * testsuite/Makefile.am (final_layout_script.lds): Handle .got section.
1299         * testsuite/Makefile.in: Regenerate.
1300
1301 2013-01-14  Alan Modra  <amodra@gmail.com>
1302
1303         * testsuite/Makefile.am (MOSTLYCLEANFILES): Add various output files.
1304         * testsuite/Makefile.in: Regenerate.
1305
1306 2013-01-11  Pavel Chupin  <pavel.v.chupin@intel.com>
1307
1308         PR bfd/14430
1309         Fix mingw gold build with plugins enabled
1310         * Makefile.am: Replace -ldl with @DLOPEN_LIBS@.
1311         * configure.ac: Export DLOPEN_LIBS and add headers check.
1312         * plugin.cc: Handle non-dlfcn case.
1313         * Makefile.in: Regenerate.
1314         * config.in: Regenerate.
1315         * configure: Regenerate.
1316         * testsuite/Makefile.in: Regenerate.
1317
1318 2013-01-09  Sriraman Tallam  <tmsriram@google.com>
1319
1320         * output.h (sort_attached_input_sections): Change to be public.
1321         * script-sections.cc
1322         (Output_section_definition::set_section_addresses): Sort
1323         attached input sections according to section order before linker
1324         script assigns section addresses.
1325         (Orphan_output_section::set_section_addresses): Sort
1326         attached input sections according to section order before linker
1327         script assigns section addresses.
1328         * Makefile.am (final_layout.sh): Use a simple linker script to
1329         check if section ordering still works.
1330         * Makefile.in: Regenerate.
1331
1332 2013-01-09  Ben Cheng  <bccheng@google.com>
1333
1334         * arm.cc (Target_arm::attributes_accept_div): New function.
1335         (Target_arm::attributes_forbid_div): New function.
1336         (Target_arm::merge_object_attributes): Merge the Tag_DIV_use
1337         attribute using the same new functions as what bfd/elf32_arm.c
1338         does.
1339
1340 2013-01-07  Cary Coutant  <ccoutant@google.com>
1341
1342         PR gold/14993
1343         * output.cc (Output_section::add_input_section): For incremental
1344         updates, don't track input sections that are allocated from patch
1345         space.
1346
1347 2013-01-07  H.J. Lu  <hongjiu.lu@intel.com>
1348             Ian Lance Taylor  <iant@google.com>
1349
1350         PR gold/14897
1351         * configure.ac (--enable-ld): Removed.
1352         (install_as_default): Set to yes only for --enable-gold=default
1353         or --disable-ld.
1354         * configure: Regenerated.
1355
1356 2013-01-07  H.J. Lu  <hongjiu.lu@intel.com>
1357
1358         * options.h (General_options): Add -fuse-ld= for GCC linker
1359         option compatibility.
1360
1361 2013-01-04  Cary Coutant  <ccoutant@google.com>
1362
1363         * configure.ac: Fix typo restoring CXXFLAGS.
1364         * configure: Regenerate.
1365
1366 2013-01-04  Cary Coutant  <ccoutant@google.com>
1367
1368         * testsuite/Makefile.am (CXXLINK_S): New macro.
1369         (debug_msg_so.err, debug_msg_ndebug.err): Use CXXLINK_S.
1370         * testsuite/Makefile.in: Regenerate.
1371
1372 2013-01-02  H.J. Lu  <hongjiu.lu@intel.com>
1373
1374         * version.cc (print_version): Update copyright year to 2013.
1375
1376 2012-12-20  Ian Lance Taylor  <iant@google.com>
1377
1378         * layout.cc (Layout::special_ordering_of_input_section): New
1379         function.
1380         (Layout::layout): If input section requires special ordering, must
1381         sort input sections.
1382         (Layout::make_output_section): May sort .text input sections.
1383         (Layout::is_section_name_prefix_grouped): Remove.
1384         * layout.h (class Layout): Declare
1385         special_ordering_of_input_section.  Don't declare
1386         is_section_name_prefix_grouped.
1387         * output.cc (Output_section::add_input_section): Revert last
1388         change.
1389         (Output_section::Input_section_sort::match_file_name): Don't crash
1390         if called on output section data.
1391         (Output_section::Input_section_sort_compare): Sort based on
1392         special ordering.
1393         (Output_section::Input_section_sort_section_order_index_compare):
1394         Revert last patch.
1395         (Output_section::sort_attached_input_sections): Likewise.
1396
1397 2012-12-18  Sriraman Tallam  <tmsriram@google.com>
1398
1399         * layout.cc (Layout::is_section_name_prefix_grouped): New function.
1400         * layout.h (Layout::is_section_name_prefix_grouped): New function.
1401         * output.cc (Output_section::add_input_section): Check if section
1402         name contains special prefix.  Keep input sections to sort such
1403         sections.
1404         (Output_section::Input_section_sort_section_order_index_compare
1405          ::operator()): Group sections according to prefixes.
1406         (Output_section::sort_attached_input_sections): Add condition to
1407         Input_section_entry constructor call.
1408         * testsuite/Makefile.am (text_section_grouping): New test.
1409         * testsuite/Makefile.in: Regenerate.
1410         * testsuite/text_section_grouping.cc: New file.
1411         * testsuite/text_section_grouping.sh: New file.
1412
1413 2012-12-17  Nick Clifton  <nickc@redhat.com>
1414
1415         * Makefile.am: Add copyright notice.
1416         * NEWS: Likewise.
1417         * README: Likewise.
1418         * configure.ac: Likewise.
1419         * ftruncate.c: Likewise.
1420         * Makefile.in: Regenerate.
1421
1422 2012-12-14  Cary Coutant  <ccoutant@google.com>
1423
1424         * testsuite/Makefile.am (exception_separate_shared_12_test): Add
1425         --no-as-needed flag.
1426         (exception_separate_shared_12_test): Likewise.
1427         (incremental_copy_test): Likewise.
1428         * testsuite/Makefile.in: Regenerate.
1429
1430 2012-12-14  Cary Coutant  <ccoutant@google.com>
1431
1432         * dwp.cc (Dwp_output_file::add_cu_set): Check for duplicate CUs.
1433         (Dwp_output_file::Dwp_index::enter_set): Add assert.
1434
1435 2012-12-12  Alan Modra  <amodra@gmail.com>
1436
1437         * powerpc.cc (class Track_tls): New.
1438         (class Relocate, class Scan): Inherit Track_tls.
1439         (Target_powerpc::Scan::local, global): Track tls optimization
1440         and avoid creating plt entry for __tls_get_addr if all uses
1441         are optimized away.
1442         (Target_powerpc::Relocate::relocate): Update to use Track_tls.
1443
1444 2012-12-12  Alan Modra  <amodra@gmail.com>
1445
1446         * options.h (General_options): Add --toc-sort/--no-toc-sort.
1447         Replace no_toc_optimize with toc_optimize.
1448         * output.h (Output_section::input_sections): Provide non-const variant.
1449         * powerpc.cc (Powerpc_relobj::has_small_toc_reloc_,
1450         set_has_small_toc_reloc, has_small_toc_reloc): New variable and
1451         accessors.
1452         (Target_powerpc::Scan::local, global): Call set_has_small_toc_reloc.
1453         (class Sort_toc_sections): New.
1454         (Target_powerpc::do_finalize_sections): Sort toc sections.
1455         (Target_powerpc::Relocate::relocate): Update toc_optimize test.
1456
1457 2012-12-10  Roland McGrath  <mcgrathr@google.com>
1458
1459         * testsuite/binary_unittest.cc (read_all): New function.
1460         (Sized_binary_test): Use it instead of ::read.
1461         * fileread.cc (do_read): Don't assume pread always reads the whole
1462         amount in a single call.
1463
1464 2012-12-10  Alan Modra  <amodra@gmail.com>
1465
1466         * powerpc.cc (Target_selector_powerpc::Target_selector_powerpc):
1467         Set EM_PPC64 or EM_PPC here.
1468         (Target_selector_powerpc::do_recognize): Delete.
1469
1470 2012-12-10  Alan Modra  <amodra@gmail.com>
1471
1472         * powerpc.cc (Powerpc_relobj::Powerpc_relobj): Init has14_ and
1473         stub_table_.
1474         (Target_powerpc::Branch_info::make_stub): Don't omit addend.
1475
1476 2012-12-07  Roland McGrath  <mcgrathr@google.com>
1477
1478         * testsuite/binary_unittest.cc (Sized_binary_test):
1479         Use open_descriptor rather than ::open.
1480
1481 2012-12-07  Alan Modra  <amodra@gmail.com>
1482
1483         * powerpc.cc (Stub_table::do_write): Delete redundant Address
1484         typedef and invalid_address constant.
1485         (Output_data_glink, Stub_table, Target_powerpc): Explicitly
1486         instantiate constants.
1487
1488 2012-12-06  Roland McGrath  <mcgrathr@google.com>
1489
1490         * configure.ac (HAVE_ZLIB): Use AM_ZLIB instead of AC_SEARCH_LIBS.
1491         Use $ac_cv_header_zlib_h = yes as the condition in AM_CONDITIONAL.
1492         * aclocal.m4: Regenerate.
1493         * configure: Regenerate.
1494         * Makefile.in: Regenerate.
1495         * testsuite/Makefile.in: Regenerate.
1496
1497 2012-12-07  Alan Modra  <amodra@gmail.com>
1498
1499         * options.h (General_options): Add no_toc_optimize.
1500         * powerpc.cc (ok_lo_toc_insn): New function.
1501         (Target_powerpc::Relocate::relocate): Optimize toc access sequences.
1502
1503 2012-12-06  Alan Modra  <amodra@gmail.com>
1504
1505         * options.h (General_options): Add plt_align, plt_static_chain,
1506         plt_thread_safe.  Update stub_group_size help text.
1507         * powerpc.cc (Target_powerpc::plt_thread_safe): New access function
1508         for new plt_thread_safe_ var.
1509         (use_plt_offset): Correct comments.
1510         (Target_powerpc::do_relax): Look for thread creation symbols to
1511         determine default plt_thread_safe value.  Clear plt call stubs
1512         as well as branch stubs each iteration.
1513         (add_2_2_11, add_12_12_11, bnectr_p4, cmpldi_2_0, xor_11_11_11): New
1514         insn constants.
1515         (l, hi, ha, write_insn): Move earlier.
1516         (Stub_table): Delete prev_size, add last_plt_size and last_branch_size.
1517         (Stub_table::clear_stubs): Rename from clear_long_branch_stubs, clear
1518         plt stubs too.
1519         (Stub_table::update_size): Adjust.
1520         (Stub_table::prev_size, set_prev_size): Delete.
1521         (Stub_table::stub_align): Let --plt-align affect result.
1522         (Stub_table::plt_call_size): Calculate sizes for various stubs.
1523         (Stub_table::branch_stub_size): Use last_plt_size in address calc.
1524         (Stub_table::add_plt_call_stub): Pass iterator to plt_call_size.
1525         (Stub_table::do_write): Support more stub variants.
1526
1527 2012-12-04  Alan Modra  <amodra@gmail.com>
1528
1529         * powerpc.cc (Powerpc_relobj::do_scan_relocs): Delete.
1530         (Target_powerpc::do_define_standard_symbols): New function.
1531
1532 2012-12-03  Alan Modra  <amodra@gmail.com>
1533
1534         * output.h: Formatting, whitespace.
1535
1536 2012-12-03  Alan Modra  <amodra@gmail.com>
1537
1538         * layout.h (Layout::get_executable_sections): Declare.
1539         * layout.cc (Layout::get_executable_sections): New function.
1540         * arm.cc (Target_arm::group_sections): Use it.
1541         (Arm_output_section::group_sections): Delete now redundant test.
1542         * output.cc (Output_reloc::Output_reloc): Add is_relative.
1543         param to handle relative relocs.
1544         * output.h (Output_reloc::Output_reloc <absolute reloc>): Likewise.
1545         (Output_data_reloc::add_absolute): Adjust.
1546         (Output_data_reloc::add_relative): New function.
1547         (Output_data::reset_data_size): New function.
1548         (Output_relaxed_input_section::set_relobj, set_shndx): New functions.
1549         (Output_section::set_addralign): New function.
1550         (Output_section::checkpoint_set_addralign): New function.
1551         (Output_section::clear_section_offsets_need_adjustment): New function.
1552         (Output_section::input_sections): Make public.
1553         * powerpc.cc (class Output_data_brlt_powerpc): New.
1554         (class Stub_table, class Stub_control): New.
1555         (Powerpc_relobj::has14_, set_has_14bit_branch, has_14bit_branch,
1556         stub_table_, set_stub_table, stub_table): New vectors and accessor
1557         functions.
1558         (Target_powerpc::do_may_relax, do_relax, push_branch,
1559         new_stub_table, stub_tables, brlt_section, group_sections,
1560         add_branch_lookup_table, find_branch_lookup_table,
1561         write_branch_lookup_table, make_brlt_section): New functions.
1562         (Target_powerpc::struct Sort_sections, class Branch_info): New.
1563         (Target_powerpc::brlt_section_, stub_tables_, branch_lookup_table_,
1564         branch_info_): New vars.
1565         (Target_powerpc::make_plt_entry, make_local_ifunc_plt_entry): Don't
1566         make call stubs here.
1567         (Output_data_glink): Remove all call stub handling from this class.
1568         (Target_powerpc::Scan::local, global): Save interesting branch
1569         relocs and relocs for ifunc.  Adjust calls to plt entry functions.
1570         (Target_powerpc::do_finalize_sections): Only make reg save/restore
1571         functions on final link.
1572         (Target_powerpc::Relocate::relocate): Adjust lookup of call stubs.
1573         Handle long branch destinations too.
1574         (Target_powerpc::do_dynsym_value, do_plt_address_for_global,
1575         do_plt_address_for_local): Adjust lookup of plt call stubs.
1576
1577 2012-11-30  Alan Modra  <amodra@gmail.com>
1578
1579         * powerpc.c (Target_powerpc::Scan::global): Don't emit relative
1580         relocs against protected symbols when building 32-bit shared libs.
1581
1582 2012-11-30  Alan Modra  <amodra@gmail.com>
1583
1584         * powerpc.cc (Target_powerpc::make_plt_section): Add symtab
1585         param.  Call got_section() to make .got.  Update all callers
1586         and their callers and so on.
1587
1588 2012-11-30  Alan Modra  <amodra@gmail.com>
1589
1590         * powerpc.cc (Powerpc_relobj::do_scan_relocs): Make STB_LOCAL
1591         _GLOBAL_OFFSET_TABLE_ rather than STB_WEAK.
1592         (Output_data_got_powerpc::make_header): Update _GLOBAL_OFFSET_TABLE_
1593         value if it already exists.
1594
1595 2012-11-19  H.J. Lu  <hongjiu.lu@intel.com>
1596
1597         PR gold/14858
1598         * x86_64.cc (Relocate::tls_ld_to_le): Support x32.
1599
1600 2012-11-14  Roland McGrath  <mcgrathr@google.com>
1601
1602         * arm.cc (Output_data_plt_arm_nacl::first_plt_entry): Use bic rather
1603         than bfc instruction for data sandboxing.
1604
1605 2012-11-08  Alan Modra  <amodra@gmail.com>
1606
1607         * po/POTFILES.in: Regenerate.
1608
1609 2012-11-05  Alan Modra  <amodra@gmail.com>
1610
1611         * configure.ac: Apply 2012-09-10 change to config.in here.
1612         * configure: Regenerate.
1613
1614 2012-11-05  Alan Modra  <amodra@gmail.com>
1615
1616         * powerpc.cc (Powerpc_relobj): Delete "Offset" typedef.
1617         (struct Opd_ent): Use "Address" rather than "Offset".
1618         (Output_data_got_powerpc::got_base_offset): Return Valtype.
1619         (Target_powerpc::got_section): Make public.
1620         (Target_powerpc::scan_relocs): Move code setting symbols..
1621         (Powerpc_relobj::do_scan_relocs): ..to here, new function.
1622         Create _SDA_BASE_ only when referenced.
1623
1624 2012-11-02  Roland McGrath  <mcgrathr@google.com>
1625
1626         * i386.cc (Target_i386::relocate_relocs): Remove extraneous typename
1627         from last change.
1628
1629 2012-11-01  Roland McGrath  <mcgrathr@google.com>
1630
1631         * target.h (Sized_target::relocate_relocs): Use Elf_Off
1632         for offset_in_output_section parameter.
1633         (Sized_target::relocate_special_relocatable): Likewise.
1634         * arm.cc (Target_arm::relocate_relocs): Likewise.
1635         (Target_arm::relocate_special_relocatable): Likewise.
1636         * i386.cc (Target_i386::relocate_relocs): Likewise.
1637         * powerpc.cc (Target_powerpc::relocate_relocs): Likewise.
1638         * sparc.cc (Target_sparc::relocate_relocs): Likewise.
1639         * target-reloc.h (relocate_relocs): Likewise.
1640         * testsuite/testfile.cc (Target_test): Likewise.
1641         * tilegx.cc (Target_tilegx::relocate_relocs): Likewise.
1642         * x86_64.cc (Target_x86_64::relocate_relocs): Likewise.
1643
1644         * system.h: Move inclusion of <clocale> to after <libintl.h> in
1645         [ENABLE_NLS] section, and separately at top of [!ENABLE_NLS] section.
1646
1647         * descriptors.cc (set_close_on_exec): Add ATTRIBUTE_UNUSED to the
1648         parameter, which is unused in the [!F_SETFD] case.
1649
1650         * dwarf_reader.cc (Sized_elf_reloc_mapper::symbol_section): Cast
1651         SYMNDX to off_t before comparing it to this->data_size().
1652         * output.cc (Output_symtab_xindex::endian_do_write): Likewise.
1653         * incremental.cc (Output_section_incremental_inputs::do_write):
1654         Cast GLOBAL_SYM_COUNT to off_t before comparing it to SYMTAB_SIZE.
1655
1656         * nacl.cc: Include "libiberty.h" for vasprintf declaration.
1657
1658 2012-10-30  Steve McIntyre  <steve.mcintyre@linaro.org>
1659
1660         * gold.cc (Target_arm::do_adjust_elf_header): Add the
1661         hard-float/soft-float ABI flag as appropriate for ET_DYN/ET_EXEC
1662         in EABI_VER5.
1663
1664 2012-10-29  Cary Coutant  <ccoutant@google.com>
1665
1666         * dwp.cc (usage): Add file and exit status parameters;
1667         add --help and --version options.
1668         (print_version): New function.
1669         (main): Add --help and --version options.
1670
1671 2012-10-25  H.J. Lu  <hongjiu.lu@intel.com>
1672
1673         * testsuite/Makefile.am (MOSTLYCLEANFILES): Add
1674         final_layout_sequence.txt.
1675         * testsuite/Makefile.in: Regenerated.
1676
1677 2012-10-25  H.J. Lu  <hongjiu.lu@intel.com>
1678
1679         * testsuite/Makefile.am (COMPILE1): New variable. Renamed from
1680         COMPILE generated by automake.
1681         (LINK1): Likewise.
1682         (CXXCOMPILE1): Likewise.
1683         (CXXLINK1): Likewise.
1684         (COMPILE): Strip out -Wp,-D_FORTIFY_SOURCE= from COMPILE1.
1685         (LINK): Likewise.
1686         (CXXCOMPILE): Likewise.
1687         (CXXLINK): Likewise.
1688         * testsuite/Makefile.in: Regenerated.
1689
1690 2012-10-25  H.J. Lu  <hongjiu.lu@intel.com>
1691
1692         * dwp.cc (Dwo_file::record_target_info): Issue a fatal error
1693         on bad fwrite return.
1694
1695 2012-10-25  H.J. Lu  <hongjiu.lu@intel.com>
1696
1697         * dwp.cc (Dwo_file::remap_str_offset): Use section_offset_type
1698         on val.
1699
1700 2012-10-23  Cary Coutant  <ccoutant@google.com>
1701
1702         * testsuite/Makefile.am (TEST_OBJCOPY): New macro.
1703         * testsuite/Makefile.in: Regenerate.
1704         * testsuite/dwp_test.h: New source file.
1705         * testsuite/dwp_test_1.cc: New source file.
1706         * testsuite/dwp_test_1.s: New source file.
1707         * testsuite/dwp_test_1.sh: New source file.
1708         * testsuite/dwp_test_1b.cc: New source file.
1709         * testsuite/dwp_test_1b.s: New source file.
1710         * testsuite/dwp_test_2.cc: New source file.
1711         * testsuite/dwp_test_2.s: New source file.
1712         * testsuite/dwp_test_2.sh: New source file.
1713         * testsuite/dwp_test_main.cc: New source file.
1714         * testsuite/dwp_test_main.s: New source file.
1715
1716 2012-10-23  Cary Coutant  <ccoutant@google.com>
1717
1718         * dwp.h: New header file.
1719         * dwp.cc: New source file.
1720         * gold.h: Move shared declarations to system.h.
1721         * system.h: New header file.
1722         * Makefile.am: Add dwp.
1723         * Makefile.in: Regenerate.
1724
1725 2012-10-23  Cary Coutant  <ccoutant@google.com>
1726
1727         * dwarf_reader.cc (Dwarf_ranges_table::read_range_list): Call
1728         Dwarf_info_reader::read_from_pointer.
1729         (Dwarf_pubnames_table::read_header): Likewise.
1730         (Dwarf_pubnames_table::next_name): Likewise.
1731         (Dwarf_die::read_attributes): Likewise.
1732         (Dwarf_die::skip_attributes): Likewise.
1733         (Dwarf_info_reader::read_from_pointer): New function template.
1734         * dwarf_reader.h (Dwarf_ranges_table): Add dwinfo_.
1735         (Dwarf_pubnames_table): Likewise.
1736         (Dwarf_info_reader::read_from_pointer): New function template.
1737         * gdb-index.cc (Gdb_index_info_reader): Adjust call to
1738         Dwarf_pubnames_table ctor.
1739
1740 2012-10-23  Cary Coutant  <ccoutant@google.com>
1741
1742         * dwarf_reader.cc (Dwarf_info_reader::do_parse): Use stored
1743         abbrev_shndx.
1744         * dwarf_reader.h (Dwarf_info_reader::Dwarf_info_reader): Initialize
1745         abbrev_shndx_.
1746         (Dwarf_info_reader::set_abbrev_shndx): New method.
1747         (Dwarf_info_reader::abbrev_shndx_): New data member.
1748
1749 2012-10-23  Cary Coutant  <ccoutant@google.com>
1750
1751         * dwarf_reader.cc (make_elf_reloc_mapper): Check size and endianness
1752         from object, not parameters.
1753         (Dwarf_info_reader::parse): Likewise.
1754         * object.h (Relobj::elfsize, Relobj::is_big_endian): New methods.
1755         (Relobj::do_elfsize, Relobj::do_is_big_endian): New methods.
1756         (Sized_relobj::do_elfsize, Sized_relobj::do_is_big_endian): New
1757         methods.
1758
1759 2012-10-23  Cary Coutant  <ccoutant@google.com>
1760
1761         * fileread.cc (Input_file::Input_file): New constructor.
1762         * fileread.h (class Input_file): Add new constructor.
1763
1764 2012-10-18  Alan Modra  <amodra@gmail.com>
1765
1766         PR gold/14727
1767         * object.cc (Relobj::is_section_name_included): Also match
1768         .sdata personality section.
1769
1770 2012-10-18  Alan Modra  <amodra@gmail.com>
1771
1772         * target-reloc.h (class Default_comdat_behavior): New, package up..
1773         (get_comdat_behaviour): ..this.
1774         (relocate_section): Add Relocate_comdat_behavior template arg,
1775         adjust code to suit.
1776         * arm.cc (Target_arm::relocate_section): Adjust to suit.
1777         (Target_arm::scan_reloc_section): Likewise.
1778         * i386.cc (Target_i386::relocate_section): Likewise.
1779         * sparc.cc (Target_sparc::relocate_section): Likewise.
1780         * tilegx.cc (Target_tilegx::relocate_section): Likewise.
1781         * x86_64.cc (Target_x86_64::relocate_section): Likewise.
1782         * powerpc.cc (class Relocate_comdat_behavior): New.
1783         (Target_powerpc::relocate_section): Don't zap opd relocs.  Supply
1784         gold::relocate_section with new template arg.
1785
1786 2012-10-18  Alan Modra  <amodra@gmail.com>
1787
1788         * powerpc.cc (Target_powerpc::Scan::local, global): Always emit
1789         dynamic relocs for GOT_TPREL got entries, without symbol if
1790         resolving locally.
1791         (Target_powerpc::do_gc_add_reference): Don't add for dynamic objects.
1792         (Target_powerpc::scan_relocs): Define _GLOBAL_OFFSET_TABLE_ early.
1793         (Target_powerpc::Relocate:relocate): REL32 reloc may be unaligned.
1794
1795 2012-10-17  Alan Modra  <amodra@gmail.com>
1796
1797         PR gold/14726
1798         * gold.cc (queue_middle_tasks): Call gc_mark_symbol on _init and _fini.
1799
1800 2012-10-16  Sriraman Tallam  <tmsriram@google.com>
1801
1802         * layout.cc (Layout::include_section): Keep sections marked
1803         SHF_EXCLUDE when doing relocatable links.
1804
1805 2012-10-16  Alan Modra  <amodra@gmail.com>
1806
1807         * powerpc.cc (Target_powerpc::define_save_restore_funcs): New func.
1808         (Target_powerpc::do_finalize_sections): Call it.
1809         (Output_data_save_res): New class and supporting functions.
1810         (Target_powerpc::symval_for_branch): Only look up .opd entry for
1811         normal symbols defined in object files.
1812
1813 2012-10-12  Alan Modra  <amodra@gmail.com>
1814
1815         * powerpc.cc (Powerpc_relobj::add_gc_mark, process_gc_mark): New.
1816         (struct Opd_ent): Make "discard" a bit field.  Add "gc_mark".
1817         (Target_powerpc::do_gc_mark_symbol): Delay marking function code
1818         section if scan_opd_relocs not yet called.
1819         (Target_powerpc::gc_process_relocs): Call process_gc_mark.
1820
1821 2012-10-12  Alan Modra  <amodra@gmail.com>
1822
1823         * powerpc.cc (Output_data_plt_powerpc::add_entry, add_ifunc_entry,
1824         add_local_ifunc_entry): Revert last change.
1825         (Target_powerpc::make_plt_entry, make_local_ifunc_plt_entry): Likewise.
1826
1827 2012-10-05  Alan Modra  <amodra@gmail.com>
1828
1829         * powerpc.cc (Target_powerpc::do_plt_address_for_local,
1830         do_plt_address_for_global): New functions.
1831         (Output_data_got_powerpc::do_write): Don't segfault when linking
1832         statically.
1833         (Output_data_plt_powerpc::add_entry, add_ifunc_entry,
1834         add_local_ifunc_entry): Return true on adding entry..
1835         (Target_powerpc::make_plt_entry): ..use to avoid unnecessary
1836         glink->add_entry call.  Remove unused symtab param.  Adjust calls.
1837         (Target_powerpc::make_local_ifunc_plt_entry): Likewise.
1838         (Target_powerpc::make_iplt_section): Remove symtab param.  Don't
1839         set up symbols here.
1840         (Target_powerpc::do_finalize_sections): Instead set up __rela_iplt
1841         syms here.  Do so even when no .iplt.  Don't segfault when linking
1842         statically.
1843         (Output_data_glink::add_entry, find_entry): Rearrange params.  Add
1844         new variants without reloc param.
1845         (Glink_sym_ent::Glink_sym_ent): Likewise.
1846         (Target_powerpc::Scan::reloc_needs_plt_for_ifunc): Accept any
1847         reloc when refs will resolve to plt call stub.
1848         (Target_powerpc::Scan::local): Correct ifunc handling.  Allow
1849         R_PPC_PLTREL24 to resolve locally.
1850         (Target_powerpc::Scan::global): Correct ifunc handling.
1851         (Target_powerpc::Relocate::relocate): Correct local sym glink
1852         lookup.  Don't destroy "value" when we have a plt call stub,
1853         and when checking plt call validity.
1854         (Target_powerpc::do_dynsym_value): Simplify.
1855
1856 2012-10-05  Alan Modra  <amodra@gmail.com>
1857
1858         * i386.cc (Output_data_plt_i386::address_for_global,
1859         address_for_local): Add plt offset to returned value.  Adjust uses.
1860         * sparc.cc (Output_data_plt_sparc::address_for_global,
1861         address_for_local): Likewise.
1862         * tilegx.cc (Output_data_plt_tilegx::address_for_global,
1863         address_for_local): Likewise.
1864         * x86_64.cc (Output_data_plt_x86_64::address_for_global,
1865         address_for_local): Likewise.
1866         * target.h (Target::plt_address_for_global, plt_address_for_local):
1867         Update comment.
1868         * output.cc (Output_reloc::symbol_value): Don't add plt offset here.
1869         (Output_data_got::Got_entry::write): Nor here.
1870         * output.h: Comment fix.
1871
1872 2012-10-02  Jiong Wang  <jiwang@tilera.com>
1873
1874         * tilegx.cc (Target_tilegx::do_finalize_sections): Adjust
1875         global_offset_table_ value for larget got.
1876         (Target_tilegx::Relocate::relocate): Handle adjusted got value.
1877
1878 2012-09-29  Alan Modra  <amodra@gmail.com>
1879
1880         * powerpc.cc (Target_powerpc::iplt_): New output section.
1881         (Target_powerpc::iplt_section, make_iplt_section,
1882         reloc_needs_plt_for_ifunc, make_local_ifunc_plt_entry): New functions.
1883         (Target_powerpc::make_plt_entry): Handle ifunc syms.
1884         Target_powerpc::plt_entry_count): Count iplt entries too.
1885         (Output_data_plt_powerpc::Output_data_plt_powerpc): Don't create
1886         reloc section in constructor.  New params.
1887         (Target_powerpc::make_plt_section): Create reloc section here instead.
1888         (Output_data_plt_powerpc::add_ifunc_entry, add_local_ifunc_entry): New
1889         functions.
1890         (Output_data_plt_powerpc::initial_plt_entry_size_, name_): New vars.
1891         (Output_data_glink::add_entry, find_entry): New functions to
1892         deal with local syms.
1893         (Glink_sym_ent): Add support for local syms.
1894         (Output_data_glink::do_write): Handle ifunc plt entries.
1895         (Target_powerpc::Scan::get_reference_flags): Handle more relocs.
1896         (Target_powerpc::Scan::local, global): Handle ifunc syms.
1897         (Target_powerpc::Relocate::relocate): Likewise.
1898         (Target_powerpc::do_dynsym_value): Use glink stub, not plt entry.
1899
1900 2012-09-25  Alan Modra  <amodra@gmail.com>
1901
1902         * object.h (Sized_relobj_file::adjust_local_symbol,
1903         do_adjust_local_symbol): New functions.
1904         * object.cc (Sized_relobj_file::do_count_local_symbols): Use the above.
1905         * powerpc.cc (Powerpc_relobj::do_adjust_local_symbol): New function.
1906         (Powerpc_relobj::scan_opd_relocs): Warn on unexpected opd relocs
1907         and irregular opd entry spacing.
1908         (Powerpc_relobj::do_read_relocs): Add opd size checks.
1909         (Global_symbol_visitor_opd): New functor.
1910         (Target_powerpc::do_finalize_sections): Omit global symbols defined
1911         on deleted opd entries.
1912
1913 2012-09-15  Jiong Wang  <jiwang@tilera.com>
1914
1915         * tilegx.cc: New file.
1916         * Makefile.am (TARGETSOURCES): Add tilegx.cc
1917         (ALL_TARGETOBJS): Add tilegx.$(OBJEXT)
1918         * configure.tgt: Add entries for tilegx*.
1919         * configure.ac: Likewise.
1920         * Makefile.in: Rebuild.
1921         * configure: Likewise.
1922         * testsuite/icf_safe_test.sh (arch_specific_safe_fold): Handle
1923         tilegx.
1924
1925 2012-09-13  Alan Modra  <amodra@gmail.com>
1926
1927         * target-reloc.h (scan_relocs): Call scan.local for relocs
1928         against symbols in discarded sections.  Pass is_discarded
1929         param.
1930         * arm.cc, * i386.cc, * sparc.cc, * x86_64.cc (Target_*::Scan::local):
1931         Add is_discarded param.
1932         * powerpc (Target_powerpc::Scan::local): Likewise.  Use
1933         is_discarded to flag opd entry as discarded.  Don't emit dyn
1934         relocs on such entries.
1935         (Target_powerpc::Scan::global): Similarly detect and handle
1936         such opd entries.
1937         (Powerpc_relobj): Replace opd_ent_shndx_ and opd_ent_off_ with
1938         opd_ent_.  Update all uses.
1939         (Powerpc_relobj::get_opd_discard, set_opd_discard): New functions.
1940         (Target_powerpc::relocate_section): Zero out discarded opd
1941         entry relocs.
1942
1943 2012-09-12  Ian Lance Taylor  <iant@google.com>
1944
1945         PR gold/14570
1946         * output.cc: Rename Output_data_got template parameter from size
1947         to got_size for all functions.  Compile all variants of
1948         Output_data_got.
1949         (Output_data_got::Got_entry::write): Correct use of size for
1950         symbol value.  Use local_is_tls rather than casting to
1951         Sized_relobj_file.
1952         * object.h (class Object): Add local_is_tls and do_local_is_tls.
1953         (class Sized_relobj_file): Add do_local_is_tls.
1954         * incremental.h (class Sized_relobj_incr): Add do_local_is_tls.
1955
1956 2012-09-11  Alan Modra  <amodra@gmail.com>
1957
1958         PR gold/14566
1959         * layout.cc (Layout::set_segment_offsets): When using
1960         common-page-size alignment, ensure we are on a new max-page-size
1961         page.
1962         * output.cc (Output_segment::set_section_addresses): Use
1963         abi_pagesize, not common_pagesize for relro boundary.
1964         (Output_segment::set_offset): Likewise.
1965
1966 2012-09-11  Alan Modra  <amodra@gmail.com>
1967
1968         * output.h (Output_data_got::add_global_tls, add_local_tls,
1969         add_local_tls_pair): New functions.
1970         (Output_data_got::add_local_pair_with_rel): Remove second
1971         reloc param.  Expand comment.
1972         (Output_data_got::Got_entry): Rename use_plt_offset_ to
1973         use_plt_or_tls_offset_, similarly for constructor param.
1974         (Output_data_got::Got_entry::write): Add got_index param.
1975         * output.cc (Output_data_got::add_global_tls, add_local_tls,
1976         add_local_tls_pair): New functions.
1977         (Output_data_got::Got_entry::write): Handle tls symbols
1978         with use_plt_or_tls_offset_ set specially.
1979         (Output_data_got::add_local_pair_with_rel): Only one reloc.
1980         (Output_data_got::do_write): Replace iterator with index, pass
1981         index to entry write function.
1982         * target.h (Target::tls_offset_for_local, tls_offset_for_global,
1983         do_tls_offset_for_local, do_tls_offset_for_global): New functions.
1984         * arm.cc (Target_arm::Scan::local): Update add_local_pair_with_rel
1985         call.
1986         * i386.cc (Target_i386::Scan::local): Likewise.
1987         * sparc.cc (Target_sparc::Scan::local): Likewise.
1988         * x86_64.cc (Target_x86_64::Scan::local): Likewise.
1989         * powerpc.cc (Target_powerpc::do_tls_offset_for_local,
1990         do_tls_offset_for_global): New functions.
1991         (Target_powerpc::Scan::local): Correct TLS relocations and got
1992         entry values.
1993         (Target_powerpc::Scan::global): Don't emit unnecessary
1994         dynamic relocations on TLS GOT entries.
1995
1996 2012-09-10  Matthias Klose  <doko@ubuntu.com>
1997
1998         * config.in: Disable sanity check for kfreebsd.
1999
2000 2012-09-10  Sterling Augustine  <saugustine@google.com>
2001
2002         * gdb-index.cc (Gdb_index::pubnames_read): New parameter.
2003         (Gdb_index::pubtypes_read): New parameter.
2004         (Gdb_index_info_reader::read_pubnames_and_pubtypes): Add parameters
2005         to calls.
2006         * gdb-index.h (Gdb_index): New fields pubnames_object_ and
2007         pubtypes_object_.
2008
2009 2012-09-09  Alan Modra  <amodra@gmail.com>
2010
2011         * target.h (Target::gc_mark_symbol, do_gc_mark_symbol): New functions.
2012         (Sized_target::gc_add_reference, do_gc_add_reference): New functions.
2013         * gc.h (gc_process_relocs): Call target gc_add_reference.
2014         * gold.cc (queue_middle_tasks): Use gc_mark_symbol on start sym.
2015         * symtab.cc (Symbol_table::gc_mark_undef_symbols): Use gc_mark_symbol.
2016         (Symbol_table::gc_mark_symbol): Call target gc_mark_symbol. Remove
2017         unnecessary cast.
2018         * powerpc.cc (Powerpc_relobj::get_opd_ent): Rearrange parameters
2019         to cater for when we don't need code offset.  Update use.
2020         (Powerpc_relobj::access_from_map_, opd_valid_): New vars.
2021         (Powerpc_relobj::access_from_map, add_reference, opd_valid,
2022         set_opd_valid): New functions.
2023         (Target_powerpc::do_gc_add_reference): New function.
2024         (Target_powerpc::gc_process_relocs): Call gc()->add_reference on
2025         stashed refs.
2026         (Target_powerpc::do_gc_mark_symbol): New function.
2027
2028 2012-09-06  Cary Coutant  <ccoutant@google.com>
2029
2030         * dwarf_reader.cc (Dwarf_die::read_attributes): Add
2031         DW_FORM_GNU_addr_index and DW_FORM_GNU_str_index.
2032         (Dwarf_die::skip_attributes): Likewise.
2033         * object.cc (Read_symbols_data::~Read_symbols_data): Update comment.
2034         * testsuite/gdb_index_test.cc (inline_func_1): New function.
2035         (main): Call it.
2036         * testsuite/gdb_index_test_comm.sh: Check index for inline function.
2037
2038 2012-09-05  H.J. Lu  <hongjiu.lu@intel.com>
2039
2040         * testsuite/script_test_3.t: Add .got.plt output section
2041         statement.
2042         * testsuite/script_test_4.t: Likewise.
2043
2044 2012-09-05  Alan Modra  <amodra@gmail.com>
2045
2046         * powerpc.cc (Powerpc_relocate_functions): Upcase enum values,
2047         update all uses and lose "enum" when using type.
2048
2049 2012-09-05  Alan Modra  <amodra@gmail.com>
2050
2051         * configure.ac (FN_PTRS_IN_SO_WITHOUT_PIC): False for powerpc.
2052         * configure: Regenerate.
2053         * testsuite/Makefile.am (final_layout.stdout): Pass --synthetic to nm.
2054         (plugin_final_layout.stdout): Likewise.
2055         (memory_test): Set page sizes to 0x1000.
2056         * testsuite/Makefile.in: Regenerate.
2057         * testsuite/discard_locals_test.sh: Add FIXME comment.
2058         * testsuite/justsyms_exec.c: Disable function test for powerpc64.
2059         * testsuite/pr14265.t: Add .got output section statement.
2060         * testsuite/script_test_2.t: Likewise.
2061         * testsuite/script_test_3.t: Likewise.
2062         * testsuite/script_test_4.t: Likewise.
2063         * testsuite/script_test_5.t: Likewise.
2064         * testsuite/script_test_6.t: Likewise.
2065         * testsuite/script_test_7.t: Likewise.
2066         * testsuite/script_test_9.t: Likewise.
2067
2068 2012-09-05  Alan Modra  <amodra@gmail.com>
2069
2070         * powerpc.cc (Powerpc_relobj::get_opd_ent): Make const.
2071         (Powerpc_relocate_functions::Status): New typedef.
2072         (Target_powerpc::Scan::get_reference_flags): Handle more relocs.
2073         (Target_powerpc::Scan::local): Handle REL64.
2074         (Target_powerpc::Scan::global): Likewise, and dynamic relocs
2075         for REL32 and REL64.
2076         (Target_powerpc::symval_for_branch): New function, extracted from..
2077         (Target_powerpc::Relocate::relocate): ..here.  Correct plt call
2078         checks.  Report overflow errors.
2079
2080 2012-09-05  Alan Modra  <amodra@gmail.com>
2081
2082         * object.h (Sized_relobj_file::emit_relocs): Delete.
2083         (Sized_relobj_file::emit_relocs_reltype): Delete.
2084         * reloc.cc (Sized_relobj_file::do_relocate_sections): Call target
2085         relocate_relocs for --emit-relocs.
2086         (Sized_relobj_file::emit_relocs, emit_relocs_reltype): Delete.
2087         * output.h: Update comment.
2088         (Output_segment::first_section): New function.
2089         (Output_segment::first_section_load_address): Use first_section.
2090         * output.cc (Output_segment::first_section): New function extracted..
2091         (Output_segment::first_section_load_address): ..from here.  Delete.
2092         * target-reloc.h (relocate_for_relocatable): Rename to relocate_relocs.
2093         * target.h (Sized_target::relocate_for_relocatable): Likewise.
2094         * arm.cc (Target_arm::relocate_for_relocatable): Likewise, and
2095         adjust call to target.h function.
2096         * i386.cc (Target_i386): Likewise.
2097         * sparc.cc (Target_sparc): Likewise.
2098         * x86_64.cc (Target_x86_64): Likewise.
2099         * powerpc.cc (Target_powerpc): Likewise.
2100         (Target_powerpc::Scan::local, global): Handle R_POWERPC_TLS.  Ensure
2101         first tls section has section symbol for optimised local dynamic
2102         output relocs.
2103         (Target_powerpc::Relocate::relocate): Correct local dynamic value.
2104         (Target_powerpc::relocate_relocs): Adjust relocs emitted for
2105         optimised tls code.
2106         * testsuite/testfile.cc (Target_test::relocate_for_relocatable):
2107         Rename to relocate_relocs.  Update error message.
2108
2109 2012-09-04  Andreas Schwab  <schwab@linux-m68k.org>
2110
2111         * powerpc.cc (do_make_elf_object): Allow ET_EXEC files with
2112         --just-symbols.
2113
2114 2012-08-31  Alan Modra  <amodra@gmail.com>
2115
2116         * powerpc.cc (Powerpc_relobj): Add and use Address typedef.
2117         (Powerpc_relobj::toc_base_offset): New stub function.
2118         (Target_powerpc): Add tp_offset, dtp_offset.  Rename
2119         got_mod_index_offset to tlsld_got_offset.  Update all refs.
2120         (Target_powerpc::Relocate::enum skip_tls): New.
2121         (Target_powerpc::call_tls_get_addr_): New var.
2122         (Target_powerpc::is_branch_reloc): Move to file scope.
2123         (Target_powerpc::relocate_tls, optimize_tls_reloc): Delete.
2124         (Target_powerpc::optimize_tls_gd, optimize_tls_ld, optimize_tls_ie):
2125         New functions.
2126         (Target_powerpc::enum Got_type): Delete old values, add new ones.
2127         (powerpc_info): Correct common_pagesize for ppc64.
2128         (at_tls_transform, needs_dynamic_reloc, use_plt_offset): New functions.
2129         (Powerpc_relocate_functions): Add overflow check enums and functions.
2130         Add non-shift version of rela, rela_ua.  Delete all rel public
2131         functions.  Delete addr16_lo.  Add addr64, addr64_u, addr32,
2132         addr32_u, addr24, addr16_u, addr16_hi2, addr16_ha2, addr16_hi3,
2133         addr16_ha3, addr14 functions.
2134         (Output_data_got_powerpc::add_constant_pair): New function.
2135         (Output_data_got_powerpc::got_base_offset): Likewise.
2136         (Output_data_got_powerpc::do_write): Correct 64-bit got header.
2137         (instruction constants): Sort, add some more.
2138         (Output_data_glink::do_write): Add and use Address typedef.  Use
2139         object->toc_base_offset() stub for 64-bit.
2140         (Target_powerpc::tlsld_got_offset): Use add_constant_pair.
2141         (Target_powerpc::Scan::get_reference_flags): Handle more relocs.
2142         (Target_powerpc::Scan::local, global): Emit relative dynamic reloc
2143         for R_PPC64_TOC.  Handle more relocs.  Generate got entries for TLS.
2144         Always treat .opd relocs as against locally defined symbol.
2145         Correct condition for RELATIVE relocs.
2146         (Target_powerpc::do_finalize_sections): Test for NULL sections.
2147         (Target_powerpc::Relocate::relocate): Use plt call stub as value
2148         for 32-bit syms with a plt entry.  Correct ppc64 toc base
2149         calculations.  Handle TLS relocs, and more.  Add overflow
2150         checking and adjust for Powerpc_relocate_functions changes.
2151         (Target_powerpc::relocate_for_relocatable): Handle zero r_sym.
2152         Reinstate --emit-relocs code with FIXME.
2153
2154 2012-08-30  Alan Modra  <amodra@gmail.com>
2155
2156         * layout.cc (Layout::set_segment_offsets): Set p_align to
2157         abi_pagesize, not common_pagesize.
2158         (Layout::relaxation_loop_body): Similarly use abi_pagesize
2159         to determine whether file header can go in segment.
2160
2161 2012-08-30  Alan Modra  <amodra@gmail.com>
2162
2163         * output.h (Output_reloc::Output_reloc <output section>): Add
2164         is_relative param.  Adjust calls.
2165         (Output_reloc::add_output_section_relative): New functions.
2166         * output.cc (Output_reloc::Output_reloc <output section>): Handle
2167         is_relative.
2168         (Output_reloc::symbol_value): Handle SECTION_CODE.
2169
2170 2012-08-24  Sriraman Tallam  <tmsriram@google.com>
2171
2172         * gold.cc (queue_middle_tasks): Call layout again when unique
2173         segments for sections is desired.
2174         * layout.cc (Layout::Layout): Initialize new members.
2175         (Layout::get_output_section_flags): New function.
2176         (Layout::choose_output_section): Call get_output_section_flags.
2177         (Layout::layout): Make output section for mapping to a unique segment.
2178         (Layout::insert_section_segment_map): New function.
2179         (Layout::attach_allocated_section_to_segment): Make unique segment for
2180         output sections marked so.
2181         (Layout::segment_precedes): Check for unique segments when sorting.
2182         * layout.h (Layout::Unique_segment_info): New struct.
2183         (Layout::Section_segment_map): New typedef.
2184         (Layout::insert_section_segment_map): New function.
2185         (Layout::get_output_section_flags): New function.
2186         (Layout::is_unique_segment_for_sections_specified): New function.
2187         (Layout::set_unique_segment_for_sections_specified): New function.
2188         (Layout::unique_segment_for_sections_specified_): New member.
2189         (Layout::section_segment_map_): New member.
2190         * object.cc (Sized_relobj_file<size, big_endian>::do_layout):
2191         Rename is_gc_pass_one to is_pass_one.
2192         Rename is_gc_pass_two to is_pass_two.
2193         Rename is_gc_or_icf to is_two_pass.
2194         Check for which pass based on whether symbols data is present.
2195         Make it two pass when unique segments for sections is desired.
2196         * output.cc (Output_section::Output_section): Initialize new
2197         members.
2198         * output.h (Output_section::is_unique_segment): New function.
2199         (Output_section::set_is_unique_segment): New function.
2200         (Output_section::is_unique_segment_): New member.
2201         (Output_section::extra_segment_flags): New function.
2202         (Output_section::set_extra_segment_flags): New function.
2203         (Output_section::extra_segment_flags_): New member.
2204         (Output_section::segment_alignment): New function.
2205         (Output_section::set_segment_alignment): New function.
2206         (Output_section::segment_alignment_): New member.
2207         (Output_segment::Output_segment): Initialize is_unique_segment_.
2208         (Output_segment::is_unique_segment): New function.
2209         (Output_segment::set_is_unique_segment): New function.
2210         (Output_segment::is_unique_segment_): New member.
2211         * plugin.cc (allow_unique_segment_for_sections): New function.
2212         (unique_segment_for_sections): New function.
2213         (Plugin::load): Add new functions to transfer vector.
2214         * Makefile.am (plugin_final_layout.readelf.stdout): Add readelf output.
2215         * Makefile.in: Regenerate.
2216         * testsuite/plugin_final_layout.sh: Check if unique segment
2217         functionality works.
2218         * testsuite/plugin_section_order.c (onload): Check if new interfaces
2219         are available.
2220         (allow_unique_segment_for_sections): New global.
2221         (unique_segment_for_sections): New global.
2222         (claim_file_hook): Call allow_unique_segment_for_sections.
2223         (all_symbols_read_hook): Call unique_segment_for_sections.
2224
2225 2012-08-22  Cary Coutant  <ccoutant@google.com>
2226
2227         * layout.cc (Layout::include_section): Don't assert on GROUP
2228         sections with --emit-relocs.
2229
2230 2012-08-21  Cary Coutant  <ccoutant@google.com>
2231
2232         * symtab.cc (Symbol_table::gc_mark_undef_symbols): Don't assert
2233         if --export-dynamic-symbol names an undef symbol.
2234
2235 2012-08-18  Alan Modra  <amodra@gmail.com>
2236
2237         * powerpc.cc: Formatting and white space.
2238         (Powerpc_relobj): Rename got2_section_ to special_.
2239         Add opd_ent_shndx_ and opd_ent_off_ vectors.
2240         (Powerpc_relobj::opd_shndx, init_opd, get_opd_ent, set_opd_ent,
2241         scan_opd_relocs, do_read_relocs, opd_ent_ndx): New functions.
2242         (Target_powerpc): Add Address typedef and invalid_address.  Use
2243         throughout.
2244         (Target_powerpc::is_branch_reloc): New function.
2245         (Powerpc_relocate_functions): Add Address typedef, use throughout.
2246         (Powerpc_relocate_functions:rela, rela_ua): Correct type used
2247         for dst_mask, value and addend.
2248         (Powerpc_relobj::do_find_special_sections): Find .opd for 64-bit.
2249         (ld_2_1, cror_15_15_15, cror_31_31_31): New insn constants.
2250         (Output_data_glink::do_write): Correct toc base.  Don't try to use
2251         uint16_t for 24-bit offset.  Use get_output_section_offset and
2252         check return.
2253         (Target_powerpc::Scan::local): Handle more relocs.
2254         (Target_powerpc::do_finalize_sections): Set up DT_PPC64_GLINK.
2255         (Target_powerpc::Relocate::relocate): Correct toc base calculation.
2256         Plug in toc restoring insn after plt calls.  Translate branches
2257         to function descriptor symbols to corresponding entry point.
2258         (Target_powerpc::relocate_for_relocatable): Check return from
2259         get_output_section_offset.
2260         * symtab.h: Comment typo.
2261
2262 2012-08-14  Ian Lance Taylor  <iant@google.com>
2263
2264         * x86_64.cc (Target_x86_64::Scan::global): Fix erroneous call to
2265         unsupported_relocal_local to call unsupported_reloc_global.
2266
2267 2012-08-14  Nick Clifton  <nickc@redhat.com>
2268
2269         PR ld/14265
2270         * script-sections.cc (Sections_element::output_section_name): Add
2271         keep return parameter.
2272         (Output_section_element::match_name): Add keep return parameter.
2273         Return the value of the keep_ member.
2274         * script-sections.h (class Output_section): Update
2275         output_section_name prototype.
2276         * layout.cc (Layout::keep_input_section): New public member
2277         function.
2278         (Layout::choose_output_section): Pass keep parameter to
2279         output_section_name.
2280         * layout.h (class Layout): Add keep_input_section.
2281         * object.cc (Sized_relobj_file::do_layout): Check for kept input
2282         sections.
2283         * testsuite/Makefile.am: Add a test.
2284         * testsuite/Makefile.in: Regenerate.
2285         * testsuite/pr14265.c: Source file for the test.
2286         * testsuite/pr14265.t: Linker script for the test.
2287         * testsuite/pr14265.sh: Shell script for the test.
2288
2289 2012-08-14  Alan Modra  <amodra@gmail.com>
2290
2291         * target.h (Target::output_section_name): New function.
2292         (Target::do_output_section_name): New function.
2293         * layout.cc (Layout::choose_output_section): Call the above.
2294         * powerpc.cc (Target_powerpc::do_output_section_name): New function.
2295
2296 2012-08-14  Alan Modra  <amodra@gmail.com>
2297
2298         * powerpc.cc: Update for renamed R_PPC_REL16 relocs.
2299         (Output_data_got_powerpc::do_write): Don't rely on base class lookup
2300         for replace_constant call.
2301         (Output_data_plt_powerpc::do_print_to_mapfile): New function.
2302         (Output_data_glink::do_print_to_mapfile): New function.
2303         (Target_powerpc::Scan::local): Ignore R_PPC64_TOCSAVE.
2304         (Target_powerpc::Relocate::relocate): Likewise.
2305
2306 2012-08-14  Alan Modra  <amodra@gmail.com>
2307
2308         * powerpc.cc (Powerpc_relobj::set_got2_shndx): Delete.
2309         (Powerpc_relobj::do_find_special_sections): Don't use set_got2_shndx.
2310         (Output_data_glink::add_entry,find_entry): Remove shndx param.
2311         (class Glink_sym_ent): Rename from struct Glink_sym_ent.  Remove
2312         all references to shndx_.  Handle special case for R_PPC_PLTREL24
2313         here.
2314         (class Glink_sym_ent_hash): Rename from struct Glink_sym_ent_hash.
2315         (Output_data_glink::do_write): Retrieve got2_shdnx from object.
2316         (Target_powerpc::make_plt_entry): Don't special case R_PPC_PLTREL24
2317         here.
2318         (Target_powerpc::Scan::global): Nor on make_plt_entry call.
2319         (Target_powerpc::Relocate::relocate): Nor on glink->find_entry call.
2320
2321 2012-08-12  Alan Modra  <amodra@gmail.com>
2322
2323         * powerpc.cc: Whitespace fixes.  Wrap overly long lines.
2324         (glink insn constants): Use uint32_t.
2325         (Output_data_glink::add_entry): Use insert, not [] operator.
2326
2327 2012-08-11  Alan Modra  <amodra@gmail.com>
2328
2329         * object.h (Sized_relobj_file::find_shdr): New function.
2330         (Sized_relobj_file::find_special_sections): New function.
2331         * object.cc (Sized_relobj_file::find_shdr): New function.
2332         (Sized_relobj_file::find_eh_frame): Use find_shdr.
2333         (Sized_relobj_file::find_special_sections): New function, split out..
2334         (Sized_relobj_file::do_read_symbols): ..from here.
2335         * output.h (Output_data_got::replace_constant): New function.
2336         (Output_data_got::num_entries): New function.
2337         (Output_data_got::last_got_offset,set_got_size): Use num_entries.
2338         (Output_data_got::got_offset): Protected rather than private.
2339         (Output_data_got::replace_got_entry): New function.
2340         * output.cc (Output_data_got::replace_got_entry): New function.
2341         * powerpc.cc (class Powerpc_relobj): New.
2342         (class Powerpc_relocate_functions): Delete all psymval variants or
2343         convert to value,addend type.  Delete pcrela, pcrela_unaligned.
2344         Implement _ha functions using corresponding _hi function.
2345         (Powerpc_relobj::find_special_sections): New function.
2346         (Target_powerpc::do_make_elf_object): New function.
2347         (class Output_data_got_powerpc): New.
2348         (class Output_data_glink): New.
2349         (class Powerpc_scan_relocatable_reloc): New.
2350         Many more changes througout file.
2351
2352 2012-08-09  Nick Clifton  <nickc@redhat.com>
2353
2354         * po/vi.po: Updated Vietnamese translation.
2355
2356 2012-08-07  Ian Lance Taylor  <iant@google.com>
2357
2358         * layout.cc (Layout::add_target_dynamic_tags): If
2359         dynrel_includes_plt but no dyn_rel, emit dynamic reloc tags for
2360         plt_rel.
2361
2362 2012-07-30  Nick Clifton  <nickc@redhat.com>
2363
2364         * po/gold.pot: Updated template.
2365         * po/es.po: Updated Spanish translation.
2366
2367 2012-07-18  Cary Coutant  <ccoutant@google.com>
2368
2369         PR gold/14344
2370         * configure.ac: Add check for -gpubnames support.
2371         * configure: Regenerate.
2372         * testsuite/Makefile.am (gdb_index_test_1): Add check for -gpubnames
2373         support; force -gno-pubnames.
2374         (gdb_index_test_2, gdb_index_test_3): Add check for -gpubnames
2375         support.
2376         (gdb_index_test_4): New test.
2377         * testsuite/Makefile.in: Regenerate.
2378         * testsuite/gdb_index_test_1.sh: Refactor code into common file.
2379         * testsuite/gdb_index_test_2.sh: Likewise.
2380         * testsuite/gdb_index_test_3.sh: Don't look for space after colon.
2381         * testsuite/gdb_index_test_4.sh: New script.
2382         * testsuite/gdb_index_test_comm.sh: New script with common code;
2383         don't look for space after colon.
2384
2385 2012-07-16  Sriraman Tallam  <tmsriram@google.com>
2386
2387         * gold.cc (queue_middle_tasks): Update function order only after
2388         deferred objects due to plugins are processed.
2389
2390 2012-07-11  Ian Lance Taylor  <iant@google.com>
2391
2392         * arm.cc (Arm_relocate_functions::abs16): Remove unused typedef.
2393         (Arm_exidx_cantunwind::do_fixed_endian_write): Likewise.
2394         (Target_arm::scan_reloc_for_stub): Likewise.
2395         * common.cc (Symbol_table::do_allocate_commons_list): Likewise.
2396         * dwarf_reader.cc (Dwarf_die::skip_attributes): Likewise.
2397         * ehframe.cc (Eh_frame::do_add_ehframe_input_section): Likewise.
2398         * incremental.cc (Sized_incr_dynobj::do_add_symbols): Likewise.
2399         * powerpc.cc (Target_powerpc::relocate_tls): Likewise.
2400
2401 2012-07-10  Dodji Seketeli  <dodji@redhat.com>
2402             Ian Lance Taylor  <iant@google.com>
2403
2404         PR gold/14309
2405         * configure.ac: Test whether std::tr1::hash<off_t> works.
2406         * gold.h: Add a specialization for std::tr1::hash<off_t> if
2407         needed.
2408         * output.h (class Output_fill): Add virtual destructor.
2409         * configure, config.in: Rebuild.
2410
2411 2012-06-22  Roland McGrath  <mcgrathr@google.com>
2412
2413         * layout.cc (finalize): Define __ehdr_start symbol if applicable.
2414
2415 2012-06-12  Rafael Ávila de Espíndola <respindola@mozilla.com>
2416
2417         * plugin.cc (Plugin::load): Handle position independent executables.
2418
2419 2012-06-06  Cary Coutant  <ccoutant@google.com>
2420
2421         * layout.cc (gdb_sections): Remove ".debug_" prefixes,
2422         add .debug_macro.
2423         (lines_only_debug_sections): Likewise.
2424         (gdb_fast_lookup_sections): New static array.
2425         (is_gdb_debug_section): Rename formal parameter.
2426         (is_lines_only_debug_section): Likewise.
2427         (is_gdb_fast_lookup_section): New function.
2428         (Layout::include_section): Check for ".zdebug_" prefix; pass
2429         section name suffix to is_gdb_debug_section, et al.; check for
2430         fast-lookup sections when building .gdb_index.
2431         * options.h (--strip-debug-gdb): Update GDB version number.
2432
2433 2012-06-06  Cary Coutant  <ccoutant@google.com>
2434
2435         * configure.ac: Add check for fallocate.
2436         * configure: Regenerate.
2437         * config.in: Regenerate.
2438
2439         * options.h (class General_options): Add --mmap-output-file and
2440         --posix-fallocate options.
2441         * output.cc: (posix_fallocate): Remove; replace with...
2442         (gold_fallocate): New function.
2443         (Output_file::map_no_anonymous): Call gold_fallocate.
2444         (Output_file::map): Check --mmap-output-file option.
2445
2446 2012-06-05  Jing Yu  <jingyu@google.com>
2447
2448         * gold.h (textdomain): Add do {} to empty while(0).
2449         (bindtextdomain): Likewise.
2450
2451 2012-06-04  Cary Coutant  <ccoutant@google.com>
2452
2453         * dynobj.cc (Sized_dynobj::do_get_global_symbol_counts): Call
2454         has_dynsym_index.
2455
2456 2012-05-25  Sriraman Tallam  <tmsriram@google.com>
2457
2458         * symtab.cc (Symbol_table::define_special_symbol):
2459         Initialize *poldsym to prevent uninitialized variable errors.
2460
2461 2012-05-23  Cary Coutant  <ccoutant@google.com>
2462
2463         * layout.cc (Layout::section_name_mapping): Add rules to handle
2464         exact match on .data.rel.ro.local or .data.rel.ro.
2465         (Layout::output_section_name): Check for exact matches.
2466
2467 2012-05-23  Cary Coutant  <ccoutant@google.com>
2468
2469         * layout.cc (Layout::section_name_mapping): Match .data.rel.ro.*
2470         more carefully.
2471
2472 2012-05-22  Cary Coutant  <ccoutant@google.com>
2473
2474         * symtab.cc (Symbol::should_add_dynsym_entry): Check for relocatable
2475         object before exporting symbol.
2476
2477 2012-05-21  H.J. Lu  <hongjiu.lu@intel.com>
2478
2479         * testsuite/tls_test.cc: Include "config.h" first.
2480         * testsuite/tls_test_c.c: Likewise.
2481
2482 2012-05-17  Daniel Richard G.  <skunk@iskunk.org>
2483             Nick Clifton  <nickc@redhat.com>
2484
2485         PR 14072
2486         * configure.in: Add check that sysdep.h has been included before
2487         any system header files.
2488         * configure: Regenerate.
2489         * config.in: Regenerate.
2490
2491 2012-05-14  Cary Coutant  <ccoutant@google.com>
2492
2493         * layout.cc (Layout::make_output_section): Mark .tdata section
2494         as RELRO.
2495         * testsuite/relro_test.cc: Add a TLS variable.
2496
2497 2012-05-10  H.J. Lu  <hongjiu.lu@intel.com>
2498
2499         PR gold/14091
2500         * x86_64.cc (Target_x86_64::Scan::local): For x32, generate
2501         R_X86_64_RELATIVE64 instead of R_X86_64_RELATIVE in case of
2502         R_X86_64_64.
2503
2504 2012-05-08  Cary Coutant  <ccoutant@google.com>
2505
2506         * layout.cc (gdb_sections): Update GDB version, add .debug_addr.
2507         (lines_only_debug_sections): Likewise.
2508
2509 2012-05-02  Roland McGrath  <mcgrathr@google.com>
2510
2511         * nacl.cc: New file.
2512         * nacl.h: New file.
2513         * Makefile.am (CCFILES, HFILES): Add them.
2514         * Makefile.in: Regenerate.
2515         * i386.cc (Output_data_plt_i386_nacl): New class.
2516         (Output_data_plt_i386_nacl_exec): New class.
2517         (Output_data_plt_i386_nacl_dyn): New class.
2518         (Target_i386_nacl): New class.
2519         (Target_selector_i386_nacl): New class.
2520         (target_selector_i386): Use it instead of Target_selector_i386.
2521         * x86_64.cc (Output_data_plt_x86_64_nacl): New class.
2522         (Target_x86_64_nacl): New class.
2523         (Target_selector_x86_64_nacl): New class.
2524         (target_selector_x86_64, target_selector_x32): Use it instead of
2525         Target_selector_x86_64.
2526         * arm.cc (Output_data_plt_arm_nacl): New class.
2527         (Target_arm_nacl): New class.
2528         (Target_selector_arm_nacl): New class.
2529         (target_selector_arm, target_selector_armbe): Use it instead of
2530         Target_selector_arm.
2531
2532         * target-select.cc (select_target): Take new Input_file* and off_t
2533         arguments, pass them on to recognize method of selector.
2534         * object.cc (make_elf_sized_object): Update caller.
2535         * parameters.cc (parameters_force_valid_target): Likewise.
2536         * incremental.cc (make_sized_incremental_binary): Likewise.
2537         * target-select.h: Update decl.
2538         (Target_selector::recognize): Take new Input_file* argument,
2539         pass it on to do_recognize.
2540         (Target_selector::do_recognize): Take new Input_file* argument.
2541         * freebsd.h (Target_selector_freebsd::do_recognize): Likewise.
2542         * powerpc.cc (Target_selector_powerpc::do_recognize): Likewise.
2543         * sparc.cc (Target_selector_sparc::do_recognize): Likewise.
2544         * testsuite/testfile.cc (Target_selector::do_recognize): Likewise.
2545
2546         * target.h (Target::Target_info): New members isolate_execinstr
2547         and rosegment_gap.
2548         (Target::isolate_execinstr, Target::rosegment_gap): New methods.
2549         * arm.cc (Target_arm::arm_info): Update initializer.
2550         * i386.cc (Target_i386::i386_info): Likewise.
2551         * powerpc.cc (Target_powerpc::powerpc_info): Likewise.
2552         * sparc.cc (Target_sparc::sparc_info): Likewise.
2553         * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
2554         * testsuite/testfile.cc (Target_test::test_target_info): Likewise.
2555         * layout.cc (Layout::attach_allocated_section_to_segment):
2556         Take new const Target* argument.  If target->isolate_execinstr(), act
2557         like --rosegment.
2558         (Layout::find_first_load_seg): Take new const Target* argument;
2559         if target->isolate_execinstr(), reject PF_X segments.
2560         (Layout::relaxation_loop_body): Update caller.
2561         (Layout::set_segment_offsets): If target->isolate_execinstr(),
2562         reset file offset to zero when we hit LOAD_SEG, and then do a second
2563         loop over the segments before LOAD_SEG to reassign offsets after
2564         addresses have been determined.  Handle target->rosegment_gap().
2565         (Layout::attach_section_to_segment): Take new const Target* argument;
2566         pass it to attach_allocated_section_to_segment.
2567         (Layout::make_output_section): Update caller.
2568         (Layout::attach_sections_to_segments): Take new const Target* argument;
2569         pass it to attach_section_to_segment.
2570         * gold.cc (queue_middle_tasks): Update caller.
2571         * layout.h (Layout): Update method decls with new arguments.
2572
2573         * arm.cc (Target_arm::Target_arm): Take optional argument for the
2574         Target_info pointer to use.
2575         (Target_arm::do_make_data_plt): New virtual method.
2576         (Target_arm::make_data_plt): New method that calls it.
2577         (Target_arm::make_plt_entry): Use it.
2578         (Output_data_plt_arm::Output_data_plt_arm): Take additional argument
2579         for the section alignment.
2580         (Output_data_plt_arm::do_first_plt_entry_offset): New abstract virtual
2581         method.
2582         (Output_data_plt_arm::first_plt_entry_offset): Call it.
2583         (Output_data_plt_arm::do_get_plt_entry_size): New abstract virtual
2584         method.
2585         (Output_data_plt_arm::get_plt_entry_size): Call it.
2586         (Output_data_plt_arm::do_fill_plt_entry): New abstract virtual method.
2587         (Output_data_plt_arm::fill_plt_entry): New method that calls it.
2588         (Output_data_plt_arm::do_fill_first_plt_entry): New abstract virtual
2589         method.
2590         (Output_data_plt_arm::fill_first_plt_entry): New method that calls it.
2591         (Output_data_plt_arm::set_final_data_size): Use get_plt_entry_size
2592         method instead of sizeof(plt_entry).
2593         (Output_data_plt_arm::add_entry): Likewise.
2594         Use first_plt_entry_offset method instead of sizeof(first_plt_entry).
2595         (Target_arm::first_plt_entry_offset): Call method on this->plt_ rather
2596         than static method.
2597         (Target_arm::plt_entry_size): Likewise.
2598         (Output_data_plt_arm::first_plt_entry, Output_data_plt_arm::plt_entry):
2599         Move to ...
2600         (Output_data_plt_arm_standard): ... here, new class.
2601         (Output_data_plt_arm::do_write): Move guts of PLT filling to...
2602         (Output_data_plt_arm_standard::do_fill_first_plt_entry): ... here ...
2603         (Output_data_plt_arm_standard::do_fill_plt_entry): ... and here.
2604
2605         * x86_64.cc (Output_data_plt_x86_64::Output_data_plt_x86_64):
2606         Take additional argument for the PLT entry size.
2607         (Output_data_plt_x86_64::get_tlsdesc_plt_offset):
2608         Use get_plt_entry_size method rather than plt_entry_size variable.
2609         (Output_data_plt_x86_64::reserve_slot): Likewise.
2610         (Output_data_plt_x86_64::do_adjust_output_section): Likewise.
2611         (Output_data_plt_x86_64::add_entry): Likewise.
2612         (Output_data_plt_x86_64::add_local_ifunc_entry): Likewise.
2613         (Output_data_plt_x86_64::address_for_global): Likewise.
2614         (Output_data_plt_x86_64::address_for_local): Likewise.
2615         (Output_data_plt_x86_64::set_final_data_size): Likewise.
2616         (Output_data_plt_x86_64::first_plt_entry_offset): Likewise.
2617         Make method non-static.
2618         (Output_data_plt_x86_64::do_get_plt_entry_size): New abstract virtual
2619         method.
2620         (Output_data_plt_x86_64::get_plt_entry_size): Just call that.
2621         (Output_data_plt_x86_64::do_add_eh_frame): New abstract virtual method.
2622         (Output_data_plt_x86_64::add_eh_frame): New method to call it.
2623         (Output_data_plt_x86_64::do_fill_first_plt_entry): New abstract
2624         virtual method.
2625         (Output_data_plt_x86_64::fill_first_plt_entry): New method to call it.
2626         (Output_data_plt_x86_64::do_fill_plt_entry): New abstract
2627         virtual method.
2628         (Output_data_plt_x86_64::fill_plt_entry): New method to call it.
2629         (Output_data_plt_x86_64::do_fill_tlsdesc_entry): New abstract
2630         virtual method.
2631         (Output_data_plt_x86_64::fill_tlsdesc_entry): New method to call it.
2632         (Output_data_plt_x86_64::plt_entry_size)
2633         (Output_data_plt_x86_64::first_plt_entry)
2634         (Output_data_plt_x86_64::plt_entry)
2635         (Output_data_plt_x86_64::tlsdesc_plt_entry)
2636         (Output_data_plt_x86_64::plt_eh_frame_fde_size)
2637         (Output_data_plt_x86_64::plt_eh_frame_fde): Move to ...
2638         (Output_data_plt_x86_64_standard): ... here, new class.
2639         (Target_x86_64::Target_x86_64): Take optional argument for the
2640         Target_info pointer to use.
2641         (Target_x86_64::do_make_data_plt): New virtual method.
2642         (Target_x86_64::make_data_plt): New method to call it.
2643         (Target_x86_64::init_got_plt_for_update): Use that.
2644         Call this->plt_->add_eh_frame method here.
2645         (Output_data_plt_x86_64::init): Don't do add_eh_frame_for_plt here.
2646         (Target_x86_64::first_plt_entry_offset): Call method on this->plt_
2647         rather than static method.
2648         (Target_x86_64::plt_entry_size): Likewise.
2649         (Output_data_plt_x86_64::do_write): Use get_plt_entry_size method
2650         rather than plt_entry_size variable.  Move guts of PLT filling to...
2651         (Output_data_plt_x86_64_standard::do_fill_first_plt_entry): ... here ...
2652         (Output_data_plt_x86_64_standard::do_fill_plt_entry): ... and here ...
2653         (Output_data_plt_x86_64_standard::do_fill_tlsdesc_entry): ... and here.
2654
2655         * i386.cc (Output_data_plt_i386::Output_data_plt_i386): Take
2656         additional argument for the section alignment.
2657         Don't do add_eh_frame_for_plt here.
2658         (Output_data_plt_i386::first_plt_entry_offset): Make the method
2659         non-static.  Use get_plt_entry_size method rather than plt_entry_size
2660         variable.
2661         (Output_data_plt_i386::do_get_plt_entry_size): New abstract virtual
2662         method.
2663         (Output_data_plt_i386::get_plt_entry_size): Call it.
2664         (Output_data_plt_i386::do_add_eh_frame): New abstract virtual method.
2665         (Output_data_plt_i386::add_eh_frame): New method to call it.
2666         (Output_data_plt_i386::do_fill_first_plt_entry): New abstract virtual
2667         method.
2668         (Output_data_plt_i386::fill_first_plt_entry): New method to call it.
2669         (Output_data_plt_i386::do_fill_plt_entry): New abstract virtual
2670         method.
2671         (Output_data_plt_i386::fill_plt_entry): New method to call it.
2672         (Output_data_plt_i386::set_final_data_size): Use get_plt_entry_size
2673         method instead of plt_entry_size.
2674         (Output_data_plt_i386::plt_entry_size)
2675         (Output_data_plt_i386::plt_eh_frame_fde_size)
2676         (Output_data_plt_i386::plt_eh_frame_fde): Move to ...
2677         (Output_data_plt_i386_standard): ... here, new class.
2678         (Output_data_plt_i386_exec): New class.
2679         (Output_data_plt_i386::exec_first_plt_entry): Move to ...
2680         (Output_data_plt_i386_exec::first_plt_entry): ... here.
2681         (Output_data_plt_i386::exec_plt_entry): Move to ...
2682         (Output_data_plt_i386_exec::plt_entry): ... here.
2683         (Output_data_plt_i386_dyn): New class.
2684         (Output_data_plt_i386::first_plt_entry): Move to ...
2685         (Output_data_plt_i386_dyn::first_plt_entry): ... here.
2686         (Output_data_plt_i386::dyn_plt_entry): Move to ...
2687         (Output_data_plt_i386_dyn::plt_entry): ... here.
2688         (Target_i386::Target_i386): Take optional argument for the Target_info
2689         pointer to use.
2690         (Target_i386::do_make_data_plt): New virtual method.
2691         (Target_i386::make_data_plt): New method to call it.
2692         (Target_i386::make_plt_section): Use that.
2693         Call this->plt_->add_eh_frame method here.
2694         (Output_data_plt_i386::add_entry): Use get_plt_entry_size method
2695         rather than plt_entry_size variable.
2696         (Output_data_plt_i386::add_local_ifunc_entry): Likewise.
2697         (Output_data_plt_i386::address_for_local): Likewise.
2698         (Output_data_plt_i386::do_write): Likewise.
2699         Move guts of PLT filling to...
2700         (Output_data_plt_i386_exec::do_fill_first_plt_entry): ... here ...
2701         (Output_data_plt_i386_exec::do_fill_plt_entry): ... and here ...
2702         (Output_data_plt_i386_dyn::do_fill_first_plt_entry): ... and here ...
2703         (Output_data_plt_i386_dyn::do_fill_plt_entry): ... and here.
2704
2705 2012-05-01  Cary Coutant  <ccoutant@google.com>
2706
2707         * dwarf_reader.cc (Dwarf_die::read_attributes)
2708         (Dwarf_die::skip_attributes, Dwarf_die::int_attribute)
2709         (Dwarf_die::uint_attribute): Remove DW_FORM_null.
2710         * reduced_debug_output.cc
2711         (Output_reduced_debug_info_section::get_die_end): Remove
2712         DW_FORM_GNU_ref_index.  Add default case.
2713
2714 2012-04-26  Mark Wielaard  <mjw@redhat.com>
2715
2716         * dwarf_reader.cc (Dwarf_die::address_attribute): New function.
2717         * dwarf_reader.h (Dwarf_die::address_attribute): Likewise.
2718         * gdb-index.cc (Gdb_index_info_reader::record_cu_ranges): Handle
2719         DW_AT_high_pc as offset from DW_AT_low_pc.
2720
2721         * testsuite/Makefile.am (gdb_index_test_3.sh): New test case.
2722         * testsuite/Makefile.in: Regenerate.
2723         * testsuite/gdb_index_test_3.c: New test source file.
2724         * testsuite/gdb_index_test_3.sh: New test source file.
2725
2726 2012-04-25  Ian Lance Taylor  <iant@google.com>
2727
2728         * arm.cc (Target_arm::do_is_defined_by_abi): Make sym a const
2729         pointer.
2730         (Stub_addend_reader::operator()): Declare Arm_relocate_functions
2731         as a class, not a struct.
2732         (Target_arm::scan_span_for_cortex_a8_erratum): Likewise.
2733         (Target_arm::apply_cortex_a8_workaround): Likewise.
2734         * gc.h: Declare Reloc_types as a struct, not a class.
2735         * object.h: Declare Symbols_data as a struct.
2736         * reloc.h: Declare Read_relocs_data as a struct.
2737         * target.h: Declare Relocate_info as a struct.
2738
2739 2012-04-24  David S. Miller  <davem@davemloft.net>
2740
2741         * sparc.cc (Target_sparc::Relocate::relax_call): New function.
2742         (Target_sparc::Relocate::relocate): Call it for R_SPARC_WDISP30
2743         and R_SPARC_WPLT30.
2744
2745 2012-04-24  Cary Coutant  <ccoutant@google.com>
2746
2747         * incremental-dump.cc (find_input_containing_global): Replace
2748         magic number with symbolic constant.
2749         (dump_incremental_inputs): Update version number.
2750         * incremental.cc (Output_section_incremental_inputs): Update version
2751         number; import symbolic constants from Incremental_inputs_reader.
2752         (Incremental_inputs::create_data_sections): Align relocations
2753         section correctly for 64-bit targets.
2754         (Output_section_incremental_inputs::set_final_data_size): Use symbolic
2755         constants; add padding.
2756         (Output_section_incremental_inputs::write_header): Add assert for
2757         header_size.
2758         (Output_section_incremental_inputs::write_input_files): Add assert
2759         for input_entry_size.
2760         (Output_section_incremental_inputs::write_info_blocks): Add padding;
2761         add assert for object_info_size, input_section_entry_size,
2762         global_sym_entry_size.
2763         * incremental.h (Incremental_inputs_reader): Add symbolic constants
2764         for data structure sizes; use them.
2765         (Incremental_input_entry_reader): Import symbolic constants from
2766         Incremental_inputs_reader; use them.
2767
2768 2012-04-23  David S. Miller  <davem@davemloft.net>
2769
2770         * sparc.cc (class Target_sparc): Add elf_machine_, elf_flags_,
2771         and elf_flags_set_.
2772         (Target_sparc::Target_sparc): Initialize new fields.
2773         (Target_sparc::do_make_elf_object): New function.
2774         (Target_sparc::do_adjust_elf_header): New function.
2775
2776 2012-04-23  Cary Coutant  <ccoutant@google.com>
2777
2778         * gdb-index.cc (Gdb_index::do_write): Use Swap_aligned32 for writing
2779         CU range table of gdb index.
2780
2781 2012-04-20  David S. Miller  <davem@davemloft.net>
2782
2783         * target.cc (Sized_target::do_adjust_elf_header): Use big_endian
2784         instead of false.
2785
2786 2012-04-16  David S. Miller  <davem@davemloft.net>
2787
2788         * sparc.cc (Target_sparc::got_address): New function.
2789         (Sparc_relocate_functions::gdop_hix22): New function.
2790         (Sparc_relocate_functions::gdop_lox10): New function.
2791         (Target_sparc::Scan::local): Do not emit a GOT entry for GOTDATA
2792         relocs.
2793         (Target_sparc::Scan::local): Likewise if the global symbol is not
2794         preemptible and is not IFUNC.
2795         (Target_sparc::Relocate::relocate): Perform GOTDATA code
2796         transformations for local and non-preemptible non-IFUNC global
2797         symbols.
2798
2799         * gdb-index.cc (Gdb_index::do_write): Use Swap_unaligned when
2800         writing out 64-bit part of ranges.
2801
2802         * Makefile.am: Build IFUNC tests with -fPIC and -fPIE instead of
2803         -fpic and -fpie respectively.
2804         * Makefile.in: Regenerate.
2805
2806         * sparc.cc (class Target_sparc): Add rela_ifunc_.
2807         (Target_sparc::Target_sparc): Initialize new field.
2808         (Target_sparc::do_plt_section_for_global): New function.
2809         (Target_sparc::do_plt_section_for_local): New function.
2810         (Target_sparc::reloc_needs_plt_for_ifunc): New function.
2811         (Target_sparc::make_plt_section): New function, broken out of
2812         make_plt_entry.  Use ORDER_NON_RELRO_FIRST for ".plt".
2813         (Target_sparc::make_plt_entry): Call make_plt_section.
2814         (Target_sparc::make_local_ifunc_plt_entry): New function.
2815         (Target_sparc::rela_ifunc_section): New function.
2816         (Target_sparc::plt_section): Remove const.
2817         (Output_data_plt_sparc): Update declarations.  Define Global_ifunc
2818         and Local_ifunc types.  Add global_ifuncs_, local_ifuncs_, ifunc_rel_,
2819         and ifunc_count_ fields.
2820         (Output_data_plt_sparc::Output_data_plt_sparc): Initialize new fields.
2821         (Output_data_plt_sparc::add_entry): Handle IFUNC symbols.
2822         (Output_data_plt_sparc::add_local_ifunc_entry): New function.
2823         (Output_data_plt_sparc::rela_ifunc): New function.
2824         (Output_data_plt_sparc::emit_pending_ifunc_relocs): New function.
2825         (Output_data_plt_sparc::has_ifunc_section): New function.
2826         (Output_data_plt_sparc::entry_count): Include ifunc_count_.
2827         (Output_data_plt_sparc::address_for_global): New function.
2828         (Output_data_plt_sparc::address_for_local): New function.
2829         (Output_data_plt_sparc::plt_index_to_offset): New function.
2830         (Output_data_plt_sparc::set_final_data_size): Use plt_index_to_offset
2831         and entry_count.
2832         (Output_data_plt_sparc::do_write): Use first_plt_entry_offset and
2833         entry_count.
2834         (Target_sparc::Scan::get_reference_flags): Add R_SPARC_IRELATIVE and
2835         R_SPARC_JMP_IREL to switch.
2836         (Target_sparc::Scan::check_non_pic): Likewise.
2837         (Target_sparc::Scan::local): Handle IFUNC symbols.
2838         (Target_sparc::Scan::local): Likewise.
2839         (Target_sparc::Relocate::relocate): Likewise, use plt_address_for_global
2840         and plt_address_for_local.
2841         (Target_sparc::do_finalize_sections): Call emit_pending_ifunc_relocs.
2842         Define __rel_iplt_start and __rel_iplt_end if doing a static link.
2843
2844         * output.h (Output_reloc): Allow use_plt_offset for global relocs too.
2845         (class Output_data_reloc): Adjust calls to Output_reloc_type.
2846         (Output_data_reloc::add_global_relative): (RELA only) Add use_plt_offset.
2847         * output.cc (Output_reloc::Output_reloc): Add use_plt_offset flag for
2848         global relocs too.
2849         (Output_reloc::symbol_value): Respect use_plt_offset_ for global symbols.
2850         * powerpc.cc (Target_powerpc::Scan::global): Adjust add_global_relative
2851         calls.
2852         * sparc.cc (Target_sparc::Scan::global): Likewise.
2853         * x86_64.cc (Target_x86_64::Scan::global): Likewise.
2854
2855 2012-04-16  Cary Coutant  <ccoutant@google.com>
2856
2857         * archive.cc (Library_base::should_include_member): Check for
2858         --export-dynamic-symbol.
2859         * options.h (class General_options): Add --export-dynamic-symbol.
2860         * symtab.cc (Symbol::should_add_dynsym_entry): Check for
2861         --export-dynamic-symbol.
2862         (Symbol_table::gc_mark_undef_symbols): Likewise.
2863         (Symbol_table::do_add_undefined_symbols_from_command_line): Likewise.
2864
2865 2012-04-12  David S. Miller  <davem@davemloft.net>
2866
2867         * sparc.cc (Reloc::wdisp10): New relocation method.
2868         (Reloc::h34): Likewise.
2869         (Target_sparc::Scan::check_non_pic): Handle R_SPARC_H34.
2870         (Target_sparc::Scan::get_reference_flags): Handle R_SPARC_H34 and
2871         R_SPARC_WDISP10.
2872         (Target_sparc::Scan::local): Likewise.
2873         (Target_sparc::Scan::global): Likewise.
2874         (Target_sparc::Relocate::relocate): Likewise.
2875
2876 2012-04-09  Cary Coutant  <ccoutant@google.com>
2877
2878         * gdb-index.cc (Gdb_index_info_reader::record_cu_ranges): Allow
2879         low_pc == 0.
2880
2881 2012-04-06  Ian Lance Taylor  <iant@google.com>
2882
2883         * timer.cc: #include <unistd.h>.
2884
2885 2012-04-06  Roland McGrath  <mcgrathr@google.com>
2886
2887         * configure.in (AC_CHECK_HEADERS): Add locale.h.
2888         * config.in: Regenerate.
2889         * configure: Regenerate.
2890
2891 2012-04-05  Nick Clifton  <nickc@redhat.com>
2892
2893         * configure.ac (AC_CHECK_FUNCS): Add setlocale.
2894         (AM_LC_MESSAGES): Add.
2895         * aclocal.m4: Regenerate.
2896         * config.in: Regenerate.
2897         * configure: Regenerate.
2898
2899 2012-03-21  Cary Coutant  <ccoutant@google.com>
2900
2901         * Makefile.am: Add gdb-index.cc, gdb-index.h.
2902         * Makefile.in: Regenerate.
2903         * dwarf_reader.cc (Sized_elf_reloc_mapper::do_initialize): New function.
2904         (Sized_elf_reloc_mapper::symbol_section): New function.
2905         (Sized_elf_reloc_mapper::do_get_reloc_target): New function.
2906         (make_elf_reloc_mapper): New function.
2907         (Dwarf_abbrev_table::clear_abbrev_codes): New function.
2908         (Dwarf_abbrev_table::do_read_abbrevs): New function.
2909         (Dwarf_abbrev_table::do_get_abbrev): New function.
2910         (Dwarf_ranges_table::read_ranges_table): New function.
2911         (Dwarf_ranges_table::read_range_list): New function.
2912         (Dwarf_pubnames_table::read_section): New function.
2913         (Dwarf_pubnames_table::read_header): New function.
2914         (Dwarf_pubnames_table::next_name): New function.
2915         (Dwarf_die::Dwarf_die): New function.
2916         (Dwarf_die::read_attributes): New function.
2917         (Dwarf_die::skip_attributes): New function.
2918         (Dwarf_die::set_name): New function.
2919         (Dwarf_die::set_linkage_name): New function.
2920         (Dwarf_die::attribute): New function.
2921         (Dwarf_die::string_attribute): New function.
2922         (Dwarf_die::int_attribute): New function.
2923         (Dwarf_die::uint_attribute): New function.
2924         (Dwarf_die::ref_attribute): New function.
2925         (Dwarf_die::child_offset): New function.
2926         (Dwarf_die::sibling_offset): New function.
2927         (Dwarf_info_reader::check_buffer): New function.
2928         (Dwarf_info_reader::parse): New function.
2929         (Dwarf_info_reader::do_parse): New function.
2930         (Dwarf_info_reader::do_read_string_table): New function.
2931         (Dwarf_info_reader::lookup_reloc): New function.
2932         (Dwarf_info_reader::get_string): New function.
2933         (Dwarf_info_reader::visit_compilation_unit): New function.
2934         (Dwarf_info_reader::visit_type_unit): New function.
2935         (Sized_dwarf_line_info::Sized_dwarf_line_info): Use
2936         Sized_elf_reloc_mapper.
2937         (Sized_dwarf_line_info::symbol_section): Remove function.
2938         (Sized_dwarf_line_info::read_relocs): Use Sized_elf_reloc_mapper.
2939         (Sized_dwarf_line_info::read_line_mappings): Remove object
2940         parameter, adjust callers.
2941         (Sized_dwarf_line_info::format_file_lineno): Fix type of cast.
2942         * dwarf_reader.h: Include <sys/types.h>.
2943         (class Track_relocs): Remove forward declaration.
2944         (class Elf_reloc_mapper): New class.
2945         (class Sized_elf_reloc_mapper): New class.
2946         (class Dwarf_abbrev_table): New class.
2947         (class Dwarf_range_list): New class.
2948         (class Dwarf_ranges_table): New class.
2949         (class Dwarf_pubnames_table): New class.
2950         (class Dwarf_die): New class.
2951         (class Dwarf_info_reader): New class.
2952         (Sized_dwarf_line_info::read_line_mappings): Remove object parameter.
2953         (Sized_dwarf_line_info::symbol_section): Remove member function.
2954         * dynobj.h (Sized_dynobj::do_section_contents): Refactor code from
2955         base class.
2956         * gdb-index.cc: New source file.
2957         * gdb-index.h: New source file.
2958         * incremental.cc (Sized_relobj_incr::do_layout): Track .debug_info
2959         and .debug_types sections, call Layout::add_to_gdb_index.
2960         (Sized_relobj_incr::do_section_name): Implement.
2961         (Sized_relobj_incr::do_section_contents): Adjust parameter list and
2962         return type; Implement.
2963         (Sized_incr_dynobj::do_section_contents): Adjust parameter list and
2964         return type.
2965         * incremental.h (Sized_relobj_incr::do_section_contents): Adjust
2966         parameter list and return type.
2967         (Sized_incr_dynobj::do_section_contents): Likewise.
2968         * layout.cc: Include gdb-index.h.
2969         (Layout::Layout): Initialize gdb_index_data_.
2970         (Layout::init_fixed_output_section): Check for .gdb_index section.
2971         (Layout::add_to_gdb_index): New function. Instantiate.
2972         * layout.h: Add forward declaration for class Gdb_index.
2973         (Layout::add_to_gdb_index): New member function.
2974         (Layout::gdb_index_data_): New data member.
2975         * main.cc: Include gdb-index.h.
2976         (main): Print statistics for gdb index.
2977         * object.cc (Object::section_contents): Move code into
2978         do_section_contents.
2979         (need_decompressed_section): Check for sections needed when building
2980         gdb index.
2981         (build_compressed_section_map): Likewise.
2982         (Sized_relobj_file::do_read_symbols): Need local symbols when building
2983         gdb index.
2984         (Sized_relobj_file::do_layout): Track .debug_info and .debug_types
2985         sections; call Layout::add_to_gdb_index.
2986         (Sized_relobj_file::do_decompressed_section_contents): Call
2987         do_section_contents directly.
2988         * object.h (Object::do_section_contents): Adjust parameter list and
2989         return type.
2990         (Object::do_decompressed_section_contents): Call do_section_contents
2991         directly.
2992         (Sized_relobj_file::do_section_contents): Adjust parameter list and
2993         return type.
2994         * options.h (class General_options): Add --gdb-index option.
2995         * plugin.cc (Sized_pluginobj::do_section_contents): Adjust parameter
2996         list and return type.
2997         * plugin.h (Sized_pluginobj::do_section_contents): Likewise.
2998         * reloc.h (Track_relocs::checkpoint): New function.
2999         (Track_relocs::reset): New function.
3000
3001         * testsuite/Makefile.am (gdb_index_test_1.sh, gdb_index_test_2.sh):
3002         New test cases.
3003         * testsuite/Makefile.in: Regenerate.
3004         * testsuite/gdb_index_test.cc: New test source file.
3005         * testsuite/gdb_index_test_1.sh: New test source file.
3006         * testsuite/gdb_index_test_2.sh: New test source file.
3007
3008 2012-03-19  Doug Kwan  <dougkwan@google.com>
3009
3010         * arm.cc (Target_arm::do_define_standard_symbols): New method.
3011         (Target_arm::do_finalize_sections): Remove code which defines
3012         __exidx_start and __exidx_end.  Make symbol table parameter
3013         anonymous as it is not used.
3014         * gold.cc (queue_middle_tasks): Call target hook to define any
3015         target-specific symbols.
3016         * target.h (Target::define_standard_symbols): New method.
3017         (Target::do_define_standard_symbols): Same.
3018         * testsuite/Makefile.am (arm_exidx_test): Dump relocations also.
3019         * testsuite/Makefile.in: Regenerate.
3020         * testsuite/arm_exidx.s: Generate data relocations for __exidx_start
3021         and __exidx_end.
3022         * testsuite/arm_exidx_test.sh: Check that no unused dynamic
3023         relocations are generated for __exidx_start and __exidx_end.
3024
3025 2012-03-16  Doug Kwan  <dougkwan@google.com>
3026
3027         * testsuite/Makefile.am: Disable test initpri3b.
3028         * testsuite/Makefile.in: Regenerate.
3029
3030 2012-03-15  Doug Kwan  <dougkwan@google.com>
3031
3032         * arm.cc (Target_arm::got_section): Make .got section read-only
3033         if -z now is given.
3034
3035 2012-03-15  Ian Lance Taylor  <iant@google.com>
3036
3037         PR gold/13850
3038         * layout.cc (Layout::make_output_section): Correctly mark
3039         SHT_INIT_ARRAY, et. al., as relro.
3040
3041 2012-03-14  Doug Kwan  <dougkwan@google.com>
3042
3043         * gold/arm.cc (Target_arm::Scan::global): Generate R_ARM_GLOB_DAT
3044         dynamic relocations for protected symbols in shared objects.
3045
3046 2012-03-13  Ian Lance Taylor  <iant@google.com>
3047
3048         * resolve.cc (Symbol_table::resolve): When merging common symbols,
3049         keep the larger alignment.
3050
3051 2012-03-12  Cary Coutant  <ccoutant@google.com>
3052
3053         * dwarf_reader.cc (Sized_dwarf_line_info::process_one_opcode): Fix
3054         handling of DW_LNE_define_file.
3055
3056 2012-03-12  Cary Coutant  <ccoutant@google.com>
3057
3058         * reduced_debug_output.cc
3059         (Output_reduced_debug_info_section::get_die_end): Add new FORM
3060         codes to switch.
3061
3062 2012-02-29  Cary Coutant  <ccoutant@google.com>
3063
3064         * object.cc (need_decompressed_section): Add #ifdef ENABLE_THREADS.
3065
3066 2012-02-29  Cary Coutant  <ccoutant@google.com>
3067
3068         * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
3069         Call Object::decompressed_section_contents.
3070         * dwarf_reader.h (Sized_dwarf_line_info::~Sized_dwarf_line_info):
3071         New dtor.
3072         (Sized_dwarf_line_info::buffer_start_): New data member.
3073         * merge.cc (Output_merge_data::do_add_input_section): Call
3074         Object::decompressed_section_contents.
3075         (Output_merge_string::do_add_input_section): Likewise.
3076         * object.cc (need_decompressed_section): New function.
3077         (build_compressed_section_map): Decompress sections needed later.
3078         (Sized_relobj_file::do_decompressed_section_contents): New function.
3079         (Sized_relobj_file::do_discard_decompressed_sections): New function.
3080         * object.h (Object::decompressed_section_contents): New function.
3081         (Object::discard_decompressed_sections): New function.
3082         (Object::do_decompressed_section_contents): New function.
3083         (Object::do_discard_decompressed_sections): New function.
3084         (Compressed_section_info): New type.
3085         (Compressed_section_map): Include decompressed section contents.
3086         (Sized_relobj_file::do_decompressed_section_contents): New function.
3087         (Sized_relobj_file::do_discard_decompressed_sections): New function.
3088
3089 2012-02-16  Cary Coutant  <ccoutant@google.com>
3090
3091         * testsuite/Makefile.am (initpri2): Add --ctors-in-init-array option.
3092         * testsuite/Makefile.in: Regenerate.
3093
3094 2012-02-14  Cary Coutant  <ccoutant@google.com>
3095
3096         * options.cc (General_options::finalize): Disallow -pie and -static.
3097
3098 2012-02-03  Doug Kwan  <dougkwan@google.com>
3099
3100         * arm.cc (Arm_relocate_functions::abs8,
3101         Arm_relocate_functions::abs16): Use
3102         Bits::has_signed_unsigned_overflow32.
3103         (Arm_relocate_functions::thm_abs8): Correct range of
3104         overflow check.
3105         * reloc.h (Bits class): Change minimum number of bits from 0 to 1
3106         in assertions.
3107
3108 2012-02-02  Doug Kwan  <dougkwan@google.com>
3109
3110         * arm.cc (Reloc_stub::stub_type_for_reloc): Use PIC stubs in all
3111         position independent outputs, not just shared objects.
3112
3113 2012-01-30  H.J. Lu  <hongjiu.lu@intel.com>
3114
3115         * configure.ac: Check if -fpic -mtls-dialect=gnu2 works.
3116         * configure: Regenerated.
3117
3118 2012-01-27  Ian Lance Taylor  <iant@google.com>
3119
3120         * reloc.h (Bits): New class with static functions, copied from
3121         namespace utils in arm.cc.
3122         * arm.cc (namespace utils): Remove.  Rewrite all uses to use Bits
3123         instead.
3124
3125 2012-01-27  H.J. Lu  <hongjiu.lu@intel.com>
3126
3127         * incremental.cc (write_info_blocks): Correct relocation offset.
3128
3129 2012-01-27  H.J. Lu  <hongjiu.lu@intel.com>
3130
3131         * x86_64.cc (Relocate::tls_gd_to_ie): Support x32.
3132         (Relocate::tls_gd_to_le): Likewise.
3133
3134 2012-01-27  H.J. Lu  <hongjiu.lu@intel.com>
3135
3136         * x86_64.cc (Scan::global): Support x32 IFUNC function pointer.
3137
3138 2012-01-27  H.J. Lu  <hongjiu.lu@intel.com>
3139
3140         * configure.ac: Check if -mcmodel=medium works.
3141         * configure: Regenerated.
3142
3143 2012-01-24  Cary Coutant  <ccoutant@google.com>
3144
3145         * int_encoding.cc (read_unsigned_LEB_128): Replaced with inline
3146         definition and ...
3147         (read_unsigned_LEB_128_x): ... this new function.
3148         (read_signed_LEB_128): Replaced with inline definition and ...
3149         (read_signed_LEB_128_x): ... this new function.
3150         * int_encoding.h  (read_unsigned_LEB_128_x): New function.
3151         (read_unsigned_LEB_128): Add inline definition.
3152         (read_signed_LEB_128_x): New function.
3153         (read_signed_LEB_128): Add inline definition.
3154         * testsuite/Makefile.am (leb128_unittest): New unit test.
3155         * testsuite/Makefile.in: Regenerate.
3156         * testsuite/leb128_unittest.cc: New unit test.
3157
3158 2012-01-23  Ian Lance Taylor  <iant@google.com>
3159
3160         PR gold/13617
3161         * i386.cc (Target_i386::do_code_fill): When using a jmp
3162         instruction, pad with nop instructions.
3163         * x86_64.cc (Target_x86_64::do_code_fill): Likewise.
3164
3165 2012-01-22  H.J. Lu  <hongjiu.lu@intel.com>
3166
3167         * x86_64.cc (gc_process_relocs): Add typename on types used in
3168         template.
3169         (scan_relocs): Likewise.
3170         (relocate_section): Likewise.
3171         (apply_relocation): Likewise.
3172
3173 2012-01-10  H.J. Lu  <hongjiu.lu@intel.com>
3174
3175         * x86_64.cc (Scan::check_non_pic): Allow R_X86_64_32 for x32.
3176         (Scan::local): Use R_X86_64_RELATIVE relocation for R_X86_64_32
3177         under x32.
3178
3179 2012-01-09  H.J. Lu  <hongjiu.lu@intel.com>
3180
3181         * x86_64.cc: Initial support for x32.
3182
3183 2012-01-03  Cary Coutant  <ccoutant@google.com>
3184
3185         * gold/incremental.cc (Sized_incremental_binary::do_process_got_plt):
3186         Use abstract base class for GOT.
3187         * gold/output.h (class Output_data_got_base): New abstract base class.
3188         (class Output_data_got): Derive from new base class, adjust ctors.
3189         (Output_data_got::reserve_slot): Make virtual; rename to
3190         do_reserve_slot; Adjust callers.
3191         * gold/target.h (Sized_target::init_got_plt_for_update): Return
3192         pointer to abstract base class.
3193         * gold/x86_64.cc (Target_x86_64::init_got_plt_for_update): Likewise.
3194
3195 2011-12-18  Ian Lance Taylor  <iant@google.com>
3196
3197         * object.h (Relobj::local_symbol_value): New function.
3198         (Relobj::local_plt_offset): New function.
3199         (Relobj::local_has_got_offset): New function.
3200         (Relobj::local_got_offset): New function.
3201         (Relobj::set_local_got_offset): New function.
3202         (Relobj::do_local_symbol_value): New pure virtual function.
3203         (Relobj::do_local_plt_offset): Likewise.
3204         (Relobj::do_local_has_got_offset): Likewise.
3205         (Relobj::do_local_got_offset): Likewise.
3206         (Relobj::do_set_local_got_offset): Likewise.
3207         (Sized_relobj::do_local_has_got_offset): Rename from
3208         local_has_got_offset.
3209         (Sized_relobj::do_local_got_offset): Rename from local_got_offset.
3210         (Sized_relobj::do_set_local_got_offset): Rename from
3211         set_local_got_offset.
3212         (Sized_relobj_file::do_local_plt_offset): Rename from
3213         local_plt_offset.
3214         (Sized_relobj_file::do_local_symbol_value): New function.
3215         * object.cc (Sized_relobj_file::do_local_plt_offset): Rename from
3216         local_plt_offset.
3217         * output.cc (Output_data_got::Got_entry::write): Change object to
3218         Relobj.  Use local_symbol_value.
3219         (Output_data_got::add_global_with_rel): Change rel_dyn to
3220         Output_data_reloc_generic*.  Use add_global_generic.
3221         (Output_data_got::add_global_with_rela): Remove.  Change all
3222         callers to use add_global_with_rel.
3223         (Output_data_got::add_global_pair_with_rel): Change rel_dyn to
3224         Output_data_reloc_generic*.  Use add_global_generic.
3225         (Output_data_got::add_global_pair_with_rela): Remove.  Change all
3226         callers to use add_global_pair_with_rel.
3227         (Output_data_got::add_local): Change object to Relobj*.
3228         (Output_data_got::add_local_plt): Likewise.
3229         (Output_data_got::add_local_with_rel): Change object to Relobj*,
3230         change rel_dyn to Output_data_reloc_generic*.  Use
3231         add_local_generic.
3232         (Output_data_got::add_local_with_rela): Remove.  Change all
3233         callers to use all_local_with_rel.
3234         (Output_data_got::add_local_pair_with_rel): Change object to
3235         Relobj*, change rel_dyn to Output_data_reloc_generic*.  Use
3236         add_output_section_generic.
3237         (Output_data_got::add_local_pair_with_rela): Remove.  Change all
3238         callers to use add_local_pair_with_rel.
3239         (Output_data_got::reserve_local): Change object to Relobj*.
3240         * output.h: (class Output_data_reloc_generic): Add pure virtual
3241         declarations for add_global_generic, add_local_generic,
3242         add_output_section_generic.
3243         (class Output_data_reloc) [SHT_REL, SHT_RELA]: Implement new
3244         functions for Output_data_reloc_generic.  Update declarations for
3245         changes listed in output.cc.
3246         (class Output_data_got): Change template parameter to got_size.
3247         Don't define Rel_dyn or Rela_dyn.  Update declarations per above.
3248         * incremental.h (Sized_relobj_incr::do_local_symbol_value): New
3249         function.
3250         (Sized_relobj_incr::do_local_plt_offset): New function.
3251         * copy-relocs.cc (Copy_relocs::Copy_reloc_entry::emit): Call
3252         add_global_generic.
3253
3254 2011-12-17  Cary Coutant  <ccoutant@google.com>
3255
3256         * dwarf_reader.cc (Sized_dwarf_line_info::read_lines): Add casts.
3257         * resolve.cc (Symbol_table::resolve): Likewise.
3258         * i386.cc (Target_i386::do_code_fill): Use char constants for nop
3259         arrays.
3260         * x86_64.cc (Target_x86_64::do_code_fill): Likewise.
3261
3262 2011-12-16  Ian Lance Taylor  <iant@google.com>
3263
3264         * output.h (Output_data_reloc_generic::add): Only call
3265         add_dynamic_reloc if this is a dynamic reloc section.
3266
3267 2011-12-15  H.J. Lu  <hongjiu.lu@intel.com>
3268
3269         PR gold/13505
3270         * target-reloc.h (apply_relocation): Replace <64, false> with
3271         <size, big_endian>.
3272
3273 2011-11-25  Nick Clifton  <nickc@redhat.com>
3274
3275         * po/it.po: New Italian translation.
3276
3277 2011-11-17  Sterling Augustine  <saugustine@google.com>
3278
3279         * script.cc (script_include_directive): Implement.
3280         (read_script_file): New local variables name and search_path. Update
3281         comment. Call IS_ABSOLUTE_PATH and Dirsearch::find_file_in_dir_list.
3282         * dirsearch.h (Dirsearch::find_file_in_dir_list): Declare new method.
3283         * dirsearch.cc (Dirsearch::find_file_in_dir_list): Implement it.
3284
3285 2011-11-11  Sterling Augustine  <saugustine@google.com>
3286
3287         * yyscript.y (section_cmd): Add support for INCLUDE directive.
3288         (file_or_sections_cmd): Likewise.
3289
3290 2011-11-11  Doug Kwan  <dougkwan@google.com>
3291
3292         * arm.cc (Target_arm::do_make_elf_object): Allow executable also
3293         if --just-symbols is given.
3294
3295 2011-11-10  Doug Kwan  <dougkwan@google.com>
3296
3297         PR gold/13362
3298         * arm.cc (Target_arm::Relocate::relocate_tls): Do unaligned accesses
3299         when processing data relocs.
3300         * reloc.h (Relocate_functions::rel_unaligned): New method.
3301         (Relocate_functions::pcrel_unaligned): Ditto.
3302         (Relocate_functions::rel32_unaligned): Ditto.
3303         (Relocate_functions::pcrel32_unaligned): Ditto.
3304
3305 2011-11-09  Doug Kwan  <dougkwan@google.com>
3306
3307         PR gold/13362
3308         * arm.cc (Arm_scan_relocatable_relocs::Default_scan_relocatable_relocs):
3309         Use unaligned 4-byte relocs for static 32-bit data as required by EABI.
3310         * reloc.h (Relocatable_relocs::Reloc_strategy): New enum
3311         RELOC_ADJUST_FOR_SECTION_4_UNALIGNED.
3312         (Relocate_functions::rel_unaligned): New.
3313         (Relocate_functions::rel32_unaligned): New.
3314         * target-reloc.h (relocate_for_relocatable): Add code to handle
3315         RELOC_ADJUST_FOR_SECTION_4_UNALIGNED.
3316         * testsuite/Makefile.am (arm_unaligned_reloc_r.stdout,
3317         arm_unaligned_reloc_r): New targets.
3318         * testsuite/Makefile.in: Regenerate.
3319         * arm_unaligned_reloc.sh: Check unaligned relocs in relocatable
3320         linking.
3321
3322 2011-11-02  Ian Lance Taylor  <iant@google.com>
3323
3324         * configure.ac: Add --with-lib-path option.  Define LIB_PATH and
3325         NATIVE_LINKER.
3326         * Makefile.am (AM_CPPFLAGS): Define TOOLLIBDIR.
3327         * options.cc (General_options::finalize): Use library search path
3328         from configure script if specified.  If not native and no sysroot,
3329         only search TOOLLIBDIR.
3330         * options.h (Search_directory::Search_directory): Change name to
3331         const std::string&.
3332         (General_options::add_to_library_path_with_sysroot): Change arg to
3333         const std::string&.
3334         * configure, Makefile.in, config.in: Rebuild.
3335
3336 2011-11-02  Matthew Gretton-Dann  <matthew.gretton-dann@arm.com>
3337
3338         * arm.cc (Target_arm::may_use_v5t_interworking): Check whether
3339         we are working around the ARM1176 Erratum.
3340         * options.h (General_options::fix_arm1176): Add option.
3341         * testsuite/Makefile.am: Add testcases, and keep current ones
3342         working.
3343         * testsuite/Makefile.in: Regenerate.
3344         * testsuite/arm_fix_1176.s: New file.
3345         * testsuite/arm_fix_1176.sh: Likewise.
3346
3347 2011-11-02  Matthew Gretton-Dann  <matthew.gretton-dann@arm.com>
3348
3349         * arm.cc (Target_arm::Target_arm): Remove initialisation of
3350         may_use_blx_.
3351         (Target_arm::may_use_blx): Remove method.
3352         (Target_arm::set_may_use_blx): Likewise.
3353         (Target_arm::may_use_v4t_interworking): New method.
3354         (Target_arm::may_use_v5t_interworking): Likewise.
3355         (Target_arm::may_use_blx_): Remove member variable.
3356         (Arm_relocate_functions::arm_branch_common): Check for v5T
3357         interworking.
3358         (Arm_relocate_functions::thumb_branch_common): Likewise.
3359         (Reloc_stub::stub_type_for_reloc): Likewise.
3360         (Target_arm::do_finalize_sections): Correct interworking checks.
3361         * testsuite/Makefile.am: Add new tests.
3362         * testsuite/Makefile.in: Regenerate.
3363         * testsuite/arm_farcall_arm_arm.s: New test.
3364         * testsuite/arm_farcall_arm_arm.sh: Likewise.
3365         * testsuite/arm_farcall_arm_thumb.s: Likewise.
3366         * testsuite/arm_farcall_arm_thumb.sh: Likewise.
3367         * testsuite/arm_farcall_thumb_arm.s: Likewise.
3368         * testsuite/arm_farcall_thumb_arm.sh: Likewise.
3369         * testsuite/arm_farcall_thumb_thumb.s: Likewise.
3370         * testsuite/arm_farcall_thumb_thumb.sh: Likewise.
3371
3372 2011-10-31  Cary Coutant  <ccoutant@google.com>
3373
3374         PR gold/13023
3375         * expression.cc (Expression::eval_with_dot): Add
3376         is_section_dot_assignment parameter.
3377         (Expression::eval_maybe_dot): Likewise.  Adjust value when rhs is
3378         absolute and assigning to dot within a section.
3379         * script-sections.cc
3380         (Output_section_element_assignment::set_section_addresses): Pass
3381         dot_section to set_if_absolute.
3382         (Output_section_element_dot_assignment::finalize_symbols): Pass TRUE
3383         as is_section_dot_assignment flag to eval_with_dot.
3384         (Output_section_element_dot_assignment::set_section_addresses):
3385         Likewise.
3386         * script.cc (Symbol_assignment::set_if_absolute): Add dot_section
3387         parameter.  Also set value if relative to dot_section; set the
3388         symbol's output_section.
3389         * script.h (Expression::eval_with_dot): Add is_section_dot_assignment
3390         parameter.  Adjust all callers.
3391         (Expression::eval_maybe_dot): Likewise.
3392         (Symbol_assignment::set_if_absolute): Add dot_section parameter.
3393         Adjust all callers.
3394         * testsuite/script_test_2.t: Test assignment of an absolute value
3395         to dot within an output section element.
3396
3397 2011-10-31  Cary Coutant  <ccoutant@google.com>
3398
3399         * options.h (class General_options): Add --[no-]gnu-unique options.
3400         * symtab.cc (Symbol_table::sized_write_globals): Convert
3401         STB_GNU_UNIQUE to STB_GLOBAL if --no-gnu-unique.
3402
3403 2011-10-31  Cary Coutant  <ccoutant@google.com>
3404
3405         PR gold/13359
3406         * i386.cc (Target_i386::Relocate::relocate_tls): Remove
3407         unnecessary assertion.
3408         * x86_64.cc (Target_x86_64::Relocate::relocate_tls): Likewise.
3409
3410 2011-10-31 Sriraman Tallam  <tmsriram@google.com>
3411
3412         * symtab.h (Symbol_table::gc_mark_symbol_for_shlib): Rename to
3413         gc_mark_symbol.
3414         * symtab.cc (Symbol_table::gc_mark_symbol_for_shlib): Rename to
3415         gc_mark_symbol.
3416         Change to just keep the section associated with symbol.
3417         (Symbol_table::add_from_relobj): Mark symbols as not garbage when
3418         they are externally visible and --export-dynamic is turned on.
3419         (Symbol_table::gc_mark_dyn_syms): Call gc_mark_symbol.
3420
3421 2011-10-19  Ian Lance Taylor  <iant@google.com>
3422
3423         PR gold/13163
3424         * script-sections.cc
3425         (Output_section_element_dot_assignment::needs_output_section): New
3426         function.
3427
3428 2011-10-19  Ian Lance Taylor  <iant@google.com>
3429
3430         PR gold/13204
3431         * layout.cc (Layout::segment_precedes): Don't assert failure if a
3432         --section-start option was seen.
3433         * options.h (General_options::any_section_start): New function.
3434
3435 2011-10-18  David S. Miller  <davem@davemloft.net>
3436
3437         PR binutils/13301
3438         * sparc.cc (Target_sparc::Relocate::reloc_adjust_addr_): New
3439         member to track relocation locations that have moved during TLS
3440         reloc optimizations.
3441         (Target_sparc::Relocate::Relocate): Initialize to NULL.
3442         (Target_sparc::Relocate::relocate): Adjust view down by 4
3443         bytes if it matches reloc_adjust_addr_.
3444         (Target_sparc::Relocate::relocate_tls): Always move the
3445         __tls_get_addr call delay slot instruction forward 4 bytes when
3446         performing relaxation.
3447
3448 2011-10-18  Cary Coutant  <ccoutant@google.com>
3449
3450         * output.cc (posix_fallocate): Return 0 on success, errno on failure.
3451         (Output_file::map_no_anonymous): Check for non-zero
3452         return code from posix_fallocate.
3453
3454 2011-10-17  Cary Coutant  <ccoutant@google.com>
3455
3456         PR gold/13245
3457         * plugin.cc (is_visible_from_outside): Check for symbols
3458         referenced from dynamic objects.
3459         * resolve.cc (Symbol_table::resolve): Don't count references
3460         from dynamic objects as references from real ELF files.
3461         * testsuite/plugin_test_2.sh: Adjust expected result.
3462
3463 2011-10-17  Cary Coutant  <ccoutant@google.com>
3464
3465         * gold.cc: Include timer.h.
3466         (queue_middle_tasks): Stamp time.
3467         (queue_final_tasks): Likewise.
3468         * main.cc (main): Store timer in parameters.  Print timers
3469         for each pass.
3470         * parameters.cc (Parameters::Parameters): Initialize timer_.
3471         (Parameters::set_timer): New function.
3472         (set_parameters_timer): New function.
3473         * parameters.h (Parameters::set_timer): New function.
3474         (Parameters::timer): New function.
3475         (Parameters::timer_): New data member.
3476         (set_parameters_timer): New function.
3477         * timer.cc (Timer::stamp): New function.
3478         (Timer::get_pass_time): New function.
3479         * timer.h (Timer::stamp): New function.
3480         (Timer::get_pass_time): New function.
3481         (Timer::pass_times_): New data member.
3482
3483 2011-10-17  Cary Coutant  <ccoutant@google.com>
3484
3485         * readsyms.cc (Read_symbols::run): Don't queue an unblocker
3486         task for members of lib groups.
3487
3488 2011-10-17  Cary Coutant  <ccoutant@google.com>
3489
3490         PR gold/13288
3491         * fileread.cc (File_read::find_view): Add assert.
3492         (File_read::make_view): Move bounds check (replace with assert)...
3493         (File_read::find_or_make_view): ... to here.
3494
3495 2011-10-12  Cary Coutant  <ccoutant@google.com>
3496
3497         * output.cc (Output_file::open_base_file): Handle case where
3498         ::read returns less than requested size.
3499
3500 2011-10-10  Cary Coutant  <ccoutant@google.com>
3501
3502         * incremental.cc (Sized_relobj_incr::Sized_relobj_incr):
3503         Initialize defined_count_.
3504         (Sized_relobj_incr::do_add_symbols): Count defined symbols.
3505         (Sized_relobj_incr::do_get_global_symbol_counts): Rewrite.
3506         (Sized_incr_dynobj::Sized_incr_dynobj): Initialize defined_count_.
3507         (Sized_incr_dynobj::do_add_symbols): Count defined symbols.
3508         (Sized_incr_dynobj::do_get_global_symbol_counts): Rewrite.
3509         * incremental.h (Sized_relobj_incr::defined_count_): New data
3510         member.
3511         (Sized_incr_dynobj::defined_count_): New data member.
3512         * plugin.cc (Sized_pluginobj::do_get_global_symbol_counts):
3513         Return zeroes instead of internal error.
3514
3515 2011-10-10  Cary Coutant  <ccoutant@google.com>
3516
3517         PR gold/13249
3518         * output.cc (Output_reloc::Output_reloc): Add use_plt_offset flag.
3519         (Output_reloc::symbol_value): Return PLT offset if flag is set.
3520         * output.h (class Output_reloc): Add use_plt_offset flag.
3521         (Output_reloc::type_): Adjust size of bit field.
3522         (Output_reloc::use_plt_offset_): New bit field.
3523         (class Output_data_reloc): Adjust all calls to Output_reloc_type.
3524         (Output_data_reloc::add_local_relative): (RELA only) Add use_plt_offset
3525         flag.  Adjust all callers.
3526         * x86_64.cc (Target_x86_64::Scan::local): Check for IFUNC when
3527         creating RELATIVE relocations.
3528
3529 2011-10-10  Nick Clifton  <nickc@redhat.com>
3530
3531         * po/es.po: Updated Spanish translation.
3532         * po/fi.po: Updated Finnish translation.
3533
3534 2011-10-03   Diego Novillo  <dnovillo@google.com>
3535
3536         * options.cc (parse_uint): Fix dereference of RETVAL.
3537
3538 2011-09-29  Sriraman Tallam  <tmsriram@google.com>
3539
3540         * layout.h (section_order_map_): New member.
3541         (get_section_order_map): New member function.
3542         * output.cc (Output_section::add_input_section): Check for patterns
3543         only when --section-ordering-file is specified.
3544         * gold.cc (queue_middle_tasks): Delay updating order of sections till
3545         output_sections have been formed.
3546         * layout.cc (Layout_Layout): Initialize section_order_map_.
3547         * plugin.cc (update_section_order): Store order in order_map. Do not
3548         update the order.
3549         * testsuite/Makefile.am: Add test case for plugin_final_layout.
3550         * testsuite/Makefile.in: Regenerate.
3551         * testsuite/plugin_section_order.c: New file.
3552         * testsuite/plugin_final_layout.cc: New file.
3553         * testsuite/plugin_final_layout.sh: New file.
3554
3555 2011-09-29  Cary Coutant  <ccoutant@google.com>
3556
3557         * incremental.cc (Sized_incremental_binary::do_process_got_plt):
3558         Check for NULL.
3559         * symtab.cc (Symbol_table::add_from_relobj): Ignore version
3560         symbols during incremental update.
3561         (Symbol_table::add_from_dynobj): Likewise.
3562
3563 2011-09-27  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
3564             Ian Lance Taylor  <iant@google.com>
3565
3566         * symtab.cc (Symbol_table::define_special_symbol): Always
3567         canonicalize version string.
3568
3569 2011-09-26  Cary Coutant  <ccoutant@google.com>
3570
3571         * gold.cc (queue_initial_tasks): Move option checks ...
3572         * options.cc (General_options::finalize): ... to here. Disable
3573         some options; make others fatal.
3574
3575 2011-09-26  Cary Coutant  <ccoutant@google.com>
3576
3577         gcc PR lto/47247
3578         * plugin.cc (get_symbols_v2): New function.
3579         (Plugin::load): Add LDPT_GET_SYMBOLS_V2.
3580         (is_referenced_from_outside): New function.
3581         (Pluginobj::get_symbol_resolution_info): Add version parameter, return
3582         LDPR_PREVAILING_DEF_IRONLY_EXP when using new version.
3583         (get_symbols): Pass version parameter.
3584         (get_symbols_v2): New function.
3585         * plugin.h (Pluginobj::get_symbol_resolution_info): Add version
3586         parameter.
3587         * testsuite/plugin_test.c (get_symbols_v2): New static variable.
3588         (onload): Add LDPT_GET_SYMBOLS_V2.
3589         (all_symbols_read_hook): Use get_symbols_v2; check for
3590         LDPR_PREVAILING_DEF_IRONLY_EXP.
3591         * testsuite/plugin_test_3.sh: Update expected results.
3592
3593 2011-09-23  Simon Baldwin  <simonb@google.com>
3594
3595         * configure.ac: Add new --with-gold-ldadd and --with-gold-ldflags
3596         configuration options.
3597         * configure: Regenerate.
3598         * Makefile.am: Handle GOLD_LDADD and GOLD_LDFLAGS.
3599         * Makefile.in: Regenerate.
3600         * testsuite/Makefile.in: Regenerate.
3601
3602 2011-09-19  Sriraman Tallam  <tmsriram@google.com>
3603
3604         * plugin.h (should_defer_layout): Modify to check for any_claimed_.
3605
3606 2011-09-19  Cary Coutant  <ccoutant@google.com>
3607
3608         * incremental.cc (can_incremental_update): Fix typo in comment.
3609         * incremental.h (can_incremental_update): Likewise.
3610
3611 2011-09-18  Cary Coutant  <ccoutant@google.com>
3612
3613         * incremental.cc (can_incremental_update): New function.
3614         * incremental.h (can_incremental_update): New function.
3615         * layout.cc (Layout::init_fixed_output_section): Call it.
3616         (Layout::make_output_section): Don't allow patch space in .eh_frame.
3617         * object.cc (Sized_relobj_file::do_layout): Call
3618         can_incremental_update.
3619
3620 2011-09-13  Cary Coutant  <ccoutant@google.com>
3621
3622         * configure.ac: Check for glibc support for gnu_indirect_function
3623         support with static linking, setting automake conditional
3624         IFUNC_STATIC.
3625         * Makefile.in: Regenerate.
3626         * configure: Regenerate.
3627
3628         * testsuite/Makefile.am (ifuncmain1static, ifuncmain2static)
3629         (ifuncmain4static, ifuncmain5static, ifuncmain7static): Add check
3630         for IFUNC_STATIC.
3631         * testsuite/Makefile.in: Regenerate.
3632
3633 2011-09-13  Cary Coutant  <ccoutant@google.com>
3634
3635         * incremental.cc (Sized_relobj_incr::do_layout): Call
3636         report_comdat_group for kept comdat sections.
3637         * testsuite/Makefile.am (incremental_comdat_test_1): New test.
3638         * testsuite/Makefile.in: Regenerate.
3639         * testsuite/incr_comdat_test_1.cc: New source file.
3640         * testsuite/incr_comdat_test_2_v1.cc: New source file.
3641         * testsuite/incr_comdat_test_2_v2.cc: New source file.
3642         * testsuite/incr_comdat_test_2_v3.cc: New source file.
3643
3644 2011-09-13  Ian Lance Taylor  <iant@google.com>
3645
3646         * object.cc (Sized_relobj_file::do_layout): Remove unused local
3647         variable external_symbols_offset.
3648
3649 2011-09-12  Ian Lance Taylor  <iant@google.com>
3650
3651         * object.cc (Sized_relobj_file::do_layout): Remove assertion which
3652         triggered if object has no symbols.
3653
3654 2011-09-09  David S. Miller  <davem@davemloft.net>
3655
3656         * output.cc (Output_fill_debug_info::do_write): Use Swap_unaligned.
3657         (Output_fill_debug_line::do_write): Likewise.
3658
3659 2011-08-29  Cary Coutant  <ccoutant@google.com>
3660
3661         * output.cc: (Output_fill_debug_info::do_minimum_hole_size): Add
3662         casts to match formatting specs.
3663         (Output_fill_debug_line::do_minimum_hole_size): Likewise.
3664
3665 2011-08-26  Cary Coutant  <ccoutant@google.com>
3666
3667         * layout.cc (Free_list::allocate): Provide guarantee of minimum
3668         remaining hole size when allocating.
3669         (Layout::make_output_section): Set fill methods for debug sections.
3670         * layout.h (Free_list::Free_list_node): Move from private to
3671         public.
3672         (Free_list::set_min_hole_size): New function.
3673         (Free_list::begin, Free_list::end): New functions.
3674         (Free_list::min_hole_): New data member.
3675         * output.cc: Include dwarf.h.
3676         (Output_fill_debug_info::do_minimum_hole_size): New function.
3677         (Output_fill_debug_info::do_write): New function.
3678         (Output_fill_debug_line::do_minimum_hole_size): New function.
3679         (Output_fill_debug_line::do_write): New function.
3680         (Output_section::Output_section): Initialize new data member.
3681         (Output_section::set_final_data_size): Ensure patch space is larger
3682         than minimum hole size.
3683         (Output_section::do_write): Fill holes in debug sections.
3684         * output.h (Output_fill): New class.
3685         (Output_fill_debug_info): New class.
3686         (Output_fill_debug_line): New class.
3687         (Output_section::set_free_space_fill): New function.
3688         (Output_section::free_space_fill_): New data member.
3689         * testsuite/Makefile.am (incremental_test_3): Add
3690         --incremental-patch option.
3691         (incremental_test_4): Likewise.
3692         (incremental_test_5): Likewise.
3693         (incremental_test_6): Likewise.
3694         (incremental_copy_test): Likewise.
3695         (incremental_common_test_1): Likewise.
3696         * testsuite/Makefile.in: Regenerate.
3697
3698 2011-08-26  Nick Clifton  <nickc@redhat.com>
3699
3700         * po/es.po: Updated Spanish translation.
3701
3702 2011-08-01  Cary Coutant  <ccoutant@google.com>
3703
3704         * gold/testsuite/Makefile.am (justsyms_exec): New testcase.
3705         * gold/testsuite/Makefile.in: Regenerate.
3706         * gold/testsuite/justsyms_exec.c: New source file.
3707         * gold/testsuite/justsyms_lib.c: New source file.
3708
3709 2011-08-01  Cary Coutant  <ccoutant@google.com>
3710
3711         * layout.cc (Layout::set_segment_offsets): Don't realign text
3712         segment if -Ttext was specified.
3713         * object.cc (Sized_relobj_file::Sized_relobj_file): Store the ELF
3714         file type.
3715         * object.h (Sized_relobj_file::e_type): New function.
3716         (Sized_relobj_file::e_type_): New data member.
3717         * symtab.cc (Symbol_table::add_from_relobj): Don't add section
3718         base address for ET_EXEC files.
3719         * target.cc (Target::do_make_elf_object_implementation): Allow
3720         ET_EXEC files with --just-symbols option.
3721
3722 2011-07-28  Cary Coutant  <ccoutant@google.com>
3723
3724         * workqueue-internal.h (Workqueue_threader::should_cancel_thread):
3725         Add thread_number parameter.
3726         (Workqueue_threader_threadpool::should_cancel_thread): Likewise.
3727         * workqueue-threads.cc
3728         (Workqueue_threader_threadpool::should_cancel_thread): Cancel
3729         current thread if its thread number is greater than desired thread
3730         count.
3731         * workqueue.cc (Workqueue_threader_single::should_cancel_thread):
3732         Add thread_number parameter.
3733         (Workqueue::should_cancel_thread): Likewise.
3734         (Workqueue::find_runnable_or_wait): Pass thread_number to
3735         should_cancel_thread.
3736         * workqueue.h (Workqueue::should_cancel_thread): Add thread_number
3737         parameter.
3738
3739 2011-07-22  Sriraman Tallam  <tmsriram@google.com>
3740
3741         * symtab.cc (Symbol_table::add_from_relobj): Mark symbol as referenced
3742         only after checking if it cannot be forced local.
3743         * symtab.h (is_externally_visible): Check if the symbol is not forced
3744         local.
3745
3746 2011-07-15  Ian Lance Taylor  <iant@google.com>
3747
3748         * options.h (class General_options): Add --print-output-format.
3749         Move -EL next to -EB, for  better --help output.
3750         * target-select.cc: Include <cstdio>, "options.h", and
3751         "parameters.h".
3752         (Target_selector::do_target_bfd_name): New function.
3753         (print_output_format): New function.
3754         * target-select.h (class Target_selector): Update declarations.
3755         (Target_selector::target_bfd_name): New function.
3756         (print_output_format): Declare.
3757         * main.cc: Include "target-select.h".
3758         (main): Handle --print-output-format.
3759         * gold.cc: Include "target-select.h".
3760         (queue_initial_tasks): Handle --print-output-format when there are
3761         no input files.
3762         * parameters.cc (parameters_force_valid_target): Give a better
3763         error message if -EB/-EL does not match target.
3764         * freebsd.h (Target_selector_freebsd::do_target_bfd_name): New
3765         function.
3766
3767 2011-07-15  Ian Lance Taylor  <iant@google.com>
3768
3769         * i386.cc (class Output_data_plt_i386): Add layout_ field.
3770         (Output_data_plt_i386::Output_data_plt_i386): Initialize layout_.
3771         (Output_data_plt_i386::do_write): Write address of .dynamic
3772         section to first entry in .got.plt section.
3773         * x86_64.cc (class Output_data_plt_x86_64): Add layout_ field.
3774         (Output_data_plt_x86_64::Output_data_plt_x86_64) [both versions]:
3775         Initialize layout_.
3776         (Output_data_plt_x86_64::do_write): Write address of .dynamic
3777         section to first entry in .got.plt section.
3778         * layout.h (Layout::dynamic_section): New function.
3779
3780 2011-07-13  Sriraman Tallam  <tmsriram@google.com>
3781
3782         * archive.cc (Archive::get_elf_object_for_member): Add extra parameter
3783         to claim_file call.
3784         * layout.cc (Layout::Layout): Initialize section_ordering_specified_,
3785         input_section_position_, and input_section_glob_.
3786         (read_layout_from_file): Call function section_ordering_specified.
3787         * layout.h (is_section_ordering_specified): New function.
3788         (section_ordering_specified): New function.
3789         (section_ordering_specified_): New boolean member.
3790         * main.cc(main): Call load_plugins after layout object is defined.
3791         * output.cc (Output_section::add_input_section): Use
3792         function section_ordering_specified to check if section ordering is
3793         needed.
3794         * output.cc (Output_section::add_relaxed_input_section): Use
3795         function section_ordering_specified to check if section ordering is
3796         needed.
3797         (Output_section::update_section_layout): New function.
3798         (Output_section::sort_attached_input_sections): Check if input section
3799         must be reordered.
3800         * output.h (Output_section::update_section_layout): New function.
3801         * plugin.cc (get_section_count): New function.
3802         (get_section_type): New function.
3803         (get_section_name): New function.
3804         (get_section_contents): New function.
3805         (update_section_order): New function.
3806         (allow_section_ordering): New function.
3807         (Plugin::load): Add the new interfaces to the transfer vector.
3808         (Plugin_manager::load_plugins): New parameter.
3809         (Plugin_manager::all_symbols_read): New parameter.
3810         (Plugin_manager::claim_file): New parameter. Save the elf object for
3811         unclaimed objects.
3812         (Plugin_manager::get_elf_object): New function.
3813         (Plugin_manager::get_view): Change to directly use the bool to check
3814         if get_view is called from claim_file_hook.
3815         * plugin.h (input_objects): New function
3816         (Plugin__manager::load_plugins): New parameter.
3817         (Plugin_manager::claim_file): New parameter.
3818         (Plugin_manager::get_elf_object): New function.
3819         (Plugin_manager::in_claim_file_handler): New function.
3820         (Plugin_manager::in_claim_file_handler_): New member.
3821         (layout): New function.
3822         * readsyms.cc (Read_symbols::do_read_symbols): Call the claim_file
3823         handler with an extra parameter. Make the elf object before calling
3824         claim_file handler.
3825         * testsuite/plugin_test.c (get_section_count): New function pointer.
3826         (get_section_type): New function pointer.
3827         (get_section_name): New function pointer.
3828         (get_section_contents): New function pointer.
3829         (update_section_order): New function pointer.
3830         (allow_section_ordering): New function pointer.
3831         (onload): Check if the new interfaces exist.
3832
3833 2011-07-13  Ian Lance Taylor  <iant@google.com>
3834
3835         * i386.cc (Target_i386::got_section): If -z now, make .got.plt a
3836         relro section.
3837         * x86_64.cc (Target_x86_64::got_section): Likewise.
3838         * testsuite/Makefile.am (check_PROGRAMS): Add relro_now_test.
3839         (relro_now_test_SOURCES): New variable.
3840         (relro_now_test_DEPENDENCIES): New variable.
3841         (relro_now_test_LDFLAGS): New variable.
3842         (relro_now_test_LDADD): New variable.
3843         (relro_now_test.so): New target.
3844         * testsuite/Makefile.in: Rebuild.
3845
3846 2011-07-12  Ian Lance Taylor  <iant@google.com>
3847
3848         PR gold/12980
3849         * i386.cc (Target_i386::Scan::global): For a GOT reloc, use a
3850         GLOB_DAT relocation rather than a RELATIVE relocation for a
3851         protected symbol when creating a shared library.
3852         * x86_64.cc (Target_x86_64::Scan::global): Likewise.
3853         * testsuite/protected_1.cc (f2, get_f2_addr): New functions.
3854         * testsuite/protected_main_1.cc (main): Test that protected
3855         function has same address.
3856
3857 2011-07-11  Ian Lance Taylor  <iant@google.com>
3858
3859         PR gold/12979
3860         * options.h (class General_options): Add -Bgroup.
3861         * options.cc (General_options::finalize): If -Bgroup is set,
3862         default to --unresolved-symbols=report-all.
3863         * layout.cc (Layout::finish_dynamic_section): Implement -Bgroup.
3864         * target-reloc.h (issue_undefined_symbol_error): Handle
3865         --unresolved-symbols=report-all.
3866
3867 2011-07-08  Ian Lance Taylor  <iant@google.com>
3868
3869         PR gold/11985
3870         * layout.cc (Layout::create_initial_dynamic_sections): Don't crash
3871         if linker script discards key sections.
3872         (Layout::create_dynamic_symtab): Likewise.
3873         (Layout::assign_local_dynsym_offsets): Likewise.
3874         (Layout::sized_create_version_sections): Likewise.
3875         (Layout::create_interp): Likewise.
3876         (Layout::finish_dynamic_section): Likewise.
3877         (Layout::set_dynamic_symbol_size): Likewise.
3878
3879 2011-07-08  Ian Lance Taylor  <iant@google.com>
3880
3881         PR gold/12386
3882         * options.h (class General_options): Add --unresolved-symbols.
3883         * target-reloc.h (issue_undefined_symbol_error): Check
3884         --unresolved-symbols.  Add comments.
3885
3886 2011-07-08  Ian Lance Taylor  <iant@google.com>
3887
3888         * testsuite/odr_violation2.cc (Ordering::operator()): Make
3889         expression more complex.
3890
3891 2011-07-08  Ian Lance Taylor  <iant@google.com>
3892
3893         PR gold/11317
3894         * target-reloc.h (issue_undefined_symbol_error): New inline
3895         function, broken out of relocate_section.
3896         (relocate_section): Call issue_undefined_symbol_error.
3897         * i386.cc (Target_i386::Relocate::relocate_tls): Don't crash if
3898         there is no TLS segment if we are about to issue an undefined
3899         symbol error.
3900         * x86_64.cc (Target_x86_64::relocate_tls): Likewise.
3901
3902 2011-07-08  Ian Lance Taylor  <iant@google.com>
3903
3904         PR gold/12279
3905         * resolve.cc (Symbol_table::should_override): Add fromtype
3906         parameter.  Change all callers.  Give error when linking together
3907         TLS and non-TLS symbol.
3908         (Symbol_table::should_override_with_special): Add fromtype
3909         parameter.  Change all callers.
3910         * i386.cc (Target_i386::Relocate::relocate_tls): Don't crash if
3911         there is no TLS segment if we have reported some errors.
3912         * x86_64.cc (Target_x86_64::relocate_tls): Likewise.
3913
3914 2011-07-08  Ian Lance Taylor  <iant@google.com>
3915
3916         PR gold/12372
3917         * target.h (Target::plt_address_for_global): New function.
3918         (Target::plt_address_for_local): New function.
3919         (Target::plt_section_for_global): Remove.
3920         (Target::plt_section_for_local): Remove.
3921         (Target::do_plt_address_for_global): New virtual function.
3922         (Target::do_plt_address_for_local): New virtual function.
3923         (Target::do_plt_section_for_global): Remove.
3924         (Target::do_plt_section_for_local): Remove.
3925         (Target::register_global_plt_entry): Add Symbol_table and Layout
3926         parameters.
3927         * output.cc (Output_data_got::Got_entry::write): Use
3928         plt_address_for_global and plt_address_for_local.
3929         * layout.cc (Layout::add_target_dynamic_tags): Use size and
3930         address of output section.
3931         * i386.cc (class Output_data_plt_i386): Add irelative_rel_,
3932         got_irelative_, and irelative_count_ fields.  Update
3933         declarations.
3934         (Output_data_plt_i386::has_irelative_section): New function.
3935         (Output_data_plt_i386::entry_count): Add irelative_count_.
3936         (Output_data_plt_i386::set_final_data_size): Likewise.
3937         (class Target_i386): Add got_irelative_ and rel_irelative_
3938         fields.  Update declarations.
3939         (Target_i386::Target_i386): Initialize new fields.
3940         (Target_i386::do_plt_address_for_global): New function replacing
3941         do_plt_section_for_global.
3942         (Target_i386::do_plt_address_for_local): New function replacing
3943         do_plt_section_for_local.
3944         (Target_i386::got_section): Create got_irelative_.
3945         (Target_i386::rel_irelative_section): New function.
3946         (Output_data_plt_i386::Output_data_plt_i386): Initialize new
3947         fields.  Don't define __rel_iplt_{start,end}.
3948         (Output_data_plt_i386::add_entry): Add symtab and layout
3949         parameters.  Change all callers.  Use different PLT and GOT for
3950         IFUNC symbols.
3951         (Output_data_plt_i386::add_local_ifunc_entry): Add symtab and
3952         layout parameters.  Change all callers.  Use different PLT and
3953         GOT.
3954         (Output_data_plt_i386::rel_tls_desc): Fix formatting.
3955         (Output_data_plt_i386::rel_irelative): New function.
3956         (Output_data_plt_i386::address_for_global): New function.
3957         (Output_data_plt_i386::address_for_local): New function.
3958         (Output_data_plt_i386::do_write): Write out IRELATIVE area.  Use
3959         IRELATIVE GOT when changing IFUNC GOT entries.
3960         (Target_i386::Scan::global): Use IRELATIVE GOT for IRELATIVE
3961         reloc.
3962         (Target_i386::do_finalize_sections): Create the __rel_iplt symbols
3963         if we didn't create an IRELATIVE GOT.
3964         (Target_i386::Relocate::relocate): Use plt_address_for_global and
3965         plt_address_for_local.
3966         (Target_i386::do_dynsym_value): Use plt_address_for_global.
3967         * x86_64.cc (class Output_data_plt_x86_64): Add irelative_rel_,
3968         got_irelative_, and irelative_count_ fields.  Update
3969         declarations.
3970         (Output_data_plt_x86_64::Output_data_plt_x86_64) [both versions]:
3971         Initialize new fields.  Remove symtab parameter.  Change all
3972         callers.
3973         (Output_data_plt_x86_64::get_tlsdesc_plt_offset): Add
3974         irelative_count_.
3975         (Output_data_plt_x86_64::has_irelative_section): New function.
3976         (Output_data_plt_x86_64::entry_count): Add irelative_count_.
3977         (class Target_x86_64): Add got_irelative_ and rel_irelative_
3978         fields.  Update declarations.
3979         (Target_x86_64::Target_x86_64): Initialize new fields.
3980         (Target_x86_64::do_plt_address_for_global): New function replacing
3981         do_plt_section_for_global.
3982         (Target_x86_64::do_plt_address_for_local): New function replacing
3983         do_plt_section_for_local.
3984         (Target_x86_64::got_section): Create got_irelative_.
3985         (Target_x86_64::rela_irelative_section): New function.
3986         (Output_data_plt_x86_64::init): Remove symtab parameter.  Change
3987         all callers.  Don't create __rel_iplt_{start,end}.
3988         (Output_data_plt_x86_64::add_entry): Add symtab and layout
3989         parameters.  Change all callers.  Use different PLT and GOT for
3990         IFUNC symbols.
3991         (Output_data_plt_x86_64::add_local_ifunc_entry): Add symtab and
3992         layout parameters.  Change all callers.  Use different PLT and
3993         GOT.
3994         (Output_data_plt_x86_64::add_relocation): Add symtab and layout
3995         parameters.  Change all callers.  Use different PLT and GOT for
3996         IFUNC symbols.
3997         (Output_data_plt_x86_64::rela_tlsdesc): Fix formatting.
3998         (Output_data_plt_x86_64::rela_irelative): New function.
3999         (Output_data_plt_x86_64::address_for_global): New function.
4000         (Output_data_plt_x86_64::address_for_local): New function.
4001         (Output_data_plt_x86_64::set_final_data_size): Likewise.
4002         (Output_data_plt_x86_64::do_write): Write out IRELATIVE area.
4003         (Target_x86_64::init_got_plt_for_update): Create got_irelative_.
4004         (Target_x86_64::register_global_plt_entry): Add symtab and layout
4005         parameters.
4006         (Target_x86_64::Scan::global): Use IRELATIVE GOT for IRELATIVE
4007         reloc.
4008         (Target_x86_64::do_finalize_sections): Create the __rela_iplt
4009         symbols if we didn't create an IRELATIVE GOT.
4010         (Target_x86_64::Relocate::relocate): Use plt_address_for_global and
4011         plt_address_for_local.
4012         (Target_x86_64::do_dynsym_value): Use plt_address_for_global.
4013         * testsuite/ifuncvar1.c: New test file.
4014         * testsuite/ifuncvar2.c: New test file.
4015         * testsuite/ifuncvar3.c: New test file.
4016         * testsuite/Makefile.am (check_PROGRAMS): Add ifuncvar.
4017         (ifuncvar1_pic.o, ifuncvar2_pic.o, ifuncvar.so): New targets.
4018         (ifuncvar_SOURCES, ifuncvar_DEPENDENCIES): New variables.
4019         (ifuncvar_LDFLAGS, ifuncvar_LDADD): New variables.
4020         * testsuite/Makefile.in: Rebuild.
4021
4022 2011-07-07  Cary Coutant  <ccoutant@google.com>
4023
4024         * testsuite/Makefile.am (two_file_test_1_v1_ndebug.o): New target.
4025         (two_file_test_1_ndebug.o): Likewise.
4026         (two_file_test_1b_ndebug.o): Likewise.
4027         (two_file_test_2_ndebug.o): Likewise.
4028         (two_file_test_main_ndebug.o): Likewise.
4029         (incremental_test_2): Link with no-debug versions.
4030
4031 2011-07-06  Cary Coutant  <ccoutant@google.com>
4032
4033         * gold/incremental.cc
4034         (Output_section_incremental_inputs::write_info_blocks): Check for
4035         hidden and internal symbols.
4036
4037 2011-07-06  Cary Coutant  <ccoutant@google.com>
4038
4039         * incremental.cc (Sized_incremental_binary::do_file_has_changed):
4040         Check disposition for startup file.
4041         (Incremental_inputs::report_command_line): Ignore
4042         --incremental-startup-unchanged option.
4043         * options.cc (General_options::parse_incremental_startup_unchanged):
4044         New function.
4045         (General_options::General_options): Initialize new data member.
4046         * options.h (Incremental_disposition): Add INCREMENTAL_STARTUP.
4047         (General_options): Add --incremental-startup-unchanged option.
4048         (General_options::incremental_startup_disposition): New function.
4049         (General_options::incremental_startup_disposition_): New data member.
4050
4051 2011-07-06  Cary Coutant  <ccoutant@google.com>
4052
4053         * incremental.cc (Sized_incremental_binary::setup_readers): Pass
4054         input file index to Script_info ctor.
4055         (Sized_incremental_binary::do_file_has_changed): Find the
4056         command-line argument for files named in scripts.
4057         * incremental.h (Script_info::Script_info): New ctor
4058         with input file index.
4059         (Script_info::input_file_index): New function.
4060         (Script_info::input_file_index_): New data member.
4061         (Incremental_binary::get_library): Add const.
4062         (Incremental_binary::get_script_info): Add const.
4063         * readsyms.cc (Read_member::is_runnable): Check for this_blocker_.
4064         * testsuite/Makefile.am (incremental_test_5): New test case.
4065         (incremental_test_6): New test case.
4066         * testsuite/Makefile.in: Regenerate.
4067
4068 2011-07-06  Cary Coutant  <ccoutant@google.com>
4069
4070         * incremental.cc (Sized_incremental_binary::do_check_inputs): Add
4071         debug output when command lines differ.
4072
4073 2011-07-06  Cary Coutant  <ccoutant@google.com>
4074
4075         * incremental.cc (Incremental_inputs::report_command_line): Ignore
4076         --incremental-patch option.
4077         * layout.cc (Free_list::allocate): Extend allocation beyond original
4078         end if enabled.
4079         (Layout::make_output_section): Mark sections that should get
4080         patch space.
4081         * options.cc (parse_percent): New function.
4082         * options.h (parse_percent): New function.
4083         (DEFINE_percent): New macro.
4084         (General_options): Add --incremental-patch option.
4085         * output.cc (Output_section::Output_section): Initialize new data
4086         members.
4087         (Output_section::add_input_section): Print section name when out
4088         of patch space.
4089         (Output_section::add_output_section_data): Likewise.
4090         (Output_section::set_final_data_size): Add patch space when
4091         doing --incremental-full.
4092         (Output_section::do_reset_address_and_file_offset): Remove patch
4093         space.
4094         (Output_segment::set_section_list_addresses): Print debug output
4095         only if --incremental-update.
4096         * output.h (Output_section::set_is_patch_space_allowed): New function.
4097         (Output_section::is_patch_space_allowed_): New data member.
4098         (Output_section::patch_space_): New data member.
4099         * parameters.cc (Parameters::incremental_full): New function.
4100         * parameters.h (Parameters::incremental_full): New function
4101         * testsuite/Makefile.am (incremental_test_2): Add test for
4102         --incremental-patch option.
4103         * testsuite/Makefile.in: Regenerate.
4104         * testsuite/two_file_test_1_v1.cc (t1, t2, t3): Add comments.
4105         (t18): Remove function body.
4106
4107 2011-07-05  Doug Kwan  <dougkwan@google.com>
4108
4109         PR gold/12771
4110         * arm.cc (Arm_relocate_functions::abs8): Use int32_t for addend and
4111         Arm_Address type for relocation result.
4112         (Arm_relocate_functions::abs16): Use unaligned access.  Also fix
4113         overflow check.
4114         (Arm_relocate_functions::abs32): Use unaligned access.
4115         (Arm_relocate_functions::rel32): Ditto.
4116         (Arm_relocate_functions::prel31): Ditto.
4117         (Arm_exidix_cantunwind::do_fixed_endian_write): Ditto.
4118         * testsuite/Makefile.am: Add new test arm_unaligned_reloc for unaligned
4119         static data relocations.
4120         * testsuite/Makefile.in: Regnerate.
4121         * testsuite/arm_unaligned_reloc.{s,sh}: New files.
4122
4123 2011-07-05  Ian Lance Taylor  <iant@google.com>
4124
4125         PR gold/12392
4126         * i386.cc (Target_i386::do_finalize_sections): Define __rel_iplt
4127         symbols if necessary.
4128         * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
4129
4130 2011-07-05  Ian Lance Taylor  <iant@google.com>
4131
4132         PR gold/12952
4133         * resolve.cc (Symbol::override_base_with_special): Simply override
4134         version with special symbol version, ignoring previous version.
4135
4136 2011-07-05  Ian Lance Taylor  <iant@google.com>
4137
4138         * object.cc (Sized_relobj_file::include_section_group): Add
4139         information to comment about signature location.
4140
4141 2011-07-02  Ian Lance Taylor  <iant@google.com>
4142
4143         PR gold/12957
4144         * options.h (class General_options): Add -f and -F.
4145         * options.cc (General_options::finalize): Fatal error if -f/-F
4146         are used without -shared.
4147         * layout.cc (Layout::finish_dynamic_section): Implement -f/-F.
4148
4149 2011-07-02  Ian Lance Taylor  <iant@google.com>
4150
4151         * dirsearch.cc (Dir_cache::read_files): Ignore ENOTDIR errors.
4152
4153 2011-07-01  Ian Lance Taylor  <iant@google.com>
4154
4155         PR gold/12525
4156         PR gold/12952
4157         * resolve.cc (Symbol::override_base_with_special): Don't override
4158         the version if the overriding symbol has a different name.
4159         * dynobj.cc (Versions::add_def): Add dynpool parameter.  Change
4160         all callers.  If we give an error about an undefined version,
4161         define the base version if necessary.
4162         * dynobj.h (class Versions): Update declaration.
4163         * testsuite/weak_alias_test_5.cc: New file.
4164         * testsuite/weak_alias_test.script: New file.
4165         * testsuite/weak_alias_test_main.cc: Check that versioned_symbol
4166         and versioned_alias have the right value, and call t2.
4167         * testsuite/Makefile.am (weak_alias_test_DEPENDENCIES): Add
4168         weak_alias_test_5.so.
4169         (weak_alias_test_LDADD): Likewise.
4170         (weak_alias_test_5_pic.o, weak_alias_test_5.so): New targets.
4171         * testsuite/Makefile.in: Rebuild.
4172
4173 2011-07-01  Ian Lance Taylor  <iant@google.com>
4174
4175         PR gold/12525
4176         * options.h (class General_options): Support -z notext.
4177         * testsuite/Makefile.am (two_file_shared_1_nonpic.so): Use
4178         -Wl,-z,notext.
4179         (two_file_shared_nonpic.so): Likewise.
4180         (two_file_shared_mixed.so): Likewise.
4181         (two_file_shared_mixed_1.so): Likewise.
4182         (weak_undef_lib_nonpic.so): Likewise.
4183         (alt/weak_undef_lib_nonpic.so): Likewise.
4184         (tls_test_shared_nonpic.so): Likewise.
4185         * testsuite/Makefile.in: Rebuild.
4186
4187 2011-07-01  Ian Lance Taylor  <iant@google.com>
4188
4189         PR gold/12525
4190         * configure.ac: Test whether static linking works, setting
4191         the automake conditional HAVE_STATIC.
4192         * testsuite/Makefile.am: Disable tests using -static if
4193         HAVE_STATIC is not true.
4194         * configure, testsuite/Makefile.in: Rebuild.
4195
4196 2011-07-01  Ian Lance Taylor  <iant@google.com>
4197
4198         PR gold/12525
4199         * ehframe.cc (Eh_frame_hdr::get_fde_pc): Handle DW_EH_PE_datarel.
4200         Assert if we see DW_EH_PE_indirect.
4201         * target.h (Target::ehframe_datarel_base): New function.
4202         (Target::do_ehframe_datarel_base): New target function.
4203         * i386.cc (Target_i386::do_ehframe_datarel_base): New function.
4204         * x86_64.cc (Target_x86_64::do_ehframe_datarel_base): New
4205         function.
4206
4207 2011-07-01  Ian Lance Taylor  <iant@google.com>
4208
4209         PR gold/12571
4210         * options.h (class General_options): Add
4211         --ld-generated-unwind-info.
4212         * ehframe.cc (Fde::write): Add address parameter.  Change all
4213         callers.  If associated with PLT, fill in address and size.
4214         (Cie::set_output_offset): Only add merge mapping if there is an
4215         object.
4216         (Cie::write): Add address parameter.  Change all callers.
4217         (Eh_frame::add_ehframe_for_plt): New function.
4218         * ehframe.h (class Fde): Update declarations.  Move shndx_ and
4219         input_offset_ fields into union u_, with new plt field.
4220         (Fde::Fde): Adjust for new union field.
4221         (Fde::Fde) [Output_data version]: New constructor.
4222         (Fde::add_mapping): Only add merge mapping if there is an object.
4223         (class Cie): Update declarations.
4224         (class Eh_frame): Declare add_ehframe_for_plt.
4225         * layout.cc (Layout::layout_eh_frame): Break out code into
4226         make_eh_frame_section, and call it.
4227         (Layout::make_eh_frame_section): New function.
4228         (Layout::add_eh_frame_for_plt): New function.
4229         * layout.h (class Layout): Update declarations.
4230         * merge.cc (Merge_map::add_mapping): Add assertion.
4231         * i386.cc: Include "dwarf.h".
4232         (class Output_data_plt_i386): Make first_plt_entry,
4233         dyn_first_plt_entry, exec_plt_entry, and dyn_plt_entry const.  Add
4234         plt_eh_frame_cie_size, plt_eh_frame_fde_size, plt_eh_frame_cie,
4235         and plt_eh_frame_fde.
4236         (Output_data_plt_i386::Output_data_plt_i386): Align to 16-byte
4237         boundary.  Call add_eh_frame_for_plt if appropriate.
4238         * x86_64.cc: Include "dwarf.h".
4239         (class Output_data_plt_x86_64): Align to 16-byte boundary.  Make
4240         first_plt_entry, plt_entry and tlsdesc_plt_entry const.  Add
4241         plt_eh_frame_cie_size, plt_eh_frame_fde_size, plt_eh_frame_cie,
4242         and plt_eh_frame_fde.
4243         (Output_data_plt_x86_64::init): Call add_eh_frame_for_plt if
4244         appropriate.
4245
4246 2011-06-29  Ian Lance Taylor  <iant@google.com>
4247
4248         PR gold/12629
4249         * object.cc (Sized_relobj_file::layout_section): Change shdr
4250         parameter to be const.
4251         (Sized_relobj_file::layout_eh_frame_section): New function, broken
4252         out of do_layout.
4253         (Sized_relobj_file::do_layout): Defer .eh_frame sections if
4254         appropriate.  Call layout_eh_frame_section.
4255         (Sized_relobj_file::do_layout_deferred_sections): Handle .eh_frame
4256         sections.
4257         * object.h (class Sized_relobj_file): Update declarations.
4258
4259 2011-06-29  Ian Lance Taylor  <iant@google.com>
4260
4261         PR gold/12652
4262         * script.cc (Token::integer_value): Accept trailing M/m/K/k
4263         modifier.
4264         (Lex::gather_token): Accept trailing M/m/K/k for integers.
4265
4266 2011-06-29  Ian Lance Taylor  <iant@google.com>
4267
4268         PR gold/12675
4269         * object.cc (Sized_relobj_file::check_eh_frame_flags): Check for
4270         SHT_X86_64_UNWIND.
4271         * layout.cc (Layout::layout_eh_frame): Likewise.
4272
4273 2011-06-29  Ian Lance Taylor  <iant@google.com>
4274
4275         PR gold/12695
4276         * layout.cc (Layout::symtab_section_shndx): New function.
4277         * layout.h (class Layout): Declare symtab_section_shndx.
4278         * output.cc (Output_section::write_header): Call it.
4279
4280 2011-06-29  Ian Lance Taylor  <iant@google.com>
4281
4282         PR gold/12818
4283         * symtab.cc (Symbol::should_add_dynsym_entry): Don't add undefined
4284         symbols which are not used in a relocation.
4285
4286 2011-06-28  Ian Lance Taylor  <iant@google.com>
4287
4288         PR gold/12898
4289         * layout.cc (Layout::segment_precedes): Don't crash if a linker
4290         script create indistinguishable segments.
4291         (Layout::set_segment_offsets): Use stable_sort when sorting
4292         segments.  Pass this to Compare_segments constructor.
4293         * layout.h (class Layout): Make segment_precedes non-static.
4294         (class Compare_segments): Change from struct to class.  Add
4295         layout_ field.  Add constructor.
4296         * script-sections.cc
4297         (Script_sections::attach_sections_using_phdrs_clause): Rename
4298         local orphan to is_orphan.  Don't report failure to put empty
4299         section in segment.  On attachment failure, report name of
4300         section, and attach to first PT_LOAD segment.
4301
4302 2011-06-28  Ian Lance Taylor  <iant@google.com>
4303
4304         PR gold/12934
4305         * target-select.cc (Target_selector::Target_selector): Add
4306         emulation parameter.  Change all callers.
4307         (select_target_by_bfd_name): Rename from select_target_by_name.
4308         Change all callers.
4309         (select_target_by_emulation): New function.
4310         (supported_emulation_names): New function.
4311         * target-select.h (class Target_selector): Add emulation_ field.
4312         Update declarations.
4313         (Target_selector::recognize_by_bfd_name): Rename from
4314         recognize_by_name.  Change all callers.
4315         (Target_selector::supported_bfd_names): Rename from
4316         supported_names.  Change all callers.
4317         (Target_selector::recognize_by_emulation): New function.
4318         (Target_selector::supported_emulations): New function.
4319         (Target_selector::emulation): New function.
4320         (Target_selector::do_recognize_by_bfd_name): Rename from
4321         do_recognize_by_name.  Change all callers.
4322         (Target_selector::do_supported_bfd_names): Rename from
4323         do_supported_names.  Change all callers.
4324         (Target_selector::do_recognize_by_emulation): New function.
4325         (Target_selector::do_supported_emulations): New function.
4326         (select_target_by_bfd_name): Change name in declaration.
4327         (select_target_by_emulation): Declare.
4328         (supported_emulation_names): Declare.
4329         * parameters.cc (parameters_force_valid_target): Try to find
4330         target based on emulation from -m option.
4331         * options.h (class General_options): Change doc string for -m.
4332         * options.cc (help): Print emulations.
4333         (General_options::parse_V): Likewise.
4334         * freebsd.h (Target_selector_freebsd::Target_selector_freebsd):
4335         Add emulation parameter.  Change all callers.
4336
4337 2011-06-28  Ian Lance Taylor  <iant@google.com>
4338
4339         * target.h (class Target): Add osabi_ field.
4340         (Target::osabi): New function.
4341         (Target::set_osabi): New function.
4342         (Target::Target): Initialize osabi_.
4343         (Target::do_adjust_elf_header): Make pure virtual.
4344         (Sized_target::do_adjust_elf_header): Declare.
4345         * target.cc (Sized_target::do_adjust_elf_header): New function.
4346         (class Sized_target): Instantiate all versions.
4347         * freebsd.h (class Target_freebsd): Remove.
4348         (Target_selector_freebsd::do_recognize): Call set_osabi on
4349         Target.
4350         (Target_selector_freebsd::do_recognize_by_name): Likewise.
4351         (Target_selector_freebsd::set_osabi): Remove.
4352         * i386.cc (class Target_i386): Inherit from Sized_target rather
4353         than Target_freebsd.
4354         * x86_64.cc (class Target_x86_64): Likewise.
4355
4356 2011-06-28  Ian Lance Taylor  <iant@google.com>
4357
4358         * target.h (Target::can_check_for_function_pointers): Rewrite.
4359         Make non-virtual.
4360         (Target::can_icf_inline_merge_sections): Likewise.
4361         (Target::section_may_have_icf_unsafe_poineters): Likewise.
4362         (Target::Target_info): Add can_icf_inline_merge_sections field.
4363         (Target::do_can_check_for_function_pointers): New virtual
4364         function.
4365         (Target::do_section_may_have_icf_unsafe_pointers): Likewise.
4366         * arm.cc (Target_arm::do_can_check_for_function_pointers): Rename
4367         from can_check_for_function_pointers, move in file.
4368         (Target_arm::do_section_may_have_icf_unsafe_pointers): Rename from
4369         section_may_have_icf_unsafe_poineters, move in file.
4370         (Target_arm::arm_info): Initialize can_icf_inline_merge_sections.
4371         * i386.cc (Target_i386::do_can_check_for_function_pointers):
4372         Rename from can_check_for_function_pointers, move in file.
4373         (Target_i386::can_icf_inline_merge_sections): Remove.
4374         (Target_i386::i386_info): Initialize
4375         can_icf_inline_merge_sections.
4376         * powerpc.cc (Target_powerpc::powerpc_info) [all versions]:
4377         Initialize can_icf_inline_merge_sections.
4378         * sparc.cc (Target_sparc::sparc_info) [both version]: Likewise.
4379         * x86_64.cc (Target_x86_64::do_can_check_for_function_pointers):
4380         Rename from can_check_for_function_pointers, move in file.
4381         (Target_x86_64::can_icf_inline_merge_sections): Remove.
4382         (Target_x86_64::x86_64_info): Initialize
4383         can_icf_inline_merge_sections.
4384         * testsuite/testfile.cc (Target_test::test_target_info):
4385         Likewise.
4386         * icf.cc (get_section_contents): Correct formatting.
4387
4388 2011-06-27  Ian Lance Taylor  <iant@google.com>
4389
4390         * symtab.cc (Symbol::versioned_name): New function.
4391         (Symbol_table::add_to_final_symtab): Use versioned_name when
4392         appropriate.
4393         (Symbol_table::sized_write_symbol): Likewise.
4394         * symtab.h (class Symbol): Declare versioned_name.
4395         * stringpool.h (class Stringpool_template): Add variant of add
4396         which takes a std::basic_string.
4397         * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_12.
4398         (ver_test_12_SOURCES, ver_test_12_DEPENDENCIES): New variables.
4399         (ver_test_12_LDFLAGS, ver_test_12_LDADD): New variables.
4400         (ver_test_12.o): New target.
4401         * testsuite/Makefile.in: Rebuild.
4402
4403 2011-06-27  Doug Kwan  <dougkwan@google.com>
4404
4405         * arm.cc (Arm_relocate_functions::thm_jump8,
4406         Arm_relocate_functions::thm_jump11): Use a wider signed
4407         type to compute offset.
4408         * testsuite/Makefile.am: Add new tests arm_thm_jump11 and
4409         arm_thm_jump8.
4410         * testsuite/Makefile.in: Regenerate.
4411         * testsuite/arm_branch_in_range.sh: Check test results of
4412         arm_thm_jump11 and arm_thm_jump8.
4413         * testsuite/arm_thm_jump11.s: New test source file.
4414         * testsuite/arm_thm_jump11.t: New linker script.
4415         * testsuite/arm_thm_jump8.s: New test source file.
4416         * testsuite/arm_thm_jump8.t: New linker script.
4417
4418 2011-06-24  Ian Lance Taylor  <iant@google.com>
4419
4420         * layout.cc: Include "object.h".
4421         (ctors_sections_in_init_array): New static variable.
4422         (Layout::is_ctors_in_init_array): New function.
4423         (Layout::layout): Add entry to ctors_sections_in_init_array if
4424         appropriate.
4425         * layout.h (class Layout): Declare is_ctors_in_init_array.
4426         * reloc.cc (Sized_relobj_file::do_relocate): Call reverse_words if
4427         is_ctors_reverse_view is set.
4428         (Sized_relobj_file::write_sections): Add layout parameter.  Change
4429         all callers.  Set is_ctors_reverse_view field of View_size.
4430         (Sized_relobj_file::reverse_words): New function.
4431         * object.h (Sized_relobj_file::View_size): Add
4432         is_ctors_reverse_view field.
4433         (class Sized_relobj_file): Update declarations.
4434         * testsuite/initpri3.c: New test.
4435         * testsuite/Makefile.am: (check_PROGRAMS): Add initpri3a and
4436         initpri3b.
4437         (initpri3a_SOURCES, initpri3a_DEPENDENCIES): New variables.
4438         (initpri3a_LDFLAGS, initpri3a_LDADD): New variables.
4439         (initpri3b_SOURCES, initpri3b_DEPENDENCIES): New variables.
4440         (initpri3b_LDFLAGS, initpri3b_LDADD): New variables.
4441         * testsuite/Makefile.in: Rebuild.
4442
4443 2011-06-24  Cary Coutant  <ccoutant@google.com>
4444
4445         * testsuite/Makefile.am: Add in-tree assembler to gcctestdir.
4446         (debug_msg_cdebug.o, odr_violation1_cdebug.o, odr_violation2_cdebug.o)
4447         (debug_msg_cdebug.err): New targets.
4448         * testsuite/Makefile.in: Regenerate.
4449         * testsuite/debug_msg.sh: Check output of link with compressed debug.
4450         Fix checks for link with shared library.
4451
4452 2011-06-24  Doug Kwan  <dougkwan@google.com>
4453
4454         * arm.cc (Arm_output_section::append_text_sections_to_list): Do not
4455         skip empty text sections.
4456         * testsuite/arm_exidx_test.s: Test handling of an empty text section.
4457
4458 2011-06-22  Ian Lance Taylor  <iant@google.com>
4459
4460         PR gold/12910
4461         * options.h (class General_options): Add --ctors-in-init-array.
4462         * layout.cc (Layout::get_output_section): Treat SHT_INIT_ARRAY and
4463         friends as SHT_PROGBITS for merging sections.
4464         (Layout::layout): Remove special handling of .init_array and
4465         friends.  Don't sort if doing relocatable link.  Sort for .ctors
4466         and .dtors if ctors_in_init_array.
4467         (Layout::make_output_section): Force correct section types for
4468         .init_array and friends.  Don't sort if doing relocatable link,
4469         Don't sort .ctors and .dtors if ctors_in_init_array.
4470         (Layout::section_name_mapping): Remove .ctors. and .dtorso.
4471         (Layout::output_section_name): Add relobj parameter.  Change all
4472         callers.  Handle .ctors. and .dtors. in code rather than table.
4473         Handle .ctors and .dtors if ctors_in_init_array.
4474         (Layout::match_file_name): New function, moved from output.cc.
4475         * layout.h (class Layout): Update declarations.
4476         * output.cc: Include "layout.h".
4477         (Input_section_sort_entry::get_priority): New function.
4478         (Input_section_sort_entry::match_file_name): Just call
4479         Layout::match_file_name.
4480         (Output_section::Input_section_sort_init_fini_compare::operator()):
4481         Handle .ctors and .dtors.  Sort by explicit priority rather than
4482         by name.
4483         * configure.ac: Remove CONSTRUCTOR_PRIORITY test and conditional.
4484         * testsuite/initpri2.c: New test.
4485         * testsuite/Makefile.am: Don't test CONSTRUCTOR_PRIORITY.
4486         (check_PROGRAMS): Add initpri2.
4487         (initpri2_SOURCES, initpri2_DEPENDENCIES): New variables.
4488         (initpri2_LDFLAGS, initpri2_LDADD): New variables.
4489         * configure, testsuite/Makefile.in: Rebuild.
4490
4491 2011-06-19  Ian Lance Taylor  <iant@google.com>
4492
4493         PR gold/12880
4494         * layout.cc (Layout::attach_allocated_section_to_segment): Add a
4495         .interp section to a PT_INTERP segment even if we have seen a
4496         --dynamic-linker option.  Don't do it if we have seen a PHDRS
4497         clause in a linker script.
4498         (Layout::finalize): Don't create a .interp section if we've
4499         already create a PT_INTERP segment.
4500         (Layout::create_interp): Always call choose_output_section (revert
4501         patch of 2011-06-17).  Don't create PT_INTERP segment.
4502         * script-sections.cc
4503         (Script_sections::create_note_and_tls_segments): Add a .interp
4504         section to a PT_INTERP segment even if we have seen a
4505         --dynamic-linker option.
4506
4507 2011-06-18  Ian Lance Taylor  <iant@google.com>
4508
4509         * layout.cc (Layout::finish_dynamic_section): Don't set DT_TEXTREL
4510         merely because a non-PT_LOAD segment has a dynamic reloc.
4511
4512 2011-06-18  Ian Lance Taylor  <iant@google.com>
4513
4514         * layout.cc (Layout::finish_dynamic_section): Don't create
4515         DT_FLAGS entry if not needed.
4516
4517 2011-06-18  Ian Lance Taylor  <iant@google.com>
4518
4519         PR gold/12745
4520         * layout.cc (Layout::layout_eh_frame): Correct handling of
4521         writable .eh_frame section.
4522
4523 2011-06-17  Ian Lance Taylor  <iant@google.com>
4524
4525         PR gold/12893
4526         * resolve.cc (Symbol_table::resolve): Don't give an error if a
4527         symbol is redefined with the exact same object and value.
4528
4529 2011-06-17  Ian Lance Taylor  <iant@google.com>
4530
4531         PR gold/12880
4532         * layout.h (class Layout): Add interp_segment_ field.
4533         * layout.cc (Layout::Layout): Initialize interp_segment_ field.
4534         (Layout::attach_allocated_section_to_segment): If making shared
4535         library, put .interp section in PT_INTERP segment.
4536         (Layout::finalize): Also call create_interp if -dynamic-linker
4537         option was used.
4538         (Layout::create_interp): Assert that there is no PT_INTERP
4539         segment.  If not using a SECTIONS clause, use make_output_section.
4540         (Layout::make_output_segment): Set interp_segment_ if PT_INTERP.
4541         * script-sections.cc
4542         (Script_sections::create_note_and_tls_segments): If making shared
4543         library, put .interp section in PT_INTERP segment.
4544
4545 2011-06-17  Ian Lance Taylor  <iant@google.com>
4546
4547         * object.cc (Sized_relobj_file::do_layout): Keep warning sections
4548         when making a shared library.
4549
4550 2011-06-17  Ian Lance Taylor  <iant@google.com>
4551
4552         * x86_64.cc (Target_x86_64::Scan::check_non_pic): Add gsym
4553         parameter.  Change all callers.  Don't issue warning about PC32
4554         against locally defined symbol.
4555
4556 2011-06-16  Ian Lance Taylor  <iant@google.com>
4557
4558         * symtab.cc (Warnings::issue_warning): Don't warn if relocation
4559         occurs in same object.
4560
4561 2011-06-14  Alan Modra  <amodra@gmail.com>
4562
4563         * po/POTFILES.in: Regenerate.
4564
4565 2011-06-09  Ian Lance Taylor  <iant@google.com>
4566
4567         * script-sections.cc
4568         (Orphan_output_section::set_section_addresses): For a relocatable
4569         link set address to 0.
4570
4571 2011-06-09  Cary Coutant  <ccoutant@google.com>
4572
4573         PR gold/12804
4574         * gold/gold.cc (queue_initial_tasks): Warn if --incremental is
4575         used with --compress-debug-sections.
4576         * gold/object.cc (Sized_relobj_file::do_layout): Report
4577         uncompressed size of compressed input sections.
4578
4579 2011-06-08  Cary Coutant  <ccoutant@google.com>
4580
4581         PR gold/12804
4582         * testsuite/two_file_test_2_v1.cc: Change initialization of
4583         v2 to keep it in .data.
4584
4585 2011-06-07  Cary Coutant  <ccoutant@google.com>
4586
4587         * common.cc (Symbol_table::do_allocate_commons_list): Call
4588         gold_fallback.
4589         * errors.cc (Errors::fatal): Adjust call to gold_exit.
4590         (Errors::fallback): New function.
4591         (gold_fallback): New function.
4592         * errors.h (Errors::fallback): New function.
4593         * gold.cc (gold_exit): Change status parameter to enum; adjust
4594         all callers.
4595         (queue_initial_tasks): Call gold_fallback.
4596         * gold.h: Include cstdlib.
4597         (Exit_status): New enum type.
4598         (gold_exit): Change status parameter to enum.
4599         (gold_fallback): New function.
4600         * layout.cc (Layout::set_section_offsets): Call gold_fallback.
4601         (Layout::create_symtab_sections): Likewise.
4602         (Layout::create_shdrs): Likewise.
4603         * main.cc (main): Adjust call to gold_exit.
4604         * output.cc (Output_data_got::add_got_entry): Call gold_fallback.
4605         (Output_data_got::add_got_entry_pair): Likewise.
4606         (Output_section::add_input_section): Likewise.
4607         (Output_section::add_output_section_data): Likewise.
4608         (Output_segment::set_section_list_addresses): Likewise.
4609         * x86_64.cc (Output_data_plt_x86_64::add_entry): Likewise.
4610
4611 2011-06-07  Cary Coutant  <ccoutant@google.com>
4612
4613         * layout.cc (Layout::set_segment_offsets): Don't adjust layout
4614         for incremental links.
4615         * output.cc (Output_segment::set_section_list_addresses): Remove
4616         FIXME and test for TLS or BSS.
4617
4618 2011-06-07  Cary Coutant  <ccoutant@google.com>
4619
4620         * testsuite/Makefile.am: Add incremental_copy_test,
4621         incremental_common_test_1.
4622         * testsuite/Makefile.in: Regenerate.
4623         * testsuite/common_test_1_v1.c: New source file.
4624         * testsuite/common_test_1_v2.c: New source file.
4625         * testsuite/copy_test_v1.cc: New source file.
4626
4627 2011-06-07  Cary Coutant  <ccoutant@google.com>
4628
4629         * common.cc (Symbol_table::do_allocate_commons_list): For incremental
4630         update, allocate common from bss section's free list.
4631         * incremental-dump.cc (dump_incremental_inputs): Print flag for
4632         linker-defined symbols.
4633         * incremental.cc (Sized_incremental_binary::do_process_got_plt):
4634         Skip GOT and PLT entries that are no longer referenced.
4635         (Output_section_incremental_inputs::write_info_blocks): Mark
4636         linker-defined symbols.
4637         (Sized_incr_relobj::do_add_symbols): Process linker-defined symbols.
4638         * output.cc (Output_section::allocate): New function.
4639         * output.h (Output_section::allocate): New function.
4640         * resolve.cc (Symbol_table::report_resolve_problem): Add case for
4641         linker-defined symbols.
4642         (Symbol::override_base_with_special): Copy is_predefined_ flag.
4643         * symtab.cc (Symbol::init_fields): Initialize is_predefined_ flag.
4644         (Symbol::init_base_output_data): Likewise.
4645         (Symbol::init_base_output_segment): Likewise.
4646         (Symbol::init_base_constant): Likewise.
4647         (Sized_symbol::init_output_data): Likewise.
4648         (Sized_symbol::init_output_segment): Likewise.
4649         (Sized_symbol::init_constant): Likewise.
4650         (Symbol_table::do_define_in_output_data): Likewise.
4651         (Symbol_table::do_define_in_output_segment): Likewise.
4652         (Symbol_table::do_define_as_constant): Likewise.
4653         * symtab.h (Symbol::is_predefined): New function.
4654         (Symbol::init_base_output_data): Add is_predefined parameter.
4655         (Symbol::init_base_output_segment): Likewise.
4656         (Symbol::init_base_constant): Likewise.
4657         (Symbol::is_predefined_): New data member.
4658         (Sized_symbol::init_output_data): Add is_predefined parameter.
4659         (Sized_symbol::init_output_segment): Likewise.
4660         (Sized_symbol::init_constant): Likewise.
4661         (enum Symbol_table::Defined): Add INCREMENTAL_BASE.
4662
4663 2011-06-07  Cary Coutant  <ccoutant@google.com>
4664
4665         * copy-relocs.cc (Copy_relocs::copy_reloc): Call make_copy_reloc
4666         instead of emit_copy_reloc.
4667         (Copy_relocs::emit_copy_reloc): Refactor.
4668         (Copy_relocs::make_copy_reloc): New function.
4669         (Copy_relocs::add_copy_reloc): Remove.
4670         * copy-relocs.h (Copy_relocs::emit_copy_reloc): Move to public
4671         section.
4672         (Copy_relocs::make_copy_reloc): New function.
4673         (Copy_relocs::add_copy_reloc): Remove.
4674         * gold.cc (queue_middle_tasks): Emit old COPY relocations from
4675         unchanged input files.
4676         * incremental-dump.cc (dump_incremental_inputs): Print "COPY" flag.
4677         * incremental.cc (Sized_incremental_binary::do_reserve_layout):
4678         Reserve BSS space for COPY relocations.
4679         (Sized_incremental_binary::do_emit_copy_relocs): New function.
4680         (Output_section_incremental_inputs::write_info_blocks): Record
4681         whether a symbol is copied from a shared object.
4682         (Sized_incr_dynobj::do_add_symbols): Record COPY relocations.
4683         * incremental.h (enum Incremental_shlib_symbol_flags): New type.
4684         (INCREMENTAL_SHLIB_SYM_FLAGS_SHIFT): New constant.
4685         (Incremental_input_entry_reader::get_output_symbol_index): Add
4686         is_copy parameter.
4687         (Incremental_binary::emit_copy_relocs): New function.
4688         (Incremental_binary::do_emit_copy_relocs): New function.
4689         (Sized_incremental_binary::Sized_incremental_binary): Initialize
4690         new data member.
4691         (Sized_incremental_binary::add_copy_reloc): New function.
4692         (Sized_incremental_binary::do_emit_copy_relocs): New function.
4693         (Sized_incremental_binary::Copy_reloc): New struct.
4694         (Sized_incremental_binary::Copy_relocs): New typedef.
4695         (Sized_incremental_binary::copy_relocs_): New data member.
4696         * symtab.cc (Symbol_table::add_from_incrobj): Change return type.
4697         * symtab.h (Symbol_table::add_from_incrobj): Change return type.
4698         * target.h (Sized_target::emit_copy_reloc): New function.
4699         * x86_64.cc (Target_x86_64::emit_copy_reloc): New function.
4700
4701 2011-06-02  Cary Coutant  <ccoutant@google.com>
4702
4703         PR gold/12163
4704         * gold/archive.cc (Archive::Archive): Initialize new data member.
4705         (Archive::include_all_members): Return if archive has already been
4706         included.
4707         * gold/archive.h (Archive::include_all_members_): New data member.
4708
4709 2011-06-02  Nick Clifton  <nickc@redhat.com>
4710
4711         * dynobj.h: Fix spelling mistake in comment.
4712         * output.cc: Likewise.
4713
4714 2011-05-31  Doug Kwan  <dougkwan@google.com>
4715             Asier Llano
4716
4717         PR gold/12826
4718         * arm.cc (Target_arm::tag_cpu_arch_combine): Fix handling of
4719         arch value that equals to elfcpp::MAX_TAG_CPU_ARCH.
4720         * testsuite/Makefile.am: (MOSTLYCLEANFILES): Clean up.  Remove
4721         redundant arm_exidx_test.so.
4722         * testsuite/Makefile.in: Regenerate.
4723         (check_SCRIPTS): Add pr12826.sh
4724         (check_DATA): Add pr12826.stdout
4725         (pr12826.stdout, pr12826.so, pr12826_1.o, pr12826_2.o): New rules.
4726         * testsuite/pr12826.sh: New file.
4727         * testsuite/pr12826_1.s: Ditto.
4728         * testsuite/pr12826_1.s: Ditto.
4729
4730 2011-05-30  Ian Lance Taylor  <iant@google.com>
4731
4732         * reloc.cc (Sized_relobj_file::do_read_relocs): Ignore empty reloc
4733         sections.
4734
4735 2011-05-29  Ian Lance Taylor  <iant@google.com>
4736
4737         PR gold/12804
4738         * testsuite/Makefile.am: Use different file name for two_file_test
4739         temporary file for each incremental test.
4740         * testsuite/Makefile.in: Rebuild.
4741
4742 2011-05-29  Ian Lance Taylor  <iant@google.com>
4743
4744         * binary.cc (Binary_to_elf::sized_convert): Don't crash if the
4745         binary input file is empty.
4746
4747 2011-05-27  Ian Lance Taylor  <iant@google.com>
4748
4749         * testsuite/Makefile.am (ver_test_2.so): Use -Wl,-R,.
4750         (ver_test_9.so): Likewise.
4751         * testsuite/Makefile.in: Rebuild.
4752
4753 2011-05-26 Cary Coutant  <ccoutant@google.com>
4754
4755         * incremental-dump.cc (dump_incremental_inputs): Print COMDAT groups.
4756         * incremental.cc (Incremental_inputs::report_input_section): Fix
4757         comment, indentation.
4758         (Incremental_inputs::report_comdat_group): New function.
4759         (Output_section_incremental_inputs::set_final_data_size): Adjust size
4760         of data for incremental input file entry.
4761         (Output_section_incremental_inputs::write_info_blocks): Write COMDAT
4762         group count, COMDAT group signatures.
4763         (Sized_incr_relobj::do_layout): Record kept COMDAT group info from
4764         an unchanged input file.
4765         * incremental.h (Incremental_object_entry::Incremental_object_entry):
4766         Initialize new data member.
4767         (Incremental_object_entry::add_comdat_group): New function.
4768         (Incremental_object_entry::get_comdat_group_count): New function.
4769         (Incremental_object_entry::get_comdat_signature_key): New function.
4770         (Incremental_object_entry::groups_): New data member.
4771         (Incremental_inputs::report_comdat_group): New function.
4772         (Incremental_input_entry_reader::get_symbol_offset): Adjust size of
4773         data for incremental input file entry.
4774         (Incremental_input_entry_reader::get_comdat_group_count): New function.
4775         (Incremental_input_entry_reader::get_input_section): Adjust size of
4776         data for incremental input file entry.
4777         (Incremental_input_entry_reader::get_global_symbol_reader): Likewise.
4778         (Incremental_input_entry_reader::get_comdat_group_signature): New
4779         function.
4780         * object.cc (Sized_relobj::include_section_group): Report kept
4781         COMDAT groups for incremental links.
4782
4783 2011-05-24  David Meyer  <pdox@google.com>
4784
4785         * dirsearch.cc (Dirsearch::find): Replace n1 and n2 parameters
4786         with name parameter.  Add found_name parameter.
4787         * fileread.cc (Input_file::find_file): Adjust code accordingly.
4788         * dirsearch.h (class Dirsearch): Update declaration.
4789
4790 2011-05-24  Ian Lance Taylor  <iant@google.com>
4791
4792         * archive.cc (Library_base::should_include_member): Pull in object
4793         from archive if it defines the entry symbol.
4794         * parameters.cc (Parameters::entry): New function.
4795         * parameters.h (class Parameters): Declare entry.
4796         * output.h (class Output_file_header): Remove entry_ field.
4797         * output.cc (Output_file_header::Output_file_header): Remove entry
4798         parameter.  Change all callers.
4799         (Output_file_header::entry): Use parameters->entry.
4800         * gold.cc (queue_middle_tasks): Likewise.
4801         * plugin.cc (Plugin_hook::run): Likewise.
4802
4803 2011-05-24 Cary Coutant  <ccoutant@google.com>
4804
4805         * gold.cc (queue_initial_tasks): Pass incremental base filename
4806         to Output_file::open_base_file; don't print error message.
4807         * incremental-dump.cc (main): Adjust call to
4808         Output_file::open_for_modification.
4809         * incremental-dump.cc (main): Likewise.
4810         * incremental.cc (Incremental_inputs::report_command_line):
4811         Ignore --incremental-base option when comparing command lines.
4812         Ignore parameter when given as separate argument.
4813         * options.h (class General_options): Add --incremental-base.
4814         * output.cc (Output_file::Output_file):
4815         (Output_file::open_base_file): Add base_name and writable parameters;
4816         read base file into new file; print error message here.
4817         (Output_file::map_no_anonymous): Add writable parameter; adjust all
4818         callers.
4819         * output.h (Output_file::open_for_modification): Rename to...
4820         (Output_file::open_base_file): ...this; add base_name and
4821         writable parameters; adjust all callers.
4822         (Output_file::map_no_anonymous): Add writable parameter; adjust all
4823         callers.
4824         * testsuite/Makefile.am (incremental_test_4): Test
4825         --incremental-base.
4826         * testsuite/Makefile.in: Regenerate.
4827
4828 2011-05-24 Cary Coutant  <ccoutant@google.com>
4829
4830         * testsuite/Makefile.am: Add incremental_test_2, incremental_test_3,
4831         incremental_test_4.
4832         * testsuite/Makefile.in: Regenerate.
4833         * testsuite/two_file_test_1_v1.cc: New test source file.
4834         * testsuite/two_file_test_1b_v1.cc: New test source file.
4835         * testsuite/two_file_test_2_v1.cc: New test source file.
4836
4837 2011-05-24 Cary Coutant  <ccoutant@google.com>
4838
4839         * dynobj.h (Dynobj::do_dynobj): New function.
4840         * incremental-dump.cc (dump_incremental_inputs): Print as_needed
4841         flag and soname for shared objects.
4842         * incremental.cc (Incremental_inputs::report_object): Make
4843         either Incremental_object_entry or Incremental_dynobj_entry; add
4844         soname to string table.
4845         (Incremental_inputs::report_input_section): Add assertion.
4846         (Output_section_incremental_inputs::set_final_data_size): Adjust
4847         type of input file entry for shared libraries; adjust size of
4848         shared library info entry.
4849         (Output_section_incremental_inputs::write_input_files): Write
4850         as_needed flag for shared libraries.
4851         (Output_section_incremental_inputs::write_info_blocks): Adjust type
4852         of input file entry for shared libraries; write soname.
4853         (Sized_incr_dynobj::Sized_incr_dynobj): Read as_needed flag and
4854         soname from incremental info.
4855         * incremental.h (enum Incremental_input_flags): Add
4856         INCREMENTAL_INPUT_AS_NEEDED.
4857         (Incremental_input_entry::Incremental_input_entry): Initialize new
4858         data member.
4859         (Incremental_input_entry::set_as_needed): New function.
4860         (Incremental_input_entry::as_needed): New function.
4861         (Incremental_input_entry::do_dynobj_entry): New function.
4862         (Incremental_input_entry::as_needed_): New data member.
4863         (Incremental_object_entry::Incremental_object_entry): Don't check
4864         for shared library.
4865         (Incremental_object_entry::do_type): Likewise.
4866         (class Incremental_dynobj_entry): New class.
4867         (Incremental_input_entry_reader::as_needed): New function.
4868         (Incremental_input_entry_reader::get_soname): New function.
4869         (Incremental_input_entry_reader::get_global_symbol_count): Rewrite.
4870         (Incremental_input_entry_reader::get_output_symbol_index): Adjust
4871         size of shared library info entry.
4872         * layout.cc (Layout::finish_dynamic_section): Don't test for
4873         incremental link when adding DT_NEEDED entries.
4874         * object.h (Object::Object): Initialize new data member.
4875         (Object::dynobj): New function.
4876         (Object::set_as_needed): New function.
4877         (Object::as_needed): New function.
4878         (Object::do_dynobj): New function.
4879         (Object::as_needed_): New data member.
4880
4881 2011-05-24 Cary Coutant  <ccoutant@google.com>
4882
4883         * incremental-dump.cc (dump_incremental_inputs): Print dynamic reloc
4884         info; adjust display of GOT entries.
4885         * incremental.cc (Sized_incremental_binary::setup_readers): Allocate
4886         vector of input objects; remove file_status_.
4887         (Sized_incremental_binary::do_reserve_layout): Remove file_status_.
4888         (Sized_incremental_binary::do_process_got_plt): Adjust calls to
4889         got_plt reader; call target hooks to reserve GOT entries.
4890         (Output_section_incremental_inputs::set_final_data_size): Adjust size
4891         of input file info header and GOT info entry.
4892         (Output_section_incremental_inputs::write_info_blocks): Write dynamic
4893         relocation info.
4894         (Got_plt_view_info::got_descriptor): Remove.
4895         (Got_plt_view_info::sym_index): New data member.
4896         (Got_plt_view_info::input_index): New data member.
4897         (Local_got_offset_visitor::visit): Write input file index.
4898         (Global_got_offset_visitor::visit): Write 0 for input file index.
4899         (Global_symbol_visitor_got_plt::operator()): Replace got_descriptor
4900         with sym_index and input_index.
4901         (Output_section_incremental_inputs::write_got_plt): Adjust size of
4902         incremental info GOT entry; replace got_descriptor with input_index.
4903         (Sized_relobj_incr::Sized_relobj_incr): Adjust initializers; record
4904         map from input file index to object.
4905         (Sized_relobj_incr::do_layout): Replace direct data member reference
4906         with accessor function.
4907         (Sized_relobj_incr::do_for_all_local_got_entries): Move to base class.
4908         * incremental.h (Incremental_input_entry_reader::get_symbol_offset):
4909         Adjust size of input file info header.
4910         (Incremental_input_entry_reader::get_first_dyn_reloc): New function.
4911         (Incremental_input_entry_reader::get_dyn_reloc_count): New function.
4912         (Incremental_input_entry_reader::get_input_section): Adjust size of
4913         input file info header.
4914         (Incremental_got_plt_reader::Incremental_got_plt_reader): Adjust size
4915         of incremental info GOT entry.
4916         (Incremental_got_plt_reader::get_got_desc): Remove.
4917         (Incremental_got_plt_reader::get_got_symndx): New function.
4918         (Incremental_got_plt_reader::get_got_input_index): New function.
4919         (Sized_incremental_binary::Sized_incremental_binary): Remove
4920         file_status_; add input_objects_.
4921         (Sized_incremental_binary::~Sized_incremental_binary): Remove.
4922         (Sized_incremental_binary::set_file_is_unchanged): Remove.
4923         (Sized_incremental_binary::file_is_unchanged): Remove.
4924         (Sized_incremental_binary::set_input_object): New function.
4925         (Sized_incremental_binary::input_object): New function.
4926         (Sized_incremental_binary::file_status_): Remove.
4927         (Sized_incremental_binary::input_objects_): New data member.
4928         (Sized_relobj_incr): Rename Sized_incr_relobj to this; adjust all
4929         references.
4930         (Sized_relobj_incr::invalid_address): Move to base class.
4931         (Sized_relobj_incr::is_output_section_offset_invalid): Move to base
4932         class.
4933         (Sized_relobj_incr::do_output_section_offset): Likewise.
4934         (Sized_relobj_incr::do_for_all_local_got_entries): Likewise.
4935         (Sized_relobj_incr::section_offsets_): Likewise.
4936         * object.cc (Sized_relobj::do_for_all_local_got_entries): New
4937         function.
4938         (Sized_relobj_file::Sized_relobj_file): Remove local_got_offsets_.
4939         (Sized_relobj_file::layout_section): Replace refs to section_offsets_
4940         with accessor function.
4941         (Sized_relobj_file::do_layout): Likewise.
4942         (Sized_relobj_file::do_layout_deferred_sections): Likewise.
4943         (Sized_relobj_file::do_for_all_local_got_entries): Move to base class.
4944         (Sized_relobj_file::compute_final_local_value): Replace refs to
4945         section_offsets_ with accessor function.
4946         (Sized_relobj_file::do_finalize_local_symbols): Likewise.
4947         * object.h (Relobj::Relobj): Initialize new data members.
4948         (Relobj::add_dyn_reloc): New function.
4949         (Relobj::first_dyn_reloc): New function.
4950         (Relobj::dyn_reloc_count): New function.
4951         (Relobj::first_dyn_reloc_): New data member.
4952         (Relobj::dyn_reloc_count_): New data member.
4953         (Sized_relobj): Rename Sized_relobj_base to this; adjust all
4954         references.
4955         (Sized_relobj::Address): New typedef.
4956         (Sized_relobj::invalid_address): Move here from child class.
4957         (Sized_relobj::Sized_relobj): Initialize new data members.
4958         (Sized_relobj::sized_relobj): New function.
4959         (Sized_relobj::is_output_section_offset_invalid): Move here from
4960         child class.
4961         (Sized_relobj::get_output_section_offset): Likewise.
4962         (Sized_relobj::local_has_got_offset): Likewise.
4963         (Sized_relobj::local_got_offset): Likewise.
4964         (Sized_relobj::set_local_got_offset): Likewise.
4965         (Sized_relobj::do_for_all_local_got_entries): Likewise.
4966         (Sized_relobj::clear_got_offsets): New function.
4967         (Sized_relobj::section_offsets): Move here from child class.
4968         (Sized_relobj::do_output_section_offset): Likewise.
4969         (Sized_relobj::do_set_section_offset): Likewise.
4970         (Sized_relobj::Local_got_offsets): Likewise.
4971         (Sized_relobj::local_got_offsets_): Likewise.
4972         (Sized_relobj::section_offsets_): Likewise.
4973         (Sized_relobj_file): Rename Sized_relobj to this; adjust all
4974         references.
4975         (Sized_relobj_file::is_output_section_offset_invalid): Move to base
4976         class.
4977         (Sized_relobj_file::sized_relobj): New function
4978         (Sized_relobj_file::local_has_got_offset): Move to base class.
4979         (Sized_relobj_file::local_got_offset): Likewise.
4980         (Sized_relobj_file::set_local_got_offset): Likewise.
4981         (Sized_relobj_file::get_output_section_offset): Likewise.
4982         (Sized_relobj_file::do_for_all_local_got_entries): Likewise.
4983         (Sized_relobj_file::do_output_section_offset): Likewise.
4984         (Sized_relobj_file::do_set_section_offset): Likewise.
4985         (Sized_relobj_file::Local_got_offsets): Likewise.
4986         (Sized_relobj_file::local_got_offsets_): Likewise.
4987         (Sized_relobj_file::section_offsets_): Likewise.
4988         * output.cc (Output_reloc::Output_reloc): Adjust type of relobj
4989         (all constructors).
4990         (set_needs_dynsym_index): Convert relobj to derived class pointer.
4991         (Output_reloc::get_symbol_index): Likewise.
4992         (Output_reloc::local_section_offset): Likewise.
4993         (Output_reloc::get_address): Likewise.
4994         (Output_reloc::symbol_value): Likewise.
4995         (Output_data_got::reserve_slot): Move to class definition.
4996         (Output_data_got::reserve_local): New function.
4997         (Output_data_got::reserve_slot_for_global): Remove.
4998         (Output_data_got::reserve_global): New function.
4999         * output.h (Output_reloc::Output_reloc): Adjust type of relobj
5000         (all constructors, two instantiations).
5001         (Output_reloc::get_relobj): New function (two instantiations).
5002         (Output_reloc::u1_.relobj, Output_reloc::u2_.relobj): Adjust type.
5003         (Output_data_reloc_base::add): Convert relobj to derived class pointer.
5004         (Output_data_reloc::add_global): Adjust type of relobj.
5005         (Output_data_reloc::add_global_relative): Likewise.
5006         (Output_data_reloc::add_symbolless_global_addend): Likewise.
5007         (Output_data_reloc::add_local): Likewise.
5008         (Output_data_reloc::add_local_relative): Likewise.
5009         (Output_data_reloc::add_symbolless_local_addend): Likewise.
5010         (Output_data_reloc::add_local_section): Likewise.
5011         (Output_data_reloc::add_output_section): Likewise.
5012         (Output_data_reloc::add_absolute): Likewise.
5013         (Output_data_reloc::add_target_specific): Likewise.
5014         (Output_data_got::reserve_slot): Move definition here.
5015         (Output_data_got::reserve_local): New function.
5016         (Output_data_got::reserve_global): New function.
5017         * reloc.cc (Sized_relobj_file::do_read_relocs): Replace refs to
5018         section_offsets_ with accessor function.
5019         (Sized_relobj_file::write_sections): Likewise.
5020         (Sized_relobj_file::do_relocate_sections): Likewise.
5021         * target.h (Sized_target::reserve_local_got_entry): New function.
5022         (Sized_target::reserve_global_got_entry): New function.
5023         * x86_64.cc (Target_x86_64::reserve_local_got_entry): New function.
5024         (Target_x86_64::reserve_global_got_entry): New function.
5025         (Target_x86_64::init_got_plt_for_update): Create rela_dyn section.
5026
5027 2011-05-23 Cary Coutant  <ccoutant@google.com>
5028
5029         * gold.cc (queue_middle_tasks): Process existing GOT/PLT entries.
5030         * incremental-dump.cc (dump_incremental_inputs): Mask high-order
5031         bit when checking got_type.
5032         * incremental.cc (Sized_incremental_binary::setup_readers):
5033         Store symbol table and string table locations; initialize bit vector
5034         of file status flags.
5035         (Sized_incremental_binary::do_reserve_layout): Set bit flag for
5036         unchanged files.
5037         (Sized_incremental_binary::do_process_got_plt): New function.
5038         (Sized_incremental_binary::get_symtab_view): Use stored locations.
5039         (Output_section_incremental_inputs::set_final_data_size): Record
5040         file index for each input file.
5041         (Output_section_incremental_inputs::write_got_plt): Store file index
5042         instead of input entry offset for each GOT entry.
5043         * incremental.h
5044         (Incremental_input_entry::Incremental_input_entry): Initialize new
5045         data member.
5046         (Incremental_input_entry::set_offset): Store file index.
5047         (Incremental_input_entry::get_file_index): New function.
5048         (Incremental_input_entry::file_index_): New data member.
5049         (Incremental_binary::process_got_plt): New function.
5050         (Incremental_binary::do_process_got_plt): New function.
5051         (Sized_incremental_binary::Sized_incremental_binary): Initialize new
5052         data members.
5053         (Sized_incremental_binary::~Sized_incremental_binary): New destructor.
5054         (Sized_incremental_binary::set_file_is_unchanged): New function.
5055         (Sized_incremental_binary::file_is_unchanged): New function.
5056         (Sized_incremental_binary::do_process_got_plt): New function.
5057         (Sized_incremental_binary::file_status_): New data member.
5058         (Sized_incremental_binary::main_symtab_loc_): New data member.
5059         (Sized_incremental_binary::main_strtab_loc_): New data member.
5060         * output.cc (Output_data_got::Got_entry::write): Add case
5061         RESERVED_CODE.
5062         (Output_data_got::add_global): Call add_got_entry.
5063         (Output_data_got::add_global_plt): Likewise.
5064         (Output_data_got::add_global_with_rel): Likewise.
5065         (Output_data_got::add_global_with_rela): Likewise.
5066         (Output_data_got::add_global_pair_with_rel): Call add_got_entry_pair.
5067         (Output_data_got::add_global_pair_with_rela): Likewise.
5068         (Output_data_got::add_local): Call add_got_entry.
5069         (Output_data_got::add_local_plt): Likewise.
5070         (Output_data_got::add_local_with_rel): Likewise.
5071         (Output_data_got::add_local_with_rela): Likewise.
5072         (Output_data_got::add_local_pair_with_rel): Call add_got_entry_pair.
5073         (Output_data_got::add_local_pair_with_rela): Likewise.
5074         (Output_data_got::reserve_slot): New function.
5075         (Output_data_got::reserve_slot_for_global): New function.
5076         (Output_data_got::add_got_entry): New function.
5077         (Output_data_got::add_got_entry_pair): New function.
5078         (Output_section::add_output_section_data): Edit FIXME.
5079         * output.h
5080         (Output_section_data_build::Output_section_data_build): New
5081         constructor with size parameter.
5082         (Output_data_space::Output_data_space): Likewise.
5083         (Output_data_got::Output_data_got): Initialize new data member; new
5084         constructor with size parameter.
5085         (Output_data_got::add_constant): Call add_got_entry.
5086         (Output_data_got::reserve_slot): New function.
5087         (Output_data_got::reserve_slot_for_global): New function.
5088         (class Output_data_got::Got_entry): Add RESERVED_CODE.
5089         (Output_data_got::add_got_entry): New function.
5090         (Output_data_got::add_got_entry_pair): New function.
5091         (Output_data_got::free_list_): New data member.
5092         * target.h (Sized_target::init_got_plt_for_update): New function.
5093         (Sized_target::register_global_plt_entry): New function.
5094         * x86_64.cc (Output_data_plt_x86_64::Output_data_plt_x86_64):
5095         Initialize new data member; call init; add constructor with PLT count.
5096         (Output_data_plt_x86_64::init): New function.
5097         (Output_data_plt_x86_64::add_relocation): New function.
5098         (Output_data_plt_x86_64::reserve_slot): New function.
5099         (Output_data_plt_x86_64::free_list_): New data member.
5100         (Target_x86_64::init_got_plt_for_update): New function.
5101         (Target_x86_64::register_global_plt_entry): New function.
5102         (Output_data_plt_x86_64::add_entry): Allocate from free list for
5103         incremental updates.
5104         (Output_data_plt_x86_64::add_relocation): New function.
5105         * testsuite/object_unittest.cc (Object_test): Set default options.
5106
5107 2011-05-16  Ian Lance Taylor  <iant@google.com>
5108
5109         * options.h (class General_options): Make -i a synonym for -r.
5110
5111 2011-05-16  Ian Lance Taylor  <iant@google.com>
5112
5113         * testsuite/tls_test_main.cc: Use semaphores instead of mutexes.
5114
5115 2011-05-10 Cary Coutant  <ccoutant@google.com>
5116
5117         * object.cc (Sized_relobj::do_count_local_symbols): Check for
5118         strip_all (-s).
5119
5120 2011-05-06  Ian Lance Taylor  <iant@google.com>
5121
5122         * layout.cc (Layout::layout): If the output section flags change,
5123         update the ordering.
5124
5125 2011-04-25 Cary Coutant  <ccoutant@google.com>
5126
5127         * incremental-dump.cc (dump_incremental_inputs): Print local
5128         symbol info for each input file.
5129         * incremental.cc
5130         (Output_section_incremental_inputs::set_final_data_size): Add local
5131         symbol info to input file entries in incremental info.
5132         (Output_section_incremental_inputs::write_info_blocks): Likewise.
5133         (Sized_incr_relobj::Sized_incr_relobj): Initialize new data members.
5134         (Sized_incr_relobj::do_add_symbols): Cosmetic change.
5135         (Sized_incr_relobj::do_count_local_symbols): Replace stub with
5136         implementation.
5137         (Sized_incr_relobj::do_finalize_local_symbols): Likewise.
5138         (Sized_incr_relobj::do_relocate): Write the local symbols.
5139         (Sized_incr_dynobj::do_add_symbols): Cosmetic change.
5140         * incremental.h (Incremental_inputs_reader::get_symbol_offset):
5141         Adjust size of input file header.
5142         (Incremental_inputs_reader::get_local_symbol_offset): New function.
5143         (Incremental_inputs_reader::get_local_symbol_count): New function.
5144         (Incremental_inputs_reader::get_input_section): Adjust size of input
5145         file header.
5146         (Incremental_inputs_reader::get_global_symbol_reader): Likewise.
5147         (Sized_incr_relobj::This): New typedef.
5148         (Sized_incr_relobj::sym_size): New const data member.
5149         (Sized_incr_relobj::Local_symbol): New struct.
5150         (Sized_incr_relobj::do_output_local_symbol_count): New function.
5151         (Sized_incr_relobj::do_local_symbol_offset): New function.
5152         (Sized_incr_relobj::local_symbol_count_): New data member.
5153         (Sized_incr_relobj::output_local_dynsym_count_): New data member.
5154         (Sized_incr_relobj::local_symbol_index_): New data member.
5155         (Sized_incr_relobj::local_symbol_offset_): New data member.
5156         (Sized_incr_relobj::local_dynsym_offset_): New data member.
5157         (Sized_incr_relobj::local_symbols_): New data member.
5158         * object.h (Relobj::output_local_symbol_count): New function.
5159         (Relobj::local_symbol_offset): New function.
5160         (Relobj::do_output_local_symbol_count): New function.
5161         (Relobj::do_local_symbol_offset): New function.
5162         (Sized_relobj::do_output_local_symbol_count): New function.
5163         (Sized_relobj::do_local_symbol_offset): New function.
5164
5165 2011-04-22  Vladimir Simonov  <sv@sw.ru>
5166
5167         * descriptors.cc (set_close_on_exec): New function.
5168         (Descriptors::open): Use set_close_on_exec.
5169         * output.cc (S_ISLNK): Define if not defined.
5170
5171 2011-04-22 Cary Coutant  <ccoutant@google.com>
5172
5173         * incremental.cc (Sized_incremental_binary::setup_readers): Allocate
5174         global symbol map.
5175         (Sized_incremental_binary::do_apply_incremental_relocs): New function.
5176         (Sized_incr_relobj::do_add_symbols): Add symbols to global symbol map.
5177         (Sized_incr_relobj::do_relocate): Remap section indices in incremental
5178         relocations.
5179         (Sized_incr_dynobj::do_add_symbols): Add symbols to global symbol map.
5180         (Sized_incr_dynobj::do_for_all_global_symbols): Remove FIXME.
5181         (Sized_incr_dynobj::do_for_all_local_got_entries): Likewise.
5182         * incremental.h
5183         (Incremental_inputs_reader::global_symbol_reader_at_offset): New
5184         function.
5185         (Incremental_binary::apply_incremental_relocs): New function.
5186         (Incremental_binary::do_apply_incremental_relocs): New function.
5187         (Sized_incremental_binary::Sized_incremental_binary): Initialize new
5188         data member.
5189         (Sized_incremental_binary::add_global_symbol): New function.
5190         (Sized_incremental_binary::global_symbol): New function.
5191         (Sized_incremental_binary::do_apply_incremental_relocs): New function.
5192         (Sized_incremental_binary::symbol_map_): New data member.
5193         * layout.cc (Layout_task_runner::run): Apply incremental relocations.
5194         * target.h (Sized_target::apply_relocation): New function.
5195         * target-reloc.h (apply_relocation): New function.
5196         * x86_64.cc (Target_x86_64::apply_relocation): New function.
5197
5198 2011-04-22  Doug Kwan  <dougkwan@google.com>
5199
5200         * arm.cc (Arm_output_section::Arm_output_section): Set SHF_LINK_ORDER
5201         flag of a SHT_ARM_EXIDX section.
5202         * testsuite/Makefile.am (arm_exidx_test): New test rules.
5203         * testsuite/Makefile.in: Regenerate.
5204         * testsuite/arm_exidx_test.s: New file.
5205         * testsuite/arm_exidx_test.sh: Same.
5206
5207 2011-04-20 Cary Coutant  <ccoutant@google.com>
5208
5209         PR gold/12689
5210         * archive.h (Incremental_archive_entry::Archive_member):
5211         Initialize arg_serial_ (second constructor).
5212
5213 2011-04-17  Ian Lance Taylor  <iant@google.com>
5214
5215         * object.cc (Relocate_info::location): Simplify location string.
5216         * errors.cc (Errors::error_at_location): Don't print program
5217         name.
5218         (Errors::warning_at_location): Likewise.
5219         (Errors::undefined_symbol): Likewise.
5220         * testsuite/debug_msg.sh: Update accordingly.
5221
5222 2011-04-14 Cary Coutant  <ccoutant@google.com>
5223
5224         * gold/layout.cc (Layout::symtab_section_offset): New function.
5225         * gold/layout.h (Layout::symtab_section_offset): New function.
5226         * gold/reloc.cc (Sized_relobj::do_relocate): Call it.
5227
5228 2011-04-12  Ian Lance Taylor  <iant@google.com>
5229
5230         * configure.ac: Check for sys/mman.h and mmap.  Check for mremap
5231         with MREMAP_MAYMOVE.
5232         * output.h (class Output_file): Add map_is_allocated_ field.
5233         * output.cc: Only #include <sys/mman.h> if it exists.  If mmap is
5234         not available, provide stubs.  If mremap is not available, #define
5235         it to gold_mremap.
5236         (MREMAP_MAYMOVE): Define if not defined.
5237         (Output_file::Output_file): Initialize map_is_allocated_.
5238         (Output_file::resize): Check map_is_allocated_.
5239         (Output_file::map_anonymous): If mmap fails, use malloc.
5240         (Output_file::unmap): Don't do anything for an anonymous map.
5241         * fileread.cc: Only #include <sys/mman.h> if it exists.  If mmap
5242         is not available, provide stubs.
5243         (File_read::View::~View): Use free rather than delete[].
5244         (File_read::make_view): Use malloc rather than new[].  If mmap
5245         fails, use malloc.
5246         (File_read::find_or_make_view): Use malloc rather than new[].
5247         * gold.h: Remove HAVE_REMAP code.
5248         * mremap.c: #include <errno.h>.  Only #include <sys/mman.h> if it
5249         exists.  Rename mremap to gold_mremap.  If mmap is not available
5250         don't do anything.
5251         * configure, config.in: Rebuild.
5252
5253 2011-04-11  Ian Lance Taylor  <iant@google.com>
5254
5255         * incremental.cc (Sized_incr_relobj::do_add_symbols): Always
5256         initialize local variable v.
5257
5258 2011-04-11  Cary Coutant  <ccoutant@google.com>
5259
5260         * archive.cc (Archive::include_member): Adjust call to
5261         report_object.
5262         (Add_archive_symbols::run): Track argument serial numbers.
5263         (Lib_group::include_member): Likewise.
5264         (Add_lib_group_symbols::run): Adjust call to report_archive_begin.
5265         * archive.h (Incremental_archive_entry::Archive_member):
5266         Initialize arg_serial_.
5267         (Archive_member::arg_serial_): New data member.
5268         * dynobj.cc (Dynobj::Dynobj): Allow input_file_ to be NULL.
5269         (Sized_dynobj::do_add_symbols): Track symbols when doing an
5270         incremental link.
5271         (Sized_dynobj::do_for_all_local_got_entries): New function.
5272         * dynobj.h: (Sized_dynobj::do_for_all_local_got_entries): New
5273         function.
5274         * fileread.cc (get_mtime): New function.
5275         * fileread.h (get_mtime): New function.
5276         * gold.cc (queue_initial_tasks): Check for incremental update.
5277         (process_incremental_input): New function.
5278         (queue_middle_tasks): Don't force valid target for incremental
5279         update.
5280         * incremental-dump.cc (find_input_containing_global): Adjust
5281         size of symbol info entry.
5282         (dump_incremental_inputs): Dump argument serial number and
5283         in_system_directory flag; bias shndx by 1; print symbol names
5284         when dumping per-file symbol lists; use new symbol info readers.
5285         * incremental.cc
5286         (Output_section_incremental_inputs:update_data_size): New function.
5287         (Sized_incremental_binary::setup_readers): Setup input readers
5288         for each input file; build maps for files added from libraries
5289         and scripts.
5290         (Sized_incremental_binary::check_input_args): New function.
5291         (Sized_incremental_binary::do_check_inputs): Build map of argument
5292         serial numbers to input arguments.
5293         (Sized_incremental_binary::do_file_has_changed): Rename
5294         do_file_is_unchanged to this; compare file modification times.
5295         (Sized_incremental_binary::do_init_layout): New function.
5296         (Sized_incremental_binary::do_reserve_layout): New function.
5297         (Sized_incremental_binary::do_get_input_reader): Remove.
5298         (Sized_incremental_binary::get_symtab_view): New function.
5299         (Incremental_checker::can_incrementally_link_output_file): Remove.
5300         (Incremental_inputs::report_command_line): Exclude --debug options.
5301         (Incremental_inputs::report_archive_begin): Add parameter; track
5302         argument serial numbers; don't put input file entry for archive
5303         before archive members.
5304         (Incremental_inputs::report_archive_end): Put input file entry
5305         for archive after archive members.
5306         (Incremental_inputs::report_object): Add parameter; track argument
5307         serial numbers and in_system_directory flag.
5308         (Incremental_inputs::report_script): Add parameter; track argument
5309         serial numbers.
5310         (Output_section_incremental_inputs::set_final_data_size): Adjust
5311         size of symbol info entry; check for forwarding symbols.
5312         (Output_section_incremental_inputs::write_input_files): Write
5313         in_system_directory flag and argument serial number.
5314         (Output_section_incremental_inputs::write_info_blocks): Map section
5315         indices between incremental info and original input file; store
5316         input section index for each symbol.
5317         (class Local_got_offset_visitor): Derive from Got_offset_list::Visitor;
5318         change operator() to visit().
5319         (class Global_got_offset_visitor): Likewise.
5320         (class Global_symbol_visitor_got_plt):
5321         (Output_section_incremental_inputs::write_got_plt): Use new visitor
5322         classes.
5323         (Sized_incr_relobj::Sized_incr_relobj): New constructor.
5324         (Sized_incr_relobj::do_read_symbols): New function.
5325         (Sized_incr_relobj::do_layout): New function.
5326         (Sized_incr_relobj::do_layout_deferred_sections): New function.
5327         (Sized_incr_relobj::do_add_symbols): New function.
5328         (Sized_incr_relobj::do_should_include_member): New function.
5329         (Sized_incr_relobj::do_for_all_global_symbols): New function.
5330         (Sized_incr_relobj::do_for_all_local_got_entries): New function.
5331         (Sized_incr_relobj::do_section_size): New function.
5332         (Sized_incr_relobj::do_section_name): New function.
5333         (Sized_incr_relobj::do_section_contents): New function.
5334         (Sized_incr_relobj::do_section_flags): New function.
5335         (Sized_incr_relobj::do_section_entsize): New function.
5336         (Sized_incr_relobj::do_section_address): New function.
5337         (Sized_incr_relobj::do_section_type): New function.
5338         (Sized_incr_relobj::do_section_link): New function.
5339         (Sized_incr_relobj::do_section_info): New function.
5340         (Sized_incr_relobj::do_section_addralign): New function.
5341         (Sized_incr_relobj::do_initialize_xindex): New function.
5342         (Sized_incr_relobj::do_get_global_symbol_counts): New function.
5343         (Sized_incr_relobj::do_read_relocs): New function.
5344         (Sized_incr_relobj::do_gc_process_relocs): New function.
5345         (Sized_incr_relobj::do_scan_relocs): New function.
5346         (Sized_incr_relobj::do_count_local_symbols): New function.
5347         (Sized_incr_relobj::do_finalize_local_symbols): New function.
5348         (Sized_incr_relobj::do_set_local_dynsym_indexes): New function.
5349         (Sized_incr_relobj::do_set_local_dynsym_offset): New function.
5350         (Sized_incr_relobj::do_relocate): New function.
5351         (Sized_incr_relobj::do_set_section_offset): New function.
5352         (Sized_incr_dynobj::Sized_incr_dynobj): New function.
5353         (Sized_incr_dynobj::do_read_symbols): New function.
5354         (Sized_incr_dynobj::do_layout): New function.
5355         (Sized_incr_dynobj::do_add_symbols): New function.
5356         (Sized_incr_dynobj::do_should_include_member): New function.
5357         (Sized_incr_dynobj::do_for_all_global_symbols): New function.
5358         (Sized_incr_dynobj::do_for_all_local_got_entries): New function.
5359         (Sized_incr_dynobj::do_section_size): New function.
5360         (Sized_incr_dynobj::do_section_name): New function.
5361         (Sized_incr_dynobj::do_section_contents): New function.
5362         (Sized_incr_dynobj::do_section_flags): New function.
5363         (Sized_incr_dynobj::do_section_entsize): New function.
5364         (Sized_incr_dynobj::do_section_address): New function.
5365         (Sized_incr_dynobj::do_section_type): New function.
5366         (Sized_incr_dynobj::do_section_link): New function.
5367         (Sized_incr_dynobj::do_section_info): New function.
5368         (Sized_incr_dynobj::do_section_addralign): New function.
5369         (Sized_incr_dynobj::do_initialize_xindex): New function.
5370         (Sized_incr_dynobj::do_get_global_symbol_counts): New function.
5371         (make_sized_incremental_object): New function.
5372         (Incremental_library::copy_unused_symbols): New function.
5373         (Incremental_library::do_for_all_unused_symbols): New function.
5374         * incremental.h (enum Incremental_input_flags): New type.
5375         (class Incremental_checker): Remove.
5376         (Incremental_input_entry::Incremental_input_entry): Add argument
5377         serial number.
5378         (Incremental_input_entry::arg_serial): New function.
5379         (Incremental_input_entry::set_is_in_system_directory): New function.
5380         (Incremental_input_entry::is_in_system_directory): New function.
5381         (Incremental_input_entry::arg_serial_): New data member.
5382         (Incremental_input_entry::is_in_system_directory_): New data member.
5383         (class Script_info): Move here from script.h.
5384         (Script_info::Script_info): Add filename parameter.
5385         (Script_info::filename): New function.
5386         (Script_info::filename_): New data member.
5387         (Incremental_script_entry::Incremental_script_entry): Add argument
5388         serial number.
5389         (Incremental_object_entry::Incremental_object_entry): Likewise.
5390         (Incremental_object_entry::add_input_section): Build list of input
5391         sections with map to original shndx.
5392         (Incremental_object_entry::get_input_section_index): New function.
5393         (Incremental_object_entry::shndx_): New data member.
5394         (Incremental_object_entry::name_key_): Rename; adjust all refs.
5395         (Incremental_object_entry::sh_size_): Rename; adjust all refs.
5396         (Incremental_archive_entry::Incremental_archive_entry): Add argument
5397         serial number.
5398         (Incremental_inputs::report_archive_begin): Likewise.
5399         (Incremental_inputs::report_object): Likewise.
5400         (Incremental_inputs::report_script): Likewise.
5401         (class Incremental_global_symbol_reader): New class.
5402         (Incremental_input_entry_reader::Incremental_input_entry_reader): Read
5403         and store flags and input file type.
5404         (Incremental_input_entry_reader::arg_serial): New function.
5405         (Incremental_input_entry_reader::type): Extract type from flags.
5406         (Incremental_input_entry_reader::is_in_system_directory): New function.
5407         (Incremental_input_entry_reader::get_input_section_count): Call
5408         accessor function for type.
5409         (Incremental_input_entry_reader::get_symbol_offset): Call accessor
5410         function for type; adjust size of global symbol entry.
5411         (Incremental_input_entry_reader::get_global_symbol_count): Call
5412         accessor function for type.
5413         (Incremental_input_entry_reader::get_object_count): Likewise.
5414         (Incremental_input_entry_reader::get_object_offset): Likewise.
5415         (Incremental_input_entry_reader::get_member_count): Likewise.
5416         (Incremental_input_entry_reader::get_unused_symbol_count): Likewise.
5417         (Incremental_input_entry_reader::get_member_offset): Likewise.
5418         (Incremental_input_entry_reader::get_unused_symbol): Likewise.
5419         (Incremental_input_entry_reader::Global_symbol_info): Remove.
5420         (Incremental_input_entry_reader::get_global_symbol_info): Remove.
5421         (Incremental_input_entry_reader::get_global_symbol_reader): New
5422         function.
5423         (Incremental_input_entry_reader::get_output_symbol_index): New
5424         function.
5425         (Incremental_input_entry_reader::type_): Remove.
5426         (Incremental_input_entry_reader::flags_): New data member.
5427         (Incremental_inputs_reader::input_file_offset): New function.
5428         (Incremental_inputs_reader::input_file_index): New function.
5429         (Incremental_inputs_reader::input_file): Call input_file_offset.
5430         (Incremental_inputs_reader::input_file_at_offset): New function.
5431         (Incremental_relocs_reader::get_r_type): Reformat.
5432         (Incremental_relocs_reader::get_r_shndx): Reformat.
5433         (Incremental_relocs_reader::get_r_offset): Reformat.
5434         (Incremental_relocs_reader::data): New function.
5435         (Incremental_binary::Incremental_binary): Initialize new data members.
5436         (Incremental_binary::check_inputs): Add cmdline parameter.
5437         (Incremental_binary::file_is_unchanged): Remove.
5438         (Input_reader::arg_serial): New function.
5439         (Input_reader::get_unused_symbol_count): New function.
5440         (Input_reader::get_unused_symbol): New function.
5441         (Input_reader::do_arg_serial): New function.
5442         (Input_reader::do_get_unused_symbol_count): New function.
5443         (Input_reader::do_get_unused_symbol): New function.
5444         (Incremental_binary::input_file_count): New function.
5445         (Incremental_binary::get_input_reader): Change signature to use
5446         index instead of filename.
5447         (Incremental_binary::file_has_changed): New function.
5448         (Incremental_binary::get_input_argument): New function.
5449         (Incremental_binary::get_library): New function.
5450         (Incremental_binary::get_script_info): New function.
5451         (Incremental_binary::init_layout): New function.
5452         (Incremental_binary::reserve_layout): New function.
5453         (Incremental_binary::output_file): New function.
5454         (Incremental_binary::do_check_inputs): New function.
5455         (Incremental_binary::do_file_is_unchanged): Remove.
5456         (Incremental_binary::do_file_has_changed): New function.
5457         (Incremental_binary::do_init_layout): New function.
5458         (Incremental_binary::do_reserve_layout): New function.
5459         (Incremental_binary::do_input_file_count): New function.
5460         (Incremental_binary::do_get_input_reader): Change signature.
5461         (Incremental_binary::input_args_map_): New data member.
5462         (Incremental_binary::library_map_): New data member.
5463         (Incremental_binary::script_map_): New data member.
5464         (Sized_incremental_binary::Sized_incremental_binary): Initialize
5465         new data members.
5466         (Sized_incremental_binary::output_section): New function.
5467         (Sized_incremental_binary::inputs_reader): Add const.
5468         (Sized_incremental_binary::symtab_reader): Add const.
5469         (Sized_incremental_binary::relocs_reader): Add const.
5470         (Sized_incremental_binary::got_plt_reader): Add const.
5471         (Sized_incremental_binary::get_symtab_view): New function.
5472         (Sized_incremental_binary::Inputs_reader): New typedef.
5473         (Sized_incremental_binary::Input_entry_reader): New typedef.
5474         (Sized_incremental_binary::do_check_inputs): Add cmdline parameter.
5475         (Sized_incremental_binary::do_file_is_unchanged): Remove.
5476         (Sized_incremental_binary::do_file_has_changed): New function.
5477         (Sized_incremental_binary::do_init_layout): New function.
5478         (Sized_incremental_binary::do_reserve_layout): New function.
5479         (Sized_input_reader::Inputs_reader): Remove.
5480         (Sized_input_reader::Input_entry_reader): Remove.
5481         (Sized_input_reader::do_arg_serial): New function.
5482         (Sized_input_reader::do_get_unused_symbol_count): New function.
5483         (Sized_input_reader::do_get_unused_symbol): New function.
5484         (Sized_incremental_binary::do_input_file_count): New function.
5485         (Sized_incremental_binary::do_get_input_reader): Change signature;
5486         use index instead of filename.
5487         (Sized_incremental_binary::section_map_): New data member.
5488         (Sized_incremental_binary::input_entry_readers_): New data member.
5489         (class Sized_incr_relobj): New class.
5490         (class Sized_incr_dynobj): New class.
5491         (make_sized_incremental_object): New function.
5492         (class Incremental_library): New class.
5493         * layout.cc (Free_list::num_lists): New static data member.
5494         (Free_list::num_nodes): New static data member.
5495         (Free_list::num_removes): New static data member.
5496         (Free_list::num_remove_visits): New static data member.
5497         (Free_list::num_allocates): New static data member.
5498         (Free_list::num_allocate_visits): New static data member.
5499         (Free_list::init): New function.
5500         (Free_list::remove): New function.
5501         (Free_list::allocate): New function.
5502         (Free_list::dump): New function.
5503         (Free_list::print_stats): New function.
5504         (Layout_task_runner::run): Resize output file for incremental updates.
5505         (Layout::Layout): Initialize new data members.
5506         (Layout::set_incremental_base): New function.
5507         (Layout::init_fixed_output_section): New function.
5508         (Layout::layout_eh_frame): Do not build .eh_frame_hdr section for
5509         incremental updates.
5510         (Layout::create_gold_note): Do not create gold note section for
5511         incremental updates.
5512         (Layout::set_segment_offsets): Do not recalculate RELRO alignment
5513         for incremental updates.
5514         (Layout::set_section_offsets): For incremental updates, allocate space
5515         from free list.
5516         (Layout::create_symtab_sections): Layout with offsets relative to
5517         start of section; for incremental updates, allocate space from free
5518         list.
5519         (Layout::create_shdrs): For incremental updates, allocate space from
5520         free list.
5521         (Layout::finish_dynamic_section): For incremental updates, do not
5522         check --as-needed (fixed in subsequent patch).
5523         * layout.h (class Free_list): New class.
5524         (Layout::set_incremental_base): New function.
5525         (Layout::incremental_base): New function.
5526         (Layout::init_fixed_output_section): New function.
5527         (Layout::allocate): New function.
5528         (Layout::incremental_base_): New data member.
5529         (Layout::free_list_): New data member.
5530         * main.cc (main): Print Free_list statistics.
5531         * object.cc (Relobj::finalize_incremental_relocs): Add
5532         clear_counts parameter; clear counts only when clear_counts is set.
5533         (Sized_relobj::Sized_relobj): Initialize new base class.
5534         (Sized_relobj::do_layout): Don't report special sections.
5535         (Sized_relobj::do_for_all_local_got_entries): New function.
5536         (Sized_relobj::write_local_symbols): Add symtab_off parameter; add
5537         symtab_off to all symbol table offsets.
5538         (Sized_relobj::do_get_global_symbol_counts): Add typename keyword.
5539         * object.h (class Got_offset_list): Move to top of file.
5540         (Object::Object): Allow case where input_file == NULL.
5541         (Object::~Object): Likewise.
5542         (Object::input_file): Assert that input_file != NULL.
5543         (Object::lock): Allow case where input_file == NULL.
5544         (Object::unlock): Likewise.
5545         (Object::is_locked): Likewise.
5546         (Object::token): Likewise.
5547         (Object::release): Likewise.
5548         (Object::is_incremental): New function.
5549         (Object::get_mtime): New function.
5550         (Object::for_all_local_got_entries): New function.
5551         (Object::clear_view_cache_marks): Allow case where input_file == NULL.
5552         (Object::set_is_in_system_directory): New function.
5553         (Object::is_in_system_directory): New function.
5554         (Object::do_is_incremental): New function.
5555         (Object::do_get_mtime): New function.
5556         (Object::do_for_all_local_got_entries): New function.
5557         (Object::is_in_system_directory_): New data member.
5558         (Relobj::finalize_incremental_relocs): Add clear_counts parameter.
5559         (class Sized_relobj_base): New class.
5560         (class Sized_relobj): Derive from Sized_relobj_base.
5561         (class Sized_relobj::Symbols): Redeclare from base class.
5562         (class Sized_relobj::local_got_offset_list): Remove.
5563         (class Sized_relobj::Output_sections): Redeclare from base class.
5564         (class Sized_relobj::do_for_all_local_got_entries): New function.
5565         (class Sized_relobj::write_local_symbols): Add offset parameter.
5566         (class Sized_relobj::local_symbol_offset_): Update comment.
5567         (class Sized_relobj::local_dynsym_offset_): Update comment.
5568         * options.cc (Input_arguments::add_file): Remove const.
5569         * options.h (Input_file_argument::Input_file_argument):
5570         Initialize arg_serial_ (all constructors).
5571         (Input_file_argument::set_arg_serial): New function.
5572         (Input_file_argument::arg_serial): New function.
5573         (Input_file_argument::arg_serial_): New data member.
5574         (Input_arguments::Input_arguments): Initialize file_count_.
5575         (Input_arguments::add_file): Remove const.
5576         (Input_arguments::number_of_input_files): New function.
5577         (Input_arguments::file_count_): New data member.
5578         (Command_line::number_of_input_files): Call
5579         Input_arguments::number_of_input_files.
5580         * output.cc (Output_segment_headers::Output_segment_headers):
5581         Set current size.
5582         (Output_section::Input_section::current_data_size): New function.
5583         (Output_section::Output_section): Initialize new data members.
5584         (Output_section::add_input_section): Don't do merge sections for
5585         an incremental link; allocate space from free list for an
5586         incremental update.
5587         (Output_section::add_output_section_data): Allocate space from
5588         free list for an incremental update.
5589         (Output_section::update_data_size): New function.
5590         (Output_section::set_fixed_layout): New function.
5591         (Output_section::reserve): New function.
5592         (Output_segment::set_section_addresses): Remove const.
5593         (Output_segment::set_section_list_addresses): Remove const; allocate
5594         space from free list for an incremental update.
5595         (Output_segment::set_offset): Adjust size of RELRO segment for an
5596         incremental update.
5597         * output.h (Output_data::current_data_size): Move here from
5598         child classes.
5599         (Output_data::pre_finalize_data_size): New function.
5600         (Output_data::update_data_size): New function.
5601         (Output_section_headers::update_data_size): new function.
5602         (Output_section_data_build::current_data_size): Move to Output_data.
5603         (Output_data_strtab::update_data_size): New function.
5604         (Output_section::current_data_size): Move to Output_data.
5605         (Output_section::set_fixed_layout): New function.
5606         (Output_section::has_fixed_layout): New function.
5607         (Output_section::reserve): New function.
5608         (Output_section::update_data_size): New function.
5609         (Output_section::has_fixed_layout_): New data member.
5610         (Output_section::free_list_): New data member.
5611         (Output_segment::set_section_addresses): Remove const.
5612         (Output_segment::set_section_list_addresses): Remove const.
5613         * plugin.cc (Sized_pluginobj::do_for_all_local_got_entries):
5614         New function.
5615         * plugin.h (Sized_pluginobj::do_for_all_local_got_entries):
5616         New function.
5617         * readsyms.cc (Read_symbols::do_read_symbols): Add library
5618         parameter when calling Add_symbols constructor; store argument
5619         serial number for members of a lib group.
5620         (Add_symbols::locks): Allow case where token == NULL.
5621         (Add_symbols::run): Report libraries denoted by --start-lib/--end-lib.
5622         (Read_member::~Read_member): New function.
5623         (Read_member::is_runnable): New function.
5624         (Read_member::locks): New function.
5625         (Read_member::run): New function.
5626         (Check_script::~Check_script): New function.
5627         (Check_script::is_runnable): New function.
5628         (Check_script::locks): New function.
5629         (Check_script::run): New function.
5630         (Check_library::~Check_library): New function.
5631         (Check_library::is_runnable): New function.
5632         (Check_library::locks): New function.
5633         (Check_library::run): New function.
5634         * readsyms.h (Add_symbols::Add_symbols): Add library parameter.
5635         (Add_symbols::library_): New data member.
5636         (class Read_member): New class.
5637         (class Check_script): New class.
5638         (class Check_library): New class.
5639         * reloc.cc (Read_relocs::is_runnable): Allow case where
5640         token == NULL.
5641         (Read_relocs::locks): Likewise.
5642         (Scan_relocs::locks): Likewise.
5643         (Relocate_task::locks): Likewise.
5644         (Sized_relobj::do_scan_relocs): Tell finalize_incremental_relocs
5645         to clear counters.
5646         (Sized_relobj::incremental_relocs_scan): Fix comment.
5647         (Sized_relobj::do_relocate): Pass output file offset to
5648         write_local_symbols.
5649         (Sized_relobj::incremental_relocs_write_reltype): Use reloc_size
5650         from class declaration.
5651         * script.cc (read_input_script): Allocate Script_info; pass
5652         argument serial number to report_script.
5653         * script.h (class Script_info): Move to incremental.h.
5654         * symtab.cc (Symbol_table::add_from_incrobj): New function.
5655         * symtab.h (Symbol_table::add_from_incrobj): New function.
5656         (Symbol_table::set_file_offset): New function.
5657
5658 2011-04-05  Cary Coutant  <ccoutant@google.com>
5659
5660         * incremental-dump.cc (dump_incremental_inputs): Change signature
5661         to take a Sized_incremental_binary; change caller.  Use readers
5662         in Sized_incremental_binary.
5663         * incremental.cc
5664         (Sized_incremental_binary::find_incremental_inputs_sections):
5665         Rename do_find_incremental_inputs_sections to this.
5666         (Sized_incremental_binary::setup_readers): New function.
5667         (Sized_incremental_binary::do_check_inputs): Check
5668         has_incremental_info_ flag; move setup code to setup_readers;
5669         use input readers.
5670         (Sized_incremental_binary::do_file_is_unchanged): New function.
5671         (Sized_incremental_binary::do_get_input_reader): New function.
5672         * incremental.h (class Incremental_binary): Move to end of file.
5673         (Incremental_binary::file_is_unchanged): New function.
5674         (Incremental_binary::do_file_is_unchanged): New function.
5675         (Incremental_binary::Input_reader): New class.
5676         (Incremental_binary::get_input_reader): New function.
5677         (class Sized_incremental_binary): Move to end of file.
5678         (Sized_incremental_binary::Sized_incremental_binary): Setup the
5679         input section reader classes.
5680         (Sized_incremental_binary::has_incremental_info): New function.
5681         (Sized_incremental_binary::inputs_reader): New function.
5682         (Sized_incremental_binary::symtab_reader): New function.
5683         (Sized_incremental_binary::relocs_reader): New function.
5684         (Sized_incremental_binary::got_plt_reader): New function.
5685         (Sized_incremental_binary::do_file_is_unchanged): New function.
5686         (Sized_incremental_binary::Sized_input_reader): New class.
5687         (Sized_incremental_binary::get_input_reader): New function.
5688         (Sized_incremental_binary::find_incremental_inputs_sections):
5689         Rename do_find_incremental_inputs_sections to this.
5690         (Sized_incremental_binary::setup_readers): New function.
5691         (Sized_incremental_binary::has_incremental_info_): New data member.
5692         (Sized_incremental_binary::inputs_reader_): New data member.
5693         (Sized_incremental_binary::symtab_reader_): New data member.
5694         (Sized_incremental_binary::relocs_reader_): New data member.
5695         (Sized_incremental_binary::got_plt_reader_): New data member.
5696         (Sized_incremental_binary::current_input_file_): New data member.
5697
5698 2011-04-05  Paul Pluzhnikov  <ppluzhnikov@google.com>
5699
5700         PR gold/12640
5701         * dwarf_reader.cc (Sized_dwarf_line_info): Fix vector bounds
5702         violation.
5703
5704 2011-03-30  Cary Coutant  <ccoutant@google.com>
5705
5706         * archive.cc (Archive::include_member): Adjust call to report_object.
5707         (Add_archive_symbols::run): Add script_info to call to
5708         report_archive_begin.
5709         (Lib_group::include_member): Adjust call to report_object.
5710         (Add_lib_group_symbols::run): Adjust call to report_object.
5711         * incremental-dump.cc (dump_incremental_inputs): Remove unnecessary
5712         blocks.  Add object count for script input files.
5713         * incremental.cc (Incremental_inputs::report_archive_begin): Add
5714         script_info parameter; change all callers.
5715         (Incremental_inputs::report_object): Add script_info parameter;
5716         change all callers.
5717         (Incremental_inputs::report_script): Store backpointer to
5718         incremental info entry.
5719         (Output_section_incremental_inputs::set_final_data_size): Record
5720         additional information for scripts.
5721         (Output_section_incremental_inputs::write_info_blocks): Likewise.
5722         * incremental.h (Incremental_script_entry::add_object): New function.
5723         (Incremental_script_entry::get_object_count): New function.
5724         (Incremental_script_entry::get_object): New function.
5725         (Incremental_script_entry::objects_): New data member; adjust
5726         constructor.
5727         (Incremental_inputs::report_archive_begin): Add script_info parameter.
5728         (Incremental_inputs::report_object): Add script_info parameter.
5729         (Incremental_inputs_reader::get_object_count): New function.
5730         (Incremental_inputs_reader::get_object_offset): New function.
5731         * options.cc (Input_arguments::add_file): Return reference to
5732         new input argument.
5733         * options.h (Input_argument::set_script_info): New function.
5734         (Input_argument::script_info): New function.
5735         (Input_argument::script_info_): New data member; adjust all
5736         constructors.
5737         (Input_file_group::add_file): Return reference to new input argument.
5738         (Input_file_lib::add_file): Likewise.
5739         (Input_arguments::add_file): Likewise.
5740         * readsyms.cc (Add_symbols::run): Adjust call to report_object.
5741         * script.cc (Parser_closure::Parser_closure): Add script_info
5742         parameter; adjust all callers.
5743         (Parser_closure::script_info): New function.
5744         (Parser_closure::script_info_): New data member.
5745         (read_input_script): Report scripts earlier to incremental info.
5746         (script_add_file): Set script_info in Input_argument.
5747         (script_add_library): Likewise.
5748         * script.h (Script_options::Script_info): Rewrite class.
5749
5750 2011-03-29  Cary Coutant  <ccoutant@google.com>
5751
5752         * archive.cc (Library_base::should_include_member): Move
5753         method here from class Archive.
5754         (Archive::Archive): Initialize base class.
5755         (Archive::should_include_member): Move to base class.
5756         (Archive::do_for_all_unused_symbols): New function.
5757         (Add_archive_symbols::run): Remove redundant access to
5758         incremental_inputs.
5759         (Lib_group::Lib_group): Initialize base class.
5760         (Lib_group::do_filename): New function.
5761         (Lib_group::include_member): Pass pointer to Lib_group to
5762         report_object.
5763         (Lib_group::do_for_all_unused_symbols): New function.
5764         (Add_lib_group_symbols::run): Report archive information for
5765         incremental links.
5766         * archive.h (class Library_base): New base class.
5767         (class Archive): Derive from Library_base.
5768         (Archive::filename): Move to base class.
5769         (Archive::set_incremental_info): Likewise.
5770         (Archive::incremental_info): Likewise.
5771         (Archive::Should_include): Likewise.
5772         (Archive::should_include_member): Likewise.
5773         (Archive::Armap_entry): Remove.
5774         (Archive::Unused_symbol_iterator): Remove.
5775         (Archive::unused_symbols_begin): Remove.
5776         (Archive::unused_symbols_end): Remove.
5777         (Archive::do_filename): New function.
5778         (Archive::do_get_mtime): New function.
5779         (Archive::do_for_all_unused_symbols): New function.
5780         (Archive::task_): Move to base class.
5781         (Archive::incremental_info_): Likewise.
5782         (class Lib_group): Derive from Library_base.
5783         (Lib_group::do_filename): New function.
5784         (Lib_group::do_get_mtime): New function.
5785         (Lib_group::do_for_all_unused_symbols): New function.
5786         (Lib_group::task_): Move to base class.
5787         * dynobj.cc (Sized_dynobj::do_for_all_global_symbols): New
5788         function.
5789         * dynobj.h (Sized_dynobj::do_for_all_global_symbols): New
5790         function.
5791         * incremental.cc (Incremental_inputs::report_archive_begin):
5792         Use Library_base; call library's get_mtime; add incremental inputs
5793         entry before members.
5794         (class Unused_symbol_visitor): New class.
5795         (Incremental_inputs::report_archive_end): Use Library_base; use
5796         visitor class to record unused symbols; don't add incremental inputs
5797         entry after members.
5798         (Incremental_inputs::report_object): Use Library_base.
5799         * incremental.h
5800         (Incremental_archive_entry::Incremental_archive_entry): Remove
5801         unused Archive parameter.
5802         (Incremental_inputs::report_archive_begin): Use Library_base.
5803         (Incremental_inputs::report_archive_end): Likewise.
5804         (Incremental_inputs::report_object): Likewise.
5805         * object.cc (Sized_relobj::do_for_all_global_symbols): New
5806         function.
5807         * object.h (Object::for_all_global_symbols): New function.
5808         (Object::do_for_all_global_symbols): New function.
5809         (Sized_relobj::do_for_all_global_symbols): New function.
5810         * plugin.cc (Sized_pluginobj::do_for_all_global_symbols):  New
5811         function.
5812         * plugin.h (Sized_pluginobj::do_for_all_global_symbols):  New
5813         function.
5814
5815 2011-03-27  Ian Lance Taylor  <iant@google.com>
5816
5817         * archive.cc (Archive::interpret_header): Return -1 if something
5818         goes wrong.  Change callers accordingly.
5819
5820 2011-03-25  Cary Coutant  <ccoutant@google.com>
5821
5822         * testsuite/Makefile.am (final_layout.stdout): Use -n option with nm.
5823         * testsuite/Makefile.in: Regenerate.
5824
5825 2011-03-23  Rafael Ávila de Espíndola <respindola@mozilla.com>
5826
5827         * plugin.cc (get_view): New.
5828         (Plugin::load): Pass get_view to the plugin.
5829         (Plugin_manager::get_view): New.
5830
5831 2011-03-21  Ian Lance Taylor  <iant@google.com>
5832
5833         * testsuite/final_layout.sh: Rewrite to not use dc.
5834         * testsuite/relro_test.sh: Fail if dc is not present.
5835
5836 2011-03-21  Sriraman Tallam  <tmsriram@google.com>
5837
5838         * testsuite/icf_safe_so_test.sh: Add #!/bin/sh to start.
5839         Change == to -eq.
5840         * testsuite/icf_string_merge_test.sh: Add #!/bin/sh to start.
5841         * testsuite/icf_safe_test.sh: Add #!/bin/sh to start.
5842         Change == to -eq.
5843         * testsuite/icf_sht_rel_addend_test.sh: Add #!/bin/sh to start.
5844         * testsuite/icf_preemptible_functions_test.sh: Add #!/bin/sh to start.
5845
5846 2011-03-14  Ian Lance Taylor  <iant@google.com>
5847
5848         * script-sections.cc (Sort_output_sections::script_compare):
5849         Rename from is_before, change return type.
5850         (Sort_output_sections::operator()): Adjust accordingly.
5851
5852 2011-03-11  Jeffrey Yasskin  <jyasskin@google.com>
5853
5854         PR gold/12572
5855         * testsuite/odr_violation2.cc: Add comment to make all error line
5856         numbers double digits.
5857         * testsuite/debug_msg.sh: Adjust expected errors.
5858
5859 2011-03-09  Jeffrey Yasskin  <jyasskin@google.com>
5860
5861         * dwarf_reader.cc (Sized_dwarf_line_info): Include all lines,
5862         but mark earlier ones as non-canonical
5863         (offset_to_iterator): Update search target and example
5864         (do_addr2line): Return extra lines in a vector*
5865         (format_file_lineno): Extract from do_addr2line
5866         (one_addr2line): Add vector* out-param
5867         * dwarf_reader.h (Offset_to_lineno_entry): New field recording
5868         when a lineno entry appeared last for its instruction
5869         (Dwarf_line_info): Add vector* out-param
5870         * object.cc (Relocate_info): Pass NULL for the vector* out-param
5871         * symtab.cc (Odr_violation_compare): Include the lineno in the
5872         comparison again.
5873         (linenos_from_loc): New. Combine the canonical line for an
5874         address with its other lines.
5875         (True_if_intersect): New. Helper functor to make
5876         std::set_intersection a query.
5877         (detect_odr_violations): Compare sets of lines instead of just
5878         one line for each function. This became less deterministic, but
5879         has fewer false positives.
5880         * symtab.h: Declarations.
5881         * testsuite/Makefile.am (odr_violation2.o): Compile with -O2 to
5882         mix an optimized and non-optimized object in the same binary
5883         (odr_violation2.so): Same.
5884         * testsuite/Makefile.in: Regenerate from Makefile.am.
5885         * testsuite/debug_msg.cc (main): Make OdrDerived classes.
5886         * testsuite/debug_msg.sh: Update line numbers and add
5887         assertions.
5888         * testsuite/odr_violation1.cc: Use OdrDerived, in a
5889         non-optimized context.
5890         * testsuite/odr_violation2.cc: Make sure Ordering::operator()
5891         isn't inlined, and use OdrDerived in an optimized context.
5892         * testsuite/odr_header1.h: Defines OdrDerived, where
5893         optimization will change the
5894         first-instruction-in-the-destructor's file and line number.
5895         * testsuite/odr_header2.h: Defines OdrBase.
5896
5897 2011-03-09  Ian Lance Taylor  <iant@google.com>
5898
5899         * fileread.cc (File_read::clear_views): Don't delete the whole
5900         file view.
5901
5902 2011-03-08  Ian Lance Taylor  <iant@google.com>
5903
5904         PR gold/12525
5905         * fileread.cc: #include <climits>.
5906         (GOLD_IOV_MAX): Define.
5907         (File_read::read_multiple): Limit number of entries by iov_max.
5908         * fileread.h (class File_read): Always set max_readv_entries to
5909         128.
5910
5911 2011-03-07  Ian Lance Taylor  <iant@google.com>
5912
5913         PR gold/12525
5914         * options.h (class General_options): Add -dy and -dn.
5915
5916 2011-03-02  Cary Coutant  <ccoutant@google.com>
5917
5918         * testsuite/script_test_9.t: Add TLS segment.
5919
5920 2011-03-02  Simon Baldwin  <simonb@google.com>
5921
5922         * configure.ac: Add check for gnu_indirect_function support in
5923         the toolchain building binutils.
5924         * configure: Rebuild.
5925
5926 2011-02-18  Rafael Ávila de Espíndola <respindola@mozilla.com>
5927
5928         * symtab.cc (Symbol::should_add_dynsym_entry) Return false for
5929         plugin only symbols.
5930         (Symbol_table::sized_finalize_symbol) Mark symbol only present
5931         in plugin files as not needed in the symbol table.
5932
5933 2011-02-11  Sriraman Tallam  <tmsriram@google.com>
5934
5935         * output.cc (Output_section::add_input_section): Delay fill
5936         generation for section ordering.
5937
5938 2011-02-09  Ian Lance Taylor  <iant@google.com>
5939
5940         PR gold/12316
5941         * object.h (class Sized_relobj): Remove clear_local_symbols.
5942         * reloc.cc (Sized_relobj::do_relocate): Don't call
5943         clear_local_symbols.
5944
5945 2011-02-08  Rafael Ávila de Espíndola <respindola@mozilla.com>
5946
5947         * plugin.cc (is_visible_from_outside): Return true for symbols
5948         in the -u option.
5949
5950 2011-02-04  Jeffrey Yasskin  <jyasskin@google.com>
5951
5952         * symtab.cc (Odr_violation_compare::operator()): Sort by just the
5953         filename.
5954
5955 2011-02-02  Sriraman Tallam  <tmsriram@google.com>
5956
5957         * icf.h (is_section_foldable_candidate): Change type of parameter
5958         to std::string.
5959         * icf.cc (Icf::find_identical_sections): Change type of local variable
5960         section_name to be std::string.
5961         (is_function_ctor_or_dtor): Change type of parameter to std::string.
5962
5963 2011-01-25  Ian Lance Taylor  <iant@google.com>
5964
5965         * script.cc (script_add_extern): Rewrite to use
5966         add_symbol_reference.
5967
5968 2011-01-25  Doug Kwan  <dougkwan@google.com>
5969
5970         * icf.cc (get_section_contents): Always lock section's object.
5971
5972 2011-01-24  Ian Lance Taylor  <iant@google.com>
5973
5974         * options.h (class General_options): Accept
5975         --no-detect-odr-violations.
5976
5977 2011-01-24  Ian Lance Taylor  <iant@google.com>
5978
5979         * version.cc (version_string): Bump to 1.11.
5980
5981 2011-01-24  Ian Lance Taylor  <iant@google.com>
5982
5983         * plugin.cc (class Plugin_rescan): Define new class.
5984         (Plugin_manager::claim_file): Set any_claimed_.
5985         (Plugin_manager::save_archive): New function.
5986         (Plugin_manager::save_input_group): New function.
5987         (Plugin_manager::all_symbols_read): Create Plugin_rescan task if
5988         necessary.
5989         (Plugin_manager::new_undefined_symbol): New function.
5990         (Plugin_manager::rescan): New function.
5991         (Plugin_manager::rescannable_defines): New function.
5992         (Plugin_manager::add_input_file): Set any_added_.
5993         * plugin.h (class Plugin_manager): define new fields rescannable_,
5994         undefined_symbols_, any_claimed_, and any_added_.  Declare
5995         Plugin_rescan as friend.  Declare new functions.
5996         (Plugin_manager::Rescannable): Define type.
5997         (Plugin_manager::Rescannable_list): Define type.
5998         (Plugin_manager::Undefined_symbol_list): Define type.
5999         (Plugin_manager::Plugin_manager): Initialize new fields.
6000         * archive.cc (Archive::defines_symbol): New function.
6001         (Add_archive_symbols::run): Pass archive to plugins if any.
6002         * archive.h (class Archive): Declare defines_symbol.
6003         * readsyms.cc (Input_group::~Input_group): New function.
6004         (Finish_group::run): Pass input_group to plugins if any.
6005         * readsyms.h (class Input_group): Declare destructor.
6006         * symtab.cc (add_from_object): Pass undefined symbol to plugins if
6007         any.
6008
6009 2011-01-10  Ian Lance Taylor  <iant@google.com>
6010
6011         * layout.cc (Layout::layout_eh_frame): Mark a writable .eh_frame
6012         section as relro.
6013         (Layout::set_segment_offsets): Reset increase_relro before calling
6014         set_section_addresses a second time.
6015
6016 2011-01-04  Cary Coutant  <ccoutant@google.com>
6017
6018         * script-sections.cc (Sort_output_sections::operator()): Sort TLS
6019         sections before NOBITS sections.
6020
6021 2011-01-01  H.J. Lu  <hongjiu.lu@intel.com>
6022
6023         * version.cc (print_version): Update copyright to 2011.
6024
6025 2010-12-23  Cary Coutant  <ccoutant@google.com>
6026
6027         * output.h (Output_data_reloc::add_output_section): Pass OD instead
6028         of OS to this->add.  Add OD parameter to second form of the function.
6029
6030 2010-12-20  Ian Lance Taylor  <iant@google.com>
6031
6032         * dwarf_reader.cc (Sized_dwarf_line_info::read_lines): Only keep
6033         second of two consecutive entries with same offset.
6034
6035 2010-12-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6036
6037         * testsuite/Makefile.am (ifuncmain2static_LDADD)
6038         (ifuncmain2_LDADD, ifuncmain4static_LDADD, ifuncmain4_LDADD)
6039         (ifuncmain7static_LDADD, ifuncmain7_LDADD): New empty variables,
6040         to avoid unneeded links against $(LDADD).
6041         * testsuite/Makefile.in: Regenerate.
6042
6043 2010-12-15  Ian Lance Taylor  <iant@google.com>
6044
6045         PR gold/12324
6046         * x86_64.cc (Target_x86_64::Scan::check_non_pic): Give an error
6047         for R_X86_64_32 and R_X86_64_PC32.
6048         * testsuite/Makefile.am (ver_matching_def.so): Depend on and use
6049         ver_matching_def_pic.o.
6050         (ver_matching_def_pic.o): New target.
6051
6052 2010-12-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6053
6054         * fileread.cc (file_counts_lock, file_counts_initialize_lock)
6055         (total_mapped_bytes, current_mapped_bytes, maximum_mapped_bytes):
6056         Move definition before File_read::View member definitions.
6057         (File_read::View::~View): Initialize and hold lock before
6058         updating current_mapped_bytes.
6059
6060 2010-12-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6061
6062         * dwarf_reader.cc: Remove outdated comment.
6063         * gold-threads.cc: Fix typo in error message.
6064         * archive.cc: Fix typos in comments.
6065         * archive.h: Likewise.
6066         * arm-reloc-property.cc: Likewise.
6067         * arm-reloc-property.h: Likewise.
6068         * arm-reloc.def: Likewise.
6069         * arm.cc: Likewise.
6070         * attributes.h: Likewise.
6071         * cref.cc: Likewise.
6072         * ehframe.cc: Likewise.
6073         * fileread.h: Likewise.
6074         * gold.h: Likewise.
6075         * i386.cc: Likewise.
6076         * icf.cc: Likewise.
6077         * incremental.h: Likewise.
6078         * int_encoding.cc: Likewise.
6079         * layout.h: Likewise.
6080         * main.cc: Likewise.
6081         * merge.h: Likewise.
6082         * object.cc: Likewise.
6083         * object.h: Likewise.
6084         * options.cc: Likewise.
6085         * readsyms.cc: Likewise.
6086         * reduced_debug_output.cc: Likewise.
6087         * reloc.cc: Likewise.
6088         * script-sections.cc: Likewise.
6089         * sparc.cc: Likewise.
6090         * symtab.h: Likewise.
6091         * target-reloc.h: Likewise.
6092         * target.cc: Likewise.
6093         * target.h: Likewise.
6094         * timer.cc: Likewise.
6095         * timer.h: Likewise.
6096         * x86_64.cc: Likewise.
6097
6098 2010-12-09  Cary Coutant  <ccoutant@google.com>
6099
6100         * layout.cc (Layout::layout_gnu_stack): Add warnings for executable
6101         stack.
6102         * layout.h (Layout::layout_gnu_stack): Add pointer to Object
6103         parameter; change all callers.
6104         * object.cc (Sized_relobj::do_layout): Adjust call to layout_gnu_stack.
6105         * options.h (warn_execstack): New option.
6106
6107 2010-12-07  Doug Kwan  <dougkwan@google.com>
6108
6109         * arm.cc (Target_arm::Scan::get_reference_flags): Treat R_ARM_PREL31
6110         like function call relocations.
6111
6112 2010-12-07  Ian Lance Taylor  <iant@google.com>
6113
6114         * archive.cc (Archive::get_elf_object_for_member): Permit
6115         punconfigured to be NULL.
6116         (Archive::read_symbols): Pass NULL to get_elf_object_for_member.
6117         (Archive::include_member): Pass NULL to get_elf_object_for_member
6118         if we searched for the archive and this is the first included
6119         object.
6120
6121 2010-12-01  Ian Lance Taylor  <iant@google.com>
6122
6123         * dwarf_reader.h (class Sized_dwarf_line_info): Add
6124         track_relocs_type_ field.
6125         * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
6126         Set track_relocs_type_.
6127         (Sized_dwarf_line_info::process_one_opcode): Ignore the section
6128         contents when using RELA relocs.
6129         (Sized_dwarf_line_info::read_relocs): Add the reloc addend to
6130         reloc_map_.
6131         * reloc.cc (Track_relocs::next_addend): New function.
6132         * reloc.h (class Track_relocs): Declare next_addend.
6133
6134 2010-12-01  Ian Lance Taylor  <iant@google.com>
6135
6136         * testsuite/icf_virtual_function_folding_test.cc (class Bar): Add
6137         virtual destructor.
6138
6139 2010-12-01  Ian Lance Taylor  <iant@google.com>
6140
6141         * README: Update compilers known to work and fail.
6142
6143 2010-11-23  Matthias Klose  <doko@ubuntu.com>
6144
6145         * configure.in: For --enable-gold, handle value `default' instead of
6146         `both*'.  Always install ld as ld.bfd, install as ld if gold is
6147         not the default.
6148         * configure: Regenerate.
6149
6150 2010-11-18  Doug Kwan  <dougkwan@google.com>
6151
6152         * expression.cc (BINARY_EXPRESSION): Initialize left_alignment
6153         and right_alignment to be zero.  Store result alignment only if it is
6154         greater than existing alignment.
6155
6156 2010-11-16  Cary Coutant  <ccoutant@google.com>
6157
6158         PR gold/12220
6159         * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
6160         Check for ".zdebug_line".
6161
6162 2010-11-16  Doug Kwan  <dougkwan@google.com>
6163             Cary Coutant  <ccoutant@google.com>
6164
6165         * output.h (Output_segment::set_section_addresses): Pass increase_relro
6166         by reference; adjust all callers.
6167         * output.cc (Output_segment::set_section_addresses): Adjust references
6168         to increase_relro. Add padding to *increase_relro when ORDER_RELRO_LAST
6169         list is empty.
6170         (Output_segment::set_offset): Assert if PT_GNU_RELRO segment does not
6171         end at page boundary.
6172
6173 2010-11-16  Cary Coutant  <ccoutant@google.com>
6174
6175         PR gold/12220
6176         * layout.cc (Layout::choose_output_section): Transform names of
6177         compressed sections even when using a script with a SECTIONS clause.
6178         (Layout::output_section_name): Remove code to transform
6179         compressed debug section names.
6180         * output.cc (Output_section::add_input_section): Use uncompressed
6181         section size when tracking input sections.
6182
6183 2010-11-11  Richard Sandiford  <richard.sandiford@linaro.org>
6184
6185         * symtab.h (Symbol::NON_PIC_REF): Remove.
6186         (Symbol::RELATIVE_REF, Symbol::TLS_REF): New Reference_flags.
6187         (Symbol::FUNCTION_CALL): Renumber.  Reword comment.
6188         (Symbol::needs_dynamic_reloc): Don't check NON_PIC_REF.
6189         (Symbol::use_plt_offset): Take a flags argument and pass it
6190         directly to needs_dynamic_reloc.  Restrict check for undefined
6191         weak symbols to function calls.
6192         * arm.cc (Target_arm::Scan::get_reference_flags): New function.
6193         (Target_arm::Scan::global): Use it.
6194         (Target_arm::Scan::scan_reloc_for_stub): Likewise.
6195         (Target_arm::Relocate::relocate): Likewise.
6196         (Target_arm::Relocate::should_apply_static_reloc): Replace flags
6197         parameter with an r_type parameter.  Use get_reference_flags
6198         to get the flags.
6199         (Target_arm::Relocate::relocate): Update accordingly.
6200         * i386.cc (Target_i386::Scan::get_reference_flags): New function.
6201         (Target_i386::Scan::reloc_needs_plt_for_ifunc): Use it.
6202         (Target_i386::Scan::global): Likewise.
6203         (Target_i386::Relocate::relocate): Likewise.
6204         (Target_i386::Relocate::should_apply_static_reloc): Replace flags
6205         parameter with an r_type parameter.  Use get_reference_flags
6206         to get the flags.
6207         (Target_i386::Relocate::relocate): Update accordingly.
6208         * powerpc.cc (Target_powerpc::Scan::get_reference_flags): New function.
6209         (Target_powerpc::Scan::global): Use it.
6210         (Target_powerpc::Scan::scan_reloc_for_stub): Likewise.
6211         (Target_powerpc::Relocate::relocate): Likewise.
6212         * sparc.cc (Target_sparc::Scan::get_reference_flags): New function.
6213         (Target_sparc::Scan::global): Use it.
6214         (Target_sparc::Scan::scan_reloc_for_stub): Likewise.
6215         (Target_sparc::Relocate::relocate): Likewise.
6216         * x86_64.cc (Target_x86_64::Scan::get_reference_flags): New function.
6217         (Target_x86_64::Scan::reloc_needs_plt_for_ifunc): Use it.
6218         (Target_x86_64::Scan::global): Likewise.
6219         (Target_x86_64::Relocate::relocate): Likewise.
6220
6221 2010-11-08  Doug Kwan  <dougkwan@google.com>
6222             Cary Coutant  <ccoutant@google.com>
6223
6224         * arm.cc (Arm_exidx_merge_section::build_contents): New method.
6225         (Arm_exidx_merge_section::section_contents_): New data member.
6226         (Arm_input_section::Arm_input_section): Initialize original_contents_.
6227         (Arm_input_section::~Arm_input_section): De-allocate memory.
6228         (Arm_input_section::original_contents_): New data member.
6229         (Arm_exidx_fixup::process_exidx_section): Pass EXIDX section contents
6230         in parameters instead of calling Object::section_contents without
6231         locking.
6232         (Arm_output_section::group_section): New parameter TASK.  Pass it
6233         to callees that need locking objects.
6234         (Arm_output_section::fix_exidx_coverage): New parameter TASK.  Use it
6235         to lock EXIDX input sections.  Fix a formatting issue.  Call
6236         Arm_exidx_merged_section::build_contents to create merged section
6237         contents.
6238         (Arm_output_section::create_stub_group): New parameter TASK.  Use it
6239         to lock object of stub table owner.
6240         (Arm_exidx_input_section::Arm_exidx_input_section): Add new parameter
6241         TEXT_SIZE to initialize data member TEXT_SIZE_.
6242         (Arm_exidx_input_section::addralign): Fix typo in comment.
6243         (Arm_exidx_input_section::text_size): New method.
6244         (Target_arm::do_relax): New parameter TASK.  Pass it to callees
6245         that require locking objects.  Lock objects before scanning for stubs
6246         and updating local symbols.
6247         (Arm_input_section<big_endian>::init): Copy contents of original
6248         input section.
6249         (Arm_input_section<big_endian>::do_write): Use saved contents of
6250         original input section instead of calling Object::section_contents
6251         without locking.
6252         (Arm_exidx_cantunwind::do_fixed_endian_write): Find out text section
6253         size without calling Object::section_size().
6254         (Arm_exidx_merged_section::Arm_exidx_merged_section): Add sanity check
6255         for size.  Allocate a buffer for merged EXIDX entries.
6256         (Arm_exidx_merged_section::build_contents): New method.
6257         (Arm_exidx_merged_section::do_write): Move merge section contents
6258         building code to Arm_exidx_merged_section::build_contetns.  Write
6259         out contetns in buffer instead of building it on the fly.
6260         (Arm_relobj::make_exidx_input_section): Also pass text section size
6261         to Arm_exidx_input_section constructor.
6262         (Arm_relobj::do_read_symbols): Fix memory leak.  Fix a formatting issue.
6263         (Arm_dynobj::do_read_symbols): Fix memory leak.
6264         * layout.cc (Layout::finalize): Pass TASK to Target::relax().
6265         * target.h: (class Task): Add forward declaration.
6266         (Target::relax): Add new parameter TASK and pass it to
6267         Target::do_relax().
6268         (Target::do_relax):: New parameter TASK.  Fix a formatting issue.
6269
6270 2010-11-05  Cary Coutant  <ccoutant@google.com>
6271
6272         PR gold/10708
6273         * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Hold a lock on the
6274         object when reading from the file.
6275         * gold.cc (queue_middle_tasks): Hold a lock on the object when doing
6276         second layout pass.
6277         * icf.cc (preprocess_for_unique_sections): Hold a lock on the object
6278         when reading section contents.
6279         (get_section_contents): Likewise.
6280         (icf::find_identical_sections): Likewise.
6281         * mapfile.cc (Mapfile::print_discarded_sections): Hold a lock on the
6282         object when reading from the file.
6283         * plugin.cc (Plugin_manager::layout_deferred_objects): Hold a lock on
6284         the object when doing deferred section layout.
6285
6286 2010-11-03  Nick Clifton  <nickc@redhat.com>
6287
6288         PR gold/12001
6289         * script.h (class Symbol_assignment: name): New member.  Returns
6290         the name of the symbol.
6291         * scrfipt.cc (Script_options::is_pending_assignment): New member.
6292         Returns true if the given symbol name is on the list of
6293         assignments wating to be processed.
6294         * archive.cc (should_incldue_member): If the symbol is undefined,
6295         check to see if it is on the list of symbols pending assignment.
6296
6297 2010-11-03  Ryan Mansfield  <rmansfield@qnx.com>
6298
6299         * script-sections.cc (Script_sections::find_memory_region): Check
6300         for a NULL output section pointer.
6301
6302 2010-10-29  Doug Kwan  <dougkwan@google.com>
6303
6304         * arm.cc (Arm_outout_section::fix_exidx_coverage): Adjust call to
6305         Output_section::add_relaxed_input_section.
6306         * output.cc (Output_section::add_relaxed_input_section): Add new
6307         arguments LAYOUT and NAME.  Set section order index.
6308         (Output_section::convert_input_sections_in_list_to_relaxed_sections):
6309         Copy section order index.
6310         * output.h (Output_section::add_relaxed_input_section): Add new
6311         arguments LAYOUT and NAME.
6312
6313 2010-10-29  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
6314
6315         * testsuite/Makefile.am: Move gcctestdir/ld rule to
6316         NATIVE_OR_CROSS_LINKER.
6317         * testsuite/Makefile.in: Regenerate.
6318
6319 2010-10-20  Doug Kwan  <dougkwan@google.com>
6320
6321         * arm.cc (Arm_relobj::do_read_symbols): Warn about ARM EXIDX sections
6322         without SHF_LINK_ORDER flags.
6323         * layout.cc (Layout::choose_output_section): Do not filter
6324         SHF_LINK_ORDER flag in a relocatable link.
6325
6326 2010-10-17  Cary Coutant  <ccoutant@google.com>
6327
6328         * output.h (Output_segment::set_section_addresses): Change function
6329         signature.  Update all callers.
6330         * output.cc (Output_segment::is_first_section_relro): Ignore TLS
6331         sections.
6332         (Output_segment::set_section_addresses): Align after last TLS
6333         section.  Add padding before last relro section instead of after.
6334
6335 2010-10-17  Doug Kwan  <dougkwan@google.com>
6336
6337         * gold/arm.cc (Target_arm::got_section): Use correct order and set
6338         GOT output section to be writable.
6339
6340 2010-10-14  Cary Coutant  <ccoutant@google.com>
6341
6342         * debug.h (DEBUG_INCREMENTAL): New flag.
6343         (debug_string_to_enum): Add DEBUG_INCREMENTAL).
6344         * gold.cc (queue_initial_tasks): Check parameters for incremental link
6345         mode.
6346         * incremental.cc (report_command_line): Ignore all forms of
6347         --incremental.
6348         * layout.cc (Layout::Layout): Check parameters for incremental link
6349         mode.
6350         * options.cc (General_options::parse_incremental): New function.
6351         (General_options::parse_no_incremental): New function.
6352         (General_options::parse_incremental_full): New function.
6353         (General_options::parse_incremental_update): New function.
6354         (General_options::incremental_mode_): New data member.
6355         (General_options::finalize): Check incremental_mode_.
6356         * options.h (General_options): Update help text for --incremental.
6357         Add --no-incremental, --incremental-full, --incremental-update.
6358         (General_options::Incremental_mode): New enum type.
6359         (General_options::incremental_mode): New function.
6360         (General_options::incremental_mode_): New data member.
6361         * parameters.cc (Parameters::incremental_mode_): New data member.
6362         (Parameters::set_options): Set incremental_mode_.
6363         (Parameters::set_incremental_full): New function.
6364         (Parameters::incremental): New function.
6365         (Parameters::incremental_update): New function.
6366         (set_parameters_incremental_full): New function.
6367         * parameters.h (Parameters::set_incremental_full): New function.
6368         (Parameters::incremental): New function.
6369         (Parameters::incremental_update): New function.
6370         (Parameters::incremental_mode_): New data member.
6371         (set_parameters_incremental_full): New function.
6372         * plugin.cc (Plugin_manager::add_input_file): Check parameters for
6373         incremental link mode.
6374         * reloc.cc (Sized_relobj::do_read_relocs): Likewise.
6375         (Sized_relobj::do_relocate_sections): Likewise.
6376         * testsuite/Makefile.am (incremental_test): Use --incremental-full
6377         option.
6378         * testsuite/Makefile.in: Regenerate.
6379         * testsuite/incremental_test.sh: Filter all forms of --incremental.
6380
6381 2010-10-12  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
6382
6383         * script-sections.h (class Script_sections): Make
6384         Sections_elements typedef public.
6385         * script-sections.cc (class Sort_output_sections): Add elements_
6386         field.  Add constructor which sets it; change all callers.
6387         (Sort_output_sections::is_before): New function.
6388         (Sort_output_sections::operator()): Call is_before.
6389         * configure.ac (NATIVE_OR_CROSS_LINKER): New automake
6390         conditional.
6391         * testsuite/script_test_10.sh: New test. Test script section
6392         order.
6393         * testsuite/script_test_10.t: Likewise.
6394         * testsuite/script_test_10.s: Likewise.
6395         * testsuite/Makefile.am: Wrap the cross linker tests and the
6396         common tests into NATIVE_OR_CROSS_LINKER.
6397         (check_SCRIPTS): Add script_test_10.sh.
6398         (check_DATA): Add script_test_10.stdout.
6399         (script_test_10.o, script_test_10): New targets.
6400         (script_test_10.stdout): New target.
6401         * configure, testsuite/Makefile.in: Regenerate.
6402
6403 2010-10-12  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
6404
6405         * arm.cc (Target_arm::Scan::local): Report the unsupported reloc
6406         error for the deprecated relocations.
6407         (Target_arm::Scan::global): Likewise.
6408         (Target_arm::Relocate::relocate): Likewise.
6409
6410 2010-10-12  Richard Sandiford  <richard.sandiford@linaro.org>
6411
6412         * fileread.cc (Input_file::find_file): Initialize *found_name
6413         and *namep when using the fallback search for case 4.
6414
6415 2010-10-11  Cary Coutant  <ccoutant@google.com>
6416
6417         * options.h (class General_options): Redefine -z lazy as an alias for
6418         the negation of -z now.
6419
6420 2010-10-11  Ian Lance Taylor  <iant@google.com>
6421
6422         * resolve.cc (symbol_to_bits): Report the value of the unsupported
6423         binding.
6424
6425 2010-10-06  Nick Clifton  <nickc@redhat.com>
6426
6427         * script-sections.cc(class Memory_region): Remove
6428         current_lma_offset_ field.  Rename current_vma_offset_ to
6429         current_offset_.  Add last_section_ field.
6430         (Memory_region::get_current_vma_address): Rename to
6431         get_current_address.
6432         (Memory_region::get_current_lma_address): Delete.
6433         (Memory_region::increment_vma_offset): Rename to
6434         increment_offset.
6435         (Memory_region::increment_lma_offset): Delete.
6436         (Memory_region::attributes_compatible): New method.  Returns
6437         true if the provided section is compatible with the region.
6438         (Memory_region::get_last_section): New method.  Returns the last
6439         section to use the region.
6440         (Memory_region::set_last_section): New method.  Stores the last
6441         section to use the region.
6442         (Script_sections::block_in_region): New method.  Returns true if
6443         a block of memory is contained within a region.
6444         (Script_sections::find_memory_region): New method.  Locates a
6445         memory region to be used to set a VMA or LMA address.
6446         (Output_section_definition::set_section_addresses): Add code to
6447         check for addresses set by memory regions.
6448         (Output_segment::set_section_addresses): Remove memory region
6449         walking code.
6450         (Script_sections::create_segment): Add a warning if a header
6451         segment is created outside of any region.
6452         * script-sections.h (class Script_sections): Add prototypes for
6453         find_memory_region and block_in_region methods.
6454         * testsuite/memory_test.s: Use .long instead of .word.
6455         * testsuite/memory_test.t: Add some more output sections.
6456         * testsuite/memory_test.sh: Update expected output.
6457
6458 2010-10-02  Doug Kwan  <dougkwan@google.com>
6459
6460         * symtab.cc (Symbol_table::Symbol_table_hash::operator()): Move
6461         defintion to symtab.h
6462         * symtab.h (Symbol_table::Symbol_table_hash::operator()): Change
6463         declaration to defintion.
6464
6465 2010-10-01  Nick Clifton  <nickc@redhat.com>
6466
6467         * expression.cc (eval): Replace dummy argument with NULL.
6468         (eval_maybe_dot): Check for a NULL result section pointer.
6469         (Symbol_expression::value): Likewise.
6470         (Dot_expression::value): Likewise.
6471         (BINARY_EXPRESSION): Likewise.
6472         (Max_expression::value): Likewise.
6473         (Min_expression::value): Likewise.
6474         (Absolute_expression::value): Likewise.
6475         (Addr_expression::value_from_output_section): Likewise.
6476         (Loaddddr_expression::value_from_output_section): Likewise.
6477         (Segment_start_expression::value): Likewise.
6478         * script-sections.cc
6479         (Sections_elememt_dot_assignment::finalize_symbols): Replace dummy
6480         argument with NULL.
6481         (Sections_elememt_dot_assignment::set_section_addresses):
6482         Likewise.
6483         (Output_data_expression::do_write_to_buffer): Likewise.
6484         (Output_section_definition::finalize_symbols): Likewise.
6485         (Output_section_definition::set_section_addresses): Likewise.
6486
6487 2010-09-30  Doug Kwan  <dougkwan@google.com>
6488
6489         * gold/testsuite/arm_branch_out_of_range.sh: Fix broken tests.
6490
6491 2010-09-28  Sriraman Tallam  <tmsriram@google.com>
6492
6493         * target.h (Target::can_icf_inline_merge_sections): New virtual
6494         function.
6495         * x86_64.cc (Target__x86_64::can_icf_inline_merge_sections): New
6496         virtual function.
6497         * i386.cc (Target_i386::can_icf_inline_merge_sections): New
6498         virtual function.
6499         * icf.cc (get_section_contents): Inline merge sections only when
6500         target allows it.
6501
6502 2010-09-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6503
6504         * configure: Regenerate.
6505
6506 2010-09-17  Ian Lance Taylor  <iant@google.com>
6507
6508         * testsuite/memory_test.sh: Adjust for change of 2010-09-10.
6509         * testsuite/Makefile.am (memory_test.o): New target.
6510         (memory_test): Depend on memory_test.o, gcctestdir/ld, and
6511         memory_test.t.
6512         * testsuite/Makefile.in: Rebuild.
6513
6514 2010-09-17  Doug Kwan  <dougkwan@google.com>
6515
6516         * arm.cc (Target_arm::Relocate::relocate): Ignore symbol type and
6517         defintion if relocation uses GOT entries of the symbol.
6518         * testsuite/icf_safe_test.sh: Fix test.
6519         * testsuite/icf_safe_so_test.sh: Fix test.
6520
6521 2010-09-16  Cary Coutant  <ccoutant@google.com>
6522
6523         * script_sections.cc (class Memory_region): Remove "NULL" from
6524         vector initializations.
6525
6526 2010-09-15  Cary Coutant  <ccoutant@google.com>
6527
6528         * incremental.cc (Output_section_incremental_inputs::write_info_blocks):
6529         Resolve forwarding symbols.
6530
6531 2010-09-15  Doug Kwan  <dougkwan@google.com>
6532
6533         * gold/testsuite/script_test_3.t: Add ARM special sections.
6534         * gold/testsuite/script_test_4.t: Same.
6535         * gold/testsuite/script_test_5.t: Same.
6536         * gold/testsuite/script_test_6.t: Same.
6537         * gold/testsuite/script_test_7.t: Same.
6538         * gold/testsuite/script_test_7.t: Same.
6539         * gold/testsuite/thumb_blx_out_of_range.s: Fix instruction alignment.
6540
6541 2010-09-14  Cary Coutant  <ccoutant@google.com>
6542
6543         * x86_64.cc (Target_x86_64::saw_tls_block_reloc_): Remove member.
6544         (Target_x86_64::Relocate::relocate_tls): Replace check for
6545         saw_tls_block_reloc_ with test for executable section.
6546
6547 2010-09-12  Cary Coutant  <ccoutant@google.com>
6548
6549         * symtab.h (Symbol::needs_dynamic_reloc): Non-PIC calls from
6550         position-independent executables to shared libraries need dynamic
6551         relocations.
6552         (Symbol::may_need_copy_reloc): Do not generate COPY relocs in
6553         position-independent executables.
6554         * testsuite/Makefile.am (two_file_mixed_pie_test): New test.
6555         * testsuite/Makefile.in: Regenerate.
6556
6557 2010-09-10  Nick Clifton  <nickc@redhat.com>
6558
6559         PR gold/11997
6560         * testsuite/memory_test.t: Discard any sections that are not
6561         needed.
6562
6563 2010-09-09  H.J. Lu  <hongjiu.lu@intel.com>
6564
6565         PR gold/11996
6566         * object.cc (Sized_relobj::do_finalize_local_symbols): Remove
6567         "This::" to work around a bug in gcc 4.2.
6568
6569         * testsuite/ifuncmain7.c (foo_ifunc): Add __attribute__ ((used)).
6570
6571 2010-09-09  Rafael Espindola  <espindola@google.com>
6572
6573         * layout.cc (Layout::attach_allocated_section_to_segment): Don't put
6574         sections with different PF_X flags in the same segment.
6575         (Layout::find_first_load_seg): Search all segments to find the first
6576         one.
6577         * options.h (rosegment): New.
6578
6579 2010-09-08  Rafael Espindola  <espindola@google.com>
6580
6581         * layout.cc (Layout::set_segment_offsets): Always advance to a new page.
6582
6583 2010-09-08  Doug Kwan  <dougkwan@google.com>
6584
6585         * arm.cc (Arm_exidx_cantunwind::do_print_to_mapfile): New method.
6586         (Arm_relobj::do_relocate_sections): Add new parameter for output
6587         file to match the parent.
6588         (Target_arm::scan_reloc_section_for_stubs): Use would-be final values
6589         of local symbols instead of input values.  Update code to track
6590         changes in gold::relocate_section.
6591         * object.cc (Sized_relobj::compute_final_local_value): New methods.
6592         (Sized_relobj::compute_final_local_value_internal): New methods.
6593         (Sized_relobj::do_finalize_local_symbols): Move code from loop
6594         body into private version of Sized_relobj::compute_final_local_value.
6595         Call the inline method.
6596         * object.h (Symbol_value::Symbol_value): Define destructor.  Free
6597         merged symbol value if there is one.
6598         (Symbol_value::has_output_value): New method defintiion.
6599         (Sized_relobj::Compute_final_local_value_status): New enum type.
6600         (Sized_relobj::compute_final_local_value): New methods.
6601         (Sized_relobj::compute_final_local_value_internal): New methods.
6602         * Makefile.am (check_SCRIPTS): Add arm_branch_out_of_range.sh
6603         and arm_cortex_a8.sh.
6604         (thumb_bl_out_of_range_local, arm_cortex_a8_b_cond, arm_cortex_a8_bl,
6605         arm_cortex_a8_blx, arm_cortex_a8_local, arm_corte_a8_local_reloc):
6606         New tests.
6607         * Makefile.in: Regenerate.
6608         * testsuite/arm_bl_out_of_range.s: Update test.
6609         * testsuite/thumb_bl_out_of_range.s: Ditto.
6610         * testsuite/thumb_blx_out_of_range.s: Ditto.
6611         * testsuite/arm_branch_out_of_range.sh: New file.
6612         * testsuite/arm_cortex_a8.sh: Ditto.
6613         * testsuite/arm_cortex_a8_b.s: Ditto.
6614         * testsuite/arm_cortex_a8_b_cond.s: Ditto.
6615         * testsuite/arm_cortex_a8_b_local.s: Ditto.
6616         * testsuite/arm_cortex_a8_bl.s: Ditto.
6617         * testsuite/arm_cortex_a8_blx.s: Ditto.
6618         * testsuite/arm_cortex_a8_local.s: Ditto.
6619         * testsuite/arm_cortex_a8_local_reloc.s: Ditto.
6620         * testsuite/thumb_bl_out_of_range_local.s: Ditto.
6621
6622 2010-09-08  Rafael Espindola  <espindola@google.com>
6623
6624         * Makefile.am (memory_test.stdout): Run readelf with -W.
6625         * Makefile.in: Regenerate.
6626         * testsuite/memory_test.sh: Make the regexps accept both 32 and
6627         64 bit output.
6628
6629 2010-09-08  Rafael Espindola  <espindola@google.com>
6630
6631         * script-sections.cc (Script_sections::add_memory_region): Convert
6632         field precision to int.
6633         * script.cc (script_set_section_region, script_set_section_region):
6634         Convert field precision to int.
6635
6636 2010-09-08  Rafael Espindola  <espindola@google.com>
6637
6638         * arm.cc (do_finalize_sections): Create the __exidx_start and
6639         __exdix_end symbols even when the section is missing.
6640
6641 2010-09-08  Nick Clifton  <nickc@redhat.com>
6642
6643         * README: Remove claim that MEMORY is not supported.
6644         * expression.cc (script_exp_function_origin)
6645         (script_exp_function_length): Move from here to ...
6646         * script.cc: ... here.
6647         (script_set_section_region, script_add_memory)
6648         (script_parse_memory_attr, script_include_directive): New
6649         functions.
6650         * script-sections.cc
6651         (class Memory_region): New class.
6652         (class Output_section_definition): Add set_memory_region,
6653         set_section_vma, set_section_lma and get_section_name methods.
6654         (class Script_Sections): Add add_memory_region,
6655         find_memory_region, find_memory_region_origin,
6656         find_memory_region_length and set_memory_region methods.
6657         Have set_section_addresses method walk the list of set memory
6658         regions.
6659         Extend the print methos to display memory regions.
6660         * script-sections.h: Add prototypes for new methods.
6661         Add enum for MEMORY region attributes.
6662         * yyscript.y: Add support for parsing MEMORY regions.
6663         * script-c.h: Add prototypes for new functions.
6664         * testsuite/Makefile.am: Add test of MEMORY region functionality.
6665         * testsuite/Makefile.in: Regenerate.
6666         * testsuite/memory_test.sh: New script.
6667         * testsuite/memory_test.s: New assembler source file.
6668         * testsuite/memory_test.t: New linker script.
6669
6670 2010-08-27  Doug Kwan  <dougkwan@google.com>
6671
6672         * gold/resolve.cc (Symbol_table::should_override): Let a weak
6673         reference override an existing dynamic weak reference.
6674         * testsuite/Makefile.am: Add new test dyn_weak_ref.
6675         * testsuite/Makefile.in: Regenerate.
6676         * testsuite/dyn_weak_ref.sh: New file.
6677         * testsuite/dyn_weak_ref_1.c: Ditto.
6678         * testsuite/dyn_weak_ref_2.c: Ditto.
6679
6680 2010-08-27  Ian Lance Taylor  <iant@google.com>
6681
6682         * incremental.h (class Incremental_input_entry): Add virtual
6683         destructor.
6684
6685 2010-08-27  Ian Lance Taylor  <iant@google.com>
6686
6687         * testsuite/start_lib_test_3.c: Mark t3 as used.
6688
6689 2010-08-27  Nick Clifton  <nickc@redhat.com>
6690
6691         * options.cc (version_script): Fix small typo in previous
6692         whitespace tidyup.
6693
6694 2010-08-25  Nick Clifton  <nickc@redhat.com>
6695
6696         * archive.cc: Formatting fixes: Remove whitespace between
6697         typename and following asterisk.  Remove whitespace between
6698         function name and opening parenthesis.
6699         * archive.h: Likewise.
6700         * arm.cc: Likewise.
6701         * attributes.cc: Likewise.
6702         * attributes.h: Likewise.
6703         * common.cc: Likewise.
6704         * copy-relocs.cc: Likewise.
6705         * dirsearch.h: Likewise.
6706         * dynobj.cc: Likewise.
6707         * ehframe.cc: Likewise.
6708         * ehframe.h: Likewise.
6709         * expression.cc: Likewise.
6710         * fileread.cc: Likewise.
6711         * fileread.h: Likewise.
6712         * gc.h: Likewise.
6713         * gold-threads.cc: Likewise.
6714         * gold.cc: Likewise.
6715         * i386.cc: Likewise.
6716         * icf.h: Likewise.
6717         * incremental-dump.cc: Likewise.
6718         * incremental.cc: Likewise.
6719         * layout.cc: Likewise.
6720         * layout.h: Likewise.
6721         * main.cc: Likewise.
6722         * merge.cc: Likewise.
6723         * merge.h: Likewise.
6724         * object.cc: Likewise.
6725         * object.h: Likewise.
6726         * options.cc: Likewise.
6727         * options.h: Likewise.
6728         * output.cc: Likewise.
6729         * output.h: Likewise.
6730         * plugin.cc: Likewise.
6731         * plugin.h: Likewise.
6732         * powerpc.cc: Likewise.
6733         * reloc.cc: Likewise.
6734         * script-c.h: Likewise.
6735         * script-sections.cc: Likewise.
6736         * script.cc: Likewise.
6737         * stringpool.cc: Likewise.
6738         * symtab.cc: Likewise.
6739         * symtab.h: Likewise.
6740         * target.cc: Likewise.
6741         * timer.cc: Likewise.
6742         * timer.h: Likewise.
6743         * version.cc: Likewise.
6744         * x86_64.cc: Likewise.
6745
6746 2010-08-24  Nick Clifton  <nickc@redhat.com>
6747
6748         PR 11899
6749         * layout.cc (segment_precedes): Sort segments by their physical
6750         addresses, if they have been set.
6751
6752 2010-08-23  Cary Coutant  <ccoutant@google.com>
6753
6754         * archive.cc (Lib_group::add_symbols): Lock object before deleting its
6755         symbols data.
6756         (Lib_group::include_member): Unlock object after deleting its
6757         symbols data.
6758         * testsuite/start_lib_test_3.c: Remove all global symbols to trigger
6759         the bug fixed here.
6760
6761 2010-08-19  Neil Vachharajani  <nvachhar@google.com>
6762             Cary Coutant  <ccoutant@google.com>
6763
6764         * gold/archive.h (Add_lib_group_symbols): Add readsyms_blocker_, adjust
6765         constructor, and set_blocker.
6766         * gold/archive.cc (Add_lib_group_symbols::is_runnable): Also check
6767         readsyms_blocker_.
6768         * gold/readsyms.cc (Read_symbols::do_lib_group): Also pass
6769         this->this_blocker_ to Add_lib_group_symbols::set_blocker.
6770         * testsuite/Makefile.am (start_lib_test): New test case.
6771         * testsuite/Makefile.in: Regenerate.
6772         * testsuite/start_lib_test_main.c: New file.
6773         * testsuite/start_lib_test_1.c: New file.
6774         * testsuite/start_lib_test_2.c: New file.
6775         * testsuite/start_lib_test_3.c: New file.
6776
6777 2010-08-19  Ian Lance Taylor  <iant@google.com>
6778
6779         * Makefile.in: Rebuild with automake 1.11.1.
6780         * aclocal.m4: Likewise.
6781         * testsuite/Makefile.in: Likewise.
6782
6783 2010-08-19  Ian Lance Taylor  <iant@google.com>
6784
6785         PR 10893
6786         * i386.cc (class Output_data_plt_i386): Update declarations.
6787         Define Global_ifunc and Local_ifunc types.  Add global_ifuncs_ and
6788         local_ifuncs_ fields.
6789         (Target_i386::do_plt_section_for_global): New function.
6790         (Target_i386::do_plt_section_for_local): New function.
6791         (Output_data_plt_i386::Output_data_plt_i386): Add symtab
6792         parameter; change all callers.  Initialize global_ifuncs_ and
6793         local_ifuncs_.  If doing a static link define __rel_iplt_start and
6794         __rel_iplt_end.
6795         (Output_data_plt_i386::add_entry): Handle IFUNC symbols.
6796         (Output_data_plt_i386::add_local_ifunc_entry): New function.
6797         (Output_data_plt_i386::do_write): Fix GOT entries for IFUNC
6798         symbols.
6799         (Target_i386::make_plt_section): New function, broken out of
6800         make_plt_entry.  Set sh_info field of .rel.plt to point to .plt.
6801         (Target_i386::make_plt_entry): Call make_plt_section.
6802         (Target_i386::make_local_ifunc_plt_entry): New function.
6803         (Target_i386::Scan::reloc_needs_iplt_for_ifunc): New function.
6804         (Target_i386::Scan::local): Handle IFUNC symbols.  Add
6805         R_386_IRELATIVE to switch.
6806         (Target_i386::Scan::global): Likewise.
6807         (Target_i386::Relocate::relocate): Likewise.
6808         (Target_i386::Relocatable_size_for_reloc): Add R_386_IRELATIVE to
6809         switch.
6810         * x86_64.cc (class Output_data_plt_x86_64): Update declarations.
6811         (Target_x86_64::do_plt_section_for_global): New function.
6812         (Target_x86_64::do_plt_section_for_local): New function.
6813         (Output_data_plt_x86_64::Output_data_plt_x86_64): Add symtab
6814         parameter; change all callers.  If doing a static link define
6815         __rela_iplt_start and __rela_iplt_end.
6816         (Output_data_plt_x86_64::add_entry): Handle IFUNC symbols.
6817         (Output_data_plt_x86_64::add_local_ifunc_entry): New function.
6818         (Target_x86_64::make_plt_section): Set sh_info field of .rel.plt
6819         to point to .plt.
6820         (Target_x86_64::make_local_ifunc_plt_entry): New function.
6821         (Target_x86_64::Scan::check_non_pic): Add R_X86_64_IRELATIVE to
6822         switch.
6823         (Target_x86_64::Scan::reloc_needs_iplt_for_ifunc): New function.
6824         (Target_x86_64::Scan::local): Handle IFUNC symbols.  Add
6825         R_X86_64_IRELATIVE to switch.
6826         (Target_x86_64::Scan::global): Likewise.
6827         (Target_x86_64::Relocate::relocate): Likewise.
6828         (Target_x86_64::Relocatable_size_for_reloc): Add R_X86_64_IRELATIVE to
6829         switch.
6830         * target.h (class Target): Add plt_section_for_global and
6831         plt_section_for_local functions.  Add do_plt_section_for_global
6832         and do_plt_section_for_local virtual functions.
6833         * symtab.h (Symbol::needs_plt_entry): Handle IFUNC symbol.  Add
6834         clarifying comments.
6835         (Symbol::use_plt_offset): Handle IFUNC symbol.
6836         * object.cc (Sized_relobj::Sized_relobj): Initialize
6837         local_plt_offsets_.
6838         (Sized_relobj::local_has_plt_offset): New function.
6839         (Sized_relobj::local_plt_offset): New function.
6840         (Sized_relobj::set_local_plt_offset): New function.
6841         (Sized_relobj::do_count): Handle IFUNC symbol.
6842         * object.h (class Symbol_value): Add is_ifunc_symbol_ field.  Take
6843         a bit away from input_shndx_ field.  Add set_is_func_symbol and
6844         is_ifunc_symbol functions.
6845         (class Sized_relobj): Update declarations.  Remove Tls_got_entry
6846         and Local_tls_got_offsets.  Define Local_plt_offsets.  Add
6847         local_plt_offsets_ field.
6848         (Sized_relobj::clear_local_symbols): Clear local_plt_offsets_.
6849         * output.h (class Output_section_data): Add non-const
6850         output_section function.
6851         (class Output_data_got): Update declarations.
6852         (class Output_data_got::Got_entry): Add use_plt_offset_ field.
6853         Add use_plt_offset parameter to global and local constructors.
6854         Change all callers.  Change local_sym_index_ field to 31 bits.
6855         Change GSYM_CODE and CONSTANT_CODE accordingly.
6856         * output.cc (Output_data_reloc_base::do_adjust_output_section): If
6857         doing a static link don't set sh_link field.
6858         (Output_data_got::Got_entry::write): Use PLT offset if
6859         appropriate.
6860         (Output_data_got::add_global_plt): New function.
6861         (Output_data_got::add_local_plt): New function.
6862         * target-reloc.h (relocate_section): Handle IFUNC symbol.
6863         * defstd.cc (in_section): Remove entries for __rel_iplt_start,
6864         __rel_iplt_end, __rela_iplt_start, and __rela_iplt_end.
6865         * configure.ac: Set IFUNC automake conditional for glibc >= 2.11.
6866         * testsuite/Makefile.am: Add a bunch of IFUNC tests, all within
6867         IFUNC conditional.
6868         * testsuite/ifunc-sel.h: New file.
6869         * testsuite/ifuncmain1.c: New file.
6870         * testsuite/ifuncmain1vis.c: New file.
6871         * testsuite/ifuncmod1.c: New file.
6872         * testsuite/ifuncdep2.c: New file.
6873         * testsuite/ifuncmain2.c: New file.
6874         * testsuite/ifuncmain3.c: New file.
6875         * testsuite/ifuncmod3.c: New file.
6876         * testsuite/ifuncmain4.c: New file.
6877         * testsuite/ifuncmain5.c: New file.
6878         * testsuite/ifuncmod5.c: New file.
6879         * testsuite/ifuncmain6pie.c: New file.
6880         * testsuite/ifuncmod6.c: New file.
6881         * testsuite/ifuncmain7.c: New file.
6882         * configure, testsuite/Makefile.in: Rebuild.
6883
6884 2010-08-18  Ian Lance Taylor  <iant@google.com>
6885
6886         * incremental.cc
6887         (Output_section_incremental_inputs::write_input_files): Add cast
6888         to avoid signed/unsigned comparison warning.
6889         (Output_section_incremental_inputs::write_info_blocks): Likewise.
6890
6891 2010-08-12  Cary Coutant  <ccoutant@google.com>
6892
6893         * common.cc (Sort_commons::operator()): Remove unnecessary code.
6894
6895 2010-08-13  Ian Lance Taylor  <iant@google.com>
6896
6897         * testsuite/incremental_test_1.c: Add prototype to avoid warning.
6898
6899 2010-08-12  Cary Coutant  <ccoutant@google.com>
6900             Doug Kwan  <dougkwan@google.com>
6901
6902         * resolve.cc (Symbol_table::should_override): When a weak dynamic
6903         defintion overrides non-weak undef, remember that the original undef
6904         is not weak.
6905         * symtab.cc (Symbol_table::sized_write_global): For undef without
6906         an original weak binding, set binding to global in output.
6907         * testsuite/Makefile.am: Add new test strong_ref_weak_def.
6908         * testsuite/Makefile.in: Regenerate.
6909         * testsuite/strong_ref_weak_def.sh: New file.
6910         * testsuite/strong_ref_weak_def_1.c: Ditto.
6911         * testsuite/strong_ref_weak_def_2.c: Ditto.
6912
6913 2010-08-12  Cary Coutant  <ccoutant@google.com>
6914
6915         * testsuite/incremental_test.sh: Rewrite.
6916         * testsuite/incremental_test_1.c: Rewrite.
6917         * testsuite/incremental_test_2.c: Rewrite.
6918
6919 2010-08-12  Cary Coutant  <ccoutant@google.com>
6920
6921         * arm.cc (Target_arm::got_size): Add const.
6922         (Target_arm::got_entry_count): New function.
6923         (Target_arm::plt_entry_count): New function.
6924         (Target_arm::first_plt_entry_offset): New function.
6925         (Target_arm::plt_entry_size): New function.
6926         (Output_data_plt_arm::entry_count): New function.
6927         (Output_data_plt_arm::first_plt_entry_offset): New function.
6928         (Output_data_plt_arm::get_plt_entry_size): New function.
6929         * i386.cc (Target_i386::got_size): Add const.
6930         (Target_i386::got_entry_count): New function.
6931         (Target_i386::plt_entry_count): New function.
6932         (Target_i386::first_plt_entry_offset): New function.
6933         (Target_i386::plt_entry_size): New function.
6934         (Output_data_plt_i386::entry_count): New function.
6935         (Output_data_plt_i386::first_plt_entry_offset): New function.
6936         (Output_data_plt_i386::get_plt_entry_size): New function.
6937         * incremental-dump.cc (dump_incremental_inputs): Adjust call to
6938         find_incremental_inputs_sections.  Dump incremental_got_plt section.
6939         * incremental.cc: Include target.h.
6940         (Sized_incremental_binary::do_find_incremental_inputs_sections): Add
6941         parameter.  Adjust all callers.  Find incremental_got_plt section.
6942         (Incremental_inputs::create_data_sections): Create incremental_got_plt
6943         section.
6944         (Output_section_incremental_inputs::set_final_data_size): Calculate
6945         size of incremental_got_plt section.
6946         (Output_section_incremental_inputs::do_write): Write the
6947         incremental_got_plt section.
6948         (Got_plt_view_info): New struct.
6949         (Local_got_offset_visitor): New class.
6950         (Global_got_offset_visitor): New class.
6951         (Global_symbol_visitor_got_plt): New class.
6952         (Output_section_incremental_inputs::write_got_plt): New function.
6953         * incremental.h (Incremental_binary::find_incremental_inputs_sections):
6954         Add parameter.  Adjust all callers.
6955         (Incremental_binary::do_find_incremental_inputs_sections): Likewise.
6956         (Incremental_inputs::got_plt_section): New function.
6957         (Incremental_inputs::got_plt_section_): New data member.
6958         (Incremental_got_plt_reader): New class.
6959         * layout.cc (Layout::create_incremental_info_sections): Add the
6960         incremental_got_plt section.
6961         * object.h (Got_offset_list::get_list): New function.
6962         (Got offset_list::for_all_got_offsets): New function.
6963         (Sized_relobj::local_got_offset_list): New function.
6964         * powerpc.cc (Target_powerpc::got_size): Add const.
6965         (Target_powerpc::got_entry_count): New function.
6966         (Target_powerpc::plt_entry_count): New function.
6967         (Target_powerpc::first_plt_entry_offset): New function.
6968         (Target_powerpc::plt_entry_size): New function.
6969         (Output_data_plt_powerpc::entry_count): New function.
6970         (Output_data_plt_powerpc::first_plt_entry_offset): New function.
6971         (Output_data_plt_powerpc::get_plt_entry_size): New function.
6972         * sparc.cc (Target_sparc::got_size): Add const.
6973         (Target_sparc::got_entry_count): New function.
6974         (Target_sparc::plt_entry_count): New function.
6975         (Target_sparc::first_plt_entry_offset): New function.
6976         (Target_sparc::plt_entry_size): New function.
6977         (Output_data_plt_sparc::entry_count): New function.
6978         (Output_data_plt_sparc::first_plt_entry_offset): New function.
6979         (Output_data_plt_sparc::get_plt_entry_size): New function.
6980         * symtab.h (Symbol::got_offset_list): New function.
6981         (Symbol_table::for_all_symbols): New function.
6982         * target.h (Sized_target::got_entry_count): New function.
6983         (Sized_target::plt_entry_count): New function.
6984         (Sized_target::plt_entry_size): New function.
6985         * x86_64.cc (Target_x86_64::got_size): Add const.
6986         (Target_x86_64::got_entry_count): New function.
6987         (Target_x86_64::plt_entry_count): New function.
6988         (Target_x86_64::first_plt_entry_offset): New function.
6989         (Target_x86_64::plt_entry_size): New function.
6990         (Output_data_plt_x86_64::entry_count): New function.
6991         (Output_data_plt_x86_64::first_plt_entry_offset): New function.
6992         (Output_data_plt_x86_64::get_plt_entry_size): New function.
6993
6994 2010-08-12  Cary Coutant  <ccoutant@google.com>
6995
6996         * archive.cc: Include incremental.h.
6997         (Archive::Archive): Initialize incremental_info_.
6998         (Archive::include_member): Record archive members in incremental info.
6999         (Add_archive_symbols::run): Record begin and end of an archive in
7000         incremental info.
7001         (Lib_group::include_member): Record objects in incremental info.
7002         * archive.h (Incremental_archive_entry): Forward declaration.
7003         (Archive::set_incremental_info): New member function.
7004         (Archive::incremental_info): New member function.
7005         (Archive::Unused_symbol_iterator): New class.
7006         (Archive::unused_symbols_begin): New member function.
7007         (Archive::unused_symbols_end): New member function.
7008         (Archive::incremental_info_): New data member.
7009         * incremental-dump.cc (find_input_containing_global): New function.
7010         (dump_incremental_inputs): Dump new incremental info sections.
7011         * incremental.cc: Include symtab.h.
7012         (Output_section_incremental_inputs): New class.
7013         (Sized_incremental_binary::do_find_incremental_inputs_sections): Support
7014         new incremental info sections.
7015         (Sized_incremental_binary::do_check_inputs): Likewise.
7016         (Incremental_inputs::report_archive): Remove.
7017         (Incremental_inputs::report_archive_begin): New function.
7018         (Incremental_inputs::report_archive_end): New function.
7019         (Incremental_inputs::report_object): New function.
7020         (Incremental_inputs::finalize_inputs): Remove.
7021         (Incremental_inputs::report_input_section): New function.
7022         (Incremental_inputs::report_script): Rewrite.
7023         (Incremental_inputs::finalize): Do nothing but finalize string table.
7024         (Incremental_inputs::create_incremental_inputs_section_data): Remove.
7025         (Incremental_inputs::sized_create_inputs_section_data): Remove.
7026         (Incremental_inputs::create_data_sections): New function.
7027         (Incremental_inputs::relocs_entsize): New function.
7028         (Output_section_incremental_inputs::set_final_data_size): New function.
7029         (Output_section_incremental_inputs::do_write): New function.
7030         (Output_section_incremental_inputs::write_header): New function.
7031         (Output_section_incremental_inputs::write_input_files): New function.
7032         (Output_section_incremental_inputs::write_info_blocks): New function.
7033         (Output_section_incremental_inputs::write_symtab): New function.
7034         * incremental.h (Incremental_script_entry): Forward declaration.
7035         (Incremental_object_entry): Forward declaration.
7036         (Incremental_archive_entry): Forward declaration.
7037         (Incremental_inputs): Forward declaration.
7038         (Incremental_inputs_header_data): Remove.
7039         (Incremental_inputs_header): Remove.
7040         (Incremental_inputs_header_write): Remove.
7041         (Incremental_inputs_entry_data): Remove.
7042         (Incremental_inputs_entry): Remove.
7043         (Incremental_inputs_entry_write): Remove.
7044         (enum Incremental_input_type): Add INCREMENTAL_INPUT_ARCHIVE_MEMBER.
7045         (Incremental_binary::find_incremental_inputs_sections): Add parameters.
7046         (Incremental_binary::do_find_incremental_inputs_sections): Likewise.
7047         (Sized_ncremental_binary::do_find_incremental_inputs_sections):
7048         Likewise.
7049         (Incremental_input_entry): New class.
7050         (Incremental_script_entry): New class.
7051         (Incremental_object_entry): New class.
7052         (Incremental_archive_entry): New class.
7053         (Incremental_inputs::Incremental_inputs): Initialize new data members.
7054         (Incremental_inputs::report_inputs): Remove.
7055         (Incremental_inputs::report_archive): Remove.
7056         (Incremental_inputs::report_archive_begin): New function.
7057         (Incremental_inputs::report_archive_end): New function.
7058         (Incremental_inputs::report_object): Change prototype.
7059         (Incremental_inputs::report_input_section): New function.
7060         (Incremental_inputs::report_script): Change prototype.
7061         (Incremental_inputs::get_reloc_count): New function.
7062         (Incremental_inputs::set_reloc_count): New function.
7063         (Incremental_inputs::create_data_sections): New function.
7064         (Incremental_inputs::create_incremental_inputs_section_data): Remove.
7065         (Incremental_inputs::inputs_section): New function.
7066         (Incremental_inputs::symtab_section): New function.
7067         (Incremental_inputs::relocs_section): New function.
7068         (Incremental_inputs::get_stringpool): Add const.
7069         (Incremental_inputs::command_line): Add const.
7070         (Incremental_inputs::inputs): Remove.
7071         (Incremental_inputs::command_line_key): New function.
7072         (Incremental_inputs::input_file_count): New function.
7073         (Incremental_inputs::input_files): New function.
7074         (Incremental_inputs::relocs_entsize): New function.
7075         (Incremental_inputs::sized_create_inputs_section_data): Remove.
7076         (Incremental_inputs::finalize_inputs): Remove.
7077         (Incremental_inputs::Input_info): Remove.
7078         (Incremental_inputs::lock_): Remove.
7079         (Incremental_inputs::inputs_): Change type.
7080         (Incremental_inputs::inputs_map_): Remove.
7081         (Incremental_inputs::current_object_entry_): New data member.
7082         (Incremental_inputs::inputs_section_): New data member.
7083         (Incremental_inputs::symtab_section_): New data member.
7084         (Incremental_inputs::relocs_section_): New data member.
7085         (Incremental_inputs::reloc_count_): New data member.
7086         (Incremental_inputs_reader): New class.
7087         (Incremental_symtab_reader): New class.
7088         (Incremental_relocs_reader): New class.
7089         * layout.cc (Layout::finalize): Move finalization of incremental info
7090         and creation of incremental info sections to follow finalization of
7091         symbol table.  Set offsets for postprocessing sections.
7092         (Layout::create_incremental_info_sections): Call
7093         Incremental_inputs::create_data_sections.  Add incremental symtab
7094         and relocs sections.  Set sh_entsize and sh_link fields.  Arrange for
7095         sections to layout after input sections.
7096         * layout.h (struct Timespec): Forward declaration.
7097         (Layout::incremental_inputs): Add const.
7098         (Layout::create_incremental_info_sections): Add parameter.
7099         * main.cc (main): Remove call to Incremental_inputs::report_inputs.
7100         * object.cc: Include incremental.h.
7101         (Relobj::finalize_incremental_relocs): New function.
7102         (Sized_relobj::do_layout): Record input sections in incremental info.
7103         * object.h (Object::output_section): New function.
7104         (Object::output_section_offset): Moved from Relobj.
7105         (Object::get_incremental_reloc_base): New function.
7106         (Object::get_incremental_reloc_count): New function.
7107         (Object::do_output_section): New function.
7108         (Object::do_output_section_offset): Moved from Relobj.
7109         (Object::do_get_incremental_reloc_base): New function.
7110         (Object::do_get_incremental_reloc_count): New function.
7111         (Object::Object): Initialize new data members.
7112         (Relobj::output_section): Renamed do_output_section and moved to
7113         protected.
7114         (Relobj::output_section_offset): Moved to Object.
7115         (Relobj::do_get_incremental_reloc_base): New function.
7116         (Relobj::do_get_incremental_reloc_count): New function.
7117         (Relobj::allocate_incremental_reloc_counts): New function.
7118         (Relobj::count_incremental_reloc): New function.
7119         (Relobj::finalize_incremental_relocs): New function.
7120         (Relobj::next_incremental_reloc_index): New function.
7121         (Relobj::reloc_counts_): New data member.
7122         (Relobj::reloc_bases_): New data member.
7123         (Sized_relobj::do_relocate_sections): Add parameter.  Change caller.
7124         (Sized_relobj::relocate_sections): Add parameter.  Change all callers.
7125         (Sized_relobj::incremental_relocs_scan): New function.
7126         (Sized_relobj::incremental_relocs_scan_reltype): New function.
7127         (Sized_relobj::incremental_relocs_write): New function.
7128         (Sized_relobj::incremental_relocs_write_reltype): New function.
7129         * plugin.cc (Plugin_manager::add_input_file): Rewrite test for
7130         incremental link.
7131         * readsyms.cc (Read_symbols::do_read_symbols): Move reporting of
7132         archives and object files elsewhere.
7133         (Add_symbols::run): Report object files here.
7134         (Finish_group::run): Report end of archive at end of group.
7135         * reloc.cc: Include layout.h, incremental.h.
7136         (Sized_relobj::do_read_relocs): Need relocations for incremental link.
7137         (Sized_relobj::do_scan_relocs): Record relocations for incremental link.
7138         (Sized_relobj::incremental_relocs_scan): New function.
7139         (Sized_relobj::incremental_relocs_scan_reltype): New function.
7140         (Sized_relobj::do_relocate_sections): Write incremental relocations.
7141         (Sized_relobj::incremental_relocs_write): New function.
7142         (Sized_relobj::incremental_relocs_write_reltype): New function.
7143         * script.cc (read_input_script): Rewrite test for incremental link.
7144         Change call to Incremental_inputs::report_script.
7145         * symtab.h (Symbol_table::first_global_index): New function.
7146         (Symbol_table::output_count): New function.
7147
7148 2010-08-12  Doug Kwan  <dougkwan@google.com>
7149
7150         * arm.cc (Target_arm::merge_object_attributes): Check command line
7151         options --no-wchar-size-warning and --no-enum-size-warning.
7152         * options.h (General_options): Add ld-compatible options
7153         --no-enum-size-warning and --no-wchar-size-warning.
7154
7155 2010-08-04  Ian Lance Taylor  <iant@google.com>
7156
7157         * x86_64.cc (Target_x86_64::Scan::local): Use
7158         R_X86_64_GNU_VTINHERIT instead of R_386_GNU_VTINHERIT and
7159         R_X86_64_GNU_VTENTRY instead of R_386_GNU_VTENTRY.
7160         (Target_x86_64::Scan::global): Likewise.
7161         (Target_x86_64::Relocate::relocate): Likewise.
7162         (Target_x86_64::Relocatable_size_for_reloc::get_size_for_reloc):
7163         Likewise.
7164
7165 2010-08-03  Cary Coutant  <ccoutant@google.com>
7166
7167         * merge.cc (Output_merge_string::do_add_input_section): Count strings
7168         to reserve space in merged_strings vector. Keep total input size
7169         for stats.
7170         (Output_merge_string::do_print_merge_stats): Print total input size.
7171         * merge.h (Output_merge_string): Add input_size_ field.
7172         * stringpool.cc (Stringpool_template::string_length): Move
7173         implementations out of Stringpool_template class and place in
7174         stringpool.h.
7175         * stringpool.h (string_length): Move out of Stringpool_template.
7176
7177 2010-08-03  Ian Lance Taylor  <iant@google.com>
7178
7179         PR 11712
7180         * layout.cc (relaxation_loop_body): If address of load segment is
7181         set, adjust address to include headers if possible.
7182
7183 2010-08-03  Ian Lance Taylor  <iant@google.com>
7184
7185         * version.cc (version_string): Bump to 1.10.
7186
7187 2010-08-03  Ian Lance Taylor  <iant@google.com>
7188
7189         PR 11805
7190         * layout.h (enum Output_section_order): Define.
7191         (class Layout): Update declarations.
7192         * layout.cc (Layout::get_output_section): Add order parameter.
7193         Remove is_interp, is_dynamic_linker_section, is_last_relro, and
7194         is_first_non_relro parameters.  Change all callers.
7195         (Layout::choose_output_section): Likewise.
7196         (Layout::add_output_section_data): Likewise.
7197         (Layout::make_output_section): Likewise.  Set order.
7198         (Layout::default_section_order): New function.
7199         (Layout::layout_eh_frame): Call add_output_section_to_nonload.
7200         * output.cc (Output_section::Output_section): Initialize order_.
7201         Don't initialize deleted fields.
7202         (Output_segment::Output_segment): Don't initialize deleted
7203         fields.
7204         (Output_segment::add_output_section_to_load): New function
7205         replacing add_output_section.  Change all callers to call this or
7206         add_output_section_to_nonload.
7207         (Output_segment::add_output_section_to_nonload): New function.
7208         (Output_segment::remove_output_section): Rewrite.
7209         (Output_segment::add_initial_output_data): Likewise.
7210         (Output_segment::has_any_data_sections): Likewise.
7211         (Output_segment::is_first_section_relro): Likewise.
7212         (Output_segment::maximum_alignment): Likewise.
7213         (Output_segment::has_dynamic_reloc): New function replacing
7214         dynamic_reloc_count.  Change all callers.
7215         (Output_segment::has_dynamic_reloc_list): New function replacing
7216         dynamic_reloc_count_list.  Change all callers.
7217         (Output_segment::set_section_addresses): Rewrite.
7218         (Output_segment::set_offset): Rewrite.
7219         (Output_segment::find_first_and_last_list): Remove.
7220         (Output_segment::set_tls_offsets): Rewrite.
7221         (Output_segment::first_section_load_address): Likewise.
7222         (Output_segment::output_section_count): Likewise.
7223         (Output_segment::section_with_lowest_load_address): Likewise.
7224         (Output_segment::write_section_headers): Likewise.
7225         (Output_segment::print_sections_to_map): Likewise.
7226         * output.h (class Output_data): Remove dynamic_reloc_count_
7227         field.  Add has_dynamic_reloc_ field.  Make bools into bitfields.
7228         (Output_data::add_dynamic_reloc): Rewrite.
7229         (Output_data::has_dynamic_reloc): New function.
7230         (Output_data::dynamic_reloc_count): Remove.
7231         (class Output_section): Add order_ field.  Remvoe is_relro_local_,
7232         is_last_relro_, is_first_non_relro_, is_interp_,
7233         is_dynamic_linker_section_ fields.  Add order and set_order
7234         functions.  Remove is_relro_local, set_is_relro_local,
7235         is_last_relro, set_is_last_relro, is_first_non_relro,
7236         set_is_first_non_relro functions, is_interp, set_is_interp,
7237         is_dynamic_linker_section, and set_is_dynamic_linker_section
7238         functions.
7239         (class Output_segment): Change Output_data_list from std::list to
7240         std:;vector.  Add output_lists_ field.  Remove output_data_ and
7241         output_bss_ fields.  Update declarations.
7242
7243 2010-08-02  Ian Lance Taylor  <iant@google.com>
7244
7245         * arm.cc (Target_arm::gc_process_relocs): Use typename.
7246         * powerpc.cc (Target_powerpc::gc_process_relocs): Likewise.
7247         * sparc.cc (Target_sparc::gc_process_relocs): Likewise.
7248
7249 2010-08-02  Ian Lance Taylor  <iant@google.com>
7250
7251         PR 11855
7252         * script.cc (Script_options::Script_options): Initialize
7253         symbol_definitions_ and symbol_references_.
7254         (Script_options::add_symbol_assignment): Update
7255         symbol_definitions_ and symbol_references_.
7256         (Script_options::add_symbol_reference): New function.
7257         (script_symbol): New function.
7258         * script.h (class Script_options): Add symbol_definitions_ and
7259         symbol_references_ fields.
7260         (Script_options::referenced_const_iterator): New type.
7261         (Script_options::referenced_begin): New function.
7262         (Script_options::referenced_end): New function.
7263         (Script_options::is_referenced): New function.
7264         (Script_options::any_unreferenced): New function.
7265         * script-c.h (script_symbol): Declare.
7266         * yyscript.y (exp): Call script_symbol.
7267         * symtab.cc: Include "script.h".
7268         (Symbol_table::gc_mark_undef_symbols): Add layout parameter.
7269         Change all callers.  Check symbols referenced by scripts.
7270         (Symbol_table::add_undefined_symbols_from_command_line): Add
7271         layout parameter.  Change all callers.
7272         (Symbol_table::do_add_undefined_symbols_from_command_line):
7273         Likewise.  Break out loop body.  Check symbols referenced by
7274         scripts.
7275         (Symbol_table::add_undefined_symbol_from_command_line): New
7276         function broken out of
7277         do_add_undefined_symbols_from_command_line.
7278         * symtab.h (class Symbol_table): Update declarations.
7279         * archive.cc: Include "layout.h".
7280         (Archive::should_include_member): Add layout parameter.  Change
7281         all callers.  Check for symbol mentioned in expression.
7282         * archive.h (class Archive): Update declaration.
7283         * object.cc (Sized_relobj::do_should_include_member): Add layout
7284         parameter.
7285         * object.h (Object::should_include_member): Add layout parameter.
7286         Change all callers.
7287         (Object::do_should_include_member): Add layout parameter.
7288         (class Sized_relobj): Update declaration.
7289         * dynobj.cc (Sized_dynobj::do_should_include_member): Add layout
7290         parameter.
7291         * dynobj.h (class Sized_dynobj): Update declaration.
7292         * plugin.cc (Sized_pluginobj::do_should_include_member): Add
7293         layout parameter.
7294         * plugin.h (class Sized_pluginobj): Update declaration.
7295
7296 2010-08-02  Ian Lance Taylor  <iant@google.com>
7297
7298         PR 11866
7299         * output.cc (Output_segment::set_offset): Search for the first and
7300         last sections rather than assuming that the list is in order.
7301         (Output_segment::find_first_and_last_list): New function.
7302         * output.h (class Output_segment): Update declarations.
7303         * testsuite/Makefile.am (check_PROGRAMS): Add relro_strip_test.
7304         (relro_strip_test_SOURCES): New variable.
7305         (relro_strip_test_DEPENDENCIES): New variable.
7306         (relro_strip_test_LDFLAGS): New variable.
7307         (relro_strip_test_LDADD): New variable.
7308         (relro_strip_test.so): New target.
7309
7310 2010-08-02  Ian Lance Taylor  <iant@google.com>
7311
7312         * i386.cc (class Target_i386): Add got_tlsdesc_ field.
7313         (Target_i386::Target_i386):: Initialize got_tlsdesc_.
7314         (Target_i386::got_tlsdesc_section): New function.
7315         (Target_i386::got_section): Create space for GOT entries for
7316         TLSDESC relocations.
7317         (Target_i386::Scan::local): Use TLSDESC GOT for unoptimized
7318         R_386_TLS_GOTDESC.
7319         (Target_i386::Scan::global): Likewise.
7320         (Target_i386::Relocate::relocate_tls): Adjust GOT offset when
7321         using TLSDESC GOT.
7322         * x86_64.cc (class Target_x86_64): Add got_tlsdesc_ field.
7323         (Target_x86_64::Target_x86_64):: Initialize got_tlsdesc_.
7324         (Target_x86_64::got_tlsdesc_section): New function.
7325         (Target_x86_64::got_section): Create space for GOT entries for
7326         TLSDESC relocations.
7327         (Target_x86_64::Scan::local): Use TLSDESC GOT for unoptimized
7328         R_386_TLS_GOTDESC.
7329         (Target_x86_64::Scan::global): Likewise.
7330         (Target_x86_64::Relocate::relocate_tls): Adjust GOT offset when
7331         using TLSDESC GOT.
7332
7333 2010-08-02  Ian Lance Taylor  <iant@google.com>
7334
7335         * testsuite/final_layout.sh: Use dc to convert from hex to
7336         decimal.
7337
7338 2010-07-29  Sriraman Tallam  <tmsriram@google.com>
7339
7340         * arm.cc (Target_arm<big_endian>::gc_process_relocs): Add template
7341         paramter to the call to gold::gc_process_relocs.
7342         * i386.cc (Target_i386<big_endian>::gc_process_relocs): Add template
7343         paramter to the call to gold::gc_process_relocs.
7344         * x86_64.cc (Target_x86_64<big_endian>::gc_process_relocs): Add template
7345         parameter to the call to gold::gc_process_relocs.
7346         * powerpc.cc (Target_powerpc<big_endian>::gc_process_relocs): Add
7347         template parameter to the call to gold::gc_process_relocs.
7348         * sparc.cc (Target_sparc<big_endian>::gc_process_relocs): Add template
7349         paramter to the call to gold::gc_process_relocs.
7350         * gc.h (get_embedded_addend_size): New function.
7351         (gc_process_relocs): Save the size of the reloc for use by ICF.
7352         * icf.cc (get_section_contents): Get the addend from the text section
7353         for SHT_REL relocation sections.
7354         * icf.h (Icf::Reloc_addend_size_info): New typedef.
7355         (Icf::Reloc_info): Add new member reloc_addend_size_info.
7356         * int_encoding.h (read_from_pointer): New overloaded function.
7357         * testsuite/Makefile.am (icf_sht_rel_addend_test): New test.
7358         * testsuite/icf_sht_rel_addend_test.sh: New file.
7359         * testsuite/icf_sht_rel_addend_test_1.cc: New file.
7360         * testsuite/icf_sht_rel_addend_test_2.cc: New file.
7361
7362 2010-07-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7363
7364         * configure.ac (AM_INIT_AUTOMAKE): Use parallel-tests option.
7365         * Makefile.in: Regenerate.
7366         * testsuite/Makefile.in: Regenerate.
7367
7368 2010-07-27  Jeffrey Yasskin  <jyasskin@google.com>
7369
7370         * testsuite/debug_msg.sh: Test mixed weak/strong symbol behavior.
7371         * gold/testsuite/debug_msg.cc: Likewise.
7372         * gold/testsuite/odr_violation1.cc
7373         * gold/testsuite/odr_violation2.cc
7374
7375 2010-07-21  Cary Coutant  <ccoutant@google.com>
7376
7377         * merge.h (Output_merge_string::Merged_string): Remove object, shndx,
7378         string, and length fields.
7379         (Output_merge_string::Merged_strings_list): New type.
7380         (Output_merge_string::Merged_strings_lists): New typedef.
7381         (Output_merge_string): Replace merged_strings_ with
7382         merged_strings_lists_.
7383         * merge.cc (Output_merge_string::do_add_input_section): Allocate new
7384         Merged_strings_list per input object and section.  Don't store pointer
7385         to the string.  Don't store length with each merged string entry.
7386         (Output_merge_string::finalize_merged_data): Loop over list of merged
7387         strings lists.  Recompute length of each merged string.
7388
7389 2010-07-15  Cary Coutant  <ccoutant@google.com>
7390
7391         * plugin.cc (Plugin_finish::run): Don't call cleanup handlers from
7392         here.
7393
7394 2010-07-14  Ian Lance Taylor  <iant@google.com>
7395
7396         * descriptors.cc (Descriptors::open): Report correct name in error
7397         message.
7398
7399 2010-07-13  Doug Kwan  <dougkwan@google.com>
7400
7401         * arm.cc (Arm_input_section::Arm_input_section): For a
7402         SHT_ARM_EXIDX section, always keeps the input sections.
7403         (Arm_input_section::set_exidx_section_link): New method.
7404         (Arm_exidx_input_section::Arm_exidx_input_section): Initialize
7405         has_errors_ to false.
7406         (Arm_exidx_input_section::has_errors,
7407         Arm_exidx_input_section::set_has_errors): New methods.
7408         (Arm_exidx_input_section::has_errors_): New data member.
7409         (Arm_relobj::get_exidx_shndx_list): New method.
7410         (Arm_output_section::append_text_sections_to_list): Do not skip
7411         section without SHF_EXECINSTR.
7412         (Arm_output_section::fix_exidx_coverage): Skip input sections with
7413         errors.
7414         (Arm_relobj::make_exidx_input_section): Add new parameter for text
7415         section header.  Make error messages more verbose.  Check for
7416         a non-executable section linked to an EXIDX section.
7417         (Arm_relobj::do_read_symbols): Remove error checking, which has been
7418         moved to Arm_relobj::make_exidx_input_section.  Add an assertion to
7419         check that there is no deferred EXIDX section if we exit early.
7420         Instead of not making an EXIDX section in case of an error, make one
7421         and set the has_errors flag of it.
7422         (Target_arm::do_finalize_sections): Fix up links of EXIDX sections
7423         in a relocatable link.
7424         (Target_arm::do_relax): Look for the EXIDX output section instead of
7425         assuming that it is called .ARM.exidx.
7426         (Target_arm::fix_exidx_coverage): Add a new parameter for input
7427         section list.  Do not check for SHF_EXECINSTR section flags but
7428         skip any input section with errors.
7429         * output.cc (Output_section::Output_section): Initialize
7430         always_keeps_input_sections_ to false.
7431         (Output_section::add_input_section): Check for
7432         always_keeps_input_sections_.
7433         *  output.h (Output_section::always_keeps_input_sections,
7434         Output_section::set_always_keeps_input_sections): New methods.
7435         (Output_section::always_keeps_input_sections): New data member.
7436
7437 2010-07-13  Rafael Espindola  <espindola@google.com>
7438
7439         * fileread.cc (try_extra_search_path, find_file): Move to Input_file.
7440         * fileread.h (Input_file): Add try_extra_search_path and find_file.
7441
7442 2010-07-13  Philip Herron  <herron.philip@googlemail.com>
7443             Ian Lance Taylor  <iant@google.com>
7444
7445         * output.h (Output_section_lookup_maps::add_merge_section):
7446         Correct check of whether value was inserted.
7447         (Output_section_lookup_maps::add_merge_input_section): Likewise.
7448         (Output_section_lookup_maps::add_relaxed_input_section):
7449         Likewise.
7450         * arm.cc (Target_arm::got_section): Remove used local os.
7451         * i386.cc (Target_i386::got_section): Likewise.
7452         * x86_64.cc (Target_x86_64::got_section): Likewise.
7453         * sparc.cc (Target_sparc::got_section): Likewise.
7454         (Target_sparc::relocate): Remove unused local have_got_offset.
7455         * powerpc.cc (Target_powerpc::relocate): Likewise.
7456
7457 2010-07-13  Ian Lance Taylor  <iant@google.com>
7458
7459         * compressed_output.cc (zlib_decompress): Fix signature in
7460         !HAVE_ZLIB_H case.
7461
7462         * archive.cc (Archive::include_member): Unlock an external member
7463         of a thin archive.  Don't bother to delete an object we know is
7464         NULL.
7465
7466 2010-07-12  Cary Coutant  <ccoutant@google.com>
7467
7468         * compressed_output.cc (zlib_decompress): New function.
7469         (get_uncompressed_size): New function.
7470         (decompress_input_section): New function.
7471         * compressed_output.h (get_uncompressed_size): New function.
7472         (decompress_input_section): New function.
7473         * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info)
7474         Handle compressed debug sections.
7475         * layout.cc (is_compressed_debug_section): New function.
7476         (Layout::output_section_name): Map compressed section names to
7477         canonical names.
7478         * layout.h (is_compressed_debug_section): New function.
7479         (is_debug_info_section): Recognize compressed debug sections.
7480         * merge.cc: Include compressed_output.h.
7481         (Output_merge_data::do_add_input_section): Handle compressed
7482         debug sections.
7483         (Output_merge_string::do_add_input_section): Handle compressed
7484         debug sections.
7485         * object.cc: Include compressed_output.h.
7486         (Sized_relobj::Sized_relobj): Initialize new data members.
7487         (build_compressed_section_map): New function.
7488         (Sized_relobj::do_read_symbols): Handle compressed debug sections.
7489         * object.h (Object::section_is_compressed): New method.
7490         (Object::do_section_is_compressed): New method.
7491         (Sized_relobj::Compressed_section_map): New type.
7492         (Sized_relobj::do_section_is_compressed): New method.
7493         (Sized_relobj::compressed_sections_): New data member.
7494         * output.cc (Output_section::add_input_section): Handle compressed
7495         debug sections.
7496         * reloc.cc: Include compressed_output.h.
7497         (Sized_relobj::write_sections): Handle compressed debug sections.
7498
7499 2010-07-08  Cary Coutant  <ccoutant@google.com>
7500
7501         * resolve.cc (Symbol_table::resolve): Remember whether undef was
7502         weak when resolving to a dynamic def.
7503         (Symbol_table::should_override): Add adjust_dyndef flag; set it
7504         for weak undef/dynamic def cases. Adjust callers.
7505         * symtab.cc (Symbol::init_fields): Initialize undef_binding_set_ and
7506         undef_binding_weak_.
7507         (Symbol_table::sized_write_globals): Adjust symbol binding.
7508         (Symbol_table::sized_write_symbol): Add binding parameter.
7509         * symtab.h (Symbol::set_undef_binding): New method.
7510         (Symbol::is_undef_binding_weak): New method.
7511         (Symbol::undef_binding_set_, Symbol::undef_binding_weak_): New members.
7512         (Symbol_table::should_override): Add new parameter.
7513         (Symbol_table::sized_write_symbol): Add new parameter.
7514
7515         * testsuite/weak_undef_file1.cc: Add new test case.
7516         * testsuite/weak_undef_file2.cc: Fix header comment.
7517         * testsuite/weak_undef_test.cc: Add new test case.
7518
7519 2010-06-29  Doug Kwan  <dougkwan@google.com>
7520
7521         * arm-reloc-property.cc (Arm_reloc_property::Arm_reloc_property):
7522         Initialize USE_SYMBOL_.
7523         * arm-reloc-property.h (Arm_reloc_property::uses_symbol): New method
7524         definition.
7525         (Arm_reloc_property::uses_symbol_): New data member declaration.
7526         * arm.cc (Target_arm::Relocate::relocate): Exit early if relocation
7527         uses symbol value and symbol is undefined but not weakly undefined.
7528
7529 2010-06-28  Rafael Espindola  <espindola@google.com>
7530
7531         * plugin.cc (Plugin::load): Use dlerror.
7532
7533 2010-06-26  Jeffrey Yaskin  <jyasskin@google.com>
7534
7535         * symtab.cc (detect_odr_violations): When reporting an ODR
7536         violation, report an object where the symbol is defined.
7537
7538 2010-06-25  Doug Kwan  <dougkwan@google.com>
7539
7540         * arm.cc (Target_arm::can_check_for_functions_pointers): Return true.
7541         (Target_arm::section_may_have_icf_unsafe_pointers): New method
7542         definition.
7543         (Target_arm::Scan::local_reloc_may_be_function_pointer,
7544         Target_arm::Scan::global_reloc_may_be_function_pointer): Implement
7545         target hook to detect function points.
7546         (Target_arm::Scan::possible_function_pointer_reloc): New method.
7547         * icf.h (Icf::check_section_for_function_pointers): Change type of
7548         parameter SECTION_NAME to const reference to std::string.  Use
7549         target hook to determine if section may have unsafe pointers.
7550         * target.h (Target::section_may_have_icf_unsafe_pointers): New
7551         method definition.
7552
7553 2010-06-21  Rafael Espindola  <espindola@google.com>
7554
7555         * fileread.cc (Input_file::find_fie): New
7556         (Input_file::open): Use Input_file::find_fie.
7557         * fileread.h (Input_file::find_fie): New
7558         * plugin.cc (set_extra_library_path): New.
7559         (Plugin::load): Add set_extra_library_path to the transfer vector.
7560         (Plugin_manager::set_extra_library_path): New.
7561         (Plugin_manager::add_input_file): Use the extra search path if set.
7562         (set_extra_library_path(): New.
7563         * plugin.h (Plugin_manager): Add set_extra_library_path and
7564         extra_search_path_.
7565
7566 2010-06-19  Cary Coutant  <ccoutant@google.com>
7567
7568         * layout.cc (gdb_sections): Add .debug_types.
7569         (lines_only_debug_sections): Likewise.
7570
7571 2010-06-18  Rafael Espindola  <espindola@google.com>
7572
7573         * plugin.cc (add_input_file,add_input_library)
7574         (Plugin_manager::add_input_file): Make filename arguments const.
7575         * plugin.h (Plugin_manager::add_input_file): Make filename arguments
7576         const.
7577
7578 2010-06-16  Doug Kwan  <dougkwan@google.com>
7579
7580         * arm.cc (Target_arm::do_finalize_sections): Do not emit an
7581         .ARM.attributes section if we have not merged any input
7582         attributes sections.
7583
7584 2010-06-15  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
7585
7586         * arm.cc: Allow combining objects with no EABI version
7587         information.
7588
7589 2010-06-15  Rafael Espindola  <espindola@google.com>
7590
7591         * plugin.cc (Plugin_hook::run): Set in_real_elf for the start symbol.
7592
7593 2010-06-15  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
7594
7595         * fileread.cc: Only #include <sys/uio.h> if HAVE_READV.
7596         (struct iovec): Correct !HAVE_READV definition.
7597
7598 2010-06-10  Cary Coutant  <ccoutant@google.com>
7599
7600         * object.cc (Sized_relobj::do_layout): Defer layout for reloc sections.
7601         (Sized_relobj::do_layout_deferred_sections): Do layout for deferred
7602         reloc sections.
7603         * object.h (Sized_relobj::deferred_layout_relocs_): New data member.
7604
7605         PR 11683
7606         * symtab.h (Symbol::is_placeholder): New member function.
7607         * target-reloc.h (relocate_section): Check for placeholder symbols.
7608
7609         * testsuite/Makefile.am (plugin_test_8): New test.
7610         (plugin_test_9): New test.
7611         * testsuite/Makefile.in: Regenerate.
7612
7613 2010-06-09  Nick Clifton  <nickc@redhat.com>
7614
7615         * yyscript.y (input_list_element): Allow strings prefixed with
7616         the '-' character.  Treat these as libraries.
7617         * script.cc (script_add_library): New function.  Adds a library
7618         specified by "-l<name>" found in an input script.
7619         * script-c.h: Add prototype for script_add_library.
7620
7621 2010-06-07  Doug Kwan  <dougkwan@google.com>
7622
7623         * arm.cc (Target_arm::do_relax): Reserve more space for stubs.
7624         Restrict stub-group size to be within long conditional branch
7625         range when working around cortex-A8 erratum.
7626
7627 2010-06-07  Damien Diederen  <dd@crosstwine.com>
7628
7629         * gold-threads.cc (Lock_impl_threads::Lock_impl_threads): Correct
7630         #ifdef typo.
7631
7632 2010-06-03  Sriraman Tallam  <tmsriram@google.com>
7633
7634         PR gold/11658
7635         * output.cc
7636         (Output_section::Input_section_sort_entry::compare_section_ordering):
7637         Change to return non-zero correctly.
7638         (Output_section::Input_section_sort_section_order_index_compare
7639         ::operator()): Change to fix ambiguity in comparisons.
7640
7641 2010-06-01  Sriraman Tallam  <tmsriram@google.com>
7642
7643         * gold.h (is_wildcard_string): New function.
7644         * layout.cc (Layout::layout): Pass this pointer to add_input_section.
7645         (Layout::layout_eh_frame): Ditto.
7646         (Layout::find_section_order_index): New method.
7647         (Layout::read_layout_from_file): New method.
7648         * layout.h (Layout::find_section_order_index): New method.
7649         (Layout::read_layout_from_file): New method.
7650         (Layout::input_section_position_): New private member.
7651         (Layout::input_section_glob_): New private member.
7652         * main.cc (main): Call read_layout_from_file here.
7653         * options.h (--section-ordering-file): New option.
7654         * output.cc (Output_section::input_section_order_specified_): New
7655         member.
7656         (Output_section::Output_section): Initialize new member.
7657         (Output_section::add_input_section): Add new parameter.
7658         Keep input sections when --section-ordering-file is used.
7659         (Output_section::set_final_data_size): Sort input sections when
7660         section ordering file is specified.
7661         (Output_section::Input_section_sort_entry): Add new parameter.
7662         Check sorting type.
7663         (Output_section::Input_section_sort_entry::compare_section_ordering):
7664         New method.
7665         (Output_section::Input_section_sort_compare::operator()): Change to
7666         consider section_order_index.
7667         (Output_section::Input_section_sort_init_fini_compare::operator()):
7668         Change to consider section_order_index.
7669         (Output_section::Input_section_sort_section_order_index_compare
7670         ::operator()): New method.
7671         (Output_section::sort_attached_input_sections): Change to sort
7672         according to section order when specified.
7673         (Output_section::add_input_section<32, true>): Add new parameter.
7674         (Output_section::add_input_section<64, true>): Add new parameter.
7675         (Output_section::add_input_section<32, false>): Add new parameter.
7676         (Output_section::add_input_section<64, false>): Add new parameter.
7677         * output.h (Output_section::add_input_section): Add new parameter.
7678         (Output_section::input_section_order_specified): New
7679         method.
7680         (Output_section::set_input_section_order_specified): New method.
7681         (Input_section::Input_section): Initialize section_order_index_.
7682         (Input_section::section_order_index): New method.
7683         (Input_section::set_section_order_index): New method.
7684         (Input_section::section_order_index_): New member.
7685         (Input_section::Input_section_sort_section_order_index_compare): New
7686         struct.
7687         (Output_section::input_section_order_specified_): New member.
7688         * script-sections.cc (is_wildcard_string): Delete and move modified
7689         method to gold.h.
7690         (Output_section_element_input::Output_section_element_input): Modify
7691         call to is_wildcard_string.
7692         (Output_section_element_input::Input_section_pattern
7693         ::Input_section_pattern): Ditto.
7694         (Output_section_element_input::Output_section_element_input): Ditto.
7695         * testsuite/Makefile.am (final_layout): New test case.
7696         * testsuite/Makefile.in: Regenerate.
7697         * testsuite/final_layout.cc: New file.
7698         * testsuite/final_layout.sh: New file.
7699
7700 2010-06-01  Rafael Espindola  <espindola@google.com>
7701
7702         * plugin.cc (Plugin::load): Pass the output name to the plugin.
7703
7704 2010-06-01  Rafael Espindola  <espindola@google.com>
7705
7706         * plugin.cc (Sized_pluginobj::::do_add_symbols): Correctly set the
7707         visibility of symbols.
7708
7709 2010-05-27  Doug Kwan  <dougkwan@google.com>
7710
7711         * object.cc (Sized_relobj::do_finalize_local_symbols): Use offset
7712         from start of output section instead of address for a local symbol
7713         in a merged or relaxed section when doing a relocatable link.
7714
7715 2010-05-26  Rafael Espindola  <espindola@google.com>
7716
7717         PR 11604
7718         * gold/object.cc(Sized_relobj::do_layout_deferred_sections): Avoid
7719         adding sections the garbage collector removed.
7720         * gold/testsuite/Makefile.am: Add test.
7721         * gold/testsuite/Makefile.in: Regenerate.
7722         * gold/testsuite/plugin_test_7.sh: New.
7723         * gold/testsuite/plugin_test_7_1.c: New.
7724         * gold/testsuite/plugin_test_7_2.c: New.
7725
7726 2010-05-26  Rafael Espindola  <espindola@google.com>
7727
7728         * script-sections.cc (Output_section_definition::set_section_addresses):
7729         Check for --section-start.
7730
7731 2010-05-26  Doug Kwan  <dougkwan@google.com>
7732
7733         * arm.cc (Arm_scan_relocatable_relocs): New class.
7734         (Target_arm::relocate_special_relocatable): New method.
7735         (Arm_relocate_functions::arm_branch_common): Handle relocatable link.
7736         (Arm_relocate_functions::thumb_branch_common): Same.
7737         (Target_arm::scan_relocatable_relocs): Use Arm_scan_relocatable_relocs
7738         instead of Default_scan_relocatable_relocs.
7739         * target-reloc.h (relocate_for_relocatable): Let target handle
7740         relocation strategy Relocatable_relocs::RELOC_SPECIAL.
7741         * target.h (Sized_target::relocate_special_relocatable): New method.
7742
7743 2010-05-25  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
7744
7745         * timer.cc: Only #include <sys/times.h> if HAVE_TIMES is defined.
7746
7747 2010-05-23  Doug Kwan  <dougkwan@google.com>
7748
7749         * arm.cc (Arm_input_section::do_output_offset): Use convert_types
7750         instead of a cast.
7751         (Target_arm::apply_cortex_a8_workaround): Rewrite a conditional branch
7752         with a direct branch, not a conditional branch, to a stub.
7753         * merge.cc (Output_merge_base::record_input_section): New method
7754         defintion.
7755         (Output_merge_data::do_add_input_section): Record input section if
7756         keeps-input-sections flag is set.
7757         (Output_merge_string::do_add_input_section): Ditto.
7758         * merge.h (Output_merge_base::Output_merge_base): Initialize new data
7759         members KEEPS_INPUT_SECTIONS_, FIRST_RELOBJ_, FIRST_SHNDX_ and
7760         INPUT_SECTIONS_.
7761         (Output_merge_base::keeps_input_sections,
7762         Output_merge_base::set_keeps_input_sections,
7763         Output_merge_base::first_relobj, Output_merge_base::first_shndx): New
7764         method definitions.
7765         (Output_merge_base::Input_sections): New type declaration.
7766         (Output_merge_base::input_sections_begin,
7767         Output_merge_base::input_sections_end,
7768         Output_merge_base::do_set_keeps_input_sections): New method definitions.
7769         (Output_merge_base::bool keeps_input_sections_,
7770         Output_merge_base::first_relobj_, Output_merge_base::first_shndx_,
7771         Output_merge_base::input_sections_): New data members.
7772         (Output_merge_data::do_set_keeps_input_sections): New method
7773         defintion.
7774         (Output_merge_string::do_set_keeps_input_sections): Ditto.
7775         * output.cc (Output_section::Input_section::relobj): Move method
7776         defintion from class declaration to here and handle merge sections.
7777         (Output_section::Input_section::shndx): Ditto.
7778         (Output_section::Output_section): Remove initializations of removed
7779         data members and initialize new data member LOOKUP_MAPS_.
7780         (Output_section::add_input_section): Set keeps-input-sections flag
7781         for a newly created merge output section as appropriate.  Adjust code
7782         to use Output_section_lookup_maps class.
7783         (Output_section::add_relaxed_input_section): Adjst code for lookup
7784         maps code refactoring.
7785         (Output_section::add_merge_input_section): Add a new parameter
7786         KEEPS_INPUT_SECTION.  Adjust code to use Output_section_lookup_maps
7787         class.  If adding input section to a newly created merge output
7788         section fails, remove the new merge section.
7789         (Output_section::convert_input_sections_in_list_to_relaxed_input_sections):
7790         Adjust code for use of the Output_section_lookup_maps class.
7791         (Output_section::find_merge_section): Ditto.
7792         (Output_section::build_lookup_maps): New method defintion.
7793         (Output_section::find_relaxed_input_section): Adjust code to use
7794         Output_section_lookup_maps class.
7795         (Output_section::get_input_sections): Export merge sections.  Adjust
7796         code to use Output_section_lookup_maps class.
7797         (Output_section:::add_script_input_section): Adjust code to use
7798         Output_section_lookup_maps class.  Update lookup maps for merge
7799         sections also.
7800         (Output_section::discard_states): Use Output_section_lookup_maps.
7801         (Output_section::restore_states): Same.
7802         * output.h (Merge_section_properties): Move class defintion out of
7803         Output_section.
7804         (Output_section_lookup_maps): New class.
7805         (Output_section::Input_section::is_merge_section): New method
7806         defintion.
7807         (Output_section::Input_section::relobj): Move defintion out of class
7808         defintion.  Declare method only.
7809         (Output_section::Input_section::shndx): Ditto.
7810         (Output_section::Input_section::output_merge_base): New method defintion.
7811         (Output_section::Input_section::u2_.pomb): New union field.
7812         (Output_section::Merge_section_by_properties_map,
7813         Output_section::Output_section_data_by_input_section_map,
7814         Output_section::Ouptut_relaxed_input_section_by_input_section_map):
7815         Remove types.
7816         (Output_section::add_merge_input_section): Add new parameter
7817         KEEPS_INPUT_SECTIONS.
7818         (Output_section::build_lookup_maps): New method declaration.
7819         (Output_section::merge_section_map_,
7820         Output_section::merge_section_by_properties_map_,
7821         Output_section::relaxed_input_section_map_,
7822         Output_section::is_relaxed_input_section_map_valid_): Remove data
7823         members.
7824         (Output_section::lookup_maps_): New data member.
7825
7826 2010-05-21  Doug Kwan  <dougkwan@google.com>
7827
7828         PR gold/11619
7829         * arm.cc (Arm_input_section::do_output_offset): Add a cast to
7830         avoid a compilation error.
7831
7832 2010-05-19  Rafael Espindola  <espindola@google.com>
7833
7834         * script-sections.cc (Output_section_definition::allocate_to_segment):
7835         Update the phdrs_list even when the output section is NULL.
7836         * testsuite/Makefile.am: Add test.
7837         * testsuite/Makefile.in: Regenerate.
7838         * testsuite/script_test_9.cc: New.
7839         * testsuite/script_test_9.sh: New.
7840         * testsuite/script_test_9.t: New.
7841
7842 2010-05-19  Doug Kwan  <dougkwan@google.com>
7843
7844         * arm.cc (Arm_input_section::original_size): New method.
7845         (Arm_input_section::do_addralign): Add a cast.
7846         (Arm_input_section::do_output_offset): Remove static cast.
7847         (Arm_input_section::original_addralign,
7848          Arm_input_section::original_size_): Change type to uint32_t.
7849         (Arm_input_section::init): Add safe casts for section alignment
7850         and size.
7851         (Arm_input_section::set_final_data_size): Do not set address and
7852         offset of stub table.
7853         (Arm_output_section::fix_exidx_coverage): Change use of of
7854         Output_section::Simple_input_section to that of
7855         Output_section::Input_section.
7856         (Target_arm::do_relax): Set addresses and file offsets of Stub_tables
7857         except for the first pass.
7858         * output.cc (Output_section::get_input_sections): Change type of
7859         input_sections to std::list<Input_section>.
7860         (Output_section::add_script_input_section): Rename from
7861         Output_section::add_simple_input_section.  Change type of SIS
7862         parameter from Simple_input_section to Input_section.
7863         * output.h (Output_section::Simple_input_section): Remove class.
7864         (Output_section::Input_section): Change class visibility to public.
7865         (Output_section::Input_section::addralign): Use stored alignments
7866         for special input sections if set.
7867         (Output_section::Input_section::set_addralign): New method.
7868         (Output_section::get_input_sections): Change parameter type from
7869         list of Simple_input_section to list of Input_section.
7870         (Output_section::add_script_input_section): Rename from
7871         Output_section::add_simple_input_section. Change first parameter's
7872         type from Simple_input_section to Input_section and remove the
7873         second and third parameters.
7874         * script-sections.cc (Input_section::Input_section_list): Change
7875         type to list of Output_section::Input_section/
7876         (Input_section_info::Input_section_info): Change parameter type of
7877         INPUT_SECTION to Output_section::Input_section.
7878         (Input_section_info::input_section): Change return type.
7879         (Input_section_info::input_section_): Change type to
7880         Output_section::Input_section.
7881         (Output_section_element_input::set_section_addresses): Adjust code
7882         to use Output_section::Input_section instead of
7883         Output_section::Simple_input_section.  Adjust code for renaming
7884         of Output_section::add_simple_input_section.
7885         (Orphan_output_section::set_section_addresses): Ditto.
7886
7887 2010-05-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7888
7889         * gold.h (Unordered_multimap, Unordered_map): Fix defines for
7890         when neither HAVE_TR1_UNORDERED_MAP nor HAVE_EXT_HASH_MAP are set.
7891
7892 2010-05-18  Rafael Espindola  <espindola@google.com>
7893
7894         * options.cc (General_options::finalize): Handle -nostdlib.
7895         * options.h (nostdlib): New option.
7896         * script.cc (script_add_search_dir): Handle -nostdlib.
7897
7898 2010-05-12  Doug Kwan  <dougkwan@google.com>
7899
7900         * arm.cc (Target_arm::do_finalize_sections): Create an empty
7901         attributes section only if there no attributes section after merging.
7902         (Target_arm::merge_object_attributes): Move value of
7903         Tag_MPextension_use_legacy to that of Tag_MPextension_use.
7904         Handle Tag_DIV_use and Tag_MPextension_use_legacy.
7905         * testsuite/Makefile.am (check_SCRIPTS): Add arm_attr_merge.sh
7906         (check_DATA): Add arm_attr_merge_6.stdout, arm_attr_merge_6r_stdout
7907         and arm_attr_merge_7.stdout.
7908         (arm_attr_merge_6.stdout, arm_attr_merge_6 arm_attr_merge_6a.o
7909         arm_attr_merge_6b.o, arm_attr_merge_6r.stdout, arm_attr_merge_6r,
7910         arm_attr_merge_7.stdout, arm_attr_merge_7, arm_attr_merge_7a.o,
7911         arm_attr_merge_7b.o): New rules.
7912         (MOSTLYCLEANFILES): Add arm_attr_merge_6, arm_attr_merge_6r and
7913         arm_attr_merge_7
7914         * testsuite/Makefile.in: Regenerate.
7915         * testsuite/arm_attr_merge.sh: New file.
7916         * testsuite/arm_attr_merge_[67][ab].s: Same.
7917
7918 2010-05-05  Nick Clifton  <nickc@redhat.com>
7919
7920         * po/es.po: Updated Spanish translation.
7921
7922 2010-04-27  H.J. Lu  <hongjiu.lu@intel.com>
7923
7924         * Makefile.am (install-exec-local): Properly install gold as
7925         default cross linker.
7926         * Makefile.in: Regenerated.
7927
7928 2010-04-27  H.J. Lu  <hongjiu.lu@intel.com>
7929             Nick Clifton  <nickc@redhat.com>
7930
7931         * configure.ac (install_as_default): Define and set to false
7932         unless --enable-gold or --enable-gold=both/gold has been
7933         specified.
7934         * configure: Regenerate.
7935
7936         * Makefile.am (install-exec-local): Install the executable as
7937         'ld.gold'.  If install_as_default is true then also install it as
7938         'ld'.
7939         * Makefile.in: Regenerated.
7940
7941 2010-04-24  Ian Lance Taylor  <iant@google.com>
7942
7943         * layout.cc (Layout::layout_reloc): In relocatable link don't
7944         combine reloc sections for grouped sections.
7945
7946 2010-04-23  Sriraman Tallam  <tmsriram@google.com>
7947
7948         * gc.h (gc_process_relocs): Pass information on relocs pointing to
7949         sections that are not ordinary to icf.
7950         * icf.cc (get_section_contents): Handle relocation pointing to section
7951         with no object or shndx information.
7952         * testsuite/Makefile.am: Remove icf_virtual_function_folding_test.sh
7953         * testsuite/Makefile.in: Regenerate.
7954         * testsuite/icf_virtual_function_folding_test.cc: Remove printf.
7955         * testsuite/icf_virtual_function_folding_test.sh: Delete file.
7956
7957 2010-04-22  Ian Lance Taylor  <iant@google.com>
7958
7959         * expression.cc (Expression::Expression_eval_info): Add
7960         result_alignment_pointer field.
7961         (Expression::eval_with_dot): Add result_alignment_pointer
7962         parameter.  Change all callers.
7963         (Expression::eval_maybe_dot): Likewise.
7964         (class Binary_expression): Add alignment_pointer parameter to
7965         left_value and right_value.  Change all callers.
7966         (BINARY_EXPRESSION): Set result alignment.
7967         (class Trinary_expression): Add alignment_pointer parameter to
7968         arg2_value and arg3_value.  Change all callers.
7969         (Trinary_cond::value): Set result alignment.
7970         (Max_expression::value, Min_expression::value): Likewise.
7971         (Align_expression::value): Likewise.
7972         * script-sections.cc (class Sections_element): Add dot_alignment
7973         parameter to set_section_addresses virtual function.  Update
7974         instantiations.
7975         (class Output_section_element): Likewise.
7976         (Script_sections::create_segments): Add dot_alignment parameter.
7977         Change all callers.
7978         (Script_sections::create_segments_from_phdrs_clause): Likewise.
7979         (Script_sections::set_phdrs_clause_addresses): Likewise.
7980         * script-sections.h: Update declarations.
7981         * script.h: Update declarations.
7982         * output.h (Output_segment::set_minimum_p_align): Don't decrease
7983         min_p_align.
7984         * testsuite/script_test_3.t: Set large alignment.
7985         * testsuite/script_test_3.sh: Make sure that at least one LOAD
7986         segment has expected alignment.
7987
7988 2010-04-22  Nick Clifton  <nickc@redhat.com>
7989
7990         * po/gold.pot: Updated by the Translation project.
7991         * po/vi.po: Updated Vietnamese translation.
7992
7993 2010-04-22  H.J. Lu  <hongjiu.lu@intel.com>
7994
7995         * testsuite/Makefile.am (check_PROGRAMS): Add
7996         icf_virtual_function_folding_test.
7997         * testsuite/Makefile.in: Regenerated.
7998
7999 2010-04-15  Andrew Haley  <aph@redhat.com>
8000
8001         * options.h (merge_exidx_entries): New option.
8002         * arm.cc (class Arm_exidx_fixup): Add new arg, merge_exidx_entries.
8003         (class Arm_exidx_fixup::merge_exidx_entries_): New member.
8004         (Output_section::fix_exidx_coverage): Add new arg, merge_exidx_entries.
8005         (Target_arm::merge_exidx_entries): New function.
8006         (process_exidx_entry): Don't merge if merge_exidx_entries_ is false.
8007         (Arm_output_section::fix_exidx_coverage): Pass merge_exidx_entries
8008         to Arm_exidx_fixup constructor.
8009         Add new arg, merge_exidx_entries.
8010         (Target_arm::fix_exidx_coverage): pass merge_exidx_entries to
8011         Arm_output_section::fix_exidx_coverage.
8012
8013 2010-04-18  Sriraman Tallam  <tmsriram@google.com>
8014
8015         * icf.cc (get_section_contents): Check for preemptible functions.
8016         Ignore addend when appropriate.
8017         * symtab.cc (should_add_dynsym_entry): Add new parameter.  Check for
8018         section folded.
8019         (add_from_relobj): Check for section folded.
8020         (set_dynsym_indexes): Fix call to should_add_dynsym_entry.
8021         * symtab.h (should_add_dynsym_entry): Add new parameter.
8022         * target-reloc.h (scan_relocs): Check for section folded.
8023         * x86_64.cc (Target_x86_64::Scan::possible_function_pointer_reloc):
8024         Check reloc types for function pointers in shared objects.
8025         * testsuite/Makefile.am (icf_virtual_function_folding_test): New test
8026         case.
8027         (icf_preemptible_functions_test): New test case.
8028         (icf_string_merge_test): New test case.
8029         * testsuite.Makefile.in: Regenerate.
8030         * testsuite/icf_safe_so_test.sh: Change to not fold foo_glob and
8031         bar_glob.  Refactor code.
8032         * testsuite/icf_preemptible_functions_test.cc: New file.
8033         * testsuite/icf_preemptible_functions_test.sh: New file.
8034         * testsuite/icf_string_merge_test.cc: New file.
8035         * testsuite/icf_string_merge_test.sh: New file.
8036         * testsuite/icf_virtual_function_folding_test.cc: New file.
8037         * testsuite/icf_virtual_function_folding_test.sh: New file.
8038
8039 2010-04-14  Doug Kwan  <dougkwan@google.com>
8040
8041         * arm.cc (Arm_output_section::fix_exidx_coverage): Mark object
8042         for local symbol recounting if we remove a section due to ICF.
8043         * gold.cc (queue_middle_gc_tasks): Create a dummy blocker if
8044         there are no regular objects in input.
8045
8046 2010-04-13  Doug Kwan  <dougkwan@google.com>
8047
8048         * arm.cc (Arm_input_section::set_final_data_size): Compute
8049         accurate final data size instead of using current data size.
8050
8051 2010-04-09  Doug Kwan  <dougkwan@google.com>
8052
8053         * layout.cc (Layout::choose_output_section): Handle script section
8054         types.
8055         (Layout::make_output_section_for_script): Add section type parameter.
8056         Handle script section types.
8057         * layout.h (Layout::make_output_section_for_script): Add section
8058         type parameter.
8059         * output.cc (Output_section::Output_section): Initialize data member
8060         is_noload_.
8061         (Output_section::do_reset_address_and_file_offset): Do not set address
8062         to 0 if section is a NOLOAD section.
8063         * output.h (Output_section::is_noload): New method.
8064         (Output_section::set_is_noload): Ditto.
8065         (Output_section::is_noload_): New data member.
8066         * script-c.h (Script_section_type): New enum type.
8067         (struct Parser_output_section_header): Add new file section_type.
8068         * script-sections.cc (Sections_element::output_section_name): Add
8069         parameter for returning script section type.
8070         (Output_section_definition::output_section_name): Ditto.
8071         (Output_section_definition::section_type)P; New method.
8072         (Output_section_definiton::script_section_type_name): Ditto.
8073         (Output_section_definition::script_section_type_): New data member.
8074         (Output_section_definition::Output_section_definition): Initialize
8075         data member Output_section_definition::script_section_type_.
8076         (Output_section_definition::create_sections): Pass script section type
8077         to Layout::make_output_section_for_script.
8078         (Output_section_definition::output_section_name): Return script
8079         section type to caller.
8080         (Output_section_definition::set_section_address): Do not advance
8081         dot value and load address if section type is NOLOAD.  Set address
8082         of NOLOAD sections regardless of section flags.
8083         (Output_section_definition::print): Print section type if it is
8084         not SCRIPT_SECTION_TYPE_NONE.
8085         (Output_section_definition::section_type): New method.
8086         (Output_section_definition::script_section_type_name): Ditto.
8087         (Script_sections::output_section_name): Add new parameter
8088         PSECTION_TYPE for returning script section type.  Pass it to
8089         section elements.  Handle discard sections.
8090         (Sort_output_sections::operator()): Handle NOLOAD sections.
8091         * script-sections.h (Script_sections::Section_type): New enum type.
8092         (Script_sections::output_section_name): Add a new parameter for
8093         returning script section type.
8094         * script.cc (script_keyword_parsecodes): Add keywords COPY, DSECT,
8095         INFO and NOLOAD.
8096         * yyscript.y (union): Add new field SECTION_TYPE.
8097         (COPY, DSECT, INFO, NOLOAD): New tokens.
8098         (opt_address_and_section_type): Change type to output_section_header.
8099         (section_type): New non-terminal
8100         (section_header): Handle section type.
8101         (opt_address_and_section_type): Return section type value.
8102
8103 2010-04-09  H.J. Lu  <hongjiu.lu@intel.com>
8104
8105         * testsuite/plugin_common_test_1.c (foo): Add prototype.
8106         * testsuite/plugin_common_test_2.c (foo): Likewise.
8107
8108 2010-04-08  Doug Kwan  <dougkwan@google.com>
8109
8110         * merge.cc (Output_merge_data::set_final_data_size): Handle empty
8111         Output_merge_data.
8112         * output.cc (Output_section::add_merge_input_section): Simplify
8113         code and return status of Output_merge_base::add_input_section.
8114         Update merge section map only if Output_merge_base::add_input_section
8115         returns true.
8116
8117 2010-04-07  Doug Kwan  <dougkwan@google.com>
8118
8119         * arm.cc (Arm_relobj::scan_section_for_cortex_a8_erratum): Warn
8120         if section is marked as containing instructions but has no mapping
8121         symbols.
8122         (Arm_relobj::do_count_local_symbols): Call adjust_sym_shndx to get
8123         correct section index.
8124         (Arm_relobj::find_linked_text_section): Ditto.
8125
8126 2010-04-07  Cary Coutant  <ccoutant@google.com>
8127
8128         * archive.cc (include_member): Destroy Read_symbols_data object before
8129         releasing file.
8130         * object.cc (Read_symbols_data::~Read_symbols_data) New destructor.
8131         * object.h (Read_symbols_data::Read_symbols_data) New constructor.
8132         (Read_symbols_data::~Read_symbols_data) New destructor.
8133         (Section_relocs::Section_relocs) New constructor.
8134         (Section_relocs::~Section_relocs) New destructor.
8135         (Read_relocs_data::Read_relocs_data) New constructor.
8136         (Read_relocs_data::~Read_relocs_data) New destructor.
8137         * testsuite/binary_unittest.cc (Sized_binary_test): Set sd member
8138         pointers to NULL after deleting.
8139
8140 2010-04-07  Doug Kwan  <dougkwan@google.com>
8141
8142         * arm.cc: Replace "endianity" with "endianness" in comments.
8143         (Arm_exidx_cantunwind): Ditto.
8144         (Arm_relobj::Arm_relobj): Initialize merge_flags_and_attribures.
8145         (Arm_relobj::merge_flags_and_attributes): New method.
8146         (Arm_relobj::merge_flags_and_attributes_): New data member.
8147         (Arm_exidx_cantunwind::do_fixed_endian_write): Fix formatting.
8148         (Arm_relobj::scan_sections_for_stubs): Ditto.
8149         (Arm_relobj::do_read_symbols): Check to see if we really want to
8150         merge processor-specific flags and attributes.  Exit early if
8151         an object is empty except for section names and the undefined symbol.
8152         (Target_arm::do_finalize_sections): Move check for ELF format to
8153         Arm_relobj::do_read_symbols.  Merge processor specific flags and
8154         attributes from a regular object only when we have determined that
8155         it is aapropriate.  Do not create an .ARM.attributes section in
8156         output if there is no regular input object.
8157         (Target_arm::merge_processor_specific_flags): Check
8158         --warn-mismatch before printing any error.
8159         (Target_arm::merge_object_attributes): Ditto.
8160         * gold.cc (queue_middle_tasks): Handle the case in which there is
8161         no regular object in input.
8162         * options.cc (General_options::parse_EB): New method.
8163         (General_options::parse_EL): Same.
8164         (General_options::General_options): Initialize endianness_.
8165         * options.h (-EB, -EL, -no-pipeline-knowledge, -p, --warn-mismatch):
8166         New options.
8167         (General_options::Endianness): New enum.
8168         (General_options::endianness): New method.
8169         (General_options::endianness_): New data member.
8170         * parameters.cc (Parameters::set_options): Check target endianness.
8171         (Parameters::set_target_once): Ditto.
8172         (Parameters::check_target_endianness): New method.
8173         (parameters_force_valid_target): If either -EL or -EB is specified,
8174         use it to define endianness of default target.
8175         * parameters.h (Parameters::check_target_endianness): New method
8176         declaration.
8177         * target.h (class Target): Change "endianity" to "endianness"
8178         in comments.
8179
8180 2010-04-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
8181
8182         * configure.ac (AM_INIT_AUTOMAKE): Add option no-dist.
8183         * configure: Regenerate.
8184         * Makefile.in: Regenerate.
8185         * testsuite/Makefile.in: Regenerate.
8186
8187 2010-04-06  Cary Coutant  <ccoutant@google.com>
8188
8189         gcc PR lto/42757
8190         * plugin.cc (Pluginobj::get_symbol_resolution_info): Check for
8191         prevailing definitions of common symbols.
8192         * testsuite/plugin_test_6.sh: New test case.
8193         * testsuite/plugin_common_test_1.c: New test case.
8194         * testsuite/plugin_common_test_2.c: New test case.
8195         * testsuite/Makefile.am (plugin_test_6): New test case.
8196         * testsuite/Makefile.in: Regenerate.
8197
8198 2010-04-06  Nick Clifton  <nickc@redhat.com>
8199
8200         * po/vi.po: New Vietnamese translation.
8201
8202 2010-03-30  Doug Kwan  <dougkwan@google.com>
8203
8204         * arm.cc (Target_arm::using_thumb_only): Handle v6-M
8205
8206 2010-03-25  Doug Kwan  <dougkwan@google.com>
8207
8208         * gold/arm.cc (Arm_exidx_fixup::update_offset_map): Rearrange code
8209         to avoid a conversion warning on a 32-bit host.
8210
8211 2010-03-24  Ian Lance Taylor  <iant@google.com>
8212
8213         * testsuite/script_test_3.t: Add a TLS segment.
8214         * testsuite/Makefile.am (check_PROGRAMS): Add
8215         tls_phdrs_script_test.
8216         (tls_phdrs_script_test_SOURCES): Define.
8217         (tls_phdrs_script_test_DEPENDENCIES): Define.
8218         (tls_phdrs_script_test_LDFLAGS): Define.
8219         (tls_phdrs_script_test_LDADD): Define.
8220         * testsuite/Makefile.in: Rebuild.
8221
8222 2010-03-23  Cary Coutant  <ccoutant@google.com>
8223
8224         * fileread.cc (find_or_make_view): Fix comment.
8225
8226 2010-03-23  Ian Lance Taylor  <iant@google.com>
8227
8228         * script-sections.cc (class Orphan_section_placement): Define
8229         PLACE_TLS and PLACE_TLS_BSS.
8230         (Orphan_section_placement::Orphan_section_placement): Initialize
8231         new places.
8232         (Orphan_section_placement::find_place): Handle SHF_TLS sections.
8233         * testsuite/Makefile.am (check_PROGRAMS): Add tls_script_test.
8234         (tls_script_test_SOURCES): Define.
8235         (tls_script_test_DEPENDENCIES): Define.
8236         (tls_script_test_LDFLAGS): Define.
8237         (tls_script_test_LDADD): Define.
8238         * testsuite/Makefile.in: Rebuild.
8239
8240 2010-03-22  Doug Kwan  <dougkwan@google.com>
8241
8242         * arm.cc (Arm_relocate_functions::abs8,
8243         Arm_relocate_functions::abs16): Use correct check for overflow
8244         specified in the ARM ELF specs.
8245         (Arm_relocate_functions): thumb_branch_common.  Handle bit 1 of branch
8246         target of a BLX instruction specially.
8247         (Reloc_stub::stub_type_for_reloc): Ditto.
8248         (Relocate::relocate): Use symbolic names instead of numeric relocation
8249         codes to report error.
8250         (Target_arm::do_relox): Reduce default stub-group size for Cortex-A8
8251         workaround.
8252         * testsuite/Makefile.am (check_DATA): add thumb_blx_in_range.stdout,
8253         thumb_blx_out_of_range.stdout, thumb2_blx_in_range.stdout and
8254         thumb2_blx_out_of_range.stdout
8255         (thumb_bl_out_of_range, thumb_bl_out_of_range.o,
8256         thumb2_bl_out_of_range, thumb2_bl_out_of_range.o): Fix dependenices.
8257         (thumb_blx_in_range.stdout, thumb_blx_in_range, thumb_blx_in_range.o,
8258         thumb_blx_out_of_range.stdout, thumb_blx_out_of_range,
8259         thumb_blx_out_of_range.o, thumb2_blx_in_range.stdout,
8260         thumb2_blx_in_range, thumb2_blx_in_range.o,
8261         thumb2_blx_out_of_range.stdout, thumb2_blx_out_of_range,
8262         thumb2_blx_out_of_range.o): New rules.
8263         (MOSTLYCLEANFILES): Add thumb_blx_in_range, thumb_blx_out_of_range,
8264         thumb2_blx_in_range and thumb2_blx_out_of_range.
8265         * testsuite/Makefile.in: Regenerate.
8266         * arm_branch_in_range.sh: Add tests for THUMB BLX.
8267         * testsuite/thumb_blx_in_range.s: New file.
8268         * testsuite/thumb_blx_out_of_range.s: New file.
8269
8270 2010-03-22  Rafael Espindola  <espindola@google.com>
8271
8272         * archive.cc (Should_include): Move to archive.h.
8273         (should_include_member): Make it a member of Archive.
8274         (Lib_group): New.
8275         (Add_lib_group_symbols): New.
8276         * archive.h: Include options.h.
8277         (Archive_member): Moved from Archive.
8278         (Should_include): Moved from archive.cc.
8279         (Lib_group): New.
8280         (Add_lib_group_symbols): New.
8281         * dynobj.cc (do_should_include_member): New.
8282         * dynobj.h (do_should_include_member): New.
8283         * gold.cc (queue_initial_tasks): Update call to queue.
8284         * main.cc (main): Print lib group stats.
8285         * object.cc (do_should_include_member): New.
8286         * object.h: Include archive.h.
8287         (Object::should_include_member): New.
8288         (Object::do_should_include_member): New.
8289         (Sized_relobj::do_should_include_member): New.
8290         * options.cc (General_options::parse_start_lib): New.
8291         (General_options::parse_end_lib): New.
8292         (Input_arguments::add_file): Handle lib groups.
8293         (Input_arguments::start_group): Check we are not in a lib.
8294         (Input_arguments::start_lib): New.
8295         (Input_arguments::end_lib): New.
8296         * options.h (General_options): Add start_lib and end_lib.
8297         (Input_argument::lib_): New.
8298         (Input_argument::lib): New.
8299         (Input_argument::is_lib): New.
8300         (Input_file_lib): New.
8301         (Input_arguments::in_lib_): New.
8302         (Input_arguments::in_lib): New.
8303         (Input_arguments::start_lib): New.
8304         (Input_arguments::end_lib_): New.
8305         * plugin.cc (Pluginobj::get_symbol_resolution_info): Mark symbols
8306         in unused members as preempted.
8307         (Sized_pluginobj::do_should_include_member): New.
8308         * plugin.h (Sized_pluginobj::do_should_include_member): New.
8309         * readsyms.cc (Read_symbols::locks): If we are just reading a member,
8310         return the blocker.
8311         (Read_symbols::do_whole_lib_group): New.
8312         (Read_symbols::do_lib_group): New.
8313         (Read_symbols::do_read_symbols): Handle lib groups.
8314         (Read_symbols::get_name): Handle lib groups.
8315         * readsyms.h (Read_symbols): Add an archive member pointer.
8316         (Read_symbols::do_whole_lib_group): New.
8317         (Read_symbols::do_lib_group): New.
8318         (Read_symbols::member_): New.
8319         * script.cc (read_input_script): Update call to queue_soon.
8320
8321 2010-03-19  Doug Kwan  <dougkwan@google.com>
8322
8323         * arm.cc (Stub_table::Stub_table): Initialize new data members
8324         Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_.
8325         (Stub_table::add_reloc_stub): Assign stub offset and update
8326         Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_.
8327         (Stub_table::reloc_stubs_size_, Stub_table::reloc_stubs_addralign_):
8328         New data members.
8329         (Stub_table::update_data_size_and_addralign): Use
8330         Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_
8331         instead of going over all reloc stubs.
8332         (Stub_table::finalize_stubs): Do not assign reloc stub offsets.
8333         * stringpool.cc (Stringpool_template::Stringpool_template): Initialize
8334         Stringpool_template::offset_ to size of Stringpool_char.
8335         (Stringpool_template::new_key_offset): Remove code to initialize
8336         Stringpool_template::offset_.
8337         * stringpool.h (Stringpool_template::set_no_zero_null): Set
8338         Stringpool_template::offset_ to zero.
8339
8340 2010-03-15  Doug Kwan  <dougkwan@google.com>
8341
8342         * stringpool.cc (Stringpool_template::Stringpool_template): Initialize
8343         offset_.
8344         (Stringpool_template::new_key_offset): New method.
8345         (Stringpool_template::add_string): Assign offsets when adding new
8346         strings.
8347         (Stringpool_template::set_string_offsets): Do not set string offsets
8348         when not optimizing.
8349         * stringpool.h (Chunked_vector::Chunked_vector): Initialize data
8350         member size_.
8351         (Chunked_vector::clear): Clear size_.
8352         (Chunked_vector::reserve): Call reserve method of all Element_vectors.
8353         (Chunked_vector::size): Return size_.
8354         (Chunked_vector::push_back): Use size_ to find insert position.
8355         (Chunked_vector::size_): New data member.
8356         (Stringpool_template::set_no_zero_null): Assert string set is empty.
8357         (Stringpool_template::new_key_offset): New method declaration.
8358         (Stringpool_template::offset_): New data member.
8359
8360 2010-03-15   Rafael Espindola  <espindola@google.com>
8361
8362         * readsyms.cc (Read_symbols::do_read_symbols): Update calls to
8363         Add_symbols' constructor.
8364         * readsyms.h (Add_symbols): Remove the input_group member.
8365
8366 2010-03-10  Ian Lance Taylor  <iant@google.com>
8367
8368         * reloc.cc (Sized_relobj::split_stack_adjust_reltype): Call the
8369         target to ask whether a reference to a symbol requires a stack
8370         split.
8371         * target.h (Target::is_call_to_non_split): New function.
8372         (Target::do_is_call_to_non_split): Declare virtual function.
8373         * target.cc: Include "symtab.h".
8374         (Target::do_is_call_to_non_split): New function.
8375         * i386.cc (Target_i386::do_is_call_to_non_split): New function.
8376
8377 2010-03-10  Cary Coutant  <ccoutant@google.com>
8378
8379         * fileread.cc (File_read::~File_read): Don't delete whole_file_view_.
8380         (File_read::open[1]): Remove initial mapping of whole_file_view_.
8381         (File_read::open[2]): Add whole_file_view_ to list of views.
8382         (File_read::make_view): Remove test of whole_file_view_.
8383         (File_read::find_or_make_view): Create whole_file_view_ if
8384         necessary.
8385         (File_read::clear_views): Replace bool parameter with enum;
8386         adjust all callers.  Don't delete views with permanent data;
8387         do delete cached views and views from archives if
8388         --no-keep-files-mapped is set.  Set whole_file_view_ to NULL
8389         if clearing the corresponding view.
8390         * fileread.h (File_read::Clear_views_mode): New enum.
8391         (File_read::View::is_permanent_view): New method.
8392         (File_read::clear_views): Replace bool parameter
8393         with enum; adjust all callers.
8394         * options.h (General_options): Change keep_files_mapped option;
8395         add map_whole_files.
8396         * readsyms.cc (Add_symbols::run): Delete sd_ object before
8397         releasing the file.
8398         * reloc.cc (Scan_relocs::run): Delete rd_ object before releasing
8399         the file.
8400
8401 2010-03-10  David S. Miller  <davem@davemloft.net>
8402
8403         * sparc.cc (Target_sparc::Scan::local): Accept R_SPARC_WPLT30.
8404
8405 2010-03-09  Sriraman Tallam  <tmsriram@google.com>
8406
8407         * icf.cc (get_section_contents): Add '@' marker after processing the
8408         merge reloc.
8409
8410 2010-03-08  Doug Kwan  <dougkwan@google.com>
8411
8412         * gold/arm.cc (Arm_exidx_fixup::update_offset_map): Fix build breakage
8413         due to a conversion warning.
8414         (Arm_relobj::update_output_local_symbol_count): Check for local
8415         symbol with unset output index.
8416
8417 2010-03-05  Ian Lance Taylor  <iant@google.com>
8418
8419         * options.h (class General_options): Add --spare-dynamic-tags.
8420         * output.cc (Output_data_dynamic::set_final_data_size): Implement
8421         --spare-dynamic-tags.
8422
8423 2010-03-05  Ian Lance Taylor  <iant@google.com>
8424
8425         * incremental.cc: Include "libiberty.h".
8426
8427 2010-03-05  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
8428
8429         * dynobj.h (Verdef::Verdef): Add is_info arg, is_info member
8430         function, is_info_ member.
8431         * dynobj.cc (Verdef::write): Set VER_FLG_INFO if this->is_info_.
8432         (Versions::Versions): Update caller.
8433         (Versions::define_base_version): Likewise.
8434         (Versions::add_def): Likewise.
8435
8436 2010-03-03  Sriraman Tallam  <tmsriram@google.com>
8437
8438         * i386.cc (Target_i386::can_check_for_function_pointers): New function.
8439         (Scan::possible_function_pointer_reloc): New function.
8440         (Scan::local_reloc_may_be_function_pointer): Change to call
8441         possible_function_pointer_reloc.
8442         (Scan::global_reloc_may_be_function_pointer): Ditto.
8443         * icf.h (Icf::check_section_for_function_pointers): Change to reject
8444         relocations in ".data.rel.ro._ZTV" section.
8445         * testsuite/icf_safe_so_test.sh: Change to pass i386.
8446         * testsuite/icf_safe_so_test.cc: Ditto.
8447         * testsuite/icf_safe_test.cc: Ditto.
8448         * testsuite/icf_safe_test.sh: Ditto.
8449
8450 2010-03-03  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
8451             Ian Lance Taylor  <iant@google.com>
8452
8453         * target-reloc.h (relocate_section): Check the symbol table index
8454         for -1U before setting the local symbol index.
8455         (scan_relocatable_relocs): If copying the relocation, record that
8456         the local symbol is required.
8457         * object.h (Symbol_value::is_output_symtab_index_set): New
8458         function.
8459         (Symbol_value::may_be_discarded_from_output_symtab): New
8460         function.
8461         (Symbol_value::has_output_symtab_entry): New function.
8462         (Symbol_value::needs_output_symtab_entry): Remove.
8463         (Symbol_value::output_symtab_index): Make sure the symbol index is
8464         set.
8465         (Symbol_value::set_output_symtab_index): Make sure the symbol
8466         index is not set.  Make sure the new index is valid.
8467         (Symbol_value::set_must_have_output_symtab_entry): New function.
8468         (Symbol_value::has_output_dynsym_entry): New function.
8469         (Symbol_value::set_output_dynsym_index): Make sure the new index
8470         is valid.
8471         (Sized_relobj::set_must_have_output_symtab_entry): New function.
8472         * object.cc (Sized_relobj::do_count_local_symbols): Only discard a
8473         local symbol if permitted.
8474         (Sized_relobj::do_finalize_local_symbols): Call
8475         is_output_symtab_index_set rather than needs_output_symtab_entry.
8476         (Sized_relobj::write_local_symbols): Call has_output_symtab_entry
8477         rather than needs_output_symtab_entry.  Call
8478         has_output_dynsym_entry rather than needs_output_dynsym_entry.
8479         * arm.cc (Arm_relobj::update_output_local_symbol_count): Call
8480         is_output_symtab_index_set rather than needs_output_symtab_entry.
8481         * testsuite/discard_locals_relocatable_test.c: New file.
8482         * testsuite/discard_locals_test.sh: Test -r.
8483         * testsuite/Makefile.am (check_DATA): Add
8484         discard_locals_relocatable_test1.syms,
8485         discard_local_relocatable_test2.syms.
8486         (MOSTLYCLEANFILES): Likewise.  Also add
8487         discard_locals_relocatable_test1.lout and
8488         discard_locals_relocatable_test2.out.
8489         (discard_locals_relocatable_test1.syms): New target.
8490         (discard_locals_relocatable_test.o): New target.
8491         (discard_locals_relocatable_test1.out): New target.
8492         (discard_locals_relocatable_test2.syms): New target.
8493         (discard_locals_relocatable_test2.out): New target.
8494         (various): Add missing ../ld-new dependencies.
8495         * testsuite/Makefile.in: Rebuild.
8496
8497 2010-03-03  Nick Clifton  <nickc@redhat.com>
8498
8499         * po/fi.po: New Finnish translation.
8500
8501 2010-03-01  Doug Kwan  <dougkwan@google.com>
8502
8503         * layout.cc (Layout::Layout): Force section types of .init_array*,
8504         .preinit_array* and .fini_array* sections.
8505         * output.cc (Output_section::Input_section_sort_entry::has_priority):
8506         Fix check of return value of std::string::find.().
8507         (Output_section::Input_section_sort_compare::operator()): Remove
8508         comment about .init_array.
8509         (Output_section::Input_section_sort_init_fini_compare::operator()):
8510         New method.
8511         (Output_section::sort_attached_input_sections): Handle .init_array
8512         and .fini_array specially.
8513         * output.h (Output_section::Inut_section_sort_compare): Update
8514         comment.
8515         (Output_section::Input_section_sort_init_fini_compare): New struct.
8516
8517 2010-02-26  Doug Kwan  <dougkwan@google.com>
8518
8519         * arm.cc (Target_arm::Relocate::reloc_is_non_pic): Treat
8520         R_ARM_PREL31 and R_ARM_SBREL31 as position independent.
8521         * testsuite/debug_msg.sh: Avoid matching source line number for
8522         use of global variable undef_int.
8523
8524 2010-02-26  Doug Kwan  <dougkwan@google.com>
8525
8526         * arm.cc (Target_arm::scan_reloc_for_stub): Move code handling
8527         R_ARM_V4BX to Target_arm::scan_reloc_section_for_stubs.
8528         (Target_arm::scan_reloc_section_for_stubs): Instead of calling
8529         scan_reloc_for_stub, do all processing of R_ARM_V4BX here.
8530         * options.cc (General_options::General_options): Initialize member
8531         fix_v4bx_.
8532         * testsuite/Makefile.am (check_SCRIPTS): Add arm_fix_v4bx.sh
8533         (check_DATA): Add arm_fix_v4bx.stdout, arm_fix_v4bx_interworking.stdout
8534         and rm_no_fix_v4bx.stdout
8535         (arm_fix_v4bx.stdout, arm_fix_v4bx, arm_fix_v4bx.o,
8536         arm_fix_v4bx_interworking.stdout, arm_fix_v4bx_interworking,
8537         arm_no_fix_v4bx.stdout, arm_no_fix_v4bx): New make rules.
8538         (MOSTLYCLEANFILES): Add arm_fix_v4bx, arm_fix_v4bx_interworking
8539         and arm_no_fix_v4bx.
8540         * Makefile.in: Regenerate.
8541         * testsuite/arm_fix_v4bx.s: New file.
8542         * testsuite/arm_fix_v4bx.sh: Ditto.
8543
8544 2010-02-24  Doug Kwan  <dougkwan@google.com>
8545
8546         * arm.cc (Target_arm::got_section): Make the .got section the first
8547         non RELRO section in the data segment.
8548         * testsuite/script_test_5.sh: Fix match patterns to avoid matching
8549         suffixes of section names.
8550
8551 2010-02-24  Doug Kwan  <dougkwan@google.com>
8552
8553         * arm.cc (Target_arm::do_finalize_sections): Skip processor specific
8554         flags and attributes merging if an input file is a binary file.
8555         * fileread.cc (Input_file::open): Record format of original file.
8556         * fileread.h (Input_file::Format): New enum type.
8557         (Input_file::Input_file): Initialize data member format_.
8558         (Input_file::format): New method definition.
8559         (Input_file::format_):: New data member.
8560
8561 2010-02-24  Doug Kwan  <dougkwan@google.com>
8562
8563         * arm.cc (Arm_output_data_got): New class.
8564         (ARM_TCB_SIZE): New constant
8565         (Target_arm): Use Arm_output_data_got instead of Output_data_got.
8566         (Arm_output_section::fix_exidx_coverage): Add a parameter for layout.
8567         If user uses a script with a SECTIONS clause, issue only a warning
8568         for a misplaced EXIDX input section.  Otherwise, issue an error.
8569         (Arm_relobj::do_gc_process_relocs): Exit early if we are not doing
8570         garbage collection.
8571         (Target_arm::got_mode_index_entry): Handle static linking.
8572         (Target_arm::Scan::local): Ditto.
8573         (Target_arm::Scan::global): Ditto.
8574         (Target_arm::Relocate::relocate_tls): Handle static linking.  Fix
8575         all incorrectly implemented relocations.
8576         (Target_arm::fix_exidx_coverage): Pass layout to
8577         Arm_output_section::fix_exidx_coverage.
8578         * layout.cc (Layout::section_name_mapping): Remove trailing dots
8579         from ".ARM.exidx." and ".ARM.extab.".
8580
8581 2010-02-23  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
8582
8583         * arm.cc (Target_arm::do_finalize_sections): Create attribute
8584         section if it does not already exist.
8585         * attributes.cc (Attributes_section_data::Attributes_section_data):
8586         Don't crash if size is zero.
8587
8588 2010-02-23  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
8589             Ian Lance Taylor  <iant@google.com>
8590
8591         * gold.cc (queue_middle_tasks): If no input files were opened,
8592         exit.
8593         * workqueue.h (Task_function::Task_function): Assert that there is
8594         a blocker.
8595
8596 2010-02-22  Doug Kwan  <dougkwan@google.com>
8597
8598         * gold-threads.h (Once::~Once): Explicitly define virtual destructor.
8599         * icf.cc (get_section_contents): Cast snprintf arguments to long long
8600         types to avoid warnings due to different uint64_t implementations
8601         on different hosts.
8602
8603 2010-02-21  Doug Kwan  <dougkwan@google.com>
8604
8605         * arm.cc (Arm_relocate_functions::arm_branch_common): Fix bug in
8606         handling of the maximum backward branch offset.
8607         (Arm_relocate_functions::thumb_branch_common): Ditto.
8608         * testsuite/Makefile.am (check_SCRIPTS): Add arm_branch_in_range.sh.
8609         (check_DATA): Add arm_bl_in_range.stdout, arm_bl_out_of_range.stdout
8610         thumb_bl_in_range.stdout, thumb_bl_out_of_range.stdout,
8611         thumb2_bl_in_range.stdout and thumb2_bl_out_of_range.stdout.
8612         (arm_bl_in_range.stdout, arm_bl_in_range, arm_bl_in_range.o,
8613         arm_bl_out_of_range.stdout, arm_bl_out_of_range,
8614         arm_bl_out_of_range.o, thumb_bl_in_range.stdout, thumb_bl_in_range,
8615         thumb_bl_in_range.o, thumb_bl_out_of_range.stdout,
8616         thumb_bl_out_of_range thumb_bl_out_of_range.o,
8617         thumb2_bl_in_range.stdout, thumb2_bl_in_range, thumb2_bl_in_range.o
8618         thumb2_bl_out_of_range.stdout, thumb2_bl_out_of_range,
8619         thumb2_bl_out_of_range.o): New rules.
8620         (MOSTLYCLEANFILES): Add arm_bl_in_range, arm_bl_out_of_range,
8621         thumb_bl_in_range, thumb_bl_out_of_range, thumb2_bl_in_range and
8622         thumb2_bl_out_of_range
8623         * testsuite/Makefile.in: Regenerate.
8624         * testsuite/arm_bl_in_range.s: New file.
8625         * testsuite/arm_bl_out_of_range.s: Ditto.
8626         * testsuite/arm_branch_in_range.sh: Ditto.
8627         * testsuite/arm_branch_range.t: Ditto.
8628         * testsuite/thumb2_branch_range.t: Ditto.
8629         * testsuite/thumb_bl_in_range.s: Ditto.
8630         * testsuite/thumb_bl_out_of_range.s: Ditto.
8631         * testsuite/thumb_branch_range.t: Ditto.
8632
8633 2010-02-20  Sriraman Tallam  <tmsriram@google.com>
8634
8635         * gc.h (gc_process_relocs): Change vectors to point to the new list.
8636         Add reloc offset information.
8637         * icf.cc (get_section_contents): Change iterators to point to the new
8638         vectors. Add reloc offset information to the contents.
8639         * icf.h (Icf::Sections_reachable_info): New typedef.
8640         (Icf::Sections_reachable_list): New typedef.
8641         (Icf::Offset_info): New typedef.
8642         (Icf::Reloc_info): New struct typedef.
8643         (Icf::Reloc_info_list): New typedef.
8644         (Icf::symbol_reloc_list): Delete method.
8645         (Icf::addend_reloc_list): Delete method.
8646         (Icf::section_reloc_list): Delete method.
8647         (Icf::reloc_info_list): New method.
8648         (Icf::reloc_info_list_): New member.
8649
8650 2010-02-19  Doug Kwan  <dougkwan@google.com>
8651
8652         * arm-reloc.def: Mark R_ARM_TLS_GD32, R_ARM_TLS_LDM32,
8653         R_ARM_TLS_LDO32, R_ARM_TLS_IE32 and R_ARM_TLS_LE32 are implemented.
8654         * arm.cc (Arm_relocation_functions): New forward declaration.
8655         (Target_arm::Target_arm): Initialize new data members
8656         got_mod_index_offset_ and tls_base_symbol_defined_.
8657         (Target_arm::Relocate::relocate_tls): New method.
8658         (Target_arm::optimize_tls_reloc, Target_arm::define_tls_base_symbol,
8659          Target_arm::got_mod_index_entry, Target_arm::rel_tls_desc_section):
8660         New methods.
8661         (Target_arm::Got_type): Add GOT_TYPE_TLS_NOFFSET, GOT_TYPE_OFFSET,
8662         GOT_TYPE_TLS_PAIR and GOT_TYPE_TLS_DESC.
8663         (Target_arm::got_mod_index_offset_,
8664         Target_arm::tls_base_symbol_defined_): New data members.
8665         (Target_arm::Scan::local, Target::Scan::global,
8666         Target_arm::Relocate::relocate): Handle 32-bit initial TLS
8667         relocations.
8668
8669 2010-02-18  Doug Kwan  <dougkwan@google.com>
8670
8671         * arm.cc (Arm_relobj::find_linked_text_section): New method.
8672         (Arm_relobj::make_exidx_input_section): Pass section index of linked
8673         text section as a parameter becuase some broken tools may not set
8674         the link in section header.
8675         (Target_arm::has_got_section): New method.
8676         (Target_arm::scan_section_for_cortex_a8_stubs): Treat an input section
8677         without any mapping symbol as data only.  Remove warning.
8678         (Arm_relobj::do_read_synbols): If an EXIDX input section has no
8679         link in its section header, try to discover the link by inspecting the
8680         REL31 relocation at the beginning of the section.
8681         (Target_arm::Scan::check_non_pic): Report name of offending relocation
8682         in error message.
8683         (Target_arm::Scan::global): Treat any reference to the symbol
8684         _GLOBAL_OFFSET_TABLE_ as a GOT access.
8685
8686 2010-02-12  Sriraman Tallam  <tmsriram@google.com>
8687
8688         * arm.cc (Scan::local_reloc_may_be_function_pointer): New function.
8689         (Scan::global_reloc_may_be_function_pointer): New function.
8690         * sparc.cc (Scan::local_reloc_may_be_function_pointer): New function.
8691         (Scan::global_reloc_may_be_function_pointer): New function.
8692         * powerpc.cc (Scan::local_reloc_may_be_function_pointer): New function.
8693         (Scan::global_reloc_may_be_function_pointer): New function.
8694         * i386.cc (Scan::local_reloc_may_be_function_pointer): New function.
8695         (Scan::global_reloc_may_be_function_pointer): New function.
8696         * x86_64.cc (Scan::local_reloc_may_be_function_pointer): New function.
8697         (Scan::global_reloc_may_be_function_pointer): New function.
8698         (Scan::possible_function_pointer_reloc): New function.
8699         (Target_x86_64::can_check_for_function_pointers): New function.
8700         * gc.h (gc_process_relocs): Scan relocation types to determine if
8701         function pointers were taken for targets that support it.
8702         * icf.cc (Icf::find_identical_sections): Include functions for
8703         folding in safe ICF whose pointer is not taken.
8704         * icf.h (Secn_fptr_taken_set): New typedef.
8705         (fptr_section_id_): New member.
8706         (section_has_function_pointers): New function.
8707         (set_section_has_function_pointers): New function.
8708         (check_section_for_function_pointers): New function.
8709         * options.h: Fix comment for safe ICF option.
8710         * target.h (can_check_for_function_pointers): New function.
8711         * testsuite/Makefile.am: Add icf_safe_so_test test case.
8712         Modify icf_safe_test for X86-64.
8713         * testsuite/Makefile.in: Regenerate.
8714         * testsuite/icf_safe_so_test.cc: New file.
8715         * testsuite/icf_safe_so_test.sh: New file.
8716         * testsuite/icf_safe_test.cc (kept_func_3): New function.
8717         (main): Change to take pointer to function kept_func_3.
8718         * testsuite/icf_safe_test.sh (arch_specific_safe_fold): Check if safe
8719         folding is done correctly for X86-64.
8720
8721 2010-02-12  David S. Miller  <davem@davemloft.net>
8722
8723         * output.h (Output_reloc<SHT_REL>::Output_reloc): Add
8724         is_symbolless parameter.
8725         (Output_reloc<SHT_REL>::is_symbolless): New.
8726         (Output_reloc<SHT_REL>::is_symbolless_): New.
8727         (Output_reloc<SHT_REL>::type_): Decrease to 29 bits.
8728         (Output_reloc<SHT_RELA>::Output_reloc): Add is_symbolless parameter.
8729         (Output_reloc<SHT_RELA>::is_symbolless): New.
8730         (Output_data_reloc::add_global): Handle is_symbolless.
8731         (Output_data_reloc::add_global_relative): Likewise.
8732         (Output_data_reloc::add_local): Likewise.
8733         (Output_data_reloc::add_local_relative): Likewise.
8734         (Output_data_reloc::add_symbolless_global_addend): New.
8735         (Output_data_reloc::add_symbolless_local_addend): New.
8736         * output.cc (Output_reloc<SHT_REL>::Output_reloc): Handle
8737         is_symbolless.
8738         (Output_reloc::set_needs_dynsym_index): Test ->is_symbolless_
8739         instead of ->is_relative_
8740         (Output_reloc::write): Likewise.
8741         (Output_reloc::get_symbol_index): Return 0 when ->is_symbolless_
8742         (Output_reloc::write_rel): Simplify.
8743
8744         * sparc.cc (Target_sparc::Scan::local): Use
8745         ->add_symbolless_local_addend as needed.
8746         (Target_sparc::Scan::global): Use ->add_symbolless_global_addend as
8747         needed.  Also, emit appropriate unaligned vs. aligned dynamic reloc
8748         based upon relocation offset.
8749
8750 2010-02-11  Doug Kwan  <dougkwan@google.com>
8751
8752         * arm.cc (Target_arm::Scan::local): Fix bugs in relocation handling.
8753         (Target_arm::Scan::global): Ditto.  Also remove a comment before the
8754         beginning of function.
8755         (Target_arm::Relocate::relocate): Remove error messages for MOVW_ABS
8756         and MOVT_ABS relocations.  Those are non issued in scanning.  Fix
8757         parameter is_32bit in calls to should_apply_static_reloc.
8758         * testsuite/Makefile.am (check_SCRIPTS): Add arm_abs_global.sh.
8759         (check_DATA): Add arm_abs_global.stdout.
8760         (arm_abs_lib.o, libarm_abs.so, arm_abs_global.o, arm_abs_global,
8761         arm_abs_global.stdout): New rules.
8762         (MOSTLLYCLEANFILES): Add arm_abs_global
8763         * Makefile.in: Regenerate.
8764         * testsuite/arm_abs_global.s: New file.
8765         * testsuite/arm_abs_global.sh: Ditto.
8766         * testsuite/arm_abs_lib.s: Ditto.
8767
8768 2010-02-11  Ian Lance Taylor  <iant@google.com>
8769
8770         * gold.cc (queue_middle_gc_tasks): Use a separate blocker for each
8771         Read_relocs task.
8772         (queue_middle_tasks): Likewise, and also for Scan_relocs.  Run
8773         Allocate_commons_task first.
8774         * reloc.cc (Read_relocs::run): Pass next_blocker_ down to next
8775         task, rather than symtab_lock_.
8776         (Gc_process_relocs::~Gc_process_relocs): New function.
8777         (Gc_process_relocs::is_runnable): Check this_blocker_.
8778         (Gc_process_relocs::locks): Use next_blocker_ rather than
8779         blocker_.
8780         (Scan_relocs::~Scan_relocs): New function.
8781         (Scan_relocs::is_runnable): Check this_blocker_ rather than
8782         symtab_lock_.
8783         (Scan_relocs::locks): Drop symtab_lock_ and blocker_.  Add
8784         next_blocker_.
8785         * reloc.h (class Read_relocs): Drop symtab_lock_ and blocker_
8786         fields.  Add this_blocker_ and next_blocker_ fields.  Adjust
8787         constructor accordingly.
8788         (class Gc_process_relocs): Likewise.
8789         (class Scan_relocs): Likewise.
8790         * common.h (class Allocate_commons_task): Remove symtab_lock_
8791         field, and corresponding constructor parameter.
8792         * common.cc (Allocate_commons_tasK::is_runnable): Remove use of
8793         symtab_lock_.
8794         (Allocate_commons_task::locks): Likewise.
8795
8796 2010-02-11  Ian Lance Taylor  <iant@google.com>
8797
8798         * gold-threads.h (class Once): Define.
8799         (class Initialize_lock): Rewrite as child of Once.
8800         * gold-threads.cc (class Once_initialize): Define.
8801         (once_pointer_control): New static variable.
8802         (once_pointer, once_arg): New static variables.
8803         (c_run_once): New static function.
8804         (Once::Once, Once::run_once, Once::internal_run): New functions.
8805         (class Initialize_lock_once): Remove.
8806         (initialize_lock_control): Remove.
8807         (initialize_lock_pointer): Remove.
8808         (initialize_lock_once): Remove.
8809         (Initialize_lock::Initialize_lock): Move to gold-threads.h.
8810         (Initialize_lock::initialize): Rewrite.
8811         (Initialize_lock::do_run_once): New function.
8812         * archive.cc (Archive::interpret_header): Only clear name if it is
8813         not already empty.
8814         * fileread.cc: Include "gold-threads.h"
8815         (file_counts_lock): New static variable.
8816         (file_counts_initialize_lock): Likewise.
8817         (File_read::release): Only increment counts when using --stats.
8818         Use a lock around the increment.
8819         * parameters.cc (class Set_parameters_target_once): Define.
8820         (set_parameters_target_once): New static variable.
8821         (Parameters::Parameters): Move here from parameters.h.
8822         (Parameters::set_target): Rewrite.
8823         (Parameters::set_target_once): New function.
8824         (Parameters::clear_target): Move here and rewrite.
8825         * parameters.h (class Parameters): Update declarations.  Add
8826         set_parameters_target_once_ field.
8827         (Parameters::Parameters): Move to parameters.cc.
8828         (Parameters::clear_target): Likewise.
8829         * readsyms.cc (Read_symbols::do_group): Create a Start_group
8830         task.
8831         (Start_group::~Start_group): New function.
8832         (Start_group::is_runnable): New function.
8833         (Start_group::locks, Start_group::run): New functions.
8834         (Finish_group::run): Change saw_undefined to size_t.
8835         * readsyms.h (class Start_group): Define.
8836         (class Finish_group): Change saw_undefined_ field to size_t.
8837         (Finish_group::Finish_group): Remove saw_undefined and
8838         this_blocker parameters.  Change all callers.
8839         (Finish_group::set_saw_undefined): New function.
8840         (Finish_group::set_blocker): New function.
8841         * symtab.h (class Symbol_table): Change saw_undefined to return
8842         size_t.  Change saw_undefined_ field to size_t.
8843         * target-select.cc (Set_target_once::do_run_once): New function.
8844         (Target_selector::Target_selector): Initialize set_target_once_
8845         field.  Don't initialize lock_ and initialize_lock_ fields.
8846         (Target_selector::instantiate_target): Rewrite.
8847         (Target_selector::set_target): New function.
8848         * target-select.h (class Set_target_once): Define.
8849         (class Target_selector): Update declarations.  Make
8850         Set_target_once a friend.  Remove lock_ and initialize_lock_
8851         fields.  Add set_target_once_ field.
8852
8853 2010-02-10  Ian Lance Taylor  <iant@google.com>
8854
8855         * dirsearch.cc (Dirsearch::initialize): Add all blockers before
8856         queueing any tasks.
8857         * gold.cc (queue_middle_gc_tasks): Likewise.  Fix final blocker.
8858         (queue_middle_tasks): Add all blockers before queueing any tasks.
8859         (queue_final_tasks): Likewise.
8860         * token.h (Task_token::add_blockers): New function.
8861         * object.h (Input_objects::number_of_relobjs): New function.
8862
8863 2010-02-10  Ian Lance Taylor  <iant@google.com>
8864
8865         * i386.cc (Relocate::relocate_tls): A local symbol is final if not
8866         shared, not if not position independent.
8867         * x86_64.cc (Relocate::relocate_tls): Likewise.
8868         * testsuite/Makefile.am (check_PROGRAMS): Add tls_pie_pic_test.
8869         (tls_pie_pic_test): New target.
8870         * testsuite/Makefile.in: Rebuild.
8871
8872         * testsuite/Makefile.am (check_PROGRAMS): Add tls_pie_test.
8873         (tls_test_main_pie.o, tls_test_pie.o): New targets.
8874         (tls_test_file2_pie.o, tls_test_c_pie.o, tls_pie_test): Likewise.
8875         * testsuite/Makefile.in: Rebuild.
8876
8877 2010-02-09  David S. Miller  <davem@davemloft.net>
8878
8879         * sparc.cc (Target_sparc::Scan::local): Do not emit relocs other than
8880         R_SPARC_RELATIVE using ->add_local_relative().
8881         (Target_sparc::Scan::global): Likewise for ->add_global_relative().
8882
8883         * output.h (Output_data_dynamic::add_section_size): New method
8884         that takes two Output_data objects.
8885         (Output_data_dynamic::Dynamic_entry): Create storage for secondary
8886         entry param.  Handle it in initializers.
8887         * output.cc (Output_data_dynamic::Dynamic_entry::write): For
8888         DYNAMIC_SECTION_SIZE, add in second object size if non-NULL.
8889         * layout.h (Layout::add_target_dynamic_tags): Add dynrel_includes_plt
8890         arg.
8891         * layout.cc (Layout::add_target_dynamic_tags): If dynrel_includes_plt,
8892         and .rela.plt exists, set DT_REL{,A}SZ to sum of .rela.dyn and .rela.plt
8893         * arm.cc (Target_arm::do_finalize_sections): Update to pass false
8894         for dynrel_includes_plt.
8895         * i386.cc (Target_i386::do_finalize_sections): Likewise.
8896         * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
8897         * sparc.cc (Target_sparc::make_plt_entry): Force .rela.dyn to be output
8898         before .rela.plt
8899         (Target_sparc::do_finalize_sections): Update to pass true for
8900         dynrel_includes_plt.
8901         * powerpc.cc (Target_powerpc::make_plt_entry): Force .rela.dyn to be
8902         output before .rela.plt
8903         (Target_powerpc::do_finalize_sections): Update to pass true for
8904         dynrel_includes_plt when 32-bit.
8905
8906 2010-02-08  Doug Kwan  <dougkwan@google.com>
8907
8908         * arm.cc (Arm_relobj::simple_input_section_output_address): New
8909         method.
8910         (Arm_relobj::section_needs_cortex_a8_stub_scanning,
8911         Arm_relobj::scan_section_for_cortex_a8_stubs,
8912         Arm_relobj::do_relocation_section): Instead of calling
8913         Output_section::output_address, use faster
8914         Arm_relobj::simple_input_section_output_address.
8915
8916 2010-02-08  David S. Miller  <davem@davemloft.net>
8917
8918         * sparc.cc (Target_sparc::Relocate::relocate): If relocation offset is
8919         unaligned for R_SPARC_16, R_SPARC_32, or R_SPARC_64, use the unaligned
8920         relocation helper function.
8921
8922         * sparc.cc (Target_sparc::Scan::local): Handle R_SPARC_GOTDATA_OP*
8923         just like R_SPARC_GOT{10,13,22}.
8924         (Target_sparc::Scan::local): Likewise.
8925         (Target_sparc::Relocate:relocate): Likewise.
8926
8927 2010-02-06  Ian Lance Taylor  <iant@google.com>
8928
8929         * configure.ac: Rewrite targetobjs duplicate removal code to use
8930         only shell constructs.
8931         * configure: Rebuild.
8932
8933 2010-02-05  Doug Kwan  <dougkwan@google.com>
8934
8935         PR 11247
8936         * arm.cc (Arm_relobj::section_is_scannable): New method.
8937         (Arm_relobj::section_needs_reloc_stub_scanning): Use it.
8938         (Arm_relobj::section_needs_cortex_a8_stub_scanning): Same.
8939
8940 2010-02-04  Doug Kwan  <dougkwan@google.com>
8941
8942         PR 11247
8943         * arm-reloc-property.cc (cstdio): Include.
8944         * configure.ac (targetobjs): Remove duplicates.
8945         * configure: Regenerate.
8946         * resolve.cc (Symbol_table::resolve): Explicit instantiate both
8947         big and little endian version for a given address size.
8948
8949 2010-02-03  Doug Kwan  <dougkwan@google.com>
8950
8951         * arm-reloc-property.cc
8952         (Arm_reloc_property_table::reloc_name_in_error_message): New method
8953         definition.
8954         * arm-reloc-property.h
8955         (Arm_reloc_property_table::get_implemented_static_reloc_property):
8956         New method definition.
8957         (Arm_reloc_property_table::reloc_name_in_error_message): New method
8958         declaration.
8959         * arm-reloc.def (THM_MOVT_ABS, THM_MOVT_PREL, THM_MOVT_BREL): Change
8960         overflow to N.
8961         (GOT_PREL): Change implemented to Y.
8962         * arm.cc (Target_arm::reloc_uses_thumb_bit): Remove method.
8963         (Target_arm::Relocate::reloc_needs_sym_origin): Remove method.
8964         (Arm_relocate_functions::movw_abs_nc): Remove method.
8965         (Arm_relocate_functions::movt_abs): Ditto.
8966         (Arm_relocate_functions::thm_movw_abs_nc): Ditto.
8967         (Arm_relocate_functions::thm_movt_abs): Ditto.
8968         (Arm_relocate_functions::movw_rel_nc): Ditto.
8969         (Arm_relocate_functions::movw_rel): Ditto.
8970         (Arm_relocate_functions::movt_rel): Ditto.
8971         (Arm_relocate_functions:thm_movw_rel_nc): Ditto.
8972         (Arm_relocate_functions:thm_movw_rel): Ditto.
8973         (Arm_relocate_functions:thm_movt_rel): Ditto.
8974         (Arm_relocate_functions::movw, Arm_relocate_functions::movt,
8975         (Arm_relocate_functions::thm_movw, Arm_relocate_functions::thm_movt):
8976         New method definitions.
8977         (Arm_relocation_functions::arm_grp_alu): Add assertion for group index.
8978         (Arm_relocation_functions::arm_grp_ldr): Ditto.
8979         (Arm_relocation_functions::arm_grp_ldrs): Ditto.
8980         (Arm_relocation_functions::arm_grp_ldc): Ditto.
8981         (Target_arm::Relocate::relocate): Check for non-static or
8982         unimplemented relocation code and exit early.  Change calls to
8983         Target_arm::reloc_uses_thumb_bit and
8984         Target_arm::Reloc::reloc_needs_sym_origin to use relocation property
8985         instead.  Refactor code to handle similar relocations to increase
8986         code sharing.  Remove check for unsupported relocation code in switch
8987         statement.
8988         (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Use
8989         relocation property table to find out size.  Change error message to
8990         print out the name of a relocation code instead of the numeric value.
8991         (Target_arm::scan_reloc_for_stub): Use relocation property table
8992         instead of calling Target_arm::reloc_uses_thumb_bit().
8993
8994 2010-02-02  Doug Kwan  <dougkwan@google.com>
8995
8996         * arm.cc (Target_arm::relocate_section): Do view adjustment for all
8997         types of relaxed input section.
8998
8999 2010-02-02  Doug Kwan  <dougkwan@google.com>
9000
9001         * Makefile.am (HFILES): Add arm-reloc-property.h.
9002         (DEFFILES): New.
9003         (TARGETSOURCES): Add arm-reloc-property.cc
9004         (ALL_TARGETOBJS): Add arm-reloc-property.$(OBJEXT)
9005         (libgold_a_SOURCES): $(DEFFILES)
9006         * Makefile.in: Regenerate.
9007         * arm-reloc-property.cc: New file.
9008         * arm-reloc-property.h: New file.
9009         * arm-reloc.def: New file.
9010         * arm.cc: Update comments.
9011         (arm-reloc-property.h): New included header.
9012         (arm_reloc_property_table): New global variable.
9013         (Target_arm::do_select_as_default_target): New method definition.
9014         * configure.tgt (armeb*-*-*,armbe*-*-*,arm*-*-*): Add
9015         arm-reloc-property to targ_extra_obj.
9016         * parameters.cc (set_parameters_target): Call
9017         Target::select_as_default_target().
9018         * target.h (Target::select_as_default_target): New method definition.
9019         (Target::do_select_as_default_target): Same.
9020
9021 2010-02-01  Doug Kwan  <dougkwan@google.com>
9022
9023         * arm.cc (Arm_exidx_fixup::Arm_exidx_fixup): Initialize
9024         first_output_text_section_.
9025         (Arm_exidx_fixup::first_output_text_section): New method definition.
9026         (Arm_exidx_fixup::first_output_text_section_): New data member.
9027         (Arm_exidx_fixup::process_exidx_section): Record the first text
9028         output section seen.
9029         (Arm_output_section::fix_exidx_coverage): Set correct linked section
9030         and entsize in output section header.
9031
9032 2010-01-29  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
9033
9034         * gold/arm.cc: Added support for the ARM relocations: R_ARM_THM_PC8,
9035         R_ARM_THM_PC12, R_ARM_THM_ALU_PREL_11_0.
9036         (Arm_relocate_functions::thm_alu11): New Method.
9037         (Arm_relocate_functions::thm_pc8): New Method.
9038         (Arm_relocate_functions::thm_pc12): New Method.
9039         (Target_arm::Scan::local): Handle the relocations.
9040         (Target_arm::Scan::global): Likewise.
9041         (Target_arm::Relocate::relocate): Likewise.
9042         (Target_arm:Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
9043
9044 2010-01-29  Doug Kwan  <dougkwan@google.com>
9045
9046         * arm.cc (Target_arm::Scan::global): General PLTs for the same set
9047         of relocation types as ld.
9048
9049 2010-01-29  Doug Kwan  <dougkwan@google.com>
9050
9051         * arm.cc (Arm_relocate_functions::arm_branch_common) Change visibility
9052         to public.
9053         (Arm_relocate_functions::thumb_branch_common): Ditto.
9054         (Arm_relocate_functions::thm_call, Arm_relocate_functions::thm_jump24,
9055         Arm_relocate_functions::thm_xpc22, Arm_relocate_functions::plt32,
9056         Arm_relocate_functions::xpc25, Arm_relocate_functions::call,
9057         Arm_relocate_functions::jump24): Remove.
9058         (Target_arm::Relocate::relocate): Adjust code to call
9059         Arm_relocation_functions::arm_branch_common and
9060         Arm_relocation_functions::thumb_branch_common instead of their removed
9061         wrappers.  Merge switch-cases together to reduce source code size.
9062
9063 2010-01-29  Doug Kwan  <dougkwan@google.com>
9064
9065         * arm.cc (Arm_relobj::Arm_relobj): Initialize new data member
9066         output_local_symbol_count_needs_update_.
9067         (Arm_relobj::output_local_symbol_count_needs_update,
9068          Arm_relobj::set_output_local_symbol_count_needs_update,
9069          Arm_relobj::update_output_local_symbol_count): New methods.
9070         (Arm_relobj::output_local_symbol_count_needs_update_): New data
9071         member.
9072         (Arm_exidx_cantunwind::do_fixed_endian_write): Write address
9073         of pointed function as in a R_ARM_PREL31 relocation.
9074         (Arm_output_section<big_endian>::fix_exidx_coverage): Mark objects
9075         for output local symbol count updating.
9076         (Target_arm::do_relax): Update output local symbol counts in objects
9077         if necessary.
9078         * object.h (Sized_relobj::set_output_local_symbol_count): New method.
9079
9080 2010-01-29  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
9081
9082         * arm.cc: Added support for the ARM relocations:
9083         R_ARM_MOVW_BREL_NC, R_ARM_MOVT_BREL, R_ARM_MOVW_BREL,
9084         R_ARM_THM_MOVW_BREL_NC, R_ARM_THM_MOVT_BREL, R_ARM_THM_MOVW_BREL.
9085         (Arm_relocate_functions::movw_rel_nc): Renamed (was
9086         movw_prel_nc).
9087         (Arm_relocate_functions::movw_rel): New method.
9088         (Arm_relocate_functions::movt_rel): Renamed (was movt_prel).
9089         (Arm_relocate_functions::thm_movw_rel_nc): Renamed (was
9090         thm_movw_prel_nc).
9091         (Arm_relocate_functions::thm_movw_rel): New method.
9092         (Arm_relocate_functions::thm_movt_rel): Renamed (was
9093         thm_movt_prel).
9094         (Target_arm::Scan::local): Handle MOVW_BREL/MOVT_BREL
9095         relocations.
9096         (Target_arm::Scan::global): Likewise.
9097         (Target_arm::Relocate::relocate): Likewise.
9098         (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
9099         Likewise.
9100
9101 2010-01-27  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
9102
9103         * arm.cc: Added support for ARM group relocations.
9104         (Target_arm::reloc_needs_sym_origin): New method.
9105         (Arm_relocate_functions::calc_grp_kn): New method.
9106         (Arm_relocate_functions::calc_grp_residual): New method.
9107         (Arm_relocate_functions::calc_grp_gn): New method.
9108         (Arm_relocate_functions::arm_grp_alu): New Method.
9109         (Arm_relocate_functions::arm_grp_ldr): New Method.
9110         (Arm_relocate_functions::arm_grp_ldrs): New Method.
9111         (Arm_relocate_functions::arm_grp_ldc): New Method.
9112         (Target_arm::Scan::local): Handle the ARM group relocations.
9113         (Target_arm::Scan::global): Likewise.
9114         (Target_arm::Relocate::relocate): Likewise.
9115         (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
9116         Likewise.
9117
9118 2010-01-26  Doug Kwan  <dougkwan@google.com>
9119
9120         * arm.cc (set): Include.
9121         (class Arm_exidx_fixup): Change type of last_input_section_ to const
9122         pointer type.
9123         (Arm_output_section::Text_section_list): New type.
9124         (Arm_output_section::append_text_sections_to_list): New method.
9125         (Arm_output_section::fix_exidx_coverage): Ditto.
9126         (Arm_relobj::Arm_relobj): Initialize exidx_section_map_.
9127         (Arm_relobj::convert_input_section_to_relaxed_section): Use
9128         Relobj::set_section_offset() instead of
9129         Sized_relobj::invalidate_section_offset().
9130         (Arm_relobj::section_needs_reloc_stub_scanning): Add an extra
9131         parameter for section headers. Ignore relocation sections for
9132         unallocated sections and EXIDX sections.
9133         (Target_arm::fix_exidx_coverage): New method.
9134         (Target_arm::output_section_address_less_than): New type.
9135         (Arm_exidx_fixup::add_exidx_cantunwind_as_needed): Use index of the
9136         linked text section instead of the EXIDX section.
9137         (Arm_output_section::create_stub_group): Add an assertion to check
9138         that this is not an EXIDX output section.
9139         (Arm_output_section::append_text_sections_to_list): New method.
9140         (Arm_output_section::fix_exidx_coverage): Ditto.
9141         (Arm_relobj::scan_sections_for_stubs): Adjust call to
9142         Arm_relobj::section_needs_reloc_stub_scanning.
9143         (Target_arm::do_relax): Fix EXIDX output section coverage in the
9144         first pass.
9145         (Target_arm::fix_exidx_coverage): New method.
9146         * object.h (Relobj::set_output_section): New method.
9147         (Sized_relobj::invalidate_section_offset): Remove method.
9148         (Sized_relobj::do_invalidate_section_offset): Remove method.
9149         (Sized_relobj::do_set_section_offset): Handle offset value -1.
9150
9151 2010-01-25  Doug Kwan  <dougkwan@google.com>
9152
9153         * arm.cc (Arm_exidx_merged_section::do_output_offset):
9154         Fix warning due to signed and unsigned comparison on a 32-bit host.
9155
9156 2010-01-22  Doug Kwan  <dougkwan@google.com>
9157
9158         * arm.cc (Target_arm::do_relax): Record an output section for section
9159         offset adjustment it contains any stub table that has changed.
9160         * layout.cc (Layout::clean_up_after_relaxation): Adjust section
9161         offsets in an output section if necessary.
9162         * output.cc (Output_section::Output_section): Initialize
9163         section_offsets_need_adjustments_.
9164         (Output_section::add_input_section_for_script): Renamed to
9165         Output_section::add_simple_input_section.
9166         (Output_section::save_states): Add a comment.
9167         (Output_section::discard_states): New method defintion.
9168         (Output_section::adjust_section_offsets): Same.
9169         * output.h (Output_section::add_input_section_for_script): Renamed to
9170         Output_section::add_simple_input_section.
9171         (Output_section::discard_states): New method declaration.
9172         (Output_section::adjust_section_offsets): Same.
9173         (Output_section::section_offsets_need_adjustment,
9174         Output_section::set_section_offsets_need_adjustment): New method
9175         definitions.
9176         (Output_section::section_offsets_need_adjustment_): New data member.
9177         * script-sections.cc
9178         (Output_section_element_input::set_section_address): Adjust code for
9179         renaming of Output_section::add_input_section_for_script.
9180         (Orphan_output_section::set_section_address): Same.
9181
9182 2010-01-22  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
9183
9184         * gold/arm.cc (Target_arm): Updated fix_v4bx method and usage of
9185         Fix_v4bx enum values .
9186         * gold/options.h (General_options): New option definitions.
9187         (General_options::fix_v4bx): New method.
9188         (General_options::Fix_v4bx): New enum.
9189         * gold/options.cc (General_options::parse_fix_v4bx): New method.
9190         (General_options::parse_fix_v4bx_interworking): New method.
9191
9192 2010-01-22  Doug Kwan  <dougkwan@google.com>
9193
9194         * arm.cc (Arm_exidx_fixup): New class.
9195
9196 2010-01-21  Doug Kwan  <dougkwan@google.com>
9197
9198         * arm.cc (Arm_exidx_cantunwind, Arm_exidx_merged_section): New
9199         classes.
9200         (Arm_exidx_section_offset_map): New type.
9201
9202 2010-01-21  Doug Kwan  <dougkwan@google.com>
9203
9204         * arm.cc (Arm_exidx_input_section): New class.
9205         (Arm_relobj::exidx_input_section_by_link,
9206         Arm_relobj::exidx_input_section_by_shndx,
9207         Arm_relobj::make_exidx_input_section): New methods.
9208         (read_arm_attributes_section): Remove.
9209         (Arm_relobj::do_read_symbols): Look for ARM.exidx sections and record
9210         information about them.
9211         (Arm_dynobj::do_read_symbols): Move code in read_arm_attributes_section
9212         to here.
9213
9214 2010-01-20  Doug Kwan  <dougkwan@google.com>
9215
9216         * arm.cc (Target_arm::Arm_input_section_map): Change key type from
9217         Input_section_specifier to Section_id.
9218         (Target_arm::new_arm_input_section: Adjust code for change of key
9219         type.
9220         (Target_arm::find_arm_input_section): Ditto.
9221         * gc.h (object.h): Include for Section_id nand Section_id_hash.
9222         (Section_id): Remove.
9223         (Garbage_collection::Section_id_hash): Remove.
9224         * icf.h (object.h): Include for Section_id nand Section_id_hash.
9225         (Section_id): Remove.
9226         (Icf::Section_id_hash): Remove.
9227         * object.h (Section_id, Const_section_id, Section_id_hash,
9228         Const_section_id_hash): New type definitions.
9229         * output.cc (Output_section::add_relaxed_input_section): Change to
9230         use Const_section_id instead of Input_section_specifier as key type.
9231         (Output_section::add_merge_input_section): Ditto.
9232         (Output_section::build_relaxation_map): Change to use Section_id
9233         instead of Input_section_specifier as key type.
9234         (Output_section::convert_input_sections_in_list_to_relaxed_sections):
9235         Ditto.
9236         (Output_section::convert_input_sections_to_relaxed_sections): Change
9237         to use Const_section_id instead of Input_section_specifier as key type.
9238         (Output_section::find_merge_section): Ditto.
9239         (Output_section::find_relaxed_input_section): Ditto.
9240         * output.h (Input_section_specifier): Remove class.
9241         (Output_section::Output_section_data_by_input_section_map): Change
9242         key type to Const_section_id.
9243         (Output_section::Output_relaxed_input_section_by_input_section_map):
9244         Ditto.
9245         (Output_section::Relaxation_map): Change key type to Section_id.
9246
9247 2010-01-20  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
9248
9249         * gold/arm.cc: Added support for R_ARM_V4BX relocation
9250         (class Arm_v4bx_stub): New class.
9251         (DEF_STUBS): Updated definition to support v4_veneer_bx.
9252         (Stub_factory::make_arm_v4bx_stub): New method.
9253         (Stub_factory::elf32_arm_stub_v4_veneer_bx): New veneer template.
9254         (Stub_table::empty): Handle v4bx stubs.
9255         (Stub_table::add_arm_v4bx_stub): New method.
9256         (Stub_table::find_arm_v4bx_stub): New method.
9257         (Arm_relocate_functions::v4bx): New method.
9258         (Target_arm::fix_v4bx): New method.
9259         (Target_arm::Target_arm): Handle R_ARM_V4BX.
9260         (Stub_table::relocate_stubs): Likewise.
9261         (Stub_table::do_write): Likewise.
9262         (Stub_table::update_data_size_and_addralign): Likewise.
9263         (Stub_table::finalize_stubs):  Likewise.
9264         (Target_arm::Scan::local): Likewise.
9265         (Target_arm::Scan::global): Likewise.
9266         (Target_arm::do_finalize_sections): Likewise.
9267         (Target_arm::Relocate::relocate): Likewise.
9268         (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
9269         Likewise.
9270         (Target_arm::scan_reloc_for_stub): Likewise.
9271         (Target_arm::scan_reloc_section_for_stubs): Likewise.
9272
9273 2010-01-19  Ian Lance Taylor  <iant@google.com>
9274
9275         * output.cc (Output_section_headers::do_sized_write): Write large
9276         segment count to sh_info field.
9277         (Output_file_header::do_sized_write): For large segment count,
9278         write PN_XNUM to e_phnum field.
9279
9280 2010-01-15  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
9281
9282         * arm.cc (Arm_relocate_functions::thm_jump6): New function.
9283         (Arm_relocate_functions::thm_jump8): New function.
9284         (Arm_relocate_functions::thm_jump11): New function.
9285         (Target_arm::Scan::local): Handle R_ARM_THM_JUMP6, R_ARM_THM_JUMP8,
9286         R_ARM_THM_JUMP11.
9287         (Target_arm::Scan::global): Likewise.
9288         (Target_arm::Relocate::relocate): Likewise.
9289         (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
9290         Likewise.
9291
9292 2010-01-14  Doug Kwan  <dougkwan@google.com>
9293
9294         * arm.cc (map, utility): Include headers.
9295         (Target_arm::apply_cortex_a8_workaround): New method.
9296         (Arm_relobj::do_relocate_sections): Apply any Cortex-A8 workaround.
9297         (Target_arm::Scan::local): Handle R_ARM_THM_JUMP24, R_ARM_THM_JUMP19.
9298         (Target_arm::Scan::global): R_ARM_THM_JUMP19.
9299         (Target_arm::do_finalize_sections): Set fix_cortex_a8_ according to
9300         the --[no-]fix-cortex-a8 command line options.
9301         (Target_arm::Relocate::relocate): Handle R_ARM_JUMP19.
9302         (Target_arm::relocate_stub): Use addend in instruction template.
9303         * options.h (DEFINE_bool): Set the user-set flag.
9304         (General_options): Add --[no-]-fix-cortex options.
9305         * output.cc (Output_section::convert_input_sections_to_relaxed_sections)
9306         : Update fast look-up map after conversion.
9307
9308 2010-01-14  Sriraman Tallam  <tmsriram@google.com>
9309
9310         * object.cc (Sized_relobj::do_layout): Change to call layout_gnu_stack
9311         in the first pass of do_layout.
9312
9313 2010-01-13  Doug Kwan  <dougkwan@google.com>
9314
9315         * arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
9316         Arm_relobj::scan_sections_for_stubs): Rearrange code to avoid an
9317         apparent compiler problem of not folding static constant integral
9318         data members of elfcpp::Elf_sizes<32>.
9319
9320 2010-01-13  Doug Kwan  <dougkwan@google.com>
9321
9322         * arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
9323         Arm_relobj::section_needs_cortex_a8_stub_scanning,
9324         Arm_relobj::scan_section_for_cortex_a8_erratum,
9325         Arm_relobj::scan_span_for_cortex_a8_erratum): New methods.
9326         (Arm_relobj::scan_sections_for_stubs): Move code deciding what
9327         sections to scan for relocation stubs into a new method
9328         Arm_relobj::section_needs_reloc_stub_scanning.  Handle both
9329         relocation and Cortex-A8 stub scanning.
9330         (Target_arm::do_relax): Force stubs to be after stubbed sections
9331         if fixing the Cortex-A8 erratum.  Remove all Cortex-A8 stubs at
9332         the beginning of a new relaxation pass.  Update a comment.
9333         (Target_arm::scan_span_for_cortex_a8_erratum): New method definition.
9334
9335 2010-01-12  Ian Lance Taylor  <iant@google.com>
9336
9337         * target-reloc.h (visibility_error): New inline function.
9338         (relocate_section): Call visibility_error.
9339         * testsuite/Makefile.am (check_DATA): Add protected_3.err.
9340         (MOSTLYCLEANFILES): Likewise.
9341         (protected_4_pic.o, protected_3.err): New targets.
9342         * testsuite/protected_4.cc: New file.
9343
9344 2010-01-12  Doug Kwan  <dougkwan@google.com>
9345
9346         * arm.cc (Cortex_a8_reloc): New class.
9347         (Target_arm::Target_arm): Initialize new data members fix_cortex_a8_
9348         and cortex_a8_relocs_info_.
9349         (Target_arm::fix_cortex_a8): New method definition.
9350         (Target_arm::Cortex_a8_relocs_info): New type.
9351         (Target_arm::fix_cortex_a8_, Target_arm::cortex_a8_relocs_info_):
9352         New data member declarations.
9353         (Target_arm::scan_reloc_for_stub): Record information about
9354         relocations for THUMB branches that might be exempted from the
9355         Cortex-A8 workaround.
9356         (Target_arm::do_relax): Clear all Cortex-A8 relocation information
9357         at the beginning of a relaxation pass.
9358
9359 2010-01-12  Doug Kwan  <dougkwan@google.com>
9360
9361         * arm.cc (Arm_relobj::mapping_symbols_info_): New data member.
9362         (Arm_relobj::Mapping_symbol_position,
9363          Arm_reloj::Mapping_symbol_position_less,
9364          Arm_relobj::Mapping_symbols_info): New types.
9365         (Target_arm::is_mapping_symbol_name): New method definition.
9366         (Arm_relobj::do_count_local_symbols): Save information about mapping
9367         symbols.
9368
9369 2010-01-11  Doug Kwan  <dougkwan@google.com>
9370
9371         * arm.cc (Arm_relocate_functions::thumb32_branch_offset,
9372         Arm_relocate_functions::thumb32_branch_upper,
9373         Arm_relocate_functions::thumb32_branch_lower,
9374         Arm_relocate_functions::thumb32_cond_branch_offset,
9375         Arm_relocate_functions::thumb32_cond_branch_upper,
9376         Arm_relocate_functions::thumb32_cond_branch_lower,
9377         Arm_relocate_functions::thm_jump19): New methods to handle THUMB
9378         branch offset encoding.
9379         (Arm_relocate_functions::thumb_branch_common): Use new branch
9380         offset encoding methods to avoid code duplication.
9381         (Stub_template::Stub_template) Handle THUMB16_SPECIAL_TYPE.
9382         (Stub_addend_reader::operator()): Use new branch encoding method
9383         to avoid code duplication.
9384
9385 2010-01-11  Doug Kwan  <dougkwan@google.com>
9386
9387         * arm.cc (Arm_relobj::do_gc_process_relocs): New method.
9388         (Target_arm::do_finalize_sections): Define special EXIDX section
9389         symbols only if referenced.
9390         * gc.h (Garbage_collection::add_reference): New method.
9391         (gc_process_relocs): Use Garbage_collection::add_reference to avoid
9392         code duplication.
9393
9394 2010-01-11  Ian Lance Taylor  <iant@google.com>
9395
9396         * script.cc (Version_script_info::build_expression_list_lookup):
9397         Change complaing about duplicate wildcard match from error to
9398         warning.
9399
9400         * script.cc (class Lazy_demangler): Recreate--revert part of patch
9401         of 2009-12-30.
9402         (Version_script_info::Version_script_info): Initialize globs_,
9403         default_version_, default_is_global_, and exact_.  Don't
9404         initialize globals_ or locals_.
9405         (Version_script_info::build_lookup_tables): Build local symbols
9406         first.
9407         (Version_script_info::unquote): New function.
9408         (Version_script_info::add_exact_match): New function.
9409         (Version_script_info::build_expression_list_lookup): Remove lookup
9410         parameter.  Add is_global parameter.  Change all callers.  Handle
9411         wildcard pattern specially.  Unquote pattern.  Call
9412         add_exact_match.
9413         (Version_script_info::get_name_to_match): New function.
9414         (Version_script_info::get_symbol_version): New function.
9415         (Version_script_info::get_symbol_version_helper): Remove.
9416         (Version_script_info::check_unmatched_names): Call unquote.
9417         * script.h (class Version_script_info): Change get_symbol_version
9418         to be non-inline and add is_global parameter; change all callers.
9419         Rewrite symbol_is_local.  Update declarations.  Define struct
9420         Version_tree_match, Exact, Globs.  Don't define struct Lookup.
9421         Remove globals_ and locals_ members.  Add exact_, globs_,
9422         default_version_, is_global_.
9423         (Version_script_info::Glob): Remove pattern, add expression and
9424         is_global.  Update constructor.  Change all callers.
9425         * dynobj.cc (Versions::finalize): Mark the version symbol as the
9426         default version.
9427         (Versions::symbol_section_contents): If a symbol is undefined, or
9428         defined in a dynamic object, set the version index to
9429         VER_NDX_LOCAL.
9430         * symtab.cc (Symbol_table::add_from_relobj): Don't call
9431         symbol_is_local.
9432         (Symbol_table::add_from_pluginobj): Likewise.
9433         * testsuite/ver_matching_test.sh: blaza1 and blaza go into V2.
9434
9435 2010-01-11  Doug Kwan  <dougkwan@google.com>
9436
9437         * Makefile.am (incremental_dump_DEPENDENCIES): Add libintl dependency.
9438         (incremental_dump_LDADD): Add linking option for libintl.
9439         * Makefile.in: Regenerate.
9440
9441 2010-01-11  H.J. Lu  <hongjiu.lu@intel.com>
9442
9443         PR gold/11144
9444         * testsuite/Makefile.am (dynamic_list.stdout): Use --dyn-syms
9445         instead of -Ds.
9446         * testsuite/Makefile.in: Regenerated.
9447
9448 2010-01-10  Doug Kwan  <dougkwan@google.com>
9449
9450         * options.h (DEFINE_var): Use parentheses around argument varname__
9451         in macro body to avoid any unintended subsequent substitutions.
9452
9453 2010-01-10  Ian Lance Taylor  <iant@google.com>
9454
9455         * resolve.cc (Symbol_table::resolve): Add symbols to list of ODR
9456         candidates before doing symbol resolution.
9457
9458         * resolve.cc (Symbol_table::resolve): Add symbols to the list of
9459         ODR candidates if only one is weak.
9460
9461 2010-01-08  Ian Lance Taylor  <iant@google.com>
9462
9463         * script.cc (Version_script_info::build_expression_list_lookup):
9464         Don't warn about ambiguous version, just record the ambiguity.
9465         (Version_script_info::get_symbol_version_helper): Give error if
9466         version is ambiguous.
9467
9468 2010-01-08  Doug Kwan  <dougkwan@google.com>
9469
9470         * arm.cc (Stub_table::Stub_table): Initalize cortex_a8_stubs_,
9471         prev_data_size_ and prev_addralign_.  Remove initializer for
9472         deleted data member has_been_changed_.
9473         (Stub_table::empty): Look at both reloc_stubs_ and cortex_a8_stubs_
9474         to determine if the table is empty.
9475         (Stub_table::has_been_changed, Stub_table_set_has_been_changed):
9476         Remove.
9477         (Stub_table::add_reloc_stub): Define method in class definition
9478         instead of just declaring it there.
9479         (Stub_table::add_cortex_a8_stub): New method definition.
9480         (Stub_table::update_data_size_and_addralign): Ditto.
9481         (Stub_table::finalize_stubs): Ditto.
9482         (Stub_table::apply_cortex_a8_workaround_to_address_range): Ditto.
9483         (Stub_table::do_addralign_): Return address alignment in the
9484         (Stub_table::do_reset_address_and_file_offset): Define method in
9485         class definition instead of declaring it there.  Set current data
9486         size to be the data size of the previous pass.
9487         (Stub_table::set_final_data_size): Use current data size as the
9488         final data size.
9489         (Stub_table::relocate_stub): Change parameter type of stub from
9490         Reloc_stub pointer to Stub pointer.
9491         (Stub_table::addralign_, Stub_table::has_been_changed_): Remove.
9492         (Stub_table::Cortex_a8_stub_list): New typedef.
9493         (Stub_table::cortex_a8_stubs_, Stub_table::prev_data_size_,
9494          Stub_table::prev_addralign_): New data member.
9495         (Arm_relobj::Arm_relobj): Initialize data member
9496         section_has_cortex_a8_workaround_.
9497         (Arm_relobj::section_has_cortex_a8_workaround,
9498          Arm_relobj::mark_section_for_cortex_a8_workaround): New method
9499          definitions.
9500         (Arm_relobj::section_has_cortex_a8_workaround_): New data member
9501         declarations.
9502         (Target_arm::relocate_stub): Change parameter type of stub from
9503         Reloc_stub pointer to Stub pointer.
9504         (Insn_template::size, Insn_template::alignment): Handle
9505         THUMB16_SPECIAL_TYPE.
9506         (Stub_table::remove_all_cortex_a8_stubs, Stub_table::finalize_stubs,
9507          Stub_table::update_data_size_and_addralign,
9508          Stub_table::apply_cortex_a8_workaround_to_address_range): New method
9509         definitions.
9510         (Stub_table::relocate_stubs): Handle Cortex-A8 stubs.
9511         (Stub_table::do_write): Ditto.
9512         (Target_arm::do_relax): Adjust code for changes in Stub_table.
9513
9514 2010-01-08  Ian Lance Taylor  <iant@google.com>
9515
9516         PR 11108
9517         * symtab.h (class Symbol): Remove fields is_target_special_ and
9518         has_plt_offset_.  Add field is_defined_in_discarded_section_.
9519         (Symbol::is_defined_in_discarded_section): New function.
9520         (Symbol::set_is_defined_in_discarded_section): New function.
9521         (Symbol::has_plt_offset): Rewrite.
9522         (Symbol::set_plt_offset): Verify that new offset is not -1U.
9523         * symtab.cc (Symbol::init_fields): Initialize plt_offset_ to -1U.
9524         Don't initialize is_target_special_ or has_plt_offset_.
9525         Initialize is_defined_in_discarded_section_.
9526         (Symbol_table::add_from_relobj): If appropriate, set
9527         is_defined_in_discarded_section.
9528         * resolve.cc (Symbol::override_base_with_special): Don't test
9529         is_target_special_.  Change has_plt_offset_ to has_plt_offset().
9530         * target-reloc.h (relocate_section): Do special handling for
9531         symbols defined in discarded sections for global symbols as well
9532         as local symbols.
9533
9534 2010-01-08  Ian Lance Taylor  <iant@google.com>
9535
9536         * dynobj.cc (big_endian>::find_dynsym_sections): Set pi to NULL in
9537         the SHT_SYMTAB case.
9538
9539 2010-01-08  Ian Lance Taylor  <iant@google.com>
9540
9541         * object.cc (Sized_relobj::do_layout): Don't get confused if
9542         layout_eh_frame returns NULL.
9543
9544 2010-01-08  Ian Lance Taylor  <iant@google.com>
9545
9546         PR 11084
9547         * dynobj.cc (Sized_dynobj::find_dynsym_sections): If there is no
9548         dynamic symbol table, use the normal symbol table.
9549         (Sized_dynobj::do_read_symbols): Remove assertion about type of
9550         symbol table.
9551
9552 2010-01-08  Ian Lance Taylor  <iant@google.com>
9553
9554         PR 11072
9555         * layout.cc (Layout::include_section): Remove .gnu_debuglink
9556         sections.
9557
9558 2010-01-08  H.J. Lu  <hongjiu.lu@intel.com>
9559
9560         * version.cc (print_version): Change to "Copyright 2010".
9561
9562 2010-01-08  Ian Lance Taylor  <iant@google.com>
9563
9564         PR 10287
9565         PR 11063
9566         * i386.cc (class Target_i386): Change return type of plt_section
9567         to be non-const.
9568         (class Output_data_plt_i386): Add tls_desc_rel_ field.
9569         (Output_data_plt_i386::Output_data_plt_i386): Initialize
9570         tls_desc_rel_ field.
9571         (Output_data_plt_i386::rel_tls_desc): New function.
9572         (Target_i386::rel_tls_desc_section): New function.
9573         (Target_i386::Scan::local): Rewrite R_386_TLS_GOTDESC handling.
9574         (Target_i386::Scan::global): For R_386_TLS_GOTDESC put
9575         R_386_TLS_DESC reloc in rel_tls_desc_section.
9576         * x86_64.cc (class Target_x86_64): Add tlsdesc_reloc_info_ field.
9577         Define struct Tlsdesc_info.
9578         (Target_x86_64::Target_x86_64): Initialize tlsdesc_reloc_info_.
9579         (Target_x86_64::do_reloc_symbol_index): New function.
9580         (Target_x86_64::add_tlsdesc_info): New function.
9581         (class Output_data_plt_x86_64): Add tlsdesc_rel_ field.
9582         (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize
9583         tlsdesc_rel_ field.
9584         (Output_data_plt_x86_64::rela_plt): Rename from rel_plt.  Change
9585         all callers.
9586         (Output_data_plt_x86_64::rela_tlsdesc): New function.
9587         (Target_x86_64::rela_tlsdesc_section): New function.
9588         (Target_x86_64::Scan::local): Rewrite R_X86_64_GOTPC32_TLSDESC
9589         handling.
9590         (Target_x86_64::Scan::global): For R_X86_64_GOTPC32_TLSDESC put
9591         (Target_x86_64::do_reloc_addend): New function.
9592         R_X86_64_TLSDESC reloc in rela_tlsdesc_section.
9593         * output.h (class Output_reloc) [SHT_REL]: Add new constructor
9594         declarations.  Define TARGET_CODE.  Add arg field to u1_ union.
9595         (Output_reloc::type): New function.
9596         (Output_reloc::is_local_section_symbol): Check for TARGET_CODE.
9597         (Output_reloc::is_target_specific): New function.
9598         (Output_reloc::target_arg): New function.
9599         (class Output_reloc) [SHT_RELA]: Add four new constructors for
9600         absolute relocs and target specific relocs.
9601         (class Output_data_reloc) [SHT_REL]: Add add_absolute and
9602         add_target_specific.
9603         (class Output_data_reloc) [SHT_RELA]: Likewise.
9604         * output.cc (Output_reloc::Output_reloc): Add four new versions
9605         for absolute relocs and target specific relocs.
9606         (Output_reloc::set_needs_dynsym_index): Add TARGET_CODE case.
9607         (Output_reloc::get_symbol_index): Likewise.
9608         (Output_reloc::local_section_offset): Check that local_sym_index_
9609         is not TARGET_CODE or 0.
9610         (Output_reloc::symbol_value): Likewise.
9611         (Output_reloc::write) [SHT_RELA]: Call target for target specific
9612         reloc.
9613         * target.h (class Target): Add reloc_symbol_index and reloc_addend
9614         functions.  Add do_reloc_symbol_index and do_reloc_addend virtual
9615         functions.
9616         * layout.cc (add_target_dynamic_tags): Use output section for
9617         DT_PLTRELSZ and DT_JMPREL.
9618
9619 2010-01-07  Ian Lance Taylor  <iant@google.com>
9620
9621         PR 11061
9622         * output.h (class Output_reloc) [SHT_RELA]: Add is_relative
9623         function.
9624         (class Output_data_reloc_generic): Define.
9625         (class Output_data_reloc_base): Change base class to
9626         Output_data_reloc_generic.  Change add() method to call
9627         bump_relative_reloc_count for a relative reloc.  Remove
9628         sort_relocs_ field.
9629         * output.cc (Output_data_reloc_base::do_write): Change sort_reloc_
9630         to sort_relocs().
9631         * layout.cc (Layout::add_target_dynamic_tags): Change dyn_rel to
9632         Output_data_reloc_generic*.  Add DT_RELCOUNT/DT_RELACOUNT tag if
9633         appropriate.
9634         * layout.h (class Layout): Update declaration.
9635
9636 2010-01-07  Ian Lance Taylor  <iant@google.com>
9637
9638         * output.h (class Output_data): Add const version of
9639         output_section and do_output_section.
9640         (class Output_section_data): Add const version of
9641         do_output_section.
9642         (class Output_section): Likewise.
9643         * layout.cc (Layout::add_target_dynamic_tags): New function.
9644         * layout.h (class Layout): Update declarations.
9645         * arm.cc (Target_arm::do_finalize_sections): Use
9646         add_target_dynamic_tags.
9647         * i386.cc (Target_i386::do_finalize_sections): Likewise.
9648         * powerpc.cc (Target_powerpc::do_finalize_sections): Likewise.
9649         * sparc.cc (Target_sparc::do_finalize_sections): Likewise.
9650         * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
9651
9652 2010-01-07  Ian Lance Taylor  <iant@google.com>
9653
9654         PR 11042
9655         * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Mark the dynamic
9656         object as needed.
9657
9658 2010-01-07  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
9659             Ian Lance Taylor  <iant@google.com>
9660
9661         PR 11019
9662         * object.cc: Instantiate Xindex::initialize_symtab_xindex and
9663         Xindex::read_symtab_xindex.
9664
9665 2010-01-07  Doug Kwan  <dougkwan@google.com>
9666
9667         * arm.cc (Insn_template::Type): New enum value THUMB16_SPECIAL_TYPE.
9668         (Insn_template::thumb16_bcond_insn): New method declaration.
9669         (Insn_template): Fix spelling.
9670         (Stub::thumb16_special): New method declaration.
9671         (Stub::do_write): Define virtual method which was previously pure
9672         virtual.
9673         (Stub::do_thumb16_special): New method declaration.
9674         (Stub::do_fixed_endian_write): New template member.
9675         (Reloc_stub::do_write): Remove.
9676         (Reloc_stub::do_fixed_endian_write): Remove.
9677         (Cortex_a8_stub): New class definition.
9678         (Stub_factory::make_cortex_a8_stub): New method definition.
9679         (Stub_factory::Stub_factory): Add missing static storage class
9680         qualifier for elf32_arm_stub_a8_veneer_blx.
9681
9682 2010-01-07  Ian Lance Taylor  <iant@google.com>
9683
9684         PR 10980
9685         * options.h (class General_options): Add --warn-unresolved-symbols
9686         and --error-unresolved-symbols.
9687         * errors.cc (Errors::undefined_symbol): Implement
9688         --warn-unresolved-symbols.
9689
9690         * options.h (class General_options): Add -z text and -z textoff.
9691         * layout.cc (Layout::finish_dynamic_section): Implement -z text.
9692
9693 2010-01-06  Sriraman Tallam  <tmsriram@google.com>
9694
9695         * gc.h (Garbage_collection::Cident_section_map): New typedef.
9696         (Garbage_collection::cident_sections): New function.
9697         (Garbage_collection::add_cident_section): New function.
9698         (Garbage_collection::cident_sections_): New member.
9699         (gc_process_relocs): Add references to sections whose names are C
9700         identifiers.
9701         * gold.h (cident_section_start_prefix): New constant.
9702         (cident_section_stop_prefix): New constant.
9703         (is_cident): New function.
9704         * layout.cc (Layout::define_section_symbols): Replace string constants
9705         with the newly defined constants.
9706         * object.cc (Sized_relobj::do_layout): Track sections whose names are
9707         C identifiers.
9708         * testsuite/Makefile.am: Add gc_orphan_section_test.
9709         * testsuite/Makefile.in: Regenerate.
9710         * testsuite/gc_orphan_section_test.cc: New file.
9711         * testsuite/gc_orphan_section_test.sh: New file.
9712
9713 2010-01-06  Ian Lance Taylor  <iant@google.com>
9714
9715         PR 10980
9716         * options.h (class General_options): Add --warn-shared-textrel.
9717         * layout.cc (Layout::finish_dynamic_section): Implement
9718         --warn-shared-textrel.
9719
9720         PR 10980
9721         * options.h (class General_options): Add --warn-multiple-gp.
9722
9723 2010-01-06  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
9724
9725         * Makefile.am (incremental_dump_DEPENDENCIES): Remove
9726         $(THREADSLIB) and $(LIBDL).
9727         * Makefile.in: Rebuild.
9728
9729 2010-01-06  Ian Lance Taylor  <iant@google.com>
9730
9731         PR 10980
9732         * options.cc (General_options::parse_section_start): New function.
9733         (General_options::section_start): New function.
9734         (General_options::General_options): Initialize all members.
9735         * options.h: Include <map>
9736         (class General_options): Add --section-start.  Add section_starts_
9737         member.
9738         * layout.cc (Layout::attach_allocated_section_to_segment): If
9739         --section-start was used, set the address of the segment.  Remove
9740         local sort_sections.
9741         (Layout::relaxation_loop_body): If the address of the load segment
9742         has been set by --section-start, don't use it.
9743         * output.h (Output_segment::update_flags_for_output_section): New
9744         function.
9745         * output.cc (Output_segment::add_output_section): Call
9746         update_flags_for_output_section.
9747
9748 2010-01-05  Ian Lance Taylor  <iant@google.com>
9749
9750         PR 10980
9751         * options.h (class General_options): Add --undefined-version.
9752         * script.cc (struct Version_expression): Add was_matched_by_symbol
9753         field.
9754         (Version_script_info::matched_symbol): New function.
9755         (Version_script_info::get_symbol_version_helper): Call
9756         matched_symbol.
9757         (Version_script_info::check_unmatched_names): New function.
9758         * script.h (class Version_script_info): Update declarations.
9759         * gold.cc (queue_middle_tasks): Handle --no-undefined-version.
9760
9761         * options.h (class General_options): Use DEFINE_bool_alias for
9762         allow_multiple_definition.
9763         * resolve.cc (Symbol_table::should_override): Don't test
9764         allow_multiple_definition.
9765
9766         PR 10980
9767         * options.h (class General_options): Add --cref.
9768         * main.cc (main): Print cref table if --cref.  Don't close mapfile
9769         until after printing cref table.
9770         * cref.cc: Include "symtab.h".
9771         (class Cref_inputs): Define Cref_table_compare and Cref_table.
9772         (Cref_table_compare::operator()): New function.
9773         (Cref_inputs::gather_cref): New function.
9774         (filecol): New static const.
9775         (Cref_inputs::print_cref): New function.
9776         (Cref::print_cref): New function.
9777         * cref.h: Include <cstdio>.
9778         (class Cref): Update declarations.
9779         * mapfile.h (Mapfile::file): New function.
9780         * object.h (class Object): Define Symbols.  Declare virtual
9781         do_get_global_symbols.
9782         (Object::get_global_symbols): New function.
9783         * object.cc (Input_objects::add_object): Pass object to cref_ if
9784         --cref.
9785         (Input_objects::archive_start): Likewise.
9786         (Input_objects::archive_stop): Likewise.
9787         (Input_objects::print_cref): New function.
9788         * dynobj.h (Sized_dynobj::do_get_global_symbols): New function.
9789         * dynobj.cc (big_endian>::do_add_symbols): Create symbols_ if
9790         --cref.
9791         * plugin.cc (Sized_pluginobj::do_get_global_symbols): New
9792         function.
9793         * plugin.h (class Sized_pluginobj): Update declarations.
9794
9795 2010-01-05  Ian Lance Taylor  <iant@google.com>
9796
9797         * symtab.cc (Symbol_table::add_from_object): Rename def parameter
9798         to is_default_version.  Rename insdef to insdefault.
9799         (Symbol_table::add_from_relobj): Rename def to is_default_version
9800         and local to is_forced_local.
9801         (Symbol_table::add_from_pluginobj): Likewise.
9802         (Symbol_table::add_from_dynobj): Likewise.
9803         (Symbol_table::define_special_symbol): Rename insdef to
9804         insdefault.
9805
9806 2010-01-04  Ian Lance Taylor  <iant@google.com>
9807
9808         PR 10980
9809         * options.h (class General_options): Add
9810         --allow-multiple-definition and -z muldefs.
9811         * resolve.cc (Symbol_table::should_override): Don't warn about a
9812         multiple symbol definition if --allow-multiple-definition or -z
9813         muldefs.
9814
9815         PR 10980
9816         * options.h (class General_options): Add --add-needed and
9817         --copy-dt-needed-entries.  Tweak --as-needed help entry.
9818         * object.cc (Input_objects::check_dynamic_dependencies): Give an
9819         error if --copy-dt-needed-entries aka --add-needed is used and
9820         would cause a change in behaviour.
9821
9822         PR 10980
9823         * options.h (class General_options): Add -G as a short version of
9824         --shared.  Add no-op options -assert, -g, and -i.
9825
9826 2010-01-04  Sriraman Tallam  <tmsriram@google.com>
9827
9828         * gc.h (gc_process_relocs): Call is_section_foldable_candidate to
9829         check for .text or .gnu.linkonce.t sections.
9830         * icf.cc (Icf::find_identical_sections): Ditto.
9831         Change the detection for mangled function name within the section
9832         name.
9833         * icf.h (is_section_foldable_candidate): New function.
9834
9835 2009-12-30  Ian Lance Taylor  <iant@google.com>
9836
9837         PR 10980
9838         * options.h (class General_options): Permit two dashes with
9839         --retain-symbols-file.
9840
9841 2009-12-30  Ian Lance Taylor  <iant@google.com>
9842
9843         PR 10979
9844         * layout.cc (Layout::relaxation_loop_body): If -Ttext was used,
9845         don't put the file header and segment headers in the text
9846         segment.
9847
9848         PR 10979
9849         * common.cc (Sort_commons::operator()): Stabilize sort when both
9850         entries are NULL.
9851         (Symbol_table::do_allocate_commons_list): When allocating common
9852         symbols, skip a symbol which is no longer common.
9853         * symtab.h (Symbol::is_common): Test whether the symbol comes from
9854         an object before checking its type.
9855         * testsuite/common_test_2.c: New file.
9856         * testsuite/common_test_3.c: New file.
9857         * testsuite/Makefile.am (check_PROGRAMS): Add common_test_2.
9858         (common_test_2_SOURCES, common_test_2_DEPENDENCIES): Define.
9859         (common_test_2_LDFLAGS, common_test_2_LDADD): Define.
9860         (common_test_2_pic.o, common_test_2.so): New targets.
9861         (common_test_3_pic.o, common_test_3.so): New targets.
9862         * testsuite/Makefile.in: Rebuild.
9863
9864         PR 10979
9865         * script.cc (read_input_script): If we see a new SECTIONS clause,
9866         and we have added an input section, give an error.
9867         * layout.h (class Layout): Add have_added_input_section function.
9868         Add have_added_input_section_ field.
9869         * layout.cc (Layout::Layout): Initialize
9870         have_added_input_section_.
9871         (Layout::layout): Set have_added_input_section_.
9872         (Layout::layout_eh_frame): Likewise.
9873
9874 2009-12-30  Ian Lance Taylor  <iant@google.com>
9875
9876         PR 10931
9877         * options.h (class General_options): Add --sort-common option.
9878         * symtab.h (class Symbol_table): Define Sort_commons_order enum.
9879         * common.cc (Sort_common): Add sort_order parameter to
9880         constructor.  Add sort_order_ field.
9881         (Sort_commons::operator): Check sort_order_.
9882         (Symbol_table::allocate_commons): Determine the sort order.
9883         (Symbol_table::do_allocate_commons): Add sort_order parameter.
9884         Change all callers.
9885         (Symbol_table::do_allocate_commons_list): Likewise.
9886
9887 2009-12-30  Ian Lance Taylor  <iant@google.com>
9888
9889         PR 10916
9890         * symtab.cc (Symbol_table::add_from_relobj): When not exporting
9891         symbols from this object, don't change the visibility of an
9892         undefined symbol.
9893         * testsuite/exclude_libs_test_1.c (lib1_ref): New function.
9894
9895 2009-12-30  Ian Lance Taylor  <iant@google.com>
9896
9897         PR 10861
9898         * script.h (class Version_script_info): Define Language enum.
9899         Update declarations.  Define Glob, Exact, and Lookup types.  Add
9900         new fields globals_, locals_, and is_finalized_.
9901         * script.cc: Various formatting fixes.
9902         (class Parser_closure): Change language_stack_ from a vector of
9903         std::string to one of Version_script_info::Language.  Adjust all
9904         uses accordingly.
9905         (class Lazy_demangler): Remove.
9906         (struct Version_expression): Change language from std::string to
9907         Version_script_info::Language.
9908         (Version_script_info::Version_script_info): New function.
9909         (Version_script_info::~Version_script_info): Don't call clear.
9910         (Version_script_info::finalize): New function.
9911         (Version_script_info::build_lookup_tables): New function.
9912         (Version_script_info::build_expression_list_lookup): New
9913         function.
9914         (Version_script_info::get_symbol_version_helper): Rewrite to use
9915         lookup tables.
9916         (Version_script_info::print_expression_list): Adjust to use
9917         Version_script_info::Language.
9918         (script_push_lex_into_version_mode): Check that the version script
9919         has not been finalized.
9920         (version_script_push_lang): Change language string to
9921         Version_script_info::Language.
9922         * options.cc (Command_line::version_script): New function.
9923         * options.h (class General_options): Add finalize_dynamic_list
9924         function.  Change version_script from declaration to definition.
9925         * testsuite/ver_test_4.script: Remove duplicate def of t2_2.
9926         * testsuite/version_script.map: Remove duplicate def of foo.
9927         * testsuite/Makefile.am (ver_matching_def.so): Depend upon
9928         version_script.map.
9929         * testsuite/Makefile.in: Rebuild.
9930
9931 2009-12-30  Ian Lance Taylor  <iant@google.com>
9932
9933         PR 10843
9934         * target-reloc.h (relocate_for_relocatable): When copying a reloc,
9935         if the input symbol index is 0, make the output symbol index 0.
9936
9937 2009-12-30  Ian Lance Taylor  <iant@google.com>
9938
9939         PR 10670
9940         * options.h (class General_options): Add -x/--discard-all.
9941         * object.cc (Sized_relobj::do_count_local_symbols): Handle
9942         --discard-all.  If the local symbol needs a dynamic entry, check
9943         that before handling --discard-locals.
9944
9945 2009-12-30  Ian Lance Taylor  <iant@google.com>
9946
9947         PR 10450
9948         * output.cc (Output_segment::Output_segment): If PT_TLS, set the
9949         flags to PF_R.
9950         (Output_segment::add_output_section): Don't change the flags if
9951         the type is PT_TLS.
9952
9953         PR 10450
9954         * dynobj.cc (Dynobj::create_gnu_hash_table): Add symbols to the
9955         GNU hash table if they need a dynamic value.  Otherwise, don't add
9956         them if they are defined in a dynamic object or are forced local.
9957
9958 2009-12-29  Ian Lance Taylor  <iant@google.com>
9959
9960         PR 10450
9961         * layout.cc (Layout::create_dynamic_symtab): Only set entsize of
9962         .gnu.hash table for a 32-bit target.
9963
9964         PR 10450
9965         * symtab.h (Symbol::needs_dynsym_entry): A symbol in both a
9966         regular and a dynamic object only needs a dynamic symbol table
9967         entry if it is externally visible.
9968
9969         PR 10450
9970         * i386.cc (class Target_i386): Initialize global_offset_table_ in
9971         constructor.  Add global_offset_table_ field.
9972         (Target_i386::got_section): Set global_offset_table_.
9973         (Target_i386::do_finalize_sections): Set global_offset_table_
9974         size.
9975         * x86_64.cc (class Target_x86_64): Initialize global_offset_table_
9976         in constructor.  Add global_offset_table_ field.
9977         (Target_x86_64::got_section): Set global_offset_table_.
9978         (Target_x86_64::do_finalize_sections): Set global_offset_table_
9979         size.
9980
9981         * layout.cc (Layout::Layout): Initialize increase_relro_.
9982         (Layout::get_output_section): Add is_relro, is_last_relro, and
9983         is_first_non_relro parameters.  Change all callers.
9984         (Layout::choose_output_section): Likewise.
9985         (Layout::add_output_section_data): Likewise.
9986         (Layout::make_output_section): Likewise.
9987         (Layout::set_segment_offsets): Clear increase_relro when using a
9988         linker script.
9989         * layout.h (class Layout): Add increase_relro method.  Add
9990         increase_relro_ field.  Update declarations.
9991         * output.cc (Output_section::Output_section): Initialize
9992         is_last_relro_ and is_first_non_relro_.
9993         (Output_segment::add_output_section): Group relro sections is
9994         do_sort is true.  Handle is_last_relro and is_first_non_relro.
9995         (Output_segment::maximum_alignment): Remove relro handling.
9996         (Output_segment::set_section_addresses): Add increase_relro
9997         parameter.  Change all callers.  Add initial alignment to align
9998         relro sections on separate page.  Remove old relro handling.
9999         (Output_segment::set_section_list_addresses): Remove in_relro
10000         parameter.  Change all callers.
10001         (Output_segment::set_offset): Add increase parameter.  Change all
10002         callers.  Remove old relro handling.
10003         * output.h (class Output_section): Add new methods: is_last_relro,
10004         set_is_last_relro, is_first_non_relro, set_is_first_non_relro.
10005         Add is_last_relro_ and is_first_non_relro_ fields.
10006         * i386.cc (Target_i386::got_section): Don't call set_is_relro.
10007         Create separate .got.plt section.  Call increase_relro.
10008         * x86_64.cc (Target_x86_64::got_section): Likewise.
10009         * testsuite/relro_script_test.t: Add .got.plt.
10010
10011         PR 10450
10012         * layout.cc (Layout::Layout): Initialize dynamic_symbol_ field.
10013         (Layout::create_initial_dynamic_sections): Set dynamic_symbol_.
10014         (Layout::finalize): Call set_dynamic_symbol_size.
10015         (Layout::set_dynamic_symbol_size): New function.
10016         * layout.h (class Layout): Add dynamic_symbol_ field.  Declare
10017         set_dynamic_symbol_size.
10018
10019         PR 10450
10020         * output.h (class Output_section): Add is_entsize_zero_ field.
10021         * output.cc (Output_section::Output_section): Initialize
10022         is_entsize_zero_.
10023         (Output_section::set_entsize): If two different entsizes are
10024         requested, force it to zero.
10025         (Output_section::add_input_section): Set flags for .debug_str
10026         before updating section flags.  Set entsize.
10027         (Output_section::update_flags_for_input_section): Set SHF_MERGE
10028         and SHF_STRING if all input sections have those flags.
10029
10030 2009-12-29   Rafael Espindola  <espindola@google.com>
10031
10032         * main.cc (main): Fix the sys time reporting.
10033         * workqueue.cc (Workqueue::find_and_run_task): Fix the sys time
10034         reporting.
10035
10036 2009-12-29  Sriraman Tallam  <tmsriram@google.com>
10037
10038         * options.cc (General_options::parse_version): Allow -v to exit
10039         without an error if there is nothing to link.
10040
10041 2009-12-29  Ian Lance Taylor  <iant@google.com>
10042
10043         * configure.ac: Set the MCMODEL_MEDIUM conditional to false if
10044         using a version of gcc before 4.1.
10045         * configure: Rebuild.
10046
10047 2009-12-28  Chris Demetriou  <cgd@google.com>
10048
10049         * attributes.cc (Output_attributes_section_data::do_write): Use
10050         std::vector::front rather than std::vector::data.
10051
10052 2009-12-28  Ian Lance Taylor  <iant@google.com>
10053
10054         * symtab.h (class Symbol_table): Add enum Defined.
10055         * resolve.cc (Symbol_table::should_override): Add defined
10056         parameter.  Change all callers.  Test whether object is NULL
10057         before calling a method on it.
10058         (Symbol_table::report_resolve_problem): Add defined parameter.
10059         Change all callers.
10060         (Symbol_table::should_override_with_special): Likewise.
10061         * symtab.cc (Symbol_table::define_in_output_data): Add defined
10062         parameter.  Change all callers.
10063         (Symbol_table::do_define_in_output_data): Likewise.
10064         (Symbol_table::define_in_output_segment): Likewise.
10065         (Symbol_table::do_define_in_output_segment): Likewise.
10066         (Symbol_table::define_as_constant): Likewise.
10067         (Symbol_table::do_define_as_constant): Likewise.
10068         * script.h (class Symbol_assignment): Add is_defsym parameter to
10069         constructor; change all callers.
10070         * script.cc (Script_options::add_symbol_assignment): Add is_defsym
10071         parameter.  Change all callers.  Add is_defsym_ field.
10072         (class Parser_closure): Add parsing_defsym parameter to
10073         constructor; change all callers.  Add parsing_defsym accessor
10074         function.  Add parsing_defsym_ field.
10075
10076 2009-12-28  Ian Lance Taylor  <iant@google.com>
10077
10078         * gold.cc (queue_middle_tasks): Fix formatting.
10079         * object.cc (Relobj::is_section_name_included): Likewise.
10080
10081 2009-12-23  Ian Lance Taylor  <iant@google.com>
10082
10083         * i386.cc (Target_i386::do_calls_non_split): Recognize
10084         -fsplit-stack prologue for a function with a static chain.
10085         * x86_64.cc (Target_x86_64::do_calls_non_split): Recognize
10086         -fsplit-stack prologue when using %r11.
10087
10088 2009-12-21  Sriraman Tallam  <tmsriram@google.com>
10089
10090         * options.cc (General_options::parse_version): Make -v continue and do
10091         the link like GNU ld does.
10092
10093 2009-12-17  Rafael Avila de Espindola  <espindola@google.com>
10094
10095         * Makefile.am (CCFILES): Add timer.cc.
10096         (HFILES): Add timer.h.
10097         * configure.ac: Check for sysconf and times.
10098         * main.cc: include timer.h.
10099         (main): Use Timer instead of get_run_time.
10100         * timer.cc: New.
10101         * timer.h: New.
10102         * workqueue.cc: include timer.h.
10103         (Workqueue::find_and_run_task):
10104         Report user, sys and wall time.
10105         * Makefile.in: Regenerate.
10106         * config.in: Regenerate.
10107         * configure: Regenerate.
10108
10109 2009-12-16  Doug Kwan  <dougkwan@google.com>
10110
10111         * arm.cc (Arm_relobj::scan_sections_for_stubs): Exclude ICF-eliminated
10112         sections.
10113         * object.cc (Sized_relobj::do_finalize_local_symbols): Handle
10114         relaxed input sections.
10115         * output.cc (Output_section::find_relaxed_input_section): Change
10116         return type to Output_relaxed_input_section pointer.  Adjust code
10117         for new type of relaxed_input_section_map_.
10118         * output.h (Output_section::find_relaxed_input_section): Change
10119         return type to Output_relaxed_input_section pointer.
10120         (Output_section::Output_relaxed_input_section_by_input_section_map):
10121         New type.
10122         (Output_section::relaxed_input_section_map_): Change type to
10123         Output_section::Output_relaxed_input_section_by_input_section_map.
10124         * symtab.cc (Symbol_table::compute_final_value): Handle relaxed
10125         input section.
10126
10127 2009-12-15  Ian Lance Taylor  <iant@google.com>
10128
10129         * layout.cc (Layout::create_shstrtab): Only write out after input
10130         sections if we are compressing debug sections.
10131
10132 2009-12-15  Ian Lance Taylor  <iant@google.com>
10133
10134         * archive.cc (Archive::add_symbols): Only look up a symbol without
10135         a version if there is, in fact, a version.
10136
10137 2009-12-14  Ian Lance Taylor  <iant@google.com>
10138
10139         Revert -Wshadow changes, all changes from:
10140         2009-12-11  Doug Kwan  <dougkwan@google.com>
10141         2009-12-11  Nick Clifton  <nickc@redhat.com>
10142         * configure.ac: Remove -Wshadow when setting WARN_CXXFLAGS.
10143
10144 2009-12-11  Doug Kwan  <dougkwan@google.com>
10145
10146         * arm.cc (Target_arm::do_finalize_sections): Fix build breakage
10147         due to -Wshadow.
10148         * attributes.cc (Object_attribute::size): Ditto.
10149         (Attributes_section_data::size): Ditto.
10150         (Attributes_section_data::Attributes_section_data): Ditto.
10151         (Output_attributes_section_data::do_write): Ditto.
10152         * attributes.h (Object_attribute::set_type): Ditto.
10153         * testsuite/tls_test_main.cc (safe_lock, safe_unlock): Ditto.
10154
10155 2009-12-11  Nick Clifton  <nickc@redhat.com>
10156
10157         * archive.cc: Fix shadowed variable warnings.
10158         * arm.cc: Likewise.
10159         * compressed_output.cc: Likewise.
10160         * compressed_output.h: Likewise.
10161         * configure: Likewise.
10162         * dwarf_reader.cc: Likewise.
10163         * dynobj.cc: Likewise.
10164         * dynobj.h: Likewise.
10165         * ehframe.cc: Likewise.
10166         * ehframe.h: Likewise.
10167         * errors.cc: Likewise.
10168         * expression.cc: Likewise.
10169         * fileread.cc: Likewise.
10170         * fileread.h: Likewise.
10171         * freebsd.h: Likewise.
10172         * i386.cc: Likewise.
10173         * icf.cc: Likewise.
10174         * incremental.h: Likewise.
10175         * layout.cc: Likewise.
10176         * layout.h: Likewise.
10177         * mapfile.cc: Likewise.
10178         * merge.cc: Likewise.
10179         * merge.h: Likewise.
10180         * object.cc: Likewise.
10181         * object.h: Likewise.
10182         * options.h: Likewise.
10183         * output.cc: Likewise.
10184         * output.h: Likewise.
10185         * parameters.cc: Likewise.
10186         * plugin.cc: Likewise.
10187         * powerpc.cc: Likewise.
10188         * reduced_debug_output.cc: Likewise.
10189         * reduced_debug_output.h: Likewise.
10190         * reloc.cc: Likewise.
10191         * reloc.h: Likewise.
10192         * resolve.cc: Likewise.
10193         * script-sections.cc: Likewise.
10194         * script.cc: Likewise.
10195         * script.h: Likewise.
10196         * sparc.cc: Likewise.
10197         * symtab.cc: Likewise.
10198         * symtab.h: Likewise.
10199         * target-select.cc: Likewise.
10200         * target-select.h: Likewise.
10201         * token.h: Likewise.
10202         * workqueue.cc: Likewise.
10203         * workqueue.h: Likewise.
10204         * x86_64.cc: Likewise.
10205
10206 2009-12-10  Doug Kwan  <dougkwan@google.com>
10207
10208         * arm.cc (attributes.h): New include.
10209         (Arm_relobj::Arm_relobj): Initialize attributes_section_data_.
10210         (Arm_relobj::~Arm_relobj): Delete object pointed by
10211         attributes_section_data_.
10212         (Arm_relobj::attributes_section_data): New method definition.
10213         (Arm_relobj::attributes_section_data_): New data member declaration.
10214         (Arm_dynobj::Arm_dynobj): Initialize attributes_section_data_.
10215         (Arm_dynobj::~Arm_dynobj): Delete object pointed by
10216         attributes_section_data_.
10217         (Arm_dynobj::attributes_section_data): New method definition.
10218         (Arm_dynobj::attributes_section_data_): New data member declaration.
10219         (Target_arm::Target_arm): Initialize attributes_section_data_.  Change
10220         initialization value of may_use_blx_ to false.
10221         (Target_arm::using_thumb2, Target_arm::using_thumb_only,
10222         Target_arm::may_use_arm_nop, Target_arm::may_use_thumb2_nop): Use
10223         object attributes to compute results instead of hard-coding.
10224         (Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order,
10225         Target_arm::get_secondary_compatible_arch,
10226         Target_arm::set_secondary_compatible_arch
10227         Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name,
10228         Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes):
10229         New method declarations.
10230         (Target_arm::get_aeabi_object_attribute): New method definition.
10231         (Target_arm::attributes_section_data_): New data member declaration.
10232         (read_arm_attributes_section): New template definition.
10233         (Arm_relobj::do_read_symbols): Read attributes section if it exists.
10234         (Arm_dynobj::do_read_symbols): Ditto.
10235         (Target_arm::do_finalize_sections): Merge attributes sections from
10236         input.  Check for BLX use after attributes section merging.
10237         Fix __exidx_start and __exidx_end visibility.  Create an
10238         .ARM.attributes section if necessary.
10239         (Target_arm::get_secondary_compatible_arch,
10240         Target_arm::set_secondary_compatible_arch,
10241         Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name,
10242         Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes,
10243         Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order):
10244         New method definitions.
10245
10246 2009-12-09  Ian Lance Taylor  <iant@google.com>
10247
10248         * plugin.cc (Plugin::load): Don't cast from void* to a function
10249         pointer.
10250
10251 2009-12-09  Ian Lance Taylor  <iant@google.com>
10252
10253         * dynobj.cc (Sized_dynobj::do_read_symbols): Clear version
10254         information fields.
10255
10256 2009-12-09  H.J. Lu  <hongjiu.lu@intel.com>
10257
10258         * testsuite/Makefile.am (two_file_shared_1_pic_2_test_DEPENDENCIES):
10259         Replace two_file_shared_1.so with two_file_shared_2.so.
10260         * testsuite/Makefile.in: Regenerated.
10261
10262 2009-12-08  Doug Kwan  <dougkwan@google.com>
10263
10264         * Makefile.am (CCFILES): Add attributes.cc and int_encoding.cc.
10265         (HFILES): Add attributes.h and int_encoding.h.
10266         * Makefile.in: Regenerate.
10267         * dwarf_reader.cc (read_unsigned_LEB_128, read_signed_LEB_128): Move
10268         function definitions to int_encoding.cc
10269         * dwarf_reader.h (read_unsigned_LEB_128, read_signed_LEB_128): Move
10270         prototypes to int_encoding.h
10271         * reduced_debug_output.cc (int_encoding.h): New include.
10272         (write_unsigned_LEB_128, get_length_as_unsigned_LEB_128): Move
10273         function definitions to int_encoding.cc
10274         (insert_into_vector, read_from_pointer): Move template definitions to
10275         int_encoding.h
10276         * attributes.cc: New file.
10277         * attributes.h: New file.
10278         * int_encoding.cc: New file.
10279         * int_encoding.h: New file.
10280
10281 2009-12-07  Rafael Avila de Espindola  <espindola@google.com>
10282
10283         PR gold/11055
10284         * incremental-dump.cc (dump_incremental_inputs): New.
10285         (main): Use dump_incremental_inputs.
10286
10287 2009-12-07  H.J. Lu  <hongjiu.lu@intel.com>
10288
10289         PR gold/10893
10290         * i386.cc (Target_i386::Scan::globa): Use is_func instead of
10291         checking elfcpp::STT_FUNC.
10292         (Target_i386::Relocate::relocate): Likewise.
10293         * x86_64.cc (Target_x86_64::Scan::global): Likewise.
10294
10295         * symtab.cc (Symbol_table::sized_write_symbol): Turn IFUNC
10296         symbols from shared libraries into normal FUNC symbols.
10297
10298         * symtab.h (Symbol): Add is_func and use it.
10299
10300 2009-12-05  Doug Kwan  <dougkwan@google.com>
10301
10302         * arm.cc (Target_arm::arm_info): Initialize new fields
10303         attributes_section and attributes_vendor.
10304         * i386.cc (Target_i386::i386_info): Same.
10305         * object.cc (Sized_relobj::do_layout): Skip attribute section.
10306         * gold/powerpc.cc (Target_powerpc::powerpc_info): Initialize new
10307         fields attributes_section and attributes_vendor.
10308         * sparc.cc (Target_sparc::sparc_info): Same.
10309         * target.h (Target::attributes_section, Target::attributes_vendor,
10310         Target::is_attributes_section, Target::attribute_arg_type,
10311         Target::attributes_order): New method definitions.
10312         (Target::Target_info::attributes_section,
10313         Target::Target_info::attributes_vendor): New fields.
10314         (Target::do_attribute_arg_type, Target::do_attributes_order): New
10315         virtual method definitions.
10316         * x86_64.cc (Target_x86_64::x86_64_info): Initialize new fields
10317         attributes_section and attributes_vendor.
10318         * testsuite/testfile.cc (Target_test::test_target_info): Same.
10319
10320 2009-12-05  Doug Kwan  <dougkwan@google.com>
10321
10322         * arm.cc: Update comments about interworking and stub generation.
10323         (Target_arm::Relocate::reloc_is_non_pic): Update list of relocations
10324         considered as non-PIC.
10325         (Arm_relocate_functions::base_abs): Fix formatting.
10326         (Arm_relocate_functions::got_prel): Fix comment.  Change interface
10327         of function to use GOT entry address instead of offset.
10328         (Target_arm::Scan::global): Issue an error if a symbol would need a
10329         PLT does not get one because it is untyped.  Remove code to create
10330         dynamic symbols for relative branches.
10331         (Target_arm::Relocate::relocate: Use 0 instead of false since function
10332         takes unsigned integer instead of boolean.
10333
10334 2009-12-05  H.J. Lu  <hongjiu.lu@intel.com>
10335
10336         * testsuite/Makefile.am (constructor_test_LDADD): New. Empty.
10337         (two_file_test_LDADD): Likewise.
10338         (common_test_1_LDADD): Likewise.
10339         (exception_test_LDADD) Likewise.
10340         (weak_test_LDADD): Likewise.
10341         (many_sections_test_LDADD): Likewise.
10342         (initpri1_LDADD): Likewise.
10343         (script_test_1_LDADD): Likewise.
10344         (script_test_2_LDADD): Likewise.
10345         (justsyms_LDADD): Likewise.
10346         (binary_test_LDADD): Likewise.
10347         (large_LDADD): Likewise.
10348         * testsuite/Makefile.in: Regenerated.
10349
10350 2009-12-04  H.J. Lu  <hongjiu.lu@intel.com>
10351
10352         * resolve.cc (symbol_to_bits): Treat STB_GNU_UNIQUE as STB_GLOBAL.
10353         (Symbol_table::override_with_special): Likewise.
10354         (Symbol_table::add_from_object): Likewise.
10355
10356 2009-12-04  Rafael Avila de Espindola  <espindola@google.com>
10357
10358         * incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
10359         Don't set the data_offset twice.
10360
10361 2009-12-04  Rafael Avila de Espindola  <espindola@google.com>
10362
10363         * testsuite/Makefile.in: Regenerate.
10364
10365 2009-12-03  Doug Kwan  <dougkwan@google.com>
10366
10367         * arm.cc: Remove comment about missing .ARM.exidx section symbols.
10368         (Target_arm::do_finalize_sections): Add parameter for symbol table
10369         pointer.  Add __exidx_start and __exidx_end symbols as appropriate.
10370         * i386.cc (Target_i386::do_finalize_sections): Add an additional
10371         parameter for symbol table pointer.
10372         * layout.cc (Layout::finalize): Call Target::finalize_sections with
10373         an additional parameter for a pointer to symbol table.
10374         * powerpc.cc (Target_powerpc::do_finalize_sections): Add an additional
10375         parameter for a symbol table pointer.
10376         * sparc.cc (Target_sparc::do_finalize_sections): Ditto.
10377         * target.h (Target::finalize_sections, Target::do_finalize_sections):
10378         Ditto.
10379         * x86_64.cc (Target_x86_64::do_finalize_sections): Add an additional
10380         parameter for a symbol table pointer.
10381
10382 2009-12-03  Rafael Avila de Espindola  <espindola@google.com>
10383
10384         * incremental.cc (Incremental_inputs_header)
10385         (Incremental_inputs_header_write, Incremental_inputs_entry)
10386         (Incremental_inputs_entry_write): Move ...
10387         * incremental.h (Incremental_inputs_header)
10388         (Incremental_inputs_header_write, Incremental_inputs_entry)
10389         (Incremental_inputs_entry_write): here.
10390
10391 2009-12-02  Rafael Avila de Espindola  <espindola@google.com>
10392
10393         * incremental.cc (make_sized_incremental_binary): Set the target.
10394         Error if it is incompatible.
10395         * output.h (Output_file): Add filename method.
10396
10397 2009-12-02  Rafael Avila de Espindola  <espindola@google.com>
10398
10399         * incremental.cc (Incremental_inputs_entry): Remove unused argument
10400         from the get_* methods.
10401
10402 2009-12-02  Rafael Avila de Espindola  <espindola@google.com>
10403
10404         * incremental-dump.cc (main): Check that the offeset of a script is 0.
10405         * incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
10406         Write 0 for the data_offset of scripts.
10407
10408 2009-12-02  Rafael Avila de Espindola  <espindola@google.com>
10409
10410         * testsuite/Makefile.am: Add the incremental_test.sh test.
10411         * testsuite/incremental_test.sh: New.
10412         * testsuite/incremental_test_1.c: New.
10413         * testsuite/incremental_test_2.c: New.
10414
10415 2009-12-01  Rafael Avila de Espindola  <espindola@google.com>
10416
10417         * incremental-dump.cc (main): Fix typos.
10418
10419 2009-11-27  Rafael Avila de Espindola  <espindola@google.com>
10420
10421         PR gold/11025
10422         * incremental-dump.cc (main): Use llu to print 64 bit values.
10423
10424 2009-11-26  Per Øyvind Karlsen <peroyvind@mandriva.org>
10425             H.J. Lu  <hongjiu.lu@intel.com>
10426
10427         * Makefile.am (incremental_dump_DEPENDENCIES): Add $(THREADSLIB)
10428         $(LIBDL).
10429         (incremental_dump_LDADD): Likewise.
10430         * Makefile.in: Regenerated.
10431
10432 2009-11-25  Doug Kwan  <dougkwan@google.com>
10433
10434         Revert:
10435
10436         2009-11-25  Doug Kwan  <dougkwan@google.com>
10437
10438                 * arm.cc (Target_arm::Target_arm): Move method definition
10439                 outside of class definition.  Add code to handle
10440                 --target1-rel, --target1-abs and --target2= options.
10441                 (Target_arm::get_reloc_reloc_type): Change method to be
10442                 non-static and const.
10443                 (Target_arm::target1_is_rel_, Target_arm::target2_reloc_):
10444                 New data member declaration.
10445                 (Target_arm::Scan::local, Target_arm::Scan::global,
10446                 Target_arm::Relocate::relocate,
10447                 Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
10448                 Adjust call to Target_arm::get_real_reloc_type.
10449                 (Target_arm::get_real_reloc_type): Use command line options
10450                 to determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
10451                 * options.h (--target1-rel, --target1-abs, --target2): New
10452                 ARM-only options.
10453
10454 2009-11-25  Doug Kwan  <dougkwan@google.com>
10455
10456         * arm.cc (Target_arm::Target_arm): Move method definition outside of
10457         class definition.  Add code to handle --target1-rel, --target1-abs
10458         and --target2= options.
10459         (Target_arm::get_reloc_reloc_type): Change method to be non-static
10460         and const.
10461         (Target_arm::target1_is_rel_, Target_arm::target2_reloc_): New data
10462         member declaration.
10463         (Target_arm::Scan::local, Target_arm::Scan::global,
10464         Target_arm::Relocate::relocate,
10465         Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Adjust
10466         call to Target_arm::get_real_reloc_type.
10467         (Target_arm::get_real_reloc_type): Use command line options to
10468         determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
10469         * options.h (--target1-rel, --target1-abs, --target2): New ARM-only
10470         options.
10471
10472 2009-11-25  Doug Kwan  <dougkwan@google.com>
10473
10474         * arm.cc (Target_arm::may_use_thumb2_nop): New method definition.
10475         (Arm_relocate_functions::thumb_branch_common): New metod declaration.
10476         (Arm_relocate_functions::abs12, Arm_relocate_functions::abs16): Fix
10477         formatting.
10478         (Arm_relocate_functions::thm_call): Replace body with a call to
10479         Arm_relocate_functions::thumb_branch_common.
10480         (Arm_relocate_functions::thm_jump24,
10481         Arm_relocate_functions::thm_xpc22): New method definitions.
10482         (Arm_relocate_functions::thumb_branch_common): New method definition.
10483         (Reloc_stub::stbu_type_for_reloc): Fix incorrect uses of bit-wise-or
10484         operator.
10485         (Target_arm::Relocate::relocate): Adjust call to thm_call.
10486         Add code to handle R_ARM_THM_XPC22 and R_ARM_THM_JUMP24.
10487
10488 2009-11-24  Rafael Avila de Espindola  <espindola@google.com>
10489
10490         * Makefile.am: Build incremental-dump
10491         * Makefile.in: Regenerate.
10492         * incremental-dump.cc: New.
10493         * incremental.cc (Incremental_inputs_header_data,
10494         Incremental_inputs_entry_data): Move to incremental.h
10495         * incremental.h: (Incremental_inputs_header_data,
10496         Incremental_inputs_entry_data): Move from incremental.cc
10497
10498 2009-11-24  Rafael Avila de Espindola  <espindola@google.com>
10499
10500         * incremental.cc (Incremental_inputs_header,
10501         Incremental_inputs_header_write, Incremental_inputs_entry,
10502         Incremental_inputs_entry_write): Add a typedef with the data type.
10503
10504 2009-11-24  Rafael Avila de Espindola  <espindola@google.com>
10505
10506         * incremental.cc (Incremental_inputs_header,
10507         Incremental_inputs_header_write, Incremental_inputs_entry,
10508         Incremental_inputs_entry_write): Update comment about which
10509         type has the filed descriptions.
10510
10511 2009-11-15  Doug Kwan  <dougkwan@google.com>
10512
10513         * arm.cc (Target_arm::may_use_arm_nop): New method definition.
10514         (Arm_relocate_functions::arm_branch_common): Change method defintion
10515         in class definition to a method declaration and update list of formal
10516         parameters.
10517         (Arm_relocate_functions::plt32, Arm_relocate_functions::call,
10518         Arm_relocation_functions::jump24): Adjust call to
10519         Arm_relocate_functions::arm_branch_common.  Update list of formal
10520         parameters.
10521         (Arm_relocate_functions::xpc25): New method definition.
10522         (Arm_relocate_functions::arm_branch_common): Move method defintion
10523         out from class definition.  Use stubs for mode-switching and extending
10524         branch ranges.
10525         (Target_arm::Relocate::relocate): Handle weakly-undefined symbols
10526         specially.  Change code to enable use of stubs in ARM branches.
10527
10528 2009-11-10  Doug Kwan  <dougkwan@google.com>
10529
10530         * arm.cc (Arm_relobj::do_relocate_sections): Remove options parameter
10531         in method declaration.
10532         (Target_arm::relocate_stub): New method declaration.
10533         (Target_arm::default_target): Change to return a pointer instead of
10534         a const reference.
10535         (Reloc_stub::stub_type_for_reloc): Adjust for the change in
10536         Target_arm::default_target.
10537         (Arm_Relobj::do_relocate_sections): Remove options paramater in
10538         method definition.
10539         (Target_arm::relocate_section): Adjust view.
10540         (Target_arm::relocate_stub): New method definition.
10541
10542 2009-11-10  Doug Kwan  <dougkwan@google.com>
10543
10544         * i386.cc (Target_i386::do_calls_non_split): Add a cast to avoid
10545         a format warning.
10546         * incremental.cc (open_incremental_binary): Initialized local
10547         variables to avoid warnings.
10548         * object.cc (make_elf_object): Ditto.
10549         * x86_64.cc (Target_x86_64::do_calls_non_split): Add a cast to avoid
10550         a format warning.
10551
10552 009-11-09  H.J. Lu  <hongjiu.lu@intel.com>
10553
10554         PR gold/10930
10555         * testsuite/plugin_test.c: Include "config.h".
10556
10557 2009-11-09  Doug Kwan  <dougkwan@google.com>
10558
10559         * arm.cc (Target_arm::fake_relnum_for_stubs): New constant.
10560         (arm_symbol_value): Remove.
10561         (Arm_relocate_functions::arm_branch_common,
10562         Arm_relocate_functions::abs8, Arm_relocate_functions::thm_abs5,
10563         Arm_relocate_functions::abs12, Arm_relocate_functions::abs16,
10564         Arm_relocate_functions::abs32, Arm_relocate_functions::rel32,
10565         Arm_relocate_functions::thm_call, Arm_relocate_functions::plt32,
10566         Arm_relocate_functions::call, Arm_relocate_functions::jump24,
10567         Arm_relocate_functions::prel31, Arm_relocate_functions::mov_abs_nc,
10568         Arm_relocate_functions::movt_abs, Arm_relocate_functions::movw_abs_nc,
10569         Arm_relocate_functions::thm_mobw_abs_nc,
10570         Arm_relocate_functions::thm_mov_abs,
10571         Arm_relocate_functions::movw_prel_nc,
10572         Arm_relocate_functions::thm_movt_abs,
10573         Arm_relocate_functions::movt_prel,
10574         Arm_relocate_functions::thm_movw_prel_nc,
10575         Arm_relocate_functions::thm_movt_prel): Adjust callers of the above.
10576         (Target_arm::Relocate::relocate): Only decompose address into two
10577         parts if relocation type uses the thumb-bit and pass the actual
10578         bit instead of a flag indicating that the thumb-bit is used.  Adjust
10579         calls to methods in Arm_relocate_functions for this change.
10580
10581 2009-11-08  Ian Lance Taylor  <iant@google.com>
10582
10583         PR 10925
10584         * reloc.cc: Instantiate
10585         Sized_relobj::initialize_input_to_output_maps and
10586         Sized_relobj:free_input_to_output_maps.
10587
10588 2009-11-06  Ian Lance Taylor  <iant@google.com>
10589
10590         PR 10876
10591         * defstd.cc (in_segment): Set only_if_ref true for "end".
10592
10593 2009-11-06  Doug Kwan  <dougkwan@google.com>
10594
10595         * arm.cc (class Reloc_stub): Correct a comment.
10596         (Target_arm::Target_arm): Initialize arm_input_section_map_.
10597         (Target_arm::scan_section_for_stubs): New method declaration.
10598         (Target_arm::do_make_elf_object, Target_arm::do_make_output_section):
10599         Change methods from private to protected.
10600         (Target_arm::do_may_relax): New method definition.
10601         (Target_arm::do_relax, Target_arm::group_sections,
10602         Target_arm::scan_reloc_for_stub,
10603         Target_arm::scan_reloc_section_for_stubs): New method declarations.
10604         (Target_arm::arm_input_section_map_): New data member declaration.
10605         (Target_arm::scan_reloc_for_stub,
10606         Target_arm::scan_reloc_section_for_stubs,
10607         Target_arm::scan_section_for_stubs, Target_arm::group_sections,
10608         Target_arm::do_relax): New method definitions.
10609
10610 2009-11-06  Mikolaj Zalewski  <mikolaj@google.com>
10611
10612         * configure.ac: Check for (struct stat)::st_mtim
10613         * fileread.cc (File_read::get_mtime): Use st_mtim if available.
10614         * config.in: Regenerate.
10615         * configure: Regenerate.
10616
10617 2009-11-05  Ian Lance Taylor  <iant@google.com>
10618
10619         PR 10910
10620         * output.cc (Output_segment::add_output_section): Add missing
10621         return statement.
10622
10623 2009-11-04  Ian Lance Taylor  <iant@google.com>
10624
10625         PR 10880
10626         * object.h (class Object): Add is_needed and set_is_needed
10627         methods.  Add is_needed_ field.  Make bool fields into bitfields.
10628         * symtab.cc (Symbol_table::set_dynsym_indexes): If a symbol is
10629         defined in a dynamic object and referenced by a regular object,
10630         set is_needed for the dynamic object.
10631         * layout.cc (Layout::finish_dynamic_section): Don't add DT_NEEDED
10632         if the file is marked with as_needed and it is not needed.
10633
10634 2009-11-04  Ian Lance Taylor  <iant@google.com>
10635
10636         PR 10887
10637         * arm.cc (Target_arm::do_finalize_sections): Don't add dynamic
10638         tags if data is discarded by linker script.
10639         * i386.cc (Target_i386::do_finalize_sections): Likewise.
10640         * powerpc.cc (Target_powerpc::do_finalize_sections): Likewise.
10641         * sparc.cc (Target_sparc::do_finalize_sections): Likewise.
10642         * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
10643
10644 2009-11-04  Ian Lance Taylor  <iant@google.com>
10645
10646         * layout.cc (Layout::get_output_section): Add is_interp and
10647         is_dynamic_linker_section parameters.  Change all callers.
10648         (Layout::choose_output_section): Likewise.
10649         (Layout::make_output_section): Likewise.
10650         (Layout::add_output_section_data): Add is_dynamic_linker_section
10651         parameter.  Change all callers.
10652         * layout.h (class Layout): Update declarations.
10653         * output.h (class Output_section): Add is_interp, set_is_interp,
10654         is_dynamic_linker_section, set_is_dynamic_linker_section methods.
10655         Add is_interp_, is_dynamic_linker_section_ fields.  Change
10656         generate_code_fills_at_write_ to a bitfield.
10657         * output.cc (Output_section::Output_sections): Initialize new
10658         fields.
10659         (Output_segment::add_output_section): Add do_sort parameter.
10660         Change all callers.
10661
10662 2009-11-03  Ian Lance Taylor  <iant@google.com>
10663
10664         PR 10860
10665         * options.h (class General_options): Add --warn-common.
10666         * resolve.cc (Symbol_table::resolve): Handle --warn-common when
10667         merging two common symbols.
10668         (Symbol_table::should_override): Handle --warn-common when merging
10669         a common symbol with a defined symbol.  Use report_resolve_problem
10670         for multiple definitions.
10671         (Symbol_table::report_resolve_problem): New function.
10672         * symtab.h (class Symbol_table): Declare report_resolve_problem.
10673
10674 2009-11-03  Doug Kwan  <dougkwan@google.com>
10675
10676         * arm.cc (Target_arm::Target_arm): Initialize stub_tables_ and
10677         stub_factory_.
10678         (Target_arm::stub_factory): New method definition.
10679         (Target_arm::new_arm_input_section,
10680         Target_arm::find_arm_input_section, Target_arm::new_stub_table,
10681         Target_arm::reloc_uses_thumb_bit): New method declarations.
10682         (Target_arm::Stub_table_list, Target_arm::Arm_input_section_map):
10683         New type definitions.
10684         (Target_arm::stub_tables_, Target_arm::stub_factory_): New data
10685         member declarations.
10686         (Target_arm::reloc_uses_thumb_bit, Target_arm::new_arm_input_section,
10687         Target_arm::find_arm_input_section, Target_arm::new_stub_table):
10688         New method definitions.
10689
10690 2009-11-03  Ian Lance Taylor  <iant@google.com>
10691
10692         * options.h (class General_options): Add --warn_constructors.
10693
10694 2009-11-03  Ian Lance Taylor  <iant@google.com>
10695
10696         PR 10893
10697         * defstd.cc (in_section): Add entries for __rel_iplt_start,
10698         __rel_iplt_end, __rela_iplt_start, __rela_iplt_end, and __stack.
10699
10700 2009-11-03  Ian Lance Taylor  <iant@google.com>
10701
10702         PR 10895
10703         * po/Make-in ($(srcdir)/$(PACKAGE).pot): Pass -C and
10704         --msgid-bugs-address.
10705         (install-pdf): New target.
10706         (install-data_yes): Look up one directory to find mkinstalldirs.
10707
10708 2009-11-03  H.J. Lu  <hongjiu.lu@intel.com>
10709
10710         * po/Make-in (.po.gmo): Don't generate .gmo files in source
10711         tree.
10712
10713 2009-10-30  Doug Kwan  <dougkwan@google.com>
10714
10715         * arm.cc (Stub_addend_reader): Fix bug in previouls check-in.
10716
10717 2009-10-30  Doug Kwan  <dougkwan@google.com>
10718
10719         * arm.cc (Stub_addend_reader): New struct template definition
10720         and partial specializations.
10721         (Stub_addend_reader::operator()): New method definition for a
10722         partially specialized template.
10723
10724 2009-10-30  Doug Kwan  <dougkwan@google.com>
10725
10726         * arm.cc (Arm_relobj::processor_specific_flags): New method
10727         definition.
10728         (Arm_relobj::do_read_symbols): New method declaration.
10729         (Arm_relobj::processor_specific_flags_): New data member declaration.
10730         (Arm_dynobj): New class definition.
10731         (Target_arm::do_finalize_sections): Add input_objects parameter.
10732         (Target_arm::do_adjust_elf_header): New method declaration.
10733         (Target_arm::are_eabi_versions_compatible,
10734         (Target_arm::merge_processor_specific_flags): New method declaration.
10735         (Target_arm::do_make_elf_object): New overloaded method definitions
10736         and declaration.
10737         (Arm_relobj::do_read_symbols): New method definition.
10738         (Arm_dynobj::do_read_symbols): Ditto.
10739         (Target_arm::do_finalize_sections): Add input_objects parameters.
10740         Merge processor-specific flags from all input objects.
10741         (Target_arm::are_eabi_versions_compatible,
10742         Target_arm::merge_processor_specific_flags,
10743         Target_arm::do_adjust_elf_header, Target_arm::do_make_elf_object):
10744         New method definitions.
10745         * i386.cc (Target_i386::do_finalize_sections): Add unnamed
10746         Input_objects pointer type parameter.
10747         * layout.cc (Layout::finalize): Pass input objects to target's.
10748         finalize_sections function.
10749         * output.cc (Output_file_header::do_sized_write): Set ELF file
10750         header's processor-specific flags.
10751         * powerpc.cc (Target_powerpc::do_finalize_sections): Add unnamed
10752         Input_objects pointer type parameter.
10753         * sparc.cc (Target_sparc::do_finalize_sections): Same.
10754         * target.h (Input_objects): New forward class declaration.
10755         (Target::processor_specific_flags,
10756         Target::are_processor_specific_flags_sect): New method definitions.
10757         (Target::finalize_sections): Add input_objects parameter.
10758         (Target::Target): Initialize processor_specific_flags_ and
10759         are_processor_specific_flags_set_.
10760         (Target::do_finalize_sections): Add unnamed Input_objects pointer type
10761         parameter.
10762         (Target::set_processor_specific_flags): New method definition.
10763         (Target::processor_specific_flags_,
10764         Target::are_processor_specific_flags_set_): New data member
10765         declarations.
10766         * x86_64.cc (Target_x86_64::do_finalize_sections): Add unnamed
10767         Input_objects pointer type parameter.
10768
10769 2009-10-30  Doug Kwan  <dougkwan@google.com>
10770
10771         * arm.cc: Use Arm_address instead of elfcpp::Elf_types<32>::Elf_Addr.
10772
10773 2009-10-28  Ian Lance Taylor  <iant@google.com>
10774
10775         * object.h (class Relobj): Drop options parameter from
10776         gc_process_relocs, scan_relocs, relocate, do_gc_process_relocs,
10777         do_scan_relocs, do_relocate.  Change all callers.
10778         (class Sized_relobj): Drop options parameters from
10779         do_gc_process_relocs, do_scan_relocs, do_relocate,
10780         do_relocate_sections, relocate_sections, emit_relocs_scan,
10781         emit_relocs_scan_reltype.  Change all callers.
10782         (struct Relocate_info): Remove options field and all references to
10783         it.
10784         * reloc.h (class Read_relocs): Remove options constructor
10785         parameter and options_ field.  Change all callers.
10786         (class Gc_process_relocs, class Scan_relocs): Likewise.
10787         (class Relocate_task): Likewise.
10788         * target-reloc.h (scan_relocs): Remove options parameter.  Change
10789         all callers.
10790         (scan_relocatable_relocs): Likewise.
10791         * target.h (class Sized_target): Remove options parameter from
10792         gc_process_relocs, scan_relocs, scan_relocatable_relocs.  Change
10793         all callers.
10794         * gc.h (gc_process_relocs): Remove options parameter.  Change all
10795         callers.
10796         * arm.cc: Update functions to remove options parameters.
10797         * i386.cc: Likewise.
10798         * powerpc.cc: Likewise.
10799         * sparc.cc: Likewise.
10800         * x86_64.cc: Likewise.
10801         * testsuite/testfile.cc: Likewise.
10802
10803 2009-10-28  Doug Kwan  <dougkwan@google.com>
10804
10805         * arm.cc (Arm_relobj): New class definition.
10806         (Arm_relobj::scan_sections_for_stubs,
10807         Arm_relobj::do_count_local_symbols, Arm_relobj::do_relocate_sections):
10808         New method definitions.
10809
10810 2009-10-28  Cary Coutant  <ccoutant@google.com>
10811
10812         * plugin.h (Plugin::Plugin): Initialize cleanup_done_.
10813         (Plugin::cleanup_done_): New member.
10814         (Plugin_manager::Plugin_manager): Remove cleanup_done_.
10815         (Plugin_manager::cleanup_done_): Remove.
10816         (Plugin_manager::add_input_file): Edit error message.
10817         * plugin.cc (Plugin::cleanup): Test and set cleanup_done_.
10818         (Plugin_manager::cleanup): Remove use of cleanup_done_.
10819
10820 2009-10-27  Mikolaj Zalewski  <mikolajz@google.com>
10821
10822         * fileread.cc: (File_read::View::~View): Use the new
10823         data_ownership_ filed.
10824         (File_read::~File_read): Dispose the new whole_file_view_.
10825         (File_read::open): Mmap the whole file if needed.
10826         (File_read::open): Use whole_file_view_ instead of contents_.
10827         (File_read::find_view): Use whole_file_view_ if applicable.
10828         (File_read::do_read): Use whole_file_view_ instead of contents_.
10829         (File_read::make_view): Use whole_file_view_ instead of contents_,
10830         update File_read::View::View call.
10831         (File_read::find_or_make_view): Update File_read::View::View
10832         call.
10833         * fileread.h: (File_read::File_read): Initialize whole_file_view_,
10834         remove contents_
10835         (File_read::View::Data_ownership): New enum.
10836         (File_read::View::View): Replace bool mapped_ with Data_ownership
10837         argument.
10838         (File_read::View::mapped_): Remove (replaced by data_ownership_).
10839         (File_read::View::data_ownership_): New field.
10840         (File_read::contents_): Remove (replaced by whole_file_view_).
10841         (File_read::whole_file_view_): New field.
10842         * options.h (class General_options): Add --keep-files-mapped.
10843
10844 2009-10-27  Cary Coutant  <ccoutant@google.com>
10845
10846         * symtab.cc (add_from_pluginobj): Pass correct value for is_ordinary.
10847         * testsuite/Makefile.am (plugin_test_5): New test case.
10848         * testsuite/Makefile.in: Regenerate.
10849
10850 2009-10-25  Doug Kwan  <dougkwan@google.com>
10851
10852         * object.h (Sized_relobj::View_size, Sized_relobj::Views): Change
10853         from private to protected to allow access by child class.
10854         (Sized_relobj::do_relocate_sections): New method declaration.
10855         (Sized_relobj::relocate_sections): Virtualize.
10856         * reloc.cc (Sized_relobj::do_relocate_sections): Rename from
10857         Sized_relobj::relocate_sections.  Instantiate template explicitly
10858         for different target sizes and endianity.
10859
10860 2009-10-24  Doug Kwan  <dougkwan@google.com>
10861
10862         * arm.cc (Arm_output_section, Arm_relobj): Forward class declarations.
10863         (Arm_input_section::as_arm_input_section): New method.
10864         (Arm_output_section): New class definition.
10865         (Arm_output_section::create_stub_group,
10866         Arm_output_section::group_sections): New method definitions.
10867
10868 2009-10-22  Doug Kwan  <dougkwan@google.com>
10869
10870         * arm.cc (Arm_input_section): New class definition.
10871         (Arm_input_section::init, Arm_input_section:do_write,
10872         Arm_input_section::set_final_data_size,
10873         Arm_input_section::do_reset_address_and_file_offset): New method
10874         definitions.
10875
10876 2009-10-21  Doug Kwan  <dougkwan@google.com>
10877
10878         * arm.cc (Stub_table, Arm_input_section): New forward class
10879         declarations.
10880         (Stub_table): New class defintion.
10881         (Stub_table::add_reloc_stub, Stub_table::relocate_stubs
10882         Stub_table::do_reset_address_and_file_offset, Stub_table::do_write):
10883         New method definition.
10884
10885 2009-10-21  Doug Kwan  <dougkwan@google.com>
10886
10887         * arm.cc: Update copyright comments.
10888         (Target_arm): New forward class template declaration.
10889         (Arm_address): New type.
10890         (ARM_MAX_FWD_BRANCH_OFFSET, ARM_MAX_BWD_BRANCH_OFFSET,
10891         THM_MAX_FWD_BRANCH_OFFSET, THM_MAX_BWD_BRANCH_OFFSET,
10892         THM2_MAX_FWD_BRANCH_OFFSET, THM2_MAX_BWD_BRANCH_OFFSET): New
10893         constants.
10894         (Insn_template): Same.
10895         (DEF_STUBS): New macro.
10896         (Stub_type): New enum type.
10897         (Stub_template): New class definition.
10898         (Stub): Same.
10899         (Reloc_stub): Same.
10900         (Stub_factory): Same.
10901         (Target_arm::Target_arm): Initialize may_use_blx_ and
10902         should_force_pic_veneer_.
10903         (Target_arm::may_use_blx, Target_arm::set_may_use_blx,
10904         Target_arm::should_force_pic_veneer,
10905         Target_arm::set_should_force_pic_veneer, Target_arm::using_thumb2,
10906         Target_arm::using_thumb_only, Target_arm:;default_target): New
10907         method defintions.
10908         (Target_arm::may_use_blx_, Target_arm::should_force_pic_veneer_):
10909         New data member declarations.
10910         (Insn_template::size, Insn_template::alignment): New method defintions.
10911         (Stub_template::Stub_template): New method definition.
10912         (Reloc_stub::Key::name, Reloc_stub::stub_type_for_reloc,
10913         Reloc_stub::do_fixed_endian_write, Reloc_stub::do_write): Same.
10914         (Stub_factory::Stub_factory): New method definition.
10915         * gold.h (string_hash): New template.
10916         * output.h (Input_section_specifier::hash_value): Use
10917         gold::string_hash.
10918         (Input_section_specifier::string_hash): Remove.
10919         * stringpool.cc (Stringpool_template::string_hash): Use
10920         gold::string_hash.
10921
10922 2009-10-20  Doug Kwan  <dougkwan@google.com>
10923
10924         * object.cc (Sized_relobj::do_finalize_local_symbols): Handle section
10925         symbols of relaxed input sections.
10926         * output.h (Output_section::find_relaxed_input_section): Make
10927         method public.
10928
10929 2009-10-16  Doug Kwan  <dougkwan@google.com>
10930
10931         * dynobj.cc (Versions::Versions): Initialize version_script_.
10932         Only insert base version symbol definition for a shared object
10933         if version script defines any version versions.
10934         (Versions::define_base_version): New method definition.
10935         (Versions::add_def): Check that base version is not needed.
10936         (Versions::add_need): Define base version lazily.
10937         * dynobj.h (Versions::define_base_version): New method declaration.
10938         (Versions::needs_base_version_): New data member declaration.
10939         * testsuite/Makefile.am (check_SCRIPTS): Add no_version_test.sh
10940         (check_DATA): Add no_version_test.stdout.
10941         (libno_version_test.so, no_version_test.o no_version_test.stdout):
10942         New make rules.
10943         * testsuite/Makefile.in: Regenerate.
10944         * testsuite/no_version_test.c: New file.
10945         * testsuite/no_version_test.sh: Ditto.
10946
10947 2009-10-16  Doug Kwan  <dougkwan@google.com>
10948
10949         * expression.cc (class Segment_start_expression): New class definition.
10950         (Segment_start_expression::value): New method definition.
10951         (script_exp_function_segment_start): Return a new
10952         Segment_start_expression.
10953         * gold/script-c.h (script_saw_segment_start_expression): New function
10954         prototype.
10955         * script-sections.cc (Script_sections::Script_sections): Initialize
10956         SAW_SEGMENT_START_EXPRESSION_ to false.
10957         (Script_sections::set_section_addresses): Use -Ttext, -Tdata
10958         and -Tbbs options to specify section addresses if given in
10959         command line and no SEGMENT_START expression is seen in a script.
10960         * script-sections.h (Script_sections::saw_segment_start_expression,
10961         Script_sections::set_saw_segment_start_expression): New method
10962         definition.
10963         (Script_sections::saw_segment_start_expression_): New data member
10964         declaration.
10965         * script.cc (script_saw_segment_start_expression): New function.
10966         * yyscript.y (SEGMENT_START): Call script_saw_segment_start_expression.
10967         * testsuite/Makefile.am (check_SCRIPTS): Add script_test_6.sh,
10968         script_test_7.sh and script_test_8.sh.
10969         (check_DATA): Add script_test_6.stdout, script_test_7.stdout and
10970         script_test_8.stdout.
10971         (MOSTLYCLEANFILES): Add script_test_6, script_test_7 and script_test_8.
10972         (script_test_6, script_test_6.stdout, script_test_7,
10973         script_test_7.stdout, script_test_8, script_test_8.stdout): New rules.
10974         * Makefile.in: Regenerate.
10975         * testsuite/script_test_6.sh: New file.
10976         * testsuite/script_test_6.t: Same.
10977         * testsuite/script_test_7.sh: Same.
10978         * testsuite/script_test_7.t: Same.
10979         * testsuite/script_test_8.sh: Same.
10980
10981 2009-10-16  Doug Kwan  <dougkwan@google.com>
10982
10983         * output.cc (Output_segment::set_section_list_address): Cast
10984         expressions to unsigned long long type to avoid format warnings.
10985
10986 2009-10-15  Ian Lance Taylor  <iant@google.com>
10987
10988         * script.cc (Script_options::add_symbol_assignment): Always add a
10989         dot assignment to script_sections_.
10990         * script-sections.cc (Script_sections::add_dot_assignment):
10991         Initialize if necessary.
10992
10993         * layout.cc (Layout::relaxation_loop_body): Don't crash if we see
10994         program headers with no load segment if there is a linker script.
10995
10996         * layout.cc (Layout::set_segment_offsets): Align the file offset
10997         to the segment aligment for -N or -n with no load segment.
10998         * output.cc (Output_segment::add_output_section): Don't crash if
10999         the first section is a TLS section.
11000         (Output_segment::set_section_list_addresses): Print an error
11001         message if the address moves backward in a linker script.
11002         * script-sections.cc
11003         (Output_section_element_input::set_section_addresses): Don't
11004         increase *dot_value for a SHF_TLS/SHT_NOBITS section.
11005         (Orphan_output_section::set_section_addresses): Likewise.
11006
11007 2009-10-15  Doug Kwan  <dougkwan@google.com>
11008
11009         * layout.cc (Layout::finish_dynamic_section): Generate tags
11010         DT_FINI_ARRAY, DT_FINI_ARRAYSZ, DT_INIT_ARRAY, DT_INIT_ARRAYSZ,
11011         DT_PREINIT_ARRAY, DT_PREINIT_ARRAYSZ as needed. If -Bsymbolic is
11012         used, add DT_SYMBOLIC and set DF_SYMBOLIC in DT_FLAGS.
11013
11014 2009-10-14  Ian Lance Taylor  <iant@google.com>
11015
11016         * object.h (class Relocate_info): Add reloc_shdr and data_shdr
11017         fields.
11018         * object.cc (Sized_relobj::relocate_sections): Set reloc_shdr and
11019         data_shdr fields of relinfo.
11020         * i386.cc (class Target_i386::Relocate): Remove ldo_addrs_ field.
11021         (Target_i386::Relocate::relocate_tls): Don't call fix_up_ldo.  For
11022         R_386_TLS_LDO_32, adjust based on section flags.
11023         (Target_i386::Relocate::fix_up_ldo): Remove.
11024
11025 2009-10-13  Ian Lance Taylor  <iant@google.com>
11026
11027         Add support for -pie.
11028         * options.h (class General_options): Add -pie and
11029         --pic-executable.
11030         (General_options::output_is_position_independent): Test -pie.
11031         (General_options::output_is_executable): Return true if not shared
11032         and not relocatable.
11033         (General_options::output_is_pie): Remove.
11034         * options.cc (General_options::finalize): Reject incompatible uses
11035         of -pie.
11036         * gold.cc (queue_middle_tasks): A -pie link is not static.
11037         * symtab.h (Symbol::needs_plt_entry): Return false if -pie.
11038         * symtab.cc (Symbol::final_value_is_known): Return false if
11039         output_is_position_independent.
11040         * layout.cc (Layout::set_segment_offsets): Start at address 0 if
11041         output_is_position_independent.
11042         * output.cc (Output_file_header::do_sized_write): Use ET_DYN if
11043         output_is_position_independent.
11044         * i386.cc (Output_data_plt_i386::do_write): Use the PIC PLT if
11045         output_is_position_independent.
11046         * testsuite/Makefile.am (check_PROGRAMS): Add basic_pie_test and
11047         two_file_pie_test.
11048         (basic_pie_test.o, basic_pie_test): New targets.
11049         (two_file_test_1_pie.o, two_file_test_1b_pie.o): New targets.
11050         (two_file_test_2_pie.o, two_file_test_main_pie.o): New targets.
11051         (two_file_pie_test): New target.
11052         * testsuite/Makefile.in: Rebuild.
11053         * README: Remove note saying that -pie is not supported.
11054
11055 2009-10-13  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11056
11057         * options.h (class General_options): Add -init and -fini.
11058         * layout.cc (Layout::finish_dynamic_section): Emit
11059         given init and fini functions.
11060
11061 2009-10-13  Sriraman Tallam  <tmsriram@google.com>
11062
11063         * gc.h (gc_process_relocs): Check if icf is enabled using new
11064         function.
11065         * gold.cc (queue_initial_tasks): Likewise.
11066         (queue_middle_tasks): Likewise.
11067         * object.cc (do_layout): Likewise.
11068         * symtab.cc (is_section_folded): Likewise.
11069         * main.cc (main): Likewise.
11070         * reloc.cc (Read_relocs::run): Likewise.
11071         (Sized_relobj::do_scan_relocs): Likewise.
11072         * icf.cc (is_function_ctor_or_dtor): New function.
11073         (Icf::find_identical_sections): Check if function is ctor or dtor when
11074         safe icf is chosen.
11075         * options.h (General_options::icf): Change option to be an enum.
11076         (Icf_status): New enum.
11077         (icf_enabled): New method.
11078         (icf_safe_folding): New method.
11079         (set_icf_status): New method.
11080         (icf_status_): New variable.
11081         * (options.cc) (General_options::finalize): Set icf_status_.
11082         * testsuite/Makefile.am: Add commands to build icf_safe_test. Modify
11083         icf_test and icf_keep_unique_test to use the --icf enum flag.
11084         * testsuite/icf_safe_test.sh: New file.
11085         * testsuite/icf_safe_test.cc: New file.
11086
11087 2009-10-12  Sriraman Tallam  <tmsriram@google.com>
11088
11089         * symtab.h: Check for GOLD_SYMTAB_H before header includes. Remove
11090         includes to gc.h and icf.h.
11091         * arm.cc: Include gc.h.
11092         * gold.cc: Likewise.
11093         * i386.cc: Likewise.
11094         * powerpc.cc: Likewise.
11095         * sparc.cc: Likewise.
11096         * x86_64.cc: Likewise.
11097         * gc.h: Include icf.h.
11098
11099 2009-10-11  Ian Lance Taylor  <iant@google.com>
11100
11101         * plugin.cc: Include "gold.h" before other header files.
11102
11103 2009-10-10  Chris Demetriou  <cgd@google.com>
11104
11105         * options.h (Input_file_argument::Input_file_type): New enum.
11106         (Input_file_argument::is_lib_): Replace with...
11107         (Input_file_argument::type_): New member.
11108         (Input_file_argument::Input_file_argument): Take Input_file_type
11109         'type' rather than boolean 'is_lib' as second argument.
11110         (Input_file_argument::is_lib): Use type_.
11111         (Input_file_argument::is_searched_file): New function.
11112         (Input_file_argument::may_need_search): Handle is_searched_file.
11113         * options.cc (General_options::parse_library): Support -l:filename.
11114         (General_options::parse_just_symbols): Update for Input_file_argument
11115         changes.
11116         (Command_line::process): Likewise.
11117         * archive.cc (Archive::get_file_and_offset): Likewise.
11118         * plugin.cc (Plugin_manager::release_input_file): Likewise.
11119         * script.cc (read_script_file, script_add_file): Likewise.
11120         * fileread.cc (Input_file::Input_file): Likewise.
11121         (Input_file::will_search_for): Handle is_searched_file.
11122         (Input_file::open): Likewise.
11123         * readsyms.cc (Read_symbols::get_name): Likewise.
11124         * testsuite/Makefile.am (searched_file_test): New test.
11125         * testsuite/Makefile.in: Regenerate.
11126         * testsuite/searched_file_test.cc: New file.
11127         * testsuite/searched_file_test_lib.cc: New file.
11128
11129 2009-10-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11130             Ian Lance Taylor  <iant@google.com>
11131
11132         * descriptor.cc: Include <cstdio> and "binary-io.h".
11133         (Descriptors::open): Open the files in binary mode always.
11134         * script.cc (Lex::get_token): Treat \r as whitespace.
11135
11136 2009-10-09  Ian Lance Taylor  <iant@google.com>
11137
11138         * testsuite/retain_symbols_file_test.sh: Don't test for __tcf_0.
11139
11140 2009-10-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11141             Ian Lance Taylor  <iant@google.com>
11142
11143         * configure.ac: Check for readv function also.
11144         * fileread.cc (readv): Define if not HAVE_READV.
11145         * fileread.h (File_read:: max_readv_entries): Set to 1 if readv
11146         does not exist.
11147         * config.in: Regenerate.
11148         * configure: Regenerate.
11149
11150 2009-10-09  Doug Kwan  <dougkwan@google.com>
11151
11152         * layout.cc (Layout::make_output_section): Call target hook to make
11153         ordinary output section.
11154         (Layout::finalize): Adjust parameter list of call the
11155         Target::may_relax().
11156         * layout.h (class Layout::section_list): New method.
11157         * merge.h (Output_merge_base::entsize): Change visibility to public.
11158         (Output_merge_base::is_string, Output_merge_base::do_is_string):
11159         New methods.
11160         (Output_merge_string::do_is_string): New method.
11161         * object.cc (Sized_relobj::do_setup): renamed from
11162         Sized_relobj::set_up.
11163         * object.h (Sized_relobj::adjust_shndx,
11164         Sized_relobj::initializ_input_to_output_maps,
11165         Sized_relobj::free_input_to_output_maps): Change visibilities to
11166         protected.
11167         (Sized_relobj::setup): Virtualize.
11168         (Sized_relobj::do_setup): New method declaration.
11169         (Sized_relobj::invalidate_section_offset,
11170         Sized_relobj::do_invalidate_section_offset): New method decfinitions.
11171         (Sized_relobj::elf_file, Sized_relobj::local_values): New methods.
11172         * options.cc (parse_int): New function.
11173         * options.h (parse_int): New declaration.
11174         (DEFINE_int): New macro.
11175         (stub_group_size): New option.
11176         * output.cc (Output_section::Output_section): Initialize memebers
11177         merge_section_map_, merge_section_by_properties_map_,
11178         relaxed_input_section_map_, is_relaxed_input_section_map_valid_.
11179         (Output_section::add_input_section): Handled deferred code-fill
11180         generation and remove an old comment.
11181         (Output_section::add_relaxed_input_section): New method definition.
11182         (Output_section::add_merge_input_section): Use merge section by
11183         properties map to speed to search.  Update merge section maps
11184         as appropriate.
11185         (Output_section::build_relaxation_map): New method definition.
11186         (Output_section::convert_input_sections_in_list_to_relaxed_sections):
11187         Same.
11188         (Output_section::relax_input_section): Renamed to
11189         Output_section::convert_input_sections_to_relaxed_sections and change
11190         interface to take a vector of pointers to relaxed sections.
11191         (Output_section::find_merge_section,
11192         Output_section::find_relaxed_input_section): New method definitions.
11193         (Output_section::is_input_address_mapped,
11194         Output_section::output_offset, Output_section::output_address):
11195         Use output section data maps to speed up searching.
11196         (Output_section::find_starting_output_address): Add comments.
11197         (Output_section::do_write,
11198         Output_section::write_to_postprocessing_buffer): Do code-fill
11199         generation as appropriate.
11200         (Output_section::get_input_sections): Invalidate relaxed input section
11201         map.
11202         (Output_section::restore_states): Adjust type of checkpoint .
11203         Invalidate relaxed input section map.
11204         * output.h (Output_merge_base): New class declaration.
11205         (Input_section_specifier): New class defintion.
11206         (class Output_relaxed_input_section) Change base class to
11207         Output_section_data_build.
11208         (Output_relaxed_input_section::Output_relaxed_input_section): Adjust
11209         base class initializer.
11210         (Output_section::add_relaxed_input_section): New method declaration.
11211         (Output_section::Input_section): Change visibility to protected.
11212         (Output_section::Input_section::relobj,
11213         Output_section::Input_section::shndx): Handle relaxed input sections.
11214         Output_section::input_sections) Change visibility to protected.  Also
11215         define overload to return a non-const pointer.
11216         (Output_section::Merge_section_properties): New class defintion.
11217         (Output_section::Merge_section_by_properties_map,
11218         Output_section::Output_section_data_by_input_section_map,
11219         Output_section::Relaxation_map): New types.
11220         (Output_section::relax_input_section): Rename method to
11221         Output_section::convert_input_sections_to_relaxed_sections and change
11222         interface to take a vector of relaxed section pointers.
11223         (Output_section::find_merge_section,
11224         Output_section::find_relaxed_input_section,
11225         Output_section::build_relaxation_map,
11226         Output_section::convert_input_sections_in_list_to_relaxed_sections):
11227         New method declarations.
11228         (Output_section::merge_section_map_
11229         Output_section::merge_section_by_properties_map_,
11230         Output_section::relaxed_input_section_map_,
11231         Output_section::is_relaxed_input_section_map_valid_,
11232         Output_section::generate_code_fills_at_write_): New data members.
11233         * script-sections.cc
11234         (Output_section_element_input::set_section_addresses): Call
11235         current_data_size and addralign methods of relaxed input sections.
11236         (Orphan_output_section::set_section_addresses): Call current_data_size
11237         and addralign methods of relaxed input sections.
11238         * symtab.cc (Symbol_table::compute_final_value): Extract template
11239         from the body of Symbol_table::sized_finalize_symbol.
11240         (Symbol_table::sized_finalized_symbol): Call
11241         Symbol_table::compute_final_value.
11242         * symtab.h (Symbol_table::Compute_final_value_status): New enum type.
11243         (Symbol_table::compute_final_value): New templated method declaration.
11244         * target.cc (Target::do_make_output_section): New method defintion.
11245         * target.h (Target::make_output_section): New method declaration.
11246         (Target::relax): Add more parameters for input objects, symbol table
11247         and layout.  Adjust call to do_relax.
11248         (Target::do_make_output_section): New method declaration.
11249         (Target::do_relax): Add parameters for input objects, symbol table
11250         and layout.
11251
11252 2009-10-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11253
11254         * pread.c: Include stdio.h.
11255
11256 2009-10-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11257
11258         * plugin.cc: Don't include dlfcn.h when ENABLE_PLUGINS is not
11259         defined.
11260
11261 2009-10-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11262
11263         * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
11264         Change read_shndx type to unsigned int.
11265         (Sized_dwarf_line_info::read_lines): Change shndx type to unsigned
11266         int.
11267         (Sized_dwarf_line_info::read_line_mappings): Likewise.
11268         * dwarf_reader.h (Sized_dwarf_line_info::Sized_dwarf_line_info):
11269         Change read_shndx type to unsigned int.
11270         (Sized_dwarf_line_info::read_lines): Change shndx type to unsigned
11271         int.
11272         (Sized_dwarf_line_info::read_line_mappings): Likewise.
11273         * layout.cc (Layout::create_symtab_sections): Cast the result of
11274         local_symcount * symsize to off_t in the gold_assert.
11275
11276 2009-10-09  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
11277
11278         * arm.cc (Target_arm::relocate::reloc_is_non_pic): Return true for
11279         R_ARM_THM_ABS5, R_ARM_ABS8, R_ARM_ABS12, R_ARM_ABS16,
11280         R_ARM_BASE_ABS.
11281         (Arm_relocate_functions::abs8): Remove has_thumb_bit parameter.
11282         (Arm_relocate_functions::thm_abs5): New function.
11283         (Arm_relocate_functions::abs12): New function.
11284         (Arm_relocate_functions::abs16): New function.
11285         (Arm_relocate_functions::base_abs): New function.
11286         (Scan::check_non_pic): Handle R_ARM_ABS32_NOI.
11287         (Scan::local): Remove special handling of R_ARM_ABS8.  Handle
11288         R_ARM_ABS32_NOI, R_ARM_THM_ABS5, R_ARM_ABS12, R_ARM_ABS16, and
11289         R_ARM_BASE_ABS.
11290         (Scan::global): Likewise.
11291         (Relocate::relocate): Handle R_ARM_ABS12, R_ARM_ABS16,
11292         R_ARM_ABS32_NOI, R_ARM_THM_ABS5, and R_ARM_BASE_ABS.
11293         (Relocatable_size_for_reloc::get_size_for_reloc): Handle
11294         R_ARM_ABS16, R_ARM_THM_ABS5, R_ARM_ABS32_NOI, R_ARM_ABS12, and
11295         R_ARM_BASE_ABS.
11296
11297 2009-10-09  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
11298
11299         * arm.cc (Arm_relocate_functions::movw_prel_nc): New function.
11300         (Arm_relocate_functions::movt_prel): New function.
11301         (Arm_relocate_functions::thm_movw_prel_nc): New function.
11302         (Arm_relocate_functions::thm_movt_prel): New function.
11303         (Scan::local): Handle R_ARM_MOVW_PREL_NC, R_ARM_MOVT_PREL,
11304         R_ARM_THM_MOVW_PREL_NC, and R_ARM_THM_MOVT_PREL.
11305         (Scan::global, Relocate::relocate): Likewise.
11306         (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
11307
11308 2009-10-09  Mikolaj Zalewski  <mikolajz@google.com>
11309
11310         * gold.cc: (queue_initial_tasks): Pass incremental_inputs to
11311         Incremental_checker.
11312         * incremental.cc: (INCREMENTAL_LINK_VERSION): Change type to
11313         unsigned int.
11314         (class Incremental_inputs_header): New class.
11315         (Incremental_inputs_header_writer): Edit comment.
11316         (Incremental_inputs_entry): New class.
11317         (Incremental_inputs_entry_writer): Edit comment.
11318         (Sized_incremental_binary::do_find_incremental_inputs_section):
11319         Add *strtab_shndx parameter, fill it.
11320         (Sized_incremental_binary::do_check_inputs): New method.
11321         (Incremental_checker::can_incrementally_link_output_file): Use
11322         Sized_incremental_binary::check_inputs.
11323         (Incremental_inputs::report_command_line): Save command line in
11324         command_line_.
11325         * incremental.h:
11326         (Incremental_binary::find_incremental_inputs_section): New
11327         method.
11328         (Incremental_binary::do_find_incremental_inputs_section): Add
11329         strtab_shndx parameter.
11330         (Incremental_binary::do_check_inputs): New pure virtual method.
11331         (Sized_incremental_binary::do_check_inputs): Declare.
11332         (Incremental_checker::Incremental_checker): Add incremental_inputs
11333         parameter, use it to initialize incremental_inputs_.
11334         (Incremental_checker::incremental_inputs_): New field.
11335         (Incremental_checker::command_line): New method.
11336         (Incremental_checker::inputs): New method.
11337         (Incremental_checker::command_line_): New field.
11338
11339 2009-10-09  Mikolaj Zalewski  <mikolajz@google.com>
11340
11341         * incremental.cc: Include <cstdarg> and "target-select.h".
11342         (vexplain_no_incremental): New function.
11343         (explain_no_incremental): New function.
11344         (Incremental_binary::error): New method.
11345         (Sized_incremental_binary::do_find_incremental_inputs_section): New
11346         method.
11347         (make_sized_incremental_binary): New function.
11348         (open_incremental_binary): New function.
11349         (can_incrementally_link_file): Add checks if output is ELF and has
11350         inputs section.
11351         * incremental.h: Include "elfcpp_file.h" and "output.h".
11352         (Incremental_binary): New class.
11353         (Sized_incremental_binary): New class.
11354         (open_incremental_binary): Declare.
11355         * object.cc (is_elf_object): Use
11356         elfcpp::Elf_recognizer::is_elf_file.
11357         (make_elf_object): Use elfcpp::Elf_recognizer::is_valid_header.
11358         * output.h (Output_file::filesize): New method.
11359
11360 2009-10-07  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
11361
11362         * arm.cc (Arm_relocate_functions::extract_arm_movw_movt_addend):
11363         New function.
11364         (Arm_relocate_functions::insert_val_arm_movw_movt): New function.
11365         (Arm_relocate_functions::extract_thumb_movw_movt_addend): New
11366         function.
11367         (Arm_relocate_functions::insert_val_thumb_movw_movt): New
11368         function.
11369         (Arm_relocate_functions::movw_abs_nc): New function.
11370         (Arm_relocate_functions::movt_abs): New function.
11371         (Arm_relocate_functions::thm_movw_abs_nc): New function.
11372         (Arm_relocate_functions::thm_movt_abs): New function.
11373         (Scan::local): Handle R_ARM_MOVW_ABS_NC, R_ARM_MOVT_ABS,
11374         R_ARM_THM_MOVW_ABS_NC, R_ARM_THM_MOVT_ABS.
11375         (Scan::global): Likewise.
11376         (Relocate::relocate): Likewise.
11377         (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
11378
11379 2009-10-07  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
11380
11381         * arm.cc (Arm_relocate_functions::got_prel) New function.
11382         (Scan::local, Scan::global): Handle R_ARM_GOT_PREL.
11383         (Relocate::relocate): Likewise.
11384         (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
11385
11386 2009-10-06  Ian Lance Taylor  <iant@google.com>
11387
11388         * options.h (class General_options): Define
11389         split_stack_adjust_size parameter.
11390         * object.h (class Object): Add uses_split_stack_ and
11391         has_no_split_stack_ fields.  Add uses_split_stack and
11392         has_no_split_stack accessor functions.  Declare
11393         handle_split_stack_section.
11394         (class Reloc_symbol_changes): Define.
11395         (class Sized_relobj): Define Function_offsets.  Declare
11396         split_stack_adjust, split_stack_adjust_reltype, and
11397         find_functions.
11398         * object.cc (Object::handle_split_stack_section): New function.
11399         (Sized_relobj::do_layout): Call handle_split_stack_section.
11400         * dynobj.cc (Sized_dynobj::do_layout): Call
11401         handle_split_stack_section.
11402         * reloc.cc (Sized_relobj::relocate_sections): Call
11403         split_stack_adjust for executable sections in split_stack
11404         objects.  Pass reloc_map to relocate_section.
11405         (Sized_relobj::split_stack_adjust): New function.
11406         (Sized_relobj::split_stack_adjust_reltype): New function.
11407         (Sized_relobj::find_functions): New function.
11408         * target-reloc.h: Include "object.h".
11409         (relocate_section): Add reloc_symbol_changes parameter.  Change
11410         all callers.
11411         * target.h (class Target): Add calls_non_split method.  Declare
11412         do_calls_non_split virtual method.  Declare match_view and
11413         set_view_to_nop.
11414         * target.cc: Include "elfcpp.h".
11415         (Target::do_calls_non_split): New function.
11416         (Target::match_view): New function.
11417         (Target::set_view_to_nop): New function.
11418         * gold.cc (queue_middle_tasks): Give an error if mixing
11419         split-stack and non-split-stack objects with -r.
11420         * i386.cc (Target_i386::relocate_section): Add
11421         reloc_symbol_changes parameter.
11422         (Target_i386::do_calls_non_split): New function.
11423         * x86_64.cc (Target_x86_64::relocate_section): Add
11424         reloc_symbol_changes parameter.
11425         (Target_x86_64::do_calls_non_split): New function.
11426         * arm.cc (Target_arm::relocate_section): Add reloc_symbol_changes
11427         parameter.
11428         * powerpc.cc (Target_powerpc::relocate_section): Add
11429         reloc_symbol_changes parameter.
11430         * sparc.cc (Target_sparc::relocate_section): Add
11431         reloc_symbol_changes parameter.
11432         * configure.ac: Call AM_CONDITIONAL for the default target.
11433         * configure: Rebuild.
11434         * testsuite/Makefile.am (TEST_AS): New variable.
11435         (check_SCRIPTS): Add split_i386.sh and split_x86_64.sh.
11436         (check_DATA): Add split_i386 and split_x86_64 files.
11437         (SPLIT_DEFSYMS): Define.
11438         (split_i386_[1234n].o): New targets.
11439         (split_i386_[124]): New targets.
11440         (split_i386_[1234r].stdout): New targets.
11441         (split_x86_64_[1234n].o): New targets.
11442         (split_x86_64_[124]): New targets.
11443         (split_x86_64_[1234r].stdout): New targets.
11444         (MOSTLYCLEANFILES): Add new executables.
11445         * testsuite/split_i386.sh: New file.
11446         * testsuite/split_x86_64.sh: New file.
11447         * testsuite/split_i386_1.s: New file.
11448         * testsuite/split_i386_2.s: New file.
11449         * testsuite/split_i386_3.s: New file.
11450         * testsuite/split_i386_4.s: New file.
11451         * testsuite/split_i386_n.s: New file.
11452         * testsuite/split_x86_64_1.s: New file.
11453         * testsuite/split_x86_64_2.s: New file.
11454         * testsuite/split_x86_64_3.s: New file.
11455         * testsuite/split_x86_64_4.s: New file.
11456         * testsuite/split_x86_64_n.s: New file.
11457         * testsuite/testfile.cc (Target_test): Update relocation_section
11458         function.
11459         * testsuite/Makefile.in: Rebuild.
11460
11461 2009-10-06  Ian Lance Taylor  <iant@google.com>
11462
11463         * i386.cc (class Target_i386::Relocate): Add ldo_addrs_ field.
11464         (Target_i386::Relocate::relocate_tls): Call fix_up_ldo before
11465         changing local_dynamic_type_ from LOCAL_DYNAMIC_NONE.  When
11466         handling R_386_TLS_LDO_32, if local_dynamic_type_ is NONE, push
11467         the address on ldo_addrs_.
11468         (Target_i386::Relocate::fix_up_ldo): New function.
11469
11470 2009-10-06   Rafael Espindola  <espindola@google.com>
11471
11472         * plugin.cc (add_input_library): New.
11473         (Plugin::load): Add add_input_library to tv.
11474         (Plugin_manager::add_input_file): Add the is_lib argument.
11475         (add_input_file): Update call to Plugin_manager::add_input_file.
11476         (add_input_library): New.
11477         * plugin.h (Plugin_manager::add_input_file): Add the is_lib argument.
11478
11479 2009-09-30  Doug Kwan  <dougkwan@google.com>
11480
11481         * arm.cc (Target_arm::may_need_copy_reloc): Check for THUMB function
11482         symbol and call Symbol::may_need_copy_reloc to determine if
11483         a copy reloc is needed.
11484         * copy-relocs.cc (Copy_relocs::need_copy_reloc): Return false if -z
11485         nocopyreloc is given in command line.
11486         (Copy_relocs::emit_copy_reloc): Assert that -z nocopyreloc is not
11487         given in command line.
11488         * i386.cc (Target_i386::may_need_copy_reloc): Remove.
11489         (Target_i386::Scan::global): Use Symbol::may_need_copy_reloc instead
11490         of the removed Target_i386::may_need_copy_reloc.
11491         * options.h (copyreloc): New option with default value false.
11492         * powerpc.cc (Target_powerpc::may_need_copy_reloc): Remove.
11493         (Target_powerpc::Scan::global): Use Symbol::may_need_copy_reloc
11494         instead of the removed Target_powerpc::may_need_copy_reloc.
11495         * sparc.cc (Target_powerpc::may_need_copy_reloc): Remove.
11496         (Target_sparc::Scan::global): Use Symbol::may_need_copy_reloc
11497         instead of the removed Target_sparc::may_need_copy_reloc.
11498         * symtab.h (Symbol::may_need_copy_reloc): New method definition.
11499         * x86_64.cc (Target_powerpc::may_need_copy_reloc): Remove.
11500         (Target_x86_64::Scan::global): Use Symbol::may_need_copy_reloc
11501         instead of the removed Target_x86_64::may_need_copy_reloc.
11502
11503 2009-09-30  Ian Lance Taylor  <iant@google.com>
11504
11505         * object.h (class Object): Remove target_ field, and target,
11506         sized_target, and set_target methods.
11507         (Object::sized_target): Remove.
11508         (class Sized_relobj): Update declarations.  Remove sized_target.
11509         * object.cc (Sized_relobj::setup): Remove target parameter.
11510         Change all callers.
11511         (Input_objects::add_object): Don't do anything with the target.
11512         (make_elf_sized_object): Add punconfigured parameter.  Change all
11513         callers.  Set or test parameter target.
11514         * dynobj.cc (Sized_dynobj::target): Remove target parameter.
11515         Change all callers.
11516         * parameters.cc (Parameters::set_target): Change parameter type to
11517         be non-const.
11518         (Parameters::default_target): Remove.
11519         (set_parameters_target): Change parameter type to be non-const.
11520         (parameters_force_valid_target): New function.
11521         (parameters_clear_target): New function.
11522         * parameters.h (class Parameters): Update declarations.  Remove
11523         default_target method.  Add sized_target and clear_target
11524         methods.  Change target_ to be non-const.
11525         (set_parameters_target): Update declaration.
11526         (parameters_force_valid_target): Declare.
11527         (parameters_clear_target): Declare.
11528         * readsyms.cc (Read_symbols::do_read_symbols): Pass punconfigured
11529         as NULL if we aren't searching.
11530         (Add_symbols::run): Don't check for compatible target.
11531         * fileread.cc (Input_file::open_binary): Call
11532         parameters_force_valid_target.
11533         * gold.cc (queue_middle_tasks): Likewise.
11534         * plugin.cc (make_sized_plugin_object): Likewise.  Don't call
11535         set_target on object.
11536         * dynobj.h (class Sized_dynobj): Update declarations.
11537         * archive.cc (Archive::get_elf_object_for_member): Return NULL if
11538         make_elf_object returns NULL.
11539         (Archive::include_member): Don't check whether object target is
11540         compatible.
11541         * output.cc (Output_section::add_input_section): Get target from
11542         parameters.
11543         (Output_section::relax_input_section): Likewise.
11544         * reloc.cc (Sized_relobj::do_gc_process_relocs): Get target from
11545         parameters.
11546         (Sized_relobj::do_scan_relocs): Likewise.
11547         (Sized_relobj::relocate_sections): Likewise.
11548         * resolve.cc (Symbol_table::resolve): Likewise.
11549         * symtab.cc (Symbol_table::wrap_symbol): Likewise.  Remove object
11550         parameter.  Change all callers.
11551         (Symbol_table::add_from_object): Get target from parameters.
11552         (Symbol_table::add_from_relobj): Don't check object target.
11553         (Symbol_table::add_from_dynobj): Likewise.
11554         (Symbol_table::define_special_symbol): Get target from
11555         parameters.
11556         * symtab.h (class Symbol_table): Update declaration.
11557         * testsuite/binary_unittest.cc (gold_testsuite): Remove target
11558         parameter.  Change all callers.  Clear parameter target.
11559         (Binary_test): Test target here.
11560         * testsuite/object_unittest.cc (gold_testsuite): Remove
11561         target_test_pointer parameter.  Change all callers.
11562         (Object_test): Test target here.
11563
11564 2009-09-26  Ian Lance Taylor  <iant@google.com>
11565
11566         * testsuite/initpri1.c: Don't try to use constructor priorities if
11567         compiling with gcc before 4.3.
11568
11569 2009-09-22  Mikolaj Zalewski  <mikolajz@google.com>
11570
11571         * testsuite/retain_symbols_file_test.sh (check_present): Change
11572         output file name to retain_symbols_file_test.stdout.
11573         (check_absent): Likewise.
11574
11575 2009-09-18  Craig Silverstein  <csilvers@google.com>
11576
11577         * object.cc (Sized_relobj::do_count): Test should_retain_symbol map.
11578         * options.cc: Include <cerrno> and <fstream>.
11579         (General_options::finalize): Parse -retain-symbols-file tag.
11580         * options.h: New flag.
11581         (General_options): New method should_retain_symbol, new
11582         variable symbols_to_retain.
11583         * symtab.cc (Symbol_table::sized_finalize_symbol): Test
11584         should_retain_symbol map.
11585         * testsuite/Makefile.am (retain_symbols_file_test): New test.
11586         * testsuite/Makefile.in: Regenerate.
11587         * testsuite/retain_symbols_file_test.sh: New file.
11588
11589 2009-09-18  Nick Clifton  <nickc@redhat.com>
11590
11591         * po/es.po: Updated Spanish translation.
11592
11593 2009-09-17  Doug Kwan  <dougkwan@google.com>
11594
11595         * debug.h (DEBUG_RELAXATION): New constant.
11596         (DEBUG_ALL): Add DEBUG_RELAXATION.
11597         (debug_string_to_enum): Add relaxation debug option.
11598         * layout.cc
11599         (Layout::Relaxation_debug_check::check_output_data_for_reset_values,
11600         Layout::Relaxation_debug_check::read_sections,
11601         Layout::Relaxation_debug_check::read_sections): New method definitions.
11602         (Layout::Layout): Initialize data members
11603         record_output_section_data_from_scrips_,
11604         script_output_section_data_list_ and relaxation_debug_check_.
11605         (Layout::save_segments, Layout::restore_segments,
11606         Layout::clean_up_after_relaxation, Layout::prepare_for_relaxation,
11607         Layout::relaxation_loop_body): New method definitions.
11608         (Layout::finalize): Support relaxation.  Move section layout code to
11609         Layout::relaxation_loop_body.
11610         (Layout::set_asection_address_from_script): Move code for orphan
11611         section placement out.
11612         (Layout::place_orphan_sections_in_script): New method definition.
11613         * layout.h (Output_segment_headers, Output_file_header):
11614         New forward class declarations.
11615         (Layout::~Layout): Define.
11616         (Layout::new_output_section_data_from_script): New method definition.
11617         (Layout::place_orphan_sections_in_script): New method declaration.
11618         (Layout::Segment_states): New type declaration.
11619         (Layout::save_segments, Layout::restore_segments,
11620         Layout::clean_up_after_relaxation, Layout::prepare_for_relaxation,
11621         Layout::relaxation_loop_body): New method declarations.
11622         (Layout::Output_section_data_list): New type declaration.
11623         (Layout::Relaxation_debug_check): New class definition.
11624         (Layout::record_output_section_data_from_script_,
11625         Layout::script_output_section_data_list_, Layout::segment_states_,
11626         Layout::relaxation_debug_check_): New data members.
11627         * output.cc: (Output_section_headers::do_size): New method definition.
11628         (Output_section_headers::Output_section_headers): Move size
11629         computation to Output_section_headers::do_size.
11630         (Output_segment_headers::do_size): New method definition.
11631         (Output_file_header::Output_file_header): Move size computation to
11632         Output_file_header::do_size and call it.
11633         (Output_file_header::do_size): New method definition.
11634         (Output_data_group::Output_data_group): Adjust call to
11635         Output_section_data.
11636         (Output_data_dynamic::set_final_data_size): Add DT_NULL tag only once.
11637         (Output_symtab_xindex::do_write): Add array bound check.
11638         (Output_section::Input_section::print_to_mapfile): Handle
11639         RELAXED_INPUT_SECTION_CODE.
11640         (Output_section::Output_section): Initialize data member checkpoint_.
11641         (Output_section::~Output_section): Delete checkpoint object pointed
11642         by checkpoint_.
11643         (Output_section::add_input_section): Always add an Input_section if
11644         relaxing.
11645         (Output_section::add_merge_input_section): Add assert.
11646         (Output_section::relax_input_section): New method definition.
11647         (Output_section::set_final_data_size): Set load address to zero for
11648         an unallocated section.
11649         (Output_section::do_address_and_file_offset_have_reset_values):
11650         New method definition.
11651         (Output_section::Input_section_sort_enty::Input_section_sort_enty):
11652         Handle relaxed input section.
11653         (Output_section::sort_attached_input_sections): Checkpoint input
11654         section list lazily.
11655         (Output_section::get_input_sections): Change type of input_sections to
11656         list of Simple_input_section pointers.  Checkpoint input section list
11657         lazily.  Also handle relaxed input sections.
11658         (Output_section::add_input_section_for_script): Take a reference to
11659         a Simple_input_section object instead of Relobj pointer and section
11660         index as parameter.  Handle relaxed input sections.
11661         (Output_section::save_states, Output_section::restore_states): New
11662         method definitions.
11663         * output.h (Output_data::Output_data): Initialize is_data_size_fixed_.
11664         (Output_data::is_data_size_fixed): New method definition.
11665         (Output_data::reset_addresss_and_file_offset): Do not reset data size
11666         if it is fixed.
11667         (Output_data::address_and_file_offset_have_reset_values): New method
11668         definition.
11669         (Output_data::do_address_and_file_offset_have_reset_values): New method
11670         definition.
11671         (Output_data::set_data_size): Check that data size is not fixed.
11672         (Output_data::fix_data_size): New method definition.
11673         (Output_data::is_data_size_fixed_): New data member.
11674         (Output_section_headers::set_final_data_size): New method definition.
11675         (Output_section_headers::do_size): New method declaration.
11676         (Output_segment_headers::set_final_data_size): New method definition.
11677         (Output_segment_headers::do_size): New method declaration.
11678         (Output_file_header::set_final_data_size)::New method definition.
11679         (Output_file_header::do_size)::New method declaration.
11680         (Output_section_data::Output_section_data): Add new parameter
11681         is_data_size_fixed and use it to fix data size.
11682         (Output_data_const::Output_data_const): Adjust call to base class
11683         constructor and fix data size.
11684         (Output_data_const_buffer::Output_data_const_buffer): Adjust call to
11685         base class constructor and fix data size.
11686         (Output_data_fixed_space::Output_data_fixed_space): Adjust call to
11687         base class constructor and fix data size.
11688         (Output_data_zero_fill::Output_data_zero_fill): Adjust call to base
11689         class constructor and fix data size.
11690         (Output_data_group::set_final_data_size): New method definition.
11691         (Output_data_dynamic::Dynamic_entry::tag): New method definition.
11692         (Output_symtab_xindex::Output_symtab_xindex): Adjust call to base
11693         class constructor and fix data size.
11694         (Output_relaxed_input_section): New class definition.
11695         (Output_section::Simple_input_section): New class definition.
11696         (Output_section::get_input_sections): Adjust parameter list.
11697         (Output_section::add_input_section_for_script): Same.
11698         (Output_section::save_states, Output_section::restore_states,
11699         Output_section::do_address_and_file_offset_have_reset_values,
11700         (Output_section::Input_section::Input_section): Handle
11701         RELAXED_INPUT_SECTION_CODE.  Add new overload for
11702         Output_relaxed_input_section.
11703         (Output_section::Input_section::is_input_section,
11704         Output_section::Input_section::set_output_section): Handle relaxed
11705         input section.
11706         (Output_section::Input_section::is_relaxed_input_section,
11707         Output_section::Input_section::output_section_data,
11708         Output_section::Input_section::relaxed_input_section): New method
11709         definitions.
11710         (Output_section::Input_section::RELAXED_INPUT_SECTION_CODE): New enum
11711         value.
11712         (Output_section::Input_section::u1_): Update comments.
11713         (Output_section::Input_section::u2_): Add new union member poris.
11714         (Output_section::Checkpoint_output_section): New classs definition.
11715         (Output_section::relax_input_section): New method declaration.
11716         (Output_section::checkpoint_): New data member.
11717         (Output_segment): Update comments.
11718         (Output_segment::Output_segment): Un-privatize copy constructor.
11719         (Output_segment::operator=): Un-privatize.
11720         * script-sections.cc (Output_section_element::Input_section_list):
11721         Change element type to Output_section::Simple_input_section.
11722         (Output_section_element_dot_assignment::set_section_addresses):
11723         Register output section data for relaxation clean up.
11724         (Output_data_exression::Output_data_expression): Adjust call to base
11725         constructor to fix data size.
11726         (Output_section_element_data::set_section_addresses): Register
11727         Output_data_expression object for relaxation clean up.
11728         (struct Input_section_info): Replace Relobj pointer and section index
11729         pair with Output_section::Simple_input_section and Convert struct to a
11730         class.
11731         (Input_section_sorter::operator()): Adjust access to
11732         Input_section_info data member to use accessors.
11733         (Output_section_element_input::set_section_addresses): Use layout
11734         parameter.  Adjust code to use Output_section::Simple_input_section
11735         and Input_secction_info classes.  Register filler for relaxation
11736         clean up.
11737         (Orphan_output_section::set_section_addresses): Replace Relobj pointer
11738         and section index pair with Output_section::Simple_input_section
11739         class.  Adjust code accordingly.
11740         (Phdrs_element::release_segment): New method definition.
11741         (Script_sections::attach_sections_using_phdrs_clause): Do not modify
11742         segment list.
11743         (Script_sections::release_segments): New method definition.
11744         * gold/script-sections.h (Script_sections::release_segments): New
11745         method declaration.
11746         * gold/target.h (Target::may_relax, Target::relax,
11747         Target::do_may_relax, Target::do_relax): New method definitions.
11748
11749 2009-09-17  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
11750
11751         * arm.cc (has_signed_unsigned_overflow): New function.
11752         (Arm_relocate_functions::abs8): New function.
11753         (Target_arm::Scan::local): Handle R_ARM_ABS8.
11754         (Target_arm::Scan::global): Likewise.
11755         (Target_arm::relocate::relocate): Likewise.
11756         (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
11757         Likewise.
11758
11759 2009-09-16  Cary Coutant  <ccoutant@google.com>
11760
11761         * testsuite/Makefile.am (MOSTLYCLEANFILES): Add more generated files.
11762         * testsuite/Makefile.in: Regenerate.
11763
11764 2009-09-11  Nick Clifton  <nickc@redhat.com>
11765
11766         * po/gold.pot: Updated by the Translation project.
11767
11768 2009-09-08  Cary Coutant  <ccoutant@google.com>
11769
11770         * output.cc (Output_file::open): Add execute permission to empty file.
11771         * testsuite/Makefile.am (permission_test): New test.
11772         * testsuite/Makefile.in: Regenerate.
11773
11774 2009-09-02  Ian Lance Taylor  <iant@google.com>
11775
11776         * output.cc (Output_file::resize): Call map_no_anonymous rather
11777         than map.
11778
11779 2009-09-01  Mikolaj Zalewski  <mikolajz@google.com>
11780
11781         * gold.cc: Include "incremental.h".
11782         (queue_initial_tasks): Call Incremental_checker methods.
11783         * incremental.cc: Include "output.h".
11784         (Incremental_checker::can_incrementally_link_output_file): New
11785         method.
11786         * incremental.h (Incremental_checker): New class.
11787
11788         * output.cc (Output_file::open_for_modification): New method.
11789         (Output_file::map_anonymous): Changed return type to bool.  Record
11790         map in base_ field.
11791         (Output_file::map_no_anonymous): New method, broken out of map.
11792         (Output_file::map): Use map_no_anonymous and map_anonymous.
11793         * output.h (class Output_file): Update declarations.
11794
11795 2009-08-24  Cary Coutant  <ccoutant@google.com>
11796
11797         * options.h (Command_line::Pre_options): New class.
11798         (Command_line::pre_options): New member.
11799         * options.cc (gold::options::ready_to_register): New variable.
11800         (One_option::register_option): Do nothing if not registering options.
11801         Assert if same short option registered twice.
11802         (General_options::General_options): Turn off option registration when
11803         done constructing.
11804         (Command_line::Pre_options::Pre_options): New constructor.
11805
11806 2009-08-24  Cary Coutant  <ccoutant@google.com>
11807
11808         * options.h (General_options::no_keep_memory): Remove incorrect
11809         short option.
11810
11811 2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11812
11813         * Makefile.am (am__skiplex, am__skipyacc): New.
11814         * Makefile.in: Regenerate.
11815
11816 2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11817
11818         * Makefile.am (AM_CPPFLAGS): Renamed from ...
11819         (INCLUDES): ... this.
11820         * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add -Wno-portability.
11821         (AM_CPPFLAGS): Renamed from ...
11822         (INCLUDE): ... this.
11823         * Makefile.in, testsuite/Makefile.in: Regenerate.
11824
11825         * Makefile.in: Regenerate.
11826         * aclocal.m4: Likewise.
11827         * config.in: Likewise.
11828         * configure: Likewise.
11829         * testsuite/Makefile.in: Likewise.
11830
11831         * Makefile.am (AUTOMAKE_OPTIONS): Add foreign.
11832         * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add foreign.
11833         * Makefile.in: Regenerate.
11834         * testsuite/Makefile.in: Regenerate.
11835
11836 2009-08-19  Cary Coutant  <ccoutant@google.com>
11837
11838         * resolve.cc (Symbol_table::resolve): Don't complain about defined
11839         symbols in shared libraries overridden by hidden or internal symbols
11840         in the main program.
11841
11842 2009-08-19  Chris Demetriou  <cgd@google.com>
11843
11844         * testsuite/debug_msg.sh: Match .* rather than ${srcdir} when
11845         checking source file names in error messages.
11846
11847 2009-08-18  Doug Kwan  <dougkwan@google.com>
11848
11849         * dynobj.cc (Sized_dynobj::setup): Take a Target object instead of
11850         an elcpp::Ehdr as parameter.  Adjust call to set_target.
11851         * dynobj.h (Sized_dynobj::setup): Take a Target object instead of
11852         an elfcpp::Ehdr as parameter.
11853         * object.cc (Object::set_target): Remove the version that looks up
11854         a target and sets it.
11855         (Sized_relobj::setup): Take a Target object instead of
11856         an elfcpp::Ehdr as parameter.  Adjust call to set_target.
11857         (make_elf_sized_object): Find target and ask target to
11858         make an ELF object.
11859         * object.h: (Object::set_target): Remove the version that looks up
11860         a target and sets it.
11861         (Sized_relobj::setup): Take a Target object instead of
11862         an elfcpp:Ehdr as parameter.
11863         * target.cc: Include dynobj.h.
11864         (Target::do_make_elf_object_implementation): New.
11865         (Target::do_make_elf_object): New.
11866         * target.h (Target::make_elf_object): New template declaration.
11867         (Target::do_make_elf_object): New method declarations.
11868         (Target::do_make_elf_object_implementation): New template declaration.
11869
11870 2009-08-14  Ian Lance Taylor  <iant@google.com>
11871
11872         * gold.h (FUNCTION_NAME): Define.
11873         (gold_unreachable): Use FUNCTION_NAME.
11874
11875 2009-08-12  Sriraman Tallam  <tmsriram@google.com>
11876
11877         * icf.cc (Icf::find_identical_sections): Issue a warning when a
11878         symbol in the --keep-unique list is not found.
11879
11880 2009-08-12  Sriraman Tallam  <tmsriram@google.com>
11881
11882         * icf.cc (Icf::find_identical_sections): Unfold symbols that have
11883         been maked as --keep-unique.
11884         (Icf::unfold_section): New function.
11885         * icf.h (Icf::unfold_section): New function.
11886         * options.h (General_options::keep_unique): New option.
11887         * testsuite/Makefile.am: Add commands to build icf_keep_unique_test.
11888         * testsuite/Makefile.in: Regenerate.
11889         * testsuite/icf_keep_unique_test.sh: New file.
11890         * testsuite/icf_keep_unique_test.cc: New file.
11891
11892 2009-08-12  Cary Coutant  <ccoutant@google.com>
11893
11894         PR 10471
11895         * resolve.cc (Symbol_table::resolve): Check for references from
11896         dynamic objects to hidden and internal symbols.
11897         * testsuite/Makefile.am (hidden_test.sh): New test.
11898         * testsuite/Makefile.in: Regenerate.
11899         * testsuite/hidden_test.sh: New script.
11900         * testsuite/hidden_test_1.c: New test source.
11901         * testsuite/hidden_test_main.c: New test source.
11902
11903 2009-08-11  Doug Kwan  <dougkwan@google.com>
11904
11905         * arm.cc: Update comments.
11906         (Target_arm::do_finalize_sections): Add a special PT_ARM_EXIDX
11907         segment to locate the .ARM.exidx section if present.
11908
11909 2009-08-09  Doug Kwan  <dougkwan@google.com>
11910
11911         * dynobj.h (Sized_dynobj::do_section_entsize): Revert the previous
11912         patch.
11913
11914 2009-08-07  Sriraman Tallam  <tmsriram@google.com>
11915         * dynobj.h (Sized_dynobj::do_section_entsize): Add return to avoid
11916         compiler warnings.
11917
11918 2009-08-06  Sriraman Tallam  <tmsriram@google.com>
11919
11920         * x86_64.cc (Target_x86_64::Relocate::relocate_tls): Check for a
11921         valid tls_segment only for non-debug-section relocations.
11922         * testsuite/Makefile.am: Add gc_tls_test.
11923         * testsuite/Makefile.in: Regenerate.
11924         * testsuite/gc_tls_test.cc: New file.
11925         * testsuite/gc_tls_test.sh: New file.
11926
11927 2009-08-05  Sriraman Tallam  <tmsriram@google.com>
11928
11929         * icf.cc: New file.
11930         * icf.h: New file.
11931         * Makefile.am (CCFILES): Add icf.cc.
11932         (HFILES): Add icf.h
11933         * Makefile.in: Regenerate.
11934         * dynobj.h (Sized_dynobj::do_section_entsize): New function.
11935         * gc.h (gc_process_relocs): Populate lists used by icf to contain
11936         section, symbol and addend information for the relocs.
11937         * gold.cc (queue_middle_tasks): Call identical code folding.
11938         * gold.h: Add defines for multimap.
11939         * layout.cc (Layout::create_symtab_sections): Add symtab as parameter
11940         to the call of finalize_local_symbols.
11941         * main.cc (main): Create object of class Icf.
11942         * object.cc (Sized_relobj::do_layout): Allow this function to be
11943         called twice during icf.
11944         (Sized_relobj::do_finalize_local_symbols): Fold symbols corresponding
11945         to sections marked as identical by icf.
11946         (Sized_relobj::do_section_flags): Get section_flags from Symbols_data
11947         when available.
11948         (Sized_relobj::do_section_entsize): New function.
11949         * object.h (Object::section_entsize): New function.
11950         (Object::do_section_entsize): New pure virtual function.
11951         (Relobj::finalize_local_symbols): Add new parameter.
11952         (Relobj::do_section_entsize): New function.
11953         * options.h (General_options::icf): New option.
11954         (General_options::icf_iterations): New option.
11955         (General_options::print_icf_sections): New option.
11956         * plugin.cc (Sized_pluginobj::do_section_entsize): New function.
11957         * plugin.h (Sized_pluginobj::do_section_entsize): New function.
11958         * reloc.cc (Read_relocs::run): Delay scanning relocs when doing
11959         icf.
11960         * symtab.cc (Symbol_table::is_section_folded): New function.
11961         (Symbol_table::sized_finalize_symbol):  Fold symbols corresponding
11962         to sections marked as identical by icf.
11963         * symtab.h (Symbol_table::set_icf): New function.
11964         (Symbol_table::icf): New function.
11965         (Symbol_table::is_section_folded): New function.
11966         (Symbol_table::icf_): New data member.
11967         * target-reloc.h (relocate_section): Ignore sections folded by icf.
11968         * testsuite/Makefile.am: Add commands to build icf_test.
11969         * testsuite/Makefile.in: Regenerate.
11970         * testsuite/icf_test.sh: New file.
11971         * testsuite/icf_test.cc: New file.
11972
11973 2009-07-24  Chris Demetriou  <cgd@google.com>
11974
11975         * layout.cc (is_compressible_debug_section): Fix incorrect
11976         comment about compressed section names.
11977
11978 2009-07-20  Ian Lance Taylor  <ian@airs.com>
11979
11980         PR 10419
11981         * x86_64.cc (Target_x86_64::do_code_fill): Correct nop sequences.
11982
11983 2009-07-16  Ian Lance Taylor  <iant@google.com>
11984
11985         PR 10400
11986         * layout.h: #include <map>.
11987         (class Kept_section): Change from struct to class.  Add accessors
11988         and setters.  Add section size to Comdat_group mapping.  Change
11989         Comdat_group to std::map.  Add is_comdat_ field.  Add
11990         linkonce_size field in union.
11991         (class Layout): Update declaration of find_or_add_kept_section.
11992         Don't declare find_kept_object.
11993         * layout.cc (Layout::find_or_add_kept_section): Remove candidate
11994         parameter.  Add object, shndx, is_comdat, and is_group_name
11995         parameters.  Change all callers.  Adjust for new Kept_section.
11996         (Layout::find_kept_object): Remove.
11997         * object.cc (Sized_relobj::include_section_group): Update use of
11998         Kept_section.  Rename secnum to shndx.  Only record
11999         Kept_comdat_section if sections are the same size.
12000         (Sized_relobj::include_linkonce_section): Update use of
12001         Kept_section.  Only record Kept_comdat_section if sections are the
12002         same size.  Set size of linkonce section.
12003         (Sized_relobj::map_to_kept_section): Update call to
12004         get_kept_comdat_section.
12005         * object.h (class Sized_relobj): Rename fields in
12006         Kept_comdat_section to drop trailing underscores; change object
12007         field to Relobj*.  Change Kept_comdat_section_table to store
12008         struct rather than pointer.
12009         (Sized_relobj::set_kept_comdat_section): Remove kept parameter.
12010         Add kept_object and kept_shndx parameters.  Change all callers.
12011         (Sized_relobj::get_kept_comdat_section): Change return type to
12012         bool.  Add kept_object and kept_shndx parameters.  Change all
12013         callers.
12014         * plugin.cc (Pluginobj::include_comdat_group): Update call to
12015         Layout::find_or_add_kept_section.
12016
12017 2009-07-09  Ian Lance Taylor  <iant@google.com>
12018
12019         * merge.cc (Object_merge_map::initialize_input_to_output_map):
12020         Reserve space in the hash table.
12021
12022 2009-07-06  Mikolaj Zalewski  <mikolajz@google.com>
12023
12024         * fileread.cc (File_read::get_mtime): New method.
12025         * fileread.h (Timespec): New structure.
12026         (File_read::get_mtime): New method.
12027         * incremental.cc (Incremental_inputs_entry_data::timestamp_usec):
12028         Renamed from timestamp_nsec.
12029         (Incremental_inputs_entry_write::timestamp_sec): Fix argument to
12030         Elf_Xword.
12031         (Incremental_inputs_entry_write::timestamp_usec): Renamed from
12032         timestamp_nsec.
12033         (Incremental_inputs::report_archive): Save mtime; style fix.
12034         (Incremental_inputs::report_obejct): Save mtime; style fix.
12035         (Incremental_inputs::report_script): Save mtime; style fix.
12036         (Incremental_inputs::finalize_inputs): Style fix.
12037         (Incremental_inputs::finalize): Style fix.
12038         (Incremental_inputs::create_input_section_data): Store inputs
12039         mtime.
12040         * incremental.h (Incremental_inputs::report_script): Add mtime
12041         argument.
12042         (Incremental_inputs::Input_info::Input_info): Intialize only one
12043         union member.
12044         (Incremental_inputs::Input_info::archive): Move to nameless
12045         union.
12046         (Incremental_inputs::Input_info::obejct): Move to nameless union.
12047         (Incremental_inputs::Input_info::script): Move to nameless union.
12048         (Incremental_inputs::mtime): New field.
12049         * script.cc (read_input_script): Pass file mtime to
12050         Incremental_input.
12051         * script.h (Script_info::inputs): Style fix.
12052
12053 2009-07-01  Ian Lance Taylor  <ian@airs.com>
12054
12055         * freebsd.h (Target_freebsd::do_adjust_elf_header): Use size
12056         instead of 32.
12057
12058 2009-06-24  Ian Lance Taylor  <iant@google.com>
12059
12060         PR 10156
12061         * layout.cc (Layout::choose_output_section): If we find an
12062         existing section, update the flags.
12063         (Layout::create_notes): New function, broken out of
12064         Layout::finalize.
12065         (Layout::finalize): Don't create note sections.
12066         (Layout::create_note): Don't crash if linker script discards
12067         section.
12068         (Layout::create_gold_note): Likewise.
12069         (Layout::create_build_id): Likewise.  Don't set
12070         after_input_sections on the section.
12071         (Layout::create_executable_stack_info): Remove target parameter.
12072         Change caller.
12073         * layout.h (class Layout): Declare create_notes.  Update
12074         declaration of create_executable_stack_info.
12075         * gold.cc (queue_middle_tasks): Call create_notes.
12076         * output.cc (Output_section::update_flags_for_input_section): Move
12077         here from output.h.  If SHF_ALLOC flag is newly set, mark address
12078         invalid.
12079         * output.h (Output_data::mark_address_invalid): New function.
12080         (class Output_section): Only declare, not define,
12081         update_flags_for_input_section.  Remove set_flags.
12082
12083 2009-06-24  Ian Lance Taylor  <iant@google.com>
12084
12085         * script-sections.cc (Output_section_definition::
12086         set_section_addresses): Rename shadowing local load_address to
12087         laddr.
12088
12089 2009-06-24  Ian Lance Taylor  <iant@google.com>
12090
12091         PR 10244
12092         * reloc.cc (relocate_sections): Skip empty relocation sections.
12093
12094 2009-06-23  Ian Lance Taylor  <iant@google.com>
12095
12096         PR 10156
12097         * layout.cc (Layout::create_note): Use choose_output_section
12098         rather than make_output_section.
12099
12100 2009-06-23  Ian Lance Taylor  <iant@google.com>
12101
12102         PR 10237
12103         * options.cc (General_options::parse_V): Set printed_version_.
12104         (General_options::General_options): Initialize printed_version_.
12105         * options.h (class General_options): Add printed_version_ field.
12106         * gold.cc (queue_initial_tasks): If there are no input files,
12107         don't give a fatal error if we printed the version information.
12108         (queue_middle_tasks): If using -r with a shared object, give a
12109         fatal error rather than an ordinary error.
12110
12111 2009-06-23  Ian Lance Taylor  <iant@google.com>
12112
12113         PR 10219
12114         * layout.cc (Layout::Layout): Initialize have_stabstr_section_.
12115         (Layout::make_output_section): Set have_stabstr_section_ if we see
12116         a .stab*str section.
12117         (Layout::finalize): Call link_stabs_sections.
12118         (Layout::link_stabs_sections): New file.
12119         * layout.h (class Layout): Add have_stabstr_section_ field.
12120         Declare link_stabs_sections.
12121
12122 2009-06-23  Doug Kwan  <dougkwan@google.com>
12123
12124         * Makefile.am (libgold_a_LIBADD): New.
12125         (ld_new_DEPENDENCIES, ld_new_LDADD): Remove LIBOBJS
12126         * Makefile.in: Regenerate.
12127         * config.in (HAVE_DECL_MEMMEM, HAVE_DECL_STRNDUP): New.
12128         * configure: Regenerate.
12129         * configure.ac (AC_CHECK_DECLS): Add strndup and memmem.
12130         * fileread.cc: Include sys/state.h
12131         * gold.h: Declare memmem and strndup if found missing.
12132         * gold_reloc.h: Include byteswap.h if HAVE_BYTESWAP_H is defined.
12133
12134 2009-06-23  Ian Lance Taylor  <iant@google.com>
12135
12136         * configure.ac: Call AC_CHECK_DECLS using C, not C++.
12137         * configure: Rebuild.
12138
12139 2009-06-23  Ian Lance Taylor  <iant@google.com>
12140
12141         PR 10147
12142         * object.cc (Object::section_contents): Don't try to get a view if
12143         the section has length zero.
12144         (Object::handle_gnu_warning_section): If the section is empty, use
12145         the name of the section as the warning.
12146
12147 2009-06-23  Ian Lance Taylor  <iant@google.com>
12148
12149         PR 10133
12150         * stringpool.h (class Stringpool_template): Add optimize_ field.
12151         (Stringpool_template::set_optimize): New function.
12152         * stringpool.cc (Stringpool_template::Stringpool_template):
12153         Initialize optimize_ field.
12154         (Stringpool_template::set_string_offsets): Test local optimize
12155         fild rather than parameter.
12156         * layout.cc (Layout::Layout): Call set_optimize on the section
12157         name stringpool.
12158
12159 2009-06-22  Ian Lance Taylor  <iant@google.com>
12160
12161         PR 10030
12162         * yyscript.y: Parse TARGET.
12163         * script.cc (script_set_target): New function.
12164         * script-c.h (script_set_target): Declare.
12165         * options.cc (General_options::string_to_object_format): Rename
12166         from string_to_object_format in anonymous namespace.  Change
12167         callers.
12168         * options.h (class General_options): Declare
12169         string_to_object_format.
12170
12171 2009-06-22  Ian Lance Taylor  <iant@google.com>
12172
12173         * script-sections.cc (Script_sections::create_segments): Don't put
12174         program headers in a PT_LOAD segment if -n or -N.
12175
12176 2009-06-22  Ian Lance Taylor  <iant@google.com>
12177
12178         PR 10141
12179         * options.h (class General_options): Add -z lazy and -z now.  Sort
12180         -z options into alphabetical order.
12181         * layout.cc (Layout::finish_dynamic_section): Handle -z now.
12182
12183 2009-06-21  Ian Lance Taylor  <iant@google.com>
12184
12185         * layout.cc (Layout::make_output_section): Call
12186         Target::new_output_section.
12187         (Layout::attach_allocated_section_to_segment): Put large section
12188         sections in a separate load segment with the large segment flag
12189         set.
12190         (Layout::segment_precedes): Sort large data segments after other
12191         load segments.
12192         (align_file_offset): New static function.
12193         (Layout::set_segment_offsets): Use align_file_offset.
12194         * output.h (class Output_section): Add is_small_section_ and
12195         is_large_section_ fields.
12196         (Output_section::is_small_section): New function.
12197         (Output_section::set_is_small_section):  New function.
12198         (Output_section::is_large_section): New function.
12199         (Output_section::set_is_large_section): New function.
12200         (Output_section::is_large_data_section): New function.
12201         (class Output_segment): Add is_large_data_segment_ field.
12202         (Output_segment::is_large_data_segment): New function.
12203         (Output_segment::set_is_large_data_segment): New function.
12204         * output.cc (Output_section::Output_section): Initialize new
12205         fields.
12206         (Output_segment::Output_segment): Likewise.
12207         (Output_segment::add_output_section): Add assertion that large
12208         data sections always go in large data segments.  Force small data
12209         sections to the end of the list of data sections.  Force small BSS
12210         sections to the start of the list of BSS sections.  For large BSS
12211         sections to the end of the list of BSS sections.
12212         * symtab.h (class Symbol): Declare is_common_shndx.
12213         (Symbol::is_defined): Check Symbol::is_common_shndx.
12214         (Symbol::is_common): Likewise.
12215         (class Symbol_table): Define enum Commons_section_type.  Update
12216         declarations.  Add small_commons_ and large_commons_ fields.
12217         * symtab.cc (Symbol::is_common_shndx): New function.
12218         (Symbol_table::Symbol_table): Initialize new fields.
12219         (Symbol_table::add_from_object): Put small and large common
12220         symbols in the right list.
12221         (Symbol_table::sized_finalized_symbol): Check
12222         Symbol::is_common_shndx.
12223         (Symbol_table::sized_write_globals): Likewise.
12224         * common.cc (Symbol_table::do_allocate_commons): Allocate new
12225         common symbol lists.  Don't call do_allocate_commons_list if the
12226         list is empty.
12227         (Symbol_table::do_allocate_commons_list): Remove is_tls
12228         parameter.  Add comons_section_type parameter.  Change all
12229         callers.  Handle small and large common symbols.
12230         * object.cc (Sized_relobj::do_finalize_local_symbols): Check
12231         Symbol::is_common_shndx.
12232         * resolve.cc (symbol_to_bits): Likewise.
12233         * target.h (Target::small_common_shndx): New function.
12234         (Target::small_common_section_flags): New function.
12235         (Target::large_common_shndx): New function.
12236         (Target::large_common_section_flags): New function.
12237         (Target::new_output_section): New function.
12238         (Target::Target_info): Add small_common_shndx, large_common_shndx,
12239         small_common_section_flags, and large_common_section_flags
12240         fields.
12241         (Target::do_new_output_section): New virtual function.
12242         * arm.cc (Target_arm::arm_info): Initialize new fields.
12243         * i386.cc (Target_i386::i386_info): Likewise.
12244         * powerpc.cc (Target_powerpc::powerpc_info) [all versions]:
12245         Likewise.
12246         * sparc.c (Target_sparc::sparc_info) [all versions]: Likewise.
12247         * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
12248         (Target_x86_64::do_new_output_section): New function.
12249         * configure.ac: Define conditional MCMODEL_MEDIUM.
12250         * testsuite/Makefile.am (check_PROGRAMS): Add large.
12251         (large_SOURCES, large_CFLAGS, large_DEPENDENCIES): Define.
12252         (large_LDFLAGS): Define.
12253         * testsuite/large.c: New file.
12254         * testsuite/testfile.cc (Target_test::test_target_info):
12255         Initialize new fields.
12256         * configure, testsuite/Makefile.in: Rebuild.
12257
12258 2009-06-05  Doug Kwan  <dougkwan@google.com>
12259
12260         * Makefile.am (CCFILES): Add target.cc.
12261         * Makefile.in: Regenerate.
12262         * i386.cc (class Target_i386): Define new virtual method to
12263         override do_is_local_label_name in parent.
12264         * object.cc (Sized_relobj::do_count_local_symbols): Discard
12265         local symbols if --discard-locals or -X is given.
12266         * options.h (class General_options): Declare new options
12267         '--discard-locals' and '-X' for discarding locals.
12268         * target.h (class Target): Define new methods is_local_label_name.
12269         Declare new virtual method do_is_local_label_name.
12270         * target.cc: New file.
12271         * testsuite/Makefile.am (check_PROGRAMS): Add discard_locals_test.
12272         (check_SCRIPTS): Add discard_locals_test.sh.
12273         (check_DATA): Add discard_local_tests.syms.
12274         (discard_locals_test_SOURCES, discard_locals_test_LDFLAGS): Define.
12275         (discard_local_tests.syms, discard_locals_test.o): New make rules.
12276         * testsuite/Makefile.in: Regenerate.
12277         * testsuite/discard_locals_test.c: New file.
12278         * testsuite/discard_locals_test.sh: Same.
12279
12280 2009-06-05  Doug Kwan  <dougkwan@google.com>
12281
12282         * object.cc (Sized_relobj::Sized_relobj): Initialize
12283         discarded_eh_frame_shndx_ to -1U.
12284         (Sized_relobj::do_layout): Record index of a discard .eh_frame
12285         section.
12286         (Sized_relobj::do_count_local_symbols): Skip local symbols in
12287         a discarded .eh_frame section.
12288         (Sized_relobj::do_finalize_local_symbols): Ditto.
12289         * object.h (class Sized_relobj): Declare new member
12290         discarded_eh_frame_shndx_.
12291         * testsuite/Makefile.am (check_PROGRAMS): Add local_labels_test.
12292         (local_labels_test.o, local_labels_test): New rules.
12293         * testsuite/Makefile.in: Regenerate.
12294
12295 2009-06-04  Doug Kwan  <dougkwan@google.com>
12296
12297         * layout.cc (Layout::section_name_mapping): Add mapping for
12298         special ARM sections.
12299
12300 2009-06-03  Doug Kwan  <dougkwan@google.com>
12301
12302         * arm.cc (utils::sign_extend): Reverse test in gold_assert.
12303         (utils::has_overflow): Same.
12304
12305 2009-06-03  Ian Lance Taylor  <iant@google.com>
12306
12307         * layout.cc (Layout::section_name_mapping): New array, replacing
12308         Layout::linkonce_mapping.
12309         (Layout::section_name_mapping_count): New variable, replacing
12310         Layout::linkonce_mapping_count.
12311         (Layout::linkonce_output_name): Remove.
12312         (Layout::output_section_name): Rewrite.
12313         * layout.h (class Layout): Rename Linkonce_mapping to
12314         Section_name_mapping, linkonce_mapping to section_name_mapping,
12315         linkonce_mapping_count to section_name_mapping_count.  Don't
12316         declare linkonce_output_name.
12317
12318 2009-06-03  Doug Kwan  <dougkwan@google.com>
12319
12320         * gold/arm.cc (namespace utils): New.
12321         (Target_arm::reloc_is_non_pic): Define new method.
12322         (class Arm_relocate_functions): New.
12323         (Target_arm::Relocate::relocate): Handle relocation types used by
12324         Android.
12325
12326 2009-06-03  Ian Lance Taylor  <iant@google.com>
12327
12328         * arm.cc (Target_arm::scan::global): Use || instead of |.
12329
12330 2009-06-02  Doug Kwan  <dougkwan@google.com>
12331
12332         * gold/arm.cc (Target_arm::Scan::Scan):  Initialize
12333         issued_non_pic_error_.
12334         (class Target_arm::Scan): Declare new method check_non_pic.
12335         Define new method symbol_needs_plt_entry.
12336         Declare new data member issued_non_pic_error_.
12337         (class Target_arm::Relocate): Declare new method
12338         should_apply_static_reloc.
12339         (Target_arm::may_need_copy_reloc): Handle STT_ARM_TFUNC.
12340         (Target_arm::Scan::check_non_pic): Define new method.
12341         (Target_arm::Scan::local): Handle a small subset of reloc types used
12342         by Android.
12343         (Target_arm::Scan::local): Same.
12344         (Target_arm::Relocate::should_apply_statci_reloc): Define new method.
12345
12346 2009-05-31  Mikolaj Zalewski  <mikolajz@google.com>
12347
12348         * incremental.cc (Incremental_inputs::report_command_line): Filter
12349         out --incremental-* options.
12350
12351 2009-05-29  Doug Kwan  <dougkwan@google.com>
12352
12353         * gold/arm.cc (Output_data_plt_arm): Forward declaration for new
12354         template class.
12355         (class Target_arm): Update comment.
12356         (Target_arm::Target_arm): Initialize new data members GOT_,
12357         PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_ and DYNBSS_.
12358         Declare new methods Target_arm::got_section, Target_arm::make_plt_entry
12359         and Target_arm::rel_dyn_section.
12360         Declare new_enum Target_arm::Got_type.
12361         Declare new data members GOT_, PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_
12362         and DYNBSS_.
12363         Update commments for member do_dynsym_value.
12364         (Target_arm::got_size, Target_arm::plt_section,
12365         Target_arm::may_need_copy_reloc and Target_arm::copy_reloc): Define
12366         new methods inside class defintion.
12367         (Target_arm::got_section): Define new method.
12368         (Target_arm::rel_dyn_section): Same.
12369         (Output_data_plt_arm): New template class.
12370         (Output_data_plt_arm::Output_data_plt_arm): Define constructor.
12371         (Output_data_plt_arm:do_adjust_output_section): Define new method.
12372         (Output_data_plt_arm::add_entry): Same.
12373         (Output_data_plt_arm::first_plt_entry): Define new
12374         static data member for PLT instruction template.
12375         (Output_data_plt_arm::plt_entry): Same.
12376         (Output_data_plt_arm::do_write): Define new method.
12377         (Target_arm::make_plt_entry): Same.
12378         (Target_arm::do_finalize_sections): Same.
12379         (Target_arm::do_dynsym_value): Same.
12380
12381 2009-05-28  Doug Kwan  <dougkwan@google.com>
12382
12383         * Makefile.am (TARGETSOURCES): Add arm.cc.
12384         (ALL_TARGETOBJECTS): Add arm.$(OBJEXT)
12385         * Makefile.in: Regenerate.
12386         * arm.cc: New file.
12387         * configure.tgt: Add armbe*-*-*, armeb*-*-* and arm*-*-* targets.
12388
12389 2009-05-26  Doug Kwan  <dougkwan@google.com>
12390
12391         * options.cc (General_options::parse_exclude_libs).  Fix a comment.
12392         (General_options::check_excluded_libs): Strip off directories in
12393         archive name before matching like GNU ld does.
12394         * testsuite/Makefile.am (MOSTLYCLEANFILES,
12395         exclude_libs_test_DEPENDENCIES): Add alt/libexclude_libs_test_3.a
12396         (exclude_libs_test_LDFLAGS): Add linker option
12397         -Wl,--exclude-libs,libexclude_libs_test_3
12398         (exclude_libs_test_LADD): Add alt/libexclude_libs_test_3.a as
12399         an explicit archive without using -l.
12400         (alt/libexclude_libs_test_3.a): New make rule.
12401         * testsuite/Makefile.in: Regenerate.
12402         * testsuite/exclude_libs_test.c : Declare lib3_default().
12403         (main): Call it.
12404         * exclude_libs_test.sh: Add tests for alt/exclude_libs_test_3.a.
12405         * exclude_libs_test_3.c: New file.
12406
12407 2009-05-26  Nick Clifton  <nickc@redhat.com>
12408
12409         * po/id.po: New Indonesian translation.
12410         * po/gold.pot: Updated template file.
12411
12412 2009-05-22  Sriraman Tallam  <tmsriram@google.com>
12413
12414         * testsuite/Makefile.am: Add -ffunction-sections to compile
12415         gc_comdat_test files.  Add -Wl,--gc-sections to build
12416         gc_comdat_test.
12417         * testsuite/Makefile.in: Regenerate.
12418         * testsuite/gc_comdat_test.sh: Fix the condition around grep.
12419
12420 2009-05-21  Sriraman Tallam  <tmsriram@google.com>
12421
12422         * object.cc (Sized_relobj::map_to_kept_section): Return NULL if the
12423         kept comdat section was garbage collected.
12424         * testsuite/Makefile.am: Add test gc_comdat_test.sh.
12425         * testsuite/Makefile.in: Regenerate.
12426         * testsuite/gc_comdat_test.sh: New file.
12427         * testsuite/gc_comdat_test_1.cc: New file.
12428         * testsuite/gc_comdat_test_2.cc: New file.
12429
12430 2009-05-19  Doug Kwan  <dougkwan@google.com>
12431
12432         * archive.cc (Archive::Archive): Move constructor from archive.h
12433         to here.  Initialize no_export_.
12434         (Archive::get_elf_object_for_member): Set no_export flag of object.
12435         * archive.h (Archive::Archive): Move constructor body to
12436         archive.cc.
12437         (Archive::no_export): New method.
12438         (Archive::no_export_): New field.
12439         * object.h (Object::Object): Initialize no_export_ to false.
12440         (Object::no_export, Object::set_no_export): New methods.
12441         (Object::no_export_): New field.
12442         * options.cc (General_options::parse_exclude_libs): New method.
12443         (General_options::check_excluded_libs) Same.
12444         * options.h (exclude_libs): New option.
12445         (General_options::check_excluded_libs): New method declaration.
12446         (General_options::excluded_libs_): New field.
12447         * symtab.cc (Symbol_table::add_from_relobj): Hide symbols with
12448         default or protected visibility if an object has no-export flag set.
12449         testsuite/Makefile.am (check_PROGRAMS): Add exclude_libs_test.
12450         (check_SCRIPTS): Add exclude_libs_test.sh.
12451         (check_DATA): Add exclude_libs_test.syms.
12452         (MOSTLYCLEANFILES): Add exclude_libs_test.syms,
12453         libexclude_libs_test_1.a and libexclude_libs_test_2.a.
12454         (exclude_libs_test_SOURCES, exclude_libs_test_DEPENDENCIES,
12455         exclude_libs_test_LDFLAGS and exclude_libs_test_LDADD): Define.
12456         (exclude_libs_test.syms, libexclude_libs_test_1.a,
12457         libexclude_libs_test_2.a): New rules.
12458         * testsuite/Makefile.in: Regenerate.
12459         * testsuite/exclude_libs_test.c: New file.
12460         * testsuite/exclude_libs_test.sh: Ditto.
12461         * testsuite/exclude_libs_test_1.c: Ditto.
12462         * testsuite/exclude_libs_test_2.c: Ditto.
12463
12464 2009-05-15  Ian Lance Taylor  <iant@google.com>
12465
12466         * configure.ac: Check for declarations for cases where libiberty.h
12467         checks HAVE_DECL_xxx.
12468         * configure, config.in: Rebuild.
12469
12470 2009-05-15  Mikolaj Zalewski  <mikolajz@google.com>
12471
12472         * gold.h (Incremental_argument_list): Remove (invalid) forward
12473         declaration.
12474         * incremental.cc (Incremental_inputs::report_achive): New method.
12475         (Incremental_inputs::report_object): New method.
12476         (Incremental_inputs::report_script): New method.
12477         (Incremental_inputs::finalize_inputs): New method.
12478         (Incremental_inputs::finalize): Call finalize_inputs().
12479         (Incremental_inputs::sized_create_incremental_inputs_section_data):
12480         Create inputs entries.
12481         * incremental.h (Incremental_input_type): New enum.
12482         (Incremental_inputs::Incremental_input): Initialize new fields.
12483         (Incremental_inputs::report_inputs): New method.
12484         (Incremental_inputs::report_achive): New method.
12485         (Incremental_inputs::report_object): New method.
12486         (Incremental_inputs::report_script): New method.
12487         (Incremental_inputs::finalize_inputs): New method.
12488         (Incremental_inputs::Input_info): New struct.
12489         (Incremental_inputs::Input_info_map): New typedef.
12490         (Incremental_inputs::lock_): New field.
12491         (Incremental_inputs::Inputs_): New field.
12492         (Incremental_inputs::Inputs_map): New field.
12493         * main.cc (main): Call Incremental_input::report_inputs.
12494         * options.h (Input_argument_list): Typedef moved from
12495         Input_arguments.
12496         (Input_file_group::Files): Remove, use ::Input_argument_list.
12497         (Input_file_group::Input_argument_list): Remove, use
12498         ::Input_argument_list.
12499         * plugin.cc (Plugin_manager::add_input_file): Add error in
12500         incremental build.
12501         * read_syms.cc (do_read_syms): Call Incremental_input::report_*
12502         functions.
12503         * script.cc (read_input_script): Call
12504         Incremental_input::report_script.
12505         * script.h (Script_info): New class.
12506
12507 2009-04-27  Ian Lance Taylor  <iant@google.com>
12508
12509         * x86_64.cc (do_adjust_output_section): Set entsize to
12510         plt_entry_size.
12511
12512 2009-04-23  Elliott Hughes  <enh@google.com>
12513
12514         * output.cc (Output_file::close): After short writes, continue
12515         writing from the correct offset in the buffer being written.
12516
12517 2009-04-23  Chris Demetriou  <cgd@google.com>
12518
12519         * configure.ac (HAVE_TR1_UNORDERED_MAP_REHASH): New define.
12520         * configure: Regenerate.
12521         * config.in: Regenerate.
12522         * gold.h: Avoid std::tr1::unordered_map and std::tr1::unordered_set
12523         if HAVE_TR1_UNORDERED_MAP_REHASH is not defined.
12524
12525 2009-04-21  Mikolaj Zalewski  <mikolajz@google.com>
12526
12527         * incremental.cc (Incremental_inputs_header_data): Renamed from
12528         Incremental_input_header_data.
12529         (Incremental_inputs_header_data::data_size): New field.
12530         (Incremental_inputs_header_data::put_input_file_count): Renamed
12531         from input_file_count.
12532         (Incremental_inputs_header_data::put_command_line_offset): Renamed
12533         from command_line_offset.
12534         (Incremental_inputs_header_data::put_reserved): Renamed from
12535         put_reserved.
12536         (Incremental_inputs_entry_data): Renamed from
12537         Incremental_input_entry_data.
12538         (Incremental_inputs_entry_data::data_size): New field.
12539         (Incremental_inputs::report_command_line): New method.
12540         (Incremental_inputs::finalize): New method.
12541         (Incremental_inputs::create_incremental_inputs_data): New method.
12542         (Incremental_inputs::sized_create_incremental_inputs_data): New method.
12543         * incremental.h: New file.
12544         * layout.cc (Layout::Layout): Handle new incremental_inputs_.
12545         (Layout::finalize): Create incremental inputs section in
12546         incremental builds.
12547         (Layout::create_incremental_info_sections): New method.
12548         * layout.h (Layout::incremental_inputs): New method.
12549         (Layout::create_incremental_info_sections): New method.
12550         (Layout::incremental_inputs_): New field.
12551         * main.cc (main): Notify Incremental_input of the command line.
12552
12553 2009-04-01  Ian Lance Taylor  <iant@google.com>
12554             Mikolaj Zalewski  <mikolajz@google.com>
12555
12556         * gold.h (reserve_unordered_map): Define, three versions, one for
12557         each version of Unordered_map.
12558         * layout.cc (Layout::Layout): Remove options parameter.  Add
12559         number_of_input_files parameter.  Don't initialize options_.
12560         Initialize number_of_input_files_ and resized_signatures_.  Move
12561         sections_are_attached_.
12562         (Layout::layout_group): Reserve space for group_signatures_.
12563         (Layout::find_or_add_kept_section): Change name parameter to be a
12564         reference.  Resize signatures_ map when it gets large enough.
12565         (Layout::layout_eh_frame): Use parameters->options() instead of
12566         this->options_.
12567         (Layout::make_output_section): Likewise.
12568         (Layout::attach_allocated_section_to_segment): Likewise.
12569         (Layout::finalize, Layout::create_executable_stack): Likewise.
12570         (Layout::set_segment_offsets, Layout::create_interp): Likewise.
12571         (Layout::finish_dynamic_section, Layout::write_binary): Likewise.
12572         * layout.h (class Layout): Update declarations.  Remove options_
12573         field.  Add number_of_input_files_ and resized_signatures_
12574         fields.  Move sections_are_attached_ field.
12575         * main.cc (main): Pass number of input files to Layout
12576         constructor.  Don't pass options.
12577
12578 2009-03-30  Ian Lance Taylor  <iant@google.com>
12579
12580         * ffsll.c (ffsll): Correct implementation.
12581
12582 2009-03-27  Ian Lance Taylor  <iant@google.com>
12583
12584         * ffsll.c: New file.
12585         * configure.ac: Call AC_REPLACE_FUNCS on ffsll.
12586         * gold.h (ffsll): Declare if HAVE_FFSLL is not defined.
12587         * ftruncate.c (ftruncate): Declare before definition.
12588         * mremap.c (mremap): Likewise.
12589         * pread.c (pread): Likewise.
12590         * configure, Makefile.in, config.in: Rebuild.
12591
12592         * mremap.c: New file.
12593         * configure.ac: Call AC_REPLACE_FUNCS on mremap.
12594         * gold.h (MREMAP_MAYMOVE): Define if HAVE_MREMAP is not defined.
12595         (mremap): Declare if HAVE_MREMAP is not defined.
12596         * configure, Makefile.in, config.in: Rebuild.
12597
12598 2009-03-27  Cary Coutant  <ccoutant@google.com>
12599
12600         * powerpc.cc (Target_powerpc::check_non_pic): Assert that output is
12601         position independent.
12602         * sparc.cc (Target_sparc::check_non_pic): Likewise.
12603         * x86_64.cc (Target_x86_64::check_non_pic): Likewise.
12604
12605 2009-03-24  Cary Coutant  <ccoutant@google.com>
12606
12607         * symtab.h (needs_plt_entry): Check for unsatisfied reference from
12608         an executable.
12609         (needs_dynamic_reloc): Likewise.
12610
12611 2009-03-24  Ian Lance Taylor  <iant@google.com>
12612
12613         * yyscript.y (file_cmd): Recognize EXTERN.
12614         (extern_name_list, extern_name_list_body): New nonterminals.
12615         * script.cc (script_add_extern): Define.
12616         * script-c.h (script_add_extern): Declare.
12617
12618 2009-03-24  Rafael Avila de Espindola  <espindola@google.com>
12619
12620         * object.cc (is_elf_object): Define.
12621         * object.h (is_elf_object): Declare.
12622         * archive.cc (Archive::get_elf_object_for_member): Call
12623         is_elf_object.
12624         * readsyms.cc (Read_symbols::do_read_symbols): Likewise.
12625
12626 2009-03-24  Elliott Hughes  <enh@google.com>
12627
12628         * output.cc (Output_file::map_anonymous): Define.
12629         (Output_file::map): Use map_anonymous.  If the regular mmap fails,
12630         try an anonymous one.  Report the size if the mmap fails.
12631         * output.h (class Output_file): Declare map_anonymous.
12632
12633 2009-03-24  Ian Lance Taylor  <iant@google.com>
12634
12635         * target-select.cc (instantiate_target): Don't acquire the lock if
12636         the instantiated_target_ field has already been set.
12637
12638 2009-03-23  Ian Lance Taylor  <iant@google.com>
12639
12640         * gold-threads.h (class Initialize_lock): Define.
12641         * gold-threads.cc (class Initialize_lock_once): Define.
12642         (initialize_lock_control): New static variable.
12643         (initialize_lock_pointer): New static variable.
12644         (initialize_lock_once): New static function.
12645         (Initialize_lock::Initialize_lock): Define.
12646         (Initialize_lock::initialize): Define.
12647         * target-select.h: Include "gold-threads.h".
12648         (class Target_selector): Add lock_ and initialize_lock_ fields.
12649         Don't define instantiate_target, just declare it.
12650         * target-select.cc (Target_selector::Target_selector): Initialize
12651         new fields.
12652         (Target_selector::instantiate_target): Define.
12653         * descriptors.h: Include "gold-threads.h".
12654         (class Descriptors): Add initialize_lock_ field.
12655         * descriptors.cc (Descriptors::Descriptors): Initialize new
12656         field.
12657         (Descriptors::open): Use initialize_lock_ field
12658         * errors.h (class Errors): Add initialize_lock_ field.
12659         * errors.cc (Errors::Errors): Initialize new field.
12660         (Errors::initialize_lock): Use initialize_lock_ field.
12661         * powerpc.cc (class Target_selector_powerpc): Remove
12662         instantiated_target_ field.  In do_recognize call
12663         instantiate_target rather than do_instantiate_target.  In
12664         do_instantiate_target just allocate a new target.
12665         * sparc.cc (class Target_selector_sparc): Likewise.
12666
12667         * freebsd.h: New file.
12668         * i386.cc: Include "freebsd.h".
12669         (Target_i386): Derive from Target_freebsd rather than
12670         Sized_target.
12671         (Target_selector_i386): Derive from Target_selector_freebsd rather
12672         than Target_selector.
12673         * x86_64.cc: Include "freebsd.h".
12674         (Target_x86_64): Derive from Target_freebsd rather than
12675         Sized_target.
12676         (Target_selector_x86_64): Derive from Target_selector_freebsd
12677         rather than Target_selector.
12678         * target.h (class Target): Add adjust_elf_header and
12679         do_adjust_elf_header.
12680         * output.cc (Output_file_header:: do_sized_write): Call target
12681         adjust_elf_header routine.
12682         * configure.tgt: Set targ_osabi.
12683         * configure.ac: Define GOLD_DEFAULT_OSABI.
12684         * parameters.cc (Parameters::default_target): Pass
12685         GOLD_DEFAULT_OSABI to select_target.
12686         * target-select.h (class Target_selector): Make instantiate_target
12687         protected rather than private.
12688         * Makefile.am (HFILES): Add freebsd.h.
12689         * configure, Makefile.in, config.in: Rebuild.
12690
12691         * merge.cc (do_add_input_section): Correct pend value.  Change
12692         message about last entry not being null terminated from error to
12693         warning.
12694
12695 2009-03-20  Mikolaj Zalewski  <mikolajz@google.com>
12696
12697         * incremental.cc: New file.
12698         * Makefile.am (CCFILES): Add incremental.cc.
12699         * Makefile.in: Rebuild.
12700
12701 2009-03-19  Paul Pluzhnikov  <ppluzhnikov@google.com>
12702
12703         * layout.cc (Layout::output_section_name): Preserve names
12704         of '.note.' sections.
12705
12706 2009-03-19  Ian Lance Taylor  <iant@google.com>
12707
12708         * descriptors.cc (Descriptors::open): Check that the options are
12709         valid before using them.
12710
12711 2009-03-18  Ian Lance Taylor  <iant@google.com>
12712
12713         * script-sections.h: Include <list>.
12714         (class Script_sections): Change Sections_elements from std::vector
12715         to std::list.  Typedef public Elements_iterator.  Add
12716         orphan_section_placement_, data_segment_align_start_, and
12717         saw_data_segment_align_ fields.  Remove data_segment_align_index_
12718         field.
12719         * script-sections.cc (class Orphan_section_placement): New class.
12720         (class Sections_element): Add virtual functions is_relro and
12721         orphan_section_init.  Remove virtual function place_orphan_here.
12722         (class Output_section_definition): Add is_relro and
12723         orphan_section_init.  Remove place_orphan_here.
12724         (class Orphan_output_section): Likewise.
12725         (Script_sections::Script_sections): Update for field changes.
12726         (Script_sections::data_segment_align): Set saw_data_segment_align_
12727         and data_segment_align_start_, not data_segment_align_index.
12728         (Script_sections::data_segment_relro_end): Check
12729         saw_data_segment_align_.  Use data_segment_align_start_ rather
12730         than data_segment_align_index_.
12731         (Script_sections::place_orphan): Rewrite to use
12732         Orphan_section_placement.
12733
12734 2009-03-17  Ian Lance Taylor  <iant@google.com>
12735
12736         * archive.cc (Archive::add_symbols): Check for a version attached
12737         to the symbol name in the archive map.
12738         * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_11.
12739         (ver_test_11_SOURCES, ver_test_11_DEPENDENCIES): Define.
12740         (ver_test_11_LDFLAGS, ver_test_11_LDADD): Define.
12741         (ver_test_11.a): New target.
12742         * testsuite/Makefile.in: Rebuild.
12743
12744         * configure.ac: Check for chsize and posix_fallocate.  Replace
12745         ftruncate.
12746         * ftruncate.c: New file, from gnulib.
12747         * output.cc (posix_fallocate): Define dummy version if not
12748         HAVE_POSIX_FALLOCATE.
12749         (Output_file::map): Call posix_fallocate rather than lseek and
12750         write.
12751         * gold.h (ftruncate): Declare if not HAVE_FTRUNCATE.
12752         * configure, Makefile.in, config.in: Rebuild.
12753
12754 2009-03-17  Paul Pluzhnikov  <ppluzhnikov@google.com>
12755
12756         * layout.h (Layout::create_note): Add section_name parameter.
12757         * layout.cc (Layout::create_note): Likewise.
12758         (Layout::create_build_id, Layout::create_gold_note): Fix callers.
12759
12760 2009-03-17  Ian Lance Taylor  <iant@google.com>
12761
12762         * descriptors.cc: Include "options.h".
12763         (FD_CLOEXEC, O_CLOEXEC): Define if not defined.
12764         (Descriptors::open): Always use O_CLOEXEC when opening a new
12765         descriptor.  If we have a plugin, and O_CLOEXEC was not defined,
12766         then set FD_CLOEXEC.
12767
12768         * sparc.cc (class Target_sparc): Add has_got_section.
12769         (Target_sparc::Scan::global): If we see _GLOBAL_OFFSET_TABLE_,
12770         make sure we have a GOT section.
12771
12772         * sparc.cc (optimize_tls_reloc): Recognize R_SPARC_TLS_IE_ADD.
12773         (Target_sparc::Scan::local): Likewise.
12774         (Target_sparc::Scan::global): Likewise.
12775         (Target_sparc::Relocate::relocate): Likewise.
12776         (Target_sparc::Relocate::relocate_tls): Likewise.
12777
12778         * symtab.cc (Symbol_table::define_default_version): New function,
12779         broken out of add_from_object.
12780         (Symbol_table::add_from_object): Call define_default_version.
12781         (Symbol_table::define_special_symbol): Add resolve_oldsym
12782         parameter.  Change all callers.  If the version for a symbol comes
12783         from a version script, resolve it with the symbol with the same
12784         name with no version.  Also add the symbol without a version if
12785         appropriate.
12786         (do_define_in_output_data): If resolving with oldsym, don't delete
12787         sym.
12788         (do_define_in_output_segment): Likewise.
12789         (do_define_as_constant): Likewise.
12790         * symtab.h (class Symbol_table): Update declarations.
12791
12792 2009-03-13  Ian Lance Taylor  <iant@google.com>
12793
12794         * readsyms.cc (Read_symbols::incompatible_warning): New function.
12795         (Read_symbols::requeue): New function.
12796         (Read_symbols::do_read_symbols): If make_elf_object fails because
12797         the target type is not configured, and the file was searched for,
12798         issue a warning and retry with the next directory.
12799         (Add_symbols::run): If the file has an incompatible format, and
12800         it was searched for, requeue the Read_symbols task.  On error,
12801         release the object.
12802         * readsyms.h (class Read_symbols): Add dirindex_ field.  Add
12803         dirindex parameter to constructor.  Change all callers.  Declare
12804         incompatible_warning and requeue.
12805         (class Add_symbols): Add dirpath_, dirindex_, mapfile_,
12806         input_argument_ and input_group_ fields.  Add them to
12807         constructor.  Change all callers.
12808         (class Read_script): Add dirindex_ field.  Add it to constructor.
12809         Change all callers.
12810         * archive.cc (Archive::setup): Remove input_objects parameter.
12811         Change all callers.
12812         (Archive::get_file_and_offset): Likewise.
12813         (Archive::read_all_symbols): Likewise.
12814         (Archive::read_symbols): Likewise.
12815         (Archive::get_elf_object_for_member): Remove input_objects
12816         parameter.  Add punconfigured parameter.  Change all callers.
12817         (Archive::add_symbols): Change return type to bool.  Check return
12818         value of include_member.
12819         (Archive::include_all_members): Likewise.
12820         (Archive::include_member): Change return type to bool.  Return
12821         false if first included object has incompatible target.  Set
12822         included_member_ field.
12823         (Add_archive_symbols::run): If add_symbols returns false, requeue
12824         Read_symbols task.
12825         * archive.h (class Archive): Add included_member_ field.
12826         Initialize it in constructor.  Add input_file and searched_for
12827         methods.  Update declarations.
12828         (class Add_archive_symbols): Add dirpath_, dirindex_, and
12829         input_argument_ fields.  Add them to constructor.  Change all
12830         callers.
12831         * script.cc: Include "target-select.h".
12832         (class Parser_closure): Add skip_on_incompatible_target_ and
12833         found_incompatible_target_ fields.  Add
12834         skip_on_incompatible_target parameter to constructor.  Change all
12835         callers.  Add methods skip_on_incompatible_target,
12836         clear_skip_on_incompatible_target, found_incompatible_target, and
12837         set_found_incompatible_target.
12838         (read_input_script): Add dirindex parameter.  Change all callers.
12839         If parser finds an incompatible target, requeue Read_symbols
12840         task.
12841         (script_set_symbol): Clear skip_on_incompatible_target in
12842         closure.
12843         (script_add_assertion, script_parse_option): Likewise.
12844         (script_start_sections, script_add_phdr): Likewise.
12845         (script_check_output_format): New function.
12846         * script.h (read_input_script): Update declaration.
12847         * script-c.h (script_check_output_format): Declare.
12848         * yyscript.y (file_cmd): Handle OUTPUT_FORMAT.
12849         (ignore_cmd): Remove OUTPUT_FORMAT.
12850         * fileread.cc (Input_file::Input_file): Add explicit this.
12851         (Input_file::will_search_for): New function.
12852         (Input_file::open): Add pindex parameter.  Change all callers.
12853         * fileread.h (class Input_file): Add input_file_argument method.
12854         Declare will_search_for.  Update declarations.
12855         * object.cc (make_elf_object): Add punconfigured parameter.
12856         Change all callers.
12857         * object.h (class Object): Make input_file public.  Add
12858         searched_for method.
12859         (make_elf_object): Update declaration.
12860         * dirsearch.cc (Dirsearch::find): Add pindex parameter.  Use it to
12861         restart search.
12862         * dirsearch.h (class Dirsearch): Update declaration.
12863         * options.h (class General_options): Add --warn-search-mismatch.
12864         * parameters.cc (Parameters::is_compatible_target): New function.
12865         * parameters.h (class Parameters): Declare is_compatible_target.
12866         * workqueue.cc (Workqueue::add_blocker): New function.
12867         * workqueue.h (class Workqueue): Declare add_blocker.
12868
12869         * fileread.cc (Input_file::open): Remove options parameter.
12870         Change all callers.
12871         (Input_file::open_binary): Likewise.
12872         * script.cc (read_input_script): Likewise.
12873         * readsyms.h (class Read_symbols): Remove options_ field.  Remove
12874         options parameter from constructor.  Change all callers.
12875         (class Read_script): Likewise.
12876         * fileread.h (class Input_file): Update declarations.
12877         * script.h (read_input_script): Update declaration.
12878
12879 2009-03-10  Nick Clifton  <nickc@redhat.com>
12880
12881         * po/es.po: New Spanish translation.
12882
12883 2009-03-06  Cary Coutant  <ccoutant@google.com>
12884
12885         * options.cc (parse_short_option): Keep dash_z from registering itself.
12886
12887 2009-03-03  Ian Lance Taylor  <iant@google.com>
12888
12889         PR 9918
12890         * target-reloc.h (relocate_section): Pass output_section to
12891         relocate.
12892         * i386.cc (Target_i386::should_apply_static_reloc): Add
12893         output_section parameter.  Change all callers.
12894         (Target_i386::Relocate::relocate): Add output_section parameter.
12895         * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
12896         * sparc.cc (Target_sparc::Relocate::relocate): Likewise.
12897         * powerpc.cc (Target_powerpc::Relocate::relocate): Likewise.
12898         * testsuite/two_file_shared.sh: New script.
12899         * testsuite/Makefile.am (check_SCRIPTS): Add two_file_shared.sh.
12900         (check_DATA): Add two_file_shared.dbg.
12901         (two_file_shared.dbg): New target.
12902         * testsuite/Makefile.in: Rebuild.
12903
12904 2009-03-01  Ian Lance Taylor  <iant@google.com>
12905
12906         * configure.ac: Check for byteswap.h.
12907         * configure: Rebuild.
12908         * config.in: Rebuild.
12909
12910 2009-03-01  Mikolaj Zalewski  <mikolajz@google.com>
12911
12912         * layout.cc (Layout::find_or_add_kept_section): New function.
12913         (Layout::add_comdat): Removed.
12914         * layout.h (struct Kept_section): Move out of class Layout.
12915         Remove trailing underscores from field names.  Add group_sections
12916         field.  Rename group_ field to is_group.  Change all uses.
12917         (class Layout): Declare find_or_add_kept_section, not add_comdat.
12918         * object.cc (Sized_relobj::Sized_relobj): Don't initialize
12919         comdat_groups_ field.
12920         (Sized_relobj::include_section_group): Use
12921         find_or_add_kept_section and Kept_section::group_sections.
12922         (Sized_relobj::include_linkonce_section): Likewise.
12923         * object.cc (class Sized_relobj): Don't define Comdat_group or
12924         Comdat_group_table.  Remove find_comdat_group and
12925         add_comdat_group.  Remove comdat_groups_ field.
12926         * plugin.cc (include_comdat_group): Use
12927         Layout::find_or_add_kept_section.
12928
12929 2009-02-28  Ian Lance Taylor  <iant@google.com>
12930
12931         * README: --gc-sections and map files are now supported.  Document
12932         some build requirements.
12933
12934         PR 6992
12935         * symtab.cc (Symbol_table::sized_write_section_symbol): In a
12936         relocatable link set the value of the section symbol to zero.
12937         * object.cc (Sized_relobj::do_finalize_local_symbols): In a
12938         relocatable link don't include the section address in the local
12939         symbol value.
12940
12941 2009-02-27  Ian Lance Taylor  <iant@google.com>
12942
12943         PR 6811
12944         * options.h (class Search_directory): Add is_system_directory.
12945         (class General_options): Declare is_in_system_directory.
12946         * options.cc (get_relative_sysroot): Make static.
12947         (get_default_sysroot): Make static.
12948         (General_optoins::is_in_system_directory): New function.
12949         * fileread.cc (Input_file::is_in_system_directory): New function.
12950         * fileread.h (class Input_file): Declare is_in_system_directory.
12951         * object.h (class Object): Add is_in_system_directory.
12952         (class Input_objects): Remove system_library_directory_ field.
12953         * object.cc (Input_objects::add_object): Don't set
12954         system_library_directory_.
12955         (input_objects::found_in_system_library_directory): Remove.
12956         * symtab.cc (Symbol_table::write_globals): Remove input_objects
12957         parameter.  Change all callers.
12958         (Symbol_table::sized_write_globals): Likewise.
12959         (Symbol_table::warn_about_undefined_dynobj_symbol): Likewise.
12960         Call Object::is_in_system_directory.
12961         * symtab.h (class Symbol_table): Update declarations.
12962
12963         PR 5990
12964         * descriptors.h (Open_descriptor): Add is_on_stack field.
12965         * descriptors.cc (Descriptors::open): If the descriptor is on the
12966         top of the stack, remove it.  Initialize is_on_stack field.
12967         (Descriptors::release): Only add pod to stack if it is not on the
12968         stack already.
12969         (Descriptors::close_some_descriptor): Clear stack_next and
12970         is_on_stack fields.
12971
12972         PR 7091
12973         * output.cc (Output_section::find_starting_output_address): Rename
12974         from starting_output_address; add PADDR parameter; change return
12975         type.
12976         * output.h (class Output_section): Declare
12977         find_starting_output_address instead of starting_output_address.
12978         * object.cc (Sized_relobj::do_finalize_local_symbols): Handle a
12979         section symbol for which we can't find a merge section.
12980
12981         PR 9836
12982         * symtab.cc (Symbol_table::add_from_object): If the visibility is
12983         hidden or internal, force the symbol to be local.
12984         * resolve.cc (Symbol::override_visibility): Define.
12985         (Symbol::override_base): Use override_visibility.
12986         (Symbol_table::resolve): Likewise.
12987         (Symbol::override_base_with_special): Likewise.
12988         (Symbol_table::override_with_special): If the visibility is hidden
12989         or internal, force the symbol to be local.
12990         * symtab.h (class Symbol): Add set_visibility and
12991         override_visibility.
12992         * testsuite/ver_test_1.sh: New file.
12993         * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_1.sh.
12994         (check_DATA): Add ver_test_1.syms.
12995         (ver_test_1.syms): New target.
12996         * testsuite/Makefile.in: Rebuild.
12997
12998 2009-02-25  Cary Coutant  <ccoutant@google.com>
12999
13000         * layout.cc (Layout::choose_output_section): Don't rename sections
13001         when using a linker script that has a SECTIONS clause.
13002         * Makefile.in: Regenerate.
13003
13004         * testsuite/Makefile.am (script_test_5.sh): New test case.
13005         * testsuite/Makefile.in: Regenerate.
13006         * testsuite/script_test_5.cc: New file.
13007         * testsuite/script_test_5.sh: New file.
13008         * testsuite/script_test_5.t: New file.
13009
13010 2009-02-13  Rafael Avila de Espindola  <espindola@google.com>
13011
13012         * archive.cc (Archive::include_member): Update calls to add_symbols.
13013         * dynobj.cc (Sized_dynobj<size, big_endian>::make_version_map): Add
13014         the Layout argument.
13015         * dynobj.h (do_add_symbols): Add the Layout argument.
13016         * object.cc (Sized_relobj<size, big_endian>::do_add_symbols): Add the
13017         Layout argument.
13018         * object.h (Object::add_symbols): Add the Layout argument.
13019         (Object::do_add_symbols): Add the Layout argument.
13020         (Sized_relobj::do_add_symbols): Add the Layout argument.
13021         * plugin.cc (Sized_pluginobj<size, big_endian>::do_add_symbols):
13022         Unify the two versions.
13023         (Add_plugin_symbols): Remove.
13024         * plugin.h (Pluginobj::add_symbols, Pluginobj::do_add_symbols): Remove.
13025         (Sized_pluginobj::do_add_symbols): Unify the two versions.
13026         (Add_plugin_symbols): Remove.
13027         * readsyms.cc (Read_symbols::do_read_symbols): Update call to
13028         Add_symbols. Use Add_symbols instead of Add_plugin_symbols.
13029         (Add_symbols::run): Make it work with Pulginobj.
13030
13031 2009-02-06  Ian Lance Taylor  <iant@google.com>
13032
13033         * object.cc (Sized_relobj::do_layout): Make info message start
13034         with lower case letter.
13035
13036 2009-02-06  Mikolaj Zalewski  <mikolajz@google.com>
13037
13038         * binary.cc: Fix file comment.
13039
13040         * options.h (enum Incremental_disposition): Define.
13041         (class General_options): Add new options: --incremental,
13042         --incremental_changed, --incremental_unchanged,
13043         --incremental_unknown.  Add incremental_disposition_ and
13044         implicit_incremental_ fields.
13045         (General_options::incremental_disposition): New function.
13046         (class Position_dependent_options): Add incremental_disposition
13047         option.
13048         (Position_dependent_options::copy_from_options): Set incremental
13049         dispositions.
13050         * options.cc (General_options::parse_incremental_changed): New
13051         function.
13052         (General_options::parse_incremental_unchanged): New function.
13053         (General_options::parse_incremental_unknown): New function.
13054         (General_options::General_options): Initialize new fields
13055         incremental_disposition_ and implicit_incremental_.
13056         (General_options::finalize): Check for uasge of --incremental-*
13057         without --incremental.
13058
13059 2009-02-06  Chris Demetriou  <cgd@google.com>
13060
13061         * gold.h (gold_undefined_symbol): Change to take only a Symbol
13062         pointer and to report location as the file name associated with
13063         the symbol.
13064         (gold_undefined_symbol_at_location): New function to replace the
13065         old gold_undefined_symbol functionality.
13066         * target-reloc.h (relocate_section): Update to use
13067         gold_undefined_symbol_at_location.
13068         * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
13069         Call gold_undefined_symbol function rather than gold_error.
13070         * errors.h (Errors::undefined_symbol): Take location as a
13071         string, rather than calculating it from a relocation.
13072         * errors.cc (Errors::fatal): Print "fatal error:" before the
13073         formatted message.
13074         (Errors::error, Errors::error_at_location): Print "error: "
13075         before the formatted message.
13076         (Errors::undefined_symbol): Take location as a string, rather
13077         than calculating it from a relocation.
13078         (gold_undefined_symbol_at_location): New function akin to
13079         old gold_undefined_symbol, calculates location from relocation.
13080         (gold_undefined_symbol): Change to take only a Symbol pointer
13081         and to report location as the file name associated with the symbol.
13082         * testsuite/debug_msg.sh: Update for changed error messages.
13083         * testsuite/undef_symbol.sh: Likewise.
13084
13085 2009-02-04  Duncan Sands  <baldrick@free.fr>
13086
13087         PR 9812
13088         * reduced_debug_output.h
13089         (Output_reduced_debug_abbrev_section::failed): Use format for
13090         gold_warning.
13091         (Output_reduced_debug_info_section::faild): Likewise.
13092
13093 2009-01-31  Mikolaj Zalewski  <mikolajz@google.com>
13094
13095         * script.cc (Lazy_demangler): New class.
13096         (Version_script_info::get_symbol_version_helper): Demangle a
13097         symbol only once.
13098
13099 2009-01-29  Cary Coutant  <ccoutant@google.com>
13100
13101         * i386.cc (Target_i386::Relocate::relocate): Recognize non-PIC calls
13102         to __tls_get_addr.
13103         * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
13104
13105 2009-01-28  Ian Lance Taylor  <iant@google.com>
13106
13107         * version.cc (version_string): Bump to 1.9.
13108
13109         * gold.h: Include <cstring> and <stdint.h>.
13110         * version.cc: Include <cstdio>.
13111         * object.cc (Sized_relobj::do_layout): Initialize gc_sd to avoid a
13112         warning.
13113         * reduced_debug_output.cc (insert_into_vector): Rename from
13114         Insert_into_vector; change all callers.  Use Swap_unaligned to
13115         avoid aliasing issue; remove union since it is unnecessary.
13116
13117 2009-01-27  Sriraman Tallam  <tmsriram@google.com>
13118
13119         * Makefile.am (CCFILES): Add gc.cc.
13120         (HFILES): Add gc.h.
13121         * Makefile.in: Regenerate.
13122         * gold.cc (Gc_runner): New class.
13123         (queue_initial_tasks): Call garbage collection related tasks
13124         when corresponding options are invoked.
13125         (queue_middle_gc_tasks): New function.
13126         (queue_middle_tasks): Reorder tasks to allow relocs to be read and
13127         processed early before laying out sections during garbage collection.
13128         * gold.h (queue_middle_gc_tasks): New function.
13129         (is_prefix_of): Move from "layout.cc".
13130         * i386.cc (Target_i386::gc_process_relocs): New function.
13131         * layout.cc (is_prefix_of): Remove. Move to "gold.h"
13132         * main.cc (main): Create object of class "Garbage_collection".
13133         * object.cc (Relobj::copy_symbols_data): New function.
13134         (Relobj::is_section_name_included): New function.
13135         (Sized_relobj::do_layout): Allow this function to be called twice
13136         during garbage collection and defer layout of section during the
13137         first call.
13138         * object.h (Relobj::get_symbols_data): New function.
13139         (Relobj::is_section_name_included): New function.
13140         (Relobj::copy_symbols_data): New function.
13141         (Relobj::set_symbols_data): New function.
13142         (Relobj::get_relocs_data): New function.
13143         (Relobj::set_relocs_data): New function.
13144         (Relobj::is_output_section_offset_invalid): New pure virtual function.
13145         (Relobj::gc_process_relocs): New function.
13146         (Relobj::do_gc_process_relocs): New pure virtual function.
13147         (Relobj::sd_): New data member.
13148         (Sized_relobj::is_output_section_offset_invalid): New function.
13149         (Sized_relobj::do_gc_process_relocs): New function.
13150         * options.h (General_options::gc_sections): Modify to not be a no-op.
13151         (General_options::print_gc_sections): New option.
13152         * plugin.cc (Plugin_finish::run): Remove function call to
13153         Plugin_manager::layout_deferred_objects.  Move it to "gold.cc".
13154         * powerpc.cc (Target_powerpc::gc_process_relocs): New function.
13155         * reloc.cc (Read_relocs::run): Add task to process relocs and
13156         determine unreferenced sections when doing garbage collection.
13157         (Gc_process_relocs): New class.
13158         (Sized_relobj::do_gc_process_relocs): New function.
13159         (Sized_relobj::do_scan_relocs): Don't try to scan the relocs for
13160         sections that are garbage collected.
13161         * reloc.h (Gc_process_relocs): New class.
13162         * sparc.cc (Target_sparc::gc_process_relocs): New function.
13163         * symtab.cc (Symbol::should_add_dynsym_entry): Do not add entries for
13164         symbols whose corresponding sections are garbage collected.
13165         (Symbol_table::Symbol_table): Add new parameter for the garbage
13166         collection object.
13167         (Symbol_table::gc_mark_undef_symbols): New function.
13168         (Symbol_table::gc_mark_symbol_for_shlib): New function.
13169         (Symbol_table::gc_mark_dyn_syms): New function.
13170         (Symbol_table::resolve): Do not treat symbols seen in dynamic objects
13171         as garbage.
13172         (Symbol_table::add_from_object): Likewise.
13173         (Symbol_table::add_from_relobj): When building shared objects, do not
13174         treat externally visible symbols as garbage.
13175         (Symbol_table::sized_finalize_symbol): Do not check dynamic symbol
13176         table information for static and relocatable links.
13177         * symtab.h (Symbol_table::set_gc): New function.
13178         (Symbol_table::gc): New function.
13179         (Symbol_table::gc_mark_undef_symbols): New function.
13180         (Symbol_table::gc_mark_symbol_for_shlib): New function.
13181         (Symbol_table::gc_mark_dyn_syms): New function.
13182         (Symbol_table::gc_): New data member.
13183         * target.h (Sized_target::gc_process_relocs): New pure virtual
13184         function.
13185         * x86_64.cc (Target_x86_64::gc_process_relocs): New function.
13186         * testsuite/testfile.cc (Target_test::gc_process_relocs): New function.
13187
13188 2009-01-20  Chris Faylor <me.sourceware@sourceware.org>
13189
13190         * options.h (General_options::gc_sections): Define as a no-op for now.
13191         (General_options::no_keep_memory): Ditto.
13192         (General_options::Bshareable): Define.
13193         * options.cc (General_options::finalize): Honor -Bshareable.
13194
13195 2009-01-20  Andreas Schwab  <schwab@suse.de>
13196
13197         * powerpc.cc (Powerpc_relocate_functions::rel16_ha): Don't try to
13198         read the value in the contents, since we don't use it.  Use the
13199         template endianness when writing.
13200         (Relocate::relocate): Use it for R_PPC_REL16_HA.
13201
13202 2009-01-19  Andreas Schwab  <schwab@suse.de>
13203
13204         * configure.tgt (powerpc64-*): Fix targ_obj.
13205
13206 2009-01-15  Ian Lance Taylor  <iant@google.com>
13207
13208         * object.cc (Sized_relobj::write_local_symbols): Don't write out
13209         local symbols when stripping all symbols.
13210
13211 2009-01-14  Cary Coutant  <ccoutant@google.com>
13212
13213         * output.cc (Output_reloc): Add explicit instantiations.
13214
13215 2009-01-14  Cary Coutant  <ccoutant@google.com>
13216
13217         * archive.cc (Archive::get_elf_object_for_member): Remove call
13218         to File_read::claim_for_plugin.
13219         * descriptors.cc (Descriptors::open): Remove reference to
13220         is_claimed.
13221         (Descriptors::claim_for_plugin): Remove.
13222         * descriptors.h (Descriptors::claim_for_plugin): Remove.
13223         (Descriptors::is_claimed): Remove.
13224         (claim_descriptor_for_plugin): Remove.
13225         * fileread.cc (File_read::claim_for_plugin): Remove.
13226         * fileread.h (File_read::claim_for_plugin): Remove.
13227         (File_read::descriptor): Reopen descriptor if necessary.
13228         * plugin.cc  (Plugin::load): Add two new APIs to transfer vector.
13229         (Plugin_manager::all_symbols_read): Add task parameter. Change
13230         all callers.
13231         (Plugin_manager::get_input_file): New function.
13232         (Plugin_manager::release_input_file): New function.
13233         (Pluginobj::Pluginobj): Add filesize parameter and initialize
13234         corresponding data member.
13235         (Sized_pluginobj::Sized_pluginobj): Add filesize parameter
13236         and pass to base constructor. Change all callers.
13237         (get_input_file, release_input_file): New functions.
13238         (make_sized_plugin_object): Add filesize parameter. Change all callers.
13239         * plugin.h (Plugin_manager::Plugin_manager): Initialize task_ member.
13240         (Plugin_manager::all_symbols_read): Add task parameter.
13241         (Plugin_manager::get_input_file): New function.
13242         (Plugin_manager::release_input_file): New function.
13243         (Plugin_manager::task_): New data member.
13244         (Pluginobj::Pluginobj): Add filesize parameter.
13245         (Pluginobj::filename): New function.
13246         (Pluginobj::descriptor): New function.
13247         (Pluginobj::filesize): New function.
13248         (Pluginobj::filesize_): New data member.
13249         (Sized_pluginobj::Sized_pluginobj): Add filesize parameter.
13250         * readsyms.cc (Read_symbols::do_read_symbols): Remove call to
13251         File_read::claim_for_plugin; use Object::unlock to unlock the file.
13252
13253         * testsuite/Makefile.am (plugin_test_4): New test case for plugins
13254         with archive libraries.
13255         * testsuite/Makefile.in: Regenerate.
13256         * testsuite/plugin_test.c (struct sym_info): New type.
13257         (get_input_file, release_input_file): New static variables.
13258         (onload): Capture new transfer vector entries.
13259         (claim_file_hook): Stop reading at end of file according to filesize.
13260         Factor out parsing of readelf output into separate function.
13261         (all_symbols_read_hook): Exercise get_input_file and release_input_file
13262         APIs and get the source file name from the symbol table.  Convert
13263         source file name to corresponding object file name.  Print info
13264         message when adding new input files.
13265         (parse_readelf_line): New function.
13266         * testsuite/plugin_test_1.sh: Add checks for new info messages.
13267         * testsuite/plugin_test_2.sh: Likewise.
13268         * testsuite/plugin_test_3.sh: Likewise.
13269         * testsuite/plugin_test_4.sh: New test case.
13270
13271 2009-01-07  Ian Lance Taylor  <iant@google.com>
13272
13273         * version.cc (version_string): Bump to 1.8.
13274
13275 2008-12-23  Cary Coutant  <ccoutant@google.com>
13276
13277         * gold.cc (gold_exit): Call plugin cleanup handlers on exit.
13278         * plugin.cc (Plugin_manager::finish): Rename as
13279         layout_deferred_objects.  Move cleanup to separate function.
13280         (Plugin_manager::cleanup): New function.
13281         (Plugin_finish::run): Call layout_deferred_objects and cleanup
13282         separately.
13283         * plugin.h (Plugin_manager::finish): Rename as
13284         layout_deferred_objects.
13285         (Plugin_manager::cleanup): New function.
13286         (Plugin_manager::cleanup_done): New field.
13287
13288 2008-12-23  Cary Coutant  <ccoutant@google.com>
13289
13290         * plugin.cc (is_visible_from_outside): New function.
13291         (Pluginobj::get_symbol_resolution_info): Call is_visible_from_outside
13292         so we don't return "IR only" status for exported symbols or -r links.
13293
13294         * testsuite/Makefile.am (plugin_test_3): New test case.
13295         * testsuite/Makefile.in: Regenerate.
13296         * testsuite/plugin_test_3.sh: New file.
13297
13298 2008-12-22  Cary Coutant  <ccoutant@google.com>
13299
13300         * object.cc (Sized_relobj::layout_section): New function.
13301         (Sized_relobj::do_layout): Defer layout of input sections until after
13302         plugin has provided replacement files.
13303         (Sized_relobj::do_layout_deferred_sections): New function.
13304         * object.h (Relobj::set_section_offset): Remove virtual keyword.
13305         (Relobj::layout_deferred_sections): New function.
13306         (Relobj::do_layout_deferred_sections): New function.
13307         (Sized_relobj::do_layout_deferred_sections): New function.
13308         (Sized_relobj::layout_section): New function.
13309         (Sized_relobj::Deferred_layout): New structure.
13310         (Sized_relobj::deferred_layout_): New field.
13311         * plugin.cc (Plugin_manager::finish): Renamed, was cleanup.
13312         Change all callers.  Layout deferred sections.
13313         (class Plugin_finish): Renamed, was Plugin_cleanup.  Change all
13314         references.
13315         (Plugin_hook::run): Move code from do_plugin_hook inline.
13316         (Plugin_hook::do_plugin_hook): Remove.
13317         * plugin.h (Plugin_manager::Plugin_manager): Add missing initializers.
13318         (Plugin_manager::finish): Renamed, was cleanup.
13319         (Plugin_manager::should_defer_layout): New function.
13320         (Plugin_manager::add_deferred_layout_object): New function.
13321         (Plugin_manager::Deferred_layout_list): New type.
13322         (Plugin_manager::deferred_layout_objects_): New field.
13323         (Plugin_hook::do_plugin_hook): Remove.
13324
13325 2008-12-17  Ian Lance Taylor  <iant@google.com>
13326
13327         * options.h (class General_options): Add --no case for
13328         --export-dynamic.
13329
13330 2008-12-16  Cary Coutant  <ccoutant@google.com>
13331
13332         * plugin.cc (Plugin::load): Move LDPT_MESSAGE to front of transfer
13333         vector.
13334         (Plugin_manager::claim_file): Create plugin object even if
13335         plugin did not call the add_symbols callback.
13336         (Plugin_obj::get_symbol_resolution_info): Guard against plugin
13337         asking for more symbols than were added.
13338         * testsuite/Makefile.am (plugin_test_1): Add test case with
13339         no global symbols.
13340         (empty.syms): New target.
13341         * testsuite/Makefile.in: Regenerate.
13342         * testsuite/plugin_test.c (claim_file_hook): Add new debug
13343         message. Don't call add_symbols if no globals.
13344         (all_symbols_read_hook): Don't provide replacement for empty
13345         claimed file.
13346
13347 2008-12-12  Ian Lance Taylor  <iant@google.com>
13348
13349         * target-reloc.h (Default_scan_relocatable_relocs): Only discard
13350         r_type == 0 for a local symbol with r_sym == 0.
13351         (scan_relocatable_relocs): Pass r_sym to
13352         local_non_section_strategy.
13353         * reloc.cc (Emit_relocs_strategy::local_non_section_strategy): Add
13354         r_sym parameter.
13355
13356         * configure.ac: Update test for TLS descriptors: they are
13357         supported as of glibc 2.9.
13358         * configure: Rebuild.
13359
13360 2008-12-11  Ian Lance Taylor  <iant@google.com>
13361
13362         PR 7091
13363         * target-reloc.h (Default_scan_relocatable_relocs): For each
13364         function, map r_type == 0 to RELOC_DISCARD.
13365
13366 2008-12-10  Cary Coutant  <ccoutant@google.com>
13367
13368         * layout.cc (Layout::add_comdat): Allow COMDAT group from a replacement
13369         object to override a kept COMDAT group from a plugin object.
13370
13371 2008-12-09  Ian Lance Taylor  <iant@google.com>
13372
13373         PR 7088
13374         * yyscript.y (file_cmd): Handle INPUT.
13375
13376         * testsuite/initpri1.c: Change all declarations to be full
13377         prototypes by adding void, to avoid compiler warnings.
13378
13379 2008-12-05  Rafael Avila de Espindola  <espindola@google.com>
13380
13381         * options.cc (General_options::parse_plugin_opt): New.
13382         (General_options::add_plugin): The argument now is just the filename.
13383         (General_options::add_plugin_option): New.
13384         * options.h (plugin_opt): New.
13385         (add_plugin): Change argument name.
13386         (add_plugin_option): New.
13387         * plugin.cc (Plugin::load): Don't parse the plugin option.
13388         * plugin.h (Plugin::Plugin): Rename argument. Init filename_.
13389         (Plugin::add_option): New.
13390         (Plugin::args_): Change type.
13391         (Plugin::filename_): New.
13392         (Plugin_manager::add_plugin_option): New.
13393         * testsuite/Makefile.am (plugin_test_1): Use new syntax.
13394         * testsuite/Makefile.in: Regenerate.
13395
13396 2008-12-05  Cary Coutant  <ccoutant@google.com>
13397
13398         * layout.cc (Layout::include_section): Check for SHF_EXCLUDE.
13399         Handle --strip-lto-sections option.
13400         * options.h (strip_lto_sections): New option.
13401
13402 2008-12-01  Cary Coutant  <ccoutant@google.com>
13403
13404         * plugin.cc (ld_plugin_message): Change format parameter to const.
13405         Fix mismatch between new[] and delete.
13406
13407 2008-11-14  Cary Coutant  <ccoutant@google.com>
13408
13409         * reloc.cc (Sized_relobj::do_read_relocs): Use constant invalid_address
13410         instead of -1U.
13411
13412 2008-11-05  Craig Silverstein  <csilvers@google.com>
13413
13414         * options.cc (General_options::parse_dynamic_list): New function.
13415         * options.h (General_options): New flags dynamic_list,
13416         dynamic_list_data, dynamic_list_cpp_new, and
13417         dynamic_list_cpp_typeinfo.  New variable dynamic_list_.
13418         (General_options::in_dynamic_list): New function.
13419         * script.cc (Lex::Mode): New enum DYNAMIC_LIST.
13420         (Lex::can_start_name): Add support for DYNAMIC_LIST mode.
13421         (Lex::can_continue_name): Likewise.
13422         (yylex): Likewise.
13423         (read_script_file): New parameter script_options.
13424         (read_dynamic_list): New function.
13425         (Script_options::define_dynamic_list): New function.
13426         (dynamic_list_keyword_parsecodes): New variable.
13427         (dynamic_list_keywords): New variable.
13428         * script.h (Script_options::define_dynamic_list): New function
13429         prototype.
13430         (read_dynamic_list): New function prototype.
13431         * symtab.cc (strprefix): New macro.
13432         (Symbol::should_add_dynsym_entry): Support dynamic_list,
13433         dynamic_list_data, dynamic_list_cpp_new, and
13434         dynamic_list_cpp_typeinfo.
13435         * yyscript.y (PARSING_DYNAMIC_LIST): New token.
13436         (dynamic_list_expr): New rule.
13437         (dynamic_list_nodes): Likewise.
13438         (dynamic_list_node): Likewise.
13439         * testsuite/Makefile.am (dynamic_list): New test.
13440         * testsuite/Makefile.in: Regenerated.
13441         * testsuite/dynamic_list.t: New file.
13442         * testsuite/dynamic_list.sh: New file.
13443
13444 2008-11-05  Craig Silverstein  <csilvers@google.com>
13445
13446         * testsuite/tls_test_c.c: Add prototype for t11 and t11_last.
13447         * testsuite/tls_test_c.c (t11): Add explicit "void" to prototype.
13448         (t11_last): Likewise.
13449         * testsuite/ver_test_6.c (main): Likewise.
13450
13451 2008-10-07  Cary Coutant  <ccoutant@google.com>
13452
13453         * options.c (General_options::finalize): Add check for -static and
13454         -shared.
13455         * gold.cc (queue_middle_tasks): Assert that list of dynamic objects
13456         is not empty.
13457
13458 2008-10-02  Cary Coutant  <ccoutant@google.com>
13459
13460         * plugin.cc (make_sized_plugin_object): Fix conditional
13461         compilation to work when not all targets are enabled.
13462
13463 2008-09-29  Cary Coutant  <ccoutant@google.com>
13464
13465         * archive.cc (Archive::get_file_and_offset): Use filename instead
13466         of name to get library path.
13467         (Archive::include_member): Unlock external member of a thin archive.
13468
13469         * testsuite/Makefile.am (TEST_AR): New variable.
13470         (thin_archive_test_1): New test.
13471         (thin_archive_test_2): New test.
13472         * testsuite/Makefile.in: Regenerate.
13473         * testsuite/thin_archive_main.cc: New file.
13474         * testsuite/thin_archive_test_1.cc: New file.
13475         * testsuite/thin_archive_test_2.cc: New file.
13476         * testsuite/thin_archive_test_3.cc: New file.
13477         * testsuite/thin_archive_test_4.cc: New file.
13478
13479 2008-09-29  Cary Coutant  <ccoutant@google.com>
13480
13481         * mapfile.cc (Mapfile::print_input_section): Change -1U to -1ULL.
13482         * object.cc (Sized_relobj::do_layout): Use constant invalid_address
13483         instead of -1U.
13484         (Sized_relobj::do_finalize_local_symbols): Likewise.
13485         (Sized_relobj::map_to_kept_section): Likewise.
13486         * object.h (Sized_relobj::invalid_address): New constant.
13487         (Sized_relobj::do_output_section_offset): Check for invalid_address
13488         and return -1ULL.
13489         * output.cc (Output_reloc::local_section_offset): Use constant
13490         invalid_address instead of -1U.
13491         (Output_reloc::get_address): Likewise.
13492         (Output_section::output_address): Change -1U to -1ULL.
13493         * output.h (Output_reloc::invalid_address): New constant.
13494         * reloc.cc (Sized_relobj::write_sections): Use constant
13495         invalid_address instead of -1U.
13496         (Sized_relobj::relocate_sections): Likewise.
13497         * symtab.cc (Symbol_table::sized_finalize_symbol): Handle symbol
13498         values for merge sections.
13499         * target-reloc.h (relocate_for_relocatable): Use constant
13500         invalid_address instead of -1U.
13501
13502 2008-09-19  Cary Coutant  <ccoutant@google.com>
13503
13504         Add plugin functionality for link-time optimization (LTO).
13505         * configure.ac (plugins): Add --enable-plugins option.
13506         * configure: Regenerate.
13507         * config.in: Regenerate.
13508         * Makefile.am (LIBDL): New variable.
13509         (CCFILES): Add plugin.cc.
13510         (HFILES): Add plugin.h.
13511         (ldadd_var): Add LIBDL.
13512         * Makefile.in: Regenerate.
13513
13514         * archive.cc: Include "plugin.h".
13515         (Archive::setup): Don't preread archive symbols when using a plugin.
13516         (Archive::get_file_and_offset): Add memsize parameter.  Change callers.
13517         (Archive::get_elf_object_for_member): Call plugin hooks for claiming
13518         files.
13519         (Archive::include_member): Add symbols from plugin objects.
13520         * archive.h (Archive::get_file_and_offset): Add memsize parameter.
13521         * descriptors.cc (Descriptors::open): Check for file descriptors
13522         abandoned by plugins.
13523         (Descriptors::claim_for_plugin): New function.
13524         * descriptors.h (Descriptors::claim_for_plugin): New function.
13525         (Open_descriptor::is_claimed): New field.
13526         (claim_descriptor_for_plugin): New function.
13527         * fileread.cc (File_read::claim_for_plugin): New function.
13528         * fileread.h (File_read::claim_for_plugin): New function.
13529         (File_read::descriptor): New function.
13530         * gold.cc: Include "plugin.h".
13531         (queue_initial_tasks): Add task to call plugin hooks for generating
13532         new object files.
13533         * main.cc: Include "plugin.h".
13534         (main): Load plugin libraries.
13535         * object.h (Pluginobj): Declare.
13536         (Object::pluginobj): New function.
13537         (Object::do_pluginobj): New function.
13538         (Object::set_target): New function.
13539         * options.cc: Include "plugin.h".
13540         (General_options::parse_plugin): New function.
13541         (General_options::General_options): Initialize plugins_ field.
13542         (General_options::add_plugin): New function.
13543         * options.h (Plugin_manager): Declare.
13544         (General_options): Add --plugin option.
13545         (General_options::has_plugins): New function.
13546         (General_options::plugins): New function.
13547         (General_options::add_plugin): New function.
13548         (General_options::plugins_): New field.
13549         * plugin.cc: New file.
13550         * plugin.h: New file.
13551         * readsyms.cc: Include "plugin.h".
13552         (Read_symbols::do_read_symbols): Check for archive before checking
13553         for ELF file.  Call plugin hooks to claim files.
13554         * resolve.cc (Symbol_table::resolve): Record when symbol is referenced
13555         from a real object file; force override when processing replacement
13556         files.
13557         * symtab.cc (Symbol::init_fields): Initialize in_real_elf_ field.
13558         (Symbol::init_base_object): Likewise.
13559         (Symbol::init_base_output_data): Likewise.
13560         (Symbol::init_base_output_segment): Likewise.
13561         (Symbol::init_base_constant): Likewise.
13562         (Symbol::init_base_undefined): Likewise.
13563         (Symbol::output_section): Assert that object is not a plugin.
13564         (Symbol_table::add_from_pluginobj): New function.
13565         (Symbol_table::sized_finalize_symbol): Treat symbols from plugins as
13566         undefined.
13567         (Symbol_table::sized_write_globals): Likewise.
13568         (Symbol_table::add_from_pluginobj): Instantiate template.
13569         * symtab.h (Sized_pluginobj): Declare.
13570         (Symbol::in_real_elf): New function.
13571         (Symbol::set_in_real_elf): New function.
13572         (Symbol::in_real_elf_): New field.
13573         (Symbol_table::add_from_pluginobj): New function.
13574
13575         * testsuite/Makefile.am (AM_CFLAGS): New variable.
13576         (LIBDL): New variable.
13577         (LDADD): Add LIBDL.
13578         (check_PROGRAMS): Add plugin_test_1 and plugin_test_2.
13579         (check_SCRIPTS): Add plugin_test_1.sh and plugin_test_2.sh.
13580         (check_DATA): Add plugin_test_1.err and plugin_test_2.err.
13581         (MOSTLYCLEANFILES): Likewise.
13582         * testsuite/Makefile.in: Regenerate.
13583         * testsuite/plugin_test.c: New file.
13584         * testsuite/plugin_test_1.sh: New file.
13585         * testsuite/plugin_test_2.sh: New file.
13586
13587 2008-09-16  Ian Lance Taylor  <iant@google.com>
13588
13589         * target-reloc.h (relocate_section): Check whether a symbol is
13590         defined by the ABI before reporting an undefined symbol error.
13591         * target.h (Target::is_defined_by_abi): Make parameter const.
13592         (Target::do_is_defined_by_abi): Likewise.
13593         * i386.cc (Target_i386::do_is_defined_by_abi): Likewise.
13594         * powerpc.cc (Target_powerpc::do_is_defined_by_abi): Likewise.
13595         * sparc.cc (Target_sparc::do_is_defined_by_abi): Likewise.
13596         * x86_64.cc (Target_x86_64::do_is_defined_by_abi): Likewise.
13597         * testsuite/Makefile.am (tls_test_shared.so): Add -Wl,-z,defs.
13598         * testsuite/Makefile.in: Rebuild.
13599
13600         * fileread.cc (make_view): Add casts to avoid warning.
13601
13602 2008-09-16  Alexandre Oliva  <aoliva@redhat.com>
13603
13604         * i386.cc (Target_i386::define_tls_base_symbol): Update comments.
13605         * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
13606
13607 2008-09-16  Alexandre Oliva  <aoliva@redhat.com>
13608
13609         * options.h (General_options::output_is_executable): New.
13610         (General_options::output_is_pie): New.
13611         * i386.cc (Target_i386::define_tls_base_symbol): Use SEGMENT_START
13612         for shared libraries.
13613         * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
13614
13615 2008-09-11  Chris Demetriou  <cgd@google.com>
13616
13617         * options.h (origin): New -z option.
13618         * layout.cc (Layout:finish_dynamic_section): If "-z origin"
13619         is specified, set DF_ORIGIN in DT_FLAGS and set DF_1_ORIGIN
13620         in DT_FLAGS_1.
13621
13622 2008-09-05  Cary Coutant  <ccoutant@google.com>
13623
13624         * fileread.cc (File_read::make_view): Add check for attempt to map
13625         beyond end of file.
13626
13627 2008-09-05  Cary Coutant  <ccoutant@google.com>
13628
13629         * symtab.cc (Symbol_table::add_from_dynobj): Fix typos in
13630         explicit instantiations.
13631
13632 2008-08-28  Kris Van Hees  <kris.van.hees@oracle.com>
13633
13634         PR gold/6858
13635         * options.cc (General_options::finalize): Allow undefined symbols
13636         in shlibs if linking -shared.
13637
13638         PR gold/6859
13639         * symtab.cc (Symbol::init_base_undefined): Mark explicitly undefined
13640         symbols as not needing a dynsym entry.
13641
13642 2008-08-20  Craig Silverstein  <csilvers@google.com>
13643
13644         * fileread.cc (File_read::open): Do not lock the file unless it
13645         was successfully opened.
13646
13647 2008-08-14  Cary Coutant  <ccoutant@google.com>
13648
13649         * x86_64.cc (Target_x86_64::Relocate::relocat_tls):
13650         Use addend for DTPOFF32, DTPOFF64, and TPOFF32 relocs.
13651         * testsuite/tls_test.cc (struct int128): 128-bit struct
13652         for testing TLS relocs with non-zero addend.
13653         (v12): New TLS variable.
13654         (t12): New test.
13655         (t_last): Add check for v12.
13656         * testsuite/tls_test.h (t12): New function.
13657         * testsuite/tls_test_main.cc (thread_routine): Call new test.
13658
13659 2008-08-13  Ian Lance Taylor  <iant@google.com>
13660
13661         * layout.cc (Layout::attach_allocated_section_to_segment): Don't
13662         set tls_segment_ or relro_segment_.
13663         (Layout::make_output_segment): Set tls_segment_ and relro_segment_
13664         when appropriate.
13665         * output.h (Output_section::clear_is_relro): New function.
13666         * output.cc (Output_segment::add_output_section): Handle SHF_TLS
13667         sections specially even when output_data_ is empty.
13668         (Output_segment::maximum_alignment): When first section is relro,
13669         only force alignment for PT_LOAD segments.
13670         * script.cc (script_data_segment_align): New function.
13671         (script_data_segment_relro_end): New function.
13672         * script-c.h (script_data_segment_align): Declare.
13673         (script_data_segment_relro_end): Declare.
13674         * script-sections.h (class Script_sections): Declare
13675         data_segment_align and data_segment_relro_end.  Add fields
13676         segment_align_index_ and saw_relro_end_.
13677         * script-sections.cc (class Sections_element): Add set_is_relro
13678         virtual function.  Add new bool* parameter to place_orphan_here.
13679         Add get_output_section virtual function.
13680         (class Output_section_definition): Add set_is_relro.  Add new
13681         bool* parameter to place_orphan_here.  Add get_output_section.
13682         Add is_relro_ field.
13683         (Output_section_definition::Output_section_definition): Initialize
13684         evaluated_address_, evaluated_load_address, evaluated_addralign_,
13685         and is_relro_ fields.
13686         (Output_section_definition::place_orphan_here): Add is_relro
13687         parameter.
13688         (Output_section_definition::set_section_addresses): Set relro for
13689         output section.
13690         (Output_section_definition::alternate_constraint): Likewise.
13691         (class Orphan_output_section): Add new bool* parameter to
13692         place_orphan_here.  Add get_output_section.
13693         (Orphan_output_section::place_orphan_here): Add is_relro
13694         parameter.
13695         (Script_sections::Script_sections): Initialize
13696         data_segment_align_index_ and saw_relro_end_.
13697         (Script_sections::data_segment_align): New function.
13698         (Script_sections::data_segment_relro_end): New function.
13699         (Script_sections::place_orphan): Set or clear is_relro.
13700         (Script_sections::set_section_addresses): Force alignment of first
13701         TLS section.
13702         * yyscript.y (exp): Call script_data_segment_align and
13703         script_data_segment_relro_end.
13704         * testsuite/relro_script_test.t: New file.
13705         * testsuite/relro_test.cc (using_script): Declare.
13706         (t1, t2): Test using_script.
13707         * testsuite/Makefile.am (check_PROGRAMS): Add relro_script_test.
13708         (relro_script_test_SOURCES): Define.
13709         (relro_script_test_DEPENDENCIES): Define.
13710         (relro_script_test_LDFLAGS): Define.
13711         (relro_script_test_LDADD): Define.
13712         (relro_script_test.so): New target.
13713         * testsuite/Makefile.in: Rebuild.
13714
13715 2008-08-06  Cary Coutant <ccoutant@google.com>
13716
13717         * archive.cc (Archive::total_archives, Archive::total_members)
13718         (Archive::total_members_loaded): New variables.
13719         (Archive::setup): Add parameter.  Add option to preread
13720         archive symbols.
13721         (Archive::read_armap): Add counter.
13722         (Archive::get_file_and_offset): New function.
13723         (Archive::get_elf_object_for_member): New function.
13724         (Archive::read_all_symbols): New function.
13725         (Archive::read_symbols): New function.
13726         (Archive::add_symbols): Add counters.
13727         (Archive::include_all_members): Use armap to find members if it's
13728         already built.
13729         (Archive::include_member): Skip reading symbols if already read.
13730         Factored code into Archive::get_file_and_offset and
13731         Archive::get_elf_object_for_member.  Changed call to
13732         Mapfile::report_include_archive_member.
13733         (Archive::print_stats): New function.
13734         * archive.h: Declare Object and Read_symbols_data classes.
13735         (Archive::Archive): Add initializers for new members.
13736         (Archive::setup): Add parameter.
13737         (Archive::print_stats): New function.
13738         (Archive::total_archives, Archive::total_members)
13739         (Archive::total_members_loaded): New variables.
13740         (Archive::get_file_and_offset): New function.
13741         (Archive::get_elf_object_for_member): New function.
13742         (Archive::read_all_symbols): New function.
13743         (Archive::read_symbols): New function.
13744         (Archive::Archive_member): New class.
13745         (Archive::members_): New member.
13746         (Archive::num_members_): New member.
13747         * main.cc: Include archive.h.
13748         (main): Call Archive::print_stats.
13749         * mapfile.cc (Mapfile::report_include_archive_member): Delete
13750         archive parameter; member_name is now the fully-decorated name.
13751         * mapfile.h (Mapfile::report_include_archive_member): Likewise.
13752         * options.h: (General_options): Add --preread-archive-symbols option.
13753         * readsyms.cc (Read_symbols::do_read_symbols): Change call to
13754         Archive::setup.
13755
13756 2008-08-04  Ian Lance Taylor  <iant@google.com>
13757
13758         * symtab.h (Symbol::use_plt_offset): New function.
13759         * i386.cc (Relocate::relocate): Call Symbol::use_plt_offset.
13760         * powerpc.cc (Relocate::relocate): Likewise.
13761         * sparc.cc (Relocate::relocate): Likewise.
13762         * x86_64.cc (Relocate::relocate): Likewise.
13763         * testsuite/weak_plt.sh: New test.
13764         * testsuite/weak_plt_main.cc: New test.
13765         * testsuite/weak_plt_shared.cc: New test.
13766         * testsuite/Makefile.am (check_SCRIPTS): Add weak_plt.sh.
13767         (check_PROGRAMS): Add weak_plt.
13768         (check_DATA): Add weak_plt_shared.so.
13769         (weak_plt_main_pic.o, weak_plt): New targets.
13770         (weak_plt_shared_pic.o, weak_plt_shared.so): New targets.
13771         * testsuite/Makefile.in: Rebuild.
13772
13773         * testsuite/Makefile.am (weak_alias_test_1.so): Depend upon
13774         gcctestdir/ld.
13775         (weak_alias_test_2.so, weak_alias_test_4.so): Likewise.
13776         * testsuite/Makefile.in: Rebuild.
13777
13778 2008-08-04  Alan Modra  <amodra@bigpond.net.au>
13779
13780         * Makefile.am (POTFILES.in): Set LC_ALL=C.
13781         * Makefile.in: Regenerate.
13782         * po/POTFILES.in: Regenerate.
13783
13784 2008-07-29  Ian Lance Taylor  <iant@google.com>
13785
13786         * script.cc (Script_options::finalize_symbols): Finalize SECTIONS
13787         symbols before other symbols.
13788         * testsuite/script_test_2.cc (test_addr): Declare.
13789         (test_addr_alias): Declare.
13790         (main): Check that test_addr and test_addr_alias have the right
13791         values.
13792         * testsuite/script_test_2.t: Define test_addr_alias and
13793         test_addr.
13794
13795 2008-07-24  Ian Lance Taylor  <iant@google.com>
13796
13797         PR 5990
13798         * descriptors.cc: New file.
13799         * descriptors.h: New file.
13800         * gold-threads.h (class Hold_optional_lock): New class.
13801         * fileread.cc: Include "descriptors.h".
13802         (File_read::~File_read): Release descriptor rather than closing
13803         it.
13804         (File_read::open) [file]: Call open_descriptor rather than open.
13805         Set is_descriptor_opened_.
13806         (File_read::open) [memory]: Assert that descriptor is not open.
13807         (File_read::reopen_descriptor): New function.
13808         (File_read::release): Release descriptor.
13809         (File_read::do_read): Make non-const.  Reopen descriptor.
13810         (File_read::read): Make non-const.
13811         (File_read::make_view): Reopen descriptor.
13812         (File_read::do_readv): Likewise.
13813         * fileread.h (class File_read): Add is_descriptor_opened_ field.
13814         Update declarations.
13815         * layout.cc: Include "descriptors.h".
13816         (Layout::create_build_id): Use open_descriptor rather than open.
13817         * output.cc: Include "descriptors.h".
13818         (Output_file::open): Use open_descriptor rather than open.
13819         * archive.cc (Archive::const_iterator): Change Archive to be
13820         non-const.
13821         (Archive::begin, Archive::end): Make non-const.
13822         (Archive::count_members): Likewise.
13823         * archive.h (class Archive): Update declarations.
13824         * object.h (Object::read): Make non-const.
13825         * Makefile.am (CCFILES): Add descriptors.cc.
13826         (HFILES): Add descriptors.h.
13827         * Makefile.in: Rebuild.
13828
13829         PR 6716
13830         * gold.h: Always include <clocale>.  Add Solaris workarounds
13831         following code in binutils/sysdep.h.
13832
13833         PR 6048
13834         * ehframe.cc (Eh_frame::add_ehframe_input_section): Check whether
13835         this->eh_frame_hdr_ is NULL before using it.
13836
13837         * dynobj.cc (Versions::Versions): Update comment.
13838
13839         * dynobj.cc (Versions::Versions): If there is an soname, use it as
13840         the base version name.
13841
13842         * stringpool.cc (Stringpool_template::add_with_length): Set key to
13843         array size plus one.
13844         (Stringpool_template::set_string_offsets): Subtract one from key
13845         before using it as an array index.
13846         (Stringpool_template::get_offset_with_length): Likewise.
13847         (Stringpool_template::write_to_buffer): Likewise.
13848         * stringpool.h (Stringpool_template::get_offset_from_key):
13849         Likewise.
13850
13851 2008-07-23  Ian Lance Taylor  <iant@google.com>
13852
13853         PR 6658
13854         * object.h (Merged_symbol_value::value): Do our best to handle a
13855         negative addend.
13856
13857         PR 6647
13858         * script.cc (Version_script_info::get_versions): Don't add empty
13859         version tag to return value.
13860         (Version_script_info::get_symbol_version_helper): Change return
13861         type to bool.  Add pversion parameter.  Change all callers.
13862         (script_register_vers_node): Don't require a non-NULL tag.
13863         * script.h (class Version_script_info): Update declarations.
13864         (Version_script_info::get_symbol_version): Change return type to
13865         bool.  Add version parameter.  Change all callers.
13866         * symtab.cc (Sized_symbol::add_from_relobj): Rework version
13867         handling.  Handle an empty version from a version script.
13868         (Symbol_table::define_special_symbol): Likewise.
13869         * testsuite/ver_test_10.script: New file.
13870         * testsuite/ver_test_10.sh: New file.
13871         * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_10.sh.
13872         (check_DATA): Add ver_test_10.syms.
13873         (ver_test_10.syms, ver_test_10.so): New target.
13874         * testsuite/Makefile.in: Rebuild.
13875
13876 2008-07-23  Simon Baldwin  <simonb@google.com>
13877
13878         * symtab.cc (Symbol_table::sized_write_symbol): Only set st_size
13879         to zero for undefined symbols from dynamic libraries.
13880
13881 2008-07-23  Ian Lance Taylor  <iant@google.com>
13882
13883         * symtab.cc (Symbol_table::resolve): Remove version parameter.
13884         Change all callers.
13885         * symtab.h (class Symbol_table): Update declaration.
13886         * testsuite/ver_test_9.cc: New file.
13887         * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_9.
13888         (ver_test_9_SOURCES, ver_test_9_DEPENDENCIES): Define.
13889         (ver_test_9_LDFLAGS, ver_test_9_LDADD): Define.
13890         (ver_test_9.so, ver_test_9.o): New targets.
13891         * testsuite/Makefile.in: Rebuild.
13892
13893 2008-07-22  Ian Lance Taylor  <iant@google.com>
13894
13895         * options.h (class General_options): Define --check-sections.
13896         * layout.cc (Layout::set_segment_offsets): Handle
13897         --check-sections.
13898
13899         * options.h (class General_options): Define -n/--nmagic and
13900         -N/--omagic.
13901         * options.cc (General_options::finalize): For -n/--nmagic or
13902         -N/--omagic, set -static.
13903         * layout.cc (Layout::attach_allocated_section_to_segment): If
13904         -N/--omagic, don't put read-only and read-write sections in
13905         different segments.
13906         (Layout::find_first_load_seg): If -N/--omagic, don't insist on
13907         finding a read-only segment.
13908         (Layout::set_segment_offsets): If -N/--omagic or -n/--nmagic,
13909         don't set the minimum segment alignment to the common page size,
13910         and don't set the file offset to the address modulo the page size.
13911         * script-sections.cc (Script_sections::create_segments): If
13912         -n/--omagic, don't put read-only and read-write sections in
13913         different segments.
13914
13915         * cref.cc: New file.
13916         * cref.h: New file.
13917         * options.h (class General_options): Add --print-symbol-counts.
13918         * main.cc (main): Issue defined symbol report if requested.
13919         * archive.cc (Archive::interpret_header): Make into a const member
13920         function.
13921         (Archive::add_symbols): Call Input_objects::archive_start and
13922         archive_stop.
13923         (Archive::const_iterator): Define new class.
13924         (Archive::begin, Archive::end): New functions.
13925         (Archive::include_all_members): Rewrite to use iterator.
13926         (Archive::count_members): New function.
13927         * archive.h (class Archive): Update declarations.
13928         (Archive::filename): New function.
13929         * object.cc: Include "cref.h".
13930         (Sized_relobj::Sized_relobj): Initialize defined_count_.
13931         (Sized_relobj::do_get_global_symbol_counts): New function.
13932         (Input_objects::add_object): Add object to cross-referencer.
13933         (Input_objects::archive_start): New function.
13934         (Input_objects::archive_stop): New function.
13935         (Input_objects::print_symbol_counts): New function.
13936         * object.h: Declare Cref and Archive.
13937         (Object::get_global_symbol_counts): New function.
13938         (Object::do_get_global_symbol_counts): New pure virtual function.
13939         (class Sized_relobj): Add defined_count_ field.  Update
13940         declarations.
13941         (class Input_objects): Add cref_ field.  Update constructor.
13942         Update declarations.
13943         * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize symbols_ and
13944         defined_count_.
13945         (Sized_dynobj::do_add_symbols): Allocate symbols_ if printing
13946         symbol counts.
13947         (Sized_dynobj::do_get_global_symbol_counts): New function.
13948         * dynobj.h (class Sized_dynobj): Add fields symbols_ and
13949         defined_count_.  Update declarations.  Define Symbols typedef.
13950         * symtab.cc (Symbol_table::add_from_relobj): Add defined
13951         parameter.  Change all callers.
13952         (Symbol_table::add_from_dynobj): Add sympointers and defined
13953         parameters.  Change all callers.
13954         * symtab.h (class Symbol_table): Update declarations.
13955         * Makefile.am (CCFILES): Add cref.cc.
13956         (HFILES): Add cref.h.
13957         * Makefile.in: Rebuild.
13958
13959 2008-07-22  Simon Baldwin  <simonb@google.com>
13960
13961         * symtab.cc (Symbol_table::sized_write_symbol): Set symbol size
13962         to zero when writing undefined symbols.
13963
13964 2008-07-22  Ian Lance Taylor  <iant@google.com>
13965
13966         * output.cc (Output_section::add_input_section): Don't try to
13967         merge empty merge sections.
13968
13969 2008-07-21  Craig Silverstein  <csilvers@google.com>
13970
13971         * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
13972         Include symbol version in error message.
13973
13974 2008-07-20  Chris Demetriou  <cgd@google.com>
13975
13976         * configure.ac (gold_cv_c_random_seed): New configured variable.
13977         (RANDOM_SEED_CFLAGS): New substituted variable.
13978         * Makefile.am (AM_CFLAGS, AM_CXXFLAGS): Add $(RANDOM_SEED_CFLAGS).
13979         * configure: Rebuild.
13980         * Makefile.in: Likewise.
13981         * testsuite/Makefile.in: Likewise.
13982
13983 2008-07-18  Ian Lance Taylor  <iant@google.com>
13984
13985         * symtab.cc (Symbol_table::add_from_object): Rewrite the case
13986         where we see NAME/NULL and NAME/VERSION  as separate symbols.
13987         * testsuite/ver_test_main.cc (main): Call t4.
13988         (t4, t4_2a): Define.
13989         * testsuite/ver_test_2.cc (t4_2): Define.
13990         * testsuite/ver_test_2.script: Put t4_2a in VER2.
13991         * testsuite/ver_test_4.cc (t4_2a): Define.
13992         * testsuite/ver_test_4.script: Put t4_2a in VER2.
13993         * testsuite/ver_test.h (t4, t4_2, t4_2a): Declare.
13994
13995 2008-07-17  Ian Lance Taylor  <iant@google.com>
13996
13997         * dynobj.cc (Versions::add_def): If we give an error about a
13998         missing version, go ahead and create the version anyhow.
13999
14000 2008-07-10  Ian Lance Taylor  <iant@google.com>
14001
14002         Handle output sections with more than 0x7fffffff bytes.
14003         * object.h (class Relobj): Change map_to_output_ to
14004         output_sections_, and just keep a section pointer.  Change all
14005         uses.  Move comdat group support to Sized_relobj.
14006         (Relobj::is_section_specially_mapped): Remove.
14007         (Relobj::output_section): Remove poff parameter.  Change all
14008         callers.
14009         (Relobj::output_section_offset): New function.
14010         (Relobj::set_section_offset): Rewrite.
14011         (Relobj::map_to_output): Remove.
14012         (Relobj::output_sections): New function.
14013         (Relobj::do_output_section_offset): New pure virtual function.
14014         (Relobj::do_set_section_offset): Likewise.
14015         (class Sized_relobj): Add section_offsets_ field.  Add comdat
14016         group support from Relobj.  Update declarations.
14017         (Sized_relobj::get_output_section_offset): New function.
14018         (Sized_relobj::do_output_section_offset): New function.
14019         (Sized_relobj::do_set_section_offset): New function.
14020         * object.cc (Relobj::output_section_address): Remove.
14021         (Sized_relobj::Sized_relobj): Initialize new fields.
14022         (Sized_relobj::include_section_group): Cast find_kept_object to
14023         Sized_relobj.
14024         (Sized_relobj::include_linkonce_section): Likewise.
14025         (Sized_relobj::do_layout): Use separate arrays for output section
14026         and output offset.
14027         (Sized_relobj::do_count_local_symbols): Change map_to_output to
14028         output_sections.
14029         (Sized_relobj::do_finalize_local_symbols): Change map_to_output to
14030         output_sections and section_offsets.
14031         (Sized_relobj::write_local_symbols): Likewise.
14032         (map_to_kept_section): Compute output address directly.
14033         * reloc.cc (Sized_relobj::do_read_relocs): Change map_to_output to
14034         output_sections and section_offsets.
14035         (Sized_relobj::write_sections): Likewise.
14036         (Sized_relobj::relocate_sections): Likewise.
14037         * symtab.cc (sized_finalize_symbol): Use output_section_offset.
14038         * output.h (class Output_reloc): Update declarations.  Change
14039         u2_.relobj to Sized_relobj*.
14040         (class Output_data_reloc): Change add functions to use
14041         Sized_relobj*.
14042         * output.cc (Output_reloc::Output_reloc): Change relobj to
14043         Sized_relobj*.
14044         (Output_reloc::local_section_offset): Change return type to
14045         Elf_Addr.  Use get_output_section_offset.
14046         (Output_reloc::get_address): Likewise.
14047         (Output_section::is_input_address_mapped): Don't call
14048         is_section_specially_mapped.
14049         (Output_section::output_offset): Likewise.
14050         (Output_section::output_address): Likewise.
14051         (Output_section::starting_output_address): Likewise.
14052         * copy-relocs.cc (Copy_relocs::copy_reloc): Change object
14053         parameter to Sized_relobj*.
14054         (Copy_relocs::need_copy_reloc): Likewise.
14055         (Copy_relocs::save): Likewise.
14056         * copy-relocs.h (class Copy_relocs): Update declarations.
14057         (class Copy_relocs::Copy_reloc_entry): Change constructor to use
14058         Sized_relobj*.  Change relobj_ field to Sized_relobj*.
14059         * target-reloc.h (relocate_for_relocatable): Change
14060         offset_in_output_section type to Elf_Addr.  Change code that uses
14061         it as well.
14062         * layout.cc (Layout::layout): Always set *off.
14063         * mapfile.cc (Mapfile::print_input_section): Use
14064         output_section_offset.
14065         * i386.cc (Target_i386::copy_reloc): Change object parameter to
14066         Sized_relobj*.
14067         * powerpc.cc (Target_powerpc::copy_reloc): Likewise.
14068         * sparc.cc (Target_sparc::copy_reloc): Likewise.
14069         * x86_64.cc (Target_x86_64::copy_reloc): Likewise.
14070
14071 2008-07-03  Ian Lance Taylor  <iant@google.com>
14072
14073         * layout.cc (Layout::include_section): Do not discard unrecognized
14074         SHT_STRTAB sections.
14075
14076 2008-06-30  Craig Silverstein  <csilvers@cs.stanford.edu>
14077
14078         * script.cc (Lex::can_continue_name): Make '?' allowable in
14079         version-script names.
14080         * testsuite/version_script.map: Change glob pattern to use '?'
14081
14082 2008-06-30  Manish Singh  <yosh@gimp.org>
14083
14084         PR 6585
14085         * symtab.cc (Symbol_table::add_undefined_symbols_from_command_line):
14086         Correct typo.
14087
14088 2008-06-30  Ian Lance Taylor  <iant@google.com>
14089
14090         PR 6660
14091         PR 6682
14092         * powerpc.cc (Powerpc_relocate_functions::addr16_ha) [both
14093         versions]: Don't try to read the value in the contents, since we
14094         don't use it.  Use the template endianness when writing.
14095
14096 2008-06-25  Cary Coutant  <ccoutant@google.com>
14097
14098         * fileread.cc (File_read::make_view): Assert on zero-length view.
14099         * object.cc (Sized_relobj::do_read_symbols): Don't try to read
14100         symbol table when there are no symbols to read.
14101
14102 2008-06-23  Craig Silverstein  <csilvers@google.com>
14103
14104         * version.cc (version_string): Bump to 1.7
14105
14106 2008-06-18  Craig Silverstein  <csilvers@google.com>
14107
14108         * powerpc.cc (Powerpc_relocate_functions::addr16_ha): cast
14109         constant 0xFFFF to type Valtype.
14110         (Powerpc_relocate_functions::rel16_ha): Likewise.
14111
14112 2008-06-17  Ian Lance Taylor  <iant@google.com>
14113
14114         * output.h (Output_section::Input_section): Initialize p2align_ to
14115         zero for Output_section_data constructors.
14116         (Output_section::Input_section::addralign): If not an input
14117         section, return the alignment of the Output_section_data.
14118         * testsuite/copy_test.cc: New file.
14119         * testsuite/copy_test_1.cc: New file.
14120         * testsuite/copy_test_2.cc: New file.
14121         * testsuite/Makefile.am (check_PROGRAMS): Add copy_test.
14122         (copy_test_SOURCES, copy_test_DEPENDENCIES): New variables.
14123         (copy_test_LDFLAGS, copy_test_LDADD): New variables.
14124         (copy_test_1_pic.o, copy_test_1.so): New targets.
14125         (copy_test_2_pic.o, copy_test_2.so): New targets.
14126         * testsuite/Makefile.in: Rebuild.
14127
14128         * script-sections.cc (Script_sections::place_orphan): Initialize
14129         local variable exact.
14130
14131 2008-06-13  David Edelsohn  <edelsohn@gnu.org>
14132
14133         * powerpc.cc (Output_data_plt_powerpc::do_write): 8 + 4 = 0xC.
14134
14135 2008-06-12  David Edelsohn  <edelsohn@gnu.org>
14136             David S. Miller  <davem@davemloft.net>
14137
14138         * powerpc.cc: New file.
14139         * Makefile.am (TARGETSOURCES): Add powerpc.cc
14140         (ALL_TARGETOBJS): Add powerpc.$(OBJEXT)
14141         * configure.tgt: Add entries for powerpc-* and powerpc64-*.
14142         * Makefile.in: Rebuild.
14143
14144 2008-06-09  Ian Lance Taylor  <iant@google.com>
14145
14146         * testsuite/relro_test.cc: Include <cstdio>, <cstdlib>, and
14147         <exception>.
14148         (throwing, orig_terminate): New static variables.
14149         (terminate_handler): New static function.
14150         (t2): Set terminate handler.
14151
14152 2008-06-05  Kris Van Hees  <kris.van.hees@oracle.com>
14153
14154         PR 6584
14155         * binary.cc (Binary_to_elf::sized_convert): Fix .data
14156         alignment.
14157
14158 2008-05-30  Cary Coutant  <ccoutant@google.com>
14159
14160         * archive.cc (Archive::include_all_members) Correct to step
14161         over symbol table and extended name table in thin archives.
14162
14163 2008-05-29  Kris Van Hees  <kris.van.hees@oracle.com>
14164
14165         PR 6407
14166         * target-reloc.h (relocate_for_relocatable): Fix new_offset
14167         calculation.
14168
14169 2008-05-28  Caleb Howe  <cshowe@google.com>
14170
14171         * reduced_debug_output.cc: New file.
14172         * reduced_debug_output.h: New file.
14173         * options.h (class General_options): Add --strip-debug-non-line.
14174         * options.cc (General_options::finalize): Add strip_debug_non_line
14175         to the strip heirarchy.
14176         * layout.h (class Layout): Add debug_abbrev_ and debug_info_
14177         fields.
14178         * layout.cc: Include "reduced_debug_output.h".
14179         (Layout::Layout): Initialize new fields.
14180         (line_only_debug_sections): New static array.
14181         (is_lines_only_debug_sections): New static inline function.
14182         (Layout::include_section): Handle --strip-debug-non-line.
14183         (Layout::make_output_section): If --strip-debug-non-line, build
14184         new output sections for .debug_abbrev and .debug_info.
14185         * dwarf_reader.cc (read_unsigned_LEB_128): Move to namespace
14186         gold.  Warn about possible overflow.
14187         (read_signed_LEB_128): Likewise.
14188         * dwarf_reader.h: (read_unsigned_LEB_128): Declare.
14189         (read_signed_LEB_128): Declare.
14190         * Makefile.am (CCFILES): Add reduced_debug_output.cc.
14191         (HFILES): Add reduced_debug_output.h.
14192         * Makefile.in: Rebuild.
14193
14194 2008-05-21  Ian Lance Taylor  <iant@google.com>
14195
14196         * mapfile.cc: New file.
14197         * mapfile.h: New file.
14198         * options.h (class General_options): Add -M/--print-map and -Map.
14199         * options.cc (General_options::finalize): Make -M equivalent to
14200         -Map -.
14201         * main.cc: Include <cstdio> and "mapfile.h".
14202         (main): Open mapfile if requested.
14203         * gold.cc (class Middle_runner): Add mapfile_ field.  Update
14204         constructor.  Change caller.
14205         (queue_initial_tasks): Add mapfile parameter.  Change caller.
14206         (queue_middle_tasks): Likewise.
14207         * gold.h (queue_initial_tasks, queue_middle_tasks): Update
14208         declarations.
14209         * archive.cc: Include "mapfile.h".
14210         (Archive::add_symbols): Add mapfile parameter.  Change all
14211         callers.  Pass mapfile, symbol, and reason to include_member.
14212         (Archive::include_all_members): Add mapfile parameter.  Change all
14213         callers.
14214         (Archive::include_member): Add mapfile, sym, and why parameters.
14215         Change all callers.  Report inclusion to map file.
14216         * archive.h: Include "fileread.h".
14217         (class Archive): Update declarations.
14218         (Archive::file): New const method.
14219         (class Add_archive_symbols): Add mapfile_ field.  Update
14220         constructor.  Change all callers.
14221         * readsyms.h (class Read_symbols): Likewise.
14222         (class Finish_group): Likewise.
14223         (class Read_script): Likewise.
14224         * common.cc: Include "mapfile.h".
14225         (Symbol_table::allocate_commons): Add mapfile parameter.  Change
14226         all callers.
14227         (Symbol_table::do_allocate_commons): Likewise.
14228         (Symbol_table::do_allocate_commons_list): Likewise.  Report common
14229         symbol allocation to mapfile.
14230         * common.h (class Allocate_commons_task): Add mapfile_ field.
14231         Update constructor.  Change all callers.
14232         * symtab.h (class Symbol_table): Update declarations.
14233         * layout.cc: Include "mapfile.h".
14234         (Layout_task_runner::run): Print information to mapfile.
14235         (Layout::create_gold_note): Change Output_data_fixed_space to
14236         Output_data_zero_fill.
14237         (Layout::create_build_id): Likewise.
14238         (Layout::print_to_mapfile): New function.
14239         * layout.h (class Layout_task_runner): Add mapfile_ field.  Update
14240         constructor.  Change caller.
14241         (class Layout): Declare print_to_mapfile.
14242         * output.cc (Output_section::Input_section::print_to_mapfile): New
14243         function.
14244         (Output_section::add_input_section): If producing a map, always
14245         add to input_sections_ list.
14246         (Output_section::do_print_to_mapfile): New function.
14247         (Output_segment::print_sections_to_mapfile): New function.
14248         (Output_segment::print_section_list_to_mapfile): New function.
14249         * output.h: Include "mapfile.h".
14250         (Output_data::print_to_mapfile): New function.
14251         (Output_data::do_print_to_mapfile): New virtual function.
14252         (Output_segment_headers::do_print_to_mapfile): New function.
14253         (Output_file_header::do_print_to_mapfile): New function.
14254         (Output_data_const::do_print_to_mapfile): New function.
14255         (class Output_data_const_buffer): Add map_name_ field.  Update
14256         constructor.  Change all callers.  Add do_print_to_mapfile
14257         function.
14258         (class Output_data_fixed_space): Likewise.
14259         (class Output_data_space): Likewise.
14260         (class Output_data_zero_fill): New class.
14261         (Output_data_strtab::do_print_to_mapfile): New function.
14262         (Output_data_reloc_base::do_print_to_mapfile): New function.
14263         (Output_relocatable_relocs::do_print_to_mapfile): New function.
14264         (Output_data_group::do_print_to_mapfile): New function.
14265         (Output_data_got::do_print_to_mapfile): New function.
14266         (Output_data_dynamic::do_print_to_mapfile): New function.
14267         (Output_symtab_xindex::do_print_to_mapfile): New function.
14268         (class Output_section): Declare do_print_to_mapflie.  Declare
14269         print_to_mapfile in Input_section.
14270         (class Output_segment): Declare new functions.
14271         * object.h (Sized_relobj::symbol_count): New function.
14272         * script-sections.cc
14273         (Output_section_element_dot_assignment::set_section_addresses):
14274         Change Output_data_fixed_space to Output_data_zero_fill.
14275         (Output_data_expression::do_print_to_mapfile): New function.
14276         * script.cc (read_input_script): Add mapfile parameter.  Change
14277         all callers.
14278         * script.h (read_input_script): Update declaration.
14279         * ehframe.h (Eh_frame_hdr::do_print_to_mapfile): New function.
14280         (Eh_frame::do_print_to_mapfile): New function.
14281         * merge.h (Output_merge_data::do_print_to_mapfile): New function.
14282         (Output_merge_string::do_print_to_mapfile): New function.
14283         * i386.cc (Output_data_plt_i386::do_print_to_mapfile): New
14284         function.
14285         * sparc.cc (Output_data_plt_sparc::do_print_to_mapfile): New
14286         function.
14287         * x86_64.cc (Output_data_plt_x86_64::do_print_to_mapfile): New
14288         function.
14289         * Makefile.am (CCFILES): Add mapfile.cc.
14290         (HFILES): Add mapfile.h.
14291         * Makefile.in: Rebuild.
14292
14293 2008-05-19  Ian Lance Taylor  <iant@google.com>
14294
14295         * options.h (class General_options): Add -z relro.
14296         * layout.cc (Layout::Layout): Initialize relro_segment_.
14297         (Layout::add_output_section_data): Return the output section.
14298         (Layout::make_output_section): Rcognize relro sections and mark
14299         them appropriately.
14300         (Layout::attach_allocated_section_to_segment): Put relro sections
14301         in a PT_GNU_RELRO segment.
14302         (Layout::create_initial_dynamic_sections): Mark the .dynamic
14303         section as relro.
14304         (Layout::segment_precedes): Sort PT_GNU_RELRO segments after
14305         PT_TLS segments.
14306         (Layout::linkonce_mapping): Map d.rel.ro.local to
14307         .data.rel.ro.local.
14308         (Layout::output_section_name): Us .data.rel.ro.local for any
14309         section which begins with that.
14310         * layout.h (class Layout): Update add_output_section_data
14311         declaration.  Add relro_segment_ field.
14312         * output.cc (Output_section::Output_section): Initialize is_relro_
14313         and is_relro_local_ fields.
14314         (Output_segment::add_output_section): Group relro sections.
14315         (Output_segment::is_first_section_relro): New function.
14316         (Output_segment::maximum_alignment): If there is a relro section,
14317         align the segment to the common page size.
14318         (Output_segment::set_section_addresses): Track whether we are
14319         looking at relro sections.  If the last section is a relro
14320         section, align to the common page size.
14321         (Output_segment::set_section_list_addresses): Add in_relro
14322         parameter.  Change all callers.  Align to the page size when
14323         moving from relro to non-relro section.
14324         (Output_segment::set_offset): Align memsz of a PT_GNU_RELRO
14325         segment.
14326         * output.h (class Output_section): Add is_relro_ and
14327         is_relro_local_ fields.
14328         (Output_section::is_relro): New function.
14329         (Output_section::set_is_relro): New function.
14330         (Output_section::is_relro_local): New function.
14331         (Output_section::set_is_relro_local): New function.
14332         (class Output_segment): Update declarations.
14333         * i386.cc (Target_i386::got_section): Mark .got section as relro.
14334         * sparc.cc (Target_sparc::got_section): Likewise.
14335         * x86_64.cc (Target_x86_64::got_section): Likewise.
14336         * testsuite/relro_test_main.cc: New file.
14337         * testsuite/relro_test.cc: New file.
14338         * testsuite/Makefile.am (check_PROGRAMS): Add relro_test.
14339         (relro_test_SOURCES, relro_test_DEPENDENCIES): New variables.
14340         (relro_test_LDFLAGS, relro_test_LDADD): New variables.
14341         (relro_test.so, relro_test_pic.o): New targets.
14342         * testsuite/Makefile.in: Rebuild.
14343
14344 2008-05-16  Ian Lance Taylor  <iant@google.com>
14345
14346         * output.cc (Output_segment::add_output_section): Remove front
14347         parameter.
14348         * output.h (class Output_segment): Remove
14349         add_initial_output_section and overloaded add_output_section.
14350         Update declaration of remaining add_output_section.
14351         * layout.cc (Layout::create_interp): Call add_output_section
14352         rather than add_initial_output_section.
14353         (Layout::finish_dynamic_section): Likewise.
14354
14355         * i386.cc (Target_i386::Relocate::relocate_tls): Set dynamic type
14356         for TLS_GOTDESC and TLS_DESC_CALL.  Only optimize TLS_LDO_32 if we
14357         know the dynamic type.
14358         * x86_64.cc (Target_x86_64::Relocate): Add saw_tls_block_reloc_
14359         field.  Initialize it in constructor.
14360         (Target_x86_64::Relocate::relocate_tls): Record that we saw a TLS
14361         block reloc for TLSGD, GOTPC32_TLSDESC, TLSDESC_CALL, and TLSLD.
14362         Only optimize DTPOFF32 and DTPOFF64 if we have seen a TLS block
14363         reloc.
14364
14365         * output.cc (Output_reloc::get_address): Change return type to
14366         Elf_Addr.
14367         * output.h (class Output_reloc): Update get_address declaration.
14368         * x86_64.cc (Output_data_plt_x86_64::do_write): Use 64-bit types
14369         for section addresses.
14370
14371 2008-05-09  Ian Lance Taylor  <iant@google.com>
14372
14373         PR 6493
14374         * gold.cc (gold_nomem): Use return value of write.
14375
14376 2008-05-08  Ian Lance Taylor  <iant@google.com>
14377
14378         * symtab.c (Symbol::init_base_output_data): Add version
14379         parameter.  Change all callers.
14380         (Symbol::init_base_output_segment): Likewise.
14381         (Symbol::init_base_constant): Likewise.
14382         (Symbol::init_base_undefined): Likewise.
14383         (Sized_symbol::init_output_data): Likewise.
14384         (Sized_symbol::init_output_segment): Likewise.
14385         (Sized_symbol::init_constant): Likewise.
14386         (Sized_symbol::init_undefined): Likewise.
14387         (Symbol_table::do_define_in_output_data): If the new symbol has a
14388         version, mark it as the default.
14389         (Symbol_table::do_define_in_output_segment): Likewise.
14390         (Symbol_table::do_define_as_constant): Likewise.
14391         * symtab.h (class Symbol): Update declarations.
14392         (class Sized_symbol): Likewise.
14393         * resolve.cc (Symbol::override_version): New function.
14394         (Symbol::override_base): Call override_version.
14395         (Symbol::override_base_with_special): Likewise.
14396         * testsuite/ver_script_8.script: New file.
14397         * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_8.
14398         (ver_test_8_SOURCES, ver_test_8_DEPENDENCIES): Define.
14399         (ver_test_8_LDFLAGS, ver_test_8_LDADD): Define.
14400         (ver_test_8_1.so, ver_test_8_2.so): New targets.
14401
14402 2008-05-06  Ian Lance Taylor  <iant@google.com>
14403
14404         PR 6049
14405         * options.h (DEFINE_set): Add VARNAME_begin and VARNAME_end
14406         functions.
14407         (class General_options): Remove existing --undefined, and add
14408         --no-undefined instead.  Add new --undefined as synonym for -u.
14409         * archive.cc (Archive::add_symbols): Check whether symbol was
14410         named with -u.
14411         * gold.cc (queue_middle_tasks): Add -u symbols to symbol table.
14412         * symtab.h (class Symbol): Rename CONSTANT to IS_CONSTANT; change
14413         all uses.  Add IS_UNDEFINED.  Update declarations to split
14414         different versions of init_base.  Declare init_base_undefined.
14415         (Symbol::is_defined): Handle IS_UNDEFINED.
14416         (Symbol::is_undefined): Likewise.
14417         (Symbol::is_weak_undefined): Call is_undefined.
14418         (Symbol::is_absolute): Handle IS_CONSTANT.
14419         (class Sized_symbol): Update declarations to split different
14420         versions of init.  Declare init_undefined.
14421         (class Symbol_table): Declare new functions.
14422         * symtab.cc (Symbol::init_base_object): Rename from init_base.
14423         Change all callers.
14424         (Symbol::init_base_output_data): Likewise.
14425         (Symbol::init_base_output_segment): Likewise.
14426         (Symbol::init_base_constant): Likewise.
14427         (Symbol::init_base_undefined): New function.
14428         (Sized_symbol::init_object): Rename from init.  Change all
14429         callers.
14430         (Sized_symbol::init_output_data): Likewise.
14431         (Sized_symbol::init_output_segment): Likewise.
14432         (Sized_symbol::init_constant): Likewise.
14433         (Sized_symbol::init_undefined): New function.
14434         (Symbol_table::add_undefined_symbols_from_command_line): New
14435         function.
14436         (Symbol_table::do_add_undefined_symbols_from_command_line): New
14437         function.
14438         (Symbol::final_value_is_known): Handle IS_UNDEFINED.
14439         (Symbol::output_section): Likewise.
14440         (Symbol::set_output_section): Likewise.
14441         (Symbol_table::sized_finalize_symbol): Likewise.
14442         (Symbol_table::sized_write_globals): Likewise.
14443         * resolve.cc (Symbol_table::should_override): Likewise.
14444         (Symbol::override_base_with_special): Likewise.
14445
14446         * symtab.cc (Symbol_table::add_from_dynobj): If we see a protected
14447         symbol, change it to have default visibility.
14448         * testsuite/protected_1.cc: New file.
14449         * testsuite/protected_2.cc: New file.
14450         * testsuite/protected_3.cc: New file.
14451         * testsuite/protected_main_1.cc: New file.
14452         * testsuite/protected_main_2.cc: New file.
14453         * testsuite/protected_main_3.cc: New file.
14454         * testsuite/Makefile.am (check_PROGRAMS): Add protected_1.
14455         (protected_1_SOURCES, protected_1_DEPENDENCIES): Define.
14456         (protected_1_LDFLAGS, protected_1_LDADD): Define.
14457         (protected_1.so): New target.
14458         (protected_1_pic.o, protected_2_pic.o): New targets.
14459         (protected_3_pic.o): New target.
14460         (check_PROGRAMS): Add protected_2.
14461         (protected_2_SOURCES, protected_2_DEPENDENCIES): Define.
14462         (protected_2_LDFLAGS, protected_2_LDADD): Define.
14463         * testsuite/Makefile.in: Rebuild.
14464
14465         * options.h (DEFINE_var): Add set_user_set_##varname__.
14466         (DEFINE_bool_alias): New macro.
14467         (class General_options): Define -Bstatic using DEFINE_bool_alias
14468         rather than DEFINE_special.  Add --undefined as an alias for -z
14469         defs.
14470         * options.cc (General_options::parse_Bstatic): Remove.
14471
14472         * options.h (class General_options): Add --fatal-warnings.
14473         * main.cc (main): Implement --fatal-warnings.
14474         * errors.h (Errors::warning_count): New function.
14475
14476         * options.h (class General_options): Add -Bsymbolic-functions.
14477         * symtab.h (Symbol::is_preemptible): Check for
14478         -Bsymbolic-functions.
14479
14480 2008-05-05  Ian Lance Taylor  <iant@google.com>
14481
14482         * options.h (DEFINE_bool): For DASH_Z, create the negative option
14483         as noVARNAME rather than no-VARNAME.
14484         (class General_options): Add option -z combreloc.
14485         * output.h (class Output_reloc) [SHT_REL]: Declare compare and
14486         get_address.
14487         (Output_reloc::sort_before) [SHT_REL]: New function.
14488         (Output_reloc::sort_before) [SHT_RELA]: New function.
14489         (class Output_data_reloc_base): Add sort_relocs_ field.  Define
14490         Sort_relocs_comparison.
14491         (Output_data_reloc_base::Output_data_reloc_base): Add sort_relocs
14492         parameter.  Change all callers.
14493         (Output_data_reloc::Output_data_reloc) [both versions]: Add
14494         sort_relocs parameter.  Change all callers.
14495         * output.cc (Output_reloc::get_address): New function, broken out
14496         of write_rel.
14497         (Output_reloc::write_rel): Call it.
14498         (Output_reloc::compare): New function.
14499         (Output_data_reloc_base::do_write): Optionally sort relocs.
14500
14501         * configure.ac: If targ_extra_obj is set, link it in.
14502         * configure.tgt: Initialize all variables.
14503         (x86_64*): Set targ_extra_obj and targ_extra_size.
14504         * configure: Rebuild.
14505
14506         * object.cc (Sized_relobj::include_section_group): Adjust section
14507         indexes read from group data.  Build vector to pass to
14508         layout_group.
14509         * layout.cc (Layout::layout_group): Add flags and shndxes
14510         parameters.  Remove contents parameter.  Change caller.  Update
14511         explicit instantiations.
14512         * layout.h (class Layout): Update layout_group declaration.
14513         * output.cc (Output_data_group::Output_data_group): Add flags and
14514         input_shndxes parameters.  Remove contents parameter.  Change
14515         caller.
14516         (Output_data_group::do_write): Change input_sections_ to
14517         input_shndxes_.
14518         * output.h (class Output_data_group): Update constructor
14519         declaration.  Rename input_sections_ to input_shndxes_.
14520         * testsuite/many_sections_test.cc: Add template.
14521
14522 2008-04-30  Cary Coutant  <ccoutant@google.com>
14523
14524         * target-reloc.h (relocate_section): Fix dead-pointer bug.
14525
14526         * layout.cc (Layout::include_section): Refactored check for debug
14527         info section.
14528         (Layout::add_comdat): Add new parameters.  Change type
14529         of signature parameter.  Add object and shndx to signatures table.
14530         (Layout::find_kept_object): New function.
14531         * layout.h: Include <cstring>.
14532         (Layout::is_debug_info_section): New function.
14533         (Layout::add_comdat): Add new parameters.
14534         (Layout::find_kept_object): New function.
14535         (Layout::Kept_section): New struct.
14536         (Layout::Signatures): Change type of map range.
14537         * object.cc (Relobj::output_section_address): New function.
14538         (Sized_relobj::include_section_group): Add new parameters.  Change
14539         calls to Layout::add_comdat.  Change to build table of kept comdat
14540         groups and table mapping discarded sections to kept sections.
14541         (Sized_relobj::include_linkonce_section): Likewise.  Add new parameter.
14542         (Sized_relobj::do_layout): Change calls to include_section_group and
14543         include_linkonce_section.
14544         (Sized_relobj::do_finalize_local_symbols): Do not set local symbol
14545         value to zero when section is discarded.
14546         (Sized_relobj::map_to_kept_section): New function.
14547         * object.h (Relobj::output_section_address): New function.
14548         (Relobj::Comdat_group): New type.
14549         (Relobj::find_comdat_group): New function.
14550         (Relobj::Comdat_group_table): New type.
14551         (Relobj::Kept_comdat_section): New type.
14552         (Relobj::Kept_comdat_section_table): New type.
14553         (Relobj::add_comdat_group): New function.
14554         (Relobj::set_kept_comdat_section): New function.
14555         (Relobj::get_kept_comdat_section): New function.
14556         (Relobj::comdat_groups_): New field.
14557         (Relobj::kept_comdat_sections_): New field.
14558         (Symbol_value::input_value): Update comment.
14559         (Sized_relobj::map_to_kept_section) New function.
14560         (Sized_relobj::include_linkonce_section): Add new parameter.
14561         * target-reloc.h (Comdat_behavior): New type.
14562         (get_comdat_behavior): New function.
14563         (relocate_section): Add code to map a discarded section to the
14564         corresponding kept section when applying a relocation.
14565
14566 2008-04-30  Craig Silverstein  <csilvers@google.com>
14567
14568         * dwarf_reader.cc (next_generation_count): New static var.
14569         (Addr2line_cache_entry): New struct.
14570         (addr2line_cache): New static var.
14571         (Dwarf_line_info::one_addr2line): Added caching.
14572         (Dwarf_line_info::clear_addr2line_cache): New function.
14573         * dwarf_reader.h (Dwarf_line_info::one_addr2line): Add
14574         cache-size parameter.
14575         (Dwarf_line_info::one_addr2line_cache): New function.
14576         * symtab.cc (Symbol_table::detect_odr_violations): Pass
14577         new cache-size argument to one_addr2line(), and clear cache.
14578
14579 2008-04-28  Cary Coutant  <ccoutant@google.com>
14580
14581         * i386.cc (Relocate::relocate): Fix typos for R_386_PC16 and
14582         R_386_PC8 relocations.
14583
14584 2008-04-23  Ian Lance Taylor  <iant@google.com>
14585
14586         * object.cc (Sized_relobj::include_section_group): Check for
14587         invalid section group.
14588
14589         * object.cc (make_elf_object): Correct test for 64-bit ELF file
14590         header size.
14591
14592         * readsyms.cc (Read_symbols::do_read_symbols): Use get_view rather
14593         than read for file header.
14594         * archive.cc (Archive::include_member): Likewise.
14595
14596 2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
14597
14598         * aclocal.m4: Regenerate.
14599         * configure: Regenerate.
14600
14601 2008-04-19  Ian Lance Taylor  <iant@google.com>
14602
14603         * version.cc (version_string): Bump to 1.6.
14604
14605         * testsuite/Makefile.am (many_sections_r_test): New target.
14606         (many_sections_r_test_SOURCES): Remove.
14607         (many_sections_r_test_DEPENDENCIES): Remove.
14608         (many_sections_r_test_LDFLAGS): Remove.
14609         (many_sections_r_test_LDADD): Remove.
14610
14611         * object.cc (Sized_relobj::do_add_symbols): Always pass
14612         local_symbol_count_ to add_from_relobj.
14613
14614         * testsuite/Makefile.am (many_sections_check.h): Only check one in
14615         every thousand variables.
14616         * testsuite/Makefile.in: Rebuild.
14617
14618         * object.cc (Xindex::initialize_symtab_xindex): New function.
14619         (Xindex::read_symtab_xindex): New function.
14620         (Xindex::sym_xindex_to_shndx): New function.
14621         (Sized_relobj::find_symtab): Pick up SHT_SYMTAB_SHNDX section if
14622         available.
14623         (Sized_relobj::do_initialize_xindex): New function.
14624         (Sized_relobj::do_read_symbols): Adjust section links.
14625         (Sized_relobj::symbol_section_and_value): Add is_ordinary
14626         parameter.  Change all callers.
14627         (Sized_relobj::include_section_group): Adjust section links and
14628         symbol section indexes.
14629         (Sized_relobj::do_layout): Adjust section links.
14630         (Sized_relobj::do_count_local_symbols): Adjust section links and
14631         symbol section indexes.
14632         (Sized_relobj::do_finalize_local_symbols): Distinguish between
14633         ordinary and special symbols.
14634         (Sized_relobj::write_local_symbols): Add symtab_xindex and
14635         dynsym_xindex parameters.  Change all callers.  Adjust section
14636         links.  Use SHN_XINDEX when needed.
14637         (Sized_relobj::get_symbol_location_info): Adjust section links.
14638         Don't get fooled by special symbols.
14639         * object.h (class Xindex): Define.
14640         (class Object): Add xindex_ parameter.  Declare virtual functoin
14641         do_initialize_xindex.
14642         (Object::adjust_sym_shndx): New function.
14643         (Object::set_xindex): New protected function.
14644         (class Symbol_value): Add is_ordinary_shndx_ field.
14645         (Symbol_value::Symbol_value): Initialize is_ordinary_shndx_.
14646         (Symbol_value::value): Assert ordinary section.
14647         (Symbol_value::initialize_input_to_output_map): Likewise.
14648         (Symbol_value::set_input_shndx): Add is_ordinary parameter.
14649         Change all callers.
14650         (Symbol_value::input_shndx): Add is_ordinary parameter.  Change
14651         all callers.
14652         (class Sized_relobj): Update declarations.
14653         (Sized_relobj::local_symbol_input_shndx): Add is_ordinary
14654         parameter.  Change all callers.
14655         (Sized_relobj::adjust_shndx): New function.
14656         * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize dynsym_shndx_
14657         field.
14658         (Sized_dynobj::find_dynsym_sections): Remove pdynsym_shndx
14659         parameter.  Change all callers.  Pick up SHT_DYNSYM_SHNDX section
14660         for SHT_DYNSYM section if available.  Set dynsym_shndx_ field.
14661         (Sized_dynobj::read_dynsym_section): Adjust section links.
14662         (Sized_dynobj::read_dynamic): Likewise.
14663         (Sized_dynobj::do_read_symbols): Use dynsym_shndx_ field.  Adjust
14664         section links.
14665         (Sized_dynobj::do_initialize_xindex): New function.
14666         * dynobj.h (class Sized_dynobj): Add dynsym_shndx_ field.  Declare
14667         do_initialize_xindex.
14668         (Sized_dynobj::adjust_shndx): New function.
14669         * layout.cc (Layout::Layout): Initialize symtab_xindex_ and
14670         dynsym_xindex_ fields.
14671         (Layout::finalize): Add a call to set_section_indexes before
14672         creating the symtab sections.
14673         (Layout::set_section_indexes): Don't do anything if the section
14674         already has a section index.
14675         (Layout::create_symtab_sections): Add shnum parameter.  Change
14676         caller.  Create .symtab_shndx section if needed.
14677         (Layout::create_shdrs): Add shstrtab_section parameter.  Change
14678         caller.
14679         (Layout::allocated_output_section_count): New function.
14680         (Layout::create_dynamic_symtab): Create .dynsym_shndx section if
14681         needed.
14682         * layout.h (class Layout): Add symtab_xindex_ and dynsym_xindex_
14683         fields.  Update declarations.
14684         (Layout::symtab_xindex): New function.
14685         (Layout::dynsym_xindex): New function.
14686         (class Write_symbols_task): Add layout_ field.
14687         (Write_symbols_task::Write_symbols_task): Add layout parameter.
14688         Change caller.
14689         * output.cc (Output_section_headers::Output_section_headers): Add
14690         shstrtab_section parameter.  Change all callers.
14691         (Output_section_headers::do_sized_write): Store overflow values
14692         for section count and section string table section index in
14693         section header zero.
14694         (Output_file_header::do_sized_write): Check for overflow of
14695         section count and section string table section index.
14696         (Output_symtab_xindex::do_write): New function.
14697         (Output_symtab_xindex::endian_do_write): New function.
14698         * output.h (class Output_section_headers): Add shstrtab_section_.
14699         Update declarations.
14700         (class Output_symtab_xindex): Define.
14701         (Output_section::has_out_shndx): New function.
14702         * symtab.cc (Symbol::init_fields): Initialize is_ordinary_shndx_
14703         field.
14704         (Symbol::init_base): Add st_shndx and is_ordinary parameters.
14705         Change all callers.
14706         (Sized_symbol::init): Likewise.
14707         (Symbol::output_section): Check for ordinary symbol.
14708         (Symbol_table::add_from_object): Remove orig_sym parameter.  Add
14709         st_shndx, is_ordinary, and orig_st_shndx parameters.  Change all
14710         callers.
14711         (Symbol_table::add_from_relobj): Add symndx_offset parameter.
14712         Change all callers.  Simplify handling of symbols from sections
14713         not included in the link.
14714         (Symbol_table::add_from_dynobj): Handle ordinary symbol
14715         distinction.
14716         (Weak_alias_sorter::operator()): Assert that symbols are
14717         ordinary.
14718         (Symbol_table::sized_finalize_symbol): Handle ordinary symbol
14719         distinction.
14720         (Symbol_table::write_globals): Add symtab_xindex and dynsym_xindex
14721         parameters.  Change all callers.
14722         (Symbol_table::sized_write_globals): Likewise.  Handle ordinary
14723         symbol distinction.  Use SHN_XINDEX when needed.
14724         (Symbol_table::write_section_symbol): Add symtab_xindex
14725         parameter.  Change all callers.
14726         (Symbol_table::sized_write_section_symbol): Likewise.  Use
14727         SHN_XINDEX when needed.
14728         * symtab.h (class Symbol): Add is_ordinary_shndx_ field.  Update
14729         declarations.
14730         (Symbol::shndx): Add is_ordinary parameter.  Change all callers.
14731         (Symbol::is_defined): Check is_ordinary.
14732         (Symbol::is_undefined, Symbol::is_weak_undefined): Likewise.
14733         (Symbol::is_absolute, Symbol::is_common): Likewise.
14734         (class Sized_symbol): Update declarations.
14735         (class Symbol_table): Update declarations.
14736         * resolve.cc (Symbol::override_base): Add st_shndx and is_ordinary
14737         parameters.  Change all callers.
14738         (Sized_symbol::override): Likewise.
14739         (Symbol_table::override): Likewise.
14740         (symbol_to_bits): Add is_ordinary parameter.  Change all callers.
14741         (Symbol_table::resolve): Remove orig_sym parameter.  Add st_shndx,
14742         is_ordinary, and orig_st_shndx parameters.  Change all callers.
14743         * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Require symbol
14744         to be in an ordinary section.
14745         * dwarf_reader.cc (Sized_dwarf_line_info::symbol_section): Add
14746         object and is_ordinary parameters.  Change all callers.
14747         (Sized_dwarf_line_info::read_relocs): Add object parameter.
14748         Change all callers.  Don't add undefined or non-ordinary symbols
14749         to reloc_map_.
14750         (Sized_dwarf_line_info::read_line_mappings): Add object parameter.
14751         Change all callers.
14752         * dwarf_reader.h (class Sized_dwarf_line_info): Update
14753         declarations.
14754         * ehframe.cc (Eh_frame::read_fde): Check for ordinary symbol.
14755         * reloc.cc (Sized_relobj::do_read_relocs): Adjust section links.
14756         (Sized_relobj::relocate_sections): Likewise.
14757         * target-reloc.h (scan_relocs): Adjust section symbol index.
14758         (scan_relocatable_relocs): Likewise.
14759         * i386.cc (Scan::local): Check for ordinary symbols.
14760         * sparc.cc (Scan::local): Likewise.
14761         * x86_64.cc (Scan::local): Likewise.
14762         * testsuite/binary_unittest.cc (Sized_binary_test): Update calls
14763         to symbol_section_and_value.
14764         * testsuite/many_sections_test.cc: New file.
14765         * testsuite/Makefile.am (BUILT_SOURCES): Define.
14766         (check_PROGRAMS): Add many_sections_test.
14767         (many_sections_test_SOURCES): Define.
14768         (many_sections_test_DEPENDENCIES): Define.
14769         (many_sections_test_LDFLAGS): Define.
14770         (BUILT_SOURCES): Add many_sections_define.h.
14771         (many_sections_define.h): New target.
14772         (BUILT_SOURCES): Add many_sections_check.h.
14773         (many_sections_check.h): New target.
14774         (check_PROGRAMS): Add many_sections_r_test.
14775         (many_sections_r_test_SOURCES): Define.
14776         (many_sections_r_test_DEPENDENCIES): Define.
14777         (many_sections_r_test_LDFLAGS): Define.
14778         (many_sections_r_test_LDADD): Define.
14779         (many_sections_r_test.o): New target.
14780         * testsuite/Makefile.in: Rebuild.
14781
14782 2008-04-17  Cary Coutant  <ccoutant@google.com>
14783
14784         * errors.cc (Errors::info): New function.
14785         (gold_info): New function.
14786         * errors.h (Errors::info): New function.
14787         * gold.h (gold_info): New function.
14788         * object.cc (Input_objects::add_object): Print trace output.
14789         * options.cc (options::parse_set): New function.
14790         (General_options::parse_wrap): Deleted.
14791         (General_options::General_options): Deleted initializer.
14792         * options.h (options::String_set): New typedef.
14793         (options::parse_set): New function.
14794         (DEFINE_set): New macro.
14795         (General_options::wrap): Changed to use DEFINE_set. Changed
14796         callers of any_wrap_symbols and is_wrap_symbol.
14797         (General_options::trace, General_options::trace_symbol):
14798         New options.
14799         (General_options::any_wrap_symbols, General_options::is_wrap_symbol)
14800         (General_options::wrap_symbols_): Deleted.
14801         * symtab.cc (Symbol_table::add_from_object): Print trace output.
14802
14803 2008-04-17  David S. Miller  <davem@davemloft.net>
14804
14805         * options.cc (General_options::parse_V): New function.
14806         * options.h: Add entries for -V and -Qy.
14807
14808 2008-04-17  Ian Lance Taylor  <iant@google.com>
14809
14810         * common.cc (Symbol_table::allocate_commons): Remove options
14811         parameter.  Change caller.
14812         (Symbol_table::do_allocate_commons): Remove options parameter.
14813         Change caller.  Just call do_allocate_commons_list twice.
14814         (Symbol_table::do_allocate_commons_list): New function, broken out
14815         of do_allocate_commons.
14816         * common.h (class Allocate_commons_task): Remove options_ field.
14817         Update constructor.
14818         * symtab.cc (Symbol_table::Symbol_table): Initialize
14819         tls_commons_.
14820         (Symbol_table::add_from_object): Put TLS common symbols on
14821         tls_commons_ list.
14822         (Symbol_table::sized_finalize_symbol): Handle STT_TLS symbols
14823         which are IN_OUTPUT_DATA.
14824         * symtab.h (class Symbol_table): Add tls_commons_ field.  Update
14825         allocate_commons and do_allocate_commons declarations.  Declare
14826         do_allocate_commons_list.
14827         * gold.cc (queue_middle_tasks): Update creation of
14828         Allocate_commons_task to not pass options.
14829         * testsuite/Makefile.am (INCLUDES): Add -I.. .
14830         (TLS_TEST_C_FLAGS): New variable.
14831         (tls_test_c_pic.o): New target.
14832         (tls_test_shared.so): Link in tls_test_c_pic.o.
14833         (tls_test_c_pic_ie.o): New target.
14834         (tls_test_ie_shared.so): Link in tls_test_c_pic_ie.o.
14835         (tls_test_DEPENDENCIES, tls_test_LDADD): Add tls_test_c.o.
14836         (tls_test_c.o): New target.
14837         (tls_pic_test_DEPENDENCIES): Add tls_test_c_pic.o.
14838         (tls_pic_test_LDADD): Likewise.
14839         (tls_shared_gd_to_ie_test_DEPENDENCIES): Add tls_test_c_pic.o.
14840         (tls_shared_gd_to_ie_test_LDADD): Likewise.
14841         (tls_test_c_gnu2.o): New target.
14842         (tls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): Add
14843         tls_test_c_gnu2.o.
14844         (tls_shared_gnu2_gd_to_ie_test_LDADD): Likewise.
14845         (tls_test_gnu2_shared.so): Link in tls_test_c_gnu2.o.
14846         (tls_test_shared_nonpic.so): Link in tls_test_c.o.
14847         * testsuite/tls_test.cc: Include "config.h".
14848         (t_last): Call t11_last.
14849         * testsuite/tls_test.h (t11, t11_last): Declare.
14850         * testsuite/tls_test_c.c: New file.
14851         * testsuite/tls_test_main.cc (thread_routine): Call t11.
14852         * configure.ac: Check for OpenMP support.
14853         * configure, config.in, Makefile.in: Rebuild.
14854         * testsuite/Makefile.in: Rebuild.
14855
14856 2008-04-16  Cary Coutant  <ccoutant@google.com>
14857
14858         * i386.cc (Target_i386::define_tls_base_symbol): New function.
14859         (Target_i386::tls_base_symbol_defined_): New field.
14860         (Target_i386::Scan::local): Define _TLS_MODULE_BASE_ symbol.
14861         (Target_i386::Scan::global): Likewise.
14862         * symtab.cc (sized_finalize_symbol): Add check for TLS symbol.
14863         * x86_64.cc (Target_x86_64::define_tls_base_symbol): New function.
14864         (Target_x86_64::tls_base_symbol_defined_): New field.
14865         (Target_x86_64::Scan::local): Define _TLS_MODULE_BASE_ symbol.
14866         (Target_x86_64::Scan::global): Likewise.
14867
14868 2008-04-16  Cary Coutant  <ccoutant@google.com>
14869
14870         * symtab.h (Symbol::is_strong_undefined): Removed unused function.
14871         (Symbol::needs_plt_entry): Allow weak undefined symbols.
14872         (Symbol::needs_dynamic_reloc): Allow weak undefined symbols when
14873         building shared libraries.
14874         * testsuite/Makefile.am (weak_undef_nonpic_test): New target.
14875         (weak_undef_file1_nonpic.o, weak_undef_file2_nonpic.o)
14876         (weak_undef_lib_nonpic.so, alt/weak_undef_lib_nonpic.so): New targets.
14877         * testsuite/Makefile.in: Rebuild.
14878         * testsuite/weak_undef.h: New file.
14879         * testsuite/weak_undef_file1.cc: Add extra test cases.
14880         * testsuite/weak_undef_file2.cc: Likewise.
14881         * testsuite/weak_undef_test.cc: Likewise.
14882
14883 2008-04-16  David S. Miller  <davem@davemloft.net>
14884
14885         * sparc.cc (Target_sparc::Scan): Change from struct to class.
14886         Add issued_non_pic_error_ field.  Declare check_non_pic.
14887         (Target_sparc::Scan::check_non_pic): New function.
14888         (Target_sparc::Scan::local): Call check_non_pic as appropriate.
14889         (Target_sparc::Scan::global): Likewise.
14890
14891         * configure.ac (FN_PTRS_IN_SO_WITHOUT_PIC): Add sparc64.
14892         * configure: Rebuild.
14893
14894         * options.h (DEFINE_enable): New macro.
14895         (new_dtags): New enable option.
14896         (initfirst, interpose, loadfltr, nodefaultlib,
14897         nodelete, nodlopen, nodump): New -z options.
14898         * layout.cc (Layout:finish_dynamic_section): If new
14899         dtags enabled, emit DT_RUNPATH.  Also, emit a
14900         DT_FLAGS_1 containing any specified -z flags.
14901
14902 2008-04-16  Ian Lance Taylor  <iant@google.com>
14903
14904         * copy-relocs.cc: New file.
14905         * copy-relocs.h: New file.
14906         * reloc.cc: Remove Copy_relocs code.
14907         * reloc.h: Likewise.
14908         * reloc-types.h (struct Reloc_types) [both versions]: Add
14909         get_reloc_addend_noerror.
14910         * output.h (class Output_data_reloc<elfcpp::SHT_REL>): Add
14911         variants of add_global which take an addend which must be zero.
14912         * i386.cc: Include "copy-relocs.h".
14913         (class Target_i386): Change type of copy_relocs_ to variable,
14914         update initializer.
14915         (Target_i386::copy_reloc): Rewrite to pass to Copy_relocs class.
14916         Change all callers.
14917         (Target_i386::do_finalize_sections): Change handling of
14918         copy_relocs_.
14919         * sparc.cc: Include "copy-relocs.h".
14920         (class Target_sparc): Change type of copy_relocs_ to variable,
14921         update initializer.
14922         (Target_sparc::copy_reloc): Rewrite to pass to Copy_relocs class.
14923         Change all callers.
14924         (Target_sparc::do_finalize_sections): Change handling of
14925         copy_relocs_.
14926         * x86_64.cc: Include "copy-relocs.h".
14927         (class Target_x86_64): Change type of copy_relocs_ to variable,
14928         update initializer.
14929         (Target_x86_64::copy_reloc): Rewrite to pass to Copy_relocs
14930         class.  Change all callers.
14931         (Target_x86_64::do_finalize_sections): Change handling of
14932         copy_relocs_.
14933         * Makefile.am (CCFILES): Add copy-relocs.cc.
14934         (HFILES): Add copy-relocs.h.
14935
14936         * Makefile.in, aclocal.m4, testsuite/Makefile.in: Rebuild.
14937
14938         * testsuite/script_test_4.sh: Permit leading zeroes.
14939
14940 2008-04-15  Ian Lance Taylor  <iant@google.com>
14941
14942         * script-sections.cc (Script_sections::create_segments): Use
14943         header_size_adjustment even when there is enough room for the
14944         headers.
14945         * testsuite/script_test_4.sh: New file.
14946         * testsuite/script_test_4.t: New file.
14947         * testsuite/Makefile.am (check_SCRIPTS): Add script_test_4.sh.
14948         (check_DATA): Add script_test_4.stdout.
14949         (MOSTLYCLEANFILES): Likewise.
14950         (script_test_4): New target.
14951         (script_test_4.stdout): New target.
14952         * testsuite/Makefile.in: Rebuild.
14953
14954         * sparc.cc: Add definitions for Output_data_plt_sparc class
14955         constants.
14956
14957 2008-04-14  David S. Miller  <davem@davemloft.net>
14958
14959         * sparc.cc: New file.
14960         * Makefile.am (TARGETSOURCES): Add sparc.cc
14961         (ALL_TARGETOBJS): Add sparc.$(OBJEXT)
14962         * configure.tgt: Document targ_extra_size and
14963         targ_extra_big_endian.  Add entries for sparc-* and
14964         sparc64-*.
14965         * configure.ac: Handle targ_extra_size and
14966         targ_extra_big_endian.
14967         * Makefile.in: Rebuild.
14968         * configure: Likewise.
14969         * po/POTFILES.in: Likewise.
14970         * po/gold.pot: Likewise.
14971
14972 2008-04-14  Ian Lance Taylor  <iant@google.com>
14973
14974         * layout.cc (Layout::Layout): Initialize sections_are_attached_.
14975         (Layout::get_output_section): Ignore SHF_WRITE and SHF_EXECINSTR
14976         in the name/type/flags to section mapping.  Don't call
14977         allocate_output_section.
14978         (Layout::choose_output_section): Change parameter from adjust_name
14979         to is_input_section.  Don't permit input sections after sections
14980         are attached to segments.  Don't call allocate_output_section.
14981         (Layout::layout_eh_frame): Call update_flags_for_input_section,
14982         not write_enable_output_section.
14983         (Layout::make_output_section): Don't push to
14984         unattached_section_list_ nor call attach_to_segment.  Call
14985         attach_section_to_segment if sections are attached.
14986         (Layout::attach_sections_to_segments): New function.
14987         (Layout::attach_section_to_segment): New function.
14988         (Layout::attach_allocated_section_to_segment): Rename from
14989         attach_to_segment.  Remove flags parameter.
14990         (Layout::allocate_output_section): Remove function.
14991         (Layout::write_enable_output_section): Remove function.
14992         * layout.h (class Layout): Update for above changes.  Add new
14993         field sections_are_attached_.
14994         * output.h (Output_section::update_flags_for_input_section): New
14995         function.
14996         * output.cc (Output_section::add_input_section): Call
14997         update_flags_for_input_section.
14998         * gold.cc (queue_middle_tasks): Call attach_sections_to_segments.
14999
15000 2008-04-11  Cary Coutant  <ccoutant@google.com>
15001
15002         * i386.cc (Target_i386::got_mod_index_entry): Restore code previously
15003         thought unnecessary.
15004         * x86_64.cc (Target_x86_64::got_mod_index_entry): Likewise.
15005
15006 2008-04-11  Ian Lance Taylor  <iant@google.com>
15007
15008         * output.h (class Output_section_data): Remove inline definition
15009         of set_addralign.
15010         * output.cc (Output_section_data::set_addralign): New function.
15011
15012 2008-04-11  Cary Coutant  <ccoutant@google.com>
15013
15014         Add support for TLS descriptors for i386 and x86_64.
15015         * i386.cc (Target_i386::Relocate::tls_desc_gd_to_ie): New function.
15016         (Target_i386::Relocate::tls_desc_gd_to_le): New function.
15017         (Target_i386::Got_type): Add GOT_TYPE_TLS_NOFFSET and
15018         GOT_TYPE_TLS_DESC.
15019         (Target_i386::got_mod_index_entry): Remove unnecessary code.
15020         (Target_i386::Scan::local): Implement R_386_TLS_GOTDESC and
15021         R_386_TLS_DESC_CALL relocations.  Fix problem with initial-exec
15022         relocations.
15023         (Target_i386::Scan::global): Fix problem with GD-to-IE relaxation.
15024         Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations;
15025         Fix problem with initial-exec relocations.
15026         (Target_i386::Relocate::relocate_tls): Likewise.
15027         (Target_i386::Relocate::tls_gd_to_ie): Fix problem with GD-to-IE
15028         relaxation.
15029         * output.cc (Output_data_dynamic::Dynamic_entry::write): Add
15030         support for section-plus-offset dynamic table entries.
15031         * output.h (Output_data_dynamic::add_section_plus_offset): New function.
15032         (Output_data_dynamic::Dynamic_entry): Add support for
15033         section-plus-offset dynamic table entries.
15034         (Output_data_dynamic::Classification): Likewise.
15035         (Output_data_dynamic::classification_): Renamed offset_.
15036         * x86_64.cc (Target_x86_64::Relocate::tls_desc_gd_to_ie): New function.
15037         (Target_x86_64::Relocate::tls_desc_gd_to_le): New function.
15038         (Target_x86_64::make_plt_section): New function.
15039         (Target_x86_64::reserve_tlsdesc_entries): New function.
15040         (Output_data_plt_x86_64::Output_data_plt_x86_64): Add new parameter.
15041         (Output_data_plt_x86_64::reserve_tlsdesc_entry): New function.
15042         (Output_data_plt_x86_64::has_tlsdesc_entry): New function.
15043         (Output_data_plt_x86_64::get_tlsdesc_got_offset): New function.
15044         (Output_data_plt_x86_64::get_tlsdesc_plt_offset): New function.
15045         (Output_data_plt_x86_64::tlsdesc_plt_entry): New field.
15046         (Output_data_plt_x86_64::set_final_data_size): Move out of line;
15047         add extra PLT entry for TLS descriptors.
15048         (Output_data_plt_x86_64::got_): New field.
15049         (Output_data_plt_x86_64::tlsdesc_got_offset_): New field.
15050         (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize new
15051         fields.
15052         (Output_data_plt_x86_64::do_write): Write extra PLT entry for TLS
15053         descriptors.
15054         (Target_x86_64::make_plt_entry): Factor out make_plt_section.
15055         (Target_x86_64::got_mod_index_entry): Remove unnecessary code.
15056         (Target_x86_64::Scan::local): Implement R_386_TLS_GOTDESC and
15057         R_386_TLS_DESC_CALL relocations.
15058         (Target_x86_64::Scan::global): Likewise.
15059         (Target_x86_64::do_finalize_sections): Add dynamic table entries
15060         for TLS descriptors.
15061         (Relocate::relocate_tls): Fix problem with GD-to-IE relaxation.
15062         Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations.
15063         (Target_x86_64::Relocate::tls_gd_to_ie): Fix problem with
15064         GD-to-IE relaxation.
15065         * configure.ac: Export new conditional variables TLS_GNU2_DIALECT
15066         and TLS_DESCRIPTORS.
15067         * Makefile.in: Rebuild.
15068         * configure: Rebuild.
15069         * testsuite/Makefile.am (tls_shared_gd_to_ie_test): New target.
15070         (tls_test_shared2.so): New target.
15071         (tls_shared_gd_to_ie_test_SOURCES): New variable.
15072         (tls_shared_gd_to_ie_test_DEPENDENCIES): New variable.
15073         (tls_shared_gd_to_ie_test_LDFLAGS): New variable.
15074         (tls_shared_gd_to_ie_test_LDADD): New variable.
15075         (tls_shared_gnu2_gd_to_ie_test): New target.
15076         (tls_test_gnu2.o, tls_test_file2_gnu2.o, tls_test_gnu2_shared2.so):
15077         New targets.
15078         (tls_shared_gnu2_gd_to_ie_test_SOURCES): New variable.
15079         (ls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): New variable.
15080         (tls_shared_gnu2_gd_to_ie_test_LDFLAGS): New variable.
15081         (tls_shared_gnu2_gd_to_ie_test_LDADD): New variable.
15082         (tls_shared_gnu2_test): New target.
15083         (tls_test_gnu2_shared.so): New target.
15084         (tls_shared_gnu2_test_SOURCES): New variable.
15085         (tls_shared_gnu2_test_DEPENDENCIES): New variable.
15086         (tls_shared_gnu2_test_LDFLAGS): New variable.
15087         (tls_shared_gnu2_test_LDADD): New variable.
15088         * testsuite/Makefile.in: Rebuild.
15089         * testsuite/Makefile.
15090
15091 2008-04-11  Ian Lance Taylor  <iant@google.com>
15092
15093         * testsuite/Makefile.am (justsyms_2r.o): Add dependency on
15094         justsyms.t.
15095         * testsuite/Makefile.in: Rebuild.
15096
15097         * testsuite/script_test_2a.cc (script_test_string_a): Make 8 bytes
15098         long.
15099         * testsuite/script_test_2.cc (main): Adjust test.
15100
15101 2008-04-11  David S. Miller  <davem@davemloft.net>
15102             Ian Lance Taylor  <iant@google.com>
15103
15104         * options.h (General_options): Add entries for '-Y' and
15105         '-relax'.
15106         * options.cc (General_options:finalize): If -Y was used, add those
15107         entries to the library path instead of the default "/lib" and
15108         "/usr/lib".
15109
15110 2008-04-11  David S. Miller  <davem@davemloft.net>
15111
15112         * testsuite/justsyms.t: Start at 0x100.
15113         * testsuite/justsyms_1.cc: Adjust justsyms_string assertion.
15114         * testsuite/script_test_2b.cc (script_test_string_b): Make 8 bytes
15115         long.
15116         * testsuite/script_test_2.cc: Adjust string and section length
15117         checks.
15118
15119 2008-04-09  Ian Lance Taylor  <iant@google.com>
15120
15121         PR gold/5996
15122         * script-sections.cc (Sections_element::allocate_to_segment): Add
15123         orphan parameter.
15124         (Output_section_definition::allocate_to_segment): Likewise.
15125         (Orphan_output_section::allocate_to_segment): Likewise.
15126         (Script_sections::attach_sections_using_phdrs_clause): Don't
15127         propagate non-PT_LOAD segments to orphan sections.
15128         * testsuite/Makefile.am (script_test_3.stdout): Generate using
15129         readelf rather than objdump.
15130         * testsuite/script_test_3.sh: Adjust accordingly.  Test that
15131         .interp section and PT_INTERP segment are the same size.
15132         * testsuite/Makefile.in: Rebuild.
15133
15134         * symtab.cc (Symbol_table::add_from_dynobj): Only look for weak
15135         aliases for symbols defined in the same object.
15136         * testsuite/Makefile.am (check_PROGRAMS): Add weak_alias_test.
15137         (weak_alias_test_SOURCES): New variable.
15138         (weak_alias_test_DEPENDENCIES): New variable.
15139         (weak_alias_test_LDFLAGS): New variable.
15140         (weak_alias_test_LDADD): New variable.
15141         (weak_alias_test_1_pic.o, weak_alias_test_1.so): New targets.
15142         (weak_alias_test_2_pic.o, weak_alias_test_2.so): New targets.
15143         (weak_alias_test_3.o): New target.
15144         (weak_alias_test_4_pic.o, weak_alias_test_4.so): New targets.
15145         * testsuite/weak_alias_test_main.cc: New file.
15146         * testsuite/weak_alias_test_1.cc: New file.
15147         * testsuite/weak_alias_test_2.cc: New file.
15148         * testsuite/weak_alias_test_3.cc: New file.
15149
15150 2008-04-08  Ian Lance Taylor  <iant@google.com>
15151
15152         * options.h (class General_options): Add --noinhibit-exec option.
15153         * main.cc (main): Check --noinhibit-exec.
15154
15155         * options.h (class General_options): Define --wrap as a special
15156         option.  Add wrap_symbols_ field.
15157         (General_options::any_wrap_symbols): New function.
15158         (General_options::is_wrap_symbol): New function.
15159         * options.cc (General_options::parse_wrap): New function.
15160         (General_options::General_options): Initialize wrap_symbols_.
15161         * symtab.cc (Symbol_table::wrap_symbol): New function.
15162         (Symbol_table::add_from_object): Handle --wrap.
15163         * symtab.h (class Symbol_table): Declare wrap_symbol.
15164         * target.h (Target::wrap_char): New function.
15165         (Target::Target_info): Add wrap_char field.
15166         * i386.cc (Target_i386::i386_info): Initialize wrap_char.
15167         * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
15168         * testsuite/testfile.cc (Target_test::test_target_info):
15169         Likewise.
15170
15171         * errors.cc (Errors::undefined_symbol): Mention symbol version if
15172         there is one.
15173
15174         * layout.h (class Layout): Add added_eh_frame_data_ field.
15175         * layout.cc (Layout::Layout): Initialize new field.
15176         (Layout::layout_eh_frame): Don't add eh_frame_data_ to .eh_frame
15177         output section until we find a section we merged successfully.
15178         * object.cc (Sized_relobj::check_eh_frame_flags): Don't require
15179         that the size be non-zero.
15180
15181         * merge.cc (Object_merge_map::get_output_offset): Remove inline
15182         qualifier.
15183
15184 2008-04-08  Craig Silverstein  <csilvers@google.com>
15185
15186         * configure.ac: Export new conditional variable HAVE_ZLIB.
15187         * testsuite/Makefile.am (flagstest_o_specialfile): Condition
15188         on HAVE_ZLIB.
15189         (flagstest_o_specialfile_and_compress_debug_sections): Likewise.
15190         * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
15191
15192 2008-04-07  Ian Lance Taylor  <iant@google.com>
15193
15194         * version.cc (version_string): Set to "1.5".
15195
15196         * x86_64.cc (Target_x86_64::Scan): Change from struct to class.
15197         Add issued_non_pic_error_ field.  Declare check_non_pic.
15198         (Target_x86_64::Scan::check_non_pic): New function.
15199         (Target_x86_64::Scan::local): Call check_non_pic as appropriate.
15200         (Target_x86_64::Scan::global): Likewise.
15201
15202         * output.cc (Output_reloc<SHT_REL>::local_section_offset): Add
15203         addend parameter.  Change caller.  Handle merge sections.
15204         (Output_reloc<SHT_REL>::symbol_value): Change parameter type from
15205         Address to Addend.  Don't add in the result of
15206         local_section_offset, pass down the addend and use the returned
15207         value.
15208         * output.h (class Output_reloc<SHT_REL>): Add Addend typedef.
15209         Update declarations of local_section_offset and symbol_value.
15210         * testsuite/two_file_test_1.cc (t18): New function.
15211         * testsuite/two_file_test_2.cc (f18): New function.
15212         * testsuite/two_file_test_main.cc (main): Call t18.
15213         * testsuite/two_file_test.h (t18, f18): Declare.
15214
15215         * configure.ac: Don't test for objdump, c++filt, or readelf.
15216         * testsuite/Makefile.am: Remove READELF and OBJDUMP_AND_CPPFILT
15217         conditionals.
15218         (TEST_READELF): New variable.
15219         (TEST_OBJDUMP, TEST_CXXFILT, TEST_STRIP): New variables.
15220         (check_PROGRAMS): Add two_file_strip_test.
15221         (two_file_strip_test): New target.
15222         (check_PROGRAMS): Add two_file_same_shared_strip_test.
15223         (two_file_same_shared_strip_test_SOURCES): New variable.
15224         (two_file_same_shared_strip_test_DEPENDENCIES): New variable.
15225         (two_file_same_shared_strip_test_LDFLAGS): New variable.
15226         (two_file_same_shared_strip_test_LDADD): New variable.
15227         (two_file_shared_strip.so): New target.
15228         (ver_test_2.syms, ver_test_4.syms): Use TEST_READELF.
15229         (ver_test_5.syms, ver_test_7.syms): Likewise.
15230         (ver_matching_test.stdout): Use TEST_OBJDUMP and TEST_CXXFILT.
15231         (strip_test_3.stdout): Use TEST_OBJDUMP.
15232         * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
15233
15234 2008-04-04  Cary Coutant  <ccoutant@google.com>
15235
15236         * symtab.h (Symbol::is_weak_undefined): New function.
15237         (Symbol::is_strong_undefined): New function.
15238         (Symbol::is_absolute): New function.
15239         (Symbol::needs_plt_entry): Exclude weak undefined symbols.
15240         (Symbol::needs_dynamic_reloc): Exclude weak undefined and
15241         absolute symbols.
15242         * testsuite/Makefile.am (check_PROGRAMS): Add weak_undef_test.
15243         (weak_undef_test): New target.
15244         * testsuite/Makefile.in: Rebuild.
15245         * testsuite/weak_undef_file1.cc: New file.
15246         * testsuite/weak_undef_file2.cc: New file.
15247         * testsuite/weak_undef_test.cc: New file.
15248
15249 2008-04-03  Craig Silverstein  <csilvers@google.com>
15250
15251         * compressed_output.h (class Output_compressed_section): Use
15252         unsigned buffer.
15253         * compressed_output.cc (zlib_compress): Use unsigned buffers,
15254         add zlib header.
15255         (zlib_compressed_suffix): Removed.
15256         (Output_compressed_section::set_final_data_size): Use unsigned
15257         buffers.
15258         * testsuite/Makefile.am (flagstest_compress_debug_sections):
15259         Fix linker invocation.
15260         (flagstest_o_specialfile_and_compress_debug_sections):
15261         Likewise.
15262         * testsuite/Makefile.in: Regenerated.
15263
15264 2008-04-02  David S. Miller  <davem@davemloft.net>
15265
15266         *  dwarf_reader.cc (Sized_dwarf_line_info::read_header_prolog,
15267         Sized_dwarf_line_info::process_one_opcode): Use Swap_unaligned.
15268
15269 2008-04-02  Craig Silverstein  <csilvers@google.com>
15270
15271         * TODO: New file.
15272
15273 2008-04-02  Ian Lance Taylor  <iant@google.com>
15274
15275         * fileread.cc (File_read::find_view): Add byteshift and vshifted
15276         parameters.  Update for new key type to views_.  Change all
15277         callers.
15278         (File_read::read): Adjust for byteshift in returned view.
15279         (File_read::add_view): New function, broken out of
15280         find_and_make_view.
15281         (File_read::make_view): New function, broken out of
15282         find_and_make_view.
15283         (File_read::find_or_make_view): Add offset and aligned
15284         parameters.  Rewrite accordingly.  Change all callers.
15285         (File_read::get_view): Add offset and aligned parameters.  Adjust
15286         for byteshift in return value.
15287         (File_read::get_lasting_view): Likewise.
15288         * fileread.h (class File_read): Update declarations.
15289         (class File_read::View): Add byteshift_ field.  Add byteshift to
15290         constructor.  Add byteshift method.
15291         * archive.h (Archive::clear_uncached_views): New function.
15292         (Archive::get_view): Add aligned parameter.  Change all callers.
15293         * object.h (Object::get_view): Add aligned parameter.  Change all
15294         callers.
15295         (Object::get_lasting_view): Likewise.
15296
15297         * fileread.cc (File_read::release): Don't call clear_views if
15298         there are multiple objects.
15299         * fileread.h (File_read::clear_uncached_views): New function.
15300         * archive.cc (Add_archive_symbols::run): Call clear_uncached_views
15301         on the archive.
15302
15303 2008-03-31  Cary Coutant  <ccoutant@google.com>
15304
15305         Add thin archive support.
15306         * archive.cc (Archive::armagt): New const.
15307         (Archive::setup): Remove task parameter and calls to unlock.
15308         (Archive::unlock_nested_archives): New function.
15309         (Archive::read_header): Add nested_off parameter. Change
15310         all callers.
15311         (Archive::interpret_header): Likewise.
15312         (Archive::include_all_members): Change to handle thin
15313         archives.
15314         (Archive::include_member): Likewise.
15315         * archive.h (Archive::Archive): Add new parameters and
15316         initializers.
15317         (Archive::armagt): New const.
15318         (Archive::setup): Remove task parameter.
15319         (Archive::unlock_nested_archives): New function.
15320         (Archive::read_header): Add nested_off parameter.
15321         (Archive::interpret_header): Likewise.
15322         (Archive::Nested_archive_table): New typedef.
15323         (Archive::is_thin_archive_): New field.
15324         (Archive::nested_archives_): New field.
15325         (Archive::options_): New field.
15326         (Archive::dirpath_): New field.
15327         (Archive::task_): New field.
15328         * readsyms.cc (Read_symbols::do_read_symbols): Add check
15329         for thin archives.  Pass additional parameters to
15330         Archive::Archive.  Unlock the archive file after calling
15331         Archive::setup.
15332
15333 2008-03-29  Ian Lance Taylor  <iant@google.com>
15334
15335         * symtab.cc (Symbol_table::do_define_as_constant): Don't force a
15336         version symbol to be local.
15337         * testsuite/ver_test_4.sh: New file.
15338         * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_4.sh.
15339         (check_DATA): Add ver_test_4.syms.
15340         (ver_test_4.syms): New target.
15341         * testsuite/Makefile.in: Rebuild.
15342
15343         * output.cc
15344         (Output_section::Input_section_sort_entry::has_priority): New
15345         function.
15346         (Output_section::Input_section_sort_entry::match_file_name): New
15347         function.
15348         (Output_section::Input_section_sort_entry::match_section_name):
15349         Remove.
15350         (Output_section::Input_section_sort_entry::match_section_name_prefix):
15351         Remove.
15352         (Output_section::Input_section_sort_entry::match_section_file):
15353         Remove.
15354         (Output_section::Input_section_sort_compare::operator()): Rewrite
15355         using new Input_section_sort_entry functions.  Sort crtbegin and
15356         crtend first.  Sort sections with no priority before sections with
15357         a priority.
15358         * testsuite/initpri1.c (d3): Check j != 4.
15359         (cd5): New constructor/destructor function.
15360         (main): Check j != 2.
15361
15362         * symtab.cc (Symbol_table::add_from_object): If we don't use the
15363         new symbol when resolving, don't call set_is_default.
15364         * testsuite/ver_test_7.cc: New file.
15365         * testsuite/ver_test_7.sh: New file.
15366         * testsuite/Makefile.am (ver_test_7.so): New target.
15367         (ver_test_7.o): New target.
15368         (check_SCRIPTS): Add ver_test_7.sh.
15369         (check_DATA): Add ver_test_7.syms.
15370         (ver_test_7.syms): New target.
15371
15372 2008-03-28  Ian Lance Taylor  <iant@google.com>
15373
15374         * layout.cc (Layout::layout): If we see an input section with a
15375         name that needs sorting, set the must_sort flag for the output
15376         section.
15377         (Layout::make_output_section): If the name of the output section
15378         indicates that it might require sorting, set the may_sort flag.
15379         * output.h (Output_section::may_sort_attached_input_sections): New
15380         function.
15381         (Output_section::set_may_sort_attached_input_sections): New
15382         function.
15383         (Output_section::must_sort_attached_input_sections): New
15384         function.
15385         (Output_section::set_must_sort_attached_input_sections): New
15386         function.
15387         (class Output_section): Declare Input_section_sort_entry.  Define
15388         Input_section_sort_compare.  Declare
15389         sort_attached_input_sections.  Add new fields:
15390         may_sort_attached_input_sections_,
15391         must_sort_attached_input_sections_,
15392         attached_input_sections_are_sorted_.
15393         * output.cc (Output_section::Output_section): Initialize new
15394         fields.
15395         (Output_section::add_input_section): Add an entry to
15396         input_sections_ if may_sort or must_sort are true.
15397         (Output_section::set_final_data_size): Call
15398         sort_attached_input_sections if necessary.
15399         (Output_section::Input_section_sort_entry): Define new class.
15400         (Output_section::Input_section_sort_compare::operator()): New
15401         function.
15402         (Output_section::sort_attached_input_sections): New function.
15403         * configure.ac: Check whether the compiler supports constructor
15404         priorities.  Define a CONSTRUCTOR_PRIORITY automake conditional.
15405         * testsuite/initpri1.c: New file.
15406         * testsuite/Makefile.am (check_PROGRAMS): Add initpri1 if
15407         CONSTRUCTOR_PRIORITY.
15408         (initpri1_SOURCES, initpri1_DEPENDENCIES): New variables.
15409         (initpri1_LDFLAGS): New variable.
15410         * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
15411
15412 2008-03-27  Ian Lance Taylor  <iant@google.com>
15413
15414         * common.cc (Sort_commons::operator): Correct sorting algorithm.
15415         * testsuite/common_test_1.c: New file.
15416         * testsuite/Makefile.am (check_PROGRAMS): Add common_test_1.
15417         (common_test_1_SOURCES): New variable.
15418         (common_test_1_DEPENDENCIES): New variable.
15419         (common_test_1_LDFLAGS): New variable.
15420
15421         * symtab.cc (Symbol_table::add_from_object): Handle saw_undefined_
15422         and commons_ correctly when NAME/VERSION does not override
15423         NAME/NULL.
15424         * testsuite/ver_test_6.c: New file.
15425         * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_6
15426         (ver_test_6_SOURCES, ver_test_6_DEPENDENCIES): New variables.
15427         (ver_test_6_LDFLAGS, ver_test_6_LDADD): New variables.
15428
15429 2008-03-26  Ian Lance Taylor  <iant@google.com>
15430
15431         * symtab.cc (Symbol_table::add_from_relobj): Don't set the version
15432         of an undefined symbol from a version script.
15433         * testsuite/Makefile.am (ver_test_5.so): New target.
15434         (ver_test_5.o): New target.
15435         (check_SCRIPTS): Add ver_test_5.sh.
15436         (check_DATA): Add ver_test_5.syms.
15437         (ver_test_5.syms): New target.
15438         * testsuite/ver_test_5.cc: New file.
15439         * testsuite/ver_test_5.script: New file.
15440         * testsuite/ver_test_5.sh: New file.
15441         * Makefile.in, testsuite/Makefile.in: Rebuild.
15442
15443         PR gold/5986
15444         Fix problems building gold with gcc 4.3.0.
15445         * gold.h (TEMPLATE_ATTRIBUTE_PRINTF_4): Define.
15446         (gold_error_at_location, gold_warning_at_location): Use it.
15447         * configure.ac: Check whether we can compile and use a template
15448         function with a printf attribute.
15449         * x86_64.cc (Target_x86_64::do_code_fill): Swap out a 32-bit value
15450         when jumping over bytes.
15451         * object.cc: Instantiate Object::read_section_data.
15452         * debug.h: Include <cstring>
15453         * dwarf_reader.cc: Include <algorithm>
15454         * main.cc: Include <cstring>.
15455         * options.cc: Include <cstring>.
15456         * output.cc: Include <cstring>.
15457         * script.cc: Include <cstring>.
15458         * script.h: Include <string>.
15459         * symtab.cc: Include <cstring> and <algorithm>.
15460         * target-select.cc: Include <cstring>.
15461         * version.cc: Include <string>.
15462         * testsuite/testmain.cc: Include <cstdlib>.
15463         * configure, config.in: Rebuild.
15464
15465 2008-03-25  Ian Lance Taylor  <iant@google.com>
15466
15467         * options.cc: Include "../bfd/bfdver.h".
15468         (options::help): Print bug reporting address.
15469
15470         * version.cc (print_version): Adjust output for current value of
15471         BFD_VERSION_STRING.
15472
15473         * NEWS: New file.
15474
15475         * options.cc (options::help): Print list of supported targets.
15476         * target-select.h: Include <vector>.
15477         (class Target_selector): Make machine_, size_, and is_big_endian_
15478         fields const.  Add bfd_name_ and instantiated_target_ fields.
15479         (Target_selector::Target_selector): Add bfd_name parameter.
15480         (Target_selector::recognize): Make non-virtual, call
15481         do_recognize.
15482         (Target_selector::recognize_by_name): Make non-virtual, call
15483         do_recognize_by_name.
15484         (Target_selector::supported_names): New function.
15485         (Target_selector::bfd_name): New function.
15486         (Target_selector::do_instantiate_target): New pure virtual
15487         function.
15488         (Target_selector::do_recognize): New virtual function.
15489         (Target_selector::do_recognize_by_name): New virtual function.
15490         (Target_selector::instantiate_target): New private function.
15491         (supported_target_names): Declare.
15492         * target-select.cc (Target_selector::Target_selector): Update for
15493         new parameter and fields.
15494         (select_target_by_name): Check that the name matches before
15495         calling recognize_by_name.
15496         (supported_target_names): New function.
15497         * i386.cc (class Target_selector_i386): Update Target_selector
15498         constructor call.  Remove recognize and recognize_by_name.  Add
15499         do_instantiate_target.
15500         * x86_64.cc (class Target_selector_x86_64): Likewise.
15501         * testsuite/testfile.cc (class Target_selector_test): Update for
15502         changes to Target_selector.
15503
15504         * README: Rewrite, with some notes on unsupported features.
15505
15506 2008-03-24  Cary Coutant  <ccoutant@google.com>
15507
15508         * i386.cc (Target_i386::Got_type): New enum declaration.
15509         (Target_i386::Scan::local): Updated callers of Output_data_got
15510         member functions.
15511         (Target_i386::Scan::global): Likewise.
15512         (Target_i386::Relocate::relocate): Likewise.
15513         (Target_i386::Relocate::relocate_tls): Likewise.
15514         * object.h (Got_offset_list): New class.
15515         (Sized_relobj::local_has_got_offset): Added got_type parameter.
15516         (Sized_relobj::local_got_offset): Likewise.
15517         (Sized_relobj::set_local_got_offset): Likewise.
15518         (Sized_relobj::local_has_tls_got_offset): Removed.
15519         (Sized_relobj::local_tls_got_offset): Removed.
15520         (Sized_relobj::set_local_tls_got_offset): Removed.
15521         (Sized_relobj::Local_got_offsets): Changed to store a list of offsets.
15522         * output.cc (Output_data_got::add_global): Added got_type parameter.
15523         (Output_data_got::add_global_with_rel): Likewise.
15524         (Output_data_got::add_global_with_rela): Likewise.
15525         (Output_data_got::add_global_pair_with_rel): New function.
15526         (Output_data_got::add_global_pair_with_rela): New function.
15527         (Output_data_got::add_local): Added got_type parameter.
15528         (Output_data_got::add_local_with_rel): Likewise.
15529         (Output_data_got::add_local_with_rela): Likewise.
15530         (Output_data_got::add_local_pair_with_rel): New function.
15531         (Output_data_got::add_local_pair_with_rela): New function.
15532         (Output_data_got::add_global_tls): Removed.
15533         (Output_data_got::add_global_tls_with_rel): Removed.
15534         (Output_data_got::add_global_tls_with_rela): Removed.
15535         (Output_data_got::add_local_tls): Removed.
15536         (Output_data_got::add_local_tls_with_rel): Removed.
15537         (Output_data_got::add_local_tls_with_rela): Removed.
15538         * output.h (Output_data_got::add_global): Added got_type parameter.
15539         (Output_data_got::add_global_with_rel): Likewise.
15540         (Output_data_got::add_global_with_rela): Likewise.
15541         (Output_data_got::add_global_pair_with_rel): New function.
15542         (Output_data_got::add_global_pair_with_rela): New function.
15543         (Output_data_got::add_local): Added got_type parameter.
15544         (Output_data_got::add_local_with_rel): Likewise.
15545         (Output_data_got::add_local_with_rela): Likewise.
15546         (Output_data_got::add_local_pair_with_rel): New function.
15547         (Output_data_got::add_local_pair_with_rela): New function.
15548         (Output_data_got::add_global_tls): Removed.
15549         (Output_data_got::add_global_tls_with_rel): Removed.
15550         (Output_data_got::add_global_tls_with_rela): Removed.
15551         (Output_data_got::add_local_tls): Removed.
15552         (Output_data_got::add_local_tls_with_rel): Removed.
15553         (Output_data_got::add_local_tls_with_rela): Removed.
15554         * resolve.cc (Symbol::override_base_with_special): Removed
15555         reference to has_got_offset_ field.
15556         * symtab.cc (Symbol::init_fields): Replaced initialization
15557         of got_offset_ with got_offsets_.  Removed initialization
15558         of has_got_offset_
15559         * symtab.h (Symbol::has_got_offset): Aded got_type parameter.
15560         (Symbol::got_offset): Likewise.
15561         (Symbol::set_got_offset): Likewise.
15562         (Symbol::has_tls_got_offset): Removed.
15563         (Symbol::tls_got_offset): Removed.
15564         (Symbol::set_tls_got_offset): Removed.
15565         (Symbol::got_offset_): Removed.
15566         (Symbol::tls_mod_got_offset_): Removed.
15567         (Symbol::tls_pair_got_offset_): Removed.
15568         (Symbol::got_offsets_): New field.
15569         (Symbol::has_got_offset): Removed.
15570         (Symbol::has_tls_mod_got_offset): Removed.
15571         (Symbol::has_tls_pair_got_offset): Removed.
15572         * x86_64.cc (Target_x86_64::Got_type): New enum declaration.
15573         (Target_x86_64::Scan::local): Updated callers of Output_data_got
15574         member functions.
15575         (Target_x86_64::Scan::global): Likewise.
15576         (Target_x86_64::Relocate::relocate): Likewise.
15577         (Target_x86_64::Relocate::relocate_tls): Likewise.
15578
15579 2008-03-25  Ben Elliston  <bje@au.ibm.com>
15580
15581         * yyscript.y: Fix spelling error in comment.
15582
15583 2008-03-24  Ian Lance Taylor  <iant@google.com>
15584
15585         * options.h (class General_options): Define build_id option.
15586         * layout.h (class Layout): Declare write_build_id, create_note,
15587         create_build_id.  Add build_id_note_ member.
15588         * layout.cc: Include <cerrno>, <fcntl.h>, <unistd.h>,
15589         "libiberty.h", "md5.h", "sha1.h".
15590         (Layout::Layout): Initialize eh_frame_data_,
15591         eh_frame_hdr_section_, and build_id_note_.
15592         (Layout::finalize): Call create_build_id.
15593         (Layout::create_note): New function, broken out of
15594         Layout::create_gold_note.
15595         (Layout::create_gold_note): Call create_note.
15596         (Layout::create_build_id): New function.
15597         (Layout::write_build_id): New function.
15598         (Close_task_runner::run): Call write_build_id.
15599
15600         * x86_64.cc: Correct license to GPLv3.
15601
15602 2008-03-23  Ian Lance Taylor  <iant@google.com>
15603
15604         * options.cc: Include "demangle.h".
15605         (parse_optional_string): New function.
15606         (parse_long_option): Handle takes_optional_argument.
15607         (parse_short_option): Update dash_z initializer.  Handle
15608         takes_optional_argument.
15609         (General_options::General_options): Initialize do_demangle_.
15610         (General_options::finalize): Set do_demangle_.  Handle demangling
15611         style.
15612         * options.h (parse_optional_string): Declare.
15613         (struct One_option): Add optional_arg field.  Update constructor.
15614         Update call constructor calls.  Add takes_optional_argument
15615         function.
15616         (DEFINE_var): Add optional_arg__ parameter.  Change all callers.
15617         (DEFINE_optional_string): Define.
15618         (General_options::demangle): Change from DEFINE_bool to
15619         DEFINE_optional_string.
15620         (General_options::no_demangle): New function.
15621         (General_options::do_demangle): New function.
15622         (General_options::set_do_demangle): New function.
15623         (General_options::execstack_status_): Move definition to end of
15624         class definition.
15625         (General_options::static_): Likewise.
15626         (General_options::do_demangle_): New field.
15627         * object.cc (big_endian>::get_symbol_location_info): Call
15628         Options::do_demangle, not Options::demangle.
15629         * symtab.cc (demangle): Likewise.
15630
15631 2008-03-22  Ian Lance Taylor  <iant@google.com>
15632
15633         * gold.h: Include <cstddef> and <sys/types.h>
15634         * options.h: Include <cstring>.
15635
15636 2008-03-21  Ian Lance Taylor  <iant@google.com>
15637
15638         * Added source code to GNU binutils.
15639 \f
15640 Copyright (C) 2008-2014 Free Software Foundation, Inc.
15641
15642 Copying and distribution of this file, with or without modification,
15643 are permitted in any medium without royalty provided the copyright
15644 notice and this notice are preserved.
15645
15646 Local Variables:
15647 mode: change-log
15648 left-margin: 8
15649 fill-column: 74
15650 version-control: never
15651 End: