3eed17a176153676b6ed4a36b8b9873b439d5a1c
[external/binutils.git] / gold / ChangeLog
1 2015-02-16  Cary Coutant  <ccoutant@google.com>
2
3         PR gold/13577
4         PR gold/16992
5         * layout.cc (Layout::finish_dynamic_section): Don't set DT_SYMBOLIC or
6         DF_SYMBOLIC if --dynamic-list option is used.
7         * options.cc (General_options::finalize): --dynamic-list is not
8         mutually exclusive with -Bsymbolic.
9         * symtab.h (Symbol::is_preemptible): Don't exclude dynamic symbols not
10         listed in --dynamic-list.
11         * testsuite/Makefile.am (dynamic_list_lib2.so): Add
12         -Bsymbolic-functions.
13         * testsuite/Makefile.in: Regenerate.
14
15 2015-02-16  Cary Coutant  <ccoutant@google.com>
16
17         PR gold/17971
18         * incremental.cc: Remove redundant include of "output.h".
19
20 2015-02-12  Jing Yu  <jingyu@google.com>
21
22         * aarch64-reloc.def (TLSLE_MOVW_TPREL_G2, TLSLE_MOVW_TPREL_G1,
23         TLSLE_MOVW_TPREL_G1_NC, TLSLE_MOVW_TPREL_G0, TLSLE_MOVW_TPREL_G0_NC,):
24         New relocation.
25         * aarch64.cc (Target_aarch64::Scan::local): Add cases for new
26         TLSLE_MOVW_* relocations.
27         (Target_aarch64::Scan::global): Likewise.
28         (Target_aarch64::Relocate::relocate): Likewise.
29         (Target_aarch64::Relocate::relocate_tls): Add cases and handlings
30         for new TLSLE_MOVW_* relocations.
31
32 2015-02-11  Will Newton  <will.newton@linaro.org>
33
34         PR gold/13321
35         * arm.cc (Target_arm::make_plt_section): Create an ARM
36         state mapping symbol at the start of the PLT.
37
38 2015-02-09  H.J. Lu  <hongjiu.lu@intel.com>
39
40         * testsuite/Makefile.am (two_file_shared_2_pic_1_test_DEPENDENCIES):
41         Replace two_file_shared_2.so with two_file_shared_1.so.
42         * testsuite/Makefile.in: Regenerated.
43
44 2015-02-09  Alan Modra  <amodra@gmail.com>
45
46         * testsuite/Makefile.am (MOSTLYCLEANFILES): Add libweak_undef_2.a,
47         plugin_test_thin.a and defsym_test.
48         * testsuite/Makefile.in: Regenerate.
49
50 2015-02-04  Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
51
52         * merge.cc (do_add_input_section): Combine loop epilogue into main loop
53         body.
54
55 2015-02-04  Peter Collingbourne  <pcc@google.com>
56
57         * plugin.cc (Pluginobj::get_symbol_resolution_info): Resolve
58         forwarding symbols when computing symbol resolution info for plugins.
59         * plugin.h (Plugin_manager::symtab): New method.
60         (Pluginobj::get_symbol_resolution_info): Add symtab parameter.
61
62 2015-02-03  Cary Coutant  <ccoutant@google.com>
63             Peter Collingbourne  <pcc@google.com>
64
65         PR gold/15660
66         * archive.cc (Thin_archive_object_unlocker): New class.
67         (Archive::include_member): Unlock external members of thin archives.
68         * testsuite/Makefile.am (plugin_test_1): Rename .syms files.
69         (plugin_test_2): Likewise.
70         (plugin_test_3): Likewise.
71         (plugin_test_4): Likewise.
72         (plugin_test_5): Likewise.
73         (plugin_test_6): Likewise.
74         (plugin_test_7): Likewise.
75         (plugin_test_8): Likewise.
76         (plugin_test_9): Likewise.
77         (plugin_test_10): Likewise.
78         (plugin_test_11): New test case.
79         * testsuite/Makefile.in: Regenerate.
80         * testsuite/plugin_test.c (claim_file_hook): Check for parallel .syms
81         file to decide whether to claim file.
82         (all_symbols_read_hook): Likewise.
83         * testsuite/plugin_test_1.sh: Adjust expected output.
84         * testsuite/plugin_test_2.sh: Likewise.
85         * testsuite/plugin_test_3.sh: Likewise.
86         * testsuite/plugin_test_6.sh: Likewise.
87         * testsuite/plugin_test_tls.sh: Likewise.
88         * testsuite/plugin_test_11.sh: New testcase.
89
90 2015-02-03  Cary Coutant  <ccoutant@google.com>
91
92         * descriptors.cc (Descriptors::open): Set artificially-low limit for
93         file descriptors when debugging enabled. Add debug output.
94         (Descriptors::release): Add debug output.
95         (Descriptors::close_some_descriptor): Likewise.
96         (Descriptors::close_all): Likewise.
97         * fileread.cc (File_read::lock): Likewise.
98         (File_read::unlock): Likewise.
99
100 2015-02-02  Cary Coutant  <ccoutant@google.com>
101
102         * x86_64.cc (Target_x86_64::Relocate::relocate_tls): Check for
103         executable output file.
104
105 2015-01-22  Han Shen  <shenhan@google.com>
106
107         * arm.cc (Target_arm::Target_arm): Add initialization for new members.
108         (Target_arm::do_plt_address_for_global): New method.
109         (Target_arm::do_plt_address_for_local): New method.
110         (Target_arm::rel_irelative_section): New method.
111         (Target_arm::make_data_plt): Add more parameters for plt ctor.
112         (Target_arm::do_make_data_plt): Add more parameters for plt ctor.
113         (Target_arm::Scan::symbol_needs_plt_entry): Add ifunc support.
114         (Target_arm::Scan::reloc_needs_plt_for_ifunc): Add ifunc support.
115         (Target_arm::Scan::check_non_pic): Add ifunc support.
116         (Target_arm::Scan::local): Add ifunc support.
117         (Target_arm::Scan::global): Add ifunc support.
118         (Target_arm::make_plt_section): New method.
119         (Target_arm::make_plt_entry): Change to call to make_plt_section.
120         (Target_arm::make_local_ifunc_plt_entry): New method.
121         (Target_arm::got_irelative_): New member.
122         (Target_arm::rel_irelative_): New member.
123         (Target_arm::got_section): Add creation for got_irelative_.
124         (Target_arm::rel_dyn_section): Add creation for rel_irelative_.
125         (Target_arm::Relocate::relocate): Properly set local ifunc address.
126         (Target_arm::do_dynsym_value): Properly set global ifunc address.
127         (Target_arm::scan_reloc_for_stub): Properly set global ifunc address.
128         (Output_data_plt_arm::IRelative_data): New type.
129         (Output_data_plt_arm::Output_data_plt_arm): Add more parameters.
130         (Output_data_plt_arm::add_entry): Add more parameters.
131         (Output_data_plt_arm::add_relocation): New method.
132         (Output_data_plt_arm::add_local_ifunc_entry): New method.
133         (Output_data_plt_arm::rel_irelative): New method.
134         (Output_data_plt_arm::entry_count): Modified.
135         (Output_data_plt_arm::address_for_global): New method.
136         (Output_data_plt_arm::address_for_local): New method.
137 gold/
138         (Output_data_plt_arm::set_final_data_size): Add irelative_count_.
139         (Output_data_plt_arm::insert_irelative_data): New method.
140         (Output_data_plt_arm::irelative_rel_): New member.
141         (Output_data_plt_arm::got_): New member.
142         (Output_data_plt_arm::got_irelative_): New member.
143         (Output_data_plt_arm::irelative_count_): New member.
144         (Output_data_plt_arm::IRelative_data_vec): New typedef.
145         (Output_data_plt_arm::irelative_data_vec_): New member.
146         (Output_data_plt_arm::do_write): Write out irelative entries.
147         (Output_data_plt_arm_standard::Output_data_plt_arm_standard): Add
148         more parameters to ctor.
149         (Output_data_plt_arm_nacl::Output_data_plt_arm_nacl): Add
150         more parameters to ctor.
151         * output.h (Output_data_reloc::add_local_relative): New method.
152         * aarch64.cc (Output_data_plt_aarch64): Fixed typo in comment.
153
154 2015-01-29  Alan Modra  <amodra@gmail.com>
155
156         * powerpc.cc (Target_powerpc::Relocate::relocate): Correct GOT_TLSLD
157         and GOT_TLSGD to LE optimization.
158
159 2015-01-28  Cary Coutant  <ccoutant@google.com>
160
161         * x86_64.cc (Target_x86_64::Scan::global): Allow IE-to-LE optimization
162         for undef TLS symbols.
163         (Target_x86_64::Relocate::relocate_tls): Likewise.
164         (Target_x86_64::Relocate::tls_ie_to_le): Likewise.
165
166 2015-01-25  Cary Coutant  <ccoutant@google.com>
167
168         * output.cc (Output_segment::set_section_addresses): Fix calculation
169         of size of relro segment.
170
171 2015-01-22  Alan Modra  <amodra@gmail.com>
172
173         * powerpc.cc (Target_powerpc::Scan::local <got relocs>): Correct
174         condition for need of ifunc plt entry.
175         (Target_powerpc::Scan::global <got relocs>): Likewise.
176
177 2015-01-14  Sasa Stankovic  <Sasa.Stankovic@imgtec.com>
178
179         * mips.cc (reloc_high): Add r_sym.
180         (Mips_relocate_functions::relhi16): Add r_sym parameter. Pass r_sym to
181         reloc_high constructor.
182         (Mips_relocate_functions::relgot16_local): Likewise.
183         (Mips_relocate_functions::rello16): Add r_sym parameter. Use r_sym and
184         r_type to decide whether LO16 matches HI16.
185         (Target_mips::Relocate::relocate): Pass r_sym to calls to relhi16,
186         rello16 and relgot16_local.
187
188 2015-01-09  Cary Coutant  <ccoutant@google.com>
189
190         * layout.cc (Layout::set_segment_offsets): Don't align start of segment
191         unless alignment is larger than page size.
192
193 2015-01-06  H.J. Lu  <hongjiu.lu@intel.com>
194             Cary Coutant  <ccoutant@google.com>
195
196         PR gold/17729
197         * configure.ac (DEFAULT_TARGET_X86_64): Don't set for x32.
198         (DEFAULT_TARGET_X32): Set for x32.
199         * x86_64.cc (cmp_insn_32): New.
200         (lea_r10_insn_32): Likewise.
201         (lea_r11_insn_32): Likewise.
202         (cmp_insn_64): Likewise.
203         (lea_r10_insn_64): Likewise.
204         (lea_r11_insn_64): Likewise.
205         (Target_x86_64<size>::do_calls_non_split): Handle x32.
206         * testsuite/Makefile.am (check_SCRIPTS): Add split_x32.sh.
207         (check_DATA): Add split_x32 files.
208         (split_x32_[1234n].o): New targets.
209         (split_x32_[124]): New targets.
210         (split_x32_[1234r].stdout): New targets.
211         * testsuite/split_x32.sh: New file.
212         * testsuite/split_x32_1.s: Likewise.
213         * testsuite/split_x32_2.s: Likewise.
214         * testsuite/split_x32_3.s: Likewise.
215         * testsuite/split_x32_4.s: Likewise.
216         * testsuite/split_x32_n.s: Likewise.
217         * configure: Regenerated.
218         * testsuite/Makefile.in: Likewise.
219
220 2015-01-06  H.J. Lu  <hongjiu.lu@intel.com>
221
222         PR gold/17809
223         * x86_64.cc (Target_x86_64<size>::Relocate::tls_ie_to_le): Handle
224         x32.
225
226 2015-01-02  Alan Modra  <amodra@gmail.com>
227
228         * version.cc (print_version): Just print current year.
229         * dwp.cc (print_version): Likewise.
230
231 2015-01-01  Alan Modra  <amodra@gmail.com>
232
233         Update year range in copyright notice of all files.
234
235 2014-12-25  Alan Modra  <amodra@gmail.com>
236
237         * arm.cc (Target_arm::do_adjust_elf_header): Provide namespace on
238         new enums.
239         (Target_arm::merge_object_attributes, ): Likewise.
240
241 2014-12-25  Thomas Preud'homme  <thomas.preudhomme@arm.com>
242
243         * arm.cc (Target_arm::do_adjust_elf_header): Set e_flags in ELF header
244         as hard float only when Tag_ABI_VFP_args is 1, using new enum value
245         AEABI_VFP_args_vfp to check that.
246         (Target_arm::merge_object_attributes): Handle new Tag_ABI_VFP_args
247         value and replace hardcoded values by enum values.
248
249 2014-12-22  Cary Coutant  <ccoutant@google.com>
250
251         * powerpc.cc (Target_powerpc::relocate): Fix overflow check.
252
253 2014-12-20  H.J. Lu  <hongjiu.lu@intel.com>
254
255         PR gold/14608
256         * testsuite/debug_msg.cc (SometimesInlineFunction): Changed
257         to "return i * i * 3;".
258
259 2014-12-16  Cary Coutant  <ccoutant@google.com>
260
261         * mapfile.cc (Mapfile::print_input_section): Print uncompressed sizes.
262         (Mapfile::print_output_data): Use current_data_size() to avoid
263         assert for sections requiring postprocessing; if address is not valid,
264         print 0.
265         (Mapfile::print_output_section): Use current_data_size(); print note
266         that addresses and sizes are before compression.
267
268 2014-12-14  H.J. Lu  <hongjiu.lu@intel.com>
269
270         * aarch64.cc (AArch64_relocate_functions::maybe_apply_stub):
271         Cast current_group_size to unsigned long when reporting error.
272
273 2014-12-10  Jing Yu  <jingyu@google.com>
274
275         * aarch64.cc (Target_aarch64): Add new variable stub_group_size_.
276         (AArch64_relocate_functions::maybe_apply_stub): Add new parameter.
277         Update error message.
278         (Target_aarch64::do_relax): Use absolute value of option
279         stub_group_size. Replace local variable with class member
280         stub_group_size_.
281
282 2014-12-04  Alan Modra  <amodra@gmail.com>
283
284         * powerpc.cc (Target_powerpc::Branch_info::make_stub): Ignore
285         addend of PLTREL24 reloc when not generating a plt stub.  Make
286         max_branch_offset an "Address".
287         (Stub_table::can_reach_stub): Make max_branch_offset an "Address".
288         (Target_powerpc::Relocate::relocate): Likewise.
289
290 2014-12-04  Alan Modra  <amodra@gmail.com>
291
292         PR 17670
293         * symtab.cc (Symbol::set_undefined): Remove assertion.
294         * powerpc.cc (Target_powerpc::symval_for_branch): Don't assert
295         on symbols defined in discarded sections, instead return false.
296         Rearrange params, update all callers.
297         (Target_powerpc::Branch_info::make_stub): Don't make stubs for
298         branches to syms in discarded sections.
299         (Global_symbol_visitor_opd::operator()): Set discarded opd syms
300         undefined and flag as discarded.
301         (Target_powerpc::Relocate::relocate): Localize variable.
302
303 2014-12-03  H.J. Lu  <hongjiu.lu@intel.com>
304
305         PR gold/17675
306         * testsuite/Makefile.am (pie_copyrelocs_test_CXXFLAGS): New.
307         * testsuite/Makefile.in: Regenerated.
308
309 2014-12-03  Alan Modra  <amodra@gmail.com>
310
311         PR 17566
312         * powerpc.cc (Target_powerpc::Scan::local): Use add_local_section
313         when adding dynamic relocations against section symbols.
314
315 2014-12-01  Dimitry Ivanov <dimitry@google.com>
316
317         * layout.cc (Layout::finish_dynamic_section): When '-z global'
318         is specified set DF_1_GLOBAL in DT_FLAGS_1 flags.
319         * options.h (General_options): New -z option (global).
320
321 2014-12-01  Cary Coutant  <ccoutant@google.com>
322
323         PR gold/17578
324         * layout.cc (Layout::layout_gnu_stack): Don't warn when -z execstack
325         is given.
326         (Layout::create_executable_stack_info): Warn when -z noexecstack is
327         given but some inputs require executable stack.
328
329 2014-11-26  Cary Coutant  <ccoutant@google.com>
330
331         * layout.cc (gdb_sections): Keep .debug_gdb_scripts and
332         .debug_str_offsets; strip .debug_gnu_pubnames and
333         .debug_gnu_pubtypes.
334         (lines_only_debug_sections): Strip all four new sections.
335
336 2014-11-26  Jing Yu  <jingyu@google.com>
337
338         * aarch64.cc (Relocate::tls_desc_gd_to_ie): Set ldr target
339         register to be x0 when to relax TLSDESC_LD64_LO12.
340
341 2014-11-26  Alan Modra  <amodra@gmail.com>
342
343         * powerpc.cc (struct Stub_table_owner): New.
344         (Powerpc_relobj): Rename stub_table_ to stub_table_index_, an
345         unsigned int vector.  Update all references.
346         (powerpc_relobj::set_stub_table): Take an unsigned int param
347         rather than a Stub_table.  Update callers.
348         (Powerpc_relobj::clear_stub_table): New function.
349         (Target_powerpc): Add relax_failed_, relax_fail_count_ and
350         stub_group_size_ vars.
351         (Target_powerpc::new_stub_table): Delete.
352         (max_branch_delta): New function, extracted from..
353         (Target_powerpc::Relocate::relocate): ..here..
354         (Target_powerpc::Branch_info::make_stub): ..and here.  Return
355         status on whether stub created successfully.
356         (Stub_control::Stub_control): Add "no_size_errors" param.  Move
357         default sizing to..
358         (Target_powerpc::do_relax): ..here.  Init stub_group_size_ and
359         reduce on relax failure.
360         (Target_powerpc::group_sections): Add "no_size_errors" param.
361         Use stub_group_size_.  Set up group info in a temp vector,
362         before building Stub_table vector.  Account for input sections
363         possibly already converted to relaxed sections.
364         (Stub_table::init): Delete.  Merge into..
365         (Stub_table::Stub_table): ..here.
366         (Stub_table::can_reach_stub): New function.
367         (Stub_table::add_plt_call_entry): Add "from" parameter and
368         return true iff stub could be reached.
369         (Stub_table::add_long_branch_entry): Similarly.  Add "r_type"
370         param too.
371         (Stub_table::clear_stubs): Add "all" param.
372
373 2014-11-26  Alan Modra  <amodra@gmail.com>
374
375         * powerpc.cc (Stub_control::set_output_and_owner): New function.
376         (Target_powerpc::group_sections): Use it.
377
378 2014-11-25  Cary Coutant  <ccoutant@google.com>
379
380         * binary.cc (Binary_to_elf::sized_convert): Add size to _start symbol.
381         (Binary_to_elf::write_symbol): Add st_size parameter.
382         * binary.h (Binary_to_elf::write_symbol): Add st_size parameter.
383
384 2014-11-25  Cary Coutant  <ccoutant@google.com>
385
386         PR gold/17639
387         * object.cc (Sized_relobj_file): Initialize is_deferred_layout_.
388         (Sized_relobj_file::do_layout): Handle deferred sections properly
389         during GC pass 1. Don't add reloc sections to deferred list twice.
390         * object.h (Sized_relobj_file::is_deferred_layout): New function.
391         (Sized_relobj_file::is_deferred_layout_): New data member.
392
393 2014-11-21  H.J. Lu  <hongjiu.lu@intel.com>
394
395         PR gold/17619
396         * x86_64.cc (Output_data_plt_x86_64_standard<size>::do_fill_plt_entry):
397         Check PC-relative offset overflow in PLT entry.
398
399 2014-11-21  Alan Modra  <amodra@gmail.com>
400
401         * powerpc.cc (Target_powerpc::Relocate::relocate): Correct test
402         for undefined weaks.
403
404 2014-11-20  Alan Modra  <amodra@gmail.com>
405
406         * powerpc.cc (Stub_control::Stub_control): Init stub14_group_size_
407         from --stub-group-size parameter divided by 1024.
408         (Powerpc_relocate_functions::rela, rela_ua): Add fieldsize
409         template parameter.  Update all uses.
410         (Target_powerpc::Relocate::relocate): Rename has_plt_value to
411         has_stub_value.  Set for long branches.  Don't report overflow for
412         branch to undefined weak symbols.  Print info message on
413         overflowing branch to stub.
414
415 2014-11-20  Alan Modra  <amodra@gmail.com>
416
417         * powerpc.cc (Target_powerpc::do_relax): Add __go_go to thread_starters.
418
419 2014-11-13  H.J. Lu  <hongjiu.lu@intel.com>
420
421         * x86_64.cc (Target_x86_64<size>::Scan::global): Don't make PLT
422         entry for R_X86_64_GOTPLT64.
423         (Target_x86_64<size>::Relocate::relocate): Update comments for
424         R_X86_64_GOTPLT64.
425
426 2014-11-06  Evgeniy Dushistov  <dushistov@mail.ru>
427
428         * plugin.cc: use lock to searialize calls of Plugin_manager::claim_file
429         * plugin.h: add lock definition
430
431 2014-10-29  Han Shen  <shenhan@google.com>
432             Jing Yu   <jingyu@google.com>
433
434         * aarch64-reloc.def: Add LD_PREL_LO12, ADR_PREL_LO21,
435         TLSLD_ADR_PAGE21, TLSLD_ADD_LO12_NC, TLSLD_MOVW_DTPREL_G1,
436         TLSLD_MOVW_DTPREL_G0_NC. Change property of TLS relocations to
437         Symbol::TLS_REF.
438         * aarch64.cc (Target_aarch64::do_can_check_for_function_pointers): New
439         method.
440         (Target_aarch64::reloc_needs_plt_for_ifunc): New method.
441         (Target_aarch64::tls_ld_to_le): New method.
442         (Target_aarch64::aarch64_info): Enable can_icf_inline_merge_sections
443         for 64bit targets.
444         (Output_data_plt_aarch64::irelative_rel_): New data member.
445         (Output_data_plt_aarch64::add_entry): Add irelative entries to plt.
446         (Output_data_plt_aarch64::add_local_ifunc_entry): New method.
447         (Output_data_plt_aarch64::add_relocation): New method.
448         (Output_data_plt_aarch64::do_write): Add gold_assert on got_irelative
449         offset. Add got_irelative size to got size.
450         (AArch64_relocate_functions): Typedef AArch64_valtype. Replace long
451         type string with the new typename.
452         (AArch64_relocate_functions::update_adr): Replace parameter x with
453         immed.
454         (AArch64_relocate_functions::update_movnz): Correct wrong val mask.
455         (AArch64_relocate_functions::reloc_common): New method.
456         (AArch64_relocate_funcsions::rela_general): Extract common part out
457         into reloc_common method.
458         (AArch64_relocate_functions::rela_general): Likewise.
459         (AArch64_relocate_functions::pcrela_general): Likewise.
460         (AArch64_relocate_functions::adr): New method.
461         (AArch64_relocate_functions::adrp): Calculate immed before calling
462         update_adr.
463         (AArch64_relocate_functions::adrp): Likewise.
464         (AArch64_relocate_functions::movnz): Cast x to SignedW type when
465         comparing x to 0. Calculate immed from ~x when x < 0.
466         (Target_aarch64::optimize_tls_reloc): Add new cases for
467         TLSLD_ADR_PAGE21, TLSLD_ADD_LO12_NC, TLSLD_MOVW_DTPREL_G1,
468         TLSLD_MOVW_DTPREL_G0_NC.
469         (Target_aarch64::possible_function_pointer_reloc): Implement this
470         method.
471         (Target_aarch64::Scan::local_reloc_may_be_function_pointer): Update
472         comment.
473         (Target_aarch64::Scan::local): Add codes to handle STT_GNU_IFUNC
474         symbol. Add cases for TLSLD_ADR_PAGE21, TLSLD_ADD_LO12_NC,
475         TLSLD_MOVW_DTPREL_G1, TLSLD_MOVW_DTPREL_G0_NC.
476         (Target_aarch64::Scan::global): Add codes to handle STT_GNU_IFUNC
477         symbol. Add cases for TLSLD_ADR_PAGE21, TLSLD_ADD_LO12_NC,
478         TLSLD_MOVW_DTPREL_G1, TLSLD_MOVW_DTPREL_G0_NC.
479         (Target_aarch64::make_plt_entry): Call add_entry with two more
480         parameters.
481         (Target_aarch64::make_local_ifunc_plt_entry): New method.
482         (Target_aarch64::Relocate::relocate): Add cases for LD_PREL_LO19,
483         ADR_PREL_LO21, TLSLD_ADR_PAGE21, TLSLD_ADD_LO12_NC,
484         TLSLD_MOVW_DTPREL_G1, TLSLD_MOVW_DTPREL_G0_NC.
485         (Target_aarch64::Relocate::relocate_tls): Add cases for
486         TLSLD_ADR_PAGE21, TLSLD_ADD_LO12_NC, TLSLD_MOVW_DTPREL_G1,
487         TLSLD_MOVW_DTPREL_G0_NC.
488         * testsuite/icf_safe_so_test.cc: Correct test comment.
489         * testsuite/icf_safe_test.sh: Add AArch64 arch.
490
491 2014-10-22  Alan Modra  <amodra@gmail.com>
492
493         * powerpc.cc (do_relax): Add gcc-4.9 libgomp functions to
494         thread_starter.
495
496 2014-10-18  Andreas Schwab  <schwab@linux-m68k.org>
497
498         * configure.tgt (targ_extra_obj) [aarch64*-*]: Define.
499
500 2014-10-17  Cary Coutant  <ccoutant@google.com>
501
502         * aarch64.cc (AArch64_relocate_functions::maybe_apply_stub):
503         Add "typename" keyword.
504
505 2014-10-15  Han Shen  <shenhan@google.com>
506             Jing Yu   <jingyu@google.com>
507
508         Patch for gold aarch64 backend to support relaxation.
509         * aarch64-reloc.def: Change format.
510         * aarch64.cc (class Reloc_stub): New class.
511         (class Stub_table): New class.
512         (class AArch64_relobj): New class.
513         (class AArch64_input_section): New class.
514         (class AArch64_output_section): New class.
515         (Target_aarch64::new_stub_table): New method.
516         (Target_aarch64::new_aarch64_input_section): New method.
517         (Target_aarch64::find_aarch64_input_section): New method.
518         (Target_aarch64::scan_section_for_stubs): New method.
519         (Target_aarch64::scan_reloc_section_for_stubs): New method.
520         (Target_aarch64::relocate_stub): New method.
521         (Target_aarch64::current_target): New method.
522         (Target_aarch64::do_make_elf_object): New method.
523         (Target_aarch64::do_may_relax): New method.
524         (Target_aarch64::do_relax): New method.
525         (Target_aarch64::group_sections): New method.
526         (Target_aarch64::scan_reloc_for_stub): New method.
527         (Target_aarch64::do_make_output_section): New method.
528         (Target_aarch64::stub_tables_): New data member.
529         (Target_aarch64::aarch64_input_section_map_): New data member.
530         (AArch64_relocate_functions::maybe_apply_stub): New method.
531
532 2014-09-30  Cary Coutant  <ccoutant@google.com>
533
534         PR gold/17432
535         * resolve.cc (Symbol_table::resolve): Fix local shadowing error.
536
537 2014-09-30  Kito Cheng  <kito@0xlab.org>
538
539         PR gold/13597
540         * layout.cc (Layout::create_dynamic_symtab): Build gnu-style
541         hash table before sysv-style hash table.
542
543 2014-09-29  Sriraman Tallam  <tmsriram@google.com>
544
545         * options.h (--pic-executable): Add negative to alias to -no-pie.
546
547 2014-09-26  Cary Coutant  <ccoutant@google.com>
548
549         PR gold/16773
550         * object.cc (Sized_relobj_file): Compute value of section symbols
551         for TLS sections the same as TLS symbols.
552
553 2014-09-25  Cary Coutant  <ccoutant@google.com>
554
555         PR gold/17432
556         * resolve.cc (Symbol_table::resolve): Override common placeholder
557         symbols, but adjust sizes.
558         * symtab.cc (Symbol_table::add_from_object): Don't add placeholder
559         symbols to common lists.
560
561 2014-09-24  Alan Modra  <amodra@gmail.com>
562
563         * po/POTFILES.in: Regenerate.
564
565 2014-09-23  Taiju Tsuiki  <tzik@google.com>
566             Cary Coutant  <ccoutant@google.com>
567
568         PR gold/14860
569         * gold.cc (queue_final_tasks): Add Write_sections_task as a blocker
570         on input_sections_blocker.
571         * layout.cc (Write_sections_task::locks): Unblock
572         input_sections_blocker_.
573         * layout.h (Write_sections_task::Write_sections_task): Add
574         input_sections_blocker.
575         * testsuite/Makefile.am (exception_x86_64_bnd_test): Add gcctestdir/ld
576         to DEPENDENCIES.
577         * testsuite/Makefile.in: Regenerate.
578
579 2014-09-18  Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
580
581         * testsuite/Makefile.am (plugin_test_10): New test.
582         * testsuite/Makefile.in: Regenerate
583         * testsuite/plugin_common_test_2.c (c1): Align to 8.
584         * testsuite/plugin_test_10.sh: New file.
585
586 2014-09-17  Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
587
588         * plugin.cc (Sized_pluginobj::do_add_symbols): Ignore isym->size.
589         * resolve.cc (Symbol_table::resolve): Don't override common symbols
590         during the replacement phase.
591
592 2014-09-17  Han Shen  <shenhan@google.com>
593             Jing Yu  <jingyu@google.com>
594
595         * aarch64-reloc.def: Add TLSGD_ADR_PAGE21, TLSGD_ADD_LO12_NC,
596         TLSDESC_ADR_PAGE21, TLSDESC_LD64_LO12, TLSDESC_ADD_LO12, TLSDESC_CALL.
597         * aarch64.cc (Target_aarch64): Add data members
598         got_irelative_, got_tlsdesc_, rela_irelative_, got_mod_index_offset_,
599         tlsdesc_reloc_info_, tls_base_symbol_defined_. Initialize them in
600         constructor.
601         (Target_aarch64::do_reloc_symbol_index): New method.
602         (Target_aarch64::do_reloc_addend): New method.
603         (Target_aarch64::add_tlsdesc_info): New method.
604         (Target_aarch64::do_dynsym_value): New method.
605         (Target_aarch64::do_make_data_plt): Add new parameters: got,
606         got_irelative. Pass them to Output_data_plt_aarch64_standard.
607         (Target_aarch64::make_data_plt): Add new parameters: got,
608         got_irelative. Pass them to do_make_data_plt.
609         (Target_aarch64::Relocate): Add skip_call_tls_get_addr_ variable.
610         (Target_aarch64::Relocate:tls_gd_to_le): New method.
611         (Target_aarch64::Relocate:tls_ie_to_le): New method.
612         (Target_aarch64::Relocate:tls_desc_gd_to_le): New method.
613         (Target_aarch64::Relocate:tls_desc_gd_to_ie): New method.
614         (Target_aarch64::got_tlsdesc_section): New method.
615         (Target_aarch64::make_local_ifunc_plt_entry): New method.
616         (Target_aarch64::define_tls_base_symbol): New method.
617         (Target_aarch64::reserve_tlsdesc_entries): New method.
618         (Target_aarch64::got_mod_index_entry): New method.
619         (Target_aarch64::rela_tlsdesc_section): New method.
620         (Target_aarch64::rela_irelative_section): New method.
621         (Target_aarch64::Tlsdesc_info): New struct.
622         (Target_aarch64::got_section): Create .got.plt space for IRELATIVE
623         relocations and tlsdesc relocations.
624         (Target_aarch64::optimize_tls_reloc): Implement method.
625         (Output_data_plt_aarch64): Add member variables: tlsdesc_rel_, got_,
626         got_irelative_, irelative_count_, tlsdesc_got_offset_. Initialize them
627         in constructor.
628         (Output_data_plt_aarch64::reserve_tlsdesc_entry): New method.
629         (Output_data_plt_aarch64::has_tlsdesc_entry): New method.
630         (Output_data_plt_aarch64::get_tlsdesc_got_offset): New method.
631         (Output_data_plt_aarch64::get_tlsdesc_plt_offset): New method.
632         (Output_data_plt_aarch64::rela_tlsdesc): New method.
633         (Output_data_plt_aarch64::rela_irelative): New method.
634         (Output_data_plt_aarch64::entry_count): Count IRELATIVE relocations.
635         (Output_data_plt_aarch64::first_plt_entry_offset): Add const attribute.
636         (Output_data_plt_aarch64::get_plt_tlsdesc_entry_size): New method.
637         (Output_data_plt_aarch64::fill_tlsdesc_entry): New method.
638         (Output_data_plt_aarch64::do_get_plt_tlsdesc_entry_size): New method.
639         (Output_data_plt_aarch64::do_fill_tlsdesc_entry): New method.
640         (Output_data_plt_aarch64_standard): New member variables:
641         plt_tlsdesc_entry_size, tlsdesc_plt_entry.
642         (Output_data_plt_aarch64_standard::Output_data_plt_aarch64_standard):
643         New parameter: got, got_irelative.
644         (Output_data_plt_aarch64_standard::do_get_plt_entry_size): New method.
645         (Output_data_plt_aarch64_standard::do_fill_tlsdesc_entry): New method.
646         (Output_data_plt_aarch64::do_write): Replace got_address with
647         gotplt_address. Add irelative_count_ to count. Write tlsdesc entry.
648         (AArch64_relocate_functions::update_movnz): New method.
649         (AArch64_relocate_functions): Correct format.
650         (AArch64_relocate_functions::movnz): New method.
651         (Target_aarch64::Scan::local): Correct format. Move r_sym, got to
652         before the switch. Add new cases to switch.
653         Check ie_to_le relaxation on tlsie relocations. Add code handling
654         tlsgd tlsdesc cases.
655         (Target_aarch64::Scan::global): Move arp to front. Do copy_reloc when
656         needed. Add new cases to switch. Insert dynamic RELATIVE relocation
657         when needed. Add code handling tlsgd, tlsie, tlsdesc cases.
658         Call reloc_name_in_error_message to print unsupported reloc.
659         (Target_aarch64::make_plt_section): Pass got_ and got_irelative_ to
660         make_data_plt.
661         (Target_aarch64::do_finalize_sections): Emit relocs to save COPY
662         relocs. Fill in some more dynamic tags.
663         (Target_aarch64::Relocate::relocate): Handle tlsgd, tlsdesc relocs.
664         Skip call tls_get_addr when tlsgd is relaxed.
665         (Target_aarch64::Relocate::relocate_tls): Correct format. Add code
666         handling tlsgd, tlsdesc relocs, and tls gd->le, ie->le, tlsdesc->le,
667         tlsdesc->ie relaxation.
668
669 2014-09-03  Sasa Stankovic  <Sasa.Stankovic@imgtec.com>
670
671         * mips.cc (Target_mips_nacl): New class.
672         (Target_selector_mips_nacl): New class.
673         (target_selector_mips32): Rename from target_selector_mips32be and use
674         Target_selector_mips_nacl instead of Target_selector_mips.
675         (target_selector_mips32el): Rename from target_selector_mips32 and use
676         Target_selector_mips_nacl instead of Target_selector_mips.
677         (target_selector_mips64): Rename from target_selector_mips64be and use
678         Target_selector_mips_nacl instead of Target_selector_mips.
679         (target_selector_mips64el): Rename from target_selector_mips64 and use
680         Target_selector_mips_nacl instead of Target_selector_mips.
681         (Target_mips::mips_info): Add const attribute.
682
683 2014-09-02  Cary Coutant  <ccoutant@google.com>
684
685         * dwp.cc (Sized_relobj_dwo::do_section_name): Add const attribute.
686         * dynobj.h (Sized_dynobj::do_section_name): Likewise.
687         * incremental.cc (Sized_relobj_incr::do_section_name): Likewise.
688         (Sized_incr_dynobj::do_section_name): Likewise.
689         * incremental.h (Sized_relobj_incr::do_section_name): Likewise.
690         (Sized_incr_dynobj::do_section_name): Likewise.
691         * object.h (Object::section_name): Likewise.
692         (Object::do_section_name): Likewise.
693         (Sized_relobj_file::do_section_name): Likewise.
694         * plugin.cc (Sized_pluginobj::do_section_name): Likewise.
695         * plugin.h (Sized_pluginobj::do_section_name): Likewise.
696
697 2014-09-02  Cary Coutant  <ccoutant@google.com>
698
699         PR gold/17005
700         * ehframe.cc (Fde::write): Add output_offset parameter.
701         (Cie::write): Likewise.
702         (Eh_frame::set_final_data_size): Account for offset within output
703         section.
704         (Eh_frame::do_sized_write): Likewise.
705         * ehframe.h (Fde::write): Add output_offset parameter.
706         (Cie::write): Likewise.
707         * output.cc (Output_section::Input_section_sort_entry): Remove
708         section_has_name_; add output_section_name parameter. Use
709         output section name for non-input sections.
710         (Output_section::Input_section_sort_entry::section_has_name): Remove.
711         (Output_section::Input_section_sort_entry::section_has_name_): Remove.
712         (Output_section::Input_section_sort_compare): Remove logic for
713         sections without names.
714         (Output_section::Input_section_sort_init_fini_compare): Likewise.
715         (Output_section::Input_section_sort_section_prefix_special_ordering_compare):
716         Likewise.
717         (Output_section::Input_section_sort_section_name_compare): Likewise.
718
719 2014-08-29 Han Shen <shenhan@google.com>
720            Jing Yu <jingyu@google.com>
721
722         * aarch64-reloc-property.cc
723         (AArch64_reloc_property_table::reloc_name_in_error_message): Fix bug in
724         reference reloc property in the table.
725         * aarch64-reloc.def: Add TLSLE reloc types and fix some errors in
726         3 other entries.
727         * aarch64.cc: (Output_data_got_aarch64::add_static_reloc):
728         2 new overloaded methods.
729         (Output_data_got_aarch64::do_write): Add code to write out
730         static relocs.
731         (class Output_data_got_aarch64::Static_reloc): New class to wrap
732         static relocs.
733         (Output_data_got_aarch64::static_relocs): New vector to
734         hold static relocs.
735         (Target_aarch64::TCB_SIZE): New const static memeber.
736         (Target_aarch64::tcb_size): New method.
737         (Target_aarch64::Relocate::relocate): Add code handling new reloc types.
738         (Target_aarch64::Relocate::relocate_tls): New method.
739         (Target_aarch64::Scan::local): Add code handling new reloc types.
740         (Target_aarch64::Scan::global): Add code handling new reloc types.
741
742 2014-08-13  Sriraman Tallam  <tmsriram@google.com>
743
744         * options.h (-no-pie): Add option.
745
746 2014-08-08  Jing Yu  <jingyu@google.com>
747             Han Shen  <shenhan@google.com>
748
749         * Makefile.am (HFILES): Add aarch64-reloc-property.h.
750         (DEFFILES): add aarch64-reloc.def.
751         (TARGETSOURCES): Add aarch64-reloc-property.cc.
752         (ALL_TARGETOBJS): Add aarch64-reloc-property.$(OBJEXT).
753         * Makefile.in: Regenerate.
754         * aarch64-reloc-property.cc: New file.
755         * aarch64-reloc-property.h: New file.
756         * aarch64-reloc.def: New file.
757         * aarch64.cc: Include aarch64-reloc-property.h. Replace spaces
758         with tab to make the format consistent.
759         (Output_data_got_aarch64::symbol_table_): New method.
760         (Target_aarch64::do_plt_address_for_global): New method.
761         (Target_aarch64::do_plt_address_for_local): New method.
762         (Target_aarch64::do_select_as_default_target): New method.
763         (Target_aarch64::do_make_data_plt): New method.
764         (Target_aarch64::make_data_plt): New method.
765         (Output_data_plt_aarch64::has_irelative_section): New method.
766         (Output_data_plt_aarch64::address_for_global): New method.
767         (Output_data_plt_aarch64::address_for_local): New method.
768         (Output_data_plt_aarch64::irelative_rel_): New parameter.
769         (Output_data_plt_aarch64::add_entry): Implement contents.
770         (Output_data_plt_aarch64::set_final_data_size): Fix typo.
771         (Output_data_plt_aarch64::do_write): Remove useless got_base. Set
772         the got_pov entry to plt0.
773         (Output_data_plt_aarch64_standard::do_fill_first_plt_entry):
774         Implement contents.
775         (Output_data_plt_aarch64_standard::do_fill_plt_entry): Implement.
776         (AArch64_howto): New struct.
777         (aarch64_howto[]): New static const array.
778         (AArch64_relocate_functions): New class.
779         (Target_aarch64::Scan::get_reference_flags): Remove method.
780         (Target_aarch64::Scan::local): Implement to support a few relocations.
781         (Target_aarch64::Scan::global): Implement to support a few relocations.
782         (Target_aarch64::make_plt_section): Implement contents.
783         (Target_aarch64::make_plt_entry): Implement contents.
784         (Target_aarch64::do_finalize_sections): Implement contents.
785         (Target_aarch64::Relocate::relocate): Implement a few relocations.
786         (Target_aarch64::relocate_section): Implement contents.
787
788 2014-08-06  Alan Modra  <amodra@gmail.com>
789
790         * testsuite/defsym_test.sh: Allow ppc64le localentry annotation.
791
792 2014-08-06  Alan Modra  <amodra@gmail.com>
793
794         PR 13227
795         * symtab.cc (Symbol_table::add_from_relobj): Warn on __gnu_lto_slim.
796
797 2014-07-21  Sriraman Tallam  <tmsriram@google.com>
798
799         * object.cc (Relobj::is_section_name_included): Add
800         ".rodata.nptl_version" to not garbage collect this section.
801
802 2014-07-08  Cary Coutant  <ccoutant@google.com>
803
804         * expression.cc (struct Expression::Expression_eval_info): Add
805         new fields type_pointer, vis_pointer, and nonvis_pointer.
806         (Expression::eval_maybe_dot): Add type_pointer, vis_pointer, and
807         nonvis_pointer parameters. Adjust all calls.
808         (Symbol_expression::value): Update type, visibility, and nonvis bits
809         in caller.
810         * script.cc (Symbol_assignment::sized_finalize): Update type,
811         visibility, and remaining st_other bits for new symbol.
812         * script.h: (Expression::eval_maybe_dot): Add type_pointer,
813         vis_pointer, and nonvis_pointer parameters.
814         * symtab.h (Symbol::set_type): New method.
815
816         * testsuite/Makefile.am (defsym_test): New test.
817         * testsuite/Makefile.in: Regenerate.
818         * testsuite/defsym_test.c: New file.
819         * testsuite/defsym_test.sh: New file.
820
821 2014-07-08  Cary Coutant  <ccoutant@google.com>
822
823         PR gold/15639
824         * dynobj.h (Sized_dynobj::base_read_symbols): New method.
825         * dynobj.cc (Sized_dynobj::do_read_symbols): Move body to...
826         (Sized_dynobj::base_read_symbols): ...new method.
827         * object.h (Sized_relobj_file::base_read_symbols): New method.
828         * object.cc (Sized_relobj_file::do_read_symbols): Move body to...
829         (Sized_relobj_file::base_read_symbols): ...new method.
830         * arm.cc (Arm_relobj::do_read_symbols): Call base_read_symbols.
831         * mips.cc: (Mips_relobj::do_read_symbols): Likewise.
832         * powerpc.cc (Powerpc_dynobj::do_read_symbols): Likewise.
833
834 2014-07-04  Alan Modra  <amodra@gmail.com>
835
836         * po/POTFILES.in: Regenerate.
837
838 2014-07-02  Jing Yu  <jingyu@google.com>
839
840         * aarch64.cc: New file
841         * Makefile.am (TARGETSOURCES): Add aarch64.cc
842         (ALL_TARGETOBJS): Add aarch64.$(OBJEXT)
843         * Makefile.in: Regenerate.
844         * configure.tgt: Add entries for aarch64*.
845         * configure.ac:  Likewise.
846         * configure: Likewise.
847
848 2014-06-27  Alan Modra  <amodra@gmail.com>
849
850         * symtab.cc (Symbol::should_add_dynsym_entry): Don't make inline.
851
852 2014-06-24  Cary Coutant  <ccoutant@google.com>
853
854         * dwp.cc (Dwo_file::read): Allow files with no .debug_types
855         sections.
856         (Dwo_file::sized_read_unit_index): Likewise.
857
858 2014-06-23  Sasa Stankovic  <Sasa.Stankovic@imgtec.com>
859
860         * mips.cc: New file.
861         * Makefile.am (TARGETSOURCES): Add mips.cc
862         (ALL_TARGETOBJS): Add mips.$(OBJEXT)
863         * configure.tgt: Add entries for mips*.
864         * configure.ac: Likewise.
865         * Makefile.in: Regenerate.
866         * configure: Likewise.
867
868 2014-06-09  Cary Coutant  <ccoutant@google.com>
869
870         * dwarf_reader.cc (Dwarf_pubnames_table::read_header): Check that
871         unit_length is within section bounds.
872
873 2014-06-09  Cary Coutant  <ccoutant@google.com>
874
875         PR gold/16980
876         * layout.cc (Layout::print_to_mapfile): Print unattached sections in
877         map.
878
879 2014-06-07  Alan Modra  <amodra@gmail.com>
880
881         * powerpc.cc (relocate): Treat field of cmpli insn as a bitfield.
882
883 2014-06-06  Cary Coutant  <ccoutant@google.com>
884
885         * dwarf_reader.h (Dwarf_pubnames_table): Remove output_section_offset_.
886         * dwarf_reader.cc (Dwarf_pubnames_table::read_section): Likewise.
887         (Dwarf_pubnames_table::read_header): Likewise.
888         * layout.cc (gdb_fast_lookup_sections): Add .debug_gnu_pubnames and
889         .debug_gnu_pubtypes.
890
891 2014-06-05  Joel Brobecker  <brobecker@adacore.com>
892
893         * Makefile.am (CONFIG_STATUS_DEPENDENCIES): New.
894         * Makefile.in, configure: Regenerate.
895
896 2014-06-03  Alan Modra  <amodra@gmail.com>
897
898         * powerpc.cc (addis_12_2): Define.
899         (Stub_table::do_write): Support fusion on ELFv2 stubs.
900
901 2014-06-03  Alan Modra  <amodra@gmail.com>
902
903         * testsuite/plugin_test.c (parse_readelf_line): Skip non-visibility
904         st_other output.
905
906 2014-06-02  Alan Modra  <amodra@gmail.com>
907
908         * powerpc.cc (Target_powerpc::local_reloc_may_be_function_pointer):
909         Only ignore relocs on ELFv1.
910         (Target_powerpc::global_reloc_may_be_function_pointer): Likewise.
911
912 2014-05-30  Cary Coutant  <ccoutant@google.com>
913
914         * testsuite/Makefile.am (ehdr_start_test_4): Fix typo in -B option.
915         * testsuite/Makefile.in: Regenerate.
916         * testsuite/ehdr_start_test_4.sh: Look for "U" instead of "w".
917
918 2014-05-27  H.J. Lu  <hongjiu.lu@intel.com>
919
920         PR gold/16945
921         * x86_64.cc (Target_x86_64::Relocate::relocate): Use signed int
922         for got_offset.  Properly get GOT address for R_X86_64_PLTOFF64.
923
924 2014-05-15  Alan Modra  <amodra@gmail.com>
925
926         * powerpc.cc (do_plt_fde_location): Handle zero length .glink.
927         Compare FDE contents with DW_CFA_nop rather than 0.
928
929 2014-05-13  Sriraman Tallam  <tmsriram@google.com>
930
931         * symtab.h (may_need_copy_reloc): Remove check for position independent
932         code.
933         * x86_64.cc (Target_x86_64<size>::Scan::global): Add check for no
934         position independence before pc absolute may_need_copy_reloc call.
935         Add check for executable output befor pc relative may_need_copy_reloc
936         call.
937         * i386.cc: Ditto.
938         * arm.cc: Ditto.
939         * sparc.cc: Ditto.
940         * tilegx.cc: Ditto.
941         * powerpc.cc: Add check for no position independence before
942         may_need_copy_reloc calls.
943         * testsuite/pie_copyrelocs_test.cc: New file.
944         * testsuite/pie_copyrelocs_shared_test.cc: New file.
945         * Makefile.am (pie_copyrelocs_test): New test.
946         * Makefile.in: Regenerate.
947
948 2014-05-08  Martin Liška  <mliska@suse.cz>
949
950         * output.cc (Sized_relobj_file::do_layout): Fix typo in info message.
951
952 2014-05-06  Cary Coutant  <ccoutant@google.com>
953
954         PR gold/16900
955         * i386.cc (Output_data_got_plt_i386): New class.
956         (Output_data_plt_i386::Output_data_plt_i386): Change type of got_plt
957         parameter. Change all callers.
958         (Output_data_plt_i386::layout_): Remove.
959         (Output_data_plt_i386::got_plt_): Change type.
960         (Target_i386::got_plt_): Change type. Change all references.
961         (Target_i386::got_section): Create instance of new class.
962         (Output_data_got_plt_i386::do_write): New function.
963         * x86_64.cc (Output_data_got_plt_x86_64): New class.
964         (Output_data_plt_x86_64::Output_data_plt_x86_64): Change type of got_plt
965         parameter. Change all callers.
966         (Output_data_plt_x86_64::layout_): Remove.
967         (Output_data_plt_x86_64::got_plt_): Change type.
968         (Target_x86_64::got_plt_): Change type. Change all references.
969         (Target_x86_64::got_section): Create instance of new class.
970         (Output_data_got_plt_x86_64::do_write): New function.
971         (Output_data_plt_x86_64::do_write): Don't write reserved words in GOT.
972         (Target_x86_64<size>::init_got_plt_for_update): Create instance of new
973         class.
974
975 2014-05-05  Cary Coutant  <ccoutant@google.com>
976
977         * gdb-index.cc (Gdb_index_info_reader): Don't complain about language
978         if we have pubnames/pubtypes.
979
980 2014-05-02  Cary Coutant  <ccoutant@google.com>
981
982         * defstd.cc (in_segment): Define __ehdr_start here...
983         * layout.cc (Layout::finalize): ...Instead of here.  Set the
984         output segment when known.
985         * resolve.cc (Symbol::override_base_with_special): Remember
986         the original binding.
987         * symtab.cc (Symbol::set_output_segment): New function.
988         (Symbol::set_undefined): New function.
989         * symtab.h (Symbol::is_weak_undefined): Check original undef
990         binding.
991         (Symbol::is_strong_undefined): New function.
992         (Symbol::set_output_segment): New function.
993         (Symbol::set_undefined): New function.
994         * target-reloc.h (is_strong_undefined): Remove.
995         (issue_undefined_symbol_error): Call Symbol::is_weak_undefined.
996         Check for hidden undefs.
997         (relocate_section): Call Symbol::is_strong_undefined.
998
999         * testsuite/Makefile.am (ehdr_start_test_1)
1000         (ehdr_start_test_2, ehdr_start_test_3)
1001         (ehdr_start_test_4, ehdr_start_test_5): New test cases.
1002         * testsuite/Makefile.in: Regenerate.
1003         * testsuite/ehdr_start_def.cc: New source file.
1004         * testsuite/ehdr_start_test.cc: New source file.
1005         * testsuite/ehdr_start_test.t: New linker script.
1006         * testsuite/ehdr_start_test_4.sh: New shell script.
1007
1008 2014-04-23  Cary Coutant  <ccoutant@google.com>
1009
1010         PR gold/16870
1011         * x86_64.cc (Target_x86_64::Relocate::relocate): Add missing break.
1012
1013 2014-04-15  Sasa Stankovic  <Sasa.Stankovic@imgtec.com>
1014
1015         * layout.cc (Layout::include_section): Allow a target to decide
1016         whether to include a section.
1017         * target.h (Target::should_include_section): New function.
1018         (Target::do_should_include_section): New function.
1019
1020 2014-04-15  Sasa Stankovic  <Sasa.Stankovic@imgtec.com>
1021
1022         * copy-relocs.cc (Copy_relocs::Copy_reloc_entry::emit): Remove and
1023         inline into ...
1024         (Copy_relocs::emit): ... here.
1025         * copy-relocs.h (Copy_reloc_entry): Change from class to struct.
1026         (Copy_reloc_entry::make_copy_reloc): Change from private to protected.
1027         (Copy_reloc_entry::entries_): Change from private to protected.
1028
1029 2014-04-02  Sriraman Tallam  <tmsriram@google.com>
1030
1031         * icf.cc (get_section_contents): Replace copies of reloc
1032         vectors with const references.
1033
1034 2014-04-02  Cary Coutant  <ccoutant@google.com>
1035
1036         * configure.ac (HAVE_PUBNAMES): Use C instead of C++.
1037         (HAVE_NO_USE_LINKER_PLUGIN): Check for -fno-use-linker-plugin.
1038         * configure: Regenerate.
1039         * testsuite/Makefile.am (OPT_NO_PLUGINS): New macro for
1040         -fno-use-linker-plugin.
1041         (LINK1, CXXLINK1): Add it to the link command.
1042         * testsuite/Makefile.in: Regenerate.
1043
1044 2014-03-12  Alan Modra  <amodra@gmail.com>
1045
1046         * Makefile.in: Regenerate.
1047
1048 2014-03-10  Sasa Stankovic  <Sasa.Stankovic@imgtec.com>
1049
1050         * symtab.h (Symbol::set_nonvis): New function.
1051
1052 2014-03-10  Sasa Stankovic  <Sasa.Stankovic@imgtec.com>
1053
1054         * symtab.cc (Sized_symbol<32>::init_output_data):
1055         Instantiate the template.
1056         (Sized_symbol<64>::init_output_data): Likewise.
1057
1058 2014-03-10  Sasa Stankovic  <Sasa.Stankovic@imgtec.com>
1059
1060         * symtab.cc (Symbol_table::sized_write_globals): Allow a target to
1061         adjust dynamic symbol value.
1062         * target.h (Target::adjust_dyn_symbol): New function.
1063         (Target::do_adjust_dyn_symbol): New function.
1064
1065 2014-03-10  Sasa Stankovic  <Sasa.Stankovic@imgtec.com>
1066
1067         * output.cc (Output_data_dynamic::Dynamic_entry::write):
1068         Get the value of DYNAMIC_CUSTOM dynamic entry.
1069         * output.h (Output_data_dynamic::add_custom): New function.
1070         (Dynamic_entry::Dynamic_entry): New constructor for DYNAMIC_CUSTOM
1071         dynamic entry.
1072         (enum Dynamic_entry::Classification): Add DYNAMIC_CUSTOM.
1073         * target.h (Target::dynamic_tag_custom_value): New function.
1074         (Target::do_dynamic_tag_custom_value): New function.
1075
1076 2014-03-10  Sasa Stankovic  <Sasa.Stankovic@imgtec.com>
1077
1078         * symtab.cc (Symbol_table::set_dynsym_indexes): Allow a target to set
1079         dynsym indexes.
1080         * target.h (Target::has_custom_set_dynsym_indexes): New function.
1081         (Target::do_has_custom_set_dynsym_indexes): New function.
1082         (Target::set_dynsym_indexes): New function.
1083         (Target::do_set_dynsym_indexes): New function.
1084
1085 2014-03-07  Alan Modra  <amodra@gmail.com>
1086
1087         * powerpc.cc (Powerpc_relocate_functions::Overflow_check): Add
1088         CHECK_UNSIGNED, CHECK_LOW_INSN, CHECK_HIGH_INSN.
1089         (Powerpc_relocate_functions::has_overflow_unsigned): New function.
1090         (Powerpc_relocate_functions::has_overflow_bitfield,
1091         overflowed): Use the above.
1092         (Target_powerpc::Relocate::relocate): Correct overflow checking
1093         for a number of relocations.  Modify overflow test for 16-bit
1094         fields in instructions to signed/unsigned according to whether
1095         the field takes a signed or unsigned value.
1096
1097 2014-03-05  Alan Modra  <amodra@gmail.com>
1098
1099         Update copyright years.
1100
1101 2014-03-05  Alan Modra  <amodra@gmail.com>
1102
1103         * powerpc.cc (Target_powerpc::Scan::local, global): Support
1104         R_PPC64_ADDR64_LOCAL.
1105         (Target_powerpc::Relocate::relocate): Likewise.
1106
1107 2014-03-03  Alan Modra  <amodra@gmail.com>
1108
1109         * dwp.cc (print_version): Update copyright year to current.
1110
1111 2014-02-10  Alan Modra  <amodra@gmail.com>
1112
1113         * po/gold.pot: Regenerate.
1114
1115 2014-02-06  Cary Coutant  <ccoutant@google.com>
1116
1117         Fix problem where -u is ignored when a weak undef is seen.
1118
1119         * archive.cc (Library_base::should_include_member): Reorder
1120         code to check for -u option if a weak undef has already been seen.
1121         * testsuite/Makefile.am (weak_undef_test_2): New test case.
1122         * testsuite/Makefile.in: Regenerate.
1123         * testsuite/weak_undef_file3.cc: New file.
1124         * testsuite/weak_undef_file4.cc: New file.
1125         * testsuite/weak_undef_test_2.cc: New file.
1126
1127 2014-02-05  Cary Coutant  <ccoutant@google.com>
1128
1129         Fix issues with gold undefined symbol diagnostics.
1130
1131         PR binutils/15435
1132         * errors.cc (Errors::undefined_symbol): Move undef vtable symbol
1133         check to here.
1134         * target-reloc.h (is_strong_undefined): New function.
1135         (relocate_section): Move undef vtable symbol check from here.
1136         Check for is_strong_undefined.
1137
1138 2014-02-05  Cary Coutant  <ccoutant@google.com>
1139
1140         Fix problems with the --dynamic-list option.
1141
1142         PR gold/13577
1143         * options.cc (General_options::parse_dynamic_list):
1144         Set have_dynamic_list_.
1145         (General_options::General_options): Initialize have_dynamic_list_.
1146         (General_options::finalize): Turn off -Bsymbolic and
1147         -Bsymbolic-functions if --dynamic-list provided.
1148         * options.h (General_options::have_dynamic_list): New function.
1149         (General_options::have_dynamic_list_): New data member.
1150         * symtab.h (Symbol::is_preemptible): Handle --dynamic-list
1151         correctly.
1152
1153         PR gold/16530
1154         * symtab.cc (Symbol_table::add_from_relobj): If symbol is named
1155         in --dynamic-list, mark it.
1156
1157         * testsuite/Makefile.am (gc_dynamic_list_test.sh): New test case.
1158         (dynamic_list_2): New test case.
1159         * testsuite/Makefile.in: Regenerate.
1160         * testsuite/dynamic_list_2.cc: New file.
1161         * testsuite/dynamic_list_2.t: New file.
1162         * testsuite/dynamic_list_lib1.cc: New file.
1163         * testsuite/dynamic_list_lib2.cc: New file.
1164         * testsuite/gc_dynamic_list_test.c: New file.
1165         * testsuite/gc_dynamic_list_test.sh: New file.
1166         * testsuite/gc_dynamic_list_test.t: New file.
1167
1168 2014-01-28  Cary Coutant  <ccoutant@google.com>
1169
1170         Add .gdb_index version 7 support.
1171
1172         * gold/dwarf_reader.cc: include <utility> (for make_pair).
1173         (Dwarf_abbrev_table::do_read_abbrevs): Check for compressed
1174         debug sections.
1175         (Dwarf_ranges_table::read_ranges_table): Likewise.
1176         (Dwarf_pubnames_table::read_section): Check for GNU-style
1177         sections, and for compressed debug sections.
1178         (Dwarf_pubnames_table::read_header): Compute end address of table.
1179         (Dwarf_pubnames_table::next_name): Return flag_byte.  Check
1180         for end of list by offset, not by offset == 0.
1181         (Dwarf_info_reader::do_read_string_table): Check for compressed
1182         debug sections.
1183         * gold/dwarf_reader.h (Dwarf_pubnames_table::Dwarf_pubnames_table):
1184         Initialize new data members.
1185         (Dwarf_pubnames_table::next_name): return flag_byte.
1186         (Dwarf_pubnames_table::end_of_table_): New data member.
1187         (Dwarf_pubnames_table::is_gnu_style_): New data member.
1188         * gold/gdb-index.cc (gdb_index_version): Update to version 7.
1189         (Gdb_index_info_reader::read_pubtable): Read flag_byte.
1190         (Gdb_index_info_reader::read_pubnames_and_pubtypes): Don't
1191         read skeleton type unit DIEs.
1192         (Gdb_index::add_symbol): Add flag_byte; adjust all callers.
1193         (Gdb_index::do_write): Write flag_byte.
1194         * gold/gdb-index.h (Gdb_index::add_symbol): Add flags parameter.
1195         (Gdb_index::Cu_vector): Store flags along with cu indexes.
1196         * gold/testsuite/gdb_index_test_3.sh: Allow versions 4-7.
1197         * gold/testsuite/gdb_index_test_comm.sh: Likewise.
1198
1199 2014-01-08  H.J. Lu  <hongjiu.lu@intel.com>
1200
1201         * version.cc (print_version): Update copyright year to 2014.
1202
1203 2013-12-19  Dimitry Andric  <dimitry@andric.com>
1204
1205         * stringpool.cc (Stringpool_template::reserve): Add
1206         HAVE_UNORDERED_MAP case.
1207         * stringpool.cc (Stringpool_template::print_stats): Likewise.
1208
1209 2013-12-18  Cary Coutant  <ccoutant@google.com>
1210
1211         * configure.ac: Check for <unordered_set> and <unordered_map>.
1212         * config.in: Regenerate.
1213         * configure: Regenerate.
1214         * system.h: Use <unordered_set> and <unordered_map> if available.
1215
1216 2013-12-10  Roland McGrath  <mcgrathr@google.com>
1217
1218         * Makefile.am (install-exec-local): Prefix $(INSTALL_PROGRAM) uses
1219         with $(INSTALL_PROGRAM_ENV).
1220         * Makefile.in: Regenerate.
1221
1222 2013-11-22  Cary Coutant  <ccoutant@google.com>
1223
1224         * configure.ac: Add check for which library is needed for
1225         dlopen.
1226         * configure: Regenerate.
1227
1228 2013-11-22  Cary Coutant  <ccoutant@google.com>
1229
1230         * testsuite/Makefile.am (exception_x86_64_bnd_test): Use in-tree
1231         assembler.
1232         * testsuite/Makefile.in: Regenerate.
1233
1234 2013-11-17  H.J. Lu  <hongjiu.lu@intel.com>
1235
1236         * x86_64.cc (Target_x86_64<size>::Scan::get_reference_flags):
1237         Handle R_X86_64_PC32_BND and R_X86_64_PLT32_BND just like
1238         R_X86_64_PC32 and R_X86_64_PLT32, respectively.
1239         (Target_x86_64<size>::Scan::local): Likewise.
1240         (Target_x86_64<size>::Scan::global): Likewise.
1241         (Target_x86_64<size>::Relocate::relocate): Likewise.
1242         (Target_x86_64<size>::Relocatable_size_for_reloc::get_size_for_reloc):
1243         Likewise.
1244         (Target_x86_64<size>::Scan::check_non_pic(): Handle
1245         R_X86_64_PC32_BND.
1246
1247         * testsuite/Makefile.am (check_PROGRAMS): Add
1248         exception_x86_64_bnd_test.
1249         (exception_x86_64_bnd_test_SOURCES): New macro.
1250         (exception_x86_64_bnd_test_DEPENDENCIES): Likewise.
1251         (exception_x86_64_bnd_test_LDFLAGS): Likewise.
1252         (exception_x86_64_bnd_test_LDADD): Likewise.
1253         (exception_x86_64_bnd_1.o): New rule.
1254         (exception_x86_64_bnd_2.o): Likewise.
1255         * testsuite/Makefile.in: Regenerated.
1256
1257 2013-11-15  Alan Modra  <amodra@gmail.com>
1258
1259         * powerpc.cc (Target_powerpc::glink_section): Provide non-const
1260         accessor.
1261         (Target_powerpc::Branch_info::make_stub): Make global entry stubs.
1262         Only call ppc64_local_entry_offset for 64-bit.  Restrict
1263         symval_for_branch lookup to ELFv1.
1264         (Stub_table::add_plt_call_entry): Use unsigned int off.
1265         (Output_data_glink::Address, invalid_address): New.
1266         (Output_data_glink::add_eh_frame): Move out of line.  Add
1267         support for ELFv2.
1268         (Output_data_glink::add_global_entry, find_global_entry,
1269         global_entry_address): New functions.
1270         (Output_data_glink::global_entry_stubs_, end_branch_table_,
1271         ge_size): New variables.
1272         (Output_data_glink::set_final_data_size): Add global entry
1273         stub sizing.
1274         (Output_data_glink::do_write): Write global entry stubs.
1275         (Target_powerpc::Scan::reloc_needs_plt_for_ifunc): Add target
1276         parameter.  Return true for ELFv2.  Adjust callers.
1277         (Target_powerpc::Scan::local, global): Restrict opd lookup to
1278         ELFv1.  Similarly for ifunc and dynamic relocation processing
1279         specific to ELFv1.  Recognize that symbols are defined on
1280         their plt entries for ELFv2.
1281         (Target_powerpc::symval_for_branch): Assert if called for
1282         ELFv2 or ppc32.
1283         (Target_powerpc::Relocate::relocate): Use global entry plt
1284         stub for symbol value if such exists on ELFv2.
1285         (Target_powerpc::Relocate::relocate): Don't call
1286         symval_for_branch when ELFv2.  Do adjust for local entry
1287         offset when ELFv2.
1288         (Target_powerpc::do_dynsym_value): Set symbols to global entry
1289         plt stub for ELFv2.
1290         (Target_powerpc::do_plt_address_for_global): Similarly.
1291
1292 2013-11-14  Cary Coutant  <ccoutant@google.com>
1293
1294         Revert patch -- this did not fix the problem, and there is
1295         no race there.
1296
1297         2013-11-14  Cary Coutant  <ccoutant@google.com>
1298
1299             PR gold/14860
1300             * ehframe.cc (Eh_frame_hdr::Eh_frame_hdr): Initialize lock_.
1301             (Ehframe_hdr::set_final_data_size): Allocate a Lock.
1302             * ehframe.h (Eh_frame_hdr::record_fde): Hold the lock while
1303             updating fde_offsets_.
1304             (Eh_frame_hdr::lock_): New data member.
1305
1306 2013-11-14  Cary Coutant  <ccoutant@google.com>
1307
1308         * dwp.cc (Dwo_file_entry): New type.
1309         (File_list): Use Dwo_file_entry.
1310         (Dwo_file::verify): New function.
1311         (Dwo_file::verify_dwo_list): New function.
1312         (Dwo_file::sized_verify_dwo_list): New function.
1313         (Dwo_name_info_reader::visit_compilation_unit): Add dwo_id to file
1314         list.
1315         (Dwp_options): New enum type.
1316         (dwp_options): Add --verify-only.
1317         (usage): Likewise.
1318         (main): Likewise.
1319         * dwp.h (gold_info): Add declaration.
1320
1321 2013-11-14  Cary Coutant  <ccoutant@google.com>
1322
1323         PR gold/14860
1324         * ehframe.cc (Eh_frame_hdr::Eh_frame_hdr): Initialize lock_.
1325         (Ehframe_hdr::set_final_data_size): Allocate a Lock.
1326         * ehframe.h (Eh_frame_hdr::record_fde): Hold the lock while
1327         updating fde_offsets_.
1328         (Eh_frame_hdr::lock_): New data member.
1329
1330 2013-11-06  Cary Coutant  <ccoutant@google.com>
1331
1332         PR gold/15758
1333         * object.cc (Sized_relobj_file::do_layout): Handle .eh_frame sections
1334         before reloc sections.
1335
1336 2013-11-04  Alan Modra  <amodra@gmail.com>
1337
1338         * symtab.h (Symbol::Reference_flags): Add FUNC_DESC_ABI.
1339         (Symbol::needs_dynamic_reloc): Test new flag.
1340         * powerpc.cc (needs_dynamic_reloc, use_plt_offset): Delete.
1341         (Target_powerpc::Scan::get_reference_flags): Add target param.
1342         Return FUNC_DESC_ABI for 64-bit ELFv1.
1343         (Target_powerpc::Branch_info::make_stub): Adjust get_reference_flags
1344         call.
1345         (Target_powerpc::Scan::global): Use Symbol::needs_dynamic_reloc.
1346         (Target_powerpc::Relocate::relocate): Use Symbol::use_plt_offset.
1347
1348 2013-10-31  Cary Coutant  <ccoutant@google.com>
1349
1350         Restore support for dwp v2 DWARF package file format.
1351
1352         * dwarf_reader.cc (Dwarf_info_reader::visit_type_unit): Add
1353         tu_length parameter.  Adjust all callers.
1354         * dwarf_reader.h (Dwarf_info_reader::visit_type_unit): Likewise.
1355         * dwp.cc: Include dwarf.h.
1356         (Section_bounds): New struct type.
1357         (Unit_set): New struct type.
1358         (Dwo_file::Dwo_file): Initialize new data member.
1359         (Dwo_file::read_compunit_index, Dwo_file::read_typeunit_index):
1360         Combine and rename to...
1361         (Dwo_file::read_unit_index): ...this.
1362         (Dwo_file::sized_read_compunit_index)
1363         (Dwo_file::sized_read_typeunit_index): Combine and rename to...
1364         (Dwo_file::sized_read_unit_index): ...this.
1365         (Dwo_file::copy_section): Remove section_name, is_str_offsets
1366         parameters; add section_id parameter.
1367         (Dwo_file::add_cu_set, Dwo_file::add_tu_set): Combine and rename to...
1368         (Dwo_file::add_unit_set): ...this.
1369         (Dwo_file::shndx_map_): Remove.
1370         (Dwo_file::sect_offsets_): New data member.
1371         (Dwp_output_file::Dwp_output_file): Initialize new data members.
1372         (Dwp_output_file::add_section): Rename to...
1373         (Dwp_output_file::add_contribution): ...this.
1374         (Dwp_output_file::add_cu_set): Combine parameters into a struct.
1375         (Dwp_output_file::add_tu_set): Likewise.
1376         (Dwp_output_file::Contribution): New type.
1377         (Dwp_output_file::Section::contributions): New data member.
1378         (Dwp_output_file::Cu_or_tu_set): Remove.
1379         (Dwp_output_file::Section::Section): New ctor.
1380         (Dwp_output_file::Dwp_index::Shndx_pool): Remove.
1381         (Dwp_output_file::Dwp_index::Section_table): New type.
1382         (Dwp_output_file::Dwp_index::Dwp_index): Initialize new data members.
1383         (Dwp_output_file::Dwp_index::enter_set): Change type of "set"
1384         parameter.
1385         (Dwp_output_file::Dwp_index::shndx_pool): Remove.
1386         (Dwp_output_file::Dwp_index::shndx_pool_end): Remove.
1387         (Dwp_output_file::Dwp_index::section_table): New member function.
1388         (Dwp_output_file::Dwp_index::section_table_end): New member function.
1389         (Dwp_output_file::Dwp_index::shndx_pool_size): Remove.
1390         (Dwp_output_file::Dwp_index::section_table_rows): New member function.
1391         (Dwp_output_file::Dwp_index::section_table_cols): New member function.
1392         (Dwp_output_file::Dwp_index::shndx_pool_): Remove.
1393         (Dwp_output_file::Dwp_index::section_table_): New data member.
1394         (Dwp_output_file::Dwp_index::section_mask_): New data member.
1395         (Dwp_output_file::add_output_section): New member function.
1396         (Dwp_output_file::write_new_section): New member function.
1397         (Dwp_output_file::write_contributions): New member function.
1398         (Dwp_output_file::section_id_map_): New data member.
1399         (class Dwo_id_info_reader): Remove.
1400         (class Unit_reader): New class.
1401         (get_dwarf_section_name): New function.
1402         (Dwo_file::read_executable): Adjust initializations of class data.
1403         (Dwo_file::read): Add support for v2 package file format.
1404         (Dwo_file::read_unit_index): Likewise.
1405         (Dwo_file::sized_read_unit_index): Likewise.
1406         (Dwo_file::copy_section): Likewise.
1407         (Dwo_file::add_unit_set): Likewise.
1408         (Dwp_output_file::add_output_section): Likewise.
1409         (Dwp_output_file::add_contribution): Likewise.
1410         (Dwp_output_file::Dwp_index::find_or_add): Use row index to check
1411         for empty slot.
1412         (Dwp_output_file::Dwp_index::enter_set): Add support for v2 package
1413         file format.
1414         (Dwp_output_file::Dwp_index::grow): Use row index to check for empty
1415         slot.
1416         (Dwp_output_file::initialize): Remove unused function.
1417         (Dwp_output_file::finalize): Add support for v2 package file format.
1418         (Dwp_output_file::write_index): Likewise.
1419         * gdb-index.cc (Gdb_index_info_reader::visit_type_unit): Adjust
1420         function prototype.
1421
1422 2013-10-31  Cary Coutant  <ccoutant@google.com>
1423
1424         * configure.ac: Fix check for -fmerge-constants.
1425         * configure.ac: Regenerate.
1426
1427 2013-10-30  Roland McGrath  <mcgrathr@google.com>
1428
1429         * x86_64.cc (Output_data_plt_x86_64_nacl::first_plt_entry):
1430         Correct 9-byte nop sequence to match what the assembler generates.
1431
1432 2013-10-30  Alan Modra  <amodra@gmail.com>
1433
1434         * powerpc.cc (Powerpc_relobj::abiversion, set_abiversion,
1435         ppc64_local_entry_offset, ppc64_local_entry_offset,
1436         do_read_symbols): New functions.
1437         (Powerpc_relobj::e_flags_, st_other_): New vars.
1438         (Powerpc_relobj::Powerpc_relobj): Call set_abiversion.
1439         (Powerpc_dynobj::abiversion, set_abiversion): New functions.
1440         (Powerpc_relobj::e_flags_): New var.
1441         (Target_powerpc::first_plt_entry_offset, plt_entry_size): Inline
1442         and adjust for ELFv2.
1443         (Target_powerpc::abiversion, set_abiversion, stk_toc): New functions.
1444         (Powerpc_relobj::do_find_special_sections): Check no .opd in ELFv2.
1445         (Powerpc_dynobj::do_find_special_sections): Likewise.
1446         (Target_powerpc::do_define_standard_symbols): Define ".TOC.".
1447         (Target_powerpc::Branch_info::make_stub): Adjust stub destination
1448         to ELFv2 local entry.
1449         (Target_powerpc::do_relax): No thread safe barriers needed for
1450         ELFv2.
1451         (Output_data_plt_powerpc::initial_plt_entry_size_,
1452         plt_entry_size): Delete.  Replace all uses with
1453         first_plt_entry_offset() and plt_entry_size().
1454         (Output_data_plt_powerpc::Output_data_plt_powerpc): Remove
1455         reserved_size parm.  Update callers.
1456         (Output_data_plt_powerpc::entry_count): Update.
1457         (Output_data_plt_powerpc::first_plt_entry_offset): Make private
1458         and use Target_powerpc::first_plt_entry_offset().
1459         (Output_data_plt_powerpc::get_plt_entry_size): Similarly and
1460         rename to plt_entry_size.
1461         (Output_data_plt_powerpc::add_ifunc_entry,
1462         add_local_ifunc_entry): Adjust reloc for ELFv2.
1463         (glink_eh_frame_fde_64): Rename to glink_eh_frame_fde_64v1.
1464         (glink_eh_frame_fde_64v2): New.
1465         (Stub_table::plt_call_size): Support ELFv2 sizing.
1466         (Output_data_glink::add_eh_frame): Use the new FDE.
1467         (Output_data_glink::set_final_data_size): Adjust for ELFv2 glink.
1468         (Stub_table::do_write): Write ELFv2 stubs and glink.
1469         (Target_powerpc::Relocate::relocate): Replaces nop after call
1470         with ld 2,24(1) and adjust local offset destination for ELFv2.
1471
1472 2013-10-30  Alan Modra  <amodra@gmail.com>
1473
1474         * powerpc.cc (Target_powerpc::Scan::check_non_pic): Handle new relocs.
1475         (Target_powerpc::Scan::global, local): Likewise.
1476         (Target_powerpc::Relocate::relocate): Likewise.  Check for overflow
1477         on all ppc64 @h and @ha relocs.
1478
1479 2013-10-14  Alan Modra  <amodra@gmail.com>
1480
1481         * output.h (Output_data_got::add_constant): Tidy.
1482         (Output_data_got::add_constant_pair): New function.
1483         * powerpc.cc (Output_data_got_powerpc): Override all Output_data_got
1484         methods used so as to first call reserve_ent().
1485
1486 2013-10-11  Roland McGrath  <mcgrathr@google.com>
1487
1488         * powerpc.cc (Output_data_got_powerpc): Remove unused methods
1489         add_got_entry and add_got_entry_pair.
1490
1491         * configure.ac (TLS_GNU2_DIALECT): Use -Werror in test.
1492         (HAVE_PUBNAMES): Likewise.
1493         * configure: Regenerate.
1494
1495         * testsuite/Makefile.am: Replace '-T foo' with '-Wl,-T,foo' throughout.
1496         * testsuite/Makefile.in: Regenerate.
1497
1498         * target.h (Target::adjust_elf_header, Target::do_adjust_elf_header):
1499         Remove const from declaration.
1500         * target.cc (Sized_target::do_adjust_elf_header): Update definition.
1501         * sparc.cc (Target_sparc::do_adjust_elf_header): Likewise.
1502         * output.h (Output_file_header): Remove const from member target_
1503         and corresponding constructor argument.
1504         * output.cc (Output_file_header::Output_file_header): Update prototype.
1505         (Output_file_header::do_sized_write): Use this->target_ in place
1506         of parameters()->target().
1507
1508         * testsuite/undef_symbol.cc (Foo::get_a): New method.
1509
1510         * configure.ac (MERGE_CONSTANTS_FLAG): New check.
1511         * configure: Regenerate.
1512         * Makefile.in: Regenerate.
1513         * testsuite/merge_string_literals_1.c: Renamed to have .cc suffix.
1514         * testsuite/merge_string_literals_2.c: Likewise.
1515         * testsuite/Makefile.am
1516         (merge_string_literals_1.o, merge_string_literals_2.o): Update deps.
1517         (AM_CFLAGS, AM_CXXFLAGS): Use $(MERGE_CONSTANTS_FLAG) in place of
1518         literal -fmerge-constants.
1519         * testsuite/Makefile.in: Regenerate.
1520
1521         * i386.cc (Target_i386): Remove unused member dynbss_.
1522         * arm.cc (Target_arm): Likewise.
1523         * powerpc.cc (Target_powerpc): Likewise.
1524         * sparc.cc (Target_sparc): Likewise.
1525         * tilegx.cc (Target_tilegx): Likewise.
1526         * x86_64.cc (Target_x86_64): Likewise.
1527         * dwarf_reader.h (Dwarf_info_reader): Remove unused members
1528         type_signature_, type_offset_.
1529         * plugin.h (Plugin_hook): Remove unused member layout_.
1530         * readsyms.h (Add_symbols): Remove unused members dirpath_, dirindex_,
1531         mapfile_.
1532         (Read_member): Remove unused members input_objects_, symtab_,
1533         mapfile_, layout_.
1534         (Check_library): Remove unused member symtab_.
1535         * archive.h (Lib_group): Remove unused member lib_.
1536         * archive.cc (Lib_group::Lib_group): Update initializer.
1537         * incremental.h (Incremental_binary): Remove unused member target_.
1538         (Incremental_script_entry): Removed unused member script_.
1539         * layout.h (Write_symbols_task): Remove unused member input_objects_.
1540         * icf.h (Icf): Remove unused member num_tracked_relocs.
1541
1542         * gold-threads.h (Once): Conditionalize member was_run_lock_ on
1543         [ENABLE_THREADS && __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4], matching
1544         its only use.
1545         * gold-threads.cc (Once::Once): Likewise conditionalize initializer.
1546
1547         * archive.h: Use struct rather than class for forward declaration
1548         of Read_symbols_data.
1549
1550 2013-10-07  Cary Coutant  <ccoutant@google.com>
1551
1552         PR gold/16010
1553         * testsuite/Makefile.am (icf_test): Fix dependencies.
1554         (icf_safe_test): Likewise.
1555         (icf_safe_so_test): Likewise.
1556         (large_symbol_alignment): Add empty _LDADD rule.
1557         * testsuite/Makefile.in: Regenerate.
1558
1559 2013-09-03  Pavel Chupin  <pavel.v.chupin@intel.com>
1560
1561         PR gold/15927
1562         * x86_64.cc (Target_x86_64<size>::Scan::global): Use relative
1563         relocation for R_X86_64_32 on x32.
1564
1565 2013-08-27  Roland McGrath  <mcgrathr@google.com>
1566
1567         * output.cc (Output_segment::set_section_addresses): Take new
1568         Target* argument.  If target->isolate_execinstr() and the segment
1569         is executable and starts at a target->abi_pagesize() boundary,
1570         pad its end out to a target->abi_pagesize() boundary with code fill.
1571         * output.h (Output_segment::set_section_addresses): Update decl.
1572         * layout.h (Layout::check_output_data_for_reset_values): Take new
1573         argument RELAX_OUTPUTS.
1574         (Layout): New member relax_output_list_.
1575         (Layout::add_relax_output): New method.
1576         * layout.cc (Layout::Layout): Update constructor.
1577         (Layout::reset_relax_output): New method.
1578         (Layout::clean_up_after_relaxation): Call it.
1579         (Layout::prepare_for_relaxation): Update caller.
1580         (Layout::set_segment_offsets): Update callers of set_section_addresses.
1581         Call reset_relax_output before re-processing segments for
1582         isolate_execinstr case.
1583         (Layout::write_data): Handle relax_output_list_.
1584         (Layout::Relaxation_debug_check::check_output_data_for_reset_values):
1585         Take new argument RELAX_OUTPUTS.  Assert it's an empty collection.
1586
1587 2013-08-23  Yuri Chornoivan  <yurchor@ukr.net>
1588
1589         PR binutils/15834
1590         * object.h: Fix typos.
1591
1592 2013-08-16  Roland McGrath  <mcgrathr@google.com>
1593
1594         * i386.cc (Target_i386_nacl::do_code_fill): New virtual function.
1595         * x86_64.cc (Target_x86_64_nacl::do_code_fill): New virtual function.
1596
1597 2013-08-07  Cary Coutant  <ccoutant@google.com>
1598
1599         Revert support for v2 DWP files:
1600
1601         2013-03-01  Cary Coutant  <ccoutant@google.com>
1602
1603             Add dwp support for v2 DWARF package file format.
1604             * dwarf_reader.cc (Dwarf_info_reader::visit_type_unit): Add
1605             tu_length parameter.  Adjust all callers.
1606             * dwarf_reader.h (Dwarf_info_reader::visit_type_unit): Likewise.
1607             * dwp.cc: Include dwarf.h.
1608             (Section_bounds): New struct type.
1609             (Unit_set): New struct type.
1610             (Dwo_file::Dwo_file): Initialize new data member.
1611             (Dwo_file::read_compunit_index, Dwo_file::read_typeunit_index):
1612             Combine and rename to...
1613             (Dwo_file::read_unit_index): ...this.
1614             (Dwo_file::sized_read_compunit_index)
1615             (Dwo_file::sized_read_typeunit_index): Combine and rename to...
1616             (Dwo_file::sized_read_unit_index): ...this.
1617             (Dwo_file::copy_section): Remove section_name, is_str_offsets
1618             parameters; add section_id parameter.
1619             (Dwo_file::add_cu_set, Dwo_file::add_tu_set): Combine and rename to...
1620             (Dwo_file::add_unit_set): ...this.
1621             (Dwo_file::shndx_map_): Remove.
1622             (Dwo_file::sect_offsets_): New data member.
1623             (Dwp_output_file::Dwp_output_file): Initialize new data members.
1624             (Dwp_output_file::add_section): Rename to...
1625             (Dwp_output_file::add_contribution): ...this.
1626             (Dwp_output_file::add_cu_set): Combine parameters into a struct.
1627             (Dwp_output_file::add_tu_set): Likewise.
1628             (Dwp_output_file::Contribution): New type.
1629             (Dwp_output_file::Section::contributions): New data member.
1630             (Dwp_output_file::Cu_or_tu_set): Remove.
1631             (Dwp_output_file::Section::Section): New ctor.
1632             (Dwp_output_file::Dwp_index::Shndx_pool): Remove.
1633             (Dwp_output_file::Dwp_index::Section_table): New type.
1634             (Dwp_output_file::Dwp_index::Dwp_index): Initialize new data members.
1635             (Dwp_output_file::Dwp_index::enter_set): Change type of "set"
1636             parameter.
1637             (Dwp_output_file::Dwp_index::shndx_pool): Remove.
1638             (Dwp_output_file::Dwp_index::shndx_pool_end): Remove.
1639             (Dwp_output_file::Dwp_index::section_table): New member function.
1640             (Dwp_output_file::Dwp_index::section_table_end): New member function.
1641             (Dwp_output_file::Dwp_index::shndx_pool_size): Remove.
1642             (Dwp_output_file::Dwp_index::section_table_rows): New member function.
1643             (Dwp_output_file::Dwp_index::section_table_cols): New member function.
1644             (Dwp_output_file::Dwp_index::shndx_pool_): Remove.
1645             (Dwp_output_file::Dwp_index::section_table_): New data member.
1646             (Dwp_output_file::Dwp_index::section_mask_): New data member.
1647             (Dwp_output_file::add_output_section): New member function.
1648             (Dwp_output_file::write_new_section): New member function.
1649             (Dwp_output_file::write_contributions): New member function.
1650             (Dwp_output_file::section_id_map_): New data member.
1651             (class Dwo_id_info_reader): Remove.
1652             (class Unit_reader): New class.
1653             (get_dwarf_section_name): New function.
1654             (Dwo_file::read_executable): Adjust initializations of class data.
1655             (Dwo_file::read): Add support for v2 package file format.
1656             (Dwo_file::read_unit_index): Likewise.
1657             (Dwo_file::sized_read_unit_index): Likewise.
1658             (Dwo_file::copy_section): Likewise.
1659             (Dwo_file::add_unit_set): Likewise.
1660             (Dwp_output_file::add_output_section): Likewise.
1661             (Dwp_output_file::add_contribution): Likewise.
1662             (Dwp_output_file::Dwp_index::find_or_add): Use row index to check
1663             for empty slot.
1664             (Dwp_output_file::Dwp_index::enter_set): Add support for v2 package
1665             file format.
1666             (Dwp_output_file::Dwp_index::grow): Use row index to check for empty
1667             slot.
1668             (Dwp_output_file::initialize): Remove unused function.
1669             (Dwp_output_file::finalize): Add support for v2 package file format.
1670             (Dwp_output_file::write_index): Likewise.
1671             * gdb-index.cc (Gdb_index_info_reader::visit_type_unit): Adjust
1672             function prototype.
1673
1674 2013-07-31  Cary Coutant  <ccoutant@google.com>
1675
1676         * object.cc (Sized_relobj::do_output_section_address): New function.
1677         (Sized_relobj): Instantiate explicitly.
1678         * object.h (Object::output_section_address): New function.
1679         (Object::do_output_section_address): New function.
1680         (Sized_relobj::do_output_section_address): New function.
1681         * powerpc.cc (Target_powerpc::symval_for_branch): Use it.
1682
1683 2013-07-30  Cary Coutant  <ccoutant@google.com>
1684             Sasa Stankovic  <Sasa.Stankovic@imgtec.com>
1685
1686         * parameters.cc (Parameters::entry): Return target-specific entry
1687         symbol name.
1688         * target.h (Target::entry_symbol_name): New function.
1689         (Target_info::entry_symbol_name): New data member.
1690
1691         * arm.cc (Target_arm::arm_info): Add entry_symbol_name.
1692         * i386.cc (Target_i386::i386_info): Likewise.
1693         (Target_i386_nacl::i386_nacl_info): Likewise.
1694         * sparc.cc (Target_sparc::sparc_info): Likewise.
1695         * tilegx.cc (Target_tilegx::tilegx_info): Likewise.
1696         * x86_64.cc: (Target_x86_64::x86_64_info) Likewise.
1697         (Target_x86_64_nacl::x86_64_nacl_info) Likewise.
1698         * testsuite/testfile.cc (Target_test::test_target_info): Likewise.
1699
1700 2013-07-22  Sterling Augustine  <saugustine@google.com>
1701
1702         * dwarf_reader.cc (Dwarf_pubnames_table::read_section):
1703         Convert parameter shndx to local variable. Add parameters symtab
1704         and symtab_size.  Scan over section names.  Find relocation
1705         section corresponding to current section.  Create and initialize
1706         reloc_mapper_ and reloc_type_.
1707         (Dwarf_pubnames_table::read_header):  Add assertion.  Change
1708         unit_length to off_t.  Initialize member unit_length_.  Fill in field
1709         cu_offset_.
1710         * dwarf_reader.h (Dwarf_pubnames_table::Dwarf_pubnames_table):
1711         Initialize new fields unit_length_ and cu_offset_.
1712         (Dwarf_pubnames_table::read_section): Update prototype.
1713         (Dwarf_pubnames_table::cu_offset): New member function.
1714         (Dwarf_pubnames_table::subsection_size): Likewise.
1715         (Dwarf_pubnames_table::cu_offset_, Dwarf_pubnames_table::unit_length):
1716         New fields.
1717         (Dwarf_info_reader::symtab, Dwarf_info_reader::symtab_size): Make
1718         member functions public.
1719         * gdb_index.cc (Gdb_index_info_reader::read_pubnames_and_pubtypes):
1720         Update comment.  Rework logic.  Move repeated parts to...
1721         (Gdb_index_info_reader::read_pubtable): ...here. New function.
1722         (Gdb_index::Gdb_index): Initialize new fields, pubnames_table_,
1723         pubtypes_table_, and stmt_list_offset.
1724         (Gdb_index::map_pubtable_to_dies, Gdb_index::find_pubname_offset,
1725         Gdb_index::find_pubtype_offset,
1726         Gdb_index::map_pubnames_and_types_to_dies): Define new functions.
1727         (Gdb_index::pubnames_read): Update prototype and rework logic.
1728         * gdb_index.h (Gdb_index_info_reader, Dwarf_pubnames_table):
1729         Forward declare.
1730         (Gdb_index::map_pubtable_to_dies, Gdb_index::find_pubname_offset,
1731         Gdb_index::find_pubtype_offset, Gdb_index::pubnames_table)
1732         Gdb_index::pubtypes_table, Gdb_index::map_pubnames_and_types_to_dies,
1733         Gdb_index::map_pubtable_to_dies):
1734         Declare functions.
1735         (Gdb_index::pubnames_read): Update declaration.
1736         (Gdb_index::Pubname_offset_map): New type.
1737         (Gdb_index::cu_pubname_map_, Gdb_index::cu_pubtype_map_,
1738         Gdb_index::pubnames_table_, Gdb_index::pubtypes_table_,
1739         Gdb_index::stmt_list_offset): Declare.
1740         (Gdb_index::pubnames_shndx_, Gdb_index::pubnames_offet_,
1741         Gdb_index::pubtypes_object_, Gdb_index::pubtypes_shndx_)
1742         Gdb_index::pubtypes_offset_): Remove.
1743
1744 2013-07-19  Roland McGrath  <mcgrathr@google.com>
1745
1746         * options.h (General_options): Add -Trodata-segment option.
1747         * parameters.cc (Parameters::check_rodata_segment): New function.
1748         (Parameters::set_target_once): Call it.
1749         * parameters.h (Parameters): Declare it (private member function).
1750         * layout.cc (load_seg_unusable_for_headers): New function, broken
1751         out of Layout::relaxation_loop_body.  If TARGET->isolate_execinstr()
1752         then validate rodata segment rather than text segment.
1753         (relaxation_loop_body): Call that.
1754         (is_text_segment): New function.  Don't admit a non-executable
1755         segment if TARGET->isolate_execinstr().
1756         (set_segment_offsets): Call it.  Honor -Trodata-segment option.
1757
1758 2013-07-15  Shawn Landden  <shawnlandden@gmail.com>
1759
1760         PR gold/15070
1761         * fileread.h (File_read::get_view): Clarify comment about ALIGNED.
1762         * nacl.h (Sniff_file::View::View): Request aligned view.
1763
1764 2013-07-11  Cary Coutant  <ccoutant@google.com>
1765
1766         * powerpc.cc (Target_powerpc::write_branch_lookup_table): Use
1767         correct BRLT entry size.
1768
1769 2013-07-03  Alan Modra  <amodra@gmail.com>
1770
1771         * powerpc.cc (Target_powerpc::Relocate::relocate): Update self-call
1772         comment.
1773
1774 2013-07-01  Cary Coutant  <ccoutant@google.com>
1775
1776         * dwarf_reader.cc (Dwarf_ranges_table::read_ranges_table): Save
1777         reloc_type_.
1778         (Dwarf_ranges_table::read_range_list): Call lookup_reloc.
1779         (Dwarf_ranges_table::lookup_reloc): New function.
1780         * dwarf_reader.h (Dwarf_ranges_table::Dwarf_ranges_table): Initialize
1781         reloc_type_.
1782         (Dwarf_ranges_table::lookup_reloc): New function.
1783         (Dwarf_ranges_table::reloc_type_): New data member.
1784
1785 2013-06-27  Jing Yu  <jingyu@google.com>
1786
1787         PR gold/15662
1788         * powerpc.cc (Output_data_brlt_powerpc::reset_brlt_sizes): New
1789         function.
1790         (Output_data_brlt_powerpc::finalize_brlt_sizes): New function.
1791         (Target_powerpc::do_relax): Call the above.
1792
1793 2013-06-27  Cary Coutant  <ccoutant@google.com>
1794
1795         * powerpc.cc (Target_powerpc::symval_for_branch): Don't assert
1796         on garbage collected .opd section.
1797
1798 2013-06-27  Alan Modra  <amodra@gmail.com>
1799
1800         * powerpc.cc (Target_powerpc::do_gc_add_reference): Test dst_shndx
1801         is non-zero.
1802         (Target_powerpc::do_gc_mark_symbols): Likewise for sym->shndx().
1803         (Target_powerpc::do_function_location): Likewise for loc->shndx.
1804
1805 2013-06-14  Cary Coutant  <ccoutant@google.com>
1806
1807         * resolve.cc (Symbol::override_base): Don't override st_type
1808         from plugin placeholder symbols.
1809         (Symbol_table::resolve): Likewise.
1810         (Symbol_table::should_override): Don't complain about TLS mismatch
1811         if the TO symbol is a plugin placeholder.
1812         * testsuite/Makefile.am (plugin_test_tls): New test.
1813         * testsuite/Makefile.in: Regenerate.
1814         * testsuite/plugin_test_tls.sh: New test script.
1815         * testsuite/two_file_test_2_tls.cc: New test source.
1816         * testsuite/two_file_test_tls.cc: New test source.
1817
1818 2013-06-05  Alexander Ivchenko  <alexander.ivchenko@intel.com>
1819
1820         * layout.cc (Layout::set_segment_offsets): Taking care of the case when
1821         the maximum segment alignment is larger than the page size.
1822         * testsuite/Makefile.am (large_symbol_alignment): Test that Gold
1823         correctly aligns the symbols with large alignemnt.
1824         * testsuite/Makefile.in: Regenerate.
1825         * testsuite/large_symbol_alignment.cc: New file.
1826
1827 2013-05-30  Alexander Ivchenko  <alexander.ivchenko@intel.com>
1828             Sriraman Tallam  <tmsriram@google.com>
1829
1830         * options.h (sort_section): New option.
1831         * output.h (Input_section_sort_section_prefix_special_ordering_compare):
1832         Rename from Input_section_sort_section_name_special_ordering_compare.
1833         (Input_section_sort_section_name_compare): New struct.
1834         * output.cc (Output_section::Input_section_sort_section_name_compare::
1835         operator()): New function.
1836         (Output_section::sort_attached_input_sections): Use new sort function
1837         for .text if --sort-section=name is specified.
1838         * layout.cc (Layout::make_output_section):
1839         Add sorting by name when --sort-section=name is specified.
1840         * testsuite/Makefile.am (text_section_grouping): Test option
1841         --sort-section=name.
1842         * testsuite/Makefile.in: Regenerate.
1843         * testsuite/section_sorting_name.cc: New file.
1844         * testsuite/section_sorting_name.sh: New file.
1845
1846 2013-05-21  Cary Coutant  <ccoutant@google.com>
1847
1848         * symtab.h (Symbol::is_cxx_vtable): New function.
1849         * target-reloc.h (relocate_section): Check for vtable symbol.
1850         * testsuite/Makefile.am (missing_key_func.sh): New test case.
1851         * testsuite/Makefile.in: Regenerate.
1852         * testsuite/missing_key_func.cc: New test source.
1853         * testsuite/missing_key_func.sh: New test script.
1854
1855 2013-05-21  Cary Coutant  <ccoutant@google.com>
1856
1857         * object.cc (Sized_relobj_file::get_symbol_location_info): Set
1858         type of enclosing symbol.
1859         (Relocate_info::location): Check symbol type when describing symbol.
1860         * object.h (Symbol_location_info): Remove unused line_number;
1861         add enclosing_symbol_type.
1862         * testsuite/debug_msg.sh: Adjust expected output.
1863
1864 2013-05-13  Cary Coutant  <ccoutant@google.com>
1865
1866         * configure.ac: Export DEFAULT_TARGET.
1867         * configure: Regenerate.
1868         * Makefile.in: Regenerate.
1869         * testsuite/Makefile.am: Add .EXPORT_ALL_VARIABLES.
1870         * testsuite/Makefile.in: Regenerate.
1871         * testsuite/debug_msg.sh: Delete duplicate tests.
1872         Don't check undef_int error message match for powerpc where the
1873         source file and line number aren't available.
1874
1875 2013-05-10  Roland McGrath  <mcgrathr@google.com>
1876
1877         * options.h (General_options): Add --rosegment-gap option.
1878         * options.cc (finalize): --rosegment-gap implies --rosegment.
1879         * layout.cc (set_segment_offsets): Let user option override
1880         target->rosegment_gap().
1881
1882 2013-05-10  Roland McGrath  <mcgrathr@google.com>
1883
1884         * options.h (General_options): Remove leading space from help
1885         messages for -nostdlib and --rosegment.
1886
1887 2013-05-03  Maciej W. Rozycki  <macro@codesourcery.com>
1888
1889         PR ld/15365
1890         * layout.cc (Layout::finalize): Make __ehdr_start STV_HIDDEN.
1891
1892 2013-05-03  Alan Modra  <amodra@gmail.com>
1893
1894         * merge.cc (Output_merge_string::do_add_input_section): Correct
1895         scan for number of strings.  Rename vars to avoid shadowing.
1896         Include missing terminator in input_size_.
1897
1898 2013-05-01  H.J. Lu  <hongjiu.lu@intel.com>
1899
1900         * merge.cc (Output_merge_string<Char_type>::do_add_input_section):
1901         Restore empty string handling.
1902
1903 2013-05-01  Cary Coutant  <ccoutant@google.com>
1904
1905         * stringpool.cc (Stringpool_template::new_key_offset): Fix
1906         uninitialized warning.
1907
1908 2013-04-29  Alexander Ivchenko  <alexander.ivchenko@intel.com>
1909
1910         * output.cc (Output_section::add_merge_input_section): Allow
1911         to merge sections if the alignment is more than character size.
1912         * merge.h (Output_merge_string::Output_merge_string): Remove
1913         assert.
1914         * merge.cc (Output_merge_string<Char_type>::do_add_input_section): Count
1915         only not-null strings. Check the alignment of strings.
1916         * stringpool.h
1917         (Stringpool_template<Stringpool_char>::Stringpool_template): Add
1918         alignment as the argument.
1919         (Stringpool_template<Stringpool_char>::addralign_): New class member.
1920         * stringpool.cc (Stringpool_template<Stringpool_char>::new_key_offset):
1921         Align non-zero length strings according to the addralign_.
1922         (Stringpool_template<Stringpool_char>::set_string_offsets):
1923         Updating offsets according to the given alignment.
1924         * testsuite/Makefile.am (text_section_grouping): Test if string
1925         literals are getting merged.
1926         * testsuite/Makefile.in: Regenerate.
1927         * testsuite/merge_string_literals_1.c: New file.
1928         * testsuite/merge_string_literals_2.c: Ditto.
1929         * testsuite/merge_string_literals.sh: Ditto.
1930
1931 2013-04-26  Ian Lance Taylor  <iant@google.com>
1932
1933         * target-reloc.h (relocate_section): If the reloc offset is out of
1934         range, pass VIEW as NULL to relocate.relocate.
1935         * arm.cc (Target_arm:Relocate::relocate): Check for a NULL view.
1936         * i386.cc (Target_i386::Relocate::relocate): Likewise.
1937         * powerpc.cc (Target_powerpc::Relocate::relocate): Likewise.
1938         * sparc.cc (Target_sparc::Relocate::relocate): Likewise.
1939         * tilegx.cc (Target_tilegx::Relocate::relocate): Likewise.
1940         * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
1941
1942 2013-04-26  Geoff Pike  <gpike@chromium.org>
1943
1944         * gold.cc (queue_final_tasks): invoke layout->queue_build_id_tasks().
1945         * layout.cc (Hash_task): New class.
1946         (Layout::queue_build_id_tasks): New function.
1947         (Layout::write_build_id): Handle single-thread portion of build ID
1948         computation.  (In some cases, all of it is single-threaded.)  Replace
1949         {sha1,md5}_process_bytes with {sha1,md5}_buffer to get the same
1950         functionality in fewer lines of code.
1951         * layout.h (Layout::queue_build_id_tasks): New function declaration.
1952         * options.h (General_options): make "--build-id" default to tree
1953         rather than sha1.  Add two new options related to --build-id=tree:
1954         --build-id-chunk-size-for-treehash and
1955         --build-id-min-file-size-for-treehash.
1956         * Makefile.am: add testing of --build-id=tree and related new options
1957         (these tests will be invoked by "make check").
1958         * Makefile.in: Regenerate.
1959
1960 2013-04-25  Alan Modra  <amodra@gmail.com>
1961
1962         * configure.tgt: Add powerpcle and powerpc64le.
1963
1964 2013-04-22  Alan Modra  <amodra@gmail.com>
1965
1966         PR gold/15355
1967         * layout.cc (Layout::segment_precedes): Allow more than one
1968         segment with the same type and flags.
1969
1970 2013-04-15  Cary Coutant  <ccoutant@google.com>
1971
1972         * layout.cc (Layout::set_relocatable_section_offsets): Don't
1973         allocate space in file for BSS sections.
1974
1975 2013-04-15  Cary Coutant  <ccoutant@google.com>
1976
1977         * script-sections.cc (Orphan_output_section): Reset address
1978         to zero after each orphaned section for relocatable links.
1979
1980 2013-04-15  Cary Coutant  <ccoutant@google.com>
1981
1982         * symtab.cc (Symbol_table::sized_write_globals): Subtract
1983         section starting address for relocatable link.
1984         * testsuite/Makefile.am (script_test_11): New test.
1985         * testsuite/Makefile.in: Regenerate.
1986         * testsuite/script_test_11.c: New source file.
1987         * testsuite/script_test_11.t: New linker script.
1988
1989 2013-04-13  Alan Modra  <amodra@gmail.com>
1990
1991         * powerpc.cc (Stub_control::can_add_to_stub_group): Don't set
1992         owner when sections are not adjacent and exceed group size.
1993         (Target_powerpc::group_sections): Handle corner case.
1994         (Target_powerpc::Branch_info::make_stub): Handle case where
1995         stub table doesn't exist due to branches in non-exec sections.
1996         (Target_powerpc::Relocate::relocate): Likewise.
1997
1998 2013-04-11  Alan Modra  <amodra@gmail.com>
1999
2000         PR gold/15354
2001         * powerpc.cc (Target_powerpc::make_brlt_section): Name section
2002         .branch_lt to match bfd ld.  Adjust comments throughout file.
2003
2004 2013-04-04  Ian Lance Taylor  <iant@google.com>
2005
2006         GCC PR c++/56840
2007         * object.cc (do_layout_deferred_sections): Handle .eh_frame
2008         sections before checking whether they are included in the link.
2009
2010 2013-03-29  Sriraman Tallam  <tmsriram@google.com>
2011
2012         * archive.cc (Archive::get_elf_object_for_member):  Create the elf
2013         object before calling the plugin claim_file handler.  Pass the elf
2014         object of the archive to the plugin. Delete the elf object if the
2015         plugin claims the file.
2016
2017 2013-03-21  Alan Modra  <amodra@gmail.com>
2018
2019         * layout.cc (Layout::set_segment_offsets): Accept writable .text
2020         segment when omagic.
2021
2022 2013-03-21  Alan Modra  <amodra@gmail.com>
2023
2024         * dwp.cc (Dwp_output_file::add_contribution): Avoid signed/unsigned
2025         comparison warning.
2026         * layout.cc (Layout::create_dynamic_symtab): Avoid "may be used
2027         uninitialized" warning.
2028
2029 2013-03-20  Alan Modra  <amodra@gmail.com>
2030
2031         * symtab.h (Symbol::clear_version): New function.
2032         * symtab.cc (Symbol_table::set_dynsym_indexes): Don't set object
2033         is_needed by weak references.  Clear version for symbols defined
2034         in as-needed objects that are not needed.
2035
2036 2013-03-15  Alan Modra  <amodra@gmail.com>
2037
2038         * powerpc.cc (Target_powerpc::Scan::reloc_needs_plt_for_ifunc): Make
2039         static and public.  Add report_err param.  Return false for data refs.
2040         (Target_powerpc::rela_dyn_section): New overloaded function.
2041         (Target_powerpc::plt_, iplt_): Elucidate.
2042         (Output_data_plt_powerpc::entry_count): Handle current_data_size()==0.
2043         (Output_data_plt_powerpc::do_write): Don't write .iplt.
2044         (Output_data_plt_powerpc::plt_entry_count): Don't add .iplt entries.
2045         (Target_powerpc::Scan::local, global): Adjust reloc_needs_plt_for_ifunc
2046         calls.  Put ifunc dynamic relocs in irela_dyn_section.  Only
2047         push_branch and make_plt_entry for ifunc syms when
2048         reloc_needs_plt_for_ifunc.
2049         (Target_powerpc::Relocate::relocate): Don't use plt entry value
2050         for ifunc unless reloc_needs_plt_for_ifunc.
2051
2052 2013-03-15  Alan Modra  <amodra@gmail.com>
2053
2054         * gc.h (gc_process_relocs): Don't look through function descriptors.
2055         * icf.cc (get_section_contents): Do so here instead.
2056
2057 2013-03-13  Alan Modra  <amodra@gmail.com>
2058
2059         * powerpc.cc (is_branch_reloc): Forward declare.
2060         (Target_powerpc::do_can_check_for_function_pointers): New predicate.
2061         (Target_powerpc::Scan::local_reloc_may_be_function_pointer): Return
2062         false for 64-bit, true for 32-bit non-branch relocs.
2063         (Target_powerpc::Scan::global_reloc_may_be_function_pointer): Likewise.
2064         * testsuite/Makefile.am (icf_test): Use linker map file instead of
2065         nm output.
2066         (icf_safe_test): Generate linker map file as well as nm output.
2067         (icf_safe_so_test): Likewise.
2068         * testsuite/Makefile.in: Regenerate.
2069         * testsuite/icf_test.sh: Parse linker map file to determine
2070         section folding.
2071         * testsuite/icf_safe_test.sh: Likewise.  Expect folding for PowerPC.
2072         * testsuite/icf_safe_so_test.sh: Likewise.
2073         (X86_32_or_ARM_specific_safe_fold): Merge into..
2074         (arch_specific_safe_fold): ..this.
2075         (X86_64_specific_safe_fold): Delete unused function.
2076
2077 2013-03-12  Alan Modra  <amodra@gmail.com>
2078
2079         * gc.h (gc_process_relocs): Look through function descriptors
2080         to determine shndx, symvalue and addend used by ICF.  Tidy
2081         variable duplication.
2082
2083 2013-03-11  Alan Modra  <amodra@gmail.com>
2084
2085         * gold.cc (queue_middle_tasks): Move detect_odr_violations..
2086         * layout.cc (Layout_task_runner::run): ..to here.
2087         * symtab.h (struct Symbol_location): Extract from..
2088         (class Symbol_table): ..here.
2089         * symtab.cc (Symbol_table::linenos_from_loc): Invoke function_location.
2090         * target.h (class Target): Add function_location and
2091         do_function_location functions.
2092         (class Sized_target): Add do_function_location.
2093         * object.h (class Sized_relobj_file): Move find_shdr..
2094         (class Object): ..to here.
2095         * object.cc: Likewise.  Update to suit.  Instantiate.
2096         (Sized_relobj_file::find_eh_frame): Update find_shdr call.
2097         * powerpc.cc (class Powerpc_dynobj): New.
2098         (Target_powerpc::do_function_location): New function.
2099         (Powerpc_relobj::do_find_special_sections): Update find_shdr call.
2100         (Powerpc_dynobj::do_read_symbols): New function.
2101         (Target_powerpc::do_make_elf_object): Make a Powerpc_dynobj.
2102
2103 2013-03-08  Ian Lance Taylor  <iant@google.com>
2104
2105         * options.cc (General_options::string_to_object_format): Accept
2106         "default".
2107
2108 2013-03-08  Alan Modra  <amodra@gmail.com>
2109
2110         * ehframe.h (Post_fdes) Make it a vector of Post_fde rather than
2111         pointer to Post_fde.
2112         (struct Post_fde): Move definition to here..
2113         * ehframe.cc (struct Post_fde): ..from here.
2114         (Cie::write): Don't alloc Post_fde.
2115         (Eh_frame::do_sized_write): Update.  Don't free Post_fde.
2116
2117 2013-03-07  Alan Modra  <amodra@gmail.com>
2118
2119         * testsuite/discard_locals_relocatable_test.c: Add a powerpc
2120         relocation referencing .LC0.
2121         * testsuite/discard_locals_test.sh: Remove FIXMEs.
2122
2123 2013-03-07  Alan Modra  <amodra@gmail.com>
2124
2125         * testsuite/ifunc-sel.h (ifunc_sel, ifunc_one): Mark
2126         always_inline.  Add assembly for powerpc to avoid GOT.
2127
2128 2013-03-07  Alan Modra  <amodra@gmail.com>
2129
2130         * testsuite/script_test_10.sh: Don't test .bss section
2131         header number.
2132
2133 2013-03-06  Alan Modra  <amodra@gmail.com>
2134
2135         * powerpc.cc (class Powerpc_relobj): Move some member functions.
2136         (Target_powerpc::symval_for_branch):  Add symtab param.  Update
2137         all callers.  Handle folded sections.
2138         (Target_powerpc::do_gc_add_reference): Don't cast dynamic object
2139         to Powerpc_relobj.
2140         (Global_symbol_visitor_opd::operator()): Likewise.
2141
2142 2013-03-04  Alan Modra  <amodra@gmail.com>
2143
2144         * testsuite/Makefile.am (final_layout_script.lds): Add .sbss.
2145         * testsuite/Makefile.in: Regenerate.
2146
2147 2013-03-01  Cary Coutant  <ccoutant@google.com>
2148
2149         Add dwp support for v2 DWARF package file format.
2150         * dwarf_reader.cc (Dwarf_info_reader::visit_type_unit): Add
2151         tu_length parameter.  Adjust all callers.
2152         * dwarf_reader.h (Dwarf_info_reader::visit_type_unit): Likewise.
2153         * dwp.cc: Include dwarf.h.
2154         (Section_bounds): New struct type.
2155         (Unit_set): New struct type.
2156         (Dwo_file::Dwo_file): Initialize new data member.
2157         (Dwo_file::read_compunit_index, Dwo_file::read_typeunit_index):
2158         Combine and rename to...
2159         (Dwo_file::read_unit_index): ...this.
2160         (Dwo_file::sized_read_compunit_index)
2161         (Dwo_file::sized_read_typeunit_index): Combine and rename to...
2162         (Dwo_file::sized_read_unit_index): ...this.
2163         (Dwo_file::copy_section): Remove section_name, is_str_offsets
2164         parameters; add section_id parameter.
2165         (Dwo_file::add_cu_set, Dwo_file::add_tu_set): Combine and rename to...
2166         (Dwo_file::add_unit_set): ...this.
2167         (Dwo_file::shndx_map_): Remove.
2168         (Dwo_file::sect_offsets_): New data member.
2169         (Dwp_output_file::Dwp_output_file): Initialize new data members.
2170         (Dwp_output_file::add_section): Rename to...
2171         (Dwp_output_file::add_contribution): ...this.
2172         (Dwp_output_file::add_cu_set): Combine parameters into a struct.
2173         (Dwp_output_file::add_tu_set): Likewise.
2174         (Dwp_output_file::Contribution): New type.
2175         (Dwp_output_file::Section::contributions): New data member.
2176         (Dwp_output_file::Cu_or_tu_set): Remove.
2177         (Dwp_output_file::Section::Section): New ctor.
2178         (Dwp_output_file::Dwp_index::Shndx_pool): Remove.
2179         (Dwp_output_file::Dwp_index::Section_table): New type.
2180         (Dwp_output_file::Dwp_index::Dwp_index): Initialize new data members.
2181         (Dwp_output_file::Dwp_index::enter_set): Change type of "set"
2182         parameter.
2183         (Dwp_output_file::Dwp_index::shndx_pool): Remove.
2184         (Dwp_output_file::Dwp_index::shndx_pool_end): Remove.
2185         (Dwp_output_file::Dwp_index::section_table): New member function.
2186         (Dwp_output_file::Dwp_index::section_table_end): New member function.
2187         (Dwp_output_file::Dwp_index::shndx_pool_size): Remove.
2188         (Dwp_output_file::Dwp_index::section_table_rows): New member function.
2189         (Dwp_output_file::Dwp_index::section_table_cols): New member function.
2190         (Dwp_output_file::Dwp_index::shndx_pool_): Remove.
2191         (Dwp_output_file::Dwp_index::section_table_): New data member.
2192         (Dwp_output_file::Dwp_index::section_mask_): New data member.
2193         (Dwp_output_file::add_output_section): New member function.
2194         (Dwp_output_file::write_new_section): New member function.
2195         (Dwp_output_file::write_contributions): New member function.
2196         (Dwp_output_file::section_id_map_): New data member.
2197         (class Dwo_id_info_reader): Remove.
2198         (class Unit_reader): New class.
2199         (get_dwarf_section_name): New function.
2200         (Dwo_file::read_executable): Adjust initializations of class data.
2201         (Dwo_file::read): Add support for v2 package file format.
2202         (Dwo_file::read_unit_index): Likewise.
2203         (Dwo_file::sized_read_unit_index): Likewise.
2204         (Dwo_file::copy_section): Likewise.
2205         (Dwo_file::add_unit_set): Likewise.
2206         (Dwp_output_file::add_output_section): Likewise.
2207         (Dwp_output_file::add_contribution): Likewise.
2208         (Dwp_output_file::Dwp_index::find_or_add): Use row index to check
2209         for empty slot.
2210         (Dwp_output_file::Dwp_index::enter_set): Add support for v2 package
2211         file format.
2212         (Dwp_output_file::Dwp_index::grow): Use row index to check for empty
2213         slot.
2214         (Dwp_output_file::initialize): Remove unused function.
2215         (Dwp_output_file::finalize): Add support for v2 package file format.
2216         (Dwp_output_file::write_index): Likewise.
2217         * gdb-index.cc (Gdb_index_info_reader::visit_type_unit): Adjust
2218         function prototype.
2219
2220 2013-03-01  Cary Coutant  <ccoutant@google.com>
2221
2222         * dwarf_reader.cc (Dwarf_info_reader::check_buffer): Move
2223         function into class definition in header file.
2224         (Dwarf_info_reader::warn_corrupt_debug_section): New function.
2225         * dwarf_reader.h (Dwarf_info_reader::warn_corrupt_debug_section):
2226         New function.
2227         (Dwarf_info_reader::check_buffer): Move here from .cc file.
2228
2229 2013-02-28  Alan Modra  <amodra@gmail.com>
2230
2231         * target.h (Target::plt_fde_location, do_plt_fde_location): Declare.
2232         * target.cc (Target::do_plt_fde_location): New function.
2233         * ehframe.h (class FDE): Add post_map field to u_.from_linker,
2234         accessor function, and constructor param.
2235         (struct Post_fde, Post_fdes): Declare.
2236         (Cie::write): Add post_fdes param.
2237         * ehframe.cc (Fde::write): Use plt_fde_location.
2238         (struct Post_fde): Define.
2239         (Cie::write): Stash FDEs added post merge mapping.
2240         (Eh_frame::add_ehframe_for_plt): Assert no new CIEs after mapping.
2241         Adjust Fde constructor call.  Bump final_data_size_ for post map FDEs.
2242         (Eh_frame::do_sized_write): Arrange to write post map FDES after
2243         other FDEs.
2244         * powerpc.cc (Target_powerpc::do_plt_fde_location): New function.
2245         (Target_powerpc::has_glink): New function.
2246         (Target_powerpc::do_relax): Add eh_frame info for stubs.
2247         (struct Eh_cie, eh_frame_cie, glink_eh_frame_fde_64,
2248         glink_eh_frame_fde_32, default_fde): New data.
2249         (Stub_table::eh_frame_added_): New var.
2250         (Stub_table::find_long_branch_entry, stub_address, stub_offset):
2251         Make const.
2252         (Stub_table::add_eh_frame): New function.
2253         (Output_data_glink::add_eh_frame): New function.
2254         (Target_powerpc::make_glink_section): Call add_eh_frame.
2255
2256 2013-02-15  Ian Lance Taylor  <iant@google.com>
2257
2258         * options.h (DEFINE_uint64_alias): Define.
2259         (class General_options): Add -Ttext-segment as an alias for
2260         -Ttext.
2261
2262 2013-02-15  Alan Modra  <amodra@gmail.com>
2263
2264         * powerpc.cc (Stub_table::plt_off): New function, extracted from..
2265         (Stub_table::do_write): ..here, two places.
2266         (Stub_table::plt_call_size): Use it here too.
2267
2268 2013-02-11  Ian Lance Taylor  <iant@google.com>
2269
2270         * descriptors.cc (Descriptors::close_all): New function.
2271         * descriptors.h (class Descriptors): Declare close_all.
2272         (close_all_descriptors): New inline function.
2273         * plugin.cc: Include "descriptors.h".
2274         (Plugin_manager::cleanup): Call close_all_descriptors.
2275
2276 2013-02-06  Alan Modra  <amodra@gmail.com>
2277
2278         * README: Update coding style link.
2279
2280 2013-01-28  Cary Coutant  <ccoutant@google.com>
2281
2282         * dwp.cc (File_list): New typedef.
2283         (Dwo_name_info_reader): New class.
2284         (Dwo_id_info_reader::Dwo_id_info_reader): Remove unused parameters.
2285         (Dwo_id_info_reader::visit_top_die): Remove unused member function.
2286         (Dwo_file::~Dwo_file): Delete input_file_ after obj_.
2287         (Dwo_file::read_executable): New function.
2288         (Dwo_file::read): Move common setup code to ...
2289         (Dwo_file::make_object): ... here.
2290         (dwp_options): Add --exec/-e.
2291         (usage): Likewise.
2292         (main): Likewise.
2293
2294 2013-01-24  Sriraman Tallam  <tmsriram@google.com>
2295
2296         * layout.cc (Layout::layout): Check for option text_reorder.
2297         (Layout::make_output_section): Ditto.
2298         * options.h (text_reorder): New option.
2299         * output.cc (Input_section_sort_compare): Remove special ordering
2300         of section names.
2301         (Output_section::
2302          Input_section_sort_section_name_special_ordering_compare::
2303          operator()): New function.
2304         (Output_section::sort_attached_input_sections): Use new sort function
2305         for .text.
2306         * output.h (Input_section_sort_section_name_special_ordering_compare):
2307         New struct.
2308         * testsuite/Makefile.am (text_section_grouping): Test option
2309         --no-text-reorder
2310         * testsuite/Makefile.in: Regenerate.
2311         * testsuite/text_section_grouping.sh: Check order of functions without
2312         default text reordering.
2313
2314 2013-01-18  Mike Frysinger  <vapier@gentoo.org>
2315
2316         * options.h (General_options): Change default to true for new_dtags.
2317
2318 2013-01-18  Mike Frysinger  <vapier@gentoo.org>
2319
2320         * layout.cc (Layout::finish_dynamic_section): Only add DT_RPATH
2321         when enable_new_dtags is false.  Only add DT_RUNPATH when
2322         enable_new_dtags is true.
2323
2324 2013-01-17  Serge Pavlov  <serge.v.pavlov@gmail.com>
2325
2326         * powerpc.cc (Stub_table::find_plt_call_entry): Make types
2327         used in declaration and definition consistent.
2328         (Target_powerpc::symval_for_branch): Ditto.
2329
2330 2013-01-16  Sriraman Tallam  <tmsriram@google.com>
2331
2332         * testsuite/plugin_final_layout.cc: Fix comment.
2333
2334 2013-01-16  Sriraman Tallam  <tmsriram@google.com>
2335
2336         * layout.cc (Layout::layout): Do not do default sorting for
2337         text sections when section ordering is specified.
2338         (make_output_section): Ditto.
2339         * testsuite/plugin_final_layout.cc: Name the function sections
2340         to catch reordering issues.
2341
2342 2013-01-15  Alan Modra  <amodra@gmail.com>
2343
2344         * powerpc.cc (Target_powerpc::do_relax): Default shared libs to
2345         plt-thread-safe.
2346
2347 2013-01-15  Alan Modra  <amodra@gmail.com>
2348
2349         * testsuite/Makefile.am (final_layout_script.lds): Handle .got section.
2350         * testsuite/Makefile.in: Regenerate.
2351
2352 2013-01-14  Alan Modra  <amodra@gmail.com>
2353
2354         * testsuite/Makefile.am (MOSTLYCLEANFILES): Add various output files.
2355         * testsuite/Makefile.in: Regenerate.
2356
2357 2013-01-11  Pavel Chupin  <pavel.v.chupin@intel.com>
2358
2359         PR bfd/14430
2360         Fix mingw gold build with plugins enabled
2361         * Makefile.am: Replace -ldl with @DLOPEN_LIBS@.
2362         * configure.ac: Export DLOPEN_LIBS and add headers check.
2363         * plugin.cc: Handle non-dlfcn case.
2364         * Makefile.in: Regenerate.
2365         * config.in: Regenerate.
2366         * configure: Regenerate.
2367         * testsuite/Makefile.in: Regenerate.
2368
2369 2013-01-09  Sriraman Tallam  <tmsriram@google.com>
2370
2371         * output.h (sort_attached_input_sections): Change to be public.
2372         * script-sections.cc
2373         (Output_section_definition::set_section_addresses): Sort
2374         attached input sections according to section order before linker
2375         script assigns section addresses.
2376         (Orphan_output_section::set_section_addresses): Sort
2377         attached input sections according to section order before linker
2378         script assigns section addresses.
2379         * Makefile.am (final_layout.sh): Use a simple linker script to
2380         check if section ordering still works.
2381         * Makefile.in: Regenerate.
2382
2383 2013-01-09  Ben Cheng  <bccheng@google.com>
2384
2385         * arm.cc (Target_arm::attributes_accept_div): New function.
2386         (Target_arm::attributes_forbid_div): New function.
2387         (Target_arm::merge_object_attributes): Merge the Tag_DIV_use
2388         attribute using the same new functions as what bfd/elf32_arm.c
2389         does.
2390
2391 2013-01-07  Cary Coutant  <ccoutant@google.com>
2392
2393         PR gold/14993
2394         * output.cc (Output_section::add_input_section): For incremental
2395         updates, don't track input sections that are allocated from patch
2396         space.
2397
2398 2013-01-07  H.J. Lu  <hongjiu.lu@intel.com>
2399             Ian Lance Taylor  <iant@google.com>
2400
2401         PR gold/14897
2402         * configure.ac (--enable-ld): Removed.
2403         (install_as_default): Set to yes only for --enable-gold=default
2404         or --disable-ld.
2405         * configure: Regenerated.
2406
2407 2013-01-07  H.J. Lu  <hongjiu.lu@intel.com>
2408
2409         * options.h (General_options): Add -fuse-ld= for GCC linker
2410         option compatibility.
2411
2412 2013-01-04  Cary Coutant  <ccoutant@google.com>
2413
2414         * configure.ac: Fix typo restoring CXXFLAGS.
2415         * configure: Regenerate.
2416
2417 2013-01-04  Cary Coutant  <ccoutant@google.com>
2418
2419         * testsuite/Makefile.am (CXXLINK_S): New macro.
2420         (debug_msg_so.err, debug_msg_ndebug.err): Use CXXLINK_S.
2421         * testsuite/Makefile.in: Regenerate.
2422
2423 2013-01-02  H.J. Lu  <hongjiu.lu@intel.com>
2424
2425         * version.cc (print_version): Update copyright year to 2013.
2426
2427 2012-12-20  Ian Lance Taylor  <iant@google.com>
2428
2429         * layout.cc (Layout::special_ordering_of_input_section): New
2430         function.
2431         (Layout::layout): If input section requires special ordering, must
2432         sort input sections.
2433         (Layout::make_output_section): May sort .text input sections.
2434         (Layout::is_section_name_prefix_grouped): Remove.
2435         * layout.h (class Layout): Declare
2436         special_ordering_of_input_section.  Don't declare
2437         is_section_name_prefix_grouped.
2438         * output.cc (Output_section::add_input_section): Revert last
2439         change.
2440         (Output_section::Input_section_sort::match_file_name): Don't crash
2441         if called on output section data.
2442         (Output_section::Input_section_sort_compare): Sort based on
2443         special ordering.
2444         (Output_section::Input_section_sort_section_order_index_compare):
2445         Revert last patch.
2446         (Output_section::sort_attached_input_sections): Likewise.
2447
2448 2012-12-18  Sriraman Tallam  <tmsriram@google.com>
2449
2450         * layout.cc (Layout::is_section_name_prefix_grouped): New function.
2451         * layout.h (Layout::is_section_name_prefix_grouped): New function.
2452         * output.cc (Output_section::add_input_section): Check if section
2453         name contains special prefix.  Keep input sections to sort such
2454         sections.
2455         (Output_section::Input_section_sort_section_order_index_compare
2456          ::operator()): Group sections according to prefixes.
2457         (Output_section::sort_attached_input_sections): Add condition to
2458         Input_section_entry constructor call.
2459         * testsuite/Makefile.am (text_section_grouping): New test.
2460         * testsuite/Makefile.in: Regenerate.
2461         * testsuite/text_section_grouping.cc: New file.
2462         * testsuite/text_section_grouping.sh: New file.
2463
2464 2012-12-17  Nick Clifton  <nickc@redhat.com>
2465
2466         * Makefile.am: Add copyright notice.
2467         * NEWS: Likewise.
2468         * README: Likewise.
2469         * configure.ac: Likewise.
2470         * ftruncate.c: Likewise.
2471         * Makefile.in: Regenerate.
2472
2473 2012-12-14  Cary Coutant  <ccoutant@google.com>
2474
2475         * testsuite/Makefile.am (exception_separate_shared_12_test): Add
2476         --no-as-needed flag.
2477         (exception_separate_shared_12_test): Likewise.
2478         (incremental_copy_test): Likewise.
2479         * testsuite/Makefile.in: Regenerate.
2480
2481 2012-12-14  Cary Coutant  <ccoutant@google.com>
2482
2483         * dwp.cc (Dwp_output_file::add_cu_set): Check for duplicate CUs.
2484         (Dwp_output_file::Dwp_index::enter_set): Add assert.
2485
2486 2012-12-12  Alan Modra  <amodra@gmail.com>
2487
2488         * powerpc.cc (class Track_tls): New.
2489         (class Relocate, class Scan): Inherit Track_tls.
2490         (Target_powerpc::Scan::local, global): Track tls optimization
2491         and avoid creating plt entry for __tls_get_addr if all uses
2492         are optimized away.
2493         (Target_powerpc::Relocate::relocate): Update to use Track_tls.
2494
2495 2012-12-12  Alan Modra  <amodra@gmail.com>
2496
2497         * options.h (General_options): Add --toc-sort/--no-toc-sort.
2498         Replace no_toc_optimize with toc_optimize.
2499         * output.h (Output_section::input_sections): Provide non-const variant.
2500         * powerpc.cc (Powerpc_relobj::has_small_toc_reloc_,
2501         set_has_small_toc_reloc, has_small_toc_reloc): New variable and
2502         accessors.
2503         (Target_powerpc::Scan::local, global): Call set_has_small_toc_reloc.
2504         (class Sort_toc_sections): New.
2505         (Target_powerpc::do_finalize_sections): Sort toc sections.
2506         (Target_powerpc::Relocate::relocate): Update toc_optimize test.
2507
2508 2012-12-10  Roland McGrath  <mcgrathr@google.com>
2509
2510         * testsuite/binary_unittest.cc (read_all): New function.
2511         (Sized_binary_test): Use it instead of ::read.
2512         * fileread.cc (do_read): Don't assume pread always reads the whole
2513         amount in a single call.
2514
2515 2012-12-10  Alan Modra  <amodra@gmail.com>
2516
2517         * powerpc.cc (Target_selector_powerpc::Target_selector_powerpc):
2518         Set EM_PPC64 or EM_PPC here.
2519         (Target_selector_powerpc::do_recognize): Delete.
2520
2521 2012-12-10  Alan Modra  <amodra@gmail.com>
2522
2523         * powerpc.cc (Powerpc_relobj::Powerpc_relobj): Init has14_ and
2524         stub_table_.
2525         (Target_powerpc::Branch_info::make_stub): Don't omit addend.
2526
2527 2012-12-07  Roland McGrath  <mcgrathr@google.com>
2528
2529         * testsuite/binary_unittest.cc (Sized_binary_test):
2530         Use open_descriptor rather than ::open.
2531
2532 2012-12-07  Alan Modra  <amodra@gmail.com>
2533
2534         * powerpc.cc (Stub_table::do_write): Delete redundant Address
2535         typedef and invalid_address constant.
2536         (Output_data_glink, Stub_table, Target_powerpc): Explicitly
2537         instantiate constants.
2538
2539 2012-12-06  Roland McGrath  <mcgrathr@google.com>
2540
2541         * configure.ac (HAVE_ZLIB): Use AM_ZLIB instead of AC_SEARCH_LIBS.
2542         Use $ac_cv_header_zlib_h = yes as the condition in AM_CONDITIONAL.
2543         * aclocal.m4: Regenerate.
2544         * configure: Regenerate.
2545         * Makefile.in: Regenerate.
2546         * testsuite/Makefile.in: Regenerate.
2547
2548 2012-12-07  Alan Modra  <amodra@gmail.com>
2549
2550         * options.h (General_options): Add no_toc_optimize.
2551         * powerpc.cc (ok_lo_toc_insn): New function.
2552         (Target_powerpc::Relocate::relocate): Optimize toc access sequences.
2553
2554 2012-12-06  Alan Modra  <amodra@gmail.com>
2555
2556         * options.h (General_options): Add plt_align, plt_static_chain,
2557         plt_thread_safe.  Update stub_group_size help text.
2558         * powerpc.cc (Target_powerpc::plt_thread_safe): New access function
2559         for new plt_thread_safe_ var.
2560         (use_plt_offset): Correct comments.
2561         (Target_powerpc::do_relax): Look for thread creation symbols to
2562         determine default plt_thread_safe value.  Clear plt call stubs
2563         as well as branch stubs each iteration.
2564         (add_2_2_11, add_12_12_11, bnectr_p4, cmpldi_2_0, xor_11_11_11): New
2565         insn constants.
2566         (l, hi, ha, write_insn): Move earlier.
2567         (Stub_table): Delete prev_size, add last_plt_size and last_branch_size.
2568         (Stub_table::clear_stubs): Rename from clear_long_branch_stubs, clear
2569         plt stubs too.
2570         (Stub_table::update_size): Adjust.
2571         (Stub_table::prev_size, set_prev_size): Delete.
2572         (Stub_table::stub_align): Let --plt-align affect result.
2573         (Stub_table::plt_call_size): Calculate sizes for various stubs.
2574         (Stub_table::branch_stub_size): Use last_plt_size in address calc.
2575         (Stub_table::add_plt_call_stub): Pass iterator to plt_call_size.
2576         (Stub_table::do_write): Support more stub variants.
2577
2578 2012-12-04  Alan Modra  <amodra@gmail.com>
2579
2580         * powerpc.cc (Powerpc_relobj::do_scan_relocs): Delete.
2581         (Target_powerpc::do_define_standard_symbols): New function.
2582
2583 2012-12-03  Alan Modra  <amodra@gmail.com>
2584
2585         * output.h: Formatting, whitespace.
2586
2587 2012-12-03  Alan Modra  <amodra@gmail.com>
2588
2589         * layout.h (Layout::get_executable_sections): Declare.
2590         * layout.cc (Layout::get_executable_sections): New function.
2591         * arm.cc (Target_arm::group_sections): Use it.
2592         (Arm_output_section::group_sections): Delete now redundant test.
2593         * output.cc (Output_reloc::Output_reloc): Add is_relative.
2594         param to handle relative relocs.
2595         * output.h (Output_reloc::Output_reloc <absolute reloc>): Likewise.
2596         (Output_data_reloc::add_absolute): Adjust.
2597         (Output_data_reloc::add_relative): New function.
2598         (Output_data::reset_data_size): New function.
2599         (Output_relaxed_input_section::set_relobj, set_shndx): New functions.
2600         (Output_section::set_addralign): New function.
2601         (Output_section::checkpoint_set_addralign): New function.
2602         (Output_section::clear_section_offsets_need_adjustment): New function.
2603         (Output_section::input_sections): Make public.
2604         * powerpc.cc (class Output_data_brlt_powerpc): New.
2605         (class Stub_table, class Stub_control): New.
2606         (Powerpc_relobj::has14_, set_has_14bit_branch, has_14bit_branch,
2607         stub_table_, set_stub_table, stub_table): New vectors and accessor
2608         functions.
2609         (Target_powerpc::do_may_relax, do_relax, push_branch,
2610         new_stub_table, stub_tables, brlt_section, group_sections,
2611         add_branch_lookup_table, find_branch_lookup_table,
2612         write_branch_lookup_table, make_brlt_section): New functions.
2613         (Target_powerpc::struct Sort_sections, class Branch_info): New.
2614         (Target_powerpc::brlt_section_, stub_tables_, branch_lookup_table_,
2615         branch_info_): New vars.
2616         (Target_powerpc::make_plt_entry, make_local_ifunc_plt_entry): Don't
2617         make call stubs here.
2618         (Output_data_glink): Remove all call stub handling from this class.
2619         (Target_powerpc::Scan::local, global): Save interesting branch
2620         relocs and relocs for ifunc.  Adjust calls to plt entry functions.
2621         (Target_powerpc::do_finalize_sections): Only make reg save/restore
2622         functions on final link.
2623         (Target_powerpc::Relocate::relocate): Adjust lookup of call stubs.
2624         Handle long branch destinations too.
2625         (Target_powerpc::do_dynsym_value, do_plt_address_for_global,
2626         do_plt_address_for_local): Adjust lookup of plt call stubs.
2627
2628 2012-11-30  Alan Modra  <amodra@gmail.com>
2629
2630         * powerpc.c (Target_powerpc::Scan::global): Don't emit relative
2631         relocs against protected symbols when building 32-bit shared libs.
2632
2633 2012-11-30  Alan Modra  <amodra@gmail.com>
2634
2635         * powerpc.cc (Target_powerpc::make_plt_section): Add symtab
2636         param.  Call got_section() to make .got.  Update all callers
2637         and their callers and so on.
2638
2639 2012-11-30  Alan Modra  <amodra@gmail.com>
2640
2641         * powerpc.cc (Powerpc_relobj::do_scan_relocs): Make STB_LOCAL
2642         _GLOBAL_OFFSET_TABLE_ rather than STB_WEAK.
2643         (Output_data_got_powerpc::make_header): Update _GLOBAL_OFFSET_TABLE_
2644         value if it already exists.
2645
2646 2012-11-19  H.J. Lu  <hongjiu.lu@intel.com>
2647
2648         PR gold/14858
2649         * x86_64.cc (Relocate::tls_ld_to_le): Support x32.
2650
2651 2012-11-14  Roland McGrath  <mcgrathr@google.com>
2652
2653         * arm.cc (Output_data_plt_arm_nacl::first_plt_entry): Use bic rather
2654         than bfc instruction for data sandboxing.
2655
2656 2012-11-08  Alan Modra  <amodra@gmail.com>
2657
2658         * po/POTFILES.in: Regenerate.
2659
2660 2012-11-05  Alan Modra  <amodra@gmail.com>
2661
2662         * configure.ac: Apply 2012-09-10 change to config.in here.
2663         * configure: Regenerate.
2664
2665 2012-11-05  Alan Modra  <amodra@gmail.com>
2666
2667         * powerpc.cc (Powerpc_relobj): Delete "Offset" typedef.
2668         (struct Opd_ent): Use "Address" rather than "Offset".
2669         (Output_data_got_powerpc::got_base_offset): Return Valtype.
2670         (Target_powerpc::got_section): Make public.
2671         (Target_powerpc::scan_relocs): Move code setting symbols..
2672         (Powerpc_relobj::do_scan_relocs): ..to here, new function.
2673         Create _SDA_BASE_ only when referenced.
2674
2675 2012-11-02  Roland McGrath  <mcgrathr@google.com>
2676
2677         * i386.cc (Target_i386::relocate_relocs): Remove extraneous typename
2678         from last change.
2679
2680 2012-11-01  Roland McGrath  <mcgrathr@google.com>
2681
2682         * target.h (Sized_target::relocate_relocs): Use Elf_Off
2683         for offset_in_output_section parameter.
2684         (Sized_target::relocate_special_relocatable): Likewise.
2685         * arm.cc (Target_arm::relocate_relocs): Likewise.
2686         (Target_arm::relocate_special_relocatable): Likewise.
2687         * i386.cc (Target_i386::relocate_relocs): Likewise.
2688         * powerpc.cc (Target_powerpc::relocate_relocs): Likewise.
2689         * sparc.cc (Target_sparc::relocate_relocs): Likewise.
2690         * target-reloc.h (relocate_relocs): Likewise.
2691         * testsuite/testfile.cc (Target_test): Likewise.
2692         * tilegx.cc (Target_tilegx::relocate_relocs): Likewise.
2693         * x86_64.cc (Target_x86_64::relocate_relocs): Likewise.
2694
2695         * system.h: Move inclusion of <clocale> to after <libintl.h> in
2696         [ENABLE_NLS] section, and separately at top of [!ENABLE_NLS] section.
2697
2698         * descriptors.cc (set_close_on_exec): Add ATTRIBUTE_UNUSED to the
2699         parameter, which is unused in the [!F_SETFD] case.
2700
2701         * dwarf_reader.cc (Sized_elf_reloc_mapper::symbol_section): Cast
2702         SYMNDX to off_t before comparing it to this->data_size().
2703         * output.cc (Output_symtab_xindex::endian_do_write): Likewise.
2704         * incremental.cc (Output_section_incremental_inputs::do_write):
2705         Cast GLOBAL_SYM_COUNT to off_t before comparing it to SYMTAB_SIZE.
2706
2707         * nacl.cc: Include "libiberty.h" for vasprintf declaration.
2708
2709 2012-10-30  Steve McIntyre  <steve.mcintyre@linaro.org>
2710
2711         * gold.cc (Target_arm::do_adjust_elf_header): Add the
2712         hard-float/soft-float ABI flag as appropriate for ET_DYN/ET_EXEC
2713         in EABI_VER5.
2714
2715 2012-10-29  Cary Coutant  <ccoutant@google.com>
2716
2717         * dwp.cc (usage): Add file and exit status parameters;
2718         add --help and --version options.
2719         (print_version): New function.
2720         (main): Add --help and --version options.
2721
2722 2012-10-25  H.J. Lu  <hongjiu.lu@intel.com>
2723
2724         * testsuite/Makefile.am (MOSTLYCLEANFILES): Add
2725         final_layout_sequence.txt.
2726         * testsuite/Makefile.in: Regenerated.
2727
2728 2012-10-25  H.J. Lu  <hongjiu.lu@intel.com>
2729
2730         * testsuite/Makefile.am (COMPILE1): New variable. Renamed from
2731         COMPILE generated by automake.
2732         (LINK1): Likewise.
2733         (CXXCOMPILE1): Likewise.
2734         (CXXLINK1): Likewise.
2735         (COMPILE): Strip out -Wp,-D_FORTIFY_SOURCE= from COMPILE1.
2736         (LINK): Likewise.
2737         (CXXCOMPILE): Likewise.
2738         (CXXLINK): Likewise.
2739         * testsuite/Makefile.in: Regenerated.
2740
2741 2012-10-25  H.J. Lu  <hongjiu.lu@intel.com>
2742
2743         * dwp.cc (Dwo_file::record_target_info): Issue a fatal error
2744         on bad fwrite return.
2745
2746 2012-10-25  H.J. Lu  <hongjiu.lu@intel.com>
2747
2748         * dwp.cc (Dwo_file::remap_str_offset): Use section_offset_type
2749         on val.
2750
2751 2012-10-23  Cary Coutant  <ccoutant@google.com>
2752
2753         * testsuite/Makefile.am (TEST_OBJCOPY): New macro.
2754         * testsuite/Makefile.in: Regenerate.
2755         * testsuite/dwp_test.h: New source file.
2756         * testsuite/dwp_test_1.cc: New source file.
2757         * testsuite/dwp_test_1.s: New source file.
2758         * testsuite/dwp_test_1.sh: New source file.
2759         * testsuite/dwp_test_1b.cc: New source file.
2760         * testsuite/dwp_test_1b.s: New source file.
2761         * testsuite/dwp_test_2.cc: New source file.
2762         * testsuite/dwp_test_2.s: New source file.
2763         * testsuite/dwp_test_2.sh: New source file.
2764         * testsuite/dwp_test_main.cc: New source file.
2765         * testsuite/dwp_test_main.s: New source file.
2766
2767 2012-10-23  Cary Coutant  <ccoutant@google.com>
2768
2769         * dwp.h: New header file.
2770         * dwp.cc: New source file.
2771         * gold.h: Move shared declarations to system.h.
2772         * system.h: New header file.
2773         * Makefile.am: Add dwp.
2774         * Makefile.in: Regenerate.
2775
2776 2012-10-23  Cary Coutant  <ccoutant@google.com>
2777
2778         * dwarf_reader.cc (Dwarf_ranges_table::read_range_list): Call
2779         Dwarf_info_reader::read_from_pointer.
2780         (Dwarf_pubnames_table::read_header): Likewise.
2781         (Dwarf_pubnames_table::next_name): Likewise.
2782         (Dwarf_die::read_attributes): Likewise.
2783         (Dwarf_die::skip_attributes): Likewise.
2784         (Dwarf_info_reader::read_from_pointer): New function template.
2785         * dwarf_reader.h (Dwarf_ranges_table): Add dwinfo_.
2786         (Dwarf_pubnames_table): Likewise.
2787         (Dwarf_info_reader::read_from_pointer): New function template.
2788         * gdb-index.cc (Gdb_index_info_reader): Adjust call to
2789         Dwarf_pubnames_table ctor.
2790
2791 2012-10-23  Cary Coutant  <ccoutant@google.com>
2792
2793         * dwarf_reader.cc (Dwarf_info_reader::do_parse): Use stored
2794         abbrev_shndx.
2795         * dwarf_reader.h (Dwarf_info_reader::Dwarf_info_reader): Initialize
2796         abbrev_shndx_.
2797         (Dwarf_info_reader::set_abbrev_shndx): New method.
2798         (Dwarf_info_reader::abbrev_shndx_): New data member.
2799
2800 2012-10-23  Cary Coutant  <ccoutant@google.com>
2801
2802         * dwarf_reader.cc (make_elf_reloc_mapper): Check size and endianness
2803         from object, not parameters.
2804         (Dwarf_info_reader::parse): Likewise.
2805         * object.h (Relobj::elfsize, Relobj::is_big_endian): New methods.
2806         (Relobj::do_elfsize, Relobj::do_is_big_endian): New methods.
2807         (Sized_relobj::do_elfsize, Sized_relobj::do_is_big_endian): New
2808         methods.
2809
2810 2012-10-23  Cary Coutant  <ccoutant@google.com>
2811
2812         * fileread.cc (Input_file::Input_file): New constructor.
2813         * fileread.h (class Input_file): Add new constructor.
2814
2815 2012-10-18  Alan Modra  <amodra@gmail.com>
2816
2817         PR gold/14727
2818         * object.cc (Relobj::is_section_name_included): Also match
2819         .sdata personality section.
2820
2821 2012-10-18  Alan Modra  <amodra@gmail.com>
2822
2823         * target-reloc.h (class Default_comdat_behavior): New, package up..
2824         (get_comdat_behaviour): ..this.
2825         (relocate_section): Add Relocate_comdat_behavior template arg,
2826         adjust code to suit.
2827         * arm.cc (Target_arm::relocate_section): Adjust to suit.
2828         (Target_arm::scan_reloc_section): Likewise.
2829         * i386.cc (Target_i386::relocate_section): Likewise.
2830         * sparc.cc (Target_sparc::relocate_section): Likewise.
2831         * tilegx.cc (Target_tilegx::relocate_section): Likewise.
2832         * x86_64.cc (Target_x86_64::relocate_section): Likewise.
2833         * powerpc.cc (class Relocate_comdat_behavior): New.
2834         (Target_powerpc::relocate_section): Don't zap opd relocs.  Supply
2835         gold::relocate_section with new template arg.
2836
2837 2012-10-18  Alan Modra  <amodra@gmail.com>
2838
2839         * powerpc.cc (Target_powerpc::Scan::local, global): Always emit
2840         dynamic relocs for GOT_TPREL got entries, without symbol if
2841         resolving locally.
2842         (Target_powerpc::do_gc_add_reference): Don't add for dynamic objects.
2843         (Target_powerpc::scan_relocs): Define _GLOBAL_OFFSET_TABLE_ early.
2844         (Target_powerpc::Relocate:relocate): REL32 reloc may be unaligned.
2845
2846 2012-10-17  Alan Modra  <amodra@gmail.com>
2847
2848         PR gold/14726
2849         * gold.cc (queue_middle_tasks): Call gc_mark_symbol on _init and _fini.
2850
2851 2012-10-16  Sriraman Tallam  <tmsriram@google.com>
2852
2853         * layout.cc (Layout::include_section): Keep sections marked
2854         SHF_EXCLUDE when doing relocatable links.
2855
2856 2012-10-16  Alan Modra  <amodra@gmail.com>
2857
2858         * powerpc.cc (Target_powerpc::define_save_restore_funcs): New func.
2859         (Target_powerpc::do_finalize_sections): Call it.
2860         (Output_data_save_res): New class and supporting functions.
2861         (Target_powerpc::symval_for_branch): Only look up .opd entry for
2862         normal symbols defined in object files.
2863
2864 2012-10-12  Alan Modra  <amodra@gmail.com>
2865
2866         * powerpc.cc (Powerpc_relobj::add_gc_mark, process_gc_mark): New.
2867         (struct Opd_ent): Make "discard" a bit field.  Add "gc_mark".
2868         (Target_powerpc::do_gc_mark_symbol): Delay marking function code
2869         section if scan_opd_relocs not yet called.
2870         (Target_powerpc::gc_process_relocs): Call process_gc_mark.
2871
2872 2012-10-12  Alan Modra  <amodra@gmail.com>
2873
2874         * powerpc.cc (Output_data_plt_powerpc::add_entry, add_ifunc_entry,
2875         add_local_ifunc_entry): Revert last change.
2876         (Target_powerpc::make_plt_entry, make_local_ifunc_plt_entry): Likewise.
2877
2878 2012-10-05  Alan Modra  <amodra@gmail.com>
2879
2880         * powerpc.cc (Target_powerpc::do_plt_address_for_local,
2881         do_plt_address_for_global): New functions.
2882         (Output_data_got_powerpc::do_write): Don't segfault when linking
2883         statically.
2884         (Output_data_plt_powerpc::add_entry, add_ifunc_entry,
2885         add_local_ifunc_entry): Return true on adding entry..
2886         (Target_powerpc::make_plt_entry): ..use to avoid unnecessary
2887         glink->add_entry call.  Remove unused symtab param.  Adjust calls.
2888         (Target_powerpc::make_local_ifunc_plt_entry): Likewise.
2889         (Target_powerpc::make_iplt_section): Remove symtab param.  Don't
2890         set up symbols here.
2891         (Target_powerpc::do_finalize_sections): Instead set up __rela_iplt
2892         syms here.  Do so even when no .iplt.  Don't segfault when linking
2893         statically.
2894         (Output_data_glink::add_entry, find_entry): Rearrange params.  Add
2895         new variants without reloc param.
2896         (Glink_sym_ent::Glink_sym_ent): Likewise.
2897         (Target_powerpc::Scan::reloc_needs_plt_for_ifunc): Accept any
2898         reloc when refs will resolve to plt call stub.
2899         (Target_powerpc::Scan::local): Correct ifunc handling.  Allow
2900         R_PPC_PLTREL24 to resolve locally.
2901         (Target_powerpc::Scan::global): Correct ifunc handling.
2902         (Target_powerpc::Relocate::relocate): Correct local sym glink
2903         lookup.  Don't destroy "value" when we have a plt call stub,
2904         and when checking plt call validity.
2905         (Target_powerpc::do_dynsym_value): Simplify.
2906
2907 2012-10-05  Alan Modra  <amodra@gmail.com>
2908
2909         * i386.cc (Output_data_plt_i386::address_for_global,
2910         address_for_local): Add plt offset to returned value.  Adjust uses.
2911         * sparc.cc (Output_data_plt_sparc::address_for_global,
2912         address_for_local): Likewise.
2913         * tilegx.cc (Output_data_plt_tilegx::address_for_global,
2914         address_for_local): Likewise.
2915         * x86_64.cc (Output_data_plt_x86_64::address_for_global,
2916         address_for_local): Likewise.
2917         * target.h (Target::plt_address_for_global, plt_address_for_local):
2918         Update comment.
2919         * output.cc (Output_reloc::symbol_value): Don't add plt offset here.
2920         (Output_data_got::Got_entry::write): Nor here.
2921         * output.h: Comment fix.
2922
2923 2012-10-02  Jiong Wang  <jiwang@tilera.com>
2924
2925         * tilegx.cc (Target_tilegx::do_finalize_sections): Adjust
2926         global_offset_table_ value for larget got.
2927         (Target_tilegx::Relocate::relocate): Handle adjusted got value.
2928
2929 2012-09-29  Alan Modra  <amodra@gmail.com>
2930
2931         * powerpc.cc (Target_powerpc::iplt_): New output section.
2932         (Target_powerpc::iplt_section, make_iplt_section,
2933         reloc_needs_plt_for_ifunc, make_local_ifunc_plt_entry): New functions.
2934         (Target_powerpc::make_plt_entry): Handle ifunc syms.
2935         Target_powerpc::plt_entry_count): Count iplt entries too.
2936         (Output_data_plt_powerpc::Output_data_plt_powerpc): Don't create
2937         reloc section in constructor.  New params.
2938         (Target_powerpc::make_plt_section): Create reloc section here instead.
2939         (Output_data_plt_powerpc::add_ifunc_entry, add_local_ifunc_entry): New
2940         functions.
2941         (Output_data_plt_powerpc::initial_plt_entry_size_, name_): New vars.
2942         (Output_data_glink::add_entry, find_entry): New functions to
2943         deal with local syms.
2944         (Glink_sym_ent): Add support for local syms.
2945         (Output_data_glink::do_write): Handle ifunc plt entries.
2946         (Target_powerpc::Scan::get_reference_flags): Handle more relocs.
2947         (Target_powerpc::Scan::local, global): Handle ifunc syms.
2948         (Target_powerpc::Relocate::relocate): Likewise.
2949         (Target_powerpc::do_dynsym_value): Use glink stub, not plt entry.
2950
2951 2012-09-25  Alan Modra  <amodra@gmail.com>
2952
2953         * object.h (Sized_relobj_file::adjust_local_symbol,
2954         do_adjust_local_symbol): New functions.
2955         * object.cc (Sized_relobj_file::do_count_local_symbols): Use the above.
2956         * powerpc.cc (Powerpc_relobj::do_adjust_local_symbol): New function.
2957         (Powerpc_relobj::scan_opd_relocs): Warn on unexpected opd relocs
2958         and irregular opd entry spacing.
2959         (Powerpc_relobj::do_read_relocs): Add opd size checks.
2960         (Global_symbol_visitor_opd): New functor.
2961         (Target_powerpc::do_finalize_sections): Omit global symbols defined
2962         on deleted opd entries.
2963
2964 2012-09-15  Jiong Wang  <jiwang@tilera.com>
2965
2966         * tilegx.cc: New file.
2967         * Makefile.am (TARGETSOURCES): Add tilegx.cc
2968         (ALL_TARGETOBJS): Add tilegx.$(OBJEXT)
2969         * configure.tgt: Add entries for tilegx*.
2970         * configure.ac: Likewise.
2971         * Makefile.in: Rebuild.
2972         * configure: Likewise.
2973         * testsuite/icf_safe_test.sh (arch_specific_safe_fold): Handle
2974         tilegx.
2975
2976 2012-09-13  Alan Modra  <amodra@gmail.com>
2977
2978         * target-reloc.h (scan_relocs): Call scan.local for relocs
2979         against symbols in discarded sections.  Pass is_discarded
2980         param.
2981         * arm.cc, * i386.cc, * sparc.cc, * x86_64.cc (Target_*::Scan::local):
2982         Add is_discarded param.
2983         * powerpc (Target_powerpc::Scan::local): Likewise.  Use
2984         is_discarded to flag opd entry as discarded.  Don't emit dyn
2985         relocs on such entries.
2986         (Target_powerpc::Scan::global): Similarly detect and handle
2987         such opd entries.
2988         (Powerpc_relobj): Replace opd_ent_shndx_ and opd_ent_off_ with
2989         opd_ent_.  Update all uses.
2990         (Powerpc_relobj::get_opd_discard, set_opd_discard): New functions.
2991         (Target_powerpc::relocate_section): Zero out discarded opd
2992         entry relocs.
2993
2994 2012-09-12  Ian Lance Taylor  <iant@google.com>
2995
2996         PR gold/14570
2997         * output.cc: Rename Output_data_got template parameter from size
2998         to got_size for all functions.  Compile all variants of
2999         Output_data_got.
3000         (Output_data_got::Got_entry::write): Correct use of size for
3001         symbol value.  Use local_is_tls rather than casting to
3002         Sized_relobj_file.
3003         * object.h (class Object): Add local_is_tls and do_local_is_tls.
3004         (class Sized_relobj_file): Add do_local_is_tls.
3005         * incremental.h (class Sized_relobj_incr): Add do_local_is_tls.
3006
3007 2012-09-11  Alan Modra  <amodra@gmail.com>
3008
3009         PR gold/14566
3010         * layout.cc (Layout::set_segment_offsets): When using
3011         common-page-size alignment, ensure we are on a new max-page-size
3012         page.
3013         * output.cc (Output_segment::set_section_addresses): Use
3014         abi_pagesize, not common_pagesize for relro boundary.
3015         (Output_segment::set_offset): Likewise.
3016
3017 2012-09-11  Alan Modra  <amodra@gmail.com>
3018
3019         * output.h (Output_data_got::add_global_tls, add_local_tls,
3020         add_local_tls_pair): New functions.
3021         (Output_data_got::add_local_pair_with_rel): Remove second
3022         reloc param.  Expand comment.
3023         (Output_data_got::Got_entry): Rename use_plt_offset_ to
3024         use_plt_or_tls_offset_, similarly for constructor param.
3025         (Output_data_got::Got_entry::write): Add got_index param.
3026         * output.cc (Output_data_got::add_global_tls, add_local_tls,
3027         add_local_tls_pair): New functions.
3028         (Output_data_got::Got_entry::write): Handle tls symbols
3029         with use_plt_or_tls_offset_ set specially.
3030         (Output_data_got::add_local_pair_with_rel): Only one reloc.
3031         (Output_data_got::do_write): Replace iterator with index, pass
3032         index to entry write function.
3033         * target.h (Target::tls_offset_for_local, tls_offset_for_global,
3034         do_tls_offset_for_local, do_tls_offset_for_global): New functions.
3035         * arm.cc (Target_arm::Scan::local): Update add_local_pair_with_rel
3036         call.
3037         * i386.cc (Target_i386::Scan::local): Likewise.
3038         * sparc.cc (Target_sparc::Scan::local): Likewise.
3039         * x86_64.cc (Target_x86_64::Scan::local): Likewise.
3040         * powerpc.cc (Target_powerpc::do_tls_offset_for_local,
3041         do_tls_offset_for_global): New functions.
3042         (Target_powerpc::Scan::local): Correct TLS relocations and got
3043         entry values.
3044         (Target_powerpc::Scan::global): Don't emit unnecessary
3045         dynamic relocations on TLS GOT entries.
3046
3047 2012-09-10  Matthias Klose  <doko@ubuntu.com>
3048
3049         * config.in: Disable sanity check for kfreebsd.
3050
3051 2012-09-10  Sterling Augustine  <saugustine@google.com>
3052
3053         * gdb-index.cc (Gdb_index::pubnames_read): New parameter.
3054         (Gdb_index::pubtypes_read): New parameter.
3055         (Gdb_index_info_reader::read_pubnames_and_pubtypes): Add parameters
3056         to calls.
3057         * gdb-index.h (Gdb_index): New fields pubnames_object_ and
3058         pubtypes_object_.
3059
3060 2012-09-09  Alan Modra  <amodra@gmail.com>
3061
3062         * target.h (Target::gc_mark_symbol, do_gc_mark_symbol): New functions.
3063         (Sized_target::gc_add_reference, do_gc_add_reference): New functions.
3064         * gc.h (gc_process_relocs): Call target gc_add_reference.
3065         * gold.cc (queue_middle_tasks): Use gc_mark_symbol on start sym.
3066         * symtab.cc (Symbol_table::gc_mark_undef_symbols): Use gc_mark_symbol.
3067         (Symbol_table::gc_mark_symbol): Call target gc_mark_symbol. Remove
3068         unnecessary cast.
3069         * powerpc.cc (Powerpc_relobj::get_opd_ent): Rearrange parameters
3070         to cater for when we don't need code offset.  Update use.
3071         (Powerpc_relobj::access_from_map_, opd_valid_): New vars.
3072         (Powerpc_relobj::access_from_map, add_reference, opd_valid,
3073         set_opd_valid): New functions.
3074         (Target_powerpc::do_gc_add_reference): New function.
3075         (Target_powerpc::gc_process_relocs): Call gc()->add_reference on
3076         stashed refs.
3077         (Target_powerpc::do_gc_mark_symbol): New function.
3078
3079 2012-09-06  Cary Coutant  <ccoutant@google.com>
3080
3081         * dwarf_reader.cc (Dwarf_die::read_attributes): Add
3082         DW_FORM_GNU_addr_index and DW_FORM_GNU_str_index.
3083         (Dwarf_die::skip_attributes): Likewise.
3084         * object.cc (Read_symbols_data::~Read_symbols_data): Update comment.
3085         * testsuite/gdb_index_test.cc (inline_func_1): New function.
3086         (main): Call it.
3087         * testsuite/gdb_index_test_comm.sh: Check index for inline function.
3088
3089 2012-09-05  H.J. Lu  <hongjiu.lu@intel.com>
3090
3091         * testsuite/script_test_3.t: Add .got.plt output section
3092         statement.
3093         * testsuite/script_test_4.t: Likewise.
3094
3095 2012-09-05  Alan Modra  <amodra@gmail.com>
3096
3097         * powerpc.cc (Powerpc_relocate_functions): Upcase enum values,
3098         update all uses and lose "enum" when using type.
3099
3100 2012-09-05  Alan Modra  <amodra@gmail.com>
3101
3102         * configure.ac (FN_PTRS_IN_SO_WITHOUT_PIC): False for powerpc.
3103         * configure: Regenerate.
3104         * testsuite/Makefile.am (final_layout.stdout): Pass --synthetic to nm.
3105         (plugin_final_layout.stdout): Likewise.
3106         (memory_test): Set page sizes to 0x1000.
3107         * testsuite/Makefile.in: Regenerate.
3108         * testsuite/discard_locals_test.sh: Add FIXME comment.
3109         * testsuite/justsyms_exec.c: Disable function test for powerpc64.
3110         * testsuite/pr14265.t: Add .got output section statement.
3111         * testsuite/script_test_2.t: Likewise.
3112         * testsuite/script_test_3.t: Likewise.
3113         * testsuite/script_test_4.t: Likewise.
3114         * testsuite/script_test_5.t: Likewise.
3115         * testsuite/script_test_6.t: Likewise.
3116         * testsuite/script_test_7.t: Likewise.
3117         * testsuite/script_test_9.t: Likewise.
3118
3119 2012-09-05  Alan Modra  <amodra@gmail.com>
3120
3121         * powerpc.cc (Powerpc_relobj::get_opd_ent): Make const.
3122         (Powerpc_relocate_functions::Status): New typedef.
3123         (Target_powerpc::Scan::get_reference_flags): Handle more relocs.
3124         (Target_powerpc::Scan::local): Handle REL64.
3125         (Target_powerpc::Scan::global): Likewise, and dynamic relocs
3126         for REL32 and REL64.
3127         (Target_powerpc::symval_for_branch): New function, extracted from..
3128         (Target_powerpc::Relocate::relocate): ..here.  Correct plt call
3129         checks.  Report overflow errors.
3130
3131 2012-09-05  Alan Modra  <amodra@gmail.com>
3132
3133         * object.h (Sized_relobj_file::emit_relocs): Delete.
3134         (Sized_relobj_file::emit_relocs_reltype): Delete.
3135         * reloc.cc (Sized_relobj_file::do_relocate_sections): Call target
3136         relocate_relocs for --emit-relocs.
3137         (Sized_relobj_file::emit_relocs, emit_relocs_reltype): Delete.
3138         * output.h: Update comment.
3139         (Output_segment::first_section): New function.
3140         (Output_segment::first_section_load_address): Use first_section.
3141         * output.cc (Output_segment::first_section): New function extracted..
3142         (Output_segment::first_section_load_address): ..from here.  Delete.
3143         * target-reloc.h (relocate_for_relocatable): Rename to relocate_relocs.
3144         * target.h (Sized_target::relocate_for_relocatable): Likewise.
3145         * arm.cc (Target_arm::relocate_for_relocatable): Likewise, and
3146         adjust call to target.h function.
3147         * i386.cc (Target_i386): Likewise.
3148         * sparc.cc (Target_sparc): Likewise.
3149         * x86_64.cc (Target_x86_64): Likewise.
3150         * powerpc.cc (Target_powerpc): Likewise.
3151         (Target_powerpc::Scan::local, global): Handle R_POWERPC_TLS.  Ensure
3152         first tls section has section symbol for optimised local dynamic
3153         output relocs.
3154         (Target_powerpc::Relocate::relocate): Correct local dynamic value.
3155         (Target_powerpc::relocate_relocs): Adjust relocs emitted for
3156         optimised tls code.
3157         * testsuite/testfile.cc (Target_test::relocate_for_relocatable):
3158         Rename to relocate_relocs.  Update error message.
3159
3160 2012-09-04  Andreas Schwab  <schwab@linux-m68k.org>
3161
3162         * powerpc.cc (do_make_elf_object): Allow ET_EXEC files with
3163         --just-symbols.
3164
3165 2012-08-31  Alan Modra  <amodra@gmail.com>
3166
3167         * powerpc.cc (Powerpc_relobj): Add and use Address typedef.
3168         (Powerpc_relobj::toc_base_offset): New stub function.
3169         (Target_powerpc): Add tp_offset, dtp_offset.  Rename
3170         got_mod_index_offset to tlsld_got_offset.  Update all refs.
3171         (Target_powerpc::Relocate::enum skip_tls): New.
3172         (Target_powerpc::call_tls_get_addr_): New var.
3173         (Target_powerpc::is_branch_reloc): Move to file scope.
3174         (Target_powerpc::relocate_tls, optimize_tls_reloc): Delete.
3175         (Target_powerpc::optimize_tls_gd, optimize_tls_ld, optimize_tls_ie):
3176         New functions.
3177         (Target_powerpc::enum Got_type): Delete old values, add new ones.
3178         (powerpc_info): Correct common_pagesize for ppc64.
3179         (at_tls_transform, needs_dynamic_reloc, use_plt_offset): New functions.
3180         (Powerpc_relocate_functions): Add overflow check enums and functions.
3181         Add non-shift version of rela, rela_ua.  Delete all rel public
3182         functions.  Delete addr16_lo.  Add addr64, addr64_u, addr32,
3183         addr32_u, addr24, addr16_u, addr16_hi2, addr16_ha2, addr16_hi3,
3184         addr16_ha3, addr14 functions.
3185         (Output_data_got_powerpc::add_constant_pair): New function.
3186         (Output_data_got_powerpc::got_base_offset): Likewise.
3187         (Output_data_got_powerpc::do_write): Correct 64-bit got header.
3188         (instruction constants): Sort, add some more.
3189         (Output_data_glink::do_write): Add and use Address typedef.  Use
3190         object->toc_base_offset() stub for 64-bit.
3191         (Target_powerpc::tlsld_got_offset): Use add_constant_pair.
3192         (Target_powerpc::Scan::get_reference_flags): Handle more relocs.
3193         (Target_powerpc::Scan::local, global): Emit relative dynamic reloc
3194         for R_PPC64_TOC.  Handle more relocs.  Generate got entries for TLS.
3195         Always treat .opd relocs as against locally defined symbol.
3196         Correct condition for RELATIVE relocs.
3197         (Target_powerpc::do_finalize_sections): Test for NULL sections.
3198         (Target_powerpc::Relocate::relocate): Use plt call stub as value
3199         for 32-bit syms with a plt entry.  Correct ppc64 toc base
3200         calculations.  Handle TLS relocs, and more.  Add overflow
3201         checking and adjust for Powerpc_relocate_functions changes.
3202         (Target_powerpc::relocate_for_relocatable): Handle zero r_sym.
3203         Reinstate --emit-relocs code with FIXME.
3204
3205 2012-08-30  Alan Modra  <amodra@gmail.com>
3206
3207         * layout.cc (Layout::set_segment_offsets): Set p_align to
3208         abi_pagesize, not common_pagesize.
3209         (Layout::relaxation_loop_body): Similarly use abi_pagesize
3210         to determine whether file header can go in segment.
3211
3212 2012-08-30  Alan Modra  <amodra@gmail.com>
3213
3214         * output.h (Output_reloc::Output_reloc <output section>): Add
3215         is_relative param.  Adjust calls.
3216         (Output_reloc::add_output_section_relative): New functions.
3217         * output.cc (Output_reloc::Output_reloc <output section>): Handle
3218         is_relative.
3219         (Output_reloc::symbol_value): Handle SECTION_CODE.
3220
3221 2012-08-24  Sriraman Tallam  <tmsriram@google.com>
3222
3223         * gold.cc (queue_middle_tasks): Call layout again when unique
3224         segments for sections is desired.
3225         * layout.cc (Layout::Layout): Initialize new members.
3226         (Layout::get_output_section_flags): New function.
3227         (Layout::choose_output_section): Call get_output_section_flags.
3228         (Layout::layout): Make output section for mapping to a unique segment.
3229         (Layout::insert_section_segment_map): New function.
3230         (Layout::attach_allocated_section_to_segment): Make unique segment for
3231         output sections marked so.
3232         (Layout::segment_precedes): Check for unique segments when sorting.
3233         * layout.h (Layout::Unique_segment_info): New struct.
3234         (Layout::Section_segment_map): New typedef.
3235         (Layout::insert_section_segment_map): New function.
3236         (Layout::get_output_section_flags): New function.
3237         (Layout::is_unique_segment_for_sections_specified): New function.
3238         (Layout::set_unique_segment_for_sections_specified): New function.
3239         (Layout::unique_segment_for_sections_specified_): New member.
3240         (Layout::section_segment_map_): New member.
3241         * object.cc (Sized_relobj_file<size, big_endian>::do_layout):
3242         Rename is_gc_pass_one to is_pass_one.
3243         Rename is_gc_pass_two to is_pass_two.
3244         Rename is_gc_or_icf to is_two_pass.
3245         Check for which pass based on whether symbols data is present.
3246         Make it two pass when unique segments for sections is desired.
3247         * output.cc (Output_section::Output_section): Initialize new
3248         members.
3249         * output.h (Output_section::is_unique_segment): New function.
3250         (Output_section::set_is_unique_segment): New function.
3251         (Output_section::is_unique_segment_): New member.
3252         (Output_section::extra_segment_flags): New function.
3253         (Output_section::set_extra_segment_flags): New function.
3254         (Output_section::extra_segment_flags_): New member.
3255         (Output_section::segment_alignment): New function.
3256         (Output_section::set_segment_alignment): New function.
3257         (Output_section::segment_alignment_): New member.
3258         (Output_segment::Output_segment): Initialize is_unique_segment_.
3259         (Output_segment::is_unique_segment): New function.
3260         (Output_segment::set_is_unique_segment): New function.
3261         (Output_segment::is_unique_segment_): New member.
3262         * plugin.cc (allow_unique_segment_for_sections): New function.
3263         (unique_segment_for_sections): New function.
3264         (Plugin::load): Add new functions to transfer vector.
3265         * Makefile.am (plugin_final_layout.readelf.stdout): Add readelf output.
3266         * Makefile.in: Regenerate.
3267         * testsuite/plugin_final_layout.sh: Check if unique segment
3268         functionality works.
3269         * testsuite/plugin_section_order.c (onload): Check if new interfaces
3270         are available.
3271         (allow_unique_segment_for_sections): New global.
3272         (unique_segment_for_sections): New global.
3273         (claim_file_hook): Call allow_unique_segment_for_sections.
3274         (all_symbols_read_hook): Call unique_segment_for_sections.
3275
3276 2012-08-22  Cary Coutant  <ccoutant@google.com>
3277
3278         * layout.cc (Layout::include_section): Don't assert on GROUP
3279         sections with --emit-relocs.
3280
3281 2012-08-21  Cary Coutant  <ccoutant@google.com>
3282
3283         * symtab.cc (Symbol_table::gc_mark_undef_symbols): Don't assert
3284         if --export-dynamic-symbol names an undef symbol.
3285
3286 2012-08-18  Alan Modra  <amodra@gmail.com>
3287
3288         * powerpc.cc: Formatting and white space.
3289         (Powerpc_relobj): Rename got2_section_ to special_.
3290         Add opd_ent_shndx_ and opd_ent_off_ vectors.
3291         (Powerpc_relobj::opd_shndx, init_opd, get_opd_ent, set_opd_ent,
3292         scan_opd_relocs, do_read_relocs, opd_ent_ndx): New functions.
3293         (Target_powerpc): Add Address typedef and invalid_address.  Use
3294         throughout.
3295         (Target_powerpc::is_branch_reloc): New function.
3296         (Powerpc_relocate_functions): Add Address typedef, use throughout.
3297         (Powerpc_relocate_functions:rela, rela_ua): Correct type used
3298         for dst_mask, value and addend.
3299         (Powerpc_relobj::do_find_special_sections): Find .opd for 64-bit.
3300         (ld_2_1, cror_15_15_15, cror_31_31_31): New insn constants.
3301         (Output_data_glink::do_write): Correct toc base.  Don't try to use
3302         uint16_t for 24-bit offset.  Use get_output_section_offset and
3303         check return.
3304         (Target_powerpc::Scan::local): Handle more relocs.
3305         (Target_powerpc::do_finalize_sections): Set up DT_PPC64_GLINK.
3306         (Target_powerpc::Relocate::relocate): Correct toc base calculation.
3307         Plug in toc restoring insn after plt calls.  Translate branches
3308         to function descriptor symbols to corresponding entry point.
3309         (Target_powerpc::relocate_for_relocatable): Check return from
3310         get_output_section_offset.
3311         * symtab.h: Comment typo.
3312
3313 2012-08-14  Ian Lance Taylor  <iant@google.com>
3314
3315         * x86_64.cc (Target_x86_64::Scan::global): Fix erroneous call to
3316         unsupported_relocal_local to call unsupported_reloc_global.
3317
3318 2012-08-14  Nick Clifton  <nickc@redhat.com>
3319
3320         PR ld/14265
3321         * script-sections.cc (Sections_element::output_section_name): Add
3322         keep return parameter.
3323         (Output_section_element::match_name): Add keep return parameter.
3324         Return the value of the keep_ member.
3325         * script-sections.h (class Output_section): Update
3326         output_section_name prototype.
3327         * layout.cc (Layout::keep_input_section): New public member
3328         function.
3329         (Layout::choose_output_section): Pass keep parameter to
3330         output_section_name.
3331         * layout.h (class Layout): Add keep_input_section.
3332         * object.cc (Sized_relobj_file::do_layout): Check for kept input
3333         sections.
3334         * testsuite/Makefile.am: Add a test.
3335         * testsuite/Makefile.in: Regenerate.
3336         * testsuite/pr14265.c: Source file for the test.
3337         * testsuite/pr14265.t: Linker script for the test.
3338         * testsuite/pr14265.sh: Shell script for the test.
3339
3340 2012-08-14  Alan Modra  <amodra@gmail.com>
3341
3342         * target.h (Target::output_section_name): New function.
3343         (Target::do_output_section_name): New function.
3344         * layout.cc (Layout::choose_output_section): Call the above.
3345         * powerpc.cc (Target_powerpc::do_output_section_name): New function.
3346
3347 2012-08-14  Alan Modra  <amodra@gmail.com>
3348
3349         * powerpc.cc: Update for renamed R_PPC_REL16 relocs.
3350         (Output_data_got_powerpc::do_write): Don't rely on base class lookup
3351         for replace_constant call.
3352         (Output_data_plt_powerpc::do_print_to_mapfile): New function.
3353         (Output_data_glink::do_print_to_mapfile): New function.
3354         (Target_powerpc::Scan::local): Ignore R_PPC64_TOCSAVE.
3355         (Target_powerpc::Relocate::relocate): Likewise.
3356
3357 2012-08-14  Alan Modra  <amodra@gmail.com>
3358
3359         * powerpc.cc (Powerpc_relobj::set_got2_shndx): Delete.
3360         (Powerpc_relobj::do_find_special_sections): Don't use set_got2_shndx.
3361         (Output_data_glink::add_entry,find_entry): Remove shndx param.
3362         (class Glink_sym_ent): Rename from struct Glink_sym_ent.  Remove
3363         all references to shndx_.  Handle special case for R_PPC_PLTREL24
3364         here.
3365         (class Glink_sym_ent_hash): Rename from struct Glink_sym_ent_hash.
3366         (Output_data_glink::do_write): Retrieve got2_shdnx from object.
3367         (Target_powerpc::make_plt_entry): Don't special case R_PPC_PLTREL24
3368         here.
3369         (Target_powerpc::Scan::global): Nor on make_plt_entry call.
3370         (Target_powerpc::Relocate::relocate): Nor on glink->find_entry call.
3371
3372 2012-08-12  Alan Modra  <amodra@gmail.com>
3373
3374         * powerpc.cc: Whitespace fixes.  Wrap overly long lines.
3375         (glink insn constants): Use uint32_t.
3376         (Output_data_glink::add_entry): Use insert, not [] operator.
3377
3378 2012-08-11  Alan Modra  <amodra@gmail.com>
3379
3380         * object.h (Sized_relobj_file::find_shdr): New function.
3381         (Sized_relobj_file::find_special_sections): New function.
3382         * object.cc (Sized_relobj_file::find_shdr): New function.
3383         (Sized_relobj_file::find_eh_frame): Use find_shdr.
3384         (Sized_relobj_file::find_special_sections): New function, split out..
3385         (Sized_relobj_file::do_read_symbols): ..from here.
3386         * output.h (Output_data_got::replace_constant): New function.
3387         (Output_data_got::num_entries): New function.
3388         (Output_data_got::last_got_offset,set_got_size): Use num_entries.
3389         (Output_data_got::got_offset): Protected rather than private.
3390         (Output_data_got::replace_got_entry): New function.
3391         * output.cc (Output_data_got::replace_got_entry): New function.
3392         * powerpc.cc (class Powerpc_relobj): New.
3393         (class Powerpc_relocate_functions): Delete all psymval variants or
3394         convert to value,addend type.  Delete pcrela, pcrela_unaligned.
3395         Implement _ha functions using corresponding _hi function.
3396         (Powerpc_relobj::find_special_sections): New function.
3397         (Target_powerpc::do_make_elf_object): New function.
3398         (class Output_data_got_powerpc): New.
3399         (class Output_data_glink): New.
3400         (class Powerpc_scan_relocatable_reloc): New.
3401         Many more changes througout file.
3402
3403 2012-08-09  Nick Clifton  <nickc@redhat.com>
3404
3405         * po/vi.po: Updated Vietnamese translation.
3406
3407 2012-08-07  Ian Lance Taylor  <iant@google.com>
3408
3409         * layout.cc (Layout::add_target_dynamic_tags): If
3410         dynrel_includes_plt but no dyn_rel, emit dynamic reloc tags for
3411         plt_rel.
3412
3413 2012-07-30  Nick Clifton  <nickc@redhat.com>
3414
3415         * po/gold.pot: Updated template.
3416         * po/es.po: Updated Spanish translation.
3417
3418 2012-07-18  Cary Coutant  <ccoutant@google.com>
3419
3420         PR gold/14344
3421         * configure.ac: Add check for -gpubnames support.
3422         * configure: Regenerate.
3423         * testsuite/Makefile.am (gdb_index_test_1): Add check for -gpubnames
3424         support; force -gno-pubnames.
3425         (gdb_index_test_2, gdb_index_test_3): Add check for -gpubnames
3426         support.
3427         (gdb_index_test_4): New test.
3428         * testsuite/Makefile.in: Regenerate.
3429         * testsuite/gdb_index_test_1.sh: Refactor code into common file.
3430         * testsuite/gdb_index_test_2.sh: Likewise.
3431         * testsuite/gdb_index_test_3.sh: Don't look for space after colon.
3432         * testsuite/gdb_index_test_4.sh: New script.
3433         * testsuite/gdb_index_test_comm.sh: New script with common code;
3434         don't look for space after colon.
3435
3436 2012-07-16  Sriraman Tallam  <tmsriram@google.com>
3437
3438         * gold.cc (queue_middle_tasks): Update function order only after
3439         deferred objects due to plugins are processed.
3440
3441 2012-07-11  Ian Lance Taylor  <iant@google.com>
3442
3443         * arm.cc (Arm_relocate_functions::abs16): Remove unused typedef.
3444         (Arm_exidx_cantunwind::do_fixed_endian_write): Likewise.
3445         (Target_arm::scan_reloc_for_stub): Likewise.
3446         * common.cc (Symbol_table::do_allocate_commons_list): Likewise.
3447         * dwarf_reader.cc (Dwarf_die::skip_attributes): Likewise.
3448         * ehframe.cc (Eh_frame::do_add_ehframe_input_section): Likewise.
3449         * incremental.cc (Sized_incr_dynobj::do_add_symbols): Likewise.
3450         * powerpc.cc (Target_powerpc::relocate_tls): Likewise.
3451
3452 2012-07-10  Dodji Seketeli  <dodji@redhat.com>
3453             Ian Lance Taylor  <iant@google.com>
3454
3455         PR gold/14309
3456         * configure.ac: Test whether std::tr1::hash<off_t> works.
3457         * gold.h: Add a specialization for std::tr1::hash<off_t> if
3458         needed.
3459         * output.h (class Output_fill): Add virtual destructor.
3460         * configure, config.in: Rebuild.
3461
3462 2012-06-22  Roland McGrath  <mcgrathr@google.com>
3463
3464         * layout.cc (finalize): Define __ehdr_start symbol if applicable.
3465
3466 2012-06-12  Rafael Ávila de Espíndola <respindola@mozilla.com>
3467
3468         * plugin.cc (Plugin::load): Handle position independent executables.
3469
3470 2012-06-06  Cary Coutant  <ccoutant@google.com>
3471
3472         * layout.cc (gdb_sections): Remove ".debug_" prefixes,
3473         add .debug_macro.
3474         (lines_only_debug_sections): Likewise.
3475         (gdb_fast_lookup_sections): New static array.
3476         (is_gdb_debug_section): Rename formal parameter.
3477         (is_lines_only_debug_section): Likewise.
3478         (is_gdb_fast_lookup_section): New function.
3479         (Layout::include_section): Check for ".zdebug_" prefix; pass
3480         section name suffix to is_gdb_debug_section, et al.; check for
3481         fast-lookup sections when building .gdb_index.
3482         * options.h (--strip-debug-gdb): Update GDB version number.
3483
3484 2012-06-06  Cary Coutant  <ccoutant@google.com>
3485
3486         * configure.ac: Add check for fallocate.
3487         * configure: Regenerate.
3488         * config.in: Regenerate.
3489
3490         * options.h (class General_options): Add --mmap-output-file and
3491         --posix-fallocate options.
3492         * output.cc: (posix_fallocate): Remove; replace with...
3493         (gold_fallocate): New function.
3494         (Output_file::map_no_anonymous): Call gold_fallocate.
3495         (Output_file::map): Check --mmap-output-file option.
3496
3497 2012-06-05  Jing Yu  <jingyu@google.com>
3498
3499         * gold.h (textdomain): Add do {} to empty while(0).
3500         (bindtextdomain): Likewise.
3501
3502 2012-06-04  Cary Coutant  <ccoutant@google.com>
3503
3504         * dynobj.cc (Sized_dynobj::do_get_global_symbol_counts): Call
3505         has_dynsym_index.
3506
3507 2012-05-25  Sriraman Tallam  <tmsriram@google.com>
3508
3509         * symtab.cc (Symbol_table::define_special_symbol):
3510         Initialize *poldsym to prevent uninitialized variable errors.
3511
3512 2012-05-23  Cary Coutant  <ccoutant@google.com>
3513
3514         * layout.cc (Layout::section_name_mapping): Add rules to handle
3515         exact match on .data.rel.ro.local or .data.rel.ro.
3516         (Layout::output_section_name): Check for exact matches.
3517
3518 2012-05-23  Cary Coutant  <ccoutant@google.com>
3519
3520         * layout.cc (Layout::section_name_mapping): Match .data.rel.ro.*
3521         more carefully.
3522
3523 2012-05-22  Cary Coutant  <ccoutant@google.com>
3524
3525         * symtab.cc (Symbol::should_add_dynsym_entry): Check for relocatable
3526         object before exporting symbol.
3527
3528 2012-05-21  H.J. Lu  <hongjiu.lu@intel.com>
3529
3530         * testsuite/tls_test.cc: Include "config.h" first.
3531         * testsuite/tls_test_c.c: Likewise.
3532
3533 2012-05-17  Daniel Richard G.  <skunk@iskunk.org>
3534             Nick Clifton  <nickc@redhat.com>
3535
3536         PR 14072
3537         * configure.in: Add check that sysdep.h has been included before
3538         any system header files.
3539         * configure: Regenerate.
3540         * config.in: Regenerate.
3541
3542 2012-05-14  Cary Coutant  <ccoutant@google.com>
3543
3544         * layout.cc (Layout::make_output_section): Mark .tdata section
3545         as RELRO.
3546         * testsuite/relro_test.cc: Add a TLS variable.
3547
3548 2012-05-10  H.J. Lu  <hongjiu.lu@intel.com>
3549
3550         PR gold/14091
3551         * x86_64.cc (Target_x86_64::Scan::local): For x32, generate
3552         R_X86_64_RELATIVE64 instead of R_X86_64_RELATIVE in case of
3553         R_X86_64_64.
3554
3555 2012-05-08  Cary Coutant  <ccoutant@google.com>
3556
3557         * layout.cc (gdb_sections): Update GDB version, add .debug_addr.
3558         (lines_only_debug_sections): Likewise.
3559
3560 2012-05-02  Roland McGrath  <mcgrathr@google.com>
3561
3562         * nacl.cc: New file.
3563         * nacl.h: New file.
3564         * Makefile.am (CCFILES, HFILES): Add them.
3565         * Makefile.in: Regenerate.
3566         * i386.cc (Output_data_plt_i386_nacl): New class.
3567         (Output_data_plt_i386_nacl_exec): New class.
3568         (Output_data_plt_i386_nacl_dyn): New class.
3569         (Target_i386_nacl): New class.
3570         (Target_selector_i386_nacl): New class.
3571         (target_selector_i386): Use it instead of Target_selector_i386.
3572         * x86_64.cc (Output_data_plt_x86_64_nacl): New class.
3573         (Target_x86_64_nacl): New class.
3574         (Target_selector_x86_64_nacl): New class.
3575         (target_selector_x86_64, target_selector_x32): Use it instead of
3576         Target_selector_x86_64.
3577         * arm.cc (Output_data_plt_arm_nacl): New class.
3578         (Target_arm_nacl): New class.
3579         (Target_selector_arm_nacl): New class.
3580         (target_selector_arm, target_selector_armbe): Use it instead of
3581         Target_selector_arm.
3582
3583         * target-select.cc (select_target): Take new Input_file* and off_t
3584         arguments, pass them on to recognize method of selector.
3585         * object.cc (make_elf_sized_object): Update caller.
3586         * parameters.cc (parameters_force_valid_target): Likewise.
3587         * incremental.cc (make_sized_incremental_binary): Likewise.
3588         * target-select.h: Update decl.
3589         (Target_selector::recognize): Take new Input_file* argument,
3590         pass it on to do_recognize.
3591         (Target_selector::do_recognize): Take new Input_file* argument.
3592         * freebsd.h (Target_selector_freebsd::do_recognize): Likewise.
3593         * powerpc.cc (Target_selector_powerpc::do_recognize): Likewise.
3594         * sparc.cc (Target_selector_sparc::do_recognize): Likewise.
3595         * testsuite/testfile.cc (Target_selector::do_recognize): Likewise.
3596
3597         * target.h (Target::Target_info): New members isolate_execinstr
3598         and rosegment_gap.
3599         (Target::isolate_execinstr, Target::rosegment_gap): New methods.
3600         * arm.cc (Target_arm::arm_info): Update initializer.
3601         * i386.cc (Target_i386::i386_info): Likewise.
3602         * powerpc.cc (Target_powerpc::powerpc_info): Likewise.
3603         * sparc.cc (Target_sparc::sparc_info): Likewise.
3604         * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
3605         * testsuite/testfile.cc (Target_test::test_target_info): Likewise.
3606         * layout.cc (Layout::attach_allocated_section_to_segment):
3607         Take new const Target* argument.  If target->isolate_execinstr(), act
3608         like --rosegment.
3609         (Layout::find_first_load_seg): Take new const Target* argument;
3610         if target->isolate_execinstr(), reject PF_X segments.
3611         (Layout::relaxation_loop_body): Update caller.
3612         (Layout::set_segment_offsets): If target->isolate_execinstr(),
3613         reset file offset to zero when we hit LOAD_SEG, and then do a second
3614         loop over the segments before LOAD_SEG to reassign offsets after
3615         addresses have been determined.  Handle target->rosegment_gap().
3616         (Layout::attach_section_to_segment): Take new const Target* argument;
3617         pass it to attach_allocated_section_to_segment.
3618         (Layout::make_output_section): Update caller.
3619         (Layout::attach_sections_to_segments): Take new const Target* argument;
3620         pass it to attach_section_to_segment.
3621         * gold.cc (queue_middle_tasks): Update caller.
3622         * layout.h (Layout): Update method decls with new arguments.
3623
3624         * arm.cc (Target_arm::Target_arm): Take optional argument for the
3625         Target_info pointer to use.
3626         (Target_arm::do_make_data_plt): New virtual method.
3627         (Target_arm::make_data_plt): New method that calls it.
3628         (Target_arm::make_plt_entry): Use it.
3629         (Output_data_plt_arm::Output_data_plt_arm): Take additional argument
3630         for the section alignment.
3631         (Output_data_plt_arm::do_first_plt_entry_offset): New abstract virtual
3632         method.
3633         (Output_data_plt_arm::first_plt_entry_offset): Call it.
3634         (Output_data_plt_arm::do_get_plt_entry_size): New abstract virtual
3635         method.
3636         (Output_data_plt_arm::get_plt_entry_size): Call it.
3637         (Output_data_plt_arm::do_fill_plt_entry): New abstract virtual method.
3638         (Output_data_plt_arm::fill_plt_entry): New method that calls it.
3639         (Output_data_plt_arm::do_fill_first_plt_entry): New abstract virtual
3640         method.
3641         (Output_data_plt_arm::fill_first_plt_entry): New method that calls it.
3642         (Output_data_plt_arm::set_final_data_size): Use get_plt_entry_size
3643         method instead of sizeof(plt_entry).
3644         (Output_data_plt_arm::add_entry): Likewise.
3645         Use first_plt_entry_offset method instead of sizeof(first_plt_entry).
3646         (Target_arm::first_plt_entry_offset): Call method on this->plt_ rather
3647         than static method.
3648         (Target_arm::plt_entry_size): Likewise.
3649         (Output_data_plt_arm::first_plt_entry, Output_data_plt_arm::plt_entry):
3650         Move to ...
3651         (Output_data_plt_arm_standard): ... here, new class.
3652         (Output_data_plt_arm::do_write): Move guts of PLT filling to...
3653         (Output_data_plt_arm_standard::do_fill_first_plt_entry): ... here ...
3654         (Output_data_plt_arm_standard::do_fill_plt_entry): ... and here.
3655
3656         * x86_64.cc (Output_data_plt_x86_64::Output_data_plt_x86_64):
3657         Take additional argument for the PLT entry size.
3658         (Output_data_plt_x86_64::get_tlsdesc_plt_offset):
3659         Use get_plt_entry_size method rather than plt_entry_size variable.
3660         (Output_data_plt_x86_64::reserve_slot): Likewise.
3661         (Output_data_plt_x86_64::do_adjust_output_section): Likewise.
3662         (Output_data_plt_x86_64::add_entry): Likewise.
3663         (Output_data_plt_x86_64::add_local_ifunc_entry): Likewise.
3664         (Output_data_plt_x86_64::address_for_global): Likewise.
3665         (Output_data_plt_x86_64::address_for_local): Likewise.
3666         (Output_data_plt_x86_64::set_final_data_size): Likewise.
3667         (Output_data_plt_x86_64::first_plt_entry_offset): Likewise.
3668         Make method non-static.
3669         (Output_data_plt_x86_64::do_get_plt_entry_size): New abstract virtual
3670         method.
3671         (Output_data_plt_x86_64::get_plt_entry_size): Just call that.
3672         (Output_data_plt_x86_64::do_add_eh_frame): New abstract virtual method.
3673         (Output_data_plt_x86_64::add_eh_frame): New method to call it.
3674         (Output_data_plt_x86_64::do_fill_first_plt_entry): New abstract
3675         virtual method.
3676         (Output_data_plt_x86_64::fill_first_plt_entry): New method to call it.
3677         (Output_data_plt_x86_64::do_fill_plt_entry): New abstract
3678         virtual method.
3679         (Output_data_plt_x86_64::fill_plt_entry): New method to call it.
3680         (Output_data_plt_x86_64::do_fill_tlsdesc_entry): New abstract
3681         virtual method.
3682         (Output_data_plt_x86_64::fill_tlsdesc_entry): New method to call it.
3683         (Output_data_plt_x86_64::plt_entry_size)
3684         (Output_data_plt_x86_64::first_plt_entry)
3685         (Output_data_plt_x86_64::plt_entry)
3686         (Output_data_plt_x86_64::tlsdesc_plt_entry)
3687         (Output_data_plt_x86_64::plt_eh_frame_fde_size)
3688         (Output_data_plt_x86_64::plt_eh_frame_fde): Move to ...
3689         (Output_data_plt_x86_64_standard): ... here, new class.
3690         (Target_x86_64::Target_x86_64): Take optional argument for the
3691         Target_info pointer to use.
3692         (Target_x86_64::do_make_data_plt): New virtual method.
3693         (Target_x86_64::make_data_plt): New method to call it.
3694         (Target_x86_64::init_got_plt_for_update): Use that.
3695         Call this->plt_->add_eh_frame method here.
3696         (Output_data_plt_x86_64::init): Don't do add_eh_frame_for_plt here.
3697         (Target_x86_64::first_plt_entry_offset): Call method on this->plt_
3698         rather than static method.
3699         (Target_x86_64::plt_entry_size): Likewise.
3700         (Output_data_plt_x86_64::do_write): Use get_plt_entry_size method
3701         rather than plt_entry_size variable.  Move guts of PLT filling to...
3702         (Output_data_plt_x86_64_standard::do_fill_first_plt_entry): ... here ...
3703         (Output_data_plt_x86_64_standard::do_fill_plt_entry): ... and here ...
3704         (Output_data_plt_x86_64_standard::do_fill_tlsdesc_entry): ... and here.
3705
3706         * i386.cc (Output_data_plt_i386::Output_data_plt_i386): Take
3707         additional argument for the section alignment.
3708         Don't do add_eh_frame_for_plt here.
3709         (Output_data_plt_i386::first_plt_entry_offset): Make the method
3710         non-static.  Use get_plt_entry_size method rather than plt_entry_size
3711         variable.
3712         (Output_data_plt_i386::do_get_plt_entry_size): New abstract virtual
3713         method.
3714         (Output_data_plt_i386::get_plt_entry_size): Call it.
3715         (Output_data_plt_i386::do_add_eh_frame): New abstract virtual method.
3716         (Output_data_plt_i386::add_eh_frame): New method to call it.
3717         (Output_data_plt_i386::do_fill_first_plt_entry): New abstract virtual
3718         method.
3719         (Output_data_plt_i386::fill_first_plt_entry): New method to call it.
3720         (Output_data_plt_i386::do_fill_plt_entry): New abstract virtual
3721         method.
3722         (Output_data_plt_i386::fill_plt_entry): New method to call it.
3723         (Output_data_plt_i386::set_final_data_size): Use get_plt_entry_size
3724         method instead of plt_entry_size.
3725         (Output_data_plt_i386::plt_entry_size)
3726         (Output_data_plt_i386::plt_eh_frame_fde_size)
3727         (Output_data_plt_i386::plt_eh_frame_fde): Move to ...
3728         (Output_data_plt_i386_standard): ... here, new class.
3729         (Output_data_plt_i386_exec): New class.
3730         (Output_data_plt_i386::exec_first_plt_entry): Move to ...
3731         (Output_data_plt_i386_exec::first_plt_entry): ... here.
3732         (Output_data_plt_i386::exec_plt_entry): Move to ...
3733         (Output_data_plt_i386_exec::plt_entry): ... here.
3734         (Output_data_plt_i386_dyn): New class.
3735         (Output_data_plt_i386::first_plt_entry): Move to ...
3736         (Output_data_plt_i386_dyn::first_plt_entry): ... here.
3737         (Output_data_plt_i386::dyn_plt_entry): Move to ...
3738         (Output_data_plt_i386_dyn::plt_entry): ... here.
3739         (Target_i386::Target_i386): Take optional argument for the Target_info
3740         pointer to use.
3741         (Target_i386::do_make_data_plt): New virtual method.
3742         (Target_i386::make_data_plt): New method to call it.
3743         (Target_i386::make_plt_section): Use that.
3744         Call this->plt_->add_eh_frame method here.
3745         (Output_data_plt_i386::add_entry): Use get_plt_entry_size method
3746         rather than plt_entry_size variable.
3747         (Output_data_plt_i386::add_local_ifunc_entry): Likewise.
3748         (Output_data_plt_i386::address_for_local): Likewise.
3749         (Output_data_plt_i386::do_write): Likewise.
3750         Move guts of PLT filling to...
3751         (Output_data_plt_i386_exec::do_fill_first_plt_entry): ... here ...
3752         (Output_data_plt_i386_exec::do_fill_plt_entry): ... and here ...
3753         (Output_data_plt_i386_dyn::do_fill_first_plt_entry): ... and here ...
3754         (Output_data_plt_i386_dyn::do_fill_plt_entry): ... and here.
3755
3756 2012-05-01  Cary Coutant  <ccoutant@google.com>
3757
3758         * dwarf_reader.cc (Dwarf_die::read_attributes)
3759         (Dwarf_die::skip_attributes, Dwarf_die::int_attribute)
3760         (Dwarf_die::uint_attribute): Remove DW_FORM_null.
3761         * reduced_debug_output.cc
3762         (Output_reduced_debug_info_section::get_die_end): Remove
3763         DW_FORM_GNU_ref_index.  Add default case.
3764
3765 2012-04-26  Mark Wielaard  <mjw@redhat.com>
3766
3767         * dwarf_reader.cc (Dwarf_die::address_attribute): New function.
3768         * dwarf_reader.h (Dwarf_die::address_attribute): Likewise.
3769         * gdb-index.cc (Gdb_index_info_reader::record_cu_ranges): Handle
3770         DW_AT_high_pc as offset from DW_AT_low_pc.
3771
3772         * testsuite/Makefile.am (gdb_index_test_3.sh): New test case.
3773         * testsuite/Makefile.in: Regenerate.
3774         * testsuite/gdb_index_test_3.c: New test source file.
3775         * testsuite/gdb_index_test_3.sh: New test source file.
3776
3777 2012-04-25  Ian Lance Taylor  <iant@google.com>
3778
3779         * arm.cc (Target_arm::do_is_defined_by_abi): Make sym a const
3780         pointer.
3781         (Stub_addend_reader::operator()): Declare Arm_relocate_functions
3782         as a class, not a struct.
3783         (Target_arm::scan_span_for_cortex_a8_erratum): Likewise.
3784         (Target_arm::apply_cortex_a8_workaround): Likewise.
3785         * gc.h: Declare Reloc_types as a struct, not a class.
3786         * object.h: Declare Symbols_data as a struct.
3787         * reloc.h: Declare Read_relocs_data as a struct.
3788         * target.h: Declare Relocate_info as a struct.
3789
3790 2012-04-24  David S. Miller  <davem@davemloft.net>
3791
3792         * sparc.cc (Target_sparc::Relocate::relax_call): New function.
3793         (Target_sparc::Relocate::relocate): Call it for R_SPARC_WDISP30
3794         and R_SPARC_WPLT30.
3795
3796 2012-04-24  Cary Coutant  <ccoutant@google.com>
3797
3798         * incremental-dump.cc (find_input_containing_global): Replace
3799         magic number with symbolic constant.
3800         (dump_incremental_inputs): Update version number.
3801         * incremental.cc (Output_section_incremental_inputs): Update version
3802         number; import symbolic constants from Incremental_inputs_reader.
3803         (Incremental_inputs::create_data_sections): Align relocations
3804         section correctly for 64-bit targets.
3805         (Output_section_incremental_inputs::set_final_data_size): Use symbolic
3806         constants; add padding.
3807         (Output_section_incremental_inputs::write_header): Add assert for
3808         header_size.
3809         (Output_section_incremental_inputs::write_input_files): Add assert
3810         for input_entry_size.
3811         (Output_section_incremental_inputs::write_info_blocks): Add padding;
3812         add assert for object_info_size, input_section_entry_size,
3813         global_sym_entry_size.
3814         * incremental.h (Incremental_inputs_reader): Add symbolic constants
3815         for data structure sizes; use them.
3816         (Incremental_input_entry_reader): Import symbolic constants from
3817         Incremental_inputs_reader; use them.
3818
3819 2012-04-23  David S. Miller  <davem@davemloft.net>
3820
3821         * sparc.cc (class Target_sparc): Add elf_machine_, elf_flags_,
3822         and elf_flags_set_.
3823         (Target_sparc::Target_sparc): Initialize new fields.
3824         (Target_sparc::do_make_elf_object): New function.
3825         (Target_sparc::do_adjust_elf_header): New function.
3826
3827 2012-04-23  Cary Coutant  <ccoutant@google.com>
3828
3829         * gdb-index.cc (Gdb_index::do_write): Use Swap_aligned32 for writing
3830         CU range table of gdb index.
3831
3832 2012-04-20  David S. Miller  <davem@davemloft.net>
3833
3834         * target.cc (Sized_target::do_adjust_elf_header): Use big_endian
3835         instead of false.
3836
3837 2012-04-16  David S. Miller  <davem@davemloft.net>
3838
3839         * sparc.cc (Target_sparc::got_address): New function.
3840         (Sparc_relocate_functions::gdop_hix22): New function.
3841         (Sparc_relocate_functions::gdop_lox10): New function.
3842         (Target_sparc::Scan::local): Do not emit a GOT entry for GOTDATA
3843         relocs.
3844         (Target_sparc::Scan::local): Likewise if the global symbol is not
3845         preemptible and is not IFUNC.
3846         (Target_sparc::Relocate::relocate): Perform GOTDATA code
3847         transformations for local and non-preemptible non-IFUNC global
3848         symbols.
3849
3850         * gdb-index.cc (Gdb_index::do_write): Use Swap_unaligned when
3851         writing out 64-bit part of ranges.
3852
3853         * Makefile.am: Build IFUNC tests with -fPIC and -fPIE instead of
3854         -fpic and -fpie respectively.
3855         * Makefile.in: Regenerate.
3856
3857         * sparc.cc (class Target_sparc): Add rela_ifunc_.
3858         (Target_sparc::Target_sparc): Initialize new field.
3859         (Target_sparc::do_plt_section_for_global): New function.
3860         (Target_sparc::do_plt_section_for_local): New function.
3861         (Target_sparc::reloc_needs_plt_for_ifunc): New function.
3862         (Target_sparc::make_plt_section): New function, broken out of
3863         make_plt_entry.  Use ORDER_NON_RELRO_FIRST for ".plt".
3864         (Target_sparc::make_plt_entry): Call make_plt_section.
3865         (Target_sparc::make_local_ifunc_plt_entry): New function.
3866         (Target_sparc::rela_ifunc_section): New function.
3867         (Target_sparc::plt_section): Remove const.
3868         (Output_data_plt_sparc): Update declarations.  Define Global_ifunc
3869         and Local_ifunc types.  Add global_ifuncs_, local_ifuncs_, ifunc_rel_,
3870         and ifunc_count_ fields.
3871         (Output_data_plt_sparc::Output_data_plt_sparc): Initialize new fields.
3872         (Output_data_plt_sparc::add_entry): Handle IFUNC symbols.
3873         (Output_data_plt_sparc::add_local_ifunc_entry): New function.
3874         (Output_data_plt_sparc::rela_ifunc): New function.
3875         (Output_data_plt_sparc::emit_pending_ifunc_relocs): New function.
3876         (Output_data_plt_sparc::has_ifunc_section): New function.
3877         (Output_data_plt_sparc::entry_count): Include ifunc_count_.
3878         (Output_data_plt_sparc::address_for_global): New function.
3879         (Output_data_plt_sparc::address_for_local): New function.
3880         (Output_data_plt_sparc::plt_index_to_offset): New function.
3881         (Output_data_plt_sparc::set_final_data_size): Use plt_index_to_offset
3882         and entry_count.
3883         (Output_data_plt_sparc::do_write): Use first_plt_entry_offset and
3884         entry_count.
3885         (Target_sparc::Scan::get_reference_flags): Add R_SPARC_IRELATIVE and
3886         R_SPARC_JMP_IREL to switch.
3887         (Target_sparc::Scan::check_non_pic): Likewise.
3888         (Target_sparc::Scan::local): Handle IFUNC symbols.
3889         (Target_sparc::Scan::local): Likewise.
3890         (Target_sparc::Relocate::relocate): Likewise, use plt_address_for_global
3891         and plt_address_for_local.
3892         (Target_sparc::do_finalize_sections): Call emit_pending_ifunc_relocs.
3893         Define __rel_iplt_start and __rel_iplt_end if doing a static link.
3894
3895         * output.h (Output_reloc): Allow use_plt_offset for global relocs too.
3896         (class Output_data_reloc): Adjust calls to Output_reloc_type.
3897         (Output_data_reloc::add_global_relative): (RELA only) Add use_plt_offset.
3898         * output.cc (Output_reloc::Output_reloc): Add use_plt_offset flag for
3899         global relocs too.
3900         (Output_reloc::symbol_value): Respect use_plt_offset_ for global symbols.
3901         * powerpc.cc (Target_powerpc::Scan::global): Adjust add_global_relative
3902         calls.
3903         * sparc.cc (Target_sparc::Scan::global): Likewise.
3904         * x86_64.cc (Target_x86_64::Scan::global): Likewise.
3905
3906 2012-04-16  Cary Coutant  <ccoutant@google.com>
3907
3908         * archive.cc (Library_base::should_include_member): Check for
3909         --export-dynamic-symbol.
3910         * options.h (class General_options): Add --export-dynamic-symbol.
3911         * symtab.cc (Symbol::should_add_dynsym_entry): Check for
3912         --export-dynamic-symbol.
3913         (Symbol_table::gc_mark_undef_symbols): Likewise.
3914         (Symbol_table::do_add_undefined_symbols_from_command_line): Likewise.
3915
3916 2012-04-12  David S. Miller  <davem@davemloft.net>
3917
3918         * sparc.cc (Reloc::wdisp10): New relocation method.
3919         (Reloc::h34): Likewise.
3920         (Target_sparc::Scan::check_non_pic): Handle R_SPARC_H34.
3921         (Target_sparc::Scan::get_reference_flags): Handle R_SPARC_H34 and
3922         R_SPARC_WDISP10.
3923         (Target_sparc::Scan::local): Likewise.
3924         (Target_sparc::Scan::global): Likewise.
3925         (Target_sparc::Relocate::relocate): Likewise.
3926
3927 2012-04-09  Cary Coutant  <ccoutant@google.com>
3928
3929         * gdb-index.cc (Gdb_index_info_reader::record_cu_ranges): Allow
3930         low_pc == 0.
3931
3932 2012-04-06  Ian Lance Taylor  <iant@google.com>
3933
3934         * timer.cc: #include <unistd.h>.
3935
3936 2012-04-06  Roland McGrath  <mcgrathr@google.com>
3937
3938         * configure.in (AC_CHECK_HEADERS): Add locale.h.
3939         * config.in: Regenerate.
3940         * configure: Regenerate.
3941
3942 2012-04-05  Nick Clifton  <nickc@redhat.com>
3943
3944         * configure.ac (AC_CHECK_FUNCS): Add setlocale.
3945         (AM_LC_MESSAGES): Add.
3946         * aclocal.m4: Regenerate.
3947         * config.in: Regenerate.
3948         * configure: Regenerate.
3949
3950 2012-03-21  Cary Coutant  <ccoutant@google.com>
3951
3952         * Makefile.am: Add gdb-index.cc, gdb-index.h.
3953         * Makefile.in: Regenerate.
3954         * dwarf_reader.cc (Sized_elf_reloc_mapper::do_initialize): New function.
3955         (Sized_elf_reloc_mapper::symbol_section): New function.
3956         (Sized_elf_reloc_mapper::do_get_reloc_target): New function.
3957         (make_elf_reloc_mapper): New function.
3958         (Dwarf_abbrev_table::clear_abbrev_codes): New function.
3959         (Dwarf_abbrev_table::do_read_abbrevs): New function.
3960         (Dwarf_abbrev_table::do_get_abbrev): New function.
3961         (Dwarf_ranges_table::read_ranges_table): New function.
3962         (Dwarf_ranges_table::read_range_list): New function.
3963         (Dwarf_pubnames_table::read_section): New function.
3964         (Dwarf_pubnames_table::read_header): New function.
3965         (Dwarf_pubnames_table::next_name): New function.
3966         (Dwarf_die::Dwarf_die): New function.
3967         (Dwarf_die::read_attributes): New function.
3968         (Dwarf_die::skip_attributes): New function.
3969         (Dwarf_die::set_name): New function.
3970         (Dwarf_die::set_linkage_name): New function.
3971         (Dwarf_die::attribute): New function.
3972         (Dwarf_die::string_attribute): New function.
3973         (Dwarf_die::int_attribute): New function.
3974         (Dwarf_die::uint_attribute): New function.
3975         (Dwarf_die::ref_attribute): New function.
3976         (Dwarf_die::child_offset): New function.
3977         (Dwarf_die::sibling_offset): New function.
3978         (Dwarf_info_reader::check_buffer): New function.
3979         (Dwarf_info_reader::parse): New function.
3980         (Dwarf_info_reader::do_parse): New function.
3981         (Dwarf_info_reader::do_read_string_table): New function.
3982         (Dwarf_info_reader::lookup_reloc): New function.
3983         (Dwarf_info_reader::get_string): New function.
3984         (Dwarf_info_reader::visit_compilation_unit): New function.
3985         (Dwarf_info_reader::visit_type_unit): New function.
3986         (Sized_dwarf_line_info::Sized_dwarf_line_info): Use
3987         Sized_elf_reloc_mapper.
3988         (Sized_dwarf_line_info::symbol_section): Remove function.
3989         (Sized_dwarf_line_info::read_relocs): Use Sized_elf_reloc_mapper.
3990         (Sized_dwarf_line_info::read_line_mappings): Remove object
3991         parameter, adjust callers.
3992         (Sized_dwarf_line_info::format_file_lineno): Fix type of cast.
3993         * dwarf_reader.h: Include <sys/types.h>.
3994         (class Track_relocs): Remove forward declaration.
3995         (class Elf_reloc_mapper): New class.
3996         (class Sized_elf_reloc_mapper): New class.
3997         (class Dwarf_abbrev_table): New class.
3998         (class Dwarf_range_list): New class.
3999         (class Dwarf_ranges_table): New class.
4000         (class Dwarf_pubnames_table): New class.
4001         (class Dwarf_die): New class.
4002         (class Dwarf_info_reader): New class.
4003         (Sized_dwarf_line_info::read_line_mappings): Remove object parameter.
4004         (Sized_dwarf_line_info::symbol_section): Remove member function.
4005         * dynobj.h (Sized_dynobj::do_section_contents): Refactor code from
4006         base class.
4007         * gdb-index.cc: New source file.
4008         * gdb-index.h: New source file.
4009         * incremental.cc (Sized_relobj_incr::do_layout): Track .debug_info
4010         and .debug_types sections, call Layout::add_to_gdb_index.
4011         (Sized_relobj_incr::do_section_name): Implement.
4012         (Sized_relobj_incr::do_section_contents): Adjust parameter list and
4013         return type; Implement.
4014         (Sized_incr_dynobj::do_section_contents): Adjust parameter list and
4015         return type.
4016         * incremental.h (Sized_relobj_incr::do_section_contents): Adjust
4017         parameter list and return type.
4018         (Sized_incr_dynobj::do_section_contents): Likewise.
4019         * layout.cc: Include gdb-index.h.
4020         (Layout::Layout): Initialize gdb_index_data_.
4021         (Layout::init_fixed_output_section): Check for .gdb_index section.
4022         (Layout::add_to_gdb_index): New function. Instantiate.
4023         * layout.h: Add forward declaration for class Gdb_index.
4024         (Layout::add_to_gdb_index): New member function.
4025         (Layout::gdb_index_data_): New data member.
4026         * main.cc: Include gdb-index.h.
4027         (main): Print statistics for gdb index.
4028         * object.cc (Object::section_contents): Move code into
4029         do_section_contents.
4030         (need_decompressed_section): Check for sections needed when building
4031         gdb index.
4032         (build_compressed_section_map): Likewise.
4033         (Sized_relobj_file::do_read_symbols): Need local symbols when building
4034         gdb index.
4035         (Sized_relobj_file::do_layout): Track .debug_info and .debug_types
4036         sections; call Layout::add_to_gdb_index.
4037         (Sized_relobj_file::do_decompressed_section_contents): Call
4038         do_section_contents directly.
4039         * object.h (Object::do_section_contents): Adjust parameter list and
4040         return type.
4041         (Object::do_decompressed_section_contents): Call do_section_contents
4042         directly.
4043         (Sized_relobj_file::do_section_contents): Adjust parameter list and
4044         return type.
4045         * options.h (class General_options): Add --gdb-index option.
4046         * plugin.cc (Sized_pluginobj::do_section_contents): Adjust parameter
4047         list and return type.
4048         * plugin.h (Sized_pluginobj::do_section_contents): Likewise.
4049         * reloc.h (Track_relocs::checkpoint): New function.
4050         (Track_relocs::reset): New function.
4051
4052         * testsuite/Makefile.am (gdb_index_test_1.sh, gdb_index_test_2.sh):
4053         New test cases.
4054         * testsuite/Makefile.in: Regenerate.
4055         * testsuite/gdb_index_test.cc: New test source file.
4056         * testsuite/gdb_index_test_1.sh: New test source file.
4057         * testsuite/gdb_index_test_2.sh: New test source file.
4058
4059 2012-03-19  Doug Kwan  <dougkwan@google.com>
4060
4061         * arm.cc (Target_arm::do_define_standard_symbols): New method.
4062         (Target_arm::do_finalize_sections): Remove code which defines
4063         __exidx_start and __exidx_end.  Make symbol table parameter
4064         anonymous as it is not used.
4065         * gold.cc (queue_middle_tasks): Call target hook to define any
4066         target-specific symbols.
4067         * target.h (Target::define_standard_symbols): New method.
4068         (Target::do_define_standard_symbols): Same.
4069         * testsuite/Makefile.am (arm_exidx_test): Dump relocations also.
4070         * testsuite/Makefile.in: Regenerate.
4071         * testsuite/arm_exidx.s: Generate data relocations for __exidx_start
4072         and __exidx_end.
4073         * testsuite/arm_exidx_test.sh: Check that no unused dynamic
4074         relocations are generated for __exidx_start and __exidx_end.
4075
4076 2012-03-16  Doug Kwan  <dougkwan@google.com>
4077
4078         * testsuite/Makefile.am: Disable test initpri3b.
4079         * testsuite/Makefile.in: Regenerate.
4080
4081 2012-03-15  Doug Kwan  <dougkwan@google.com>
4082
4083         * arm.cc (Target_arm::got_section): Make .got section read-only
4084         if -z now is given.
4085
4086 2012-03-15  Ian Lance Taylor  <iant@google.com>
4087
4088         PR gold/13850
4089         * layout.cc (Layout::make_output_section): Correctly mark
4090         SHT_INIT_ARRAY, et. al., as relro.
4091
4092 2012-03-14  Doug Kwan  <dougkwan@google.com>
4093
4094         * gold/arm.cc (Target_arm::Scan::global): Generate R_ARM_GLOB_DAT
4095         dynamic relocations for protected symbols in shared objects.
4096
4097 2012-03-13  Ian Lance Taylor  <iant@google.com>
4098
4099         * resolve.cc (Symbol_table::resolve): When merging common symbols,
4100         keep the larger alignment.
4101
4102 2012-03-12  Cary Coutant  <ccoutant@google.com>
4103
4104         * dwarf_reader.cc (Sized_dwarf_line_info::process_one_opcode): Fix
4105         handling of DW_LNE_define_file.
4106
4107 2012-03-12  Cary Coutant  <ccoutant@google.com>
4108
4109         * reduced_debug_output.cc
4110         (Output_reduced_debug_info_section::get_die_end): Add new FORM
4111         codes to switch.
4112
4113 2012-02-29  Cary Coutant  <ccoutant@google.com>
4114
4115         * object.cc (need_decompressed_section): Add #ifdef ENABLE_THREADS.
4116
4117 2012-02-29  Cary Coutant  <ccoutant@google.com>
4118
4119         * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
4120         Call Object::decompressed_section_contents.
4121         * dwarf_reader.h (Sized_dwarf_line_info::~Sized_dwarf_line_info):
4122         New dtor.
4123         (Sized_dwarf_line_info::buffer_start_): New data member.
4124         * merge.cc (Output_merge_data::do_add_input_section): Call
4125         Object::decompressed_section_contents.
4126         (Output_merge_string::do_add_input_section): Likewise.
4127         * object.cc (need_decompressed_section): New function.
4128         (build_compressed_section_map): Decompress sections needed later.
4129         (Sized_relobj_file::do_decompressed_section_contents): New function.
4130         (Sized_relobj_file::do_discard_decompressed_sections): New function.
4131         * object.h (Object::decompressed_section_contents): New function.
4132         (Object::discard_decompressed_sections): New function.
4133         (Object::do_decompressed_section_contents): New function.
4134         (Object::do_discard_decompressed_sections): New function.
4135         (Compressed_section_info): New type.
4136         (Compressed_section_map): Include decompressed section contents.
4137         (Sized_relobj_file::do_decompressed_section_contents): New function.
4138         (Sized_relobj_file::do_discard_decompressed_sections): New function.
4139
4140 2012-02-16  Cary Coutant  <ccoutant@google.com>
4141
4142         * testsuite/Makefile.am (initpri2): Add --ctors-in-init-array option.
4143         * testsuite/Makefile.in: Regenerate.
4144
4145 2012-02-14  Cary Coutant  <ccoutant@google.com>
4146
4147         * options.cc (General_options::finalize): Disallow -pie and -static.
4148
4149 2012-02-03  Doug Kwan  <dougkwan@google.com>
4150
4151         * arm.cc (Arm_relocate_functions::abs8,
4152         Arm_relocate_functions::abs16): Use
4153         Bits::has_signed_unsigned_overflow32.
4154         (Arm_relocate_functions::thm_abs8): Correct range of
4155         overflow check.
4156         * reloc.h (Bits class): Change minimum number of bits from 0 to 1
4157         in assertions.
4158
4159 2012-02-02  Doug Kwan  <dougkwan@google.com>
4160
4161         * arm.cc (Reloc_stub::stub_type_for_reloc): Use PIC stubs in all
4162         position independent outputs, not just shared objects.
4163
4164 2012-01-30  H.J. Lu  <hongjiu.lu@intel.com>
4165
4166         * configure.ac: Check if -fpic -mtls-dialect=gnu2 works.
4167         * configure: Regenerated.
4168
4169 2012-01-27  Ian Lance Taylor  <iant@google.com>
4170
4171         * reloc.h (Bits): New class with static functions, copied from
4172         namespace utils in arm.cc.
4173         * arm.cc (namespace utils): Remove.  Rewrite all uses to use Bits
4174         instead.
4175
4176 2012-01-27  H.J. Lu  <hongjiu.lu@intel.com>
4177
4178         * incremental.cc (write_info_blocks): Correct relocation offset.
4179
4180 2012-01-27  H.J. Lu  <hongjiu.lu@intel.com>
4181
4182         * x86_64.cc (Relocate::tls_gd_to_ie): Support x32.
4183         (Relocate::tls_gd_to_le): Likewise.
4184
4185 2012-01-27  H.J. Lu  <hongjiu.lu@intel.com>
4186
4187         * x86_64.cc (Scan::global): Support x32 IFUNC function pointer.
4188
4189 2012-01-27  H.J. Lu  <hongjiu.lu@intel.com>
4190
4191         * configure.ac: Check if -mcmodel=medium works.
4192         * configure: Regenerated.
4193
4194 2012-01-24  Cary Coutant  <ccoutant@google.com>
4195
4196         * int_encoding.cc (read_unsigned_LEB_128): Replaced with inline
4197         definition and ...
4198         (read_unsigned_LEB_128_x): ... this new function.
4199         (read_signed_LEB_128): Replaced with inline definition and ...
4200         (read_signed_LEB_128_x): ... this new function.
4201         * int_encoding.h  (read_unsigned_LEB_128_x): New function.
4202         (read_unsigned_LEB_128): Add inline definition.
4203         (read_signed_LEB_128_x): New function.
4204         (read_signed_LEB_128): Add inline definition.
4205         * testsuite/Makefile.am (leb128_unittest): New unit test.
4206         * testsuite/Makefile.in: Regenerate.
4207         * testsuite/leb128_unittest.cc: New unit test.
4208
4209 2012-01-23  Ian Lance Taylor  <iant@google.com>
4210
4211         PR gold/13617
4212         * i386.cc (Target_i386::do_code_fill): When using a jmp
4213         instruction, pad with nop instructions.
4214         * x86_64.cc (Target_x86_64::do_code_fill): Likewise.
4215
4216 2012-01-22  H.J. Lu  <hongjiu.lu@intel.com>
4217
4218         * x86_64.cc (gc_process_relocs): Add typename on types used in
4219         template.
4220         (scan_relocs): Likewise.
4221         (relocate_section): Likewise.
4222         (apply_relocation): Likewise.
4223
4224 2012-01-10  H.J. Lu  <hongjiu.lu@intel.com>
4225
4226         * x86_64.cc (Scan::check_non_pic): Allow R_X86_64_32 for x32.
4227         (Scan::local): Use R_X86_64_RELATIVE relocation for R_X86_64_32
4228         under x32.
4229
4230 2012-01-09  H.J. Lu  <hongjiu.lu@intel.com>
4231
4232         * x86_64.cc: Initial support for x32.
4233
4234 2012-01-03  Cary Coutant  <ccoutant@google.com>
4235
4236         * gold/incremental.cc (Sized_incremental_binary::do_process_got_plt):
4237         Use abstract base class for GOT.
4238         * gold/output.h (class Output_data_got_base): New abstract base class.
4239         (class Output_data_got): Derive from new base class, adjust ctors.
4240         (Output_data_got::reserve_slot): Make virtual; rename to
4241         do_reserve_slot; Adjust callers.
4242         * gold/target.h (Sized_target::init_got_plt_for_update): Return
4243         pointer to abstract base class.
4244         * gold/x86_64.cc (Target_x86_64::init_got_plt_for_update): Likewise.
4245
4246 2011-12-18  Ian Lance Taylor  <iant@google.com>
4247
4248         * object.h (Relobj::local_symbol_value): New function.
4249         (Relobj::local_plt_offset): New function.
4250         (Relobj::local_has_got_offset): New function.
4251         (Relobj::local_got_offset): New function.
4252         (Relobj::set_local_got_offset): New function.
4253         (Relobj::do_local_symbol_value): New pure virtual function.
4254         (Relobj::do_local_plt_offset): Likewise.
4255         (Relobj::do_local_has_got_offset): Likewise.
4256         (Relobj::do_local_got_offset): Likewise.
4257         (Relobj::do_set_local_got_offset): Likewise.
4258         (Sized_relobj::do_local_has_got_offset): Rename from
4259         local_has_got_offset.
4260         (Sized_relobj::do_local_got_offset): Rename from local_got_offset.
4261         (Sized_relobj::do_set_local_got_offset): Rename from
4262         set_local_got_offset.
4263         (Sized_relobj_file::do_local_plt_offset): Rename from
4264         local_plt_offset.
4265         (Sized_relobj_file::do_local_symbol_value): New function.
4266         * object.cc (Sized_relobj_file::do_local_plt_offset): Rename from
4267         local_plt_offset.
4268         * output.cc (Output_data_got::Got_entry::write): Change object to
4269         Relobj.  Use local_symbol_value.
4270         (Output_data_got::add_global_with_rel): Change rel_dyn to
4271         Output_data_reloc_generic*.  Use add_global_generic.
4272         (Output_data_got::add_global_with_rela): Remove.  Change all
4273         callers to use add_global_with_rel.
4274         (Output_data_got::add_global_pair_with_rel): Change rel_dyn to
4275         Output_data_reloc_generic*.  Use add_global_generic.
4276         (Output_data_got::add_global_pair_with_rela): Remove.  Change all
4277         callers to use add_global_pair_with_rel.
4278         (Output_data_got::add_local): Change object to Relobj*.
4279         (Output_data_got::add_local_plt): Likewise.
4280         (Output_data_got::add_local_with_rel): Change object to Relobj*,
4281         change rel_dyn to Output_data_reloc_generic*.  Use
4282         add_local_generic.
4283         (Output_data_got::add_local_with_rela): Remove.  Change all
4284         callers to use all_local_with_rel.
4285         (Output_data_got::add_local_pair_with_rel): Change object to
4286         Relobj*, change rel_dyn to Output_data_reloc_generic*.  Use
4287         add_output_section_generic.
4288         (Output_data_got::add_local_pair_with_rela): Remove.  Change all
4289         callers to use add_local_pair_with_rel.
4290         (Output_data_got::reserve_local): Change object to Relobj*.
4291         * output.h: (class Output_data_reloc_generic): Add pure virtual
4292         declarations for add_global_generic, add_local_generic,
4293         add_output_section_generic.
4294         (class Output_data_reloc) [SHT_REL, SHT_RELA]: Implement new
4295         functions for Output_data_reloc_generic.  Update declarations for
4296         changes listed in output.cc.
4297         (class Output_data_got): Change template parameter to got_size.
4298         Don't define Rel_dyn or Rela_dyn.  Update declarations per above.
4299         * incremental.h (Sized_relobj_incr::do_local_symbol_value): New
4300         function.
4301         (Sized_relobj_incr::do_local_plt_offset): New function.
4302         * copy-relocs.cc (Copy_relocs::Copy_reloc_entry::emit): Call
4303         add_global_generic.
4304
4305 2011-12-17  Cary Coutant  <ccoutant@google.com>
4306
4307         * dwarf_reader.cc (Sized_dwarf_line_info::read_lines): Add casts.
4308         * resolve.cc (Symbol_table::resolve): Likewise.
4309         * i386.cc (Target_i386::do_code_fill): Use char constants for nop
4310         arrays.
4311         * x86_64.cc (Target_x86_64::do_code_fill): Likewise.
4312
4313 2011-12-16  Ian Lance Taylor  <iant@google.com>
4314
4315         * output.h (Output_data_reloc_generic::add): Only call
4316         add_dynamic_reloc if this is a dynamic reloc section.
4317
4318 2011-12-15  H.J. Lu  <hongjiu.lu@intel.com>
4319
4320         PR gold/13505
4321         * target-reloc.h (apply_relocation): Replace <64, false> with
4322         <size, big_endian>.
4323
4324 2011-11-25  Nick Clifton  <nickc@redhat.com>
4325
4326         * po/it.po: New Italian translation.
4327
4328 2011-11-17  Sterling Augustine  <saugustine@google.com>
4329
4330         * script.cc (script_include_directive): Implement.
4331         (read_script_file): New local variables name and search_path. Update
4332         comment. Call IS_ABSOLUTE_PATH and Dirsearch::find_file_in_dir_list.
4333         * dirsearch.h (Dirsearch::find_file_in_dir_list): Declare new method.
4334         * dirsearch.cc (Dirsearch::find_file_in_dir_list): Implement it.
4335
4336 2011-11-11  Sterling Augustine  <saugustine@google.com>
4337
4338         * yyscript.y (section_cmd): Add support for INCLUDE directive.
4339         (file_or_sections_cmd): Likewise.
4340
4341 2011-11-11  Doug Kwan  <dougkwan@google.com>
4342
4343         * arm.cc (Target_arm::do_make_elf_object): Allow executable also
4344         if --just-symbols is given.
4345
4346 2011-11-10  Doug Kwan  <dougkwan@google.com>
4347
4348         PR gold/13362
4349         * arm.cc (Target_arm::Relocate::relocate_tls): Do unaligned accesses
4350         when processing data relocs.
4351         * reloc.h (Relocate_functions::rel_unaligned): New method.
4352         (Relocate_functions::pcrel_unaligned): Ditto.
4353         (Relocate_functions::rel32_unaligned): Ditto.
4354         (Relocate_functions::pcrel32_unaligned): Ditto.
4355
4356 2011-11-09  Doug Kwan  <dougkwan@google.com>
4357
4358         PR gold/13362
4359         * arm.cc (Arm_scan_relocatable_relocs::Default_scan_relocatable_relocs):
4360         Use unaligned 4-byte relocs for static 32-bit data as required by EABI.
4361         * reloc.h (Relocatable_relocs::Reloc_strategy): New enum
4362         RELOC_ADJUST_FOR_SECTION_4_UNALIGNED.
4363         (Relocate_functions::rel_unaligned): New.
4364         (Relocate_functions::rel32_unaligned): New.
4365         * target-reloc.h (relocate_for_relocatable): Add code to handle
4366         RELOC_ADJUST_FOR_SECTION_4_UNALIGNED.
4367         * testsuite/Makefile.am (arm_unaligned_reloc_r.stdout,
4368         arm_unaligned_reloc_r): New targets.
4369         * testsuite/Makefile.in: Regenerate.
4370         * arm_unaligned_reloc.sh: Check unaligned relocs in relocatable
4371         linking.
4372
4373 2011-11-02  Ian Lance Taylor  <iant@google.com>
4374
4375         * configure.ac: Add --with-lib-path option.  Define LIB_PATH and
4376         NATIVE_LINKER.
4377         * Makefile.am (AM_CPPFLAGS): Define TOOLLIBDIR.
4378         * options.cc (General_options::finalize): Use library search path
4379         from configure script if specified.  If not native and no sysroot,
4380         only search TOOLLIBDIR.
4381         * options.h (Search_directory::Search_directory): Change name to
4382         const std::string&.
4383         (General_options::add_to_library_path_with_sysroot): Change arg to
4384         const std::string&.
4385         * configure, Makefile.in, config.in: Rebuild.
4386
4387 2011-11-02  Matthew Gretton-Dann  <matthew.gretton-dann@arm.com>
4388
4389         * arm.cc (Target_arm::may_use_v5t_interworking): Check whether
4390         we are working around the ARM1176 Erratum.
4391         * options.h (General_options::fix_arm1176): Add option.
4392         * testsuite/Makefile.am: Add testcases, and keep current ones
4393         working.
4394         * testsuite/Makefile.in: Regenerate.
4395         * testsuite/arm_fix_1176.s: New file.
4396         * testsuite/arm_fix_1176.sh: Likewise.
4397
4398 2011-11-02  Matthew Gretton-Dann  <matthew.gretton-dann@arm.com>
4399
4400         * arm.cc (Target_arm::Target_arm): Remove initialisation of
4401         may_use_blx_.
4402         (Target_arm::may_use_blx): Remove method.
4403         (Target_arm::set_may_use_blx): Likewise.
4404         (Target_arm::may_use_v4t_interworking): New method.
4405         (Target_arm::may_use_v5t_interworking): Likewise.
4406         (Target_arm::may_use_blx_): Remove member variable.
4407         (Arm_relocate_functions::arm_branch_common): Check for v5T
4408         interworking.
4409         (Arm_relocate_functions::thumb_branch_common): Likewise.
4410         (Reloc_stub::stub_type_for_reloc): Likewise.
4411         (Target_arm::do_finalize_sections): Correct interworking checks.
4412         * testsuite/Makefile.am: Add new tests.
4413         * testsuite/Makefile.in: Regenerate.
4414         * testsuite/arm_farcall_arm_arm.s: New test.
4415         * testsuite/arm_farcall_arm_arm.sh: Likewise.
4416         * testsuite/arm_farcall_arm_thumb.s: Likewise.
4417         * testsuite/arm_farcall_arm_thumb.sh: Likewise.
4418         * testsuite/arm_farcall_thumb_arm.s: Likewise.
4419         * testsuite/arm_farcall_thumb_arm.sh: Likewise.
4420         * testsuite/arm_farcall_thumb_thumb.s: Likewise.
4421         * testsuite/arm_farcall_thumb_thumb.sh: Likewise.
4422
4423 2011-10-31  Cary Coutant  <ccoutant@google.com>
4424
4425         PR gold/13023
4426         * expression.cc (Expression::eval_with_dot): Add
4427         is_section_dot_assignment parameter.
4428         (Expression::eval_maybe_dot): Likewise.  Adjust value when rhs is
4429         absolute and assigning to dot within a section.
4430         * script-sections.cc
4431         (Output_section_element_assignment::set_section_addresses): Pass
4432         dot_section to set_if_absolute.
4433         (Output_section_element_dot_assignment::finalize_symbols): Pass TRUE
4434         as is_section_dot_assignment flag to eval_with_dot.
4435         (Output_section_element_dot_assignment::set_section_addresses):
4436         Likewise.
4437         * script.cc (Symbol_assignment::set_if_absolute): Add dot_section
4438         parameter.  Also set value if relative to dot_section; set the
4439         symbol's output_section.
4440         * script.h (Expression::eval_with_dot): Add is_section_dot_assignment
4441         parameter.  Adjust all callers.
4442         (Expression::eval_maybe_dot): Likewise.
4443         (Symbol_assignment::set_if_absolute): Add dot_section parameter.
4444         Adjust all callers.
4445         * testsuite/script_test_2.t: Test assignment of an absolute value
4446         to dot within an output section element.
4447
4448 2011-10-31  Cary Coutant  <ccoutant@google.com>
4449
4450         * options.h (class General_options): Add --[no-]gnu-unique options.
4451         * symtab.cc (Symbol_table::sized_write_globals): Convert
4452         STB_GNU_UNIQUE to STB_GLOBAL if --no-gnu-unique.
4453
4454 2011-10-31  Cary Coutant  <ccoutant@google.com>
4455
4456         PR gold/13359
4457         * i386.cc (Target_i386::Relocate::relocate_tls): Remove
4458         unnecessary assertion.
4459         * x86_64.cc (Target_x86_64::Relocate::relocate_tls): Likewise.
4460
4461 2011-10-31 Sriraman Tallam  <tmsriram@google.com>
4462
4463         * symtab.h (Symbol_table::gc_mark_symbol_for_shlib): Rename to
4464         gc_mark_symbol.
4465         * symtab.cc (Symbol_table::gc_mark_symbol_for_shlib): Rename to
4466         gc_mark_symbol.
4467         Change to just keep the section associated with symbol.
4468         (Symbol_table::add_from_relobj): Mark symbols as not garbage when
4469         they are externally visible and --export-dynamic is turned on.
4470         (Symbol_table::gc_mark_dyn_syms): Call gc_mark_symbol.
4471
4472 2011-10-19  Ian Lance Taylor  <iant@google.com>
4473
4474         PR gold/13163
4475         * script-sections.cc
4476         (Output_section_element_dot_assignment::needs_output_section): New
4477         function.
4478
4479 2011-10-19  Ian Lance Taylor  <iant@google.com>
4480
4481         PR gold/13204
4482         * layout.cc (Layout::segment_precedes): Don't assert failure if a
4483         --section-start option was seen.
4484         * options.h (General_options::any_section_start): New function.
4485
4486 2011-10-18  David S. Miller  <davem@davemloft.net>
4487
4488         PR binutils/13301
4489         * sparc.cc (Target_sparc::Relocate::reloc_adjust_addr_): New
4490         member to track relocation locations that have moved during TLS
4491         reloc optimizations.
4492         (Target_sparc::Relocate::Relocate): Initialize to NULL.
4493         (Target_sparc::Relocate::relocate): Adjust view down by 4
4494         bytes if it matches reloc_adjust_addr_.
4495         (Target_sparc::Relocate::relocate_tls): Always move the
4496         __tls_get_addr call delay slot instruction forward 4 bytes when
4497         performing relaxation.
4498
4499 2011-10-18  Cary Coutant  <ccoutant@google.com>
4500
4501         * output.cc (posix_fallocate): Return 0 on success, errno on failure.
4502         (Output_file::map_no_anonymous): Check for non-zero
4503         return code from posix_fallocate.
4504
4505 2011-10-17  Cary Coutant  <ccoutant@google.com>
4506
4507         PR gold/13245
4508         * plugin.cc (is_visible_from_outside): Check for symbols
4509         referenced from dynamic objects.
4510         * resolve.cc (Symbol_table::resolve): Don't count references
4511         from dynamic objects as references from real ELF files.
4512         * testsuite/plugin_test_2.sh: Adjust expected result.
4513
4514 2011-10-17  Cary Coutant  <ccoutant@google.com>
4515
4516         * gold.cc: Include timer.h.
4517         (queue_middle_tasks): Stamp time.
4518         (queue_final_tasks): Likewise.
4519         * main.cc (main): Store timer in parameters.  Print timers
4520         for each pass.
4521         * parameters.cc (Parameters::Parameters): Initialize timer_.
4522         (Parameters::set_timer): New function.
4523         (set_parameters_timer): New function.
4524         * parameters.h (Parameters::set_timer): New function.
4525         (Parameters::timer): New function.
4526         (Parameters::timer_): New data member.
4527         (set_parameters_timer): New function.
4528         * timer.cc (Timer::stamp): New function.
4529         (Timer::get_pass_time): New function.
4530         * timer.h (Timer::stamp): New function.
4531         (Timer::get_pass_time): New function.
4532         (Timer::pass_times_): New data member.
4533
4534 2011-10-17  Cary Coutant  <ccoutant@google.com>
4535
4536         * readsyms.cc (Read_symbols::run): Don't queue an unblocker
4537         task for members of lib groups.
4538
4539 2011-10-17  Cary Coutant  <ccoutant@google.com>
4540
4541         PR gold/13288
4542         * fileread.cc (File_read::find_view): Add assert.
4543         (File_read::make_view): Move bounds check (replace with assert)...
4544         (File_read::find_or_make_view): ... to here.
4545
4546 2011-10-12  Cary Coutant  <ccoutant@google.com>
4547
4548         * output.cc (Output_file::open_base_file): Handle case where
4549         ::read returns less than requested size.
4550
4551 2011-10-10  Cary Coutant  <ccoutant@google.com>
4552
4553         * incremental.cc (Sized_relobj_incr::Sized_relobj_incr):
4554         Initialize defined_count_.
4555         (Sized_relobj_incr::do_add_symbols): Count defined symbols.
4556         (Sized_relobj_incr::do_get_global_symbol_counts): Rewrite.
4557         (Sized_incr_dynobj::Sized_incr_dynobj): Initialize defined_count_.
4558         (Sized_incr_dynobj::do_add_symbols): Count defined symbols.
4559         (Sized_incr_dynobj::do_get_global_symbol_counts): Rewrite.
4560         * incremental.h (Sized_relobj_incr::defined_count_): New data
4561         member.
4562         (Sized_incr_dynobj::defined_count_): New data member.
4563         * plugin.cc (Sized_pluginobj::do_get_global_symbol_counts):
4564         Return zeroes instead of internal error.
4565
4566 2011-10-10  Cary Coutant  <ccoutant@google.com>
4567
4568         PR gold/13249
4569         * output.cc (Output_reloc::Output_reloc): Add use_plt_offset flag.
4570         (Output_reloc::symbol_value): Return PLT offset if flag is set.
4571         * output.h (class Output_reloc): Add use_plt_offset flag.
4572         (Output_reloc::type_): Adjust size of bit field.
4573         (Output_reloc::use_plt_offset_): New bit field.
4574         (class Output_data_reloc): Adjust all calls to Output_reloc_type.
4575         (Output_data_reloc::add_local_relative): (RELA only) Add use_plt_offset
4576         flag.  Adjust all callers.
4577         * x86_64.cc (Target_x86_64::Scan::local): Check for IFUNC when
4578         creating RELATIVE relocations.
4579
4580 2011-10-10  Nick Clifton  <nickc@redhat.com>
4581
4582         * po/es.po: Updated Spanish translation.
4583         * po/fi.po: Updated Finnish translation.
4584
4585 2011-10-03   Diego Novillo  <dnovillo@google.com>
4586
4587         * options.cc (parse_uint): Fix dereference of RETVAL.
4588
4589 2011-09-29  Sriraman Tallam  <tmsriram@google.com>
4590
4591         * layout.h (section_order_map_): New member.
4592         (get_section_order_map): New member function.
4593         * output.cc (Output_section::add_input_section): Check for patterns
4594         only when --section-ordering-file is specified.
4595         * gold.cc (queue_middle_tasks): Delay updating order of sections till
4596         output_sections have been formed.
4597         * layout.cc (Layout_Layout): Initialize section_order_map_.
4598         * plugin.cc (update_section_order): Store order in order_map. Do not
4599         update the order.
4600         * testsuite/Makefile.am: Add test case for plugin_final_layout.
4601         * testsuite/Makefile.in: Regenerate.
4602         * testsuite/plugin_section_order.c: New file.
4603         * testsuite/plugin_final_layout.cc: New file.
4604         * testsuite/plugin_final_layout.sh: New file.
4605
4606 2011-09-29  Cary Coutant  <ccoutant@google.com>
4607
4608         * incremental.cc (Sized_incremental_binary::do_process_got_plt):
4609         Check for NULL.
4610         * symtab.cc (Symbol_table::add_from_relobj): Ignore version
4611         symbols during incremental update.
4612         (Symbol_table::add_from_dynobj): Likewise.
4613
4614 2011-09-27  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
4615             Ian Lance Taylor  <iant@google.com>
4616
4617         * symtab.cc (Symbol_table::define_special_symbol): Always
4618         canonicalize version string.
4619
4620 2011-09-26  Cary Coutant  <ccoutant@google.com>
4621
4622         * gold.cc (queue_initial_tasks): Move option checks ...
4623         * options.cc (General_options::finalize): ... to here. Disable
4624         some options; make others fatal.
4625
4626 2011-09-26  Cary Coutant  <ccoutant@google.com>
4627
4628         gcc PR lto/47247
4629         * plugin.cc (get_symbols_v2): New function.
4630         (Plugin::load): Add LDPT_GET_SYMBOLS_V2.
4631         (is_referenced_from_outside): New function.
4632         (Pluginobj::get_symbol_resolution_info): Add version parameter, return
4633         LDPR_PREVAILING_DEF_IRONLY_EXP when using new version.
4634         (get_symbols): Pass version parameter.
4635         (get_symbols_v2): New function.
4636         * plugin.h (Pluginobj::get_symbol_resolution_info): Add version
4637         parameter.
4638         * testsuite/plugin_test.c (get_symbols_v2): New static variable.
4639         (onload): Add LDPT_GET_SYMBOLS_V2.
4640         (all_symbols_read_hook): Use get_symbols_v2; check for
4641         LDPR_PREVAILING_DEF_IRONLY_EXP.
4642         * testsuite/plugin_test_3.sh: Update expected results.
4643
4644 2011-09-23  Simon Baldwin  <simonb@google.com>
4645
4646         * configure.ac: Add new --with-gold-ldadd and --with-gold-ldflags
4647         configuration options.
4648         * configure: Regenerate.
4649         * Makefile.am: Handle GOLD_LDADD and GOLD_LDFLAGS.
4650         * Makefile.in: Regenerate.
4651         * testsuite/Makefile.in: Regenerate.
4652
4653 2011-09-19  Sriraman Tallam  <tmsriram@google.com>
4654
4655         * plugin.h (should_defer_layout): Modify to check for any_claimed_.
4656
4657 2011-09-19  Cary Coutant  <ccoutant@google.com>
4658
4659         * incremental.cc (can_incremental_update): Fix typo in comment.
4660         * incremental.h (can_incremental_update): Likewise.
4661
4662 2011-09-18  Cary Coutant  <ccoutant@google.com>
4663
4664         * incremental.cc (can_incremental_update): New function.
4665         * incremental.h (can_incremental_update): New function.
4666         * layout.cc (Layout::init_fixed_output_section): Call it.
4667         (Layout::make_output_section): Don't allow patch space in .eh_frame.
4668         * object.cc (Sized_relobj_file::do_layout): Call
4669         can_incremental_update.
4670
4671 2011-09-13  Cary Coutant  <ccoutant@google.com>
4672
4673         * configure.ac: Check for glibc support for gnu_indirect_function
4674         support with static linking, setting automake conditional
4675         IFUNC_STATIC.
4676         * Makefile.in: Regenerate.
4677         * configure: Regenerate.
4678
4679         * testsuite/Makefile.am (ifuncmain1static, ifuncmain2static)
4680         (ifuncmain4static, ifuncmain5static, ifuncmain7static): Add check
4681         for IFUNC_STATIC.
4682         * testsuite/Makefile.in: Regenerate.
4683
4684 2011-09-13  Cary Coutant  <ccoutant@google.com>
4685
4686         * incremental.cc (Sized_relobj_incr::do_layout): Call
4687         report_comdat_group for kept comdat sections.
4688         * testsuite/Makefile.am (incremental_comdat_test_1): New test.
4689         * testsuite/Makefile.in: Regenerate.
4690         * testsuite/incr_comdat_test_1.cc: New source file.
4691         * testsuite/incr_comdat_test_2_v1.cc: New source file.
4692         * testsuite/incr_comdat_test_2_v2.cc: New source file.
4693         * testsuite/incr_comdat_test_2_v3.cc: New source file.
4694
4695 2011-09-13  Ian Lance Taylor  <iant@google.com>
4696
4697         * object.cc (Sized_relobj_file::do_layout): Remove unused local
4698         variable external_symbols_offset.
4699
4700 2011-09-12  Ian Lance Taylor  <iant@google.com>
4701
4702         * object.cc (Sized_relobj_file::do_layout): Remove assertion which
4703         triggered if object has no symbols.
4704
4705 2011-09-09  David S. Miller  <davem@davemloft.net>
4706
4707         * output.cc (Output_fill_debug_info::do_write): Use Swap_unaligned.
4708         (Output_fill_debug_line::do_write): Likewise.
4709
4710 2011-08-29  Cary Coutant  <ccoutant@google.com>
4711
4712         * output.cc: (Output_fill_debug_info::do_minimum_hole_size): Add
4713         casts to match formatting specs.
4714         (Output_fill_debug_line::do_minimum_hole_size): Likewise.
4715
4716 2011-08-26  Cary Coutant  <ccoutant@google.com>
4717
4718         * layout.cc (Free_list::allocate): Provide guarantee of minimum
4719         remaining hole size when allocating.
4720         (Layout::make_output_section): Set fill methods for debug sections.
4721         * layout.h (Free_list::Free_list_node): Move from private to
4722         public.
4723         (Free_list::set_min_hole_size): New function.
4724         (Free_list::begin, Free_list::end): New functions.
4725         (Free_list::min_hole_): New data member.
4726         * output.cc: Include dwarf.h.
4727         (Output_fill_debug_info::do_minimum_hole_size): New function.
4728         (Output_fill_debug_info::do_write): New function.
4729         (Output_fill_debug_line::do_minimum_hole_size): New function.
4730         (Output_fill_debug_line::do_write): New function.
4731         (Output_section::Output_section): Initialize new data member.
4732         (Output_section::set_final_data_size): Ensure patch space is larger
4733         than minimum hole size.
4734         (Output_section::do_write): Fill holes in debug sections.
4735         * output.h (Output_fill): New class.
4736         (Output_fill_debug_info): New class.
4737         (Output_fill_debug_line): New class.
4738         (Output_section::set_free_space_fill): New function.
4739         (Output_section::free_space_fill_): New data member.
4740         * testsuite/Makefile.am (incremental_test_3): Add
4741         --incremental-patch option.
4742         (incremental_test_4): Likewise.
4743         (incremental_test_5): Likewise.
4744         (incremental_test_6): Likewise.
4745         (incremental_copy_test): Likewise.
4746         (incremental_common_test_1): Likewise.
4747         * testsuite/Makefile.in: Regenerate.
4748
4749 2011-08-26  Nick Clifton  <nickc@redhat.com>
4750
4751         * po/es.po: Updated Spanish translation.
4752
4753 2011-08-01  Cary Coutant  <ccoutant@google.com>
4754
4755         * gold/testsuite/Makefile.am (justsyms_exec): New testcase.
4756         * gold/testsuite/Makefile.in: Regenerate.
4757         * gold/testsuite/justsyms_exec.c: New source file.
4758         * gold/testsuite/justsyms_lib.c: New source file.
4759
4760 2011-08-01  Cary Coutant  <ccoutant@google.com>
4761
4762         * layout.cc (Layout::set_segment_offsets): Don't realign text
4763         segment if -Ttext was specified.
4764         * object.cc (Sized_relobj_file::Sized_relobj_file): Store the ELF
4765         file type.
4766         * object.h (Sized_relobj_file::e_type): New function.
4767         (Sized_relobj_file::e_type_): New data member.
4768         * symtab.cc (Symbol_table::add_from_relobj): Don't add section
4769         base address for ET_EXEC files.
4770         * target.cc (Target::do_make_elf_object_implementation): Allow
4771         ET_EXEC files with --just-symbols option.
4772
4773 2011-07-28  Cary Coutant  <ccoutant@google.com>
4774
4775         * workqueue-internal.h (Workqueue_threader::should_cancel_thread):
4776         Add thread_number parameter.
4777         (Workqueue_threader_threadpool::should_cancel_thread): Likewise.
4778         * workqueue-threads.cc
4779         (Workqueue_threader_threadpool::should_cancel_thread): Cancel
4780         current thread if its thread number is greater than desired thread
4781         count.
4782         * workqueue.cc (Workqueue_threader_single::should_cancel_thread):
4783         Add thread_number parameter.
4784         (Workqueue::should_cancel_thread): Likewise.
4785         (Workqueue::find_runnable_or_wait): Pass thread_number to
4786         should_cancel_thread.
4787         * workqueue.h (Workqueue::should_cancel_thread): Add thread_number
4788         parameter.
4789
4790 2011-07-22  Sriraman Tallam  <tmsriram@google.com>
4791
4792         * symtab.cc (Symbol_table::add_from_relobj): Mark symbol as referenced
4793         only after checking if it cannot be forced local.
4794         * symtab.h (is_externally_visible): Check if the symbol is not forced
4795         local.
4796
4797 2011-07-15  Ian Lance Taylor  <iant@google.com>
4798
4799         * options.h (class General_options): Add --print-output-format.
4800         Move -EL next to -EB, for  better --help output.
4801         * target-select.cc: Include <cstdio>, "options.h", and
4802         "parameters.h".
4803         (Target_selector::do_target_bfd_name): New function.
4804         (print_output_format): New function.
4805         * target-select.h (class Target_selector): Update declarations.
4806         (Target_selector::target_bfd_name): New function.
4807         (print_output_format): Declare.
4808         * main.cc: Include "target-select.h".
4809         (main): Handle --print-output-format.
4810         * gold.cc: Include "target-select.h".
4811         (queue_initial_tasks): Handle --print-output-format when there are
4812         no input files.
4813         * parameters.cc (parameters_force_valid_target): Give a better
4814         error message if -EB/-EL does not match target.
4815         * freebsd.h (Target_selector_freebsd::do_target_bfd_name): New
4816         function.
4817
4818 2011-07-15  Ian Lance Taylor  <iant@google.com>
4819
4820         * i386.cc (class Output_data_plt_i386): Add layout_ field.
4821         (Output_data_plt_i386::Output_data_plt_i386): Initialize layout_.
4822         (Output_data_plt_i386::do_write): Write address of .dynamic
4823         section to first entry in .got.plt section.
4824         * x86_64.cc (class Output_data_plt_x86_64): Add layout_ field.
4825         (Output_data_plt_x86_64::Output_data_plt_x86_64) [both versions]:
4826         Initialize layout_.
4827         (Output_data_plt_x86_64::do_write): Write address of .dynamic
4828         section to first entry in .got.plt section.
4829         * layout.h (Layout::dynamic_section): New function.
4830
4831 2011-07-13  Sriraman Tallam  <tmsriram@google.com>
4832
4833         * archive.cc (Archive::get_elf_object_for_member): Add extra parameter
4834         to claim_file call.
4835         * layout.cc (Layout::Layout): Initialize section_ordering_specified_,
4836         input_section_position_, and input_section_glob_.
4837         (read_layout_from_file): Call function section_ordering_specified.
4838         * layout.h (is_section_ordering_specified): New function.
4839         (section_ordering_specified): New function.
4840         (section_ordering_specified_): New boolean member.
4841         * main.cc(main): Call load_plugins after layout object is defined.
4842         * output.cc (Output_section::add_input_section): Use
4843         function section_ordering_specified to check if section ordering is
4844         needed.
4845         * output.cc (Output_section::add_relaxed_input_section): Use
4846         function section_ordering_specified to check if section ordering is
4847         needed.
4848         (Output_section::update_section_layout): New function.
4849         (Output_section::sort_attached_input_sections): Check if input section
4850         must be reordered.
4851         * output.h (Output_section::update_section_layout): New function.
4852         * plugin.cc (get_section_count): New function.
4853         (get_section_type): New function.
4854         (get_section_name): New function.
4855         (get_section_contents): New function.
4856         (update_section_order): New function.
4857         (allow_section_ordering): New function.
4858         (Plugin::load): Add the new interfaces to the transfer vector.
4859         (Plugin_manager::load_plugins): New parameter.
4860         (Plugin_manager::all_symbols_read): New parameter.
4861         (Plugin_manager::claim_file): New parameter. Save the elf object for
4862         unclaimed objects.
4863         (Plugin_manager::get_elf_object): New function.
4864         (Plugin_manager::get_view): Change to directly use the bool to check
4865         if get_view is called from claim_file_hook.
4866         * plugin.h (input_objects): New function
4867         (Plugin__manager::load_plugins): New parameter.
4868         (Plugin_manager::claim_file): New parameter.
4869         (Plugin_manager::get_elf_object): New function.
4870         (Plugin_manager::in_claim_file_handler): New function.
4871         (Plugin_manager::in_claim_file_handler_): New member.
4872         (layout): New function.
4873         * readsyms.cc (Read_symbols::do_read_symbols): Call the claim_file
4874         handler with an extra parameter. Make the elf object before calling
4875         claim_file handler.
4876         * testsuite/plugin_test.c (get_section_count): New function pointer.
4877         (get_section_type): New function pointer.
4878         (get_section_name): New function pointer.
4879         (get_section_contents): New function pointer.
4880         (update_section_order): New function pointer.
4881         (allow_section_ordering): New function pointer.
4882         (onload): Check if the new interfaces exist.
4883
4884 2011-07-13  Ian Lance Taylor  <iant@google.com>
4885
4886         * i386.cc (Target_i386::got_section): If -z now, make .got.plt a
4887         relro section.
4888         * x86_64.cc (Target_x86_64::got_section): Likewise.
4889         * testsuite/Makefile.am (check_PROGRAMS): Add relro_now_test.
4890         (relro_now_test_SOURCES): New variable.
4891         (relro_now_test_DEPENDENCIES): New variable.
4892         (relro_now_test_LDFLAGS): New variable.
4893         (relro_now_test_LDADD): New variable.
4894         (relro_now_test.so): New target.
4895         * testsuite/Makefile.in: Rebuild.
4896
4897 2011-07-12  Ian Lance Taylor  <iant@google.com>
4898
4899         PR gold/12980
4900         * i386.cc (Target_i386::Scan::global): For a GOT reloc, use a
4901         GLOB_DAT relocation rather than a RELATIVE relocation for a
4902         protected symbol when creating a shared library.
4903         * x86_64.cc (Target_x86_64::Scan::global): Likewise.
4904         * testsuite/protected_1.cc (f2, get_f2_addr): New functions.
4905         * testsuite/protected_main_1.cc (main): Test that protected
4906         function has same address.
4907
4908 2011-07-11  Ian Lance Taylor  <iant@google.com>
4909
4910         PR gold/12979
4911         * options.h (class General_options): Add -Bgroup.
4912         * options.cc (General_options::finalize): If -Bgroup is set,
4913         default to --unresolved-symbols=report-all.
4914         * layout.cc (Layout::finish_dynamic_section): Implement -Bgroup.
4915         * target-reloc.h (issue_undefined_symbol_error): Handle
4916         --unresolved-symbols=report-all.
4917
4918 2011-07-08  Ian Lance Taylor  <iant@google.com>
4919
4920         PR gold/11985
4921         * layout.cc (Layout::create_initial_dynamic_sections): Don't crash
4922         if linker script discards key sections.
4923         (Layout::create_dynamic_symtab): Likewise.
4924         (Layout::assign_local_dynsym_offsets): Likewise.
4925         (Layout::sized_create_version_sections): Likewise.
4926         (Layout::create_interp): Likewise.
4927         (Layout::finish_dynamic_section): Likewise.
4928         (Layout::set_dynamic_symbol_size): Likewise.
4929
4930 2011-07-08  Ian Lance Taylor  <iant@google.com>
4931
4932         PR gold/12386
4933         * options.h (class General_options): Add --unresolved-symbols.
4934         * target-reloc.h (issue_undefined_symbol_error): Check
4935         --unresolved-symbols.  Add comments.
4936
4937 2011-07-08  Ian Lance Taylor  <iant@google.com>
4938
4939         * testsuite/odr_violation2.cc (Ordering::operator()): Make
4940         expression more complex.
4941
4942 2011-07-08  Ian Lance Taylor  <iant@google.com>
4943
4944         PR gold/11317
4945         * target-reloc.h (issue_undefined_symbol_error): New inline
4946         function, broken out of relocate_section.
4947         (relocate_section): Call issue_undefined_symbol_error.
4948         * i386.cc (Target_i386::Relocate::relocate_tls): Don't crash if
4949         there is no TLS segment if we are about to issue an undefined
4950         symbol error.
4951         * x86_64.cc (Target_x86_64::relocate_tls): Likewise.
4952
4953 2011-07-08  Ian Lance Taylor  <iant@google.com>
4954
4955         PR gold/12279
4956         * resolve.cc (Symbol_table::should_override): Add fromtype
4957         parameter.  Change all callers.  Give error when linking together
4958         TLS and non-TLS symbol.
4959         (Symbol_table::should_override_with_special): Add fromtype
4960         parameter.  Change all callers.
4961         * i386.cc (Target_i386::Relocate::relocate_tls): Don't crash if
4962         there is no TLS segment if we have reported some errors.
4963         * x86_64.cc (Target_x86_64::relocate_tls): Likewise.
4964
4965 2011-07-08  Ian Lance Taylor  <iant@google.com>
4966
4967         PR gold/12372
4968         * target.h (Target::plt_address_for_global): New function.
4969         (Target::plt_address_for_local): New function.
4970         (Target::plt_section_for_global): Remove.
4971         (Target::plt_section_for_local): Remove.
4972         (Target::do_plt_address_for_global): New virtual function.
4973         (Target::do_plt_address_for_local): New virtual function.
4974         (Target::do_plt_section_for_global): Remove.
4975         (Target::do_plt_section_for_local): Remove.
4976         (Target::register_global_plt_entry): Add Symbol_table and Layout
4977         parameters.
4978         * output.cc (Output_data_got::Got_entry::write): Use
4979         plt_address_for_global and plt_address_for_local.
4980         * layout.cc (Layout::add_target_dynamic_tags): Use size and
4981         address of output section.
4982         * i386.cc (class Output_data_plt_i386): Add irelative_rel_,
4983         got_irelative_, and irelative_count_ fields.  Update
4984         declarations.
4985         (Output_data_plt_i386::has_irelative_section): New function.
4986         (Output_data_plt_i386::entry_count): Add irelative_count_.
4987         (Output_data_plt_i386::set_final_data_size): Likewise.
4988         (class Target_i386): Add got_irelative_ and rel_irelative_
4989         fields.  Update declarations.
4990         (Target_i386::Target_i386): Initialize new fields.
4991         (Target_i386::do_plt_address_for_global): New function replacing
4992         do_plt_section_for_global.
4993         (Target_i386::do_plt_address_for_local): New function replacing
4994         do_plt_section_for_local.
4995         (Target_i386::got_section): Create got_irelative_.
4996         (Target_i386::rel_irelative_section): New function.
4997         (Output_data_plt_i386::Output_data_plt_i386): Initialize new
4998         fields.  Don't define __rel_iplt_{start,end}.
4999         (Output_data_plt_i386::add_entry): Add symtab and layout
5000         parameters.  Change all callers.  Use different PLT and GOT for
5001         IFUNC symbols.
5002         (Output_data_plt_i386::add_local_ifunc_entry): Add symtab and
5003         layout parameters.  Change all callers.  Use different PLT and
5004         GOT.
5005         (Output_data_plt_i386::rel_tls_desc): Fix formatting.
5006         (Output_data_plt_i386::rel_irelative): New function.
5007         (Output_data_plt_i386::address_for_global): New function.
5008         (Output_data_plt_i386::address_for_local): New function.
5009         (Output_data_plt_i386::do_write): Write out IRELATIVE area.  Use
5010         IRELATIVE GOT when changing IFUNC GOT entries.
5011         (Target_i386::Scan::global): Use IRELATIVE GOT for IRELATIVE
5012         reloc.
5013         (Target_i386::do_finalize_sections): Create the __rel_iplt symbols
5014         if we didn't create an IRELATIVE GOT.
5015         (Target_i386::Relocate::relocate): Use plt_address_for_global and
5016         plt_address_for_local.
5017         (Target_i386::do_dynsym_value): Use plt_address_for_global.
5018         * x86_64.cc (class Output_data_plt_x86_64): Add irelative_rel_,
5019         got_irelative_, and irelative_count_ fields.  Update
5020         declarations.
5021         (Output_data_plt_x86_64::Output_data_plt_x86_64) [both versions]:
5022         Initialize new fields.  Remove symtab parameter.  Change all
5023         callers.
5024         (Output_data_plt_x86_64::get_tlsdesc_plt_offset): Add
5025         irelative_count_.
5026         (Output_data_plt_x86_64::has_irelative_section): New function.
5027         (Output_data_plt_x86_64::entry_count): Add irelative_count_.
5028         (class Target_x86_64): Add got_irelative_ and rel_irelative_
5029         fields.  Update declarations.
5030         (Target_x86_64::Target_x86_64): Initialize new fields.
5031         (Target_x86_64::do_plt_address_for_global): New function replacing
5032         do_plt_section_for_global.
5033         (Target_x86_64::do_plt_address_for_local): New function replacing
5034         do_plt_section_for_local.
5035         (Target_x86_64::got_section): Create got_irelative_.
5036         (Target_x86_64::rela_irelative_section): New function.
5037         (Output_data_plt_x86_64::init): Remove symtab parameter.  Change
5038         all callers.  Don't create __rel_iplt_{start,end}.
5039         (Output_data_plt_x86_64::add_entry): Add symtab and layout
5040         parameters.  Change all callers.  Use different PLT and GOT for
5041         IFUNC symbols.
5042         (Output_data_plt_x86_64::add_local_ifunc_entry): Add symtab and
5043         layout parameters.  Change all callers.  Use different PLT and
5044         GOT.
5045         (Output_data_plt_x86_64::add_relocation): Add symtab and layout
5046         parameters.  Change all callers.  Use different PLT and GOT for
5047         IFUNC symbols.
5048         (Output_data_plt_x86_64::rela_tlsdesc): Fix formatting.
5049         (Output_data_plt_x86_64::rela_irelative): New function.
5050         (Output_data_plt_x86_64::address_for_global): New function.
5051         (Output_data_plt_x86_64::address_for_local): New function.
5052         (Output_data_plt_x86_64::set_final_data_size): Likewise.
5053         (Output_data_plt_x86_64::do_write): Write out IRELATIVE area.
5054         (Target_x86_64::init_got_plt_for_update): Create got_irelative_.
5055         (Target_x86_64::register_global_plt_entry): Add symtab and layout
5056         parameters.
5057         (Target_x86_64::Scan::global): Use IRELATIVE GOT for IRELATIVE
5058         reloc.
5059         (Target_x86_64::do_finalize_sections): Create the __rela_iplt
5060         symbols if we didn't create an IRELATIVE GOT.
5061         (Target_x86_64::Relocate::relocate): Use plt_address_for_global and
5062         plt_address_for_local.
5063         (Target_x86_64::do_dynsym_value): Use plt_address_for_global.
5064         * testsuite/ifuncvar1.c: New test file.
5065         * testsuite/ifuncvar2.c: New test file.
5066         * testsuite/ifuncvar3.c: New test file.
5067         * testsuite/Makefile.am (check_PROGRAMS): Add ifuncvar.
5068         (ifuncvar1_pic.o, ifuncvar2_pic.o, ifuncvar.so): New targets.
5069         (ifuncvar_SOURCES, ifuncvar_DEPENDENCIES): New variables.
5070         (ifuncvar_LDFLAGS, ifuncvar_LDADD): New variables.
5071         * testsuite/Makefile.in: Rebuild.
5072
5073 2011-07-07  Cary Coutant  <ccoutant@google.com>
5074
5075         * testsuite/Makefile.am (two_file_test_1_v1_ndebug.o): New target.
5076         (two_file_test_1_ndebug.o): Likewise.
5077         (two_file_test_1b_ndebug.o): Likewise.
5078         (two_file_test_2_ndebug.o): Likewise.
5079         (two_file_test_main_ndebug.o): Likewise.
5080         (incremental_test_2): Link with no-debug versions.
5081
5082 2011-07-06  Cary Coutant  <ccoutant@google.com>
5083
5084         * gold/incremental.cc
5085         (Output_section_incremental_inputs::write_info_blocks): Check for
5086         hidden and internal symbols.
5087
5088 2011-07-06  Cary Coutant  <ccoutant@google.com>
5089
5090         * incremental.cc (Sized_incremental_binary::do_file_has_changed):
5091         Check disposition for startup file.
5092         (Incremental_inputs::report_command_line): Ignore
5093         --incremental-startup-unchanged option.
5094         * options.cc (General_options::parse_incremental_startup_unchanged):
5095         New function.
5096         (General_options::General_options): Initialize new data member.
5097         * options.h (Incremental_disposition): Add INCREMENTAL_STARTUP.
5098         (General_options): Add --incremental-startup-unchanged option.
5099         (General_options::incremental_startup_disposition): New function.
5100         (General_options::incremental_startup_disposition_): New data member.
5101
5102 2011-07-06  Cary Coutant  <ccoutant@google.com>
5103
5104         * incremental.cc (Sized_incremental_binary::setup_readers): Pass
5105         input file index to Script_info ctor.
5106         (Sized_incremental_binary::do_file_has_changed): Find the
5107         command-line argument for files named in scripts.
5108         * incremental.h (Script_info::Script_info): New ctor
5109         with input file index.
5110         (Script_info::input_file_index): New function.
5111         (Script_info::input_file_index_): New data member.
5112         (Incremental_binary::get_library): Add const.
5113         (Incremental_binary::get_script_info): Add const.
5114         * readsyms.cc (Read_member::is_runnable): Check for this_blocker_.
5115         * testsuite/Makefile.am (incremental_test_5): New test case.
5116         (incremental_test_6): New test case.
5117         * testsuite/Makefile.in: Regenerate.
5118
5119 2011-07-06  Cary Coutant  <ccoutant@google.com>
5120
5121         * incremental.cc (Sized_incremental_binary::do_check_inputs): Add
5122         debug output when command lines differ.
5123
5124 2011-07-06  Cary Coutant  <ccoutant@google.com>
5125
5126         * incremental.cc (Incremental_inputs::report_command_line): Ignore
5127         --incremental-patch option.
5128         * layout.cc (Free_list::allocate): Extend allocation beyond original
5129         end if enabled.
5130         (Layout::make_output_section): Mark sections that should get
5131         patch space.
5132         * options.cc (parse_percent): New function.
5133         * options.h (parse_percent): New function.
5134         (DEFINE_percent): New macro.
5135         (General_options): Add --incremental-patch option.
5136         * output.cc (Output_section::Output_section): Initialize new data
5137         members.
5138         (Output_section::add_input_section): Print section name when out
5139         of patch space.
5140         (Output_section::add_output_section_data): Likewise.
5141         (Output_section::set_final_data_size): Add patch space when
5142         doing --incremental-full.
5143         (Output_section::do_reset_address_and_file_offset): Remove patch
5144         space.
5145         (Output_segment::set_section_list_addresses): Print debug output
5146         only if --incremental-update.
5147         * output.h (Output_section::set_is_patch_space_allowed): New function.
5148         (Output_section::is_patch_space_allowed_): New data member.
5149         (Output_section::patch_space_): New data member.
5150         * parameters.cc (Parameters::incremental_full): New function.
5151         * parameters.h (Parameters::incremental_full): New function
5152         * testsuite/Makefile.am (incremental_test_2): Add test for
5153         --incremental-patch option.
5154         * testsuite/Makefile.in: Regenerate.
5155         * testsuite/two_file_test_1_v1.cc (t1, t2, t3): Add comments.
5156         (t18): Remove function body.
5157
5158 2011-07-05  Doug Kwan  <dougkwan@google.com>
5159
5160         PR gold/12771
5161         * arm.cc (Arm_relocate_functions::abs8): Use int32_t for addend and
5162         Arm_Address type for relocation result.
5163         (Arm_relocate_functions::abs16): Use unaligned access.  Also fix
5164         overflow check.
5165         (Arm_relocate_functions::abs32): Use unaligned access.
5166         (Arm_relocate_functions::rel32): Ditto.
5167         (Arm_relocate_functions::prel31): Ditto.
5168         (Arm_exidix_cantunwind::do_fixed_endian_write): Ditto.
5169         * testsuite/Makefile.am: Add new test arm_unaligned_reloc for unaligned
5170         static data relocations.
5171         * testsuite/Makefile.in: Regnerate.
5172         * testsuite/arm_unaligned_reloc.{s,sh}: New files.
5173
5174 2011-07-05  Ian Lance Taylor  <iant@google.com>
5175
5176         PR gold/12392
5177         * i386.cc (Target_i386::do_finalize_sections): Define __rel_iplt
5178         symbols if necessary.
5179         * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
5180
5181 2011-07-05  Ian Lance Taylor  <iant@google.com>
5182
5183         PR gold/12952
5184         * resolve.cc (Symbol::override_base_with_special): Simply override
5185         version with special symbol version, ignoring previous version.
5186
5187 2011-07-05  Ian Lance Taylor  <iant@google.com>
5188
5189         * object.cc (Sized_relobj_file::include_section_group): Add
5190         information to comment about signature location.
5191
5192 2011-07-02  Ian Lance Taylor  <iant@google.com>
5193
5194         PR gold/12957
5195         * options.h (class General_options): Add -f and -F.
5196         * options.cc (General_options::finalize): Fatal error if -f/-F
5197         are used without -shared.
5198         * layout.cc (Layout::finish_dynamic_section): Implement -f/-F.
5199
5200 2011-07-02  Ian Lance Taylor  <iant@google.com>
5201
5202         * dirsearch.cc (Dir_cache::read_files): Ignore ENOTDIR errors.
5203
5204 2011-07-01  Ian Lance Taylor  <iant@google.com>
5205
5206         PR gold/12525
5207         PR gold/12952
5208         * resolve.cc (Symbol::override_base_with_special): Don't override
5209         the version if the overriding symbol has a different name.
5210         * dynobj.cc (Versions::add_def): Add dynpool parameter.  Change
5211         all callers.  If we give an error about an undefined version,
5212         define the base version if necessary.
5213         * dynobj.h (class Versions): Update declaration.
5214         * testsuite/weak_alias_test_5.cc: New file.
5215         * testsuite/weak_alias_test.script: New file.
5216         * testsuite/weak_alias_test_main.cc: Check that versioned_symbol
5217         and versioned_alias have the right value, and call t2.
5218         * testsuite/Makefile.am (weak_alias_test_DEPENDENCIES): Add
5219         weak_alias_test_5.so.
5220         (weak_alias_test_LDADD): Likewise.
5221         (weak_alias_test_5_pic.o, weak_alias_test_5.so): New targets.
5222         * testsuite/Makefile.in: Rebuild.
5223
5224 2011-07-01  Ian Lance Taylor  <iant@google.com>
5225
5226         PR gold/12525
5227         * options.h (class General_options): Support -z notext.
5228         * testsuite/Makefile.am (two_file_shared_1_nonpic.so): Use
5229         -Wl,-z,notext.
5230         (two_file_shared_nonpic.so): Likewise.
5231         (two_file_shared_mixed.so): Likewise.
5232         (two_file_shared_mixed_1.so): Likewise.
5233         (weak_undef_lib_nonpic.so): Likewise.
5234         (alt/weak_undef_lib_nonpic.so): Likewise.
5235         (tls_test_shared_nonpic.so): Likewise.
5236         * testsuite/Makefile.in: Rebuild.
5237
5238 2011-07-01  Ian Lance Taylor  <iant@google.com>
5239
5240         PR gold/12525
5241         * configure.ac: Test whether static linking works, setting
5242         the automake conditional HAVE_STATIC.
5243         * testsuite/Makefile.am: Disable tests using -static if
5244         HAVE_STATIC is not true.
5245         * configure, testsuite/Makefile.in: Rebuild.
5246
5247 2011-07-01  Ian Lance Taylor  <iant@google.com>
5248
5249         PR gold/12525
5250         * ehframe.cc (Eh_frame_hdr::get_fde_pc): Handle DW_EH_PE_datarel.
5251         Assert if we see DW_EH_PE_indirect.
5252         * target.h (Target::ehframe_datarel_base): New function.
5253         (Target::do_ehframe_datarel_base): New target function.
5254         * i386.cc (Target_i386::do_ehframe_datarel_base): New function.
5255         * x86_64.cc (Target_x86_64::do_ehframe_datarel_base): New
5256         function.
5257
5258 2011-07-01  Ian Lance Taylor  <iant@google.com>
5259
5260         PR gold/12571
5261         * options.h (class General_options): Add
5262         --ld-generated-unwind-info.
5263         * ehframe.cc (Fde::write): Add address parameter.  Change all
5264         callers.  If associated with PLT, fill in address and size.
5265         (Cie::set_output_offset): Only add merge mapping if there is an
5266         object.
5267         (Cie::write): Add address parameter.  Change all callers.
5268         (Eh_frame::add_ehframe_for_plt): New function.
5269         * ehframe.h (class Fde): Update declarations.  Move shndx_ and
5270         input_offset_ fields into union u_, with new plt field.
5271         (Fde::Fde): Adjust for new union field.
5272         (Fde::Fde) [Output_data version]: New constructor.
5273         (Fde::add_mapping): Only add merge mapping if there is an object.
5274         (class Cie): Update declarations.
5275         (class Eh_frame): Declare add_ehframe_for_plt.
5276         * layout.cc (Layout::layout_eh_frame): Break out code into
5277         make_eh_frame_section, and call it.
5278         (Layout::make_eh_frame_section): New function.
5279         (Layout::add_eh_frame_for_plt): New function.
5280         * layout.h (class Layout): Update declarations.
5281         * merge.cc (Merge_map::add_mapping): Add assertion.
5282         * i386.cc: Include "dwarf.h".
5283         (class Output_data_plt_i386): Make first_plt_entry,
5284         dyn_first_plt_entry, exec_plt_entry, and dyn_plt_entry const.  Add
5285         plt_eh_frame_cie_size, plt_eh_frame_fde_size, plt_eh_frame_cie,
5286         and plt_eh_frame_fde.
5287         (Output_data_plt_i386::Output_data_plt_i386): Align to 16-byte
5288         boundary.  Call add_eh_frame_for_plt if appropriate.
5289         * x86_64.cc: Include "dwarf.h".
5290         (class Output_data_plt_x86_64): Align to 16-byte boundary.  Make
5291         first_plt_entry, plt_entry and tlsdesc_plt_entry const.  Add
5292         plt_eh_frame_cie_size, plt_eh_frame_fde_size, plt_eh_frame_cie,
5293         and plt_eh_frame_fde.
5294         (Output_data_plt_x86_64::init): Call add_eh_frame_for_plt if
5295         appropriate.
5296
5297 2011-06-29  Ian Lance Taylor  <iant@google.com>
5298
5299         PR gold/12629
5300         * object.cc (Sized_relobj_file::layout_section): Change shdr
5301         parameter to be const.
5302         (Sized_relobj_file::layout_eh_frame_section): New function, broken
5303         out of do_layout.
5304         (Sized_relobj_file::do_layout): Defer .eh_frame sections if
5305         appropriate.  Call layout_eh_frame_section.
5306         (Sized_relobj_file::do_layout_deferred_sections): Handle .eh_frame
5307         sections.
5308         * object.h (class Sized_relobj_file): Update declarations.
5309
5310 2011-06-29  Ian Lance Taylor  <iant@google.com>
5311
5312         PR gold/12652
5313         * script.cc (Token::integer_value): Accept trailing M/m/K/k
5314         modifier.
5315         (Lex::gather_token): Accept trailing M/m/K/k for integers.
5316
5317 2011-06-29  Ian Lance Taylor  <iant@google.com>
5318
5319         PR gold/12675
5320         * object.cc (Sized_relobj_file::check_eh_frame_flags): Check for
5321         SHT_X86_64_UNWIND.
5322         * layout.cc (Layout::layout_eh_frame): Likewise.
5323
5324 2011-06-29  Ian Lance Taylor  <iant@google.com>
5325
5326         PR gold/12695
5327         * layout.cc (Layout::symtab_section_shndx): New function.
5328         * layout.h (class Layout): Declare symtab_section_shndx.
5329         * output.cc (Output_section::write_header): Call it.
5330
5331 2011-06-29  Ian Lance Taylor  <iant@google.com>
5332
5333         PR gold/12818
5334         * symtab.cc (Symbol::should_add_dynsym_entry): Don't add undefined
5335         symbols which are not used in a relocation.
5336
5337 2011-06-28  Ian Lance Taylor  <iant@google.com>
5338
5339         PR gold/12898
5340         * layout.cc (Layout::segment_precedes): Don't crash if a linker
5341         script create indistinguishable segments.
5342         (Layout::set_segment_offsets): Use stable_sort when sorting
5343         segments.  Pass this to Compare_segments constructor.
5344         * layout.h (class Layout): Make segment_precedes non-static.
5345         (class Compare_segments): Change from struct to class.  Add
5346         layout_ field.  Add constructor.
5347         * script-sections.cc
5348         (Script_sections::attach_sections_using_phdrs_clause): Rename
5349         local orphan to is_orphan.  Don't report failure to put empty
5350         section in segment.  On attachment failure, report name of
5351         section, and attach to first PT_LOAD segment.
5352
5353 2011-06-28  Ian Lance Taylor  <iant@google.com>
5354
5355         PR gold/12934
5356         * target-select.cc (Target_selector::Target_selector): Add
5357         emulation parameter.  Change all callers.
5358         (select_target_by_bfd_name): Rename from select_target_by_name.
5359         Change all callers.
5360         (select_target_by_emulation): New function.
5361         (supported_emulation_names): New function.
5362         * target-select.h (class Target_selector): Add emulation_ field.
5363         Update declarations.
5364         (Target_selector::recognize_by_bfd_name): Rename from
5365         recognize_by_name.  Change all callers.
5366         (Target_selector::supported_bfd_names): Rename from
5367         supported_names.  Change all callers.
5368         (Target_selector::recognize_by_emulation): New function.
5369         (Target_selector::supported_emulations): New function.
5370         (Target_selector::emulation): New function.
5371         (Target_selector::do_recognize_by_bfd_name): Rename from
5372         do_recognize_by_name.  Change all callers.
5373         (Target_selector::do_supported_bfd_names): Rename from
5374         do_supported_names.  Change all callers.
5375         (Target_selector::do_recognize_by_emulation): New function.
5376         (Target_selector::do_supported_emulations): New function.
5377         (select_target_by_bfd_name): Change name in declaration.
5378         (select_target_by_emulation): Declare.
5379         (supported_emulation_names): Declare.
5380         * parameters.cc (parameters_force_valid_target): Try to find
5381         target based on emulation from -m option.
5382         * options.h (class General_options): Change doc string for -m.
5383         * options.cc (help): Print emulations.
5384         (General_options::parse_V): Likewise.
5385         * freebsd.h (Target_selector_freebsd::Target_selector_freebsd):
5386         Add emulation parameter.  Change all callers.
5387
5388 2011-06-28  Ian Lance Taylor  <iant@google.com>
5389
5390         * target.h (class Target): Add osabi_ field.
5391         (Target::osabi): New function.
5392         (Target::set_osabi): New function.
5393         (Target::Target): Initialize osabi_.
5394         (Target::do_adjust_elf_header): Make pure virtual.
5395         (Sized_target::do_adjust_elf_header): Declare.
5396         * target.cc (Sized_target::do_adjust_elf_header): New function.
5397         (class Sized_target): Instantiate all versions.
5398         * freebsd.h (class Target_freebsd): Remove.
5399         (Target_selector_freebsd::do_recognize): Call set_osabi on
5400         Target.
5401         (Target_selector_freebsd::do_recognize_by_name): Likewise.
5402         (Target_selector_freebsd::set_osabi): Remove.
5403         * i386.cc (class Target_i386): Inherit from Sized_target rather
5404         than Target_freebsd.
5405         * x86_64.cc (class Target_x86_64): Likewise.
5406
5407 2011-06-28  Ian Lance Taylor  <iant@google.com>
5408
5409         * target.h (Target::can_check_for_function_pointers): Rewrite.
5410         Make non-virtual.
5411         (Target::can_icf_inline_merge_sections): Likewise.
5412         (Target::section_may_have_icf_unsafe_poineters): Likewise.
5413         (Target::Target_info): Add can_icf_inline_merge_sections field.
5414         (Target::do_can_check_for_function_pointers): New virtual
5415         function.
5416         (Target::do_section_may_have_icf_unsafe_pointers): Likewise.
5417         * arm.cc (Target_arm::do_can_check_for_function_pointers): Rename
5418         from can_check_for_function_pointers, move in file.
5419         (Target_arm::do_section_may_have_icf_unsafe_pointers): Rename from
5420         section_may_have_icf_unsafe_poineters, move in file.
5421         (Target_arm::arm_info): Initialize can_icf_inline_merge_sections.
5422         * i386.cc (Target_i386::do_can_check_for_function_pointers):
5423         Rename from can_check_for_function_pointers, move in file.
5424         (Target_i386::can_icf_inline_merge_sections): Remove.
5425         (Target_i386::i386_info): Initialize
5426         can_icf_inline_merge_sections.
5427         * powerpc.cc (Target_powerpc::powerpc_info) [all versions]:
5428         Initialize can_icf_inline_merge_sections.
5429         * sparc.cc (Target_sparc::sparc_info) [both version]: Likewise.
5430         * x86_64.cc (Target_x86_64::do_can_check_for_function_pointers):
5431         Rename from can_check_for_function_pointers, move in file.
5432         (Target_x86_64::can_icf_inline_merge_sections): Remove.
5433         (Target_x86_64::x86_64_info): Initialize
5434         can_icf_inline_merge_sections.
5435         * testsuite/testfile.cc (Target_test::test_target_info):
5436         Likewise.
5437         * icf.cc (get_section_contents): Correct formatting.
5438
5439 2011-06-27  Ian Lance Taylor  <iant@google.com>
5440
5441         * symtab.cc (Symbol::versioned_name): New function.
5442         (Symbol_table::add_to_final_symtab): Use versioned_name when
5443         appropriate.
5444         (Symbol_table::sized_write_symbol): Likewise.
5445         * symtab.h (class Symbol): Declare versioned_name.
5446         * stringpool.h (class Stringpool_template): Add variant of add
5447         which takes a std::basic_string.
5448         * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_12.
5449         (ver_test_12_SOURCES, ver_test_12_DEPENDENCIES): New variables.
5450         (ver_test_12_LDFLAGS, ver_test_12_LDADD): New variables.
5451         (ver_test_12.o): New target.
5452         * testsuite/Makefile.in: Rebuild.
5453
5454 2011-06-27  Doug Kwan  <dougkwan@google.com>
5455
5456         * arm.cc (Arm_relocate_functions::thm_jump8,
5457         Arm_relocate_functions::thm_jump11): Use a wider signed
5458         type to compute offset.
5459         * testsuite/Makefile.am: Add new tests arm_thm_jump11 and
5460         arm_thm_jump8.
5461         * testsuite/Makefile.in: Regenerate.
5462         * testsuite/arm_branch_in_range.sh: Check test results of
5463         arm_thm_jump11 and arm_thm_jump8.
5464         * testsuite/arm_thm_jump11.s: New test source file.
5465         * testsuite/arm_thm_jump11.t: New linker script.
5466         * testsuite/arm_thm_jump8.s: New test source file.
5467         * testsuite/arm_thm_jump8.t: New linker script.
5468
5469 2011-06-24  Ian Lance Taylor  <iant@google.com>
5470
5471         * layout.cc: Include "object.h".
5472         (ctors_sections_in_init_array): New static variable.
5473         (Layout::is_ctors_in_init_array): New function.
5474         (Layout::layout): Add entry to ctors_sections_in_init_array if
5475         appropriate.
5476         * layout.h (class Layout): Declare is_ctors_in_init_array.
5477         * reloc.cc (Sized_relobj_file::do_relocate): Call reverse_words if
5478         is_ctors_reverse_view is set.
5479         (Sized_relobj_file::write_sections): Add layout parameter.  Change
5480         all callers.  Set is_ctors_reverse_view field of View_size.
5481         (Sized_relobj_file::reverse_words): New function.
5482         * object.h (Sized_relobj_file::View_size): Add
5483         is_ctors_reverse_view field.
5484         (class Sized_relobj_file): Update declarations.
5485         * testsuite/initpri3.c: New test.
5486         * testsuite/Makefile.am: (check_PROGRAMS): Add initpri3a and
5487         initpri3b.
5488         (initpri3a_SOURCES, initpri3a_DEPENDENCIES): New variables.
5489         (initpri3a_LDFLAGS, initpri3a_LDADD): New variables.
5490         (initpri3b_SOURCES, initpri3b_DEPENDENCIES): New variables.
5491         (initpri3b_LDFLAGS, initpri3b_LDADD): New variables.
5492         * testsuite/Makefile.in: Rebuild.
5493
5494 2011-06-24  Cary Coutant  <ccoutant@google.com>
5495
5496         * testsuite/Makefile.am: Add in-tree assembler to gcctestdir.
5497         (debug_msg_cdebug.o, odr_violation1_cdebug.o, odr_violation2_cdebug.o)
5498         (debug_msg_cdebug.err): New targets.
5499         * testsuite/Makefile.in: Regenerate.
5500         * testsuite/debug_msg.sh: Check output of link with compressed debug.
5501         Fix checks for link with shared library.
5502
5503 2011-06-24  Doug Kwan  <dougkwan@google.com>
5504
5505         * arm.cc (Arm_output_section::append_text_sections_to_list): Do not
5506         skip empty text sections.
5507         * testsuite/arm_exidx_test.s: Test handling of an empty text section.
5508
5509 2011-06-22  Ian Lance Taylor  <iant@google.com>
5510
5511         PR gold/12910
5512         * options.h (class General_options): Add --ctors-in-init-array.
5513         * layout.cc (Layout::get_output_section): Treat SHT_INIT_ARRAY and
5514         friends as SHT_PROGBITS for merging sections.
5515         (Layout::layout): Remove special handling of .init_array and
5516         friends.  Don't sort if doing relocatable link.  Sort for .ctors
5517         and .dtors if ctors_in_init_array.
5518         (Layout::make_output_section): Force correct section types for
5519         .init_array and friends.  Don't sort if doing relocatable link,
5520         Don't sort .ctors and .dtors if ctors_in_init_array.
5521         (Layout::section_name_mapping): Remove .ctors. and .dtorso.
5522         (Layout::output_section_name): Add relobj parameter.  Change all
5523         callers.  Handle .ctors. and .dtors. in code rather than table.
5524         Handle .ctors and .dtors if ctors_in_init_array.
5525         (Layout::match_file_name): New function, moved from output.cc.
5526         * layout.h (class Layout): Update declarations.
5527         * output.cc: Include "layout.h".
5528         (Input_section_sort_entry::get_priority): New function.
5529         (Input_section_sort_entry::match_file_name): Just call
5530         Layout::match_file_name.
5531         (Output_section::Input_section_sort_init_fini_compare::operator()):
5532         Handle .ctors and .dtors.  Sort by explicit priority rather than
5533         by name.
5534         * configure.ac: Remove CONSTRUCTOR_PRIORITY test and conditional.
5535         * testsuite/initpri2.c: New test.
5536         * testsuite/Makefile.am: Don't test CONSTRUCTOR_PRIORITY.
5537         (check_PROGRAMS): Add initpri2.
5538         (initpri2_SOURCES, initpri2_DEPENDENCIES): New variables.
5539         (initpri2_LDFLAGS, initpri2_LDADD): New variables.
5540         * configure, testsuite/Makefile.in: Rebuild.
5541
5542 2011-06-19  Ian Lance Taylor  <iant@google.com>
5543
5544         PR gold/12880
5545         * layout.cc (Layout::attach_allocated_section_to_segment): Add a
5546         .interp section to a PT_INTERP segment even if we have seen a
5547         --dynamic-linker option.  Don't do it if we have seen a PHDRS
5548         clause in a linker script.
5549         (Layout::finalize): Don't create a .interp section if we've
5550         already create a PT_INTERP segment.
5551         (Layout::create_interp): Always call choose_output_section (revert
5552         patch of 2011-06-17).  Don't create PT_INTERP segment.
5553         * script-sections.cc
5554         (Script_sections::create_note_and_tls_segments): Add a .interp
5555         section to a PT_INTERP segment even if we have seen a
5556         --dynamic-linker option.
5557
5558 2011-06-18  Ian Lance Taylor  <iant@google.com>
5559
5560         * layout.cc (Layout::finish_dynamic_section): Don't set DT_TEXTREL
5561         merely because a non-PT_LOAD segment has a dynamic reloc.
5562
5563 2011-06-18  Ian Lance Taylor  <iant@google.com>
5564
5565         * layout.cc (Layout::finish_dynamic_section): Don't create
5566         DT_FLAGS entry if not needed.
5567
5568 2011-06-18  Ian Lance Taylor  <iant@google.com>
5569
5570         PR gold/12745
5571         * layout.cc (Layout::layout_eh_frame): Correct handling of
5572         writable .eh_frame section.
5573
5574 2011-06-17  Ian Lance Taylor  <iant@google.com>
5575
5576         PR gold/12893
5577         * resolve.cc (Symbol_table::resolve): Don't give an error if a
5578         symbol is redefined with the exact same object and value.
5579
5580 2011-06-17  Ian Lance Taylor  <iant@google.com>
5581
5582         PR gold/12880
5583         * layout.h (class Layout): Add interp_segment_ field.
5584         * layout.cc (Layout::Layout): Initialize interp_segment_ field.
5585         (Layout::attach_allocated_section_to_segment): If making shared
5586         library, put .interp section in PT_INTERP segment.
5587         (Layout::finalize): Also call create_interp if -dynamic-linker
5588         option was used.
5589         (Layout::create_interp): Assert that there is no PT_INTERP
5590         segment.  If not using a SECTIONS clause, use make_output_section.
5591         (Layout::make_output_segment): Set interp_segment_ if PT_INTERP.
5592         * script-sections.cc
5593         (Script_sections::create_note_and_tls_segments): If making shared
5594         library, put .interp section in PT_INTERP segment.
5595
5596 2011-06-17  Ian Lance Taylor  <iant@google.com>
5597
5598         * object.cc (Sized_relobj_file::do_layout): Keep warning sections
5599         when making a shared library.
5600
5601 2011-06-17  Ian Lance Taylor  <iant@google.com>
5602
5603         * x86_64.cc (Target_x86_64::Scan::check_non_pic): Add gsym
5604         parameter.  Change all callers.  Don't issue warning about PC32
5605         against locally defined symbol.
5606
5607 2011-06-16  Ian Lance Taylor  <iant@google.com>
5608
5609         * symtab.cc (Warnings::issue_warning): Don't warn if relocation
5610         occurs in same object.
5611
5612 2011-06-14  Alan Modra  <amodra@gmail.com>
5613
5614         * po/POTFILES.in: Regenerate.
5615
5616 2011-06-09  Ian Lance Taylor  <iant@google.com>
5617
5618         * script-sections.cc
5619         (Orphan_output_section::set_section_addresses): For a relocatable
5620         link set address to 0.
5621
5622 2011-06-09  Cary Coutant  <ccoutant@google.com>
5623
5624         PR gold/12804
5625         * gold/gold.cc (queue_initial_tasks): Warn if --incremental is
5626         used with --compress-debug-sections.
5627         * gold/object.cc (Sized_relobj_file::do_layout): Report
5628         uncompressed size of compressed input sections.
5629
5630 2011-06-08  Cary Coutant  <ccoutant@google.com>
5631
5632         PR gold/12804
5633         * testsuite/two_file_test_2_v1.cc: Change initialization of
5634         v2 to keep it in .data.
5635
5636 2011-06-07  Cary Coutant  <ccoutant@google.com>
5637
5638         * common.cc (Symbol_table::do_allocate_commons_list): Call
5639         gold_fallback.
5640         * errors.cc (Errors::fatal): Adjust call to gold_exit.
5641         (Errors::fallback): New function.
5642         (gold_fallback): New function.
5643         * errors.h (Errors::fallback): New function.
5644         * gold.cc (gold_exit): Change status parameter to enum; adjust
5645         all callers.
5646         (queue_initial_tasks): Call gold_fallback.
5647         * gold.h: Include cstdlib.
5648         (Exit_status): New enum type.
5649         (gold_exit): Change status parameter to enum.
5650         (gold_fallback): New function.
5651         * layout.cc (Layout::set_section_offsets): Call gold_fallback.
5652         (Layout::create_symtab_sections): Likewise.
5653         (Layout::create_shdrs): Likewise.
5654         * main.cc (main): Adjust call to gold_exit.
5655         * output.cc (Output_data_got::add_got_entry): Call gold_fallback.
5656         (Output_data_got::add_got_entry_pair): Likewise.
5657         (Output_section::add_input_section): Likewise.
5658         (Output_section::add_output_section_data): Likewise.
5659         (Output_segment::set_section_list_addresses): Likewise.
5660         * x86_64.cc (Output_data_plt_x86_64::add_entry): Likewise.
5661
5662 2011-06-07  Cary Coutant  <ccoutant@google.com>
5663
5664         * layout.cc (Layout::set_segment_offsets): Don't adjust layout
5665         for incremental links.
5666         * output.cc (Output_segment::set_section_list_addresses): Remove
5667         FIXME and test for TLS or BSS.
5668
5669 2011-06-07  Cary Coutant  <ccoutant@google.com>
5670
5671         * testsuite/Makefile.am: Add incremental_copy_test,
5672         incremental_common_test_1.
5673         * testsuite/Makefile.in: Regenerate.
5674         * testsuite/common_test_1_v1.c: New source file.
5675         * testsuite/common_test_1_v2.c: New source file.
5676         * testsuite/copy_test_v1.cc: New source file.
5677
5678 2011-06-07  Cary Coutant  <ccoutant@google.com>
5679
5680         * common.cc (Symbol_table::do_allocate_commons_list): For incremental
5681         update, allocate common from bss section's free list.
5682         * incremental-dump.cc (dump_incremental_inputs): Print flag for
5683         linker-defined symbols.
5684         * incremental.cc (Sized_incremental_binary::do_process_got_plt):
5685         Skip GOT and PLT entries that are no longer referenced.
5686         (Output_section_incremental_inputs::write_info_blocks): Mark
5687         linker-defined symbols.
5688         (Sized_incr_relobj::do_add_symbols): Process linker-defined symbols.
5689         * output.cc (Output_section::allocate): New function.
5690         * output.h (Output_section::allocate): New function.
5691         * resolve.cc (Symbol_table::report_resolve_problem): Add case for
5692         linker-defined symbols.
5693         (Symbol::override_base_with_special): Copy is_predefined_ flag.
5694         * symtab.cc (Symbol::init_fields): Initialize is_predefined_ flag.
5695         (Symbol::init_base_output_data): Likewise.
5696         (Symbol::init_base_output_segment): Likewise.
5697         (Symbol::init_base_constant): Likewise.
5698         (Sized_symbol::init_output_data): Likewise.
5699         (Sized_symbol::init_output_segment): Likewise.
5700         (Sized_symbol::init_constant): Likewise.
5701         (Symbol_table::do_define_in_output_data): Likewise.
5702         (Symbol_table::do_define_in_output_segment): Likewise.
5703         (Symbol_table::do_define_as_constant): Likewise.
5704         * symtab.h (Symbol::is_predefined): New function.
5705         (Symbol::init_base_output_data): Add is_predefined parameter.
5706         (Symbol::init_base_output_segment): Likewise.
5707         (Symbol::init_base_constant): Likewise.
5708         (Symbol::is_predefined_): New data member.
5709         (Sized_symbol::init_output_data): Add is_predefined parameter.
5710         (Sized_symbol::init_output_segment): Likewise.
5711         (Sized_symbol::init_constant): Likewise.
5712         (enum Symbol_table::Defined): Add INCREMENTAL_BASE.
5713
5714 2011-06-07  Cary Coutant  <ccoutant@google.com>
5715
5716         * copy-relocs.cc (Copy_relocs::copy_reloc): Call make_copy_reloc
5717         instead of emit_copy_reloc.
5718         (Copy_relocs::emit_copy_reloc): Refactor.
5719         (Copy_relocs::make_copy_reloc): New function.
5720         (Copy_relocs::add_copy_reloc): Remove.
5721         * copy-relocs.h (Copy_relocs::emit_copy_reloc): Move to public
5722         section.
5723         (Copy_relocs::make_copy_reloc): New function.
5724         (Copy_relocs::add_copy_reloc): Remove.
5725         * gold.cc (queue_middle_tasks): Emit old COPY relocations from
5726         unchanged input files.
5727         * incremental-dump.cc (dump_incremental_inputs): Print "COPY" flag.
5728         * incremental.cc (Sized_incremental_binary::do_reserve_layout):
5729         Reserve BSS space for COPY relocations.
5730         (Sized_incremental_binary::do_emit_copy_relocs): New function.
5731         (Output_section_incremental_inputs::write_info_blocks): Record
5732         whether a symbol is copied from a shared object.
5733         (Sized_incr_dynobj::do_add_symbols): Record COPY relocations.
5734         * incremental.h (enum Incremental_shlib_symbol_flags): New type.
5735         (INCREMENTAL_SHLIB_SYM_FLAGS_SHIFT): New constant.
5736         (Incremental_input_entry_reader::get_output_symbol_index): Add
5737         is_copy parameter.
5738         (Incremental_binary::emit_copy_relocs): New function.
5739         (Incremental_binary::do_emit_copy_relocs): New function.
5740         (Sized_incremental_binary::Sized_incremental_binary): Initialize
5741         new data member.
5742         (Sized_incremental_binary::add_copy_reloc): New function.
5743         (Sized_incremental_binary::do_emit_copy_relocs): New function.
5744         (Sized_incremental_binary::Copy_reloc): New struct.
5745         (Sized_incremental_binary::Copy_relocs): New typedef.
5746         (Sized_incremental_binary::copy_relocs_): New data member.
5747         * symtab.cc (Symbol_table::add_from_incrobj): Change return type.
5748         * symtab.h (Symbol_table::add_from_incrobj): Change return type.
5749         * target.h (Sized_target::emit_copy_reloc): New function.
5750         * x86_64.cc (Target_x86_64::emit_copy_reloc): New function.
5751
5752 2011-06-02  Cary Coutant  <ccoutant@google.com>
5753
5754         PR gold/12163
5755         * gold/archive.cc (Archive::Archive): Initialize new data member.
5756         (Archive::include_all_members): Return if archive has already been
5757         included.
5758         * gold/archive.h (Archive::include_all_members_): New data member.
5759
5760 2011-06-02  Nick Clifton  <nickc@redhat.com>
5761
5762         * dynobj.h: Fix spelling mistake in comment.
5763         * output.cc: Likewise.
5764
5765 2011-05-31  Doug Kwan  <dougkwan@google.com>
5766             Asier Llano
5767
5768         PR gold/12826
5769         * arm.cc (Target_arm::tag_cpu_arch_combine): Fix handling of
5770         arch value that equals to elfcpp::MAX_TAG_CPU_ARCH.
5771         * testsuite/Makefile.am: (MOSTLYCLEANFILES): Clean up.  Remove
5772         redundant arm_exidx_test.so.
5773         * testsuite/Makefile.in: Regenerate.
5774         (check_SCRIPTS): Add pr12826.sh
5775         (check_DATA): Add pr12826.stdout
5776         (pr12826.stdout, pr12826.so, pr12826_1.o, pr12826_2.o): New rules.
5777         * testsuite/pr12826.sh: New file.
5778         * testsuite/pr12826_1.s: Ditto.
5779         * testsuite/pr12826_1.s: Ditto.
5780
5781 2011-05-30  Ian Lance Taylor  <iant@google.com>
5782
5783         * reloc.cc (Sized_relobj_file::do_read_relocs): Ignore empty reloc
5784         sections.
5785
5786 2011-05-29  Ian Lance Taylor  <iant@google.com>
5787
5788         PR gold/12804
5789         * testsuite/Makefile.am: Use different file name for two_file_test
5790         temporary file for each incremental test.
5791         * testsuite/Makefile.in: Rebuild.
5792
5793 2011-05-29  Ian Lance Taylor  <iant@google.com>
5794
5795         * binary.cc (Binary_to_elf::sized_convert): Don't crash if the
5796         binary input file is empty.
5797
5798 2011-05-27  Ian Lance Taylor  <iant@google.com>
5799
5800         * testsuite/Makefile.am (ver_test_2.so): Use -Wl,-R,.
5801         (ver_test_9.so): Likewise.
5802         * testsuite/Makefile.in: Rebuild.
5803
5804 2011-05-26 Cary Coutant  <ccoutant@google.com>
5805
5806         * incremental-dump.cc (dump_incremental_inputs): Print COMDAT groups.
5807         * incremental.cc (Incremental_inputs::report_input_section): Fix
5808         comment, indentation.
5809         (Incremental_inputs::report_comdat_group): New function.
5810         (Output_section_incremental_inputs::set_final_data_size): Adjust size
5811         of data for incremental input file entry.
5812         (Output_section_incremental_inputs::write_info_blocks): Write COMDAT
5813         group count, COMDAT group signatures.
5814         (Sized_incr_relobj::do_layout): Record kept COMDAT group info from
5815         an unchanged input file.
5816         * incremental.h (Incremental_object_entry::Incremental_object_entry):
5817         Initialize new data member.
5818         (Incremental_object_entry::add_comdat_group): New function.
5819         (Incremental_object_entry::get_comdat_group_count): New function.
5820         (Incremental_object_entry::get_comdat_signature_key): New function.
5821         (Incremental_object_entry::groups_): New data member.
5822         (Incremental_inputs::report_comdat_group): New function.
5823         (Incremental_input_entry_reader::get_symbol_offset): Adjust size of
5824         data for incremental input file entry.
5825         (Incremental_input_entry_reader::get_comdat_group_count): New function.
5826         (Incremental_input_entry_reader::get_input_section): Adjust size of
5827         data for incremental input file entry.
5828         (Incremental_input_entry_reader::get_global_symbol_reader): Likewise.
5829         (Incremental_input_entry_reader::get_comdat_group_signature): New
5830         function.
5831         * object.cc (Sized_relobj::include_section_group): Report kept
5832         COMDAT groups for incremental links.
5833
5834 2011-05-24  David Meyer  <pdox@google.com>
5835
5836         * dirsearch.cc (Dirsearch::find): Replace n1 and n2 parameters
5837         with name parameter.  Add found_name parameter.
5838         * fileread.cc (Input_file::find_file): Adjust code accordingly.
5839         * dirsearch.h (class Dirsearch): Update declaration.
5840
5841 2011-05-24  Ian Lance Taylor  <iant@google.com>
5842
5843         * archive.cc (Library_base::should_include_member): Pull in object
5844         from archive if it defines the entry symbol.
5845         * parameters.cc (Parameters::entry): New function.
5846         * parameters.h (class Parameters): Declare entry.
5847         * output.h (class Output_file_header): Remove entry_ field.
5848         * output.cc (Output_file_header::Output_file_header): Remove entry
5849         parameter.  Change all callers.
5850         (Output_file_header::entry): Use parameters->entry.
5851         * gold.cc (queue_middle_tasks): Likewise.
5852         * plugin.cc (Plugin_hook::run): Likewise.
5853
5854 2011-05-24 Cary Coutant  <ccoutant@google.com>
5855
5856         * gold.cc (queue_initial_tasks): Pass incremental base filename
5857         to Output_file::open_base_file; don't print error message.
5858         * incremental-dump.cc (main): Adjust call to
5859         Output_file::open_for_modification.
5860         * incremental-dump.cc (main): Likewise.
5861         * incremental.cc (Incremental_inputs::report_command_line):
5862         Ignore --incremental-base option when comparing command lines.
5863         Ignore parameter when given as separate argument.
5864         * options.h (class General_options): Add --incremental-base.
5865         * output.cc (Output_file::Output_file):
5866         (Output_file::open_base_file): Add base_name and writable parameters;
5867         read base file into new file; print error message here.
5868         (Output_file::map_no_anonymous): Add writable parameter; adjust all
5869         callers.
5870         * output.h (Output_file::open_for_modification): Rename to...
5871         (Output_file::open_base_file): ...this; add base_name and
5872         writable parameters; adjust all callers.
5873         (Output_file::map_no_anonymous): Add writable parameter; adjust all
5874         callers.
5875         * testsuite/Makefile.am (incremental_test_4): Test
5876         --incremental-base.
5877         * testsuite/Makefile.in: Regenerate.
5878
5879 2011-05-24 Cary Coutant  <ccoutant@google.com>
5880
5881         * testsuite/Makefile.am: Add incremental_test_2, incremental_test_3,
5882         incremental_test_4.
5883         * testsuite/Makefile.in: Regenerate.
5884         * testsuite/two_file_test_1_v1.cc: New test source file.
5885         * testsuite/two_file_test_1b_v1.cc: New test source file.
5886         * testsuite/two_file_test_2_v1.cc: New test source file.
5887
5888 2011-05-24 Cary Coutant  <ccoutant@google.com>
5889
5890         * dynobj.h (Dynobj::do_dynobj): New function.
5891         * incremental-dump.cc (dump_incremental_inputs): Print as_needed
5892         flag and soname for shared objects.
5893         * incremental.cc (Incremental_inputs::report_object): Make
5894         either Incremental_object_entry or Incremental_dynobj_entry; add
5895         soname to string table.
5896         (Incremental_inputs::report_input_section): Add assertion.
5897         (Output_section_incremental_inputs::set_final_data_size): Adjust
5898         type of input file entry for shared libraries; adjust size of
5899         shared library info entry.
5900         (Output_section_incremental_inputs::write_input_files): Write
5901         as_needed flag for shared libraries.
5902         (Output_section_incremental_inputs::write_info_blocks): Adjust type
5903         of input file entry for shared libraries; write soname.
5904         (Sized_incr_dynobj::Sized_incr_dynobj): Read as_needed flag and
5905         soname from incremental info.
5906         * incremental.h (enum Incremental_input_flags): Add
5907         INCREMENTAL_INPUT_AS_NEEDED.
5908         (Incremental_input_entry::Incremental_input_entry): Initialize new
5909         data member.
5910         (Incremental_input_entry::set_as_needed): New function.
5911         (Incremental_input_entry::as_needed): New function.
5912         (Incremental_input_entry::do_dynobj_entry): New function.
5913         (Incremental_input_entry::as_needed_): New data member.
5914         (Incremental_object_entry::Incremental_object_entry): Don't check
5915         for shared library.
5916         (Incremental_object_entry::do_type): Likewise.
5917         (class Incremental_dynobj_entry): New class.
5918         (Incremental_input_entry_reader::as_needed): New function.
5919         (Incremental_input_entry_reader::get_soname): New function.
5920         (Incremental_input_entry_reader::get_global_symbol_count): Rewrite.
5921         (Incremental_input_entry_reader::get_output_symbol_index): Adjust
5922         size of shared library info entry.
5923         * layout.cc (Layout::finish_dynamic_section): Don't test for
5924         incremental link when adding DT_NEEDED entries.
5925         * object.h (Object::Object): Initialize new data member.
5926         (Object::dynobj): New function.
5927         (Object::set_as_needed): New function.
5928         (Object::as_needed): New function.
5929         (Object::do_dynobj): New function.
5930         (Object::as_needed_): New data member.
5931
5932 2011-05-24 Cary Coutant  <ccoutant@google.com>
5933
5934         * incremental-dump.cc (dump_incremental_inputs): Print dynamic reloc
5935         info; adjust display of GOT entries.
5936         * incremental.cc (Sized_incremental_binary::setup_readers): Allocate
5937         vector of input objects; remove file_status_.
5938         (Sized_incremental_binary::do_reserve_layout): Remove file_status_.
5939         (Sized_incremental_binary::do_process_got_plt): Adjust calls to
5940         got_plt reader; call target hooks to reserve GOT entries.
5941         (Output_section_incremental_inputs::set_final_data_size): Adjust size
5942         of input file info header and GOT info entry.
5943         (Output_section_incremental_inputs::write_info_blocks): Write dynamic
5944         relocation info.
5945         (Got_plt_view_info::got_descriptor): Remove.
5946         (Got_plt_view_info::sym_index): New data member.
5947         (Got_plt_view_info::input_index): New data member.
5948         (Local_got_offset_visitor::visit): Write input file index.
5949         (Global_got_offset_visitor::visit): Write 0 for input file index.
5950         (Global_symbol_visitor_got_plt::operator()): Replace got_descriptor
5951         with sym_index and input_index.
5952         (Output_section_incremental_inputs::write_got_plt): Adjust size of
5953         incremental info GOT entry; replace got_descriptor with input_index.
5954         (Sized_relobj_incr::Sized_relobj_incr): Adjust initializers; record
5955         map from input file index to object.
5956         (Sized_relobj_incr::do_layout): Replace direct data member reference
5957         with accessor function.
5958         (Sized_relobj_incr::do_for_all_local_got_entries): Move to base class.
5959         * incremental.h (Incremental_input_entry_reader::get_symbol_offset):
5960         Adjust size of input file info header.
5961         (Incremental_input_entry_reader::get_first_dyn_reloc): New function.
5962         (Incremental_input_entry_reader::get_dyn_reloc_count): New function.
5963         (Incremental_input_entry_reader::get_input_section): Adjust size of
5964         input file info header.
5965         (Incremental_got_plt_reader::Incremental_got_plt_reader): Adjust size
5966         of incremental info GOT entry.
5967         (Incremental_got_plt_reader::get_got_desc): Remove.
5968         (Incremental_got_plt_reader::get_got_symndx): New function.
5969         (Incremental_got_plt_reader::get_got_input_index): New function.
5970         (Sized_incremental_binary::Sized_incremental_binary): Remove
5971         file_status_; add input_objects_.
5972         (Sized_incremental_binary::~Sized_incremental_binary): Remove.
5973         (Sized_incremental_binary::set_file_is_unchanged): Remove.
5974         (Sized_incremental_binary::file_is_unchanged): Remove.
5975         (Sized_incremental_binary::set_input_object): New function.
5976         (Sized_incremental_binary::input_object): New function.
5977         (Sized_incremental_binary::file_status_): Remove.
5978         (Sized_incremental_binary::input_objects_): New data member.
5979         (Sized_relobj_incr): Rename Sized_incr_relobj to this; adjust all
5980         references.
5981         (Sized_relobj_incr::invalid_address): Move to base class.
5982         (Sized_relobj_incr::is_output_section_offset_invalid): Move to base
5983         class.
5984         (Sized_relobj_incr::do_output_section_offset): Likewise.
5985         (Sized_relobj_incr::do_for_all_local_got_entries): Likewise.
5986         (Sized_relobj_incr::section_offsets_): Likewise.
5987         * object.cc (Sized_relobj::do_for_all_local_got_entries): New
5988         function.
5989         (Sized_relobj_file::Sized_relobj_file): Remove local_got_offsets_.
5990         (Sized_relobj_file::layout_section): Replace refs to section_offsets_
5991         with accessor function.
5992         (Sized_relobj_file::do_layout): Likewise.
5993         (Sized_relobj_file::do_layout_deferred_sections): Likewise.
5994         (Sized_relobj_file::do_for_all_local_got_entries): Move to base class.
5995         (Sized_relobj_file::compute_final_local_value): Replace refs to
5996         section_offsets_ with accessor function.
5997         (Sized_relobj_file::do_finalize_local_symbols): Likewise.
5998         * object.h (Relobj::Relobj): Initialize new data members.
5999         (Relobj::add_dyn_reloc): New function.
6000         (Relobj::first_dyn_reloc): New function.
6001         (Relobj::dyn_reloc_count): New function.
6002         (Relobj::first_dyn_reloc_): New data member.
6003         (Relobj::dyn_reloc_count_): New data member.
6004         (Sized_relobj): Rename Sized_relobj_base to this; adjust all
6005         references.
6006         (Sized_relobj::Address): New typedef.
6007         (Sized_relobj::invalid_address): Move here from child class.
6008         (Sized_relobj::Sized_relobj): Initialize new data members.
6009         (Sized_relobj::sized_relobj): New function.
6010         (Sized_relobj::is_output_section_offset_invalid): Move here from
6011         child class.
6012         (Sized_relobj::get_output_section_offset): Likewise.
6013         (Sized_relobj::local_has_got_offset): Likewise.
6014         (Sized_relobj::local_got_offset): Likewise.
6015         (Sized_relobj::set_local_got_offset): Likewise.
6016         (Sized_relobj::do_for_all_local_got_entries): Likewise.
6017         (Sized_relobj::clear_got_offsets): New function.
6018         (Sized_relobj::section_offsets): Move here from child class.
6019         (Sized_relobj::do_output_section_offset): Likewise.
6020         (Sized_relobj::do_set_section_offset): Likewise.
6021         (Sized_relobj::Local_got_offsets): Likewise.
6022         (Sized_relobj::local_got_offsets_): Likewise.
6023         (Sized_relobj::section_offsets_): Likewise.
6024         (Sized_relobj_file): Rename Sized_relobj to this; adjust all
6025         references.
6026         (Sized_relobj_file::is_output_section_offset_invalid): Move to base
6027         class.
6028         (Sized_relobj_file::sized_relobj): New function
6029         (Sized_relobj_file::local_has_got_offset): Move to base class.
6030         (Sized_relobj_file::local_got_offset): Likewise.
6031         (Sized_relobj_file::set_local_got_offset): Likewise.
6032         (Sized_relobj_file::get_output_section_offset): Likewise.
6033         (Sized_relobj_file::do_for_all_local_got_entries): Likewise.
6034         (Sized_relobj_file::do_output_section_offset): Likewise.
6035         (Sized_relobj_file::do_set_section_offset): Likewise.
6036         (Sized_relobj_file::Local_got_offsets): Likewise.
6037         (Sized_relobj_file::local_got_offsets_): Likewise.
6038         (Sized_relobj_file::section_offsets_): Likewise.
6039         * output.cc (Output_reloc::Output_reloc): Adjust type of relobj
6040         (all constructors).
6041         (set_needs_dynsym_index): Convert relobj to derived class pointer.
6042         (Output_reloc::get_symbol_index): Likewise.
6043         (Output_reloc::local_section_offset): Likewise.
6044         (Output_reloc::get_address): Likewise.
6045         (Output_reloc::symbol_value): Likewise.
6046         (Output_data_got::reserve_slot): Move to class definition.
6047         (Output_data_got::reserve_local): New function.
6048         (Output_data_got::reserve_slot_for_global): Remove.
6049         (Output_data_got::reserve_global): New function.
6050         * output.h (Output_reloc::Output_reloc): Adjust type of relobj
6051         (all constructors, two instantiations).
6052         (Output_reloc::get_relobj): New function (two instantiations).
6053         (Output_reloc::u1_.relobj, Output_reloc::u2_.relobj): Adjust type.
6054         (Output_data_reloc_base::add): Convert relobj to derived class pointer.
6055         (Output_data_reloc::add_global): Adjust type of relobj.
6056         (Output_data_reloc::add_global_relative): Likewise.
6057         (Output_data_reloc::add_symbolless_global_addend): Likewise.
6058         (Output_data_reloc::add_local): Likewise.
6059         (Output_data_reloc::add_local_relative): Likewise.
6060         (Output_data_reloc::add_symbolless_local_addend): Likewise.
6061         (Output_data_reloc::add_local_section): Likewise.
6062         (Output_data_reloc::add_output_section): Likewise.
6063         (Output_data_reloc::add_absolute): Likewise.
6064         (Output_data_reloc::add_target_specific): Likewise.
6065         (Output_data_got::reserve_slot): Move definition here.
6066         (Output_data_got::reserve_local): New function.
6067         (Output_data_got::reserve_global): New function.
6068         * reloc.cc (Sized_relobj_file::do_read_relocs): Replace refs to
6069         section_offsets_ with accessor function.
6070         (Sized_relobj_file::write_sections): Likewise.
6071         (Sized_relobj_file::do_relocate_sections): Likewise.
6072         * target.h (Sized_target::reserve_local_got_entry): New function.
6073         (Sized_target::reserve_global_got_entry): New function.
6074         * x86_64.cc (Target_x86_64::reserve_local_got_entry): New function.
6075         (Target_x86_64::reserve_global_got_entry): New function.
6076         (Target_x86_64::init_got_plt_for_update): Create rela_dyn section.
6077
6078 2011-05-23 Cary Coutant  <ccoutant@google.com>
6079
6080         * gold.cc (queue_middle_tasks): Process existing GOT/PLT entries.
6081         * incremental-dump.cc (dump_incremental_inputs): Mask high-order
6082         bit when checking got_type.
6083         * incremental.cc (Sized_incremental_binary::setup_readers):
6084         Store symbol table and string table locations; initialize bit vector
6085         of file status flags.
6086         (Sized_incremental_binary::do_reserve_layout): Set bit flag for
6087         unchanged files.
6088         (Sized_incremental_binary::do_process_got_plt): New function.
6089         (Sized_incremental_binary::get_symtab_view): Use stored locations.
6090         (Output_section_incremental_inputs::set_final_data_size): Record
6091         file index for each input file.
6092         (Output_section_incremental_inputs::write_got_plt): Store file index
6093         instead of input entry offset for each GOT entry.
6094         * incremental.h
6095         (Incremental_input_entry::Incremental_input_entry): Initialize new
6096         data member.
6097         (Incremental_input_entry::set_offset): Store file index.
6098         (Incremental_input_entry::get_file_index): New function.
6099         (Incremental_input_entry::file_index_): New data member.
6100         (Incremental_binary::process_got_plt): New function.
6101         (Incremental_binary::do_process_got_plt): New function.
6102         (Sized_incremental_binary::Sized_incremental_binary): Initialize new
6103         data members.
6104         (Sized_incremental_binary::~Sized_incremental_binary): New destructor.
6105         (Sized_incremental_binary::set_file_is_unchanged): New function.
6106         (Sized_incremental_binary::file_is_unchanged): New function.
6107         (Sized_incremental_binary::do_process_got_plt): New function.
6108         (Sized_incremental_binary::file_status_): New data member.
6109         (Sized_incremental_binary::main_symtab_loc_): New data member.
6110         (Sized_incremental_binary::main_strtab_loc_): New data member.
6111         * output.cc (Output_data_got::Got_entry::write): Add case
6112         RESERVED_CODE.
6113         (Output_data_got::add_global): Call add_got_entry.
6114         (Output_data_got::add_global_plt): Likewise.
6115         (Output_data_got::add_global_with_rel): Likewise.
6116         (Output_data_got::add_global_with_rela): Likewise.
6117         (Output_data_got::add_global_pair_with_rel): Call add_got_entry_pair.
6118         (Output_data_got::add_global_pair_with_rela): Likewise.
6119         (Output_data_got::add_local): Call add_got_entry.
6120         (Output_data_got::add_local_plt): Likewise.
6121         (Output_data_got::add_local_with_rel): Likewise.
6122         (Output_data_got::add_local_with_rela): Likewise.
6123         (Output_data_got::add_local_pair_with_rel): Call add_got_entry_pair.
6124         (Output_data_got::add_local_pair_with_rela): Likewise.
6125         (Output_data_got::reserve_slot): New function.
6126         (Output_data_got::reserve_slot_for_global): New function.
6127         (Output_data_got::add_got_entry): New function.
6128         (Output_data_got::add_got_entry_pair): New function.
6129         (Output_section::add_output_section_data): Edit FIXME.
6130         * output.h
6131         (Output_section_data_build::Output_section_data_build): New
6132         constructor with size parameter.
6133         (Output_data_space::Output_data_space): Likewise.
6134         (Output_data_got::Output_data_got): Initialize new data member; new
6135         constructor with size parameter.
6136         (Output_data_got::add_constant): Call add_got_entry.
6137         (Output_data_got::reserve_slot): New function.
6138         (Output_data_got::reserve_slot_for_global): New function.
6139         (class Output_data_got::Got_entry): Add RESERVED_CODE.
6140         (Output_data_got::add_got_entry): New function.
6141         (Output_data_got::add_got_entry_pair): New function.
6142         (Output_data_got::free_list_): New data member.
6143         * target.h (Sized_target::init_got_plt_for_update): New function.
6144         (Sized_target::register_global_plt_entry): New function.
6145         * x86_64.cc (Output_data_plt_x86_64::Output_data_plt_x86_64):
6146         Initialize new data member; call init; add constructor with PLT count.
6147         (Output_data_plt_x86_64::init): New function.
6148         (Output_data_plt_x86_64::add_relocation): New function.
6149         (Output_data_plt_x86_64::reserve_slot): New function.
6150         (Output_data_plt_x86_64::free_list_): New data member.
6151         (Target_x86_64::init_got_plt_for_update): New function.
6152         (Target_x86_64::register_global_plt_entry): New function.
6153         (Output_data_plt_x86_64::add_entry): Allocate from free list for
6154         incremental updates.
6155         (Output_data_plt_x86_64::add_relocation): New function.
6156         * testsuite/object_unittest.cc (Object_test): Set default options.
6157
6158 2011-05-16  Ian Lance Taylor  <iant@google.com>
6159
6160         * options.h (class General_options): Make -i a synonym for -r.
6161
6162 2011-05-16  Ian Lance Taylor  <iant@google.com>
6163
6164         * testsuite/tls_test_main.cc: Use semaphores instead of mutexes.
6165
6166 2011-05-10 Cary Coutant  <ccoutant@google.com>
6167
6168         * object.cc (Sized_relobj::do_count_local_symbols): Check for
6169         strip_all (-s).
6170
6171 2011-05-06  Ian Lance Taylor  <iant@google.com>
6172
6173         * layout.cc (Layout::layout): If the output section flags change,
6174         update the ordering.
6175
6176 2011-04-25 Cary Coutant  <ccoutant@google.com>
6177
6178         * incremental-dump.cc (dump_incremental_inputs): Print local
6179         symbol info for each input file.
6180         * incremental.cc
6181         (Output_section_incremental_inputs::set_final_data_size): Add local
6182         symbol info to input file entries in incremental info.
6183         (Output_section_incremental_inputs::write_info_blocks): Likewise.
6184         (Sized_incr_relobj::Sized_incr_relobj): Initialize new data members.
6185         (Sized_incr_relobj::do_add_symbols): Cosmetic change.
6186         (Sized_incr_relobj::do_count_local_symbols): Replace stub with
6187         implementation.
6188         (Sized_incr_relobj::do_finalize_local_symbols): Likewise.
6189         (Sized_incr_relobj::do_relocate): Write the local symbols.
6190         (Sized_incr_dynobj::do_add_symbols): Cosmetic change.
6191         * incremental.h (Incremental_inputs_reader::get_symbol_offset):
6192         Adjust size of input file header.
6193         (Incremental_inputs_reader::get_local_symbol_offset): New function.
6194         (Incremental_inputs_reader::get_local_symbol_count): New function.
6195         (Incremental_inputs_reader::get_input_section): Adjust size of input
6196         file header.
6197         (Incremental_inputs_reader::get_global_symbol_reader): Likewise.
6198         (Sized_incr_relobj::This): New typedef.
6199         (Sized_incr_relobj::sym_size): New const data member.
6200         (Sized_incr_relobj::Local_symbol): New struct.
6201         (Sized_incr_relobj::do_output_local_symbol_count): New function.
6202         (Sized_incr_relobj::do_local_symbol_offset): New function.
6203         (Sized_incr_relobj::local_symbol_count_): New data member.
6204         (Sized_incr_relobj::output_local_dynsym_count_): New data member.
6205         (Sized_incr_relobj::local_symbol_index_): New data member.
6206         (Sized_incr_relobj::local_symbol_offset_): New data member.
6207         (Sized_incr_relobj::local_dynsym_offset_): New data member.
6208         (Sized_incr_relobj::local_symbols_): New data member.
6209         * object.h (Relobj::output_local_symbol_count): New function.
6210         (Relobj::local_symbol_offset): New function.
6211         (Relobj::do_output_local_symbol_count): New function.
6212         (Relobj::do_local_symbol_offset): New function.
6213         (Sized_relobj::do_output_local_symbol_count): New function.
6214         (Sized_relobj::do_local_symbol_offset): New function.
6215
6216 2011-04-22  Vladimir Simonov  <sv@sw.ru>
6217
6218         * descriptors.cc (set_close_on_exec): New function.
6219         (Descriptors::open): Use set_close_on_exec.
6220         * output.cc (S_ISLNK): Define if not defined.
6221
6222 2011-04-22 Cary Coutant  <ccoutant@google.com>
6223
6224         * incremental.cc (Sized_incremental_binary::setup_readers): Allocate
6225         global symbol map.
6226         (Sized_incremental_binary::do_apply_incremental_relocs): New function.
6227         (Sized_incr_relobj::do_add_symbols): Add symbols to global symbol map.
6228         (Sized_incr_relobj::do_relocate): Remap section indices in incremental
6229         relocations.
6230         (Sized_incr_dynobj::do_add_symbols): Add symbols to global symbol map.
6231         (Sized_incr_dynobj::do_for_all_global_symbols): Remove FIXME.
6232         (Sized_incr_dynobj::do_for_all_local_got_entries): Likewise.
6233         * incremental.h
6234         (Incremental_inputs_reader::global_symbol_reader_at_offset): New
6235         function.
6236         (Incremental_binary::apply_incremental_relocs): New function.
6237         (Incremental_binary::do_apply_incremental_relocs): New function.
6238         (Sized_incremental_binary::Sized_incremental_binary): Initialize new
6239         data member.
6240         (Sized_incremental_binary::add_global_symbol): New function.
6241         (Sized_incremental_binary::global_symbol): New function.
6242         (Sized_incremental_binary::do_apply_incremental_relocs): New function.
6243         (Sized_incremental_binary::symbol_map_): New data member.
6244         * layout.cc (Layout_task_runner::run): Apply incremental relocations.
6245         * target.h (Sized_target::apply_relocation): New function.
6246         * target-reloc.h (apply_relocation): New function.
6247         * x86_64.cc (Target_x86_64::apply_relocation): New function.
6248
6249 2011-04-22  Doug Kwan  <dougkwan@google.com>
6250
6251         * arm.cc (Arm_output_section::Arm_output_section): Set SHF_LINK_ORDER
6252         flag of a SHT_ARM_EXIDX section.
6253         * testsuite/Makefile.am (arm_exidx_test): New test rules.
6254         * testsuite/Makefile.in: Regenerate.
6255         * testsuite/arm_exidx_test.s: New file.
6256         * testsuite/arm_exidx_test.sh: Same.
6257
6258 2011-04-20 Cary Coutant  <ccoutant@google.com>
6259
6260         PR gold/12689
6261         * archive.h (Incremental_archive_entry::Archive_member):
6262         Initialize arg_serial_ (second constructor).
6263
6264 2011-04-17  Ian Lance Taylor  <iant@google.com>
6265
6266         * object.cc (Relocate_info::location): Simplify location string.
6267         * errors.cc (Errors::error_at_location): Don't print program
6268         name.
6269         (Errors::warning_at_location): Likewise.
6270         (Errors::undefined_symbol): Likewise.
6271         * testsuite/debug_msg.sh: Update accordingly.
6272
6273 2011-04-14 Cary Coutant  <ccoutant@google.com>
6274
6275         * gold/layout.cc (Layout::symtab_section_offset): New function.
6276         * gold/layout.h (Layout::symtab_section_offset): New function.
6277         * gold/reloc.cc (Sized_relobj::do_relocate): Call it.
6278
6279 2011-04-12  Ian Lance Taylor  <iant@google.com>
6280
6281         * configure.ac: Check for sys/mman.h and mmap.  Check for mremap
6282         with MREMAP_MAYMOVE.
6283         * output.h (class Output_file): Add map_is_allocated_ field.
6284         * output.cc: Only #include <sys/mman.h> if it exists.  If mmap is
6285         not available, provide stubs.  If mremap is not available, #define
6286         it to gold_mremap.
6287         (MREMAP_MAYMOVE): Define if not defined.
6288         (Output_file::Output_file): Initialize map_is_allocated_.
6289         (Output_file::resize): Check map_is_allocated_.
6290         (Output_file::map_anonymous): If mmap fails, use malloc.
6291         (Output_file::unmap): Don't do anything for an anonymous map.
6292         * fileread.cc: Only #include <sys/mman.h> if it exists.  If mmap
6293         is not available, provide stubs.
6294         (File_read::View::~View): Use free rather than delete[].
6295         (File_read::make_view): Use malloc rather than new[].  If mmap
6296         fails, use malloc.
6297         (File_read::find_or_make_view): Use malloc rather than new[].
6298         * gold.h: Remove HAVE_REMAP code.
6299         * mremap.c: #include <errno.h>.  Only #include <sys/mman.h> if it
6300         exists.  Rename mremap to gold_mremap.  If mmap is not available
6301         don't do anything.
6302         * configure, config.in: Rebuild.
6303
6304 2011-04-11  Ian Lance Taylor  <iant@google.com>
6305
6306         * incremental.cc (Sized_incr_relobj::do_add_symbols): Always
6307         initialize local variable v.
6308
6309 2011-04-11  Cary Coutant  <ccoutant@google.com>
6310
6311         * archive.cc (Archive::include_member): Adjust call to
6312         report_object.
6313         (Add_archive_symbols::run): Track argument serial numbers.
6314         (Lib_group::include_member): Likewise.
6315         (Add_lib_group_symbols::run): Adjust call to report_archive_begin.
6316         * archive.h (Incremental_archive_entry::Archive_member):
6317         Initialize arg_serial_.
6318         (Archive_member::arg_serial_): New data member.
6319         * dynobj.cc (Dynobj::Dynobj): Allow input_file_ to be NULL.
6320         (Sized_dynobj::do_add_symbols): Track symbols when doing an
6321         incremental link.
6322         (Sized_dynobj::do_for_all_local_got_entries): New function.
6323         * dynobj.h: (Sized_dynobj::do_for_all_local_got_entries): New
6324         function.
6325         * fileread.cc (get_mtime): New function.
6326         * fileread.h (get_mtime): New function.
6327         * gold.cc (queue_initial_tasks): Check for incremental update.
6328         (process_incremental_input): New function.
6329         (queue_middle_tasks): Don't force valid target for incremental
6330         update.
6331         * incremental-dump.cc (find_input_containing_global): Adjust
6332         size of symbol info entry.
6333         (dump_incremental_inputs): Dump argument serial number and
6334         in_system_directory flag; bias shndx by 1; print symbol names
6335         when dumping per-file symbol lists; use new symbol info readers.
6336         * incremental.cc
6337         (Output_section_incremental_inputs:update_data_size): New function.
6338         (Sized_incremental_binary::setup_readers): Setup input readers
6339         for each input file; build maps for files added from libraries
6340         and scripts.
6341         (Sized_incremental_binary::check_input_args): New function.
6342         (Sized_incremental_binary::do_check_inputs): Build map of argument
6343         serial numbers to input arguments.
6344         (Sized_incremental_binary::do_file_has_changed): Rename
6345         do_file_is_unchanged to this; compare file modification times.
6346         (Sized_incremental_binary::do_init_layout): New function.
6347         (Sized_incremental_binary::do_reserve_layout): New function.
6348         (Sized_incremental_binary::do_get_input_reader): Remove.
6349         (Sized_incremental_binary::get_symtab_view): New function.
6350         (Incremental_checker::can_incrementally_link_output_file): Remove.
6351         (Incremental_inputs::report_command_line): Exclude --debug options.
6352         (Incremental_inputs::report_archive_begin): Add parameter; track
6353         argument serial numbers; don't put input file entry for archive
6354         before archive members.
6355         (Incremental_inputs::report_archive_end): Put input file entry
6356         for archive after archive members.
6357         (Incremental_inputs::report_object): Add parameter; track argument
6358         serial numbers and in_system_directory flag.
6359         (Incremental_inputs::report_script): Add parameter; track argument
6360         serial numbers.
6361         (Output_section_incremental_inputs::set_final_data_size): Adjust
6362         size of symbol info entry; check for forwarding symbols.
6363         (Output_section_incremental_inputs::write_input_files): Write
6364         in_system_directory flag and argument serial number.
6365         (Output_section_incremental_inputs::write_info_blocks): Map section
6366         indices between incremental info and original input file; store
6367         input section index for each symbol.
6368         (class Local_got_offset_visitor): Derive from Got_offset_list::Visitor;
6369         change operator() to visit().
6370         (class Global_got_offset_visitor): Likewise.
6371         (class Global_symbol_visitor_got_plt):
6372         (Output_section_incremental_inputs::write_got_plt): Use new visitor
6373         classes.
6374         (Sized_incr_relobj::Sized_incr_relobj): New constructor.
6375         (Sized_incr_relobj::do_read_symbols): New function.
6376         (Sized_incr_relobj::do_layout): New function.
6377         (Sized_incr_relobj::do_layout_deferred_sections): New function.
6378         (Sized_incr_relobj::do_add_symbols): New function.
6379         (Sized_incr_relobj::do_should_include_member): New function.
6380         (Sized_incr_relobj::do_for_all_global_symbols): New function.
6381         (Sized_incr_relobj::do_for_all_local_got_entries): New function.
6382         (Sized_incr_relobj::do_section_size): New function.
6383         (Sized_incr_relobj::do_section_name): New function.
6384         (Sized_incr_relobj::do_section_contents): New function.
6385         (Sized_incr_relobj::do_section_flags): New function.
6386         (Sized_incr_relobj::do_section_entsize): New function.
6387         (Sized_incr_relobj::do_section_address): New function.
6388         (Sized_incr_relobj::do_section_type): New function.
6389         (Sized_incr_relobj::do_section_link): New function.
6390         (Sized_incr_relobj::do_section_info): New function.
6391         (Sized_incr_relobj::do_section_addralign): New function.
6392         (Sized_incr_relobj::do_initialize_xindex): New function.
6393         (Sized_incr_relobj::do_get_global_symbol_counts): New function.
6394         (Sized_incr_relobj::do_read_relocs): New function.
6395         (Sized_incr_relobj::do_gc_process_relocs): New function.
6396         (Sized_incr_relobj::do_scan_relocs): New function.
6397         (Sized_incr_relobj::do_count_local_symbols): New function.
6398         (Sized_incr_relobj::do_finalize_local_symbols): New function.
6399         (Sized_incr_relobj::do_set_local_dynsym_indexes): New function.
6400         (Sized_incr_relobj::do_set_local_dynsym_offset): New function.
6401         (Sized_incr_relobj::do_relocate): New function.
6402         (Sized_incr_relobj::do_set_section_offset): New function.
6403         (Sized_incr_dynobj::Sized_incr_dynobj): New function.
6404         (Sized_incr_dynobj::do_read_symbols): New function.
6405         (Sized_incr_dynobj::do_layout): New function.
6406         (Sized_incr_dynobj::do_add_symbols): New function.
6407         (Sized_incr_dynobj::do_should_include_member): New function.
6408         (Sized_incr_dynobj::do_for_all_global_symbols): New function.
6409         (Sized_incr_dynobj::do_for_all_local_got_entries): New function.
6410         (Sized_incr_dynobj::do_section_size): New function.
6411         (Sized_incr_dynobj::do_section_name): New function.
6412         (Sized_incr_dynobj::do_section_contents): New function.
6413         (Sized_incr_dynobj::do_section_flags): New function.
6414         (Sized_incr_dynobj::do_section_entsize): New function.
6415         (Sized_incr_dynobj::do_section_address): New function.
6416         (Sized_incr_dynobj::do_section_type): New function.
6417         (Sized_incr_dynobj::do_section_link): New function.
6418         (Sized_incr_dynobj::do_section_info): New function.
6419         (Sized_incr_dynobj::do_section_addralign): New function.
6420         (Sized_incr_dynobj::do_initialize_xindex): New function.
6421         (Sized_incr_dynobj::do_get_global_symbol_counts): New function.
6422         (make_sized_incremental_object): New function.
6423         (Incremental_library::copy_unused_symbols): New function.
6424         (Incremental_library::do_for_all_unused_symbols): New function.
6425         * incremental.h (enum Incremental_input_flags): New type.
6426         (class Incremental_checker): Remove.
6427         (Incremental_input_entry::Incremental_input_entry): Add argument
6428         serial number.
6429         (Incremental_input_entry::arg_serial): New function.
6430         (Incremental_input_entry::set_is_in_system_directory): New function.
6431         (Incremental_input_entry::is_in_system_directory): New function.
6432         (Incremental_input_entry::arg_serial_): New data member.
6433         (Incremental_input_entry::is_in_system_directory_): New data member.
6434         (class Script_info): Move here from script.h.
6435         (Script_info::Script_info): Add filename parameter.
6436         (Script_info::filename): New function.
6437         (Script_info::filename_): New data member.
6438         (Incremental_script_entry::Incremental_script_entry): Add argument
6439         serial number.
6440         (Incremental_object_entry::Incremental_object_entry): Likewise.
6441         (Incremental_object_entry::add_input_section): Build list of input
6442         sections with map to original shndx.
6443         (Incremental_object_entry::get_input_section_index): New function.
6444         (Incremental_object_entry::shndx_): New data member.
6445         (Incremental_object_entry::name_key_): Rename; adjust all refs.
6446         (Incremental_object_entry::sh_size_): Rename; adjust all refs.
6447         (Incremental_archive_entry::Incremental_archive_entry): Add argument
6448         serial number.
6449         (Incremental_inputs::report_archive_begin): Likewise.
6450         (Incremental_inputs::report_object): Likewise.
6451         (Incremental_inputs::report_script): Likewise.
6452         (class Incremental_global_symbol_reader): New class.
6453         (Incremental_input_entry_reader::Incremental_input_entry_reader): Read
6454         and store flags and input file type.
6455         (Incremental_input_entry_reader::arg_serial): New function.
6456         (Incremental_input_entry_reader::type): Extract type from flags.
6457         (Incremental_input_entry_reader::is_in_system_directory): New function.
6458         (Incremental_input_entry_reader::get_input_section_count): Call
6459         accessor function for type.
6460         (Incremental_input_entry_reader::get_symbol_offset): Call accessor
6461         function for type; adjust size of global symbol entry.
6462         (Incremental_input_entry_reader::get_global_symbol_count): Call
6463         accessor function for type.
6464         (Incremental_input_entry_reader::get_object_count): Likewise.
6465         (Incremental_input_entry_reader::get_object_offset): Likewise.
6466         (Incremental_input_entry_reader::get_member_count): Likewise.
6467         (Incremental_input_entry_reader::get_unused_symbol_count): Likewise.
6468         (Incremental_input_entry_reader::get_member_offset): Likewise.
6469         (Incremental_input_entry_reader::get_unused_symbol): Likewise.
6470         (Incremental_input_entry_reader::Global_symbol_info): Remove.
6471         (Incremental_input_entry_reader::get_global_symbol_info): Remove.
6472         (Incremental_input_entry_reader::get_global_symbol_reader): New
6473         function.
6474         (Incremental_input_entry_reader::get_output_symbol_index): New
6475         function.
6476         (Incremental_input_entry_reader::type_): Remove.
6477         (Incremental_input_entry_reader::flags_): New data member.
6478         (Incremental_inputs_reader::input_file_offset): New function.
6479         (Incremental_inputs_reader::input_file_index): New function.
6480         (Incremental_inputs_reader::input_file): Call input_file_offset.
6481         (Incremental_inputs_reader::input_file_at_offset): New function.
6482         (Incremental_relocs_reader::get_r_type): Reformat.
6483         (Incremental_relocs_reader::get_r_shndx): Reformat.
6484         (Incremental_relocs_reader::get_r_offset): Reformat.
6485         (Incremental_relocs_reader::data): New function.
6486         (Incremental_binary::Incremental_binary): Initialize new data members.
6487         (Incremental_binary::check_inputs): Add cmdline parameter.
6488         (Incremental_binary::file_is_unchanged): Remove.
6489         (Input_reader::arg_serial): New function.
6490         (Input_reader::get_unused_symbol_count): New function.
6491         (Input_reader::get_unused_symbol): New function.
6492         (Input_reader::do_arg_serial): New function.
6493         (Input_reader::do_get_unused_symbol_count): New function.
6494         (Input_reader::do_get_unused_symbol): New function.
6495         (Incremental_binary::input_file_count): New function.
6496         (Incremental_binary::get_input_reader): Change signature to use
6497         index instead of filename.
6498         (Incremental_binary::file_has_changed): New function.
6499         (Incremental_binary::get_input_argument): New function.
6500         (Incremental_binary::get_library): New function.
6501         (Incremental_binary::get_script_info): New function.
6502         (Incremental_binary::init_layout): New function.
6503         (Incremental_binary::reserve_layout): New function.
6504         (Incremental_binary::output_file): New function.
6505         (Incremental_binary::do_check_inputs): New function.
6506         (Incremental_binary::do_file_is_unchanged): Remove.
6507         (Incremental_binary::do_file_has_changed): New function.
6508         (Incremental_binary::do_init_layout): New function.
6509         (Incremental_binary::do_reserve_layout): New function.
6510         (Incremental_binary::do_input_file_count): New function.
6511         (Incremental_binary::do_get_input_reader): Change signature.
6512         (Incremental_binary::input_args_map_): New data member.
6513         (Incremental_binary::library_map_): New data member.
6514         (Incremental_binary::script_map_): New data member.
6515         (Sized_incremental_binary::Sized_incremental_binary): Initialize
6516         new data members.
6517         (Sized_incremental_binary::output_section): New function.
6518         (Sized_incremental_binary::inputs_reader): Add const.
6519         (Sized_incremental_binary::symtab_reader): Add const.
6520         (Sized_incremental_binary::relocs_reader): Add const.
6521         (Sized_incremental_binary::got_plt_reader): Add const.
6522         (Sized_incremental_binary::get_symtab_view): New function.
6523         (Sized_incremental_binary::Inputs_reader): New typedef.
6524         (Sized_incremental_binary::Input_entry_reader): New typedef.
6525         (Sized_incremental_binary::do_check_inputs): Add cmdline parameter.
6526         (Sized_incremental_binary::do_file_is_unchanged): Remove.
6527         (Sized_incremental_binary::do_file_has_changed): New function.
6528         (Sized_incremental_binary::do_init_layout): New function.
6529         (Sized_incremental_binary::do_reserve_layout): New function.
6530         (Sized_input_reader::Inputs_reader): Remove.
6531         (Sized_input_reader::Input_entry_reader): Remove.
6532         (Sized_input_reader::do_arg_serial): New function.
6533         (Sized_input_reader::do_get_unused_symbol_count): New function.
6534         (Sized_input_reader::do_get_unused_symbol): New function.
6535         (Sized_incremental_binary::do_input_file_count): New function.
6536         (Sized_incremental_binary::do_get_input_reader): Change signature;
6537         use index instead of filename.
6538         (Sized_incremental_binary::section_map_): New data member.
6539         (Sized_incremental_binary::input_entry_readers_): New data member.
6540         (class Sized_incr_relobj): New class.
6541         (class Sized_incr_dynobj): New class.
6542         (make_sized_incremental_object): New function.
6543         (class Incremental_library): New class.
6544         * layout.cc (Free_list::num_lists): New static data member.
6545         (Free_list::num_nodes): New static data member.
6546         (Free_list::num_removes): New static data member.
6547         (Free_list::num_remove_visits): New static data member.
6548         (Free_list::num_allocates): New static data member.
6549         (Free_list::num_allocate_visits): New static data member.
6550         (Free_list::init): New function.
6551         (Free_list::remove): New function.
6552         (Free_list::allocate): New function.
6553         (Free_list::dump): New function.
6554         (Free_list::print_stats): New function.
6555         (Layout_task_runner::run): Resize output file for incremental updates.
6556         (Layout::Layout): Initialize new data members.
6557         (Layout::set_incremental_base): New function.
6558         (Layout::init_fixed_output_section): New function.
6559         (Layout::layout_eh_frame): Do not build .eh_frame_hdr section for
6560         incremental updates.
6561         (Layout::create_gold_note): Do not create gold note section for
6562         incremental updates.
6563         (Layout::set_segment_offsets): Do not recalculate RELRO alignment
6564         for incremental updates.
6565         (Layout::set_section_offsets): For incremental updates, allocate space
6566         from free list.
6567         (Layout::create_symtab_sections): Layout with offsets relative to
6568         start of section; for incremental updates, allocate space from free
6569         list.
6570         (Layout::create_shdrs): For incremental updates, allocate space from
6571         free list.
6572         (Layout::finish_dynamic_section): For incremental updates, do not
6573         check --as-needed (fixed in subsequent patch).
6574         * layout.h (class Free_list): New class.
6575         (Layout::set_incremental_base): New function.
6576         (Layout::incremental_base): New function.
6577         (Layout::init_fixed_output_section): New function.
6578         (Layout::allocate): New function.
6579         (Layout::incremental_base_): New data member.
6580         (Layout::free_list_): New data member.
6581         * main.cc (main): Print Free_list statistics.
6582         * object.cc (Relobj::finalize_incremental_relocs): Add
6583         clear_counts parameter; clear counts only when clear_counts is set.
6584         (Sized_relobj::Sized_relobj): Initialize new base class.
6585         (Sized_relobj::do_layout): Don't report special sections.
6586         (Sized_relobj::do_for_all_local_got_entries): New function.
6587         (Sized_relobj::write_local_symbols): Add symtab_off parameter; add
6588         symtab_off to all symbol table offsets.
6589         (Sized_relobj::do_get_global_symbol_counts): Add typename keyword.
6590         * object.h (class Got_offset_list): Move to top of file.
6591         (Object::Object): Allow case where input_file == NULL.
6592         (Object::~Object): Likewise.
6593         (Object::input_file): Assert that input_file != NULL.
6594         (Object::lock): Allow case where input_file == NULL.
6595         (Object::unlock): Likewise.
6596         (Object::is_locked): Likewise.
6597         (Object::token): Likewise.
6598         (Object::release): Likewise.
6599         (Object::is_incremental): New function.
6600         (Object::get_mtime): New function.
6601         (Object::for_all_local_got_entries): New function.
6602         (Object::clear_view_cache_marks): Allow case where input_file == NULL.
6603         (Object::set_is_in_system_directory): New function.
6604         (Object::is_in_system_directory): New function.
6605         (Object::do_is_incremental): New function.
6606         (Object::do_get_mtime): New function.
6607         (Object::do_for_all_local_got_entries): New function.
6608         (Object::is_in_system_directory_): New data member.
6609         (Relobj::finalize_incremental_relocs): Add clear_counts parameter.
6610         (class Sized_relobj_base): New class.
6611         (class Sized_relobj): Derive from Sized_relobj_base.
6612         (class Sized_relobj::Symbols): Redeclare from base class.
6613         (class Sized_relobj::local_got_offset_list): Remove.
6614         (class Sized_relobj::Output_sections): Redeclare from base class.
6615         (class Sized_relobj::do_for_all_local_got_entries): New function.
6616         (class Sized_relobj::write_local_symbols): Add offset parameter.
6617         (class Sized_relobj::local_symbol_offset_): Update comment.
6618         (class Sized_relobj::local_dynsym_offset_): Update comment.
6619         * options.cc (Input_arguments::add_file): Remove const.
6620         * options.h (Input_file_argument::Input_file_argument):
6621         Initialize arg_serial_ (all constructors).
6622         (Input_file_argument::set_arg_serial): New function.
6623         (Input_file_argument::arg_serial): New function.
6624         (Input_file_argument::arg_serial_): New data member.
6625         (Input_arguments::Input_arguments): Initialize file_count_.
6626         (Input_arguments::add_file): Remove const.
6627         (Input_arguments::number_of_input_files): New function.
6628         (Input_arguments::file_count_): New data member.
6629         (Command_line::number_of_input_files): Call
6630         Input_arguments::number_of_input_files.
6631         * output.cc (Output_segment_headers::Output_segment_headers):
6632         Set current size.
6633         (Output_section::Input_section::current_data_size): New function.
6634         (Output_section::Output_section): Initialize new data members.
6635         (Output_section::add_input_section): Don't do merge sections for
6636         an incremental link; allocate space from free list for an
6637         incremental update.
6638         (Output_section::add_output_section_data): Allocate space from
6639         free list for an incremental update.
6640         (Output_section::update_data_size): New function.
6641         (Output_section::set_fixed_layout): New function.
6642         (Output_section::reserve): New function.
6643         (Output_segment::set_section_addresses): Remove const.
6644         (Output_segment::set_section_list_addresses): Remove const; allocate
6645         space from free list for an incremental update.
6646         (Output_segment::set_offset): Adjust size of RELRO segment for an
6647         incremental update.
6648         * output.h (Output_data::current_data_size): Move here from
6649         child classes.
6650         (Output_data::pre_finalize_data_size): New function.
6651         (Output_data::update_data_size): New function.
6652         (Output_section_headers::update_data_size): new function.
6653         (Output_section_data_build::current_data_size): Move to Output_data.
6654         (Output_data_strtab::update_data_size): New function.
6655         (Output_section::current_data_size): Move to Output_data.
6656         (Output_section::set_fixed_layout): New function.
6657         (Output_section::has_fixed_layout): New function.
6658         (Output_section::reserve): New function.
6659         (Output_section::update_data_size): New function.
6660         (Output_section::has_fixed_layout_): New data member.
6661         (Output_section::free_list_): New data member.
6662         (Output_segment::set_section_addresses): Remove const.
6663         (Output_segment::set_section_list_addresses): Remove const.
6664         * plugin.cc (Sized_pluginobj::do_for_all_local_got_entries):
6665         New function.
6666         * plugin.h (Sized_pluginobj::do_for_all_local_got_entries):
6667         New function.
6668         * readsyms.cc (Read_symbols::do_read_symbols): Add library
6669         parameter when calling Add_symbols constructor; store argument
6670         serial number for members of a lib group.
6671         (Add_symbols::locks): Allow case where token == NULL.
6672         (Add_symbols::run): Report libraries denoted by --start-lib/--end-lib.
6673         (Read_member::~Read_member): New function.
6674         (Read_member::is_runnable): New function.
6675         (Read_member::locks): New function.
6676         (Read_member::run): New function.
6677         (Check_script::~Check_script): New function.
6678         (Check_script::is_runnable): New function.
6679         (Check_script::locks): New function.
6680         (Check_script::run): New function.
6681         (Check_library::~Check_library): New function.
6682         (Check_library::is_runnable): New function.
6683         (Check_library::locks): New function.
6684         (Check_library::run): New function.
6685         * readsyms.h (Add_symbols::Add_symbols): Add library parameter.
6686         (Add_symbols::library_): New data member.
6687         (class Read_member): New class.
6688         (class Check_script): New class.
6689         (class Check_library): New class.
6690         * reloc.cc (Read_relocs::is_runnable): Allow case where
6691         token == NULL.
6692         (Read_relocs::locks): Likewise.
6693         (Scan_relocs::locks): Likewise.
6694         (Relocate_task::locks): Likewise.
6695         (Sized_relobj::do_scan_relocs): Tell finalize_incremental_relocs
6696         to clear counters.
6697         (Sized_relobj::incremental_relocs_scan): Fix comment.
6698         (Sized_relobj::do_relocate): Pass output file offset to
6699         write_local_symbols.
6700         (Sized_relobj::incremental_relocs_write_reltype): Use reloc_size
6701         from class declaration.
6702         * script.cc (read_input_script): Allocate Script_info; pass
6703         argument serial number to report_script.
6704         * script.h (class Script_info): Move to incremental.h.
6705         * symtab.cc (Symbol_table::add_from_incrobj): New function.
6706         * symtab.h (Symbol_table::add_from_incrobj): New function.
6707         (Symbol_table::set_file_offset): New function.
6708
6709 2011-04-05  Cary Coutant  <ccoutant@google.com>
6710
6711         * incremental-dump.cc (dump_incremental_inputs): Change signature
6712         to take a Sized_incremental_binary; change caller.  Use readers
6713         in Sized_incremental_binary.
6714         * incremental.cc
6715         (Sized_incremental_binary::find_incremental_inputs_sections):
6716         Rename do_find_incremental_inputs_sections to this.
6717         (Sized_incremental_binary::setup_readers): New function.
6718         (Sized_incremental_binary::do_check_inputs): Check
6719         has_incremental_info_ flag; move setup code to setup_readers;
6720         use input readers.
6721         (Sized_incremental_binary::do_file_is_unchanged): New function.
6722         (Sized_incremental_binary::do_get_input_reader): New function.
6723         * incremental.h (class Incremental_binary): Move to end of file.
6724         (Incremental_binary::file_is_unchanged): New function.
6725         (Incremental_binary::do_file_is_unchanged): New function.
6726         (Incremental_binary::Input_reader): New class.
6727         (Incremental_binary::get_input_reader): New function.
6728         (class Sized_incremental_binary): Move to end of file.
6729         (Sized_incremental_binary::Sized_incremental_binary): Setup the
6730         input section reader classes.
6731         (Sized_incremental_binary::has_incremental_info): New function.
6732         (Sized_incremental_binary::inputs_reader): New function.
6733         (Sized_incremental_binary::symtab_reader): New function.
6734         (Sized_incremental_binary::relocs_reader): New function.
6735         (Sized_incremental_binary::got_plt_reader): New function.
6736         (Sized_incremental_binary::do_file_is_unchanged): New function.
6737         (Sized_incremental_binary::Sized_input_reader): New class.
6738         (Sized_incremental_binary::get_input_reader): New function.
6739         (Sized_incremental_binary::find_incremental_inputs_sections):
6740         Rename do_find_incremental_inputs_sections to this.
6741         (Sized_incremental_binary::setup_readers): New function.
6742         (Sized_incremental_binary::has_incremental_info_): New data member.
6743         (Sized_incremental_binary::inputs_reader_): New data member.
6744         (Sized_incremental_binary::symtab_reader_): New data member.
6745         (Sized_incremental_binary::relocs_reader_): New data member.
6746         (Sized_incremental_binary::got_plt_reader_): New data member.
6747         (Sized_incremental_binary::current_input_file_): New data member.
6748
6749 2011-04-05  Paul Pluzhnikov  <ppluzhnikov@google.com>
6750
6751         PR gold/12640
6752         * dwarf_reader.cc (Sized_dwarf_line_info): Fix vector bounds
6753         violation.
6754
6755 2011-03-30  Cary Coutant  <ccoutant@google.com>
6756
6757         * archive.cc (Archive::include_member): Adjust call to report_object.
6758         (Add_archive_symbols::run): Add script_info to call to
6759         report_archive_begin.
6760         (Lib_group::include_member): Adjust call to report_object.
6761         (Add_lib_group_symbols::run): Adjust call to report_object.
6762         * incremental-dump.cc (dump_incremental_inputs): Remove unnecessary
6763         blocks.  Add object count for script input files.
6764         * incremental.cc (Incremental_inputs::report_archive_begin): Add
6765         script_info parameter; change all callers.
6766         (Incremental_inputs::report_object): Add script_info parameter;
6767         change all callers.
6768         (Incremental_inputs::report_script): Store backpointer to
6769         incremental info entry.
6770         (Output_section_incremental_inputs::set_final_data_size): Record
6771         additional information for scripts.
6772         (Output_section_incremental_inputs::write_info_blocks): Likewise.
6773         * incremental.h (Incremental_script_entry::add_object): New function.
6774         (Incremental_script_entry::get_object_count): New function.
6775         (Incremental_script_entry::get_object): New function.
6776         (Incremental_script_entry::objects_): New data member; adjust
6777         constructor.
6778         (Incremental_inputs::report_archive_begin): Add script_info parameter.
6779         (Incremental_inputs::report_object): Add script_info parameter.
6780         (Incremental_inputs_reader::get_object_count): New function.
6781         (Incremental_inputs_reader::get_object_offset): New function.
6782         * options.cc (Input_arguments::add_file): Return reference to
6783         new input argument.
6784         * options.h (Input_argument::set_script_info): New function.
6785         (Input_argument::script_info): New function.
6786         (Input_argument::script_info_): New data member; adjust all
6787         constructors.
6788         (Input_file_group::add_file): Return reference to new input argument.
6789         (Input_file_lib::add_file): Likewise.
6790         (Input_arguments::add_file): Likewise.
6791         * readsyms.cc (Add_symbols::run): Adjust call to report_object.
6792         * script.cc (Parser_closure::Parser_closure): Add script_info
6793         parameter; adjust all callers.
6794         (Parser_closure::script_info): New function.
6795         (Parser_closure::script_info_): New data member.
6796         (read_input_script): Report scripts earlier to incremental info.
6797         (script_add_file): Set script_info in Input_argument.
6798         (script_add_library): Likewise.
6799         * script.h (Script_options::Script_info): Rewrite class.
6800
6801 2011-03-29  Cary Coutant  <ccoutant@google.com>
6802
6803         * archive.cc (Library_base::should_include_member): Move
6804         method here from class Archive.
6805         (Archive::Archive): Initialize base class.
6806         (Archive::should_include_member): Move to base class.
6807         (Archive::do_for_all_unused_symbols): New function.
6808         (Add_archive_symbols::run): Remove redundant access to
6809         incremental_inputs.
6810         (Lib_group::Lib_group): Initialize base class.
6811         (Lib_group::do_filename): New function.
6812         (Lib_group::include_member): Pass pointer to Lib_group to
6813         report_object.
6814         (Lib_group::do_for_all_unused_symbols): New function.
6815         (Add_lib_group_symbols::run): Report archive information for
6816         incremental links.
6817         * archive.h (class Library_base): New base class.
6818         (class Archive): Derive from Library_base.
6819         (Archive::filename): Move to base class.
6820         (Archive::set_incremental_info): Likewise.
6821         (Archive::incremental_info): Likewise.
6822         (Archive::Should_include): Likewise.
6823         (Archive::should_include_member): Likewise.
6824         (Archive::Armap_entry): Remove.
6825         (Archive::Unused_symbol_iterator): Remove.
6826         (Archive::unused_symbols_begin): Remove.
6827         (Archive::unused_symbols_end): Remove.
6828         (Archive::do_filename): New function.
6829         (Archive::do_get_mtime): New function.
6830         (Archive::do_for_all_unused_symbols): New function.
6831         (Archive::task_): Move to base class.
6832         (Archive::incremental_info_): Likewise.
6833         (class Lib_group): Derive from Library_base.
6834         (Lib_group::do_filename): New function.
6835         (Lib_group::do_get_mtime): New function.
6836         (Lib_group::do_for_all_unused_symbols): New function.
6837         (Lib_group::task_): Move to base class.
6838         * dynobj.cc (Sized_dynobj::do_for_all_global_symbols): New
6839         function.
6840         * dynobj.h (Sized_dynobj::do_for_all_global_symbols): New
6841         function.
6842         * incremental.cc (Incremental_inputs::report_archive_begin):
6843         Use Library_base; call library's get_mtime; add incremental inputs
6844         entry before members.
6845         (class Unused_symbol_visitor): New class.
6846         (Incremental_inputs::report_archive_end): Use Library_base; use
6847         visitor class to record unused symbols; don't add incremental inputs
6848         entry after members.
6849         (Incremental_inputs::report_object): Use Library_base.
6850         * incremental.h
6851         (Incremental_archive_entry::Incremental_archive_entry): Remove
6852         unused Archive parameter.
6853         (Incremental_inputs::report_archive_begin): Use Library_base.
6854         (Incremental_inputs::report_archive_end): Likewise.
6855         (Incremental_inputs::report_object): Likewise.
6856         * object.cc (Sized_relobj::do_for_all_global_symbols): New
6857         function.
6858         * object.h (Object::for_all_global_symbols): New function.
6859         (Object::do_for_all_global_symbols): New function.
6860         (Sized_relobj::do_for_all_global_symbols): New function.
6861         * plugin.cc (Sized_pluginobj::do_for_all_global_symbols):  New
6862         function.
6863         * plugin.h (Sized_pluginobj::do_for_all_global_symbols):  New
6864         function.
6865
6866 2011-03-27  Ian Lance Taylor  <iant@google.com>
6867
6868         * archive.cc (Archive::interpret_header): Return -1 if something
6869         goes wrong.  Change callers accordingly.
6870
6871 2011-03-25  Cary Coutant  <ccoutant@google.com>
6872
6873         * testsuite/Makefile.am (final_layout.stdout): Use -n option with nm.
6874         * testsuite/Makefile.in: Regenerate.
6875
6876 2011-03-23  Rafael Ávila de Espíndola <respindola@mozilla.com>
6877
6878         * plugin.cc (get_view): New.
6879         (Plugin::load): Pass get_view to the plugin.
6880         (Plugin_manager::get_view): New.
6881
6882 2011-03-21  Ian Lance Taylor  <iant@google.com>
6883
6884         * testsuite/final_layout.sh: Rewrite to not use dc.
6885         * testsuite/relro_test.sh: Fail if dc is not present.
6886
6887 2011-03-21  Sriraman Tallam  <tmsriram@google.com>
6888
6889         * testsuite/icf_safe_so_test.sh: Add #!/bin/sh to start.
6890         Change == to -eq.
6891         * testsuite/icf_string_merge_test.sh: Add #!/bin/sh to start.
6892         * testsuite/icf_safe_test.sh: Add #!/bin/sh to start.
6893         Change == to -eq.
6894         * testsuite/icf_sht_rel_addend_test.sh: Add #!/bin/sh to start.
6895         * testsuite/icf_preemptible_functions_test.sh: Add #!/bin/sh to start.
6896
6897 2011-03-14  Ian Lance Taylor  <iant@google.com>
6898
6899         * script-sections.cc (Sort_output_sections::script_compare):
6900         Rename from is_before, change return type.
6901         (Sort_output_sections::operator()): Adjust accordingly.
6902
6903 2011-03-11  Jeffrey Yasskin  <jyasskin@google.com>
6904
6905         PR gold/12572
6906         * testsuite/odr_violation2.cc: Add comment to make all error line
6907         numbers double digits.
6908         * testsuite/debug_msg.sh: Adjust expected errors.
6909
6910 2011-03-09  Jeffrey Yasskin  <jyasskin@google.com>
6911
6912         * dwarf_reader.cc (Sized_dwarf_line_info): Include all lines,
6913         but mark earlier ones as non-canonical
6914         (offset_to_iterator): Update search target and example
6915         (do_addr2line): Return extra lines in a vector*
6916         (format_file_lineno): Extract from do_addr2line
6917         (one_addr2line): Add vector* out-param
6918         * dwarf_reader.h (Offset_to_lineno_entry): New field recording
6919         when a lineno entry appeared last for its instruction
6920         (Dwarf_line_info): Add vector* out-param
6921         * object.cc (Relocate_info): Pass NULL for the vector* out-param
6922         * symtab.cc (Odr_violation_compare): Include the lineno in the
6923         comparison again.
6924         (linenos_from_loc): New. Combine the canonical line for an
6925         address with its other lines.
6926         (True_if_intersect): New. Helper functor to make
6927         std::set_intersection a query.
6928         (detect_odr_violations): Compare sets of lines instead of just
6929         one line for each function. This became less deterministic, but
6930         has fewer false positives.
6931         * symtab.h: Declarations.
6932         * testsuite/Makefile.am (odr_violation2.o): Compile with -O2 to
6933         mix an optimized and non-optimized object in the same binary
6934         (odr_violation2.so): Same.
6935         * testsuite/Makefile.in: Regenerate from Makefile.am.
6936         * testsuite/debug_msg.cc (main): Make OdrDerived classes.
6937         * testsuite/debug_msg.sh: Update line numbers and add
6938         assertions.
6939         * testsuite/odr_violation1.cc: Use OdrDerived, in a
6940         non-optimized context.
6941         * testsuite/odr_violation2.cc: Make sure Ordering::operator()
6942         isn't inlined, and use OdrDerived in an optimized context.
6943         * testsuite/odr_header1.h: Defines OdrDerived, where
6944         optimization will change the
6945         first-instruction-in-the-destructor's file and line number.
6946         * testsuite/odr_header2.h: Defines OdrBase.
6947
6948 2011-03-09  Ian Lance Taylor  <iant@google.com>
6949
6950         * fileread.cc (File_read::clear_views): Don't delete the whole
6951         file view.
6952
6953 2011-03-08  Ian Lance Taylor  <iant@google.com>
6954
6955         PR gold/12525
6956         * fileread.cc: #include <climits>.
6957         (GOLD_IOV_MAX): Define.
6958         (File_read::read_multiple): Limit number of entries by iov_max.
6959         * fileread.h (class File_read): Always set max_readv_entries to
6960         128.
6961
6962 2011-03-07  Ian Lance Taylor  <iant@google.com>
6963
6964         PR gold/12525
6965         * options.h (class General_options): Add -dy and -dn.
6966
6967 2011-03-02  Cary Coutant  <ccoutant@google.com>
6968
6969         * testsuite/script_test_9.t: Add TLS segment.
6970
6971 2011-03-02  Simon Baldwin  <simonb@google.com>
6972
6973         * configure.ac: Add check for gnu_indirect_function support in
6974         the toolchain building binutils.
6975         * configure: Rebuild.
6976
6977 2011-02-18  Rafael Ávila de Espíndola <respindola@mozilla.com>
6978
6979         * symtab.cc (Symbol::should_add_dynsym_entry) Return false for
6980         plugin only symbols.
6981         (Symbol_table::sized_finalize_symbol) Mark symbol only present
6982         in plugin files as not needed in the symbol table.
6983
6984 2011-02-11  Sriraman Tallam  <tmsriram@google.com>
6985
6986         * output.cc (Output_section::add_input_section): Delay fill
6987         generation for section ordering.
6988
6989 2011-02-09  Ian Lance Taylor  <iant@google.com>
6990
6991         PR gold/12316
6992         * object.h (class Sized_relobj): Remove clear_local_symbols.
6993         * reloc.cc (Sized_relobj::do_relocate): Don't call
6994         clear_local_symbols.
6995
6996 2011-02-08  Rafael Ávila de Espíndola <respindola@mozilla.com>
6997
6998         * plugin.cc (is_visible_from_outside): Return true for symbols
6999         in the -u option.
7000
7001 2011-02-04  Jeffrey Yasskin  <jyasskin@google.com>
7002
7003         * symtab.cc (Odr_violation_compare::operator()): Sort by just the
7004         filename.
7005
7006 2011-02-02  Sriraman Tallam  <tmsriram@google.com>
7007
7008         * icf.h (is_section_foldable_candidate): Change type of parameter
7009         to std::string.
7010         * icf.cc (Icf::find_identical_sections): Change type of local variable
7011         section_name to be std::string.
7012         (is_function_ctor_or_dtor): Change type of parameter to std::string.
7013
7014 2011-01-25  Ian Lance Taylor  <iant@google.com>
7015
7016         * script.cc (script_add_extern): Rewrite to use
7017         add_symbol_reference.
7018
7019 2011-01-25  Doug Kwan  <dougkwan@google.com>
7020
7021         * icf.cc (get_section_contents): Always lock section's object.
7022
7023 2011-01-24  Ian Lance Taylor  <iant@google.com>
7024
7025         * options.h (class General_options): Accept
7026         --no-detect-odr-violations.
7027
7028 2011-01-24  Ian Lance Taylor  <iant@google.com>
7029
7030         * version.cc (version_string): Bump to 1.11.
7031
7032 2011-01-24  Ian Lance Taylor  <iant@google.com>
7033
7034         * plugin.cc (class Plugin_rescan): Define new class.
7035         (Plugin_manager::claim_file): Set any_claimed_.
7036         (Plugin_manager::save_archive): New function.
7037         (Plugin_manager::save_input_group): New function.
7038         (Plugin_manager::all_symbols_read): Create Plugin_rescan task if
7039         necessary.
7040         (Plugin_manager::new_undefined_symbol): New function.
7041         (Plugin_manager::rescan): New function.
7042         (Plugin_manager::rescannable_defines): New function.
7043         (Plugin_manager::add_input_file): Set any_added_.
7044         * plugin.h (class Plugin_manager): define new fields rescannable_,
7045         undefined_symbols_, any_claimed_, and any_added_.  Declare
7046         Plugin_rescan as friend.  Declare new functions.
7047         (Plugin_manager::Rescannable): Define type.
7048         (Plugin_manager::Rescannable_list): Define type.
7049         (Plugin_manager::Undefined_symbol_list): Define type.
7050         (Plugin_manager::Plugin_manager): Initialize new fields.
7051         * archive.cc (Archive::defines_symbol): New function.
7052         (Add_archive_symbols::run): Pass archive to plugins if any.
7053         * archive.h (class Archive): Declare defines_symbol.
7054         * readsyms.cc (Input_group::~Input_group): New function.
7055         (Finish_group::run): Pass input_group to plugins if any.
7056         * readsyms.h (class Input_group): Declare destructor.
7057         * symtab.cc (add_from_object): Pass undefined symbol to plugins if
7058         any.
7059
7060 2011-01-10  Ian Lance Taylor  <iant@google.com>
7061
7062         * layout.cc (Layout::layout_eh_frame): Mark a writable .eh_frame
7063         section as relro.
7064         (Layout::set_segment_offsets): Reset increase_relro before calling
7065         set_section_addresses a second time.
7066
7067 2011-01-04  Cary Coutant  <ccoutant@google.com>
7068
7069         * script-sections.cc (Sort_output_sections::operator()): Sort TLS
7070         sections before NOBITS sections.
7071
7072 2011-01-01  H.J. Lu  <hongjiu.lu@intel.com>
7073
7074         * version.cc (print_version): Update copyright to 2011.
7075
7076 2010-12-23  Cary Coutant  <ccoutant@google.com>
7077
7078         * output.h (Output_data_reloc::add_output_section): Pass OD instead
7079         of OS to this->add.  Add OD parameter to second form of the function.
7080
7081 2010-12-20  Ian Lance Taylor  <iant@google.com>
7082
7083         * dwarf_reader.cc (Sized_dwarf_line_info::read_lines): Only keep
7084         second of two consecutive entries with same offset.
7085
7086 2010-12-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7087
7088         * testsuite/Makefile.am (ifuncmain2static_LDADD)
7089         (ifuncmain2_LDADD, ifuncmain4static_LDADD, ifuncmain4_LDADD)
7090         (ifuncmain7static_LDADD, ifuncmain7_LDADD): New empty variables,
7091         to avoid unneeded links against $(LDADD).
7092         * testsuite/Makefile.in: Regenerate.
7093
7094 2010-12-15  Ian Lance Taylor  <iant@google.com>
7095
7096         PR gold/12324
7097         * x86_64.cc (Target_x86_64::Scan::check_non_pic): Give an error
7098         for R_X86_64_32 and R_X86_64_PC32.
7099         * testsuite/Makefile.am (ver_matching_def.so): Depend on and use
7100         ver_matching_def_pic.o.
7101         (ver_matching_def_pic.o): New target.
7102
7103 2010-12-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7104
7105         * fileread.cc (file_counts_lock, file_counts_initialize_lock)
7106         (total_mapped_bytes, current_mapped_bytes, maximum_mapped_bytes):
7107         Move definition before File_read::View member definitions.
7108         (File_read::View::~View): Initialize and hold lock before
7109         updating current_mapped_bytes.
7110
7111 2010-12-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7112
7113         * dwarf_reader.cc: Remove outdated comment.
7114         * gold-threads.cc: Fix typo in error message.
7115         * archive.cc: Fix typos in comments.
7116         * archive.h: Likewise.
7117         * arm-reloc-property.cc: Likewise.
7118         * arm-reloc-property.h: Likewise.
7119         * arm-reloc.def: Likewise.
7120         * arm.cc: Likewise.
7121         * attributes.h: Likewise.
7122         * cref.cc: Likewise.
7123         * ehframe.cc: Likewise.
7124         * fileread.h: Likewise.
7125         * gold.h: Likewise.
7126         * i386.cc: Likewise.
7127         * icf.cc: Likewise.
7128         * incremental.h: Likewise.
7129         * int_encoding.cc: Likewise.
7130         * layout.h: Likewise.
7131         * main.cc: Likewise.
7132         * merge.h: Likewise.
7133         * object.cc: Likewise.
7134         * object.h: Likewise.
7135         * options.cc: Likewise.
7136         * readsyms.cc: Likewise.
7137         * reduced_debug_output.cc: Likewise.
7138         * reloc.cc: Likewise.
7139         * script-sections.cc: Likewise.
7140         * sparc.cc: Likewise.
7141         * symtab.h: Likewise.
7142         * target-reloc.h: Likewise.
7143         * target.cc: Likewise.
7144         * target.h: Likewise.
7145         * timer.cc: Likewise.
7146         * timer.h: Likewise.
7147         * x86_64.cc: Likewise.
7148
7149 2010-12-09  Cary Coutant  <ccoutant@google.com>
7150
7151         * layout.cc (Layout::layout_gnu_stack): Add warnings for executable
7152         stack.
7153         * layout.h (Layout::layout_gnu_stack): Add pointer to Object
7154         parameter; change all callers.
7155         * object.cc (Sized_relobj::do_layout): Adjust call to layout_gnu_stack.
7156         * options.h (warn_execstack): New option.
7157
7158 2010-12-07  Doug Kwan  <dougkwan@google.com>
7159
7160         * arm.cc (Target_arm::Scan::get_reference_flags): Treat R_ARM_PREL31
7161         like function call relocations.
7162
7163 2010-12-07  Ian Lance Taylor  <iant@google.com>
7164
7165         * archive.cc (Archive::get_elf_object_for_member): Permit
7166         punconfigured to be NULL.
7167         (Archive::read_symbols): Pass NULL to get_elf_object_for_member.
7168         (Archive::include_member): Pass NULL to get_elf_object_for_member
7169         if we searched for the archive and this is the first included
7170         object.
7171
7172 2010-12-01  Ian Lance Taylor  <iant@google.com>
7173
7174         * dwarf_reader.h (class Sized_dwarf_line_info): Add
7175         track_relocs_type_ field.
7176         * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
7177         Set track_relocs_type_.
7178         (Sized_dwarf_line_info::process_one_opcode): Ignore the section
7179         contents when using RELA relocs.
7180         (Sized_dwarf_line_info::read_relocs): Add the reloc addend to
7181         reloc_map_.
7182         * reloc.cc (Track_relocs::next_addend): New function.
7183         * reloc.h (class Track_relocs): Declare next_addend.
7184
7185 2010-12-01  Ian Lance Taylor  <iant@google.com>
7186
7187         * testsuite/icf_virtual_function_folding_test.cc (class Bar): Add
7188         virtual destructor.
7189
7190 2010-12-01  Ian Lance Taylor  <iant@google.com>
7191
7192         * README: Update compilers known to work and fail.
7193
7194 2010-11-23  Matthias Klose  <doko@ubuntu.com>
7195
7196         * configure.in: For --enable-gold, handle value `default' instead of
7197         `both*'.  Always install ld as ld.bfd, install as ld if gold is
7198         not the default.
7199         * configure: Regenerate.
7200
7201 2010-11-18  Doug Kwan  <dougkwan@google.com>
7202
7203         * expression.cc (BINARY_EXPRESSION): Initialize left_alignment
7204         and right_alignment to be zero.  Store result alignment only if it is
7205         greater than existing alignment.
7206
7207 2010-11-16  Cary Coutant  <ccoutant@google.com>
7208
7209         PR gold/12220
7210         * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
7211         Check for ".zdebug_line".
7212
7213 2010-11-16  Doug Kwan  <dougkwan@google.com>
7214             Cary Coutant  <ccoutant@google.com>
7215
7216         * output.h (Output_segment::set_section_addresses): Pass increase_relro
7217         by reference; adjust all callers.
7218         * output.cc (Output_segment::set_section_addresses): Adjust references
7219         to increase_relro. Add padding to *increase_relro when ORDER_RELRO_LAST
7220         list is empty.
7221         (Output_segment::set_offset): Assert if PT_GNU_RELRO segment does not
7222         end at page boundary.
7223
7224 2010-11-16  Cary Coutant  <ccoutant@google.com>
7225
7226         PR gold/12220
7227         * layout.cc (Layout::choose_output_section): Transform names of
7228         compressed sections even when using a script with a SECTIONS clause.
7229         (Layout::output_section_name): Remove code to transform
7230         compressed debug section names.
7231         * output.cc (Output_section::add_input_section): Use uncompressed
7232         section size when tracking input sections.
7233
7234 2010-11-11  Richard Sandiford  <richard.sandiford@linaro.org>
7235
7236         * symtab.h (Symbol::NON_PIC_REF): Remove.
7237         (Symbol::RELATIVE_REF, Symbol::TLS_REF): New Reference_flags.
7238         (Symbol::FUNCTION_CALL): Renumber.  Reword comment.
7239         (Symbol::needs_dynamic_reloc): Don't check NON_PIC_REF.
7240         (Symbol::use_plt_offset): Take a flags argument and pass it
7241         directly to needs_dynamic_reloc.  Restrict check for undefined
7242         weak symbols to function calls.
7243         * arm.cc (Target_arm::Scan::get_reference_flags): New function.
7244         (Target_arm::Scan::global): Use it.
7245         (Target_arm::Scan::scan_reloc_for_stub): Likewise.
7246         (Target_arm::Relocate::relocate): Likewise.
7247         (Target_arm::Relocate::should_apply_static_reloc): Replace flags
7248         parameter with an r_type parameter.  Use get_reference_flags
7249         to get the flags.
7250         (Target_arm::Relocate::relocate): Update accordingly.
7251         * i386.cc (Target_i386::Scan::get_reference_flags): New function.
7252         (Target_i386::Scan::reloc_needs_plt_for_ifunc): Use it.
7253         (Target_i386::Scan::global): Likewise.
7254         (Target_i386::Relocate::relocate): Likewise.
7255         (Target_i386::Relocate::should_apply_static_reloc): Replace flags
7256         parameter with an r_type parameter.  Use get_reference_flags
7257         to get the flags.
7258         (Target_i386::Relocate::relocate): Update accordingly.
7259         * powerpc.cc (Target_powerpc::Scan::get_reference_flags): New function.
7260         (Target_powerpc::Scan::global): Use it.
7261         (Target_powerpc::Scan::scan_reloc_for_stub): Likewise.
7262         (Target_powerpc::Relocate::relocate): Likewise.
7263         * sparc.cc (Target_sparc::Scan::get_reference_flags): New function.
7264         (Target_sparc::Scan::global): Use it.
7265         (Target_sparc::Scan::scan_reloc_for_stub): Likewise.
7266         (Target_sparc::Relocate::relocate): Likewise.
7267         * x86_64.cc (Target_x86_64::Scan::get_reference_flags): New function.
7268         (Target_x86_64::Scan::reloc_needs_plt_for_ifunc): Use it.
7269         (Target_x86_64::Scan::global): Likewise.
7270         (Target_x86_64::Relocate::relocate): Likewise.
7271
7272 2010-11-08  Doug Kwan  <dougkwan@google.com>
7273             Cary Coutant  <ccoutant@google.com>
7274
7275         * arm.cc (Arm_exidx_merge_section::build_contents): New method.
7276         (Arm_exidx_merge_section::section_contents_): New data member.
7277         (Arm_input_section::Arm_input_section): Initialize original_contents_.
7278         (Arm_input_section::~Arm_input_section): De-allocate memory.
7279         (Arm_input_section::original_contents_): New data member.
7280         (Arm_exidx_fixup::process_exidx_section): Pass EXIDX section contents
7281         in parameters instead of calling Object::section_contents without
7282         locking.
7283         (Arm_output_section::group_section): New parameter TASK.  Pass it
7284         to callees that need locking objects.
7285         (Arm_output_section::fix_exidx_coverage): New parameter TASK.  Use it
7286         to lock EXIDX input sections.  Fix a formatting issue.  Call
7287         Arm_exidx_merged_section::build_contents to create merged section
7288         contents.
7289         (Arm_output_section::create_stub_group): New parameter TASK.  Use it
7290         to lock object of stub table owner.
7291         (Arm_exidx_input_section::Arm_exidx_input_section): Add new parameter
7292         TEXT_SIZE to initialize data member TEXT_SIZE_.
7293         (Arm_exidx_input_section::addralign): Fix typo in comment.
7294         (Arm_exidx_input_section::text_size): New method.
7295         (Target_arm::do_relax): New parameter TASK.  Pass it to callees
7296         that require locking objects.  Lock objects before scanning for stubs
7297         and updating local symbols.
7298         (Arm_input_section<big_endian>::init): Copy contents of original
7299         input section.
7300         (Arm_input_section<big_endian>::do_write): Use saved contents of
7301         original input section instead of calling Object::section_contents
7302         without locking.
7303         (Arm_exidx_cantunwind::do_fixed_endian_write): Find out text section
7304         size without calling Object::section_size().
7305         (Arm_exidx_merged_section::Arm_exidx_merged_section): Add sanity check
7306         for size.  Allocate a buffer for merged EXIDX entries.
7307         (Arm_exidx_merged_section::build_contents): New method.
7308         (Arm_exidx_merged_section::do_write): Move merge section contents
7309         building code to Arm_exidx_merged_section::build_contetns.  Write
7310         out contetns in buffer instead of building it on the fly.
7311         (Arm_relobj::make_exidx_input_section): Also pass text section size
7312         to Arm_exidx_input_section constructor.
7313         (Arm_relobj::do_read_symbols): Fix memory leak.  Fix a formatting issue.
7314         (Arm_dynobj::do_read_symbols): Fix memory leak.
7315         * layout.cc (Layout::finalize): Pass TASK to Target::relax().
7316         * target.h: (class Task): Add forward declaration.
7317         (Target::relax): Add new parameter TASK and pass it to
7318         Target::do_relax().
7319         (Target::do_relax):: New parameter TASK.  Fix a formatting issue.
7320
7321 2010-11-05  Cary Coutant  <ccoutant@google.com>
7322
7323         PR gold/10708
7324         * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Hold a lock on the
7325         object when reading from the file.
7326         * gold.cc (queue_middle_tasks): Hold a lock on the object when doing
7327         second layout pass.
7328         * icf.cc (preprocess_for_unique_sections): Hold a lock on the object
7329         when reading section contents.
7330         (get_section_contents): Likewise.
7331         (icf::find_identical_sections): Likewise.
7332         * mapfile.cc (Mapfile::print_discarded_sections): Hold a lock on the
7333         object when reading from the file.
7334         * plugin.cc (Plugin_manager::layout_deferred_objects): Hold a lock on
7335         the object when doing deferred section layout.
7336
7337 2010-11-03  Nick Clifton  <nickc@redhat.com>
7338
7339         PR gold/12001
7340         * script.h (class Symbol_assignment: name): New member.  Returns
7341         the name of the symbol.
7342         * scrfipt.cc (Script_options::is_pending_assignment): New member.
7343         Returns true if the given symbol name is on the list of
7344         assignments wating to be processed.
7345         * archive.cc (should_incldue_member): If the symbol is undefined,
7346         check to see if it is on the list of symbols pending assignment.
7347
7348 2010-11-03  Ryan Mansfield  <rmansfield@qnx.com>
7349
7350         * script-sections.cc (Script_sections::find_memory_region): Check
7351         for a NULL output section pointer.
7352
7353 2010-10-29  Doug Kwan  <dougkwan@google.com>
7354
7355         * arm.cc (Arm_outout_section::fix_exidx_coverage): Adjust call to
7356         Output_section::add_relaxed_input_section.
7357         * output.cc (Output_section::add_relaxed_input_section): Add new
7358         arguments LAYOUT and NAME.  Set section order index.
7359         (Output_section::convert_input_sections_in_list_to_relaxed_sections):
7360         Copy section order index.
7361         * output.h (Output_section::add_relaxed_input_section): Add new
7362         arguments LAYOUT and NAME.
7363
7364 2010-10-29  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
7365
7366         * testsuite/Makefile.am: Move gcctestdir/ld rule to
7367         NATIVE_OR_CROSS_LINKER.
7368         * testsuite/Makefile.in: Regenerate.
7369
7370 2010-10-20  Doug Kwan  <dougkwan@google.com>
7371
7372         * arm.cc (Arm_relobj::do_read_symbols): Warn about ARM EXIDX sections
7373         without SHF_LINK_ORDER flags.
7374         * layout.cc (Layout::choose_output_section): Do not filter
7375         SHF_LINK_ORDER flag in a relocatable link.
7376
7377 2010-10-17  Cary Coutant  <ccoutant@google.com>
7378
7379         * output.h (Output_segment::set_section_addresses): Change function
7380         signature.  Update all callers.
7381         * output.cc (Output_segment::is_first_section_relro): Ignore TLS
7382         sections.
7383         (Output_segment::set_section_addresses): Align after last TLS
7384         section.  Add padding before last relro section instead of after.
7385
7386 2010-10-17  Doug Kwan  <dougkwan@google.com>
7387
7388         * gold/arm.cc (Target_arm::got_section): Use correct order and set
7389         GOT output section to be writable.
7390
7391 2010-10-14  Cary Coutant  <ccoutant@google.com>
7392
7393         * debug.h (DEBUG_INCREMENTAL): New flag.
7394         (debug_string_to_enum): Add DEBUG_INCREMENTAL).
7395         * gold.cc (queue_initial_tasks): Check parameters for incremental link
7396         mode.
7397         * incremental.cc (report_command_line): Ignore all forms of
7398         --incremental.
7399         * layout.cc (Layout::Layout): Check parameters for incremental link
7400         mode.
7401         * options.cc (General_options::parse_incremental): New function.
7402         (General_options::parse_no_incremental): New function.
7403         (General_options::parse_incremental_full): New function.
7404         (General_options::parse_incremental_update): New function.
7405         (General_options::incremental_mode_): New data member.
7406         (General_options::finalize): Check incremental_mode_.
7407         * options.h (General_options): Update help text for --incremental.
7408         Add --no-incremental, --incremental-full, --incremental-update.
7409         (General_options::Incremental_mode): New enum type.
7410         (General_options::incremental_mode): New function.
7411         (General_options::incremental_mode_): New data member.
7412         * parameters.cc (Parameters::incremental_mode_): New data member.
7413         (Parameters::set_options): Set incremental_mode_.
7414         (Parameters::set_incremental_full): New function.
7415         (Parameters::incremental): New function.
7416         (Parameters::incremental_update): New function.
7417         (set_parameters_incremental_full): New function.
7418         * parameters.h (Parameters::set_incremental_full): New function.
7419         (Parameters::incremental): New function.
7420         (Parameters::incremental_update): New function.
7421         (Parameters::incremental_mode_): New data member.
7422         (set_parameters_incremental_full): New function.
7423         * plugin.cc (Plugin_manager::add_input_file): Check parameters for
7424         incremental link mode.
7425         * reloc.cc (Sized_relobj::do_read_relocs): Likewise.
7426         (Sized_relobj::do_relocate_sections): Likewise.
7427         * testsuite/Makefile.am (incremental_test): Use --incremental-full
7428         option.
7429         * testsuite/Makefile.in: Regenerate.
7430         * testsuite/incremental_test.sh: Filter all forms of --incremental.
7431
7432 2010-10-12  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
7433
7434         * script-sections.h (class Script_sections): Make
7435         Sections_elements typedef public.
7436         * script-sections.cc (class Sort_output_sections): Add elements_
7437         field.  Add constructor which sets it; change all callers.
7438         (Sort_output_sections::is_before): New function.
7439         (Sort_output_sections::operator()): Call is_before.
7440         * configure.ac (NATIVE_OR_CROSS_LINKER): New automake
7441         conditional.
7442         * testsuite/script_test_10.sh: New test. Test script section
7443         order.
7444         * testsuite/script_test_10.t: Likewise.
7445         * testsuite/script_test_10.s: Likewise.
7446         * testsuite/Makefile.am: Wrap the cross linker tests and the
7447         common tests into NATIVE_OR_CROSS_LINKER.
7448         (check_SCRIPTS): Add script_test_10.sh.
7449         (check_DATA): Add script_test_10.stdout.
7450         (script_test_10.o, script_test_10): New targets.
7451         (script_test_10.stdout): New target.
7452         * configure, testsuite/Makefile.in: Regenerate.
7453
7454 2010-10-12  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
7455
7456         * arm.cc (Target_arm::Scan::local): Report the unsupported reloc
7457         error for the deprecated relocations.
7458         (Target_arm::Scan::global): Likewise.
7459         (Target_arm::Relocate::relocate): Likewise.
7460
7461 2010-10-12  Richard Sandiford  <richard.sandiford@linaro.org>
7462
7463         * fileread.cc (Input_file::find_file): Initialize *found_name
7464         and *namep when using the fallback search for case 4.
7465
7466 2010-10-11  Cary Coutant  <ccoutant@google.com>
7467
7468         * options.h (class General_options): Redefine -z lazy as an alias for
7469         the negation of -z now.
7470
7471 2010-10-11  Ian Lance Taylor  <iant@google.com>
7472
7473         * resolve.cc (symbol_to_bits): Report the value of the unsupported
7474         binding.
7475
7476 2010-10-06  Nick Clifton  <nickc@redhat.com>
7477
7478         * script-sections.cc(class Memory_region): Remove
7479         current_lma_offset_ field.  Rename current_vma_offset_ to
7480         current_offset_.  Add last_section_ field.
7481         (Memory_region::get_current_vma_address): Rename to
7482         get_current_address.
7483         (Memory_region::get_current_lma_address): Delete.
7484         (Memory_region::increment_vma_offset): Rename to
7485         increment_offset.
7486         (Memory_region::increment_lma_offset): Delete.
7487         (Memory_region::attributes_compatible): New method.  Returns
7488         true if the provided section is compatible with the region.
7489         (Memory_region::get_last_section): New method.  Returns the last
7490         section to use the region.
7491         (Memory_region::set_last_section): New method.  Stores the last
7492         section to use the region.
7493         (Script_sections::block_in_region): New method.  Returns true if
7494         a block of memory is contained within a region.
7495         (Script_sections::find_memory_region): New method.  Locates a
7496         memory region to be used to set a VMA or LMA address.
7497         (Output_section_definition::set_section_addresses): Add code to
7498         check for addresses set by memory regions.
7499         (Output_segment::set_section_addresses): Remove memory region
7500         walking code.
7501         (Script_sections::create_segment): Add a warning if a header
7502         segment is created outside of any region.
7503         * script-sections.h (class Script_sections): Add prototypes for
7504         find_memory_region and block_in_region methods.
7505         * testsuite/memory_test.s: Use .long instead of .word.
7506         * testsuite/memory_test.t: Add some more output sections.
7507         * testsuite/memory_test.sh: Update expected output.
7508
7509 2010-10-02  Doug Kwan  <dougkwan@google.com>
7510
7511         * symtab.cc (Symbol_table::Symbol_table_hash::operator()): Move
7512         defintion to symtab.h
7513         * symtab.h (Symbol_table::Symbol_table_hash::operator()): Change
7514         declaration to defintion.
7515
7516 2010-10-01  Nick Clifton  <nickc@redhat.com>
7517
7518         * expression.cc (eval): Replace dummy argument with NULL.
7519         (eval_maybe_dot): Check for a NULL result section pointer.
7520         (Symbol_expression::value): Likewise.
7521         (Dot_expression::value): Likewise.
7522         (BINARY_EXPRESSION): Likewise.
7523         (Max_expression::value): Likewise.
7524         (Min_expression::value): Likewise.
7525         (Absolute_expression::value): Likewise.
7526         (Addr_expression::value_from_output_section): Likewise.
7527         (Loaddddr_expression::value_from_output_section): Likewise.
7528         (Segment_start_expression::value): Likewise.
7529         * script-sections.cc
7530         (Sections_elememt_dot_assignment::finalize_symbols): Replace dummy
7531         argument with NULL.
7532         (Sections_elememt_dot_assignment::set_section_addresses):
7533         Likewise.
7534         (Output_data_expression::do_write_to_buffer): Likewise.
7535         (Output_section_definition::finalize_symbols): Likewise.
7536         (Output_section_definition::set_section_addresses): Likewise.
7537
7538 2010-09-30  Doug Kwan  <dougkwan@google.com>
7539
7540         * gold/testsuite/arm_branch_out_of_range.sh: Fix broken tests.
7541
7542 2010-09-28  Sriraman Tallam  <tmsriram@google.com>
7543
7544         * target.h (Target::can_icf_inline_merge_sections): New virtual
7545         function.
7546         * x86_64.cc (Target__x86_64::can_icf_inline_merge_sections): New
7547         virtual function.
7548         * i386.cc (Target_i386::can_icf_inline_merge_sections): New
7549         virtual function.
7550         * icf.cc (get_section_contents): Inline merge sections only when
7551         target allows it.
7552
7553 2010-09-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7554
7555         * configure: Regenerate.
7556
7557 2010-09-17  Ian Lance Taylor  <iant@google.com>
7558
7559         * testsuite/memory_test.sh: Adjust for change of 2010-09-10.
7560         * testsuite/Makefile.am (memory_test.o): New target.
7561         (memory_test): Depend on memory_test.o, gcctestdir/ld, and
7562         memory_test.t.
7563         * testsuite/Makefile.in: Rebuild.
7564
7565 2010-09-17  Doug Kwan  <dougkwan@google.com>
7566
7567         * arm.cc (Target_arm::Relocate::relocate): Ignore symbol type and
7568         defintion if relocation uses GOT entries of the symbol.
7569         * testsuite/icf_safe_test.sh: Fix test.
7570         * testsuite/icf_safe_so_test.sh: Fix test.
7571
7572 2010-09-16  Cary Coutant  <ccoutant@google.com>
7573
7574         * script_sections.cc (class Memory_region): Remove "NULL" from
7575         vector initializations.
7576
7577 2010-09-15  Cary Coutant  <ccoutant@google.com>
7578
7579         * incremental.cc (Output_section_incremental_inputs::write_info_blocks):
7580         Resolve forwarding symbols.
7581
7582 2010-09-15  Doug Kwan  <dougkwan@google.com>
7583
7584         * gold/testsuite/script_test_3.t: Add ARM special sections.
7585         * gold/testsuite/script_test_4.t: Same.
7586         * gold/testsuite/script_test_5.t: Same.
7587         * gold/testsuite/script_test_6.t: Same.
7588         * gold/testsuite/script_test_7.t: Same.
7589         * gold/testsuite/script_test_7.t: Same.
7590         * gold/testsuite/thumb_blx_out_of_range.s: Fix instruction alignment.
7591
7592 2010-09-14  Cary Coutant  <ccoutant@google.com>
7593
7594         * x86_64.cc (Target_x86_64::saw_tls_block_reloc_): Remove member.
7595         (Target_x86_64::Relocate::relocate_tls): Replace check for
7596         saw_tls_block_reloc_ with test for executable section.
7597
7598 2010-09-12  Cary Coutant  <ccoutant@google.com>
7599
7600         * symtab.h (Symbol::needs_dynamic_reloc): Non-PIC calls from
7601         position-independent executables to shared libraries need dynamic
7602         relocations.
7603         (Symbol::may_need_copy_reloc): Do not generate COPY relocs in
7604         position-independent executables.
7605         * testsuite/Makefile.am (two_file_mixed_pie_test): New test.
7606         * testsuite/Makefile.in: Regenerate.
7607
7608 2010-09-10  Nick Clifton  <nickc@redhat.com>
7609
7610         PR gold/11997
7611         * testsuite/memory_test.t: Discard any sections that are not
7612         needed.
7613
7614 2010-09-09  H.J. Lu  <hongjiu.lu@intel.com>
7615
7616         PR gold/11996
7617         * object.cc (Sized_relobj::do_finalize_local_symbols): Remove
7618         "This::" to work around a bug in gcc 4.2.
7619
7620         * testsuite/ifuncmain7.c (foo_ifunc): Add __attribute__ ((used)).
7621
7622 2010-09-09  Rafael Espindola  <espindola@google.com>
7623
7624         * layout.cc (Layout::attach_allocated_section_to_segment): Don't put
7625         sections with different PF_X flags in the same segment.
7626         (Layout::find_first_load_seg): Search all segments to find the first
7627         one.
7628         * options.h (rosegment): New.
7629
7630 2010-09-08  Rafael Espindola  <espindola@google.com>
7631
7632         * layout.cc (Layout::set_segment_offsets): Always advance to a new page.
7633
7634 2010-09-08  Doug Kwan  <dougkwan@google.com>
7635
7636         * arm.cc (Arm_exidx_cantunwind::do_print_to_mapfile): New method.
7637         (Arm_relobj::do_relocate_sections): Add new parameter for output
7638         file to match the parent.
7639         (Target_arm::scan_reloc_section_for_stubs): Use would-be final values
7640         of local symbols instead of input values.  Update code to track
7641         changes in gold::relocate_section.
7642         * object.cc (Sized_relobj::compute_final_local_value): New methods.
7643         (Sized_relobj::compute_final_local_value_internal): New methods.
7644         (Sized_relobj::do_finalize_local_symbols): Move code from loop
7645         body into private version of Sized_relobj::compute_final_local_value.
7646         Call the inline method.
7647         * object.h (Symbol_value::Symbol_value): Define destructor.  Free
7648         merged symbol value if there is one.
7649         (Symbol_value::has_output_value): New method defintiion.
7650         (Sized_relobj::Compute_final_local_value_status): New enum type.
7651         (Sized_relobj::compute_final_local_value): New methods.
7652         (Sized_relobj::compute_final_local_value_internal): New methods.
7653         * Makefile.am (check_SCRIPTS): Add arm_branch_out_of_range.sh
7654         and arm_cortex_a8.sh.
7655         (thumb_bl_out_of_range_local, arm_cortex_a8_b_cond, arm_cortex_a8_bl,
7656         arm_cortex_a8_blx, arm_cortex_a8_local, arm_corte_a8_local_reloc):
7657         New tests.
7658         * Makefile.in: Regenerate.
7659         * testsuite/arm_bl_out_of_range.s: Update test.
7660         * testsuite/thumb_bl_out_of_range.s: Ditto.
7661         * testsuite/thumb_blx_out_of_range.s: Ditto.
7662         * testsuite/arm_branch_out_of_range.sh: New file.
7663         * testsuite/arm_cortex_a8.sh: Ditto.
7664         * testsuite/arm_cortex_a8_b.s: Ditto.
7665         * testsuite/arm_cortex_a8_b_cond.s: Ditto.
7666         * testsuite/arm_cortex_a8_b_local.s: Ditto.
7667         * testsuite/arm_cortex_a8_bl.s: Ditto.
7668         * testsuite/arm_cortex_a8_blx.s: Ditto.
7669         * testsuite/arm_cortex_a8_local.s: Ditto.
7670         * testsuite/arm_cortex_a8_local_reloc.s: Ditto.
7671         * testsuite/thumb_bl_out_of_range_local.s: Ditto.
7672
7673 2010-09-08  Rafael Espindola  <espindola@google.com>
7674
7675         * Makefile.am (memory_test.stdout): Run readelf with -W.
7676         * Makefile.in: Regenerate.
7677         * testsuite/memory_test.sh: Make the regexps accept both 32 and
7678         64 bit output.
7679
7680 2010-09-08  Rafael Espindola  <espindola@google.com>
7681
7682         * script-sections.cc (Script_sections::add_memory_region): Convert
7683         field precision to int.
7684         * script.cc (script_set_section_region, script_set_section_region):
7685         Convert field precision to int.
7686
7687 2010-09-08  Rafael Espindola  <espindola@google.com>
7688
7689         * arm.cc (do_finalize_sections): Create the __exidx_start and
7690         __exdix_end symbols even when the section is missing.
7691
7692 2010-09-08  Nick Clifton  <nickc@redhat.com>
7693
7694         * README: Remove claim that MEMORY is not supported.
7695         * expression.cc (script_exp_function_origin)
7696         (script_exp_function_length): Move from here to ...
7697         * script.cc: ... here.
7698         (script_set_section_region, script_add_memory)
7699         (script_parse_memory_attr, script_include_directive): New
7700         functions.
7701         * script-sections.cc
7702         (class Memory_region): New class.
7703         (class Output_section_definition): Add set_memory_region,
7704         set_section_vma, set_section_lma and get_section_name methods.
7705         (class Script_Sections): Add add_memory_region,
7706         find_memory_region, find_memory_region_origin,
7707         find_memory_region_length and set_memory_region methods.
7708         Have set_section_addresses method walk the list of set memory
7709         regions.
7710         Extend the print methos to display memory regions.
7711         * script-sections.h: Add prototypes for new methods.
7712         Add enum for MEMORY region attributes.
7713         * yyscript.y: Add support for parsing MEMORY regions.
7714         * script-c.h: Add prototypes for new functions.
7715         * testsuite/Makefile.am: Add test of MEMORY region functionality.
7716         * testsuite/Makefile.in: Regenerate.
7717         * testsuite/memory_test.sh: New script.
7718         * testsuite/memory_test.s: New assembler source file.
7719         * testsuite/memory_test.t: New linker script.
7720
7721 2010-08-27  Doug Kwan  <dougkwan@google.com>
7722
7723         * gold/resolve.cc (Symbol_table::should_override): Let a weak
7724         reference override an existing dynamic weak reference.
7725         * testsuite/Makefile.am: Add new test dyn_weak_ref.
7726         * testsuite/Makefile.in: Regenerate.
7727         * testsuite/dyn_weak_ref.sh: New file.
7728         * testsuite/dyn_weak_ref_1.c: Ditto.
7729         * testsuite/dyn_weak_ref_2.c: Ditto.
7730
7731 2010-08-27  Ian Lance Taylor  <iant@google.com>
7732
7733         * incremental.h (class Incremental_input_entry): Add virtual
7734         destructor.
7735
7736 2010-08-27  Ian Lance Taylor  <iant@google.com>
7737
7738         * testsuite/start_lib_test_3.c: Mark t3 as used.
7739
7740 2010-08-27  Nick Clifton  <nickc@redhat.com>
7741
7742         * options.cc (version_script): Fix small typo in previous
7743         whitespace tidyup.
7744
7745 2010-08-25  Nick Clifton  <nickc@redhat.com>
7746
7747         * archive.cc: Formatting fixes: Remove whitespace between
7748         typename and following asterisk.  Remove whitespace between
7749         function name and opening parenthesis.
7750         * archive.h: Likewise.
7751         * arm.cc: Likewise.
7752         * attributes.cc: Likewise.
7753         * attributes.h: Likewise.
7754         * common.cc: Likewise.
7755         * copy-relocs.cc: Likewise.
7756         * dirsearch.h: Likewise.
7757         * dynobj.cc: Likewise.
7758         * ehframe.cc: Likewise.
7759         * ehframe.h: Likewise.
7760         * expression.cc: Likewise.
7761         * fileread.cc: Likewise.
7762         * fileread.h: Likewise.
7763         * gc.h: Likewise.
7764         * gold-threads.cc: Likewise.
7765         * gold.cc: Likewise.
7766         * i386.cc: Likewise.
7767         * icf.h: Likewise.
7768         * incremental-dump.cc: Likewise.
7769         * incremental.cc: Likewise.
7770         * layout.cc: Likewise.
7771         * layout.h: Likewise.
7772         * main.cc: Likewise.
7773         * merge.cc: Likewise.
7774         * merge.h: Likewise.
7775         * object.cc: Likewise.
7776         * object.h: Likewise.
7777         * options.cc: Likewise.
7778         * options.h: Likewise.
7779         * output.cc: Likewise.
7780         * output.h: Likewise.
7781         * plugin.cc: Likewise.
7782         * plugin.h: Likewise.
7783         * powerpc.cc: Likewise.
7784         * reloc.cc: Likewise.
7785         * script-c.h: Likewise.
7786         * script-sections.cc: Likewise.
7787         * script.cc: Likewise.
7788         * stringpool.cc: Likewise.
7789         * symtab.cc: Likewise.
7790         * symtab.h: Likewise.
7791         * target.cc: Likewise.
7792         * timer.cc: Likewise.
7793         * timer.h: Likewise.
7794         * version.cc: Likewise.
7795         * x86_64.cc: Likewise.
7796
7797 2010-08-24  Nick Clifton  <nickc@redhat.com>
7798
7799         PR 11899
7800         * layout.cc (segment_precedes): Sort segments by their physical
7801         addresses, if they have been set.
7802
7803 2010-08-23  Cary Coutant  <ccoutant@google.com>
7804
7805         * archive.cc (Lib_group::add_symbols): Lock object before deleting its
7806         symbols data.
7807         (Lib_group::include_member): Unlock object after deleting its
7808         symbols data.
7809         * testsuite/start_lib_test_3.c: Remove all global symbols to trigger
7810         the bug fixed here.
7811
7812 2010-08-19  Neil Vachharajani  <nvachhar@google.com>
7813             Cary Coutant  <ccoutant@google.com>
7814
7815         * gold/archive.h (Add_lib_group_symbols): Add readsyms_blocker_, adjust
7816         constructor, and set_blocker.
7817         * gold/archive.cc (Add_lib_group_symbols::is_runnable): Also check
7818         readsyms_blocker_.
7819         * gold/readsyms.cc (Read_symbols::do_lib_group): Also pass
7820         this->this_blocker_ to Add_lib_group_symbols::set_blocker.
7821         * testsuite/Makefile.am (start_lib_test): New test case.
7822         * testsuite/Makefile.in: Regenerate.
7823         * testsuite/start_lib_test_main.c: New file.
7824         * testsuite/start_lib_test_1.c: New file.
7825         * testsuite/start_lib_test_2.c: New file.
7826         * testsuite/start_lib_test_3.c: New file.
7827
7828 2010-08-19  Ian Lance Taylor  <iant@google.com>
7829
7830         * Makefile.in: Rebuild with automake 1.11.1.
7831         * aclocal.m4: Likewise.
7832         * testsuite/Makefile.in: Likewise.
7833
7834 2010-08-19  Ian Lance Taylor  <iant@google.com>
7835
7836         PR 10893
7837         * i386.cc (class Output_data_plt_i386): Update declarations.
7838         Define Global_ifunc and Local_ifunc types.  Add global_ifuncs_ and
7839         local_ifuncs_ fields.
7840         (Target_i386::do_plt_section_for_global): New function.
7841         (Target_i386::do_plt_section_for_local): New function.
7842         (Output_data_plt_i386::Output_data_plt_i386): Add symtab
7843         parameter; change all callers.  Initialize global_ifuncs_ and
7844         local_ifuncs_.  If doing a static link define __rel_iplt_start and
7845         __rel_iplt_end.
7846         (Output_data_plt_i386::add_entry): Handle IFUNC symbols.
7847         (Output_data_plt_i386::add_local_ifunc_entry): New function.
7848         (Output_data_plt_i386::do_write): Fix GOT entries for IFUNC
7849         symbols.
7850         (Target_i386::make_plt_section): New function, broken out of
7851         make_plt_entry.  Set sh_info field of .rel.plt to point to .plt.
7852         (Target_i386::make_plt_entry): Call make_plt_section.
7853         (Target_i386::make_local_ifunc_plt_entry): New function.
7854         (Target_i386::Scan::reloc_needs_iplt_for_ifunc): New function.
7855         (Target_i386::Scan::local): Handle IFUNC symbols.  Add
7856         R_386_IRELATIVE to switch.
7857         (Target_i386::Scan::global): Likewise.
7858         (Target_i386::Relocate::relocate): Likewise.
7859         (Target_i386::Relocatable_size_for_reloc): Add R_386_IRELATIVE to
7860         switch.
7861         * x86_64.cc (class Output_data_plt_x86_64): Update declarations.
7862         (Target_x86_64::do_plt_section_for_global): New function.
7863         (Target_x86_64::do_plt_section_for_local): New function.
7864         (Output_data_plt_x86_64::Output_data_plt_x86_64): Add symtab
7865         parameter; change all callers.  If doing a static link define
7866         __rela_iplt_start and __rela_iplt_end.
7867         (Output_data_plt_x86_64::add_entry): Handle IFUNC symbols.
7868         (Output_data_plt_x86_64::add_local_ifunc_entry): New function.
7869         (Target_x86_64::make_plt_section): Set sh_info field of .rel.plt
7870         to point to .plt.
7871         (Target_x86_64::make_local_ifunc_plt_entry): New function.
7872         (Target_x86_64::Scan::check_non_pic): Add R_X86_64_IRELATIVE to
7873         switch.
7874         (Target_x86_64::Scan::reloc_needs_iplt_for_ifunc): New function.
7875         (Target_x86_64::Scan::local): Handle IFUNC symbols.  Add
7876         R_X86_64_IRELATIVE to switch.
7877         (Target_x86_64::Scan::global): Likewise.
7878         (Target_x86_64::Relocate::relocate): Likewise.
7879         (Target_x86_64::Relocatable_size_for_reloc): Add R_X86_64_IRELATIVE to
7880         switch.
7881         * target.h (class Target): Add plt_section_for_global and
7882         plt_section_for_local functions.  Add do_plt_section_for_global
7883         and do_plt_section_for_local virtual functions.
7884         * symtab.h (Symbol::needs_plt_entry): Handle IFUNC symbol.  Add
7885         clarifying comments.
7886         (Symbol::use_plt_offset): Handle IFUNC symbol.
7887         * object.cc (Sized_relobj::Sized_relobj): Initialize
7888         local_plt_offsets_.
7889         (Sized_relobj::local_has_plt_offset): New function.
7890         (Sized_relobj::local_plt_offset): New function.
7891         (Sized_relobj::set_local_plt_offset): New function.
7892         (Sized_relobj::do_count): Handle IFUNC symbol.
7893         * object.h (class Symbol_value): Add is_ifunc_symbol_ field.  Take
7894         a bit away from input_shndx_ field.  Add set_is_func_symbol and
7895         is_ifunc_symbol functions.
7896         (class Sized_relobj): Update declarations.  Remove Tls_got_entry
7897         and Local_tls_got_offsets.  Define Local_plt_offsets.  Add
7898         local_plt_offsets_ field.
7899         (Sized_relobj::clear_local_symbols): Clear local_plt_offsets_.
7900         * output.h (class Output_section_data): Add non-const
7901         output_section function.
7902         (class Output_data_got): Update declarations.
7903         (class Output_data_got::Got_entry): Add use_plt_offset_ field.
7904         Add use_plt_offset parameter to global and local constructors.
7905         Change all callers.  Change local_sym_index_ field to 31 bits.
7906         Change GSYM_CODE and CONSTANT_CODE accordingly.
7907         * output.cc (Output_data_reloc_base::do_adjust_output_section): If
7908         doing a static link don't set sh_link field.
7909         (Output_data_got::Got_entry::write): Use PLT offset if
7910         appropriate.
7911         (Output_data_got::add_global_plt): New function.
7912         (Output_data_got::add_local_plt): New function.
7913         * target-reloc.h (relocate_section): Handle IFUNC symbol.
7914         * defstd.cc (in_section): Remove entries for __rel_iplt_start,
7915         __rel_iplt_end, __rela_iplt_start, and __rela_iplt_end.
7916         * configure.ac: Set IFUNC automake conditional for glibc >= 2.11.
7917         * testsuite/Makefile.am: Add a bunch of IFUNC tests, all within
7918         IFUNC conditional.
7919         * testsuite/ifunc-sel.h: New file.
7920         * testsuite/ifuncmain1.c: New file.
7921         * testsuite/ifuncmain1vis.c: New file.
7922         * testsuite/ifuncmod1.c: New file.
7923         * testsuite/ifuncdep2.c: New file.
7924         * testsuite/ifuncmain2.c: New file.
7925         * testsuite/ifuncmain3.c: New file.
7926         * testsuite/ifuncmod3.c: New file.
7927         * testsuite/ifuncmain4.c: New file.
7928         * testsuite/ifuncmain5.c: New file.
7929         * testsuite/ifuncmod5.c: New file.
7930         * testsuite/ifuncmain6pie.c: New file.
7931         * testsuite/ifuncmod6.c: New file.
7932         * testsuite/ifuncmain7.c: New file.
7933         * configure, testsuite/Makefile.in: Rebuild.
7934
7935 2010-08-18  Ian Lance Taylor  <iant@google.com>
7936
7937         * incremental.cc
7938         (Output_section_incremental_inputs::write_input_files): Add cast
7939         to avoid signed/unsigned comparison warning.
7940         (Output_section_incremental_inputs::write_info_blocks): Likewise.
7941
7942 2010-08-12  Cary Coutant  <ccoutant@google.com>
7943
7944         * common.cc (Sort_commons::operator()): Remove unnecessary code.
7945
7946 2010-08-13  Ian Lance Taylor  <iant@google.com>
7947
7948         * testsuite/incremental_test_1.c: Add prototype to avoid warning.
7949
7950 2010-08-12  Cary Coutant  <ccoutant@google.com>
7951             Doug Kwan  <dougkwan@google.com>
7952
7953         * resolve.cc (Symbol_table::should_override): When a weak dynamic
7954         defintion overrides non-weak undef, remember that the original undef
7955         is not weak.
7956         * symtab.cc (Symbol_table::sized_write_global): For undef without
7957         an original weak binding, set binding to global in output.
7958         * testsuite/Makefile.am: Add new test strong_ref_weak_def.
7959         * testsuite/Makefile.in: Regenerate.
7960         * testsuite/strong_ref_weak_def.sh: New file.
7961         * testsuite/strong_ref_weak_def_1.c: Ditto.
7962         * testsuite/strong_ref_weak_def_2.c: Ditto.
7963
7964 2010-08-12  Cary Coutant  <ccoutant@google.com>
7965
7966         * testsuite/incremental_test.sh: Rewrite.
7967         * testsuite/incremental_test_1.c: Rewrite.
7968         * testsuite/incremental_test_2.c: Rewrite.
7969
7970 2010-08-12  Cary Coutant  <ccoutant@google.com>
7971
7972         * arm.cc (Target_arm::got_size): Add const.
7973         (Target_arm::got_entry_count): New function.
7974         (Target_arm::plt_entry_count): New function.
7975         (Target_arm::first_plt_entry_offset): New function.
7976         (Target_arm::plt_entry_size): New function.
7977         (Output_data_plt_arm::entry_count): New function.
7978         (Output_data_plt_arm::first_plt_entry_offset): New function.
7979         (Output_data_plt_arm::get_plt_entry_size): New function.
7980         * i386.cc (Target_i386::got_size): Add const.
7981         (Target_i386::got_entry_count): New function.
7982         (Target_i386::plt_entry_count): New function.
7983         (Target_i386::first_plt_entry_offset): New function.
7984         (Target_i386::plt_entry_size): New function.
7985         (Output_data_plt_i386::entry_count): New function.
7986         (Output_data_plt_i386::first_plt_entry_offset): New function.
7987         (Output_data_plt_i386::get_plt_entry_size): New function.
7988         * incremental-dump.cc (dump_incremental_inputs): Adjust call to
7989         find_incremental_inputs_sections.  Dump incremental_got_plt section.
7990         * incremental.cc: Include target.h.
7991         (Sized_incremental_binary::do_find_incremental_inputs_sections): Add
7992         parameter.  Adjust all callers.  Find incremental_got_plt section.
7993         (Incremental_inputs::create_data_sections): Create incremental_got_plt
7994         section.
7995         (Output_section_incremental_inputs::set_final_data_size): Calculate
7996         size of incremental_got_plt section.
7997         (Output_section_incremental_inputs::do_write): Write the
7998         incremental_got_plt section.
7999         (Got_plt_view_info): New struct.
8000         (Local_got_offset_visitor): New class.
8001         (Global_got_offset_visitor): New class.
8002         (Global_symbol_visitor_got_plt): New class.
8003         (Output_section_incremental_inputs::write_got_plt): New function.
8004         * incremental.h (Incremental_binary::find_incremental_inputs_sections):
8005         Add parameter.  Adjust all callers.
8006         (Incremental_binary::do_find_incremental_inputs_sections): Likewise.
8007         (Incremental_inputs::got_plt_section): New function.
8008         (Incremental_inputs::got_plt_section_): New data member.
8009         (Incremental_got_plt_reader): New class.
8010         * layout.cc (Layout::create_incremental_info_sections): Add the
8011         incremental_got_plt section.
8012         * object.h (Got_offset_list::get_list): New function.
8013         (Got offset_list::for_all_got_offsets): New function.
8014         (Sized_relobj::local_got_offset_list): New function.
8015         * powerpc.cc (Target_powerpc::got_size): Add const.
8016         (Target_powerpc::got_entry_count): New function.
8017         (Target_powerpc::plt_entry_count): New function.
8018         (Target_powerpc::first_plt_entry_offset): New function.
8019         (Target_powerpc::plt_entry_size): New function.
8020         (Output_data_plt_powerpc::entry_count): New function.
8021         (Output_data_plt_powerpc::first_plt_entry_offset): New function.
8022         (Output_data_plt_powerpc::get_plt_entry_size): New function.
8023         * sparc.cc (Target_sparc::got_size): Add const.
8024         (Target_sparc::got_entry_count): New function.
8025         (Target_sparc::plt_entry_count): New function.
8026         (Target_sparc::first_plt_entry_offset): New function.
8027         (Target_sparc::plt_entry_size): New function.
8028         (Output_data_plt_sparc::entry_count): New function.
8029         (Output_data_plt_sparc::first_plt_entry_offset): New function.
8030         (Output_data_plt_sparc::get_plt_entry_size): New function.
8031         * symtab.h (Symbol::got_offset_list): New function.
8032         (Symbol_table::for_all_symbols): New function.
8033         * target.h (Sized_target::got_entry_count): New function.
8034         (Sized_target::plt_entry_count): New function.
8035         (Sized_target::plt_entry_size): New function.
8036         * x86_64.cc (Target_x86_64::got_size): Add const.
8037         (Target_x86_64::got_entry_count): New function.
8038         (Target_x86_64::plt_entry_count): New function.
8039         (Target_x86_64::first_plt_entry_offset): New function.
8040         (Target_x86_64::plt_entry_size): New function.
8041         (Output_data_plt_x86_64::entry_count): New function.
8042         (Output_data_plt_x86_64::first_plt_entry_offset): New function.
8043         (Output_data_plt_x86_64::get_plt_entry_size): New function.
8044
8045 2010-08-12  Cary Coutant  <ccoutant@google.com>
8046
8047         * archive.cc: Include incremental.h.
8048         (Archive::Archive): Initialize incremental_info_.
8049         (Archive::include_member): Record archive members in incremental info.
8050         (Add_archive_symbols::run): Record begin and end of an archive in
8051         incremental info.
8052         (Lib_group::include_member): Record objects in incremental info.
8053         * archive.h (Incremental_archive_entry): Forward declaration.
8054         (Archive::set_incremental_info): New member function.
8055         (Archive::incremental_info): New member function.
8056         (Archive::Unused_symbol_iterator): New class.
8057         (Archive::unused_symbols_begin): New member function.
8058         (Archive::unused_symbols_end): New member function.
8059         (Archive::incremental_info_): New data member.
8060         * incremental-dump.cc (find_input_containing_global): New function.
8061         (dump_incremental_inputs): Dump new incremental info sections.
8062         * incremental.cc: Include symtab.h.
8063         (Output_section_incremental_inputs): New class.
8064         (Sized_incremental_binary::do_find_incremental_inputs_sections): Support
8065         new incremental info sections.
8066         (Sized_incremental_binary::do_check_inputs): Likewise.
8067         (Incremental_inputs::report_archive): Remove.
8068         (Incremental_inputs::report_archive_begin): New function.
8069         (Incremental_inputs::report_archive_end): New function.
8070         (Incremental_inputs::report_object): New function.
8071         (Incremental_inputs::finalize_inputs): Remove.
8072         (Incremental_inputs::report_input_section): New function.
8073         (Incremental_inputs::report_script): Rewrite.
8074         (Incremental_inputs::finalize): Do nothing but finalize string table.
8075         (Incremental_inputs::create_incremental_inputs_section_data): Remove.
8076         (Incremental_inputs::sized_create_inputs_section_data): Remove.
8077         (Incremental_inputs::create_data_sections): New function.
8078         (Incremental_inputs::relocs_entsize): New function.
8079         (Output_section_incremental_inputs::set_final_data_size): New function.
8080         (Output_section_incremental_inputs::do_write): New function.
8081         (Output_section_incremental_inputs::write_header): New function.
8082         (Output_section_incremental_inputs::write_input_files): New function.
8083         (Output_section_incremental_inputs::write_info_blocks): New function.
8084         (Output_section_incremental_inputs::write_symtab): New function.
8085         * incremental.h (Incremental_script_entry): Forward declaration.
8086         (Incremental_object_entry): Forward declaration.
8087         (Incremental_archive_entry): Forward declaration.
8088         (Incremental_inputs): Forward declaration.
8089         (Incremental_inputs_header_data): Remove.
8090         (Incremental_inputs_header): Remove.
8091         (Incremental_inputs_header_write): Remove.
8092         (Incremental_inputs_entry_data): Remove.
8093         (Incremental_inputs_entry): Remove.
8094         (Incremental_inputs_entry_write): Remove.
8095         (enum Incremental_input_type): Add INCREMENTAL_INPUT_ARCHIVE_MEMBER.
8096         (Incremental_binary::find_incremental_inputs_sections): Add parameters.
8097         (Incremental_binary::do_find_incremental_inputs_sections): Likewise.
8098         (Sized_ncremental_binary::do_find_incremental_inputs_sections):
8099         Likewise.
8100         (Incremental_input_entry): New class.
8101         (Incremental_script_entry): New class.
8102         (Incremental_object_entry): New class.
8103         (Incremental_archive_entry): New class.
8104         (Incremental_inputs::Incremental_inputs): Initialize new data members.
8105         (Incremental_inputs::report_inputs): Remove.
8106         (Incremental_inputs::report_archive): Remove.
8107         (Incremental_inputs::report_archive_begin): New function.
8108         (Incremental_inputs::report_archive_end): New function.
8109         (Incremental_inputs::report_object): Change prototype.
8110         (Incremental_inputs::report_input_section): New function.
8111         (Incremental_inputs::report_script): Change prototype.
8112         (Incremental_inputs::get_reloc_count): New function.
8113         (Incremental_inputs::set_reloc_count): New function.
8114         (Incremental_inputs::create_data_sections): New function.
8115         (Incremental_inputs::create_incremental_inputs_section_data): Remove.
8116         (Incremental_inputs::inputs_section): New function.
8117         (Incremental_inputs::symtab_section): New function.
8118         (Incremental_inputs::relocs_section): New function.
8119         (Incremental_inputs::get_stringpool): Add const.
8120         (Incremental_inputs::command_line): Add const.
8121         (Incremental_inputs::inputs): Remove.
8122         (Incremental_inputs::command_line_key): New function.
8123         (Incremental_inputs::input_file_count): New function.
8124         (Incremental_inputs::input_files): New function.
8125         (Incremental_inputs::relocs_entsize): New function.
8126         (Incremental_inputs::sized_create_inputs_section_data): Remove.
8127         (Incremental_inputs::finalize_inputs): Remove.
8128         (Incremental_inputs::Input_info): Remove.
8129         (Incremental_inputs::lock_): Remove.
8130         (Incremental_inputs::inputs_): Change type.
8131         (Incremental_inputs::inputs_map_): Remove.
8132         (Incremental_inputs::current_object_entry_): New data member.
8133         (Incremental_inputs::inputs_section_): New data member.
8134         (Incremental_inputs::symtab_section_): New data member.
8135         (Incremental_inputs::relocs_section_): New data member.
8136         (Incremental_inputs::reloc_count_): New data member.
8137         (Incremental_inputs_reader): New class.
8138         (Incremental_symtab_reader): New class.
8139         (Incremental_relocs_reader): New class.
8140         * layout.cc (Layout::finalize): Move finalization of incremental info
8141         and creation of incremental info sections to follow finalization of
8142         symbol table.  Set offsets for postprocessing sections.
8143         (Layout::create_incremental_info_sections): Call
8144         Incremental_inputs::create_data_sections.  Add incremental symtab
8145         and relocs sections.  Set sh_entsize and sh_link fields.  Arrange for
8146         sections to layout after input sections.
8147         * layout.h (struct Timespec): Forward declaration.
8148         (Layout::incremental_inputs): Add const.
8149         (Layout::create_incremental_info_sections): Add parameter.
8150         * main.cc (main): Remove call to Incremental_inputs::report_inputs.
8151         * object.cc: Include incremental.h.
8152         (Relobj::finalize_incremental_relocs): New function.
8153         (Sized_relobj::do_layout): Record input sections in incremental info.
8154         * object.h (Object::output_section): New function.
8155         (Object::output_section_offset): Moved from Relobj.
8156         (Object::get_incremental_reloc_base): New function.
8157         (Object::get_incremental_reloc_count): New function.
8158         (Object::do_output_section): New function.
8159         (Object::do_output_section_offset): Moved from Relobj.
8160         (Object::do_get_incremental_reloc_base): New function.
8161         (Object::do_get_incremental_reloc_count): New function.
8162         (Object::Object): Initialize new data members.
8163         (Relobj::output_section): Renamed do_output_section and moved to
8164         protected.
8165         (Relobj::output_section_offset): Moved to Object.
8166         (Relobj::do_get_incremental_reloc_base): New function.
8167         (Relobj::do_get_incremental_reloc_count): New function.
8168         (Relobj::allocate_incremental_reloc_counts): New function.
8169         (Relobj::count_incremental_reloc): New function.
8170         (Relobj::finalize_incremental_relocs): New function.
8171         (Relobj::next_incremental_reloc_index): New function.
8172         (Relobj::reloc_counts_): New data member.
8173         (Relobj::reloc_bases_): New data member.
8174         (Sized_relobj::do_relocate_sections): Add parameter.  Change caller.
8175         (Sized_relobj::relocate_sections): Add parameter.  Change all callers.
8176         (Sized_relobj::incremental_relocs_scan): New function.
8177         (Sized_relobj::incremental_relocs_scan_reltype): New function.
8178         (Sized_relobj::incremental_relocs_write): New function.
8179         (Sized_relobj::incremental_relocs_write_reltype): New function.
8180         * plugin.cc (Plugin_manager::add_input_file): Rewrite test for
8181         incremental link.
8182         * readsyms.cc (Read_symbols::do_read_symbols): Move reporting of
8183         archives and object files elsewhere.
8184         (Add_symbols::run): Report object files here.
8185         (Finish_group::run): Report end of archive at end of group.
8186         * reloc.cc: Include layout.h, incremental.h.
8187         (Sized_relobj::do_read_relocs): Need relocations for incremental link.
8188         (Sized_relobj::do_scan_relocs): Record relocations for incremental link.
8189         (Sized_relobj::incremental_relocs_scan): New function.
8190         (Sized_relobj::incremental_relocs_scan_reltype): New function.
8191         (Sized_relobj::do_relocate_sections): Write incremental relocations.
8192         (Sized_relobj::incremental_relocs_write): New function.
8193         (Sized_relobj::incremental_relocs_write_reltype): New function.
8194         * script.cc (read_input_script): Rewrite test for incremental link.
8195         Change call to Incremental_inputs::report_script.
8196         * symtab.h (Symbol_table::first_global_index): New function.
8197         (Symbol_table::output_count): New function.
8198
8199 2010-08-12  Doug Kwan  <dougkwan@google.com>
8200
8201         * arm.cc (Target_arm::merge_object_attributes): Check command line
8202         options --no-wchar-size-warning and --no-enum-size-warning.
8203         * options.h (General_options): Add ld-compatible options
8204         --no-enum-size-warning and --no-wchar-size-warning.
8205
8206 2010-08-04  Ian Lance Taylor  <iant@google.com>
8207
8208         * x86_64.cc (Target_x86_64::Scan::local): Use
8209         R_X86_64_GNU_VTINHERIT instead of R_386_GNU_VTINHERIT and
8210         R_X86_64_GNU_VTENTRY instead of R_386_GNU_VTENTRY.
8211         (Target_x86_64::Scan::global): Likewise.
8212         (Target_x86_64::Relocate::relocate): Likewise.
8213         (Target_x86_64::Relocatable_size_for_reloc::get_size_for_reloc):
8214         Likewise.
8215
8216 2010-08-03  Cary Coutant  <ccoutant@google.com>
8217
8218         * merge.cc (Output_merge_string::do_add_input_section): Count strings
8219         to reserve space in merged_strings vector. Keep total input size
8220         for stats.
8221         (Output_merge_string::do_print_merge_stats): Print total input size.
8222         * merge.h (Output_merge_string): Add input_size_ field.
8223         * stringpool.cc (Stringpool_template::string_length): Move
8224         implementations out of Stringpool_template class and place in
8225         stringpool.h.
8226         * stringpool.h (string_length): Move out of Stringpool_template.
8227
8228 2010-08-03  Ian Lance Taylor  <iant@google.com>
8229
8230         PR 11712
8231         * layout.cc (relaxation_loop_body): If address of load segment is
8232         set, adjust address to include headers if possible.
8233
8234 2010-08-03  Ian Lance Taylor  <iant@google.com>
8235
8236         * version.cc (version_string): Bump to 1.10.
8237
8238 2010-08-03  Ian Lance Taylor  <iant@google.com>
8239
8240         PR 11805
8241         * layout.h (enum Output_section_order): Define.
8242         (class Layout): Update declarations.
8243         * layout.cc (Layout::get_output_section): Add order parameter.
8244         Remove is_interp, is_dynamic_linker_section, is_last_relro, and
8245         is_first_non_relro parameters.  Change all callers.
8246         (Layout::choose_output_section): Likewise.
8247         (Layout::add_output_section_data): Likewise.
8248         (Layout::make_output_section): Likewise.  Set order.
8249         (Layout::default_section_order): New function.
8250         (Layout::layout_eh_frame): Call add_output_section_to_nonload.
8251         * output.cc (Output_section::Output_section): Initialize order_.
8252         Don't initialize deleted fields.
8253         (Output_segment::Output_segment): Don't initialize deleted
8254         fields.
8255         (Output_segment::add_output_section_to_load): New function
8256         replacing add_output_section.  Change all callers to call this or
8257         add_output_section_to_nonload.
8258         (Output_segment::add_output_section_to_nonload): New function.
8259         (Output_segment::remove_output_section): Rewrite.
8260         (Output_segment::add_initial_output_data): Likewise.
8261         (Output_segment::has_any_data_sections): Likewise.
8262         (Output_segment::is_first_section_relro): Likewise.
8263         (Output_segment::maximum_alignment): Likewise.
8264         (Output_segment::has_dynamic_reloc): New function replacing
8265         dynamic_reloc_count.  Change all callers.
8266         (Output_segment::has_dynamic_reloc_list): New function replacing
8267         dynamic_reloc_count_list.  Change all callers.
8268         (Output_segment::set_section_addresses): Rewrite.
8269         (Output_segment::set_offset): Rewrite.
8270         (Output_segment::find_first_and_last_list): Remove.
8271         (Output_segment::set_tls_offsets): Rewrite.
8272         (Output_segment::first_section_load_address): Likewise.
8273         (Output_segment::output_section_count): Likewise.
8274         (Output_segment::section_with_lowest_load_address): Likewise.
8275         (Output_segment::write_section_headers): Likewise.
8276         (Output_segment::print_sections_to_map): Likewise.
8277         * output.h (class Output_data): Remove dynamic_reloc_count_
8278         field.  Add has_dynamic_reloc_ field.  Make bools into bitfields.
8279         (Output_data::add_dynamic_reloc): Rewrite.
8280         (Output_data::has_dynamic_reloc): New function.
8281         (Output_data::dynamic_reloc_count): Remove.
8282         (class Output_section): Add order_ field.  Remvoe is_relro_local_,
8283         is_last_relro_, is_first_non_relro_, is_interp_,
8284         is_dynamic_linker_section_ fields.  Add order and set_order
8285         functions.  Remove is_relro_local, set_is_relro_local,
8286         is_last_relro, set_is_last_relro, is_first_non_relro,
8287         set_is_first_non_relro functions, is_interp, set_is_interp,
8288         is_dynamic_linker_section, and set_is_dynamic_linker_section
8289         functions.
8290         (class Output_segment): Change Output_data_list from std::list to
8291         std:;vector.  Add output_lists_ field.  Remove output_data_ and
8292         output_bss_ fields.  Update declarations.
8293
8294 2010-08-02  Ian Lance Taylor  <iant@google.com>
8295
8296         * arm.cc (Target_arm::gc_process_relocs): Use typename.
8297         * powerpc.cc (Target_powerpc::gc_process_relocs): Likewise.
8298         * sparc.cc (Target_sparc::gc_process_relocs): Likewise.
8299
8300 2010-08-02  Ian Lance Taylor  <iant@google.com>
8301
8302         PR 11855
8303         * script.cc (Script_options::Script_options): Initialize
8304         symbol_definitions_ and symbol_references_.
8305         (Script_options::add_symbol_assignment): Update
8306         symbol_definitions_ and symbol_references_.
8307         (Script_options::add_symbol_reference): New function.
8308         (script_symbol): New function.
8309         * script.h (class Script_options): Add symbol_definitions_ and
8310         symbol_references_ fields.
8311         (Script_options::referenced_const_iterator): New type.
8312         (Script_options::referenced_begin): New function.
8313         (Script_options::referenced_end): New function.
8314         (Script_options::is_referenced): New function.
8315         (Script_options::any_unreferenced): New function.
8316         * script-c.h (script_symbol): Declare.
8317         * yyscript.y (exp): Call script_symbol.
8318         * symtab.cc: Include "script.h".
8319         (Symbol_table::gc_mark_undef_symbols): Add layout parameter.
8320         Change all callers.  Check symbols referenced by scripts.
8321         (Symbol_table::add_undefined_symbols_from_command_line): Add
8322         layout parameter.  Change all callers.
8323         (Symbol_table::do_add_undefined_symbols_from_command_line):
8324         Likewise.  Break out loop body.  Check symbols referenced by
8325         scripts.
8326         (Symbol_table::add_undefined_symbol_from_command_line): New
8327         function broken out of
8328         do_add_undefined_symbols_from_command_line.
8329         * symtab.h (class Symbol_table): Update declarations.
8330         * archive.cc: Include "layout.h".
8331         (Archive::should_include_member): Add layout parameter.  Change
8332         all callers.  Check for symbol mentioned in expression.
8333         * archive.h (class Archive): Update declaration.
8334         * object.cc (Sized_relobj::do_should_include_member): Add layout
8335         parameter.
8336         * object.h (Object::should_include_member): Add layout parameter.
8337         Change all callers.
8338         (Object::do_should_include_member): Add layout parameter.
8339         (class Sized_relobj): Update declaration.
8340         * dynobj.cc (Sized_dynobj::do_should_include_member): Add layout
8341         parameter.
8342         * dynobj.h (class Sized_dynobj): Update declaration.
8343         * plugin.cc (Sized_pluginobj::do_should_include_member): Add
8344         layout parameter.
8345         * plugin.h (class Sized_pluginobj): Update declaration.
8346
8347 2010-08-02  Ian Lance Taylor  <iant@google.com>
8348
8349         PR 11866
8350         * output.cc (Output_segment::set_offset): Search for the first and
8351         last sections rather than assuming that the list is in order.
8352         (Output_segment::find_first_and_last_list): New function.
8353         * output.h (class Output_segment): Update declarations.
8354         * testsuite/Makefile.am (check_PROGRAMS): Add relro_strip_test.
8355         (relro_strip_test_SOURCES): New variable.
8356         (relro_strip_test_DEPENDENCIES): New variable.
8357         (relro_strip_test_LDFLAGS): New variable.
8358         (relro_strip_test_LDADD): New variable.
8359         (relro_strip_test.so): New target.
8360
8361 2010-08-02  Ian Lance Taylor  <iant@google.com>
8362
8363         * i386.cc (class Target_i386): Add got_tlsdesc_ field.
8364         (Target_i386::Target_i386):: Initialize got_tlsdesc_.
8365         (Target_i386::got_tlsdesc_section): New function.
8366         (Target_i386::got_section): Create space for GOT entries for
8367         TLSDESC relocations.
8368         (Target_i386::Scan::local): Use TLSDESC GOT for unoptimized
8369         R_386_TLS_GOTDESC.
8370         (Target_i386::Scan::global): Likewise.
8371         (Target_i386::Relocate::relocate_tls): Adjust GOT offset when
8372         using TLSDESC GOT.
8373         * x86_64.cc (class Target_x86_64): Add got_tlsdesc_ field.
8374         (Target_x86_64::Target_x86_64):: Initialize got_tlsdesc_.
8375         (Target_x86_64::got_tlsdesc_section): New function.
8376         (Target_x86_64::got_section): Create space for GOT entries for
8377         TLSDESC relocations.
8378         (Target_x86_64::Scan::local): Use TLSDESC GOT for unoptimized
8379         R_386_TLS_GOTDESC.
8380         (Target_x86_64::Scan::global): Likewise.
8381         (Target_x86_64::Relocate::relocate_tls): Adjust GOT offset when
8382         using TLSDESC GOT.
8383
8384 2010-08-02  Ian Lance Taylor  <iant@google.com>
8385
8386         * testsuite/final_layout.sh: Use dc to convert from hex to
8387         decimal.
8388
8389 2010-07-29  Sriraman Tallam  <tmsriram@google.com>
8390
8391         * arm.cc (Target_arm<big_endian>::gc_process_relocs): Add template
8392         paramter to the call to gold::gc_process_relocs.
8393         * i386.cc (Target_i386<big_endian>::gc_process_relocs): Add template
8394         paramter to the call to gold::gc_process_relocs.
8395         * x86_64.cc (Target_x86_64<big_endian>::gc_process_relocs): Add template
8396         parameter to the call to gold::gc_process_relocs.
8397         * powerpc.cc (Target_powerpc<big_endian>::gc_process_relocs): Add
8398         template parameter to the call to gold::gc_process_relocs.
8399         * sparc.cc (Target_sparc<big_endian>::gc_process_relocs): Add template
8400         paramter to the call to gold::gc_process_relocs.
8401         * gc.h (get_embedded_addend_size): New function.
8402         (gc_process_relocs): Save the size of the reloc for use by ICF.
8403         * icf.cc (get_section_contents): Get the addend from the text section
8404         for SHT_REL relocation sections.
8405         * icf.h (Icf::Reloc_addend_size_info): New typedef.
8406         (Icf::Reloc_info): Add new member reloc_addend_size_info.
8407         * int_encoding.h (read_from_pointer): New overloaded function.
8408         * testsuite/Makefile.am (icf_sht_rel_addend_test): New test.
8409         * testsuite/icf_sht_rel_addend_test.sh: New file.
8410         * testsuite/icf_sht_rel_addend_test_1.cc: New file.
8411         * testsuite/icf_sht_rel_addend_test_2.cc: New file.
8412
8413 2010-07-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
8414
8415         * configure.ac (AM_INIT_AUTOMAKE): Use parallel-tests option.
8416         * Makefile.in: Regenerate.
8417         * testsuite/Makefile.in: Regenerate.
8418
8419 2010-07-27  Jeffrey Yasskin  <jyasskin@google.com>
8420
8421         * testsuite/debug_msg.sh: Test mixed weak/strong symbol behavior.
8422         * gold/testsuite/debug_msg.cc: Likewise.
8423         * gold/testsuite/odr_violation1.cc
8424         * gold/testsuite/odr_violation2.cc
8425
8426 2010-07-21  Cary Coutant  <ccoutant@google.com>
8427
8428         * merge.h (Output_merge_string::Merged_string): Remove object, shndx,
8429         string, and length fields.
8430         (Output_merge_string::Merged_strings_list): New type.
8431         (Output_merge_string::Merged_strings_lists): New typedef.
8432         (Output_merge_string): Replace merged_strings_ with
8433         merged_strings_lists_.
8434         * merge.cc (Output_merge_string::do_add_input_section): Allocate new
8435         Merged_strings_list per input object and section.  Don't store pointer
8436         to the string.  Don't store length with each merged string entry.
8437         (Output_merge_string::finalize_merged_data): Loop over list of merged
8438         strings lists.  Recompute length of each merged string.
8439
8440 2010-07-15  Cary Coutant  <ccoutant@google.com>
8441
8442         * plugin.cc (Plugin_finish::run): Don't call cleanup handlers from
8443         here.
8444
8445 2010-07-14  Ian Lance Taylor  <iant@google.com>
8446
8447         * descriptors.cc (Descriptors::open): Report correct name in error
8448         message.
8449
8450 2010-07-13  Doug Kwan  <dougkwan@google.com>
8451
8452         * arm.cc (Arm_input_section::Arm_input_section): For a
8453         SHT_ARM_EXIDX section, always keeps the input sections.
8454         (Arm_input_section::set_exidx_section_link): New method.
8455         (Arm_exidx_input_section::Arm_exidx_input_section): Initialize
8456         has_errors_ to false.
8457         (Arm_exidx_input_section::has_errors,
8458         Arm_exidx_input_section::set_has_errors): New methods.
8459         (Arm_exidx_input_section::has_errors_): New data member.
8460         (Arm_relobj::get_exidx_shndx_list): New method.
8461         (Arm_output_section::append_text_sections_to_list): Do not skip
8462         section without SHF_EXECINSTR.
8463         (Arm_output_section::fix_exidx_coverage): Skip input sections with
8464         errors.
8465         (Arm_relobj::make_exidx_input_section): Add new parameter for text
8466         section header.  Make error messages more verbose.  Check for
8467         a non-executable section linked to an EXIDX section.
8468         (Arm_relobj::do_read_symbols): Remove error checking, which has been
8469         moved to Arm_relobj::make_exidx_input_section.  Add an assertion to
8470         check that there is no deferred EXIDX section if we exit early.
8471         Instead of not making an EXIDX section in case of an error, make one
8472         and set the has_errors flag of it.
8473         (Target_arm::do_finalize_sections): Fix up links of EXIDX sections
8474         in a relocatable link.
8475         (Target_arm::do_relax): Look for the EXIDX output section instead of
8476         assuming that it is called .ARM.exidx.
8477         (Target_arm::fix_exidx_coverage): Add a new parameter for input
8478         section list.  Do not check for SHF_EXECINSTR section flags but
8479         skip any input section with errors.
8480         * output.cc (Output_section::Output_section): Initialize
8481         always_keeps_input_sections_ to false.
8482         (Output_section::add_input_section): Check for
8483         always_keeps_input_sections_.
8484         *  output.h (Output_section::always_keeps_input_sections,
8485         Output_section::set_always_keeps_input_sections): New methods.
8486         (Output_section::always_keeps_input_sections): New data member.
8487
8488 2010-07-13  Rafael Espindola  <espindola@google.com>
8489
8490         * fileread.cc (try_extra_search_path, find_file): Move to Input_file.
8491         * fileread.h (Input_file): Add try_extra_search_path and find_file.
8492
8493 2010-07-13  Philip Herron  <herron.philip@googlemail.com>
8494             Ian Lance Taylor  <iant@google.com>
8495
8496         * output.h (Output_section_lookup_maps::add_merge_section):
8497         Correct check of whether value was inserted.
8498         (Output_section_lookup_maps::add_merge_input_section): Likewise.
8499         (Output_section_lookup_maps::add_relaxed_input_section):
8500         Likewise.
8501         * arm.cc (Target_arm::got_section): Remove used local os.
8502         * i386.cc (Target_i386::got_section): Likewise.
8503         * x86_64.cc (Target_x86_64::got_section): Likewise.
8504         * sparc.cc (Target_sparc::got_section): Likewise.
8505         (Target_sparc::relocate): Remove unused local have_got_offset.
8506         * powerpc.cc (Target_powerpc::relocate): Likewise.
8507
8508 2010-07-13  Ian Lance Taylor  <iant@google.com>
8509
8510         * compressed_output.cc (zlib_decompress): Fix signature in
8511         !HAVE_ZLIB_H case.
8512
8513         * archive.cc (Archive::include_member): Unlock an external member
8514         of a thin archive.  Don't bother to delete an object we know is
8515         NULL.
8516
8517 2010-07-12  Cary Coutant  <ccoutant@google.com>
8518
8519         * compressed_output.cc (zlib_decompress): New function.
8520         (get_uncompressed_size): New function.
8521         (decompress_input_section): New function.
8522         * compressed_output.h (get_uncompressed_size): New function.
8523         (decompress_input_section): New function.
8524         * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info)
8525         Handle compressed debug sections.
8526         * layout.cc (is_compressed_debug_section): New function.
8527         (Layout::output_section_name): Map compressed section names to
8528         canonical names.
8529         * layout.h (is_compressed_debug_section): New function.
8530         (is_debug_info_section): Recognize compressed debug sections.
8531         * merge.cc: Include compressed_output.h.
8532         (Output_merge_data::do_add_input_section): Handle compressed
8533         debug sections.
8534         (Output_merge_string::do_add_input_section): Handle compressed
8535         debug sections.
8536         * object.cc: Include compressed_output.h.
8537         (Sized_relobj::Sized_relobj): Initialize new data members.
8538         (build_compressed_section_map): New function.
8539         (Sized_relobj::do_read_symbols): Handle compressed debug sections.
8540         * object.h (Object::section_is_compressed): New method.
8541         (Object::do_section_is_compressed): New method.
8542         (Sized_relobj::Compressed_section_map): New type.
8543         (Sized_relobj::do_section_is_compressed): New method.
8544         (Sized_relobj::compressed_sections_): New data member.
8545         * output.cc (Output_section::add_input_section): Handle compressed
8546         debug sections.
8547         * reloc.cc: Include compressed_output.h.
8548         (Sized_relobj::write_sections): Handle compressed debug sections.
8549
8550 2010-07-08  Cary Coutant  <ccoutant@google.com>
8551
8552         * resolve.cc (Symbol_table::resolve): Remember whether undef was
8553         weak when resolving to a dynamic def.
8554         (Symbol_table::should_override): Add adjust_dyndef flag; set it
8555         for weak undef/dynamic def cases. Adjust callers.
8556         * symtab.cc (Symbol::init_fields): Initialize undef_binding_set_ and
8557         undef_binding_weak_.
8558         (Symbol_table::sized_write_globals): Adjust symbol binding.
8559         (Symbol_table::sized_write_symbol): Add binding parameter.
8560         * symtab.h (Symbol::set_undef_binding): New method.
8561         (Symbol::is_undef_binding_weak): New method.
8562         (Symbol::undef_binding_set_, Symbol::undef_binding_weak_): New members.
8563         (Symbol_table::should_override): Add new parameter.
8564         (Symbol_table::sized_write_symbol): Add new parameter.
8565
8566         * testsuite/weak_undef_file1.cc: Add new test case.
8567         * testsuite/weak_undef_file2.cc: Fix header comment.
8568         * testsuite/weak_undef_test.cc: Add new test case.
8569
8570 2010-06-29  Doug Kwan  <dougkwan@google.com>
8571
8572         * arm-reloc-property.cc (Arm_reloc_property::Arm_reloc_property):
8573         Initialize USE_SYMBOL_.
8574         * arm-reloc-property.h (Arm_reloc_property::uses_symbol): New method
8575         definition.
8576         (Arm_reloc_property::uses_symbol_): New data member declaration.
8577         * arm.cc (Target_arm::Relocate::relocate): Exit early if relocation
8578         uses symbol value and symbol is undefined but not weakly undefined.
8579
8580 2010-06-28  Rafael Espindola  <espindola@google.com>
8581
8582         * plugin.cc (Plugin::load): Use dlerror.
8583
8584 2010-06-26  Jeffrey Yaskin  <jyasskin@google.com>
8585
8586         * symtab.cc (detect_odr_violations): When reporting an ODR
8587         violation, report an object where the symbol is defined.
8588
8589 2010-06-25  Doug Kwan  <dougkwan@google.com>
8590
8591         * arm.cc (Target_arm::can_check_for_functions_pointers): Return true.
8592         (Target_arm::section_may_have_icf_unsafe_pointers): New method
8593         definition.
8594         (Target_arm::Scan::local_reloc_may_be_function_pointer,
8595         Target_arm::Scan::global_reloc_may_be_function_pointer): Implement
8596         target hook to detect function points.
8597         (Target_arm::Scan::possible_function_pointer_reloc): New method.
8598         * icf.h (Icf::check_section_for_function_pointers): Change type of
8599         parameter SECTION_NAME to const reference to std::string.  Use
8600         target hook to determine if section may have unsafe pointers.
8601         * target.h (Target::section_may_have_icf_unsafe_pointers): New
8602         method definition.
8603
8604 2010-06-21  Rafael Espindola  <espindola@google.com>
8605
8606         * fileread.cc (Input_file::find_fie): New
8607         (Input_file::open): Use Input_file::find_fie.
8608         * fileread.h (Input_file::find_fie): New
8609         * plugin.cc (set_extra_library_path): New.
8610         (Plugin::load): Add set_extra_library_path to the transfer vector.
8611         (Plugin_manager::set_extra_library_path): New.
8612         (Plugin_manager::add_input_file): Use the extra search path if set.
8613         (set_extra_library_path(): New.
8614         * plugin.h (Plugin_manager): Add set_extra_library_path and
8615         extra_search_path_.
8616
8617 2010-06-19  Cary Coutant  <ccoutant@google.com>
8618
8619         * layout.cc (gdb_sections): Add .debug_types.
8620         (lines_only_debug_sections): Likewise.
8621
8622 2010-06-18  Rafael Espindola  <espindola@google.com>
8623
8624         * plugin.cc (add_input_file,add_input_library)
8625         (Plugin_manager::add_input_file): Make filename arguments const.
8626         * plugin.h (Plugin_manager::add_input_file): Make filename arguments
8627         const.
8628
8629 2010-06-16  Doug Kwan  <dougkwan@google.com>
8630
8631         * arm.cc (Target_arm::do_finalize_sections): Do not emit an
8632         .ARM.attributes section if we have not merged any input
8633         attributes sections.
8634
8635 2010-06-15  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
8636
8637         * arm.cc: Allow combining objects with no EABI version
8638         information.
8639
8640 2010-06-15  Rafael Espindola  <espindola@google.com>
8641
8642         * plugin.cc (Plugin_hook::run): Set in_real_elf for the start symbol.
8643
8644 2010-06-15  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
8645
8646         * fileread.cc: Only #include <sys/uio.h> if HAVE_READV.
8647         (struct iovec): Correct !HAVE_READV definition.
8648
8649 2010-06-10  Cary Coutant  <ccoutant@google.com>
8650
8651         * object.cc (Sized_relobj::do_layout): Defer layout for reloc sections.
8652         (Sized_relobj::do_layout_deferred_sections): Do layout for deferred
8653         reloc sections.
8654         * object.h (Sized_relobj::deferred_layout_relocs_): New data member.
8655
8656         PR 11683
8657         * symtab.h (Symbol::is_placeholder): New member function.
8658         * target-reloc.h (relocate_section): Check for placeholder symbols.
8659
8660         * testsuite/Makefile.am (plugin_test_8): New test.
8661         (plugin_test_9): New test.
8662         * testsuite/Makefile.in: Regenerate.
8663
8664 2010-06-09  Nick Clifton  <nickc@redhat.com>
8665
8666         * yyscript.y (input_list_element): Allow strings prefixed with
8667         the '-' character.  Treat these as libraries.
8668         * script.cc (script_add_library): New function.  Adds a library
8669         specified by "-l<name>" found in an input script.
8670         * script-c.h: Add prototype for script_add_library.
8671
8672 2010-06-07  Doug Kwan  <dougkwan@google.com>
8673
8674         * arm.cc (Target_arm::do_relax): Reserve more space for stubs.
8675         Restrict stub-group size to be within long conditional branch
8676         range when working around cortex-A8 erratum.
8677
8678 2010-06-07  Damien Diederen  <dd@crosstwine.com>
8679
8680         * gold-threads.cc (Lock_impl_threads::Lock_impl_threads): Correct
8681         #ifdef typo.
8682
8683 2010-06-03  Sriraman Tallam  <tmsriram@google.com>
8684
8685         PR gold/11658
8686         * output.cc
8687         (Output_section::Input_section_sort_entry::compare_section_ordering):
8688         Change to return non-zero correctly.
8689         (Output_section::Input_section_sort_section_order_index_compare
8690         ::operator()): Change to fix ambiguity in comparisons.
8691
8692 2010-06-01  Sriraman Tallam  <tmsriram@google.com>
8693
8694         * gold.h (is_wildcard_string): New function.
8695         * layout.cc (Layout::layout): Pass this pointer to add_input_section.
8696         (Layout::layout_eh_frame): Ditto.
8697         (Layout::find_section_order_index): New method.
8698         (Layout::read_layout_from_file): New method.
8699         * layout.h (Layout::find_section_order_index): New method.
8700         (Layout::read_layout_from_file): New method.
8701         (Layout::input_section_position_): New private member.
8702         (Layout::input_section_glob_): New private member.
8703         * main.cc (main): Call read_layout_from_file here.
8704         * options.h (--section-ordering-file): New option.
8705         * output.cc (Output_section::input_section_order_specified_): New
8706         member.
8707         (Output_section::Output_section): Initialize new member.
8708         (Output_section::add_input_section): Add new parameter.
8709         Keep input sections when --section-ordering-file is used.
8710         (Output_section::set_final_data_size): Sort input sections when
8711         section ordering file is specified.
8712         (Output_section::Input_section_sort_entry): Add new parameter.
8713         Check sorting type.
8714         (Output_section::Input_section_sort_entry::compare_section_ordering):
8715         New method.
8716         (Output_section::Input_section_sort_compare::operator()): Change to
8717         consider section_order_index.
8718         (Output_section::Input_section_sort_init_fini_compare::operator()):
8719         Change to consider section_order_index.
8720         (Output_section::Input_section_sort_section_order_index_compare
8721         ::operator()): New method.
8722         (Output_section::sort_attached_input_sections): Change to sort
8723         according to section order when specified.
8724         (Output_section::add_input_section<32, true>): Add new parameter.
8725         (Output_section::add_input_section<64, true>): Add new parameter.
8726         (Output_section::add_input_section<32, false>): Add new parameter.
8727         (Output_section::add_input_section<64, false>): Add new parameter.
8728         * output.h (Output_section::add_input_section): Add new parameter.
8729         (Output_section::input_section_order_specified): New
8730         method.
8731         (Output_section::set_input_section_order_specified): New method.
8732         (Input_section::Input_section): Initialize section_order_index_.
8733         (Input_section::section_order_index): New method.
8734         (Input_section::set_section_order_index): New method.
8735         (Input_section::section_order_index_): New member.
8736         (Input_section::Input_section_sort_section_order_index_compare): New
8737         struct.
8738         (Output_section::input_section_order_specified_): New member.
8739         * script-sections.cc (is_wildcard_string): Delete and move modified
8740         method to gold.h.
8741         (Output_section_element_input::Output_section_element_input): Modify
8742         call to is_wildcard_string.
8743         (Output_section_element_input::Input_section_pattern
8744         ::Input_section_pattern): Ditto.
8745         (Output_section_element_input::Output_section_element_input): Ditto.
8746         * testsuite/Makefile.am (final_layout): New test case.
8747         * testsuite/Makefile.in: Regenerate.
8748         * testsuite/final_layout.cc: New file.
8749         * testsuite/final_layout.sh: New file.
8750
8751 2010-06-01  Rafael Espindola  <espindola@google.com>
8752
8753         * plugin.cc (Plugin::load): Pass the output name to the plugin.
8754
8755 2010-06-01  Rafael Espindola  <espindola@google.com>
8756
8757         * plugin.cc (Sized_pluginobj::::do_add_symbols): Correctly set the
8758         visibility of symbols.
8759
8760 2010-05-27  Doug Kwan  <dougkwan@google.com>
8761
8762         * object.cc (Sized_relobj::do_finalize_local_symbols): Use offset
8763         from start of output section instead of address for a local symbol
8764         in a merged or relaxed section when doing a relocatable link.
8765
8766 2010-05-26  Rafael Espindola  <espindola@google.com>
8767
8768         PR 11604
8769         * gold/object.cc(Sized_relobj::do_layout_deferred_sections): Avoid
8770         adding sections the garbage collector removed.
8771         * gold/testsuite/Makefile.am: Add test.
8772         * gold/testsuite/Makefile.in: Regenerate.
8773         * gold/testsuite/plugin_test_7.sh: New.
8774         * gold/testsuite/plugin_test_7_1.c: New.
8775         * gold/testsuite/plugin_test_7_2.c: New.
8776
8777 2010-05-26  Rafael Espindola  <espindola@google.com>
8778
8779         * script-sections.cc (Output_section_definition::set_section_addresses):
8780         Check for --section-start.
8781
8782 2010-05-26  Doug Kwan  <dougkwan@google.com>
8783
8784         * arm.cc (Arm_scan_relocatable_relocs): New class.
8785         (Target_arm::relocate_special_relocatable): New method.
8786         (Arm_relocate_functions::arm_branch_common): Handle relocatable link.
8787         (Arm_relocate_functions::thumb_branch_common): Same.
8788         (Target_arm::scan_relocatable_relocs): Use Arm_scan_relocatable_relocs
8789         instead of Default_scan_relocatable_relocs.
8790         * target-reloc.h (relocate_for_relocatable): Let target handle
8791         relocation strategy Relocatable_relocs::RELOC_SPECIAL.
8792         * target.h (Sized_target::relocate_special_relocatable): New method.
8793
8794 2010-05-25  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
8795
8796         * timer.cc: Only #include <sys/times.h> if HAVE_TIMES is defined.
8797
8798 2010-05-23  Doug Kwan  <dougkwan@google.com>
8799
8800         * arm.cc (Arm_input_section::do_output_offset): Use convert_types
8801         instead of a cast.
8802         (Target_arm::apply_cortex_a8_workaround): Rewrite a conditional branch
8803         with a direct branch, not a conditional branch, to a stub.
8804         * merge.cc (Output_merge_base::record_input_section): New method
8805         defintion.
8806         (Output_merge_data::do_add_input_section): Record input section if
8807         keeps-input-sections flag is set.
8808         (Output_merge_string::do_add_input_section): Ditto.
8809         * merge.h (Output_merge_base::Output_merge_base): Initialize new data
8810         members KEEPS_INPUT_SECTIONS_, FIRST_RELOBJ_, FIRST_SHNDX_ and
8811         INPUT_SECTIONS_.
8812         (Output_merge_base::keeps_input_sections,
8813         Output_merge_base::set_keeps_input_sections,
8814         Output_merge_base::first_relobj, Output_merge_base::first_shndx): New
8815         method definitions.
8816         (Output_merge_base::Input_sections): New type declaration.
8817         (Output_merge_base::input_sections_begin,
8818         Output_merge_base::input_sections_end,
8819         Output_merge_base::do_set_keeps_input_sections): New method definitions.
8820         (Output_merge_base::bool keeps_input_sections_,
8821         Output_merge_base::first_relobj_, Output_merge_base::first_shndx_,
8822         Output_merge_base::input_sections_): New data members.
8823         (Output_merge_data::do_set_keeps_input_sections): New method
8824         defintion.
8825         (Output_merge_string::do_set_keeps_input_sections): Ditto.
8826         * output.cc (Output_section::Input_section::relobj): Move method
8827         defintion from class declaration to here and handle merge sections.
8828         (Output_section::Input_section::shndx): Ditto.
8829         (Output_section::Output_section): Remove initializations of removed
8830         data members and initialize new data member LOOKUP_MAPS_.
8831         (Output_section::add_input_section): Set keeps-input-sections flag
8832         for a newly created merge output section as appropriate.  Adjust code
8833         to use Output_section_lookup_maps class.
8834         (Output_section::add_relaxed_input_section): Adjst code for lookup
8835         maps code refactoring.
8836         (Output_section::add_merge_input_section): Add a new parameter
8837         KEEPS_INPUT_SECTION.  Adjust code to use Output_section_lookup_maps
8838         class.  If adding input section to a newly created merge output
8839         section fails, remove the new merge section.
8840         (Output_section::convert_input_sections_in_list_to_relaxed_input_sections):
8841         Adjust code for use of the Output_section_lookup_maps class.
8842         (Output_section::find_merge_section): Ditto.
8843         (Output_section::build_lookup_maps): New method defintion.
8844         (Output_section::find_relaxed_input_section): Adjust code to use
8845         Output_section_lookup_maps class.
8846         (Output_section::get_input_sections): Export merge sections.  Adjust
8847         code to use Output_section_lookup_maps class.
8848         (Output_section:::add_script_input_section): Adjust code to use
8849         Output_section_lookup_maps class.  Update lookup maps for merge
8850         sections also.
8851         (Output_section::discard_states): Use Output_section_lookup_maps.
8852         (Output_section::restore_states): Same.
8853         * output.h (Merge_section_properties): Move class defintion out of
8854         Output_section.
8855         (Output_section_lookup_maps): New class.
8856         (Output_section::Input_section::is_merge_section): New method
8857         defintion.
8858         (Output_section::Input_section::relobj): Move defintion out of class
8859         defintion.  Declare method only.
8860         (Output_section::Input_section::shndx): Ditto.
8861         (Output_section::Input_section::output_merge_base): New method defintion.
8862         (Output_section::Input_section::u2_.pomb): New union field.
8863         (Output_section::Merge_section_by_properties_map,
8864         Output_section::Output_section_data_by_input_section_map,
8865         Output_section::Ouptut_relaxed_input_section_by_input_section_map):
8866         Remove types.
8867         (Output_section::add_merge_input_section): Add new parameter
8868         KEEPS_INPUT_SECTIONS.
8869         (Output_section::build_lookup_maps): New method declaration.
8870         (Output_section::merge_section_map_,
8871         Output_section::merge_section_by_properties_map_,
8872         Output_section::relaxed_input_section_map_,
8873         Output_section::is_relaxed_input_section_map_valid_): Remove data
8874         members.
8875         (Output_section::lookup_maps_): New data member.
8876
8877 2010-05-21  Doug Kwan  <dougkwan@google.com>
8878
8879         PR gold/11619
8880         * arm.cc (Arm_input_section::do_output_offset): Add a cast to
8881         avoid a compilation error.
8882
8883 2010-05-19  Rafael Espindola  <espindola@google.com>
8884
8885         * script-sections.cc (Output_section_definition::allocate_to_segment):
8886         Update the phdrs_list even when the output section is NULL.
8887         * testsuite/Makefile.am: Add test.
8888         * testsuite/Makefile.in: Regenerate.
8889         * testsuite/script_test_9.cc: New.
8890         * testsuite/script_test_9.sh: New.
8891         * testsuite/script_test_9.t: New.
8892
8893 2010-05-19  Doug Kwan  <dougkwan@google.com>
8894
8895         * arm.cc (Arm_input_section::original_size): New method.
8896         (Arm_input_section::do_addralign): Add a cast.
8897         (Arm_input_section::do_output_offset): Remove static cast.
8898         (Arm_input_section::original_addralign,
8899          Arm_input_section::original_size_): Change type to uint32_t.
8900         (Arm_input_section::init): Add safe casts for section alignment
8901         and size.
8902         (Arm_input_section::set_final_data_size): Do not set address and
8903         offset of stub table.
8904         (Arm_output_section::fix_exidx_coverage): Change use of of
8905         Output_section::Simple_input_section to that of
8906         Output_section::Input_section.
8907         (Target_arm::do_relax): Set addresses and file offsets of Stub_tables
8908         except for the first pass.
8909         * output.cc (Output_section::get_input_sections): Change type of
8910         input_sections to std::list<Input_section>.
8911         (Output_section::add_script_input_section): Rename from
8912         Output_section::add_simple_input_section.  Change type of SIS
8913         parameter from Simple_input_section to Input_section.
8914         * output.h (Output_section::Simple_input_section): Remove class.
8915         (Output_section::Input_section): Change class visibility to public.
8916         (Output_section::Input_section::addralign): Use stored alignments
8917         for special input sections if set.
8918         (Output_section::Input_section::set_addralign): New method.
8919         (Output_section::get_input_sections): Change parameter type from
8920         list of Simple_input_section to list of Input_section.
8921         (Output_section::add_script_input_section): Rename from
8922         Output_section::add_simple_input_section. Change first parameter's
8923         type from Simple_input_section to Input_section and remove the
8924         second and third parameters.
8925         * script-sections.cc (Input_section::Input_section_list): Change
8926         type to list of Output_section::Input_section/
8927         (Input_section_info::Input_section_info): Change parameter type of
8928         INPUT_SECTION to Output_section::Input_section.
8929         (Input_section_info::input_section): Change return type.
8930         (Input_section_info::input_section_): Change type to
8931         Output_section::Input_section.
8932         (Output_section_element_input::set_section_addresses): Adjust code
8933         to use Output_section::Input_section instead of
8934         Output_section::Simple_input_section.  Adjust code for renaming
8935         of Output_section::add_simple_input_section.
8936         (Orphan_output_section::set_section_addresses): Ditto.
8937
8938 2010-05-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
8939
8940         * gold.h (Unordered_multimap, Unordered_map): Fix defines for
8941         when neither HAVE_TR1_UNORDERED_MAP nor HAVE_EXT_HASH_MAP are set.
8942
8943 2010-05-18  Rafael Espindola  <espindola@google.com>
8944
8945         * options.cc (General_options::finalize): Handle -nostdlib.
8946         * options.h (nostdlib): New option.
8947         * script.cc (script_add_search_dir): Handle -nostdlib.
8948
8949 2010-05-12  Doug Kwan  <dougkwan@google.com>
8950
8951         * arm.cc (Target_arm::do_finalize_sections): Create an empty
8952         attributes section only if there no attributes section after merging.
8953         (Target_arm::merge_object_attributes): Move value of
8954         Tag_MPextension_use_legacy to that of Tag_MPextension_use.
8955         Handle Tag_DIV_use and Tag_MPextension_use_legacy.
8956         * testsuite/Makefile.am (check_SCRIPTS): Add arm_attr_merge.sh
8957         (check_DATA): Add arm_attr_merge_6.stdout, arm_attr_merge_6r_stdout
8958         and arm_attr_merge_7.stdout.
8959         (arm_attr_merge_6.stdout, arm_attr_merge_6 arm_attr_merge_6a.o
8960         arm_attr_merge_6b.o, arm_attr_merge_6r.stdout, arm_attr_merge_6r,
8961         arm_attr_merge_7.stdout, arm_attr_merge_7, arm_attr_merge_7a.o,
8962         arm_attr_merge_7b.o): New rules.
8963         (MOSTLYCLEANFILES): Add arm_attr_merge_6, arm_attr_merge_6r and
8964         arm_attr_merge_7
8965         * testsuite/Makefile.in: Regenerate.
8966         * testsuite/arm_attr_merge.sh: New file.
8967         * testsuite/arm_attr_merge_[67][ab].s: Same.
8968
8969 2010-05-05  Nick Clifton  <nickc@redhat.com>
8970
8971         * po/es.po: Updated Spanish translation.
8972
8973 2010-04-27  H.J. Lu  <hongjiu.lu@intel.com>
8974
8975         * Makefile.am (install-exec-local): Properly install gold as
8976         default cross linker.
8977         * Makefile.in: Regenerated.
8978
8979 2010-04-27  H.J. Lu  <hongjiu.lu@intel.com>
8980             Nick Clifton  <nickc@redhat.com>
8981
8982         * configure.ac (install_as_default): Define and set to false
8983         unless --enable-gold or --enable-gold=both/gold has been
8984         specified.
8985         * configure: Regenerate.
8986
8987         * Makefile.am (install-exec-local): Install the executable as
8988         'ld.gold'.  If install_as_default is true then also install it as
8989         'ld'.
8990         * Makefile.in: Regenerated.
8991
8992 2010-04-24  Ian Lance Taylor  <iant@google.com>
8993
8994         * layout.cc (Layout::layout_reloc): In relocatable link don't
8995         combine reloc sections for grouped sections.
8996
8997 2010-04-23  Sriraman Tallam  <tmsriram@google.com>
8998
8999         * gc.h (gc_process_relocs): Pass information on relocs pointing to
9000         sections that are not ordinary to icf.
9001         * icf.cc (get_section_contents): Handle relocation pointing to section
9002         with no object or shndx information.
9003         * testsuite/Makefile.am: Remove icf_virtual_function_folding_test.sh
9004         * testsuite/Makefile.in: Regenerate.
9005         * testsuite/icf_virtual_function_folding_test.cc: Remove printf.
9006         * testsuite/icf_virtual_function_folding_test.sh: Delete file.
9007
9008 2010-04-22  Ian Lance Taylor  <iant@google.com>
9009
9010         * expression.cc (Expression::Expression_eval_info): Add
9011         result_alignment_pointer field.
9012         (Expression::eval_with_dot): Add result_alignment_pointer
9013         parameter.  Change all callers.
9014         (Expression::eval_maybe_dot): Likewise.
9015         (class Binary_expression): Add alignment_pointer parameter to
9016         left_value and right_value.  Change all callers.
9017         (BINARY_EXPRESSION): Set result alignment.
9018         (class Trinary_expression): Add alignment_pointer parameter to
9019         arg2_value and arg3_value.  Change all callers.
9020         (Trinary_cond::value): Set result alignment.
9021         (Max_expression::value, Min_expression::value): Likewise.
9022         (Align_expression::value): Likewise.
9023         * script-sections.cc (class Sections_element): Add dot_alignment
9024         parameter to set_section_addresses virtual function.  Update
9025         instantiations.
9026         (class Output_section_element): Likewise.
9027         (Script_sections::create_segments): Add dot_alignment parameter.
9028         Change all callers.
9029         (Script_sections::create_segments_from_phdrs_clause): Likewise.
9030         (Script_sections::set_phdrs_clause_addresses): Likewise.
9031         * script-sections.h: Update declarations.
9032         * script.h: Update declarations.
9033         * output.h (Output_segment::set_minimum_p_align): Don't decrease
9034         min_p_align.
9035         * testsuite/script_test_3.t: Set large alignment.
9036         * testsuite/script_test_3.sh: Make sure that at least one LOAD
9037         segment has expected alignment.
9038
9039 2010-04-22  Nick Clifton  <nickc@redhat.com>
9040
9041         * po/gold.pot: Updated by the Translation project.
9042         * po/vi.po: Updated Vietnamese translation.
9043
9044 2010-04-22  H.J. Lu  <hongjiu.lu@intel.com>
9045
9046         * testsuite/Makefile.am (check_PROGRAMS): Add
9047         icf_virtual_function_folding_test.
9048         * testsuite/Makefile.in: Regenerated.
9049
9050 2010-04-15  Andrew Haley  <aph@redhat.com>
9051
9052         * options.h (merge_exidx_entries): New option.
9053         * arm.cc (class Arm_exidx_fixup): Add new arg, merge_exidx_entries.
9054         (class Arm_exidx_fixup::merge_exidx_entries_): New member.
9055         (Output_section::fix_exidx_coverage): Add new arg, merge_exidx_entries.
9056         (Target_arm::merge_exidx_entries): New function.
9057         (process_exidx_entry): Don't merge if merge_exidx_entries_ is false.
9058         (Arm_output_section::fix_exidx_coverage): Pass merge_exidx_entries
9059         to Arm_exidx_fixup constructor.
9060         Add new arg, merge_exidx_entries.
9061         (Target_arm::fix_exidx_coverage): pass merge_exidx_entries to
9062         Arm_output_section::fix_exidx_coverage.
9063
9064 2010-04-18  Sriraman Tallam  <tmsriram@google.com>
9065
9066         * icf.cc (get_section_contents): Check for preemptible functions.
9067         Ignore addend when appropriate.
9068         * symtab.cc (should_add_dynsym_entry): Add new parameter.  Check for
9069         section folded.
9070         (add_from_relobj): Check for section folded.
9071         (set_dynsym_indexes): Fix call to should_add_dynsym_entry.
9072         * symtab.h (should_add_dynsym_entry): Add new parameter.
9073         * target-reloc.h (scan_relocs): Check for section folded.
9074         * x86_64.cc (Target_x86_64::Scan::possible_function_pointer_reloc):
9075         Check reloc types for function pointers in shared objects.
9076         * testsuite/Makefile.am (icf_virtual_function_folding_test): New test
9077         case.
9078         (icf_preemptible_functions_test): New test case.
9079         (icf_string_merge_test): New test case.
9080         * testsuite.Makefile.in: Regenerate.
9081         * testsuite/icf_safe_so_test.sh: Change to not fold foo_glob and
9082         bar_glob.  Refactor code.
9083         * testsuite/icf_preemptible_functions_test.cc: New file.
9084         * testsuite/icf_preemptible_functions_test.sh: New file.
9085         * testsuite/icf_string_merge_test.cc: New file.
9086         * testsuite/icf_string_merge_test.sh: New file.
9087         * testsuite/icf_virtual_function_folding_test.cc: New file.
9088         * testsuite/icf_virtual_function_folding_test.sh: New file.
9089
9090 2010-04-14  Doug Kwan  <dougkwan@google.com>
9091
9092         * arm.cc (Arm_output_section::fix_exidx_coverage): Mark object
9093         for local symbol recounting if we remove a section due to ICF.
9094         * gold.cc (queue_middle_gc_tasks): Create a dummy blocker if
9095         there are no regular objects in input.
9096
9097 2010-04-13  Doug Kwan  <dougkwan@google.com>
9098
9099         * arm.cc (Arm_input_section::set_final_data_size): Compute
9100         accurate final data size instead of using current data size.
9101
9102 2010-04-09  Doug Kwan  <dougkwan@google.com>
9103
9104         * layout.cc (Layout::choose_output_section): Handle script section
9105         types.
9106         (Layout::make_output_section_for_script): Add section type parameter.
9107         Handle script section types.
9108         * layout.h (Layout::make_output_section_for_script): Add section
9109         type parameter.
9110         * output.cc (Output_section::Output_section): Initialize data member
9111         is_noload_.
9112         (Output_section::do_reset_address_and_file_offset): Do not set address
9113         to 0 if section is a NOLOAD section.
9114         * output.h (Output_section::is_noload): New method.
9115         (Output_section::set_is_noload): Ditto.
9116         (Output_section::is_noload_): New data member.
9117         * script-c.h (Script_section_type): New enum type.
9118         (struct Parser_output_section_header): Add new file section_type.
9119         * script-sections.cc (Sections_element::output_section_name): Add
9120         parameter for returning script section type.
9121         (Output_section_definition::output_section_name): Ditto.
9122         (Output_section_definition::section_type)P; New method.
9123         (Output_section_definiton::script_section_type_name): Ditto.
9124         (Output_section_definition::script_section_type_): New data member.
9125         (Output_section_definition::Output_section_definition): Initialize
9126         data member Output_section_definition::script_section_type_.
9127         (Output_section_definition::create_sections): Pass script section type
9128         to Layout::make_output_section_for_script.
9129         (Output_section_definition::output_section_name): Return script
9130         section type to caller.
9131         (Output_section_definition::set_section_address): Do not advance
9132         dot value and load address if section type is NOLOAD.  Set address
9133         of NOLOAD sections regardless of section flags.
9134         (Output_section_definition::print): Print section type if it is
9135         not SCRIPT_SECTION_TYPE_NONE.
9136         (Output_section_definition::section_type): New method.
9137         (Output_section_definition::script_section_type_name): Ditto.
9138         (Script_sections::output_section_name): Add new parameter
9139         PSECTION_TYPE for returning script section type.  Pass it to
9140         section elements.  Handle discard sections.
9141         (Sort_output_sections::operator()): Handle NOLOAD sections.
9142         * script-sections.h (Script_sections::Section_type): New enum type.
9143         (Script_sections::output_section_name): Add a new parameter for
9144         returning script section type.
9145         * script.cc (script_keyword_parsecodes): Add keywords COPY, DSECT,
9146         INFO and NOLOAD.
9147         * yyscript.y (union): Add new field SECTION_TYPE.
9148         (COPY, DSECT, INFO, NOLOAD): New tokens.
9149         (opt_address_and_section_type): Change type to output_section_header.
9150         (section_type): New non-terminal
9151         (section_header): Handle section type.
9152         (opt_address_and_section_type): Return section type value.
9153
9154 2010-04-09  H.J. Lu  <hongjiu.lu@intel.com>
9155
9156         * testsuite/plugin_common_test_1.c (foo): Add prototype.
9157         * testsuite/plugin_common_test_2.c (foo): Likewise.
9158
9159 2010-04-08  Doug Kwan  <dougkwan@google.com>
9160
9161         * merge.cc (Output_merge_data::set_final_data_size): Handle empty
9162         Output_merge_data.
9163         * output.cc (Output_section::add_merge_input_section): Simplify
9164         code and return status of Output_merge_base::add_input_section.
9165         Update merge section map only if Output_merge_base::add_input_section
9166         returns true.
9167
9168 2010-04-07  Doug Kwan  <dougkwan@google.com>
9169
9170         * arm.cc (Arm_relobj::scan_section_for_cortex_a8_erratum): Warn
9171         if section is marked as containing instructions but has no mapping
9172         symbols.
9173         (Arm_relobj::do_count_local_symbols): Call adjust_sym_shndx to get
9174         correct section index.
9175         (Arm_relobj::find_linked_text_section): Ditto.
9176
9177 2010-04-07  Cary Coutant  <ccoutant@google.com>
9178
9179         * archive.cc (include_member): Destroy Read_symbols_data object before
9180         releasing file.
9181         * object.cc (Read_symbols_data::~Read_symbols_data) New destructor.
9182         * object.h (Read_symbols_data::Read_symbols_data) New constructor.
9183         (Read_symbols_data::~Read_symbols_data) New destructor.
9184         (Section_relocs::Section_relocs) New constructor.
9185         (Section_relocs::~Section_relocs) New destructor.
9186         (Read_relocs_data::Read_relocs_data) New constructor.
9187         (Read_relocs_data::~Read_relocs_data) New destructor.
9188         * testsuite/binary_unittest.cc (Sized_binary_test): Set sd member
9189         pointers to NULL after deleting.
9190
9191 2010-04-07  Doug Kwan  <dougkwan@google.com>
9192
9193         * arm.cc: Replace "endianity" with "endianness" in comments.
9194         (Arm_exidx_cantunwind): Ditto.
9195         (Arm_relobj::Arm_relobj): Initialize merge_flags_and_attribures.
9196         (Arm_relobj::merge_flags_and_attributes): New method.
9197         (Arm_relobj::merge_flags_and_attributes_): New data member.
9198         (Arm_exidx_cantunwind::do_fixed_endian_write): Fix formatting.
9199         (Arm_relobj::scan_sections_for_stubs): Ditto.
9200         (Arm_relobj::do_read_symbols): Check to see if we really want to
9201         merge processor-specific flags and attributes.  Exit early if
9202         an object is empty except for section names and the undefined symbol.
9203         (Target_arm::do_finalize_sections): Move check for ELF format to
9204         Arm_relobj::do_read_symbols.  Merge processor specific flags and
9205         attributes from a regular object only when we have determined that
9206         it is aapropriate.  Do not create an .ARM.attributes section in
9207         output if there is no regular input object.
9208         (Target_arm::merge_processor_specific_flags): Check
9209         --warn-mismatch before printing any error.
9210         (Target_arm::merge_object_attributes): Ditto.
9211         * gold.cc (queue_middle_tasks): Handle the case in which there is
9212         no regular object in input.
9213         * options.cc (General_options::parse_EB): New method.
9214         (General_options::parse_EL): Same.
9215         (General_options::General_options): Initialize endianness_.
9216         * options.h (-EB, -EL, -no-pipeline-knowledge, -p, --warn-mismatch):
9217         New options.
9218         (General_options::Endianness): New enum.
9219         (General_options::endianness): New method.
9220         (General_options::endianness_): New data member.
9221         * parameters.cc (Parameters::set_options): Check target endianness.
9222         (Parameters::set_target_once): Ditto.
9223         (Parameters::check_target_endianness): New method.
9224         (parameters_force_valid_target): If either -EL or -EB is specified,
9225         use it to define endianness of default target.
9226         * parameters.h (Parameters::check_target_endianness): New method
9227         declaration.
9228         * target.h (class Target): Change "endianity" to "endianness"
9229         in comments.
9230
9231 2010-04-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9232
9233         * configure.ac (AM_INIT_AUTOMAKE): Add option no-dist.
9234         * configure: Regenerate.
9235         * Makefile.in: Regenerate.
9236         * testsuite/Makefile.in: Regenerate.
9237
9238 2010-04-06  Cary Coutant  <ccoutant@google.com>
9239
9240         gcc PR lto/42757
9241         * plugin.cc (Pluginobj::get_symbol_resolution_info): Check for
9242         prevailing definitions of common symbols.
9243         * testsuite/plugin_test_6.sh: New test case.
9244         * testsuite/plugin_common_test_1.c: New test case.
9245         * testsuite/plugin_common_test_2.c: New test case.
9246         * testsuite/Makefile.am (plugin_test_6): New test case.
9247         * testsuite/Makefile.in: Regenerate.
9248
9249 2010-04-06  Nick Clifton  <nickc@redhat.com>
9250
9251         * po/vi.po: New Vietnamese translation.
9252
9253 2010-03-30  Doug Kwan  <dougkwan@google.com>
9254
9255         * arm.cc (Target_arm::using_thumb_only): Handle v6-M
9256
9257 2010-03-25  Doug Kwan  <dougkwan@google.com>
9258
9259         * gold/arm.cc (Arm_exidx_fixup::update_offset_map): Rearrange code
9260         to avoid a conversion warning on a 32-bit host.
9261
9262 2010-03-24  Ian Lance Taylor  <iant@google.com>
9263
9264         * testsuite/script_test_3.t: Add a TLS segment.
9265         * testsuite/Makefile.am (check_PROGRAMS): Add
9266         tls_phdrs_script_test.
9267         (tls_phdrs_script_test_SOURCES): Define.
9268         (tls_phdrs_script_test_DEPENDENCIES): Define.
9269         (tls_phdrs_script_test_LDFLAGS): Define.
9270         (tls_phdrs_script_test_LDADD): Define.
9271         * testsuite/Makefile.in: Rebuild.
9272
9273 2010-03-23  Cary Coutant  <ccoutant@google.com>
9274
9275         * fileread.cc (find_or_make_view): Fix comment.
9276
9277 2010-03-23  Ian Lance Taylor  <iant@google.com>
9278
9279         * script-sections.cc (class Orphan_section_placement): Define
9280         PLACE_TLS and PLACE_TLS_BSS.
9281         (Orphan_section_placement::Orphan_section_placement): Initialize
9282         new places.
9283         (Orphan_section_placement::find_place): Handle SHF_TLS sections.
9284         * testsuite/Makefile.am (check_PROGRAMS): Add tls_script_test.
9285         (tls_script_test_SOURCES): Define.
9286         (tls_script_test_DEPENDENCIES): Define.
9287         (tls_script_test_LDFLAGS): Define.
9288         (tls_script_test_LDADD): Define.
9289         * testsuite/Makefile.in: Rebuild.
9290
9291 2010-03-22  Doug Kwan  <dougkwan@google.com>
9292
9293         * arm.cc (Arm_relocate_functions::abs8,
9294         Arm_relocate_functions::abs16): Use correct check for overflow
9295         specified in the ARM ELF specs.
9296         (Arm_relocate_functions): thumb_branch_common.  Handle bit 1 of branch
9297         target of a BLX instruction specially.
9298         (Reloc_stub::stub_type_for_reloc): Ditto.
9299         (Relocate::relocate): Use symbolic names instead of numeric relocation
9300         codes to report error.
9301         (Target_arm::do_relox): Reduce default stub-group size for Cortex-A8
9302         workaround.
9303         * testsuite/Makefile.am (check_DATA): add thumb_blx_in_range.stdout,
9304         thumb_blx_out_of_range.stdout, thumb2_blx_in_range.stdout and
9305         thumb2_blx_out_of_range.stdout
9306         (thumb_bl_out_of_range, thumb_bl_out_of_range.o,
9307         thumb2_bl_out_of_range, thumb2_bl_out_of_range.o): Fix dependenices.
9308         (thumb_blx_in_range.stdout, thumb_blx_in_range, thumb_blx_in_range.o,
9309         thumb_blx_out_of_range.stdout, thumb_blx_out_of_range,
9310         thumb_blx_out_of_range.o, thumb2_blx_in_range.stdout,
9311         thumb2_blx_in_range, thumb2_blx_in_range.o,
9312         thumb2_blx_out_of_range.stdout, thumb2_blx_out_of_range,
9313         thumb2_blx_out_of_range.o): New rules.
9314         (MOSTLYCLEANFILES): Add thumb_blx_in_range, thumb_blx_out_of_range,
9315         thumb2_blx_in_range and thumb2_blx_out_of_range.
9316         * testsuite/Makefile.in: Regenerate.
9317         * arm_branch_in_range.sh: Add tests for THUMB BLX.
9318         * testsuite/thumb_blx_in_range.s: New file.
9319         * testsuite/thumb_blx_out_of_range.s: New file.
9320
9321 2010-03-22  Rafael Espindola  <espindola@google.com>
9322
9323         * archive.cc (Should_include): Move to archive.h.
9324         (should_include_member): Make it a member of Archive.
9325         (Lib_group): New.
9326         (Add_lib_group_symbols): New.
9327         * archive.h: Include options.h.
9328         (Archive_member): Moved from Archive.
9329         (Should_include): Moved from archive.cc.
9330         (Lib_group): New.
9331         (Add_lib_group_symbols): New.
9332         * dynobj.cc (do_should_include_member): New.
9333         * dynobj.h (do_should_include_member): New.
9334         * gold.cc (queue_initial_tasks): Update call to queue.
9335         * main.cc (main): Print lib group stats.
9336         * object.cc (do_should_include_member): New.
9337         * object.h: Include archive.h.
9338         (Object::should_include_member): New.
9339         (Object::do_should_include_member): New.
9340         (Sized_relobj::do_should_include_member): New.
9341         * options.cc (General_options::parse_start_lib): New.
9342         (General_options::parse_end_lib): New.
9343         (Input_arguments::add_file): Handle lib groups.
9344         (Input_arguments::start_group): Check we are not in a lib.
9345         (Input_arguments::start_lib): New.
9346         (Input_arguments::end_lib): New.
9347         * options.h (General_options): Add start_lib and end_lib.
9348         (Input_argument::lib_): New.
9349         (Input_argument::lib): New.
9350         (Input_argument::is_lib): New.
9351         (Input_file_lib): New.
9352         (Input_arguments::in_lib_): New.
9353         (Input_arguments::in_lib): New.
9354         (Input_arguments::start_lib): New.
9355         (Input_arguments::end_lib_): New.
9356         * plugin.cc (Pluginobj::get_symbol_resolution_info): Mark symbols
9357         in unused members as preempted.
9358         (Sized_pluginobj::do_should_include_member): New.
9359         * plugin.h (Sized_pluginobj::do_should_include_member): New.
9360         * readsyms.cc (Read_symbols::locks): If we are just reading a member,
9361         return the blocker.
9362         (Read_symbols::do_whole_lib_group): New.
9363         (Read_symbols::do_lib_group): New.
9364         (Read_symbols::do_read_symbols): Handle lib groups.
9365         (Read_symbols::get_name): Handle lib groups.
9366         * readsyms.h (Read_symbols): Add an archive member pointer.
9367         (Read_symbols::do_whole_lib_group): New.
9368         (Read_symbols::do_lib_group): New.
9369         (Read_symbols::member_): New.
9370         * script.cc (read_input_script): Update call to queue_soon.
9371
9372 2010-03-19  Doug Kwan  <dougkwan@google.com>
9373
9374         * arm.cc (Stub_table::Stub_table): Initialize new data members
9375         Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_.
9376         (Stub_table::add_reloc_stub): Assign stub offset and update
9377         Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_.
9378         (Stub_table::reloc_stubs_size_, Stub_table::reloc_stubs_addralign_):
9379         New data members.
9380         (Stub_table::update_data_size_and_addralign): Use
9381         Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_
9382         instead of going over all reloc stubs.
9383         (Stub_table::finalize_stubs): Do not assign reloc stub offsets.
9384         * stringpool.cc (Stringpool_template::Stringpool_template): Initialize
9385         Stringpool_template::offset_ to size of Stringpool_char.
9386         (Stringpool_template::new_key_offset): Remove code to initialize
9387         Stringpool_template::offset_.
9388         * stringpool.h (Stringpool_template::set_no_zero_null): Set
9389         Stringpool_template::offset_ to zero.
9390
9391 2010-03-15  Doug Kwan  <dougkwan@google.com>
9392
9393         * stringpool.cc (Stringpool_template::Stringpool_template): Initialize
9394         offset_.
9395         (Stringpool_template::new_key_offset): New method.
9396         (Stringpool_template::add_string): Assign offsets when adding new
9397         strings.
9398         (Stringpool_template::set_string_offsets): Do not set string offsets
9399         when not optimizing.
9400         * stringpool.h (Chunked_vector::Chunked_vector): Initialize data
9401         member size_.
9402         (Chunked_vector::clear): Clear size_.
9403         (Chunked_vector::reserve): Call reserve method of all Element_vectors.
9404         (Chunked_vector::size): Return size_.
9405         (Chunked_vector::push_back): Use size_ to find insert position.
9406         (Chunked_vector::size_): New data member.
9407         (Stringpool_template::set_no_zero_null): Assert string set is empty.
9408         (Stringpool_template::new_key_offset): New method declaration.
9409         (Stringpool_template::offset_): New data member.
9410
9411 2010-03-15   Rafael Espindola  <espindola@google.com>
9412
9413         * readsyms.cc (Read_symbols::do_read_symbols): Update calls to
9414         Add_symbols' constructor.
9415         * readsyms.h (Add_symbols): Remove the input_group member.
9416
9417 2010-03-10  Ian Lance Taylor  <iant@google.com>
9418
9419         * reloc.cc (Sized_relobj::split_stack_adjust_reltype): Call the
9420         target to ask whether a reference to a symbol requires a stack
9421         split.
9422         * target.h (Target::is_call_to_non_split): New function.
9423         (Target::do_is_call_to_non_split): Declare virtual function.
9424         * target.cc: Include "symtab.h".
9425         (Target::do_is_call_to_non_split): New function.
9426         * i386.cc (Target_i386::do_is_call_to_non_split): New function.
9427
9428 2010-03-10  Cary Coutant  <ccoutant@google.com>
9429
9430         * fileread.cc (File_read::~File_read): Don't delete whole_file_view_.
9431         (File_read::open[1]): Remove initial mapping of whole_file_view_.
9432         (File_read::open[2]): Add whole_file_view_ to list of views.
9433         (File_read::make_view): Remove test of whole_file_view_.
9434         (File_read::find_or_make_view): Create whole_file_view_ if
9435         necessary.
9436         (File_read::clear_views): Replace bool parameter with enum;
9437         adjust all callers.  Don't delete views with permanent data;
9438         do delete cached views and views from archives if
9439         --no-keep-files-mapped is set.  Set whole_file_view_ to NULL
9440         if clearing the corresponding view.
9441         * fileread.h (File_read::Clear_views_mode): New enum.
9442         (File_read::View::is_permanent_view): New method.
9443         (File_read::clear_views): Replace bool parameter
9444         with enum; adjust all callers.
9445         * options.h (General_options): Change keep_files_mapped option;
9446         add map_whole_files.
9447         * readsyms.cc (Add_symbols::run): Delete sd_ object before
9448         releasing the file.
9449         * reloc.cc (Scan_relocs::run): Delete rd_ object before releasing
9450         the file.
9451
9452 2010-03-10  David S. Miller  <davem@davemloft.net>
9453
9454         * sparc.cc (Target_sparc::Scan::local): Accept R_SPARC_WPLT30.
9455
9456 2010-03-09  Sriraman Tallam  <tmsriram@google.com>
9457
9458         * icf.cc (get_section_contents): Add '@' marker after processing the
9459         merge reloc.
9460
9461 2010-03-08  Doug Kwan  <dougkwan@google.com>
9462
9463         * gold/arm.cc (Arm_exidx_fixup::update_offset_map): Fix build breakage
9464         due to a conversion warning.
9465         (Arm_relobj::update_output_local_symbol_count): Check for local
9466         symbol with unset output index.
9467
9468 2010-03-05  Ian Lance Taylor  <iant@google.com>
9469
9470         * options.h (class General_options): Add --spare-dynamic-tags.
9471         * output.cc (Output_data_dynamic::set_final_data_size): Implement
9472         --spare-dynamic-tags.
9473
9474 2010-03-05  Ian Lance Taylor  <iant@google.com>
9475
9476         * incremental.cc: Include "libiberty.h".
9477
9478 2010-03-05  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
9479
9480         * dynobj.h (Verdef::Verdef): Add is_info arg, is_info member
9481         function, is_info_ member.
9482         * dynobj.cc (Verdef::write): Set VER_FLG_INFO if this->is_info_.
9483         (Versions::Versions): Update caller.
9484         (Versions::define_base_version): Likewise.
9485         (Versions::add_def): Likewise.
9486
9487 2010-03-03  Sriraman Tallam  <tmsriram@google.com>
9488
9489         * i386.cc (Target_i386::can_check_for_function_pointers): New function.
9490         (Scan::possible_function_pointer_reloc): New function.
9491         (Scan::local_reloc_may_be_function_pointer): Change to call
9492         possible_function_pointer_reloc.
9493         (Scan::global_reloc_may_be_function_pointer): Ditto.
9494         * icf.h (Icf::check_section_for_function_pointers): Change to reject
9495         relocations in ".data.rel.ro._ZTV" section.
9496         * testsuite/icf_safe_so_test.sh: Change to pass i386.
9497         * testsuite/icf_safe_so_test.cc: Ditto.
9498         * testsuite/icf_safe_test.cc: Ditto.
9499         * testsuite/icf_safe_test.sh: Ditto.
9500
9501 2010-03-03  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
9502             Ian Lance Taylor  <iant@google.com>
9503
9504         * target-reloc.h (relocate_section): Check the symbol table index
9505         for -1U before setting the local symbol index.
9506         (scan_relocatable_relocs): If copying the relocation, record that
9507         the local symbol is required.
9508         * object.h (Symbol_value::is_output_symtab_index_set): New
9509         function.
9510         (Symbol_value::may_be_discarded_from_output_symtab): New
9511         function.
9512         (Symbol_value::has_output_symtab_entry): New function.
9513         (Symbol_value::needs_output_symtab_entry): Remove.
9514         (Symbol_value::output_symtab_index): Make sure the symbol index is
9515         set.
9516         (Symbol_value::set_output_symtab_index): Make sure the symbol
9517         index is not set.  Make sure the new index is valid.
9518         (Symbol_value::set_must_have_output_symtab_entry): New function.
9519         (Symbol_value::has_output_dynsym_entry): New function.
9520         (Symbol_value::set_output_dynsym_index): Make sure the new index
9521         is valid.
9522         (Sized_relobj::set_must_have_output_symtab_entry): New function.
9523         * object.cc (Sized_relobj::do_count_local_symbols): Only discard a
9524         local symbol if permitted.
9525         (Sized_relobj::do_finalize_local_symbols): Call
9526         is_output_symtab_index_set rather than needs_output_symtab_entry.
9527         (Sized_relobj::write_local_symbols): Call has_output_symtab_entry
9528         rather than needs_output_symtab_entry.  Call
9529         has_output_dynsym_entry rather than needs_output_dynsym_entry.
9530         * arm.cc (Arm_relobj::update_output_local_symbol_count): Call
9531         is_output_symtab_index_set rather than needs_output_symtab_entry.
9532         * testsuite/discard_locals_relocatable_test.c: New file.
9533         * testsuite/discard_locals_test.sh: Test -r.
9534         * testsuite/Makefile.am (check_DATA): Add
9535         discard_locals_relocatable_test1.syms,
9536         discard_local_relocatable_test2.syms.
9537         (MOSTLYCLEANFILES): Likewise.  Also add
9538         discard_locals_relocatable_test1.lout and
9539         discard_locals_relocatable_test2.out.
9540         (discard_locals_relocatable_test1.syms): New target.
9541         (discard_locals_relocatable_test.o): New target.
9542         (discard_locals_relocatable_test1.out): New target.
9543         (discard_locals_relocatable_test2.syms): New target.
9544         (discard_locals_relocatable_test2.out): New target.
9545         (various): Add missing ../ld-new dependencies.
9546         * testsuite/Makefile.in: Rebuild.
9547
9548 2010-03-03  Nick Clifton  <nickc@redhat.com>
9549
9550         * po/fi.po: New Finnish translation.
9551
9552 2010-03-01  Doug Kwan  <dougkwan@google.com>
9553
9554         * layout.cc (Layout::Layout): Force section types of .init_array*,
9555         .preinit_array* and .fini_array* sections.
9556         * output.cc (Output_section::Input_section_sort_entry::has_priority):
9557         Fix check of return value of std::string::find.().
9558         (Output_section::Input_section_sort_compare::operator()): Remove
9559         comment about .init_array.
9560         (Output_section::Input_section_sort_init_fini_compare::operator()):
9561         New method.
9562         (Output_section::sort_attached_input_sections): Handle .init_array
9563         and .fini_array specially.
9564         * output.h (Output_section::Inut_section_sort_compare): Update
9565         comment.
9566         (Output_section::Input_section_sort_init_fini_compare): New struct.
9567
9568 2010-02-26  Doug Kwan  <dougkwan@google.com>
9569
9570         * arm.cc (Target_arm::Relocate::reloc_is_non_pic): Treat
9571         R_ARM_PREL31 and R_ARM_SBREL31 as position independent.
9572         * testsuite/debug_msg.sh: Avoid matching source line number for
9573         use of global variable undef_int.
9574
9575 2010-02-26  Doug Kwan  <dougkwan@google.com>
9576
9577         * arm.cc (Target_arm::scan_reloc_for_stub): Move code handling
9578         R_ARM_V4BX to Target_arm::scan_reloc_section_for_stubs.
9579         (Target_arm::scan_reloc_section_for_stubs): Instead of calling
9580         scan_reloc_for_stub, do all processing of R_ARM_V4BX here.
9581         * options.cc (General_options::General_options): Initialize member
9582         fix_v4bx_.
9583         * testsuite/Makefile.am (check_SCRIPTS): Add arm_fix_v4bx.sh
9584         (check_DATA): Add arm_fix_v4bx.stdout, arm_fix_v4bx_interworking.stdout
9585         and rm_no_fix_v4bx.stdout
9586         (arm_fix_v4bx.stdout, arm_fix_v4bx, arm_fix_v4bx.o,
9587         arm_fix_v4bx_interworking.stdout, arm_fix_v4bx_interworking,
9588         arm_no_fix_v4bx.stdout, arm_no_fix_v4bx): New make rules.
9589         (MOSTLYCLEANFILES): Add arm_fix_v4bx, arm_fix_v4bx_interworking
9590         and arm_no_fix_v4bx.
9591         * Makefile.in: Regenerate.
9592         * testsuite/arm_fix_v4bx.s: New file.
9593         * testsuite/arm_fix_v4bx.sh: Ditto.
9594
9595 2010-02-24  Doug Kwan  <dougkwan@google.com>
9596
9597         * arm.cc (Target_arm::got_section): Make the .got section the first
9598         non RELRO section in the data segment.
9599         * testsuite/script_test_5.sh: Fix match patterns to avoid matching
9600         suffixes of section names.
9601
9602 2010-02-24  Doug Kwan  <dougkwan@google.com>
9603
9604         * arm.cc (Target_arm::do_finalize_sections): Skip processor specific
9605         flags and attributes merging if an input file is a binary file.
9606         * fileread.cc (Input_file::open): Record format of original file.
9607         * fileread.h (Input_file::Format): New enum type.
9608         (Input_file::Input_file): Initialize data member format_.
9609         (Input_file::format): New method definition.
9610         (Input_file::format_):: New data member.
9611
9612 2010-02-24  Doug Kwan  <dougkwan@google.com>
9613
9614         * arm.cc (Arm_output_data_got): New class.
9615         (ARM_TCB_SIZE): New constant
9616         (Target_arm): Use Arm_output_data_got instead of Output_data_got.
9617         (Arm_output_section::fix_exidx_coverage): Add a parameter for layout.
9618         If user uses a script with a SECTIONS clause, issue only a warning
9619         for a misplaced EXIDX input section.  Otherwise, issue an error.
9620         (Arm_relobj::do_gc_process_relocs): Exit early if we are not doing
9621         garbage collection.
9622         (Target_arm::got_mode_index_entry): Handle static linking.
9623         (Target_arm::Scan::local): Ditto.
9624         (Target_arm::Scan::global): Ditto.
9625         (Target_arm::Relocate::relocate_tls): Handle static linking.  Fix
9626         all incorrectly implemented relocations.
9627         (Target_arm::fix_exidx_coverage): Pass layout to
9628         Arm_output_section::fix_exidx_coverage.
9629         * layout.cc (Layout::section_name_mapping): Remove trailing dots
9630         from ".ARM.exidx." and ".ARM.extab.".
9631
9632 2010-02-23  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
9633
9634         * arm.cc (Target_arm::do_finalize_sections): Create attribute
9635         section if it does not already exist.
9636         * attributes.cc (Attributes_section_data::Attributes_section_data):
9637         Don't crash if size is zero.
9638
9639 2010-02-23  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
9640             Ian Lance Taylor  <iant@google.com>
9641
9642         * gold.cc (queue_middle_tasks): If no input files were opened,
9643         exit.
9644         * workqueue.h (Task_function::Task_function): Assert that there is
9645         a blocker.
9646
9647 2010-02-22  Doug Kwan  <dougkwan@google.com>
9648
9649         * gold-threads.h (Once::~Once): Explicitly define virtual destructor.
9650         * icf.cc (get_section_contents): Cast snprintf arguments to long long
9651         types to avoid warnings due to different uint64_t implementations
9652         on different hosts.
9653
9654 2010-02-21  Doug Kwan  <dougkwan@google.com>
9655
9656         * arm.cc (Arm_relocate_functions::arm_branch_common): Fix bug in
9657         handling of the maximum backward branch offset.
9658         (Arm_relocate_functions::thumb_branch_common): Ditto.
9659         * testsuite/Makefile.am (check_SCRIPTS): Add arm_branch_in_range.sh.
9660         (check_DATA): Add arm_bl_in_range.stdout, arm_bl_out_of_range.stdout
9661         thumb_bl_in_range.stdout, thumb_bl_out_of_range.stdout,
9662         thumb2_bl_in_range.stdout and thumb2_bl_out_of_range.stdout.
9663         (arm_bl_in_range.stdout, arm_bl_in_range, arm_bl_in_range.o,
9664         arm_bl_out_of_range.stdout, arm_bl_out_of_range,
9665         arm_bl_out_of_range.o, thumb_bl_in_range.stdout, thumb_bl_in_range,
9666         thumb_bl_in_range.o, thumb_bl_out_of_range.stdout,
9667         thumb_bl_out_of_range thumb_bl_out_of_range.o,
9668         thumb2_bl_in_range.stdout, thumb2_bl_in_range, thumb2_bl_in_range.o
9669         thumb2_bl_out_of_range.stdout, thumb2_bl_out_of_range,
9670         thumb2_bl_out_of_range.o): New rules.
9671         (MOSTLYCLEANFILES): Add arm_bl_in_range, arm_bl_out_of_range,
9672         thumb_bl_in_range, thumb_bl_out_of_range, thumb2_bl_in_range and
9673         thumb2_bl_out_of_range
9674         * testsuite/Makefile.in: Regenerate.
9675         * testsuite/arm_bl_in_range.s: New file.
9676         * testsuite/arm_bl_out_of_range.s: Ditto.
9677         * testsuite/arm_branch_in_range.sh: Ditto.
9678         * testsuite/arm_branch_range.t: Ditto.
9679         * testsuite/thumb2_branch_range.t: Ditto.
9680         * testsuite/thumb_bl_in_range.s: Ditto.
9681         * testsuite/thumb_bl_out_of_range.s: Ditto.
9682         * testsuite/thumb_branch_range.t: Ditto.
9683
9684 2010-02-20  Sriraman Tallam  <tmsriram@google.com>
9685
9686         * gc.h (gc_process_relocs): Change vectors to point to the new list.
9687         Add reloc offset information.
9688         * icf.cc (get_section_contents): Change iterators to point to the new
9689         vectors. Add reloc offset information to the contents.
9690         * icf.h (Icf::Sections_reachable_info): New typedef.
9691         (Icf::Sections_reachable_list): New typedef.
9692         (Icf::Offset_info): New typedef.
9693         (Icf::Reloc_info): New struct typedef.
9694         (Icf::Reloc_info_list): New typedef.
9695         (Icf::symbol_reloc_list): Delete method.
9696         (Icf::addend_reloc_list): Delete method.
9697         (Icf::section_reloc_list): Delete method.
9698         (Icf::reloc_info_list): New method.
9699         (Icf::reloc_info_list_): New member.
9700
9701 2010-02-19  Doug Kwan  <dougkwan@google.com>
9702
9703         * arm-reloc.def: Mark R_ARM_TLS_GD32, R_ARM_TLS_LDM32,
9704         R_ARM_TLS_LDO32, R_ARM_TLS_IE32 and R_ARM_TLS_LE32 are implemented.
9705         * arm.cc (Arm_relocation_functions): New forward declaration.
9706         (Target_arm::Target_arm): Initialize new data members
9707         got_mod_index_offset_ and tls_base_symbol_defined_.
9708         (Target_arm::Relocate::relocate_tls): New method.
9709         (Target_arm::optimize_tls_reloc, Target_arm::define_tls_base_symbol,
9710          Target_arm::got_mod_index_entry, Target_arm::rel_tls_desc_section):
9711         New methods.
9712         (Target_arm::Got_type): Add GOT_TYPE_TLS_NOFFSET, GOT_TYPE_OFFSET,
9713         GOT_TYPE_TLS_PAIR and GOT_TYPE_TLS_DESC.
9714         (Target_arm::got_mod_index_offset_,
9715         Target_arm::tls_base_symbol_defined_): New data members.
9716         (Target_arm::Scan::local, Target::Scan::global,
9717         Target_arm::Relocate::relocate): Handle 32-bit initial TLS
9718         relocations.
9719
9720 2010-02-18  Doug Kwan  <dougkwan@google.com>
9721
9722         * arm.cc (Arm_relobj::find_linked_text_section): New method.
9723         (Arm_relobj::make_exidx_input_section): Pass section index of linked
9724         text section as a parameter becuase some broken tools may not set
9725         the link in section header.
9726         (Target_arm::has_got_section): New method.
9727         (Target_arm::scan_section_for_cortex_a8_stubs): Treat an input section
9728         without any mapping symbol as data only.  Remove warning.
9729         (Arm_relobj::do_read_synbols): If an EXIDX input section has no
9730         link in its section header, try to discover the link by inspecting the
9731         REL31 relocation at the beginning of the section.
9732         (Target_arm::Scan::check_non_pic): Report name of offending relocation
9733         in error message.
9734         (Target_arm::Scan::global): Treat any reference to the symbol
9735         _GLOBAL_OFFSET_TABLE_ as a GOT access.
9736
9737 2010-02-12  Sriraman Tallam  <tmsriram@google.com>
9738
9739         * arm.cc (Scan::local_reloc_may_be_function_pointer): New function.
9740         (Scan::global_reloc_may_be_function_pointer): New function.
9741         * sparc.cc (Scan::local_reloc_may_be_function_pointer): New function.
9742         (Scan::global_reloc_may_be_function_pointer): New function.
9743         * powerpc.cc (Scan::local_reloc_may_be_function_pointer): New function.
9744         (Scan::global_reloc_may_be_function_pointer): New function.
9745         * i386.cc (Scan::local_reloc_may_be_function_pointer): New function.
9746         (Scan::global_reloc_may_be_function_pointer): New function.
9747         * x86_64.cc (Scan::local_reloc_may_be_function_pointer): New function.
9748         (Scan::global_reloc_may_be_function_pointer): New function.
9749         (Scan::possible_function_pointer_reloc): New function.
9750         (Target_x86_64::can_check_for_function_pointers): New function.
9751         * gc.h (gc_process_relocs): Scan relocation types to determine if
9752         function pointers were taken for targets that support it.
9753         * icf.cc (Icf::find_identical_sections): Include functions for
9754         folding in safe ICF whose pointer is not taken.
9755         * icf.h (Secn_fptr_taken_set): New typedef.
9756         (fptr_section_id_): New member.
9757         (section_has_function_pointers): New function.
9758         (set_section_has_function_pointers): New function.
9759         (check_section_for_function_pointers): New function.
9760         * options.h: Fix comment for safe ICF option.
9761         * target.h (can_check_for_function_pointers): New function.
9762         * testsuite/Makefile.am: Add icf_safe_so_test test case.
9763         Modify icf_safe_test for X86-64.
9764         * testsuite/Makefile.in: Regenerate.
9765         * testsuite/icf_safe_so_test.cc: New file.
9766         * testsuite/icf_safe_so_test.sh: New file.
9767         * testsuite/icf_safe_test.cc (kept_func_3): New function.
9768         (main): Change to take pointer to function kept_func_3.
9769         * testsuite/icf_safe_test.sh (arch_specific_safe_fold): Check if safe
9770         folding is done correctly for X86-64.
9771
9772 2010-02-12  David S. Miller  <davem@davemloft.net>
9773
9774         * output.h (Output_reloc<SHT_REL>::Output_reloc): Add
9775         is_symbolless parameter.
9776         (Output_reloc<SHT_REL>::is_symbolless): New.
9777         (Output_reloc<SHT_REL>::is_symbolless_): New.
9778         (Output_reloc<SHT_REL>::type_): Decrease to 29 bits.
9779         (Output_reloc<SHT_RELA>::Output_reloc): Add is_symbolless parameter.
9780         (Output_reloc<SHT_RELA>::is_symbolless): New.
9781         (Output_data_reloc::add_global): Handle is_symbolless.
9782         (Output_data_reloc::add_global_relative): Likewise.
9783         (Output_data_reloc::add_local): Likewise.
9784         (Output_data_reloc::add_local_relative): Likewise.
9785         (Output_data_reloc::add_symbolless_global_addend): New.
9786         (Output_data_reloc::add_symbolless_local_addend): New.
9787         * output.cc (Output_reloc<SHT_REL>::Output_reloc): Handle
9788         is_symbolless.
9789         (Output_reloc::set_needs_dynsym_index): Test ->is_symbolless_
9790         instead of ->is_relative_
9791         (Output_reloc::write): Likewise.
9792         (Output_reloc::get_symbol_index): Return 0 when ->is_symbolless_
9793         (Output_reloc::write_rel): Simplify.
9794
9795         * sparc.cc (Target_sparc::Scan::local): Use
9796         ->add_symbolless_local_addend as needed.
9797         (Target_sparc::Scan::global): Use ->add_symbolless_global_addend as
9798         needed.  Also, emit appropriate unaligned vs. aligned dynamic reloc
9799         based upon relocation offset.
9800
9801 2010-02-11  Doug Kwan  <dougkwan@google.com>
9802
9803         * arm.cc (Target_arm::Scan::local): Fix bugs in relocation handling.
9804         (Target_arm::Scan::global): Ditto.  Also remove a comment before the
9805         beginning of function.
9806         (Target_arm::Relocate::relocate): Remove error messages for MOVW_ABS
9807         and MOVT_ABS relocations.  Those are non issued in scanning.  Fix
9808         parameter is_32bit in calls to should_apply_static_reloc.
9809         * testsuite/Makefile.am (check_SCRIPTS): Add arm_abs_global.sh.
9810         (check_DATA): Add arm_abs_global.stdout.
9811         (arm_abs_lib.o, libarm_abs.so, arm_abs_global.o, arm_abs_global,
9812         arm_abs_global.stdout): New rules.
9813         (MOSTLLYCLEANFILES): Add arm_abs_global
9814         * Makefile.in: Regenerate.
9815         * testsuite/arm_abs_global.s: New file.
9816         * testsuite/arm_abs_global.sh: Ditto.
9817         * testsuite/arm_abs_lib.s: Ditto.
9818
9819 2010-02-11  Ian Lance Taylor  <iant@google.com>
9820
9821         * gold.cc (queue_middle_gc_tasks): Use a separate blocker for each
9822         Read_relocs task.
9823         (queue_middle_tasks): Likewise, and also for Scan_relocs.  Run
9824         Allocate_commons_task first.
9825         * reloc.cc (Read_relocs::run): Pass next_blocker_ down to next
9826         task, rather than symtab_lock_.
9827         (Gc_process_relocs::~Gc_process_relocs): New function.
9828         (Gc_process_relocs::is_runnable): Check this_blocker_.
9829         (Gc_process_relocs::locks): Use next_blocker_ rather than
9830         blocker_.
9831         (Scan_relocs::~Scan_relocs): New function.
9832         (Scan_relocs::is_runnable): Check this_blocker_ rather than
9833         symtab_lock_.
9834         (Scan_relocs::locks): Drop symtab_lock_ and blocker_.  Add
9835         next_blocker_.
9836         * reloc.h (class Read_relocs): Drop symtab_lock_ and blocker_
9837         fields.  Add this_blocker_ and next_blocker_ fields.  Adjust
9838         constructor accordingly.
9839         (class Gc_process_relocs): Likewise.
9840         (class Scan_relocs): Likewise.
9841         * common.h (class Allocate_commons_task): Remove symtab_lock_
9842         field, and corresponding constructor parameter.
9843         * common.cc (Allocate_commons_tasK::is_runnable): Remove use of
9844         symtab_lock_.
9845         (Allocate_commons_task::locks): Likewise.
9846
9847 2010-02-11  Ian Lance Taylor  <iant@google.com>
9848
9849         * gold-threads.h (class Once): Define.
9850         (class Initialize_lock): Rewrite as child of Once.
9851         * gold-threads.cc (class Once_initialize): Define.
9852         (once_pointer_control): New static variable.
9853         (once_pointer, once_arg): New static variables.
9854         (c_run_once): New static function.
9855         (Once::Once, Once::run_once, Once::internal_run): New functions.
9856         (class Initialize_lock_once): Remove.
9857         (initialize_lock_control): Remove.
9858         (initialize_lock_pointer): Remove.
9859         (initialize_lock_once): Remove.
9860         (Initialize_lock::Initialize_lock): Move to gold-threads.h.
9861         (Initialize_lock::initialize): Rewrite.
9862         (Initialize_lock::do_run_once): New function.
9863         * archive.cc (Archive::interpret_header): Only clear name if it is
9864         not already empty.
9865         * fileread.cc: Include "gold-threads.h"
9866         (file_counts_lock): New static variable.
9867         (file_counts_initialize_lock): Likewise.
9868         (File_read::release): Only increment counts when using --stats.
9869         Use a lock around the increment.
9870         * parameters.cc (class Set_parameters_target_once): Define.
9871         (set_parameters_target_once): New static variable.
9872         (Parameters::Parameters): Move here from parameters.h.
9873         (Parameters::set_target): Rewrite.
9874         (Parameters::set_target_once): New function.
9875         (Parameters::clear_target): Move here and rewrite.
9876         * parameters.h (class Parameters): Update declarations.  Add
9877         set_parameters_target_once_ field.
9878         (Parameters::Parameters): Move to parameters.cc.
9879         (Parameters::clear_target): Likewise.
9880         * readsyms.cc (Read_symbols::do_group): Create a Start_group
9881         task.
9882         (Start_group::~Start_group): New function.
9883         (Start_group::is_runnable): New function.
9884         (Start_group::locks, Start_group::run): New functions.
9885         (Finish_group::run): Change saw_undefined to size_t.
9886         * readsyms.h (class Start_group): Define.
9887         (class Finish_group): Change saw_undefined_ field to size_t.
9888         (Finish_group::Finish_group): Remove saw_undefined and
9889         this_blocker parameters.  Change all callers.
9890         (Finish_group::set_saw_undefined): New function.
9891         (Finish_group::set_blocker): New function.
9892         * symtab.h (class Symbol_table): Change saw_undefined to return
9893         size_t.  Change saw_undefined_ field to size_t.
9894         * target-select.cc (Set_target_once::do_run_once): New function.
9895         (Target_selector::Target_selector): Initialize set_target_once_
9896         field.  Don't initialize lock_ and initialize_lock_ fields.
9897         (Target_selector::instantiate_target): Rewrite.
9898         (Target_selector::set_target): New function.
9899         * target-select.h (class Set_target_once): Define.
9900         (class Target_selector): Update declarations.  Make
9901         Set_target_once a friend.  Remove lock_ and initialize_lock_
9902         fields.  Add set_target_once_ field.
9903
9904 2010-02-10  Ian Lance Taylor  <iant@google.com>
9905
9906         * dirsearch.cc (Dirsearch::initialize): Add all blockers before
9907         queueing any tasks.
9908         * gold.cc (queue_middle_gc_tasks): Likewise.  Fix final blocker.
9909         (queue_middle_tasks): Add all blockers before queueing any tasks.
9910         (queue_final_tasks): Likewise.
9911         * token.h (Task_token::add_blockers): New function.
9912         * object.h (Input_objects::number_of_relobjs): New function.
9913
9914 2010-02-10  Ian Lance Taylor  <iant@google.com>
9915
9916         * i386.cc (Relocate::relocate_tls): A local symbol is final if not
9917         shared, not if not position independent.
9918         * x86_64.cc (Relocate::relocate_tls): Likewise.
9919         * testsuite/Makefile.am (check_PROGRAMS): Add tls_pie_pic_test.
9920         (tls_pie_pic_test): New target.
9921         * testsuite/Makefile.in: Rebuild.
9922
9923         * testsuite/Makefile.am (check_PROGRAMS): Add tls_pie_test.
9924         (tls_test_main_pie.o, tls_test_pie.o): New targets.
9925         (tls_test_file2_pie.o, tls_test_c_pie.o, tls_pie_test): Likewise.
9926         * testsuite/Makefile.in: Rebuild.
9927
9928 2010-02-09  David S. Miller  <davem@davemloft.net>
9929
9930         * sparc.cc (Target_sparc::Scan::local): Do not emit relocs other than
9931         R_SPARC_RELATIVE using ->add_local_relative().
9932         (Target_sparc::Scan::global): Likewise for ->add_global_relative().
9933
9934         * output.h (Output_data_dynamic::add_section_size): New method
9935         that takes two Output_data objects.
9936         (Output_data_dynamic::Dynamic_entry): Create storage for secondary
9937         entry param.  Handle it in initializers.
9938         * output.cc (Output_data_dynamic::Dynamic_entry::write): For
9939         DYNAMIC_SECTION_SIZE, add in second object size if non-NULL.
9940         * layout.h (Layout::add_target_dynamic_tags): Add dynrel_includes_plt
9941         arg.
9942         * layout.cc (Layout::add_target_dynamic_tags): If dynrel_includes_plt,
9943         and .rela.plt exists, set DT_REL{,A}SZ to sum of .rela.dyn and .rela.plt
9944         * arm.cc (Target_arm::do_finalize_sections): Update to pass false
9945         for dynrel_includes_plt.
9946         * i386.cc (Target_i386::do_finalize_sections): Likewise.
9947         * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
9948         * sparc.cc (Target_sparc::make_plt_entry): Force .rela.dyn to be output
9949         before .rela.plt
9950         (Target_sparc::do_finalize_sections): Update to pass true for
9951         dynrel_includes_plt.
9952         * powerpc.cc (Target_powerpc::make_plt_entry): Force .rela.dyn to be
9953         output before .rela.plt
9954         (Target_powerpc::do_finalize_sections): Update to pass true for
9955         dynrel_includes_plt when 32-bit.
9956
9957 2010-02-08  Doug Kwan  <dougkwan@google.com>
9958
9959         * arm.cc (Arm_relobj::simple_input_section_output_address): New
9960         method.
9961         (Arm_relobj::section_needs_cortex_a8_stub_scanning,
9962         Arm_relobj::scan_section_for_cortex_a8_stubs,
9963         Arm_relobj::do_relocation_section): Instead of calling
9964         Output_section::output_address, use faster
9965         Arm_relobj::simple_input_section_output_address.
9966
9967 2010-02-08  David S. Miller  <davem@davemloft.net>
9968
9969         * sparc.cc (Target_sparc::Relocate::relocate): If relocation offset is
9970         unaligned for R_SPARC_16, R_SPARC_32, or R_SPARC_64, use the unaligned
9971         relocation helper function.
9972
9973         * sparc.cc (Target_sparc::Scan::local): Handle R_SPARC_GOTDATA_OP*
9974         just like R_SPARC_GOT{10,13,22}.
9975         (Target_sparc::Scan::local): Likewise.
9976         (Target_sparc::Relocate:relocate): Likewise.
9977
9978 2010-02-06  Ian Lance Taylor  <iant@google.com>
9979
9980         * configure.ac: Rewrite targetobjs duplicate removal code to use
9981         only shell constructs.
9982         * configure: Rebuild.
9983
9984 2010-02-05  Doug Kwan  <dougkwan@google.com>
9985
9986         PR 11247
9987         * arm.cc (Arm_relobj::section_is_scannable): New method.
9988         (Arm_relobj::section_needs_reloc_stub_scanning): Use it.
9989         (Arm_relobj::section_needs_cortex_a8_stub_scanning): Same.
9990
9991 2010-02-04  Doug Kwan  <dougkwan@google.com>
9992
9993         PR 11247
9994         * arm-reloc-property.cc (cstdio): Include.
9995         * configure.ac (targetobjs): Remove duplicates.
9996         * configure: Regenerate.
9997         * resolve.cc (Symbol_table::resolve): Explicit instantiate both
9998         big and little endian version for a given address size.
9999
10000 2010-02-03  Doug Kwan  <dougkwan@google.com>
10001
10002         * arm-reloc-property.cc
10003         (Arm_reloc_property_table::reloc_name_in_error_message): New method
10004         definition.
10005         * arm-reloc-property.h
10006         (Arm_reloc_property_table::get_implemented_static_reloc_property):
10007         New method definition.
10008         (Arm_reloc_property_table::reloc_name_in_error_message): New method
10009         declaration.
10010         * arm-reloc.def (THM_MOVT_ABS, THM_MOVT_PREL, THM_MOVT_BREL): Change
10011         overflow to N.
10012         (GOT_PREL): Change implemented to Y.
10013         * arm.cc (Target_arm::reloc_uses_thumb_bit): Remove method.
10014         (Target_arm::Relocate::reloc_needs_sym_origin): Remove method.
10015         (Arm_relocate_functions::movw_abs_nc): Remove method.
10016         (Arm_relocate_functions::movt_abs): Ditto.
10017         (Arm_relocate_functions::thm_movw_abs_nc): Ditto.
10018         (Arm_relocate_functions::thm_movt_abs): Ditto.
10019         (Arm_relocate_functions::movw_rel_nc): Ditto.
10020         (Arm_relocate_functions::movw_rel): Ditto.
10021         (Arm_relocate_functions::movt_rel): Ditto.
10022         (Arm_relocate_functions:thm_movw_rel_nc): Ditto.
10023         (Arm_relocate_functions:thm_movw_rel): Ditto.
10024         (Arm_relocate_functions:thm_movt_rel): Ditto.
10025         (Arm_relocate_functions::movw, Arm_relocate_functions::movt,
10026         (Arm_relocate_functions::thm_movw, Arm_relocate_functions::thm_movt):
10027         New method definitions.
10028         (Arm_relocation_functions::arm_grp_alu): Add assertion for group index.
10029         (Arm_relocation_functions::arm_grp_ldr): Ditto.
10030         (Arm_relocation_functions::arm_grp_ldrs): Ditto.
10031         (Arm_relocation_functions::arm_grp_ldc): Ditto.
10032         (Target_arm::Relocate::relocate): Check for non-static or
10033         unimplemented relocation code and exit early.  Change calls to
10034         Target_arm::reloc_uses_thumb_bit and
10035         Target_arm::Reloc::reloc_needs_sym_origin to use relocation property
10036         instead.  Refactor code to handle similar relocations to increase
10037         code sharing.  Remove check for unsupported relocation code in switch
10038         statement.
10039         (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Use
10040         relocation property table to find out size.  Change error message to
10041         print out the name of a relocation code instead of the numeric value.
10042         (Target_arm::scan_reloc_for_stub): Use relocation property table
10043         instead of calling Target_arm::reloc_uses_thumb_bit().
10044
10045 2010-02-02  Doug Kwan  <dougkwan@google.com>
10046
10047         * arm.cc (Target_arm::relocate_section): Do view adjustment for all
10048         types of relaxed input section.
10049
10050 2010-02-02  Doug Kwan  <dougkwan@google.com>
10051
10052         * Makefile.am (HFILES): Add arm-reloc-property.h.
10053         (DEFFILES): New.
10054         (TARGETSOURCES): Add arm-reloc-property.cc
10055         (ALL_TARGETOBJS): Add arm-reloc-property.$(OBJEXT)
10056         (libgold_a_SOURCES): $(DEFFILES)
10057         * Makefile.in: Regenerate.
10058         * arm-reloc-property.cc: New file.
10059         * arm-reloc-property.h: New file.
10060         * arm-reloc.def: New file.
10061         * arm.cc: Update comments.
10062         (arm-reloc-property.h): New included header.
10063         (arm_reloc_property_table): New global variable.
10064         (Target_arm::do_select_as_default_target): New method definition.
10065         * configure.tgt (armeb*-*-*,armbe*-*-*,arm*-*-*): Add
10066         arm-reloc-property to targ_extra_obj.
10067         * parameters.cc (set_parameters_target): Call
10068         Target::select_as_default_target().
10069         * target.h (Target::select_as_default_target): New method definition.
10070         (Target::do_select_as_default_target): Same.
10071
10072 2010-02-01  Doug Kwan  <dougkwan@google.com>
10073
10074         * arm.cc (Arm_exidx_fixup::Arm_exidx_fixup): Initialize
10075         first_output_text_section_.
10076         (Arm_exidx_fixup::first_output_text_section): New method definition.
10077         (Arm_exidx_fixup::first_output_text_section_): New data member.
10078         (Arm_exidx_fixup::process_exidx_section): Record the first text
10079         output section seen.
10080         (Arm_output_section::fix_exidx_coverage): Set correct linked section
10081         and entsize in output section header.
10082
10083 2010-01-29  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
10084
10085         * gold/arm.cc: Added support for the ARM relocations: R_ARM_THM_PC8,
10086         R_ARM_THM_PC12, R_ARM_THM_ALU_PREL_11_0.
10087         (Arm_relocate_functions::thm_alu11): New Method.
10088         (Arm_relocate_functions::thm_pc8): New Method.
10089         (Arm_relocate_functions::thm_pc12): New Method.
10090         (Target_arm::Scan::local): Handle the relocations.
10091         (Target_arm::Scan::global): Likewise.
10092         (Target_arm::Relocate::relocate): Likewise.
10093         (Target_arm:Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
10094
10095 2010-01-29  Doug Kwan  <dougkwan@google.com>
10096
10097         * arm.cc (Target_arm::Scan::global): General PLTs for the same set
10098         of relocation types as ld.
10099
10100 2010-01-29  Doug Kwan  <dougkwan@google.com>
10101
10102         * arm.cc (Arm_relocate_functions::arm_branch_common) Change visibility
10103         to public.
10104         (Arm_relocate_functions::thumb_branch_common): Ditto.
10105         (Arm_relocate_functions::thm_call, Arm_relocate_functions::thm_jump24,
10106         Arm_relocate_functions::thm_xpc22, Arm_relocate_functions::plt32,
10107         Arm_relocate_functions::xpc25, Arm_relocate_functions::call,
10108         Arm_relocate_functions::jump24): Remove.
10109         (Target_arm::Relocate::relocate): Adjust code to call
10110         Arm_relocation_functions::arm_branch_common and
10111         Arm_relocation_functions::thumb_branch_common instead of their removed
10112         wrappers.  Merge switch-cases together to reduce source code size.
10113
10114 2010-01-29  Doug Kwan  <dougkwan@google.com>
10115
10116         * arm.cc (Arm_relobj::Arm_relobj): Initialize new data member
10117         output_local_symbol_count_needs_update_.
10118         (Arm_relobj::output_local_symbol_count_needs_update,
10119          Arm_relobj::set_output_local_symbol_count_needs_update,
10120          Arm_relobj::update_output_local_symbol_count): New methods.
10121         (Arm_relobj::output_local_symbol_count_needs_update_): New data
10122         member.
10123         (Arm_exidx_cantunwind::do_fixed_endian_write): Write address
10124         of pointed function as in a R_ARM_PREL31 relocation.
10125         (Arm_output_section<big_endian>::fix_exidx_coverage): Mark objects
10126         for output local symbol count updating.
10127         (Target_arm::do_relax): Update output local symbol counts in objects
10128         if necessary.
10129         * object.h (Sized_relobj::set_output_local_symbol_count): New method.
10130
10131 2010-01-29  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
10132
10133         * arm.cc: Added support for the ARM relocations:
10134         R_ARM_MOVW_BREL_NC, R_ARM_MOVT_BREL, R_ARM_MOVW_BREL,
10135         R_ARM_THM_MOVW_BREL_NC, R_ARM_THM_MOVT_BREL, R_ARM_THM_MOVW_BREL.
10136         (Arm_relocate_functions::movw_rel_nc): Renamed (was
10137         movw_prel_nc).
10138         (Arm_relocate_functions::movw_rel): New method.
10139         (Arm_relocate_functions::movt_rel): Renamed (was movt_prel).
10140         (Arm_relocate_functions::thm_movw_rel_nc): Renamed (was
10141         thm_movw_prel_nc).
10142         (Arm_relocate_functions::thm_movw_rel): New method.
10143         (Arm_relocate_functions::thm_movt_rel): Renamed (was
10144         thm_movt_prel).
10145         (Target_arm::Scan::local): Handle MOVW_BREL/MOVT_BREL
10146         relocations.
10147         (Target_arm::Scan::global): Likewise.
10148         (Target_arm::Relocate::relocate): Likewise.
10149         (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
10150         Likewise.
10151
10152 2010-01-27  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
10153
10154         * arm.cc: Added support for ARM group relocations.
10155         (Target_arm::reloc_needs_sym_origin): New method.
10156         (Arm_relocate_functions::calc_grp_kn): New method.
10157         (Arm_relocate_functions::calc_grp_residual): New method.
10158         (Arm_relocate_functions::calc_grp_gn): New method.
10159         (Arm_relocate_functions::arm_grp_alu): New Method.
10160         (Arm_relocate_functions::arm_grp_ldr): New Method.
10161         (Arm_relocate_functions::arm_grp_ldrs): New Method.
10162         (Arm_relocate_functions::arm_grp_ldc): New Method.
10163         (Target_arm::Scan::local): Handle the ARM group relocations.
10164         (Target_arm::Scan::global): Likewise.
10165         (Target_arm::Relocate::relocate): Likewise.
10166         (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
10167         Likewise.
10168
10169 2010-01-26  Doug Kwan  <dougkwan@google.com>
10170
10171         * arm.cc (set): Include.
10172         (class Arm_exidx_fixup): Change type of last_input_section_ to const
10173         pointer type.
10174         (Arm_output_section::Text_section_list): New type.
10175         (Arm_output_section::append_text_sections_to_list): New method.
10176         (Arm_output_section::fix_exidx_coverage): Ditto.
10177         (Arm_relobj::Arm_relobj): Initialize exidx_section_map_.
10178         (Arm_relobj::convert_input_section_to_relaxed_section): Use
10179         Relobj::set_section_offset() instead of
10180         Sized_relobj::invalidate_section_offset().
10181         (Arm_relobj::section_needs_reloc_stub_scanning): Add an extra
10182         parameter for section headers. Ignore relocation sections for
10183         unallocated sections and EXIDX sections.
10184         (Target_arm::fix_exidx_coverage): New method.
10185         (Target_arm::output_section_address_less_than): New type.
10186         (Arm_exidx_fixup::add_exidx_cantunwind_as_needed): Use index of the
10187         linked text section instead of the EXIDX section.
10188         (Arm_output_section::create_stub_group): Add an assertion to check
10189         that this is not an EXIDX output section.
10190         (Arm_output_section::append_text_sections_to_list): New method.
10191         (Arm_output_section::fix_exidx_coverage): Ditto.
10192         (Arm_relobj::scan_sections_for_stubs): Adjust call to
10193         Arm_relobj::section_needs_reloc_stub_scanning.
10194         (Target_arm::do_relax): Fix EXIDX output section coverage in the
10195         first pass.
10196         (Target_arm::fix_exidx_coverage): New method.
10197         * object.h (Relobj::set_output_section): New method.
10198         (Sized_relobj::invalidate_section_offset): Remove method.
10199         (Sized_relobj::do_invalidate_section_offset): Remove method.
10200         (Sized_relobj::do_set_section_offset): Handle offset value -1.
10201
10202 2010-01-25  Doug Kwan  <dougkwan@google.com>
10203
10204         * arm.cc (Arm_exidx_merged_section::do_output_offset):
10205         Fix warning due to signed and unsigned comparison on a 32-bit host.
10206
10207 2010-01-22  Doug Kwan  <dougkwan@google.com>
10208
10209         * arm.cc (Target_arm::do_relax): Record an output section for section
10210         offset adjustment it contains any stub table that has changed.
10211         * layout.cc (Layout::clean_up_after_relaxation): Adjust section
10212         offsets in an output section if necessary.
10213         * output.cc (Output_section::Output_section): Initialize
10214         section_offsets_need_adjustments_.
10215         (Output_section::add_input_section_for_script): Renamed to
10216         Output_section::add_simple_input_section.
10217         (Output_section::save_states): Add a comment.
10218         (Output_section::discard_states): New method defintion.
10219         (Output_section::adjust_section_offsets): Same.
10220         * output.h (Output_section::add_input_section_for_script): Renamed to
10221         Output_section::add_simple_input_section.
10222         (Output_section::discard_states): New method declaration.
10223         (Output_section::adjust_section_offsets): Same.
10224         (Output_section::section_offsets_need_adjustment,
10225         Output_section::set_section_offsets_need_adjustment): New method
10226         definitions.
10227         (Output_section::section_offsets_need_adjustment_): New data member.
10228         * script-sections.cc
10229         (Output_section_element_input::set_section_address): Adjust code for
10230         renaming of Output_section::add_input_section_for_script.
10231         (Orphan_output_section::set_section_address): Same.
10232
10233 2010-01-22  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
10234
10235         * gold/arm.cc (Target_arm): Updated fix_v4bx method and usage of
10236         Fix_v4bx enum values .
10237         * gold/options.h (General_options): New option definitions.
10238         (General_options::fix_v4bx): New method.
10239         (General_options::Fix_v4bx): New enum.
10240         * gold/options.cc (General_options::parse_fix_v4bx): New method.
10241         (General_options::parse_fix_v4bx_interworking): New method.
10242
10243 2010-01-22  Doug Kwan  <dougkwan@google.com>
10244
10245         * arm.cc (Arm_exidx_fixup): New class.
10246
10247 2010-01-21  Doug Kwan  <dougkwan@google.com>
10248
10249         * arm.cc (Arm_exidx_cantunwind, Arm_exidx_merged_section): New
10250         classes.
10251         (Arm_exidx_section_offset_map): New type.
10252
10253 2010-01-21  Doug Kwan  <dougkwan@google.com>
10254
10255         * arm.cc (Arm_exidx_input_section): New class.
10256         (Arm_relobj::exidx_input_section_by_link,
10257         Arm_relobj::exidx_input_section_by_shndx,
10258         Arm_relobj::make_exidx_input_section): New methods.
10259         (read_arm_attributes_section): Remove.
10260         (Arm_relobj::do_read_symbols): Look for ARM.exidx sections and record
10261         information about them.
10262         (Arm_dynobj::do_read_symbols): Move code in read_arm_attributes_section
10263         to here.
10264
10265 2010-01-20  Doug Kwan  <dougkwan@google.com>
10266
10267         * arm.cc (Target_arm::Arm_input_section_map): Change key type from
10268         Input_section_specifier to Section_id.
10269         (Target_arm::new_arm_input_section: Adjust code for change of key
10270         type.
10271         (Target_arm::find_arm_input_section): Ditto.
10272         * gc.h (object.h): Include for Section_id nand Section_id_hash.
10273         (Section_id): Remove.
10274         (Garbage_collection::Section_id_hash): Remove.
10275         * icf.h (object.h): Include for Section_id nand Section_id_hash.
10276         (Section_id): Remove.
10277         (Icf::Section_id_hash): Remove.
10278         * object.h (Section_id, Const_section_id, Section_id_hash,
10279         Const_section_id_hash): New type definitions.
10280         * output.cc (Output_section::add_relaxed_input_section): Change to
10281         use Const_section_id instead of Input_section_specifier as key type.
10282         (Output_section::add_merge_input_section): Ditto.
10283         (Output_section::build_relaxation_map): Change to use Section_id
10284         instead of Input_section_specifier as key type.
10285         (Output_section::convert_input_sections_in_list_to_relaxed_sections):
10286         Ditto.
10287         (Output_section::convert_input_sections_to_relaxed_sections): Change
10288         to use Const_section_id instead of Input_section_specifier as key type.
10289         (Output_section::find_merge_section): Ditto.
10290         (Output_section::find_relaxed_input_section): Ditto.
10291         * output.h (Input_section_specifier): Remove class.
10292         (Output_section::Output_section_data_by_input_section_map): Change
10293         key type to Const_section_id.
10294         (Output_section::Output_relaxed_input_section_by_input_section_map):
10295         Ditto.
10296         (Output_section::Relaxation_map): Change key type to Section_id.
10297
10298 2010-01-20  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
10299
10300         * gold/arm.cc: Added support for R_ARM_V4BX relocation
10301         (class Arm_v4bx_stub): New class.
10302         (DEF_STUBS): Updated definition to support v4_veneer_bx.
10303         (Stub_factory::make_arm_v4bx_stub): New method.
10304         (Stub_factory::elf32_arm_stub_v4_veneer_bx): New veneer template.
10305         (Stub_table::empty): Handle v4bx stubs.
10306         (Stub_table::add_arm_v4bx_stub): New method.
10307         (Stub_table::find_arm_v4bx_stub): New method.
10308         (Arm_relocate_functions::v4bx): New method.
10309         (Target_arm::fix_v4bx): New method.
10310         (Target_arm::Target_arm): Handle R_ARM_V4BX.
10311         (Stub_table::relocate_stubs): Likewise.
10312         (Stub_table::do_write): Likewise.
10313         (Stub_table::update_data_size_and_addralign): Likewise.
10314         (Stub_table::finalize_stubs):  Likewise.
10315         (Target_arm::Scan::local): Likewise.
10316         (Target_arm::Scan::global): Likewise.
10317         (Target_arm::do_finalize_sections): Likewise.
10318         (Target_arm::Relocate::relocate): Likewise.
10319         (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
10320         Likewise.
10321         (Target_arm::scan_reloc_for_stub): Likewise.
10322         (Target_arm::scan_reloc_section_for_stubs): Likewise.
10323
10324 2010-01-19  Ian Lance Taylor  <iant@google.com>
10325
10326         * output.cc (Output_section_headers::do_sized_write): Write large
10327         segment count to sh_info field.
10328         (Output_file_header::do_sized_write): For large segment count,
10329         write PN_XNUM to e_phnum field.
10330
10331 2010-01-15  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
10332
10333         * arm.cc (Arm_relocate_functions::thm_jump6): New function.
10334         (Arm_relocate_functions::thm_jump8): New function.
10335         (Arm_relocate_functions::thm_jump11): New function.
10336         (Target_arm::Scan::local): Handle R_ARM_THM_JUMP6, R_ARM_THM_JUMP8,
10337         R_ARM_THM_JUMP11.
10338         (Target_arm::Scan::global): Likewise.
10339         (Target_arm::Relocate::relocate): Likewise.
10340         (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
10341         Likewise.
10342
10343 2010-01-14  Doug Kwan  <dougkwan@google.com>
10344
10345         * arm.cc (map, utility): Include headers.
10346         (Target_arm::apply_cortex_a8_workaround): New method.
10347         (Arm_relobj::do_relocate_sections): Apply any Cortex-A8 workaround.
10348         (Target_arm::Scan::local): Handle R_ARM_THM_JUMP24, R_ARM_THM_JUMP19.
10349         (Target_arm::Scan::global): R_ARM_THM_JUMP19.
10350         (Target_arm::do_finalize_sections): Set fix_cortex_a8_ according to
10351         the --[no-]fix-cortex-a8 command line options.
10352         (Target_arm::Relocate::relocate): Handle R_ARM_JUMP19.
10353         (Target_arm::relocate_stub): Use addend in instruction template.
10354         * options.h (DEFINE_bool): Set the user-set flag.
10355         (General_options): Add --[no-]-fix-cortex options.
10356         * output.cc (Output_section::convert_input_sections_to_relaxed_sections)
10357         : Update fast look-up map after conversion.
10358
10359 2010-01-14  Sriraman Tallam  <tmsriram@google.com>
10360
10361         * object.cc (Sized_relobj::do_layout): Change to call layout_gnu_stack
10362         in the first pass of do_layout.
10363
10364 2010-01-13  Doug Kwan  <dougkwan@google.com>
10365
10366         * arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
10367         Arm_relobj::scan_sections_for_stubs): Rearrange code to avoid an
10368         apparent compiler problem of not folding static constant integral
10369         data members of elfcpp::Elf_sizes<32>.
10370
10371 2010-01-13  Doug Kwan  <dougkwan@google.com>
10372
10373         * arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
10374         Arm_relobj::section_needs_cortex_a8_stub_scanning,
10375         Arm_relobj::scan_section_for_cortex_a8_erratum,
10376         Arm_relobj::scan_span_for_cortex_a8_erratum): New methods.
10377         (Arm_relobj::scan_sections_for_stubs): Move code deciding what
10378         sections to scan for relocation stubs into a new method
10379         Arm_relobj::section_needs_reloc_stub_scanning.  Handle both
10380         relocation and Cortex-A8 stub scanning.
10381         (Target_arm::do_relax): Force stubs to be after stubbed sections
10382         if fixing the Cortex-A8 erratum.  Remove all Cortex-A8 stubs at
10383         the beginning of a new relaxation pass.  Update a comment.
10384         (Target_arm::scan_span_for_cortex_a8_erratum): New method definition.
10385
10386 2010-01-12  Ian Lance Taylor  <iant@google.com>
10387
10388         * target-reloc.h (visibility_error): New inline function.
10389         (relocate_section): Call visibility_error.
10390         * testsuite/Makefile.am (check_DATA): Add protected_3.err.
10391         (MOSTLYCLEANFILES): Likewise.
10392         (protected_4_pic.o, protected_3.err): New targets.
10393         * testsuite/protected_4.cc: New file.
10394
10395 2010-01-12  Doug Kwan  <dougkwan@google.com>
10396
10397         * arm.cc (Cortex_a8_reloc): New class.
10398         (Target_arm::Target_arm): Initialize new data members fix_cortex_a8_
10399         and cortex_a8_relocs_info_.
10400         (Target_arm::fix_cortex_a8): New method definition.
10401         (Target_arm::Cortex_a8_relocs_info): New type.
10402         (Target_arm::fix_cortex_a8_, Target_arm::cortex_a8_relocs_info_):
10403         New data member declarations.
10404         (Target_arm::scan_reloc_for_stub): Record information about
10405         relocations for THUMB branches that might be exempted from the
10406         Cortex-A8 workaround.
10407         (Target_arm::do_relax): Clear all Cortex-A8 relocation information
10408         at the beginning of a relaxation pass.
10409
10410 2010-01-12  Doug Kwan  <dougkwan@google.com>
10411
10412         * arm.cc (Arm_relobj::mapping_symbols_info_): New data member.
10413         (Arm_relobj::Mapping_symbol_position,
10414          Arm_reloj::Mapping_symbol_position_less,
10415          Arm_relobj::Mapping_symbols_info): New types.
10416         (Target_arm::is_mapping_symbol_name): New method definition.
10417         (Arm_relobj::do_count_local_symbols): Save information about mapping
10418         symbols.
10419
10420 2010-01-11  Doug Kwan  <dougkwan@google.com>
10421
10422         * arm.cc (Arm_relocate_functions::thumb32_branch_offset,
10423         Arm_relocate_functions::thumb32_branch_upper,
10424         Arm_relocate_functions::thumb32_branch_lower,
10425         Arm_relocate_functions::thumb32_cond_branch_offset,
10426         Arm_relocate_functions::thumb32_cond_branch_upper,
10427         Arm_relocate_functions::thumb32_cond_branch_lower,
10428         Arm_relocate_functions::thm_jump19): New methods to handle THUMB
10429         branch offset encoding.
10430         (Arm_relocate_functions::thumb_branch_common): Use new branch
10431         offset encoding methods to avoid code duplication.
10432         (Stub_template::Stub_template) Handle THUMB16_SPECIAL_TYPE.
10433         (Stub_addend_reader::operator()): Use new branch encoding method
10434         to avoid code duplication.
10435
10436 2010-01-11  Doug Kwan  <dougkwan@google.com>
10437
10438         * arm.cc (Arm_relobj::do_gc_process_relocs): New method.
10439         (Target_arm::do_finalize_sections): Define special EXIDX section
10440         symbols only if referenced.
10441         * gc.h (Garbage_collection::add_reference): New method.
10442         (gc_process_relocs): Use Garbage_collection::add_reference to avoid
10443         code duplication.
10444
10445 2010-01-11  Ian Lance Taylor  <iant@google.com>
10446
10447         * script.cc (Version_script_info::build_expression_list_lookup):
10448         Change complaing about duplicate wildcard match from error to
10449         warning.
10450
10451         * script.cc (class Lazy_demangler): Recreate--revert part of patch
10452         of 2009-12-30.
10453         (Version_script_info::Version_script_info): Initialize globs_,
10454         default_version_, default_is_global_, and exact_.  Don't
10455         initialize globals_ or locals_.
10456         (Version_script_info::build_lookup_tables): Build local symbols
10457         first.
10458         (Version_script_info::unquote): New function.
10459         (Version_script_info::add_exact_match): New function.
10460         (Version_script_info::build_expression_list_lookup): Remove lookup
10461         parameter.  Add is_global parameter.  Change all callers.  Handle
10462         wildcard pattern specially.  Unquote pattern.  Call
10463         add_exact_match.
10464         (Version_script_info::get_name_to_match): New function.
10465         (Version_script_info::get_symbol_version): New function.
10466         (Version_script_info::get_symbol_version_helper): Remove.
10467         (Version_script_info::check_unmatched_names): Call unquote.
10468         * script.h (class Version_script_info): Change get_symbol_version
10469         to be non-inline and add is_global parameter; change all callers.
10470         Rewrite symbol_is_local.  Update declarations.  Define struct
10471         Version_tree_match, Exact, Globs.  Don't define struct Lookup.
10472         Remove globals_ and locals_ members.  Add exact_, globs_,
10473         default_version_, is_global_.
10474         (Version_script_info::Glob): Remove pattern, add expression and
10475         is_global.  Update constructor.  Change all callers.
10476         * dynobj.cc (Versions::finalize): Mark the version symbol as the
10477         default version.
10478         (Versions::symbol_section_contents): If a symbol is undefined, or
10479         defined in a dynamic object, set the version index to
10480         VER_NDX_LOCAL.
10481         * symtab.cc (Symbol_table::add_from_relobj): Don't call
10482         symbol_is_local.
10483         (Symbol_table::add_from_pluginobj): Likewise.
10484         * testsuite/ver_matching_test.sh: blaza1 and blaza go into V2.
10485
10486 2010-01-11  Doug Kwan  <dougkwan@google.com>
10487
10488         * Makefile.am (incremental_dump_DEPENDENCIES): Add libintl dependency.
10489         (incremental_dump_LDADD): Add linking option for libintl.
10490         * Makefile.in: Regenerate.
10491
10492 2010-01-11  H.J. Lu  <hongjiu.lu@intel.com>
10493
10494         PR gold/11144
10495         * testsuite/Makefile.am (dynamic_list.stdout): Use --dyn-syms
10496         instead of -Ds.
10497         * testsuite/Makefile.in: Regenerated.
10498
10499 2010-01-10  Doug Kwan  <dougkwan@google.com>
10500
10501         * options.h (DEFINE_var): Use parentheses around argument varname__
10502         in macro body to avoid any unintended subsequent substitutions.
10503
10504 2010-01-10  Ian Lance Taylor  <iant@google.com>
10505
10506         * resolve.cc (Symbol_table::resolve): Add symbols to list of ODR
10507         candidates before doing symbol resolution.
10508
10509         * resolve.cc (Symbol_table::resolve): Add symbols to the list of
10510         ODR candidates if only one is weak.
10511
10512 2010-01-08  Ian Lance Taylor  <iant@google.com>
10513
10514         * script.cc (Version_script_info::build_expression_list_lookup):
10515         Don't warn about ambiguous version, just record the ambiguity.
10516         (Version_script_info::get_symbol_version_helper): Give error if
10517         version is ambiguous.
10518
10519 2010-01-08  Doug Kwan  <dougkwan@google.com>
10520
10521         * arm.cc (Stub_table::Stub_table): Initalize cortex_a8_stubs_,
10522         prev_data_size_ and prev_addralign_.  Remove initializer for
10523         deleted data member has_been_changed_.
10524         (Stub_table::empty): Look at both reloc_stubs_ and cortex_a8_stubs_
10525         to determine if the table is empty.
10526         (Stub_table::has_been_changed, Stub_table_set_has_been_changed):
10527         Remove.
10528         (Stub_table::add_reloc_stub): Define method in class definition
10529         instead of just declaring it there.
10530         (Stub_table::add_cortex_a8_stub): New method definition.
10531         (Stub_table::update_data_size_and_addralign): Ditto.
10532         (Stub_table::finalize_stubs): Ditto.
10533         (Stub_table::apply_cortex_a8_workaround_to_address_range): Ditto.
10534         (Stub_table::do_addralign_): Return address alignment in the
10535         (Stub_table::do_reset_address_and_file_offset): Define method in
10536         class definition instead of declaring it there.  Set current data
10537         size to be the data size of the previous pass.
10538         (Stub_table::set_final_data_size): Use current data size as the
10539         final data size.
10540         (Stub_table::relocate_stub): Change parameter type of stub from
10541         Reloc_stub pointer to Stub pointer.
10542         (Stub_table::addralign_, Stub_table::has_been_changed_): Remove.
10543         (Stub_table::Cortex_a8_stub_list): New typedef.
10544         (Stub_table::cortex_a8_stubs_, Stub_table::prev_data_size_,
10545          Stub_table::prev_addralign_): New data member.
10546         (Arm_relobj::Arm_relobj): Initialize data member
10547         section_has_cortex_a8_workaround_.
10548         (Arm_relobj::section_has_cortex_a8_workaround,
10549          Arm_relobj::mark_section_for_cortex_a8_workaround): New method
10550          definitions.
10551         (Arm_relobj::section_has_cortex_a8_workaround_): New data member
10552         declarations.
10553         (Target_arm::relocate_stub): Change parameter type of stub from
10554         Reloc_stub pointer to Stub pointer.
10555         (Insn_template::size, Insn_template::alignment): Handle
10556         THUMB16_SPECIAL_TYPE.
10557         (Stub_table::remove_all_cortex_a8_stubs, Stub_table::finalize_stubs,
10558          Stub_table::update_data_size_and_addralign,
10559          Stub_table::apply_cortex_a8_workaround_to_address_range): New method
10560         definitions.
10561         (Stub_table::relocate_stubs): Handle Cortex-A8 stubs.
10562         (Stub_table::do_write): Ditto.
10563         (Target_arm::do_relax): Adjust code for changes in Stub_table.
10564
10565 2010-01-08  Ian Lance Taylor  <iant@google.com>
10566
10567         PR 11108
10568         * symtab.h (class Symbol): Remove fields is_target_special_ and
10569         has_plt_offset_.  Add field is_defined_in_discarded_section_.
10570         (Symbol::is_defined_in_discarded_section): New function.
10571         (Symbol::set_is_defined_in_discarded_section): New function.
10572         (Symbol::has_plt_offset): Rewrite.
10573         (Symbol::set_plt_offset): Verify that new offset is not -1U.
10574         * symtab.cc (Symbol::init_fields): Initialize plt_offset_ to -1U.
10575         Don't initialize is_target_special_ or has_plt_offset_.
10576         Initialize is_defined_in_discarded_section_.
10577         (Symbol_table::add_from_relobj): If appropriate, set
10578         is_defined_in_discarded_section.
10579         * resolve.cc (Symbol::override_base_with_special): Don't test
10580         is_target_special_.  Change has_plt_offset_ to has_plt_offset().
10581         * target-reloc.h (relocate_section): Do special handling for
10582         symbols defined in discarded sections for global symbols as well
10583         as local symbols.
10584
10585 2010-01-08  Ian Lance Taylor  <iant@google.com>
10586
10587         * dynobj.cc (big_endian>::find_dynsym_sections): Set pi to NULL in
10588         the SHT_SYMTAB case.
10589
10590 2010-01-08  Ian Lance Taylor  <iant@google.com>
10591
10592         * object.cc (Sized_relobj::do_layout): Don't get confused if
10593         layout_eh_frame returns NULL.
10594
10595 2010-01-08  Ian Lance Taylor  <iant@google.com>
10596
10597         PR 11084
10598         * dynobj.cc (Sized_dynobj::find_dynsym_sections): If there is no
10599         dynamic symbol table, use the normal symbol table.
10600         (Sized_dynobj::do_read_symbols): Remove assertion about type of
10601         symbol table.
10602
10603 2010-01-08  Ian Lance Taylor  <iant@google.com>
10604
10605         PR 11072
10606         * layout.cc (Layout::include_section): Remove .gnu_debuglink
10607         sections.
10608
10609 2010-01-08  H.J. Lu  <hongjiu.lu@intel.com>
10610
10611         * version.cc (print_version): Change to "Copyright 2010".
10612
10613 2010-01-08  Ian Lance Taylor  <iant@google.com>
10614
10615         PR 10287
10616         PR 11063
10617         * i386.cc (class Target_i386): Change return type of plt_section
10618         to be non-const.
10619         (class Output_data_plt_i386): Add tls_desc_rel_ field.
10620         (Output_data_plt_i386::Output_data_plt_i386): Initialize
10621         tls_desc_rel_ field.
10622         (Output_data_plt_i386::rel_tls_desc): New function.
10623         (Target_i386::rel_tls_desc_section): New function.
10624         (Target_i386::Scan::local): Rewrite R_386_TLS_GOTDESC handling.
10625         (Target_i386::Scan::global): For R_386_TLS_GOTDESC put
10626         R_386_TLS_DESC reloc in rel_tls_desc_section.
10627         * x86_64.cc (class Target_x86_64): Add tlsdesc_reloc_info_ field.
10628         Define struct Tlsdesc_info.
10629         (Target_x86_64::Target_x86_64): Initialize tlsdesc_reloc_info_.
10630         (Target_x86_64::do_reloc_symbol_index): New function.
10631         (Target_x86_64::add_tlsdesc_info): New function.
10632         (class Output_data_plt_x86_64): Add tlsdesc_rel_ field.
10633         (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize
10634         tlsdesc_rel_ field.
10635         (Output_data_plt_x86_64::rela_plt): Rename from rel_plt.  Change
10636         all callers.
10637         (Output_data_plt_x86_64::rela_tlsdesc): New function.
10638         (Target_x86_64::rela_tlsdesc_section): New function.
10639         (Target_x86_64::Scan::local): Rewrite R_X86_64_GOTPC32_TLSDESC
10640         handling.
10641         (Target_x86_64::Scan::global): For R_X86_64_GOTPC32_TLSDESC put
10642         (Target_x86_64::do_reloc_addend): New function.
10643         R_X86_64_TLSDESC reloc in rela_tlsdesc_section.
10644         * output.h (class Output_reloc) [SHT_REL]: Add new constructor
10645         declarations.  Define TARGET_CODE.  Add arg field to u1_ union.
10646         (Output_reloc::type): New function.
10647         (Output_reloc::is_local_section_symbol): Check for TARGET_CODE.
10648         (Output_reloc::is_target_specific): New function.
10649         (Output_reloc::target_arg): New function.
10650         (class Output_reloc) [SHT_RELA]: Add four new constructors for
10651         absolute relocs and target specific relocs.
10652         (class Output_data_reloc) [SHT_REL]: Add add_absolute and
10653         add_target_specific.
10654         (class Output_data_reloc) [SHT_RELA]: Likewise.
10655         * output.cc (Output_reloc::Output_reloc): Add four new versions
10656         for absolute relocs and target specific relocs.
10657         (Output_reloc::set_needs_dynsym_index): Add TARGET_CODE case.
10658         (Output_reloc::get_symbol_index): Likewise.
10659         (Output_reloc::local_section_offset): Check that local_sym_index_
10660         is not TARGET_CODE or 0.
10661         (Output_reloc::symbol_value): Likewise.
10662         (Output_reloc::write) [SHT_RELA]: Call target for target specific
10663         reloc.
10664         * target.h (class Target): Add reloc_symbol_index and reloc_addend
10665         functions.  Add do_reloc_symbol_index and do_reloc_addend virtual
10666         functions.
10667         * layout.cc (add_target_dynamic_tags): Use output section for
10668         DT_PLTRELSZ and DT_JMPREL.
10669
10670 2010-01-07  Ian Lance Taylor  <iant@google.com>
10671
10672         PR 11061
10673         * output.h (class Output_reloc) [SHT_RELA]: Add is_relative
10674         function.
10675         (class Output_data_reloc_generic): Define.
10676         (class Output_data_reloc_base): Change base class to
10677         Output_data_reloc_generic.  Change add() method to call
10678         bump_relative_reloc_count for a relative reloc.  Remove
10679         sort_relocs_ field.
10680         * output.cc (Output_data_reloc_base::do_write): Change sort_reloc_
10681         to sort_relocs().
10682         * layout.cc (Layout::add_target_dynamic_tags): Change dyn_rel to
10683         Output_data_reloc_generic*.  Add DT_RELCOUNT/DT_RELACOUNT tag if
10684         appropriate.
10685         * layout.h (class Layout): Update declaration.
10686
10687 2010-01-07  Ian Lance Taylor  <iant@google.com>
10688
10689         * output.h (class Output_data): Add const version of
10690         output_section and do_output_section.
10691         (class Output_section_data): Add const version of
10692         do_output_section.
10693         (class Output_section): Likewise.
10694         * layout.cc (Layout::add_target_dynamic_tags): New function.
10695         * layout.h (class Layout): Update declarations.
10696         * arm.cc (Target_arm::do_finalize_sections): Use
10697         add_target_dynamic_tags.
10698         * i386.cc (Target_i386::do_finalize_sections): Likewise.
10699         * powerpc.cc (Target_powerpc::do_finalize_sections): Likewise.
10700         * sparc.cc (Target_sparc::do_finalize_sections): Likewise.
10701         * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
10702
10703 2010-01-07  Ian Lance Taylor  <iant@google.com>
10704
10705         PR 11042
10706         * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Mark the dynamic
10707         object as needed.
10708
10709 2010-01-07  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
10710             Ian Lance Taylor  <iant@google.com>
10711
10712         PR 11019
10713         * object.cc: Instantiate Xindex::initialize_symtab_xindex and
10714         Xindex::read_symtab_xindex.
10715
10716 2010-01-07  Doug Kwan  <dougkwan@google.com>
10717
10718         * arm.cc (Insn_template::Type): New enum value THUMB16_SPECIAL_TYPE.
10719         (Insn_template::thumb16_bcond_insn): New method declaration.
10720         (Insn_template): Fix spelling.
10721         (Stub::thumb16_special): New method declaration.
10722         (Stub::do_write): Define virtual method which was previously pure
10723         virtual.
10724         (Stub::do_thumb16_special): New method declaration.
10725         (Stub::do_fixed_endian_write): New template member.
10726         (Reloc_stub::do_write): Remove.
10727         (Reloc_stub::do_fixed_endian_write): Remove.
10728         (Cortex_a8_stub): New class definition.
10729         (Stub_factory::make_cortex_a8_stub): New method definition.
10730         (Stub_factory::Stub_factory): Add missing static storage class
10731         qualifier for elf32_arm_stub_a8_veneer_blx.
10732
10733 2010-01-07  Ian Lance Taylor  <iant@google.com>
10734
10735         PR 10980
10736         * options.h (class General_options): Add --warn-unresolved-symbols
10737         and --error-unresolved-symbols.
10738         * errors.cc (Errors::undefined_symbol): Implement
10739         --warn-unresolved-symbols.
10740
10741         * options.h (class General_options): Add -z text and -z textoff.
10742         * layout.cc (Layout::finish_dynamic_section): Implement -z text.
10743
10744 2010-01-06  Sriraman Tallam  <tmsriram@google.com>
10745
10746         * gc.h (Garbage_collection::Cident_section_map): New typedef.
10747         (Garbage_collection::cident_sections): New function.
10748         (Garbage_collection::add_cident_section): New function.
10749         (Garbage_collection::cident_sections_): New member.
10750         (gc_process_relocs): Add references to sections whose names are C
10751         identifiers.
10752         * gold.h (cident_section_start_prefix): New constant.
10753         (cident_section_stop_prefix): New constant.
10754         (is_cident): New function.
10755         * layout.cc (Layout::define_section_symbols): Replace string constants
10756         with the newly defined constants.
10757         * object.cc (Sized_relobj::do_layout): Track sections whose names are
10758         C identifiers.
10759         * testsuite/Makefile.am: Add gc_orphan_section_test.
10760         * testsuite/Makefile.in: Regenerate.
10761         * testsuite/gc_orphan_section_test.cc: New file.
10762         * testsuite/gc_orphan_section_test.sh: New file.
10763
10764 2010-01-06  Ian Lance Taylor  <iant@google.com>
10765
10766         PR 10980
10767         * options.h (class General_options): Add --warn-shared-textrel.
10768         * layout.cc (Layout::finish_dynamic_section): Implement
10769         --warn-shared-textrel.
10770
10771         PR 10980
10772         * options.h (class General_options): Add --warn-multiple-gp.
10773
10774 2010-01-06  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
10775
10776         * Makefile.am (incremental_dump_DEPENDENCIES): Remove
10777         $(THREADSLIB) and $(LIBDL).
10778         * Makefile.in: Rebuild.
10779
10780 2010-01-06  Ian Lance Taylor  <iant@google.com>
10781
10782         PR 10980
10783         * options.cc (General_options::parse_section_start): New function.
10784         (General_options::section_start): New function.
10785         (General_options::General_options): Initialize all members.
10786         * options.h: Include <map>
10787         (class General_options): Add --section-start.  Add section_starts_
10788         member.
10789         * layout.cc (Layout::attach_allocated_section_to_segment): If
10790         --section-start was used, set the address of the segment.  Remove
10791         local sort_sections.
10792         (Layout::relaxation_loop_body): If the address of the load segment
10793         has been set by --section-start, don't use it.
10794         * output.h (Output_segment::update_flags_for_output_section): New
10795         function.
10796         * output.cc (Output_segment::add_output_section): Call
10797         update_flags_for_output_section.
10798
10799 2010-01-05  Ian Lance Taylor  <iant@google.com>
10800
10801         PR 10980
10802         * options.h (class General_options): Add --undefined-version.
10803         * script.cc (struct Version_expression): Add was_matched_by_symbol
10804         field.
10805         (Version_script_info::matched_symbol): New function.
10806         (Version_script_info::get_symbol_version_helper): Call
10807         matched_symbol.
10808         (Version_script_info::check_unmatched_names): New function.
10809         * script.h (class Version_script_info): Update declarations.
10810         * gold.cc (queue_middle_tasks): Handle --no-undefined-version.
10811
10812         * options.h (class General_options): Use DEFINE_bool_alias for
10813         allow_multiple_definition.
10814         * resolve.cc (Symbol_table::should_override): Don't test
10815         allow_multiple_definition.
10816
10817         PR 10980
10818         * options.h (class General_options): Add --cref.
10819         * main.cc (main): Print cref table if --cref.  Don't close mapfile
10820         until after printing cref table.
10821         * cref.cc: Include "symtab.h".
10822         (class Cref_inputs): Define Cref_table_compare and Cref_table.
10823         (Cref_table_compare::operator()): New function.
10824         (Cref_inputs::gather_cref): New function.
10825         (filecol): New static const.
10826         (Cref_inputs::print_cref): New function.
10827         (Cref::print_cref): New function.
10828         * cref.h: Include <cstdio>.
10829         (class Cref): Update declarations.
10830         * mapfile.h (Mapfile::file): New function.
10831         * object.h (class Object): Define Symbols.  Declare virtual
10832         do_get_global_symbols.
10833         (Object::get_global_symbols): New function.
10834         * object.cc (Input_objects::add_object): Pass object to cref_ if
10835         --cref.
10836         (Input_objects::archive_start): Likewise.
10837         (Input_objects::archive_stop): Likewise.
10838         (Input_objects::print_cref): New function.
10839         * dynobj.h (Sized_dynobj::do_get_global_symbols): New function.
10840         * dynobj.cc (big_endian>::do_add_symbols): Create symbols_ if
10841         --cref.
10842         * plugin.cc (Sized_pluginobj::do_get_global_symbols): New
10843         function.
10844         * plugin.h (class Sized_pluginobj): Update declarations.
10845
10846 2010-01-05  Ian Lance Taylor  <iant@google.com>
10847
10848         * symtab.cc (Symbol_table::add_from_object): Rename def parameter
10849         to is_default_version.  Rename insdef to insdefault.
10850         (Symbol_table::add_from_relobj): Rename def to is_default_version
10851         and local to is_forced_local.
10852         (Symbol_table::add_from_pluginobj): Likewise.
10853         (Symbol_table::add_from_dynobj): Likewise.
10854         (Symbol_table::define_special_symbol): Rename insdef to
10855         insdefault.
10856
10857 2010-01-04  Ian Lance Taylor  <iant@google.com>
10858
10859         PR 10980
10860         * options.h (class General_options): Add
10861         --allow-multiple-definition and -z muldefs.
10862         * resolve.cc (Symbol_table::should_override): Don't warn about a
10863         multiple symbol definition if --allow-multiple-definition or -z
10864         muldefs.
10865
10866         PR 10980
10867         * options.h (class General_options): Add --add-needed and
10868         --copy-dt-needed-entries.  Tweak --as-needed help entry.
10869         * object.cc (Input_objects::check_dynamic_dependencies): Give an
10870         error if --copy-dt-needed-entries aka --add-needed is used and
10871         would cause a change in behaviour.
10872
10873         PR 10980
10874         * options.h (class General_options): Add -G as a short version of
10875         --shared.  Add no-op options -assert, -g, and -i.
10876
10877 2010-01-04  Sriraman Tallam  <tmsriram@google.com>
10878
10879         * gc.h (gc_process_relocs): Call is_section_foldable_candidate to
10880         check for .text or .gnu.linkonce.t sections.
10881         * icf.cc (Icf::find_identical_sections): Ditto.
10882         Change the detection for mangled function name within the section
10883         name.
10884         * icf.h (is_section_foldable_candidate): New function.
10885
10886 2009-12-30  Ian Lance Taylor  <iant@google.com>
10887
10888         PR 10980
10889         * options.h (class General_options): Permit two dashes with
10890         --retain-symbols-file.
10891
10892 2009-12-30  Ian Lance Taylor  <iant@google.com>
10893
10894         PR 10979
10895         * layout.cc (Layout::relaxation_loop_body): If -Ttext was used,
10896         don't put the file header and segment headers in the text
10897         segment.
10898
10899         PR 10979
10900         * common.cc (Sort_commons::operator()): Stabilize sort when both
10901         entries are NULL.
10902         (Symbol_table::do_allocate_commons_list): When allocating common
10903         symbols, skip a symbol which is no longer common.
10904         * symtab.h (Symbol::is_common): Test whether the symbol comes from
10905         an object before checking its type.
10906         * testsuite/common_test_2.c: New file.
10907         * testsuite/common_test_3.c: New file.
10908         * testsuite/Makefile.am (check_PROGRAMS): Add common_test_2.
10909         (common_test_2_SOURCES, common_test_2_DEPENDENCIES): Define.
10910         (common_test_2_LDFLAGS, common_test_2_LDADD): Define.
10911         (common_test_2_pic.o, common_test_2.so): New targets.
10912         (common_test_3_pic.o, common_test_3.so): New targets.
10913         * testsuite/Makefile.in: Rebuild.
10914
10915         PR 10979
10916         * script.cc (read_input_script): If we see a new SECTIONS clause,
10917         and we have added an input section, give an error.
10918         * layout.h (class Layout): Add have_added_input_section function.
10919         Add have_added_input_section_ field.
10920         * layout.cc (Layout::Layout): Initialize
10921         have_added_input_section_.
10922         (Layout::layout): Set have_added_input_section_.
10923         (Layout::layout_eh_frame): Likewise.
10924
10925 2009-12-30  Ian Lance Taylor  <iant@google.com>
10926
10927         PR 10931
10928         * options.h (class General_options): Add --sort-common option.
10929         * symtab.h (class Symbol_table): Define Sort_commons_order enum.
10930         * common.cc (Sort_common): Add sort_order parameter to
10931         constructor.  Add sort_order_ field.
10932         (Sort_commons::operator): Check sort_order_.
10933         (Symbol_table::allocate_commons): Determine the sort order.
10934         (Symbol_table::do_allocate_commons): Add sort_order parameter.
10935         Change all callers.
10936         (Symbol_table::do_allocate_commons_list): Likewise.
10937
10938 2009-12-30  Ian Lance Taylor  <iant@google.com>
10939
10940         PR 10916
10941         * symtab.cc (Symbol_table::add_from_relobj): When not exporting
10942         symbols from this object, don't change the visibility of an
10943         undefined symbol.
10944         * testsuite/exclude_libs_test_1.c (lib1_ref): New function.
10945
10946 2009-12-30  Ian Lance Taylor  <iant@google.com>
10947
10948         PR 10861
10949         * script.h (class Version_script_info): Define Language enum.
10950         Update declarations.  Define Glob, Exact, and Lookup types.  Add
10951         new fields globals_, locals_, and is_finalized_.
10952         * script.cc: Various formatting fixes.
10953         (class Parser_closure): Change language_stack_ from a vector of
10954         std::string to one of Version_script_info::Language.  Adjust all
10955         uses accordingly.
10956         (class Lazy_demangler): Remove.
10957         (struct Version_expression): Change language from std::string to
10958         Version_script_info::Language.
10959         (Version_script_info::Version_script_info): New function.
10960         (Version_script_info::~Version_script_info): Don't call clear.
10961         (Version_script_info::finalize): New function.
10962         (Version_script_info::build_lookup_tables): New function.
10963         (Version_script_info::build_expression_list_lookup): New
10964         function.
10965         (Version_script_info::get_symbol_version_helper): Rewrite to use
10966         lookup tables.
10967         (Version_script_info::print_expression_list): Adjust to use
10968         Version_script_info::Language.
10969         (script_push_lex_into_version_mode): Check that the version script
10970         has not been finalized.
10971         (version_script_push_lang): Change language string to
10972         Version_script_info::Language.
10973         * options.cc (Command_line::version_script): New function.
10974         * options.h (class General_options): Add finalize_dynamic_list
10975         function.  Change version_script from declaration to definition.
10976         * testsuite/ver_test_4.script: Remove duplicate def of t2_2.
10977         * testsuite/version_script.map: Remove duplicate def of foo.
10978         * testsuite/Makefile.am (ver_matching_def.so): Depend upon
10979         version_script.map.
10980         * testsuite/Makefile.in: Rebuild.
10981
10982 2009-12-30  Ian Lance Taylor  <iant@google.com>
10983
10984         PR 10843
10985         * target-reloc.h (relocate_for_relocatable): When copying a reloc,
10986         if the input symbol index is 0, make the output symbol index 0.
10987
10988 2009-12-30  Ian Lance Taylor  <iant@google.com>
10989
10990         PR 10670
10991         * options.h (class General_options): Add -x/--discard-all.
10992         * object.cc (Sized_relobj::do_count_local_symbols): Handle
10993         --discard-all.  If the local symbol needs a dynamic entry, check
10994         that before handling --discard-locals.
10995
10996 2009-12-30  Ian Lance Taylor  <iant@google.com>
10997
10998         PR 10450
10999         * output.cc (Output_segment::Output_segment): If PT_TLS, set the
11000         flags to PF_R.
11001         (Output_segment::add_output_section): Don't change the flags if
11002         the type is PT_TLS.
11003
11004         PR 10450
11005         * dynobj.cc (Dynobj::create_gnu_hash_table): Add symbols to the
11006         GNU hash table if they need a dynamic value.  Otherwise, don't add
11007         them if they are defined in a dynamic object or are forced local.
11008
11009 2009-12-29  Ian Lance Taylor  <iant@google.com>
11010
11011         PR 10450
11012         * layout.cc (Layout::create_dynamic_symtab): Only set entsize of
11013         .gnu.hash table for a 32-bit target.
11014
11015         PR 10450
11016         * symtab.h (Symbol::needs_dynsym_entry): A symbol in both a
11017         regular and a dynamic object only needs a dynamic symbol table
11018         entry if it is externally visible.
11019
11020         PR 10450
11021         * i386.cc (class Target_i386): Initialize global_offset_table_ in
11022         constructor.  Add global_offset_table_ field.
11023         (Target_i386::got_section): Set global_offset_table_.
11024         (Target_i386::do_finalize_sections): Set global_offset_table_
11025         size.
11026         * x86_64.cc (class Target_x86_64): Initialize global_offset_table_
11027         in constructor.  Add global_offset_table_ field.
11028         (Target_x86_64::got_section): Set global_offset_table_.
11029         (Target_x86_64::do_finalize_sections): Set global_offset_table_
11030         size.
11031
11032         * layout.cc (Layout::Layout): Initialize increase_relro_.
11033         (Layout::get_output_section): Add is_relro, is_last_relro, and
11034         is_first_non_relro parameters.  Change all callers.
11035         (Layout::choose_output_section): Likewise.
11036         (Layout::add_output_section_data): Likewise.
11037         (Layout::make_output_section): Likewise.
11038         (Layout::set_segment_offsets): Clear increase_relro when using a
11039         linker script.
11040         * layout.h (class Layout): Add increase_relro method.  Add
11041         increase_relro_ field.  Update declarations.
11042         * output.cc (Output_section::Output_section): Initialize
11043         is_last_relro_ and is_first_non_relro_.
11044         (Output_segment::add_output_section): Group relro sections is
11045         do_sort is true.  Handle is_last_relro and is_first_non_relro.
11046         (Output_segment::maximum_alignment): Remove relro handling.
11047         (Output_segment::set_section_addresses): Add increase_relro
11048         parameter.  Change all callers.  Add initial alignment to align
11049         relro sections on separate page.  Remove old relro handling.
11050         (Output_segment::set_section_list_addresses): Remove in_relro
11051         parameter.  Change all callers.
11052         (Output_segment::set_offset): Add increase parameter.  Change all
11053         callers.  Remove old relro handling.
11054         * output.h (class Output_section): Add new methods: is_last_relro,
11055         set_is_last_relro, is_first_non_relro, set_is_first_non_relro.
11056         Add is_last_relro_ and is_first_non_relro_ fields.
11057         * i386.cc (Target_i386::got_section): Don't call set_is_relro.
11058         Create separate .got.plt section.  Call increase_relro.
11059         * x86_64.cc (Target_x86_64::got_section): Likewise.
11060         * testsuite/relro_script_test.t: Add .got.plt.
11061
11062         PR 10450
11063         * layout.cc (Layout::Layout): Initialize dynamic_symbol_ field.
11064         (Layout::create_initial_dynamic_sections): Set dynamic_symbol_.
11065         (Layout::finalize): Call set_dynamic_symbol_size.
11066         (Layout::set_dynamic_symbol_size): New function.
11067         * layout.h (class Layout): Add dynamic_symbol_ field.  Declare
11068         set_dynamic_symbol_size.
11069
11070         PR 10450
11071         * output.h (class Output_section): Add is_entsize_zero_ field.
11072         * output.cc (Output_section::Output_section): Initialize
11073         is_entsize_zero_.
11074         (Output_section::set_entsize): If two different entsizes are
11075         requested, force it to zero.
11076         (Output_section::add_input_section): Set flags for .debug_str
11077         before updating section flags.  Set entsize.
11078         (Output_section::update_flags_for_input_section): Set SHF_MERGE
11079         and SHF_STRING if all input sections have those flags.
11080
11081 2009-12-29   Rafael Espindola  <espindola@google.com>
11082
11083         * main.cc (main): Fix the sys time reporting.
11084         * workqueue.cc (Workqueue::find_and_run_task): Fix the sys time
11085         reporting.
11086
11087 2009-12-29  Sriraman Tallam  <tmsriram@google.com>
11088
11089         * options.cc (General_options::parse_version): Allow -v to exit
11090         without an error if there is nothing to link.
11091
11092 2009-12-29  Ian Lance Taylor  <iant@google.com>
11093
11094         * configure.ac: Set the MCMODEL_MEDIUM conditional to false if
11095         using a version of gcc before 4.1.
11096         * configure: Rebuild.
11097
11098 2009-12-28  Chris Demetriou  <cgd@google.com>
11099
11100         * attributes.cc (Output_attributes_section_data::do_write): Use
11101         std::vector::front rather than std::vector::data.
11102
11103 2009-12-28  Ian Lance Taylor  <iant@google.com>
11104
11105         * symtab.h (class Symbol_table): Add enum Defined.
11106         * resolve.cc (Symbol_table::should_override): Add defined
11107         parameter.  Change all callers.  Test whether object is NULL
11108         before calling a method on it.
11109         (Symbol_table::report_resolve_problem): Add defined parameter.
11110         Change all callers.
11111         (Symbol_table::should_override_with_special): Likewise.
11112         * symtab.cc (Symbol_table::define_in_output_data): Add defined
11113         parameter.  Change all callers.
11114         (Symbol_table::do_define_in_output_data): Likewise.
11115         (Symbol_table::define_in_output_segment): Likewise.
11116         (Symbol_table::do_define_in_output_segment): Likewise.
11117         (Symbol_table::define_as_constant): Likewise.
11118         (Symbol_table::do_define_as_constant): Likewise.
11119         * script.h (class Symbol_assignment): Add is_defsym parameter to
11120         constructor; change all callers.
11121         * script.cc (Script_options::add_symbol_assignment): Add is_defsym
11122         parameter.  Change all callers.  Add is_defsym_ field.
11123         (class Parser_closure): Add parsing_defsym parameter to
11124         constructor; change all callers.  Add parsing_defsym accessor
11125         function.  Add parsing_defsym_ field.
11126
11127 2009-12-28  Ian Lance Taylor  <iant@google.com>
11128
11129         * gold.cc (queue_middle_tasks): Fix formatting.
11130         * object.cc (Relobj::is_section_name_included): Likewise.
11131
11132 2009-12-23  Ian Lance Taylor  <iant@google.com>
11133
11134         * i386.cc (Target_i386::do_calls_non_split): Recognize
11135         -fsplit-stack prologue for a function with a static chain.
11136         * x86_64.cc (Target_x86_64::do_calls_non_split): Recognize
11137         -fsplit-stack prologue when using %r11.
11138
11139 2009-12-21  Sriraman Tallam  <tmsriram@google.com>
11140
11141         * options.cc (General_options::parse_version): Make -v continue and do
11142         the link like GNU ld does.
11143
11144 2009-12-17  Rafael Avila de Espindola  <espindola@google.com>
11145
11146         * Makefile.am (CCFILES): Add timer.cc.
11147         (HFILES): Add timer.h.
11148         * configure.ac: Check for sysconf and times.
11149         * main.cc: include timer.h.
11150         (main): Use Timer instead of get_run_time.
11151         * timer.cc: New.
11152         * timer.h: New.
11153         * workqueue.cc: include timer.h.
11154         (Workqueue::find_and_run_task):
11155         Report user, sys and wall time.
11156         * Makefile.in: Regenerate.
11157         * config.in: Regenerate.
11158         * configure: Regenerate.
11159
11160 2009-12-16  Doug Kwan  <dougkwan@google.com>
11161
11162         * arm.cc (Arm_relobj::scan_sections_for_stubs): Exclude ICF-eliminated
11163         sections.
11164         * object.cc (Sized_relobj::do_finalize_local_symbols): Handle
11165         relaxed input sections.
11166         * output.cc (Output_section::find_relaxed_input_section): Change
11167         return type to Output_relaxed_input_section pointer.  Adjust code
11168         for new type of relaxed_input_section_map_.
11169         * output.h (Output_section::find_relaxed_input_section): Change
11170         return type to Output_relaxed_input_section pointer.
11171         (Output_section::Output_relaxed_input_section_by_input_section_map):
11172         New type.
11173         (Output_section::relaxed_input_section_map_): Change type to
11174         Output_section::Output_relaxed_input_section_by_input_section_map.
11175         * symtab.cc (Symbol_table::compute_final_value): Handle relaxed
11176         input section.
11177
11178 2009-12-15  Ian Lance Taylor  <iant@google.com>
11179
11180         * layout.cc (Layout::create_shstrtab): Only write out after input
11181         sections if we are compressing debug sections.
11182
11183 2009-12-15  Ian Lance Taylor  <iant@google.com>
11184
11185         * archive.cc (Archive::add_symbols): Only look up a symbol without
11186         a version if there is, in fact, a version.
11187
11188 2009-12-14  Ian Lance Taylor  <iant@google.com>
11189
11190         Revert -Wshadow changes, all changes from:
11191         2009-12-11  Doug Kwan  <dougkwan@google.com>
11192         2009-12-11  Nick Clifton  <nickc@redhat.com>
11193         * configure.ac: Remove -Wshadow when setting WARN_CXXFLAGS.
11194
11195 2009-12-11  Doug Kwan  <dougkwan@google.com>
11196
11197         * arm.cc (Target_arm::do_finalize_sections): Fix build breakage
11198         due to -Wshadow.
11199         * attributes.cc (Object_attribute::size): Ditto.
11200         (Attributes_section_data::size): Ditto.
11201         (Attributes_section_data::Attributes_section_data): Ditto.
11202         (Output_attributes_section_data::do_write): Ditto.
11203         * attributes.h (Object_attribute::set_type): Ditto.
11204         * testsuite/tls_test_main.cc (safe_lock, safe_unlock): Ditto.
11205
11206 2009-12-11  Nick Clifton  <nickc@redhat.com>
11207
11208         * archive.cc: Fix shadowed variable warnings.
11209         * arm.cc: Likewise.
11210         * compressed_output.cc: Likewise.
11211         * compressed_output.h: Likewise.
11212         * configure: Likewise.
11213         * dwarf_reader.cc: Likewise.
11214         * dynobj.cc: Likewise.
11215         * dynobj.h: Likewise.
11216         * ehframe.cc: Likewise.
11217         * ehframe.h: Likewise.
11218         * errors.cc: Likewise.
11219         * expression.cc: Likewise.
11220         * fileread.cc: Likewise.
11221         * fileread.h: Likewise.
11222         * freebsd.h: Likewise.
11223         * i386.cc: Likewise.
11224         * icf.cc: Likewise.
11225         * incremental.h: Likewise.
11226         * layout.cc: Likewise.
11227         * layout.h: Likewise.
11228         * mapfile.cc: Likewise.
11229         * merge.cc: Likewise.
11230         * merge.h: Likewise.
11231         * object.cc: Likewise.
11232         * object.h: Likewise.
11233         * options.h: Likewise.
11234         * output.cc: Likewise.
11235         * output.h: Likewise.
11236         * parameters.cc: Likewise.
11237         * plugin.cc: Likewise.
11238         * powerpc.cc: Likewise.
11239         * reduced_debug_output.cc: Likewise.
11240         * reduced_debug_output.h: Likewise.
11241         * reloc.cc: Likewise.
11242         * reloc.h: Likewise.
11243         * resolve.cc: Likewise.
11244         * script-sections.cc: Likewise.
11245         * script.cc: Likewise.
11246         * script.h: Likewise.
11247         * sparc.cc: Likewise.
11248         * symtab.cc: Likewise.
11249         * symtab.h: Likewise.
11250         * target-select.cc: Likewise.
11251         * target-select.h: Likewise.
11252         * token.h: Likewise.
11253         * workqueue.cc: Likewise.
11254         * workqueue.h: Likewise.
11255         * x86_64.cc: Likewise.
11256
11257 2009-12-10  Doug Kwan  <dougkwan@google.com>
11258
11259         * arm.cc (attributes.h): New include.
11260         (Arm_relobj::Arm_relobj): Initialize attributes_section_data_.
11261         (Arm_relobj::~Arm_relobj): Delete object pointed by
11262         attributes_section_data_.
11263         (Arm_relobj::attributes_section_data): New method definition.
11264         (Arm_relobj::attributes_section_data_): New data member declaration.
11265         (Arm_dynobj::Arm_dynobj): Initialize attributes_section_data_.
11266         (Arm_dynobj::~Arm_dynobj): Delete object pointed by
11267         attributes_section_data_.
11268         (Arm_dynobj::attributes_section_data): New method definition.
11269         (Arm_dynobj::attributes_section_data_): New data member declaration.
11270         (Target_arm::Target_arm): Initialize attributes_section_data_.  Change
11271         initialization value of may_use_blx_ to false.
11272         (Target_arm::using_thumb2, Target_arm::using_thumb_only,
11273         Target_arm::may_use_arm_nop, Target_arm::may_use_thumb2_nop): Use
11274         object attributes to compute results instead of hard-coding.
11275         (Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order,
11276         Target_arm::get_secondary_compatible_arch,
11277         Target_arm::set_secondary_compatible_arch
11278         Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name,
11279         Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes):
11280         New method declarations.
11281         (Target_arm::get_aeabi_object_attribute): New method definition.
11282         (Target_arm::attributes_section_data_): New data member declaration.
11283         (read_arm_attributes_section): New template definition.
11284         (Arm_relobj::do_read_symbols): Read attributes section if it exists.
11285         (Arm_dynobj::do_read_symbols): Ditto.
11286         (Target_arm::do_finalize_sections): Merge attributes sections from
11287         input.  Check for BLX use after attributes section merging.
11288         Fix __exidx_start and __exidx_end visibility.  Create an
11289         .ARM.attributes section if necessary.
11290         (Target_arm::get_secondary_compatible_arch,
11291         Target_arm::set_secondary_compatible_arch,
11292         Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name,
11293         Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes,
11294         Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order):
11295         New method definitions.
11296
11297 2009-12-09  Ian Lance Taylor  <iant@google.com>
11298
11299         * plugin.cc (Plugin::load): Don't cast from void* to a function
11300         pointer.
11301
11302 2009-12-09  Ian Lance Taylor  <iant@google.com>
11303
11304         * dynobj.cc (Sized_dynobj::do_read_symbols): Clear version
11305         information fields.
11306
11307 2009-12-09  H.J. Lu  <hongjiu.lu@intel.com>
11308
11309         * testsuite/Makefile.am (two_file_shared_1_pic_2_test_DEPENDENCIES):
11310         Replace two_file_shared_1.so with two_file_shared_2.so.
11311         * testsuite/Makefile.in: Regenerated.
11312
11313 2009-12-08  Doug Kwan  <dougkwan@google.com>
11314
11315         * Makefile.am (CCFILES): Add attributes.cc and int_encoding.cc.
11316         (HFILES): Add attributes.h and int_encoding.h.
11317         * Makefile.in: Regenerate.
11318         * dwarf_reader.cc (read_unsigned_LEB_128, read_signed_LEB_128): Move
11319         function definitions to int_encoding.cc
11320         * dwarf_reader.h (read_unsigned_LEB_128, read_signed_LEB_128): Move
11321         prototypes to int_encoding.h
11322         * reduced_debug_output.cc (int_encoding.h): New include.
11323         (write_unsigned_LEB_128, get_length_as_unsigned_LEB_128): Move
11324         function definitions to int_encoding.cc
11325         (insert_into_vector, read_from_pointer): Move template definitions to
11326         int_encoding.h
11327         * attributes.cc: New file.
11328         * attributes.h: New file.
11329         * int_encoding.cc: New file.
11330         * int_encoding.h: New file.
11331
11332 2009-12-07  Rafael Avila de Espindola  <espindola@google.com>
11333
11334         PR gold/11055
11335         * incremental-dump.cc (dump_incremental_inputs): New.
11336         (main): Use dump_incremental_inputs.
11337
11338 2009-12-07  H.J. Lu  <hongjiu.lu@intel.com>
11339
11340         PR gold/10893
11341         * i386.cc (Target_i386::Scan::globa): Use is_func instead of
11342         checking elfcpp::STT_FUNC.
11343         (Target_i386::Relocate::relocate): Likewise.
11344         * x86_64.cc (Target_x86_64::Scan::global): Likewise.
11345
11346         * symtab.cc (Symbol_table::sized_write_symbol): Turn IFUNC
11347         symbols from shared libraries into normal FUNC symbols.
11348
11349         * symtab.h (Symbol): Add is_func and use it.
11350
11351 2009-12-05  Doug Kwan  <dougkwan@google.com>
11352
11353         * arm.cc (Target_arm::arm_info): Initialize new fields
11354         attributes_section and attributes_vendor.
11355         * i386.cc (Target_i386::i386_info): Same.
11356         * object.cc (Sized_relobj::do_layout): Skip attribute section.
11357         * gold/powerpc.cc (Target_powerpc::powerpc_info): Initialize new
11358         fields attributes_section and attributes_vendor.
11359         * sparc.cc (Target_sparc::sparc_info): Same.
11360         * target.h (Target::attributes_section, Target::attributes_vendor,
11361         Target::is_attributes_section, Target::attribute_arg_type,
11362         Target::attributes_order): New method definitions.
11363         (Target::Target_info::attributes_section,
11364         Target::Target_info::attributes_vendor): New fields.
11365         (Target::do_attribute_arg_type, Target::do_attributes_order): New
11366         virtual method definitions.
11367         * x86_64.cc (Target_x86_64::x86_64_info): Initialize new fields
11368         attributes_section and attributes_vendor.
11369         * testsuite/testfile.cc (Target_test::test_target_info): Same.
11370
11371 2009-12-05  Doug Kwan  <dougkwan@google.com>
11372
11373         * arm.cc: Update comments about interworking and stub generation.
11374         (Target_arm::Relocate::reloc_is_non_pic): Update list of relocations
11375         considered as non-PIC.
11376         (Arm_relocate_functions::base_abs): Fix formatting.
11377         (Arm_relocate_functions::got_prel): Fix comment.  Change interface
11378         of function to use GOT entry address instead of offset.
11379         (Target_arm::Scan::global): Issue an error if a symbol would need a
11380         PLT does not get one because it is untyped.  Remove code to create
11381         dynamic symbols for relative branches.
11382         (Target_arm::Relocate::relocate: Use 0 instead of false since function
11383         takes unsigned integer instead of boolean.
11384
11385 2009-12-05  H.J. Lu  <hongjiu.lu@intel.com>
11386
11387         * testsuite/Makefile.am (constructor_test_LDADD): New. Empty.
11388         (two_file_test_LDADD): Likewise.
11389         (common_test_1_LDADD): Likewise.
11390         (exception_test_LDADD) Likewise.
11391         (weak_test_LDADD): Likewise.
11392         (many_sections_test_LDADD): Likewise.
11393         (initpri1_LDADD): Likewise.
11394         (script_test_1_LDADD): Likewise.
11395         (script_test_2_LDADD): Likewise.
11396         (justsyms_LDADD): Likewise.
11397         (binary_test_LDADD): Likewise.
11398         (large_LDADD): Likewise.
11399         * testsuite/Makefile.in: Regenerated.
11400
11401 2009-12-04  H.J. Lu  <hongjiu.lu@intel.com>
11402
11403         * resolve.cc (symbol_to_bits): Treat STB_GNU_UNIQUE as STB_GLOBAL.
11404         (Symbol_table::override_with_special): Likewise.
11405         (Symbol_table::add_from_object): Likewise.
11406
11407 2009-12-04  Rafael Avila de Espindola  <espindola@google.com>
11408
11409         * incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
11410         Don't set the data_offset twice.
11411
11412 2009-12-04  Rafael Avila de Espindola  <espindola@google.com>
11413
11414         * testsuite/Makefile.in: Regenerate.
11415
11416 2009-12-03  Doug Kwan  <dougkwan@google.com>
11417
11418         * arm.cc: Remove comment about missing .ARM.exidx section symbols.
11419         (Target_arm::do_finalize_sections): Add parameter for symbol table
11420         pointer.  Add __exidx_start and __exidx_end symbols as appropriate.
11421         * i386.cc (Target_i386::do_finalize_sections): Add an additional
11422         parameter for symbol table pointer.
11423         * layout.cc (Layout::finalize): Call Target::finalize_sections with
11424         an additional parameter for a pointer to symbol table.
11425         * powerpc.cc (Target_powerpc::do_finalize_sections): Add an additional
11426         parameter for a symbol table pointer.
11427         * sparc.cc (Target_sparc::do_finalize_sections): Ditto.
11428         * target.h (Target::finalize_sections, Target::do_finalize_sections):
11429         Ditto.
11430         * x86_64.cc (Target_x86_64::do_finalize_sections): Add an additional
11431         parameter for a symbol table pointer.
11432
11433 2009-12-03  Rafael Avila de Espindola  <espindola@google.com>
11434
11435         * incremental.cc (Incremental_inputs_header)
11436         (Incremental_inputs_header_write, Incremental_inputs_entry)
11437         (Incremental_inputs_entry_write): Move ...
11438         * incremental.h (Incremental_inputs_header)
11439         (Incremental_inputs_header_write, Incremental_inputs_entry)
11440         (Incremental_inputs_entry_write): here.
11441
11442 2009-12-02  Rafael Avila de Espindola  <espindola@google.com>
11443
11444         * incremental.cc (make_sized_incremental_binary): Set the target.
11445         Error if it is incompatible.
11446         * output.h (Output_file): Add filename method.
11447
11448 2009-12-02  Rafael Avila de Espindola  <espindola@google.com>
11449
11450         * incremental.cc (Incremental_inputs_entry): Remove unused argument
11451         from the get_* methods.
11452
11453 2009-12-02  Rafael Avila de Espindola  <espindola@google.com>
11454
11455         * incremental-dump.cc (main): Check that the offeset of a script is 0.
11456         * incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
11457         Write 0 for the data_offset of scripts.
11458
11459 2009-12-02  Rafael Avila de Espindola  <espindola@google.com>
11460
11461         * testsuite/Makefile.am: Add the incremental_test.sh test.
11462         * testsuite/incremental_test.sh: New.
11463         * testsuite/incremental_test_1.c: New.
11464         * testsuite/incremental_test_2.c: New.
11465
11466 2009-12-01  Rafael Avila de Espindola  <espindola@google.com>
11467
11468         * incremental-dump.cc (main): Fix typos.
11469
11470 2009-11-27  Rafael Avila de Espindola  <espindola@google.com>
11471
11472         PR gold/11025
11473         * incremental-dump.cc (main): Use llu to print 64 bit values.
11474
11475 2009-11-26  Per Øyvind Karlsen <peroyvind@mandriva.org>
11476             H.J. Lu  <hongjiu.lu@intel.com>
11477
11478         * Makefile.am (incremental_dump_DEPENDENCIES): Add $(THREADSLIB)
11479         $(LIBDL).
11480         (incremental_dump_LDADD): Likewise.
11481         * Makefile.in: Regenerated.
11482
11483 2009-11-25  Doug Kwan  <dougkwan@google.com>
11484
11485         Revert:
11486
11487         2009-11-25  Doug Kwan  <dougkwan@google.com>
11488
11489                 * arm.cc (Target_arm::Target_arm): Move method definition
11490                 outside of class definition.  Add code to handle
11491                 --target1-rel, --target1-abs and --target2= options.
11492                 (Target_arm::get_reloc_reloc_type): Change method to be
11493                 non-static and const.
11494                 (Target_arm::target1_is_rel_, Target_arm::target2_reloc_):
11495                 New data member declaration.
11496                 (Target_arm::Scan::local, Target_arm::Scan::global,
11497                 Target_arm::Relocate::relocate,
11498                 Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
11499                 Adjust call to Target_arm::get_real_reloc_type.
11500                 (Target_arm::get_real_reloc_type): Use command line options
11501                 to determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
11502                 * options.h (--target1-rel, --target1-abs, --target2): New
11503                 ARM-only options.
11504
11505 2009-11-25  Doug Kwan  <dougkwan@google.com>
11506
11507         * arm.cc (Target_arm::Target_arm): Move method definition outside of
11508         class definition.  Add code to handle --target1-rel, --target1-abs
11509         and --target2= options.
11510         (Target_arm::get_reloc_reloc_type): Change method to be non-static
11511         and const.
11512         (Target_arm::target1_is_rel_, Target_arm::target2_reloc_): New data
11513         member declaration.
11514         (Target_arm::Scan::local, Target_arm::Scan::global,
11515         Target_arm::Relocate::relocate,
11516         Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Adjust
11517         call to Target_arm::get_real_reloc_type.
11518         (Target_arm::get_real_reloc_type): Use command line options to
11519         determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
11520         * options.h (--target1-rel, --target1-abs, --target2): New ARM-only
11521         options.
11522
11523 2009-11-25  Doug Kwan  <dougkwan@google.com>
11524
11525         * arm.cc (Target_arm::may_use_thumb2_nop): New method definition.
11526         (Arm_relocate_functions::thumb_branch_common): New metod declaration.
11527         (Arm_relocate_functions::abs12, Arm_relocate_functions::abs16): Fix
11528         formatting.
11529         (Arm_relocate_functions::thm_call): Replace body with a call to
11530         Arm_relocate_functions::thumb_branch_common.
11531         (Arm_relocate_functions::thm_jump24,
11532         Arm_relocate_functions::thm_xpc22): New method definitions.
11533         (Arm_relocate_functions::thumb_branch_common): New method definition.
11534         (Reloc_stub::stbu_type_for_reloc): Fix incorrect uses of bit-wise-or
11535         operator.
11536         (Target_arm::Relocate::relocate): Adjust call to thm_call.
11537         Add code to handle R_ARM_THM_XPC22 and R_ARM_THM_JUMP24.
11538
11539 2009-11-24  Rafael Avila de Espindola  <espindola@google.com>
11540
11541         * Makefile.am: Build incremental-dump
11542         * Makefile.in: Regenerate.
11543         * incremental-dump.cc: New.
11544         * incremental.cc (Incremental_inputs_header_data,
11545         Incremental_inputs_entry_data): Move to incremental.h
11546         * incremental.h: (Incremental_inputs_header_data,
11547         Incremental_inputs_entry_data): Move from incremental.cc
11548
11549 2009-11-24  Rafael Avila de Espindola  <espindola@google.com>
11550
11551         * incremental.cc (Incremental_inputs_header,
11552         Incremental_inputs_header_write, Incremental_inputs_entry,
11553         Incremental_inputs_entry_write): Add a typedef with the data type.
11554
11555 2009-11-24  Rafael Avila de Espindola  <espindola@google.com>
11556
11557         * incremental.cc (Incremental_inputs_header,
11558         Incremental_inputs_header_write, Incremental_inputs_entry,
11559         Incremental_inputs_entry_write): Update comment about which
11560         type has the filed descriptions.
11561
11562 2009-11-15  Doug Kwan  <dougkwan@google.com>
11563
11564         * arm.cc (Target_arm::may_use_arm_nop): New method definition.
11565         (Arm_relocate_functions::arm_branch_common): Change method defintion
11566         in class definition to a method declaration and update list of formal
11567         parameters.
11568         (Arm_relocate_functions::plt32, Arm_relocate_functions::call,
11569         Arm_relocation_functions::jump24): Adjust call to
11570         Arm_relocate_functions::arm_branch_common.  Update list of formal
11571         parameters.
11572         (Arm_relocate_functions::xpc25): New method definition.
11573         (Arm_relocate_functions::arm_branch_common): Move method defintion
11574         out from class definition.  Use stubs for mode-switching and extending
11575         branch ranges.
11576         (Target_arm::Relocate::relocate): Handle weakly-undefined symbols
11577         specially.  Change code to enable use of stubs in ARM branches.
11578
11579 2009-11-10  Doug Kwan  <dougkwan@google.com>
11580
11581         * arm.cc (Arm_relobj::do_relocate_sections): Remove options parameter
11582         in method declaration.
11583         (Target_arm::relocate_stub): New method declaration.
11584         (Target_arm::default_target): Change to return a pointer instead of
11585         a const reference.
11586         (Reloc_stub::stub_type_for_reloc): Adjust for the change in
11587         Target_arm::default_target.
11588         (Arm_Relobj::do_relocate_sections): Remove options paramater in
11589         method definition.
11590         (Target_arm::relocate_section): Adjust view.
11591         (Target_arm::relocate_stub): New method definition.
11592
11593 2009-11-10  Doug Kwan  <dougkwan@google.com>
11594
11595         * i386.cc (Target_i386::do_calls_non_split): Add a cast to avoid
11596         a format warning.
11597         * incremental.cc (open_incremental_binary): Initialized local
11598         variables to avoid warnings.
11599         * object.cc (make_elf_object): Ditto.
11600         * x86_64.cc (Target_x86_64::do_calls_non_split): Add a cast to avoid
11601         a format warning.
11602
11603 009-11-09  H.J. Lu  <hongjiu.lu@intel.com>
11604
11605         PR gold/10930
11606         * testsuite/plugin_test.c: Include "config.h".
11607
11608 2009-11-09  Doug Kwan  <dougkwan@google.com>
11609
11610         * arm.cc (Target_arm::fake_relnum_for_stubs): New constant.
11611         (arm_symbol_value): Remove.
11612         (Arm_relocate_functions::arm_branch_common,
11613         Arm_relocate_functions::abs8, Arm_relocate_functions::thm_abs5,
11614         Arm_relocate_functions::abs12, Arm_relocate_functions::abs16,
11615         Arm_relocate_functions::abs32, Arm_relocate_functions::rel32,
11616         Arm_relocate_functions::thm_call, Arm_relocate_functions::plt32,
11617         Arm_relocate_functions::call, Arm_relocate_functions::jump24,
11618         Arm_relocate_functions::prel31, Arm_relocate_functions::mov_abs_nc,
11619         Arm_relocate_functions::movt_abs, Arm_relocate_functions::movw_abs_nc,
11620         Arm_relocate_functions::thm_mobw_abs_nc,
11621         Arm_relocate_functions::thm_mov_abs,
11622         Arm_relocate_functions::movw_prel_nc,
11623         Arm_relocate_functions::thm_movt_abs,
11624         Arm_relocate_functions::movt_prel,
11625         Arm_relocate_functions::thm_movw_prel_nc,
11626         Arm_relocate_functions::thm_movt_prel): Adjust callers of the above.
11627         (Target_arm::Relocate::relocate): Only decompose address into two
11628         parts if relocation type uses the thumb-bit and pass the actual
11629         bit instead of a flag indicating that the thumb-bit is used.  Adjust
11630         calls to methods in Arm_relocate_functions for this change.
11631
11632 2009-11-08  Ian Lance Taylor  <iant@google.com>
11633
11634         PR 10925
11635         * reloc.cc: Instantiate
11636         Sized_relobj::initialize_input_to_output_maps and
11637         Sized_relobj:free_input_to_output_maps.
11638
11639 2009-11-06  Ian Lance Taylor  <iant@google.com>
11640
11641         PR 10876
11642         * defstd.cc (in_segment): Set only_if_ref true for "end".
11643
11644 2009-11-06  Doug Kwan  <dougkwan@google.com>
11645
11646         * arm.cc (class Reloc_stub): Correct a comment.
11647         (Target_arm::Target_arm): Initialize arm_input_section_map_.
11648         (Target_arm::scan_section_for_stubs): New method declaration.
11649         (Target_arm::do_make_elf_object, Target_arm::do_make_output_section):
11650         Change methods from private to protected.
11651         (Target_arm::do_may_relax): New method definition.
11652         (Target_arm::do_relax, Target_arm::group_sections,
11653         Target_arm::scan_reloc_for_stub,
11654         Target_arm::scan_reloc_section_for_stubs): New method declarations.
11655         (Target_arm::arm_input_section_map_): New data member declaration.
11656         (Target_arm::scan_reloc_for_stub,
11657         Target_arm::scan_reloc_section_for_stubs,
11658         Target_arm::scan_section_for_stubs, Target_arm::group_sections,
11659         Target_arm::do_relax): New method definitions.
11660
11661 2009-11-06  Mikolaj Zalewski  <mikolaj@google.com>
11662
11663         * configure.ac: Check for (struct stat)::st_mtim
11664         * fileread.cc (File_read::get_mtime): Use st_mtim if available.
11665         * config.in: Regenerate.
11666         * configure: Regenerate.
11667
11668 2009-11-05  Ian Lance Taylor  <iant@google.com>
11669
11670         PR 10910
11671         * output.cc (Output_segment::add_output_section): Add missing
11672         return statement.
11673
11674 2009-11-04  Ian Lance Taylor  <iant@google.com>
11675
11676         PR 10880
11677         * object.h (class Object): Add is_needed and set_is_needed
11678         methods.  Add is_needed_ field.  Make bool fields into bitfields.
11679         * symtab.cc (Symbol_table::set_dynsym_indexes): If a symbol is
11680         defined in a dynamic object and referenced by a regular object,
11681         set is_needed for the dynamic object.
11682         * layout.cc (Layout::finish_dynamic_section): Don't add DT_NEEDED
11683         if the file is marked with as_needed and it is not needed.
11684
11685 2009-11-04  Ian Lance Taylor  <iant@google.com>
11686
11687         PR 10887
11688         * arm.cc (Target_arm::do_finalize_sections): Don't add dynamic
11689         tags if data is discarded by linker script.
11690         * i386.cc (Target_i386::do_finalize_sections): Likewise.
11691         * powerpc.cc (Target_powerpc::do_finalize_sections): Likewise.
11692         * sparc.cc (Target_sparc::do_finalize_sections): Likewise.
11693         * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
11694
11695 2009-11-04  Ian Lance Taylor  <iant@google.com>
11696
11697         * layout.cc (Layout::get_output_section): Add is_interp and
11698         is_dynamic_linker_section parameters.  Change all callers.
11699         (Layout::choose_output_section): Likewise.
11700         (Layout::make_output_section): Likewise.
11701         (Layout::add_output_section_data): Add is_dynamic_linker_section
11702         parameter.  Change all callers.
11703         * layout.h (class Layout): Update declarations.
11704         * output.h (class Output_section): Add is_interp, set_is_interp,
11705         is_dynamic_linker_section, set_is_dynamic_linker_section methods.
11706         Add is_interp_, is_dynamic_linker_section_ fields.  Change
11707         generate_code_fills_at_write_ to a bitfield.
11708         * output.cc (Output_section::Output_sections): Initialize new
11709         fields.
11710         (Output_segment::add_output_section): Add do_sort parameter.
11711         Change all callers.
11712
11713 2009-11-03  Ian Lance Taylor  <iant@google.com>
11714
11715         PR 10860
11716         * options.h (class General_options): Add --warn-common.
11717         * resolve.cc (Symbol_table::resolve): Handle --warn-common when
11718         merging two common symbols.
11719         (Symbol_table::should_override): Handle --warn-common when merging
11720         a common symbol with a defined symbol.  Use report_resolve_problem
11721         for multiple definitions.
11722         (Symbol_table::report_resolve_problem): New function.
11723         * symtab.h (class Symbol_table): Declare report_resolve_problem.
11724
11725 2009-11-03  Doug Kwan  <dougkwan@google.com>
11726
11727         * arm.cc (Target_arm::Target_arm): Initialize stub_tables_ and
11728         stub_factory_.
11729         (Target_arm::stub_factory): New method definition.
11730         (Target_arm::new_arm_input_section,
11731         Target_arm::find_arm_input_section, Target_arm::new_stub_table,
11732         Target_arm::reloc_uses_thumb_bit): New method declarations.
11733         (Target_arm::Stub_table_list, Target_arm::Arm_input_section_map):
11734         New type definitions.
11735         (Target_arm::stub_tables_, Target_arm::stub_factory_): New data
11736         member declarations.
11737         (Target_arm::reloc_uses_thumb_bit, Target_arm::new_arm_input_section,
11738         Target_arm::find_arm_input_section, Target_arm::new_stub_table):
11739         New method definitions.
11740
11741 2009-11-03  Ian Lance Taylor  <iant@google.com>
11742
11743         * options.h (class General_options): Add --warn_constructors.
11744
11745 2009-11-03  Ian Lance Taylor  <iant@google.com>
11746
11747         PR 10893
11748         * defstd.cc (in_section): Add entries for __rel_iplt_start,
11749         __rel_iplt_end, __rela_iplt_start, __rela_iplt_end, and __stack.
11750
11751 2009-11-03  Ian Lance Taylor  <iant@google.com>
11752
11753         PR 10895
11754         * po/Make-in ($(srcdir)/$(PACKAGE).pot): Pass -C and
11755         --msgid-bugs-address.
11756         (install-pdf): New target.
11757         (install-data_yes): Look up one directory to find mkinstalldirs.
11758
11759 2009-11-03  H.J. Lu  <hongjiu.lu@intel.com>
11760
11761         * po/Make-in (.po.gmo): Don't generate .gmo files in source
11762         tree.
11763
11764 2009-10-30  Doug Kwan  <dougkwan@google.com>
11765
11766         * arm.cc (Stub_addend_reader): Fix bug in previouls check-in.
11767
11768 2009-10-30  Doug Kwan  <dougkwan@google.com>
11769
11770         * arm.cc (Stub_addend_reader): New struct template definition
11771         and partial specializations.
11772         (Stub_addend_reader::operator()): New method definition for a
11773         partially specialized template.
11774
11775 2009-10-30  Doug Kwan  <dougkwan@google.com>
11776
11777         * arm.cc (Arm_relobj::processor_specific_flags): New method
11778         definition.
11779         (Arm_relobj::do_read_symbols): New method declaration.
11780         (Arm_relobj::processor_specific_flags_): New data member declaration.
11781         (Arm_dynobj): New class definition.
11782         (Target_arm::do_finalize_sections): Add input_objects parameter.
11783         (Target_arm::do_adjust_elf_header): New method declaration.
11784         (Target_arm::are_eabi_versions_compatible,
11785         (Target_arm::merge_processor_specific_flags): New method declaration.
11786         (Target_arm::do_make_elf_object): New overloaded method definitions
11787         and declaration.
11788         (Arm_relobj::do_read_symbols): New method definition.
11789         (Arm_dynobj::do_read_symbols): Ditto.
11790         (Target_arm::do_finalize_sections): Add input_objects parameters.
11791         Merge processor-specific flags from all input objects.
11792         (Target_arm::are_eabi_versions_compatible,
11793         Target_arm::merge_processor_specific_flags,
11794         Target_arm::do_adjust_elf_header, Target_arm::do_make_elf_object):
11795         New method definitions.
11796         * i386.cc (Target_i386::do_finalize_sections): Add unnamed
11797         Input_objects pointer type parameter.
11798         * layout.cc (Layout::finalize): Pass input objects to target's.
11799         finalize_sections function.
11800         * output.cc (Output_file_header::do_sized_write): Set ELF file
11801         header's processor-specific flags.
11802         * powerpc.cc (Target_powerpc::do_finalize_sections): Add unnamed
11803         Input_objects pointer type parameter.
11804         * sparc.cc (Target_sparc::do_finalize_sections): Same.
11805         * target.h (Input_objects): New forward class declaration.
11806         (Target::processor_specific_flags,
11807         Target::are_processor_specific_flags_sect): New method definitions.
11808         (Target::finalize_sections): Add input_objects parameter.
11809         (Target::Target): Initialize processor_specific_flags_ and
11810         are_processor_specific_flags_set_.
11811         (Target::do_finalize_sections): Add unnamed Input_objects pointer type
11812         parameter.
11813         (Target::set_processor_specific_flags): New method definition.
11814         (Target::processor_specific_flags_,
11815         Target::are_processor_specific_flags_set_): New data member
11816         declarations.
11817         * x86_64.cc (Target_x86_64::do_finalize_sections): Add unnamed
11818         Input_objects pointer type parameter.
11819
11820 2009-10-30  Doug Kwan  <dougkwan@google.com>
11821
11822         * arm.cc: Use Arm_address instead of elfcpp::Elf_types<32>::Elf_Addr.
11823
11824 2009-10-28  Ian Lance Taylor  <iant@google.com>
11825
11826         * object.h (class Relobj): Drop options parameter from
11827         gc_process_relocs, scan_relocs, relocate, do_gc_process_relocs,
11828         do_scan_relocs, do_relocate.  Change all callers.
11829         (class Sized_relobj): Drop options parameters from
11830         do_gc_process_relocs, do_scan_relocs, do_relocate,
11831         do_relocate_sections, relocate_sections, emit_relocs_scan,
11832         emit_relocs_scan_reltype.  Change all callers.
11833         (struct Relocate_info): Remove options field and all references to
11834         it.
11835         * reloc.h (class Read_relocs): Remove options constructor
11836         parameter and options_ field.  Change all callers.
11837         (class Gc_process_relocs, class Scan_relocs): Likewise.
11838         (class Relocate_task): Likewise.
11839         * target-reloc.h (scan_relocs): Remove options parameter.  Change
11840         all callers.
11841         (scan_relocatable_relocs): Likewise.
11842         * target.h (class Sized_target): Remove options parameter from
11843         gc_process_relocs, scan_relocs, scan_relocatable_relocs.  Change
11844         all callers.
11845         * gc.h (gc_process_relocs): Remove options parameter.  Change all
11846         callers.
11847         * arm.cc: Update functions to remove options parameters.
11848         * i386.cc: Likewise.
11849         * powerpc.cc: Likewise.
11850         * sparc.cc: Likewise.
11851         * x86_64.cc: Likewise.
11852         * testsuite/testfile.cc: Likewise.
11853
11854 2009-10-28  Doug Kwan  <dougkwan@google.com>
11855
11856         * arm.cc (Arm_relobj): New class definition.
11857         (Arm_relobj::scan_sections_for_stubs,
11858         Arm_relobj::do_count_local_symbols, Arm_relobj::do_relocate_sections):
11859         New method definitions.
11860
11861 2009-10-28  Cary Coutant  <ccoutant@google.com>
11862
11863         * plugin.h (Plugin::Plugin): Initialize cleanup_done_.
11864         (Plugin::cleanup_done_): New member.
11865         (Plugin_manager::Plugin_manager): Remove cleanup_done_.
11866         (Plugin_manager::cleanup_done_): Remove.
11867         (Plugin_manager::add_input_file): Edit error message.
11868         * plugin.cc (Plugin::cleanup): Test and set cleanup_done_.
11869         (Plugin_manager::cleanup): Remove use of cleanup_done_.
11870
11871 2009-10-27  Mikolaj Zalewski  <mikolajz@google.com>
11872
11873         * fileread.cc: (File_read::View::~View): Use the new
11874         data_ownership_ filed.
11875         (File_read::~File_read): Dispose the new whole_file_view_.
11876         (File_read::open): Mmap the whole file if needed.
11877         (File_read::open): Use whole_file_view_ instead of contents_.
11878         (File_read::find_view): Use whole_file_view_ if applicable.
11879         (File_read::do_read): Use whole_file_view_ instead of contents_.
11880         (File_read::make_view): Use whole_file_view_ instead of contents_,
11881         update File_read::View::View call.
11882         (File_read::find_or_make_view): Update File_read::View::View
11883         call.
11884         * fileread.h: (File_read::File_read): Initialize whole_file_view_,
11885         remove contents_
11886         (File_read::View::Data_ownership): New enum.
11887         (File_read::View::View): Replace bool mapped_ with Data_ownership
11888         argument.
11889         (File_read::View::mapped_): Remove (replaced by data_ownership_).
11890         (File_read::View::data_ownership_): New field.
11891         (File_read::contents_): Remove (replaced by whole_file_view_).
11892         (File_read::whole_file_view_): New field.
11893         * options.h (class General_options): Add --keep-files-mapped.
11894
11895 2009-10-27  Cary Coutant  <ccoutant@google.com>
11896
11897         * symtab.cc (add_from_pluginobj): Pass correct value for is_ordinary.
11898         * testsuite/Makefile.am (plugin_test_5): New test case.
11899         * testsuite/Makefile.in: Regenerate.
11900
11901 2009-10-25  Doug Kwan  <dougkwan@google.com>
11902
11903         * object.h (Sized_relobj::View_size, Sized_relobj::Views): Change
11904         from private to protected to allow access by child class.
11905         (Sized_relobj::do_relocate_sections): New method declaration.
11906         (Sized_relobj::relocate_sections): Virtualize.
11907         * reloc.cc (Sized_relobj::do_relocate_sections): Rename from
11908         Sized_relobj::relocate_sections.  Instantiate template explicitly
11909         for different target sizes and endianity.
11910
11911 2009-10-24  Doug Kwan  <dougkwan@google.com>
11912
11913         * arm.cc (Arm_output_section, Arm_relobj): Forward class declarations.
11914         (Arm_input_section::as_arm_input_section): New method.
11915         (Arm_output_section): New class definition.
11916         (Arm_output_section::create_stub_group,
11917         Arm_output_section::group_sections): New method definitions.
11918
11919 2009-10-22  Doug Kwan  <dougkwan@google.com>
11920
11921         * arm.cc (Arm_input_section): New class definition.
11922         (Arm_input_section::init, Arm_input_section:do_write,
11923         Arm_input_section::set_final_data_size,
11924         Arm_input_section::do_reset_address_and_file_offset): New method
11925         definitions.
11926
11927 2009-10-21  Doug Kwan  <dougkwan@google.com>
11928
11929         * arm.cc (Stub_table, Arm_input_section): New forward class
11930         declarations.
11931         (Stub_table): New class defintion.
11932         (Stub_table::add_reloc_stub, Stub_table::relocate_stubs
11933         Stub_table::do_reset_address_and_file_offset, Stub_table::do_write):
11934         New method definition.
11935
11936 2009-10-21  Doug Kwan  <dougkwan@google.com>
11937
11938         * arm.cc: Update copyright comments.
11939         (Target_arm): New forward class template declaration.
11940         (Arm_address): New type.
11941         (ARM_MAX_FWD_BRANCH_OFFSET, ARM_MAX_BWD_BRANCH_OFFSET,
11942         THM_MAX_FWD_BRANCH_OFFSET, THM_MAX_BWD_BRANCH_OFFSET,
11943         THM2_MAX_FWD_BRANCH_OFFSET, THM2_MAX_BWD_BRANCH_OFFSET): New
11944         constants.
11945         (Insn_template): Same.
11946         (DEF_STUBS): New macro.
11947         (Stub_type): New enum type.
11948         (Stub_template): New class definition.
11949         (Stub): Same.
11950         (Reloc_stub): Same.
11951         (Stub_factory): Same.
11952         (Target_arm::Target_arm): Initialize may_use_blx_ and
11953         should_force_pic_veneer_.
11954         (Target_arm::may_use_blx, Target_arm::set_may_use_blx,
11955         Target_arm::should_force_pic_veneer,
11956         Target_arm::set_should_force_pic_veneer, Target_arm::using_thumb2,
11957         Target_arm::using_thumb_only, Target_arm:;default_target): New
11958         method defintions.
11959         (Target_arm::may_use_blx_, Target_arm::should_force_pic_veneer_):
11960         New data member declarations.
11961         (Insn_template::size, Insn_template::alignment): New method defintions.
11962         (Stub_template::Stub_template): New method definition.
11963         (Reloc_stub::Key::name, Reloc_stub::stub_type_for_reloc,
11964         Reloc_stub::do_fixed_endian_write, Reloc_stub::do_write): Same.
11965         (Stub_factory::Stub_factory): New method definition.
11966         * gold.h (string_hash): New template.
11967         * output.h (Input_section_specifier::hash_value): Use
11968         gold::string_hash.
11969         (Input_section_specifier::string_hash): Remove.
11970         * stringpool.cc (Stringpool_template::string_hash): Use
11971         gold::string_hash.
11972
11973 2009-10-20  Doug Kwan  <dougkwan@google.com>
11974
11975         * object.cc (Sized_relobj::do_finalize_local_symbols): Handle section
11976         symbols of relaxed input sections.
11977         * output.h (Output_section::find_relaxed_input_section): Make
11978         method public.
11979
11980 2009-10-16  Doug Kwan  <dougkwan@google.com>
11981
11982         * dynobj.cc (Versions::Versions): Initialize version_script_.
11983         Only insert base version symbol definition for a shared object
11984         if version script defines any version versions.
11985         (Versions::define_base_version): New method definition.
11986         (Versions::add_def): Check that base version is not needed.
11987         (Versions::add_need): Define base version lazily.
11988         * dynobj.h (Versions::define_base_version): New method declaration.
11989         (Versions::needs_base_version_): New data member declaration.
11990         * testsuite/Makefile.am (check_SCRIPTS): Add no_version_test.sh
11991         (check_DATA): Add no_version_test.stdout.
11992         (libno_version_test.so, no_version_test.o no_version_test.stdout):
11993         New make rules.
11994         * testsuite/Makefile.in: Regenerate.
11995         * testsuite/no_version_test.c: New file.
11996         * testsuite/no_version_test.sh: Ditto.
11997
11998 2009-10-16  Doug Kwan  <dougkwan@google.com>
11999
12000         * expression.cc (class Segment_start_expression): New class definition.
12001         (Segment_start_expression::value): New method definition.
12002         (script_exp_function_segment_start): Return a new
12003         Segment_start_expression.
12004         * gold/script-c.h (script_saw_segment_start_expression): New function
12005         prototype.
12006         * script-sections.cc (Script_sections::Script_sections): Initialize
12007         SAW_SEGMENT_START_EXPRESSION_ to false.
12008         (Script_sections::set_section_addresses): Use -Ttext, -Tdata
12009         and -Tbbs options to specify section addresses if given in
12010         command line and no SEGMENT_START expression is seen in a script.
12011         * script-sections.h (Script_sections::saw_segment_start_expression,
12012         Script_sections::set_saw_segment_start_expression): New method
12013         definition.
12014         (Script_sections::saw_segment_start_expression_): New data member
12015         declaration.
12016         * script.cc (script_saw_segment_start_expression): New function.
12017         * yyscript.y (SEGMENT_START): Call script_saw_segment_start_expression.
12018         * testsuite/Makefile.am (check_SCRIPTS): Add script_test_6.sh,
12019         script_test_7.sh and script_test_8.sh.
12020         (check_DATA): Add script_test_6.stdout, script_test_7.stdout and
12021         script_test_8.stdout.
12022         (MOSTLYCLEANFILES): Add script_test_6, script_test_7 and script_test_8.
12023         (script_test_6, script_test_6.stdout, script_test_7,
12024         script_test_7.stdout, script_test_8, script_test_8.stdout): New rules.
12025         * Makefile.in: Regenerate.
12026         * testsuite/script_test_6.sh: New file.
12027         * testsuite/script_test_6.t: Same.
12028         * testsuite/script_test_7.sh: Same.
12029         * testsuite/script_test_7.t: Same.
12030         * testsuite/script_test_8.sh: Same.
12031
12032 2009-10-16  Doug Kwan  <dougkwan@google.com>
12033
12034         * output.cc (Output_segment::set_section_list_address): Cast
12035         expressions to unsigned long long type to avoid format warnings.
12036
12037 2009-10-15  Ian Lance Taylor  <iant@google.com>
12038
12039         * script.cc (Script_options::add_symbol_assignment): Always add a
12040         dot assignment to script_sections_.
12041         * script-sections.cc (Script_sections::add_dot_assignment):
12042         Initialize if necessary.
12043
12044         * layout.cc (Layout::relaxation_loop_body): Don't crash if we see
12045         program headers with no load segment if there is a linker script.
12046
12047         * layout.cc (Layout::set_segment_offsets): Align the file offset
12048         to the segment aligment for -N or -n with no load segment.
12049         * output.cc (Output_segment::add_output_section): Don't crash if
12050         the first section is a TLS section.
12051         (Output_segment::set_section_list_addresses): Print an error
12052         message if the address moves backward in a linker script.
12053         * script-sections.cc
12054         (Output_section_element_input::set_section_addresses): Don't
12055         increase *dot_value for a SHF_TLS/SHT_NOBITS section.
12056         (Orphan_output_section::set_section_addresses): Likewise.
12057
12058 2009-10-15  Doug Kwan  <dougkwan@google.com>
12059
12060         * layout.cc (Layout::finish_dynamic_section): Generate tags
12061         DT_FINI_ARRAY, DT_FINI_ARRAYSZ, DT_INIT_ARRAY, DT_INIT_ARRAYSZ,
12062         DT_PREINIT_ARRAY, DT_PREINIT_ARRAYSZ as needed. If -Bsymbolic is
12063         used, add DT_SYMBOLIC and set DF_SYMBOLIC in DT_FLAGS.
12064
12065 2009-10-14  Ian Lance Taylor  <iant@google.com>
12066
12067         * object.h (class Relocate_info): Add reloc_shdr and data_shdr
12068         fields.
12069         * object.cc (Sized_relobj::relocate_sections): Set reloc_shdr and
12070         data_shdr fields of relinfo.
12071         * i386.cc (class Target_i386::Relocate): Remove ldo_addrs_ field.
12072         (Target_i386::Relocate::relocate_tls): Don't call fix_up_ldo.  For
12073         R_386_TLS_LDO_32, adjust based on section flags.
12074         (Target_i386::Relocate::fix_up_ldo): Remove.
12075
12076 2009-10-13  Ian Lance Taylor  <iant@google.com>
12077
12078         Add support for -pie.
12079         * options.h (class General_options): Add -pie and
12080         --pic-executable.
12081         (General_options::output_is_position_independent): Test -pie.
12082         (General_options::output_is_executable): Return true if not shared
12083         and not relocatable.
12084         (General_options::output_is_pie): Remove.
12085         * options.cc (General_options::finalize): Reject incompatible uses
12086         of -pie.
12087         * gold.cc (queue_middle_tasks): A -pie link is not static.
12088         * symtab.h (Symbol::needs_plt_entry): Return false if -pie.
12089         * symtab.cc (Symbol::final_value_is_known): Return false if
12090         output_is_position_independent.
12091         * layout.cc (Layout::set_segment_offsets): Start at address 0 if
12092         output_is_position_independent.
12093         * output.cc (Output_file_header::do_sized_write): Use ET_DYN if
12094         output_is_position_independent.
12095         * i386.cc (Output_data_plt_i386::do_write): Use the PIC PLT if
12096         output_is_position_independent.
12097         * testsuite/Makefile.am (check_PROGRAMS): Add basic_pie_test and
12098         two_file_pie_test.
12099         (basic_pie_test.o, basic_pie_test): New targets.
12100         (two_file_test_1_pie.o, two_file_test_1b_pie.o): New targets.
12101         (two_file_test_2_pie.o, two_file_test_main_pie.o): New targets.
12102         (two_file_pie_test): New target.
12103         * testsuite/Makefile.in: Rebuild.
12104         * README: Remove note saying that -pie is not supported.
12105
12106 2009-10-13  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
12107
12108         * options.h (class General_options): Add -init and -fini.
12109         * layout.cc (Layout::finish_dynamic_section): Emit
12110         given init and fini functions.
12111
12112 2009-10-13  Sriraman Tallam  <tmsriram@google.com>
12113
12114         * gc.h (gc_process_relocs): Check if icf is enabled using new
12115         function.
12116         * gold.cc (queue_initial_tasks): Likewise.
12117         (queue_middle_tasks): Likewise.
12118         * object.cc (do_layout): Likewise.
12119         * symtab.cc (is_section_folded): Likewise.
12120         * main.cc (main): Likewise.
12121         * reloc.cc (Read_relocs::run): Likewise.
12122         (Sized_relobj::do_scan_relocs): Likewise.
12123         * icf.cc (is_function_ctor_or_dtor): New function.
12124         (Icf::find_identical_sections): Check if function is ctor or dtor when
12125         safe icf is chosen.
12126         * options.h (General_options::icf): Change option to be an enum.
12127         (Icf_status): New enum.
12128         (icf_enabled): New method.
12129         (icf_safe_folding): New method.
12130         (set_icf_status): New method.
12131         (icf_status_): New variable.
12132         * (options.cc) (General_options::finalize): Set icf_status_.
12133         * testsuite/Makefile.am: Add commands to build icf_safe_test. Modify
12134         icf_test and icf_keep_unique_test to use the --icf enum flag.
12135         * testsuite/icf_safe_test.sh: New file.
12136         * testsuite/icf_safe_test.cc: New file.
12137
12138 2009-10-12  Sriraman Tallam  <tmsriram@google.com>
12139
12140         * symtab.h: Check for GOLD_SYMTAB_H before header includes. Remove
12141         includes to gc.h and icf.h.
12142         * arm.cc: Include gc.h.
12143         * gold.cc: Likewise.
12144         * i386.cc: Likewise.
12145         * powerpc.cc: Likewise.
12146         * sparc.cc: Likewise.
12147         * x86_64.cc: Likewise.
12148         * gc.h: Include icf.h.
12149
12150 2009-10-11  Ian Lance Taylor  <iant@google.com>
12151
12152         * plugin.cc: Include "gold.h" before other header files.
12153
12154 2009-10-10  Chris Demetriou  <cgd@google.com>
12155
12156         * options.h (Input_file_argument::Input_file_type): New enum.
12157         (Input_file_argument::is_lib_): Replace with...
12158         (Input_file_argument::type_): New member.
12159         (Input_file_argument::Input_file_argument): Take Input_file_type
12160         'type' rather than boolean 'is_lib' as second argument.
12161         (Input_file_argument::is_lib): Use type_.
12162         (Input_file_argument::is_searched_file): New function.
12163         (Input_file_argument::may_need_search): Handle is_searched_file.
12164         * options.cc (General_options::parse_library): Support -l:filename.
12165         (General_options::parse_just_symbols): Update for Input_file_argument
12166         changes.
12167         (Command_line::process): Likewise.
12168         * archive.cc (Archive::get_file_and_offset): Likewise.
12169         * plugin.cc (Plugin_manager::release_input_file): Likewise.
12170         * script.cc (read_script_file, script_add_file): Likewise.
12171         * fileread.cc (Input_file::Input_file): Likewise.
12172         (Input_file::will_search_for): Handle is_searched_file.
12173         (Input_file::open): Likewise.
12174         * readsyms.cc (Read_symbols::get_name): Likewise.
12175         * testsuite/Makefile.am (searched_file_test): New test.
12176         * testsuite/Makefile.in: Regenerate.
12177         * testsuite/searched_file_test.cc: New file.
12178         * testsuite/searched_file_test_lib.cc: New file.
12179
12180 2009-10-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12181             Ian Lance Taylor  <iant@google.com>
12182
12183         * descriptor.cc: Include <cstdio> and "binary-io.h".
12184         (Descriptors::open): Open the files in binary mode always.
12185         * script.cc (Lex::get_token): Treat \r as whitespace.
12186
12187 2009-10-09  Ian Lance Taylor  <iant@google.com>
12188
12189         * testsuite/retain_symbols_file_test.sh: Don't test for __tcf_0.
12190
12191 2009-10-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12192             Ian Lance Taylor  <iant@google.com>
12193
12194         * configure.ac: Check for readv function also.
12195         * fileread.cc (readv): Define if not HAVE_READV.
12196         * fileread.h (File_read:: max_readv_entries): Set to 1 if readv
12197         does not exist.
12198         * config.in: Regenerate.
12199         * configure: Regenerate.
12200
12201 2009-10-09  Doug Kwan  <dougkwan@google.com>
12202
12203         * layout.cc (Layout::make_output_section): Call target hook to make
12204         ordinary output section.
12205         (Layout::finalize): Adjust parameter list of call the
12206         Target::may_relax().
12207         * layout.h (class Layout::section_list): New method.
12208         * merge.h (Output_merge_base::entsize): Change visibility to public.
12209         (Output_merge_base::is_string, Output_merge_base::do_is_string):
12210         New methods.
12211         (Output_merge_string::do_is_string): New method.
12212         * object.cc (Sized_relobj::do_setup): renamed from
12213         Sized_relobj::set_up.
12214         * object.h (Sized_relobj::adjust_shndx,
12215         Sized_relobj::initializ_input_to_output_maps,
12216         Sized_relobj::free_input_to_output_maps): Change visibilities to
12217         protected.
12218         (Sized_relobj::setup): Virtualize.
12219         (Sized_relobj::do_setup): New method declaration.
12220         (Sized_relobj::invalidate_section_offset,
12221         Sized_relobj::do_invalidate_section_offset): New method decfinitions.
12222         (Sized_relobj::elf_file, Sized_relobj::local_values): New methods.
12223         * options.cc (parse_int): New function.
12224         * options.h (parse_int): New declaration.
12225         (DEFINE_int): New macro.
12226         (stub_group_size): New option.
12227         * output.cc (Output_section::Output_section): Initialize memebers
12228         merge_section_map_, merge_section_by_properties_map_,
12229         relaxed_input_section_map_, is_relaxed_input_section_map_valid_.
12230         (Output_section::add_input_section): Handled deferred code-fill
12231         generation and remove an old comment.
12232         (Output_section::add_relaxed_input_section): New method definition.
12233         (Output_section::add_merge_input_section): Use merge section by
12234         properties map to speed to search.  Update merge section maps
12235         as appropriate.
12236         (Output_section::build_relaxation_map): New method definition.
12237         (Output_section::convert_input_sections_in_list_to_relaxed_sections):
12238         Same.
12239         (Output_section::relax_input_section): Renamed to
12240         Output_section::convert_input_sections_to_relaxed_sections and change
12241         interface to take a vector of pointers to relaxed sections.
12242         (Output_section::find_merge_section,
12243         Output_section::find_relaxed_input_section): New method definitions.
12244         (Output_section::is_input_address_mapped,
12245         Output_section::output_offset, Output_section::output_address):
12246         Use output section data maps to speed up searching.
12247         (Output_section::find_starting_output_address): Add comments.
12248         (Output_section::do_write,
12249         Output_section::write_to_postprocessing_buffer): Do code-fill
12250         generation as appropriate.
12251         (Output_section::get_input_sections): Invalidate relaxed input section
12252         map.
12253         (Output_section::restore_states): Adjust type of checkpoint .
12254         Invalidate relaxed input section map.
12255         * output.h (Output_merge_base): New class declaration.
12256         (Input_section_specifier): New class defintion.
12257         (class Output_relaxed_input_section) Change base class to
12258         Output_section_data_build.
12259         (Output_relaxed_input_section::Output_relaxed_input_section): Adjust
12260         base class initializer.
12261         (Output_section::add_relaxed_input_section): New method declaration.
12262         (Output_section::Input_section): Change visibility to protected.
12263         (Output_section::Input_section::relobj,
12264         Output_section::Input_section::shndx): Handle relaxed input sections.
12265         Output_section::input_sections) Change visibility to protected.  Also
12266         define overload to return a non-const pointer.
12267         (Output_section::Merge_section_properties): New class defintion.
12268         (Output_section::Merge_section_by_properties_map,
12269         Output_section::Output_section_data_by_input_section_map,
12270         Output_section::Relaxation_map): New types.
12271         (Output_section::relax_input_section): Rename method to
12272         Output_section::convert_input_sections_to_relaxed_sections and change
12273         interface to take a vector of relaxed section pointers.
12274         (Output_section::find_merge_section,
12275         Output_section::find_relaxed_input_section,
12276         Output_section::build_relaxation_map,
12277         Output_section::convert_input_sections_in_list_to_relaxed_sections):
12278         New method declarations.
12279         (Output_section::merge_section_map_
12280         Output_section::merge_section_by_properties_map_,
12281         Output_section::relaxed_input_section_map_,
12282         Output_section::is_relaxed_input_section_map_valid_,
12283         Output_section::generate_code_fills_at_write_): New data members.
12284         * script-sections.cc
12285         (Output_section_element_input::set_section_addresses): Call
12286         current_data_size and addralign methods of relaxed input sections.
12287         (Orphan_output_section::set_section_addresses): Call current_data_size
12288         and addralign methods of relaxed input sections.
12289         * symtab.cc (Symbol_table::compute_final_value): Extract template
12290         from the body of Symbol_table::sized_finalize_symbol.
12291         (Symbol_table::sized_finalized_symbol): Call
12292         Symbol_table::compute_final_value.
12293         * symtab.h (Symbol_table::Compute_final_value_status): New enum type.
12294         (Symbol_table::compute_final_value): New templated method declaration.
12295         * target.cc (Target::do_make_output_section): New method defintion.
12296         * target.h (Target::make_output_section): New method declaration.
12297         (Target::relax): Add more parameters for input objects, symbol table
12298         and layout.  Adjust call to do_relax.
12299         (Target::do_make_output_section): New method declaration.
12300         (Target::do_relax): Add parameters for input objects, symbol table
12301         and layout.
12302
12303 2009-10-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12304
12305         * pread.c: Include stdio.h.
12306
12307 2009-10-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12308
12309         * plugin.cc: Don't include dlfcn.h when ENABLE_PLUGINS is not
12310         defined.
12311
12312 2009-10-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12313
12314         * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
12315         Change read_shndx type to unsigned int.
12316         (Sized_dwarf_line_info::read_lines): Change shndx type to unsigned
12317         int.
12318         (Sized_dwarf_line_info::read_line_mappings): Likewise.
12319         * dwarf_reader.h (Sized_dwarf_line_info::Sized_dwarf_line_info):
12320         Change read_shndx type to unsigned int.
12321         (Sized_dwarf_line_info::read_lines): Change shndx type to unsigned
12322         int.
12323         (Sized_dwarf_line_info::read_line_mappings): Likewise.
12324         * layout.cc (Layout::create_symtab_sections): Cast the result of
12325         local_symcount * symsize to off_t in the gold_assert.
12326
12327 2009-10-09  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
12328
12329         * arm.cc (Target_arm::relocate::reloc_is_non_pic): Return true for
12330         R_ARM_THM_ABS5, R_ARM_ABS8, R_ARM_ABS12, R_ARM_ABS16,
12331         R_ARM_BASE_ABS.
12332         (Arm_relocate_functions::abs8): Remove has_thumb_bit parameter.
12333         (Arm_relocate_functions::thm_abs5): New function.
12334         (Arm_relocate_functions::abs12): New function.
12335         (Arm_relocate_functions::abs16): New function.
12336         (Arm_relocate_functions::base_abs): New function.
12337         (Scan::check_non_pic): Handle R_ARM_ABS32_NOI.
12338         (Scan::local): Remove special handling of R_ARM_ABS8.  Handle
12339         R_ARM_ABS32_NOI, R_ARM_THM_ABS5, R_ARM_ABS12, R_ARM_ABS16, and
12340         R_ARM_BASE_ABS.
12341         (Scan::global): Likewise.
12342         (Relocate::relocate): Handle R_ARM_ABS12, R_ARM_ABS16,
12343         R_ARM_ABS32_NOI, R_ARM_THM_ABS5, and R_ARM_BASE_ABS.
12344         (Relocatable_size_for_reloc::get_size_for_reloc): Handle
12345         R_ARM_ABS16, R_ARM_THM_ABS5, R_ARM_ABS32_NOI, R_ARM_ABS12, and
12346         R_ARM_BASE_ABS.
12347
12348 2009-10-09  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
12349
12350         * arm.cc (Arm_relocate_functions::movw_prel_nc): New function.
12351         (Arm_relocate_functions::movt_prel): New function.
12352         (Arm_relocate_functions::thm_movw_prel_nc): New function.
12353         (Arm_relocate_functions::thm_movt_prel): New function.
12354         (Scan::local): Handle R_ARM_MOVW_PREL_NC, R_ARM_MOVT_PREL,
12355         R_ARM_THM_MOVW_PREL_NC, and R_ARM_THM_MOVT_PREL.
12356         (Scan::global, Relocate::relocate): Likewise.
12357         (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
12358
12359 2009-10-09  Mikolaj Zalewski  <mikolajz@google.com>
12360
12361         * gold.cc: (queue_initial_tasks): Pass incremental_inputs to
12362         Incremental_checker.
12363         * incremental.cc: (INCREMENTAL_LINK_VERSION): Change type to
12364         unsigned int.
12365         (class Incremental_inputs_header): New class.
12366         (Incremental_inputs_header_writer): Edit comment.
12367         (Incremental_inputs_entry): New class.
12368         (Incremental_inputs_entry_writer): Edit comment.
12369         (Sized_incremental_binary::do_find_incremental_inputs_section):
12370         Add *strtab_shndx parameter, fill it.
12371         (Sized_incremental_binary::do_check_inputs): New method.
12372         (Incremental_checker::can_incrementally_link_output_file): Use
12373         Sized_incremental_binary::check_inputs.
12374         (Incremental_inputs::report_command_line): Save command line in
12375         command_line_.
12376         * incremental.h:
12377         (Incremental_binary::find_incremental_inputs_section): New
12378         method.
12379         (Incremental_binary::do_find_incremental_inputs_section): Add
12380         strtab_shndx parameter.
12381         (Incremental_binary::do_check_inputs): New pure virtual method.
12382         (Sized_incremental_binary::do_check_inputs): Declare.
12383         (Incremental_checker::Incremental_checker): Add incremental_inputs
12384         parameter, use it to initialize incremental_inputs_.
12385         (Incremental_checker::incremental_inputs_): New field.
12386         (Incremental_checker::command_line): New method.
12387         (Incremental_checker::inputs): New method.
12388         (Incremental_checker::command_line_): New field.
12389
12390 2009-10-09  Mikolaj Zalewski  <mikolajz@google.com>
12391
12392         * incremental.cc: Include <cstdarg> and "target-select.h".
12393         (vexplain_no_incremental): New function.
12394         (explain_no_incremental): New function.
12395         (Incremental_binary::error): New method.
12396         (Sized_incremental_binary::do_find_incremental_inputs_section): New
12397         method.
12398         (make_sized_incremental_binary): New function.
12399         (open_incremental_binary): New function.
12400         (can_incrementally_link_file): Add checks if output is ELF and has
12401         inputs section.
12402         * incremental.h: Include "elfcpp_file.h" and "output.h".
12403         (Incremental_binary): New class.
12404         (Sized_incremental_binary): New class.
12405         (open_incremental_binary): Declare.
12406         * object.cc (is_elf_object): Use
12407         elfcpp::Elf_recognizer::is_elf_file.
12408         (make_elf_object): Use elfcpp::Elf_recognizer::is_valid_header.
12409         * output.h (Output_file::filesize): New method.
12410
12411 2009-10-07  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
12412
12413         * arm.cc (Arm_relocate_functions::extract_arm_movw_movt_addend):
12414         New function.
12415         (Arm_relocate_functions::insert_val_arm_movw_movt): New function.
12416         (Arm_relocate_functions::extract_thumb_movw_movt_addend): New
12417         function.
12418         (Arm_relocate_functions::insert_val_thumb_movw_movt): New
12419         function.
12420         (Arm_relocate_functions::movw_abs_nc): New function.
12421         (Arm_relocate_functions::movt_abs): New function.
12422         (Arm_relocate_functions::thm_movw_abs_nc): New function.
12423         (Arm_relocate_functions::thm_movt_abs): New function.
12424         (Scan::local): Handle R_ARM_MOVW_ABS_NC, R_ARM_MOVT_ABS,
12425         R_ARM_THM_MOVW_ABS_NC, R_ARM_THM_MOVT_ABS.
12426         (Scan::global): Likewise.
12427         (Relocate::relocate): Likewise.
12428         (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
12429
12430 2009-10-07  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
12431
12432         * arm.cc (Arm_relocate_functions::got_prel) New function.
12433         (Scan::local, Scan::global): Handle R_ARM_GOT_PREL.
12434         (Relocate::relocate): Likewise.
12435         (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
12436
12437 2009-10-06  Ian Lance Taylor  <iant@google.com>
12438
12439         * options.h (class General_options): Define
12440         split_stack_adjust_size parameter.
12441         * object.h (class Object): Add uses_split_stack_ and
12442         has_no_split_stack_ fields.  Add uses_split_stack and
12443         has_no_split_stack accessor functions.  Declare
12444         handle_split_stack_section.
12445         (class Reloc_symbol_changes): Define.
12446         (class Sized_relobj): Define Function_offsets.  Declare
12447         split_stack_adjust, split_stack_adjust_reltype, and
12448         find_functions.
12449         * object.cc (Object::handle_split_stack_section): New function.
12450         (Sized_relobj::do_layout): Call handle_split_stack_section.
12451         * dynobj.cc (Sized_dynobj::do_layout): Call
12452         handle_split_stack_section.
12453         * reloc.cc (Sized_relobj::relocate_sections): Call
12454         split_stack_adjust for executable sections in split_stack
12455         objects.  Pass reloc_map to relocate_section.
12456         (Sized_relobj::split_stack_adjust): New function.
12457         (Sized_relobj::split_stack_adjust_reltype): New function.
12458         (Sized_relobj::find_functions): New function.
12459         * target-reloc.h: Include "object.h".
12460         (relocate_section): Add reloc_symbol_changes parameter.  Change
12461         all callers.
12462         * target.h (class Target): Add calls_non_split method.  Declare
12463         do_calls_non_split virtual method.  Declare match_view and
12464         set_view_to_nop.
12465         * target.cc: Include "elfcpp.h".
12466         (Target::do_calls_non_split): New function.
12467         (Target::match_view): New function.
12468         (Target::set_view_to_nop): New function.
12469         * gold.cc (queue_middle_tasks): Give an error if mixing
12470         split-stack and non-split-stack objects with -r.
12471         * i386.cc (Target_i386::relocate_section): Add
12472         reloc_symbol_changes parameter.
12473         (Target_i386::do_calls_non_split): New function.
12474         * x86_64.cc (Target_x86_64::relocate_section): Add
12475         reloc_symbol_changes parameter.
12476         (Target_x86_64::do_calls_non_split): New function.
12477         * arm.cc (Target_arm::relocate_section): Add reloc_symbol_changes
12478         parameter.
12479         * powerpc.cc (Target_powerpc::relocate_section): Add
12480         reloc_symbol_changes parameter.
12481         * sparc.cc (Target_sparc::relocate_section): Add
12482         reloc_symbol_changes parameter.
12483         * configure.ac: Call AM_CONDITIONAL for the default target.
12484         * configure: Rebuild.
12485         * testsuite/Makefile.am (TEST_AS): New variable.
12486         (check_SCRIPTS): Add split_i386.sh and split_x86_64.sh.
12487         (check_DATA): Add split_i386 and split_x86_64 files.
12488         (SPLIT_DEFSYMS): Define.
12489         (split_i386_[1234n].o): New targets.
12490         (split_i386_[124]): New targets.
12491         (split_i386_[1234r].stdout): New targets.
12492         (split_x86_64_[1234n].o): New targets.
12493         (split_x86_64_[124]): New targets.
12494         (split_x86_64_[1234r].stdout): New targets.
12495         (MOSTLYCLEANFILES): Add new executables.
12496         * testsuite/split_i386.sh: New file.
12497         * testsuite/split_x86_64.sh: New file.
12498         * testsuite/split_i386_1.s: New file.
12499         * testsuite/split_i386_2.s: New file.
12500         * testsuite/split_i386_3.s: New file.
12501         * testsuite/split_i386_4.s: New file.
12502         * testsuite/split_i386_n.s: New file.
12503         * testsuite/split_x86_64_1.s: New file.
12504         * testsuite/split_x86_64_2.s: New file.
12505         * testsuite/split_x86_64_3.s: New file.
12506         * testsuite/split_x86_64_4.s: New file.
12507         * testsuite/split_x86_64_n.s: New file.
12508         * testsuite/testfile.cc (Target_test): Update relocation_section
12509         function.
12510         * testsuite/Makefile.in: Rebuild.
12511
12512 2009-10-06  Ian Lance Taylor  <iant@google.com>
12513
12514         * i386.cc (class Target_i386::Relocate): Add ldo_addrs_ field.
12515         (Target_i386::Relocate::relocate_tls): Call fix_up_ldo before
12516         changing local_dynamic_type_ from LOCAL_DYNAMIC_NONE.  When
12517         handling R_386_TLS_LDO_32, if local_dynamic_type_ is NONE, push
12518         the address on ldo_addrs_.
12519         (Target_i386::Relocate::fix_up_ldo): New function.
12520
12521 2009-10-06   Rafael Espindola  <espindola@google.com>
12522
12523         * plugin.cc (add_input_library): New.
12524         (Plugin::load): Add add_input_library to tv.
12525         (Plugin_manager::add_input_file): Add the is_lib argument.
12526         (add_input_file): Update call to Plugin_manager::add_input_file.
12527         (add_input_library): New.
12528         * plugin.h (Plugin_manager::add_input_file): Add the is_lib argument.
12529
12530 2009-09-30  Doug Kwan  <dougkwan@google.com>
12531
12532         * arm.cc (Target_arm::may_need_copy_reloc): Check for THUMB function
12533         symbol and call Symbol::may_need_copy_reloc to determine if
12534         a copy reloc is needed.
12535         * copy-relocs.cc (Copy_relocs::need_copy_reloc): Return false if -z
12536         nocopyreloc is given in command line.
12537         (Copy_relocs::emit_copy_reloc): Assert that -z nocopyreloc is not
12538         given in command line.
12539         * i386.cc (Target_i386::may_need_copy_reloc): Remove.
12540         (Target_i386::Scan::global): Use Symbol::may_need_copy_reloc instead
12541         of the removed Target_i386::may_need_copy_reloc.
12542         * options.h (copyreloc): New option with default value false.
12543         * powerpc.cc (Target_powerpc::may_need_copy_reloc): Remove.
12544         (Target_powerpc::Scan::global): Use Symbol::may_need_copy_reloc
12545         instead of the removed Target_powerpc::may_need_copy_reloc.
12546         * sparc.cc (Target_powerpc::may_need_copy_reloc): Remove.
12547         (Target_sparc::Scan::global): Use Symbol::may_need_copy_reloc
12548         instead of the removed Target_sparc::may_need_copy_reloc.
12549         * symtab.h (Symbol::may_need_copy_reloc): New method definition.
12550         * x86_64.cc (Target_powerpc::may_need_copy_reloc): Remove.
12551         (Target_x86_64::Scan::global): Use Symbol::may_need_copy_reloc
12552         instead of the removed Target_x86_64::may_need_copy_reloc.
12553
12554 2009-09-30  Ian Lance Taylor  <iant@google.com>
12555
12556         * object.h (class Object): Remove target_ field, and target,
12557         sized_target, and set_target methods.
12558         (Object::sized_target): Remove.
12559         (class Sized_relobj): Update declarations.  Remove sized_target.
12560         * object.cc (Sized_relobj::setup): Remove target parameter.
12561         Change all callers.
12562         (Input_objects::add_object): Don't do anything with the target.
12563         (make_elf_sized_object): Add punconfigured parameter.  Change all
12564         callers.  Set or test parameter target.
12565         * dynobj.cc (Sized_dynobj::target): Remove target parameter.
12566         Change all callers.
12567         * parameters.cc (Parameters::set_target): Change parameter type to
12568         be non-const.
12569         (Parameters::default_target): Remove.
12570         (set_parameters_target): Change parameter type to be non-const.
12571         (parameters_force_valid_target): New function.
12572         (parameters_clear_target): New function.
12573         * parameters.h (class Parameters): Update declarations.  Remove
12574         default_target method.  Add sized_target and clear_target
12575         methods.  Change target_ to be non-const.
12576         (set_parameters_target): Update declaration.
12577         (parameters_force_valid_target): Declare.
12578         (parameters_clear_target): Declare.
12579         * readsyms.cc (Read_symbols::do_read_symbols): Pass punconfigured
12580         as NULL if we aren't searching.
12581         (Add_symbols::run): Don't check for compatible target.
12582         * fileread.cc (Input_file::open_binary): Call
12583         parameters_force_valid_target.
12584         * gold.cc (queue_middle_tasks): Likewise.
12585         * plugin.cc (make_sized_plugin_object): Likewise.  Don't call
12586         set_target on object.
12587         * dynobj.h (class Sized_dynobj): Update declarations.
12588         * archive.cc (Archive::get_elf_object_for_member): Return NULL if
12589         make_elf_object returns NULL.
12590         (Archive::include_member): Don't check whether object target is
12591         compatible.
12592         * output.cc (Output_section::add_input_section): Get target from
12593         parameters.
12594         (Output_section::relax_input_section): Likewise.
12595         * reloc.cc (Sized_relobj::do_gc_process_relocs): Get target from
12596         parameters.
12597         (Sized_relobj::do_scan_relocs): Likewise.
12598         (Sized_relobj::relocate_sections): Likewise.
12599         * resolve.cc (Symbol_table::resolve): Likewise.
12600         * symtab.cc (Symbol_table::wrap_symbol): Likewise.  Remove object
12601         parameter.  Change all callers.
12602         (Symbol_table::add_from_object): Get target from parameters.
12603         (Symbol_table::add_from_relobj): Don't check object target.
12604         (Symbol_table::add_from_dynobj): Likewise.
12605         (Symbol_table::define_special_symbol): Get target from
12606         parameters.
12607         * symtab.h (class Symbol_table): Update declaration.
12608         * testsuite/binary_unittest.cc (gold_testsuite): Remove target
12609         parameter.  Change all callers.  Clear parameter target.
12610         (Binary_test): Test target here.
12611         * testsuite/object_unittest.cc (gold_testsuite): Remove
12612         target_test_pointer parameter.  Change all callers.
12613         (Object_test): Test target here.
12614
12615 2009-09-26  Ian Lance Taylor  <iant@google.com>
12616
12617         * testsuite/initpri1.c: Don't try to use constructor priorities if
12618         compiling with gcc before 4.3.
12619
12620 2009-09-22  Mikolaj Zalewski  <mikolajz@google.com>
12621
12622         * testsuite/retain_symbols_file_test.sh (check_present): Change
12623         output file name to retain_symbols_file_test.stdout.
12624         (check_absent): Likewise.
12625
12626 2009-09-18  Craig Silverstein  <csilvers@google.com>
12627
12628         * object.cc (Sized_relobj::do_count): Test should_retain_symbol map.
12629         * options.cc: Include <cerrno> and <fstream>.
12630         (General_options::finalize): Parse -retain-symbols-file tag.
12631         * options.h: New flag.
12632         (General_options): New method should_retain_symbol, new
12633         variable symbols_to_retain.
12634         * symtab.cc (Symbol_table::sized_finalize_symbol): Test
12635         should_retain_symbol map.
12636         * testsuite/Makefile.am (retain_symbols_file_test): New test.
12637         * testsuite/Makefile.in: Regenerate.
12638         * testsuite/retain_symbols_file_test.sh: New file.
12639
12640 2009-09-18  Nick Clifton  <nickc@redhat.com>
12641
12642         * po/es.po: Updated Spanish translation.
12643
12644 2009-09-17  Doug Kwan  <dougkwan@google.com>
12645
12646         * debug.h (DEBUG_RELAXATION): New constant.
12647         (DEBUG_ALL): Add DEBUG_RELAXATION.
12648         (debug_string_to_enum): Add relaxation debug option.
12649         * layout.cc
12650         (Layout::Relaxation_debug_check::check_output_data_for_reset_values,
12651         Layout::Relaxation_debug_check::read_sections,
12652         Layout::Relaxation_debug_check::read_sections): New method definitions.
12653         (Layout::Layout): Initialize data members
12654         record_output_section_data_from_scrips_,
12655         script_output_section_data_list_ and relaxation_debug_check_.
12656         (Layout::save_segments, Layout::restore_segments,
12657         Layout::clean_up_after_relaxation, Layout::prepare_for_relaxation,
12658         Layout::relaxation_loop_body): New method definitions.
12659         (Layout::finalize): Support relaxation.  Move section layout code to
12660         Layout::relaxation_loop_body.
12661         (Layout::set_asection_address_from_script): Move code for orphan
12662         section placement out.
12663         (Layout::place_orphan_sections_in_script): New method definition.
12664         * layout.h (Output_segment_headers, Output_file_header):
12665         New forward class declarations.
12666         (Layout::~Layout): Define.
12667         (Layout::new_output_section_data_from_script): New method definition.
12668         (Layout::place_orphan_sections_in_script): New method declaration.
12669         (Layout::Segment_states): New type declaration.
12670         (Layout::save_segments, Layout::restore_segments,
12671         Layout::clean_up_after_relaxation, Layout::prepare_for_relaxation,
12672         Layout::relaxation_loop_body): New method declarations.
12673         (Layout::Output_section_data_list): New type declaration.
12674         (Layout::Relaxation_debug_check): New class definition.
12675         (Layout::record_output_section_data_from_script_,
12676         Layout::script_output_section_data_list_, Layout::segment_states_,
12677         Layout::relaxation_debug_check_): New data members.
12678         * output.cc: (Output_section_headers::do_size): New method definition.
12679         (Output_section_headers::Output_section_headers): Move size
12680         computation to Output_section_headers::do_size.
12681         (Output_segment_headers::do_size): New method definition.
12682         (Output_file_header::Output_file_header): Move size computation to
12683         Output_file_header::do_size and call it.
12684         (Output_file_header::do_size): New method definition.
12685         (Output_data_group::Output_data_group): Adjust call to
12686         Output_section_data.
12687         (Output_data_dynamic::set_final_data_size): Add DT_NULL tag only once.
12688         (Output_symtab_xindex::do_write): Add array bound check.
12689         (Output_section::Input_section::print_to_mapfile): Handle
12690         RELAXED_INPUT_SECTION_CODE.
12691         (Output_section::Output_section): Initialize data member checkpoint_.
12692         (Output_section::~Output_section): Delete checkpoint object pointed
12693         by checkpoint_.
12694         (Output_section::add_input_section): Always add an Input_section if
12695         relaxing.
12696         (Output_section::add_merge_input_section): Add assert.
12697         (Output_section::relax_input_section): New method definition.
12698         (Output_section::set_final_data_size): Set load address to zero for
12699         an unallocated section.
12700         (Output_section::do_address_and_file_offset_have_reset_values):
12701         New method definition.
12702         (Output_section::Input_section_sort_enty::Input_section_sort_enty):
12703         Handle relaxed input section.
12704         (Output_section::sort_attached_input_sections): Checkpoint input
12705         section list lazily.
12706         (Output_section::get_input_sections): Change type of input_sections to
12707         list of Simple_input_section pointers.  Checkpoint input section list
12708         lazily.  Also handle relaxed input sections.
12709         (Output_section::add_input_section_for_script): Take a reference to
12710         a Simple_input_section object instead of Relobj pointer and section
12711         index as parameter.  Handle relaxed input sections.
12712         (Output_section::save_states, Output_section::restore_states): New
12713         method definitions.
12714         * output.h (Output_data::Output_data): Initialize is_data_size_fixed_.
12715         (Output_data::is_data_size_fixed): New method definition.
12716         (Output_data::reset_addresss_and_file_offset): Do not reset data size
12717         if it is fixed.
12718         (Output_data::address_and_file_offset_have_reset_values): New method
12719         definition.
12720         (Output_data::do_address_and_file_offset_have_reset_values): New method
12721         definition.
12722         (Output_data::set_data_size): Check that data size is not fixed.
12723         (Output_data::fix_data_size): New method definition.
12724         (Output_data::is_data_size_fixed_): New data member.
12725         (Output_section_headers::set_final_data_size): New method definition.
12726         (Output_section_headers::do_size): New method declaration.
12727         (Output_segment_headers::set_final_data_size): New method definition.
12728         (Output_segment_headers::do_size): New method declaration.
12729         (Output_file_header::set_final_data_size)::New method definition.
12730         (Output_file_header::do_size)::New method declaration.
12731         (Output_section_data::Output_section_data): Add new parameter
12732         is_data_size_fixed and use it to fix data size.
12733         (Output_data_const::Output_data_const): Adjust call to base class
12734         constructor and fix data size.
12735         (Output_data_const_buffer::Output_data_const_buffer): Adjust call to
12736         base class constructor and fix data size.
12737         (Output_data_fixed_space::Output_data_fixed_space): Adjust call to
12738         base class constructor and fix data size.
12739         (Output_data_zero_fill::Output_data_zero_fill): Adjust call to base
12740         class constructor and fix data size.
12741         (Output_data_group::set_final_data_size): New method definition.
12742         (Output_data_dynamic::Dynamic_entry::tag): New method definition.
12743         (Output_symtab_xindex::Output_symtab_xindex): Adjust call to base
12744         class constructor and fix data size.
12745         (Output_relaxed_input_section): New class definition.
12746         (Output_section::Simple_input_section): New class definition.
12747         (Output_section::get_input_sections): Adjust parameter list.
12748         (Output_section::add_input_section_for_script): Same.
12749         (Output_section::save_states, Output_section::restore_states,
12750         Output_section::do_address_and_file_offset_have_reset_values,
12751         (Output_section::Input_section::Input_section): Handle
12752         RELAXED_INPUT_SECTION_CODE.  Add new overload for
12753         Output_relaxed_input_section.
12754         (Output_section::Input_section::is_input_section,
12755         Output_section::Input_section::set_output_section): Handle relaxed
12756         input section.
12757         (Output_section::Input_section::is_relaxed_input_section,
12758         Output_section::Input_section::output_section_data,
12759         Output_section::Input_section::relaxed_input_section): New method
12760         definitions.
12761         (Output_section::Input_section::RELAXED_INPUT_SECTION_CODE): New enum
12762         value.
12763         (Output_section::Input_section::u1_): Update comments.
12764         (Output_section::Input_section::u2_): Add new union member poris.
12765         (Output_section::Checkpoint_output_section): New classs definition.
12766         (Output_section::relax_input_section): New method declaration.
12767         (Output_section::checkpoint_): New data member.
12768         (Output_segment): Update comments.
12769         (Output_segment::Output_segment): Un-privatize copy constructor.
12770         (Output_segment::operator=): Un-privatize.
12771         * script-sections.cc (Output_section_element::Input_section_list):
12772         Change element type to Output_section::Simple_input_section.
12773         (Output_section_element_dot_assignment::set_section_addresses):
12774         Register output section data for relaxation clean up.
12775         (Output_data_exression::Output_data_expression): Adjust call to base
12776         constructor to fix data size.
12777         (Output_section_element_data::set_section_addresses): Register
12778         Output_data_expression object for relaxation clean up.
12779         (struct Input_section_info): Replace Relobj pointer and section index
12780         pair with Output_section::Simple_input_section and Convert struct to a
12781         class.
12782         (Input_section_sorter::operator()): Adjust access to
12783         Input_section_info data member to use accessors.
12784         (Output_section_element_input::set_section_addresses): Use layout
12785         parameter.  Adjust code to use Output_section::Simple_input_section
12786         and Input_secction_info classes.  Register filler for relaxation
12787         clean up.
12788         (Orphan_output_section::set_section_addresses): Replace Relobj pointer
12789         and section index pair with Output_section::Simple_input_section
12790         class.  Adjust code accordingly.
12791         (Phdrs_element::release_segment): New method definition.
12792         (Script_sections::attach_sections_using_phdrs_clause): Do not modify
12793         segment list.
12794         (Script_sections::release_segments): New method definition.
12795         * gold/script-sections.h (Script_sections::release_segments): New
12796         method declaration.
12797         * gold/target.h (Target::may_relax, Target::relax,
12798         Target::do_may_relax, Target::do_relax): New method definitions.
12799
12800 2009-09-17  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
12801
12802         * arm.cc (has_signed_unsigned_overflow): New function.
12803         (Arm_relocate_functions::abs8): New function.
12804         (Target_arm::Scan::local): Handle R_ARM_ABS8.
12805         (Target_arm::Scan::global): Likewise.
12806         (Target_arm::relocate::relocate): Likewise.
12807         (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
12808         Likewise.
12809
12810 2009-09-16  Cary Coutant  <ccoutant@google.com>
12811
12812         * testsuite/Makefile.am (MOSTLYCLEANFILES): Add more generated files.
12813         * testsuite/Makefile.in: Regenerate.
12814
12815 2009-09-11  Nick Clifton  <nickc@redhat.com>
12816
12817         * po/gold.pot: Updated by the Translation project.
12818
12819 2009-09-08  Cary Coutant  <ccoutant@google.com>
12820
12821         * output.cc (Output_file::open): Add execute permission to empty file.
12822         * testsuite/Makefile.am (permission_test): New test.
12823         * testsuite/Makefile.in: Regenerate.
12824
12825 2009-09-02  Ian Lance Taylor  <iant@google.com>
12826
12827         * output.cc (Output_file::resize): Call map_no_anonymous rather
12828         than map.
12829
12830 2009-09-01  Mikolaj Zalewski  <mikolajz@google.com>
12831
12832         * gold.cc: Include "incremental.h".
12833         (queue_initial_tasks): Call Incremental_checker methods.
12834         * incremental.cc: Include "output.h".
12835         (Incremental_checker::can_incrementally_link_output_file): New
12836         method.
12837         * incremental.h (Incremental_checker): New class.
12838
12839         * output.cc (Output_file::open_for_modification): New method.
12840         (Output_file::map_anonymous): Changed return type to bool.  Record
12841         map in base_ field.
12842         (Output_file::map_no_anonymous): New method, broken out of map.
12843         (Output_file::map): Use map_no_anonymous and map_anonymous.
12844         * output.h (class Output_file): Update declarations.
12845
12846 2009-08-24  Cary Coutant  <ccoutant@google.com>
12847
12848         * options.h (Command_line::Pre_options): New class.
12849         (Command_line::pre_options): New member.
12850         * options.cc (gold::options::ready_to_register): New variable.
12851         (One_option::register_option): Do nothing if not registering options.
12852         Assert if same short option registered twice.
12853         (General_options::General_options): Turn off option registration when
12854         done constructing.
12855         (Command_line::Pre_options::Pre_options): New constructor.
12856
12857 2009-08-24  Cary Coutant  <ccoutant@google.com>
12858
12859         * options.h (General_options::no_keep_memory): Remove incorrect
12860         short option.
12861
12862 2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12863
12864         * Makefile.am (am__skiplex, am__skipyacc): New.
12865         * Makefile.in: Regenerate.
12866
12867 2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12868
12869         * Makefile.am (AM_CPPFLAGS): Renamed from ...
12870         (INCLUDES): ... this.
12871         * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add -Wno-portability.
12872         (AM_CPPFLAGS): Renamed from ...
12873         (INCLUDE): ... this.
12874         * Makefile.in, testsuite/Makefile.in: Regenerate.
12875
12876         * Makefile.in: Regenerate.
12877         * aclocal.m4: Likewise.
12878         * config.in: Likewise.
12879         * configure: Likewise.
12880         * testsuite/Makefile.in: Likewise.
12881
12882         * Makefile.am (AUTOMAKE_OPTIONS): Add foreign.
12883         * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add foreign.
12884         * Makefile.in: Regenerate.
12885         * testsuite/Makefile.in: Regenerate.
12886
12887 2009-08-19  Cary Coutant  <ccoutant@google.com>
12888
12889         * resolve.cc (Symbol_table::resolve): Don't complain about defined
12890         symbols in shared libraries overridden by hidden or internal symbols
12891         in the main program.
12892
12893 2009-08-19  Chris Demetriou  <cgd@google.com>
12894
12895         * testsuite/debug_msg.sh: Match .* rather than ${srcdir} when
12896         checking source file names in error messages.
12897
12898 2009-08-18  Doug Kwan  <dougkwan@google.com>
12899
12900         * dynobj.cc (Sized_dynobj::setup): Take a Target object instead of
12901         an elcpp::Ehdr as parameter.  Adjust call to set_target.
12902         * dynobj.h (Sized_dynobj::setup): Take a Target object instead of
12903         an elfcpp::Ehdr as parameter.
12904         * object.cc (Object::set_target): Remove the version that looks up
12905         a target and sets it.
12906         (Sized_relobj::setup): Take a Target object instead of
12907         an elfcpp::Ehdr as parameter.  Adjust call to set_target.
12908         (make_elf_sized_object): Find target and ask target to
12909         make an ELF object.
12910         * object.h: (Object::set_target): Remove the version that looks up
12911         a target and sets it.
12912         (Sized_relobj::setup): Take a Target object instead of
12913         an elfcpp:Ehdr as parameter.
12914         * target.cc: Include dynobj.h.
12915         (Target::do_make_elf_object_implementation): New.
12916         (Target::do_make_elf_object): New.
12917         * target.h (Target::make_elf_object): New template declaration.
12918         (Target::do_make_elf_object): New method declarations.
12919         (Target::do_make_elf_object_implementation): New template declaration.
12920
12921 2009-08-14  Ian Lance Taylor  <iant@google.com>
12922
12923         * gold.h (FUNCTION_NAME): Define.
12924         (gold_unreachable): Use FUNCTION_NAME.
12925
12926 2009-08-12  Sriraman Tallam  <tmsriram@google.com>
12927
12928         * icf.cc (Icf::find_identical_sections): Issue a warning when a
12929         symbol in the --keep-unique list is not found.
12930
12931 2009-08-12  Sriraman Tallam  <tmsriram@google.com>
12932
12933         * icf.cc (Icf::find_identical_sections): Unfold symbols that have
12934         been maked as --keep-unique.
12935         (Icf::unfold_section): New function.
12936         * icf.h (Icf::unfold_section): New function.
12937         * options.h (General_options::keep_unique): New option.
12938         * testsuite/Makefile.am: Add commands to build icf_keep_unique_test.
12939         * testsuite/Makefile.in: Regenerate.
12940         * testsuite/icf_keep_unique_test.sh: New file.
12941         * testsuite/icf_keep_unique_test.cc: New file.
12942
12943 2009-08-12  Cary Coutant  <ccoutant@google.com>
12944
12945         PR 10471
12946         * resolve.cc (Symbol_table::resolve): Check for references from
12947         dynamic objects to hidden and internal symbols.
12948         * testsuite/Makefile.am (hidden_test.sh): New test.
12949         * testsuite/Makefile.in: Regenerate.
12950         * testsuite/hidden_test.sh: New script.
12951         * testsuite/hidden_test_1.c: New test source.
12952         * testsuite/hidden_test_main.c: New test source.
12953
12954 2009-08-11  Doug Kwan  <dougkwan@google.com>
12955
12956         * arm.cc: Update comments.
12957         (Target_arm::do_finalize_sections): Add a special PT_ARM_EXIDX
12958         segment to locate the .ARM.exidx section if present.
12959
12960 2009-08-09  Doug Kwan  <dougkwan@google.com>
12961
12962         * dynobj.h (Sized_dynobj::do_section_entsize): Revert the previous
12963         patch.
12964
12965 2009-08-07  Sriraman Tallam  <tmsriram@google.com>
12966         * dynobj.h (Sized_dynobj::do_section_entsize): Add return to avoid
12967         compiler warnings.
12968
12969 2009-08-06  Sriraman Tallam  <tmsriram@google.com>
12970
12971         * x86_64.cc (Target_x86_64::Relocate::relocate_tls): Check for a
12972         valid tls_segment only for non-debug-section relocations.
12973         * testsuite/Makefile.am: Add gc_tls_test.
12974         * testsuite/Makefile.in: Regenerate.
12975         * testsuite/gc_tls_test.cc: New file.
12976         * testsuite/gc_tls_test.sh: New file.
12977
12978 2009-08-05  Sriraman Tallam  <tmsriram@google.com>
12979
12980         * icf.cc: New file.
12981         * icf.h: New file.
12982         * Makefile.am (CCFILES): Add icf.cc.
12983         (HFILES): Add icf.h
12984         * Makefile.in: Regenerate.
12985         * dynobj.h (Sized_dynobj::do_section_entsize): New function.
12986         * gc.h (gc_process_relocs): Populate lists used by icf to contain
12987         section, symbol and addend information for the relocs.
12988         * gold.cc (queue_middle_tasks): Call identical code folding.
12989         * gold.h: Add defines for multimap.
12990         * layout.cc (Layout::create_symtab_sections): Add symtab as parameter
12991         to the call of finalize_local_symbols.
12992         * main.cc (main): Create object of class Icf.
12993         * object.cc (Sized_relobj::do_layout): Allow this function to be
12994         called twice during icf.
12995         (Sized_relobj::do_finalize_local_symbols): Fold symbols corresponding
12996         to sections marked as identical by icf.
12997         (Sized_relobj::do_section_flags): Get section_flags from Symbols_data
12998         when available.
12999         (Sized_relobj::do_section_entsize): New function.
13000         * object.h (Object::section_entsize): New function.
13001         (Object::do_section_entsize): New pure virtual function.
13002         (Relobj::finalize_local_symbols): Add new parameter.
13003         (Relobj::do_section_entsize): New function.
13004         * options.h (General_options::icf): New option.
13005         (General_options::icf_iterations): New option.
13006         (General_options::print_icf_sections): New option.
13007         * plugin.cc (Sized_pluginobj::do_section_entsize): New function.
13008         * plugin.h (Sized_pluginobj::do_section_entsize): New function.
13009         * reloc.cc (Read_relocs::run): Delay scanning relocs when doing
13010         icf.
13011         * symtab.cc (Symbol_table::is_section_folded): New function.
13012         (Symbol_table::sized_finalize_symbol):  Fold symbols corresponding
13013         to sections marked as identical by icf.
13014         * symtab.h (Symbol_table::set_icf): New function.
13015         (Symbol_table::icf): New function.
13016         (Symbol_table::is_section_folded): New function.
13017         (Symbol_table::icf_): New data member.
13018         * target-reloc.h (relocate_section): Ignore sections folded by icf.
13019         * testsuite/Makefile.am: Add commands to build icf_test.
13020         * testsuite/Makefile.in: Regenerate.
13021         * testsuite/icf_test.sh: New file.
13022         * testsuite/icf_test.cc: New file.
13023
13024 2009-07-24  Chris Demetriou  <cgd@google.com>
13025
13026         * layout.cc (is_compressible_debug_section): Fix incorrect
13027         comment about compressed section names.
13028
13029 2009-07-20  Ian Lance Taylor  <ian@airs.com>
13030
13031         PR 10419
13032         * x86_64.cc (Target_x86_64::do_code_fill): Correct nop sequences.
13033
13034 2009-07-16  Ian Lance Taylor  <iant@google.com>
13035
13036         PR 10400
13037         * layout.h: #include <map>.
13038         (class Kept_section): Change from struct to class.  Add accessors
13039         and setters.  Add section size to Comdat_group mapping.  Change
13040         Comdat_group to std::map.  Add is_comdat_ field.  Add
13041         linkonce_size field in union.
13042         (class Layout): Update declaration of find_or_add_kept_section.
13043         Don't declare find_kept_object.
13044         * layout.cc (Layout::find_or_add_kept_section): Remove candidate
13045         parameter.  Add object, shndx, is_comdat, and is_group_name
13046         parameters.  Change all callers.  Adjust for new Kept_section.
13047         (Layout::find_kept_object): Remove.
13048         * object.cc (Sized_relobj::include_section_group): Update use of
13049         Kept_section.  Rename secnum to shndx.  Only record
13050         Kept_comdat_section if sections are the same size.
13051         (Sized_relobj::include_linkonce_section): Update use of
13052         Kept_section.  Only record Kept_comdat_section if sections are the
13053         same size.  Set size of linkonce section.
13054         (Sized_relobj::map_to_kept_section): Update call to
13055         get_kept_comdat_section.
13056         * object.h (class Sized_relobj): Rename fields in
13057         Kept_comdat_section to drop trailing underscores; change object
13058         field to Relobj*.  Change Kept_comdat_section_table to store
13059         struct rather than pointer.
13060         (Sized_relobj::set_kept_comdat_section): Remove kept parameter.
13061         Add kept_object and kept_shndx parameters.  Change all callers.
13062         (Sized_relobj::get_kept_comdat_section): Change return type to
13063         bool.  Add kept_object and kept_shndx parameters.  Change all
13064         callers.
13065         * plugin.cc (Pluginobj::include_comdat_group): Update call to
13066         Layout::find_or_add_kept_section.
13067
13068 2009-07-09  Ian Lance Taylor  <iant@google.com>
13069
13070         * merge.cc (Object_merge_map::initialize_input_to_output_map):
13071         Reserve space in the hash table.
13072
13073 2009-07-06  Mikolaj Zalewski  <mikolajz@google.com>
13074
13075         * fileread.cc (File_read::get_mtime): New method.
13076         * fileread.h (Timespec): New structure.
13077         (File_read::get_mtime): New method.
13078         * incremental.cc (Incremental_inputs_entry_data::timestamp_usec):
13079         Renamed from timestamp_nsec.
13080         (Incremental_inputs_entry_write::timestamp_sec): Fix argument to
13081         Elf_Xword.
13082         (Incremental_inputs_entry_write::timestamp_usec): Renamed from
13083         timestamp_nsec.
13084         (Incremental_inputs::report_archive): Save mtime; style fix.
13085         (Incremental_inputs::report_obejct): Save mtime; style fix.
13086         (Incremental_inputs::report_script): Save mtime; style fix.
13087         (Incremental_inputs::finalize_inputs): Style fix.
13088         (Incremental_inputs::finalize): Style fix.
13089         (Incremental_inputs::create_input_section_data): Store inputs
13090         mtime.
13091         * incremental.h (Incremental_inputs::report_script): Add mtime
13092         argument.
13093         (Incremental_inputs::Input_info::Input_info): Intialize only one
13094         union member.
13095         (Incremental_inputs::Input_info::archive): Move to nameless
13096         union.
13097         (Incremental_inputs::Input_info::obejct): Move to nameless union.
13098         (Incremental_inputs::Input_info::script): Move to nameless union.
13099         (Incremental_inputs::mtime): New field.
13100         * script.cc (read_input_script): Pass file mtime to
13101         Incremental_input.
13102         * script.h (Script_info::inputs): Style fix.
13103
13104 2009-07-01  Ian Lance Taylor  <ian@airs.com>
13105
13106         * freebsd.h (Target_freebsd::do_adjust_elf_header): Use size
13107         instead of 32.
13108
13109 2009-06-24  Ian Lance Taylor  <iant@google.com>
13110
13111         PR 10156
13112         * layout.cc (Layout::choose_output_section): If we find an
13113         existing section, update the flags.
13114         (Layout::create_notes): New function, broken out of
13115         Layout::finalize.
13116         (Layout::finalize): Don't create note sections.
13117         (Layout::create_note): Don't crash if linker script discards
13118         section.
13119         (Layout::create_gold_note): Likewise.
13120         (Layout::create_build_id): Likewise.  Don't set
13121         after_input_sections on the section.
13122         (Layout::create_executable_stack_info): Remove target parameter.
13123         Change caller.
13124         * layout.h (class Layout): Declare create_notes.  Update
13125         declaration of create_executable_stack_info.
13126         * gold.cc (queue_middle_tasks): Call create_notes.
13127         * output.cc (Output_section::update_flags_for_input_section): Move
13128         here from output.h.  If SHF_ALLOC flag is newly set, mark address
13129         invalid.
13130         * output.h (Output_data::mark_address_invalid): New function.
13131         (class Output_section): Only declare, not define,
13132         update_flags_for_input_section.  Remove set_flags.
13133
13134 2009-06-24  Ian Lance Taylor  <iant@google.com>
13135
13136         * script-sections.cc (Output_section_definition::
13137         set_section_addresses): Rename shadowing local load_address to
13138         laddr.
13139
13140 2009-06-24  Ian Lance Taylor  <iant@google.com>
13141
13142         PR 10244
13143         * reloc.cc (relocate_sections): Skip empty relocation sections.
13144
13145 2009-06-23  Ian Lance Taylor  <iant@google.com>
13146
13147         PR 10156
13148         * layout.cc (Layout::create_note): Use choose_output_section
13149         rather than make_output_section.
13150
13151 2009-06-23  Ian Lance Taylor  <iant@google.com>
13152
13153         PR 10237
13154         * options.cc (General_options::parse_V): Set printed_version_.
13155         (General_options::General_options): Initialize printed_version_.
13156         * options.h (class General_options): Add printed_version_ field.
13157         * gold.cc (queue_initial_tasks): If there are no input files,
13158         don't give a fatal error if we printed the version information.
13159         (queue_middle_tasks): If using -r with a shared object, give a
13160         fatal error rather than an ordinary error.
13161
13162 2009-06-23  Ian Lance Taylor  <iant@google.com>
13163
13164         PR 10219
13165         * layout.cc (Layout::Layout): Initialize have_stabstr_section_.
13166         (Layout::make_output_section): Set have_stabstr_section_ if we see
13167         a .stab*str section.
13168         (Layout::finalize): Call link_stabs_sections.
13169         (Layout::link_stabs_sections): New file.
13170         * layout.h (class Layout): Add have_stabstr_section_ field.
13171         Declare link_stabs_sections.
13172
13173 2009-06-23  Doug Kwan  <dougkwan@google.com>
13174
13175         * Makefile.am (libgold_a_LIBADD): New.
13176         (ld_new_DEPENDENCIES, ld_new_LDADD): Remove LIBOBJS
13177         * Makefile.in: Regenerate.
13178         * config.in (HAVE_DECL_MEMMEM, HAVE_DECL_STRNDUP): New.
13179         * configure: Regenerate.
13180         * configure.ac (AC_CHECK_DECLS): Add strndup and memmem.
13181         * fileread.cc: Include sys/state.h
13182         * gold.h: Declare memmem and strndup if found missing.
13183         * gold_reloc.h: Include byteswap.h if HAVE_BYTESWAP_H is defined.
13184
13185 2009-06-23  Ian Lance Taylor  <iant@google.com>
13186
13187         * configure.ac: Call AC_CHECK_DECLS using C, not C++.
13188         * configure: Rebuild.
13189
13190 2009-06-23  Ian Lance Taylor  <iant@google.com>
13191
13192         PR 10147
13193         * object.cc (Object::section_contents): Don't try to get a view if
13194         the section has length zero.
13195         (Object::handle_gnu_warning_section): If the section is empty, use
13196         the name of the section as the warning.
13197
13198 2009-06-23  Ian Lance Taylor  <iant@google.com>
13199
13200         PR 10133
13201         * stringpool.h (class Stringpool_template): Add optimize_ field.
13202         (Stringpool_template::set_optimize): New function.
13203         * stringpool.cc (Stringpool_template::Stringpool_template):
13204         Initialize optimize_ field.
13205         (Stringpool_template::set_string_offsets): Test local optimize
13206         fild rather than parameter.
13207         * layout.cc (Layout::Layout): Call set_optimize on the section
13208         name stringpool.
13209
13210 2009-06-22  Ian Lance Taylor  <iant@google.com>
13211
13212         PR 10030
13213         * yyscript.y: Parse TARGET.
13214         * script.cc (script_set_target): New function.
13215         * script-c.h (script_set_target): Declare.
13216         * options.cc (General_options::string_to_object_format): Rename
13217         from string_to_object_format in anonymous namespace.  Change
13218         callers.
13219         * options.h (class General_options): Declare
13220         string_to_object_format.
13221
13222 2009-06-22  Ian Lance Taylor  <iant@google.com>
13223
13224         * script-sections.cc (Script_sections::create_segments): Don't put
13225         program headers in a PT_LOAD segment if -n or -N.
13226
13227 2009-06-22  Ian Lance Taylor  <iant@google.com>
13228
13229         PR 10141
13230         * options.h (class General_options): Add -z lazy and -z now.  Sort
13231         -z options into alphabetical order.
13232         * layout.cc (Layout::finish_dynamic_section): Handle -z now.
13233
13234 2009-06-21  Ian Lance Taylor  <iant@google.com>
13235
13236         * layout.cc (Layout::make_output_section): Call
13237         Target::new_output_section.
13238         (Layout::attach_allocated_section_to_segment): Put large section
13239         sections in a separate load segment with the large segment flag
13240         set.
13241         (Layout::segment_precedes): Sort large data segments after other
13242         load segments.
13243         (align_file_offset): New static function.
13244         (Layout::set_segment_offsets): Use align_file_offset.
13245         * output.h (class Output_section): Add is_small_section_ and
13246         is_large_section_ fields.
13247         (Output_section::is_small_section): New function.
13248         (Output_section::set_is_small_section):  New function.
13249         (Output_section::is_large_section): New function.
13250         (Output_section::set_is_large_section): New function.
13251         (Output_section::is_large_data_section): New function.
13252         (class Output_segment): Add is_large_data_segment_ field.
13253         (Output_segment::is_large_data_segment): New function.
13254         (Output_segment::set_is_large_data_segment): New function.
13255         * output.cc (Output_section::Output_section): Initialize new
13256         fields.
13257         (Output_segment::Output_segment): Likewise.
13258         (Output_segment::add_output_section): Add assertion that large
13259         data sections always go in large data segments.  Force small data
13260         sections to the end of the list of data sections.  Force small BSS
13261         sections to the start of the list of BSS sections.  For large BSS
13262         sections to the end of the list of BSS sections.
13263         * symtab.h (class Symbol): Declare is_common_shndx.
13264         (Symbol::is_defined): Check Symbol::is_common_shndx.
13265         (Symbol::is_common): Likewise.
13266         (class Symbol_table): Define enum Commons_section_type.  Update
13267         declarations.  Add small_commons_ and large_commons_ fields.
13268         * symtab.cc (Symbol::is_common_shndx): New function.
13269         (Symbol_table::Symbol_table): Initialize new fields.
13270         (Symbol_table::add_from_object): Put small and large common
13271         symbols in the right list.
13272         (Symbol_table::sized_finalized_symbol): Check
13273         Symbol::is_common_shndx.
13274         (Symbol_table::sized_write_globals): Likewise.
13275         * common.cc (Symbol_table::do_allocate_commons): Allocate new
13276         common symbol lists.  Don't call do_allocate_commons_list if the
13277         list is empty.
13278         (Symbol_table::do_allocate_commons_list): Remove is_tls
13279         parameter.  Add comons_section_type parameter.  Change all
13280         callers.  Handle small and large common symbols.
13281         * object.cc (Sized_relobj::do_finalize_local_symbols): Check
13282         Symbol::is_common_shndx.
13283         * resolve.cc (symbol_to_bits): Likewise.
13284         * target.h (Target::small_common_shndx): New function.
13285         (Target::small_common_section_flags): New function.
13286         (Target::large_common_shndx): New function.
13287         (Target::large_common_section_flags): New function.
13288         (Target::new_output_section): New function.
13289         (Target::Target_info): Add small_common_shndx, large_common_shndx,
13290         small_common_section_flags, and large_common_section_flags
13291         fields.
13292         (Target::do_new_output_section): New virtual function.
13293         * arm.cc (Target_arm::arm_info): Initialize new fields.
13294         * i386.cc (Target_i386::i386_info): Likewise.
13295         * powerpc.cc (Target_powerpc::powerpc_info) [all versions]:
13296         Likewise.
13297         * sparc.c (Target_sparc::sparc_info) [all versions]: Likewise.
13298         * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
13299         (Target_x86_64::do_new_output_section): New function.
13300         * configure.ac: Define conditional MCMODEL_MEDIUM.
13301         * testsuite/Makefile.am (check_PROGRAMS): Add large.
13302         (large_SOURCES, large_CFLAGS, large_DEPENDENCIES): Define.
13303         (large_LDFLAGS): Define.
13304         * testsuite/large.c: New file.
13305         * testsuite/testfile.cc (Target_test::test_target_info):
13306         Initialize new fields.
13307         * configure, testsuite/Makefile.in: Rebuild.
13308
13309 2009-06-05  Doug Kwan  <dougkwan@google.com>
13310
13311         * Makefile.am (CCFILES): Add target.cc.
13312         * Makefile.in: Regenerate.
13313         * i386.cc (class Target_i386): Define new virtual method to
13314         override do_is_local_label_name in parent.
13315         * object.cc (Sized_relobj::do_count_local_symbols): Discard
13316         local symbols if --discard-locals or -X is given.
13317         * options.h (class General_options): Declare new options
13318         '--discard-locals' and '-X' for discarding locals.
13319         * target.h (class Target): Define new methods is_local_label_name.
13320         Declare new virtual method do_is_local_label_name.
13321         * target.cc: New file.
13322         * testsuite/Makefile.am (check_PROGRAMS): Add discard_locals_test.
13323         (check_SCRIPTS): Add discard_locals_test.sh.
13324         (check_DATA): Add discard_local_tests.syms.
13325         (discard_locals_test_SOURCES, discard_locals_test_LDFLAGS): Define.
13326         (discard_local_tests.syms, discard_locals_test.o): New make rules.
13327         * testsuite/Makefile.in: Regenerate.
13328         * testsuite/discard_locals_test.c: New file.
13329         * testsuite/discard_locals_test.sh: Same.
13330
13331 2009-06-05  Doug Kwan  <dougkwan@google.com>
13332
13333         * object.cc (Sized_relobj::Sized_relobj): Initialize
13334         discarded_eh_frame_shndx_ to -1U.
13335         (Sized_relobj::do_layout): Record index of a discard .eh_frame
13336         section.
13337         (Sized_relobj::do_count_local_symbols): Skip local symbols in
13338         a discarded .eh_frame section.
13339         (Sized_relobj::do_finalize_local_symbols): Ditto.
13340         * object.h (class Sized_relobj): Declare new member
13341         discarded_eh_frame_shndx_.
13342         * testsuite/Makefile.am (check_PROGRAMS): Add local_labels_test.
13343         (local_labels_test.o, local_labels_test): New rules.
13344         * testsuite/Makefile.in: Regenerate.
13345
13346 2009-06-04  Doug Kwan  <dougkwan@google.com>
13347
13348         * layout.cc (Layout::section_name_mapping): Add mapping for
13349         special ARM sections.
13350
13351 2009-06-03  Doug Kwan  <dougkwan@google.com>
13352
13353         * arm.cc (utils::sign_extend): Reverse test in gold_assert.
13354         (utils::has_overflow): Same.
13355
13356 2009-06-03  Ian Lance Taylor  <iant@google.com>
13357
13358         * layout.cc (Layout::section_name_mapping): New array, replacing
13359         Layout::linkonce_mapping.
13360         (Layout::section_name_mapping_count): New variable, replacing
13361         Layout::linkonce_mapping_count.
13362         (Layout::linkonce_output_name): Remove.
13363         (Layout::output_section_name): Rewrite.
13364         * layout.h (class Layout): Rename Linkonce_mapping to
13365         Section_name_mapping, linkonce_mapping to section_name_mapping,
13366         linkonce_mapping_count to section_name_mapping_count.  Don't
13367         declare linkonce_output_name.
13368
13369 2009-06-03  Doug Kwan  <dougkwan@google.com>
13370
13371         * gold/arm.cc (namespace utils): New.
13372         (Target_arm::reloc_is_non_pic): Define new method.
13373         (class Arm_relocate_functions): New.
13374         (Target_arm::Relocate::relocate): Handle relocation types used by
13375         Android.
13376
13377 2009-06-03  Ian Lance Taylor  <iant@google.com>
13378
13379         * arm.cc (Target_arm::scan::global): Use || instead of |.
13380
13381 2009-06-02  Doug Kwan  <dougkwan@google.com>
13382
13383         * gold/arm.cc (Target_arm::Scan::Scan):  Initialize
13384         issued_non_pic_error_.
13385         (class Target_arm::Scan): Declare new method check_non_pic.
13386         Define new method symbol_needs_plt_entry.
13387         Declare new data member issued_non_pic_error_.
13388         (class Target_arm::Relocate): Declare new method
13389         should_apply_static_reloc.
13390         (Target_arm::may_need_copy_reloc): Handle STT_ARM_TFUNC.
13391         (Target_arm::Scan::check_non_pic): Define new method.
13392         (Target_arm::Scan::local): Handle a small subset of reloc types used
13393         by Android.
13394         (Target_arm::Scan::local): Same.
13395         (Target_arm::Relocate::should_apply_statci_reloc): Define new method.
13396
13397 2009-05-31  Mikolaj Zalewski  <mikolajz@google.com>
13398
13399         * incremental.cc (Incremental_inputs::report_command_line): Filter
13400         out --incremental-* options.
13401
13402 2009-05-29  Doug Kwan  <dougkwan@google.com>
13403
13404         * gold/arm.cc (Output_data_plt_arm): Forward declaration for new
13405         template class.
13406         (class Target_arm): Update comment.
13407         (Target_arm::Target_arm): Initialize new data members GOT_,
13408         PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_ and DYNBSS_.
13409         Declare new methods Target_arm::got_section, Target_arm::make_plt_entry
13410         and Target_arm::rel_dyn_section.
13411         Declare new_enum Target_arm::Got_type.
13412         Declare new data members GOT_, PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_
13413         and DYNBSS_.
13414         Update commments for member do_dynsym_value.
13415         (Target_arm::got_size, Target_arm::plt_section,
13416         Target_arm::may_need_copy_reloc and Target_arm::copy_reloc): Define
13417         new methods inside class defintion.
13418         (Target_arm::got_section): Define new method.
13419         (Target_arm::rel_dyn_section): Same.
13420         (Output_data_plt_arm): New template class.
13421         (Output_data_plt_arm::Output_data_plt_arm): Define constructor.
13422         (Output_data_plt_arm:do_adjust_output_section): Define new method.
13423         (Output_data_plt_arm::add_entry): Same.
13424         (Output_data_plt_arm::first_plt_entry): Define new
13425         static data member for PLT instruction template.
13426         (Output_data_plt_arm::plt_entry): Same.
13427         (Output_data_plt_arm::do_write): Define new method.
13428         (Target_arm::make_plt_entry): Same.
13429         (Target_arm::do_finalize_sections): Same.
13430         (Target_arm::do_dynsym_value): Same.
13431
13432 2009-05-28  Doug Kwan  <dougkwan@google.com>
13433
13434         * Makefile.am (TARGETSOURCES): Add arm.cc.
13435         (ALL_TARGETOBJECTS): Add arm.$(OBJEXT)
13436         * Makefile.in: Regenerate.
13437         * arm.cc: New file.
13438         * configure.tgt: Add armbe*-*-*, armeb*-*-* and arm*-*-* targets.
13439
13440 2009-05-26  Doug Kwan  <dougkwan@google.com>
13441
13442         * options.cc (General_options::parse_exclude_libs).  Fix a comment.
13443         (General_options::check_excluded_libs): Strip off directories in
13444         archive name before matching like GNU ld does.
13445         * testsuite/Makefile.am (MOSTLYCLEANFILES,
13446         exclude_libs_test_DEPENDENCIES): Add alt/libexclude_libs_test_3.a
13447         (exclude_libs_test_LDFLAGS): Add linker option
13448         -Wl,--exclude-libs,libexclude_libs_test_3
13449         (exclude_libs_test_LADD): Add alt/libexclude_libs_test_3.a as
13450         an explicit archive without using -l.
13451         (alt/libexclude_libs_test_3.a): New make rule.
13452         * testsuite/Makefile.in: Regenerate.
13453         * testsuite/exclude_libs_test.c : Declare lib3_default().
13454         (main): Call it.
13455         * exclude_libs_test.sh: Add tests for alt/exclude_libs_test_3.a.
13456         * exclude_libs_test_3.c: New file.
13457
13458 2009-05-26  Nick Clifton  <nickc@redhat.com>
13459
13460         * po/id.po: New Indonesian translation.
13461         * po/gold.pot: Updated template file.
13462
13463 2009-05-22  Sriraman Tallam  <tmsriram@google.com>
13464
13465         * testsuite/Makefile.am: Add -ffunction-sections to compile
13466         gc_comdat_test files.  Add -Wl,--gc-sections to build
13467         gc_comdat_test.
13468         * testsuite/Makefile.in: Regenerate.
13469         * testsuite/gc_comdat_test.sh: Fix the condition around grep.
13470
13471 2009-05-21  Sriraman Tallam  <tmsriram@google.com>
13472
13473         * object.cc (Sized_relobj::map_to_kept_section): Return NULL if the
13474         kept comdat section was garbage collected.
13475         * testsuite/Makefile.am: Add test gc_comdat_test.sh.
13476         * testsuite/Makefile.in: Regenerate.
13477         * testsuite/gc_comdat_test.sh: New file.
13478         * testsuite/gc_comdat_test_1.cc: New file.
13479         * testsuite/gc_comdat_test_2.cc: New file.
13480
13481 2009-05-19  Doug Kwan  <dougkwan@google.com>
13482
13483         * archive.cc (Archive::Archive): Move constructor from archive.h
13484         to here.  Initialize no_export_.
13485         (Archive::get_elf_object_for_member): Set no_export flag of object.
13486         * archive.h (Archive::Archive): Move constructor body to
13487         archive.cc.
13488         (Archive::no_export): New method.
13489         (Archive::no_export_): New field.
13490         * object.h (Object::Object): Initialize no_export_ to false.
13491         (Object::no_export, Object::set_no_export): New methods.
13492         (Object::no_export_): New field.
13493         * options.cc (General_options::parse_exclude_libs): New method.
13494         (General_options::check_excluded_libs) Same.
13495         * options.h (exclude_libs): New option.
13496         (General_options::check_excluded_libs): New method declaration.
13497         (General_options::excluded_libs_): New field.
13498         * symtab.cc (Symbol_table::add_from_relobj): Hide symbols with
13499         default or protected visibility if an object has no-export flag set.
13500         testsuite/Makefile.am (check_PROGRAMS): Add exclude_libs_test.
13501         (check_SCRIPTS): Add exclude_libs_test.sh.
13502         (check_DATA): Add exclude_libs_test.syms.
13503         (MOSTLYCLEANFILES): Add exclude_libs_test.syms,
13504         libexclude_libs_test_1.a and libexclude_libs_test_2.a.
13505         (exclude_libs_test_SOURCES, exclude_libs_test_DEPENDENCIES,
13506         exclude_libs_test_LDFLAGS and exclude_libs_test_LDADD): Define.
13507         (exclude_libs_test.syms, libexclude_libs_test_1.a,
13508         libexclude_libs_test_2.a): New rules.
13509         * testsuite/Makefile.in: Regenerate.
13510         * testsuite/exclude_libs_test.c: New file.
13511         * testsuite/exclude_libs_test.sh: Ditto.
13512         * testsuite/exclude_libs_test_1.c: Ditto.
13513         * testsuite/exclude_libs_test_2.c: Ditto.
13514
13515 2009-05-15  Ian Lance Taylor  <iant@google.com>
13516
13517         * configure.ac: Check for declarations for cases where libiberty.h
13518         checks HAVE_DECL_xxx.
13519         * configure, config.in: Rebuild.
13520
13521 2009-05-15  Mikolaj Zalewski  <mikolajz@google.com>
13522
13523         * gold.h (Incremental_argument_list): Remove (invalid) forward
13524         declaration.
13525         * incremental.cc (Incremental_inputs::report_achive): New method.
13526         (Incremental_inputs::report_object): New method.
13527         (Incremental_inputs::report_script): New method.
13528         (Incremental_inputs::finalize_inputs): New method.
13529         (Incremental_inputs::finalize): Call finalize_inputs().
13530         (Incremental_inputs::sized_create_incremental_inputs_section_data):
13531         Create inputs entries.
13532         * incremental.h (Incremental_input_type): New enum.
13533         (Incremental_inputs::Incremental_input): Initialize new fields.
13534         (Incremental_inputs::report_inputs): New method.
13535         (Incremental_inputs::report_achive): New method.
13536         (Incremental_inputs::report_object): New method.
13537         (Incremental_inputs::report_script): New method.
13538         (Incremental_inputs::finalize_inputs): New method.
13539         (Incremental_inputs::Input_info): New struct.
13540         (Incremental_inputs::Input_info_map): New typedef.
13541         (Incremental_inputs::lock_): New field.
13542         (Incremental_inputs::Inputs_): New field.
13543         (Incremental_inputs::Inputs_map): New field.
13544         * main.cc (main): Call Incremental_input::report_inputs.
13545         * options.h (Input_argument_list): Typedef moved from
13546         Input_arguments.
13547         (Input_file_group::Files): Remove, use ::Input_argument_list.
13548         (Input_file_group::Input_argument_list): Remove, use
13549         ::Input_argument_list.
13550         * plugin.cc (Plugin_manager::add_input_file): Add error in
13551         incremental build.
13552         * read_syms.cc (do_read_syms): Call Incremental_input::report_*
13553         functions.
13554         * script.cc (read_input_script): Call
13555         Incremental_input::report_script.
13556         * script.h (Script_info): New class.
13557
13558 2009-04-27  Ian Lance Taylor  <iant@google.com>
13559
13560         * x86_64.cc (do_adjust_output_section): Set entsize to
13561         plt_entry_size.
13562
13563 2009-04-23  Elliott Hughes  <enh@google.com>
13564
13565         * output.cc (Output_file::close): After short writes, continue
13566         writing from the correct offset in the buffer being written.
13567
13568 2009-04-23  Chris Demetriou  <cgd@google.com>
13569
13570         * configure.ac (HAVE_TR1_UNORDERED_MAP_REHASH): New define.
13571         * configure: Regenerate.
13572         * config.in: Regenerate.
13573         * gold.h: Avoid std::tr1::unordered_map and std::tr1::unordered_set
13574         if HAVE_TR1_UNORDERED_MAP_REHASH is not defined.
13575
13576 2009-04-21  Mikolaj Zalewski  <mikolajz@google.com>
13577
13578         * incremental.cc (Incremental_inputs_header_data): Renamed from
13579         Incremental_input_header_data.
13580         (Incremental_inputs_header_data::data_size): New field.
13581         (Incremental_inputs_header_data::put_input_file_count): Renamed
13582         from input_file_count.
13583         (Incremental_inputs_header_data::put_command_line_offset): Renamed
13584         from command_line_offset.
13585         (Incremental_inputs_header_data::put_reserved): Renamed from
13586         put_reserved.
13587         (Incremental_inputs_entry_data): Renamed from
13588         Incremental_input_entry_data.
13589         (Incremental_inputs_entry_data::data_size): New field.
13590         (Incremental_inputs::report_command_line): New method.
13591         (Incremental_inputs::finalize): New method.
13592         (Incremental_inputs::create_incremental_inputs_data): New method.
13593         (Incremental_inputs::sized_create_incremental_inputs_data): New method.
13594         * incremental.h: New file.
13595         * layout.cc (Layout::Layout): Handle new incremental_inputs_.
13596         (Layout::finalize): Create incremental inputs section in
13597         incremental builds.
13598         (Layout::create_incremental_info_sections): New method.
13599         * layout.h (Layout::incremental_inputs): New method.
13600         (Layout::create_incremental_info_sections): New method.
13601         (Layout::incremental_inputs_): New field.
13602         * main.cc (main): Notify Incremental_input of the command line.
13603
13604 2009-04-01  Ian Lance Taylor  <iant@google.com>
13605             Mikolaj Zalewski  <mikolajz@google.com>
13606
13607         * gold.h (reserve_unordered_map): Define, three versions, one for
13608         each version of Unordered_map.
13609         * layout.cc (Layout::Layout): Remove options parameter.  Add
13610         number_of_input_files parameter.  Don't initialize options_.
13611         Initialize number_of_input_files_ and resized_signatures_.  Move
13612         sections_are_attached_.
13613         (Layout::layout_group): Reserve space for group_signatures_.
13614         (Layout::find_or_add_kept_section): Change name parameter to be a
13615         reference.  Resize signatures_ map when it gets large enough.
13616         (Layout::layout_eh_frame): Use parameters->options() instead of
13617         this->options_.
13618         (Layout::make_output_section): Likewise.
13619         (Layout::attach_allocated_section_to_segment): Likewise.
13620         (Layout::finalize, Layout::create_executable_stack): Likewise.
13621         (Layout::set_segment_offsets, Layout::create_interp): Likewise.
13622         (Layout::finish_dynamic_section, Layout::write_binary): Likewise.
13623         * layout.h (class Layout): Update declarations.  Remove options_
13624         field.  Add number_of_input_files_ and resized_signatures_
13625         fields.  Move sections_are_attached_ field.
13626         * main.cc (main): Pass number of input files to Layout
13627         constructor.  Don't pass options.
13628
13629 2009-03-30  Ian Lance Taylor  <iant@google.com>
13630
13631         * ffsll.c (ffsll): Correct implementation.
13632
13633 2009-03-27  Ian Lance Taylor  <iant@google.com>
13634
13635         * ffsll.c: New file.
13636         * configure.ac: Call AC_REPLACE_FUNCS on ffsll.
13637         * gold.h (ffsll): Declare if HAVE_FFSLL is not defined.
13638         * ftruncate.c (ftruncate): Declare before definition.
13639         * mremap.c (mremap): Likewise.
13640         * pread.c (pread): Likewise.
13641         * configure, Makefile.in, config.in: Rebuild.
13642
13643         * mremap.c: New file.
13644         * configure.ac: Call AC_REPLACE_FUNCS on mremap.
13645         * gold.h (MREMAP_MAYMOVE): Define if HAVE_MREMAP is not defined.
13646         (mremap): Declare if HAVE_MREMAP is not defined.
13647         * configure, Makefile.in, config.in: Rebuild.
13648
13649 2009-03-27  Cary Coutant  <ccoutant@google.com>
13650
13651         * powerpc.cc (Target_powerpc::check_non_pic): Assert that output is
13652         position independent.
13653         * sparc.cc (Target_sparc::check_non_pic): Likewise.
13654         * x86_64.cc (Target_x86_64::check_non_pic): Likewise.
13655
13656 2009-03-24  Cary Coutant  <ccoutant@google.com>
13657
13658         * symtab.h (needs_plt_entry): Check for unsatisfied reference from
13659         an executable.
13660         (needs_dynamic_reloc): Likewise.
13661
13662 2009-03-24  Ian Lance Taylor  <iant@google.com>
13663
13664         * yyscript.y (file_cmd): Recognize EXTERN.
13665         (extern_name_list, extern_name_list_body): New nonterminals.
13666         * script.cc (script_add_extern): Define.
13667         * script-c.h (script_add_extern): Declare.
13668
13669 2009-03-24  Rafael Avila de Espindola  <espindola@google.com>
13670
13671         * object.cc (is_elf_object): Define.
13672         * object.h (is_elf_object): Declare.
13673         * archive.cc (Archive::get_elf_object_for_member): Call
13674         is_elf_object.
13675         * readsyms.cc (Read_symbols::do_read_symbols): Likewise.
13676
13677 2009-03-24  Elliott Hughes  <enh@google.com>
13678
13679         * output.cc (Output_file::map_anonymous): Define.
13680         (Output_file::map): Use map_anonymous.  If the regular mmap fails,
13681         try an anonymous one.  Report the size if the mmap fails.
13682         * output.h (class Output_file): Declare map_anonymous.
13683
13684 2009-03-24  Ian Lance Taylor  <iant@google.com>
13685
13686         * target-select.cc (instantiate_target): Don't acquire the lock if
13687         the instantiated_target_ field has already been set.
13688
13689 2009-03-23  Ian Lance Taylor  <iant@google.com>
13690
13691         * gold-threads.h (class Initialize_lock): Define.
13692         * gold-threads.cc (class Initialize_lock_once): Define.
13693         (initialize_lock_control): New static variable.
13694         (initialize_lock_pointer): New static variable.
13695         (initialize_lock_once): New static function.
13696         (Initialize_lock::Initialize_lock): Define.
13697         (Initialize_lock::initialize): Define.
13698         * target-select.h: Include "gold-threads.h".
13699         (class Target_selector): Add lock_ and initialize_lock_ fields.
13700         Don't define instantiate_target, just declare it.
13701         * target-select.cc (Target_selector::Target_selector): Initialize
13702         new fields.
13703         (Target_selector::instantiate_target): Define.
13704         * descriptors.h: Include "gold-threads.h".
13705         (class Descriptors): Add initialize_lock_ field.
13706         * descriptors.cc (Descriptors::Descriptors): Initialize new
13707         field.
13708         (Descriptors::open): Use initialize_lock_ field
13709         * errors.h (class Errors): Add initialize_lock_ field.
13710         * errors.cc (Errors::Errors): Initialize new field.
13711         (Errors::initialize_lock): Use initialize_lock_ field.
13712         * powerpc.cc (class Target_selector_powerpc): Remove
13713         instantiated_target_ field.  In do_recognize call
13714         instantiate_target rather than do_instantiate_target.  In
13715         do_instantiate_target just allocate a new target.
13716         * sparc.cc (class Target_selector_sparc): Likewise.
13717
13718         * freebsd.h: New file.
13719         * i386.cc: Include "freebsd.h".
13720         (Target_i386): Derive from Target_freebsd rather than
13721         Sized_target.
13722         (Target_selector_i386): Derive from Target_selector_freebsd rather
13723         than Target_selector.
13724         * x86_64.cc: Include "freebsd.h".
13725         (Target_x86_64): Derive from Target_freebsd rather than
13726         Sized_target.
13727         (Target_selector_x86_64): Derive from Target_selector_freebsd
13728         rather than Target_selector.
13729         * target.h (class Target): Add adjust_elf_header and
13730         do_adjust_elf_header.
13731         * output.cc (Output_file_header:: do_sized_write): Call target
13732         adjust_elf_header routine.
13733         * configure.tgt: Set targ_osabi.
13734         * configure.ac: Define GOLD_DEFAULT_OSABI.
13735         * parameters.cc (Parameters::default_target): Pass
13736         GOLD_DEFAULT_OSABI to select_target.
13737         * target-select.h (class Target_selector): Make instantiate_target
13738         protected rather than private.
13739         * Makefile.am (HFILES): Add freebsd.h.
13740         * configure, Makefile.in, config.in: Rebuild.
13741
13742         * merge.cc (do_add_input_section): Correct pend value.  Change
13743         message about last entry not being null terminated from error to
13744         warning.
13745
13746 2009-03-20  Mikolaj Zalewski  <mikolajz@google.com>
13747
13748         * incremental.cc: New file.
13749         * Makefile.am (CCFILES): Add incremental.cc.
13750         * Makefile.in: Rebuild.
13751
13752 2009-03-19  Paul Pluzhnikov  <ppluzhnikov@google.com>
13753
13754         * layout.cc (Layout::output_section_name): Preserve names
13755         of '.note.' sections.
13756
13757 2009-03-19  Ian Lance Taylor  <iant@google.com>
13758
13759         * descriptors.cc (Descriptors::open): Check that the options are
13760         valid before using them.
13761
13762 2009-03-18  Ian Lance Taylor  <iant@google.com>
13763
13764         * script-sections.h: Include <list>.
13765         (class Script_sections): Change Sections_elements from std::vector
13766         to std::list.  Typedef public Elements_iterator.  Add
13767         orphan_section_placement_, data_segment_align_start_, and
13768         saw_data_segment_align_ fields.  Remove data_segment_align_index_
13769         field.
13770         * script-sections.cc (class Orphan_section_placement): New class.
13771         (class Sections_element): Add virtual functions is_relro and
13772         orphan_section_init.  Remove virtual function place_orphan_here.
13773         (class Output_section_definition): Add is_relro and
13774         orphan_section_init.  Remove place_orphan_here.
13775         (class Orphan_output_section): Likewise.
13776         (Script_sections::Script_sections): Update for field changes.
13777         (Script_sections::data_segment_align): Set saw_data_segment_align_
13778         and data_segment_align_start_, not data_segment_align_index.
13779         (Script_sections::data_segment_relro_end): Check
13780         saw_data_segment_align_.  Use data_segment_align_start_ rather
13781         than data_segment_align_index_.
13782         (Script_sections::place_orphan): Rewrite to use
13783         Orphan_section_placement.
13784
13785 2009-03-17  Ian Lance Taylor  <iant@google.com>
13786
13787         * archive.cc (Archive::add_symbols): Check for a version attached
13788         to the symbol name in the archive map.
13789         * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_11.
13790         (ver_test_11_SOURCES, ver_test_11_DEPENDENCIES): Define.
13791         (ver_test_11_LDFLAGS, ver_test_11_LDADD): Define.
13792         (ver_test_11.a): New target.
13793         * testsuite/Makefile.in: Rebuild.
13794
13795         * configure.ac: Check for chsize and posix_fallocate.  Replace
13796         ftruncate.
13797         * ftruncate.c: New file, from gnulib.
13798         * output.cc (posix_fallocate): Define dummy version if not
13799         HAVE_POSIX_FALLOCATE.
13800         (Output_file::map): Call posix_fallocate rather than lseek and
13801         write.
13802         * gold.h (ftruncate): Declare if not HAVE_FTRUNCATE.
13803         * configure, Makefile.in, config.in: Rebuild.
13804
13805 2009-03-17  Paul Pluzhnikov  <ppluzhnikov@google.com>
13806
13807         * layout.h (Layout::create_note): Add section_name parameter.
13808         * layout.cc (Layout::create_note): Likewise.
13809         (Layout::create_build_id, Layout::create_gold_note): Fix callers.
13810
13811 2009-03-17  Ian Lance Taylor  <iant@google.com>
13812
13813         * descriptors.cc: Include "options.h".
13814         (FD_CLOEXEC, O_CLOEXEC): Define if not defined.
13815         (Descriptors::open): Always use O_CLOEXEC when opening a new
13816         descriptor.  If we have a plugin, and O_CLOEXEC was not defined,
13817         then set FD_CLOEXEC.
13818
13819         * sparc.cc (class Target_sparc): Add has_got_section.
13820         (Target_sparc::Scan::global): If we see _GLOBAL_OFFSET_TABLE_,
13821         make sure we have a GOT section.
13822
13823         * sparc.cc (optimize_tls_reloc): Recognize R_SPARC_TLS_IE_ADD.
13824         (Target_sparc::Scan::local): Likewise.
13825         (Target_sparc::Scan::global): Likewise.
13826         (Target_sparc::Relocate::relocate): Likewise.
13827         (Target_sparc::Relocate::relocate_tls): Likewise.
13828
13829         * symtab.cc (Symbol_table::define_default_version): New function,
13830         broken out of add_from_object.
13831         (Symbol_table::add_from_object): Call define_default_version.
13832         (Symbol_table::define_special_symbol): Add resolve_oldsym
13833         parameter.  Change all callers.  If the version for a symbol comes
13834         from a version script, resolve it with the symbol with the same
13835         name with no version.  Also add the symbol without a version if
13836         appropriate.
13837         (do_define_in_output_data): If resolving with oldsym, don't delete
13838         sym.
13839         (do_define_in_output_segment): Likewise.
13840         (do_define_as_constant): Likewise.
13841         * symtab.h (class Symbol_table): Update declarations.
13842
13843 2009-03-13  Ian Lance Taylor  <iant@google.com>
13844
13845         * readsyms.cc (Read_symbols::incompatible_warning): New function.
13846         (Read_symbols::requeue): New function.
13847         (Read_symbols::do_read_symbols): If make_elf_object fails because
13848         the target type is not configured, and the file was searched for,
13849         issue a warning and retry with the next directory.
13850         (Add_symbols::run): If the file has an incompatible format, and
13851         it was searched for, requeue the Read_symbols task.  On error,
13852         release the object.
13853         * readsyms.h (class Read_symbols): Add dirindex_ field.  Add
13854         dirindex parameter to constructor.  Change all callers.  Declare
13855         incompatible_warning and requeue.
13856         (class Add_symbols): Add dirpath_, dirindex_, mapfile_,
13857         input_argument_ and input_group_ fields.  Add them to
13858         constructor.  Change all callers.
13859         (class Read_script): Add dirindex_ field.  Add it to constructor.
13860         Change all callers.
13861         * archive.cc (Archive::setup): Remove input_objects parameter.
13862         Change all callers.
13863         (Archive::get_file_and_offset): Likewise.
13864         (Archive::read_all_symbols): Likewise.
13865         (Archive::read_symbols): Likewise.
13866         (Archive::get_elf_object_for_member): Remove input_objects
13867         parameter.  Add punconfigured parameter.  Change all callers.
13868         (Archive::add_symbols): Change return type to bool.  Check return
13869         value of include_member.
13870         (Archive::include_all_members): Likewise.
13871         (Archive::include_member): Change return type to bool.  Return
13872         false if first included object has incompatible target.  Set
13873         included_member_ field.
13874         (Add_archive_symbols::run): If add_symbols returns false, requeue
13875         Read_symbols task.
13876         * archive.h (class Archive): Add included_member_ field.
13877         Initialize it in constructor.  Add input_file and searched_for
13878         methods.  Update declarations.
13879         (class Add_archive_symbols): Add dirpath_, dirindex_, and
13880         input_argument_ fields.  Add them to constructor.  Change all
13881         callers.
13882         * script.cc: Include "target-select.h".
13883         (class Parser_closure): Add skip_on_incompatible_target_ and
13884         found_incompatible_target_ fields.  Add
13885         skip_on_incompatible_target parameter to constructor.  Change all
13886         callers.  Add methods skip_on_incompatible_target,
13887         clear_skip_on_incompatible_target, found_incompatible_target, and
13888         set_found_incompatible_target.
13889         (read_input_script): Add dirindex parameter.  Change all callers.
13890         If parser finds an incompatible target, requeue Read_symbols
13891         task.
13892         (script_set_symbol): Clear skip_on_incompatible_target in
13893         closure.
13894         (script_add_assertion, script_parse_option): Likewise.
13895         (script_start_sections, script_add_phdr): Likewise.
13896         (script_check_output_format): New function.
13897         * script.h (read_input_script): Update declaration.
13898         * script-c.h (script_check_output_format): Declare.
13899         * yyscript.y (file_cmd): Handle OUTPUT_FORMAT.
13900         (ignore_cmd): Remove OUTPUT_FORMAT.
13901         * fileread.cc (Input_file::Input_file): Add explicit this.
13902         (Input_file::will_search_for): New function.
13903         (Input_file::open): Add pindex parameter.  Change all callers.
13904         * fileread.h (class Input_file): Add input_file_argument method.
13905         Declare will_search_for.  Update declarations.
13906         * object.cc (make_elf_object): Add punconfigured parameter.
13907         Change all callers.
13908         * object.h (class Object): Make input_file public.  Add
13909         searched_for method.
13910         (make_elf_object): Update declaration.
13911         * dirsearch.cc (Dirsearch::find): Add pindex parameter.  Use it to
13912         restart search.
13913         * dirsearch.h (class Dirsearch): Update declaration.
13914         * options.h (class General_options): Add --warn-search-mismatch.
13915         * parameters.cc (Parameters::is_compatible_target): New function.
13916         * parameters.h (class Parameters): Declare is_compatible_target.
13917         * workqueue.cc (Workqueue::add_blocker): New function.
13918         * workqueue.h (class Workqueue): Declare add_blocker.
13919
13920         * fileread.cc (Input_file::open): Remove options parameter.
13921         Change all callers.
13922         (Input_file::open_binary): Likewise.
13923         * script.cc (read_input_script): Likewise.
13924         * readsyms.h (class Read_symbols): Remove options_ field.  Remove
13925         options parameter from constructor.  Change all callers.
13926         (class Read_script): Likewise.
13927         * fileread.h (class Input_file): Update declarations.
13928         * script.h (read_input_script): Update declaration.
13929
13930 2009-03-10  Nick Clifton  <nickc@redhat.com>
13931
13932         * po/es.po: New Spanish translation.
13933
13934 2009-03-06  Cary Coutant  <ccoutant@google.com>
13935
13936         * options.cc (parse_short_option): Keep dash_z from registering itself.
13937
13938 2009-03-03  Ian Lance Taylor  <iant@google.com>
13939
13940         PR 9918
13941         * target-reloc.h (relocate_section): Pass output_section to
13942         relocate.
13943         * i386.cc (Target_i386::should_apply_static_reloc): Add
13944         output_section parameter.  Change all callers.
13945         (Target_i386::Relocate::relocate): Add output_section parameter.
13946         * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
13947         * sparc.cc (Target_sparc::Relocate::relocate): Likewise.
13948         * powerpc.cc (Target_powerpc::Relocate::relocate): Likewise.
13949         * testsuite/two_file_shared.sh: New script.
13950         * testsuite/Makefile.am (check_SCRIPTS): Add two_file_shared.sh.
13951         (check_DATA): Add two_file_shared.dbg.
13952         (two_file_shared.dbg): New target.
13953         * testsuite/Makefile.in: Rebuild.
13954
13955 2009-03-01  Ian Lance Taylor  <iant@google.com>
13956
13957         * configure.ac: Check for byteswap.h.
13958         * configure: Rebuild.
13959         * config.in: Rebuild.
13960
13961 2009-03-01  Mikolaj Zalewski  <mikolajz@google.com>
13962
13963         * layout.cc (Layout::find_or_add_kept_section): New function.
13964         (Layout::add_comdat): Removed.
13965         * layout.h (struct Kept_section): Move out of class Layout.
13966         Remove trailing underscores from field names.  Add group_sections
13967         field.  Rename group_ field to is_group.  Change all uses.
13968         (class Layout): Declare find_or_add_kept_section, not add_comdat.
13969         * object.cc (Sized_relobj::Sized_relobj): Don't initialize
13970         comdat_groups_ field.
13971         (Sized_relobj::include_section_group): Use
13972         find_or_add_kept_section and Kept_section::group_sections.
13973         (Sized_relobj::include_linkonce_section): Likewise.
13974         * object.cc (class Sized_relobj): Don't define Comdat_group or
13975         Comdat_group_table.  Remove find_comdat_group and
13976         add_comdat_group.  Remove comdat_groups_ field.
13977         * plugin.cc (include_comdat_group): Use
13978         Layout::find_or_add_kept_section.
13979
13980 2009-02-28  Ian Lance Taylor  <iant@google.com>
13981
13982         * README: --gc-sections and map files are now supported.  Document
13983         some build requirements.
13984
13985         PR 6992
13986         * symtab.cc (Symbol_table::sized_write_section_symbol): In a
13987         relocatable link set the value of the section symbol to zero.
13988         * object.cc (Sized_relobj::do_finalize_local_symbols): In a
13989         relocatable link don't include the section address in the local
13990         symbol value.
13991
13992 2009-02-27  Ian Lance Taylor  <iant@google.com>
13993
13994         PR 6811
13995         * options.h (class Search_directory): Add is_system_directory.
13996         (class General_options): Declare is_in_system_directory.
13997         * options.cc (get_relative_sysroot): Make static.
13998         (get_default_sysroot): Make static.
13999         (General_optoins::is_in_system_directory): New function.
14000         * fileread.cc (Input_file::is_in_system_directory): New function.
14001         * fileread.h (class Input_file): Declare is_in_system_directory.
14002         * object.h (class Object): Add is_in_system_directory.
14003         (class Input_objects): Remove system_library_directory_ field.
14004         * object.cc (Input_objects::add_object): Don't set
14005         system_library_directory_.
14006         (input_objects::found_in_system_library_directory): Remove.
14007         * symtab.cc (Symbol_table::write_globals): Remove input_objects
14008         parameter.  Change all callers.
14009         (Symbol_table::sized_write_globals): Likewise.
14010         (Symbol_table::warn_about_undefined_dynobj_symbol): Likewise.
14011         Call Object::is_in_system_directory.
14012         * symtab.h (class Symbol_table): Update declarations.
14013
14014         PR 5990
14015         * descriptors.h (Open_descriptor): Add is_on_stack field.
14016         * descriptors.cc (Descriptors::open): If the descriptor is on the
14017         top of the stack, remove it.  Initialize is_on_stack field.
14018         (Descriptors::release): Only add pod to stack if it is not on the
14019         stack already.
14020         (Descriptors::close_some_descriptor): Clear stack_next and
14021         is_on_stack fields.
14022
14023         PR 7091
14024         * output.cc (Output_section::find_starting_output_address): Rename
14025         from starting_output_address; add PADDR parameter; change return
14026         type.
14027         * output.h (class Output_section): Declare
14028         find_starting_output_address instead of starting_output_address.
14029         * object.cc (Sized_relobj::do_finalize_local_symbols): Handle a
14030         section symbol for which we can't find a merge section.
14031
14032         PR 9836
14033         * symtab.cc (Symbol_table::add_from_object): If the visibility is
14034         hidden or internal, force the symbol to be local.
14035         * resolve.cc (Symbol::override_visibility): Define.
14036         (Symbol::override_base): Use override_visibility.
14037         (Symbol_table::resolve): Likewise.
14038         (Symbol::override_base_with_special): Likewise.
14039         (Symbol_table::override_with_special): If the visibility is hidden
14040         or internal, force the symbol to be local.
14041         * symtab.h (class Symbol): Add set_visibility and
14042         override_visibility.
14043         * testsuite/ver_test_1.sh: New file.
14044         * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_1.sh.
14045         (check_DATA): Add ver_test_1.syms.
14046         (ver_test_1.syms): New target.
14047         * testsuite/Makefile.in: Rebuild.
14048
14049 2009-02-25  Cary Coutant  <ccoutant@google.com>
14050
14051         * layout.cc (Layout::choose_output_section): Don't rename sections
14052         when using a linker script that has a SECTIONS clause.
14053         * Makefile.in: Regenerate.
14054
14055         * testsuite/Makefile.am (script_test_5.sh): New test case.
14056         * testsuite/Makefile.in: Regenerate.
14057         * testsuite/script_test_5.cc: New file.
14058         * testsuite/script_test_5.sh: New file.
14059         * testsuite/script_test_5.t: New file.
14060
14061 2009-02-13  Rafael Avila de Espindola  <espindola@google.com>
14062
14063         * archive.cc (Archive::include_member): Update calls to add_symbols.
14064         * dynobj.cc (Sized_dynobj<size, big_endian>::make_version_map): Add
14065         the Layout argument.
14066         * dynobj.h (do_add_symbols): Add the Layout argument.
14067         * object.cc (Sized_relobj<size, big_endian>::do_add_symbols): Add the
14068         Layout argument.
14069         * object.h (Object::add_symbols): Add the Layout argument.
14070         (Object::do_add_symbols): Add the Layout argument.
14071         (Sized_relobj::do_add_symbols): Add the Layout argument.
14072         * plugin.cc (Sized_pluginobj<size, big_endian>::do_add_symbols):
14073         Unify the two versions.
14074         (Add_plugin_symbols): Remove.
14075         * plugin.h (Pluginobj::add_symbols, Pluginobj::do_add_symbols): Remove.
14076         (Sized_pluginobj::do_add_symbols): Unify the two versions.
14077         (Add_plugin_symbols): Remove.
14078         * readsyms.cc (Read_symbols::do_read_symbols): Update call to
14079         Add_symbols. Use Add_symbols instead of Add_plugin_symbols.
14080         (Add_symbols::run): Make it work with Pulginobj.
14081
14082 2009-02-06  Ian Lance Taylor  <iant@google.com>
14083
14084         * object.cc (Sized_relobj::do_layout): Make info message start
14085         with lower case letter.
14086
14087 2009-02-06  Mikolaj Zalewski  <mikolajz@google.com>
14088
14089         * binary.cc: Fix file comment.
14090
14091         * options.h (enum Incremental_disposition): Define.
14092         (class General_options): Add new options: --incremental,
14093         --incremental_changed, --incremental_unchanged,
14094         --incremental_unknown.  Add incremental_disposition_ and
14095         implicit_incremental_ fields.
14096         (General_options::incremental_disposition): New function.
14097         (class Position_dependent_options): Add incremental_disposition
14098         option.
14099         (Position_dependent_options::copy_from_options): Set incremental
14100         dispositions.
14101         * options.cc (General_options::parse_incremental_changed): New
14102         function.
14103         (General_options::parse_incremental_unchanged): New function.
14104         (General_options::parse_incremental_unknown): New function.
14105         (General_options::General_options): Initialize new fields
14106         incremental_disposition_ and implicit_incremental_.
14107         (General_options::finalize): Check for uasge of --incremental-*
14108         without --incremental.
14109
14110 2009-02-06  Chris Demetriou  <cgd@google.com>
14111
14112         * gold.h (gold_undefined_symbol): Change to take only a Symbol
14113         pointer and to report location as the file name associated with
14114         the symbol.
14115         (gold_undefined_symbol_at_location): New function to replace the
14116         old gold_undefined_symbol functionality.
14117         * target-reloc.h (relocate_section): Update to use
14118         gold_undefined_symbol_at_location.
14119         * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
14120         Call gold_undefined_symbol function rather than gold_error.
14121         * errors.h (Errors::undefined_symbol): Take location as a
14122         string, rather than calculating it from a relocation.
14123         * errors.cc (Errors::fatal): Print "fatal error:" before the
14124         formatted message.
14125         (Errors::error, Errors::error_at_location): Print "error: "
14126         before the formatted message.
14127         (Errors::undefined_symbol): Take location as a string, rather
14128         than calculating it from a relocation.
14129         (gold_undefined_symbol_at_location): New function akin to
14130         old gold_undefined_symbol, calculates location from relocation.
14131         (gold_undefined_symbol): Change to take only a Symbol pointer
14132         and to report location as the file name associated with the symbol.
14133         * testsuite/debug_msg.sh: Update for changed error messages.
14134         * testsuite/undef_symbol.sh: Likewise.
14135
14136 2009-02-04  Duncan Sands  <baldrick@free.fr>
14137
14138         PR 9812
14139         * reduced_debug_output.h
14140         (Output_reduced_debug_abbrev_section::failed): Use format for
14141         gold_warning.
14142         (Output_reduced_debug_info_section::faild): Likewise.
14143
14144 2009-01-31  Mikolaj Zalewski  <mikolajz@google.com>
14145
14146         * script.cc (Lazy_demangler): New class.
14147         (Version_script_info::get_symbol_version_helper): Demangle a
14148         symbol only once.
14149
14150 2009-01-29  Cary Coutant  <ccoutant@google.com>
14151
14152         * i386.cc (Target_i386::Relocate::relocate): Recognize non-PIC calls
14153         to __tls_get_addr.
14154         * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
14155
14156 2009-01-28  Ian Lance Taylor  <iant@google.com>
14157
14158         * version.cc (version_string): Bump to 1.9.
14159
14160         * gold.h: Include <cstring> and <stdint.h>.
14161         * version.cc: Include <cstdio>.
14162         * object.cc (Sized_relobj::do_layout): Initialize gc_sd to avoid a
14163         warning.
14164         * reduced_debug_output.cc (insert_into_vector): Rename from
14165         Insert_into_vector; change all callers.  Use Swap_unaligned to
14166         avoid aliasing issue; remove union since it is unnecessary.
14167
14168 2009-01-27  Sriraman Tallam  <tmsriram@google.com>
14169
14170         * Makefile.am (CCFILES): Add gc.cc.
14171         (HFILES): Add gc.h.
14172         * Makefile.in: Regenerate.
14173         * gold.cc (Gc_runner): New class.
14174         (queue_initial_tasks): Call garbage collection related tasks
14175         when corresponding options are invoked.
14176         (queue_middle_gc_tasks): New function.
14177         (queue_middle_tasks): Reorder tasks to allow relocs to be read and
14178         processed early before laying out sections during garbage collection.
14179         * gold.h (queue_middle_gc_tasks): New function.
14180         (is_prefix_of): Move from "layout.cc".
14181         * i386.cc (Target_i386::gc_process_relocs): New function.
14182         * layout.cc (is_prefix_of): Remove. Move to "gold.h"
14183         * main.cc (main): Create object of class "Garbage_collection".
14184         * object.cc (Relobj::copy_symbols_data): New function.
14185         (Relobj::is_section_name_included): New function.
14186         (Sized_relobj::do_layout): Allow this function to be called twice
14187         during garbage collection and defer layout of section during the
14188         first call.
14189         * object.h (Relobj::get_symbols_data): New function.
14190         (Relobj::is_section_name_included): New function.
14191         (Relobj::copy_symbols_data): New function.
14192         (Relobj::set_symbols_data): New function.
14193         (Relobj::get_relocs_data): New function.
14194         (Relobj::set_relocs_data): New function.
14195         (Relobj::is_output_section_offset_invalid): New pure virtual function.
14196         (Relobj::gc_process_relocs): New function.
14197         (Relobj::do_gc_process_relocs): New pure virtual function.
14198         (Relobj::sd_): New data member.
14199         (Sized_relobj::is_output_section_offset_invalid): New function.
14200         (Sized_relobj::do_gc_process_relocs): New function.
14201         * options.h (General_options::gc_sections): Modify to not be a no-op.
14202         (General_options::print_gc_sections): New option.
14203         * plugin.cc (Plugin_finish::run): Remove function call to
14204         Plugin_manager::layout_deferred_objects.  Move it to "gold.cc".
14205         * powerpc.cc (Target_powerpc::gc_process_relocs): New function.
14206         * reloc.cc (Read_relocs::run): Add task to process relocs and
14207         determine unreferenced sections when doing garbage collection.
14208         (Gc_process_relocs): New class.
14209         (Sized_relobj::do_gc_process_relocs): New function.
14210         (Sized_relobj::do_scan_relocs): Don't try to scan the relocs for
14211         sections that are garbage collected.
14212         * reloc.h (Gc_process_relocs): New class.
14213         * sparc.cc (Target_sparc::gc_process_relocs): New function.
14214         * symtab.cc (Symbol::should_add_dynsym_entry): Do not add entries for
14215         symbols whose corresponding sections are garbage collected.
14216         (Symbol_table::Symbol_table): Add new parameter for the garbage
14217         collection object.
14218         (Symbol_table::gc_mark_undef_symbols): New function.
14219         (Symbol_table::gc_mark_symbol_for_shlib): New function.
14220         (Symbol_table::gc_mark_dyn_syms): New function.
14221         (Symbol_table::resolve): Do not treat symbols seen in dynamic objects
14222         as garbage.
14223         (Symbol_table::add_from_object): Likewise.
14224         (Symbol_table::add_from_relobj): When building shared objects, do not
14225         treat externally visible symbols as garbage.
14226         (Symbol_table::sized_finalize_symbol): Do not check dynamic symbol
14227         table information for static and relocatable links.
14228         * symtab.h (Symbol_table::set_gc): New function.
14229         (Symbol_table::gc): New function.
14230         (Symbol_table::gc_mark_undef_symbols): New function.
14231         (Symbol_table::gc_mark_symbol_for_shlib): New function.
14232         (Symbol_table::gc_mark_dyn_syms): New function.
14233         (Symbol_table::gc_): New data member.
14234         * target.h (Sized_target::gc_process_relocs): New pure virtual
14235         function.
14236         * x86_64.cc (Target_x86_64::gc_process_relocs): New function.
14237         * testsuite/testfile.cc (Target_test::gc_process_relocs): New function.
14238
14239 2009-01-20  Chris Faylor <me.sourceware@sourceware.org>
14240
14241         * options.h (General_options::gc_sections): Define as a no-op for now.
14242         (General_options::no_keep_memory): Ditto.
14243         (General_options::Bshareable): Define.
14244         * options.cc (General_options::finalize): Honor -Bshareable.
14245
14246 2009-01-20  Andreas Schwab  <schwab@suse.de>
14247
14248         * powerpc.cc (Powerpc_relocate_functions::rel16_ha): Don't try to
14249         read the value in the contents, since we don't use it.  Use the
14250         template endianness when writing.
14251         (Relocate::relocate): Use it for R_PPC_REL16_HA.
14252
14253 2009-01-19  Andreas Schwab  <schwab@suse.de>
14254
14255         * configure.tgt (powerpc64-*): Fix targ_obj.
14256
14257 2009-01-15  Ian Lance Taylor  <iant@google.com>
14258
14259         * object.cc (Sized_relobj::write_local_symbols): Don't write out
14260         local symbols when stripping all symbols.
14261
14262 2009-01-14  Cary Coutant  <ccoutant@google.com>
14263
14264         * output.cc (Output_reloc): Add explicit instantiations.
14265
14266 2009-01-14  Cary Coutant  <ccoutant@google.com>
14267
14268         * archive.cc (Archive::get_elf_object_for_member): Remove call
14269         to File_read::claim_for_plugin.
14270         * descriptors.cc (Descriptors::open): Remove reference to
14271         is_claimed.
14272         (Descriptors::claim_for_plugin): Remove.
14273         * descriptors.h (Descriptors::claim_for_plugin): Remove.
14274         (Descriptors::is_claimed): Remove.
14275         (claim_descriptor_for_plugin): Remove.
14276         * fileread.cc (File_read::claim_for_plugin): Remove.
14277         * fileread.h (File_read::claim_for_plugin): Remove.
14278         (File_read::descriptor): Reopen descriptor if necessary.
14279         * plugin.cc  (Plugin::load): Add two new APIs to transfer vector.
14280         (Plugin_manager::all_symbols_read): Add task parameter. Change
14281         all callers.
14282         (Plugin_manager::get_input_file): New function.
14283         (Plugin_manager::release_input_file): New function.
14284         (Pluginobj::Pluginobj): Add filesize parameter and initialize
14285         corresponding data member.
14286         (Sized_pluginobj::Sized_pluginobj): Add filesize parameter
14287         and pass to base constructor. Change all callers.
14288         (get_input_file, release_input_file): New functions.
14289         (make_sized_plugin_object): Add filesize parameter. Change all callers.
14290         * plugin.h (Plugin_manager::Plugin_manager): Initialize task_ member.
14291         (Plugin_manager::all_symbols_read): Add task parameter.
14292         (Plugin_manager::get_input_file): New function.
14293         (Plugin_manager::release_input_file): New function.
14294         (Plugin_manager::task_): New data member.
14295         (Pluginobj::Pluginobj): Add filesize parameter.
14296         (Pluginobj::filename): New function.
14297         (Pluginobj::descriptor): New function.
14298         (Pluginobj::filesize): New function.
14299         (Pluginobj::filesize_): New data member.
14300         (Sized_pluginobj::Sized_pluginobj): Add filesize parameter.
14301         * readsyms.cc (Read_symbols::do_read_symbols): Remove call to
14302         File_read::claim_for_plugin; use Object::unlock to unlock the file.
14303
14304         * testsuite/Makefile.am (plugin_test_4): New test case for plugins
14305         with archive libraries.
14306         * testsuite/Makefile.in: Regenerate.
14307         * testsuite/plugin_test.c (struct sym_info): New type.
14308         (get_input_file, release_input_file): New static variables.
14309         (onload): Capture new transfer vector entries.
14310         (claim_file_hook): Stop reading at end of file according to filesize.
14311         Factor out parsing of readelf output into separate function.
14312         (all_symbols_read_hook): Exercise get_input_file and release_input_file
14313         APIs and get the source file name from the symbol table.  Convert
14314         source file name to corresponding object file name.  Print info
14315         message when adding new input files.
14316         (parse_readelf_line): New function.
14317         * testsuite/plugin_test_1.sh: Add checks for new info messages.
14318         * testsuite/plugin_test_2.sh: Likewise.
14319         * testsuite/plugin_test_3.sh: Likewise.
14320         * testsuite/plugin_test_4.sh: New test case.
14321
14322 2009-01-07  Ian Lance Taylor  <iant@google.com>
14323
14324         * version.cc (version_string): Bump to 1.8.
14325
14326 2008-12-23  Cary Coutant  <ccoutant@google.com>
14327
14328         * gold.cc (gold_exit): Call plugin cleanup handlers on exit.
14329         * plugin.cc (Plugin_manager::finish): Rename as
14330         layout_deferred_objects.  Move cleanup to separate function.
14331         (Plugin_manager::cleanup): New function.
14332         (Plugin_finish::run): Call layout_deferred_objects and cleanup
14333         separately.
14334         * plugin.h (Plugin_manager::finish): Rename as
14335         layout_deferred_objects.
14336         (Plugin_manager::cleanup): New function.
14337         (Plugin_manager::cleanup_done): New field.
14338
14339 2008-12-23  Cary Coutant  <ccoutant@google.com>
14340
14341         * plugin.cc (is_visible_from_outside): New function.
14342         (Pluginobj::get_symbol_resolution_info): Call is_visible_from_outside
14343         so we don't return "IR only" status for exported symbols or -r links.
14344
14345         * testsuite/Makefile.am (plugin_test_3): New test case.
14346         * testsuite/Makefile.in: Regenerate.
14347         * testsuite/plugin_test_3.sh: New file.
14348
14349 2008-12-22  Cary Coutant  <ccoutant@google.com>
14350
14351         * object.cc (Sized_relobj::layout_section): New function.
14352         (Sized_relobj::do_layout): Defer layout of input sections until after
14353         plugin has provided replacement files.
14354         (Sized_relobj::do_layout_deferred_sections): New function.
14355         * object.h (Relobj::set_section_offset): Remove virtual keyword.
14356         (Relobj::layout_deferred_sections): New function.
14357         (Relobj::do_layout_deferred_sections): New function.
14358         (Sized_relobj::do_layout_deferred_sections): New function.
14359         (Sized_relobj::layout_section): New function.
14360         (Sized_relobj::Deferred_layout): New structure.
14361         (Sized_relobj::deferred_layout_): New field.
14362         * plugin.cc (Plugin_manager::finish): Renamed, was cleanup.
14363         Change all callers.  Layout deferred sections.
14364         (class Plugin_finish): Renamed, was Plugin_cleanup.  Change all
14365         references.
14366         (Plugin_hook::run): Move code from do_plugin_hook inline.
14367         (Plugin_hook::do_plugin_hook): Remove.
14368         * plugin.h (Plugin_manager::Plugin_manager): Add missing initializers.
14369         (Plugin_manager::finish): Renamed, was cleanup.
14370         (Plugin_manager::should_defer_layout): New function.
14371         (Plugin_manager::add_deferred_layout_object): New function.
14372         (Plugin_manager::Deferred_layout_list): New type.
14373         (Plugin_manager::deferred_layout_objects_): New field.
14374         (Plugin_hook::do_plugin_hook): Remove.
14375
14376 2008-12-17  Ian Lance Taylor  <iant@google.com>
14377
14378         * options.h (class General_options): Add --no case for
14379         --export-dynamic.
14380
14381 2008-12-16  Cary Coutant  <ccoutant@google.com>
14382
14383         * plugin.cc (Plugin::load): Move LDPT_MESSAGE to front of transfer
14384         vector.
14385         (Plugin_manager::claim_file): Create plugin object even if
14386         plugin did not call the add_symbols callback.
14387         (Plugin_obj::get_symbol_resolution_info): Guard against plugin
14388         asking for more symbols than were added.
14389         * testsuite/Makefile.am (plugin_test_1): Add test case with
14390         no global symbols.
14391         (empty.syms): New target.
14392         * testsuite/Makefile.in: Regenerate.
14393         * testsuite/plugin_test.c (claim_file_hook): Add new debug
14394         message. Don't call add_symbols if no globals.
14395         (all_symbols_read_hook): Don't provide replacement for empty
14396         claimed file.
14397
14398 2008-12-12  Ian Lance Taylor  <iant@google.com>
14399
14400         * target-reloc.h (Default_scan_relocatable_relocs): Only discard
14401         r_type == 0 for a local symbol with r_sym == 0.
14402         (scan_relocatable_relocs): Pass r_sym to
14403         local_non_section_strategy.
14404         * reloc.cc (Emit_relocs_strategy::local_non_section_strategy): Add
14405         r_sym parameter.
14406
14407         * configure.ac: Update test for TLS descriptors: they are
14408         supported as of glibc 2.9.
14409         * configure: Rebuild.
14410
14411 2008-12-11  Ian Lance Taylor  <iant@google.com>
14412
14413         PR 7091
14414         * target-reloc.h (Default_scan_relocatable_relocs): For each
14415         function, map r_type == 0 to RELOC_DISCARD.
14416
14417 2008-12-10  Cary Coutant  <ccoutant@google.com>
14418
14419         * layout.cc (Layout::add_comdat): Allow COMDAT group from a replacement
14420         object to override a kept COMDAT group from a plugin object.
14421
14422 2008-12-09  Ian Lance Taylor  <iant@google.com>
14423
14424         PR 7088
14425         * yyscript.y (file_cmd): Handle INPUT.
14426
14427         * testsuite/initpri1.c: Change all declarations to be full
14428         prototypes by adding void, to avoid compiler warnings.
14429
14430 2008-12-05  Rafael Avila de Espindola  <espindola@google.com>
14431
14432         * options.cc (General_options::parse_plugin_opt): New.
14433         (General_options::add_plugin): The argument now is just the filename.
14434         (General_options::add_plugin_option): New.
14435         * options.h (plugin_opt): New.
14436         (add_plugin): Change argument name.
14437         (add_plugin_option): New.
14438         * plugin.cc (Plugin::load): Don't parse the plugin option.
14439         * plugin.h (Plugin::Plugin): Rename argument. Init filename_.
14440         (Plugin::add_option): New.
14441         (Plugin::args_): Change type.
14442         (Plugin::filename_): New.
14443         (Plugin_manager::add_plugin_option): New.
14444         * testsuite/Makefile.am (plugin_test_1): Use new syntax.
14445         * testsuite/Makefile.in: Regenerate.
14446
14447 2008-12-05  Cary Coutant  <ccoutant@google.com>
14448
14449         * layout.cc (Layout::include_section): Check for SHF_EXCLUDE.
14450         Handle --strip-lto-sections option.
14451         * options.h (strip_lto_sections): New option.
14452
14453 2008-12-01  Cary Coutant  <ccoutant@google.com>
14454
14455         * plugin.cc (ld_plugin_message): Change format parameter to const.
14456         Fix mismatch between new[] and delete.
14457
14458 2008-11-14  Cary Coutant  <ccoutant@google.com>
14459
14460         * reloc.cc (Sized_relobj::do_read_relocs): Use constant invalid_address
14461         instead of -1U.
14462
14463 2008-11-05  Craig Silverstein  <csilvers@google.com>
14464
14465         * options.cc (General_options::parse_dynamic_list): New function.
14466         * options.h (General_options): New flags dynamic_list,
14467         dynamic_list_data, dynamic_list_cpp_new, and
14468         dynamic_list_cpp_typeinfo.  New variable dynamic_list_.
14469         (General_options::in_dynamic_list): New function.
14470         * script.cc (Lex::Mode): New enum DYNAMIC_LIST.
14471         (Lex::can_start_name): Add support for DYNAMIC_LIST mode.
14472         (Lex::can_continue_name): Likewise.
14473         (yylex): Likewise.
14474         (read_script_file): New parameter script_options.
14475         (read_dynamic_list): New function.
14476         (Script_options::define_dynamic_list): New function.
14477         (dynamic_list_keyword_parsecodes): New variable.
14478         (dynamic_list_keywords): New variable.
14479         * script.h (Script_options::define_dynamic_list): New function
14480         prototype.
14481         (read_dynamic_list): New function prototype.
14482         * symtab.cc (strprefix): New macro.
14483         (Symbol::should_add_dynsym_entry): Support dynamic_list,
14484         dynamic_list_data, dynamic_list_cpp_new, and
14485         dynamic_list_cpp_typeinfo.
14486         * yyscript.y (PARSING_DYNAMIC_LIST): New token.
14487         (dynamic_list_expr): New rule.
14488         (dynamic_list_nodes): Likewise.
14489         (dynamic_list_node): Likewise.
14490         * testsuite/Makefile.am (dynamic_list): New test.
14491         * testsuite/Makefile.in: Regenerated.
14492         * testsuite/dynamic_list.t: New file.
14493         * testsuite/dynamic_list.sh: New file.
14494
14495 2008-11-05  Craig Silverstein  <csilvers@google.com>
14496
14497         * testsuite/tls_test_c.c: Add prototype for t11 and t11_last.
14498         * testsuite/tls_test_c.c (t11): Add explicit "void" to prototype.
14499         (t11_last): Likewise.
14500         * testsuite/ver_test_6.c (main): Likewise.
14501
14502 2008-10-07  Cary Coutant  <ccoutant@google.com>
14503
14504         * options.c (General_options::finalize): Add check for -static and
14505         -shared.
14506         * gold.cc (queue_middle_tasks): Assert that list of dynamic objects
14507         is not empty.
14508
14509 2008-10-02  Cary Coutant  <ccoutant@google.com>
14510
14511         * plugin.cc (make_sized_plugin_object): Fix conditional
14512         compilation to work when not all targets are enabled.
14513
14514 2008-09-29  Cary Coutant  <ccoutant@google.com>
14515
14516         * archive.cc (Archive::get_file_and_offset): Use filename instead
14517         of name to get library path.
14518         (Archive::include_member): Unlock external member of a thin archive.
14519
14520         * testsuite/Makefile.am (TEST_AR): New variable.
14521         (thin_archive_test_1): New test.
14522         (thin_archive_test_2): New test.
14523         * testsuite/Makefile.in: Regenerate.
14524         * testsuite/thin_archive_main.cc: New file.
14525         * testsuite/thin_archive_test_1.cc: New file.
14526         * testsuite/thin_archive_test_2.cc: New file.
14527         * testsuite/thin_archive_test_3.cc: New file.
14528         * testsuite/thin_archive_test_4.cc: New file.
14529
14530 2008-09-29  Cary Coutant  <ccoutant@google.com>
14531
14532         * mapfile.cc (Mapfile::print_input_section): Change -1U to -1ULL.
14533         * object.cc (Sized_relobj::do_layout): Use constant invalid_address
14534         instead of -1U.
14535         (Sized_relobj::do_finalize_local_symbols): Likewise.
14536         (Sized_relobj::map_to_kept_section): Likewise.
14537         * object.h (Sized_relobj::invalid_address): New constant.
14538         (Sized_relobj::do_output_section_offset): Check for invalid_address
14539         and return -1ULL.
14540         * output.cc (Output_reloc::local_section_offset): Use constant
14541         invalid_address instead of -1U.
14542         (Output_reloc::get_address): Likewise.
14543         (Output_section::output_address): Change -1U to -1ULL.
14544         * output.h (Output_reloc::invalid_address): New constant.
14545         * reloc.cc (Sized_relobj::write_sections): Use constant
14546         invalid_address instead of -1U.
14547         (Sized_relobj::relocate_sections): Likewise.
14548         * symtab.cc (Symbol_table::sized_finalize_symbol): Handle symbol
14549         values for merge sections.
14550         * target-reloc.h (relocate_for_relocatable): Use constant
14551         invalid_address instead of -1U.
14552
14553 2008-09-19  Cary Coutant  <ccoutant@google.com>
14554
14555         Add plugin functionality for link-time optimization (LTO).
14556         * configure.ac (plugins): Add --enable-plugins option.
14557         * configure: Regenerate.
14558         * config.in: Regenerate.
14559         * Makefile.am (LIBDL): New variable.
14560         (CCFILES): Add plugin.cc.
14561         (HFILES): Add plugin.h.
14562         (ldadd_var): Add LIBDL.
14563         * Makefile.in: Regenerate.
14564
14565         * archive.cc: Include "plugin.h".
14566         (Archive::setup): Don't preread archive symbols when using a plugin.
14567         (Archive::get_file_and_offset): Add memsize parameter.  Change callers.
14568         (Archive::get_elf_object_for_member): Call plugin hooks for claiming
14569         files.
14570         (Archive::include_member): Add symbols from plugin objects.
14571         * archive.h (Archive::get_file_and_offset): Add memsize parameter.
14572         * descriptors.cc (Descriptors::open): Check for file descriptors
14573         abandoned by plugins.
14574         (Descriptors::claim_for_plugin): New function.
14575         * descriptors.h (Descriptors::claim_for_plugin): New function.
14576         (Open_descriptor::is_claimed): New field.
14577         (claim_descriptor_for_plugin): New function.
14578         * fileread.cc (File_read::claim_for_plugin): New function.
14579         * fileread.h (File_read::claim_for_plugin): New function.
14580         (File_read::descriptor): New function.
14581         * gold.cc: Include "plugin.h".
14582         (queue_initial_tasks): Add task to call plugin hooks for generating
14583         new object files.
14584         * main.cc: Include "plugin.h".
14585         (main): Load plugin libraries.
14586         * object.h (Pluginobj): Declare.
14587         (Object::pluginobj): New function.
14588         (Object::do_pluginobj): New function.
14589         (Object::set_target): New function.
14590         * options.cc: Include "plugin.h".
14591         (General_options::parse_plugin): New function.
14592         (General_options::General_options): Initialize plugins_ field.
14593         (General_options::add_plugin): New function.
14594         * options.h (Plugin_manager): Declare.
14595         (General_options): Add --plugin option.
14596         (General_options::has_plugins): New function.
14597         (General_options::plugins): New function.
14598         (General_options::add_plugin): New function.
14599         (General_options::plugins_): New field.
14600         * plugin.cc: New file.
14601         * plugin.h: New file.
14602         * readsyms.cc: Include "plugin.h".
14603         (Read_symbols::do_read_symbols): Check for archive before checking
14604         for ELF file.  Call plugin hooks to claim files.
14605         * resolve.cc (Symbol_table::resolve): Record when symbol is referenced
14606         from a real object file; force override when processing replacement
14607         files.
14608         * symtab.cc (Symbol::init_fields): Initialize in_real_elf_ field.
14609         (Symbol::init_base_object): Likewise.
14610         (Symbol::init_base_output_data): Likewise.
14611         (Symbol::init_base_output_segment): Likewise.
14612         (Symbol::init_base_constant): Likewise.
14613         (Symbol::init_base_undefined): Likewise.
14614         (Symbol::output_section): Assert that object is not a plugin.
14615         (Symbol_table::add_from_pluginobj): New function.
14616         (Symbol_table::sized_finalize_symbol): Treat symbols from plugins as
14617         undefined.
14618         (Symbol_table::sized_write_globals): Likewise.
14619         (Symbol_table::add_from_pluginobj): Instantiate template.
14620         * symtab.h (Sized_pluginobj): Declare.
14621         (Symbol::in_real_elf): New function.
14622         (Symbol::set_in_real_elf): New function.
14623         (Symbol::in_real_elf_): New field.
14624         (Symbol_table::add_from_pluginobj): New function.
14625
14626         * testsuite/Makefile.am (AM_CFLAGS): New variable.
14627         (LIBDL): New variable.
14628         (LDADD): Add LIBDL.
14629         (check_PROGRAMS): Add plugin_test_1 and plugin_test_2.
14630         (check_SCRIPTS): Add plugin_test_1.sh and plugin_test_2.sh.
14631         (check_DATA): Add plugin_test_1.err and plugin_test_2.err.
14632         (MOSTLYCLEANFILES): Likewise.
14633         * testsuite/Makefile.in: Regenerate.
14634         * testsuite/plugin_test.c: New file.
14635         * testsuite/plugin_test_1.sh: New file.
14636         * testsuite/plugin_test_2.sh: New file.
14637
14638 2008-09-16  Ian Lance Taylor  <iant@google.com>
14639
14640         * target-reloc.h (relocate_section): Check whether a symbol is
14641         defined by the ABI before reporting an undefined symbol error.
14642         * target.h (Target::is_defined_by_abi): Make parameter const.
14643         (Target::do_is_defined_by_abi): Likewise.
14644         * i386.cc (Target_i386::do_is_defined_by_abi): Likewise.
14645         * powerpc.cc (Target_powerpc::do_is_defined_by_abi): Likewise.
14646         * sparc.cc (Target_sparc::do_is_defined_by_abi): Likewise.
14647         * x86_64.cc (Target_x86_64::do_is_defined_by_abi): Likewise.
14648         * testsuite/Makefile.am (tls_test_shared.so): Add -Wl,-z,defs.
14649         * testsuite/Makefile.in: Rebuild.
14650
14651         * fileread.cc (make_view): Add casts to avoid warning.
14652
14653 2008-09-16  Alexandre Oliva  <aoliva@redhat.com>
14654
14655         * i386.cc (Target_i386::define_tls_base_symbol): Update comments.
14656         * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
14657
14658 2008-09-16  Alexandre Oliva  <aoliva@redhat.com>
14659
14660         * options.h (General_options::output_is_executable): New.
14661         (General_options::output_is_pie): New.
14662         * i386.cc (Target_i386::define_tls_base_symbol): Use SEGMENT_START
14663         for shared libraries.
14664         * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
14665
14666 2008-09-11  Chris Demetriou  <cgd@google.com>
14667
14668         * options.h (origin): New -z option.
14669         * layout.cc (Layout:finish_dynamic_section): If "-z origin"
14670         is specified, set DF_ORIGIN in DT_FLAGS and set DF_1_ORIGIN
14671         in DT_FLAGS_1.
14672
14673 2008-09-05  Cary Coutant  <ccoutant@google.com>
14674
14675         * fileread.cc (File_read::make_view): Add check for attempt to map
14676         beyond end of file.
14677
14678 2008-09-05  Cary Coutant  <ccoutant@google.com>
14679
14680         * symtab.cc (Symbol_table::add_from_dynobj): Fix typos in
14681         explicit instantiations.
14682
14683 2008-08-28  Kris Van Hees  <kris.van.hees@oracle.com>
14684
14685         PR gold/6858
14686         * options.cc (General_options::finalize): Allow undefined symbols
14687         in shlibs if linking -shared.
14688
14689         PR gold/6859
14690         * symtab.cc (Symbol::init_base_undefined): Mark explicitly undefined
14691         symbols as not needing a dynsym entry.
14692
14693 2008-08-20  Craig Silverstein  <csilvers@google.com>
14694
14695         * fileread.cc (File_read::open): Do not lock the file unless it
14696         was successfully opened.
14697
14698 2008-08-14  Cary Coutant  <ccoutant@google.com>
14699
14700         * x86_64.cc (Target_x86_64::Relocate::relocat_tls):
14701         Use addend for DTPOFF32, DTPOFF64, and TPOFF32 relocs.
14702         * testsuite/tls_test.cc (struct int128): 128-bit struct
14703         for testing TLS relocs with non-zero addend.
14704         (v12): New TLS variable.
14705         (t12): New test.
14706         (t_last): Add check for v12.
14707         * testsuite/tls_test.h (t12): New function.
14708         * testsuite/tls_test_main.cc (thread_routine): Call new test.
14709
14710 2008-08-13  Ian Lance Taylor  <iant@google.com>
14711
14712         * layout.cc (Layout::attach_allocated_section_to_segment): Don't
14713         set tls_segment_ or relro_segment_.
14714         (Layout::make_output_segment): Set tls_segment_ and relro_segment_
14715         when appropriate.
14716         * output.h (Output_section::clear_is_relro): New function.
14717         * output.cc (Output_segment::add_output_section): Handle SHF_TLS
14718         sections specially even when output_data_ is empty.
14719         (Output_segment::maximum_alignment): When first section is relro,
14720         only force alignment for PT_LOAD segments.
14721         * script.cc (script_data_segment_align): New function.
14722         (script_data_segment_relro_end): New function.
14723         * script-c.h (script_data_segment_align): Declare.
14724         (script_data_segment_relro_end): Declare.
14725         * script-sections.h (class Script_sections): Declare
14726         data_segment_align and data_segment_relro_end.  Add fields
14727         segment_align_index_ and saw_relro_end_.
14728         * script-sections.cc (class Sections_element): Add set_is_relro
14729         virtual function.  Add new bool* parameter to place_orphan_here.
14730         Add get_output_section virtual function.
14731         (class Output_section_definition): Add set_is_relro.  Add new
14732         bool* parameter to place_orphan_here.  Add get_output_section.
14733         Add is_relro_ field.
14734         (Output_section_definition::Output_section_definition): Initialize
14735         evaluated_address_, evaluated_load_address, evaluated_addralign_,
14736         and is_relro_ fields.
14737         (Output_section_definition::place_orphan_here): Add is_relro
14738         parameter.
14739         (Output_section_definition::set_section_addresses): Set relro for
14740         output section.
14741         (Output_section_definition::alternate_constraint): Likewise.
14742         (class Orphan_output_section): Add new bool* parameter to
14743         place_orphan_here.  Add get_output_section.
14744         (Orphan_output_section::place_orphan_here): Add is_relro
14745         parameter.
14746         (Script_sections::Script_sections): Initialize
14747         data_segment_align_index_ and saw_relro_end_.
14748         (Script_sections::data_segment_align): New function.
14749         (Script_sections::data_segment_relro_end): New function.
14750         (Script_sections::place_orphan): Set or clear is_relro.
14751         (Script_sections::set_section_addresses): Force alignment of first
14752         TLS section.
14753         * yyscript.y (exp): Call script_data_segment_align and
14754         script_data_segment_relro_end.
14755         * testsuite/relro_script_test.t: New file.
14756         * testsuite/relro_test.cc (using_script): Declare.
14757         (t1, t2): Test using_script.
14758         * testsuite/Makefile.am (check_PROGRAMS): Add relro_script_test.
14759         (relro_script_test_SOURCES): Define.
14760         (relro_script_test_DEPENDENCIES): Define.
14761         (relro_script_test_LDFLAGS): Define.
14762         (relro_script_test_LDADD): Define.
14763         (relro_script_test.so): New target.
14764         * testsuite/Makefile.in: Rebuild.
14765
14766 2008-08-06  Cary Coutant <ccoutant@google.com>
14767
14768         * archive.cc (Archive::total_archives, Archive::total_members)
14769         (Archive::total_members_loaded): New variables.
14770         (Archive::setup): Add parameter.  Add option to preread
14771         archive symbols.
14772         (Archive::read_armap): Add counter.
14773         (Archive::get_file_and_offset): New function.
14774         (Archive::get_elf_object_for_member): New function.
14775         (Archive::read_all_symbols): New function.
14776         (Archive::read_symbols): New function.
14777         (Archive::add_symbols): Add counters.
14778         (Archive::include_all_members): Use armap to find members if it's
14779         already built.
14780         (Archive::include_member): Skip reading symbols if already read.
14781         Factored code into Archive::get_file_and_offset and
14782         Archive::get_elf_object_for_member.  Changed call to
14783         Mapfile::report_include_archive_member.
14784         (Archive::print_stats): New function.
14785         * archive.h: Declare Object and Read_symbols_data classes.
14786         (Archive::Archive): Add initializers for new members.
14787         (Archive::setup): Add parameter.
14788         (Archive::print_stats): New function.
14789         (Archive::total_archives, Archive::total_members)
14790         (Archive::total_members_loaded): New variables.
14791         (Archive::get_file_and_offset): New function.
14792         (Archive::get_elf_object_for_member): New function.
14793         (Archive::read_all_symbols): New function.
14794         (Archive::read_symbols): New function.
14795         (Archive::Archive_member): New class.
14796         (Archive::members_): New member.
14797         (Archive::num_members_): New member.
14798         * main.cc: Include archive.h.
14799         (main): Call Archive::print_stats.
14800         * mapfile.cc (Mapfile::report_include_archive_member): Delete
14801         archive parameter; member_name is now the fully-decorated name.
14802         * mapfile.h (Mapfile::report_include_archive_member): Likewise.
14803         * options.h: (General_options): Add --preread-archive-symbols option.
14804         * readsyms.cc (Read_symbols::do_read_symbols): Change call to
14805         Archive::setup.
14806
14807 2008-08-04  Ian Lance Taylor  <iant@google.com>
14808
14809         * symtab.h (Symbol::use_plt_offset): New function.
14810         * i386.cc (Relocate::relocate): Call Symbol::use_plt_offset.
14811         * powerpc.cc (Relocate::relocate): Likewise.
14812         * sparc.cc (Relocate::relocate): Likewise.
14813         * x86_64.cc (Relocate::relocate): Likewise.
14814         * testsuite/weak_plt.sh: New test.
14815         * testsuite/weak_plt_main.cc: New test.
14816         * testsuite/weak_plt_shared.cc: New test.
14817         * testsuite/Makefile.am (check_SCRIPTS): Add weak_plt.sh.
14818         (check_PROGRAMS): Add weak_plt.
14819         (check_DATA): Add weak_plt_shared.so.
14820         (weak_plt_main_pic.o, weak_plt): New targets.
14821         (weak_plt_shared_pic.o, weak_plt_shared.so): New targets.
14822         * testsuite/Makefile.in: Rebuild.
14823
14824         * testsuite/Makefile.am (weak_alias_test_1.so): Depend upon
14825         gcctestdir/ld.
14826         (weak_alias_test_2.so, weak_alias_test_4.so): Likewise.
14827         * testsuite/Makefile.in: Rebuild.
14828
14829 2008-08-04  Alan Modra  <amodra@bigpond.net.au>
14830
14831         * Makefile.am (POTFILES.in): Set LC_ALL=C.
14832         * Makefile.in: Regenerate.
14833         * po/POTFILES.in: Regenerate.
14834
14835 2008-07-29  Ian Lance Taylor  <iant@google.com>
14836
14837         * script.cc (Script_options::finalize_symbols): Finalize SECTIONS
14838         symbols before other symbols.
14839         * testsuite/script_test_2.cc (test_addr): Declare.
14840         (test_addr_alias): Declare.
14841         (main): Check that test_addr and test_addr_alias have the right
14842         values.
14843         * testsuite/script_test_2.t: Define test_addr_alias and
14844         test_addr.
14845
14846 2008-07-24  Ian Lance Taylor  <iant@google.com>
14847
14848         PR 5990
14849         * descriptors.cc: New file.
14850         * descriptors.h: New file.
14851         * gold-threads.h (class Hold_optional_lock): New class.
14852         * fileread.cc: Include "descriptors.h".
14853         (File_read::~File_read): Release descriptor rather than closing
14854         it.
14855         (File_read::open) [file]: Call open_descriptor rather than open.
14856         Set is_descriptor_opened_.
14857         (File_read::open) [memory]: Assert that descriptor is not open.
14858         (File_read::reopen_descriptor): New function.
14859         (File_read::release): Release descriptor.
14860         (File_read::do_read): Make non-const.  Reopen descriptor.
14861         (File_read::read): Make non-const.
14862         (File_read::make_view): Reopen descriptor.
14863         (File_read::do_readv): Likewise.
14864         * fileread.h (class File_read): Add is_descriptor_opened_ field.
14865         Update declarations.
14866         * layout.cc: Include "descriptors.h".
14867         (Layout::create_build_id): Use open_descriptor rather than open.
14868         * output.cc: Include "descriptors.h".
14869         (Output_file::open): Use open_descriptor rather than open.
14870         * archive.cc (Archive::const_iterator): Change Archive to be
14871         non-const.
14872         (Archive::begin, Archive::end): Make non-const.
14873         (Archive::count_members): Likewise.
14874         * archive.h (class Archive): Update declarations.
14875         * object.h (Object::read): Make non-const.
14876         * Makefile.am (CCFILES): Add descriptors.cc.
14877         (HFILES): Add descriptors.h.
14878         * Makefile.in: Rebuild.
14879
14880         PR 6716
14881         * gold.h: Always include <clocale>.  Add Solaris workarounds
14882         following code in binutils/sysdep.h.
14883
14884         PR 6048
14885         * ehframe.cc (Eh_frame::add_ehframe_input_section): Check whether
14886         this->eh_frame_hdr_ is NULL before using it.
14887
14888         * dynobj.cc (Versions::Versions): Update comment.
14889
14890         * dynobj.cc (Versions::Versions): If there is an soname, use it as
14891         the base version name.
14892
14893         * stringpool.cc (Stringpool_template::add_with_length): Set key to
14894         array size plus one.
14895         (Stringpool_template::set_string_offsets): Subtract one from key
14896         before using it as an array index.
14897         (Stringpool_template::get_offset_with_length): Likewise.
14898         (Stringpool_template::write_to_buffer): Likewise.
14899         * stringpool.h (Stringpool_template::get_offset_from_key):
14900         Likewise.
14901
14902 2008-07-23  Ian Lance Taylor  <iant@google.com>
14903
14904         PR 6658
14905         * object.h (Merged_symbol_value::value): Do our best to handle a
14906         negative addend.
14907
14908         PR 6647
14909         * script.cc (Version_script_info::get_versions): Don't add empty
14910         version tag to return value.
14911         (Version_script_info::get_symbol_version_helper): Change return
14912         type to bool.  Add pversion parameter.  Change all callers.
14913         (script_register_vers_node): Don't require a non-NULL tag.
14914         * script.h (class Version_script_info): Update declarations.
14915         (Version_script_info::get_symbol_version): Change return type to
14916         bool.  Add version parameter.  Change all callers.
14917         * symtab.cc (Sized_symbol::add_from_relobj): Rework version
14918         handling.  Handle an empty version from a version script.
14919         (Symbol_table::define_special_symbol): Likewise.
14920         * testsuite/ver_test_10.script: New file.
14921         * testsuite/ver_test_10.sh: New file.
14922         * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_10.sh.
14923         (check_DATA): Add ver_test_10.syms.
14924         (ver_test_10.syms, ver_test_10.so): New target.
14925         * testsuite/Makefile.in: Rebuild.
14926
14927 2008-07-23  Simon Baldwin  <simonb@google.com>
14928
14929         * symtab.cc (Symbol_table::sized_write_symbol): Only set st_size
14930         to zero for undefined symbols from dynamic libraries.
14931
14932 2008-07-23  Ian Lance Taylor  <iant@google.com>
14933
14934         * symtab.cc (Symbol_table::resolve): Remove version parameter.
14935         Change all callers.
14936         * symtab.h (class Symbol_table): Update declaration.
14937         * testsuite/ver_test_9.cc: New file.
14938         * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_9.
14939         (ver_test_9_SOURCES, ver_test_9_DEPENDENCIES): Define.
14940         (ver_test_9_LDFLAGS, ver_test_9_LDADD): Define.
14941         (ver_test_9.so, ver_test_9.o): New targets.
14942         * testsuite/Makefile.in: Rebuild.
14943
14944 2008-07-22  Ian Lance Taylor  <iant@google.com>
14945
14946         * options.h (class General_options): Define --check-sections.
14947         * layout.cc (Layout::set_segment_offsets): Handle
14948         --check-sections.
14949
14950         * options.h (class General_options): Define -n/--nmagic and
14951         -N/--omagic.
14952         * options.cc (General_options::finalize): For -n/--nmagic or
14953         -N/--omagic, set -static.
14954         * layout.cc (Layout::attach_allocated_section_to_segment): If
14955         -N/--omagic, don't put read-only and read-write sections in
14956         different segments.
14957         (Layout::find_first_load_seg): If -N/--omagic, don't insist on
14958         finding a read-only segment.
14959         (Layout::set_segment_offsets): If -N/--omagic or -n/--nmagic,
14960         don't set the minimum segment alignment to the common page size,
14961         and don't set the file offset to the address modulo the page size.
14962         * script-sections.cc (Script_sections::create_segments): If
14963         -n/--omagic, don't put read-only and read-write sections in
14964         different segments.
14965
14966         * cref.cc: New file.
14967         * cref.h: New file.
14968         * options.h (class General_options): Add --print-symbol-counts.
14969         * main.cc (main): Issue defined symbol report if requested.
14970         * archive.cc (Archive::interpret_header): Make into a const member
14971         function.
14972         (Archive::add_symbols): Call Input_objects::archive_start and
14973         archive_stop.
14974         (Archive::const_iterator): Define new class.
14975         (Archive::begin, Archive::end): New functions.
14976         (Archive::include_all_members): Rewrite to use iterator.
14977         (Archive::count_members): New function.
14978         * archive.h (class Archive): Update declarations.
14979         (Archive::filename): New function.
14980         * object.cc: Include "cref.h".
14981         (Sized_relobj::Sized_relobj): Initialize defined_count_.
14982         (Sized_relobj::do_get_global_symbol_counts): New function.
14983         (Input_objects::add_object): Add object to cross-referencer.
14984         (Input_objects::archive_start): New function.
14985         (Input_objects::archive_stop): New function.
14986         (Input_objects::print_symbol_counts): New function.
14987         * object.h: Declare Cref and Archive.
14988         (Object::get_global_symbol_counts): New function.
14989         (Object::do_get_global_symbol_counts): New pure virtual function.
14990         (class Sized_relobj): Add defined_count_ field.  Update
14991         declarations.
14992         (class Input_objects): Add cref_ field.  Update constructor.
14993         Update declarations.
14994         * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize symbols_ and
14995         defined_count_.
14996         (Sized_dynobj::do_add_symbols): Allocate symbols_ if printing
14997         symbol counts.
14998         (Sized_dynobj::do_get_global_symbol_counts): New function.
14999         * dynobj.h (class Sized_dynobj): Add fields symbols_ and
15000         defined_count_.  Update declarations.  Define Symbols typedef.
15001         * symtab.cc (Symbol_table::add_from_relobj): Add defined
15002         parameter.  Change all callers.
15003         (Symbol_table::add_from_dynobj): Add sympointers and defined
15004         parameters.  Change all callers.
15005         * symtab.h (class Symbol_table): Update declarations.
15006         * Makefile.am (CCFILES): Add cref.cc.
15007         (HFILES): Add cref.h.
15008         * Makefile.in: Rebuild.
15009
15010 2008-07-22  Simon Baldwin  <simonb@google.com>
15011
15012         * symtab.cc (Symbol_table::sized_write_symbol): Set symbol size
15013         to zero when writing undefined symbols.
15014
15015 2008-07-22  Ian Lance Taylor  <iant@google.com>
15016
15017         * output.cc (Output_section::add_input_section): Don't try to
15018         merge empty merge sections.
15019
15020 2008-07-21  Craig Silverstein  <csilvers@google.com>
15021
15022         * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
15023         Include symbol version in error message.
15024
15025 2008-07-20  Chris Demetriou  <cgd@google.com>
15026
15027         * configure.ac (gold_cv_c_random_seed): New configured variable.
15028         (RANDOM_SEED_CFLAGS): New substituted variable.
15029         * Makefile.am (AM_CFLAGS, AM_CXXFLAGS): Add $(RANDOM_SEED_CFLAGS).
15030         * configure: Rebuild.
15031         * Makefile.in: Likewise.
15032         * testsuite/Makefile.in: Likewise.
15033
15034 2008-07-18  Ian Lance Taylor  <iant@google.com>
15035
15036         * symtab.cc (Symbol_table::add_from_object): Rewrite the case
15037         where we see NAME/NULL and NAME/VERSION  as separate symbols.
15038         * testsuite/ver_test_main.cc (main): Call t4.
15039         (t4, t4_2a): Define.
15040         * testsuite/ver_test_2.cc (t4_2): Define.
15041         * testsuite/ver_test_2.script: Put t4_2a in VER2.
15042         * testsuite/ver_test_4.cc (t4_2a): Define.
15043         * testsuite/ver_test_4.script: Put t4_2a in VER2.
15044         * testsuite/ver_test.h (t4, t4_2, t4_2a): Declare.
15045
15046 2008-07-17  Ian Lance Taylor  <iant@google.com>
15047
15048         * dynobj.cc (Versions::add_def): If we give an error about a
15049         missing version, go ahead and create the version anyhow.
15050
15051 2008-07-10  Ian Lance Taylor  <iant@google.com>
15052
15053         Handle output sections with more than 0x7fffffff bytes.
15054         * object.h (class Relobj): Change map_to_output_ to
15055         output_sections_, and just keep a section pointer.  Change all
15056         uses.  Move comdat group support to Sized_relobj.
15057         (Relobj::is_section_specially_mapped): Remove.
15058         (Relobj::output_section): Remove poff parameter.  Change all
15059         callers.
15060         (Relobj::output_section_offset): New function.
15061         (Relobj::set_section_offset): Rewrite.
15062         (Relobj::map_to_output): Remove.
15063         (Relobj::output_sections): New function.
15064         (Relobj::do_output_section_offset): New pure virtual function.
15065         (Relobj::do_set_section_offset): Likewise.
15066         (class Sized_relobj): Add section_offsets_ field.  Add comdat
15067         group support from Relobj.  Update declarations.
15068         (Sized_relobj::get_output_section_offset): New function.
15069         (Sized_relobj::do_output_section_offset): New function.
15070         (Sized_relobj::do_set_section_offset): New function.
15071         * object.cc (Relobj::output_section_address): Remove.
15072         (Sized_relobj::Sized_relobj): Initialize new fields.
15073         (Sized_relobj::include_section_group): Cast find_kept_object to
15074         Sized_relobj.
15075         (Sized_relobj::include_linkonce_section): Likewise.
15076         (Sized_relobj::do_layout): Use separate arrays for output section
15077         and output offset.
15078         (Sized_relobj::do_count_local_symbols): Change map_to_output to
15079         output_sections.
15080         (Sized_relobj::do_finalize_local_symbols): Change map_to_output to
15081         output_sections and section_offsets.
15082         (Sized_relobj::write_local_symbols): Likewise.
15083         (map_to_kept_section): Compute output address directly.
15084         * reloc.cc (Sized_relobj::do_read_relocs): Change map_to_output to
15085         output_sections and section_offsets.
15086         (Sized_relobj::write_sections): Likewise.
15087         (Sized_relobj::relocate_sections): Likewise.
15088         * symtab.cc (sized_finalize_symbol): Use output_section_offset.
15089         * output.h (class Output_reloc): Update declarations.  Change
15090         u2_.relobj to Sized_relobj*.
15091         (class Output_data_reloc): Change add functions to use
15092         Sized_relobj*.
15093         * output.cc (Output_reloc::Output_reloc): Change relobj to
15094         Sized_relobj*.
15095         (Output_reloc::local_section_offset): Change return type to
15096         Elf_Addr.  Use get_output_section_offset.
15097         (Output_reloc::get_address): Likewise.
15098         (Output_section::is_input_address_mapped): Don't call
15099         is_section_specially_mapped.
15100         (Output_section::output_offset): Likewise.
15101         (Output_section::output_address): Likewise.
15102         (Output_section::starting_output_address): Likewise.
15103         * copy-relocs.cc (Copy_relocs::copy_reloc): Change object
15104         parameter to Sized_relobj*.
15105         (Copy_relocs::need_copy_reloc): Likewise.
15106         (Copy_relocs::save): Likewise.
15107         * copy-relocs.h (class Copy_relocs): Update declarations.
15108         (class Copy_relocs::Copy_reloc_entry): Change constructor to use
15109         Sized_relobj*.  Change relobj_ field to Sized_relobj*.
15110         * target-reloc.h (relocate_for_relocatable): Change
15111         offset_in_output_section type to Elf_Addr.  Change code that uses
15112         it as well.
15113         * layout.cc (Layout::layout): Always set *off.
15114         * mapfile.cc (Mapfile::print_input_section): Use
15115         output_section_offset.
15116         * i386.cc (Target_i386::copy_reloc): Change object parameter to
15117         Sized_relobj*.
15118         * powerpc.cc (Target_powerpc::copy_reloc): Likewise.
15119         * sparc.cc (Target_sparc::copy_reloc): Likewise.
15120         * x86_64.cc (Target_x86_64::copy_reloc): Likewise.
15121
15122 2008-07-03  Ian Lance Taylor  <iant@google.com>
15123
15124         * layout.cc (Layout::include_section): Do not discard unrecognized
15125         SHT_STRTAB sections.
15126
15127 2008-06-30  Craig Silverstein  <csilvers@cs.stanford.edu>
15128
15129         * script.cc (Lex::can_continue_name): Make '?' allowable in
15130         version-script names.
15131         * testsuite/version_script.map: Change glob pattern to use '?'
15132
15133 2008-06-30  Manish Singh  <yosh@gimp.org>
15134
15135         PR 6585
15136         * symtab.cc (Symbol_table::add_undefined_symbols_from_command_line):
15137         Correct typo.
15138
15139 2008-06-30  Ian Lance Taylor  <iant@google.com>
15140
15141         PR 6660
15142         PR 6682
15143         * powerpc.cc (Powerpc_relocate_functions::addr16_ha) [both
15144         versions]: Don't try to read the value in the contents, since we
15145         don't use it.  Use the template endianness when writing.
15146
15147 2008-06-25  Cary Coutant  <ccoutant@google.com>
15148
15149         * fileread.cc (File_read::make_view): Assert on zero-length view.
15150         * object.cc (Sized_relobj::do_read_symbols): Don't try to read
15151         symbol table when there are no symbols to read.
15152
15153 2008-06-23  Craig Silverstein  <csilvers@google.com>
15154
15155         * version.cc (version_string): Bump to 1.7
15156
15157 2008-06-18  Craig Silverstein  <csilvers@google.com>
15158
15159         * powerpc.cc (Powerpc_relocate_functions::addr16_ha): cast
15160         constant 0xFFFF to type Valtype.
15161         (Powerpc_relocate_functions::rel16_ha): Likewise.
15162
15163 2008-06-17  Ian Lance Taylor  <iant@google.com>
15164
15165         * output.h (Output_section::Input_section): Initialize p2align_ to
15166         zero for Output_section_data constructors.
15167         (Output_section::Input_section::addralign): If not an input
15168         section, return the alignment of the Output_section_data.
15169         * testsuite/copy_test.cc: New file.
15170         * testsuite/copy_test_1.cc: New file.
15171         * testsuite/copy_test_2.cc: New file.
15172         * testsuite/Makefile.am (check_PROGRAMS): Add copy_test.
15173         (copy_test_SOURCES, copy_test_DEPENDENCIES): New variables.
15174         (copy_test_LDFLAGS, copy_test_LDADD): New variables.
15175         (copy_test_1_pic.o, copy_test_1.so): New targets.
15176         (copy_test_2_pic.o, copy_test_2.so): New targets.
15177         * testsuite/Makefile.in: Rebuild.
15178
15179         * script-sections.cc (Script_sections::place_orphan): Initialize
15180         local variable exact.
15181
15182 2008-06-13  David Edelsohn  <edelsohn@gnu.org>
15183
15184         * powerpc.cc (Output_data_plt_powerpc::do_write): 8 + 4 = 0xC.
15185
15186 2008-06-12  David Edelsohn  <edelsohn@gnu.org>
15187             David S. Miller  <davem@davemloft.net>
15188
15189         * powerpc.cc: New file.
15190         * Makefile.am (TARGETSOURCES): Add powerpc.cc
15191         (ALL_TARGETOBJS): Add powerpc.$(OBJEXT)
15192         * configure.tgt: Add entries for powerpc-* and powerpc64-*.
15193         * Makefile.in: Rebuild.
15194
15195 2008-06-09  Ian Lance Taylor  <iant@google.com>
15196
15197         * testsuite/relro_test.cc: Include <cstdio>, <cstdlib>, and
15198         <exception>.
15199         (throwing, orig_terminate): New static variables.
15200         (terminate_handler): New static function.
15201         (t2): Set terminate handler.
15202
15203 2008-06-05  Kris Van Hees  <kris.van.hees@oracle.com>
15204
15205         PR 6584
15206         * binary.cc (Binary_to_elf::sized_convert): Fix .data
15207         alignment.
15208
15209 2008-05-30  Cary Coutant  <ccoutant@google.com>
15210
15211         * archive.cc (Archive::include_all_members) Correct to step
15212         over symbol table and extended name table in thin archives.
15213
15214 2008-05-29  Kris Van Hees  <kris.van.hees@oracle.com>
15215
15216         PR 6407
15217         * target-reloc.h (relocate_for_relocatable): Fix new_offset
15218         calculation.
15219
15220 2008-05-28  Caleb Howe  <cshowe@google.com>
15221
15222         * reduced_debug_output.cc: New file.
15223         * reduced_debug_output.h: New file.
15224         * options.h (class General_options): Add --strip-debug-non-line.
15225         * options.cc (General_options::finalize): Add strip_debug_non_line
15226         to the strip heirarchy.
15227         * layout.h (class Layout): Add debug_abbrev_ and debug_info_
15228         fields.
15229         * layout.cc: Include "reduced_debug_output.h".
15230         (Layout::Layout): Initialize new fields.
15231         (line_only_debug_sections): New static array.
15232         (is_lines_only_debug_sections): New static inline function.
15233         (Layout::include_section): Handle --strip-debug-non-line.
15234         (Layout::make_output_section): If --strip-debug-non-line, build
15235         new output sections for .debug_abbrev and .debug_info.
15236         * dwarf_reader.cc (read_unsigned_LEB_128): Move to namespace
15237         gold.  Warn about possible overflow.
15238         (read_signed_LEB_128): Likewise.
15239         * dwarf_reader.h: (read_unsigned_LEB_128): Declare.
15240         (read_signed_LEB_128): Declare.
15241         * Makefile.am (CCFILES): Add reduced_debug_output.cc.
15242         (HFILES): Add reduced_debug_output.h.
15243         * Makefile.in: Rebuild.
15244
15245 2008-05-21  Ian Lance Taylor  <iant@google.com>
15246
15247         * mapfile.cc: New file.
15248         * mapfile.h: New file.
15249         * options.h (class General_options): Add -M/--print-map and -Map.
15250         * options.cc (General_options::finalize): Make -M equivalent to
15251         -Map -.
15252         * main.cc: Include <cstdio> and "mapfile.h".
15253         (main): Open mapfile if requested.
15254         * gold.cc (class Middle_runner): Add mapfile_ field.  Update
15255         constructor.  Change caller.
15256         (queue_initial_tasks): Add mapfile parameter.  Change caller.
15257         (queue_middle_tasks): Likewise.
15258         * gold.h (queue_initial_tasks, queue_middle_tasks): Update
15259         declarations.
15260         * archive.cc: Include "mapfile.h".
15261         (Archive::add_symbols): Add mapfile parameter.  Change all
15262         callers.  Pass mapfile, symbol, and reason to include_member.
15263         (Archive::include_all_members): Add mapfile parameter.  Change all
15264         callers.
15265         (Archive::include_member): Add mapfile, sym, and why parameters.
15266         Change all callers.  Report inclusion to map file.
15267         * archive.h: Include "fileread.h".
15268         (class Archive): Update declarations.
15269         (Archive::file): New const method.
15270         (class Add_archive_symbols): Add mapfile_ field.  Update
15271         constructor.  Change all callers.
15272         * readsyms.h (class Read_symbols): Likewise.
15273         (class Finish_group): Likewise.
15274         (class Read_script): Likewise.
15275         * common.cc: Include "mapfile.h".
15276         (Symbol_table::allocate_commons): Add mapfile parameter.  Change
15277         all callers.
15278         (Symbol_table::do_allocate_commons): Likewise.
15279         (Symbol_table::do_allocate_commons_list): Likewise.  Report common
15280         symbol allocation to mapfile.
15281         * common.h (class Allocate_commons_task): Add mapfile_ field.
15282         Update constructor.  Change all callers.
15283         * symtab.h (class Symbol_table): Update declarations.
15284         * layout.cc: Include "mapfile.h".
15285         (Layout_task_runner::run): Print information to mapfile.
15286         (Layout::create_gold_note): Change Output_data_fixed_space to
15287         Output_data_zero_fill.
15288         (Layout::create_build_id): Likewise.
15289         (Layout::print_to_mapfile): New function.
15290         * layout.h (class Layout_task_runner): Add mapfile_ field.  Update
15291         constructor.  Change caller.
15292         (class Layout): Declare print_to_mapfile.
15293         * output.cc (Output_section::Input_section::print_to_mapfile): New
15294         function.
15295         (Output_section::add_input_section): If producing a map, always
15296         add to input_sections_ list.
15297         (Output_section::do_print_to_mapfile): New function.
15298         (Output_segment::print_sections_to_mapfile): New function.
15299         (Output_segment::print_section_list_to_mapfile): New function.
15300         * output.h: Include "mapfile.h".
15301         (Output_data::print_to_mapfile): New function.
15302         (Output_data::do_print_to_mapfile): New virtual function.
15303         (Output_segment_headers::do_print_to_mapfile): New function.
15304         (Output_file_header::do_print_to_mapfile): New function.
15305         (Output_data_const::do_print_to_mapfile): New function.
15306         (class Output_data_const_buffer): Add map_name_ field.  Update
15307         constructor.  Change all callers.  Add do_print_to_mapfile
15308         function.
15309         (class Output_data_fixed_space): Likewise.
15310         (class Output_data_space): Likewise.
15311         (class Output_data_zero_fill): New class.
15312         (Output_data_strtab::do_print_to_mapfile): New function.
15313         (Output_data_reloc_base::do_print_to_mapfile): New function.
15314         (Output_relocatable_relocs::do_print_to_mapfile): New function.
15315         (Output_data_group::do_print_to_mapfile): New function.
15316         (Output_data_got::do_print_to_mapfile): New function.
15317         (Output_data_dynamic::do_print_to_mapfile): New function.
15318         (Output_symtab_xindex::do_print_to_mapfile): New function.
15319         (class Output_section): Declare do_print_to_mapflie.  Declare
15320         print_to_mapfile in Input_section.
15321         (class Output_segment): Declare new functions.
15322         * object.h (Sized_relobj::symbol_count): New function.
15323         * script-sections.cc
15324         (Output_section_element_dot_assignment::set_section_addresses):
15325         Change Output_data_fixed_space to Output_data_zero_fill.
15326         (Output_data_expression::do_print_to_mapfile): New function.
15327         * script.cc (read_input_script): Add mapfile parameter.  Change
15328         all callers.
15329         * script.h (read_input_script): Update declaration.
15330         * ehframe.h (Eh_frame_hdr::do_print_to_mapfile): New function.
15331         (Eh_frame::do_print_to_mapfile): New function.
15332         * merge.h (Output_merge_data::do_print_to_mapfile): New function.
15333         (Output_merge_string::do_print_to_mapfile): New function.
15334         * i386.cc (Output_data_plt_i386::do_print_to_mapfile): New
15335         function.
15336         * sparc.cc (Output_data_plt_sparc::do_print_to_mapfile): New
15337         function.
15338         * x86_64.cc (Output_data_plt_x86_64::do_print_to_mapfile): New
15339         function.
15340         * Makefile.am (CCFILES): Add mapfile.cc.
15341         (HFILES): Add mapfile.h.
15342         * Makefile.in: Rebuild.
15343
15344 2008-05-19  Ian Lance Taylor  <iant@google.com>
15345
15346         * options.h (class General_options): Add -z relro.
15347         * layout.cc (Layout::Layout): Initialize relro_segment_.
15348         (Layout::add_output_section_data): Return the output section.
15349         (Layout::make_output_section): Rcognize relro sections and mark
15350         them appropriately.
15351         (Layout::attach_allocated_section_to_segment): Put relro sections
15352         in a PT_GNU_RELRO segment.
15353         (Layout::create_initial_dynamic_sections): Mark the .dynamic
15354         section as relro.
15355         (Layout::segment_precedes): Sort PT_GNU_RELRO segments after
15356         PT_TLS segments.
15357         (Layout::linkonce_mapping): Map d.rel.ro.local to
15358         .data.rel.ro.local.
15359         (Layout::output_section_name): Us .data.rel.ro.local for any
15360         section which begins with that.
15361         * layout.h (class Layout): Update add_output_section_data
15362         declaration.  Add relro_segment_ field.
15363         * output.cc (Output_section::Output_section): Initialize is_relro_
15364         and is_relro_local_ fields.
15365         (Output_segment::add_output_section): Group relro sections.
15366         (Output_segment::is_first_section_relro): New function.
15367         (Output_segment::maximum_alignment): If there is a relro section,
15368         align the segment to the common page size.
15369         (Output_segment::set_section_addresses): Track whether we are
15370         looking at relro sections.  If the last section is a relro
15371         section, align to the common page size.
15372         (Output_segment::set_section_list_addresses): Add in_relro
15373         parameter.  Change all callers.  Align to the page size when
15374         moving from relro to non-relro section.
15375         (Output_segment::set_offset): Align memsz of a PT_GNU_RELRO
15376         segment.
15377         * output.h (class Output_section): Add is_relro_ and
15378         is_relro_local_ fields.
15379         (Output_section::is_relro): New function.
15380         (Output_section::set_is_relro): New function.
15381         (Output_section::is_relro_local): New function.
15382         (Output_section::set_is_relro_local): New function.
15383         (class Output_segment): Update declarations.
15384         * i386.cc (Target_i386::got_section): Mark .got section as relro.
15385         * sparc.cc (Target_sparc::got_section): Likewise.
15386         * x86_64.cc (Target_x86_64::got_section): Likewise.
15387         * testsuite/relro_test_main.cc: New file.
15388         * testsuite/relro_test.cc: New file.
15389         * testsuite/Makefile.am (check_PROGRAMS): Add relro_test.
15390         (relro_test_SOURCES, relro_test_DEPENDENCIES): New variables.
15391         (relro_test_LDFLAGS, relro_test_LDADD): New variables.
15392         (relro_test.so, relro_test_pic.o): New targets.
15393         * testsuite/Makefile.in: Rebuild.
15394
15395 2008-05-16  Ian Lance Taylor  <iant@google.com>
15396
15397         * output.cc (Output_segment::add_output_section): Remove front
15398         parameter.
15399         * output.h (class Output_segment): Remove
15400         add_initial_output_section and overloaded add_output_section.
15401         Update declaration of remaining add_output_section.
15402         * layout.cc (Layout::create_interp): Call add_output_section
15403         rather than add_initial_output_section.
15404         (Layout::finish_dynamic_section): Likewise.
15405
15406         * i386.cc (Target_i386::Relocate::relocate_tls): Set dynamic type
15407         for TLS_GOTDESC and TLS_DESC_CALL.  Only optimize TLS_LDO_32 if we
15408         know the dynamic type.
15409         * x86_64.cc (Target_x86_64::Relocate): Add saw_tls_block_reloc_
15410         field.  Initialize it in constructor.
15411         (Target_x86_64::Relocate::relocate_tls): Record that we saw a TLS
15412         block reloc for TLSGD, GOTPC32_TLSDESC, TLSDESC_CALL, and TLSLD.
15413         Only optimize DTPOFF32 and DTPOFF64 if we have seen a TLS block
15414         reloc.
15415
15416         * output.cc (Output_reloc::get_address): Change return type to
15417         Elf_Addr.
15418         * output.h (class Output_reloc): Update get_address declaration.
15419         * x86_64.cc (Output_data_plt_x86_64::do_write): Use 64-bit types
15420         for section addresses.
15421
15422 2008-05-09  Ian Lance Taylor  <iant@google.com>
15423
15424         PR 6493
15425         * gold.cc (gold_nomem): Use return value of write.
15426
15427 2008-05-08  Ian Lance Taylor  <iant@google.com>
15428
15429         * symtab.c (Symbol::init_base_output_data): Add version
15430         parameter.  Change all callers.
15431         (Symbol::init_base_output_segment): Likewise.
15432         (Symbol::init_base_constant): Likewise.
15433         (Symbol::init_base_undefined): Likewise.
15434         (Sized_symbol::init_output_data): Likewise.
15435         (Sized_symbol::init_output_segment): Likewise.
15436         (Sized_symbol::init_constant): Likewise.
15437         (Sized_symbol::init_undefined): Likewise.
15438         (Symbol_table::do_define_in_output_data): If the new symbol has a
15439         version, mark it as the default.
15440         (Symbol_table::do_define_in_output_segment): Likewise.
15441         (Symbol_table::do_define_as_constant): Likewise.
15442         * symtab.h (class Symbol): Update declarations.
15443         (class Sized_symbol): Likewise.
15444         * resolve.cc (Symbol::override_version): New function.
15445         (Symbol::override_base): Call override_version.
15446         (Symbol::override_base_with_special): Likewise.
15447         * testsuite/ver_script_8.script: New file.
15448         * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_8.
15449         (ver_test_8_SOURCES, ver_test_8_DEPENDENCIES): Define.
15450         (ver_test_8_LDFLAGS, ver_test_8_LDADD): Define.
15451         (ver_test_8_1.so, ver_test_8_2.so): New targets.
15452
15453 2008-05-06  Ian Lance Taylor  <iant@google.com>
15454
15455         PR 6049
15456         * options.h (DEFINE_set): Add VARNAME_begin and VARNAME_end
15457         functions.
15458         (class General_options): Remove existing --undefined, and add
15459         --no-undefined instead.  Add new --undefined as synonym for -u.
15460         * archive.cc (Archive::add_symbols): Check whether symbol was
15461         named with -u.
15462         * gold.cc (queue_middle_tasks): Add -u symbols to symbol table.
15463         * symtab.h (class Symbol): Rename CONSTANT to IS_CONSTANT; change
15464         all uses.  Add IS_UNDEFINED.  Update declarations to split
15465         different versions of init_base.  Declare init_base_undefined.
15466         (Symbol::is_defined): Handle IS_UNDEFINED.
15467         (Symbol::is_undefined): Likewise.
15468         (Symbol::is_weak_undefined): Call is_undefined.
15469         (Symbol::is_absolute): Handle IS_CONSTANT.
15470         (class Sized_symbol): Update declarations to split different
15471         versions of init.  Declare init_undefined.
15472         (class Symbol_table): Declare new functions.
15473         * symtab.cc (Symbol::init_base_object): Rename from init_base.
15474         Change all callers.
15475         (Symbol::init_base_output_data): Likewise.
15476         (Symbol::init_base_output_segment): Likewise.
15477         (Symbol::init_base_constant): Likewise.
15478         (Symbol::init_base_undefined): New function.
15479         (Sized_symbol::init_object): Rename from init.  Change all
15480         callers.
15481         (Sized_symbol::init_output_data): Likewise.
15482         (Sized_symbol::init_output_segment): Likewise.
15483         (Sized_symbol::init_constant): Likewise.
15484         (Sized_symbol::init_undefined): New function.
15485         (Symbol_table::add_undefined_symbols_from_command_line): New
15486         function.
15487         (Symbol_table::do_add_undefined_symbols_from_command_line): New
15488         function.
15489         (Symbol::final_value_is_known): Handle IS_UNDEFINED.
15490         (Symbol::output_section): Likewise.
15491         (Symbol::set_output_section): Likewise.
15492         (Symbol_table::sized_finalize_symbol): Likewise.
15493         (Symbol_table::sized_write_globals): Likewise.
15494         * resolve.cc (Symbol_table::should_override): Likewise.
15495         (Symbol::override_base_with_special): Likewise.
15496
15497         * symtab.cc (Symbol_table::add_from_dynobj): If we see a protected
15498         symbol, change it to have default visibility.
15499         * testsuite/protected_1.cc: New file.
15500         * testsuite/protected_2.cc: New file.
15501         * testsuite/protected_3.cc: New file.
15502         * testsuite/protected_main_1.cc: New file.
15503         * testsuite/protected_main_2.cc: New file.
15504         * testsuite/protected_main_3.cc: New file.
15505         * testsuite/Makefile.am (check_PROGRAMS): Add protected_1.
15506         (protected_1_SOURCES, protected_1_DEPENDENCIES): Define.
15507         (protected_1_LDFLAGS, protected_1_LDADD): Define.
15508         (protected_1.so): New target.
15509         (protected_1_pic.o, protected_2_pic.o): New targets.
15510         (protected_3_pic.o): New target.
15511         (check_PROGRAMS): Add protected_2.
15512         (protected_2_SOURCES, protected_2_DEPENDENCIES): Define.
15513         (protected_2_LDFLAGS, protected_2_LDADD): Define.
15514         * testsuite/Makefile.in: Rebuild.
15515
15516         * options.h (DEFINE_var): Add set_user_set_##varname__.
15517         (DEFINE_bool_alias): New macro.
15518         (class General_options): Define -Bstatic using DEFINE_bool_alias
15519         rather than DEFINE_special.  Add --undefined as an alias for -z
15520         defs.
15521         * options.cc (General_options::parse_Bstatic): Remove.
15522
15523         * options.h (class General_options): Add --fatal-warnings.
15524         * main.cc (main): Implement --fatal-warnings.
15525         * errors.h (Errors::warning_count): New function.
15526
15527         * options.h (class General_options): Add -Bsymbolic-functions.
15528         * symtab.h (Symbol::is_preemptible): Check for
15529         -Bsymbolic-functions.
15530
15531 2008-05-05  Ian Lance Taylor  <iant@google.com>
15532
15533         * options.h (DEFINE_bool): For DASH_Z, create the negative option
15534         as noVARNAME rather than no-VARNAME.
15535         (class General_options): Add option -z combreloc.
15536         * output.h (class Output_reloc) [SHT_REL]: Declare compare and
15537         get_address.
15538         (Output_reloc::sort_before) [SHT_REL]: New function.
15539         (Output_reloc::sort_before) [SHT_RELA]: New function.
15540         (class Output_data_reloc_base): Add sort_relocs_ field.  Define
15541         Sort_relocs_comparison.
15542         (Output_data_reloc_base::Output_data_reloc_base): Add sort_relocs
15543         parameter.  Change all callers.
15544         (Output_data_reloc::Output_data_reloc) [both versions]: Add
15545         sort_relocs parameter.  Change all callers.
15546         * output.cc (Output_reloc::get_address): New function, broken out
15547         of write_rel.
15548         (Output_reloc::write_rel): Call it.
15549         (Output_reloc::compare): New function.
15550         (Output_data_reloc_base::do_write): Optionally sort relocs.
15551
15552         * configure.ac: If targ_extra_obj is set, link it in.
15553         * configure.tgt: Initialize all variables.
15554         (x86_64*): Set targ_extra_obj and targ_extra_size.
15555         * configure: Rebuild.
15556
15557         * object.cc (Sized_relobj::include_section_group): Adjust section
15558         indexes read from group data.  Build vector to pass to
15559         layout_group.
15560         * layout.cc (Layout::layout_group): Add flags and shndxes
15561         parameters.  Remove contents parameter.  Change caller.  Update
15562         explicit instantiations.
15563         * layout.h (class Layout): Update layout_group declaration.
15564         * output.cc (Output_data_group::Output_data_group): Add flags and
15565         input_shndxes parameters.  Remove contents parameter.  Change
15566         caller.
15567         (Output_data_group::do_write): Change input_sections_ to
15568         input_shndxes_.
15569         * output.h (class Output_data_group): Update constructor
15570         declaration.  Rename input_sections_ to input_shndxes_.
15571         * testsuite/many_sections_test.cc: Add template.
15572
15573 2008-04-30  Cary Coutant  <ccoutant@google.com>
15574
15575         * target-reloc.h (relocate_section): Fix dead-pointer bug.
15576
15577         * layout.cc (Layout::include_section): Refactored check for debug
15578         info section.
15579         (Layout::add_comdat): Add new parameters.  Change type
15580         of signature parameter.  Add object and shndx to signatures table.
15581         (Layout::find_kept_object): New function.
15582         * layout.h: Include <cstring>.
15583         (Layout::is_debug_info_section): New function.
15584         (Layout::add_comdat): Add new parameters.
15585         (Layout::find_kept_object): New function.
15586         (Layout::Kept_section): New struct.
15587         (Layout::Signatures): Change type of map range.
15588         * object.cc (Relobj::output_section_address): New function.
15589         (Sized_relobj::include_section_group): Add new parameters.  Change
15590         calls to Layout::add_comdat.  Change to build table of kept comdat
15591         groups and table mapping discarded sections to kept sections.
15592         (Sized_relobj::include_linkonce_section): Likewise.  Add new parameter.
15593         (Sized_relobj::do_layout): Change calls to include_section_group and
15594         include_linkonce_section.
15595         (Sized_relobj::do_finalize_local_symbols): Do not set local symbol
15596         value to zero when section is discarded.
15597         (Sized_relobj::map_to_kept_section): New function.
15598         * object.h (Relobj::output_section_address): New function.
15599         (Relobj::Comdat_group): New type.
15600         (Relobj::find_comdat_group): New function.
15601         (Relobj::Comdat_group_table): New type.
15602         (Relobj::Kept_comdat_section): New type.
15603         (Relobj::Kept_comdat_section_table): New type.
15604         (Relobj::add_comdat_group): New function.
15605         (Relobj::set_kept_comdat_section): New function.
15606         (Relobj::get_kept_comdat_section): New function.
15607         (Relobj::comdat_groups_): New field.
15608         (Relobj::kept_comdat_sections_): New field.
15609         (Symbol_value::input_value): Update comment.
15610         (Sized_relobj::map_to_kept_section) New function.
15611         (Sized_relobj::include_linkonce_section): Add new parameter.
15612         * target-reloc.h (Comdat_behavior): New type.
15613         (get_comdat_behavior): New function.
15614         (relocate_section): Add code to map a discarded section to the
15615         corresponding kept section when applying a relocation.
15616
15617 2008-04-30  Craig Silverstein  <csilvers@google.com>
15618
15619         * dwarf_reader.cc (next_generation_count): New static var.
15620         (Addr2line_cache_entry): New struct.
15621         (addr2line_cache): New static var.
15622         (Dwarf_line_info::one_addr2line): Added caching.
15623         (Dwarf_line_info::clear_addr2line_cache): New function.
15624         * dwarf_reader.h (Dwarf_line_info::one_addr2line): Add
15625         cache-size parameter.
15626         (Dwarf_line_info::one_addr2line_cache): New function.
15627         * symtab.cc (Symbol_table::detect_odr_violations): Pass
15628         new cache-size argument to one_addr2line(), and clear cache.
15629
15630 2008-04-28  Cary Coutant  <ccoutant@google.com>
15631
15632         * i386.cc (Relocate::relocate): Fix typos for R_386_PC16 and
15633         R_386_PC8 relocations.
15634
15635 2008-04-23  Ian Lance Taylor  <iant@google.com>
15636
15637         * object.cc (Sized_relobj::include_section_group): Check for
15638         invalid section group.
15639
15640         * object.cc (make_elf_object): Correct test for 64-bit ELF file
15641         header size.
15642
15643         * readsyms.cc (Read_symbols::do_read_symbols): Use get_view rather
15644         than read for file header.
15645         * archive.cc (Archive::include_member): Likewise.
15646
15647 2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
15648
15649         * aclocal.m4: Regenerate.
15650         * configure: Regenerate.
15651
15652 2008-04-19  Ian Lance Taylor  <iant@google.com>
15653
15654         * version.cc (version_string): Bump to 1.6.
15655
15656         * testsuite/Makefile.am (many_sections_r_test): New target.
15657         (many_sections_r_test_SOURCES): Remove.
15658         (many_sections_r_test_DEPENDENCIES): Remove.
15659         (many_sections_r_test_LDFLAGS): Remove.
15660         (many_sections_r_test_LDADD): Remove.
15661
15662         * object.cc (Sized_relobj::do_add_symbols): Always pass
15663         local_symbol_count_ to add_from_relobj.
15664
15665         * testsuite/Makefile.am (many_sections_check.h): Only check one in
15666         every thousand variables.
15667         * testsuite/Makefile.in: Rebuild.
15668
15669         * object.cc (Xindex::initialize_symtab_xindex): New function.
15670         (Xindex::read_symtab_xindex): New function.
15671         (Xindex::sym_xindex_to_shndx): New function.
15672         (Sized_relobj::find_symtab): Pick up SHT_SYMTAB_SHNDX section if
15673         available.
15674         (Sized_relobj::do_initialize_xindex): New function.
15675         (Sized_relobj::do_read_symbols): Adjust section links.
15676         (Sized_relobj::symbol_section_and_value): Add is_ordinary
15677         parameter.  Change all callers.
15678         (Sized_relobj::include_section_group): Adjust section links and
15679         symbol section indexes.
15680         (Sized_relobj::do_layout): Adjust section links.
15681         (Sized_relobj::do_count_local_symbols): Adjust section links and
15682         symbol section indexes.
15683         (Sized_relobj::do_finalize_local_symbols): Distinguish between
15684         ordinary and special symbols.
15685         (Sized_relobj::write_local_symbols): Add symtab_xindex and
15686         dynsym_xindex parameters.  Change all callers.  Adjust section
15687         links.  Use SHN_XINDEX when needed.
15688         (Sized_relobj::get_symbol_location_info): Adjust section links.
15689         Don't get fooled by special symbols.
15690         * object.h (class Xindex): Define.
15691         (class Object): Add xindex_ parameter.  Declare virtual functoin
15692         do_initialize_xindex.
15693         (Object::adjust_sym_shndx): New function.
15694         (Object::set_xindex): New protected function.
15695         (class Symbol_value): Add is_ordinary_shndx_ field.
15696         (Symbol_value::Symbol_value): Initialize is_ordinary_shndx_.
15697         (Symbol_value::value): Assert ordinary section.
15698         (Symbol_value::initialize_input_to_output_map): Likewise.
15699         (Symbol_value::set_input_shndx): Add is_ordinary parameter.
15700         Change all callers.
15701         (Symbol_value::input_shndx): Add is_ordinary parameter.  Change
15702         all callers.
15703         (class Sized_relobj): Update declarations.
15704         (Sized_relobj::local_symbol_input_shndx): Add is_ordinary
15705         parameter.  Change all callers.
15706         (Sized_relobj::adjust_shndx): New function.
15707         * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize dynsym_shndx_
15708         field.
15709         (Sized_dynobj::find_dynsym_sections): Remove pdynsym_shndx
15710         parameter.  Change all callers.  Pick up SHT_DYNSYM_SHNDX section
15711         for SHT_DYNSYM section if available.  Set dynsym_shndx_ field.
15712         (Sized_dynobj::read_dynsym_section): Adjust section links.
15713         (Sized_dynobj::read_dynamic): Likewise.
15714         (Sized_dynobj::do_read_symbols): Use dynsym_shndx_ field.  Adjust
15715         section links.
15716         (Sized_dynobj::do_initialize_xindex): New function.
15717         * dynobj.h (class Sized_dynobj): Add dynsym_shndx_ field.  Declare
15718         do_initialize_xindex.
15719         (Sized_dynobj::adjust_shndx): New function.
15720         * layout.cc (Layout::Layout): Initialize symtab_xindex_ and
15721         dynsym_xindex_ fields.
15722         (Layout::finalize): Add a call to set_section_indexes before
15723         creating the symtab sections.
15724         (Layout::set_section_indexes): Don't do anything if the section
15725         already has a section index.
15726         (Layout::create_symtab_sections): Add shnum parameter.  Change
15727         caller.  Create .symtab_shndx section if needed.
15728         (Layout::create_shdrs): Add shstrtab_section parameter.  Change
15729         caller.
15730         (Layout::allocated_output_section_count): New function.
15731         (Layout::create_dynamic_symtab): Create .dynsym_shndx section if
15732         needed.
15733         * layout.h (class Layout): Add symtab_xindex_ and dynsym_xindex_
15734         fields.  Update declarations.
15735         (Layout::symtab_xindex): New function.
15736         (Layout::dynsym_xindex): New function.
15737         (class Write_symbols_task): Add layout_ field.
15738         (Write_symbols_task::Write_symbols_task): Add layout parameter.
15739         Change caller.
15740         * output.cc (Output_section_headers::Output_section_headers): Add
15741         shstrtab_section parameter.  Change all callers.
15742         (Output_section_headers::do_sized_write): Store overflow values
15743         for section count and section string table section index in
15744         section header zero.
15745         (Output_file_header::do_sized_write): Check for overflow of
15746         section count and section string table section index.
15747         (Output_symtab_xindex::do_write): New function.
15748         (Output_symtab_xindex::endian_do_write): New function.
15749         * output.h (class Output_section_headers): Add shstrtab_section_.
15750         Update declarations.
15751         (class Output_symtab_xindex): Define.
15752         (Output_section::has_out_shndx): New function.
15753         * symtab.cc (Symbol::init_fields): Initialize is_ordinary_shndx_
15754         field.
15755         (Symbol::init_base): Add st_shndx and is_ordinary parameters.
15756         Change all callers.
15757         (Sized_symbol::init): Likewise.
15758         (Symbol::output_section): Check for ordinary symbol.
15759         (Symbol_table::add_from_object): Remove orig_sym parameter.  Add
15760         st_shndx, is_ordinary, and orig_st_shndx parameters.  Change all
15761         callers.
15762         (Symbol_table::add_from_relobj): Add symndx_offset parameter.
15763         Change all callers.  Simplify handling of symbols from sections
15764         not included in the link.
15765         (Symbol_table::add_from_dynobj): Handle ordinary symbol
15766         distinction.
15767         (Weak_alias_sorter::operator()): Assert that symbols are
15768         ordinary.
15769         (Symbol_table::sized_finalize_symbol): Handle ordinary symbol
15770         distinction.
15771         (Symbol_table::write_globals): Add symtab_xindex and dynsym_xindex
15772         parameters.  Change all callers.
15773         (Symbol_table::sized_write_globals): Likewise.  Handle ordinary
15774         symbol distinction.  Use SHN_XINDEX when needed.
15775         (Symbol_table::write_section_symbol): Add symtab_xindex
15776         parameter.  Change all callers.
15777         (Symbol_table::sized_write_section_symbol): Likewise.  Use
15778         SHN_XINDEX when needed.
15779         * symtab.h (class Symbol): Add is_ordinary_shndx_ field.  Update
15780         declarations.
15781         (Symbol::shndx): Add is_ordinary parameter.  Change all callers.
15782         (Symbol::is_defined): Check is_ordinary.
15783         (Symbol::is_undefined, Symbol::is_weak_undefined): Likewise.
15784         (Symbol::is_absolute, Symbol::is_common): Likewise.
15785         (class Sized_symbol): Update declarations.
15786         (class Symbol_table): Update declarations.
15787         * resolve.cc (Symbol::override_base): Add st_shndx and is_ordinary
15788         parameters.  Change all callers.
15789         (Sized_symbol::override): Likewise.
15790         (Symbol_table::override): Likewise.
15791         (symbol_to_bits): Add is_ordinary parameter.  Change all callers.
15792         (Symbol_table::resolve): Remove orig_sym parameter.  Add st_shndx,
15793         is_ordinary, and orig_st_shndx parameters.  Change all callers.
15794         * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Require symbol
15795         to be in an ordinary section.
15796         * dwarf_reader.cc (Sized_dwarf_line_info::symbol_section): Add
15797         object and is_ordinary parameters.  Change all callers.
15798         (Sized_dwarf_line_info::read_relocs): Add object parameter.
15799         Change all callers.  Don't add undefined or non-ordinary symbols
15800         to reloc_map_.
15801         (Sized_dwarf_line_info::read_line_mappings): Add object parameter.
15802         Change all callers.
15803         * dwarf_reader.h (class Sized_dwarf_line_info): Update
15804         declarations.
15805         * ehframe.cc (Eh_frame::read_fde): Check for ordinary symbol.
15806         * reloc.cc (Sized_relobj::do_read_relocs): Adjust section links.
15807         (Sized_relobj::relocate_sections): Likewise.
15808         * target-reloc.h (scan_relocs): Adjust section symbol index.
15809         (scan_relocatable_relocs): Likewise.
15810         * i386.cc (Scan::local): Check for ordinary symbols.
15811         * sparc.cc (Scan::local): Likewise.
15812         * x86_64.cc (Scan::local): Likewise.
15813         * testsuite/binary_unittest.cc (Sized_binary_test): Update calls
15814         to symbol_section_and_value.
15815         * testsuite/many_sections_test.cc: New file.
15816         * testsuite/Makefile.am (BUILT_SOURCES): Define.
15817         (check_PROGRAMS): Add many_sections_test.
15818         (many_sections_test_SOURCES): Define.
15819         (many_sections_test_DEPENDENCIES): Define.
15820         (many_sections_test_LDFLAGS): Define.
15821         (BUILT_SOURCES): Add many_sections_define.h.
15822         (many_sections_define.h): New target.
15823         (BUILT_SOURCES): Add many_sections_check.h.
15824         (many_sections_check.h): New target.
15825         (check_PROGRAMS): Add many_sections_r_test.
15826         (many_sections_r_test_SOURCES): Define.
15827         (many_sections_r_test_DEPENDENCIES): Define.
15828         (many_sections_r_test_LDFLAGS): Define.
15829         (many_sections_r_test_LDADD): Define.
15830         (many_sections_r_test.o): New target.
15831         * testsuite/Makefile.in: Rebuild.
15832
15833 2008-04-17  Cary Coutant  <ccoutant@google.com>
15834
15835         * errors.cc (Errors::info): New function.
15836         (gold_info): New function.
15837         * errors.h (Errors::info): New function.
15838         * gold.h (gold_info): New function.
15839         * object.cc (Input_objects::add_object): Print trace output.
15840         * options.cc (options::parse_set): New function.
15841         (General_options::parse_wrap): Deleted.
15842         (General_options::General_options): Deleted initializer.
15843         * options.h (options::String_set): New typedef.
15844         (options::parse_set): New function.
15845         (DEFINE_set): New macro.
15846         (General_options::wrap): Changed to use DEFINE_set. Changed
15847         callers of any_wrap_symbols and is_wrap_symbol.
15848         (General_options::trace, General_options::trace_symbol):
15849         New options.
15850         (General_options::any_wrap_symbols, General_options::is_wrap_symbol)
15851         (General_options::wrap_symbols_): Deleted.
15852         * symtab.cc (Symbol_table::add_from_object): Print trace output.
15853
15854 2008-04-17  David S. Miller  <davem@davemloft.net>
15855
15856         * options.cc (General_options::parse_V): New function.
15857         * options.h: Add entries for -V and -Qy.
15858
15859 2008-04-17  Ian Lance Taylor  <iant@google.com>
15860
15861         * common.cc (Symbol_table::allocate_commons): Remove options
15862         parameter.  Change caller.
15863         (Symbol_table::do_allocate_commons): Remove options parameter.
15864         Change caller.  Just call do_allocate_commons_list twice.
15865         (Symbol_table::do_allocate_commons_list): New function, broken out
15866         of do_allocate_commons.
15867         * common.h (class Allocate_commons_task): Remove options_ field.
15868         Update constructor.
15869         * symtab.cc (Symbol_table::Symbol_table): Initialize
15870         tls_commons_.
15871         (Symbol_table::add_from_object): Put TLS common symbols on
15872         tls_commons_ list.
15873         (Symbol_table::sized_finalize_symbol): Handle STT_TLS symbols
15874         which are IN_OUTPUT_DATA.
15875         * symtab.h (class Symbol_table): Add tls_commons_ field.  Update
15876         allocate_commons and do_allocate_commons declarations.  Declare
15877         do_allocate_commons_list.
15878         * gold.cc (queue_middle_tasks): Update creation of
15879         Allocate_commons_task to not pass options.
15880         * testsuite/Makefile.am (INCLUDES): Add -I.. .
15881         (TLS_TEST_C_FLAGS): New variable.
15882         (tls_test_c_pic.o): New target.
15883         (tls_test_shared.so): Link in tls_test_c_pic.o.
15884         (tls_test_c_pic_ie.o): New target.
15885         (tls_test_ie_shared.so): Link in tls_test_c_pic_ie.o.
15886         (tls_test_DEPENDENCIES, tls_test_LDADD): Add tls_test_c.o.
15887         (tls_test_c.o): New target.
15888         (tls_pic_test_DEPENDENCIES): Add tls_test_c_pic.o.
15889         (tls_pic_test_LDADD): Likewise.
15890         (tls_shared_gd_to_ie_test_DEPENDENCIES): Add tls_test_c_pic.o.
15891         (tls_shared_gd_to_ie_test_LDADD): Likewise.
15892         (tls_test_c_gnu2.o): New target.
15893         (tls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): Add
15894         tls_test_c_gnu2.o.
15895         (tls_shared_gnu2_gd_to_ie_test_LDADD): Likewise.
15896         (tls_test_gnu2_shared.so): Link in tls_test_c_gnu2.o.
15897         (tls_test_shared_nonpic.so): Link in tls_test_c.o.
15898         * testsuite/tls_test.cc: Include "config.h".
15899         (t_last): Call t11_last.
15900         * testsuite/tls_test.h (t11, t11_last): Declare.
15901         * testsuite/tls_test_c.c: New file.
15902         * testsuite/tls_test_main.cc (thread_routine): Call t11.
15903         * configure.ac: Check for OpenMP support.
15904         * configure, config.in, Makefile.in: Rebuild.
15905         * testsuite/Makefile.in: Rebuild.
15906
15907 2008-04-16  Cary Coutant  <ccoutant@google.com>
15908
15909         * i386.cc (Target_i386::define_tls_base_symbol): New function.
15910         (Target_i386::tls_base_symbol_defined_): New field.
15911         (Target_i386::Scan::local): Define _TLS_MODULE_BASE_ symbol.
15912         (Target_i386::Scan::global): Likewise.
15913         * symtab.cc (sized_finalize_symbol): Add check for TLS symbol.
15914         * x86_64.cc (Target_x86_64::define_tls_base_symbol): New function.
15915         (Target_x86_64::tls_base_symbol_defined_): New field.
15916         (Target_x86_64::Scan::local): Define _TLS_MODULE_BASE_ symbol.
15917         (Target_x86_64::Scan::global): Likewise.
15918
15919 2008-04-16  Cary Coutant  <ccoutant@google.com>
15920
15921         * symtab.h (Symbol::is_strong_undefined): Removed unused function.
15922         (Symbol::needs_plt_entry): Allow weak undefined symbols.
15923         (Symbol::needs_dynamic_reloc): Allow weak undefined symbols when
15924         building shared libraries.
15925         * testsuite/Makefile.am (weak_undef_nonpic_test): New target.
15926         (weak_undef_file1_nonpic.o, weak_undef_file2_nonpic.o)
15927         (weak_undef_lib_nonpic.so, alt/weak_undef_lib_nonpic.so): New targets.
15928         * testsuite/Makefile.in: Rebuild.
15929         * testsuite/weak_undef.h: New file.
15930         * testsuite/weak_undef_file1.cc: Add extra test cases.
15931         * testsuite/weak_undef_file2.cc: Likewise.
15932         * testsuite/weak_undef_test.cc: Likewise.
15933
15934 2008-04-16  David S. Miller  <davem@davemloft.net>
15935
15936         * sparc.cc (Target_sparc::Scan): Change from struct to class.
15937         Add issued_non_pic_error_ field.  Declare check_non_pic.
15938         (Target_sparc::Scan::check_non_pic): New function.
15939         (Target_sparc::Scan::local): Call check_non_pic as appropriate.
15940         (Target_sparc::Scan::global): Likewise.
15941
15942         * configure.ac (FN_PTRS_IN_SO_WITHOUT_PIC): Add sparc64.
15943         * configure: Rebuild.
15944
15945         * options.h (DEFINE_enable): New macro.
15946         (new_dtags): New enable option.
15947         (initfirst, interpose, loadfltr, nodefaultlib,
15948         nodelete, nodlopen, nodump): New -z options.
15949         * layout.cc (Layout:finish_dynamic_section): If new
15950         dtags enabled, emit DT_RUNPATH.  Also, emit a
15951         DT_FLAGS_1 containing any specified -z flags.
15952
15953 2008-04-16  Ian Lance Taylor  <iant@google.com>
15954
15955         * copy-relocs.cc: New file.
15956         * copy-relocs.h: New file.
15957         * reloc.cc: Remove Copy_relocs code.
15958         * reloc.h: Likewise.
15959         * reloc-types.h (struct Reloc_types) [both versions]: Add
15960         get_reloc_addend_noerror.
15961         * output.h (class Output_data_reloc<elfcpp::SHT_REL>): Add
15962         variants of add_global which take an addend which must be zero.
15963         * i386.cc: Include "copy-relocs.h".
15964         (class Target_i386): Change type of copy_relocs_ to variable,
15965         update initializer.
15966         (Target_i386::copy_reloc): Rewrite to pass to Copy_relocs class.
15967         Change all callers.
15968         (Target_i386::do_finalize_sections): Change handling of
15969         copy_relocs_.
15970         * sparc.cc: Include "copy-relocs.h".
15971         (class Target_sparc): Change type of copy_relocs_ to variable,
15972         update initializer.
15973         (Target_sparc::copy_reloc): Rewrite to pass to Copy_relocs class.
15974         Change all callers.
15975         (Target_sparc::do_finalize_sections): Change handling of
15976         copy_relocs_.
15977         * x86_64.cc: Include "copy-relocs.h".
15978         (class Target_x86_64): Change type of copy_relocs_ to variable,
15979         update initializer.
15980         (Target_x86_64::copy_reloc): Rewrite to pass to Copy_relocs
15981         class.  Change all callers.
15982         (Target_x86_64::do_finalize_sections): Change handling of
15983         copy_relocs_.
15984         * Makefile.am (CCFILES): Add copy-relocs.cc.
15985         (HFILES): Add copy-relocs.h.
15986
15987         * Makefile.in, aclocal.m4, testsuite/Makefile.in: Rebuild.
15988
15989         * testsuite/script_test_4.sh: Permit leading zeroes.
15990
15991 2008-04-15  Ian Lance Taylor  <iant@google.com>
15992
15993         * script-sections.cc (Script_sections::create_segments): Use
15994         header_size_adjustment even when there is enough room for the
15995         headers.
15996         * testsuite/script_test_4.sh: New file.
15997         * testsuite/script_test_4.t: New file.
15998         * testsuite/Makefile.am (check_SCRIPTS): Add script_test_4.sh.
15999         (check_DATA): Add script_test_4.stdout.
16000         (MOSTLYCLEANFILES): Likewise.
16001         (script_test_4): New target.
16002         (script_test_4.stdout): New target.
16003         * testsuite/Makefile.in: Rebuild.
16004
16005         * sparc.cc: Add definitions for Output_data_plt_sparc class
16006         constants.
16007
16008 2008-04-14  David S. Miller  <davem@davemloft.net>
16009
16010         * sparc.cc: New file.
16011         * Makefile.am (TARGETSOURCES): Add sparc.cc
16012         (ALL_TARGETOBJS): Add sparc.$(OBJEXT)
16013         * configure.tgt: Document targ_extra_size and
16014         targ_extra_big_endian.  Add entries for sparc-* and
16015         sparc64-*.
16016         * configure.ac: Handle targ_extra_size and
16017         targ_extra_big_endian.
16018         * Makefile.in: Rebuild.
16019         * configure: Likewise.
16020         * po/POTFILES.in: Likewise.
16021         * po/gold.pot: Likewise.
16022
16023 2008-04-14  Ian Lance Taylor  <iant@google.com>
16024
16025         * layout.cc (Layout::Layout): Initialize sections_are_attached_.
16026         (Layout::get_output_section): Ignore SHF_WRITE and SHF_EXECINSTR
16027         in the name/type/flags to section mapping.  Don't call
16028         allocate_output_section.
16029         (Layout::choose_output_section): Change parameter from adjust_name
16030         to is_input_section.  Don't permit input sections after sections
16031         are attached to segments.  Don't call allocate_output_section.
16032         (Layout::layout_eh_frame): Call update_flags_for_input_section,
16033         not write_enable_output_section.
16034         (Layout::make_output_section): Don't push to
16035         unattached_section_list_ nor call attach_to_segment.  Call
16036         attach_section_to_segment if sections are attached.
16037         (Layout::attach_sections_to_segments): New function.
16038         (Layout::attach_section_to_segment): New function.
16039         (Layout::attach_allocated_section_to_segment): Rename from
16040         attach_to_segment.  Remove flags parameter.
16041         (Layout::allocate_output_section): Remove function.
16042         (Layout::write_enable_output_section): Remove function.
16043         * layout.h (class Layout): Update for above changes.  Add new
16044         field sections_are_attached_.
16045         * output.h (Output_section::update_flags_for_input_section): New
16046         function.
16047         * output.cc (Output_section::add_input_section): Call
16048         update_flags_for_input_section.
16049         * gold.cc (queue_middle_tasks): Call attach_sections_to_segments.
16050
16051 2008-04-11  Cary Coutant  <ccoutant@google.com>
16052
16053         * i386.cc (Target_i386::got_mod_index_entry): Restore code previously
16054         thought unnecessary.
16055         * x86_64.cc (Target_x86_64::got_mod_index_entry): Likewise.
16056
16057 2008-04-11  Ian Lance Taylor  <iant@google.com>
16058
16059         * output.h (class Output_section_data): Remove inline definition
16060         of set_addralign.
16061         * output.cc (Output_section_data::set_addralign): New function.
16062
16063 2008-04-11  Cary Coutant  <ccoutant@google.com>
16064
16065         Add support for TLS descriptors for i386 and x86_64.
16066         * i386.cc (Target_i386::Relocate::tls_desc_gd_to_ie): New function.
16067         (Target_i386::Relocate::tls_desc_gd_to_le): New function.
16068         (Target_i386::Got_type): Add GOT_TYPE_TLS_NOFFSET and
16069         GOT_TYPE_TLS_DESC.
16070         (Target_i386::got_mod_index_entry): Remove unnecessary code.
16071         (Target_i386::Scan::local): Implement R_386_TLS_GOTDESC and
16072         R_386_TLS_DESC_CALL relocations.  Fix problem with initial-exec
16073         relocations.
16074         (Target_i386::Scan::global): Fix problem with GD-to-IE relaxation.
16075         Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations;
16076         Fix problem with initial-exec relocations.
16077         (Target_i386::Relocate::relocate_tls): Likewise.
16078         (Target_i386::Relocate::tls_gd_to_ie): Fix problem with GD-to-IE
16079         relaxation.
16080         * output.cc (Output_data_dynamic::Dynamic_entry::write): Add
16081         support for section-plus-offset dynamic table entries.
16082         * output.h (Output_data_dynamic::add_section_plus_offset): New function.
16083         (Output_data_dynamic::Dynamic_entry): Add support for
16084         section-plus-offset dynamic table entries.
16085         (Output_data_dynamic::Classification): Likewise.
16086         (Output_data_dynamic::classification_): Renamed offset_.
16087         * x86_64.cc (Target_x86_64::Relocate::tls_desc_gd_to_ie): New function.
16088         (Target_x86_64::Relocate::tls_desc_gd_to_le): New function.
16089         (Target_x86_64::make_plt_section): New function.
16090         (Target_x86_64::reserve_tlsdesc_entries): New function.
16091         (Output_data_plt_x86_64::Output_data_plt_x86_64): Add new parameter.
16092         (Output_data_plt_x86_64::reserve_tlsdesc_entry): New function.
16093         (Output_data_plt_x86_64::has_tlsdesc_entry): New function.
16094         (Output_data_plt_x86_64::get_tlsdesc_got_offset): New function.
16095         (Output_data_plt_x86_64::get_tlsdesc_plt_offset): New function.
16096         (Output_data_plt_x86_64::tlsdesc_plt_entry): New field.
16097         (Output_data_plt_x86_64::set_final_data_size): Move out of line;
16098         add extra PLT entry for TLS descriptors.
16099         (Output_data_plt_x86_64::got_): New field.
16100         (Output_data_plt_x86_64::tlsdesc_got_offset_): New field.
16101         (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize new
16102         fields.
16103         (Output_data_plt_x86_64::do_write): Write extra PLT entry for TLS
16104         descriptors.
16105         (Target_x86_64::make_plt_entry): Factor out make_plt_section.
16106         (Target_x86_64::got_mod_index_entry): Remove unnecessary code.
16107         (Target_x86_64::Scan::local): Implement R_386_TLS_GOTDESC and
16108         R_386_TLS_DESC_CALL relocations.
16109         (Target_x86_64::Scan::global): Likewise.
16110         (Target_x86_64::do_finalize_sections): Add dynamic table entries
16111         for TLS descriptors.
16112         (Relocate::relocate_tls): Fix problem with GD-to-IE relaxation.
16113         Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations.
16114         (Target_x86_64::Relocate::tls_gd_to_ie): Fix problem with
16115         GD-to-IE relaxation.
16116         * configure.ac: Export new conditional variables TLS_GNU2_DIALECT
16117         and TLS_DESCRIPTORS.
16118         * Makefile.in: Rebuild.
16119         * configure: Rebuild.
16120         * testsuite/Makefile.am (tls_shared_gd_to_ie_test): New target.
16121         (tls_test_shared2.so): New target.
16122         (tls_shared_gd_to_ie_test_SOURCES): New variable.
16123         (tls_shared_gd_to_ie_test_DEPENDENCIES): New variable.
16124         (tls_shared_gd_to_ie_test_LDFLAGS): New variable.
16125         (tls_shared_gd_to_ie_test_LDADD): New variable.
16126         (tls_shared_gnu2_gd_to_ie_test): New target.
16127         (tls_test_gnu2.o, tls_test_file2_gnu2.o, tls_test_gnu2_shared2.so):
16128         New targets.
16129         (tls_shared_gnu2_gd_to_ie_test_SOURCES): New variable.
16130         (ls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): New variable.
16131         (tls_shared_gnu2_gd_to_ie_test_LDFLAGS): New variable.
16132         (tls_shared_gnu2_gd_to_ie_test_LDADD): New variable.
16133         (tls_shared_gnu2_test): New target.
16134         (tls_test_gnu2_shared.so): New target.
16135         (tls_shared_gnu2_test_SOURCES): New variable.
16136         (tls_shared_gnu2_test_DEPENDENCIES): New variable.
16137         (tls_shared_gnu2_test_LDFLAGS): New variable.
16138         (tls_shared_gnu2_test_LDADD): New variable.
16139         * testsuite/Makefile.in: Rebuild.
16140         * testsuite/Makefile.
16141
16142 2008-04-11  Ian Lance Taylor  <iant@google.com>
16143
16144         * testsuite/Makefile.am (justsyms_2r.o): Add dependency on
16145         justsyms.t.
16146         * testsuite/Makefile.in: Rebuild.
16147
16148         * testsuite/script_test_2a.cc (script_test_string_a): Make 8 bytes
16149         long.
16150         * testsuite/script_test_2.cc (main): Adjust test.
16151
16152 2008-04-11  David S. Miller  <davem@davemloft.net>
16153             Ian Lance Taylor  <iant@google.com>
16154
16155         * options.h (General_options): Add entries for '-Y' and
16156         '-relax'.
16157         * options.cc (General_options:finalize): If -Y was used, add those
16158         entries to the library path instead of the default "/lib" and
16159         "/usr/lib".
16160
16161 2008-04-11  David S. Miller  <davem@davemloft.net>
16162
16163         * testsuite/justsyms.t: Start at 0x100.
16164         * testsuite/justsyms_1.cc: Adjust justsyms_string assertion.
16165         * testsuite/script_test_2b.cc (script_test_string_b): Make 8 bytes
16166         long.
16167         * testsuite/script_test_2.cc: Adjust string and section length
16168         checks.
16169
16170 2008-04-09  Ian Lance Taylor  <iant@google.com>
16171
16172         PR gold/5996
16173         * script-sections.cc (Sections_element::allocate_to_segment): Add
16174         orphan parameter.
16175         (Output_section_definition::allocate_to_segment): Likewise.
16176         (Orphan_output_section::allocate_to_segment): Likewise.
16177         (Script_sections::attach_sections_using_phdrs_clause): Don't
16178         propagate non-PT_LOAD segments to orphan sections.
16179         * testsuite/Makefile.am (script_test_3.stdout): Generate using
16180         readelf rather than objdump.
16181         * testsuite/script_test_3.sh: Adjust accordingly.  Test that
16182         .interp section and PT_INTERP segment are the same size.
16183         * testsuite/Makefile.in: Rebuild.
16184
16185         * symtab.cc (Symbol_table::add_from_dynobj): Only look for weak
16186         aliases for symbols defined in the same object.
16187         * testsuite/Makefile.am (check_PROGRAMS): Add weak_alias_test.
16188         (weak_alias_test_SOURCES): New variable.
16189         (weak_alias_test_DEPENDENCIES): New variable.
16190         (weak_alias_test_LDFLAGS): New variable.
16191         (weak_alias_test_LDADD): New variable.
16192         (weak_alias_test_1_pic.o, weak_alias_test_1.so): New targets.
16193         (weak_alias_test_2_pic.o, weak_alias_test_2.so): New targets.
16194         (weak_alias_test_3.o): New target.
16195         (weak_alias_test_4_pic.o, weak_alias_test_4.so): New targets.
16196         * testsuite/weak_alias_test_main.cc: New file.
16197         * testsuite/weak_alias_test_1.cc: New file.
16198         * testsuite/weak_alias_test_2.cc: New file.
16199         * testsuite/weak_alias_test_3.cc: New file.
16200
16201 2008-04-08  Ian Lance Taylor  <iant@google.com>
16202
16203         * options.h (class General_options): Add --noinhibit-exec option.
16204         * main.cc (main): Check --noinhibit-exec.
16205
16206         * options.h (class General_options): Define --wrap as a special
16207         option.  Add wrap_symbols_ field.
16208         (General_options::any_wrap_symbols): New function.
16209         (General_options::is_wrap_symbol): New function.
16210         * options.cc (General_options::parse_wrap): New function.
16211         (General_options::General_options): Initialize wrap_symbols_.
16212         * symtab.cc (Symbol_table::wrap_symbol): New function.
16213         (Symbol_table::add_from_object): Handle --wrap.
16214         * symtab.h (class Symbol_table): Declare wrap_symbol.
16215         * target.h (Target::wrap_char): New function.
16216         (Target::Target_info): Add wrap_char field.
16217         * i386.cc (Target_i386::i386_info): Initialize wrap_char.
16218         * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
16219         * testsuite/testfile.cc (Target_test::test_target_info):
16220         Likewise.
16221
16222         * errors.cc (Errors::undefined_symbol): Mention symbol version if
16223         there is one.
16224
16225         * layout.h (class Layout): Add added_eh_frame_data_ field.
16226         * layout.cc (Layout::Layout): Initialize new field.
16227         (Layout::layout_eh_frame): Don't add eh_frame_data_ to .eh_frame
16228         output section until we find a section we merged successfully.
16229         * object.cc (Sized_relobj::check_eh_frame_flags): Don't require
16230         that the size be non-zero.
16231
16232         * merge.cc (Object_merge_map::get_output_offset): Remove inline
16233         qualifier.
16234
16235 2008-04-08  Craig Silverstein  <csilvers@google.com>
16236
16237         * configure.ac: Export new conditional variable HAVE_ZLIB.
16238         * testsuite/Makefile.am (flagstest_o_specialfile): Condition
16239         on HAVE_ZLIB.
16240         (flagstest_o_specialfile_and_compress_debug_sections): Likewise.
16241         * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
16242
16243 2008-04-07  Ian Lance Taylor  <iant@google.com>
16244
16245         * version.cc (version_string): Set to "1.5".
16246
16247         * x86_64.cc (Target_x86_64::Scan): Change from struct to class.
16248         Add issued_non_pic_error_ field.  Declare check_non_pic.
16249         (Target_x86_64::Scan::check_non_pic): New function.
16250         (Target_x86_64::Scan::local): Call check_non_pic as appropriate.
16251         (Target_x86_64::Scan::global): Likewise.
16252
16253         * output.cc (Output_reloc<SHT_REL>::local_section_offset): Add
16254         addend parameter.  Change caller.  Handle merge sections.
16255         (Output_reloc<SHT_REL>::symbol_value): Change parameter type from
16256         Address to Addend.  Don't add in the result of
16257         local_section_offset, pass down the addend and use the returned
16258         value.
16259         * output.h (class Output_reloc<SHT_REL>): Add Addend typedef.
16260         Update declarations of local_section_offset and symbol_value.
16261         * testsuite/two_file_test_1.cc (t18): New function.
16262         * testsuite/two_file_test_2.cc (f18): New function.
16263         * testsuite/two_file_test_main.cc (main): Call t18.
16264         * testsuite/two_file_test.h (t18, f18): Declare.
16265
16266         * configure.ac: Don't test for objdump, c++filt, or readelf.
16267         * testsuite/Makefile.am: Remove READELF and OBJDUMP_AND_CPPFILT
16268         conditionals.
16269         (TEST_READELF): New variable.
16270         (TEST_OBJDUMP, TEST_CXXFILT, TEST_STRIP): New variables.
16271         (check_PROGRAMS): Add two_file_strip_test.
16272         (two_file_strip_test): New target.
16273         (check_PROGRAMS): Add two_file_same_shared_strip_test.
16274         (two_file_same_shared_strip_test_SOURCES): New variable.
16275         (two_file_same_shared_strip_test_DEPENDENCIES): New variable.
16276         (two_file_same_shared_strip_test_LDFLAGS): New variable.
16277         (two_file_same_shared_strip_test_LDADD): New variable.
16278         (two_file_shared_strip.so): New target.
16279         (ver_test_2.syms, ver_test_4.syms): Use TEST_READELF.
16280         (ver_test_5.syms, ver_test_7.syms): Likewise.
16281         (ver_matching_test.stdout): Use TEST_OBJDUMP and TEST_CXXFILT.
16282         (strip_test_3.stdout): Use TEST_OBJDUMP.
16283         * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
16284
16285 2008-04-04  Cary Coutant  <ccoutant@google.com>
16286
16287         * symtab.h (Symbol::is_weak_undefined): New function.
16288         (Symbol::is_strong_undefined): New function.
16289         (Symbol::is_absolute): New function.
16290         (Symbol::needs_plt_entry): Exclude weak undefined symbols.
16291         (Symbol::needs_dynamic_reloc): Exclude weak undefined and
16292         absolute symbols.
16293         * testsuite/Makefile.am (check_PROGRAMS): Add weak_undef_test.
16294         (weak_undef_test): New target.
16295         * testsuite/Makefile.in: Rebuild.
16296         * testsuite/weak_undef_file1.cc: New file.
16297         * testsuite/weak_undef_file2.cc: New file.
16298         * testsuite/weak_undef_test.cc: New file.
16299
16300 2008-04-03  Craig Silverstein  <csilvers@google.com>
16301
16302         * compressed_output.h (class Output_compressed_section): Use
16303         unsigned buffer.
16304         * compressed_output.cc (zlib_compress): Use unsigned buffers,
16305         add zlib header.
16306         (zlib_compressed_suffix): Removed.
16307         (Output_compressed_section::set_final_data_size): Use unsigned
16308         buffers.
16309         * testsuite/Makefile.am (flagstest_compress_debug_sections):
16310         Fix linker invocation.
16311         (flagstest_o_specialfile_and_compress_debug_sections):
16312         Likewise.
16313         * testsuite/Makefile.in: Regenerated.
16314
16315 2008-04-02  David S. Miller  <davem@davemloft.net>
16316
16317         *  dwarf_reader.cc (Sized_dwarf_line_info::read_header_prolog,
16318         Sized_dwarf_line_info::process_one_opcode): Use Swap_unaligned.
16319
16320 2008-04-02  Craig Silverstein  <csilvers@google.com>
16321
16322         * TODO: New file.
16323
16324 2008-04-02  Ian Lance Taylor  <iant@google.com>
16325
16326         * fileread.cc (File_read::find_view): Add byteshift and vshifted
16327         parameters.  Update for new key type to views_.  Change all
16328         callers.
16329         (File_read::read): Adjust for byteshift in returned view.
16330         (File_read::add_view): New function, broken out of
16331         find_and_make_view.
16332         (File_read::make_view): New function, broken out of
16333         find_and_make_view.
16334         (File_read::find_or_make_view): Add offset and aligned
16335         parameters.  Rewrite accordingly.  Change all callers.
16336         (File_read::get_view): Add offset and aligned parameters.  Adjust
16337         for byteshift in return value.
16338         (File_read::get_lasting_view): Likewise.
16339         * fileread.h (class File_read): Update declarations.
16340         (class File_read::View): Add byteshift_ field.  Add byteshift to
16341         constructor.  Add byteshift method.
16342         * archive.h (Archive::clear_uncached_views): New function.
16343         (Archive::get_view): Add aligned parameter.  Change all callers.
16344         * object.h (Object::get_view): Add aligned parameter.  Change all
16345         callers.
16346         (Object::get_lasting_view): Likewise.
16347
16348         * fileread.cc (File_read::release): Don't call clear_views if
16349         there are multiple objects.
16350         * fileread.h (File_read::clear_uncached_views): New function.
16351         * archive.cc (Add_archive_symbols::run): Call clear_uncached_views
16352         on the archive.
16353
16354 2008-03-31  Cary Coutant  <ccoutant@google.com>
16355
16356         Add thin archive support.
16357         * archive.cc (Archive::armagt): New const.
16358         (Archive::setup): Remove task parameter and calls to unlock.
16359         (Archive::unlock_nested_archives): New function.
16360         (Archive::read_header): Add nested_off parameter. Change
16361         all callers.
16362         (Archive::interpret_header): Likewise.
16363         (Archive::include_all_members): Change to handle thin
16364         archives.
16365         (Archive::include_member): Likewise.
16366         * archive.h (Archive::Archive): Add new parameters and
16367         initializers.
16368         (Archive::armagt): New const.
16369         (Archive::setup): Remove task parameter.
16370         (Archive::unlock_nested_archives): New function.
16371         (Archive::read_header): Add nested_off parameter.
16372         (Archive::interpret_header): Likewise.
16373         (Archive::Nested_archive_table): New typedef.
16374         (Archive::is_thin_archive_): New field.
16375         (Archive::nested_archives_): New field.
16376         (Archive::options_): New field.
16377         (Archive::dirpath_): New field.
16378         (Archive::task_): New field.
16379         * readsyms.cc (Read_symbols::do_read_symbols): Add check
16380         for thin archives.  Pass additional parameters to
16381         Archive::Archive.  Unlock the archive file after calling
16382         Archive::setup.
16383
16384 2008-03-29  Ian Lance Taylor  <iant@google.com>
16385
16386         * symtab.cc (Symbol_table::do_define_as_constant): Don't force a
16387         version symbol to be local.
16388         * testsuite/ver_test_4.sh: New file.
16389         * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_4.sh.
16390         (check_DATA): Add ver_test_4.syms.
16391         (ver_test_4.syms): New target.
16392         * testsuite/Makefile.in: Rebuild.
16393
16394         * output.cc
16395         (Output_section::Input_section_sort_entry::has_priority): New
16396         function.
16397         (Output_section::Input_section_sort_entry::match_file_name): New
16398         function.
16399         (Output_section::Input_section_sort_entry::match_section_name):
16400         Remove.
16401         (Output_section::Input_section_sort_entry::match_section_name_prefix):
16402         Remove.
16403         (Output_section::Input_section_sort_entry::match_section_file):
16404         Remove.
16405         (Output_section::Input_section_sort_compare::operator()): Rewrite
16406         using new Input_section_sort_entry functions.  Sort crtbegin and
16407         crtend first.  Sort sections with no priority before sections with
16408         a priority.
16409         * testsuite/initpri1.c (d3): Check j != 4.
16410         (cd5): New constructor/destructor function.
16411         (main): Check j != 2.
16412
16413         * symtab.cc (Symbol_table::add_from_object): If we don't use the
16414         new symbol when resolving, don't call set_is_default.
16415         * testsuite/ver_test_7.cc: New file.
16416         * testsuite/ver_test_7.sh: New file.
16417         * testsuite/Makefile.am (ver_test_7.so): New target.
16418         (ver_test_7.o): New target.
16419         (check_SCRIPTS): Add ver_test_7.sh.
16420         (check_DATA): Add ver_test_7.syms.
16421         (ver_test_7.syms): New target.
16422
16423 2008-03-28  Ian Lance Taylor  <iant@google.com>
16424
16425         * layout.cc (Layout::layout): If we see an input section with a
16426         name that needs sorting, set the must_sort flag for the output
16427         section.
16428         (Layout::make_output_section): If the name of the output section
16429         indicates that it might require sorting, set the may_sort flag.
16430         * output.h (Output_section::may_sort_attached_input_sections): New
16431         function.
16432         (Output_section::set_may_sort_attached_input_sections): New
16433         function.
16434         (Output_section::must_sort_attached_input_sections): New
16435         function.
16436         (Output_section::set_must_sort_attached_input_sections): New
16437         function.
16438         (class Output_section): Declare Input_section_sort_entry.  Define
16439         Input_section_sort_compare.  Declare
16440         sort_attached_input_sections.  Add new fields:
16441         may_sort_attached_input_sections_,
16442         must_sort_attached_input_sections_,
16443         attached_input_sections_are_sorted_.
16444         * output.cc (Output_section::Output_section): Initialize new
16445         fields.
16446         (Output_section::add_input_section): Add an entry to
16447         input_sections_ if may_sort or must_sort are true.
16448         (Output_section::set_final_data_size): Call
16449         sort_attached_input_sections if necessary.
16450         (Output_section::Input_section_sort_entry): Define new class.
16451         (Output_section::Input_section_sort_compare::operator()): New
16452         function.
16453         (Output_section::sort_attached_input_sections): New function.
16454         * configure.ac: Check whether the compiler supports constructor
16455         priorities.  Define a CONSTRUCTOR_PRIORITY automake conditional.
16456         * testsuite/initpri1.c: New file.
16457         * testsuite/Makefile.am (check_PROGRAMS): Add initpri1 if
16458         CONSTRUCTOR_PRIORITY.
16459         (initpri1_SOURCES, initpri1_DEPENDENCIES): New variables.
16460         (initpri1_LDFLAGS): New variable.
16461         * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
16462
16463 2008-03-27  Ian Lance Taylor  <iant@google.com>
16464
16465         * common.cc (Sort_commons::operator): Correct sorting algorithm.
16466         * testsuite/common_test_1.c: New file.
16467         * testsuite/Makefile.am (check_PROGRAMS): Add common_test_1.
16468         (common_test_1_SOURCES): New variable.
16469         (common_test_1_DEPENDENCIES): New variable.
16470         (common_test_1_LDFLAGS): New variable.
16471
16472         * symtab.cc (Symbol_table::add_from_object): Handle saw_undefined_
16473         and commons_ correctly when NAME/VERSION does not override
16474         NAME/NULL.
16475         * testsuite/ver_test_6.c: New file.
16476         * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_6
16477         (ver_test_6_SOURCES, ver_test_6_DEPENDENCIES): New variables.
16478         (ver_test_6_LDFLAGS, ver_test_6_LDADD): New variables.
16479
16480 2008-03-26  Ian Lance Taylor  <iant@google.com>
16481
16482         * symtab.cc (Symbol_table::add_from_relobj): Don't set the version
16483         of an undefined symbol from a version script.
16484         * testsuite/Makefile.am (ver_test_5.so): New target.
16485         (ver_test_5.o): New target.
16486         (check_SCRIPTS): Add ver_test_5.sh.
16487         (check_DATA): Add ver_test_5.syms.
16488         (ver_test_5.syms): New target.
16489         * testsuite/ver_test_5.cc: New file.
16490         * testsuite/ver_test_5.script: New file.
16491         * testsuite/ver_test_5.sh: New file.
16492         * Makefile.in, testsuite/Makefile.in: Rebuild.
16493
16494         PR gold/5986
16495         Fix problems building gold with gcc 4.3.0.
16496         * gold.h (TEMPLATE_ATTRIBUTE_PRINTF_4): Define.
16497         (gold_error_at_location, gold_warning_at_location): Use it.
16498         * configure.ac: Check whether we can compile and use a template
16499         function with a printf attribute.
16500         * x86_64.cc (Target_x86_64::do_code_fill): Swap out a 32-bit value
16501         when jumping over bytes.
16502         * object.cc: Instantiate Object::read_section_data.
16503         * debug.h: Include <cstring>
16504         * dwarf_reader.cc: Include <algorithm>
16505         * main.cc: Include <cstring>.
16506         * options.cc: Include <cstring>.
16507         * output.cc: Include <cstring>.
16508         * script.cc: Include <cstring>.
16509         * script.h: Include <string>.
16510         * symtab.cc: Include <cstring> and <algorithm>.
16511         * target-select.cc: Include <cstring>.
16512         * version.cc: Include <string>.
16513         * testsuite/testmain.cc: Include <cstdlib>.
16514         * configure, config.in: Rebuild.
16515
16516 2008-03-25  Ian Lance Taylor  <iant@google.com>
16517
16518         * options.cc: Include "../bfd/bfdver.h".
16519         (options::help): Print bug reporting address.
16520
16521         * version.cc (print_version): Adjust output for current value of
16522         BFD_VERSION_STRING.
16523
16524         * NEWS: New file.
16525
16526         * options.cc (options::help): Print list of supported targets.
16527         * target-select.h: Include <vector>.
16528         (class Target_selector): Make machine_, size_, and is_big_endian_
16529         fields const.  Add bfd_name_ and instantiated_target_ fields.
16530         (Target_selector::Target_selector): Add bfd_name parameter.
16531         (Target_selector::recognize): Make non-virtual, call
16532         do_recognize.
16533         (Target_selector::recognize_by_name): Make non-virtual, call
16534         do_recognize_by_name.
16535         (Target_selector::supported_names): New function.
16536         (Target_selector::bfd_name): New function.
16537         (Target_selector::do_instantiate_target): New pure virtual
16538         function.
16539         (Target_selector::do_recognize): New virtual function.
16540         (Target_selector::do_recognize_by_name): New virtual function.
16541         (Target_selector::instantiate_target): New private function.
16542         (supported_target_names): Declare.
16543         * target-select.cc (Target_selector::Target_selector): Update for
16544         new parameter and fields.
16545         (select_target_by_name): Check that the name matches before
16546         calling recognize_by_name.
16547         (supported_target_names): New function.
16548         * i386.cc (class Target_selector_i386): Update Target_selector
16549         constructor call.  Remove recognize and recognize_by_name.  Add
16550         do_instantiate_target.
16551         * x86_64.cc (class Target_selector_x86_64): Likewise.
16552         * testsuite/testfile.cc (class Target_selector_test): Update for
16553         changes to Target_selector.
16554
16555         * README: Rewrite, with some notes on unsupported features.
16556
16557 2008-03-24  Cary Coutant  <ccoutant@google.com>
16558
16559         * i386.cc (Target_i386::Got_type): New enum declaration.
16560         (Target_i386::Scan::local): Updated callers of Output_data_got
16561         member functions.
16562         (Target_i386::Scan::global): Likewise.
16563         (Target_i386::Relocate::relocate): Likewise.
16564         (Target_i386::Relocate::relocate_tls): Likewise.
16565         * object.h (Got_offset_list): New class.
16566         (Sized_relobj::local_has_got_offset): Added got_type parameter.
16567         (Sized_relobj::local_got_offset): Likewise.
16568         (Sized_relobj::set_local_got_offset): Likewise.
16569         (Sized_relobj::local_has_tls_got_offset): Removed.
16570         (Sized_relobj::local_tls_got_offset): Removed.
16571         (Sized_relobj::set_local_tls_got_offset): Removed.
16572         (Sized_relobj::Local_got_offsets): Changed to store a list of offsets.
16573         * output.cc (Output_data_got::add_global): Added got_type parameter.
16574         (Output_data_got::add_global_with_rel): Likewise.
16575         (Output_data_got::add_global_with_rela): Likewise.
16576         (Output_data_got::add_global_pair_with_rel): New function.
16577         (Output_data_got::add_global_pair_with_rela): New function.
16578         (Output_data_got::add_local): Added got_type parameter.
16579         (Output_data_got::add_local_with_rel): Likewise.
16580         (Output_data_got::add_local_with_rela): Likewise.
16581         (Output_data_got::add_local_pair_with_rel): New function.
16582         (Output_data_got::add_local_pair_with_rela): New function.
16583         (Output_data_got::add_global_tls): Removed.
16584         (Output_data_got::add_global_tls_with_rel): Removed.
16585         (Output_data_got::add_global_tls_with_rela): Removed.
16586         (Output_data_got::add_local_tls): Removed.
16587         (Output_data_got::add_local_tls_with_rel): Removed.
16588         (Output_data_got::add_local_tls_with_rela): Removed.
16589         * output.h (Output_data_got::add_global): Added got_type parameter.
16590         (Output_data_got::add_global_with_rel): Likewise.
16591         (Output_data_got::add_global_with_rela): Likewise.
16592         (Output_data_got::add_global_pair_with_rel): New function.
16593         (Output_data_got::add_global_pair_with_rela): New function.
16594         (Output_data_got::add_local): Added got_type parameter.
16595         (Output_data_got::add_local_with_rel): Likewise.
16596         (Output_data_got::add_local_with_rela): Likewise.
16597         (Output_data_got::add_local_pair_with_rel): New function.
16598         (Output_data_got::add_local_pair_with_rela): New function.
16599         (Output_data_got::add_global_tls): Removed.
16600         (Output_data_got::add_global_tls_with_rel): Removed.
16601         (Output_data_got::add_global_tls_with_rela): Removed.
16602         (Output_data_got::add_local_tls): Removed.
16603         (Output_data_got::add_local_tls_with_rel): Removed.
16604         (Output_data_got::add_local_tls_with_rela): Removed.
16605         * resolve.cc (Symbol::override_base_with_special): Removed
16606         reference to has_got_offset_ field.
16607         * symtab.cc (Symbol::init_fields): Replaced initialization
16608         of got_offset_ with got_offsets_.  Removed initialization
16609         of has_got_offset_
16610         * symtab.h (Symbol::has_got_offset): Aded got_type parameter.
16611         (Symbol::got_offset): Likewise.
16612         (Symbol::set_got_offset): Likewise.
16613         (Symbol::has_tls_got_offset): Removed.
16614         (Symbol::tls_got_offset): Removed.
16615         (Symbol::set_tls_got_offset): Removed.
16616         (Symbol::got_offset_): Removed.
16617         (Symbol::tls_mod_got_offset_): Removed.
16618         (Symbol::tls_pair_got_offset_): Removed.
16619         (Symbol::got_offsets_): New field.
16620         (Symbol::has_got_offset): Removed.
16621         (Symbol::has_tls_mod_got_offset): Removed.
16622         (Symbol::has_tls_pair_got_offset): Removed.
16623         * x86_64.cc (Target_x86_64::Got_type): New enum declaration.
16624         (Target_x86_64::Scan::local): Updated callers of Output_data_got
16625         member functions.
16626         (Target_x86_64::Scan::global): Likewise.
16627         (Target_x86_64::Relocate::relocate): Likewise.
16628         (Target_x86_64::Relocate::relocate_tls): Likewise.
16629
16630 2008-03-25  Ben Elliston  <bje@au.ibm.com>
16631
16632         * yyscript.y: Fix spelling error in comment.
16633
16634 2008-03-24  Ian Lance Taylor  <iant@google.com>
16635
16636         * options.h (class General_options): Define build_id option.
16637         * layout.h (class Layout): Declare write_build_id, create_note,
16638         create_build_id.  Add build_id_note_ member.
16639         * layout.cc: Include <cerrno>, <fcntl.h>, <unistd.h>,
16640         "libiberty.h", "md5.h", "sha1.h".
16641         (Layout::Layout): Initialize eh_frame_data_,
16642         eh_frame_hdr_section_, and build_id_note_.
16643         (Layout::finalize): Call create_build_id.
16644         (Layout::create_note): New function, broken out of
16645         Layout::create_gold_note.
16646         (Layout::create_gold_note): Call create_note.
16647         (Layout::create_build_id): New function.
16648         (Layout::write_build_id): New function.
16649         (Close_task_runner::run): Call write_build_id.
16650
16651         * x86_64.cc: Correct license to GPLv3.
16652
16653 2008-03-23  Ian Lance Taylor  <iant@google.com>
16654
16655         * options.cc: Include "demangle.h".
16656         (parse_optional_string): New function.
16657         (parse_long_option): Handle takes_optional_argument.
16658         (parse_short_option): Update dash_z initializer.  Handle
16659         takes_optional_argument.
16660         (General_options::General_options): Initialize do_demangle_.
16661         (General_options::finalize): Set do_demangle_.  Handle demangling
16662         style.
16663         * options.h (parse_optional_string): Declare.
16664         (struct One_option): Add optional_arg field.  Update constructor.
16665         Update call constructor calls.  Add takes_optional_argument
16666         function.
16667         (DEFINE_var): Add optional_arg__ parameter.  Change all callers.
16668         (DEFINE_optional_string): Define.
16669         (General_options::demangle): Change from DEFINE_bool to
16670         DEFINE_optional_string.
16671         (General_options::no_demangle): New function.
16672         (General_options::do_demangle): New function.
16673         (General_options::set_do_demangle): New function.
16674         (General_options::execstack_status_): Move definition to end of
16675         class definition.
16676         (General_options::static_): Likewise.
16677         (General_options::do_demangle_): New field.
16678         * object.cc (big_endian>::get_symbol_location_info): Call
16679         Options::do_demangle, not Options::demangle.
16680         * symtab.cc (demangle): Likewise.
16681
16682 2008-03-22  Ian Lance Taylor  <iant@google.com>
16683
16684         * gold.h: Include <cstddef> and <sys/types.h>
16685         * options.h: Include <cstring>.
16686
16687 2008-03-21  Ian Lance Taylor  <iant@google.com>
16688
16689         * Added source code to GNU binutils.
16690 \f
16691 Copyright (C) 2008-2015 Free Software Foundation, Inc.
16692
16693 Copying and distribution of this file, with or without modification,
16694 are permitted in any medium without royalty provided the copyright
16695 notice and this notice are preserved.
16696
16697 Local Variables:
16698 mode: change-log
16699 left-margin: 8
16700 fill-column: 74
16701 version-control: never
16702 End: