* target-reloc.h (relocate_section): If the reloc offset is out of
[external/binutils.git] / gold / ChangeLog
1 2013-04-26  Ian Lance Taylor  <iant@google.com>
2
3         * target-reloc.h (relocate_section): If the reloc offset is out of
4         range, pass VIEW as NULL to relocate.relocate.
5         * arm.cc (Target_arm:Relocate::relocate): Check for a NULL view.
6         * i386.cc (Target_i386::Relocate::relocate): Likewise.
7         * powerpc.cc (Target_powerpc::Relocate::relocate): Likewise.
8         * sparc.cc (Target_sparc::Relocate::relocate): Likewise.
9         * tilegx.cc (Target_tilegx::Relocate::relocate): Likewise.
10         * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
11
12 2013-04-26  Geoff Pike  <gpike@chromium.org>
13
14         * gold.cc (queue_final_tasks): invoke layout->queue_build_id_tasks().
15         * layout.cc (Hash_task): New class.
16         (Layout::queue_build_id_tasks): New function.
17         (Layout::write_build_id): Handle single-thread portion of build ID
18         computation.  (In some cases, all of it is single-threaded.)  Replace
19         {sha1,md5}_process_bytes with {sha1,md5}_buffer to get the same
20         functionality in fewer lines of code.
21         * layout.h (Layout::queue_build_id_tasks): New function declaration.
22         * options.h (General_options): make "--build-id" default to tree
23         rather than sha1.  Add two new options related to --build-id=tree:
24         --build-id-chunk-size-for-treehash and
25         --build-id-min-file-size-for-treehash.
26         * Makefile.am: add testing of --build-id=tree and related new options
27         (these tests will be invoked by "make check").
28         * Makefile.in: Regenerate.
29
30 2013-04-25  Alan Modra  <amodra@gmail.com>
31
32         * configure.tgt: Add powerpcle and powerpc64le.
33
34 2013-04-22  Alan Modra  <amodra@gmail.com>
35
36         PR gold/15355
37         * layout.cc (Layout::segment_precedes): Allow more than one
38         segment with the same type and flags.
39
40 2013-04-15  Cary Coutant  <ccoutant@google.com>
41
42         * layout.cc (Layout::set_relocatable_section_offsets): Don't
43         allocate space in file for BSS sections.
44
45 2013-04-15  Cary Coutant  <ccoutant@google.com>
46
47         * script-sections.cc (Orphan_output_section): Reset address
48         to zero after each orphaned section for relocatable links.
49
50 2013-04-15  Cary Coutant  <ccoutant@google.com>
51
52         * symtab.cc (Symbol_table::sized_write_globals): Subtract
53         section starting address for relocatable link.
54         * testsuite/Makefile.am (script_test_11): New test.
55         * testsuite/Makefile.in: Regenerate.
56         * testsuite/script_test_11.c: New source file.
57         * testsuite/script_test_11.t: New linker script.
58
59 2013-04-13  Alan Modra  <amodra@gmail.com>
60
61         * powerpc.cc (Stub_control::can_add_to_stub_group): Don't set
62         owner when sections are not adjacent and exceed group size.
63         (Target_powerpc::group_sections): Handle corner case.
64         (Target_powerpc::Branch_info::make_stub): Handle case where
65         stub table doesn't exist due to branches in non-exec sections.
66         (Target_powerpc::Relocate::relocate): Likewise.
67
68 2013-04-11  Alan Modra  <amodra@gmail.com>
69
70         PR gold/15354
71         * powerpc.cc (Target_powerpc::make_brlt_section): Name section
72         .branch_lt to match bfd ld.  Adjust comments throughout file.
73
74 2013-04-04  Ian Lance Taylor  <iant@google.com>
75
76         GCC PR c++/56840
77         * object.cc (do_layout_deferred_sections): Handle .eh_frame
78         sections before checking whether they are included in the link.
79
80 2013-03-29  Sriraman Tallam  <tmsriram@google.com>
81
82         * archive.cc (Archive::get_elf_object_for_member):  Create the elf
83         object before calling the plugin claim_file handler.  Pass the elf
84         object of the archive to the plugin. Delete the elf object if the
85         plugin claims the file.
86
87 2013-03-21  Alan Modra  <amodra@gmail.com>
88
89         * layout.cc (Layout::set_segment_offsets): Accept writable .text
90         segment when omagic.
91
92 2013-03-21  Alan Modra  <amodra@gmail.com>
93
94         * dwp.cc (Dwp_output_file::add_contribution): Avoid signed/unsigned
95         comparison warning.
96         * layout.cc (Layout::create_dynamic_symtab): Avoid "may be used
97         uninitialized" warning.
98
99 2013-03-20  Alan Modra  <amodra@gmail.com>
100
101         * symtab.h (Symbol::clear_version): New function.
102         * symtab.cc (Symbol_table::set_dynsym_indexes): Don't set object
103         is_needed by weak references.  Clear version for symbols defined
104         in as-needed objects that are not needed.
105
106 2013-03-15  Alan Modra  <amodra@gmail.com>
107
108         * powerpc.cc (Target_powerpc::Scan::reloc_needs_plt_for_ifunc): Make
109         static and public.  Add report_err param.  Return false for data refs.
110         (Target_powerpc::rela_dyn_section): New overloaded function.
111         (Target_powerpc::plt_, iplt_): Elucidate.
112         (Output_data_plt_powerpc::entry_count): Handle current_data_size()==0.
113         (Output_data_plt_powerpc::do_write): Don't write .iplt.
114         (Output_data_plt_powerpc::plt_entry_count): Don't add .iplt entries.
115         (Target_powerpc::Scan::local, global): Adjust reloc_needs_plt_for_ifunc
116         calls.  Put ifunc dynamic relocs in irela_dyn_section.  Only
117         push_branch and make_plt_entry for ifunc syms when
118         reloc_needs_plt_for_ifunc.
119         (Target_powerpc::Relocate::relocate): Don't use plt entry value
120         for ifunc unless reloc_needs_plt_for_ifunc.
121
122 2013-03-15  Alan Modra  <amodra@gmail.com>
123
124         * gc.h (gc_process_relocs): Don't look through function descriptors.
125         * icf.cc (get_section_contents): Do so here instead.
126
127 2013-03-13  Alan Modra  <amodra@gmail.com>
128
129         * powerpc.cc (is_branch_reloc): Forward declare.
130         (Target_powerpc::do_can_check_for_function_pointers): New predicate.
131         (Target_powerpc::Scan::local_reloc_may_be_function_pointer): Return
132         false for 64-bit, true for 32-bit non-branch relocs.
133         (Target_powerpc::Scan::global_reloc_may_be_function_pointer): Likewise.
134         * testsuite/Makefile.am (icf_test): Use linker map file instead of
135         nm output.
136         (icf_safe_test): Generate linker map file as well as nm output.
137         (icf_safe_so_test): Likewise.
138         * testsuite/Makefile.in: Regenerate.
139         * testsuite/icf_test.sh: Parse linker map file to determine
140         section folding.
141         * testsuite/icf_safe_test.sh: Likewise.  Expect folding for PowerPC.
142         * testsuite/icf_safe_so_test.sh: Likewise.
143         (X86_32_or_ARM_specific_safe_fold): Merge into..
144         (arch_specific_safe_fold): ..this.
145         (X86_64_specific_safe_fold): Delete unused function.
146
147 2013-03-12  Alan Modra  <amodra@gmail.com>
148
149         * gc.h (gc_process_relocs): Look through function descriptors
150         to determine shndx, symvalue and addend used by ICF.  Tidy
151         variable duplication.
152
153 2013-03-11  Alan Modra  <amodra@gmail.com>
154
155         * gold.cc (queue_middle_tasks): Move detect_odr_violations..
156         * layout.cc (Layout_task_runner::run): ..to here.
157         * symtab.h (struct Symbol_location): Extract from..
158         (class Symbol_table): ..here.
159         * symtab.cc (Symbol_table::linenos_from_loc): Invoke function_location.
160         * target.h (class Target): Add function_location and
161         do_function_location functions.
162         (class Sized_target): Add do_function_location.
163         * object.h (class Sized_relobj_file): Move find_shdr..
164         (class Object): ..to here.
165         * object.cc: Likewise.  Update to suit.  Instantiate.
166         (Sized_relobj_file::find_eh_frame): Update find_shdr call.
167         * powerpc.cc (class Powerpc_dynobj): New.
168         (Target_powerpc::do_function_location): New function.
169         (Powerpc_relobj::do_find_special_sections): Update find_shdr call.
170         (Powerpc_dynobj::do_read_symbols): New function.
171         (Target_powerpc::do_make_elf_object): Make a Powerpc_dynobj.
172
173 2013-03-08  Ian Lance Taylor  <iant@google.com>
174
175         * options.cc (General_options::string_to_object_format): Accept
176         "default".
177
178 2013-03-08  Alan Modra  <amodra@gmail.com>
179
180         * ehframe.h (Post_fdes) Make it a vector of Post_fde rather than
181         pointer to Post_fde.
182         (struct Post_fde): Move definition to here..
183         * ehframe.cc (struct Post_fde): ..from here.
184         (Cie::write): Don't alloc Post_fde.
185         (Eh_frame::do_sized_write): Update.  Don't free Post_fde.
186
187 2013-03-07  Alan Modra  <amodra@gmail.com>
188
189         * testsuite/discard_locals_relocatable_test.c: Add a powerpc
190         relocation referencing .LC0.
191         * testsuite/discard_locals_test.sh: Remove FIXMEs.
192
193 2013-03-07  Alan Modra  <amodra@gmail.com>
194
195         * testsuite/ifunc-sel.h (ifunc_sel, ifunc_one): Mark
196         always_inline.  Add assembly for powerpc to avoid GOT.
197
198 2013-03-07  Alan Modra  <amodra@gmail.com>
199
200         * testsuite/script_test_10.sh: Don't test .bss section
201         header number.
202
203 2013-03-06  Alan Modra  <amodra@gmail.com>
204
205         * powerpc.cc (class Powerpc_relobj): Move some member functions.
206         (Target_powerpc::symval_for_branch):  Add symtab param.  Update
207         all callers.  Handle folded sections.
208         (Target_powerpc::do_gc_add_reference): Don't cast dynamic object
209         to Powerpc_relobj.
210         (Global_symbol_visitor_opd::operator()): Likewise.
211
212 2013-03-04  Alan Modra  <amodra@gmail.com>
213
214         * testsuite/Makefile.am (final_layout_script.lds): Add .sbss.
215         * testsuite/Makefile.in: Regenerate.
216
217 2013-03-01  Cary Coutant  <ccoutant@google.com>
218
219         Add dwp support for v2 DWARF package file format.
220         * dwarf_reader.cc (Dwarf_info_reader::visit_type_unit): Add
221         tu_length parameter.  Adjust all callers.
222         * dwarf_reader.h (Dwarf_info_reader::visit_type_unit): Likewise.
223         * dwp.cc: Include dwarf.h.
224         (Section_bounds): New struct type.
225         (Unit_set): New struct type.
226         (Dwo_file::Dwo_file): Initialize new data member.
227         (Dwo_file::read_compunit_index, Dwo_file::read_typeunit_index):
228         Combine and rename to...
229         (Dwo_file::read_unit_index): ...this.
230         (Dwo_file::sized_read_compunit_index)
231         (Dwo_file::sized_read_typeunit_index): Combine and rename to...
232         (Dwo_file::sized_read_unit_index): ...this.
233         (Dwo_file::copy_section): Remove section_name, is_str_offsets
234         parameters; add section_id parameter.
235         (Dwo_file::add_cu_set, Dwo_file::add_tu_set): Combine and rename to...
236         (Dwo_file::add_unit_set): ...this.
237         (Dwo_file::shndx_map_): Remove.
238         (Dwo_file::sect_offsets_): New data member.
239         (Dwp_output_file::Dwp_output_file): Initialize new data members.
240         (Dwp_output_file::add_section): Rename to...
241         (Dwp_output_file::add_contribution): ...this.
242         (Dwp_output_file::add_cu_set): Combine parameters into a struct.
243         (Dwp_output_file::add_tu_set): Likewise.
244         (Dwp_output_file::Contribution): New type.
245         (Dwp_output_file::Section::contributions): New data member.
246         (Dwp_output_file::Cu_or_tu_set): Remove.
247         (Dwp_output_file::Section::Section): New ctor.
248         (Dwp_output_file::Dwp_index::Shndx_pool): Remove.
249         (Dwp_output_file::Dwp_index::Section_table): New type.
250         (Dwp_output_file::Dwp_index::Dwp_index): Initialize new data members.
251         (Dwp_output_file::Dwp_index::enter_set): Change type of "set"
252         parameter.
253         (Dwp_output_file::Dwp_index::shndx_pool): Remove.
254         (Dwp_output_file::Dwp_index::shndx_pool_end): Remove.
255         (Dwp_output_file::Dwp_index::section_table): New member function.
256         (Dwp_output_file::Dwp_index::section_table_end): New member function.
257         (Dwp_output_file::Dwp_index::shndx_pool_size): Remove.
258         (Dwp_output_file::Dwp_index::section_table_rows): New member function.
259         (Dwp_output_file::Dwp_index::section_table_cols): New member function.
260         (Dwp_output_file::Dwp_index::shndx_pool_): Remove.
261         (Dwp_output_file::Dwp_index::section_table_): New data member.
262         (Dwp_output_file::Dwp_index::section_mask_): New data member.
263         (Dwp_output_file::add_output_section): New member function.
264         (Dwp_output_file::write_new_section): New member function.
265         (Dwp_output_file::write_contributions): New member function.
266         (Dwp_output_file::section_id_map_): New data member.
267         (class Dwo_id_info_reader): Remove.
268         (class Unit_reader): New class.
269         (get_dwarf_section_name): New function.
270         (Dwo_file::read_executable): Adjust initializations of class data.
271         (Dwo_file::read): Add support for v2 package file format.
272         (Dwo_file::read_unit_index): Likewise.
273         (Dwo_file::sized_read_unit_index): Likewise.
274         (Dwo_file::copy_section): Likewise.
275         (Dwo_file::add_unit_set): Likewise.
276         (Dwp_output_file::add_output_section): Likewise.
277         (Dwp_output_file::add_contribution): Likewise.
278         (Dwp_output_file::Dwp_index::find_or_add): Use row index to check
279         for empty slot.
280         (Dwp_output_file::Dwp_index::enter_set): Add support for v2 package
281         file format.
282         (Dwp_output_file::Dwp_index::grow): Use row index to check for empty
283         slot.
284         (Dwp_output_file::initialize): Remove unused function.
285         (Dwp_output_file::finalize): Add support for v2 package file format.
286         (Dwp_output_file::write_index): Likewise.
287         * gdb-index.cc (Gdb_index_info_reader::visit_type_unit): Adjust
288         function prototype.
289
290 2013-03-01  Cary Coutant  <ccoutant@google.com>
291
292         * dwarf_reader.cc (Dwarf_info_reader::check_buffer): Move
293         function into class definition in header file.
294         (Dwarf_info_reader::warn_corrupt_debug_section): New function.
295         * dwarf_reader.h (Dwarf_info_reader::warn_corrupt_debug_section):
296         New function.
297         (Dwarf_info_reader::check_buffer): Move here from .cc file.
298
299 2013-02-28  Alan Modra  <amodra@gmail.com>
300
301         * target.h (Target::plt_fde_location, do_plt_fde_location): Declare.
302         * target.cc (Target::do_plt_fde_location): New function.
303         * ehframe.h (class FDE): Add post_map field to u_.from_linker,
304         accessor function, and constructor param.
305         (struct Post_fde, Post_fdes): Declare.
306         (Cie::write): Add post_fdes param.
307         * ehframe.cc (Fde::write): Use plt_fde_location.
308         (struct Post_fde): Define.
309         (Cie::write): Stash FDEs added post merge mapping.
310         (Eh_frame::add_ehframe_for_plt): Assert no new CIEs after mapping.
311         Adjust Fde constructor call.  Bump final_data_size_ for post map FDEs.
312         (Eh_frame::do_sized_write): Arrange to write post map FDES after
313         other FDEs.
314         * powerpc.cc (Target_powerpc::do_plt_fde_location): New function.
315         (Target_powerpc::has_glink): New function.
316         (Target_powerpc::do_relax): Add eh_frame info for stubs.
317         (struct Eh_cie, eh_frame_cie, glink_eh_frame_fde_64,
318         glink_eh_frame_fde_32, default_fde): New data.
319         (Stub_table::eh_frame_added_): New var.
320         (Stub_table::find_long_branch_entry, stub_address, stub_offset):
321         Make const.
322         (Stub_table::add_eh_frame): New function.
323         (Output_data_glink::add_eh_frame): New function.
324         (Target_powerpc::make_glink_section): Call add_eh_frame.
325
326 2013-02-15  Ian Lance Taylor  <iant@google.com>
327
328         * options.h (DEFINE_uint64_alias): Define.
329         (class General_options): Add -Ttext-segment as an alias for
330         -Ttext.
331
332 2013-02-15  Alan Modra  <amodra@gmail.com>
333
334         * powerpc.cc (Stub_table::plt_off): New function, extracted from..
335         (Stub_table::do_write): ..here, two places.
336         (Stub_table::plt_call_size): Use it here too.
337
338 2013-02-11  Ian Lance Taylor  <iant@google.com>
339
340         * descriptors.cc (Descriptors::close_all): New function.
341         * descriptors.h (class Descriptors): Declare close_all.
342         (close_all_descriptors): New inline function.
343         * plugin.cc: Include "descriptors.h".
344         (Plugin_manager::cleanup): Call close_all_descriptors.
345
346 2013-02-06  Alan Modra  <amodra@gmail.com>
347
348         * README: Update coding style link.
349
350 2013-01-28  Cary Coutant  <ccoutant@google.com>
351
352         * dwp.cc (File_list): New typedef.
353         (Dwo_name_info_reader): New class.
354         (Dwo_id_info_reader::Dwo_id_info_reader): Remove unused parameters.
355         (Dwo_id_info_reader::visit_top_die): Remove unused member function.
356         (Dwo_file::~Dwo_file): Delete input_file_ after obj_.
357         (Dwo_file::read_executable): New function.
358         (Dwo_file::read): Move common setup code to ...
359         (Dwo_file::make_object): ... here.
360         (dwp_options): Add --exec/-e.
361         (usage): Likewise.
362         (main): Likewise.
363
364 2013-01-24  Sriraman Tallam  <tmsriram@google.com>
365
366         * layout.cc (Layout::layout): Check for option text_reorder.
367         (Layout::make_output_section): Ditto.
368         * options.h (text_reorder): New option.
369         * output.cc (Input_section_sort_compare): Remove special ordering
370         of section names.
371         (Output_section::
372          Input_section_sort_section_name_special_ordering_compare::
373          operator()): New function.
374         (Output_section::sort_attached_input_sections): Use new sort function
375         for .text.
376         * output.h (Input_section_sort_section_name_special_ordering_compare):
377         New struct.
378         * testsuite/Makefile.am (text_section_grouping): Test option
379         --no-text-reorder
380         * testsuite/Makefile.in: Regenerate.
381         * testsuite/text_section_grouping.sh: Check order of functions without
382         default text reordering.
383
384 2013-01-18  Mike Frysinger  <vapier@gentoo.org>
385
386         * options.h (General_options): Change default to true for new_dtags.
387
388 2013-01-18  Mike Frysinger  <vapier@gentoo.org>
389
390         * layout.cc (Layout::finish_dynamic_section): Only add DT_RPATH
391         when enable_new_dtags is false.  Only add DT_RUNPATH when
392         enable_new_dtags is true.
393
394 2013-01-17  Serge Pavlov  <serge.v.pavlov@gmail.com>
395
396         * powerpc.cc (Stub_table::find_plt_call_entry): Make types
397         used in declaration and definition consistent.
398         (Target_powerpc::symval_for_branch): Ditto.
399
400 2013-01-16  Sriraman Tallam  <tmsriram@google.com>
401
402         * testsuite/plugin_final_layout.cc: Fix comment.
403
404 2013-01-16  Sriraman Tallam  <tmsriram@google.com>
405
406         * layout.cc (Layout::layout): Do not do default sorting for
407         text sections when section ordering is specified.
408         (make_output_section): Ditto.
409         * testsuite/plugin_final_layout.cc: Name the function sections
410         to catch reordering issues.
411
412 2013-01-15  Alan Modra  <amodra@gmail.com>
413
414         * powerpc.cc (Target_powerpc::do_relax): Default shared libs to
415         plt-thread-safe.
416
417 2013-01-15  Alan Modra  <amodra@gmail.com>
418
419         * testsuite/Makefile.am (final_layout_script.lds): Handle .got section.
420         * testsuite/Makefile.in: Regenerate.
421
422 2013-01-14  Alan Modra  <amodra@gmail.com>
423
424         * testsuite/Makefile.am (MOSTLYCLEANFILES): Add various output files.
425         * testsuite/Makefile.in: Regenerate.
426
427 2013-01-11  Pavel Chupin  <pavel.v.chupin@intel.com>
428
429         PR bfd/14430
430         Fix mingw gold build with plugins enabled
431         * Makefile.am: Replace -ldl with @DLOPEN_LIBS@.
432         * configure.ac: Export DLOPEN_LIBS and add headers check.
433         * plugin.cc: Handle non-dlfcn case.
434         * Makefile.in: Regenerate.
435         * config.in: Regenerate.
436         * configure: Regenerate.
437         * testsuite/Makefile.in: Regenerate.
438
439 2013-01-09  Sriraman Tallam  <tmsriram@google.com>
440
441         * output.h (sort_attached_input_sections): Change to be public.
442         * script-sections.cc
443         (Output_section_definition::set_section_addresses): Sort
444         attached input sections according to section order before linker
445         script assigns section addresses.
446         (Orphan_output_section::set_section_addresses): Sort
447         attached input sections according to section order before linker
448         script assigns section addresses.
449         * Makefile.am (final_layout.sh): Use a simple linker script to
450         check if section ordering still works.
451         * Makefile.in: Regenerate.
452
453 2013-01-09  Ben Cheng  <bccheng@google.com>
454
455         * arm.cc (Target_arm::attributes_accept_div): New function.
456         (Target_arm::attributes_forbid_div): New function.
457         (Target_arm::merge_object_attributes): Merge the Tag_DIV_use
458         attribute using the same new functions as what bfd/elf32_arm.c
459         does.
460
461 2013-01-07  Cary Coutant  <ccoutant@google.com>
462
463         PR gold/14993
464         * output.cc (Output_section::add_input_section): For incremental
465         updates, don't track input sections that are allocated from patch
466         space.
467
468 2013-01-07  H.J. Lu  <hongjiu.lu@intel.com>
469             Ian Lance Taylor  <iant@google.com>
470
471         PR gold/14897
472         * configure.ac (--enable-ld): Removed.
473         (install_as_default): Set to yes only for --enable-gold=default
474         or --disable-ld.
475         * configure: Regenerated.
476
477 2013-01-07  H.J. Lu  <hongjiu.lu@intel.com>
478
479         * options.h (General_options): Add -fuse-ld= for GCC linker
480         option compatibility.
481
482 2013-01-04  Cary Coutant  <ccoutant@google.com>
483
484         * configure.ac: Fix typo restoring CXXFLAGS.
485         * configure: Regenerate.
486
487 2013-01-04  Cary Coutant  <ccoutant@google.com>
488
489         * testsuite/Makefile.am (CXXLINK_S): New macro.
490         (debug_msg_so.err, debug_msg_ndebug.err): Use CXXLINK_S.
491         * testsuite/Makefile.in: Regenerate.
492
493 2013-01-02  H.J. Lu  <hongjiu.lu@intel.com>
494
495         * version.cc (print_version): Update copyright year to 2013.
496
497 2012-12-20  Ian Lance Taylor  <iant@google.com>
498
499         * layout.cc (Layout::special_ordering_of_input_section): New
500         function.
501         (Layout::layout): If input section requires special ordering, must
502         sort input sections.
503         (Layout::make_output_section): May sort .text input sections.
504         (Layout::is_section_name_prefix_grouped): Remove.
505         * layout.h (class Layout): Declare
506         special_ordering_of_input_section.  Don't declare
507         is_section_name_prefix_grouped.
508         * output.cc (Output_section::add_input_section): Revert last
509         change.
510         (Output_section::Input_section_sort::match_file_name): Don't crash
511         if called on output section data.
512         (Output_section::Input_section_sort_compare): Sort based on
513         special ordering.
514         (Output_section::Input_section_sort_section_order_index_compare):
515         Revert last patch.
516         (Output_section::sort_attached_input_sections): Likewise.
517
518 2012-12-18  Sriraman Tallam  <tmsriram@google.com>
519
520         * layout.cc (Layout::is_section_name_prefix_grouped): New function.
521         * layout.h (Layout::is_section_name_prefix_grouped): New function.
522         * output.cc (Output_section::add_input_section): Check if section
523         name contains special prefix.  Keep input sections to sort such
524         sections.
525         (Output_section::Input_section_sort_section_order_index_compare
526          ::operator()): Group sections according to prefixes.
527         (Output_section::sort_attached_input_sections): Add condition to
528         Input_section_entry constructor call.
529         * testsuite/Makefile.am (text_section_grouping): New test.
530         * testsuite/Makefile.in: Regenerate.
531         * testsuite/text_section_grouping.cc: New file.
532         * testsuite/text_section_grouping.sh: New file.
533
534 2012-12-17  Nick Clifton  <nickc@redhat.com>
535
536         * Makefile.am: Add copyright notice.
537         * NEWS: Likewise.
538         * README: Likewise.
539         * configure.ac: Likewise.
540         * ftruncate.c: Likewise.
541         * Makefile.in: Regenerate.
542
543 2012-12-14  Cary Coutant  <ccoutant@google.com>
544
545         * testsuite/Makefile.am (exception_separate_shared_12_test): Add
546         --no-as-needed flag.
547         (exception_separate_shared_12_test): Likewise.
548         (incremental_copy_test): Likewise.
549         * testsuite/Makefile.in: Regenerate.
550
551 2012-12-14  Cary Coutant  <ccoutant@google.com>
552
553         * dwp.cc (Dwp_output_file::add_cu_set): Check for duplicate CUs.
554         (Dwp_output_file::Dwp_index::enter_set): Add assert.
555
556 2012-12-12  Alan Modra  <amodra@gmail.com>
557
558         * powerpc.cc (class Track_tls): New.
559         (class Relocate, class Scan): Inherit Track_tls.
560         (Target_powerpc::Scan::local, global): Track tls optimization
561         and avoid creating plt entry for __tls_get_addr if all uses
562         are optimized away.
563         (Target_powerpc::Relocate::relocate): Update to use Track_tls.
564
565 2012-12-12  Alan Modra  <amodra@gmail.com>
566
567         * options.h (General_options): Add --toc-sort/--no-toc-sort.
568         Replace no_toc_optimize with toc_optimize.
569         * output.h (Output_section::input_sections): Provide non-const variant.
570         * powerpc.cc (Powerpc_relobj::has_small_toc_reloc_,
571         set_has_small_toc_reloc, has_small_toc_reloc): New variable and
572         accessors.
573         (Target_powerpc::Scan::local, global): Call set_has_small_toc_reloc.
574         (class Sort_toc_sections): New.
575         (Target_powerpc::do_finalize_sections): Sort toc sections.
576         (Target_powerpc::Relocate::relocate): Update toc_optimize test.
577
578 2012-12-10  Roland McGrath  <mcgrathr@google.com>
579
580         * testsuite/binary_unittest.cc (read_all): New function.
581         (Sized_binary_test): Use it instead of ::read.
582         * fileread.cc (do_read): Don't assume pread always reads the whole
583         amount in a single call.
584
585 2012-12-10  Alan Modra  <amodra@gmail.com>
586
587         * powerpc.cc (Target_selector_powerpc::Target_selector_powerpc):
588         Set EM_PPC64 or EM_PPC here.
589         (Target_selector_powerpc::do_recognize): Delete.
590
591 2012-12-10  Alan Modra  <amodra@gmail.com>
592
593         * powerpc.cc (Powerpc_relobj::Powerpc_relobj): Init has14_ and
594         stub_table_.
595         (Target_powerpc::Branch_info::make_stub): Don't omit addend.
596
597 2012-12-07  Roland McGrath  <mcgrathr@google.com>
598
599         * testsuite/binary_unittest.cc (Sized_binary_test):
600         Use open_descriptor rather than ::open.
601
602 2012-12-07  Alan Modra  <amodra@gmail.com>
603
604         * powerpc.cc (Stub_table::do_write): Delete redundant Address
605         typedef and invalid_address constant.
606         (Output_data_glink, Stub_table, Target_powerpc): Explicitly
607         instantiate constants.
608
609 2012-12-06  Roland McGrath  <mcgrathr@google.com>
610
611         * configure.ac (HAVE_ZLIB): Use AM_ZLIB instead of AC_SEARCH_LIBS.
612         Use $ac_cv_header_zlib_h = yes as the condition in AM_CONDITIONAL.
613         * aclocal.m4: Regenerate.
614         * configure: Regenerate.
615         * Makefile.in: Regenerate.
616         * testsuite/Makefile.in: Regenerate.
617
618 2012-12-07  Alan Modra  <amodra@gmail.com>
619
620         * options.h (General_options): Add no_toc_optimize.
621         * powerpc.cc (ok_lo_toc_insn): New function.
622         (Target_powerpc::Relocate::relocate): Optimize toc access sequences.
623
624 2012-12-06  Alan Modra  <amodra@gmail.com>
625
626         * options.h (General_options): Add plt_align, plt_static_chain,
627         plt_thread_safe.  Update stub_group_size help text.
628         * powerpc.cc (Target_powerpc::plt_thread_safe): New access function
629         for new plt_thread_safe_ var.
630         (use_plt_offset): Correct comments.
631         (Target_powerpc::do_relax): Look for thread creation symbols to
632         determine default plt_thread_safe value.  Clear plt call stubs
633         as well as branch stubs each iteration.
634         (add_2_2_11, add_12_12_11, bnectr_p4, cmpldi_2_0, xor_11_11_11): New
635         insn constants.
636         (l, hi, ha, write_insn): Move earlier.
637         (Stub_table): Delete prev_size, add last_plt_size and last_branch_size.
638         (Stub_table::clear_stubs): Rename from clear_long_branch_stubs, clear
639         plt stubs too.
640         (Stub_table::update_size): Adjust.
641         (Stub_table::prev_size, set_prev_size): Delete.
642         (Stub_table::stub_align): Let --plt-align affect result.
643         (Stub_table::plt_call_size): Calculate sizes for various stubs.
644         (Stub_table::branch_stub_size): Use last_plt_size in address calc.
645         (Stub_table::add_plt_call_stub): Pass iterator to plt_call_size.
646         (Stub_table::do_write): Support more stub variants.
647
648 2012-12-04  Alan Modra  <amodra@gmail.com>
649
650         * powerpc.cc (Powerpc_relobj::do_scan_relocs): Delete.
651         (Target_powerpc::do_define_standard_symbols): New function.
652
653 2012-12-03  Alan Modra  <amodra@gmail.com>
654
655         * output.h: Formatting, whitespace.
656
657 2012-12-03  Alan Modra  <amodra@gmail.com>
658
659         * layout.h (Layout::get_executable_sections): Declare.
660         * layout.cc (Layout::get_executable_sections): New function.
661         * arm.cc (Target_arm::group_sections): Use it.
662         (Arm_output_section::group_sections): Delete now redundant test.
663         * output.cc (Output_reloc::Output_reloc): Add is_relative.
664         param to handle relative relocs.
665         * output.h (Output_reloc::Output_reloc <absolute reloc>): Likewise.
666         (Output_data_reloc::add_absolute): Adjust.
667         (Output_data_reloc::add_relative): New function.
668         (Output_data::reset_data_size): New function.
669         (Output_relaxed_input_section::set_relobj, set_shndx): New functions.
670         (Output_section::set_addralign): New function.
671         (Output_section::checkpoint_set_addralign): New function.
672         (Output_section::clear_section_offsets_need_adjustment): New function.
673         (Output_section::input_sections): Make public.
674         * powerpc.cc (class Output_data_brlt_powerpc): New.
675         (class Stub_table, class Stub_control): New.
676         (Powerpc_relobj::has14_, set_has_14bit_branch, has_14bit_branch,
677         stub_table_, set_stub_table, stub_table): New vectors and accessor
678         functions.
679         (Target_powerpc::do_may_relax, do_relax, push_branch,
680         new_stub_table, stub_tables, brlt_section, group_sections,
681         add_branch_lookup_table, find_branch_lookup_table,
682         write_branch_lookup_table, make_brlt_section): New functions.
683         (Target_powerpc::struct Sort_sections, class Branch_info): New.
684         (Target_powerpc::brlt_section_, stub_tables_, branch_lookup_table_,
685         branch_info_): New vars.
686         (Target_powerpc::make_plt_entry, make_local_ifunc_plt_entry): Don't
687         make call stubs here.
688         (Output_data_glink): Remove all call stub handling from this class.
689         (Target_powerpc::Scan::local, global): Save interesting branch
690         relocs and relocs for ifunc.  Adjust calls to plt entry functions.
691         (Target_powerpc::do_finalize_sections): Only make reg save/restore
692         functions on final link.
693         (Target_powerpc::Relocate::relocate): Adjust lookup of call stubs.
694         Handle long branch destinations too.
695         (Target_powerpc::do_dynsym_value, do_plt_address_for_global,
696         do_plt_address_for_local): Adjust lookup of plt call stubs.
697
698 2012-11-30  Alan Modra  <amodra@gmail.com>
699
700         * powerpc.c (Target_powerpc::Scan::global): Don't emit relative
701         relocs against protected symbols when building 32-bit shared libs.
702
703 2012-11-30  Alan Modra  <amodra@gmail.com>
704
705         * powerpc.cc (Target_powerpc::make_plt_section): Add symtab
706         param.  Call got_section() to make .got.  Update all callers
707         and their callers and so on.
708
709 2012-11-30  Alan Modra  <amodra@gmail.com>
710
711         * powerpc.cc (Powerpc_relobj::do_scan_relocs): Make STB_LOCAL
712         _GLOBAL_OFFSET_TABLE_ rather than STB_WEAK.
713         (Output_data_got_powerpc::make_header): Update _GLOBAL_OFFSET_TABLE_
714         value if it already exists.
715
716 2012-11-19  H.J. Lu  <hongjiu.lu@intel.com>
717
718         PR gold/14858
719         * x86_64.cc (Relocate::tls_ld_to_le): Support x32.
720
721 2012-11-14  Roland McGrath  <mcgrathr@google.com>
722
723         * arm.cc (Output_data_plt_arm_nacl::first_plt_entry): Use bic rather
724         than bfc instruction for data sandboxing.
725
726 2012-11-08  Alan Modra  <amodra@gmail.com>
727
728         * po/POTFILES.in: Regenerate.
729
730 2012-11-05  Alan Modra  <amodra@gmail.com>
731
732         * configure.ac: Apply 2012-09-10 change to config.in here.
733         * configure: Regenerate.
734
735 2012-11-05  Alan Modra  <amodra@gmail.com>
736
737         * powerpc.cc (Powerpc_relobj): Delete "Offset" typedef.
738         (struct Opd_ent): Use "Address" rather than "Offset".
739         (Output_data_got_powerpc::got_base_offset): Return Valtype.
740         (Target_powerpc::got_section): Make public.
741         (Target_powerpc::scan_relocs): Move code setting symbols..
742         (Powerpc_relobj::do_scan_relocs): ..to here, new function.
743         Create _SDA_BASE_ only when referenced.
744
745 2012-11-02  Roland McGrath  <mcgrathr@google.com>
746
747         * i386.cc (Target_i386::relocate_relocs): Remove extraneous typename
748         from last change.
749
750 2012-11-01  Roland McGrath  <mcgrathr@google.com>
751
752         * target.h (Sized_target::relocate_relocs): Use Elf_Off
753         for offset_in_output_section parameter.
754         (Sized_target::relocate_special_relocatable): Likewise.
755         * arm.cc (Target_arm::relocate_relocs): Likewise.
756         (Target_arm::relocate_special_relocatable): Likewise.
757         * i386.cc (Target_i386::relocate_relocs): Likewise.
758         * powerpc.cc (Target_powerpc::relocate_relocs): Likewise.
759         * sparc.cc (Target_sparc::relocate_relocs): Likewise.
760         * target-reloc.h (relocate_relocs): Likewise.
761         * testsuite/testfile.cc (Target_test): Likewise.
762         * tilegx.cc (Target_tilegx::relocate_relocs): Likewise.
763         * x86_64.cc (Target_x86_64::relocate_relocs): Likewise.
764
765         * system.h: Move inclusion of <clocale> to after <libintl.h> in
766         [ENABLE_NLS] section, and separately at top of [!ENABLE_NLS] section.
767
768         * descriptors.cc (set_close_on_exec): Add ATTRIBUTE_UNUSED to the
769         parameter, which is unused in the [!F_SETFD] case.
770
771         * dwarf_reader.cc (Sized_elf_reloc_mapper::symbol_section): Cast
772         SYMNDX to off_t before comparing it to this->data_size().
773         * output.cc (Output_symtab_xindex::endian_do_write): Likewise.
774         * incremental.cc (Output_section_incremental_inputs::do_write):
775         Cast GLOBAL_SYM_COUNT to off_t before comparing it to SYMTAB_SIZE.
776
777         * nacl.cc: Include "libiberty.h" for vasprintf declaration.
778
779 2012-10-30  Steve McIntyre  <steve.mcintyre@linaro.org>
780
781         * gold.cc (Target_arm::do_adjust_elf_header): Add the
782         hard-float/soft-float ABI flag as appropriate for ET_DYN/ET_EXEC
783         in EABI_VER5.
784
785 2012-10-29  Cary Coutant  <ccoutant@google.com>
786
787         * dwp.cc (usage): Add file and exit status parameters;
788         add --help and --version options.
789         (print_version): New function.
790         (main): Add --help and --version options.
791
792 2012-10-25  H.J. Lu  <hongjiu.lu@intel.com>
793
794         * testsuite/Makefile.am (MOSTLYCLEANFILES): Add
795         final_layout_sequence.txt.
796         * testsuite/Makefile.in: Regenerated.
797
798 2012-10-25  H.J. Lu  <hongjiu.lu@intel.com>
799
800         * testsuite/Makefile.am (COMPILE1): New variable. Renamed from
801         COMPILE generated by automake.
802         (LINK1): Likewise.
803         (CXXCOMPILE1): Likewise.
804         (CXXLINK1): Likewise.
805         (COMPILE): Strip out -Wp,-D_FORTIFY_SOURCE= from COMPILE1.
806         (LINK): Likewise.
807         (CXXCOMPILE): Likewise.
808         (CXXLINK): Likewise.
809         * testsuite/Makefile.in: Regenerated.
810
811 2012-10-25  H.J. Lu  <hongjiu.lu@intel.com>
812
813         * dwp.cc (Dwo_file::record_target_info): Issue a fatal error
814         on bad fwrite return.
815
816 2012-10-25  H.J. Lu  <hongjiu.lu@intel.com>
817
818         * dwp.cc (Dwo_file::remap_str_offset): Use section_offset_type
819         on val.
820
821 2012-10-23  Cary Coutant  <ccoutant@google.com>
822
823         * testsuite/Makefile.am (TEST_OBJCOPY): New macro.
824         * testsuite/Makefile.in: Regenerate.
825         * testsuite/dwp_test.h: New source file.
826         * testsuite/dwp_test_1.cc: New source file.
827         * testsuite/dwp_test_1.s: New source file.
828         * testsuite/dwp_test_1.sh: New source file.
829         * testsuite/dwp_test_1b.cc: New source file.
830         * testsuite/dwp_test_1b.s: New source file.
831         * testsuite/dwp_test_2.cc: New source file.
832         * testsuite/dwp_test_2.s: New source file.
833         * testsuite/dwp_test_2.sh: New source file.
834         * testsuite/dwp_test_main.cc: New source file.
835         * testsuite/dwp_test_main.s: New source file.
836
837 2012-10-23  Cary Coutant  <ccoutant@google.com>
838
839         * dwp.h: New header file.
840         * dwp.cc: New source file.
841         * gold.h: Move shared declarations to system.h.
842         * system.h: New header file.
843         * Makefile.am: Add dwp.
844         * Makefile.in: Regenerate.
845
846 2012-10-23  Cary Coutant  <ccoutant@google.com>
847
848         * dwarf_reader.cc (Dwarf_ranges_table::read_range_list): Call
849         Dwarf_info_reader::read_from_pointer.
850         (Dwarf_pubnames_table::read_header): Likewise.
851         (Dwarf_pubnames_table::next_name): Likewise.
852         (Dwarf_die::read_attributes): Likewise.
853         (Dwarf_die::skip_attributes): Likewise.
854         (Dwarf_info_reader::read_from_pointer): New function template.
855         * dwarf_reader.h (Dwarf_ranges_table): Add dwinfo_.
856         (Dwarf_pubnames_table): Likewise.
857         (Dwarf_info_reader::read_from_pointer): New function template.
858         * gdb-index.cc (Gdb_index_info_reader): Adjust call to
859         Dwarf_pubnames_table ctor.
860
861 2012-10-23  Cary Coutant  <ccoutant@google.com>
862
863         * dwarf_reader.cc (Dwarf_info_reader::do_parse): Use stored
864         abbrev_shndx.
865         * dwarf_reader.h (Dwarf_info_reader::Dwarf_info_reader): Initialize
866         abbrev_shndx_.
867         (Dwarf_info_reader::set_abbrev_shndx): New method.
868         (Dwarf_info_reader::abbrev_shndx_): New data member.
869
870 2012-10-23  Cary Coutant  <ccoutant@google.com>
871
872         * dwarf_reader.cc (make_elf_reloc_mapper): Check size and endianness
873         from object, not parameters.
874         (Dwarf_info_reader::parse): Likewise.
875         * object.h (Relobj::elfsize, Relobj::is_big_endian): New methods.
876         (Relobj::do_elfsize, Relobj::do_is_big_endian): New methods.
877         (Sized_relobj::do_elfsize, Sized_relobj::do_is_big_endian): New
878         methods.
879
880 2012-10-23  Cary Coutant  <ccoutant@google.com>
881
882         * fileread.cc (Input_file::Input_file): New constructor.
883         * fileread.h (class Input_file): Add new constructor.
884
885 2012-10-18  Alan Modra  <amodra@gmail.com>
886
887         PR gold/14727
888         * object.cc (Relobj::is_section_name_included): Also match
889         .sdata personality section.
890
891 2012-10-18  Alan Modra  <amodra@gmail.com>
892
893         * target-reloc.h (class Default_comdat_behavior): New, package up..
894         (get_comdat_behaviour): ..this.
895         (relocate_section): Add Relocate_comdat_behavior template arg,
896         adjust code to suit.
897         * arm.cc (Target_arm::relocate_section): Adjust to suit.
898         (Target_arm::scan_reloc_section): Likewise.
899         * i386.cc (Target_i386::relocate_section): Likewise.
900         * sparc.cc (Target_sparc::relocate_section): Likewise.
901         * tilegx.cc (Target_tilegx::relocate_section): Likewise.
902         * x86_64.cc (Target_x86_64::relocate_section): Likewise.
903         * powerpc.cc (class Relocate_comdat_behavior): New.
904         (Target_powerpc::relocate_section): Don't zap opd relocs.  Supply
905         gold::relocate_section with new template arg.
906
907 2012-10-18  Alan Modra  <amodra@gmail.com>
908
909         * powerpc.cc (Target_powerpc::Scan::local, global): Always emit
910         dynamic relocs for GOT_TPREL got entries, without symbol if
911         resolving locally.
912         (Target_powerpc::do_gc_add_reference): Don't add for dynamic objects.
913         (Target_powerpc::scan_relocs): Define _GLOBAL_OFFSET_TABLE_ early.
914         (Target_powerpc::Relocate:relocate): REL32 reloc may be unaligned.
915
916 2012-10-17  Alan Modra  <amodra@gmail.com>
917
918         PR gold/14726
919         * gold.cc (queue_middle_tasks): Call gc_mark_symbol on _init and _fini.
920
921 2012-10-16  Sriraman Tallam  <tmsriram@google.com>
922
923         * layout.cc (Layout::include_section): Keep sections marked
924         SHF_EXCLUDE when doing relocatable links.
925
926 2012-10-16  Alan Modra  <amodra@gmail.com>
927
928         * powerpc.cc (Target_powerpc::define_save_restore_funcs): New func.
929         (Target_powerpc::do_finalize_sections): Call it.
930         (Output_data_save_res): New class and supporting functions.
931         (Target_powerpc::symval_for_branch): Only look up .opd entry for
932         normal symbols defined in object files.
933
934 2012-10-12  Alan Modra  <amodra@gmail.com>
935
936         * powerpc.cc (Powerpc_relobj::add_gc_mark, process_gc_mark): New.
937         (struct Opd_ent): Make "discard" a bit field.  Add "gc_mark".
938         (Target_powerpc::do_gc_mark_symbol): Delay marking function code
939         section if scan_opd_relocs not yet called.
940         (Target_powerpc::gc_process_relocs): Call process_gc_mark.
941
942 2012-10-12  Alan Modra  <amodra@gmail.com>
943
944         * powerpc.cc (Output_data_plt_powerpc::add_entry, add_ifunc_entry,
945         add_local_ifunc_entry): Revert last change.
946         (Target_powerpc::make_plt_entry, make_local_ifunc_plt_entry): Likewise.
947
948 2012-10-05  Alan Modra  <amodra@gmail.com>
949
950         * powerpc.cc (Target_powerpc::do_plt_address_for_local,
951         do_plt_address_for_global): New functions.
952         (Output_data_got_powerpc::do_write): Don't segfault when linking
953         statically.
954         (Output_data_plt_powerpc::add_entry, add_ifunc_entry,
955         add_local_ifunc_entry): Return true on adding entry..
956         (Target_powerpc::make_plt_entry): ..use to avoid unnecessary
957         glink->add_entry call.  Remove unused symtab param.  Adjust calls.
958         (Target_powerpc::make_local_ifunc_plt_entry): Likewise.
959         (Target_powerpc::make_iplt_section): Remove symtab param.  Don't
960         set up symbols here.
961         (Target_powerpc::do_finalize_sections): Instead set up __rela_iplt
962         syms here.  Do so even when no .iplt.  Don't segfault when linking
963         statically.
964         (Output_data_glink::add_entry, find_entry): Rearrange params.  Add
965         new variants without reloc param.
966         (Glink_sym_ent::Glink_sym_ent): Likewise.
967         (Target_powerpc::Scan::reloc_needs_plt_for_ifunc): Accept any
968         reloc when refs will resolve to plt call stub.
969         (Target_powerpc::Scan::local): Correct ifunc handling.  Allow
970         R_PPC_PLTREL24 to resolve locally.
971         (Target_powerpc::Scan::global): Correct ifunc handling.
972         (Target_powerpc::Relocate::relocate): Correct local sym glink
973         lookup.  Don't destroy "value" when we have a plt call stub,
974         and when checking plt call validity.
975         (Target_powerpc::do_dynsym_value): Simplify.
976
977 2012-10-05  Alan Modra  <amodra@gmail.com>
978
979         * i386.cc (Output_data_plt_i386::address_for_global,
980         address_for_local): Add plt offset to returned value.  Adjust uses.
981         * sparc.cc (Output_data_plt_sparc::address_for_global,
982         address_for_local): Likewise.
983         * tilegx.cc (Output_data_plt_tilegx::address_for_global,
984         address_for_local): Likewise.
985         * x86_64.cc (Output_data_plt_x86_64::address_for_global,
986         address_for_local): Likewise.
987         * target.h (Target::plt_address_for_global, plt_address_for_local):
988         Update comment.
989         * output.cc (Output_reloc::symbol_value): Don't add plt offset here.
990         (Output_data_got::Got_entry::write): Nor here.
991         * output.h: Comment fix.
992
993 2012-10-02  Jiong Wang  <jiwang@tilera.com>
994
995         * tilegx.cc (Target_tilegx::do_finalize_sections): Adjust
996         global_offset_table_ value for larget got.
997         (Target_tilegx::Relocate::relocate): Handle adjusted got value.
998
999 2012-09-29  Alan Modra  <amodra@gmail.com>
1000
1001         * powerpc.cc (Target_powerpc::iplt_): New output section.
1002         (Target_powerpc::iplt_section, make_iplt_section,
1003         reloc_needs_plt_for_ifunc, make_local_ifunc_plt_entry): New functions.
1004         (Target_powerpc::make_plt_entry): Handle ifunc syms.
1005         Target_powerpc::plt_entry_count): Count iplt entries too.
1006         (Output_data_plt_powerpc::Output_data_plt_powerpc): Don't create
1007         reloc section in constructor.  New params.
1008         (Target_powerpc::make_plt_section): Create reloc section here instead.
1009         (Output_data_plt_powerpc::add_ifunc_entry, add_local_ifunc_entry): New
1010         functions.
1011         (Output_data_plt_powerpc::initial_plt_entry_size_, name_): New vars.
1012         (Output_data_glink::add_entry, find_entry): New functions to
1013         deal with local syms.
1014         (Glink_sym_ent): Add support for local syms.
1015         (Output_data_glink::do_write): Handle ifunc plt entries.
1016         (Target_powerpc::Scan::get_reference_flags): Handle more relocs.
1017         (Target_powerpc::Scan::local, global): Handle ifunc syms.
1018         (Target_powerpc::Relocate::relocate): Likewise.
1019         (Target_powerpc::do_dynsym_value): Use glink stub, not plt entry.
1020
1021 2012-09-25  Alan Modra  <amodra@gmail.com>
1022
1023         * object.h (Sized_relobj_file::adjust_local_symbol,
1024         do_adjust_local_symbol): New functions.
1025         * object.cc (Sized_relobj_file::do_count_local_symbols): Use the above.
1026         * powerpc.cc (Powerpc_relobj::do_adjust_local_symbol): New function.
1027         (Powerpc_relobj::scan_opd_relocs): Warn on unexpected opd relocs
1028         and irregular opd entry spacing.
1029         (Powerpc_relobj::do_read_relocs): Add opd size checks.
1030         (Global_symbol_visitor_opd): New functor.
1031         (Target_powerpc::do_finalize_sections): Omit global symbols defined
1032         on deleted opd entries.
1033
1034 2012-09-15  Jiong Wang  <jiwang@tilera.com>
1035
1036         * tilegx.cc: New file.
1037         * Makefile.am (TARGETSOURCES): Add tilegx.cc
1038         (ALL_TARGETOBJS): Add tilegx.$(OBJEXT)
1039         * configure.tgt: Add entries for tilegx*.
1040         * configure.ac: Likewise.
1041         * Makefile.in: Rebuild.
1042         * configure: Likewise.
1043         * testsuite/icf_safe_test.sh (arch_specific_safe_fold): Handle
1044         tilegx.
1045
1046 2012-09-13  Alan Modra  <amodra@gmail.com>
1047
1048         * target-reloc.h (scan_relocs): Call scan.local for relocs
1049         against symbols in discarded sections.  Pass is_discarded
1050         param.
1051         * arm.cc, * i386.cc, * sparc.cc, * x86_64.cc (Target_*::Scan::local):
1052         Add is_discarded param.
1053         * powerpc (Target_powerpc::Scan::local): Likewise.  Use
1054         is_discarded to flag opd entry as discarded.  Don't emit dyn
1055         relocs on such entries.
1056         (Target_powerpc::Scan::global): Similarly detect and handle
1057         such opd entries.
1058         (Powerpc_relobj): Replace opd_ent_shndx_ and opd_ent_off_ with
1059         opd_ent_.  Update all uses.
1060         (Powerpc_relobj::get_opd_discard, set_opd_discard): New functions.
1061         (Target_powerpc::relocate_section): Zero out discarded opd
1062         entry relocs.
1063
1064 2012-09-12  Ian Lance Taylor  <iant@google.com>
1065
1066         PR gold/14570
1067         * output.cc: Rename Output_data_got template parameter from size
1068         to got_size for all functions.  Compile all variants of
1069         Output_data_got.
1070         (Output_data_got::Got_entry::write): Correct use of size for
1071         symbol value.  Use local_is_tls rather than casting to
1072         Sized_relobj_file.
1073         * object.h (class Object): Add local_is_tls and do_local_is_tls.
1074         (class Sized_relobj_file): Add do_local_is_tls.
1075         * incremental.h (class Sized_relobj_incr): Add do_local_is_tls.
1076
1077 2012-09-11  Alan Modra  <amodra@gmail.com>
1078
1079         PR gold/14566
1080         * layout.cc (Layout::set_segment_offsets): When using
1081         common-page-size alignment, ensure we are on a new max-page-size
1082         page.
1083         * output.cc (Output_segment::set_section_addresses): Use
1084         abi_pagesize, not common_pagesize for relro boundary.
1085         (Output_segment::set_offset): Likewise.
1086
1087 2012-09-11  Alan Modra  <amodra@gmail.com>
1088
1089         * output.h (Output_data_got::add_global_tls, add_local_tls,
1090         add_local_tls_pair): New functions.
1091         (Output_data_got::add_local_pair_with_rel): Remove second
1092         reloc param.  Expand comment.
1093         (Output_data_got::Got_entry): Rename use_plt_offset_ to
1094         use_plt_or_tls_offset_, similarly for constructor param.
1095         (Output_data_got::Got_entry::write): Add got_index param.
1096         * output.cc (Output_data_got::add_global_tls, add_local_tls,
1097         add_local_tls_pair): New functions.
1098         (Output_data_got::Got_entry::write): Handle tls symbols
1099         with use_plt_or_tls_offset_ set specially.
1100         (Output_data_got::add_local_pair_with_rel): Only one reloc.
1101         (Output_data_got::do_write): Replace iterator with index, pass
1102         index to entry write function.
1103         * target.h (Target::tls_offset_for_local, tls_offset_for_global,
1104         do_tls_offset_for_local, do_tls_offset_for_global): New functions.
1105         * arm.cc (Target_arm::Scan::local): Update add_local_pair_with_rel
1106         call.
1107         * i386.cc (Target_i386::Scan::local): Likewise.
1108         * sparc.cc (Target_sparc::Scan::local): Likewise.
1109         * x86_64.cc (Target_x86_64::Scan::local): Likewise.
1110         * powerpc.cc (Target_powerpc::do_tls_offset_for_local,
1111         do_tls_offset_for_global): New functions.
1112         (Target_powerpc::Scan::local): Correct TLS relocations and got
1113         entry values.
1114         (Target_powerpc::Scan::global): Don't emit unnecessary
1115         dynamic relocations on TLS GOT entries.
1116
1117 2012-09-10  Matthias Klose  <doko@ubuntu.com>
1118
1119         * config.in: Disable sanity check for kfreebsd.
1120
1121 2012-09-10  Sterling Augustine  <saugustine@google.com>
1122
1123         * gdb-index.cc (Gdb_index::pubnames_read): New parameter.
1124         (Gdb_index::pubtypes_read): New parameter.
1125         (Gdb_index_info_reader::read_pubnames_and_pubtypes): Add parameters
1126         to calls.
1127         * gdb-index.h (Gdb_index): New fields pubnames_object_ and
1128         pubtypes_object_.
1129
1130 2012-09-09  Alan Modra  <amodra@gmail.com>
1131
1132         * target.h (Target::gc_mark_symbol, do_gc_mark_symbol): New functions.
1133         (Sized_target::gc_add_reference, do_gc_add_reference): New functions.
1134         * gc.h (gc_process_relocs): Call target gc_add_reference.
1135         * gold.cc (queue_middle_tasks): Use gc_mark_symbol on start sym.
1136         * symtab.cc (Symbol_table::gc_mark_undef_symbols): Use gc_mark_symbol.
1137         (Symbol_table::gc_mark_symbol): Call target gc_mark_symbol. Remove
1138         unnecessary cast.
1139         * powerpc.cc (Powerpc_relobj::get_opd_ent): Rearrange parameters
1140         to cater for when we don't need code offset.  Update use.
1141         (Powerpc_relobj::access_from_map_, opd_valid_): New vars.
1142         (Powerpc_relobj::access_from_map, add_reference, opd_valid,
1143         set_opd_valid): New functions.
1144         (Target_powerpc::do_gc_add_reference): New function.
1145         (Target_powerpc::gc_process_relocs): Call gc()->add_reference on
1146         stashed refs.
1147         (Target_powerpc::do_gc_mark_symbol): New function.
1148
1149 2012-09-06  Cary Coutant  <ccoutant@google.com>
1150
1151         * dwarf_reader.cc (Dwarf_die::read_attributes): Add
1152         DW_FORM_GNU_addr_index and DW_FORM_GNU_str_index.
1153         (Dwarf_die::skip_attributes): Likewise.
1154         * object.cc (Read_symbols_data::~Read_symbols_data): Update comment.
1155         * testsuite/gdb_index_test.cc (inline_func_1): New function.
1156         (main): Call it.
1157         * testsuite/gdb_index_test_comm.sh: Check index for inline function.
1158
1159 2012-09-05  H.J. Lu  <hongjiu.lu@intel.com>
1160
1161         * testsuite/script_test_3.t: Add .got.plt output section
1162         statement.
1163         * testsuite/script_test_4.t: Likewise.
1164
1165 2012-09-05  Alan Modra  <amodra@gmail.com>
1166
1167         * powerpc.cc (Powerpc_relocate_functions): Upcase enum values,
1168         update all uses and lose "enum" when using type.
1169
1170 2012-09-05  Alan Modra  <amodra@gmail.com>
1171
1172         * configure.ac (FN_PTRS_IN_SO_WITHOUT_PIC): False for powerpc.
1173         * configure: Regenerate.
1174         * testsuite/Makefile.am (final_layout.stdout): Pass --synthetic to nm.
1175         (plugin_final_layout.stdout): Likewise.
1176         (memory_test): Set page sizes to 0x1000.
1177         * testsuite/Makefile.in: Regenerate.
1178         * testsuite/discard_locals_test.sh: Add FIXME comment.
1179         * testsuite/justsyms_exec.c: Disable function test for powerpc64.
1180         * testsuite/pr14265.t: Add .got output section statement.
1181         * testsuite/script_test_2.t: Likewise.
1182         * testsuite/script_test_3.t: Likewise.
1183         * testsuite/script_test_4.t: Likewise.
1184         * testsuite/script_test_5.t: Likewise.
1185         * testsuite/script_test_6.t: Likewise.
1186         * testsuite/script_test_7.t: Likewise.
1187         * testsuite/script_test_9.t: Likewise.
1188
1189 2012-09-05  Alan Modra  <amodra@gmail.com>
1190
1191         * powerpc.cc (Powerpc_relobj::get_opd_ent): Make const.
1192         (Powerpc_relocate_functions::Status): New typedef.
1193         (Target_powerpc::Scan::get_reference_flags): Handle more relocs.
1194         (Target_powerpc::Scan::local): Handle REL64.
1195         (Target_powerpc::Scan::global): Likewise, and dynamic relocs
1196         for REL32 and REL64.
1197         (Target_powerpc::symval_for_branch): New function, extracted from..
1198         (Target_powerpc::Relocate::relocate): ..here.  Correct plt call
1199         checks.  Report overflow errors.
1200
1201 2012-09-05  Alan Modra  <amodra@gmail.com>
1202
1203         * object.h (Sized_relobj_file::emit_relocs): Delete.
1204         (Sized_relobj_file::emit_relocs_reltype): Delete.
1205         * reloc.cc (Sized_relobj_file::do_relocate_sections): Call target
1206         relocate_relocs for --emit-relocs.
1207         (Sized_relobj_file::emit_relocs, emit_relocs_reltype): Delete.
1208         * output.h: Update comment.
1209         (Output_segment::first_section): New function.
1210         (Output_segment::first_section_load_address): Use first_section.
1211         * output.cc (Output_segment::first_section): New function extracted..
1212         (Output_segment::first_section_load_address): ..from here.  Delete.
1213         * target-reloc.h (relocate_for_relocatable): Rename to relocate_relocs.
1214         * target.h (Sized_target::relocate_for_relocatable): Likewise.
1215         * arm.cc (Target_arm::relocate_for_relocatable): Likewise, and
1216         adjust call to target.h function.
1217         * i386.cc (Target_i386): Likewise.
1218         * sparc.cc (Target_sparc): Likewise.
1219         * x86_64.cc (Target_x86_64): Likewise.
1220         * powerpc.cc (Target_powerpc): Likewise.
1221         (Target_powerpc::Scan::local, global): Handle R_POWERPC_TLS.  Ensure
1222         first tls section has section symbol for optimised local dynamic
1223         output relocs.
1224         (Target_powerpc::Relocate::relocate): Correct local dynamic value.
1225         (Target_powerpc::relocate_relocs): Adjust relocs emitted for
1226         optimised tls code.
1227         * testsuite/testfile.cc (Target_test::relocate_for_relocatable):
1228         Rename to relocate_relocs.  Update error message.
1229
1230 2012-09-04  Andreas Schwab  <schwab@linux-m68k.org>
1231
1232         * powerpc.cc (do_make_elf_object): Allow ET_EXEC files with
1233         --just-symbols.
1234
1235 2012-08-31  Alan Modra  <amodra@gmail.com>
1236
1237         * powerpc.cc (Powerpc_relobj): Add and use Address typedef.
1238         (Powerpc_relobj::toc_base_offset): New stub function.
1239         (Target_powerpc): Add tp_offset, dtp_offset.  Rename
1240         got_mod_index_offset to tlsld_got_offset.  Update all refs.
1241         (Target_powerpc::Relocate::enum skip_tls): New.
1242         (Target_powerpc::call_tls_get_addr_): New var.
1243         (Target_powerpc::is_branch_reloc): Move to file scope.
1244         (Target_powerpc::relocate_tls, optimize_tls_reloc): Delete.
1245         (Target_powerpc::optimize_tls_gd, optimize_tls_ld, optimize_tls_ie):
1246         New functions.
1247         (Target_powerpc::enum Got_type): Delete old values, add new ones.
1248         (powerpc_info): Correct common_pagesize for ppc64.
1249         (at_tls_transform, needs_dynamic_reloc, use_plt_offset): New functions.
1250         (Powerpc_relocate_functions): Add overflow check enums and functions.
1251         Add non-shift version of rela, rela_ua.  Delete all rel public
1252         functions.  Delete addr16_lo.  Add addr64, addr64_u, addr32,
1253         addr32_u, addr24, addr16_u, addr16_hi2, addr16_ha2, addr16_hi3,
1254         addr16_ha3, addr14 functions.
1255         (Output_data_got_powerpc::add_constant_pair): New function.
1256         (Output_data_got_powerpc::got_base_offset): Likewise.
1257         (Output_data_got_powerpc::do_write): Correct 64-bit got header.
1258         (instruction constants): Sort, add some more.
1259         (Output_data_glink::do_write): Add and use Address typedef.  Use
1260         object->toc_base_offset() stub for 64-bit.
1261         (Target_powerpc::tlsld_got_offset): Use add_constant_pair.
1262         (Target_powerpc::Scan::get_reference_flags): Handle more relocs.
1263         (Target_powerpc::Scan::local, global): Emit relative dynamic reloc
1264         for R_PPC64_TOC.  Handle more relocs.  Generate got entries for TLS.
1265         Always treat .opd relocs as against locally defined symbol.
1266         Correct condition for RELATIVE relocs.
1267         (Target_powerpc::do_finalize_sections): Test for NULL sections.
1268         (Target_powerpc::Relocate::relocate): Use plt call stub as value
1269         for 32-bit syms with a plt entry.  Correct ppc64 toc base
1270         calculations.  Handle TLS relocs, and more.  Add overflow
1271         checking and adjust for Powerpc_relocate_functions changes.
1272         (Target_powerpc::relocate_for_relocatable): Handle zero r_sym.
1273         Reinstate --emit-relocs code with FIXME.
1274
1275 2012-08-30  Alan Modra  <amodra@gmail.com>
1276
1277         * layout.cc (Layout::set_segment_offsets): Set p_align to
1278         abi_pagesize, not common_pagesize.
1279         (Layout::relaxation_loop_body): Similarly use abi_pagesize
1280         to determine whether file header can go in segment.
1281
1282 2012-08-30  Alan Modra  <amodra@gmail.com>
1283
1284         * output.h (Output_reloc::Output_reloc <output section>): Add
1285         is_relative param.  Adjust calls.
1286         (Output_reloc::add_output_section_relative): New functions.
1287         * output.cc (Output_reloc::Output_reloc <output section>): Handle
1288         is_relative.
1289         (Output_reloc::symbol_value): Handle SECTION_CODE.
1290
1291 2012-08-24  Sriraman Tallam  <tmsriram@google.com>
1292
1293         * gold.cc (queue_middle_tasks): Call layout again when unique
1294         segments for sections is desired.
1295         * layout.cc (Layout::Layout): Initialize new members.
1296         (Layout::get_output_section_flags): New function.
1297         (Layout::choose_output_section): Call get_output_section_flags.
1298         (Layout::layout): Make output section for mapping to a unique segment.
1299         (Layout::insert_section_segment_map): New function.
1300         (Layout::attach_allocated_section_to_segment): Make unique segment for
1301         output sections marked so.
1302         (Layout::segment_precedes): Check for unique segments when sorting.
1303         * layout.h (Layout::Unique_segment_info): New struct.
1304         (Layout::Section_segment_map): New typedef.
1305         (Layout::insert_section_segment_map): New function.
1306         (Layout::get_output_section_flags): New function.
1307         (Layout::is_unique_segment_for_sections_specified): New function.
1308         (Layout::set_unique_segment_for_sections_specified): New function.
1309         (Layout::unique_segment_for_sections_specified_): New member.
1310         (Layout::section_segment_map_): New member.
1311         * object.cc (Sized_relobj_file<size, big_endian>::do_layout):
1312         Rename is_gc_pass_one to is_pass_one.
1313         Rename is_gc_pass_two to is_pass_two.
1314         Rename is_gc_or_icf to is_two_pass.
1315         Check for which pass based on whether symbols data is present.
1316         Make it two pass when unique segments for sections is desired.
1317         * output.cc (Output_section::Output_section): Initialize new
1318         members.
1319         * output.h (Output_section::is_unique_segment): New function.
1320         (Output_section::set_is_unique_segment): New function.
1321         (Output_section::is_unique_segment_): New member.
1322         (Output_section::extra_segment_flags): New function.
1323         (Output_section::set_extra_segment_flags): New function.
1324         (Output_section::extra_segment_flags_): New member.
1325         (Output_section::segment_alignment): New function.
1326         (Output_section::set_segment_alignment): New function.
1327         (Output_section::segment_alignment_): New member.
1328         (Output_segment::Output_segment): Initialize is_unique_segment_.
1329         (Output_segment::is_unique_segment): New function.
1330         (Output_segment::set_is_unique_segment): New function.
1331         (Output_segment::is_unique_segment_): New member.
1332         * plugin.cc (allow_unique_segment_for_sections): New function.
1333         (unique_segment_for_sections): New function.
1334         (Plugin::load): Add new functions to transfer vector.
1335         * Makefile.am (plugin_final_layout.readelf.stdout): Add readelf output.
1336         * Makefile.in: Regenerate.
1337         * testsuite/plugin_final_layout.sh: Check if unique segment
1338         functionality works.
1339         * testsuite/plugin_section_order.c (onload): Check if new interfaces
1340         are available.
1341         (allow_unique_segment_for_sections): New global.
1342         (unique_segment_for_sections): New global.
1343         (claim_file_hook): Call allow_unique_segment_for_sections.
1344         (all_symbols_read_hook): Call unique_segment_for_sections.
1345
1346 2012-08-22  Cary Coutant  <ccoutant@google.com>
1347
1348         * layout.cc (Layout::include_section): Don't assert on GROUP
1349         sections with --emit-relocs.
1350
1351 2012-08-21  Cary Coutant  <ccoutant@google.com>
1352
1353         * symtab.cc (Symbol_table::gc_mark_undef_symbols): Don't assert
1354         if --export-dynamic-symbol names an undef symbol.
1355
1356 2012-08-18  Alan Modra  <amodra@gmail.com>
1357
1358         * powerpc.cc: Formatting and white space.
1359         (Powerpc_relobj): Rename got2_section_ to special_.
1360         Add opd_ent_shndx_ and opd_ent_off_ vectors.
1361         (Powerpc_relobj::opd_shndx, init_opd, get_opd_ent, set_opd_ent,
1362         scan_opd_relocs, do_read_relocs, opd_ent_ndx): New functions.
1363         (Target_powerpc): Add Address typedef and invalid_address.  Use
1364         throughout.
1365         (Target_powerpc::is_branch_reloc): New function.
1366         (Powerpc_relocate_functions): Add Address typedef, use throughout.
1367         (Powerpc_relocate_functions:rela, rela_ua): Correct type used
1368         for dst_mask, value and addend.
1369         (Powerpc_relobj::do_find_special_sections): Find .opd for 64-bit.
1370         (ld_2_1, cror_15_15_15, cror_31_31_31): New insn constants.
1371         (Output_data_glink::do_write): Correct toc base.  Don't try to use
1372         uint16_t for 24-bit offset.  Use get_output_section_offset and
1373         check return.
1374         (Target_powerpc::Scan::local): Handle more relocs.
1375         (Target_powerpc::do_finalize_sections): Set up DT_PPC64_GLINK.
1376         (Target_powerpc::Relocate::relocate): Correct toc base calculation.
1377         Plug in toc restoring insn after plt calls.  Translate branches
1378         to function descriptor symbols to corresponding entry point.
1379         (Target_powerpc::relocate_for_relocatable): Check return from
1380         get_output_section_offset.
1381         * symtab.h: Comment typo.
1382
1383 2012-08-14  Ian Lance Taylor  <iant@google.com>
1384
1385         * x86_64.cc (Target_x86_64::Scan::global): Fix erroneous call to
1386         unsupported_relocal_local to call unsupported_reloc_global.
1387
1388 2012-08-14  Nick Clifton  <nickc@redhat.com>
1389
1390         PR ld/14265
1391         * script-sections.cc (Sections_element::output_section_name): Add
1392         keep return parameter.
1393         (Output_section_element::match_name): Add keep return parameter.
1394         Return the value of the keep_ member.
1395         * script-sections.h (class Output_section): Update
1396         output_section_name prototype.
1397         * layout.cc (Layout::keep_input_section): New public member
1398         function.
1399         (Layout::choose_output_section): Pass keep parameter to
1400         output_section_name.
1401         * layout.h (class Layout): Add keep_input_section.
1402         * object.cc (Sized_relobj_file::do_layout): Check for kept input
1403         sections.
1404         * testsuite/Makefile.am: Add a test.
1405         * testsuite/Makefile.in: Regenerate.
1406         * testsuite/pr14265.c: Source file for the test.
1407         * testsuite/pr14265.t: Linker script for the test.
1408         * testsuite/pr14265.sh: Shell script for the test.
1409
1410 2012-08-14  Alan Modra  <amodra@gmail.com>
1411
1412         * target.h (Target::output_section_name): New function.
1413         (Target::do_output_section_name): New function.
1414         * layout.cc (Layout::choose_output_section): Call the above.
1415         * powerpc.cc (Target_powerpc::do_output_section_name): New function.
1416
1417 2012-08-14  Alan Modra  <amodra@gmail.com>
1418
1419         * powerpc.cc: Update for renamed R_PPC_REL16 relocs.
1420         (Output_data_got_powerpc::do_write): Don't rely on base class lookup
1421         for replace_constant call.
1422         (Output_data_plt_powerpc::do_print_to_mapfile): New function.
1423         (Output_data_glink::do_print_to_mapfile): New function.
1424         (Target_powerpc::Scan::local): Ignore R_PPC64_TOCSAVE.
1425         (Target_powerpc::Relocate::relocate): Likewise.
1426
1427 2012-08-14  Alan Modra  <amodra@gmail.com>
1428
1429         * powerpc.cc (Powerpc_relobj::set_got2_shndx): Delete.
1430         (Powerpc_relobj::do_find_special_sections): Don't use set_got2_shndx.
1431         (Output_data_glink::add_entry,find_entry): Remove shndx param.
1432         (class Glink_sym_ent): Rename from struct Glink_sym_ent.  Remove
1433         all references to shndx_.  Handle special case for R_PPC_PLTREL24
1434         here.
1435         (class Glink_sym_ent_hash): Rename from struct Glink_sym_ent_hash.
1436         (Output_data_glink::do_write): Retrieve got2_shdnx from object.
1437         (Target_powerpc::make_plt_entry): Don't special case R_PPC_PLTREL24
1438         here.
1439         (Target_powerpc::Scan::global): Nor on make_plt_entry call.
1440         (Target_powerpc::Relocate::relocate): Nor on glink->find_entry call.
1441
1442 2012-08-12  Alan Modra  <amodra@gmail.com>
1443
1444         * powerpc.cc: Whitespace fixes.  Wrap overly long lines.
1445         (glink insn constants): Use uint32_t.
1446         (Output_data_glink::add_entry): Use insert, not [] operator.
1447
1448 2012-08-11  Alan Modra  <amodra@gmail.com>
1449
1450         * object.h (Sized_relobj_file::find_shdr): New function.
1451         (Sized_relobj_file::find_special_sections): New function.
1452         * object.cc (Sized_relobj_file::find_shdr): New function.
1453         (Sized_relobj_file::find_eh_frame): Use find_shdr.
1454         (Sized_relobj_file::find_special_sections): New function, split out..
1455         (Sized_relobj_file::do_read_symbols): ..from here.
1456         * output.h (Output_data_got::replace_constant): New function.
1457         (Output_data_got::num_entries): New function.
1458         (Output_data_got::last_got_offset,set_got_size): Use num_entries.
1459         (Output_data_got::got_offset): Protected rather than private.
1460         (Output_data_got::replace_got_entry): New function.
1461         * output.cc (Output_data_got::replace_got_entry): New function.
1462         * powerpc.cc (class Powerpc_relobj): New.
1463         (class Powerpc_relocate_functions): Delete all psymval variants or
1464         convert to value,addend type.  Delete pcrela, pcrela_unaligned.
1465         Implement _ha functions using corresponding _hi function.
1466         (Powerpc_relobj::find_special_sections): New function.
1467         (Target_powerpc::do_make_elf_object): New function.
1468         (class Output_data_got_powerpc): New.
1469         (class Output_data_glink): New.
1470         (class Powerpc_scan_relocatable_reloc): New.
1471         Many more changes througout file.
1472
1473 2012-08-09  Nick Clifton  <nickc@redhat.com>
1474
1475         * po/vi.po: Updated Vietnamese translation.
1476
1477 2012-08-07  Ian Lance Taylor  <iant@google.com>
1478
1479         * layout.cc (Layout::add_target_dynamic_tags): If
1480         dynrel_includes_plt but no dyn_rel, emit dynamic reloc tags for
1481         plt_rel.
1482
1483 2012-07-30  Nick Clifton  <nickc@redhat.com>
1484
1485         * po/gold.pot: Updated template.
1486         * po/es.po: Updated Spanish translation.
1487
1488 2012-07-18  Cary Coutant  <ccoutant@google.com>
1489
1490         PR gold/14344
1491         * configure.ac: Add check for -gpubnames support.
1492         * configure: Regenerate.
1493         * testsuite/Makefile.am (gdb_index_test_1): Add check for -gpubnames
1494         support; force -gno-pubnames.
1495         (gdb_index_test_2, gdb_index_test_3): Add check for -gpubnames
1496         support.
1497         (gdb_index_test_4): New test.
1498         * testsuite/Makefile.in: Regenerate.
1499         * testsuite/gdb_index_test_1.sh: Refactor code into common file.
1500         * testsuite/gdb_index_test_2.sh: Likewise.
1501         * testsuite/gdb_index_test_3.sh: Don't look for space after colon.
1502         * testsuite/gdb_index_test_4.sh: New script.
1503         * testsuite/gdb_index_test_comm.sh: New script with common code;
1504         don't look for space after colon.
1505
1506 2012-07-16  Sriraman Tallam  <tmsriram@google.com>
1507
1508         * gold.cc (queue_middle_tasks): Update function order only after
1509         deferred objects due to plugins are processed.
1510
1511 2012-07-11  Ian Lance Taylor  <iant@google.com>
1512
1513         * arm.cc (Arm_relocate_functions::abs16): Remove unused typedef.
1514         (Arm_exidx_cantunwind::do_fixed_endian_write): Likewise.
1515         (Target_arm::scan_reloc_for_stub): Likewise.
1516         * common.cc (Symbol_table::do_allocate_commons_list): Likewise.
1517         * dwarf_reader.cc (Dwarf_die::skip_attributes): Likewise.
1518         * ehframe.cc (Eh_frame::do_add_ehframe_input_section): Likewise.
1519         * incremental.cc (Sized_incr_dynobj::do_add_symbols): Likewise.
1520         * powerpc.cc (Target_powerpc::relocate_tls): Likewise.
1521
1522 2012-07-10  Dodji Seketeli  <dodji@redhat.com>
1523             Ian Lance Taylor  <iant@google.com>
1524
1525         PR gold/14309
1526         * configure.ac: Test whether std::tr1::hash<off_t> works.
1527         * gold.h: Add a specialization for std::tr1::hash<off_t> if
1528         needed.
1529         * output.h (class Output_fill): Add virtual destructor.
1530         * configure, config.in: Rebuild.
1531
1532 2012-06-22  Roland McGrath  <mcgrathr@google.com>
1533
1534         * layout.cc (finalize): Define __ehdr_start symbol if applicable.
1535
1536 2012-06-12  Rafael Ávila de Espíndola <respindola@mozilla.com>
1537
1538         * plugin.cc (Plugin::load): Handle position independent executables.
1539
1540 2012-06-06  Cary Coutant  <ccoutant@google.com>
1541
1542         * layout.cc (gdb_sections): Remove ".debug_" prefixes,
1543         add .debug_macro.
1544         (lines_only_debug_sections): Likewise.
1545         (gdb_fast_lookup_sections): New static array.
1546         (is_gdb_debug_section): Rename formal parameter.
1547         (is_lines_only_debug_section): Likewise.
1548         (is_gdb_fast_lookup_section): New function.
1549         (Layout::include_section): Check for ".zdebug_" prefix; pass
1550         section name suffix to is_gdb_debug_section, et al.; check for
1551         fast-lookup sections when building .gdb_index.
1552         * options.h (--strip-debug-gdb): Update GDB version number.
1553
1554 2012-06-06  Cary Coutant  <ccoutant@google.com>
1555
1556         * configure.ac: Add check for fallocate.
1557         * configure: Regenerate.
1558         * config.in: Regenerate.
1559
1560         * options.h (class General_options): Add --mmap-output-file and
1561         --posix-fallocate options.
1562         * output.cc: (posix_fallocate): Remove; replace with...
1563         (gold_fallocate): New function.
1564         (Output_file::map_no_anonymous): Call gold_fallocate.
1565         (Output_file::map): Check --mmap-output-file option.
1566
1567 2012-06-05  Jing Yu  <jingyu@google.com>
1568
1569         * gold.h (textdomain): Add do {} to empty while(0).
1570         (bindtextdomain): Likewise.
1571
1572 2012-06-04  Cary Coutant  <ccoutant@google.com>
1573
1574         * dynobj.cc (Sized_dynobj::do_get_global_symbol_counts): Call
1575         has_dynsym_index.
1576
1577 2012-05-25  Sriraman Tallam  <tmsriram@google.com>
1578
1579         * symtab.cc (Symbol_table::define_special_symbol):
1580         Initialize *poldsym to prevent uninitialized variable errors.
1581
1582 2012-05-23  Cary Coutant  <ccoutant@google.com>
1583
1584         * layout.cc (Layout::section_name_mapping): Add rules to handle
1585         exact match on .data.rel.ro.local or .data.rel.ro.
1586         (Layout::output_section_name): Check for exact matches.
1587
1588 2012-05-23  Cary Coutant  <ccoutant@google.com>
1589
1590         * layout.cc (Layout::section_name_mapping): Match .data.rel.ro.*
1591         more carefully.
1592
1593 2012-05-22  Cary Coutant  <ccoutant@google.com>
1594
1595         * symtab.cc (Symbol::should_add_dynsym_entry): Check for relocatable
1596         object before exporting symbol.
1597
1598 2012-05-21  H.J. Lu  <hongjiu.lu@intel.com>
1599
1600         * testsuite/tls_test.cc: Include "config.h" first.
1601         * testsuite/tls_test_c.c: Likewise.
1602
1603 2012-05-17  Daniel Richard G.  <skunk@iskunk.org>
1604             Nick Clifton  <nickc@redhat.com>
1605
1606         PR 14072
1607         * configure.in: Add check that sysdep.h has been included before
1608         any system header files.
1609         * configure: Regenerate.
1610         * config.in: Regenerate.
1611
1612 2012-05-14  Cary Coutant  <ccoutant@google.com>
1613
1614         * layout.cc (Layout::make_output_section): Mark .tdata section
1615         as RELRO.
1616         * testsuite/relro_test.cc: Add a TLS variable.
1617
1618 2012-05-10  H.J. Lu  <hongjiu.lu@intel.com>
1619
1620         PR gold/14091
1621         * x86_64.cc (Target_x86_64::Scan::local): For x32, generate
1622         R_X86_64_RELATIVE64 instead of R_X86_64_RELATIVE in case of
1623         R_X86_64_64.
1624
1625 2012-05-08  Cary Coutant  <ccoutant@google.com>
1626
1627         * layout.cc (gdb_sections): Update GDB version, add .debug_addr.
1628         (lines_only_debug_sections): Likewise.
1629
1630 2012-05-02  Roland McGrath  <mcgrathr@google.com>
1631
1632         * nacl.cc: New file.
1633         * nacl.h: New file.
1634         * Makefile.am (CCFILES, HFILES): Add them.
1635         * Makefile.in: Regenerate.
1636         * i386.cc (Output_data_plt_i386_nacl): New class.
1637         (Output_data_plt_i386_nacl_exec): New class.
1638         (Output_data_plt_i386_nacl_dyn): New class.
1639         (Target_i386_nacl): New class.
1640         (Target_selector_i386_nacl): New class.
1641         (target_selector_i386): Use it instead of Target_selector_i386.
1642         * x86_64.cc (Output_data_plt_x86_64_nacl): New class.
1643         (Target_x86_64_nacl): New class.
1644         (Target_selector_x86_64_nacl): New class.
1645         (target_selector_x86_64, target_selector_x32): Use it instead of
1646         Target_selector_x86_64.
1647         * arm.cc (Output_data_plt_arm_nacl): New class.
1648         (Target_arm_nacl): New class.
1649         (Target_selector_arm_nacl): New class.
1650         (target_selector_arm, target_selector_armbe): Use it instead of
1651         Target_selector_arm.
1652
1653         * target-select.cc (select_target): Take new Input_file* and off_t
1654         arguments, pass them on to recognize method of selector.
1655         * object.cc (make_elf_sized_object): Update caller.
1656         * parameters.cc (parameters_force_valid_target): Likewise.
1657         * incremental.cc (make_sized_incremental_binary): Likewise.
1658         * target-select.h: Update decl.
1659         (Target_selector::recognize): Take new Input_file* argument,
1660         pass it on to do_recognize.
1661         (Target_selector::do_recognize): Take new Input_file* argument.
1662         * freebsd.h (Target_selector_freebsd::do_recognize): Likewise.
1663         * powerpc.cc (Target_selector_powerpc::do_recognize): Likewise.
1664         * sparc.cc (Target_selector_sparc::do_recognize): Likewise.
1665         * testsuite/testfile.cc (Target_selector::do_recognize): Likewise.
1666
1667         * target.h (Target::Target_info): New members isolate_execinstr
1668         and rosegment_gap.
1669         (Target::isolate_execinstr, Target::rosegment_gap): New methods.
1670         * arm.cc (Target_arm::arm_info): Update initializer.
1671         * i386.cc (Target_i386::i386_info): Likewise.
1672         * powerpc.cc (Target_powerpc::powerpc_info): Likewise.
1673         * sparc.cc (Target_sparc::sparc_info): Likewise.
1674         * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
1675         * testsuite/testfile.cc (Target_test::test_target_info): Likewise.
1676         * layout.cc (Layout::attach_allocated_section_to_segment):
1677         Take new const Target* argument.  If target->isolate_execinstr(), act
1678         like --rosegment.
1679         (Layout::find_first_load_seg): Take new const Target* argument;
1680         if target->isolate_execinstr(), reject PF_X segments.
1681         (Layout::relaxation_loop_body): Update caller.
1682         (Layout::set_segment_offsets): If target->isolate_execinstr(),
1683         reset file offset to zero when we hit LOAD_SEG, and then do a second
1684         loop over the segments before LOAD_SEG to reassign offsets after
1685         addresses have been determined.  Handle target->rosegment_gap().
1686         (Layout::attach_section_to_segment): Take new const Target* argument;
1687         pass it to attach_allocated_section_to_segment.
1688         (Layout::make_output_section): Update caller.
1689         (Layout::attach_sections_to_segments): Take new const Target* argument;
1690         pass it to attach_section_to_segment.
1691         * gold.cc (queue_middle_tasks): Update caller.
1692         * layout.h (Layout): Update method decls with new arguments.
1693
1694         * arm.cc (Target_arm::Target_arm): Take optional argument for the
1695         Target_info pointer to use.
1696         (Target_arm::do_make_data_plt): New virtual method.
1697         (Target_arm::make_data_plt): New method that calls it.
1698         (Target_arm::make_plt_entry): Use it.
1699         (Output_data_plt_arm::Output_data_plt_arm): Take additional argument
1700         for the section alignment.
1701         (Output_data_plt_arm::do_first_plt_entry_offset): New abstract virtual
1702         method.
1703         (Output_data_plt_arm::first_plt_entry_offset): Call it.
1704         (Output_data_plt_arm::do_get_plt_entry_size): New abstract virtual
1705         method.
1706         (Output_data_plt_arm::get_plt_entry_size): Call it.
1707         (Output_data_plt_arm::do_fill_plt_entry): New abstract virtual method.
1708         (Output_data_plt_arm::fill_plt_entry): New method that calls it.
1709         (Output_data_plt_arm::do_fill_first_plt_entry): New abstract virtual
1710         method.
1711         (Output_data_plt_arm::fill_first_plt_entry): New method that calls it.
1712         (Output_data_plt_arm::set_final_data_size): Use get_plt_entry_size
1713         method instead of sizeof(plt_entry).
1714         (Output_data_plt_arm::add_entry): Likewise.
1715         Use first_plt_entry_offset method instead of sizeof(first_plt_entry).
1716         (Target_arm::first_plt_entry_offset): Call method on this->plt_ rather
1717         than static method.
1718         (Target_arm::plt_entry_size): Likewise.
1719         (Output_data_plt_arm::first_plt_entry, Output_data_plt_arm::plt_entry):
1720         Move to ...
1721         (Output_data_plt_arm_standard): ... here, new class.
1722         (Output_data_plt_arm::do_write): Move guts of PLT filling to...
1723         (Output_data_plt_arm_standard::do_fill_first_plt_entry): ... here ...
1724         (Output_data_plt_arm_standard::do_fill_plt_entry): ... and here.
1725
1726         * x86_64.cc (Output_data_plt_x86_64::Output_data_plt_x86_64):
1727         Take additional argument for the PLT entry size.
1728         (Output_data_plt_x86_64::get_tlsdesc_plt_offset):
1729         Use get_plt_entry_size method rather than plt_entry_size variable.
1730         (Output_data_plt_x86_64::reserve_slot): Likewise.
1731         (Output_data_plt_x86_64::do_adjust_output_section): Likewise.
1732         (Output_data_plt_x86_64::add_entry): Likewise.
1733         (Output_data_plt_x86_64::add_local_ifunc_entry): Likewise.
1734         (Output_data_plt_x86_64::address_for_global): Likewise.
1735         (Output_data_plt_x86_64::address_for_local): Likewise.
1736         (Output_data_plt_x86_64::set_final_data_size): Likewise.
1737         (Output_data_plt_x86_64::first_plt_entry_offset): Likewise.
1738         Make method non-static.
1739         (Output_data_plt_x86_64::do_get_plt_entry_size): New abstract virtual
1740         method.
1741         (Output_data_plt_x86_64::get_plt_entry_size): Just call that.
1742         (Output_data_plt_x86_64::do_add_eh_frame): New abstract virtual method.
1743         (Output_data_plt_x86_64::add_eh_frame): New method to call it.
1744         (Output_data_plt_x86_64::do_fill_first_plt_entry): New abstract
1745         virtual method.
1746         (Output_data_plt_x86_64::fill_first_plt_entry): New method to call it.
1747         (Output_data_plt_x86_64::do_fill_plt_entry): New abstract
1748         virtual method.
1749         (Output_data_plt_x86_64::fill_plt_entry): New method to call it.
1750         (Output_data_plt_x86_64::do_fill_tlsdesc_entry): New abstract
1751         virtual method.
1752         (Output_data_plt_x86_64::fill_tlsdesc_entry): New method to call it.
1753         (Output_data_plt_x86_64::plt_entry_size)
1754         (Output_data_plt_x86_64::first_plt_entry)
1755         (Output_data_plt_x86_64::plt_entry)
1756         (Output_data_plt_x86_64::tlsdesc_plt_entry)
1757         (Output_data_plt_x86_64::plt_eh_frame_fde_size)
1758         (Output_data_plt_x86_64::plt_eh_frame_fde): Move to ...
1759         (Output_data_plt_x86_64_standard): ... here, new class.
1760         (Target_x86_64::Target_x86_64): Take optional argument for the
1761         Target_info pointer to use.
1762         (Target_x86_64::do_make_data_plt): New virtual method.
1763         (Target_x86_64::make_data_plt): New method to call it.
1764         (Target_x86_64::init_got_plt_for_update): Use that.
1765         Call this->plt_->add_eh_frame method here.
1766         (Output_data_plt_x86_64::init): Don't do add_eh_frame_for_plt here.
1767         (Target_x86_64::first_plt_entry_offset): Call method on this->plt_
1768         rather than static method.
1769         (Target_x86_64::plt_entry_size): Likewise.
1770         (Output_data_plt_x86_64::do_write): Use get_plt_entry_size method
1771         rather than plt_entry_size variable.  Move guts of PLT filling to...
1772         (Output_data_plt_x86_64_standard::do_fill_first_plt_entry): ... here ...
1773         (Output_data_plt_x86_64_standard::do_fill_plt_entry): ... and here ...
1774         (Output_data_plt_x86_64_standard::do_fill_tlsdesc_entry): ... and here.
1775
1776         * i386.cc (Output_data_plt_i386::Output_data_plt_i386): Take
1777         additional argument for the section alignment.
1778         Don't do add_eh_frame_for_plt here.
1779         (Output_data_plt_i386::first_plt_entry_offset): Make the method
1780         non-static.  Use get_plt_entry_size method rather than plt_entry_size
1781         variable.
1782         (Output_data_plt_i386::do_get_plt_entry_size): New abstract virtual
1783         method.
1784         (Output_data_plt_i386::get_plt_entry_size): Call it.
1785         (Output_data_plt_i386::do_add_eh_frame): New abstract virtual method.
1786         (Output_data_plt_i386::add_eh_frame): New method to call it.
1787         (Output_data_plt_i386::do_fill_first_plt_entry): New abstract virtual
1788         method.
1789         (Output_data_plt_i386::fill_first_plt_entry): New method to call it.
1790         (Output_data_plt_i386::do_fill_plt_entry): New abstract virtual
1791         method.
1792         (Output_data_plt_i386::fill_plt_entry): New method to call it.
1793         (Output_data_plt_i386::set_final_data_size): Use get_plt_entry_size
1794         method instead of plt_entry_size.
1795         (Output_data_plt_i386::plt_entry_size)
1796         (Output_data_plt_i386::plt_eh_frame_fde_size)
1797         (Output_data_plt_i386::plt_eh_frame_fde): Move to ...
1798         (Output_data_plt_i386_standard): ... here, new class.
1799         (Output_data_plt_i386_exec): New class.
1800         (Output_data_plt_i386::exec_first_plt_entry): Move to ...
1801         (Output_data_plt_i386_exec::first_plt_entry): ... here.
1802         (Output_data_plt_i386::exec_plt_entry): Move to ...
1803         (Output_data_plt_i386_exec::plt_entry): ... here.
1804         (Output_data_plt_i386_dyn): New class.
1805         (Output_data_plt_i386::first_plt_entry): Move to ...
1806         (Output_data_plt_i386_dyn::first_plt_entry): ... here.
1807         (Output_data_plt_i386::dyn_plt_entry): Move to ...
1808         (Output_data_plt_i386_dyn::plt_entry): ... here.
1809         (Target_i386::Target_i386): Take optional argument for the Target_info
1810         pointer to use.
1811         (Target_i386::do_make_data_plt): New virtual method.
1812         (Target_i386::make_data_plt): New method to call it.
1813         (Target_i386::make_plt_section): Use that.
1814         Call this->plt_->add_eh_frame method here.
1815         (Output_data_plt_i386::add_entry): Use get_plt_entry_size method
1816         rather than plt_entry_size variable.
1817         (Output_data_plt_i386::add_local_ifunc_entry): Likewise.
1818         (Output_data_plt_i386::address_for_local): Likewise.
1819         (Output_data_plt_i386::do_write): Likewise.
1820         Move guts of PLT filling to...
1821         (Output_data_plt_i386_exec::do_fill_first_plt_entry): ... here ...
1822         (Output_data_plt_i386_exec::do_fill_plt_entry): ... and here ...
1823         (Output_data_plt_i386_dyn::do_fill_first_plt_entry): ... and here ...
1824         (Output_data_plt_i386_dyn::do_fill_plt_entry): ... and here.
1825
1826 2012-05-01  Cary Coutant  <ccoutant@google.com>
1827
1828         * dwarf_reader.cc (Dwarf_die::read_attributes)
1829         (Dwarf_die::skip_attributes, Dwarf_die::int_attribute)
1830         (Dwarf_die::uint_attribute): Remove DW_FORM_null.
1831         * reduced_debug_output.cc
1832         (Output_reduced_debug_info_section::get_die_end): Remove
1833         DW_FORM_GNU_ref_index.  Add default case.
1834
1835 2012-04-26  Mark Wielaard  <mjw@redhat.com>
1836
1837         * dwarf_reader.cc (Dwarf_die::address_attribute): New function.
1838         * dwarf_reader.h (Dwarf_die::address_attribute): Likewise.
1839         * gdb-index.cc (Gdb_index_info_reader::record_cu_ranges): Handle
1840         DW_AT_high_pc as offset from DW_AT_low_pc.
1841
1842         * testsuite/Makefile.am (gdb_index_test_3.sh): New test case.
1843         * testsuite/Makefile.in: Regenerate.
1844         * testsuite/gdb_index_test_3.c: New test source file.
1845         * testsuite/gdb_index_test_3.sh: New test source file.
1846
1847 2012-04-25  Ian Lance Taylor  <iant@google.com>
1848
1849         * arm.cc (Target_arm::do_is_defined_by_abi): Make sym a const
1850         pointer.
1851         (Stub_addend_reader::operator()): Declare Arm_relocate_functions
1852         as a class, not a struct.
1853         (Target_arm::scan_span_for_cortex_a8_erratum): Likewise.
1854         (Target_arm::apply_cortex_a8_workaround): Likewise.
1855         * gc.h: Declare Reloc_types as a struct, not a class.
1856         * object.h: Declare Symbols_data as a struct.
1857         * reloc.h: Declare Read_relocs_data as a struct.
1858         * target.h: Declare Relocate_info as a struct.
1859
1860 2012-04-24  David S. Miller  <davem@davemloft.net>
1861
1862         * sparc.cc (Target_sparc::Relocate::relax_call): New function.
1863         (Target_sparc::Relocate::relocate): Call it for R_SPARC_WDISP30
1864         and R_SPARC_WPLT30.
1865
1866 2012-04-24  Cary Coutant  <ccoutant@google.com>
1867
1868         * incremental-dump.cc (find_input_containing_global): Replace
1869         magic number with symbolic constant.
1870         (dump_incremental_inputs): Update version number.
1871         * incremental.cc (Output_section_incremental_inputs): Update version
1872         number; import symbolic constants from Incremental_inputs_reader.
1873         (Incremental_inputs::create_data_sections): Align relocations
1874         section correctly for 64-bit targets.
1875         (Output_section_incremental_inputs::set_final_data_size): Use symbolic
1876         constants; add padding.
1877         (Output_section_incremental_inputs::write_header): Add assert for
1878         header_size.
1879         (Output_section_incremental_inputs::write_input_files): Add assert
1880         for input_entry_size.
1881         (Output_section_incremental_inputs::write_info_blocks): Add padding;
1882         add assert for object_info_size, input_section_entry_size,
1883         global_sym_entry_size.
1884         * incremental.h (Incremental_inputs_reader): Add symbolic constants
1885         for data structure sizes; use them.
1886         (Incremental_input_entry_reader): Import symbolic constants from
1887         Incremental_inputs_reader; use them.
1888
1889 2012-04-23  David S. Miller  <davem@davemloft.net>
1890
1891         * sparc.cc (class Target_sparc): Add elf_machine_, elf_flags_,
1892         and elf_flags_set_.
1893         (Target_sparc::Target_sparc): Initialize new fields.
1894         (Target_sparc::do_make_elf_object): New function.
1895         (Target_sparc::do_adjust_elf_header): New function.
1896
1897 2012-04-23  Cary Coutant  <ccoutant@google.com>
1898
1899         * gdb-index.cc (Gdb_index::do_write): Use Swap_aligned32 for writing
1900         CU range table of gdb index.
1901
1902 2012-04-20  David S. Miller  <davem@davemloft.net>
1903
1904         * target.cc (Sized_target::do_adjust_elf_header): Use big_endian
1905         instead of false.
1906
1907 2012-04-16  David S. Miller  <davem@davemloft.net>
1908
1909         * sparc.cc (Target_sparc::got_address): New function.
1910         (Sparc_relocate_functions::gdop_hix22): New function.
1911         (Sparc_relocate_functions::gdop_lox10): New function.
1912         (Target_sparc::Scan::local): Do not emit a GOT entry for GOTDATA
1913         relocs.
1914         (Target_sparc::Scan::local): Likewise if the global symbol is not
1915         preemptible and is not IFUNC.
1916         (Target_sparc::Relocate::relocate): Perform GOTDATA code
1917         transformations for local and non-preemptible non-IFUNC global
1918         symbols.
1919
1920         * gdb-index.cc (Gdb_index::do_write): Use Swap_unaligned when
1921         writing out 64-bit part of ranges.
1922
1923         * Makefile.am: Build IFUNC tests with -fPIC and -fPIE instead of
1924         -fpic and -fpie respectively.
1925         * Makefile.in: Regenerate.
1926
1927         * sparc.cc (class Target_sparc): Add rela_ifunc_.
1928         (Target_sparc::Target_sparc): Initialize new field.
1929         (Target_sparc::do_plt_section_for_global): New function.
1930         (Target_sparc::do_plt_section_for_local): New function.
1931         (Target_sparc::reloc_needs_plt_for_ifunc): New function.
1932         (Target_sparc::make_plt_section): New function, broken out of
1933         make_plt_entry.  Use ORDER_NON_RELRO_FIRST for ".plt".
1934         (Target_sparc::make_plt_entry): Call make_plt_section.
1935         (Target_sparc::make_local_ifunc_plt_entry): New function.
1936         (Target_sparc::rela_ifunc_section): New function.
1937         (Target_sparc::plt_section): Remove const.
1938         (Output_data_plt_sparc): Update declarations.  Define Global_ifunc
1939         and Local_ifunc types.  Add global_ifuncs_, local_ifuncs_, ifunc_rel_,
1940         and ifunc_count_ fields.
1941         (Output_data_plt_sparc::Output_data_plt_sparc): Initialize new fields.
1942         (Output_data_plt_sparc::add_entry): Handle IFUNC symbols.
1943         (Output_data_plt_sparc::add_local_ifunc_entry): New function.
1944         (Output_data_plt_sparc::rela_ifunc): New function.
1945         (Output_data_plt_sparc::emit_pending_ifunc_relocs): New function.
1946         (Output_data_plt_sparc::has_ifunc_section): New function.
1947         (Output_data_plt_sparc::entry_count): Include ifunc_count_.
1948         (Output_data_plt_sparc::address_for_global): New function.
1949         (Output_data_plt_sparc::address_for_local): New function.
1950         (Output_data_plt_sparc::plt_index_to_offset): New function.
1951         (Output_data_plt_sparc::set_final_data_size): Use plt_index_to_offset
1952         and entry_count.
1953         (Output_data_plt_sparc::do_write): Use first_plt_entry_offset and
1954         entry_count.
1955         (Target_sparc::Scan::get_reference_flags): Add R_SPARC_IRELATIVE and
1956         R_SPARC_JMP_IREL to switch.
1957         (Target_sparc::Scan::check_non_pic): Likewise.
1958         (Target_sparc::Scan::local): Handle IFUNC symbols.
1959         (Target_sparc::Scan::local): Likewise.
1960         (Target_sparc::Relocate::relocate): Likewise, use plt_address_for_global
1961         and plt_address_for_local.
1962         (Target_sparc::do_finalize_sections): Call emit_pending_ifunc_relocs.
1963         Define __rel_iplt_start and __rel_iplt_end if doing a static link.
1964
1965         * output.h (Output_reloc): Allow use_plt_offset for global relocs too.
1966         (class Output_data_reloc): Adjust calls to Output_reloc_type.
1967         (Output_data_reloc::add_global_relative): (RELA only) Add use_plt_offset.
1968         * output.cc (Output_reloc::Output_reloc): Add use_plt_offset flag for
1969         global relocs too.
1970         (Output_reloc::symbol_value): Respect use_plt_offset_ for global symbols.
1971         * powerpc.cc (Target_powerpc::Scan::global): Adjust add_global_relative
1972         calls.
1973         * sparc.cc (Target_sparc::Scan::global): Likewise.
1974         * x86_64.cc (Target_x86_64::Scan::global): Likewise.
1975
1976 2012-04-16  Cary Coutant  <ccoutant@google.com>
1977
1978         * archive.cc (Library_base::should_include_member): Check for
1979         --export-dynamic-symbol.
1980         * options.h (class General_options): Add --export-dynamic-symbol.
1981         * symtab.cc (Symbol::should_add_dynsym_entry): Check for
1982         --export-dynamic-symbol.
1983         (Symbol_table::gc_mark_undef_symbols): Likewise.
1984         (Symbol_table::do_add_undefined_symbols_from_command_line): Likewise.
1985
1986 2012-04-12  David S. Miller  <davem@davemloft.net>
1987
1988         * sparc.cc (Reloc::wdisp10): New relocation method.
1989         (Reloc::h34): Likewise.
1990         (Target_sparc::Scan::check_non_pic): Handle R_SPARC_H34.
1991         (Target_sparc::Scan::get_reference_flags): Handle R_SPARC_H34 and
1992         R_SPARC_WDISP10.
1993         (Target_sparc::Scan::local): Likewise.
1994         (Target_sparc::Scan::global): Likewise.
1995         (Target_sparc::Relocate::relocate): Likewise.
1996
1997 2012-04-09  Cary Coutant  <ccoutant@google.com>
1998
1999         * gdb-index.cc (Gdb_index_info_reader::record_cu_ranges): Allow
2000         low_pc == 0.
2001
2002 2012-04-06  Ian Lance Taylor  <iant@google.com>
2003
2004         * timer.cc: #include <unistd.h>.
2005
2006 2012-04-06  Roland McGrath  <mcgrathr@google.com>
2007
2008         * configure.in (AC_CHECK_HEADERS): Add locale.h.
2009         * config.in: Regenerate.
2010         * configure: Regenerate.
2011
2012 2012-04-05  Nick Clifton  <nickc@redhat.com>
2013
2014         * configure.ac (AC_CHECK_FUNCS): Add setlocale.
2015         (AM_LC_MESSAGES): Add.
2016         * aclocal.m4: Regenerate.
2017         * config.in: Regenerate.
2018         * configure: Regenerate.
2019
2020 2012-03-21  Cary Coutant  <ccoutant@google.com>
2021
2022         * Makefile.am: Add gdb-index.cc, gdb-index.h.
2023         * Makefile.in: Regenerate.
2024         * dwarf_reader.cc (Sized_elf_reloc_mapper::do_initialize): New function.
2025         (Sized_elf_reloc_mapper::symbol_section): New function.
2026         (Sized_elf_reloc_mapper::do_get_reloc_target): New function.
2027         (make_elf_reloc_mapper): New function.
2028         (Dwarf_abbrev_table::clear_abbrev_codes): New function.
2029         (Dwarf_abbrev_table::do_read_abbrevs): New function.
2030         (Dwarf_abbrev_table::do_get_abbrev): New function.
2031         (Dwarf_ranges_table::read_ranges_table): New function.
2032         (Dwarf_ranges_table::read_range_list): New function.
2033         (Dwarf_pubnames_table::read_section): New function.
2034         (Dwarf_pubnames_table::read_header): New function.
2035         (Dwarf_pubnames_table::next_name): New function.
2036         (Dwarf_die::Dwarf_die): New function.
2037         (Dwarf_die::read_attributes): New function.
2038         (Dwarf_die::skip_attributes): New function.
2039         (Dwarf_die::set_name): New function.
2040         (Dwarf_die::set_linkage_name): New function.
2041         (Dwarf_die::attribute): New function.
2042         (Dwarf_die::string_attribute): New function.
2043         (Dwarf_die::int_attribute): New function.
2044         (Dwarf_die::uint_attribute): New function.
2045         (Dwarf_die::ref_attribute): New function.
2046         (Dwarf_die::child_offset): New function.
2047         (Dwarf_die::sibling_offset): New function.
2048         (Dwarf_info_reader::check_buffer): New function.
2049         (Dwarf_info_reader::parse): New function.
2050         (Dwarf_info_reader::do_parse): New function.
2051         (Dwarf_info_reader::do_read_string_table): New function.
2052         (Dwarf_info_reader::lookup_reloc): New function.
2053         (Dwarf_info_reader::get_string): New function.
2054         (Dwarf_info_reader::visit_compilation_unit): New function.
2055         (Dwarf_info_reader::visit_type_unit): New function.
2056         (Sized_dwarf_line_info::Sized_dwarf_line_info): Use
2057         Sized_elf_reloc_mapper.
2058         (Sized_dwarf_line_info::symbol_section): Remove function.
2059         (Sized_dwarf_line_info::read_relocs): Use Sized_elf_reloc_mapper.
2060         (Sized_dwarf_line_info::read_line_mappings): Remove object
2061         parameter, adjust callers.
2062         (Sized_dwarf_line_info::format_file_lineno): Fix type of cast.
2063         * dwarf_reader.h: Include <sys/types.h>.
2064         (class Track_relocs): Remove forward declaration.
2065         (class Elf_reloc_mapper): New class.
2066         (class Sized_elf_reloc_mapper): New class.
2067         (class Dwarf_abbrev_table): New class.
2068         (class Dwarf_range_list): New class.
2069         (class Dwarf_ranges_table): New class.
2070         (class Dwarf_pubnames_table): New class.
2071         (class Dwarf_die): New class.
2072         (class Dwarf_info_reader): New class.
2073         (Sized_dwarf_line_info::read_line_mappings): Remove object parameter.
2074         (Sized_dwarf_line_info::symbol_section): Remove member function.
2075         * dynobj.h (Sized_dynobj::do_section_contents): Refactor code from
2076         base class.
2077         * gdb-index.cc: New source file.
2078         * gdb-index.h: New source file.
2079         * incremental.cc (Sized_relobj_incr::do_layout): Track .debug_info
2080         and .debug_types sections, call Layout::add_to_gdb_index.
2081         (Sized_relobj_incr::do_section_name): Implement.
2082         (Sized_relobj_incr::do_section_contents): Adjust parameter list and
2083         return type; Implement.
2084         (Sized_incr_dynobj::do_section_contents): Adjust parameter list and
2085         return type.
2086         * incremental.h (Sized_relobj_incr::do_section_contents): Adjust
2087         parameter list and return type.
2088         (Sized_incr_dynobj::do_section_contents): Likewise.
2089         * layout.cc: Include gdb-index.h.
2090         (Layout::Layout): Initialize gdb_index_data_.
2091         (Layout::init_fixed_output_section): Check for .gdb_index section.
2092         (Layout::add_to_gdb_index): New function. Instantiate.
2093         * layout.h: Add forward declaration for class Gdb_index.
2094         (Layout::add_to_gdb_index): New member function.
2095         (Layout::gdb_index_data_): New data member.
2096         * main.cc: Include gdb-index.h.
2097         (main): Print statistics for gdb index.
2098         * object.cc (Object::section_contents): Move code into
2099         do_section_contents.
2100         (need_decompressed_section): Check for sections needed when building
2101         gdb index.
2102         (build_compressed_section_map): Likewise.
2103         (Sized_relobj_file::do_read_symbols): Need local symbols when building
2104         gdb index.
2105         (Sized_relobj_file::do_layout): Track .debug_info and .debug_types
2106         sections; call Layout::add_to_gdb_index.
2107         (Sized_relobj_file::do_decompressed_section_contents): Call
2108         do_section_contents directly.
2109         * object.h (Object::do_section_contents): Adjust parameter list and
2110         return type.
2111         (Object::do_decompressed_section_contents): Call do_section_contents
2112         directly.
2113         (Sized_relobj_file::do_section_contents): Adjust parameter list and
2114         return type.
2115         * options.h (class General_options): Add --gdb-index option.
2116         * plugin.cc (Sized_pluginobj::do_section_contents): Adjust parameter
2117         list and return type.
2118         * plugin.h (Sized_pluginobj::do_section_contents): Likewise.
2119         * reloc.h (Track_relocs::checkpoint): New function.
2120         (Track_relocs::reset): New function.
2121
2122         * testsuite/Makefile.am (gdb_index_test_1.sh, gdb_index_test_2.sh):
2123         New test cases.
2124         * testsuite/Makefile.in: Regenerate.
2125         * testsuite/gdb_index_test.cc: New test source file.
2126         * testsuite/gdb_index_test_1.sh: New test source file.
2127         * testsuite/gdb_index_test_2.sh: New test source file.
2128
2129 2012-03-19  Doug Kwan  <dougkwan@google.com>
2130
2131         * arm.cc (Target_arm::do_define_standard_symbols): New method.
2132         (Target_arm::do_finalize_sections): Remove code which defines
2133         __exidx_start and __exidx_end.  Make symbol table parameter
2134         anonymous as it is not used.
2135         * gold.cc (queue_middle_tasks): Call target hook to define any
2136         target-specific symbols.
2137         * target.h (Target::define_standard_symbols): New method.
2138         (Target::do_define_standard_symbols): Same.
2139         * testsuite/Makefile.am (arm_exidx_test): Dump relocations also.
2140         * testsuite/Makefile.in: Regenerate.
2141         * testsuite/arm_exidx.s: Generate data relocations for __exidx_start
2142         and __exidx_end.
2143         * testsuite/arm_exidx_test.sh: Check that no unused dynamic
2144         relocations are generated for __exidx_start and __exidx_end.
2145
2146 2012-03-16  Doug Kwan  <dougkwan@google.com>
2147
2148         * testsuite/Makefile.am: Disable test initpri3b.
2149         * testsuite/Makefile.in: Regenerate.
2150
2151 2012-03-15  Doug Kwan  <dougkwan@google.com>
2152
2153         * arm.cc (Target_arm::got_section): Make .got section read-only
2154         if -z now is given.
2155
2156 2012-03-15  Ian Lance Taylor  <iant@google.com>
2157
2158         PR gold/13850
2159         * layout.cc (Layout::make_output_section): Correctly mark
2160         SHT_INIT_ARRAY, et. al., as relro.
2161
2162 2012-03-14  Doug Kwan  <dougkwan@google.com>
2163
2164         * gold/arm.cc (Target_arm::Scan::global): Generate R_ARM_GLOB_DAT
2165         dynamic relocations for protected symbols in shared objects.
2166
2167 2012-03-13  Ian Lance Taylor  <iant@google.com>
2168
2169         * resolve.cc (Symbol_table::resolve): When merging common symbols,
2170         keep the larger alignment.
2171
2172 2012-03-12  Cary Coutant  <ccoutant@google.com>
2173
2174         * dwarf_reader.cc (Sized_dwarf_line_info::process_one_opcode): Fix
2175         handling of DW_LNE_define_file.
2176
2177 2012-03-12  Cary Coutant  <ccoutant@google.com>
2178
2179         * reduced_debug_output.cc
2180         (Output_reduced_debug_info_section::get_die_end): Add new FORM
2181         codes to switch.
2182
2183 2012-02-29  Cary Coutant  <ccoutant@google.com>
2184
2185         * object.cc (need_decompressed_section): Add #ifdef ENABLE_THREADS.
2186
2187 2012-02-29  Cary Coutant  <ccoutant@google.com>
2188
2189         * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
2190         Call Object::decompressed_section_contents.
2191         * dwarf_reader.h (Sized_dwarf_line_info::~Sized_dwarf_line_info):
2192         New dtor.
2193         (Sized_dwarf_line_info::buffer_start_): New data member.
2194         * merge.cc (Output_merge_data::do_add_input_section): Call
2195         Object::decompressed_section_contents.
2196         (Output_merge_string::do_add_input_section): Likewise.
2197         * object.cc (need_decompressed_section): New function.
2198         (build_compressed_section_map): Decompress sections needed later.
2199         (Sized_relobj_file::do_decompressed_section_contents): New function.
2200         (Sized_relobj_file::do_discard_decompressed_sections): New function.
2201         * object.h (Object::decompressed_section_contents): New function.
2202         (Object::discard_decompressed_sections): New function.
2203         (Object::do_decompressed_section_contents): New function.
2204         (Object::do_discard_decompressed_sections): New function.
2205         (Compressed_section_info): New type.
2206         (Compressed_section_map): Include decompressed section contents.
2207         (Sized_relobj_file::do_decompressed_section_contents): New function.
2208         (Sized_relobj_file::do_discard_decompressed_sections): New function.
2209
2210 2012-02-16  Cary Coutant  <ccoutant@google.com>
2211
2212         * testsuite/Makefile.am (initpri2): Add --ctors-in-init-array option.
2213         * testsuite/Makefile.in: Regenerate.
2214
2215 2012-02-14  Cary Coutant  <ccoutant@google.com>
2216
2217         * options.cc (General_options::finalize): Disallow -pie and -static.
2218
2219 2012-02-03  Doug Kwan  <dougkwan@google.com>
2220
2221         * arm.cc (Arm_relocate_functions::abs8,
2222         Arm_relocate_functions::abs16): Use
2223         Bits::has_signed_unsigned_overflow32.
2224         (Arm_relocate_functions::thm_abs8): Correct range of
2225         overflow check.
2226         * reloc.h (Bits class): Change minimum number of bits from 0 to 1
2227         in assertions.
2228
2229 2012-02-02  Doug Kwan  <dougkwan@google.com>
2230
2231         * arm.cc (Reloc_stub::stub_type_for_reloc): Use PIC stubs in all
2232         position independent outputs, not just shared objects.
2233
2234 2012-01-30  H.J. Lu  <hongjiu.lu@intel.com>
2235
2236         * configure.ac: Check if -fpic -mtls-dialect=gnu2 works.
2237         * configure: Regenerated.
2238
2239 2012-01-27  Ian Lance Taylor  <iant@google.com>
2240
2241         * reloc.h (Bits): New class with static functions, copied from
2242         namespace utils in arm.cc.
2243         * arm.cc (namespace utils): Remove.  Rewrite all uses to use Bits
2244         instead.
2245
2246 2012-01-27  H.J. Lu  <hongjiu.lu@intel.com>
2247
2248         * incremental.cc (write_info_blocks): Correct relocation offset.
2249
2250 2012-01-27  H.J. Lu  <hongjiu.lu@intel.com>
2251
2252         * x86_64.cc (Relocate::tls_gd_to_ie): Support x32.
2253         (Relocate::tls_gd_to_le): Likewise.
2254
2255 2012-01-27  H.J. Lu  <hongjiu.lu@intel.com>
2256
2257         * x86_64.cc (Scan::global): Support x32 IFUNC function pointer.
2258
2259 2012-01-27  H.J. Lu  <hongjiu.lu@intel.com>
2260
2261         * configure.ac: Check if -mcmodel=medium works.
2262         * configure: Regenerated.
2263
2264 2012-01-24  Cary Coutant  <ccoutant@google.com>
2265
2266         * int_encoding.cc (read_unsigned_LEB_128): Replaced with inline
2267         definition and ...
2268         (read_unsigned_LEB_128_x): ... this new function.
2269         (read_signed_LEB_128): Replaced with inline definition and ...
2270         (read_signed_LEB_128_x): ... this new function.
2271         * int_encoding.h  (read_unsigned_LEB_128_x): New function.
2272         (read_unsigned_LEB_128): Add inline definition.
2273         (read_signed_LEB_128_x): New function.
2274         (read_signed_LEB_128): Add inline definition.
2275         * testsuite/Makefile.am (leb128_unittest): New unit test.
2276         * testsuite/Makefile.in: Regenerate.
2277         * testsuite/leb128_unittest.cc: New unit test.
2278
2279 2012-01-23  Ian Lance Taylor  <iant@google.com>
2280
2281         PR gold/13617
2282         * i386.cc (Target_i386::do_code_fill): When using a jmp
2283         instruction, pad with nop instructions.
2284         * x86_64.cc (Target_x86_64::do_code_fill): Likewise.
2285
2286 2012-01-22  H.J. Lu  <hongjiu.lu@intel.com>
2287
2288         * x86_64.cc (gc_process_relocs): Add typename on types used in
2289         template.
2290         (scan_relocs): Likewise.
2291         (relocate_section): Likewise.
2292         (apply_relocation): Likewise.
2293
2294 2012-01-10  H.J. Lu  <hongjiu.lu@intel.com>
2295
2296         * x86_64.cc (Scan::check_non_pic): Allow R_X86_64_32 for x32.
2297         (Scan::local): Use R_X86_64_RELATIVE relocation for R_X86_64_32
2298         under x32.
2299
2300 2012-01-09  H.J. Lu  <hongjiu.lu@intel.com>
2301
2302         * x86_64.cc: Initial support for x32.
2303
2304 2012-01-03  Cary Coutant  <ccoutant@google.com>
2305
2306         * gold/incremental.cc (Sized_incremental_binary::do_process_got_plt):
2307         Use abstract base class for GOT.
2308         * gold/output.h (class Output_data_got_base): New abstract base class.
2309         (class Output_data_got): Derive from new base class, adjust ctors.
2310         (Output_data_got::reserve_slot): Make virtual; rename to
2311         do_reserve_slot; Adjust callers.
2312         * gold/target.h (Sized_target::init_got_plt_for_update): Return
2313         pointer to abstract base class.
2314         * gold/x86_64.cc (Target_x86_64::init_got_plt_for_update): Likewise.
2315
2316 2011-12-18  Ian Lance Taylor  <iant@google.com>
2317
2318         * object.h (Relobj::local_symbol_value): New function.
2319         (Relobj::local_plt_offset): New function.
2320         (Relobj::local_has_got_offset): New function.
2321         (Relobj::local_got_offset): New function.
2322         (Relobj::set_local_got_offset): New function.
2323         (Relobj::do_local_symbol_value): New pure virtual function.
2324         (Relobj::do_local_plt_offset): Likewise.
2325         (Relobj::do_local_has_got_offset): Likewise.
2326         (Relobj::do_local_got_offset): Likewise.
2327         (Relobj::do_set_local_got_offset): Likewise.
2328         (Sized_relobj::do_local_has_got_offset): Rename from
2329         local_has_got_offset.
2330         (Sized_relobj::do_local_got_offset): Rename from local_got_offset.
2331         (Sized_relobj::do_set_local_got_offset): Rename from
2332         set_local_got_offset.
2333         (Sized_relobj_file::do_local_plt_offset): Rename from
2334         local_plt_offset.
2335         (Sized_relobj_file::do_local_symbol_value): New function.
2336         * object.cc (Sized_relobj_file::do_local_plt_offset): Rename from
2337         local_plt_offset.
2338         * output.cc (Output_data_got::Got_entry::write): Change object to
2339         Relobj.  Use local_symbol_value.
2340         (Output_data_got::add_global_with_rel): Change rel_dyn to
2341         Output_data_reloc_generic*.  Use add_global_generic.
2342         (Output_data_got::add_global_with_rela): Remove.  Change all
2343         callers to use add_global_with_rel.
2344         (Output_data_got::add_global_pair_with_rel): Change rel_dyn to
2345         Output_data_reloc_generic*.  Use add_global_generic.
2346         (Output_data_got::add_global_pair_with_rela): Remove.  Change all
2347         callers to use add_global_pair_with_rel.
2348         (Output_data_got::add_local): Change object to Relobj*.
2349         (Output_data_got::add_local_plt): Likewise.
2350         (Output_data_got::add_local_with_rel): Change object to Relobj*,
2351         change rel_dyn to Output_data_reloc_generic*.  Use
2352         add_local_generic.
2353         (Output_data_got::add_local_with_rela): Remove.  Change all
2354         callers to use all_local_with_rel.
2355         (Output_data_got::add_local_pair_with_rel): Change object to
2356         Relobj*, change rel_dyn to Output_data_reloc_generic*.  Use
2357         add_output_section_generic.
2358         (Output_data_got::add_local_pair_with_rela): Remove.  Change all
2359         callers to use add_local_pair_with_rel.
2360         (Output_data_got::reserve_local): Change object to Relobj*.
2361         * output.h: (class Output_data_reloc_generic): Add pure virtual
2362         declarations for add_global_generic, add_local_generic,
2363         add_output_section_generic.
2364         (class Output_data_reloc) [SHT_REL, SHT_RELA]: Implement new
2365         functions for Output_data_reloc_generic.  Update declarations for
2366         changes listed in output.cc.
2367         (class Output_data_got): Change template parameter to got_size.
2368         Don't define Rel_dyn or Rela_dyn.  Update declarations per above.
2369         * incremental.h (Sized_relobj_incr::do_local_symbol_value): New
2370         function.
2371         (Sized_relobj_incr::do_local_plt_offset): New function.
2372         * copy-relocs.cc (Copy_relocs::Copy_reloc_entry::emit): Call
2373         add_global_generic.
2374
2375 2011-12-17  Cary Coutant  <ccoutant@google.com>
2376
2377         * dwarf_reader.cc (Sized_dwarf_line_info::read_lines): Add casts.
2378         * resolve.cc (Symbol_table::resolve): Likewise.
2379         * i386.cc (Target_i386::do_code_fill): Use char constants for nop
2380         arrays.
2381         * x86_64.cc (Target_x86_64::do_code_fill): Likewise.
2382
2383 2011-12-16  Ian Lance Taylor  <iant@google.com>
2384
2385         * output.h (Output_data_reloc_generic::add): Only call
2386         add_dynamic_reloc if this is a dynamic reloc section.
2387
2388 2011-12-15  H.J. Lu  <hongjiu.lu@intel.com>
2389
2390         PR gold/13505
2391         * target-reloc.h (apply_relocation): Replace <64, false> with
2392         <size, big_endian>.
2393
2394 2011-11-25  Nick Clifton  <nickc@redhat.com>
2395
2396         * po/it.po: New Italian translation.
2397
2398 2011-11-17  Sterling Augustine  <saugustine@google.com>
2399
2400         * script.cc (script_include_directive): Implement.
2401         (read_script_file): New local variables name and search_path. Update
2402         comment. Call IS_ABSOLUTE_PATH and Dirsearch::find_file_in_dir_list.
2403         * dirsearch.h (Dirsearch::find_file_in_dir_list): Declare new method.
2404         * dirsearch.cc (Dirsearch::find_file_in_dir_list): Implement it.
2405
2406 2011-11-11  Sterling Augustine  <saugustine@google.com>
2407
2408         * yyscript.y (section_cmd): Add support for INCLUDE directive.
2409         (file_or_sections_cmd): Likewise.
2410
2411 2011-11-11  Doug Kwan  <dougkwan@google.com>
2412
2413         * arm.cc (Target_arm::do_make_elf_object): Allow executable also
2414         if --just-symbols is given.
2415
2416 2011-11-10  Doug Kwan  <dougkwan@google.com>
2417
2418         PR gold/13362
2419         * arm.cc (Target_arm::Relocate::relocate_tls): Do unaligned accesses
2420         when processing data relocs.
2421         * reloc.h (Relocate_functions::rel_unaligned): New method.
2422         (Relocate_functions::pcrel_unaligned): Ditto.
2423         (Relocate_functions::rel32_unaligned): Ditto.
2424         (Relocate_functions::pcrel32_unaligned): Ditto.
2425
2426 2011-11-09  Doug Kwan  <dougkwan@google.com>
2427
2428         PR gold/13362
2429         * arm.cc (Arm_scan_relocatable_relocs::Default_scan_relocatable_relocs):
2430         Use unaligned 4-byte relocs for static 32-bit data as required by EABI.
2431         * reloc.h (Relocatable_relocs::Reloc_strategy): New enum
2432         RELOC_ADJUST_FOR_SECTION_4_UNALIGNED.
2433         (Relocate_functions::rel_unaligned): New.
2434         (Relocate_functions::rel32_unaligned): New.
2435         * target-reloc.h (relocate_for_relocatable): Add code to handle
2436         RELOC_ADJUST_FOR_SECTION_4_UNALIGNED.
2437         * testsuite/Makefile.am (arm_unaligned_reloc_r.stdout,
2438         arm_unaligned_reloc_r): New targets.
2439         * testsuite/Makefile.in: Regenerate.
2440         * arm_unaligned_reloc.sh: Check unaligned relocs in relocatable
2441         linking.
2442
2443 2011-11-02  Ian Lance Taylor  <iant@google.com>
2444
2445         * configure.ac: Add --with-lib-path option.  Define LIB_PATH and
2446         NATIVE_LINKER.
2447         * Makefile.am (AM_CPPFLAGS): Define TOOLLIBDIR.
2448         * options.cc (General_options::finalize): Use library search path
2449         from configure script if specified.  If not native and no sysroot,
2450         only search TOOLLIBDIR.
2451         * options.h (Search_directory::Search_directory): Change name to
2452         const std::string&.
2453         (General_options::add_to_library_path_with_sysroot): Change arg to
2454         const std::string&.
2455         * configure, Makefile.in, config.in: Rebuild.
2456
2457 2011-11-02  Matthew Gretton-Dann  <matthew.gretton-dann@arm.com>
2458
2459         * arm.cc (Target_arm::may_use_v5t_interworking): Check whether
2460         we are working around the ARM1176 Erratum.
2461         * options.h (General_options::fix_arm1176): Add option.
2462         * testsuite/Makefile.am: Add testcases, and keep current ones
2463         working.
2464         * testsuite/Makefile.in: Regenerate.
2465         * testsuite/arm_fix_1176.s: New file.
2466         * testsuite/arm_fix_1176.sh: Likewise.
2467
2468 2011-11-02  Matthew Gretton-Dann  <matthew.gretton-dann@arm.com>
2469
2470         * arm.cc (Target_arm::Target_arm): Remove initialisation of
2471         may_use_blx_.
2472         (Target_arm::may_use_blx): Remove method.
2473         (Target_arm::set_may_use_blx): Likewise.
2474         (Target_arm::may_use_v4t_interworking): New method.
2475         (Target_arm::may_use_v5t_interworking): Likewise.
2476         (Target_arm::may_use_blx_): Remove member variable.
2477         (Arm_relocate_functions::arm_branch_common): Check for v5T
2478         interworking.
2479         (Arm_relocate_functions::thumb_branch_common): Likewise.
2480         (Reloc_stub::stub_type_for_reloc): Likewise.
2481         (Target_arm::do_finalize_sections): Correct interworking checks.
2482         * testsuite/Makefile.am: Add new tests.
2483         * testsuite/Makefile.in: Regenerate.
2484         * testsuite/arm_farcall_arm_arm.s: New test.
2485         * testsuite/arm_farcall_arm_arm.sh: Likewise.
2486         * testsuite/arm_farcall_arm_thumb.s: Likewise.
2487         * testsuite/arm_farcall_arm_thumb.sh: Likewise.
2488         * testsuite/arm_farcall_thumb_arm.s: Likewise.
2489         * testsuite/arm_farcall_thumb_arm.sh: Likewise.
2490         * testsuite/arm_farcall_thumb_thumb.s: Likewise.
2491         * testsuite/arm_farcall_thumb_thumb.sh: Likewise.
2492
2493 2011-10-31  Cary Coutant  <ccoutant@google.com>
2494
2495         PR gold/13023
2496         * expression.cc (Expression::eval_with_dot): Add
2497         is_section_dot_assignment parameter.
2498         (Expression::eval_maybe_dot): Likewise.  Adjust value when rhs is
2499         absolute and assigning to dot within a section.
2500         * script-sections.cc
2501         (Output_section_element_assignment::set_section_addresses): Pass
2502         dot_section to set_if_absolute.
2503         (Output_section_element_dot_assignment::finalize_symbols): Pass TRUE
2504         as is_section_dot_assignment flag to eval_with_dot.
2505         (Output_section_element_dot_assignment::set_section_addresses):
2506         Likewise.
2507         * script.cc (Symbol_assignment::set_if_absolute): Add dot_section
2508         parameter.  Also set value if relative to dot_section; set the
2509         symbol's output_section.
2510         * script.h (Expression::eval_with_dot): Add is_section_dot_assignment
2511         parameter.  Adjust all callers.
2512         (Expression::eval_maybe_dot): Likewise.
2513         (Symbol_assignment::set_if_absolute): Add dot_section parameter.
2514         Adjust all callers.
2515         * testsuite/script_test_2.t: Test assignment of an absolute value
2516         to dot within an output section element.
2517
2518 2011-10-31  Cary Coutant  <ccoutant@google.com>
2519
2520         * options.h (class General_options): Add --[no-]gnu-unique options.
2521         * symtab.cc (Symbol_table::sized_write_globals): Convert
2522         STB_GNU_UNIQUE to STB_GLOBAL if --no-gnu-unique.
2523
2524 2011-10-31  Cary Coutant  <ccoutant@google.com>
2525
2526         PR gold/13359
2527         * i386.cc (Target_i386::Relocate::relocate_tls): Remove
2528         unnecessary assertion.
2529         * x86_64.cc (Target_x86_64::Relocate::relocate_tls): Likewise.
2530
2531 2011-10-31 Sriraman Tallam  <tmsriram@google.com>
2532
2533         * symtab.h (Symbol_table::gc_mark_symbol_for_shlib): Rename to
2534         gc_mark_symbol.
2535         * symtab.cc (Symbol_table::gc_mark_symbol_for_shlib): Rename to
2536         gc_mark_symbol.
2537         Change to just keep the section associated with symbol.
2538         (Symbol_table::add_from_relobj): Mark symbols as not garbage when
2539         they are externally visible and --export-dynamic is turned on.
2540         (Symbol_table::gc_mark_dyn_syms): Call gc_mark_symbol.
2541
2542 2011-10-19  Ian Lance Taylor  <iant@google.com>
2543
2544         PR gold/13163
2545         * script-sections.cc
2546         (Output_section_element_dot_assignment::needs_output_section): New
2547         function.
2548
2549 2011-10-19  Ian Lance Taylor  <iant@google.com>
2550
2551         PR gold/13204
2552         * layout.cc (Layout::segment_precedes): Don't assert failure if a
2553         --section-start option was seen.
2554         * options.h (General_options::any_section_start): New function.
2555
2556 2011-10-18  David S. Miller  <davem@davemloft.net>
2557
2558         PR binutils/13301
2559         * sparc.cc (Target_sparc::Relocate::reloc_adjust_addr_): New
2560         member to track relocation locations that have moved during TLS
2561         reloc optimizations.
2562         (Target_sparc::Relocate::Relocate): Initialize to NULL.
2563         (Target_sparc::Relocate::relocate): Adjust view down by 4
2564         bytes if it matches reloc_adjust_addr_.
2565         (Target_sparc::Relocate::relocate_tls): Always move the
2566         __tls_get_addr call delay slot instruction forward 4 bytes when
2567         performing relaxation.
2568
2569 2011-10-18  Cary Coutant  <ccoutant@google.com>
2570
2571         * output.cc (posix_fallocate): Return 0 on success, errno on failure.
2572         (Output_file::map_no_anonymous): Check for non-zero
2573         return code from posix_fallocate.
2574
2575 2011-10-17  Cary Coutant  <ccoutant@google.com>
2576
2577         PR gold/13245
2578         * plugin.cc (is_visible_from_outside): Check for symbols
2579         referenced from dynamic objects.
2580         * resolve.cc (Symbol_table::resolve): Don't count references
2581         from dynamic objects as references from real ELF files.
2582         * testsuite/plugin_test_2.sh: Adjust expected result.
2583
2584 2011-10-17  Cary Coutant  <ccoutant@google.com>
2585
2586         * gold.cc: Include timer.h.
2587         (queue_middle_tasks): Stamp time.
2588         (queue_final_tasks): Likewise.
2589         * main.cc (main): Store timer in parameters.  Print timers
2590         for each pass.
2591         * parameters.cc (Parameters::Parameters): Initialize timer_.
2592         (Parameters::set_timer): New function.
2593         (set_parameters_timer): New function.
2594         * parameters.h (Parameters::set_timer): New function.
2595         (Parameters::timer): New function.
2596         (Parameters::timer_): New data member.
2597         (set_parameters_timer): New function.
2598         * timer.cc (Timer::stamp): New function.
2599         (Timer::get_pass_time): New function.
2600         * timer.h (Timer::stamp): New function.
2601         (Timer::get_pass_time): New function.
2602         (Timer::pass_times_): New data member.
2603
2604 2011-10-17  Cary Coutant  <ccoutant@google.com>
2605
2606         * readsyms.cc (Read_symbols::run): Don't queue an unblocker
2607         task for members of lib groups.
2608
2609 2011-10-17  Cary Coutant  <ccoutant@google.com>
2610
2611         PR gold/13288
2612         * fileread.cc (File_read::find_view): Add assert.
2613         (File_read::make_view): Move bounds check (replace with assert)...
2614         (File_read::find_or_make_view): ... to here.
2615
2616 2011-10-12  Cary Coutant  <ccoutant@google.com>
2617
2618         * output.cc (Output_file::open_base_file): Handle case where
2619         ::read returns less than requested size.
2620
2621 2011-10-10  Cary Coutant  <ccoutant@google.com>
2622
2623         * incremental.cc (Sized_relobj_incr::Sized_relobj_incr):
2624         Initialize defined_count_.
2625         (Sized_relobj_incr::do_add_symbols): Count defined symbols.
2626         (Sized_relobj_incr::do_get_global_symbol_counts): Rewrite.
2627         (Sized_incr_dynobj::Sized_incr_dynobj): Initialize defined_count_.
2628         (Sized_incr_dynobj::do_add_symbols): Count defined symbols.
2629         (Sized_incr_dynobj::do_get_global_symbol_counts): Rewrite.
2630         * incremental.h (Sized_relobj_incr::defined_count_): New data
2631         member.
2632         (Sized_incr_dynobj::defined_count_): New data member.
2633         * plugin.cc (Sized_pluginobj::do_get_global_symbol_counts):
2634         Return zeroes instead of internal error.
2635
2636 2011-10-10  Cary Coutant  <ccoutant@google.com>
2637
2638         PR gold/13249
2639         * output.cc (Output_reloc::Output_reloc): Add use_plt_offset flag.
2640         (Output_reloc::symbol_value): Return PLT offset if flag is set.
2641         * output.h (class Output_reloc): Add use_plt_offset flag.
2642         (Output_reloc::type_): Adjust size of bit field.
2643         (Output_reloc::use_plt_offset_): New bit field.
2644         (class Output_data_reloc): Adjust all calls to Output_reloc_type.
2645         (Output_data_reloc::add_local_relative): (RELA only) Add use_plt_offset
2646         flag.  Adjust all callers.
2647         * x86_64.cc (Target_x86_64::Scan::local): Check for IFUNC when
2648         creating RELATIVE relocations.
2649
2650 2011-10-10  Nick Clifton  <nickc@redhat.com>
2651
2652         * po/es.po: Updated Spanish translation.
2653         * po/fi.po: Updated Finnish translation.
2654
2655 2011-10-03   Diego Novillo  <dnovillo@google.com>
2656
2657         * options.cc (parse_uint): Fix dereference of RETVAL.
2658
2659 2011-09-29  Sriraman Tallam  <tmsriram@google.com>
2660
2661         * layout.h (section_order_map_): New member.
2662         (get_section_order_map): New member function.
2663         * output.cc (Output_section::add_input_section): Check for patterns
2664         only when --section-ordering-file is specified.
2665         * gold.cc (queue_middle_tasks): Delay updating order of sections till
2666         output_sections have been formed.
2667         * layout.cc (Layout_Layout): Initialize section_order_map_.
2668         * plugin.cc (update_section_order): Store order in order_map. Do not
2669         update the order.
2670         * testsuite/Makefile.am: Add test case for plugin_final_layout.
2671         * testsuite/Makefile.in: Regenerate.
2672         * testsuite/plugin_section_order.c: New file.
2673         * testsuite/plugin_final_layout.cc: New file.
2674         * testsuite/plugin_final_layout.sh: New file.
2675
2676 2011-09-29  Cary Coutant  <ccoutant@google.com>
2677
2678         * incremental.cc (Sized_incremental_binary::do_process_got_plt):
2679         Check for NULL.
2680         * symtab.cc (Symbol_table::add_from_relobj): Ignore version
2681         symbols during incremental update.
2682         (Symbol_table::add_from_dynobj): Likewise.
2683
2684 2011-09-27  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
2685             Ian Lance Taylor  <iant@google.com>
2686
2687         * symtab.cc (Symbol_table::define_special_symbol): Always
2688         canonicalize version string.
2689
2690 2011-09-26  Cary Coutant  <ccoutant@google.com>
2691
2692         * gold.cc (queue_initial_tasks): Move option checks ...
2693         * options.cc (General_options::finalize): ... to here. Disable
2694         some options; make others fatal.
2695
2696 2011-09-26  Cary Coutant  <ccoutant@google.com>
2697
2698         gcc PR lto/47247
2699         * plugin.cc (get_symbols_v2): New function.
2700         (Plugin::load): Add LDPT_GET_SYMBOLS_V2.
2701         (is_referenced_from_outside): New function.
2702         (Pluginobj::get_symbol_resolution_info): Add version parameter, return
2703         LDPR_PREVAILING_DEF_IRONLY_EXP when using new version.
2704         (get_symbols): Pass version parameter.
2705         (get_symbols_v2): New function.
2706         * plugin.h (Pluginobj::get_symbol_resolution_info): Add version
2707         parameter.
2708         * testsuite/plugin_test.c (get_symbols_v2): New static variable.
2709         (onload): Add LDPT_GET_SYMBOLS_V2.
2710         (all_symbols_read_hook): Use get_symbols_v2; check for
2711         LDPR_PREVAILING_DEF_IRONLY_EXP.
2712         * testsuite/plugin_test_3.sh: Update expected results.
2713
2714 2011-09-23  Simon Baldwin  <simonb@google.com>
2715
2716         * configure.ac: Add new --with-gold-ldadd and --with-gold-ldflags
2717         configuration options.
2718         * configure: Regenerate.
2719         * Makefile.am: Handle GOLD_LDADD and GOLD_LDFLAGS.
2720         * Makefile.in: Regenerate.
2721         * testsuite/Makefile.in: Regenerate.
2722
2723 2011-09-19  Sriraman Tallam  <tmsriram@google.com>
2724
2725         * plugin.h (should_defer_layout): Modify to check for any_claimed_.
2726
2727 2011-09-19  Cary Coutant  <ccoutant@google.com>
2728
2729         * incremental.cc (can_incremental_update): Fix typo in comment.
2730         * incremental.h (can_incremental_update): Likewise.
2731
2732 2011-09-18  Cary Coutant  <ccoutant@google.com>
2733
2734         * incremental.cc (can_incremental_update): New function.
2735         * incremental.h (can_incremental_update): New function.
2736         * layout.cc (Layout::init_fixed_output_section): Call it.
2737         (Layout::make_output_section): Don't allow patch space in .eh_frame.
2738         * object.cc (Sized_relobj_file::do_layout): Call
2739         can_incremental_update.
2740
2741 2011-09-13  Cary Coutant  <ccoutant@google.com>
2742
2743         * configure.ac: Check for glibc support for gnu_indirect_function
2744         support with static linking, setting automake conditional
2745         IFUNC_STATIC.
2746         * Makefile.in: Regenerate.
2747         * configure: Regenerate.
2748
2749         * testsuite/Makefile.am (ifuncmain1static, ifuncmain2static)
2750         (ifuncmain4static, ifuncmain5static, ifuncmain7static): Add check
2751         for IFUNC_STATIC.
2752         * testsuite/Makefile.in: Regenerate.
2753
2754 2011-09-13  Cary Coutant  <ccoutant@google.com>
2755
2756         * incremental.cc (Sized_relobj_incr::do_layout): Call
2757         report_comdat_group for kept comdat sections.
2758         * testsuite/Makefile.am (incremental_comdat_test_1): New test.
2759         * testsuite/Makefile.in: Regenerate.
2760         * testsuite/incr_comdat_test_1.cc: New source file.
2761         * testsuite/incr_comdat_test_2_v1.cc: New source file.
2762         * testsuite/incr_comdat_test_2_v2.cc: New source file.
2763         * testsuite/incr_comdat_test_2_v3.cc: New source file.
2764
2765 2011-09-13  Ian Lance Taylor  <iant@google.com>
2766
2767         * object.cc (Sized_relobj_file::do_layout): Remove unused local
2768         variable external_symbols_offset.
2769
2770 2011-09-12  Ian Lance Taylor  <iant@google.com>
2771
2772         * object.cc (Sized_relobj_file::do_layout): Remove assertion which
2773         triggered if object has no symbols.
2774
2775 2011-09-09  David S. Miller  <davem@davemloft.net>
2776
2777         * output.cc (Output_fill_debug_info::do_write): Use Swap_unaligned.
2778         (Output_fill_debug_line::do_write): Likewise.
2779
2780 2011-08-29  Cary Coutant  <ccoutant@google.com>
2781
2782         * output.cc: (Output_fill_debug_info::do_minimum_hole_size): Add
2783         casts to match formatting specs.
2784         (Output_fill_debug_line::do_minimum_hole_size): Likewise.
2785
2786 2011-08-26  Cary Coutant  <ccoutant@google.com>
2787
2788         * layout.cc (Free_list::allocate): Provide guarantee of minimum
2789         remaining hole size when allocating.
2790         (Layout::make_output_section): Set fill methods for debug sections.
2791         * layout.h (Free_list::Free_list_node): Move from private to
2792         public.
2793         (Free_list::set_min_hole_size): New function.
2794         (Free_list::begin, Free_list::end): New functions.
2795         (Free_list::min_hole_): New data member.
2796         * output.cc: Include dwarf.h.
2797         (Output_fill_debug_info::do_minimum_hole_size): New function.
2798         (Output_fill_debug_info::do_write): New function.
2799         (Output_fill_debug_line::do_minimum_hole_size): New function.
2800         (Output_fill_debug_line::do_write): New function.
2801         (Output_section::Output_section): Initialize new data member.
2802         (Output_section::set_final_data_size): Ensure patch space is larger
2803         than minimum hole size.
2804         (Output_section::do_write): Fill holes in debug sections.
2805         * output.h (Output_fill): New class.
2806         (Output_fill_debug_info): New class.
2807         (Output_fill_debug_line): New class.
2808         (Output_section::set_free_space_fill): New function.
2809         (Output_section::free_space_fill_): New data member.
2810         * testsuite/Makefile.am (incremental_test_3): Add
2811         --incremental-patch option.
2812         (incremental_test_4): Likewise.
2813         (incremental_test_5): Likewise.
2814         (incremental_test_6): Likewise.
2815         (incremental_copy_test): Likewise.
2816         (incremental_common_test_1): Likewise.
2817         * testsuite/Makefile.in: Regenerate.
2818
2819 2011-08-26  Nick Clifton  <nickc@redhat.com>
2820
2821         * po/es.po: Updated Spanish translation.
2822
2823 2011-08-01  Cary Coutant  <ccoutant@google.com>
2824
2825         * gold/testsuite/Makefile.am (justsyms_exec): New testcase.
2826         * gold/testsuite/Makefile.in: Regenerate.
2827         * gold/testsuite/justsyms_exec.c: New source file.
2828         * gold/testsuite/justsyms_lib.c: New source file.
2829
2830 2011-08-01  Cary Coutant  <ccoutant@google.com>
2831
2832         * layout.cc (Layout::set_segment_offsets): Don't realign text
2833         segment if -Ttext was specified.
2834         * object.cc (Sized_relobj_file::Sized_relobj_file): Store the ELF
2835         file type.
2836         * object.h (Sized_relobj_file::e_type): New function.
2837         (Sized_relobj_file::e_type_): New data member.
2838         * symtab.cc (Symbol_table::add_from_relobj): Don't add section
2839         base address for ET_EXEC files.
2840         * target.cc (Target::do_make_elf_object_implementation): Allow
2841         ET_EXEC files with --just-symbols option.
2842
2843 2011-07-28  Cary Coutant  <ccoutant@google.com>
2844
2845         * workqueue-internal.h (Workqueue_threader::should_cancel_thread):
2846         Add thread_number parameter.
2847         (Workqueue_threader_threadpool::should_cancel_thread): Likewise.
2848         * workqueue-threads.cc
2849         (Workqueue_threader_threadpool::should_cancel_thread): Cancel
2850         current thread if its thread number is greater than desired thread
2851         count.
2852         * workqueue.cc (Workqueue_threader_single::should_cancel_thread):
2853         Add thread_number parameter.
2854         (Workqueue::should_cancel_thread): Likewise.
2855         (Workqueue::find_runnable_or_wait): Pass thread_number to
2856         should_cancel_thread.
2857         * workqueue.h (Workqueue::should_cancel_thread): Add thread_number
2858         parameter.
2859
2860 2011-07-22  Sriraman Tallam  <tmsriram@google.com>
2861
2862         * symtab.cc (Symbol_table::add_from_relobj): Mark symbol as referenced
2863         only after checking if it cannot be forced local.
2864         * symtab.h (is_externally_visible): Check if the symbol is not forced
2865         local.
2866
2867 2011-07-15  Ian Lance Taylor  <iant@google.com>
2868
2869         * options.h (class General_options): Add --print-output-format.
2870         Move -EL next to -EB, for  better --help output.
2871         * target-select.cc: Include <cstdio>, "options.h", and
2872         "parameters.h".
2873         (Target_selector::do_target_bfd_name): New function.
2874         (print_output_format): New function.
2875         * target-select.h (class Target_selector): Update declarations.
2876         (Target_selector::target_bfd_name): New function.
2877         (print_output_format): Declare.
2878         * main.cc: Include "target-select.h".
2879         (main): Handle --print-output-format.
2880         * gold.cc: Include "target-select.h".
2881         (queue_initial_tasks): Handle --print-output-format when there are
2882         no input files.
2883         * parameters.cc (parameters_force_valid_target): Give a better
2884         error message if -EB/-EL does not match target.
2885         * freebsd.h (Target_selector_freebsd::do_target_bfd_name): New
2886         function.
2887
2888 2011-07-15  Ian Lance Taylor  <iant@google.com>
2889
2890         * i386.cc (class Output_data_plt_i386): Add layout_ field.
2891         (Output_data_plt_i386::Output_data_plt_i386): Initialize layout_.
2892         (Output_data_plt_i386::do_write): Write address of .dynamic
2893         section to first entry in .got.plt section.
2894         * x86_64.cc (class Output_data_plt_x86_64): Add layout_ field.
2895         (Output_data_plt_x86_64::Output_data_plt_x86_64) [both versions]:
2896         Initialize layout_.
2897         (Output_data_plt_x86_64::do_write): Write address of .dynamic
2898         section to first entry in .got.plt section.
2899         * layout.h (Layout::dynamic_section): New function.
2900
2901 2011-07-13  Sriraman Tallam  <tmsriram@google.com>
2902
2903         * archive.cc (Archive::get_elf_object_for_member): Add extra parameter
2904         to claim_file call.
2905         * layout.cc (Layout::Layout): Initialize section_ordering_specified_,
2906         input_section_position_, and input_section_glob_.
2907         (read_layout_from_file): Call function section_ordering_specified.
2908         * layout.h (is_section_ordering_specified): New function.
2909         (section_ordering_specified): New function.
2910         (section_ordering_specified_): New boolean member.
2911         * main.cc(main): Call load_plugins after layout object is defined.
2912         * output.cc (Output_section::add_input_section): Use
2913         function section_ordering_specified to check if section ordering is
2914         needed.
2915         * output.cc (Output_section::add_relaxed_input_section): Use
2916         function section_ordering_specified to check if section ordering is
2917         needed.
2918         (Output_section::update_section_layout): New function.
2919         (Output_section::sort_attached_input_sections): Check if input section
2920         must be reordered.
2921         * output.h (Output_section::update_section_layout): New function.
2922         * plugin.cc (get_section_count): New function.
2923         (get_section_type): New function.
2924         (get_section_name): New function.
2925         (get_section_contents): New function.
2926         (update_section_order): New function.
2927         (allow_section_ordering): New function.
2928         (Plugin::load): Add the new interfaces to the transfer vector.
2929         (Plugin_manager::load_plugins): New parameter.
2930         (Plugin_manager::all_symbols_read): New parameter.
2931         (Plugin_manager::claim_file): New parameter. Save the elf object for
2932         unclaimed objects.
2933         (Plugin_manager::get_elf_object): New function.
2934         (Plugin_manager::get_view): Change to directly use the bool to check
2935         if get_view is called from claim_file_hook.
2936         * plugin.h (input_objects): New function
2937         (Plugin__manager::load_plugins): New parameter.
2938         (Plugin_manager::claim_file): New parameter.
2939         (Plugin_manager::get_elf_object): New function.
2940         (Plugin_manager::in_claim_file_handler): New function.
2941         (Plugin_manager::in_claim_file_handler_): New member.
2942         (layout): New function.
2943         * readsyms.cc (Read_symbols::do_read_symbols): Call the claim_file
2944         handler with an extra parameter. Make the elf object before calling
2945         claim_file handler.
2946         * testsuite/plugin_test.c (get_section_count): New function pointer.
2947         (get_section_type): New function pointer.
2948         (get_section_name): New function pointer.
2949         (get_section_contents): New function pointer.
2950         (update_section_order): New function pointer.
2951         (allow_section_ordering): New function pointer.
2952         (onload): Check if the new interfaces exist.
2953
2954 2011-07-13  Ian Lance Taylor  <iant@google.com>
2955
2956         * i386.cc (Target_i386::got_section): If -z now, make .got.plt a
2957         relro section.
2958         * x86_64.cc (Target_x86_64::got_section): Likewise.
2959         * testsuite/Makefile.am (check_PROGRAMS): Add relro_now_test.
2960         (relro_now_test_SOURCES): New variable.
2961         (relro_now_test_DEPENDENCIES): New variable.
2962         (relro_now_test_LDFLAGS): New variable.
2963         (relro_now_test_LDADD): New variable.
2964         (relro_now_test.so): New target.
2965         * testsuite/Makefile.in: Rebuild.
2966
2967 2011-07-12  Ian Lance Taylor  <iant@google.com>
2968
2969         PR gold/12980
2970         * i386.cc (Target_i386::Scan::global): For a GOT reloc, use a
2971         GLOB_DAT relocation rather than a RELATIVE relocation for a
2972         protected symbol when creating a shared library.
2973         * x86_64.cc (Target_x86_64::Scan::global): Likewise.
2974         * testsuite/protected_1.cc (f2, get_f2_addr): New functions.
2975         * testsuite/protected_main_1.cc (main): Test that protected
2976         function has same address.
2977
2978 2011-07-11  Ian Lance Taylor  <iant@google.com>
2979
2980         PR gold/12979
2981         * options.h (class General_options): Add -Bgroup.
2982         * options.cc (General_options::finalize): If -Bgroup is set,
2983         default to --unresolved-symbols=report-all.
2984         * layout.cc (Layout::finish_dynamic_section): Implement -Bgroup.
2985         * target-reloc.h (issue_undefined_symbol_error): Handle
2986         --unresolved-symbols=report-all.
2987
2988 2011-07-08  Ian Lance Taylor  <iant@google.com>
2989
2990         PR gold/11985
2991         * layout.cc (Layout::create_initial_dynamic_sections): Don't crash
2992         if linker script discards key sections.
2993         (Layout::create_dynamic_symtab): Likewise.
2994         (Layout::assign_local_dynsym_offsets): Likewise.
2995         (Layout::sized_create_version_sections): Likewise.
2996         (Layout::create_interp): Likewise.
2997         (Layout::finish_dynamic_section): Likewise.
2998         (Layout::set_dynamic_symbol_size): Likewise.
2999
3000 2011-07-08  Ian Lance Taylor  <iant@google.com>
3001
3002         PR gold/12386
3003         * options.h (class General_options): Add --unresolved-symbols.
3004         * target-reloc.h (issue_undefined_symbol_error): Check
3005         --unresolved-symbols.  Add comments.
3006
3007 2011-07-08  Ian Lance Taylor  <iant@google.com>
3008
3009         * testsuite/odr_violation2.cc (Ordering::operator()): Make
3010         expression more complex.
3011
3012 2011-07-08  Ian Lance Taylor  <iant@google.com>
3013
3014         PR gold/11317
3015         * target-reloc.h (issue_undefined_symbol_error): New inline
3016         function, broken out of relocate_section.
3017         (relocate_section): Call issue_undefined_symbol_error.
3018         * i386.cc (Target_i386::Relocate::relocate_tls): Don't crash if
3019         there is no TLS segment if we are about to issue an undefined
3020         symbol error.
3021         * x86_64.cc (Target_x86_64::relocate_tls): Likewise.
3022
3023 2011-07-08  Ian Lance Taylor  <iant@google.com>
3024
3025         PR gold/12279
3026         * resolve.cc (Symbol_table::should_override): Add fromtype
3027         parameter.  Change all callers.  Give error when linking together
3028         TLS and non-TLS symbol.
3029         (Symbol_table::should_override_with_special): Add fromtype
3030         parameter.  Change all callers.
3031         * i386.cc (Target_i386::Relocate::relocate_tls): Don't crash if
3032         there is no TLS segment if we have reported some errors.
3033         * x86_64.cc (Target_x86_64::relocate_tls): Likewise.
3034
3035 2011-07-08  Ian Lance Taylor  <iant@google.com>
3036
3037         PR gold/12372
3038         * target.h (Target::plt_address_for_global): New function.
3039         (Target::plt_address_for_local): New function.
3040         (Target::plt_section_for_global): Remove.
3041         (Target::plt_section_for_local): Remove.
3042         (Target::do_plt_address_for_global): New virtual function.
3043         (Target::do_plt_address_for_local): New virtual function.
3044         (Target::do_plt_section_for_global): Remove.
3045         (Target::do_plt_section_for_local): Remove.
3046         (Target::register_global_plt_entry): Add Symbol_table and Layout
3047         parameters.
3048         * output.cc (Output_data_got::Got_entry::write): Use
3049         plt_address_for_global and plt_address_for_local.
3050         * layout.cc (Layout::add_target_dynamic_tags): Use size and
3051         address of output section.
3052         * i386.cc (class Output_data_plt_i386): Add irelative_rel_,
3053         got_irelative_, and irelative_count_ fields.  Update
3054         declarations.
3055         (Output_data_plt_i386::has_irelative_section): New function.
3056         (Output_data_plt_i386::entry_count): Add irelative_count_.
3057         (Output_data_plt_i386::set_final_data_size): Likewise.
3058         (class Target_i386): Add got_irelative_ and rel_irelative_
3059         fields.  Update declarations.
3060         (Target_i386::Target_i386): Initialize new fields.
3061         (Target_i386::do_plt_address_for_global): New function replacing
3062         do_plt_section_for_global.
3063         (Target_i386::do_plt_address_for_local): New function replacing
3064         do_plt_section_for_local.
3065         (Target_i386::got_section): Create got_irelative_.
3066         (Target_i386::rel_irelative_section): New function.
3067         (Output_data_plt_i386::Output_data_plt_i386): Initialize new
3068         fields.  Don't define __rel_iplt_{start,end}.
3069         (Output_data_plt_i386::add_entry): Add symtab and layout
3070         parameters.  Change all callers.  Use different PLT and GOT for
3071         IFUNC symbols.
3072         (Output_data_plt_i386::add_local_ifunc_entry): Add symtab and
3073         layout parameters.  Change all callers.  Use different PLT and
3074         GOT.
3075         (Output_data_plt_i386::rel_tls_desc): Fix formatting.
3076         (Output_data_plt_i386::rel_irelative): New function.
3077         (Output_data_plt_i386::address_for_global): New function.
3078         (Output_data_plt_i386::address_for_local): New function.
3079         (Output_data_plt_i386::do_write): Write out IRELATIVE area.  Use
3080         IRELATIVE GOT when changing IFUNC GOT entries.
3081         (Target_i386::Scan::global): Use IRELATIVE GOT for IRELATIVE
3082         reloc.
3083         (Target_i386::do_finalize_sections): Create the __rel_iplt symbols
3084         if we didn't create an IRELATIVE GOT.
3085         (Target_i386::Relocate::relocate): Use plt_address_for_global and
3086         plt_address_for_local.
3087         (Target_i386::do_dynsym_value): Use plt_address_for_global.
3088         * x86_64.cc (class Output_data_plt_x86_64): Add irelative_rel_,
3089         got_irelative_, and irelative_count_ fields.  Update
3090         declarations.
3091         (Output_data_plt_x86_64::Output_data_plt_x86_64) [both versions]:
3092         Initialize new fields.  Remove symtab parameter.  Change all
3093         callers.
3094         (Output_data_plt_x86_64::get_tlsdesc_plt_offset): Add
3095         irelative_count_.
3096         (Output_data_plt_x86_64::has_irelative_section): New function.
3097         (Output_data_plt_x86_64::entry_count): Add irelative_count_.
3098         (class Target_x86_64): Add got_irelative_ and rel_irelative_
3099         fields.  Update declarations.
3100         (Target_x86_64::Target_x86_64): Initialize new fields.
3101         (Target_x86_64::do_plt_address_for_global): New function replacing
3102         do_plt_section_for_global.
3103         (Target_x86_64::do_plt_address_for_local): New function replacing
3104         do_plt_section_for_local.
3105         (Target_x86_64::got_section): Create got_irelative_.
3106         (Target_x86_64::rela_irelative_section): New function.
3107         (Output_data_plt_x86_64::init): Remove symtab parameter.  Change
3108         all callers.  Don't create __rel_iplt_{start,end}.
3109         (Output_data_plt_x86_64::add_entry): Add symtab and layout
3110         parameters.  Change all callers.  Use different PLT and GOT for
3111         IFUNC symbols.
3112         (Output_data_plt_x86_64::add_local_ifunc_entry): Add symtab and
3113         layout parameters.  Change all callers.  Use different PLT and
3114         GOT.
3115         (Output_data_plt_x86_64::add_relocation): Add symtab and layout
3116         parameters.  Change all callers.  Use different PLT and GOT for
3117         IFUNC symbols.
3118         (Output_data_plt_x86_64::rela_tlsdesc): Fix formatting.
3119         (Output_data_plt_x86_64::rela_irelative): New function.
3120         (Output_data_plt_x86_64::address_for_global): New function.
3121         (Output_data_plt_x86_64::address_for_local): New function.
3122         (Output_data_plt_x86_64::set_final_data_size): Likewise.
3123         (Output_data_plt_x86_64::do_write): Write out IRELATIVE area.
3124         (Target_x86_64::init_got_plt_for_update): Create got_irelative_.
3125         (Target_x86_64::register_global_plt_entry): Add symtab and layout
3126         parameters.
3127         (Target_x86_64::Scan::global): Use IRELATIVE GOT for IRELATIVE
3128         reloc.
3129         (Target_x86_64::do_finalize_sections): Create the __rela_iplt
3130         symbols if we didn't create an IRELATIVE GOT.
3131         (Target_x86_64::Relocate::relocate): Use plt_address_for_global and
3132         plt_address_for_local.
3133         (Target_x86_64::do_dynsym_value): Use plt_address_for_global.
3134         * testsuite/ifuncvar1.c: New test file.
3135         * testsuite/ifuncvar2.c: New test file.
3136         * testsuite/ifuncvar3.c: New test file.
3137         * testsuite/Makefile.am (check_PROGRAMS): Add ifuncvar.
3138         (ifuncvar1_pic.o, ifuncvar2_pic.o, ifuncvar.so): New targets.
3139         (ifuncvar_SOURCES, ifuncvar_DEPENDENCIES): New variables.
3140         (ifuncvar_LDFLAGS, ifuncvar_LDADD): New variables.
3141         * testsuite/Makefile.in: Rebuild.
3142
3143 2011-07-07  Cary Coutant  <ccoutant@google.com>
3144
3145         * testsuite/Makefile.am (two_file_test_1_v1_ndebug.o): New target.
3146         (two_file_test_1_ndebug.o): Likewise.
3147         (two_file_test_1b_ndebug.o): Likewise.
3148         (two_file_test_2_ndebug.o): Likewise.
3149         (two_file_test_main_ndebug.o): Likewise.
3150         (incremental_test_2): Link with no-debug versions.
3151
3152 2011-07-06  Cary Coutant  <ccoutant@google.com>
3153
3154         * gold/incremental.cc
3155         (Output_section_incremental_inputs::write_info_blocks): Check for
3156         hidden and internal symbols.
3157
3158 2011-07-06  Cary Coutant  <ccoutant@google.com>
3159
3160         * incremental.cc (Sized_incremental_binary::do_file_has_changed):
3161         Check disposition for startup file.
3162         (Incremental_inputs::report_command_line): Ignore
3163         --incremental-startup-unchanged option.
3164         * options.cc (General_options::parse_incremental_startup_unchanged):
3165         New function.
3166         (General_options::General_options): Initialize new data member.
3167         * options.h (Incremental_disposition): Add INCREMENTAL_STARTUP.
3168         (General_options): Add --incremental-startup-unchanged option.
3169         (General_options::incremental_startup_disposition): New function.
3170         (General_options::incremental_startup_disposition_): New data member.
3171
3172 2011-07-06  Cary Coutant  <ccoutant@google.com>
3173
3174         * incremental.cc (Sized_incremental_binary::setup_readers): Pass
3175         input file index to Script_info ctor.
3176         (Sized_incremental_binary::do_file_has_changed): Find the
3177         command-line argument for files named in scripts.
3178         * incremental.h (Script_info::Script_info): New ctor
3179         with input file index.
3180         (Script_info::input_file_index): New function.
3181         (Script_info::input_file_index_): New data member.
3182         (Incremental_binary::get_library): Add const.
3183         (Incremental_binary::get_script_info): Add const.
3184         * readsyms.cc (Read_member::is_runnable): Check for this_blocker_.
3185         * testsuite/Makefile.am (incremental_test_5): New test case.
3186         (incremental_test_6): New test case.
3187         * testsuite/Makefile.in: Regenerate.
3188
3189 2011-07-06  Cary Coutant  <ccoutant@google.com>
3190
3191         * incremental.cc (Sized_incremental_binary::do_check_inputs): Add
3192         debug output when command lines differ.
3193
3194 2011-07-06  Cary Coutant  <ccoutant@google.com>
3195
3196         * incremental.cc (Incremental_inputs::report_command_line): Ignore
3197         --incremental-patch option.
3198         * layout.cc (Free_list::allocate): Extend allocation beyond original
3199         end if enabled.
3200         (Layout::make_output_section): Mark sections that should get
3201         patch space.
3202         * options.cc (parse_percent): New function.
3203         * options.h (parse_percent): New function.
3204         (DEFINE_percent): New macro.
3205         (General_options): Add --incremental-patch option.
3206         * output.cc (Output_section::Output_section): Initialize new data
3207         members.
3208         (Output_section::add_input_section): Print section name when out
3209         of patch space.
3210         (Output_section::add_output_section_data): Likewise.
3211         (Output_section::set_final_data_size): Add patch space when
3212         doing --incremental-full.
3213         (Output_section::do_reset_address_and_file_offset): Remove patch
3214         space.
3215         (Output_segment::set_section_list_addresses): Print debug output
3216         only if --incremental-update.
3217         * output.h (Output_section::set_is_patch_space_allowed): New function.
3218         (Output_section::is_patch_space_allowed_): New data member.
3219         (Output_section::patch_space_): New data member.
3220         * parameters.cc (Parameters::incremental_full): New function.
3221         * parameters.h (Parameters::incremental_full): New function
3222         * testsuite/Makefile.am (incremental_test_2): Add test for
3223         --incremental-patch option.
3224         * testsuite/Makefile.in: Regenerate.
3225         * testsuite/two_file_test_1_v1.cc (t1, t2, t3): Add comments.
3226         (t18): Remove function body.
3227
3228 2011-07-05  Doug Kwan  <dougkwan@google.com>
3229
3230         PR gold/12771
3231         * arm.cc (Arm_relocate_functions::abs8): Use int32_t for addend and
3232         Arm_Address type for relocation result.
3233         (Arm_relocate_functions::abs16): Use unaligned access.  Also fix
3234         overflow check.
3235         (Arm_relocate_functions::abs32): Use unaligned access.
3236         (Arm_relocate_functions::rel32): Ditto.
3237         (Arm_relocate_functions::prel31): Ditto.
3238         (Arm_exidix_cantunwind::do_fixed_endian_write): Ditto.
3239         * testsuite/Makefile.am: Add new test arm_unaligned_reloc for unaligned
3240         static data relocations.
3241         * testsuite/Makefile.in: Regnerate.
3242         * testsuite/arm_unaligned_reloc.{s,sh}: New files.
3243
3244 2011-07-05  Ian Lance Taylor  <iant@google.com>
3245
3246         PR gold/12392
3247         * i386.cc (Target_i386::do_finalize_sections): Define __rel_iplt
3248         symbols if necessary.
3249         * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
3250
3251 2011-07-05  Ian Lance Taylor  <iant@google.com>
3252
3253         PR gold/12952
3254         * resolve.cc (Symbol::override_base_with_special): Simply override
3255         version with special symbol version, ignoring previous version.
3256
3257 2011-07-05  Ian Lance Taylor  <iant@google.com>
3258
3259         * object.cc (Sized_relobj_file::include_section_group): Add
3260         information to comment about signature location.
3261
3262 2011-07-02  Ian Lance Taylor  <iant@google.com>
3263
3264         PR gold/12957
3265         * options.h (class General_options): Add -f and -F.
3266         * options.cc (General_options::finalize): Fatal error if -f/-F
3267         are used without -shared.
3268         * layout.cc (Layout::finish_dynamic_section): Implement -f/-F.
3269
3270 2011-07-02  Ian Lance Taylor  <iant@google.com>
3271
3272         * dirsearch.cc (Dir_cache::read_files): Ignore ENOTDIR errors.
3273
3274 2011-07-01  Ian Lance Taylor  <iant@google.com>
3275
3276         PR gold/12525
3277         PR gold/12952
3278         * resolve.cc (Symbol::override_base_with_special): Don't override
3279         the version if the overriding symbol has a different name.
3280         * dynobj.cc (Versions::add_def): Add dynpool parameter.  Change
3281         all callers.  If we give an error about an undefined version,
3282         define the base version if necessary.
3283         * dynobj.h (class Versions): Update declaration.
3284         * testsuite/weak_alias_test_5.cc: New file.
3285         * testsuite/weak_alias_test.script: New file.
3286         * testsuite/weak_alias_test_main.cc: Check that versioned_symbol
3287         and versioned_alias have the right value, and call t2.
3288         * testsuite/Makefile.am (weak_alias_test_DEPENDENCIES): Add
3289         weak_alias_test_5.so.
3290         (weak_alias_test_LDADD): Likewise.
3291         (weak_alias_test_5_pic.o, weak_alias_test_5.so): New targets.
3292         * testsuite/Makefile.in: Rebuild.
3293
3294 2011-07-01  Ian Lance Taylor  <iant@google.com>
3295
3296         PR gold/12525
3297         * options.h (class General_options): Support -z notext.
3298         * testsuite/Makefile.am (two_file_shared_1_nonpic.so): Use
3299         -Wl,-z,notext.
3300         (two_file_shared_nonpic.so): Likewise.
3301         (two_file_shared_mixed.so): Likewise.
3302         (two_file_shared_mixed_1.so): Likewise.
3303         (weak_undef_lib_nonpic.so): Likewise.
3304         (alt/weak_undef_lib_nonpic.so): Likewise.
3305         (tls_test_shared_nonpic.so): Likewise.
3306         * testsuite/Makefile.in: Rebuild.
3307
3308 2011-07-01  Ian Lance Taylor  <iant@google.com>
3309
3310         PR gold/12525
3311         * configure.ac: Test whether static linking works, setting
3312         the automake conditional HAVE_STATIC.
3313         * testsuite/Makefile.am: Disable tests using -static if
3314         HAVE_STATIC is not true.
3315         * configure, testsuite/Makefile.in: Rebuild.
3316
3317 2011-07-01  Ian Lance Taylor  <iant@google.com>
3318
3319         PR gold/12525
3320         * ehframe.cc (Eh_frame_hdr::get_fde_pc): Handle DW_EH_PE_datarel.
3321         Assert if we see DW_EH_PE_indirect.
3322         * target.h (Target::ehframe_datarel_base): New function.
3323         (Target::do_ehframe_datarel_base): New target function.
3324         * i386.cc (Target_i386::do_ehframe_datarel_base): New function.
3325         * x86_64.cc (Target_x86_64::do_ehframe_datarel_base): New
3326         function.
3327
3328 2011-07-01  Ian Lance Taylor  <iant@google.com>
3329
3330         PR gold/12571
3331         * options.h (class General_options): Add
3332         --ld-generated-unwind-info.
3333         * ehframe.cc (Fde::write): Add address parameter.  Change all
3334         callers.  If associated with PLT, fill in address and size.
3335         (Cie::set_output_offset): Only add merge mapping if there is an
3336         object.
3337         (Cie::write): Add address parameter.  Change all callers.
3338         (Eh_frame::add_ehframe_for_plt): New function.
3339         * ehframe.h (class Fde): Update declarations.  Move shndx_ and
3340         input_offset_ fields into union u_, with new plt field.
3341         (Fde::Fde): Adjust for new union field.
3342         (Fde::Fde) [Output_data version]: New constructor.
3343         (Fde::add_mapping): Only add merge mapping if there is an object.
3344         (class Cie): Update declarations.
3345         (class Eh_frame): Declare add_ehframe_for_plt.
3346         * layout.cc (Layout::layout_eh_frame): Break out code into
3347         make_eh_frame_section, and call it.
3348         (Layout::make_eh_frame_section): New function.
3349         (Layout::add_eh_frame_for_plt): New function.
3350         * layout.h (class Layout): Update declarations.
3351         * merge.cc (Merge_map::add_mapping): Add assertion.
3352         * i386.cc: Include "dwarf.h".
3353         (class Output_data_plt_i386): Make first_plt_entry,
3354         dyn_first_plt_entry, exec_plt_entry, and dyn_plt_entry const.  Add
3355         plt_eh_frame_cie_size, plt_eh_frame_fde_size, plt_eh_frame_cie,
3356         and plt_eh_frame_fde.
3357         (Output_data_plt_i386::Output_data_plt_i386): Align to 16-byte
3358         boundary.  Call add_eh_frame_for_plt if appropriate.
3359         * x86_64.cc: Include "dwarf.h".
3360         (class Output_data_plt_x86_64): Align to 16-byte boundary.  Make
3361         first_plt_entry, plt_entry and tlsdesc_plt_entry const.  Add
3362         plt_eh_frame_cie_size, plt_eh_frame_fde_size, plt_eh_frame_cie,
3363         and plt_eh_frame_fde.
3364         (Output_data_plt_x86_64::init): Call add_eh_frame_for_plt if
3365         appropriate.
3366
3367 2011-06-29  Ian Lance Taylor  <iant@google.com>
3368
3369         PR gold/12629
3370         * object.cc (Sized_relobj_file::layout_section): Change shdr
3371         parameter to be const.
3372         (Sized_relobj_file::layout_eh_frame_section): New function, broken
3373         out of do_layout.
3374         (Sized_relobj_file::do_layout): Defer .eh_frame sections if
3375         appropriate.  Call layout_eh_frame_section.
3376         (Sized_relobj_file::do_layout_deferred_sections): Handle .eh_frame
3377         sections.
3378         * object.h (class Sized_relobj_file): Update declarations.
3379
3380 2011-06-29  Ian Lance Taylor  <iant@google.com>
3381
3382         PR gold/12652
3383         * script.cc (Token::integer_value): Accept trailing M/m/K/k
3384         modifier.
3385         (Lex::gather_token): Accept trailing M/m/K/k for integers.
3386
3387 2011-06-29  Ian Lance Taylor  <iant@google.com>
3388
3389         PR gold/12675
3390         * object.cc (Sized_relobj_file::check_eh_frame_flags): Check for
3391         SHT_X86_64_UNWIND.
3392         * layout.cc (Layout::layout_eh_frame): Likewise.
3393
3394 2011-06-29  Ian Lance Taylor  <iant@google.com>
3395
3396         PR gold/12695
3397         * layout.cc (Layout::symtab_section_shndx): New function.
3398         * layout.h (class Layout): Declare symtab_section_shndx.
3399         * output.cc (Output_section::write_header): Call it.
3400
3401 2011-06-29  Ian Lance Taylor  <iant@google.com>
3402
3403         PR gold/12818
3404         * symtab.cc (Symbol::should_add_dynsym_entry): Don't add undefined
3405         symbols which are not used in a relocation.
3406
3407 2011-06-28  Ian Lance Taylor  <iant@google.com>
3408
3409         PR gold/12898
3410         * layout.cc (Layout::segment_precedes): Don't crash if a linker
3411         script create indistinguishable segments.
3412         (Layout::set_segment_offsets): Use stable_sort when sorting
3413         segments.  Pass this to Compare_segments constructor.
3414         * layout.h (class Layout): Make segment_precedes non-static.
3415         (class Compare_segments): Change from struct to class.  Add
3416         layout_ field.  Add constructor.
3417         * script-sections.cc
3418         (Script_sections::attach_sections_using_phdrs_clause): Rename
3419         local orphan to is_orphan.  Don't report failure to put empty
3420         section in segment.  On attachment failure, report name of
3421         section, and attach to first PT_LOAD segment.
3422
3423 2011-06-28  Ian Lance Taylor  <iant@google.com>
3424
3425         PR gold/12934
3426         * target-select.cc (Target_selector::Target_selector): Add
3427         emulation parameter.  Change all callers.
3428         (select_target_by_bfd_name): Rename from select_target_by_name.
3429         Change all callers.
3430         (select_target_by_emulation): New function.
3431         (supported_emulation_names): New function.
3432         * target-select.h (class Target_selector): Add emulation_ field.
3433         Update declarations.
3434         (Target_selector::recognize_by_bfd_name): Rename from
3435         recognize_by_name.  Change all callers.
3436         (Target_selector::supported_bfd_names): Rename from
3437         supported_names.  Change all callers.
3438         (Target_selector::recognize_by_emulation): New function.
3439         (Target_selector::supported_emulations): New function.
3440         (Target_selector::emulation): New function.
3441         (Target_selector::do_recognize_by_bfd_name): Rename from
3442         do_recognize_by_name.  Change all callers.
3443         (Target_selector::do_supported_bfd_names): Rename from
3444         do_supported_names.  Change all callers.
3445         (Target_selector::do_recognize_by_emulation): New function.
3446         (Target_selector::do_supported_emulations): New function.
3447         (select_target_by_bfd_name): Change name in declaration.
3448         (select_target_by_emulation): Declare.
3449         (supported_emulation_names): Declare.
3450         * parameters.cc (parameters_force_valid_target): Try to find
3451         target based on emulation from -m option.
3452         * options.h (class General_options): Change doc string for -m.
3453         * options.cc (help): Print emulations.
3454         (General_options::parse_V): Likewise.
3455         * freebsd.h (Target_selector_freebsd::Target_selector_freebsd):
3456         Add emulation parameter.  Change all callers.
3457
3458 2011-06-28  Ian Lance Taylor  <iant@google.com>
3459
3460         * target.h (class Target): Add osabi_ field.
3461         (Target::osabi): New function.
3462         (Target::set_osabi): New function.
3463         (Target::Target): Initialize osabi_.
3464         (Target::do_adjust_elf_header): Make pure virtual.
3465         (Sized_target::do_adjust_elf_header): Declare.
3466         * target.cc (Sized_target::do_adjust_elf_header): New function.
3467         (class Sized_target): Instantiate all versions.
3468         * freebsd.h (class Target_freebsd): Remove.
3469         (Target_selector_freebsd::do_recognize): Call set_osabi on
3470         Target.
3471         (Target_selector_freebsd::do_recognize_by_name): Likewise.
3472         (Target_selector_freebsd::set_osabi): Remove.
3473         * i386.cc (class Target_i386): Inherit from Sized_target rather
3474         than Target_freebsd.
3475         * x86_64.cc (class Target_x86_64): Likewise.
3476
3477 2011-06-28  Ian Lance Taylor  <iant@google.com>
3478
3479         * target.h (Target::can_check_for_function_pointers): Rewrite.
3480         Make non-virtual.
3481         (Target::can_icf_inline_merge_sections): Likewise.
3482         (Target::section_may_have_icf_unsafe_poineters): Likewise.
3483         (Target::Target_info): Add can_icf_inline_merge_sections field.
3484         (Target::do_can_check_for_function_pointers): New virtual
3485         function.
3486         (Target::do_section_may_have_icf_unsafe_pointers): Likewise.
3487         * arm.cc (Target_arm::do_can_check_for_function_pointers): Rename
3488         from can_check_for_function_pointers, move in file.
3489         (Target_arm::do_section_may_have_icf_unsafe_pointers): Rename from
3490         section_may_have_icf_unsafe_poineters, move in file.
3491         (Target_arm::arm_info): Initialize can_icf_inline_merge_sections.
3492         * i386.cc (Target_i386::do_can_check_for_function_pointers):
3493         Rename from can_check_for_function_pointers, move in file.
3494         (Target_i386::can_icf_inline_merge_sections): Remove.
3495         (Target_i386::i386_info): Initialize
3496         can_icf_inline_merge_sections.
3497         * powerpc.cc (Target_powerpc::powerpc_info) [all versions]:
3498         Initialize can_icf_inline_merge_sections.
3499         * sparc.cc (Target_sparc::sparc_info) [both version]: Likewise.
3500         * x86_64.cc (Target_x86_64::do_can_check_for_function_pointers):
3501         Rename from can_check_for_function_pointers, move in file.
3502         (Target_x86_64::can_icf_inline_merge_sections): Remove.
3503         (Target_x86_64::x86_64_info): Initialize
3504         can_icf_inline_merge_sections.
3505         * testsuite/testfile.cc (Target_test::test_target_info):
3506         Likewise.
3507         * icf.cc (get_section_contents): Correct formatting.
3508
3509 2011-06-27  Ian Lance Taylor  <iant@google.com>
3510
3511         * symtab.cc (Symbol::versioned_name): New function.
3512         (Symbol_table::add_to_final_symtab): Use versioned_name when
3513         appropriate.
3514         (Symbol_table::sized_write_symbol): Likewise.
3515         * symtab.h (class Symbol): Declare versioned_name.
3516         * stringpool.h (class Stringpool_template): Add variant of add
3517         which takes a std::basic_string.
3518         * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_12.
3519         (ver_test_12_SOURCES, ver_test_12_DEPENDENCIES): New variables.
3520         (ver_test_12_LDFLAGS, ver_test_12_LDADD): New variables.
3521         (ver_test_12.o): New target.
3522         * testsuite/Makefile.in: Rebuild.
3523
3524 2011-06-27  Doug Kwan  <dougkwan@google.com>
3525
3526         * arm.cc (Arm_relocate_functions::thm_jump8,
3527         Arm_relocate_functions::thm_jump11): Use a wider signed
3528         type to compute offset.
3529         * testsuite/Makefile.am: Add new tests arm_thm_jump11 and
3530         arm_thm_jump8.
3531         * testsuite/Makefile.in: Regenerate.
3532         * testsuite/arm_branch_in_range.sh: Check test results of
3533         arm_thm_jump11 and arm_thm_jump8.
3534         * testsuite/arm_thm_jump11.s: New test source file.
3535         * testsuite/arm_thm_jump11.t: New linker script.
3536         * testsuite/arm_thm_jump8.s: New test source file.
3537         * testsuite/arm_thm_jump8.t: New linker script.
3538
3539 2011-06-24  Ian Lance Taylor  <iant@google.com>
3540
3541         * layout.cc: Include "object.h".
3542         (ctors_sections_in_init_array): New static variable.
3543         (Layout::is_ctors_in_init_array): New function.
3544         (Layout::layout): Add entry to ctors_sections_in_init_array if
3545         appropriate.
3546         * layout.h (class Layout): Declare is_ctors_in_init_array.
3547         * reloc.cc (Sized_relobj_file::do_relocate): Call reverse_words if
3548         is_ctors_reverse_view is set.
3549         (Sized_relobj_file::write_sections): Add layout parameter.  Change
3550         all callers.  Set is_ctors_reverse_view field of View_size.
3551         (Sized_relobj_file::reverse_words): New function.
3552         * object.h (Sized_relobj_file::View_size): Add
3553         is_ctors_reverse_view field.
3554         (class Sized_relobj_file): Update declarations.
3555         * testsuite/initpri3.c: New test.
3556         * testsuite/Makefile.am: (check_PROGRAMS): Add initpri3a and
3557         initpri3b.
3558         (initpri3a_SOURCES, initpri3a_DEPENDENCIES): New variables.
3559         (initpri3a_LDFLAGS, initpri3a_LDADD): New variables.
3560         (initpri3b_SOURCES, initpri3b_DEPENDENCIES): New variables.
3561         (initpri3b_LDFLAGS, initpri3b_LDADD): New variables.
3562         * testsuite/Makefile.in: Rebuild.
3563
3564 2011-06-24  Cary Coutant  <ccoutant@google.com>
3565
3566         * testsuite/Makefile.am: Add in-tree assembler to gcctestdir.
3567         (debug_msg_cdebug.o, odr_violation1_cdebug.o, odr_violation2_cdebug.o)
3568         (debug_msg_cdebug.err): New targets.
3569         * testsuite/Makefile.in: Regenerate.
3570         * testsuite/debug_msg.sh: Check output of link with compressed debug.
3571         Fix checks for link with shared library.
3572
3573 2011-06-24  Doug Kwan  <dougkwan@google.com>
3574
3575         * arm.cc (Arm_output_section::append_text_sections_to_list): Do not
3576         skip empty text sections.
3577         * testsuite/arm_exidx_test.s: Test handling of an empty text section.
3578
3579 2011-06-22  Ian Lance Taylor  <iant@google.com>
3580
3581         PR gold/12910
3582         * options.h (class General_options): Add --ctors-in-init-array.
3583         * layout.cc (Layout::get_output_section): Treat SHT_INIT_ARRAY and
3584         friends as SHT_PROGBITS for merging sections.
3585         (Layout::layout): Remove special handling of .init_array and
3586         friends.  Don't sort if doing relocatable link.  Sort for .ctors
3587         and .dtors if ctors_in_init_array.
3588         (Layout::make_output_section): Force correct section types for
3589         .init_array and friends.  Don't sort if doing relocatable link,
3590         Don't sort .ctors and .dtors if ctors_in_init_array.
3591         (Layout::section_name_mapping): Remove .ctors. and .dtorso.
3592         (Layout::output_section_name): Add relobj parameter.  Change all
3593         callers.  Handle .ctors. and .dtors. in code rather than table.
3594         Handle .ctors and .dtors if ctors_in_init_array.
3595         (Layout::match_file_name): New function, moved from output.cc.
3596         * layout.h (class Layout): Update declarations.
3597         * output.cc: Include "layout.h".
3598         (Input_section_sort_entry::get_priority): New function.
3599         (Input_section_sort_entry::match_file_name): Just call
3600         Layout::match_file_name.
3601         (Output_section::Input_section_sort_init_fini_compare::operator()):
3602         Handle .ctors and .dtors.  Sort by explicit priority rather than
3603         by name.
3604         * configure.ac: Remove CONSTRUCTOR_PRIORITY test and conditional.
3605         * testsuite/initpri2.c: New test.
3606         * testsuite/Makefile.am: Don't test CONSTRUCTOR_PRIORITY.
3607         (check_PROGRAMS): Add initpri2.
3608         (initpri2_SOURCES, initpri2_DEPENDENCIES): New variables.
3609         (initpri2_LDFLAGS, initpri2_LDADD): New variables.
3610         * configure, testsuite/Makefile.in: Rebuild.
3611
3612 2011-06-19  Ian Lance Taylor  <iant@google.com>
3613
3614         PR gold/12880
3615         * layout.cc (Layout::attach_allocated_section_to_segment): Add a
3616         .interp section to a PT_INTERP segment even if we have seen a
3617         --dynamic-linker option.  Don't do it if we have seen a PHDRS
3618         clause in a linker script.
3619         (Layout::finalize): Don't create a .interp section if we've
3620         already create a PT_INTERP segment.
3621         (Layout::create_interp): Always call choose_output_section (revert
3622         patch of 2011-06-17).  Don't create PT_INTERP segment.
3623         * script-sections.cc
3624         (Script_sections::create_note_and_tls_segments): Add a .interp
3625         section to a PT_INTERP segment even if we have seen a
3626         --dynamic-linker option.
3627
3628 2011-06-18  Ian Lance Taylor  <iant@google.com>
3629
3630         * layout.cc (Layout::finish_dynamic_section): Don't set DT_TEXTREL
3631         merely because a non-PT_LOAD segment has a dynamic reloc.
3632
3633 2011-06-18  Ian Lance Taylor  <iant@google.com>
3634
3635         * layout.cc (Layout::finish_dynamic_section): Don't create
3636         DT_FLAGS entry if not needed.
3637
3638 2011-06-18  Ian Lance Taylor  <iant@google.com>
3639
3640         PR gold/12745
3641         * layout.cc (Layout::layout_eh_frame): Correct handling of
3642         writable .eh_frame section.
3643
3644 2011-06-17  Ian Lance Taylor  <iant@google.com>
3645
3646         PR gold/12893
3647         * resolve.cc (Symbol_table::resolve): Don't give an error if a
3648         symbol is redefined with the exact same object and value.
3649
3650 2011-06-17  Ian Lance Taylor  <iant@google.com>
3651
3652         PR gold/12880
3653         * layout.h (class Layout): Add interp_segment_ field.
3654         * layout.cc (Layout::Layout): Initialize interp_segment_ field.
3655         (Layout::attach_allocated_section_to_segment): If making shared
3656         library, put .interp section in PT_INTERP segment.
3657         (Layout::finalize): Also call create_interp if -dynamic-linker
3658         option was used.
3659         (Layout::create_interp): Assert that there is no PT_INTERP
3660         segment.  If not using a SECTIONS clause, use make_output_section.
3661         (Layout::make_output_segment): Set interp_segment_ if PT_INTERP.
3662         * script-sections.cc
3663         (Script_sections::create_note_and_tls_segments): If making shared
3664         library, put .interp section in PT_INTERP segment.
3665
3666 2011-06-17  Ian Lance Taylor  <iant@google.com>
3667
3668         * object.cc (Sized_relobj_file::do_layout): Keep warning sections
3669         when making a shared library.
3670
3671 2011-06-17  Ian Lance Taylor  <iant@google.com>
3672
3673         * x86_64.cc (Target_x86_64::Scan::check_non_pic): Add gsym
3674         parameter.  Change all callers.  Don't issue warning about PC32
3675         against locally defined symbol.
3676
3677 2011-06-16  Ian Lance Taylor  <iant@google.com>
3678
3679         * symtab.cc (Warnings::issue_warning): Don't warn if relocation
3680         occurs in same object.
3681
3682 2011-06-14  Alan Modra  <amodra@gmail.com>
3683
3684         * po/POTFILES.in: Regenerate.
3685
3686 2011-06-09  Ian Lance Taylor  <iant@google.com>
3687
3688         * script-sections.cc
3689         (Orphan_output_section::set_section_addresses): For a relocatable
3690         link set address to 0.
3691
3692 2011-06-09  Cary Coutant  <ccoutant@google.com>
3693
3694         PR gold/12804
3695         * gold/gold.cc (queue_initial_tasks): Warn if --incremental is
3696         used with --compress-debug-sections.
3697         * gold/object.cc (Sized_relobj_file::do_layout): Report
3698         uncompressed size of compressed input sections.
3699
3700 2011-06-08  Cary Coutant  <ccoutant@google.com>
3701
3702         PR gold/12804
3703         * testsuite/two_file_test_2_v1.cc: Change initialization of
3704         v2 to keep it in .data.
3705
3706 2011-06-07  Cary Coutant  <ccoutant@google.com>
3707
3708         * common.cc (Symbol_table::do_allocate_commons_list): Call
3709         gold_fallback.
3710         * errors.cc (Errors::fatal): Adjust call to gold_exit.
3711         (Errors::fallback): New function.
3712         (gold_fallback): New function.
3713         * errors.h (Errors::fallback): New function.
3714         * gold.cc (gold_exit): Change status parameter to enum; adjust
3715         all callers.
3716         (queue_initial_tasks): Call gold_fallback.
3717         * gold.h: Include cstdlib.
3718         (Exit_status): New enum type.
3719         (gold_exit): Change status parameter to enum.
3720         (gold_fallback): New function.
3721         * layout.cc (Layout::set_section_offsets): Call gold_fallback.
3722         (Layout::create_symtab_sections): Likewise.
3723         (Layout::create_shdrs): Likewise.
3724         * main.cc (main): Adjust call to gold_exit.
3725         * output.cc (Output_data_got::add_got_entry): Call gold_fallback.
3726         (Output_data_got::add_got_entry_pair): Likewise.
3727         (Output_section::add_input_section): Likewise.
3728         (Output_section::add_output_section_data): Likewise.
3729         (Output_segment::set_section_list_addresses): Likewise.
3730         * x86_64.cc (Output_data_plt_x86_64::add_entry): Likewise.
3731
3732 2011-06-07  Cary Coutant  <ccoutant@google.com>
3733
3734         * layout.cc (Layout::set_segment_offsets): Don't adjust layout
3735         for incremental links.
3736         * output.cc (Output_segment::set_section_list_addresses): Remove
3737         FIXME and test for TLS or BSS.
3738
3739 2011-06-07  Cary Coutant  <ccoutant@google.com>
3740
3741         * testsuite/Makefile.am: Add incremental_copy_test,
3742         incremental_common_test_1.
3743         * testsuite/Makefile.in: Regenerate.
3744         * testsuite/common_test_1_v1.c: New source file.
3745         * testsuite/common_test_1_v2.c: New source file.
3746         * testsuite/copy_test_v1.cc: New source file.
3747
3748 2011-06-07  Cary Coutant  <ccoutant@google.com>
3749
3750         * common.cc (Symbol_table::do_allocate_commons_list): For incremental
3751         update, allocate common from bss section's free list.
3752         * incremental-dump.cc (dump_incremental_inputs): Print flag for
3753         linker-defined symbols.
3754         * incremental.cc (Sized_incremental_binary::do_process_got_plt):
3755         Skip GOT and PLT entries that are no longer referenced.
3756         (Output_section_incremental_inputs::write_info_blocks): Mark
3757         linker-defined symbols.
3758         (Sized_incr_relobj::do_add_symbols): Process linker-defined symbols.
3759         * output.cc (Output_section::allocate): New function.
3760         * output.h (Output_section::allocate): New function.
3761         * resolve.cc (Symbol_table::report_resolve_problem): Add case for
3762         linker-defined symbols.
3763         (Symbol::override_base_with_special): Copy is_predefined_ flag.
3764         * symtab.cc (Symbol::init_fields): Initialize is_predefined_ flag.
3765         (Symbol::init_base_output_data): Likewise.
3766         (Symbol::init_base_output_segment): Likewise.
3767         (Symbol::init_base_constant): Likewise.
3768         (Sized_symbol::init_output_data): Likewise.
3769         (Sized_symbol::init_output_segment): Likewise.
3770         (Sized_symbol::init_constant): Likewise.
3771         (Symbol_table::do_define_in_output_data): Likewise.
3772         (Symbol_table::do_define_in_output_segment): Likewise.
3773         (Symbol_table::do_define_as_constant): Likewise.
3774         * symtab.h (Symbol::is_predefined): New function.
3775         (Symbol::init_base_output_data): Add is_predefined parameter.
3776         (Symbol::init_base_output_segment): Likewise.
3777         (Symbol::init_base_constant): Likewise.
3778         (Symbol::is_predefined_): New data member.
3779         (Sized_symbol::init_output_data): Add is_predefined parameter.
3780         (Sized_symbol::init_output_segment): Likewise.
3781         (Sized_symbol::init_constant): Likewise.
3782         (enum Symbol_table::Defined): Add INCREMENTAL_BASE.
3783
3784 2011-06-07  Cary Coutant  <ccoutant@google.com>
3785
3786         * copy-relocs.cc (Copy_relocs::copy_reloc): Call make_copy_reloc
3787         instead of emit_copy_reloc.
3788         (Copy_relocs::emit_copy_reloc): Refactor.
3789         (Copy_relocs::make_copy_reloc): New function.
3790         (Copy_relocs::add_copy_reloc): Remove.
3791         * copy-relocs.h (Copy_relocs::emit_copy_reloc): Move to public
3792         section.
3793         (Copy_relocs::make_copy_reloc): New function.
3794         (Copy_relocs::add_copy_reloc): Remove.
3795         * gold.cc (queue_middle_tasks): Emit old COPY relocations from
3796         unchanged input files.
3797         * incremental-dump.cc (dump_incremental_inputs): Print "COPY" flag.
3798         * incremental.cc (Sized_incremental_binary::do_reserve_layout):
3799         Reserve BSS space for COPY relocations.
3800         (Sized_incremental_binary::do_emit_copy_relocs): New function.
3801         (Output_section_incremental_inputs::write_info_blocks): Record
3802         whether a symbol is copied from a shared object.
3803         (Sized_incr_dynobj::do_add_symbols): Record COPY relocations.
3804         * incremental.h (enum Incremental_shlib_symbol_flags): New type.
3805         (INCREMENTAL_SHLIB_SYM_FLAGS_SHIFT): New constant.
3806         (Incremental_input_entry_reader::get_output_symbol_index): Add
3807         is_copy parameter.
3808         (Incremental_binary::emit_copy_relocs): New function.
3809         (Incremental_binary::do_emit_copy_relocs): New function.
3810         (Sized_incremental_binary::Sized_incremental_binary): Initialize
3811         new data member.
3812         (Sized_incremental_binary::add_copy_reloc): New function.
3813         (Sized_incremental_binary::do_emit_copy_relocs): New function.
3814         (Sized_incremental_binary::Copy_reloc): New struct.
3815         (Sized_incremental_binary::Copy_relocs): New typedef.
3816         (Sized_incremental_binary::copy_relocs_): New data member.
3817         * symtab.cc (Symbol_table::add_from_incrobj): Change return type.
3818         * symtab.h (Symbol_table::add_from_incrobj): Change return type.
3819         * target.h (Sized_target::emit_copy_reloc): New function.
3820         * x86_64.cc (Target_x86_64::emit_copy_reloc): New function.
3821
3822 2011-06-02  Cary Coutant  <ccoutant@google.com>
3823
3824         PR gold/12163
3825         * gold/archive.cc (Archive::Archive): Initialize new data member.
3826         (Archive::include_all_members): Return if archive has already been
3827         included.
3828         * gold/archive.h (Archive::include_all_members_): New data member.
3829
3830 2011-06-02  Nick Clifton  <nickc@redhat.com>
3831
3832         * dynobj.h: Fix spelling mistake in comment.
3833         * output.cc: Likewise.
3834
3835 2011-05-31  Doug Kwan  <dougkwan@google.com>
3836             Asier Llano
3837
3838         PR gold/12826
3839         * arm.cc (Target_arm::tag_cpu_arch_combine): Fix handling of
3840         arch value that equals to elfcpp::MAX_TAG_CPU_ARCH.
3841         * testsuite/Makefile.am: (MOSTLYCLEANFILES): Clean up.  Remove
3842         redundant arm_exidx_test.so.
3843         * testsuite/Makefile.in: Regenerate.
3844         (check_SCRIPTS): Add pr12826.sh
3845         (check_DATA): Add pr12826.stdout
3846         (pr12826.stdout, pr12826.so, pr12826_1.o, pr12826_2.o): New rules.
3847         * testsuite/pr12826.sh: New file.
3848         * testsuite/pr12826_1.s: Ditto.
3849         * testsuite/pr12826_1.s: Ditto.
3850
3851 2011-05-30  Ian Lance Taylor  <iant@google.com>
3852
3853         * reloc.cc (Sized_relobj_file::do_read_relocs): Ignore empty reloc
3854         sections.
3855
3856 2011-05-29  Ian Lance Taylor  <iant@google.com>
3857
3858         PR gold/12804
3859         * testsuite/Makefile.am: Use different file name for two_file_test
3860         temporary file for each incremental test.
3861         * testsuite/Makefile.in: Rebuild.
3862
3863 2011-05-29  Ian Lance Taylor  <iant@google.com>
3864
3865         * binary.cc (Binary_to_elf::sized_convert): Don't crash if the
3866         binary input file is empty.
3867
3868 2011-05-27  Ian Lance Taylor  <iant@google.com>
3869
3870         * testsuite/Makefile.am (ver_test_2.so): Use -Wl,-R,.
3871         (ver_test_9.so): Likewise.
3872         * testsuite/Makefile.in: Rebuild.
3873
3874 2011-05-26 Cary Coutant  <ccoutant@google.com>
3875
3876         * incremental-dump.cc (dump_incremental_inputs): Print COMDAT groups.
3877         * incremental.cc (Incremental_inputs::report_input_section): Fix
3878         comment, indentation.
3879         (Incremental_inputs::report_comdat_group): New function.
3880         (Output_section_incremental_inputs::set_final_data_size): Adjust size
3881         of data for incremental input file entry.
3882         (Output_section_incremental_inputs::write_info_blocks): Write COMDAT
3883         group count, COMDAT group signatures.
3884         (Sized_incr_relobj::do_layout): Record kept COMDAT group info from
3885         an unchanged input file.
3886         * incremental.h (Incremental_object_entry::Incremental_object_entry):
3887         Initialize new data member.
3888         (Incremental_object_entry::add_comdat_group): New function.
3889         (Incremental_object_entry::get_comdat_group_count): New function.
3890         (Incremental_object_entry::get_comdat_signature_key): New function.
3891         (Incremental_object_entry::groups_): New data member.
3892         (Incremental_inputs::report_comdat_group): New function.
3893         (Incremental_input_entry_reader::get_symbol_offset): Adjust size of
3894         data for incremental input file entry.
3895         (Incremental_input_entry_reader::get_comdat_group_count): New function.
3896         (Incremental_input_entry_reader::get_input_section): Adjust size of
3897         data for incremental input file entry.
3898         (Incremental_input_entry_reader::get_global_symbol_reader): Likewise.
3899         (Incremental_input_entry_reader::get_comdat_group_signature): New
3900         function.
3901         * object.cc (Sized_relobj::include_section_group): Report kept
3902         COMDAT groups for incremental links.
3903
3904 2011-05-24  David Meyer  <pdox@google.com>
3905
3906         * dirsearch.cc (Dirsearch::find): Replace n1 and n2 parameters
3907         with name parameter.  Add found_name parameter.
3908         * fileread.cc (Input_file::find_file): Adjust code accordingly.
3909         * dirsearch.h (class Dirsearch): Update declaration.
3910
3911 2011-05-24  Ian Lance Taylor  <iant@google.com>
3912
3913         * archive.cc (Library_base::should_include_member): Pull in object
3914         from archive if it defines the entry symbol.
3915         * parameters.cc (Parameters::entry): New function.
3916         * parameters.h (class Parameters): Declare entry.
3917         * output.h (class Output_file_header): Remove entry_ field.
3918         * output.cc (Output_file_header::Output_file_header): Remove entry
3919         parameter.  Change all callers.
3920         (Output_file_header::entry): Use parameters->entry.
3921         * gold.cc (queue_middle_tasks): Likewise.
3922         * plugin.cc (Plugin_hook::run): Likewise.
3923
3924 2011-05-24 Cary Coutant  <ccoutant@google.com>
3925
3926         * gold.cc (queue_initial_tasks): Pass incremental base filename
3927         to Output_file::open_base_file; don't print error message.
3928         * incremental-dump.cc (main): Adjust call to
3929         Output_file::open_for_modification.
3930         * incremental-dump.cc (main): Likewise.
3931         * incremental.cc (Incremental_inputs::report_command_line):
3932         Ignore --incremental-base option when comparing command lines.
3933         Ignore parameter when given as separate argument.
3934         * options.h (class General_options): Add --incremental-base.
3935         * output.cc (Output_file::Output_file):
3936         (Output_file::open_base_file): Add base_name and writable parameters;
3937         read base file into new file; print error message here.
3938         (Output_file::map_no_anonymous): Add writable parameter; adjust all
3939         callers.
3940         * output.h (Output_file::open_for_modification): Rename to...
3941         (Output_file::open_base_file): ...this; add base_name and
3942         writable parameters; adjust all callers.
3943         (Output_file::map_no_anonymous): Add writable parameter; adjust all
3944         callers.
3945         * testsuite/Makefile.am (incremental_test_4): Test
3946         --incremental-base.
3947         * testsuite/Makefile.in: Regenerate.
3948
3949 2011-05-24 Cary Coutant  <ccoutant@google.com>
3950
3951         * testsuite/Makefile.am: Add incremental_test_2, incremental_test_3,
3952         incremental_test_4.
3953         * testsuite/Makefile.in: Regenerate.
3954         * testsuite/two_file_test_1_v1.cc: New test source file.
3955         * testsuite/two_file_test_1b_v1.cc: New test source file.
3956         * testsuite/two_file_test_2_v1.cc: New test source file.
3957
3958 2011-05-24 Cary Coutant  <ccoutant@google.com>
3959
3960         * dynobj.h (Dynobj::do_dynobj): New function.
3961         * incremental-dump.cc (dump_incremental_inputs): Print as_needed
3962         flag and soname for shared objects.
3963         * incremental.cc (Incremental_inputs::report_object): Make
3964         either Incremental_object_entry or Incremental_dynobj_entry; add
3965         soname to string table.
3966         (Incremental_inputs::report_input_section): Add assertion.
3967         (Output_section_incremental_inputs::set_final_data_size): Adjust
3968         type of input file entry for shared libraries; adjust size of
3969         shared library info entry.
3970         (Output_section_incremental_inputs::write_input_files): Write
3971         as_needed flag for shared libraries.
3972         (Output_section_incremental_inputs::write_info_blocks): Adjust type
3973         of input file entry for shared libraries; write soname.
3974         (Sized_incr_dynobj::Sized_incr_dynobj): Read as_needed flag and
3975         soname from incremental info.
3976         * incremental.h (enum Incremental_input_flags): Add
3977         INCREMENTAL_INPUT_AS_NEEDED.
3978         (Incremental_input_entry::Incremental_input_entry): Initialize new
3979         data member.
3980         (Incremental_input_entry::set_as_needed): New function.
3981         (Incremental_input_entry::as_needed): New function.
3982         (Incremental_input_entry::do_dynobj_entry): New function.
3983         (Incremental_input_entry::as_needed_): New data member.
3984         (Incremental_object_entry::Incremental_object_entry): Don't check
3985         for shared library.
3986         (Incremental_object_entry::do_type): Likewise.
3987         (class Incremental_dynobj_entry): New class.
3988         (Incremental_input_entry_reader::as_needed): New function.
3989         (Incremental_input_entry_reader::get_soname): New function.
3990         (Incremental_input_entry_reader::get_global_symbol_count): Rewrite.
3991         (Incremental_input_entry_reader::get_output_symbol_index): Adjust
3992         size of shared library info entry.
3993         * layout.cc (Layout::finish_dynamic_section): Don't test for
3994         incremental link when adding DT_NEEDED entries.
3995         * object.h (Object::Object): Initialize new data member.
3996         (Object::dynobj): New function.
3997         (Object::set_as_needed): New function.
3998         (Object::as_needed): New function.
3999         (Object::do_dynobj): New function.
4000         (Object::as_needed_): New data member.
4001
4002 2011-05-24 Cary Coutant  <ccoutant@google.com>
4003
4004         * incremental-dump.cc (dump_incremental_inputs): Print dynamic reloc
4005         info; adjust display of GOT entries.
4006         * incremental.cc (Sized_incremental_binary::setup_readers): Allocate
4007         vector of input objects; remove file_status_.
4008         (Sized_incremental_binary::do_reserve_layout): Remove file_status_.
4009         (Sized_incremental_binary::do_process_got_plt): Adjust calls to
4010         got_plt reader; call target hooks to reserve GOT entries.
4011         (Output_section_incremental_inputs::set_final_data_size): Adjust size
4012         of input file info header and GOT info entry.
4013         (Output_section_incremental_inputs::write_info_blocks): Write dynamic
4014         relocation info.
4015         (Got_plt_view_info::got_descriptor): Remove.
4016         (Got_plt_view_info::sym_index): New data member.
4017         (Got_plt_view_info::input_index): New data member.
4018         (Local_got_offset_visitor::visit): Write input file index.
4019         (Global_got_offset_visitor::visit): Write 0 for input file index.
4020         (Global_symbol_visitor_got_plt::operator()): Replace got_descriptor
4021         with sym_index and input_index.
4022         (Output_section_incremental_inputs::write_got_plt): Adjust size of
4023         incremental info GOT entry; replace got_descriptor with input_index.
4024         (Sized_relobj_incr::Sized_relobj_incr): Adjust initializers; record
4025         map from input file index to object.
4026         (Sized_relobj_incr::do_layout): Replace direct data member reference
4027         with accessor function.
4028         (Sized_relobj_incr::do_for_all_local_got_entries): Move to base class.
4029         * incremental.h (Incremental_input_entry_reader::get_symbol_offset):
4030         Adjust size of input file info header.
4031         (Incremental_input_entry_reader::get_first_dyn_reloc): New function.
4032         (Incremental_input_entry_reader::get_dyn_reloc_count): New function.
4033         (Incremental_input_entry_reader::get_input_section): Adjust size of
4034         input file info header.
4035         (Incremental_got_plt_reader::Incremental_got_plt_reader): Adjust size
4036         of incremental info GOT entry.
4037         (Incremental_got_plt_reader::get_got_desc): Remove.
4038         (Incremental_got_plt_reader::get_got_symndx): New function.
4039         (Incremental_got_plt_reader::get_got_input_index): New function.
4040         (Sized_incremental_binary::Sized_incremental_binary): Remove
4041         file_status_; add input_objects_.
4042         (Sized_incremental_binary::~Sized_incremental_binary): Remove.
4043         (Sized_incremental_binary::set_file_is_unchanged): Remove.
4044         (Sized_incremental_binary::file_is_unchanged): Remove.
4045         (Sized_incremental_binary::set_input_object): New function.
4046         (Sized_incremental_binary::input_object): New function.
4047         (Sized_incremental_binary::file_status_): Remove.
4048         (Sized_incremental_binary::input_objects_): New data member.
4049         (Sized_relobj_incr): Rename Sized_incr_relobj to this; adjust all
4050         references.
4051         (Sized_relobj_incr::invalid_address): Move to base class.
4052         (Sized_relobj_incr::is_output_section_offset_invalid): Move to base
4053         class.
4054         (Sized_relobj_incr::do_output_section_offset): Likewise.
4055         (Sized_relobj_incr::do_for_all_local_got_entries): Likewise.
4056         (Sized_relobj_incr::section_offsets_): Likewise.
4057         * object.cc (Sized_relobj::do_for_all_local_got_entries): New
4058         function.
4059         (Sized_relobj_file::Sized_relobj_file): Remove local_got_offsets_.
4060         (Sized_relobj_file::layout_section): Replace refs to section_offsets_
4061         with accessor function.
4062         (Sized_relobj_file::do_layout): Likewise.
4063         (Sized_relobj_file::do_layout_deferred_sections): Likewise.
4064         (Sized_relobj_file::do_for_all_local_got_entries): Move to base class.
4065         (Sized_relobj_file::compute_final_local_value): Replace refs to
4066         section_offsets_ with accessor function.
4067         (Sized_relobj_file::do_finalize_local_symbols): Likewise.
4068         * object.h (Relobj::Relobj): Initialize new data members.
4069         (Relobj::add_dyn_reloc): New function.
4070         (Relobj::first_dyn_reloc): New function.
4071         (Relobj::dyn_reloc_count): New function.
4072         (Relobj::first_dyn_reloc_): New data member.
4073         (Relobj::dyn_reloc_count_): New data member.
4074         (Sized_relobj): Rename Sized_relobj_base to this; adjust all
4075         references.
4076         (Sized_relobj::Address): New typedef.
4077         (Sized_relobj::invalid_address): Move here from child class.
4078         (Sized_relobj::Sized_relobj): Initialize new data members.
4079         (Sized_relobj::sized_relobj): New function.
4080         (Sized_relobj::is_output_section_offset_invalid): Move here from
4081         child class.
4082         (Sized_relobj::get_output_section_offset): Likewise.
4083         (Sized_relobj::local_has_got_offset): Likewise.
4084         (Sized_relobj::local_got_offset): Likewise.
4085         (Sized_relobj::set_local_got_offset): Likewise.
4086         (Sized_relobj::do_for_all_local_got_entries): Likewise.
4087         (Sized_relobj::clear_got_offsets): New function.
4088         (Sized_relobj::section_offsets): Move here from child class.
4089         (Sized_relobj::do_output_section_offset): Likewise.
4090         (Sized_relobj::do_set_section_offset): Likewise.
4091         (Sized_relobj::Local_got_offsets): Likewise.
4092         (Sized_relobj::local_got_offsets_): Likewise.
4093         (Sized_relobj::section_offsets_): Likewise.
4094         (Sized_relobj_file): Rename Sized_relobj to this; adjust all
4095         references.
4096         (Sized_relobj_file::is_output_section_offset_invalid): Move to base
4097         class.
4098         (Sized_relobj_file::sized_relobj): New function
4099         (Sized_relobj_file::local_has_got_offset): Move to base class.
4100         (Sized_relobj_file::local_got_offset): Likewise.
4101         (Sized_relobj_file::set_local_got_offset): Likewise.
4102         (Sized_relobj_file::get_output_section_offset): Likewise.
4103         (Sized_relobj_file::do_for_all_local_got_entries): Likewise.
4104         (Sized_relobj_file::do_output_section_offset): Likewise.
4105         (Sized_relobj_file::do_set_section_offset): Likewise.
4106         (Sized_relobj_file::Local_got_offsets): Likewise.
4107         (Sized_relobj_file::local_got_offsets_): Likewise.
4108         (Sized_relobj_file::section_offsets_): Likewise.
4109         * output.cc (Output_reloc::Output_reloc): Adjust type of relobj
4110         (all constructors).
4111         (set_needs_dynsym_index): Convert relobj to derived class pointer.
4112         (Output_reloc::get_symbol_index): Likewise.
4113         (Output_reloc::local_section_offset): Likewise.
4114         (Output_reloc::get_address): Likewise.
4115         (Output_reloc::symbol_value): Likewise.
4116         (Output_data_got::reserve_slot): Move to class definition.
4117         (Output_data_got::reserve_local): New function.
4118         (Output_data_got::reserve_slot_for_global): Remove.
4119         (Output_data_got::reserve_global): New function.
4120         * output.h (Output_reloc::Output_reloc): Adjust type of relobj
4121         (all constructors, two instantiations).
4122         (Output_reloc::get_relobj): New function (two instantiations).
4123         (Output_reloc::u1_.relobj, Output_reloc::u2_.relobj): Adjust type.
4124         (Output_data_reloc_base::add): Convert relobj to derived class pointer.
4125         (Output_data_reloc::add_global): Adjust type of relobj.
4126         (Output_data_reloc::add_global_relative): Likewise.
4127         (Output_data_reloc::add_symbolless_global_addend): Likewise.
4128         (Output_data_reloc::add_local): Likewise.
4129         (Output_data_reloc::add_local_relative): Likewise.
4130         (Output_data_reloc::add_symbolless_local_addend): Likewise.
4131         (Output_data_reloc::add_local_section): Likewise.
4132         (Output_data_reloc::add_output_section): Likewise.
4133         (Output_data_reloc::add_absolute): Likewise.
4134         (Output_data_reloc::add_target_specific): Likewise.
4135         (Output_data_got::reserve_slot): Move definition here.
4136         (Output_data_got::reserve_local): New function.
4137         (Output_data_got::reserve_global): New function.
4138         * reloc.cc (Sized_relobj_file::do_read_relocs): Replace refs to
4139         section_offsets_ with accessor function.
4140         (Sized_relobj_file::write_sections): Likewise.
4141         (Sized_relobj_file::do_relocate_sections): Likewise.
4142         * target.h (Sized_target::reserve_local_got_entry): New function.
4143         (Sized_target::reserve_global_got_entry): New function.
4144         * x86_64.cc (Target_x86_64::reserve_local_got_entry): New function.
4145         (Target_x86_64::reserve_global_got_entry): New function.
4146         (Target_x86_64::init_got_plt_for_update): Create rela_dyn section.
4147
4148 2011-05-23 Cary Coutant  <ccoutant@google.com>
4149
4150         * gold.cc (queue_middle_tasks): Process existing GOT/PLT entries.
4151         * incremental-dump.cc (dump_incremental_inputs): Mask high-order
4152         bit when checking got_type.
4153         * incremental.cc (Sized_incremental_binary::setup_readers):
4154         Store symbol table and string table locations; initialize bit vector
4155         of file status flags.
4156         (Sized_incremental_binary::do_reserve_layout): Set bit flag for
4157         unchanged files.
4158         (Sized_incremental_binary::do_process_got_plt): New function.
4159         (Sized_incremental_binary::get_symtab_view): Use stored locations.
4160         (Output_section_incremental_inputs::set_final_data_size): Record
4161         file index for each input file.
4162         (Output_section_incremental_inputs::write_got_plt): Store file index
4163         instead of input entry offset for each GOT entry.
4164         * incremental.h
4165         (Incremental_input_entry::Incremental_input_entry): Initialize new
4166         data member.
4167         (Incremental_input_entry::set_offset): Store file index.
4168         (Incremental_input_entry::get_file_index): New function.
4169         (Incremental_input_entry::file_index_): New data member.
4170         (Incremental_binary::process_got_plt): New function.
4171         (Incremental_binary::do_process_got_plt): New function.
4172         (Sized_incremental_binary::Sized_incremental_binary): Initialize new
4173         data members.
4174         (Sized_incremental_binary::~Sized_incremental_binary): New destructor.
4175         (Sized_incremental_binary::set_file_is_unchanged): New function.
4176         (Sized_incremental_binary::file_is_unchanged): New function.
4177         (Sized_incremental_binary::do_process_got_plt): New function.
4178         (Sized_incremental_binary::file_status_): New data member.
4179         (Sized_incremental_binary::main_symtab_loc_): New data member.
4180         (Sized_incremental_binary::main_strtab_loc_): New data member.
4181         * output.cc (Output_data_got::Got_entry::write): Add case
4182         RESERVED_CODE.
4183         (Output_data_got::add_global): Call add_got_entry.
4184         (Output_data_got::add_global_plt): Likewise.
4185         (Output_data_got::add_global_with_rel): Likewise.
4186         (Output_data_got::add_global_with_rela): Likewise.
4187         (Output_data_got::add_global_pair_with_rel): Call add_got_entry_pair.
4188         (Output_data_got::add_global_pair_with_rela): Likewise.
4189         (Output_data_got::add_local): Call add_got_entry.
4190         (Output_data_got::add_local_plt): Likewise.
4191         (Output_data_got::add_local_with_rel): Likewise.
4192         (Output_data_got::add_local_with_rela): Likewise.
4193         (Output_data_got::add_local_pair_with_rel): Call add_got_entry_pair.
4194         (Output_data_got::add_local_pair_with_rela): Likewise.
4195         (Output_data_got::reserve_slot): New function.
4196         (Output_data_got::reserve_slot_for_global): New function.
4197         (Output_data_got::add_got_entry): New function.
4198         (Output_data_got::add_got_entry_pair): New function.
4199         (Output_section::add_output_section_data): Edit FIXME.
4200         * output.h
4201         (Output_section_data_build::Output_section_data_build): New
4202         constructor with size parameter.
4203         (Output_data_space::Output_data_space): Likewise.
4204         (Output_data_got::Output_data_got): Initialize new data member; new
4205         constructor with size parameter.
4206         (Output_data_got::add_constant): Call add_got_entry.
4207         (Output_data_got::reserve_slot): New function.
4208         (Output_data_got::reserve_slot_for_global): New function.
4209         (class Output_data_got::Got_entry): Add RESERVED_CODE.
4210         (Output_data_got::add_got_entry): New function.
4211         (Output_data_got::add_got_entry_pair): New function.
4212         (Output_data_got::free_list_): New data member.
4213         * target.h (Sized_target::init_got_plt_for_update): New function.
4214         (Sized_target::register_global_plt_entry): New function.
4215         * x86_64.cc (Output_data_plt_x86_64::Output_data_plt_x86_64):
4216         Initialize new data member; call init; add constructor with PLT count.
4217         (Output_data_plt_x86_64::init): New function.
4218         (Output_data_plt_x86_64::add_relocation): New function.
4219         (Output_data_plt_x86_64::reserve_slot): New function.
4220         (Output_data_plt_x86_64::free_list_): New data member.
4221         (Target_x86_64::init_got_plt_for_update): New function.
4222         (Target_x86_64::register_global_plt_entry): New function.
4223         (Output_data_plt_x86_64::add_entry): Allocate from free list for
4224         incremental updates.
4225         (Output_data_plt_x86_64::add_relocation): New function.
4226         * testsuite/object_unittest.cc (Object_test): Set default options.
4227
4228 2011-05-16  Ian Lance Taylor  <iant@google.com>
4229
4230         * options.h (class General_options): Make -i a synonym for -r.
4231
4232 2011-05-16  Ian Lance Taylor  <iant@google.com>
4233
4234         * testsuite/tls_test_main.cc: Use semaphores instead of mutexes.
4235
4236 2011-05-10 Cary Coutant  <ccoutant@google.com>
4237
4238         * object.cc (Sized_relobj::do_count_local_symbols): Check for
4239         strip_all (-s).
4240
4241 2011-05-06  Ian Lance Taylor  <iant@google.com>
4242
4243         * layout.cc (Layout::layout): If the output section flags change,
4244         update the ordering.
4245
4246 2011-04-25 Cary Coutant  <ccoutant@google.com>
4247
4248         * incremental-dump.cc (dump_incremental_inputs): Print local
4249         symbol info for each input file.
4250         * incremental.cc
4251         (Output_section_incremental_inputs::set_final_data_size): Add local
4252         symbol info to input file entries in incremental info.
4253         (Output_section_incremental_inputs::write_info_blocks): Likewise.
4254         (Sized_incr_relobj::Sized_incr_relobj): Initialize new data members.
4255         (Sized_incr_relobj::do_add_symbols): Cosmetic change.
4256         (Sized_incr_relobj::do_count_local_symbols): Replace stub with
4257         implementation.
4258         (Sized_incr_relobj::do_finalize_local_symbols): Likewise.
4259         (Sized_incr_relobj::do_relocate): Write the local symbols.
4260         (Sized_incr_dynobj::do_add_symbols): Cosmetic change.
4261         * incremental.h (Incremental_inputs_reader::get_symbol_offset):
4262         Adjust size of input file header.
4263         (Incremental_inputs_reader::get_local_symbol_offset): New function.
4264         (Incremental_inputs_reader::get_local_symbol_count): New function.
4265         (Incremental_inputs_reader::get_input_section): Adjust size of input
4266         file header.
4267         (Incremental_inputs_reader::get_global_symbol_reader): Likewise.
4268         (Sized_incr_relobj::This): New typedef.
4269         (Sized_incr_relobj::sym_size): New const data member.
4270         (Sized_incr_relobj::Local_symbol): New struct.
4271         (Sized_incr_relobj::do_output_local_symbol_count): New function.
4272         (Sized_incr_relobj::do_local_symbol_offset): New function.
4273         (Sized_incr_relobj::local_symbol_count_): New data member.
4274         (Sized_incr_relobj::output_local_dynsym_count_): New data member.
4275         (Sized_incr_relobj::local_symbol_index_): New data member.
4276         (Sized_incr_relobj::local_symbol_offset_): New data member.
4277         (Sized_incr_relobj::local_dynsym_offset_): New data member.
4278         (Sized_incr_relobj::local_symbols_): New data member.
4279         * object.h (Relobj::output_local_symbol_count): New function.
4280         (Relobj::local_symbol_offset): New function.
4281         (Relobj::do_output_local_symbol_count): New function.
4282         (Relobj::do_local_symbol_offset): New function.
4283         (Sized_relobj::do_output_local_symbol_count): New function.
4284         (Sized_relobj::do_local_symbol_offset): New function.
4285
4286 2011-04-22  Vladimir Simonov  <sv@sw.ru>
4287
4288         * descriptors.cc (set_close_on_exec): New function.
4289         (Descriptors::open): Use set_close_on_exec.
4290         * output.cc (S_ISLNK): Define if not defined.
4291
4292 2011-04-22 Cary Coutant  <ccoutant@google.com>
4293
4294         * incremental.cc (Sized_incremental_binary::setup_readers): Allocate
4295         global symbol map.
4296         (Sized_incremental_binary::do_apply_incremental_relocs): New function.
4297         (Sized_incr_relobj::do_add_symbols): Add symbols to global symbol map.
4298         (Sized_incr_relobj::do_relocate): Remap section indices in incremental
4299         relocations.
4300         (Sized_incr_dynobj::do_add_symbols): Add symbols to global symbol map.
4301         (Sized_incr_dynobj::do_for_all_global_symbols): Remove FIXME.
4302         (Sized_incr_dynobj::do_for_all_local_got_entries): Likewise.
4303         * incremental.h
4304         (Incremental_inputs_reader::global_symbol_reader_at_offset): New
4305         function.
4306         (Incremental_binary::apply_incremental_relocs): New function.
4307         (Incremental_binary::do_apply_incremental_relocs): New function.
4308         (Sized_incremental_binary::Sized_incremental_binary): Initialize new
4309         data member.
4310         (Sized_incremental_binary::add_global_symbol): New function.
4311         (Sized_incremental_binary::global_symbol): New function.
4312         (Sized_incremental_binary::do_apply_incremental_relocs): New function.
4313         (Sized_incremental_binary::symbol_map_): New data member.
4314         * layout.cc (Layout_task_runner::run): Apply incremental relocations.
4315         * target.h (Sized_target::apply_relocation): New function.
4316         * target-reloc.h (apply_relocation): New function.
4317         * x86_64.cc (Target_x86_64::apply_relocation): New function.
4318
4319 2011-04-22  Doug Kwan  <dougkwan@google.com>
4320
4321         * arm.cc (Arm_output_section::Arm_output_section): Set SHF_LINK_ORDER
4322         flag of a SHT_ARM_EXIDX section.
4323         * testsuite/Makefile.am (arm_exidx_test): New test rules.
4324         * testsuite/Makefile.in: Regenerate.
4325         * testsuite/arm_exidx_test.s: New file.
4326         * testsuite/arm_exidx_test.sh: Same.
4327
4328 2011-04-20 Cary Coutant  <ccoutant@google.com>
4329
4330         PR gold/12689
4331         * archive.h (Incremental_archive_entry::Archive_member):
4332         Initialize arg_serial_ (second constructor).
4333
4334 2011-04-17  Ian Lance Taylor  <iant@google.com>
4335
4336         * object.cc (Relocate_info::location): Simplify location string.
4337         * errors.cc (Errors::error_at_location): Don't print program
4338         name.
4339         (Errors::warning_at_location): Likewise.
4340         (Errors::undefined_symbol): Likewise.
4341         * testsuite/debug_msg.sh: Update accordingly.
4342
4343 2011-04-14 Cary Coutant  <ccoutant@google.com>
4344
4345         * gold/layout.cc (Layout::symtab_section_offset): New function.
4346         * gold/layout.h (Layout::symtab_section_offset): New function.
4347         * gold/reloc.cc (Sized_relobj::do_relocate): Call it.
4348
4349 2011-04-12  Ian Lance Taylor  <iant@google.com>
4350
4351         * configure.ac: Check for sys/mman.h and mmap.  Check for mremap
4352         with MREMAP_MAYMOVE.
4353         * output.h (class Output_file): Add map_is_allocated_ field.
4354         * output.cc: Only #include <sys/mman.h> if it exists.  If mmap is
4355         not available, provide stubs.  If mremap is not available, #define
4356         it to gold_mremap.
4357         (MREMAP_MAYMOVE): Define if not defined.
4358         (Output_file::Output_file): Initialize map_is_allocated_.
4359         (Output_file::resize): Check map_is_allocated_.
4360         (Output_file::map_anonymous): If mmap fails, use malloc.
4361         (Output_file::unmap): Don't do anything for an anonymous map.
4362         * fileread.cc: Only #include <sys/mman.h> if it exists.  If mmap
4363         is not available, provide stubs.
4364         (File_read::View::~View): Use free rather than delete[].
4365         (File_read::make_view): Use malloc rather than new[].  If mmap
4366         fails, use malloc.
4367         (File_read::find_or_make_view): Use malloc rather than new[].
4368         * gold.h: Remove HAVE_REMAP code.
4369         * mremap.c: #include <errno.h>.  Only #include <sys/mman.h> if it
4370         exists.  Rename mremap to gold_mremap.  If mmap is not available
4371         don't do anything.
4372         * configure, config.in: Rebuild.
4373
4374 2011-04-11  Ian Lance Taylor  <iant@google.com>
4375
4376         * incremental.cc (Sized_incr_relobj::do_add_symbols): Always
4377         initialize local variable v.
4378
4379 2011-04-11  Cary Coutant  <ccoutant@google.com>
4380
4381         * archive.cc (Archive::include_member): Adjust call to
4382         report_object.
4383         (Add_archive_symbols::run): Track argument serial numbers.
4384         (Lib_group::include_member): Likewise.
4385         (Add_lib_group_symbols::run): Adjust call to report_archive_begin.
4386         * archive.h (Incremental_archive_entry::Archive_member):
4387         Initialize arg_serial_.
4388         (Archive_member::arg_serial_): New data member.
4389         * dynobj.cc (Dynobj::Dynobj): Allow input_file_ to be NULL.
4390         (Sized_dynobj::do_add_symbols): Track symbols when doing an
4391         incremental link.
4392         (Sized_dynobj::do_for_all_local_got_entries): New function.
4393         * dynobj.h: (Sized_dynobj::do_for_all_local_got_entries): New
4394         function.
4395         * fileread.cc (get_mtime): New function.
4396         * fileread.h (get_mtime): New function.
4397         * gold.cc (queue_initial_tasks): Check for incremental update.
4398         (process_incremental_input): New function.
4399         (queue_middle_tasks): Don't force valid target for incremental
4400         update.
4401         * incremental-dump.cc (find_input_containing_global): Adjust
4402         size of symbol info entry.
4403         (dump_incremental_inputs): Dump argument serial number and
4404         in_system_directory flag; bias shndx by 1; print symbol names
4405         when dumping per-file symbol lists; use new symbol info readers.
4406         * incremental.cc
4407         (Output_section_incremental_inputs:update_data_size): New function.
4408         (Sized_incremental_binary::setup_readers): Setup input readers
4409         for each input file; build maps for files added from libraries
4410         and scripts.
4411         (Sized_incremental_binary::check_input_args): New function.
4412         (Sized_incremental_binary::do_check_inputs): Build map of argument
4413         serial numbers to input arguments.
4414         (Sized_incremental_binary::do_file_has_changed): Rename
4415         do_file_is_unchanged to this; compare file modification times.
4416         (Sized_incremental_binary::do_init_layout): New function.
4417         (Sized_incremental_binary::do_reserve_layout): New function.
4418         (Sized_incremental_binary::do_get_input_reader): Remove.
4419         (Sized_incremental_binary::get_symtab_view): New function.
4420         (Incremental_checker::can_incrementally_link_output_file): Remove.
4421         (Incremental_inputs::report_command_line): Exclude --debug options.
4422         (Incremental_inputs::report_archive_begin): Add parameter; track
4423         argument serial numbers; don't put input file entry for archive
4424         before archive members.
4425         (Incremental_inputs::report_archive_end): Put input file entry
4426         for archive after archive members.
4427         (Incremental_inputs::report_object): Add parameter; track argument
4428         serial numbers and in_system_directory flag.
4429         (Incremental_inputs::report_script): Add parameter; track argument
4430         serial numbers.
4431         (Output_section_incremental_inputs::set_final_data_size): Adjust
4432         size of symbol info entry; check for forwarding symbols.
4433         (Output_section_incremental_inputs::write_input_files): Write
4434         in_system_directory flag and argument serial number.
4435         (Output_section_incremental_inputs::write_info_blocks): Map section
4436         indices between incremental info and original input file; store
4437         input section index for each symbol.
4438         (class Local_got_offset_visitor): Derive from Got_offset_list::Visitor;
4439         change operator() to visit().
4440         (class Global_got_offset_visitor): Likewise.
4441         (class Global_symbol_visitor_got_plt):
4442         (Output_section_incremental_inputs::write_got_plt): Use new visitor
4443         classes.
4444         (Sized_incr_relobj::Sized_incr_relobj): New constructor.
4445         (Sized_incr_relobj::do_read_symbols): New function.
4446         (Sized_incr_relobj::do_layout): New function.
4447         (Sized_incr_relobj::do_layout_deferred_sections): New function.
4448         (Sized_incr_relobj::do_add_symbols): New function.
4449         (Sized_incr_relobj::do_should_include_member): New function.
4450         (Sized_incr_relobj::do_for_all_global_symbols): New function.
4451         (Sized_incr_relobj::do_for_all_local_got_entries): New function.
4452         (Sized_incr_relobj::do_section_size): New function.
4453         (Sized_incr_relobj::do_section_name): New function.
4454         (Sized_incr_relobj::do_section_contents): New function.
4455         (Sized_incr_relobj::do_section_flags): New function.
4456         (Sized_incr_relobj::do_section_entsize): New function.
4457         (Sized_incr_relobj::do_section_address): New function.
4458         (Sized_incr_relobj::do_section_type): New function.
4459         (Sized_incr_relobj::do_section_link): New function.
4460         (Sized_incr_relobj::do_section_info): New function.
4461         (Sized_incr_relobj::do_section_addralign): New function.
4462         (Sized_incr_relobj::do_initialize_xindex): New function.
4463         (Sized_incr_relobj::do_get_global_symbol_counts): New function.
4464         (Sized_incr_relobj::do_read_relocs): New function.
4465         (Sized_incr_relobj::do_gc_process_relocs): New function.
4466         (Sized_incr_relobj::do_scan_relocs): New function.
4467         (Sized_incr_relobj::do_count_local_symbols): New function.
4468         (Sized_incr_relobj::do_finalize_local_symbols): New function.
4469         (Sized_incr_relobj::do_set_local_dynsym_indexes): New function.
4470         (Sized_incr_relobj::do_set_local_dynsym_offset): New function.
4471         (Sized_incr_relobj::do_relocate): New function.
4472         (Sized_incr_relobj::do_set_section_offset): New function.
4473         (Sized_incr_dynobj::Sized_incr_dynobj): New function.
4474         (Sized_incr_dynobj::do_read_symbols): New function.
4475         (Sized_incr_dynobj::do_layout): New function.
4476         (Sized_incr_dynobj::do_add_symbols): New function.
4477         (Sized_incr_dynobj::do_should_include_member): New function.
4478         (Sized_incr_dynobj::do_for_all_global_symbols): New function.
4479         (Sized_incr_dynobj::do_for_all_local_got_entries): New function.
4480         (Sized_incr_dynobj::do_section_size): New function.
4481         (Sized_incr_dynobj::do_section_name): New function.
4482         (Sized_incr_dynobj::do_section_contents): New function.
4483         (Sized_incr_dynobj::do_section_flags): New function.
4484         (Sized_incr_dynobj::do_section_entsize): New function.
4485         (Sized_incr_dynobj::do_section_address): New function.
4486         (Sized_incr_dynobj::do_section_type): New function.
4487         (Sized_incr_dynobj::do_section_link): New function.
4488         (Sized_incr_dynobj::do_section_info): New function.
4489         (Sized_incr_dynobj::do_section_addralign): New function.
4490         (Sized_incr_dynobj::do_initialize_xindex): New function.
4491         (Sized_incr_dynobj::do_get_global_symbol_counts): New function.
4492         (make_sized_incremental_object): New function.
4493         (Incremental_library::copy_unused_symbols): New function.
4494         (Incremental_library::do_for_all_unused_symbols): New function.
4495         * incremental.h (enum Incremental_input_flags): New type.
4496         (class Incremental_checker): Remove.
4497         (Incremental_input_entry::Incremental_input_entry): Add argument
4498         serial number.
4499         (Incremental_input_entry::arg_serial): New function.
4500         (Incremental_input_entry::set_is_in_system_directory): New function.
4501         (Incremental_input_entry::is_in_system_directory): New function.
4502         (Incremental_input_entry::arg_serial_): New data member.
4503         (Incremental_input_entry::is_in_system_directory_): New data member.
4504         (class Script_info): Move here from script.h.
4505         (Script_info::Script_info): Add filename parameter.
4506         (Script_info::filename): New function.
4507         (Script_info::filename_): New data member.
4508         (Incremental_script_entry::Incremental_script_entry): Add argument
4509         serial number.
4510         (Incremental_object_entry::Incremental_object_entry): Likewise.
4511         (Incremental_object_entry::add_input_section): Build list of input
4512         sections with map to original shndx.
4513         (Incremental_object_entry::get_input_section_index): New function.
4514         (Incremental_object_entry::shndx_): New data member.
4515         (Incremental_object_entry::name_key_): Rename; adjust all refs.
4516         (Incremental_object_entry::sh_size_): Rename; adjust all refs.
4517         (Incremental_archive_entry::Incremental_archive_entry): Add argument
4518         serial number.
4519         (Incremental_inputs::report_archive_begin): Likewise.
4520         (Incremental_inputs::report_object): Likewise.
4521         (Incremental_inputs::report_script): Likewise.
4522         (class Incremental_global_symbol_reader): New class.
4523         (Incremental_input_entry_reader::Incremental_input_entry_reader): Read
4524         and store flags and input file type.
4525         (Incremental_input_entry_reader::arg_serial): New function.
4526         (Incremental_input_entry_reader::type): Extract type from flags.
4527         (Incremental_input_entry_reader::is_in_system_directory): New function.
4528         (Incremental_input_entry_reader::get_input_section_count): Call
4529         accessor function for type.
4530         (Incremental_input_entry_reader::get_symbol_offset): Call accessor
4531         function for type; adjust size of global symbol entry.
4532         (Incremental_input_entry_reader::get_global_symbol_count): Call
4533         accessor function for type.
4534         (Incremental_input_entry_reader::get_object_count): Likewise.
4535         (Incremental_input_entry_reader::get_object_offset): Likewise.
4536         (Incremental_input_entry_reader::get_member_count): Likewise.
4537         (Incremental_input_entry_reader::get_unused_symbol_count): Likewise.
4538         (Incremental_input_entry_reader::get_member_offset): Likewise.
4539         (Incremental_input_entry_reader::get_unused_symbol): Likewise.
4540         (Incremental_input_entry_reader::Global_symbol_info): Remove.
4541         (Incremental_input_entry_reader::get_global_symbol_info): Remove.
4542         (Incremental_input_entry_reader::get_global_symbol_reader): New
4543         function.
4544         (Incremental_input_entry_reader::get_output_symbol_index): New
4545         function.
4546         (Incremental_input_entry_reader::type_): Remove.
4547         (Incremental_input_entry_reader::flags_): New data member.
4548         (Incremental_inputs_reader::input_file_offset): New function.
4549         (Incremental_inputs_reader::input_file_index): New function.
4550         (Incremental_inputs_reader::input_file): Call input_file_offset.
4551         (Incremental_inputs_reader::input_file_at_offset): New function.
4552         (Incremental_relocs_reader::get_r_type): Reformat.
4553         (Incremental_relocs_reader::get_r_shndx): Reformat.
4554         (Incremental_relocs_reader::get_r_offset): Reformat.
4555         (Incremental_relocs_reader::data): New function.
4556         (Incremental_binary::Incremental_binary): Initialize new data members.
4557         (Incremental_binary::check_inputs): Add cmdline parameter.
4558         (Incremental_binary::file_is_unchanged): Remove.
4559         (Input_reader::arg_serial): New function.
4560         (Input_reader::get_unused_symbol_count): New function.
4561         (Input_reader::get_unused_symbol): New function.
4562         (Input_reader::do_arg_serial): New function.
4563         (Input_reader::do_get_unused_symbol_count): New function.
4564         (Input_reader::do_get_unused_symbol): New function.
4565         (Incremental_binary::input_file_count): New function.
4566         (Incremental_binary::get_input_reader): Change signature to use
4567         index instead of filename.
4568         (Incremental_binary::file_has_changed): New function.
4569         (Incremental_binary::get_input_argument): New function.
4570         (Incremental_binary::get_library): New function.
4571         (Incremental_binary::get_script_info): New function.
4572         (Incremental_binary::init_layout): New function.
4573         (Incremental_binary::reserve_layout): New function.
4574         (Incremental_binary::output_file): New function.
4575         (Incremental_binary::do_check_inputs): New function.
4576         (Incremental_binary::do_file_is_unchanged): Remove.
4577         (Incremental_binary::do_file_has_changed): New function.
4578         (Incremental_binary::do_init_layout): New function.
4579         (Incremental_binary::do_reserve_layout): New function.
4580         (Incremental_binary::do_input_file_count): New function.
4581         (Incremental_binary::do_get_input_reader): Change signature.
4582         (Incremental_binary::input_args_map_): New data member.
4583         (Incremental_binary::library_map_): New data member.
4584         (Incremental_binary::script_map_): New data member.
4585         (Sized_incremental_binary::Sized_incremental_binary): Initialize
4586         new data members.
4587         (Sized_incremental_binary::output_section): New function.
4588         (Sized_incremental_binary::inputs_reader): Add const.
4589         (Sized_incremental_binary::symtab_reader): Add const.
4590         (Sized_incremental_binary::relocs_reader): Add const.
4591         (Sized_incremental_binary::got_plt_reader): Add const.
4592         (Sized_incremental_binary::get_symtab_view): New function.
4593         (Sized_incremental_binary::Inputs_reader): New typedef.
4594         (Sized_incremental_binary::Input_entry_reader): New typedef.
4595         (Sized_incremental_binary::do_check_inputs): Add cmdline parameter.
4596         (Sized_incremental_binary::do_file_is_unchanged): Remove.
4597         (Sized_incremental_binary::do_file_has_changed): New function.
4598         (Sized_incremental_binary::do_init_layout): New function.
4599         (Sized_incremental_binary::do_reserve_layout): New function.
4600         (Sized_input_reader::Inputs_reader): Remove.
4601         (Sized_input_reader::Input_entry_reader): Remove.
4602         (Sized_input_reader::do_arg_serial): New function.
4603         (Sized_input_reader::do_get_unused_symbol_count): New function.
4604         (Sized_input_reader::do_get_unused_symbol): New function.
4605         (Sized_incremental_binary::do_input_file_count): New function.
4606         (Sized_incremental_binary::do_get_input_reader): Change signature;
4607         use index instead of filename.
4608         (Sized_incremental_binary::section_map_): New data member.
4609         (Sized_incremental_binary::input_entry_readers_): New data member.
4610         (class Sized_incr_relobj): New class.
4611         (class Sized_incr_dynobj): New class.
4612         (make_sized_incremental_object): New function.
4613         (class Incremental_library): New class.
4614         * layout.cc (Free_list::num_lists): New static data member.
4615         (Free_list::num_nodes): New static data member.
4616         (Free_list::num_removes): New static data member.
4617         (Free_list::num_remove_visits): New static data member.
4618         (Free_list::num_allocates): New static data member.
4619         (Free_list::num_allocate_visits): New static data member.
4620         (Free_list::init): New function.
4621         (Free_list::remove): New function.
4622         (Free_list::allocate): New function.
4623         (Free_list::dump): New function.
4624         (Free_list::print_stats): New function.
4625         (Layout_task_runner::run): Resize output file for incremental updates.
4626         (Layout::Layout): Initialize new data members.
4627         (Layout::set_incremental_base): New function.
4628         (Layout::init_fixed_output_section): New function.
4629         (Layout::layout_eh_frame): Do not build .eh_frame_hdr section for
4630         incremental updates.
4631         (Layout::create_gold_note): Do not create gold note section for
4632         incremental updates.
4633         (Layout::set_segment_offsets): Do not recalculate RELRO alignment
4634         for incremental updates.
4635         (Layout::set_section_offsets): For incremental updates, allocate space
4636         from free list.
4637         (Layout::create_symtab_sections): Layout with offsets relative to
4638         start of section; for incremental updates, allocate space from free
4639         list.
4640         (Layout::create_shdrs): For incremental updates, allocate space from
4641         free list.
4642         (Layout::finish_dynamic_section): For incremental updates, do not
4643         check --as-needed (fixed in subsequent patch).
4644         * layout.h (class Free_list): New class.
4645         (Layout::set_incremental_base): New function.
4646         (Layout::incremental_base): New function.
4647         (Layout::init_fixed_output_section): New function.
4648         (Layout::allocate): New function.
4649         (Layout::incremental_base_): New data member.
4650         (Layout::free_list_): New data member.
4651         * main.cc (main): Print Free_list statistics.
4652         * object.cc (Relobj::finalize_incremental_relocs): Add
4653         clear_counts parameter; clear counts only when clear_counts is set.
4654         (Sized_relobj::Sized_relobj): Initialize new base class.
4655         (Sized_relobj::do_layout): Don't report special sections.
4656         (Sized_relobj::do_for_all_local_got_entries): New function.
4657         (Sized_relobj::write_local_symbols): Add symtab_off parameter; add
4658         symtab_off to all symbol table offsets.
4659         (Sized_relobj::do_get_global_symbol_counts): Add typename keyword.
4660         * object.h (class Got_offset_list): Move to top of file.
4661         (Object::Object): Allow case where input_file == NULL.
4662         (Object::~Object): Likewise.
4663         (Object::input_file): Assert that input_file != NULL.
4664         (Object::lock): Allow case where input_file == NULL.
4665         (Object::unlock): Likewise.
4666         (Object::is_locked): Likewise.
4667         (Object::token): Likewise.
4668         (Object::release): Likewise.
4669         (Object::is_incremental): New function.
4670         (Object::get_mtime): New function.
4671         (Object::for_all_local_got_entries): New function.
4672         (Object::clear_view_cache_marks): Allow case where input_file == NULL.
4673         (Object::set_is_in_system_directory): New function.
4674         (Object::is_in_system_directory): New function.
4675         (Object::do_is_incremental): New function.
4676         (Object::do_get_mtime): New function.
4677         (Object::do_for_all_local_got_entries): New function.
4678         (Object::is_in_system_directory_): New data member.
4679         (Relobj::finalize_incremental_relocs): Add clear_counts parameter.
4680         (class Sized_relobj_base): New class.
4681         (class Sized_relobj): Derive from Sized_relobj_base.
4682         (class Sized_relobj::Symbols): Redeclare from base class.
4683         (class Sized_relobj::local_got_offset_list): Remove.
4684         (class Sized_relobj::Output_sections): Redeclare from base class.
4685         (class Sized_relobj::do_for_all_local_got_entries): New function.
4686         (class Sized_relobj::write_local_symbols): Add offset parameter.
4687         (class Sized_relobj::local_symbol_offset_): Update comment.
4688         (class Sized_relobj::local_dynsym_offset_): Update comment.
4689         * options.cc (Input_arguments::add_file): Remove const.
4690         * options.h (Input_file_argument::Input_file_argument):
4691         Initialize arg_serial_ (all constructors).
4692         (Input_file_argument::set_arg_serial): New function.
4693         (Input_file_argument::arg_serial): New function.
4694         (Input_file_argument::arg_serial_): New data member.
4695         (Input_arguments::Input_arguments): Initialize file_count_.
4696         (Input_arguments::add_file): Remove const.
4697         (Input_arguments::number_of_input_files): New function.
4698         (Input_arguments::file_count_): New data member.
4699         (Command_line::number_of_input_files): Call
4700         Input_arguments::number_of_input_files.
4701         * output.cc (Output_segment_headers::Output_segment_headers):
4702         Set current size.
4703         (Output_section::Input_section::current_data_size): New function.
4704         (Output_section::Output_section): Initialize new data members.
4705         (Output_section::add_input_section): Don't do merge sections for
4706         an incremental link; allocate space from free list for an
4707         incremental update.
4708         (Output_section::add_output_section_data): Allocate space from
4709         free list for an incremental update.
4710         (Output_section::update_data_size): New function.
4711         (Output_section::set_fixed_layout): New function.
4712         (Output_section::reserve): New function.
4713         (Output_segment::set_section_addresses): Remove const.
4714         (Output_segment::set_section_list_addresses): Remove const; allocate
4715         space from free list for an incremental update.
4716         (Output_segment::set_offset): Adjust size of RELRO segment for an
4717         incremental update.
4718         * output.h (Output_data::current_data_size): Move here from
4719         child classes.
4720         (Output_data::pre_finalize_data_size): New function.
4721         (Output_data::update_data_size): New function.
4722         (Output_section_headers::update_data_size): new function.
4723         (Output_section_data_build::current_data_size): Move to Output_data.
4724         (Output_data_strtab::update_data_size): New function.
4725         (Output_section::current_data_size): Move to Output_data.
4726         (Output_section::set_fixed_layout): New function.
4727         (Output_section::has_fixed_layout): New function.
4728         (Output_section::reserve): New function.
4729         (Output_section::update_data_size): New function.
4730         (Output_section::has_fixed_layout_): New data member.
4731         (Output_section::free_list_): New data member.
4732         (Output_segment::set_section_addresses): Remove const.
4733         (Output_segment::set_section_list_addresses): Remove const.
4734         * plugin.cc (Sized_pluginobj::do_for_all_local_got_entries):
4735         New function.
4736         * plugin.h (Sized_pluginobj::do_for_all_local_got_entries):
4737         New function.
4738         * readsyms.cc (Read_symbols::do_read_symbols): Add library
4739         parameter when calling Add_symbols constructor; store argument
4740         serial number for members of a lib group.
4741         (Add_symbols::locks): Allow case where token == NULL.
4742         (Add_symbols::run): Report libraries denoted by --start-lib/--end-lib.
4743         (Read_member::~Read_member): New function.
4744         (Read_member::is_runnable): New function.
4745         (Read_member::locks): New function.
4746         (Read_member::run): New function.
4747         (Check_script::~Check_script): New function.
4748         (Check_script::is_runnable): New function.
4749         (Check_script::locks): New function.
4750         (Check_script::run): New function.
4751         (Check_library::~Check_library): New function.
4752         (Check_library::is_runnable): New function.
4753         (Check_library::locks): New function.
4754         (Check_library::run): New function.
4755         * readsyms.h (Add_symbols::Add_symbols): Add library parameter.
4756         (Add_symbols::library_): New data member.
4757         (class Read_member): New class.
4758         (class Check_script): New class.
4759         (class Check_library): New class.
4760         * reloc.cc (Read_relocs::is_runnable): Allow case where
4761         token == NULL.
4762         (Read_relocs::locks): Likewise.
4763         (Scan_relocs::locks): Likewise.
4764         (Relocate_task::locks): Likewise.
4765         (Sized_relobj::do_scan_relocs): Tell finalize_incremental_relocs
4766         to clear counters.
4767         (Sized_relobj::incremental_relocs_scan): Fix comment.
4768         (Sized_relobj::do_relocate): Pass output file offset to
4769         write_local_symbols.
4770         (Sized_relobj::incremental_relocs_write_reltype): Use reloc_size
4771         from class declaration.
4772         * script.cc (read_input_script): Allocate Script_info; pass
4773         argument serial number to report_script.
4774         * script.h (class Script_info): Move to incremental.h.
4775         * symtab.cc (Symbol_table::add_from_incrobj): New function.
4776         * symtab.h (Symbol_table::add_from_incrobj): New function.
4777         (Symbol_table::set_file_offset): New function.
4778
4779 2011-04-05  Cary Coutant  <ccoutant@google.com>
4780
4781         * incremental-dump.cc (dump_incremental_inputs): Change signature
4782         to take a Sized_incremental_binary; change caller.  Use readers
4783         in Sized_incremental_binary.
4784         * incremental.cc
4785         (Sized_incremental_binary::find_incremental_inputs_sections):
4786         Rename do_find_incremental_inputs_sections to this.
4787         (Sized_incremental_binary::setup_readers): New function.
4788         (Sized_incremental_binary::do_check_inputs): Check
4789         has_incremental_info_ flag; move setup code to setup_readers;
4790         use input readers.
4791         (Sized_incremental_binary::do_file_is_unchanged): New function.
4792         (Sized_incremental_binary::do_get_input_reader): New function.
4793         * incremental.h (class Incremental_binary): Move to end of file.
4794         (Incremental_binary::file_is_unchanged): New function.
4795         (Incremental_binary::do_file_is_unchanged): New function.
4796         (Incremental_binary::Input_reader): New class.
4797         (Incremental_binary::get_input_reader): New function.
4798         (class Sized_incremental_binary): Move to end of file.
4799         (Sized_incremental_binary::Sized_incremental_binary): Setup the
4800         input section reader classes.
4801         (Sized_incremental_binary::has_incremental_info): New function.
4802         (Sized_incremental_binary::inputs_reader): New function.
4803         (Sized_incremental_binary::symtab_reader): New function.
4804         (Sized_incremental_binary::relocs_reader): New function.
4805         (Sized_incremental_binary::got_plt_reader): New function.
4806         (Sized_incremental_binary::do_file_is_unchanged): New function.
4807         (Sized_incremental_binary::Sized_input_reader): New class.
4808         (Sized_incremental_binary::get_input_reader): New function.
4809         (Sized_incremental_binary::find_incremental_inputs_sections):
4810         Rename do_find_incremental_inputs_sections to this.
4811         (Sized_incremental_binary::setup_readers): New function.
4812         (Sized_incremental_binary::has_incremental_info_): New data member.
4813         (Sized_incremental_binary::inputs_reader_): New data member.
4814         (Sized_incremental_binary::symtab_reader_): New data member.
4815         (Sized_incremental_binary::relocs_reader_): New data member.
4816         (Sized_incremental_binary::got_plt_reader_): New data member.
4817         (Sized_incremental_binary::current_input_file_): New data member.
4818
4819 2011-04-05  Paul Pluzhnikov  <ppluzhnikov@google.com>
4820
4821         PR gold/12640
4822         * dwarf_reader.cc (Sized_dwarf_line_info): Fix vector bounds
4823         violation.
4824
4825 2011-03-30  Cary Coutant  <ccoutant@google.com>
4826
4827         * archive.cc (Archive::include_member): Adjust call to report_object.
4828         (Add_archive_symbols::run): Add script_info to call to
4829         report_archive_begin.
4830         (Lib_group::include_member): Adjust call to report_object.
4831         (Add_lib_group_symbols::run): Adjust call to report_object.
4832         * incremental-dump.cc (dump_incremental_inputs): Remove unnecessary
4833         blocks.  Add object count for script input files.
4834         * incremental.cc (Incremental_inputs::report_archive_begin): Add
4835         script_info parameter; change all callers.
4836         (Incremental_inputs::report_object): Add script_info parameter;
4837         change all callers.
4838         (Incremental_inputs::report_script): Store backpointer to
4839         incremental info entry.
4840         (Output_section_incremental_inputs::set_final_data_size): Record
4841         additional information for scripts.
4842         (Output_section_incremental_inputs::write_info_blocks): Likewise.
4843         * incremental.h (Incremental_script_entry::add_object): New function.
4844         (Incremental_script_entry::get_object_count): New function.
4845         (Incremental_script_entry::get_object): New function.
4846         (Incremental_script_entry::objects_): New data member; adjust
4847         constructor.
4848         (Incremental_inputs::report_archive_begin): Add script_info parameter.
4849         (Incremental_inputs::report_object): Add script_info parameter.
4850         (Incremental_inputs_reader::get_object_count): New function.
4851         (Incremental_inputs_reader::get_object_offset): New function.
4852         * options.cc (Input_arguments::add_file): Return reference to
4853         new input argument.
4854         * options.h (Input_argument::set_script_info): New function.
4855         (Input_argument::script_info): New function.
4856         (Input_argument::script_info_): New data member; adjust all
4857         constructors.
4858         (Input_file_group::add_file): Return reference to new input argument.
4859         (Input_file_lib::add_file): Likewise.
4860         (Input_arguments::add_file): Likewise.
4861         * readsyms.cc (Add_symbols::run): Adjust call to report_object.
4862         * script.cc (Parser_closure::Parser_closure): Add script_info
4863         parameter; adjust all callers.
4864         (Parser_closure::script_info): New function.
4865         (Parser_closure::script_info_): New data member.
4866         (read_input_script): Report scripts earlier to incremental info.
4867         (script_add_file): Set script_info in Input_argument.
4868         (script_add_library): Likewise.
4869         * script.h (Script_options::Script_info): Rewrite class.
4870
4871 2011-03-29  Cary Coutant  <ccoutant@google.com>
4872
4873         * archive.cc (Library_base::should_include_member): Move
4874         method here from class Archive.
4875         (Archive::Archive): Initialize base class.
4876         (Archive::should_include_member): Move to base class.
4877         (Archive::do_for_all_unused_symbols): New function.
4878         (Add_archive_symbols::run): Remove redundant access to
4879         incremental_inputs.
4880         (Lib_group::Lib_group): Initialize base class.
4881         (Lib_group::do_filename): New function.
4882         (Lib_group::include_member): Pass pointer to Lib_group to
4883         report_object.
4884         (Lib_group::do_for_all_unused_symbols): New function.
4885         (Add_lib_group_symbols::run): Report archive information for
4886         incremental links.
4887         * archive.h (class Library_base): New base class.
4888         (class Archive): Derive from Library_base.
4889         (Archive::filename): Move to base class.
4890         (Archive::set_incremental_info): Likewise.
4891         (Archive::incremental_info): Likewise.
4892         (Archive::Should_include): Likewise.
4893         (Archive::should_include_member): Likewise.
4894         (Archive::Armap_entry): Remove.
4895         (Archive::Unused_symbol_iterator): Remove.
4896         (Archive::unused_symbols_begin): Remove.
4897         (Archive::unused_symbols_end): Remove.
4898         (Archive::do_filename): New function.
4899         (Archive::do_get_mtime): New function.
4900         (Archive::do_for_all_unused_symbols): New function.
4901         (Archive::task_): Move to base class.
4902         (Archive::incremental_info_): Likewise.
4903         (class Lib_group): Derive from Library_base.
4904         (Lib_group::do_filename): New function.
4905         (Lib_group::do_get_mtime): New function.
4906         (Lib_group::do_for_all_unused_symbols): New function.
4907         (Lib_group::task_): Move to base class.
4908         * dynobj.cc (Sized_dynobj::do_for_all_global_symbols): New
4909         function.
4910         * dynobj.h (Sized_dynobj::do_for_all_global_symbols): New
4911         function.
4912         * incremental.cc (Incremental_inputs::report_archive_begin):
4913         Use Library_base; call library's get_mtime; add incremental inputs
4914         entry before members.
4915         (class Unused_symbol_visitor): New class.
4916         (Incremental_inputs::report_archive_end): Use Library_base; use
4917         visitor class to record unused symbols; don't add incremental inputs
4918         entry after members.
4919         (Incremental_inputs::report_object): Use Library_base.
4920         * incremental.h
4921         (Incremental_archive_entry::Incremental_archive_entry): Remove
4922         unused Archive parameter.
4923         (Incremental_inputs::report_archive_begin): Use Library_base.
4924         (Incremental_inputs::report_archive_end): Likewise.
4925         (Incremental_inputs::report_object): Likewise.
4926         * object.cc (Sized_relobj::do_for_all_global_symbols): New
4927         function.
4928         * object.h (Object::for_all_global_symbols): New function.
4929         (Object::do_for_all_global_symbols): New function.
4930         (Sized_relobj::do_for_all_global_symbols): New function.
4931         * plugin.cc (Sized_pluginobj::do_for_all_global_symbols):  New
4932         function.
4933         * plugin.h (Sized_pluginobj::do_for_all_global_symbols):  New
4934         function.
4935
4936 2011-03-27  Ian Lance Taylor  <iant@google.com>
4937
4938         * archive.cc (Archive::interpret_header): Return -1 if something
4939         goes wrong.  Change callers accordingly.
4940
4941 2011-03-25  Cary Coutant  <ccoutant@google.com>
4942
4943         * testsuite/Makefile.am (final_layout.stdout): Use -n option with nm.
4944         * testsuite/Makefile.in: Regenerate.
4945
4946 2011-03-23  Rafael Ávila de Espíndola <respindola@mozilla.com>
4947
4948         * plugin.cc (get_view): New.
4949         (Plugin::load): Pass get_view to the plugin.
4950         (Plugin_manager::get_view): New.
4951
4952 2011-03-21  Ian Lance Taylor  <iant@google.com>
4953
4954         * testsuite/final_layout.sh: Rewrite to not use dc.
4955         * testsuite/relro_test.sh: Fail if dc is not present.
4956
4957 2011-03-21  Sriraman Tallam  <tmsriram@google.com>
4958
4959         * testsuite/icf_safe_so_test.sh: Add #!/bin/sh to start.
4960         Change == to -eq.
4961         * testsuite/icf_string_merge_test.sh: Add #!/bin/sh to start.
4962         * testsuite/icf_safe_test.sh: Add #!/bin/sh to start.
4963         Change == to -eq.
4964         * testsuite/icf_sht_rel_addend_test.sh: Add #!/bin/sh to start.
4965         * testsuite/icf_preemptible_functions_test.sh: Add #!/bin/sh to start.
4966
4967 2011-03-14  Ian Lance Taylor  <iant@google.com>
4968
4969         * script-sections.cc (Sort_output_sections::script_compare):
4970         Rename from is_before, change return type.
4971         (Sort_output_sections::operator()): Adjust accordingly.
4972
4973 2011-03-11  Jeffrey Yasskin  <jyasskin@google.com>
4974
4975         PR gold/12572
4976         * testsuite/odr_violation2.cc: Add comment to make all error line
4977         numbers double digits.
4978         * testsuite/debug_msg.sh: Adjust expected errors.
4979
4980 2011-03-09  Jeffrey Yasskin  <jyasskin@google.com>
4981
4982         * dwarf_reader.cc (Sized_dwarf_line_info): Include all lines,
4983         but mark earlier ones as non-canonical
4984         (offset_to_iterator): Update search target and example
4985         (do_addr2line): Return extra lines in a vector*
4986         (format_file_lineno): Extract from do_addr2line
4987         (one_addr2line): Add vector* out-param
4988         * dwarf_reader.h (Offset_to_lineno_entry): New field recording
4989         when a lineno entry appeared last for its instruction
4990         (Dwarf_line_info): Add vector* out-param
4991         * object.cc (Relocate_info): Pass NULL for the vector* out-param
4992         * symtab.cc (Odr_violation_compare): Include the lineno in the
4993         comparison again.
4994         (linenos_from_loc): New. Combine the canonical line for an
4995         address with its other lines.
4996         (True_if_intersect): New. Helper functor to make
4997         std::set_intersection a query.
4998         (detect_odr_violations): Compare sets of lines instead of just
4999         one line for each function. This became less deterministic, but
5000         has fewer false positives.
5001         * symtab.h: Declarations.
5002         * testsuite/Makefile.am (odr_violation2.o): Compile with -O2 to
5003         mix an optimized and non-optimized object in the same binary
5004         (odr_violation2.so): Same.
5005         * testsuite/Makefile.in: Regenerate from Makefile.am.
5006         * testsuite/debug_msg.cc (main): Make OdrDerived classes.
5007         * testsuite/debug_msg.sh: Update line numbers and add
5008         assertions.
5009         * testsuite/odr_violation1.cc: Use OdrDerived, in a
5010         non-optimized context.
5011         * testsuite/odr_violation2.cc: Make sure Ordering::operator()
5012         isn't inlined, and use OdrDerived in an optimized context.
5013         * testsuite/odr_header1.h: Defines OdrDerived, where
5014         optimization will change the
5015         first-instruction-in-the-destructor's file and line number.
5016         * testsuite/odr_header2.h: Defines OdrBase.
5017
5018 2011-03-09  Ian Lance Taylor  <iant@google.com>
5019
5020         * fileread.cc (File_read::clear_views): Don't delete the whole
5021         file view.
5022
5023 2011-03-08  Ian Lance Taylor  <iant@google.com>
5024
5025         PR gold/12525
5026         * fileread.cc: #include <climits>.
5027         (GOLD_IOV_MAX): Define.
5028         (File_read::read_multiple): Limit number of entries by iov_max.
5029         * fileread.h (class File_read): Always set max_readv_entries to
5030         128.
5031
5032 2011-03-07  Ian Lance Taylor  <iant@google.com>
5033
5034         PR gold/12525
5035         * options.h (class General_options): Add -dy and -dn.
5036
5037 2011-03-02  Cary Coutant  <ccoutant@google.com>
5038
5039         * testsuite/script_test_9.t: Add TLS segment.
5040
5041 2011-03-02  Simon Baldwin  <simonb@google.com>
5042
5043         * configure.ac: Add check for gnu_indirect_function support in
5044         the toolchain building binutils.
5045         * configure: Rebuild.
5046
5047 2011-02-18  Rafael Ávila de Espíndola <respindola@mozilla.com>
5048
5049         * symtab.cc (Symbol::should_add_dynsym_entry) Return false for
5050         plugin only symbols.
5051         (Symbol_table::sized_finalize_symbol) Mark symbol only present
5052         in plugin files as not needed in the symbol table.
5053
5054 2011-02-11  Sriraman Tallam  <tmsriram@google.com>
5055
5056         * output.cc (Output_section::add_input_section): Delay fill
5057         generation for section ordering.
5058
5059 2011-02-09  Ian Lance Taylor  <iant@google.com>
5060
5061         PR gold/12316
5062         * object.h (class Sized_relobj): Remove clear_local_symbols.
5063         * reloc.cc (Sized_relobj::do_relocate): Don't call
5064         clear_local_symbols.
5065
5066 2011-02-08  Rafael Ávila de Espíndola <respindola@mozilla.com>
5067
5068         * plugin.cc (is_visible_from_outside): Return true for symbols
5069         in the -u option.
5070
5071 2011-02-04  Jeffrey Yasskin  <jyasskin@google.com>
5072
5073         * symtab.cc (Odr_violation_compare::operator()): Sort by just the
5074         filename.
5075
5076 2011-02-02  Sriraman Tallam  <tmsriram@google.com>
5077
5078         * icf.h (is_section_foldable_candidate): Change type of parameter
5079         to std::string.
5080         * icf.cc (Icf::find_identical_sections): Change type of local variable
5081         section_name to be std::string.
5082         (is_function_ctor_or_dtor): Change type of parameter to std::string.
5083
5084 2011-01-25  Ian Lance Taylor  <iant@google.com>
5085
5086         * script.cc (script_add_extern): Rewrite to use
5087         add_symbol_reference.
5088
5089 2011-01-25  Doug Kwan  <dougkwan@google.com>
5090
5091         * icf.cc (get_section_contents): Always lock section's object.
5092
5093 2011-01-24  Ian Lance Taylor  <iant@google.com>
5094
5095         * options.h (class General_options): Accept
5096         --no-detect-odr-violations.
5097
5098 2011-01-24  Ian Lance Taylor  <iant@google.com>
5099
5100         * version.cc (version_string): Bump to 1.11.
5101
5102 2011-01-24  Ian Lance Taylor  <iant@google.com>
5103
5104         * plugin.cc (class Plugin_rescan): Define new class.
5105         (Plugin_manager::claim_file): Set any_claimed_.
5106         (Plugin_manager::save_archive): New function.
5107         (Plugin_manager::save_input_group): New function.
5108         (Plugin_manager::all_symbols_read): Create Plugin_rescan task if
5109         necessary.
5110         (Plugin_manager::new_undefined_symbol): New function.
5111         (Plugin_manager::rescan): New function.
5112         (Plugin_manager::rescannable_defines): New function.
5113         (Plugin_manager::add_input_file): Set any_added_.
5114         * plugin.h (class Plugin_manager): define new fields rescannable_,
5115         undefined_symbols_, any_claimed_, and any_added_.  Declare
5116         Plugin_rescan as friend.  Declare new functions.
5117         (Plugin_manager::Rescannable): Define type.
5118         (Plugin_manager::Rescannable_list): Define type.
5119         (Plugin_manager::Undefined_symbol_list): Define type.
5120         (Plugin_manager::Plugin_manager): Initialize new fields.
5121         * archive.cc (Archive::defines_symbol): New function.
5122         (Add_archive_symbols::run): Pass archive to plugins if any.
5123         * archive.h (class Archive): Declare defines_symbol.
5124         * readsyms.cc (Input_group::~Input_group): New function.
5125         (Finish_group::run): Pass input_group to plugins if any.
5126         * readsyms.h (class Input_group): Declare destructor.
5127         * symtab.cc (add_from_object): Pass undefined symbol to plugins if
5128         any.
5129
5130 2011-01-10  Ian Lance Taylor  <iant@google.com>
5131
5132         * layout.cc (Layout::layout_eh_frame): Mark a writable .eh_frame
5133         section as relro.
5134         (Layout::set_segment_offsets): Reset increase_relro before calling
5135         set_section_addresses a second time.
5136
5137 2011-01-04  Cary Coutant  <ccoutant@google.com>
5138
5139         * script-sections.cc (Sort_output_sections::operator()): Sort TLS
5140         sections before NOBITS sections.
5141
5142 2011-01-01  H.J. Lu  <hongjiu.lu@intel.com>
5143
5144         * version.cc (print_version): Update copyright to 2011.
5145
5146 2010-12-23  Cary Coutant  <ccoutant@google.com>
5147
5148         * output.h (Output_data_reloc::add_output_section): Pass OD instead
5149         of OS to this->add.  Add OD parameter to second form of the function.
5150
5151 2010-12-20  Ian Lance Taylor  <iant@google.com>
5152
5153         * dwarf_reader.cc (Sized_dwarf_line_info::read_lines): Only keep
5154         second of two consecutive entries with same offset.
5155
5156 2010-12-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5157
5158         * testsuite/Makefile.am (ifuncmain2static_LDADD)
5159         (ifuncmain2_LDADD, ifuncmain4static_LDADD, ifuncmain4_LDADD)
5160         (ifuncmain7static_LDADD, ifuncmain7_LDADD): New empty variables,
5161         to avoid unneeded links against $(LDADD).
5162         * testsuite/Makefile.in: Regenerate.
5163
5164 2010-12-15  Ian Lance Taylor  <iant@google.com>
5165
5166         PR gold/12324
5167         * x86_64.cc (Target_x86_64::Scan::check_non_pic): Give an error
5168         for R_X86_64_32 and R_X86_64_PC32.
5169         * testsuite/Makefile.am (ver_matching_def.so): Depend on and use
5170         ver_matching_def_pic.o.
5171         (ver_matching_def_pic.o): New target.
5172
5173 2010-12-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5174
5175         * fileread.cc (file_counts_lock, file_counts_initialize_lock)
5176         (total_mapped_bytes, current_mapped_bytes, maximum_mapped_bytes):
5177         Move definition before File_read::View member definitions.
5178         (File_read::View::~View): Initialize and hold lock before
5179         updating current_mapped_bytes.
5180
5181 2010-12-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5182
5183         * dwarf_reader.cc: Remove outdated comment.
5184         * gold-threads.cc: Fix typo in error message.
5185         * archive.cc: Fix typos in comments.
5186         * archive.h: Likewise.
5187         * arm-reloc-property.cc: Likewise.
5188         * arm-reloc-property.h: Likewise.
5189         * arm-reloc.def: Likewise.
5190         * arm.cc: Likewise.
5191         * attributes.h: Likewise.
5192         * cref.cc: Likewise.
5193         * ehframe.cc: Likewise.
5194         * fileread.h: Likewise.
5195         * gold.h: Likewise.
5196         * i386.cc: Likewise.
5197         * icf.cc: Likewise.
5198         * incremental.h: Likewise.
5199         * int_encoding.cc: Likewise.
5200         * layout.h: Likewise.
5201         * main.cc: Likewise.
5202         * merge.h: Likewise.
5203         * object.cc: Likewise.
5204         * object.h: Likewise.
5205         * options.cc: Likewise.
5206         * readsyms.cc: Likewise.
5207         * reduced_debug_output.cc: Likewise.
5208         * reloc.cc: Likewise.
5209         * script-sections.cc: Likewise.
5210         * sparc.cc: Likewise.
5211         * symtab.h: Likewise.
5212         * target-reloc.h: Likewise.
5213         * target.cc: Likewise.
5214         * target.h: Likewise.
5215         * timer.cc: Likewise.
5216         * timer.h: Likewise.
5217         * x86_64.cc: Likewise.
5218
5219 2010-12-09  Cary Coutant  <ccoutant@google.com>
5220
5221         * layout.cc (Layout::layout_gnu_stack): Add warnings for executable
5222         stack.
5223         * layout.h (Layout::layout_gnu_stack): Add pointer to Object
5224         parameter; change all callers.
5225         * object.cc (Sized_relobj::do_layout): Adjust call to layout_gnu_stack.
5226         * options.h (warn_execstack): New option.
5227
5228 2010-12-07  Doug Kwan  <dougkwan@google.com>
5229
5230         * arm.cc (Target_arm::Scan::get_reference_flags): Treat R_ARM_PREL31
5231         like function call relocations.
5232
5233 2010-12-07  Ian Lance Taylor  <iant@google.com>
5234
5235         * archive.cc (Archive::get_elf_object_for_member): Permit
5236         punconfigured to be NULL.
5237         (Archive::read_symbols): Pass NULL to get_elf_object_for_member.
5238         (Archive::include_member): Pass NULL to get_elf_object_for_member
5239         if we searched for the archive and this is the first included
5240         object.
5241
5242 2010-12-01  Ian Lance Taylor  <iant@google.com>
5243
5244         * dwarf_reader.h (class Sized_dwarf_line_info): Add
5245         track_relocs_type_ field.
5246         * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
5247         Set track_relocs_type_.
5248         (Sized_dwarf_line_info::process_one_opcode): Ignore the section
5249         contents when using RELA relocs.
5250         (Sized_dwarf_line_info::read_relocs): Add the reloc addend to
5251         reloc_map_.
5252         * reloc.cc (Track_relocs::next_addend): New function.
5253         * reloc.h (class Track_relocs): Declare next_addend.
5254
5255 2010-12-01  Ian Lance Taylor  <iant@google.com>
5256
5257         * testsuite/icf_virtual_function_folding_test.cc (class Bar): Add
5258         virtual destructor.
5259
5260 2010-12-01  Ian Lance Taylor  <iant@google.com>
5261
5262         * README: Update compilers known to work and fail.
5263
5264 2010-11-23  Matthias Klose  <doko@ubuntu.com>
5265
5266         * configure.in: For --enable-gold, handle value `default' instead of
5267         `both*'.  Always install ld as ld.bfd, install as ld if gold is
5268         not the default.
5269         * configure: Regenerate.
5270
5271 2010-11-18  Doug Kwan  <dougkwan@google.com>
5272
5273         * expression.cc (BINARY_EXPRESSION): Initialize left_alignment
5274         and right_alignment to be zero.  Store result alignment only if it is
5275         greater than existing alignment.
5276
5277 2010-11-16  Cary Coutant  <ccoutant@google.com>
5278
5279         PR gold/12220
5280         * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
5281         Check for ".zdebug_line".
5282
5283 2010-11-16  Doug Kwan  <dougkwan@google.com>
5284             Cary Coutant  <ccoutant@google.com>
5285
5286         * output.h (Output_segment::set_section_addresses): Pass increase_relro
5287         by reference; adjust all callers.
5288         * output.cc (Output_segment::set_section_addresses): Adjust references
5289         to increase_relro. Add padding to *increase_relro when ORDER_RELRO_LAST
5290         list is empty.
5291         (Output_segment::set_offset): Assert if PT_GNU_RELRO segment does not
5292         end at page boundary.
5293
5294 2010-11-16  Cary Coutant  <ccoutant@google.com>
5295
5296         PR gold/12220
5297         * layout.cc (Layout::choose_output_section): Transform names of
5298         compressed sections even when using a script with a SECTIONS clause.
5299         (Layout::output_section_name): Remove code to transform
5300         compressed debug section names.
5301         * output.cc (Output_section::add_input_section): Use uncompressed
5302         section size when tracking input sections.
5303
5304 2010-11-11  Richard Sandiford  <richard.sandiford@linaro.org>
5305
5306         * symtab.h (Symbol::NON_PIC_REF): Remove.
5307         (Symbol::RELATIVE_REF, Symbol::TLS_REF): New Reference_flags.
5308         (Symbol::FUNCTION_CALL): Renumber.  Reword comment.
5309         (Symbol::needs_dynamic_reloc): Don't check NON_PIC_REF.
5310         (Symbol::use_plt_offset): Take a flags argument and pass it
5311         directly to needs_dynamic_reloc.  Restrict check for undefined
5312         weak symbols to function calls.
5313         * arm.cc (Target_arm::Scan::get_reference_flags): New function.
5314         (Target_arm::Scan::global): Use it.
5315         (Target_arm::Scan::scan_reloc_for_stub): Likewise.
5316         (Target_arm::Relocate::relocate): Likewise.
5317         (Target_arm::Relocate::should_apply_static_reloc): Replace flags
5318         parameter with an r_type parameter.  Use get_reference_flags
5319         to get the flags.
5320         (Target_arm::Relocate::relocate): Update accordingly.
5321         * i386.cc (Target_i386::Scan::get_reference_flags): New function.
5322         (Target_i386::Scan::reloc_needs_plt_for_ifunc): Use it.
5323         (Target_i386::Scan::global): Likewise.
5324         (Target_i386::Relocate::relocate): Likewise.
5325         (Target_i386::Relocate::should_apply_static_reloc): Replace flags
5326         parameter with an r_type parameter.  Use get_reference_flags
5327         to get the flags.
5328         (Target_i386::Relocate::relocate): Update accordingly.
5329         * powerpc.cc (Target_powerpc::Scan::get_reference_flags): New function.
5330         (Target_powerpc::Scan::global): Use it.
5331         (Target_powerpc::Scan::scan_reloc_for_stub): Likewise.
5332         (Target_powerpc::Relocate::relocate): Likewise.
5333         * sparc.cc (Target_sparc::Scan::get_reference_flags): New function.
5334         (Target_sparc::Scan::global): Use it.
5335         (Target_sparc::Scan::scan_reloc_for_stub): Likewise.
5336         (Target_sparc::Relocate::relocate): Likewise.
5337         * x86_64.cc (Target_x86_64::Scan::get_reference_flags): New function.
5338         (Target_x86_64::Scan::reloc_needs_plt_for_ifunc): Use it.
5339         (Target_x86_64::Scan::global): Likewise.
5340         (Target_x86_64::Relocate::relocate): Likewise.
5341
5342 2010-11-08  Doug Kwan  <dougkwan@google.com>
5343             Cary Coutant  <ccoutant@google.com>
5344
5345         * arm.cc (Arm_exidx_merge_section::build_contents): New method.
5346         (Arm_exidx_merge_section::section_contents_): New data member.
5347         (Arm_input_section::Arm_input_section): Initialize original_contents_.
5348         (Arm_input_section::~Arm_input_section): De-allocate memory.
5349         (Arm_input_section::original_contents_): New data member.
5350         (Arm_exidx_fixup::process_exidx_section): Pass EXIDX section contents
5351         in parameters instead of calling Object::section_contents without
5352         locking.
5353         (Arm_output_section::group_section): New parameter TASK.  Pass it
5354         to callees that need locking objects.
5355         (Arm_output_section::fix_exidx_coverage): New parameter TASK.  Use it
5356         to lock EXIDX input sections.  Fix a formatting issue.  Call
5357         Arm_exidx_merged_section::build_contents to create merged section
5358         contents.
5359         (Arm_output_section::create_stub_group): New parameter TASK.  Use it
5360         to lock object of stub table owner.
5361         (Arm_exidx_input_section::Arm_exidx_input_section): Add new parameter
5362         TEXT_SIZE to initialize data member TEXT_SIZE_.
5363         (Arm_exidx_input_section::addralign): Fix typo in comment.
5364         (Arm_exidx_input_section::text_size): New method.
5365         (Target_arm::do_relax): New parameter TASK.  Pass it to callees
5366         that require locking objects.  Lock objects before scanning for stubs
5367         and updating local symbols.
5368         (Arm_input_section<big_endian>::init): Copy contents of original
5369         input section.
5370         (Arm_input_section<big_endian>::do_write): Use saved contents of
5371         original input section instead of calling Object::section_contents
5372         without locking.
5373         (Arm_exidx_cantunwind::do_fixed_endian_write): Find out text section
5374         size without calling Object::section_size().
5375         (Arm_exidx_merged_section::Arm_exidx_merged_section): Add sanity check
5376         for size.  Allocate a buffer for merged EXIDX entries.
5377         (Arm_exidx_merged_section::build_contents): New method.
5378         (Arm_exidx_merged_section::do_write): Move merge section contents
5379         building code to Arm_exidx_merged_section::build_contetns.  Write
5380         out contetns in buffer instead of building it on the fly.
5381         (Arm_relobj::make_exidx_input_section): Also pass text section size
5382         to Arm_exidx_input_section constructor.
5383         (Arm_relobj::do_read_symbols): Fix memory leak.  Fix a formatting issue.
5384         (Arm_dynobj::do_read_symbols): Fix memory leak.
5385         * layout.cc (Layout::finalize): Pass TASK to Target::relax().
5386         * target.h: (class Task): Add forward declaration.
5387         (Target::relax): Add new parameter TASK and pass it to
5388         Target::do_relax().
5389         (Target::do_relax):: New parameter TASK.  Fix a formatting issue.
5390
5391 2010-11-05  Cary Coutant  <ccoutant@google.com>
5392
5393         PR gold/10708
5394         * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Hold a lock on the
5395         object when reading from the file.
5396         * gold.cc (queue_middle_tasks): Hold a lock on the object when doing
5397         second layout pass.
5398         * icf.cc (preprocess_for_unique_sections): Hold a lock on the object
5399         when reading section contents.
5400         (get_section_contents): Likewise.
5401         (icf::find_identical_sections): Likewise.
5402         * mapfile.cc (Mapfile::print_discarded_sections): Hold a lock on the
5403         object when reading from the file.
5404         * plugin.cc (Plugin_manager::layout_deferred_objects): Hold a lock on
5405         the object when doing deferred section layout.
5406
5407 2010-11-03  Nick Clifton  <nickc@redhat.com>
5408
5409         PR gold/12001
5410         * script.h (class Symbol_assignment: name): New member.  Returns
5411         the name of the symbol.
5412         * scrfipt.cc (Script_options::is_pending_assignment): New member.
5413         Returns true if the given symbol name is on the list of
5414         assignments wating to be processed.
5415         * archive.cc (should_incldue_member): If the symbol is undefined,
5416         check to see if it is on the list of symbols pending assignment.
5417
5418 2010-11-03  Ryan Mansfield  <rmansfield@qnx.com>
5419
5420         * script-sections.cc (Script_sections::find_memory_region): Check
5421         for a NULL output section pointer.
5422
5423 2010-10-29  Doug Kwan  <dougkwan@google.com>
5424
5425         * arm.cc (Arm_outout_section::fix_exidx_coverage): Adjust call to
5426         Output_section::add_relaxed_input_section.
5427         * output.cc (Output_section::add_relaxed_input_section): Add new
5428         arguments LAYOUT and NAME.  Set section order index.
5429         (Output_section::convert_input_sections_in_list_to_relaxed_sections):
5430         Copy section order index.
5431         * output.h (Output_section::add_relaxed_input_section): Add new
5432         arguments LAYOUT and NAME.
5433
5434 2010-10-29  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
5435
5436         * testsuite/Makefile.am: Move gcctestdir/ld rule to
5437         NATIVE_OR_CROSS_LINKER.
5438         * testsuite/Makefile.in: Regenerate.
5439
5440 2010-10-20  Doug Kwan  <dougkwan@google.com>
5441
5442         * arm.cc (Arm_relobj::do_read_symbols): Warn about ARM EXIDX sections
5443         without SHF_LINK_ORDER flags.
5444         * layout.cc (Layout::choose_output_section): Do not filter
5445         SHF_LINK_ORDER flag in a relocatable link.
5446
5447 2010-10-17  Cary Coutant  <ccoutant@google.com>
5448
5449         * output.h (Output_segment::set_section_addresses): Change function
5450         signature.  Update all callers.
5451         * output.cc (Output_segment::is_first_section_relro): Ignore TLS
5452         sections.
5453         (Output_segment::set_section_addresses): Align after last TLS
5454         section.  Add padding before last relro section instead of after.
5455
5456 2010-10-17  Doug Kwan  <dougkwan@google.com>
5457
5458         * gold/arm.cc (Target_arm::got_section): Use correct order and set
5459         GOT output section to be writable.
5460
5461 2010-10-14  Cary Coutant  <ccoutant@google.com>
5462
5463         * debug.h (DEBUG_INCREMENTAL): New flag.
5464         (debug_string_to_enum): Add DEBUG_INCREMENTAL).
5465         * gold.cc (queue_initial_tasks): Check parameters for incremental link
5466         mode.
5467         * incremental.cc (report_command_line): Ignore all forms of
5468         --incremental.
5469         * layout.cc (Layout::Layout): Check parameters for incremental link
5470         mode.
5471         * options.cc (General_options::parse_incremental): New function.
5472         (General_options::parse_no_incremental): New function.
5473         (General_options::parse_incremental_full): New function.
5474         (General_options::parse_incremental_update): New function.
5475         (General_options::incremental_mode_): New data member.
5476         (General_options::finalize): Check incremental_mode_.
5477         * options.h (General_options): Update help text for --incremental.
5478         Add --no-incremental, --incremental-full, --incremental-update.
5479         (General_options::Incremental_mode): New enum type.
5480         (General_options::incremental_mode): New function.
5481         (General_options::incremental_mode_): New data member.
5482         * parameters.cc (Parameters::incremental_mode_): New data member.
5483         (Parameters::set_options): Set incremental_mode_.
5484         (Parameters::set_incremental_full): New function.
5485         (Parameters::incremental): New function.
5486         (Parameters::incremental_update): New function.
5487         (set_parameters_incremental_full): New function.
5488         * parameters.h (Parameters::set_incremental_full): New function.
5489         (Parameters::incremental): New function.
5490         (Parameters::incremental_update): New function.
5491         (Parameters::incremental_mode_): New data member.
5492         (set_parameters_incremental_full): New function.
5493         * plugin.cc (Plugin_manager::add_input_file): Check parameters for
5494         incremental link mode.
5495         * reloc.cc (Sized_relobj::do_read_relocs): Likewise.
5496         (Sized_relobj::do_relocate_sections): Likewise.
5497         * testsuite/Makefile.am (incremental_test): Use --incremental-full
5498         option.
5499         * testsuite/Makefile.in: Regenerate.
5500         * testsuite/incremental_test.sh: Filter all forms of --incremental.
5501
5502 2010-10-12  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
5503
5504         * script-sections.h (class Script_sections): Make
5505         Sections_elements typedef public.
5506         * script-sections.cc (class Sort_output_sections): Add elements_
5507         field.  Add constructor which sets it; change all callers.
5508         (Sort_output_sections::is_before): New function.
5509         (Sort_output_sections::operator()): Call is_before.
5510         * configure.ac (NATIVE_OR_CROSS_LINKER): New automake
5511         conditional.
5512         * testsuite/script_test_10.sh: New test. Test script section
5513         order.
5514         * testsuite/script_test_10.t: Likewise.
5515         * testsuite/script_test_10.s: Likewise.
5516         * testsuite/Makefile.am: Wrap the cross linker tests and the
5517         common tests into NATIVE_OR_CROSS_LINKER.
5518         (check_SCRIPTS): Add script_test_10.sh.
5519         (check_DATA): Add script_test_10.stdout.
5520         (script_test_10.o, script_test_10): New targets.
5521         (script_test_10.stdout): New target.
5522         * configure, testsuite/Makefile.in: Regenerate.
5523
5524 2010-10-12  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
5525
5526         * arm.cc (Target_arm::Scan::local): Report the unsupported reloc
5527         error for the deprecated relocations.
5528         (Target_arm::Scan::global): Likewise.
5529         (Target_arm::Relocate::relocate): Likewise.
5530
5531 2010-10-12  Richard Sandiford  <richard.sandiford@linaro.org>
5532
5533         * fileread.cc (Input_file::find_file): Initialize *found_name
5534         and *namep when using the fallback search for case 4.
5535
5536 2010-10-11  Cary Coutant  <ccoutant@google.com>
5537
5538         * options.h (class General_options): Redefine -z lazy as an alias for
5539         the negation of -z now.
5540
5541 2010-10-11  Ian Lance Taylor  <iant@google.com>
5542
5543         * resolve.cc (symbol_to_bits): Report the value of the unsupported
5544         binding.
5545
5546 2010-10-06  Nick Clifton  <nickc@redhat.com>
5547
5548         * script-sections.cc(class Memory_region): Remove
5549         current_lma_offset_ field.  Rename current_vma_offset_ to
5550         current_offset_.  Add last_section_ field.
5551         (Memory_region::get_current_vma_address): Rename to
5552         get_current_address.
5553         (Memory_region::get_current_lma_address): Delete.
5554         (Memory_region::increment_vma_offset): Rename to
5555         increment_offset.
5556         (Memory_region::increment_lma_offset): Delete.
5557         (Memory_region::attributes_compatible): New method.  Returns
5558         true if the provided section is compatible with the region.
5559         (Memory_region::get_last_section): New method.  Returns the last
5560         section to use the region.
5561         (Memory_region::set_last_section): New method.  Stores the last
5562         section to use the region.
5563         (Script_sections::block_in_region): New method.  Returns true if
5564         a block of memory is contained within a region.
5565         (Script_sections::find_memory_region): New method.  Locates a
5566         memory region to be used to set a VMA or LMA address.
5567         (Output_section_definition::set_section_addresses): Add code to
5568         check for addresses set by memory regions.
5569         (Output_segment::set_section_addresses): Remove memory region
5570         walking code.
5571         (Script_sections::create_segment): Add a warning if a header
5572         segment is created outside of any region.
5573         * script-sections.h (class Script_sections): Add prototypes for
5574         find_memory_region and block_in_region methods.
5575         * testsuite/memory_test.s: Use .long instead of .word.
5576         * testsuite/memory_test.t: Add some more output sections.
5577         * testsuite/memory_test.sh: Update expected output.
5578
5579 2010-10-02  Doug Kwan  <dougkwan@google.com>
5580
5581         * symtab.cc (Symbol_table::Symbol_table_hash::operator()): Move
5582         defintion to symtab.h
5583         * symtab.h (Symbol_table::Symbol_table_hash::operator()): Change
5584         declaration to defintion.
5585
5586 2010-10-01  Nick Clifton  <nickc@redhat.com>
5587
5588         * expression.cc (eval): Replace dummy argument with NULL.
5589         (eval_maybe_dot): Check for a NULL result section pointer.
5590         (Symbol_expression::value): Likewise.
5591         (Dot_expression::value): Likewise.
5592         (BINARY_EXPRESSION): Likewise.
5593         (Max_expression::value): Likewise.
5594         (Min_expression::value): Likewise.
5595         (Absolute_expression::value): Likewise.
5596         (Addr_expression::value_from_output_section): Likewise.
5597         (Loaddddr_expression::value_from_output_section): Likewise.
5598         (Segment_start_expression::value): Likewise.
5599         * script-sections.cc
5600         (Sections_elememt_dot_assignment::finalize_symbols): Replace dummy
5601         argument with NULL.
5602         (Sections_elememt_dot_assignment::set_section_addresses):
5603         Likewise.
5604         (Output_data_expression::do_write_to_buffer): Likewise.
5605         (Output_section_definition::finalize_symbols): Likewise.
5606         (Output_section_definition::set_section_addresses): Likewise.
5607
5608 2010-09-30  Doug Kwan  <dougkwan@google.com>
5609
5610         * gold/testsuite/arm_branch_out_of_range.sh: Fix broken tests.
5611
5612 2010-09-28  Sriraman Tallam  <tmsriram@google.com>
5613
5614         * target.h (Target::can_icf_inline_merge_sections): New virtual
5615         function.
5616         * x86_64.cc (Target__x86_64::can_icf_inline_merge_sections): New
5617         virtual function.
5618         * i386.cc (Target_i386::can_icf_inline_merge_sections): New
5619         virtual function.
5620         * icf.cc (get_section_contents): Inline merge sections only when
5621         target allows it.
5622
5623 2010-09-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5624
5625         * configure: Regenerate.
5626
5627 2010-09-17  Ian Lance Taylor  <iant@google.com>
5628
5629         * testsuite/memory_test.sh: Adjust for change of 2010-09-10.
5630         * testsuite/Makefile.am (memory_test.o): New target.
5631         (memory_test): Depend on memory_test.o, gcctestdir/ld, and
5632         memory_test.t.
5633         * testsuite/Makefile.in: Rebuild.
5634
5635 2010-09-17  Doug Kwan  <dougkwan@google.com>
5636
5637         * arm.cc (Target_arm::Relocate::relocate): Ignore symbol type and
5638         defintion if relocation uses GOT entries of the symbol.
5639         * testsuite/icf_safe_test.sh: Fix test.
5640         * testsuite/icf_safe_so_test.sh: Fix test.
5641
5642 2010-09-16  Cary Coutant  <ccoutant@google.com>
5643
5644         * script_sections.cc (class Memory_region): Remove "NULL" from
5645         vector initializations.
5646
5647 2010-09-15  Cary Coutant  <ccoutant@google.com>
5648
5649         * incremental.cc (Output_section_incremental_inputs::write_info_blocks):
5650         Resolve forwarding symbols.
5651
5652 2010-09-15  Doug Kwan  <dougkwan@google.com>
5653
5654         * gold/testsuite/script_test_3.t: Add ARM special sections.
5655         * gold/testsuite/script_test_4.t: Same.
5656         * gold/testsuite/script_test_5.t: Same.
5657         * gold/testsuite/script_test_6.t: Same.
5658         * gold/testsuite/script_test_7.t: Same.
5659         * gold/testsuite/script_test_7.t: Same.
5660         * gold/testsuite/thumb_blx_out_of_range.s: Fix instruction alignment.
5661
5662 2010-09-14  Cary Coutant  <ccoutant@google.com>
5663
5664         * x86_64.cc (Target_x86_64::saw_tls_block_reloc_): Remove member.
5665         (Target_x86_64::Relocate::relocate_tls): Replace check for
5666         saw_tls_block_reloc_ with test for executable section.
5667
5668 2010-09-12  Cary Coutant  <ccoutant@google.com>
5669
5670         * symtab.h (Symbol::needs_dynamic_reloc): Non-PIC calls from
5671         position-independent executables to shared libraries need dynamic
5672         relocations.
5673         (Symbol::may_need_copy_reloc): Do not generate COPY relocs in
5674         position-independent executables.
5675         * testsuite/Makefile.am (two_file_mixed_pie_test): New test.
5676         * testsuite/Makefile.in: Regenerate.
5677
5678 2010-09-10  Nick Clifton  <nickc@redhat.com>
5679
5680         PR gold/11997
5681         * testsuite/memory_test.t: Discard any sections that are not
5682         needed.
5683
5684 2010-09-09  H.J. Lu  <hongjiu.lu@intel.com>
5685
5686         PR gold/11996
5687         * object.cc (Sized_relobj::do_finalize_local_symbols): Remove
5688         "This::" to work around a bug in gcc 4.2.
5689
5690         * testsuite/ifuncmain7.c (foo_ifunc): Add __attribute__ ((used)).
5691
5692 2010-09-09  Rafael Espindola  <espindola@google.com>
5693
5694         * layout.cc (Layout::attach_allocated_section_to_segment): Don't put
5695         sections with different PF_X flags in the same segment.
5696         (Layout::find_first_load_seg): Search all segments to find the first
5697         one.
5698         * options.h (rosegment): New.
5699
5700 2010-09-08  Rafael Espindola  <espindola@google.com>
5701
5702         * layout.cc (Layout::set_segment_offsets): Always advance to a new page.
5703
5704 2010-09-08  Doug Kwan  <dougkwan@google.com>
5705
5706         * arm.cc (Arm_exidx_cantunwind::do_print_to_mapfile): New method.
5707         (Arm_relobj::do_relocate_sections): Add new parameter for output
5708         file to match the parent.
5709         (Target_arm::scan_reloc_section_for_stubs): Use would-be final values
5710         of local symbols instead of input values.  Update code to track
5711         changes in gold::relocate_section.
5712         * object.cc (Sized_relobj::compute_final_local_value): New methods.
5713         (Sized_relobj::compute_final_local_value_internal): New methods.
5714         (Sized_relobj::do_finalize_local_symbols): Move code from loop
5715         body into private version of Sized_relobj::compute_final_local_value.
5716         Call the inline method.
5717         * object.h (Symbol_value::Symbol_value): Define destructor.  Free
5718         merged symbol value if there is one.
5719         (Symbol_value::has_output_value): New method defintiion.
5720         (Sized_relobj::Compute_final_local_value_status): New enum type.
5721         (Sized_relobj::compute_final_local_value): New methods.
5722         (Sized_relobj::compute_final_local_value_internal): New methods.
5723         * Makefile.am (check_SCRIPTS): Add arm_branch_out_of_range.sh
5724         and arm_cortex_a8.sh.
5725         (thumb_bl_out_of_range_local, arm_cortex_a8_b_cond, arm_cortex_a8_bl,
5726         arm_cortex_a8_blx, arm_cortex_a8_local, arm_corte_a8_local_reloc):
5727         New tests.
5728         * Makefile.in: Regenerate.
5729         * testsuite/arm_bl_out_of_range.s: Update test.
5730         * testsuite/thumb_bl_out_of_range.s: Ditto.
5731         * testsuite/thumb_blx_out_of_range.s: Ditto.
5732         * testsuite/arm_branch_out_of_range.sh: New file.
5733         * testsuite/arm_cortex_a8.sh: Ditto.
5734         * testsuite/arm_cortex_a8_b.s: Ditto.
5735         * testsuite/arm_cortex_a8_b_cond.s: Ditto.
5736         * testsuite/arm_cortex_a8_b_local.s: Ditto.
5737         * testsuite/arm_cortex_a8_bl.s: Ditto.
5738         * testsuite/arm_cortex_a8_blx.s: Ditto.
5739         * testsuite/arm_cortex_a8_local.s: Ditto.
5740         * testsuite/arm_cortex_a8_local_reloc.s: Ditto.
5741         * testsuite/thumb_bl_out_of_range_local.s: Ditto.
5742
5743 2010-09-08  Rafael Espindola  <espindola@google.com>
5744
5745         * Makefile.am (memory_test.stdout): Run readelf with -W.
5746         * Makefile.in: Regenerate.
5747         * testsuite/memory_test.sh: Make the regexps accept both 32 and
5748         64 bit output.
5749
5750 2010-09-08  Rafael Espindola  <espindola@google.com>
5751
5752         * script-sections.cc (Script_sections::add_memory_region): Convert
5753         field precision to int.
5754         * script.cc (script_set_section_region, script_set_section_region):
5755         Convert field precision to int.
5756
5757 2010-09-08  Rafael Espindola  <espindola@google.com>
5758
5759         * arm.cc (do_finalize_sections): Create the __exidx_start and
5760         __exdix_end symbols even when the section is missing.
5761
5762 2010-09-08  Nick Clifton  <nickc@redhat.com>
5763
5764         * README: Remove claim that MEMORY is not supported.
5765         * expression.cc (script_exp_function_origin)
5766         (script_exp_function_length): Move from here to ...
5767         * script.cc: ... here.
5768         (script_set_section_region, script_add_memory)
5769         (script_parse_memory_attr, script_include_directive): New
5770         functions.
5771         * script-sections.cc
5772         (class Memory_region): New class.
5773         (class Output_section_definition): Add set_memory_region,
5774         set_section_vma, set_section_lma and get_section_name methods.
5775         (class Script_Sections): Add add_memory_region,
5776         find_memory_region, find_memory_region_origin,
5777         find_memory_region_length and set_memory_region methods.
5778         Have set_section_addresses method walk the list of set memory
5779         regions.
5780         Extend the print methos to display memory regions.
5781         * script-sections.h: Add prototypes for new methods.
5782         Add enum for MEMORY region attributes.
5783         * yyscript.y: Add support for parsing MEMORY regions.
5784         * script-c.h: Add prototypes for new functions.
5785         * testsuite/Makefile.am: Add test of MEMORY region functionality.
5786         * testsuite/Makefile.in: Regenerate.
5787         * testsuite/memory_test.sh: New script.
5788         * testsuite/memory_test.s: New assembler source file.
5789         * testsuite/memory_test.t: New linker script.
5790
5791 2010-08-27  Doug Kwan  <dougkwan@google.com>
5792
5793         * gold/resolve.cc (Symbol_table::should_override): Let a weak
5794         reference override an existing dynamic weak reference.
5795         * testsuite/Makefile.am: Add new test dyn_weak_ref.
5796         * testsuite/Makefile.in: Regenerate.
5797         * testsuite/dyn_weak_ref.sh: New file.
5798         * testsuite/dyn_weak_ref_1.c: Ditto.
5799         * testsuite/dyn_weak_ref_2.c: Ditto.
5800
5801 2010-08-27  Ian Lance Taylor  <iant@google.com>
5802
5803         * incremental.h (class Incremental_input_entry): Add virtual
5804         destructor.
5805
5806 2010-08-27  Ian Lance Taylor  <iant@google.com>
5807
5808         * testsuite/start_lib_test_3.c: Mark t3 as used.
5809
5810 2010-08-27  Nick Clifton  <nickc@redhat.com>
5811
5812         * options.cc (version_script): Fix small typo in previous
5813         whitespace tidyup.
5814
5815 2010-08-25  Nick Clifton  <nickc@redhat.com>
5816
5817         * archive.cc: Formatting fixes: Remove whitespace between
5818         typename and following asterisk.  Remove whitespace between
5819         function name and opening parenthesis.
5820         * archive.h: Likewise.
5821         * arm.cc: Likewise.
5822         * attributes.cc: Likewise.
5823         * attributes.h: Likewise.
5824         * common.cc: Likewise.
5825         * copy-relocs.cc: Likewise.
5826         * dirsearch.h: Likewise.
5827         * dynobj.cc: Likewise.
5828         * ehframe.cc: Likewise.
5829         * ehframe.h: Likewise.
5830         * expression.cc: Likewise.
5831         * fileread.cc: Likewise.
5832         * fileread.h: Likewise.
5833         * gc.h: Likewise.
5834         * gold-threads.cc: Likewise.
5835         * gold.cc: Likewise.
5836         * i386.cc: Likewise.
5837         * icf.h: Likewise.
5838         * incremental-dump.cc: Likewise.
5839         * incremental.cc: Likewise.
5840         * layout.cc: Likewise.
5841         * layout.h: Likewise.
5842         * main.cc: Likewise.
5843         * merge.cc: Likewise.
5844         * merge.h: Likewise.
5845         * object.cc: Likewise.
5846         * object.h: Likewise.
5847         * options.cc: Likewise.
5848         * options.h: Likewise.
5849         * output.cc: Likewise.
5850         * output.h: Likewise.
5851         * plugin.cc: Likewise.
5852         * plugin.h: Likewise.
5853         * powerpc.cc: Likewise.
5854         * reloc.cc: Likewise.
5855         * script-c.h: Likewise.
5856         * script-sections.cc: Likewise.
5857         * script.cc: Likewise.
5858         * stringpool.cc: Likewise.
5859         * symtab.cc: Likewise.
5860         * symtab.h: Likewise.
5861         * target.cc: Likewise.
5862         * timer.cc: Likewise.
5863         * timer.h: Likewise.
5864         * version.cc: Likewise.
5865         * x86_64.cc: Likewise.
5866
5867 2010-08-24  Nick Clifton  <nickc@redhat.com>
5868
5869         PR 11899
5870         * layout.cc (segment_precedes): Sort segments by their physical
5871         addresses, if they have been set.
5872
5873 2010-08-23  Cary Coutant  <ccoutant@google.com>
5874
5875         * archive.cc (Lib_group::add_symbols): Lock object before deleting its
5876         symbols data.
5877         (Lib_group::include_member): Unlock object after deleting its
5878         symbols data.
5879         * testsuite/start_lib_test_3.c: Remove all global symbols to trigger
5880         the bug fixed here.
5881
5882 2010-08-19  Neil Vachharajani  <nvachhar@google.com>
5883             Cary Coutant  <ccoutant@google.com>
5884
5885         * gold/archive.h (Add_lib_group_symbols): Add readsyms_blocker_, adjust
5886         constructor, and set_blocker.
5887         * gold/archive.cc (Add_lib_group_symbols::is_runnable): Also check
5888         readsyms_blocker_.
5889         * gold/readsyms.cc (Read_symbols::do_lib_group): Also pass
5890         this->this_blocker_ to Add_lib_group_symbols::set_blocker.
5891         * testsuite/Makefile.am (start_lib_test): New test case.
5892         * testsuite/Makefile.in: Regenerate.
5893         * testsuite/start_lib_test_main.c: New file.
5894         * testsuite/start_lib_test_1.c: New file.
5895         * testsuite/start_lib_test_2.c: New file.
5896         * testsuite/start_lib_test_3.c: New file.
5897
5898 2010-08-19  Ian Lance Taylor  <iant@google.com>
5899
5900         * Makefile.in: Rebuild with automake 1.11.1.
5901         * aclocal.m4: Likewise.
5902         * testsuite/Makefile.in: Likewise.
5903
5904 2010-08-19  Ian Lance Taylor  <iant@google.com>
5905
5906         PR 10893
5907         * i386.cc (class Output_data_plt_i386): Update declarations.
5908         Define Global_ifunc and Local_ifunc types.  Add global_ifuncs_ and
5909         local_ifuncs_ fields.
5910         (Target_i386::do_plt_section_for_global): New function.
5911         (Target_i386::do_plt_section_for_local): New function.
5912         (Output_data_plt_i386::Output_data_plt_i386): Add symtab
5913         parameter; change all callers.  Initialize global_ifuncs_ and
5914         local_ifuncs_.  If doing a static link define __rel_iplt_start and
5915         __rel_iplt_end.
5916         (Output_data_plt_i386::add_entry): Handle IFUNC symbols.
5917         (Output_data_plt_i386::add_local_ifunc_entry): New function.
5918         (Output_data_plt_i386::do_write): Fix GOT entries for IFUNC
5919         symbols.
5920         (Target_i386::make_plt_section): New function, broken out of
5921         make_plt_entry.  Set sh_info field of .rel.plt to point to .plt.
5922         (Target_i386::make_plt_entry): Call make_plt_section.
5923         (Target_i386::make_local_ifunc_plt_entry): New function.
5924         (Target_i386::Scan::reloc_needs_iplt_for_ifunc): New function.
5925         (Target_i386::Scan::local): Handle IFUNC symbols.  Add
5926         R_386_IRELATIVE to switch.
5927         (Target_i386::Scan::global): Likewise.
5928         (Target_i386::Relocate::relocate): Likewise.
5929         (Target_i386::Relocatable_size_for_reloc): Add R_386_IRELATIVE to
5930         switch.
5931         * x86_64.cc (class Output_data_plt_x86_64): Update declarations.
5932         (Target_x86_64::do_plt_section_for_global): New function.
5933         (Target_x86_64::do_plt_section_for_local): New function.
5934         (Output_data_plt_x86_64::Output_data_plt_x86_64): Add symtab
5935         parameter; change all callers.  If doing a static link define
5936         __rela_iplt_start and __rela_iplt_end.
5937         (Output_data_plt_x86_64::add_entry): Handle IFUNC symbols.
5938         (Output_data_plt_x86_64::add_local_ifunc_entry): New function.
5939         (Target_x86_64::make_plt_section): Set sh_info field of .rel.plt
5940         to point to .plt.
5941         (Target_x86_64::make_local_ifunc_plt_entry): New function.
5942         (Target_x86_64::Scan::check_non_pic): Add R_X86_64_IRELATIVE to
5943         switch.
5944         (Target_x86_64::Scan::reloc_needs_iplt_for_ifunc): New function.
5945         (Target_x86_64::Scan::local): Handle IFUNC symbols.  Add
5946         R_X86_64_IRELATIVE to switch.
5947         (Target_x86_64::Scan::global): Likewise.
5948         (Target_x86_64::Relocate::relocate): Likewise.
5949         (Target_x86_64::Relocatable_size_for_reloc): Add R_X86_64_IRELATIVE to
5950         switch.
5951         * target.h (class Target): Add plt_section_for_global and
5952         plt_section_for_local functions.  Add do_plt_section_for_global
5953         and do_plt_section_for_local virtual functions.
5954         * symtab.h (Symbol::needs_plt_entry): Handle IFUNC symbol.  Add
5955         clarifying comments.
5956         (Symbol::use_plt_offset): Handle IFUNC symbol.
5957         * object.cc (Sized_relobj::Sized_relobj): Initialize
5958         local_plt_offsets_.
5959         (Sized_relobj::local_has_plt_offset): New function.
5960         (Sized_relobj::local_plt_offset): New function.
5961         (Sized_relobj::set_local_plt_offset): New function.
5962         (Sized_relobj::do_count): Handle IFUNC symbol.
5963         * object.h (class Symbol_value): Add is_ifunc_symbol_ field.  Take
5964         a bit away from input_shndx_ field.  Add set_is_func_symbol and
5965         is_ifunc_symbol functions.
5966         (class Sized_relobj): Update declarations.  Remove Tls_got_entry
5967         and Local_tls_got_offsets.  Define Local_plt_offsets.  Add
5968         local_plt_offsets_ field.
5969         (Sized_relobj::clear_local_symbols): Clear local_plt_offsets_.
5970         * output.h (class Output_section_data): Add non-const
5971         output_section function.
5972         (class Output_data_got): Update declarations.
5973         (class Output_data_got::Got_entry): Add use_plt_offset_ field.
5974         Add use_plt_offset parameter to global and local constructors.
5975         Change all callers.  Change local_sym_index_ field to 31 bits.
5976         Change GSYM_CODE and CONSTANT_CODE accordingly.
5977         * output.cc (Output_data_reloc_base::do_adjust_output_section): If
5978         doing a static link don't set sh_link field.
5979         (Output_data_got::Got_entry::write): Use PLT offset if
5980         appropriate.
5981         (Output_data_got::add_global_plt): New function.
5982         (Output_data_got::add_local_plt): New function.
5983         * target-reloc.h (relocate_section): Handle IFUNC symbol.
5984         * defstd.cc (in_section): Remove entries for __rel_iplt_start,
5985         __rel_iplt_end, __rela_iplt_start, and __rela_iplt_end.
5986         * configure.ac: Set IFUNC automake conditional for glibc >= 2.11.
5987         * testsuite/Makefile.am: Add a bunch of IFUNC tests, all within
5988         IFUNC conditional.
5989         * testsuite/ifunc-sel.h: New file.
5990         * testsuite/ifuncmain1.c: New file.
5991         * testsuite/ifuncmain1vis.c: New file.
5992         * testsuite/ifuncmod1.c: New file.
5993         * testsuite/ifuncdep2.c: New file.
5994         * testsuite/ifuncmain2.c: New file.
5995         * testsuite/ifuncmain3.c: New file.
5996         * testsuite/ifuncmod3.c: New file.
5997         * testsuite/ifuncmain4.c: New file.
5998         * testsuite/ifuncmain5.c: New file.
5999         * testsuite/ifuncmod5.c: New file.
6000         * testsuite/ifuncmain6pie.c: New file.
6001         * testsuite/ifuncmod6.c: New file.
6002         * testsuite/ifuncmain7.c: New file.
6003         * configure, testsuite/Makefile.in: Rebuild.
6004
6005 2010-08-18  Ian Lance Taylor  <iant@google.com>
6006
6007         * incremental.cc
6008         (Output_section_incremental_inputs::write_input_files): Add cast
6009         to avoid signed/unsigned comparison warning.
6010         (Output_section_incremental_inputs::write_info_blocks): Likewise.
6011
6012 2010-08-12  Cary Coutant  <ccoutant@google.com>
6013
6014         * common.cc (Sort_commons::operator()): Remove unnecessary code.
6015
6016 2010-08-13  Ian Lance Taylor  <iant@google.com>
6017
6018         * testsuite/incremental_test_1.c: Add prototype to avoid warning.
6019
6020 2010-08-12  Cary Coutant  <ccoutant@google.com>
6021             Doug Kwan  <dougkwan@google.com>
6022
6023         * resolve.cc (Symbol_table::should_override): When a weak dynamic
6024         defintion overrides non-weak undef, remember that the original undef
6025         is not weak.
6026         * symtab.cc (Symbol_table::sized_write_global): For undef without
6027         an original weak binding, set binding to global in output.
6028         * testsuite/Makefile.am: Add new test strong_ref_weak_def.
6029         * testsuite/Makefile.in: Regenerate.
6030         * testsuite/strong_ref_weak_def.sh: New file.
6031         * testsuite/strong_ref_weak_def_1.c: Ditto.
6032         * testsuite/strong_ref_weak_def_2.c: Ditto.
6033
6034 2010-08-12  Cary Coutant  <ccoutant@google.com>
6035
6036         * testsuite/incremental_test.sh: Rewrite.
6037         * testsuite/incremental_test_1.c: Rewrite.
6038         * testsuite/incremental_test_2.c: Rewrite.
6039
6040 2010-08-12  Cary Coutant  <ccoutant@google.com>
6041
6042         * arm.cc (Target_arm::got_size): Add const.
6043         (Target_arm::got_entry_count): New function.
6044         (Target_arm::plt_entry_count): New function.
6045         (Target_arm::first_plt_entry_offset): New function.
6046         (Target_arm::plt_entry_size): New function.
6047         (Output_data_plt_arm::entry_count): New function.
6048         (Output_data_plt_arm::first_plt_entry_offset): New function.
6049         (Output_data_plt_arm::get_plt_entry_size): New function.
6050         * i386.cc (Target_i386::got_size): Add const.
6051         (Target_i386::got_entry_count): New function.
6052         (Target_i386::plt_entry_count): New function.
6053         (Target_i386::first_plt_entry_offset): New function.
6054         (Target_i386::plt_entry_size): New function.
6055         (Output_data_plt_i386::entry_count): New function.
6056         (Output_data_plt_i386::first_plt_entry_offset): New function.
6057         (Output_data_plt_i386::get_plt_entry_size): New function.
6058         * incremental-dump.cc (dump_incremental_inputs): Adjust call to
6059         find_incremental_inputs_sections.  Dump incremental_got_plt section.
6060         * incremental.cc: Include target.h.
6061         (Sized_incremental_binary::do_find_incremental_inputs_sections): Add
6062         parameter.  Adjust all callers.  Find incremental_got_plt section.
6063         (Incremental_inputs::create_data_sections): Create incremental_got_plt
6064         section.
6065         (Output_section_incremental_inputs::set_final_data_size): Calculate
6066         size of incremental_got_plt section.
6067         (Output_section_incremental_inputs::do_write): Write the
6068         incremental_got_plt section.
6069         (Got_plt_view_info): New struct.
6070         (Local_got_offset_visitor): New class.
6071         (Global_got_offset_visitor): New class.
6072         (Global_symbol_visitor_got_plt): New class.
6073         (Output_section_incremental_inputs::write_got_plt): New function.
6074         * incremental.h (Incremental_binary::find_incremental_inputs_sections):
6075         Add parameter.  Adjust all callers.
6076         (Incremental_binary::do_find_incremental_inputs_sections): Likewise.
6077         (Incremental_inputs::got_plt_section): New function.
6078         (Incremental_inputs::got_plt_section_): New data member.
6079         (Incremental_got_plt_reader): New class.
6080         * layout.cc (Layout::create_incremental_info_sections): Add the
6081         incremental_got_plt section.
6082         * object.h (Got_offset_list::get_list): New function.
6083         (Got offset_list::for_all_got_offsets): New function.
6084         (Sized_relobj::local_got_offset_list): New function.
6085         * powerpc.cc (Target_powerpc::got_size): Add const.
6086         (Target_powerpc::got_entry_count): New function.
6087         (Target_powerpc::plt_entry_count): New function.
6088         (Target_powerpc::first_plt_entry_offset): New function.
6089         (Target_powerpc::plt_entry_size): New function.
6090         (Output_data_plt_powerpc::entry_count): New function.
6091         (Output_data_plt_powerpc::first_plt_entry_offset): New function.
6092         (Output_data_plt_powerpc::get_plt_entry_size): New function.
6093         * sparc.cc (Target_sparc::got_size): Add const.
6094         (Target_sparc::got_entry_count): New function.
6095         (Target_sparc::plt_entry_count): New function.
6096         (Target_sparc::first_plt_entry_offset): New function.
6097         (Target_sparc::plt_entry_size): New function.
6098         (Output_data_plt_sparc::entry_count): New function.
6099         (Output_data_plt_sparc::first_plt_entry_offset): New function.
6100         (Output_data_plt_sparc::get_plt_entry_size): New function.
6101         * symtab.h (Symbol::got_offset_list): New function.
6102         (Symbol_table::for_all_symbols): New function.
6103         * target.h (Sized_target::got_entry_count): New function.
6104         (Sized_target::plt_entry_count): New function.
6105         (Sized_target::plt_entry_size): New function.
6106         * x86_64.cc (Target_x86_64::got_size): Add const.
6107         (Target_x86_64::got_entry_count): New function.
6108         (Target_x86_64::plt_entry_count): New function.
6109         (Target_x86_64::first_plt_entry_offset): New function.
6110         (Target_x86_64::plt_entry_size): New function.
6111         (Output_data_plt_x86_64::entry_count): New function.
6112         (Output_data_plt_x86_64::first_plt_entry_offset): New function.
6113         (Output_data_plt_x86_64::get_plt_entry_size): New function.
6114
6115 2010-08-12  Cary Coutant  <ccoutant@google.com>
6116
6117         * archive.cc: Include incremental.h.
6118         (Archive::Archive): Initialize incremental_info_.
6119         (Archive::include_member): Record archive members in incremental info.
6120         (Add_archive_symbols::run): Record begin and end of an archive in
6121         incremental info.
6122         (Lib_group::include_member): Record objects in incremental info.
6123         * archive.h (Incremental_archive_entry): Forward declaration.
6124         (Archive::set_incremental_info): New member function.
6125         (Archive::incremental_info): New member function.
6126         (Archive::Unused_symbol_iterator): New class.
6127         (Archive::unused_symbols_begin): New member function.
6128         (Archive::unused_symbols_end): New member function.
6129         (Archive::incremental_info_): New data member.
6130         * incremental-dump.cc (find_input_containing_global): New function.
6131         (dump_incremental_inputs): Dump new incremental info sections.
6132         * incremental.cc: Include symtab.h.
6133         (Output_section_incremental_inputs): New class.
6134         (Sized_incremental_binary::do_find_incremental_inputs_sections): Support
6135         new incremental info sections.
6136         (Sized_incremental_binary::do_check_inputs): Likewise.
6137         (Incremental_inputs::report_archive): Remove.
6138         (Incremental_inputs::report_archive_begin): New function.
6139         (Incremental_inputs::report_archive_end): New function.
6140         (Incremental_inputs::report_object): New function.
6141         (Incremental_inputs::finalize_inputs): Remove.
6142         (Incremental_inputs::report_input_section): New function.
6143         (Incremental_inputs::report_script): Rewrite.
6144         (Incremental_inputs::finalize): Do nothing but finalize string table.
6145         (Incremental_inputs::create_incremental_inputs_section_data): Remove.
6146         (Incremental_inputs::sized_create_inputs_section_data): Remove.
6147         (Incremental_inputs::create_data_sections): New function.
6148         (Incremental_inputs::relocs_entsize): New function.
6149         (Output_section_incremental_inputs::set_final_data_size): New function.
6150         (Output_section_incremental_inputs::do_write): New function.
6151         (Output_section_incremental_inputs::write_header): New function.
6152         (Output_section_incremental_inputs::write_input_files): New function.
6153         (Output_section_incremental_inputs::write_info_blocks): New function.
6154         (Output_section_incremental_inputs::write_symtab): New function.
6155         * incremental.h (Incremental_script_entry): Forward declaration.
6156         (Incremental_object_entry): Forward declaration.
6157         (Incremental_archive_entry): Forward declaration.
6158         (Incremental_inputs): Forward declaration.
6159         (Incremental_inputs_header_data): Remove.
6160         (Incremental_inputs_header): Remove.
6161         (Incremental_inputs_header_write): Remove.
6162         (Incremental_inputs_entry_data): Remove.
6163         (Incremental_inputs_entry): Remove.
6164         (Incremental_inputs_entry_write): Remove.
6165         (enum Incremental_input_type): Add INCREMENTAL_INPUT_ARCHIVE_MEMBER.
6166         (Incremental_binary::find_incremental_inputs_sections): Add parameters.
6167         (Incremental_binary::do_find_incremental_inputs_sections): Likewise.
6168         (Sized_ncremental_binary::do_find_incremental_inputs_sections):
6169         Likewise.
6170         (Incremental_input_entry): New class.
6171         (Incremental_script_entry): New class.
6172         (Incremental_object_entry): New class.
6173         (Incremental_archive_entry): New class.
6174         (Incremental_inputs::Incremental_inputs): Initialize new data members.
6175         (Incremental_inputs::report_inputs): Remove.
6176         (Incremental_inputs::report_archive): Remove.
6177         (Incremental_inputs::report_archive_begin): New function.
6178         (Incremental_inputs::report_archive_end): New function.
6179         (Incremental_inputs::report_object): Change prototype.
6180         (Incremental_inputs::report_input_section): New function.
6181         (Incremental_inputs::report_script): Change prototype.
6182         (Incremental_inputs::get_reloc_count): New function.
6183         (Incremental_inputs::set_reloc_count): New function.
6184         (Incremental_inputs::create_data_sections): New function.
6185         (Incremental_inputs::create_incremental_inputs_section_data): Remove.
6186         (Incremental_inputs::inputs_section): New function.
6187         (Incremental_inputs::symtab_section): New function.
6188         (Incremental_inputs::relocs_section): New function.
6189         (Incremental_inputs::get_stringpool): Add const.
6190         (Incremental_inputs::command_line): Add const.
6191         (Incremental_inputs::inputs): Remove.
6192         (Incremental_inputs::command_line_key): New function.
6193         (Incremental_inputs::input_file_count): New function.
6194         (Incremental_inputs::input_files): New function.
6195         (Incremental_inputs::relocs_entsize): New function.
6196         (Incremental_inputs::sized_create_inputs_section_data): Remove.
6197         (Incremental_inputs::finalize_inputs): Remove.
6198         (Incremental_inputs::Input_info): Remove.
6199         (Incremental_inputs::lock_): Remove.
6200         (Incremental_inputs::inputs_): Change type.
6201         (Incremental_inputs::inputs_map_): Remove.
6202         (Incremental_inputs::current_object_entry_): New data member.
6203         (Incremental_inputs::inputs_section_): New data member.
6204         (Incremental_inputs::symtab_section_): New data member.
6205         (Incremental_inputs::relocs_section_): New data member.
6206         (Incremental_inputs::reloc_count_): New data member.
6207         (Incremental_inputs_reader): New class.
6208         (Incremental_symtab_reader): New class.
6209         (Incremental_relocs_reader): New class.
6210         * layout.cc (Layout::finalize): Move finalization of incremental info
6211         and creation of incremental info sections to follow finalization of
6212         symbol table.  Set offsets for postprocessing sections.
6213         (Layout::create_incremental_info_sections): Call
6214         Incremental_inputs::create_data_sections.  Add incremental symtab
6215         and relocs sections.  Set sh_entsize and sh_link fields.  Arrange for
6216         sections to layout after input sections.
6217         * layout.h (struct Timespec): Forward declaration.
6218         (Layout::incremental_inputs): Add const.
6219         (Layout::create_incremental_info_sections): Add parameter.
6220         * main.cc (main): Remove call to Incremental_inputs::report_inputs.
6221         * object.cc: Include incremental.h.
6222         (Relobj::finalize_incremental_relocs): New function.
6223         (Sized_relobj::do_layout): Record input sections in incremental info.
6224         * object.h (Object::output_section): New function.
6225         (Object::output_section_offset): Moved from Relobj.
6226         (Object::get_incremental_reloc_base): New function.
6227         (Object::get_incremental_reloc_count): New function.
6228         (Object::do_output_section): New function.
6229         (Object::do_output_section_offset): Moved from Relobj.
6230         (Object::do_get_incremental_reloc_base): New function.
6231         (Object::do_get_incremental_reloc_count): New function.
6232         (Object::Object): Initialize new data members.
6233         (Relobj::output_section): Renamed do_output_section and moved to
6234         protected.
6235         (Relobj::output_section_offset): Moved to Object.
6236         (Relobj::do_get_incremental_reloc_base): New function.
6237         (Relobj::do_get_incremental_reloc_count): New function.
6238         (Relobj::allocate_incremental_reloc_counts): New function.
6239         (Relobj::count_incremental_reloc): New function.
6240         (Relobj::finalize_incremental_relocs): New function.
6241         (Relobj::next_incremental_reloc_index): New function.
6242         (Relobj::reloc_counts_): New data member.
6243         (Relobj::reloc_bases_): New data member.
6244         (Sized_relobj::do_relocate_sections): Add parameter.  Change caller.
6245         (Sized_relobj::relocate_sections): Add parameter.  Change all callers.
6246         (Sized_relobj::incremental_relocs_scan): New function.
6247         (Sized_relobj::incremental_relocs_scan_reltype): New function.
6248         (Sized_relobj::incremental_relocs_write): New function.
6249         (Sized_relobj::incremental_relocs_write_reltype): New function.
6250         * plugin.cc (Plugin_manager::add_input_file): Rewrite test for
6251         incremental link.
6252         * readsyms.cc (Read_symbols::do_read_symbols): Move reporting of
6253         archives and object files elsewhere.
6254         (Add_symbols::run): Report object files here.
6255         (Finish_group::run): Report end of archive at end of group.
6256         * reloc.cc: Include layout.h, incremental.h.
6257         (Sized_relobj::do_read_relocs): Need relocations for incremental link.
6258         (Sized_relobj::do_scan_relocs): Record relocations for incremental link.
6259         (Sized_relobj::incremental_relocs_scan): New function.
6260         (Sized_relobj::incremental_relocs_scan_reltype): New function.
6261         (Sized_relobj::do_relocate_sections): Write incremental relocations.
6262         (Sized_relobj::incremental_relocs_write): New function.
6263         (Sized_relobj::incremental_relocs_write_reltype): New function.
6264         * script.cc (read_input_script): Rewrite test for incremental link.
6265         Change call to Incremental_inputs::report_script.
6266         * symtab.h (Symbol_table::first_global_index): New function.
6267         (Symbol_table::output_count): New function.
6268
6269 2010-08-12  Doug Kwan  <dougkwan@google.com>
6270
6271         * arm.cc (Target_arm::merge_object_attributes): Check command line
6272         options --no-wchar-size-warning and --no-enum-size-warning.
6273         * options.h (General_options): Add ld-compatible options
6274         --no-enum-size-warning and --no-wchar-size-warning.
6275
6276 2010-08-04  Ian Lance Taylor  <iant@google.com>
6277
6278         * x86_64.cc (Target_x86_64::Scan::local): Use
6279         R_X86_64_GNU_VTINHERIT instead of R_386_GNU_VTINHERIT and
6280         R_X86_64_GNU_VTENTRY instead of R_386_GNU_VTENTRY.
6281         (Target_x86_64::Scan::global): Likewise.
6282         (Target_x86_64::Relocate::relocate): Likewise.
6283         (Target_x86_64::Relocatable_size_for_reloc::get_size_for_reloc):
6284         Likewise.
6285
6286 2010-08-03  Cary Coutant  <ccoutant@google.com>
6287
6288         * merge.cc (Output_merge_string::do_add_input_section): Count strings
6289         to reserve space in merged_strings vector. Keep total input size
6290         for stats.
6291         (Output_merge_string::do_print_merge_stats): Print total input size.
6292         * merge.h (Output_merge_string): Add input_size_ field.
6293         * stringpool.cc (Stringpool_template::string_length): Move
6294         implementations out of Stringpool_template class and place in
6295         stringpool.h.
6296         * stringpool.h (string_length): Move out of Stringpool_template.
6297
6298 2010-08-03  Ian Lance Taylor  <iant@google.com>
6299
6300         PR 11712
6301         * layout.cc (relaxation_loop_body): If address of load segment is
6302         set, adjust address to include headers if possible.
6303
6304 2010-08-03  Ian Lance Taylor  <iant@google.com>
6305
6306         * version.cc (version_string): Bump to 1.10.
6307
6308 2010-08-03  Ian Lance Taylor  <iant@google.com>
6309
6310         PR 11805
6311         * layout.h (enum Output_section_order): Define.
6312         (class Layout): Update declarations.
6313         * layout.cc (Layout::get_output_section): Add order parameter.
6314         Remove is_interp, is_dynamic_linker_section, is_last_relro, and
6315         is_first_non_relro parameters.  Change all callers.
6316         (Layout::choose_output_section): Likewise.
6317         (Layout::add_output_section_data): Likewise.
6318         (Layout::make_output_section): Likewise.  Set order.
6319         (Layout::default_section_order): New function.
6320         (Layout::layout_eh_frame): Call add_output_section_to_nonload.
6321         * output.cc (Output_section::Output_section): Initialize order_.
6322         Don't initialize deleted fields.
6323         (Output_segment::Output_segment): Don't initialize deleted
6324         fields.
6325         (Output_segment::add_output_section_to_load): New function
6326         replacing add_output_section.  Change all callers to call this or
6327         add_output_section_to_nonload.
6328         (Output_segment::add_output_section_to_nonload): New function.
6329         (Output_segment::remove_output_section): Rewrite.
6330         (Output_segment::add_initial_output_data): Likewise.
6331         (Output_segment::has_any_data_sections): Likewise.
6332         (Output_segment::is_first_section_relro): Likewise.
6333         (Output_segment::maximum_alignment): Likewise.
6334         (Output_segment::has_dynamic_reloc): New function replacing
6335         dynamic_reloc_count.  Change all callers.
6336         (Output_segment::has_dynamic_reloc_list): New function replacing
6337         dynamic_reloc_count_list.  Change all callers.
6338         (Output_segment::set_section_addresses): Rewrite.
6339         (Output_segment::set_offset): Rewrite.
6340         (Output_segment::find_first_and_last_list): Remove.
6341         (Output_segment::set_tls_offsets): Rewrite.
6342         (Output_segment::first_section_load_address): Likewise.
6343         (Output_segment::output_section_count): Likewise.
6344         (Output_segment::section_with_lowest_load_address): Likewise.
6345         (Output_segment::write_section_headers): Likewise.
6346         (Output_segment::print_sections_to_map): Likewise.
6347         * output.h (class Output_data): Remove dynamic_reloc_count_
6348         field.  Add has_dynamic_reloc_ field.  Make bools into bitfields.
6349         (Output_data::add_dynamic_reloc): Rewrite.
6350         (Output_data::has_dynamic_reloc): New function.
6351         (Output_data::dynamic_reloc_count): Remove.
6352         (class Output_section): Add order_ field.  Remvoe is_relro_local_,
6353         is_last_relro_, is_first_non_relro_, is_interp_,
6354         is_dynamic_linker_section_ fields.  Add order and set_order
6355         functions.  Remove is_relro_local, set_is_relro_local,
6356         is_last_relro, set_is_last_relro, is_first_non_relro,
6357         set_is_first_non_relro functions, is_interp, set_is_interp,
6358         is_dynamic_linker_section, and set_is_dynamic_linker_section
6359         functions.
6360         (class Output_segment): Change Output_data_list from std::list to
6361         std:;vector.  Add output_lists_ field.  Remove output_data_ and
6362         output_bss_ fields.  Update declarations.
6363
6364 2010-08-02  Ian Lance Taylor  <iant@google.com>
6365
6366         * arm.cc (Target_arm::gc_process_relocs): Use typename.
6367         * powerpc.cc (Target_powerpc::gc_process_relocs): Likewise.
6368         * sparc.cc (Target_sparc::gc_process_relocs): Likewise.
6369
6370 2010-08-02  Ian Lance Taylor  <iant@google.com>
6371
6372         PR 11855
6373         * script.cc (Script_options::Script_options): Initialize
6374         symbol_definitions_ and symbol_references_.
6375         (Script_options::add_symbol_assignment): Update
6376         symbol_definitions_ and symbol_references_.
6377         (Script_options::add_symbol_reference): New function.
6378         (script_symbol): New function.
6379         * script.h (class Script_options): Add symbol_definitions_ and
6380         symbol_references_ fields.
6381         (Script_options::referenced_const_iterator): New type.
6382         (Script_options::referenced_begin): New function.
6383         (Script_options::referenced_end): New function.
6384         (Script_options::is_referenced): New function.
6385         (Script_options::any_unreferenced): New function.
6386         * script-c.h (script_symbol): Declare.
6387         * yyscript.y (exp): Call script_symbol.
6388         * symtab.cc: Include "script.h".
6389         (Symbol_table::gc_mark_undef_symbols): Add layout parameter.
6390         Change all callers.  Check symbols referenced by scripts.
6391         (Symbol_table::add_undefined_symbols_from_command_line): Add
6392         layout parameter.  Change all callers.
6393         (Symbol_table::do_add_undefined_symbols_from_command_line):
6394         Likewise.  Break out loop body.  Check symbols referenced by
6395         scripts.
6396         (Symbol_table::add_undefined_symbol_from_command_line): New
6397         function broken out of
6398         do_add_undefined_symbols_from_command_line.
6399         * symtab.h (class Symbol_table): Update declarations.
6400         * archive.cc: Include "layout.h".
6401         (Archive::should_include_member): Add layout parameter.  Change
6402         all callers.  Check for symbol mentioned in expression.
6403         * archive.h (class Archive): Update declaration.
6404         * object.cc (Sized_relobj::do_should_include_member): Add layout
6405         parameter.
6406         * object.h (Object::should_include_member): Add layout parameter.
6407         Change all callers.
6408         (Object::do_should_include_member): Add layout parameter.
6409         (class Sized_relobj): Update declaration.
6410         * dynobj.cc (Sized_dynobj::do_should_include_member): Add layout
6411         parameter.
6412         * dynobj.h (class Sized_dynobj): Update declaration.
6413         * plugin.cc (Sized_pluginobj::do_should_include_member): Add
6414         layout parameter.
6415         * plugin.h (class Sized_pluginobj): Update declaration.
6416
6417 2010-08-02  Ian Lance Taylor  <iant@google.com>
6418
6419         PR 11866
6420         * output.cc (Output_segment::set_offset): Search for the first and
6421         last sections rather than assuming that the list is in order.
6422         (Output_segment::find_first_and_last_list): New function.
6423         * output.h (class Output_segment): Update declarations.
6424         * testsuite/Makefile.am (check_PROGRAMS): Add relro_strip_test.
6425         (relro_strip_test_SOURCES): New variable.
6426         (relro_strip_test_DEPENDENCIES): New variable.
6427         (relro_strip_test_LDFLAGS): New variable.
6428         (relro_strip_test_LDADD): New variable.
6429         (relro_strip_test.so): New target.
6430
6431 2010-08-02  Ian Lance Taylor  <iant@google.com>
6432
6433         * i386.cc (class Target_i386): Add got_tlsdesc_ field.
6434         (Target_i386::Target_i386):: Initialize got_tlsdesc_.
6435         (Target_i386::got_tlsdesc_section): New function.
6436         (Target_i386::got_section): Create space for GOT entries for
6437         TLSDESC relocations.
6438         (Target_i386::Scan::local): Use TLSDESC GOT for unoptimized
6439         R_386_TLS_GOTDESC.
6440         (Target_i386::Scan::global): Likewise.
6441         (Target_i386::Relocate::relocate_tls): Adjust GOT offset when
6442         using TLSDESC GOT.
6443         * x86_64.cc (class Target_x86_64): Add got_tlsdesc_ field.
6444         (Target_x86_64::Target_x86_64):: Initialize got_tlsdesc_.
6445         (Target_x86_64::got_tlsdesc_section): New function.
6446         (Target_x86_64::got_section): Create space for GOT entries for
6447         TLSDESC relocations.
6448         (Target_x86_64::Scan::local): Use TLSDESC GOT for unoptimized
6449         R_386_TLS_GOTDESC.
6450         (Target_x86_64::Scan::global): Likewise.
6451         (Target_x86_64::Relocate::relocate_tls): Adjust GOT offset when
6452         using TLSDESC GOT.
6453
6454 2010-08-02  Ian Lance Taylor  <iant@google.com>
6455
6456         * testsuite/final_layout.sh: Use dc to convert from hex to
6457         decimal.
6458
6459 2010-07-29  Sriraman Tallam  <tmsriram@google.com>
6460
6461         * arm.cc (Target_arm<big_endian>::gc_process_relocs): Add template
6462         paramter to the call to gold::gc_process_relocs.
6463         * i386.cc (Target_i386<big_endian>::gc_process_relocs): Add template
6464         paramter to the call to gold::gc_process_relocs.
6465         * x86_64.cc (Target_x86_64<big_endian>::gc_process_relocs): Add template
6466         parameter to the call to gold::gc_process_relocs.
6467         * powerpc.cc (Target_powerpc<big_endian>::gc_process_relocs): Add
6468         template parameter to the call to gold::gc_process_relocs.
6469         * sparc.cc (Target_sparc<big_endian>::gc_process_relocs): Add template
6470         paramter to the call to gold::gc_process_relocs.
6471         * gc.h (get_embedded_addend_size): New function.
6472         (gc_process_relocs): Save the size of the reloc for use by ICF.
6473         * icf.cc (get_section_contents): Get the addend from the text section
6474         for SHT_REL relocation sections.
6475         * icf.h (Icf::Reloc_addend_size_info): New typedef.
6476         (Icf::Reloc_info): Add new member reloc_addend_size_info.
6477         * int_encoding.h (read_from_pointer): New overloaded function.
6478         * testsuite/Makefile.am (icf_sht_rel_addend_test): New test.
6479         * testsuite/icf_sht_rel_addend_test.sh: New file.
6480         * testsuite/icf_sht_rel_addend_test_1.cc: New file.
6481         * testsuite/icf_sht_rel_addend_test_2.cc: New file.
6482
6483 2010-07-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6484
6485         * configure.ac (AM_INIT_AUTOMAKE): Use parallel-tests option.
6486         * Makefile.in: Regenerate.
6487         * testsuite/Makefile.in: Regenerate.
6488
6489 2010-07-27  Jeffrey Yasskin  <jyasskin@google.com>
6490
6491         * testsuite/debug_msg.sh: Test mixed weak/strong symbol behavior.
6492         * gold/testsuite/debug_msg.cc: Likewise.
6493         * gold/testsuite/odr_violation1.cc
6494         * gold/testsuite/odr_violation2.cc
6495
6496 2010-07-21  Cary Coutant  <ccoutant@google.com>
6497
6498         * merge.h (Output_merge_string::Merged_string): Remove object, shndx,
6499         string, and length fields.
6500         (Output_merge_string::Merged_strings_list): New type.
6501         (Output_merge_string::Merged_strings_lists): New typedef.
6502         (Output_merge_string): Replace merged_strings_ with
6503         merged_strings_lists_.
6504         * merge.cc (Output_merge_string::do_add_input_section): Allocate new
6505         Merged_strings_list per input object and section.  Don't store pointer
6506         to the string.  Don't store length with each merged string entry.
6507         (Output_merge_string::finalize_merged_data): Loop over list of merged
6508         strings lists.  Recompute length of each merged string.
6509
6510 2010-07-15  Cary Coutant  <ccoutant@google.com>
6511
6512         * plugin.cc (Plugin_finish::run): Don't call cleanup handlers from
6513         here.
6514
6515 2010-07-14  Ian Lance Taylor  <iant@google.com>
6516
6517         * descriptors.cc (Descriptors::open): Report correct name in error
6518         message.
6519
6520 2010-07-13  Doug Kwan  <dougkwan@google.com>
6521
6522         * arm.cc (Arm_input_section::Arm_input_section): For a
6523         SHT_ARM_EXIDX section, always keeps the input sections.
6524         (Arm_input_section::set_exidx_section_link): New method.
6525         (Arm_exidx_input_section::Arm_exidx_input_section): Initialize
6526         has_errors_ to false.
6527         (Arm_exidx_input_section::has_errors,
6528         Arm_exidx_input_section::set_has_errors): New methods.
6529         (Arm_exidx_input_section::has_errors_): New data member.
6530         (Arm_relobj::get_exidx_shndx_list): New method.
6531         (Arm_output_section::append_text_sections_to_list): Do not skip
6532         section without SHF_EXECINSTR.
6533         (Arm_output_section::fix_exidx_coverage): Skip input sections with
6534         errors.
6535         (Arm_relobj::make_exidx_input_section): Add new parameter for text
6536         section header.  Make error messages more verbose.  Check for
6537         a non-executable section linked to an EXIDX section.
6538         (Arm_relobj::do_read_symbols): Remove error checking, which has been
6539         moved to Arm_relobj::make_exidx_input_section.  Add an assertion to
6540         check that there is no deferred EXIDX section if we exit early.
6541         Instead of not making an EXIDX section in case of an error, make one
6542         and set the has_errors flag of it.
6543         (Target_arm::do_finalize_sections): Fix up links of EXIDX sections
6544         in a relocatable link.
6545         (Target_arm::do_relax): Look for the EXIDX output section instead of
6546         assuming that it is called .ARM.exidx.
6547         (Target_arm::fix_exidx_coverage): Add a new parameter for input
6548         section list.  Do not check for SHF_EXECINSTR section flags but
6549         skip any input section with errors.
6550         * output.cc (Output_section::Output_section): Initialize
6551         always_keeps_input_sections_ to false.
6552         (Output_section::add_input_section): Check for
6553         always_keeps_input_sections_.
6554         *  output.h (Output_section::always_keeps_input_sections,
6555         Output_section::set_always_keeps_input_sections): New methods.
6556         (Output_section::always_keeps_input_sections): New data member.
6557
6558 2010-07-13  Rafael Espindola  <espindola@google.com>
6559
6560         * fileread.cc (try_extra_search_path, find_file): Move to Input_file.
6561         * fileread.h (Input_file): Add try_extra_search_path and find_file.
6562
6563 2010-07-13  Philip Herron  <herron.philip@googlemail.com>
6564             Ian Lance Taylor  <iant@google.com>
6565
6566         * output.h (Output_section_lookup_maps::add_merge_section):
6567         Correct check of whether value was inserted.
6568         (Output_section_lookup_maps::add_merge_input_section): Likewise.
6569         (Output_section_lookup_maps::add_relaxed_input_section):
6570         Likewise.
6571         * arm.cc (Target_arm::got_section): Remove used local os.
6572         * i386.cc (Target_i386::got_section): Likewise.
6573         * x86_64.cc (Target_x86_64::got_section): Likewise.
6574         * sparc.cc (Target_sparc::got_section): Likewise.
6575         (Target_sparc::relocate): Remove unused local have_got_offset.
6576         * powerpc.cc (Target_powerpc::relocate): Likewise.
6577
6578 2010-07-13  Ian Lance Taylor  <iant@google.com>
6579
6580         * compressed_output.cc (zlib_decompress): Fix signature in
6581         !HAVE_ZLIB_H case.
6582
6583         * archive.cc (Archive::include_member): Unlock an external member
6584         of a thin archive.  Don't bother to delete an object we know is
6585         NULL.
6586
6587 2010-07-12  Cary Coutant  <ccoutant@google.com>
6588
6589         * compressed_output.cc (zlib_decompress): New function.
6590         (get_uncompressed_size): New function.
6591         (decompress_input_section): New function.
6592         * compressed_output.h (get_uncompressed_size): New function.
6593         (decompress_input_section): New function.
6594         * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info)
6595         Handle compressed debug sections.
6596         * layout.cc (is_compressed_debug_section): New function.
6597         (Layout::output_section_name): Map compressed section names to
6598         canonical names.
6599         * layout.h (is_compressed_debug_section): New function.
6600         (is_debug_info_section): Recognize compressed debug sections.
6601         * merge.cc: Include compressed_output.h.
6602         (Output_merge_data::do_add_input_section): Handle compressed
6603         debug sections.
6604         (Output_merge_string::do_add_input_section): Handle compressed
6605         debug sections.
6606         * object.cc: Include compressed_output.h.
6607         (Sized_relobj::Sized_relobj): Initialize new data members.
6608         (build_compressed_section_map): New function.
6609         (Sized_relobj::do_read_symbols): Handle compressed debug sections.
6610         * object.h (Object::section_is_compressed): New method.
6611         (Object::do_section_is_compressed): New method.
6612         (Sized_relobj::Compressed_section_map): New type.
6613         (Sized_relobj::do_section_is_compressed): New method.
6614         (Sized_relobj::compressed_sections_): New data member.
6615         * output.cc (Output_section::add_input_section): Handle compressed
6616         debug sections.
6617         * reloc.cc: Include compressed_output.h.
6618         (Sized_relobj::write_sections): Handle compressed debug sections.
6619
6620 2010-07-08  Cary Coutant  <ccoutant@google.com>
6621
6622         * resolve.cc (Symbol_table::resolve): Remember whether undef was
6623         weak when resolving to a dynamic def.
6624         (Symbol_table::should_override): Add adjust_dyndef flag; set it
6625         for weak undef/dynamic def cases. Adjust callers.
6626         * symtab.cc (Symbol::init_fields): Initialize undef_binding_set_ and
6627         undef_binding_weak_.
6628         (Symbol_table::sized_write_globals): Adjust symbol binding.
6629         (Symbol_table::sized_write_symbol): Add binding parameter.
6630         * symtab.h (Symbol::set_undef_binding): New method.
6631         (Symbol::is_undef_binding_weak): New method.
6632         (Symbol::undef_binding_set_, Symbol::undef_binding_weak_): New members.
6633         (Symbol_table::should_override): Add new parameter.
6634         (Symbol_table::sized_write_symbol): Add new parameter.
6635
6636         * testsuite/weak_undef_file1.cc: Add new test case.
6637         * testsuite/weak_undef_file2.cc: Fix header comment.
6638         * testsuite/weak_undef_test.cc: Add new test case.
6639
6640 2010-06-29  Doug Kwan  <dougkwan@google.com>
6641
6642         * arm-reloc-property.cc (Arm_reloc_property::Arm_reloc_property):
6643         Initialize USE_SYMBOL_.
6644         * arm-reloc-property.h (Arm_reloc_property::uses_symbol): New method
6645         definition.
6646         (Arm_reloc_property::uses_symbol_): New data member declaration.
6647         * arm.cc (Target_arm::Relocate::relocate): Exit early if relocation
6648         uses symbol value and symbol is undefined but not weakly undefined.
6649
6650 2010-06-28  Rafael Espindola  <espindola@google.com>
6651
6652         * plugin.cc (Plugin::load): Use dlerror.
6653
6654 2010-06-26  Jeffrey Yaskin  <jyasskin@google.com>
6655
6656         * symtab.cc (detect_odr_violations): When reporting an ODR
6657         violation, report an object where the symbol is defined.
6658
6659 2010-06-25  Doug Kwan  <dougkwan@google.com>
6660
6661         * arm.cc (Target_arm::can_check_for_functions_pointers): Return true.
6662         (Target_arm::section_may_have_icf_unsafe_pointers): New method
6663         definition.
6664         (Target_arm::Scan::local_reloc_may_be_function_pointer,
6665         Target_arm::Scan::global_reloc_may_be_function_pointer): Implement
6666         target hook to detect function points.
6667         (Target_arm::Scan::possible_function_pointer_reloc): New method.
6668         * icf.h (Icf::check_section_for_function_pointers): Change type of
6669         parameter SECTION_NAME to const reference to std::string.  Use
6670         target hook to determine if section may have unsafe pointers.
6671         * target.h (Target::section_may_have_icf_unsafe_pointers): New
6672         method definition.
6673
6674 2010-06-21  Rafael Espindola  <espindola@google.com>
6675
6676         * fileread.cc (Input_file::find_fie): New
6677         (Input_file::open): Use Input_file::find_fie.
6678         * fileread.h (Input_file::find_fie): New
6679         * plugin.cc (set_extra_library_path): New.
6680         (Plugin::load): Add set_extra_library_path to the transfer vector.
6681         (Plugin_manager::set_extra_library_path): New.
6682         (Plugin_manager::add_input_file): Use the extra search path if set.
6683         (set_extra_library_path(): New.
6684         * plugin.h (Plugin_manager): Add set_extra_library_path and
6685         extra_search_path_.
6686
6687 2010-06-19  Cary Coutant  <ccoutant@google.com>
6688
6689         * layout.cc (gdb_sections): Add .debug_types.
6690         (lines_only_debug_sections): Likewise.
6691
6692 2010-06-18  Rafael Espindola  <espindola@google.com>
6693
6694         * plugin.cc (add_input_file,add_input_library)
6695         (Plugin_manager::add_input_file): Make filename arguments const.
6696         * plugin.h (Plugin_manager::add_input_file): Make filename arguments
6697         const.
6698
6699 2010-06-16  Doug Kwan  <dougkwan@google.com>
6700
6701         * arm.cc (Target_arm::do_finalize_sections): Do not emit an
6702         .ARM.attributes section if we have not merged any input
6703         attributes sections.
6704
6705 2010-06-15  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
6706
6707         * arm.cc: Allow combining objects with no EABI version
6708         information.
6709
6710 2010-06-15  Rafael Espindola  <espindola@google.com>
6711
6712         * plugin.cc (Plugin_hook::run): Set in_real_elf for the start symbol.
6713
6714 2010-06-15  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
6715
6716         * fileread.cc: Only #include <sys/uio.h> if HAVE_READV.
6717         (struct iovec): Correct !HAVE_READV definition.
6718
6719 2010-06-10  Cary Coutant  <ccoutant@google.com>
6720
6721         * object.cc (Sized_relobj::do_layout): Defer layout for reloc sections.
6722         (Sized_relobj::do_layout_deferred_sections): Do layout for deferred
6723         reloc sections.
6724         * object.h (Sized_relobj::deferred_layout_relocs_): New data member.
6725
6726         PR 11683
6727         * symtab.h (Symbol::is_placeholder): New member function.
6728         * target-reloc.h (relocate_section): Check for placeholder symbols.
6729
6730         * testsuite/Makefile.am (plugin_test_8): New test.
6731         (plugin_test_9): New test.
6732         * testsuite/Makefile.in: Regenerate.
6733
6734 2010-06-09  Nick Clifton  <nickc@redhat.com>
6735
6736         * yyscript.y (input_list_element): Allow strings prefixed with
6737         the '-' character.  Treat these as libraries.
6738         * script.cc (script_add_library): New function.  Adds a library
6739         specified by "-l<name>" found in an input script.
6740         * script-c.h: Add prototype for script_add_library.
6741
6742 2010-06-07  Doug Kwan  <dougkwan@google.com>
6743
6744         * arm.cc (Target_arm::do_relax): Reserve more space for stubs.
6745         Restrict stub-group size to be within long conditional branch
6746         range when working around cortex-A8 erratum.
6747
6748 2010-06-07  Damien Diederen  <dd@crosstwine.com>
6749
6750         * gold-threads.cc (Lock_impl_threads::Lock_impl_threads): Correct
6751         #ifdef typo.
6752
6753 2010-06-03  Sriraman Tallam  <tmsriram@google.com>
6754
6755         PR gold/11658
6756         * output.cc
6757         (Output_section::Input_section_sort_entry::compare_section_ordering):
6758         Change to return non-zero correctly.
6759         (Output_section::Input_section_sort_section_order_index_compare
6760         ::operator()): Change to fix ambiguity in comparisons.
6761
6762 2010-06-01  Sriraman Tallam  <tmsriram@google.com>
6763
6764         * gold.h (is_wildcard_string): New function.
6765         * layout.cc (Layout::layout): Pass this pointer to add_input_section.
6766         (Layout::layout_eh_frame): Ditto.
6767         (Layout::find_section_order_index): New method.
6768         (Layout::read_layout_from_file): New method.
6769         * layout.h (Layout::find_section_order_index): New method.
6770         (Layout::read_layout_from_file): New method.
6771         (Layout::input_section_position_): New private member.
6772         (Layout::input_section_glob_): New private member.
6773         * main.cc (main): Call read_layout_from_file here.
6774         * options.h (--section-ordering-file): New option.
6775         * output.cc (Output_section::input_section_order_specified_): New
6776         member.
6777         (Output_section::Output_section): Initialize new member.
6778         (Output_section::add_input_section): Add new parameter.
6779         Keep input sections when --section-ordering-file is used.
6780         (Output_section::set_final_data_size): Sort input sections when
6781         section ordering file is specified.
6782         (Output_section::Input_section_sort_entry): Add new parameter.
6783         Check sorting type.
6784         (Output_section::Input_section_sort_entry::compare_section_ordering):
6785         New method.
6786         (Output_section::Input_section_sort_compare::operator()): Change to
6787         consider section_order_index.
6788         (Output_section::Input_section_sort_init_fini_compare::operator()):
6789         Change to consider section_order_index.
6790         (Output_section::Input_section_sort_section_order_index_compare
6791         ::operator()): New method.
6792         (Output_section::sort_attached_input_sections): Change to sort
6793         according to section order when specified.
6794         (Output_section::add_input_section<32, true>): Add new parameter.
6795         (Output_section::add_input_section<64, true>): Add new parameter.
6796         (Output_section::add_input_section<32, false>): Add new parameter.
6797         (Output_section::add_input_section<64, false>): Add new parameter.
6798         * output.h (Output_section::add_input_section): Add new parameter.
6799         (Output_section::input_section_order_specified): New
6800         method.
6801         (Output_section::set_input_section_order_specified): New method.
6802         (Input_section::Input_section): Initialize section_order_index_.
6803         (Input_section::section_order_index): New method.
6804         (Input_section::set_section_order_index): New method.
6805         (Input_section::section_order_index_): New member.
6806         (Input_section::Input_section_sort_section_order_index_compare): New
6807         struct.
6808         (Output_section::input_section_order_specified_): New member.
6809         * script-sections.cc (is_wildcard_string): Delete and move modified
6810         method to gold.h.
6811         (Output_section_element_input::Output_section_element_input): Modify
6812         call to is_wildcard_string.
6813         (Output_section_element_input::Input_section_pattern
6814         ::Input_section_pattern): Ditto.
6815         (Output_section_element_input::Output_section_element_input): Ditto.
6816         * testsuite/Makefile.am (final_layout): New test case.
6817         * testsuite/Makefile.in: Regenerate.
6818         * testsuite/final_layout.cc: New file.
6819         * testsuite/final_layout.sh: New file.
6820
6821 2010-06-01  Rafael Espindola  <espindola@google.com>
6822
6823         * plugin.cc (Plugin::load): Pass the output name to the plugin.
6824
6825 2010-06-01  Rafael Espindola  <espindola@google.com>
6826
6827         * plugin.cc (Sized_pluginobj::::do_add_symbols): Correctly set the
6828         visibility of symbols.
6829
6830 2010-05-27  Doug Kwan  <dougkwan@google.com>
6831
6832         * object.cc (Sized_relobj::do_finalize_local_symbols): Use offset
6833         from start of output section instead of address for a local symbol
6834         in a merged or relaxed section when doing a relocatable link.
6835
6836 2010-05-26  Rafael Espindola  <espindola@google.com>
6837
6838         PR 11604
6839         * gold/object.cc(Sized_relobj::do_layout_deferred_sections): Avoid
6840         adding sections the garbage collector removed.
6841         * gold/testsuite/Makefile.am: Add test.
6842         * gold/testsuite/Makefile.in: Regenerate.
6843         * gold/testsuite/plugin_test_7.sh: New.
6844         * gold/testsuite/plugin_test_7_1.c: New.
6845         * gold/testsuite/plugin_test_7_2.c: New.
6846
6847 2010-05-26  Rafael Espindola  <espindola@google.com>
6848
6849         * script-sections.cc (Output_section_definition::set_section_addresses):
6850         Check for --section-start.
6851
6852 2010-05-26  Doug Kwan  <dougkwan@google.com>
6853
6854         * arm.cc (Arm_scan_relocatable_relocs): New class.
6855         (Target_arm::relocate_special_relocatable): New method.
6856         (Arm_relocate_functions::arm_branch_common): Handle relocatable link.
6857         (Arm_relocate_functions::thumb_branch_common): Same.
6858         (Target_arm::scan_relocatable_relocs): Use Arm_scan_relocatable_relocs
6859         instead of Default_scan_relocatable_relocs.
6860         * target-reloc.h (relocate_for_relocatable): Let target handle
6861         relocation strategy Relocatable_relocs::RELOC_SPECIAL.
6862         * target.h (Sized_target::relocate_special_relocatable): New method.
6863
6864 2010-05-25  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
6865
6866         * timer.cc: Only #include <sys/times.h> if HAVE_TIMES is defined.
6867
6868 2010-05-23  Doug Kwan  <dougkwan@google.com>
6869
6870         * arm.cc (Arm_input_section::do_output_offset): Use convert_types
6871         instead of a cast.
6872         (Target_arm::apply_cortex_a8_workaround): Rewrite a conditional branch
6873         with a direct branch, not a conditional branch, to a stub.
6874         * merge.cc (Output_merge_base::record_input_section): New method
6875         defintion.
6876         (Output_merge_data::do_add_input_section): Record input section if
6877         keeps-input-sections flag is set.
6878         (Output_merge_string::do_add_input_section): Ditto.
6879         * merge.h (Output_merge_base::Output_merge_base): Initialize new data
6880         members KEEPS_INPUT_SECTIONS_, FIRST_RELOBJ_, FIRST_SHNDX_ and
6881         INPUT_SECTIONS_.
6882         (Output_merge_base::keeps_input_sections,
6883         Output_merge_base::set_keeps_input_sections,
6884         Output_merge_base::first_relobj, Output_merge_base::first_shndx): New
6885         method definitions.
6886         (Output_merge_base::Input_sections): New type declaration.
6887         (Output_merge_base::input_sections_begin,
6888         Output_merge_base::input_sections_end,
6889         Output_merge_base::do_set_keeps_input_sections): New method definitions.
6890         (Output_merge_base::bool keeps_input_sections_,
6891         Output_merge_base::first_relobj_, Output_merge_base::first_shndx_,
6892         Output_merge_base::input_sections_): New data members.
6893         (Output_merge_data::do_set_keeps_input_sections): New method
6894         defintion.
6895         (Output_merge_string::do_set_keeps_input_sections): Ditto.
6896         * output.cc (Output_section::Input_section::relobj): Move method
6897         defintion from class declaration to here and handle merge sections.
6898         (Output_section::Input_section::shndx): Ditto.
6899         (Output_section::Output_section): Remove initializations of removed
6900         data members and initialize new data member LOOKUP_MAPS_.
6901         (Output_section::add_input_section): Set keeps-input-sections flag
6902         for a newly created merge output section as appropriate.  Adjust code
6903         to use Output_section_lookup_maps class.
6904         (Output_section::add_relaxed_input_section): Adjst code for lookup
6905         maps code refactoring.
6906         (Output_section::add_merge_input_section): Add a new parameter
6907         KEEPS_INPUT_SECTION.  Adjust code to use Output_section_lookup_maps
6908         class.  If adding input section to a newly created merge output
6909         section fails, remove the new merge section.
6910         (Output_section::convert_input_sections_in_list_to_relaxed_input_sections):
6911         Adjust code for use of the Output_section_lookup_maps class.
6912         (Output_section::find_merge_section): Ditto.
6913         (Output_section::build_lookup_maps): New method defintion.
6914         (Output_section::find_relaxed_input_section): Adjust code to use
6915         Output_section_lookup_maps class.
6916         (Output_section::get_input_sections): Export merge sections.  Adjust
6917         code to use Output_section_lookup_maps class.
6918         (Output_section:::add_script_input_section): Adjust code to use
6919         Output_section_lookup_maps class.  Update lookup maps for merge
6920         sections also.
6921         (Output_section::discard_states): Use Output_section_lookup_maps.
6922         (Output_section::restore_states): Same.
6923         * output.h (Merge_section_properties): Move class defintion out of
6924         Output_section.
6925         (Output_section_lookup_maps): New class.
6926         (Output_section::Input_section::is_merge_section): New method
6927         defintion.
6928         (Output_section::Input_section::relobj): Move defintion out of class
6929         defintion.  Declare method only.
6930         (Output_section::Input_section::shndx): Ditto.
6931         (Output_section::Input_section::output_merge_base): New method defintion.
6932         (Output_section::Input_section::u2_.pomb): New union field.
6933         (Output_section::Merge_section_by_properties_map,
6934         Output_section::Output_section_data_by_input_section_map,
6935         Output_section::Ouptut_relaxed_input_section_by_input_section_map):
6936         Remove types.
6937         (Output_section::add_merge_input_section): Add new parameter
6938         KEEPS_INPUT_SECTIONS.
6939         (Output_section::build_lookup_maps): New method declaration.
6940         (Output_section::merge_section_map_,
6941         Output_section::merge_section_by_properties_map_,
6942         Output_section::relaxed_input_section_map_,
6943         Output_section::is_relaxed_input_section_map_valid_): Remove data
6944         members.
6945         (Output_section::lookup_maps_): New data member.
6946
6947 2010-05-21  Doug Kwan  <dougkwan@google.com>
6948
6949         PR gold/11619
6950         * arm.cc (Arm_input_section::do_output_offset): Add a cast to
6951         avoid a compilation error.
6952
6953 2010-05-19  Rafael Espindola  <espindola@google.com>
6954
6955         * script-sections.cc (Output_section_definition::allocate_to_segment):
6956         Update the phdrs_list even when the output section is NULL.
6957         * testsuite/Makefile.am: Add test.
6958         * testsuite/Makefile.in: Regenerate.
6959         * testsuite/script_test_9.cc: New.
6960         * testsuite/script_test_9.sh: New.
6961         * testsuite/script_test_9.t: New.
6962
6963 2010-05-19  Doug Kwan  <dougkwan@google.com>
6964
6965         * arm.cc (Arm_input_section::original_size): New method.
6966         (Arm_input_section::do_addralign): Add a cast.
6967         (Arm_input_section::do_output_offset): Remove static cast.
6968         (Arm_input_section::original_addralign,
6969          Arm_input_section::original_size_): Change type to uint32_t.
6970         (Arm_input_section::init): Add safe casts for section alignment
6971         and size.
6972         (Arm_input_section::set_final_data_size): Do not set address and
6973         offset of stub table.
6974         (Arm_output_section::fix_exidx_coverage): Change use of of
6975         Output_section::Simple_input_section to that of
6976         Output_section::Input_section.
6977         (Target_arm::do_relax): Set addresses and file offsets of Stub_tables
6978         except for the first pass.
6979         * output.cc (Output_section::get_input_sections): Change type of
6980         input_sections to std::list<Input_section>.
6981         (Output_section::add_script_input_section): Rename from
6982         Output_section::add_simple_input_section.  Change type of SIS
6983         parameter from Simple_input_section to Input_section.
6984         * output.h (Output_section::Simple_input_section): Remove class.
6985         (Output_section::Input_section): Change class visibility to public.
6986         (Output_section::Input_section::addralign): Use stored alignments
6987         for special input sections if set.
6988         (Output_section::Input_section::set_addralign): New method.
6989         (Output_section::get_input_sections): Change parameter type from
6990         list of Simple_input_section to list of Input_section.
6991         (Output_section::add_script_input_section): Rename from
6992         Output_section::add_simple_input_section. Change first parameter's
6993         type from Simple_input_section to Input_section and remove the
6994         second and third parameters.
6995         * script-sections.cc (Input_section::Input_section_list): Change
6996         type to list of Output_section::Input_section/
6997         (Input_section_info::Input_section_info): Change parameter type of
6998         INPUT_SECTION to Output_section::Input_section.
6999         (Input_section_info::input_section): Change return type.
7000         (Input_section_info::input_section_): Change type to
7001         Output_section::Input_section.
7002         (Output_section_element_input::set_section_addresses): Adjust code
7003         to use Output_section::Input_section instead of
7004         Output_section::Simple_input_section.  Adjust code for renaming
7005         of Output_section::add_simple_input_section.
7006         (Orphan_output_section::set_section_addresses): Ditto.
7007
7008 2010-05-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7009
7010         * gold.h (Unordered_multimap, Unordered_map): Fix defines for
7011         when neither HAVE_TR1_UNORDERED_MAP nor HAVE_EXT_HASH_MAP are set.
7012
7013 2010-05-18  Rafael Espindola  <espindola@google.com>
7014
7015         * options.cc (General_options::finalize): Handle -nostdlib.
7016         * options.h (nostdlib): New option.
7017         * script.cc (script_add_search_dir): Handle -nostdlib.
7018
7019 2010-05-12  Doug Kwan  <dougkwan@google.com>
7020
7021         * arm.cc (Target_arm::do_finalize_sections): Create an empty
7022         attributes section only if there no attributes section after merging.
7023         (Target_arm::merge_object_attributes): Move value of
7024         Tag_MPextension_use_legacy to that of Tag_MPextension_use.
7025         Handle Tag_DIV_use and Tag_MPextension_use_legacy.
7026         * testsuite/Makefile.am (check_SCRIPTS): Add arm_attr_merge.sh
7027         (check_DATA): Add arm_attr_merge_6.stdout, arm_attr_merge_6r_stdout
7028         and arm_attr_merge_7.stdout.
7029         (arm_attr_merge_6.stdout, arm_attr_merge_6 arm_attr_merge_6a.o
7030         arm_attr_merge_6b.o, arm_attr_merge_6r.stdout, arm_attr_merge_6r,
7031         arm_attr_merge_7.stdout, arm_attr_merge_7, arm_attr_merge_7a.o,
7032         arm_attr_merge_7b.o): New rules.
7033         (MOSTLYCLEANFILES): Add arm_attr_merge_6, arm_attr_merge_6r and
7034         arm_attr_merge_7
7035         * testsuite/Makefile.in: Regenerate.
7036         * testsuite/arm_attr_merge.sh: New file.
7037         * testsuite/arm_attr_merge_[67][ab].s: Same.
7038
7039 2010-05-05  Nick Clifton  <nickc@redhat.com>
7040
7041         * po/es.po: Updated Spanish translation.
7042
7043 2010-04-27  H.J. Lu  <hongjiu.lu@intel.com>
7044
7045         * Makefile.am (install-exec-local): Properly install gold as
7046         default cross linker.
7047         * Makefile.in: Regenerated.
7048
7049 2010-04-27  H.J. Lu  <hongjiu.lu@intel.com>
7050             Nick Clifton  <nickc@redhat.com>
7051
7052         * configure.ac (install_as_default): Define and set to false
7053         unless --enable-gold or --enable-gold=both/gold has been
7054         specified.
7055         * configure: Regenerate.
7056
7057         * Makefile.am (install-exec-local): Install the executable as
7058         'ld.gold'.  If install_as_default is true then also install it as
7059         'ld'.
7060         * Makefile.in: Regenerated.
7061
7062 2010-04-24  Ian Lance Taylor  <iant@google.com>
7063
7064         * layout.cc (Layout::layout_reloc): In relocatable link don't
7065         combine reloc sections for grouped sections.
7066
7067 2010-04-23  Sriraman Tallam  <tmsriram@google.com>
7068
7069         * gc.h (gc_process_relocs): Pass information on relocs pointing to
7070         sections that are not ordinary to icf.
7071         * icf.cc (get_section_contents): Handle relocation pointing to section
7072         with no object or shndx information.
7073         * testsuite/Makefile.am: Remove icf_virtual_function_folding_test.sh
7074         * testsuite/Makefile.in: Regenerate.
7075         * testsuite/icf_virtual_function_folding_test.cc: Remove printf.
7076         * testsuite/icf_virtual_function_folding_test.sh: Delete file.
7077
7078 2010-04-22  Ian Lance Taylor  <iant@google.com>
7079
7080         * expression.cc (Expression::Expression_eval_info): Add
7081         result_alignment_pointer field.
7082         (Expression::eval_with_dot): Add result_alignment_pointer
7083         parameter.  Change all callers.
7084         (Expression::eval_maybe_dot): Likewise.
7085         (class Binary_expression): Add alignment_pointer parameter to
7086         left_value and right_value.  Change all callers.
7087         (BINARY_EXPRESSION): Set result alignment.
7088         (class Trinary_expression): Add alignment_pointer parameter to
7089         arg2_value and arg3_value.  Change all callers.
7090         (Trinary_cond::value): Set result alignment.
7091         (Max_expression::value, Min_expression::value): Likewise.
7092         (Align_expression::value): Likewise.
7093         * script-sections.cc (class Sections_element): Add dot_alignment
7094         parameter to set_section_addresses virtual function.  Update
7095         instantiations.
7096         (class Output_section_element): Likewise.
7097         (Script_sections::create_segments): Add dot_alignment parameter.
7098         Change all callers.
7099         (Script_sections::create_segments_from_phdrs_clause): Likewise.
7100         (Script_sections::set_phdrs_clause_addresses): Likewise.
7101         * script-sections.h: Update declarations.
7102         * script.h: Update declarations.
7103         * output.h (Output_segment::set_minimum_p_align): Don't decrease
7104         min_p_align.
7105         * testsuite/script_test_3.t: Set large alignment.
7106         * testsuite/script_test_3.sh: Make sure that at least one LOAD
7107         segment has expected alignment.
7108
7109 2010-04-22  Nick Clifton  <nickc@redhat.com>
7110
7111         * po/gold.pot: Updated by the Translation project.
7112         * po/vi.po: Updated Vietnamese translation.
7113
7114 2010-04-22  H.J. Lu  <hongjiu.lu@intel.com>
7115
7116         * testsuite/Makefile.am (check_PROGRAMS): Add
7117         icf_virtual_function_folding_test.
7118         * testsuite/Makefile.in: Regenerated.
7119
7120 2010-04-15  Andrew Haley  <aph@redhat.com>
7121
7122         * options.h (merge_exidx_entries): New option.
7123         * arm.cc (class Arm_exidx_fixup): Add new arg, merge_exidx_entries.
7124         (class Arm_exidx_fixup::merge_exidx_entries_): New member.
7125         (Output_section::fix_exidx_coverage): Add new arg, merge_exidx_entries.
7126         (Target_arm::merge_exidx_entries): New function.
7127         (process_exidx_entry): Don't merge if merge_exidx_entries_ is false.
7128         (Arm_output_section::fix_exidx_coverage): Pass merge_exidx_entries
7129         to Arm_exidx_fixup constructor.
7130         Add new arg, merge_exidx_entries.
7131         (Target_arm::fix_exidx_coverage): pass merge_exidx_entries to
7132         Arm_output_section::fix_exidx_coverage.
7133
7134 2010-04-18  Sriraman Tallam  <tmsriram@google.com>
7135
7136         * icf.cc (get_section_contents): Check for preemptible functions.
7137         Ignore addend when appropriate.
7138         * symtab.cc (should_add_dynsym_entry): Add new parameter.  Check for
7139         section folded.
7140         (add_from_relobj): Check for section folded.
7141         (set_dynsym_indexes): Fix call to should_add_dynsym_entry.
7142         * symtab.h (should_add_dynsym_entry): Add new parameter.
7143         * target-reloc.h (scan_relocs): Check for section folded.
7144         * x86_64.cc (Target_x86_64::Scan::possible_function_pointer_reloc):
7145         Check reloc types for function pointers in shared objects.
7146         * testsuite/Makefile.am (icf_virtual_function_folding_test): New test
7147         case.
7148         (icf_preemptible_functions_test): New test case.
7149         (icf_string_merge_test): New test case.
7150         * testsuite.Makefile.in: Regenerate.
7151         * testsuite/icf_safe_so_test.sh: Change to not fold foo_glob and
7152         bar_glob.  Refactor code.
7153         * testsuite/icf_preemptible_functions_test.cc: New file.
7154         * testsuite/icf_preemptible_functions_test.sh: New file.
7155         * testsuite/icf_string_merge_test.cc: New file.
7156         * testsuite/icf_string_merge_test.sh: New file.
7157         * testsuite/icf_virtual_function_folding_test.cc: New file.
7158         * testsuite/icf_virtual_function_folding_test.sh: New file.
7159
7160 2010-04-14  Doug Kwan  <dougkwan@google.com>
7161
7162         * arm.cc (Arm_output_section::fix_exidx_coverage): Mark object
7163         for local symbol recounting if we remove a section due to ICF.
7164         * gold.cc (queue_middle_gc_tasks): Create a dummy blocker if
7165         there are no regular objects in input.
7166
7167 2010-04-13  Doug Kwan  <dougkwan@google.com>
7168
7169         * arm.cc (Arm_input_section::set_final_data_size): Compute
7170         accurate final data size instead of using current data size.
7171
7172 2010-04-09  Doug Kwan  <dougkwan@google.com>
7173
7174         * layout.cc (Layout::choose_output_section): Handle script section
7175         types.
7176         (Layout::make_output_section_for_script): Add section type parameter.
7177         Handle script section types.
7178         * layout.h (Layout::make_output_section_for_script): Add section
7179         type parameter.
7180         * output.cc (Output_section::Output_section): Initialize data member
7181         is_noload_.
7182         (Output_section::do_reset_address_and_file_offset): Do not set address
7183         to 0 if section is a NOLOAD section.
7184         * output.h (Output_section::is_noload): New method.
7185         (Output_section::set_is_noload): Ditto.
7186         (Output_section::is_noload_): New data member.
7187         * script-c.h (Script_section_type): New enum type.
7188         (struct Parser_output_section_header): Add new file section_type.
7189         * script-sections.cc (Sections_element::output_section_name): Add
7190         parameter for returning script section type.
7191         (Output_section_definition::output_section_name): Ditto.
7192         (Output_section_definition::section_type)P; New method.
7193         (Output_section_definiton::script_section_type_name): Ditto.
7194         (Output_section_definition::script_section_type_): New data member.
7195         (Output_section_definition::Output_section_definition): Initialize
7196         data member Output_section_definition::script_section_type_.
7197         (Output_section_definition::create_sections): Pass script section type
7198         to Layout::make_output_section_for_script.
7199         (Output_section_definition::output_section_name): Return script
7200         section type to caller.
7201         (Output_section_definition::set_section_address): Do not advance
7202         dot value and load address if section type is NOLOAD.  Set address
7203         of NOLOAD sections regardless of section flags.
7204         (Output_section_definition::print): Print section type if it is
7205         not SCRIPT_SECTION_TYPE_NONE.
7206         (Output_section_definition::section_type): New method.
7207         (Output_section_definition::script_section_type_name): Ditto.
7208         (Script_sections::output_section_name): Add new parameter
7209         PSECTION_TYPE for returning script section type.  Pass it to
7210         section elements.  Handle discard sections.
7211         (Sort_output_sections::operator()): Handle NOLOAD sections.
7212         * script-sections.h (Script_sections::Section_type): New enum type.
7213         (Script_sections::output_section_name): Add a new parameter for
7214         returning script section type.
7215         * script.cc (script_keyword_parsecodes): Add keywords COPY, DSECT,
7216         INFO and NOLOAD.
7217         * yyscript.y (union): Add new field SECTION_TYPE.
7218         (COPY, DSECT, INFO, NOLOAD): New tokens.
7219         (opt_address_and_section_type): Change type to output_section_header.
7220         (section_type): New non-terminal
7221         (section_header): Handle section type.
7222         (opt_address_and_section_type): Return section type value.
7223
7224 2010-04-09  H.J. Lu  <hongjiu.lu@intel.com>
7225
7226         * testsuite/plugin_common_test_1.c (foo): Add prototype.
7227         * testsuite/plugin_common_test_2.c (foo): Likewise.
7228
7229 2010-04-08  Doug Kwan  <dougkwan@google.com>
7230
7231         * merge.cc (Output_merge_data::set_final_data_size): Handle empty
7232         Output_merge_data.
7233         * output.cc (Output_section::add_merge_input_section): Simplify
7234         code and return status of Output_merge_base::add_input_section.
7235         Update merge section map only if Output_merge_base::add_input_section
7236         returns true.
7237
7238 2010-04-07  Doug Kwan  <dougkwan@google.com>
7239
7240         * arm.cc (Arm_relobj::scan_section_for_cortex_a8_erratum): Warn
7241         if section is marked as containing instructions but has no mapping
7242         symbols.
7243         (Arm_relobj::do_count_local_symbols): Call adjust_sym_shndx to get
7244         correct section index.
7245         (Arm_relobj::find_linked_text_section): Ditto.
7246
7247 2010-04-07  Cary Coutant  <ccoutant@google.com>
7248
7249         * archive.cc (include_member): Destroy Read_symbols_data object before
7250         releasing file.
7251         * object.cc (Read_symbols_data::~Read_symbols_data) New destructor.
7252         * object.h (Read_symbols_data::Read_symbols_data) New constructor.
7253         (Read_symbols_data::~Read_symbols_data) New destructor.
7254         (Section_relocs::Section_relocs) New constructor.
7255         (Section_relocs::~Section_relocs) New destructor.
7256         (Read_relocs_data::Read_relocs_data) New constructor.
7257         (Read_relocs_data::~Read_relocs_data) New destructor.
7258         * testsuite/binary_unittest.cc (Sized_binary_test): Set sd member
7259         pointers to NULL after deleting.
7260
7261 2010-04-07  Doug Kwan  <dougkwan@google.com>
7262
7263         * arm.cc: Replace "endianity" with "endianness" in comments.
7264         (Arm_exidx_cantunwind): Ditto.
7265         (Arm_relobj::Arm_relobj): Initialize merge_flags_and_attribures.
7266         (Arm_relobj::merge_flags_and_attributes): New method.
7267         (Arm_relobj::merge_flags_and_attributes_): New data member.
7268         (Arm_exidx_cantunwind::do_fixed_endian_write): Fix formatting.
7269         (Arm_relobj::scan_sections_for_stubs): Ditto.
7270         (Arm_relobj::do_read_symbols): Check to see if we really want to
7271         merge processor-specific flags and attributes.  Exit early if
7272         an object is empty except for section names and the undefined symbol.
7273         (Target_arm::do_finalize_sections): Move check for ELF format to
7274         Arm_relobj::do_read_symbols.  Merge processor specific flags and
7275         attributes from a regular object only when we have determined that
7276         it is aapropriate.  Do not create an .ARM.attributes section in
7277         output if there is no regular input object.
7278         (Target_arm::merge_processor_specific_flags): Check
7279         --warn-mismatch before printing any error.
7280         (Target_arm::merge_object_attributes): Ditto.
7281         * gold.cc (queue_middle_tasks): Handle the case in which there is
7282         no regular object in input.
7283         * options.cc (General_options::parse_EB): New method.
7284         (General_options::parse_EL): Same.
7285         (General_options::General_options): Initialize endianness_.
7286         * options.h (-EB, -EL, -no-pipeline-knowledge, -p, --warn-mismatch):
7287         New options.
7288         (General_options::Endianness): New enum.
7289         (General_options::endianness): New method.
7290         (General_options::endianness_): New data member.
7291         * parameters.cc (Parameters::set_options): Check target endianness.
7292         (Parameters::set_target_once): Ditto.
7293         (Parameters::check_target_endianness): New method.
7294         (parameters_force_valid_target): If either -EL or -EB is specified,
7295         use it to define endianness of default target.
7296         * parameters.h (Parameters::check_target_endianness): New method
7297         declaration.
7298         * target.h (class Target): Change "endianity" to "endianness"
7299         in comments.
7300
7301 2010-04-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7302
7303         * configure.ac (AM_INIT_AUTOMAKE): Add option no-dist.
7304         * configure: Regenerate.
7305         * Makefile.in: Regenerate.
7306         * testsuite/Makefile.in: Regenerate.
7307
7308 2010-04-06  Cary Coutant  <ccoutant@google.com>
7309
7310         gcc PR lto/42757
7311         * plugin.cc (Pluginobj::get_symbol_resolution_info): Check for
7312         prevailing definitions of common symbols.
7313         * testsuite/plugin_test_6.sh: New test case.
7314         * testsuite/plugin_common_test_1.c: New test case.
7315         * testsuite/plugin_common_test_2.c: New test case.
7316         * testsuite/Makefile.am (plugin_test_6): New test case.
7317         * testsuite/Makefile.in: Regenerate.
7318
7319 2010-04-06  Nick Clifton  <nickc@redhat.com>
7320
7321         * po/vi.po: New Vietnamese translation.
7322
7323 2010-03-30  Doug Kwan  <dougkwan@google.com>
7324
7325         * arm.cc (Target_arm::using_thumb_only): Handle v6-M
7326
7327 2010-03-25  Doug Kwan  <dougkwan@google.com>
7328
7329         * gold/arm.cc (Arm_exidx_fixup::update_offset_map): Rearrange code
7330         to avoid a conversion warning on a 32-bit host.
7331
7332 2010-03-24  Ian Lance Taylor  <iant@google.com>
7333
7334         * testsuite/script_test_3.t: Add a TLS segment.
7335         * testsuite/Makefile.am (check_PROGRAMS): Add
7336         tls_phdrs_script_test.
7337         (tls_phdrs_script_test_SOURCES): Define.
7338         (tls_phdrs_script_test_DEPENDENCIES): Define.
7339         (tls_phdrs_script_test_LDFLAGS): Define.
7340         (tls_phdrs_script_test_LDADD): Define.
7341         * testsuite/Makefile.in: Rebuild.
7342
7343 2010-03-23  Cary Coutant  <ccoutant@google.com>
7344
7345         * fileread.cc (find_or_make_view): Fix comment.
7346
7347 2010-03-23  Ian Lance Taylor  <iant@google.com>
7348
7349         * script-sections.cc (class Orphan_section_placement): Define
7350         PLACE_TLS and PLACE_TLS_BSS.
7351         (Orphan_section_placement::Orphan_section_placement): Initialize
7352         new places.
7353         (Orphan_section_placement::find_place): Handle SHF_TLS sections.
7354         * testsuite/Makefile.am (check_PROGRAMS): Add tls_script_test.
7355         (tls_script_test_SOURCES): Define.
7356         (tls_script_test_DEPENDENCIES): Define.
7357         (tls_script_test_LDFLAGS): Define.
7358         (tls_script_test_LDADD): Define.
7359         * testsuite/Makefile.in: Rebuild.
7360
7361 2010-03-22  Doug Kwan  <dougkwan@google.com>
7362
7363         * arm.cc (Arm_relocate_functions::abs8,
7364         Arm_relocate_functions::abs16): Use correct check for overflow
7365         specified in the ARM ELF specs.
7366         (Arm_relocate_functions): thumb_branch_common.  Handle bit 1 of branch
7367         target of a BLX instruction specially.
7368         (Reloc_stub::stub_type_for_reloc): Ditto.
7369         (Relocate::relocate): Use symbolic names instead of numeric relocation
7370         codes to report error.
7371         (Target_arm::do_relox): Reduce default stub-group size for Cortex-A8
7372         workaround.
7373         * testsuite/Makefile.am (check_DATA): add thumb_blx_in_range.stdout,
7374         thumb_blx_out_of_range.stdout, thumb2_blx_in_range.stdout and
7375         thumb2_blx_out_of_range.stdout
7376         (thumb_bl_out_of_range, thumb_bl_out_of_range.o,
7377         thumb2_bl_out_of_range, thumb2_bl_out_of_range.o): Fix dependenices.
7378         (thumb_blx_in_range.stdout, thumb_blx_in_range, thumb_blx_in_range.o,
7379         thumb_blx_out_of_range.stdout, thumb_blx_out_of_range,
7380         thumb_blx_out_of_range.o, thumb2_blx_in_range.stdout,
7381         thumb2_blx_in_range, thumb2_blx_in_range.o,
7382         thumb2_blx_out_of_range.stdout, thumb2_blx_out_of_range,
7383         thumb2_blx_out_of_range.o): New rules.
7384         (MOSTLYCLEANFILES): Add thumb_blx_in_range, thumb_blx_out_of_range,
7385         thumb2_blx_in_range and thumb2_blx_out_of_range.
7386         * testsuite/Makefile.in: Regenerate.
7387         * arm_branch_in_range.sh: Add tests for THUMB BLX.
7388         * testsuite/thumb_blx_in_range.s: New file.
7389         * testsuite/thumb_blx_out_of_range.s: New file.
7390
7391 2010-03-22  Rafael Espindola  <espindola@google.com>
7392
7393         * archive.cc (Should_include): Move to archive.h.
7394         (should_include_member): Make it a member of Archive.
7395         (Lib_group): New.
7396         (Add_lib_group_symbols): New.
7397         * archive.h: Include options.h.
7398         (Archive_member): Moved from Archive.
7399         (Should_include): Moved from archive.cc.
7400         (Lib_group): New.
7401         (Add_lib_group_symbols): New.
7402         * dynobj.cc (do_should_include_member): New.
7403         * dynobj.h (do_should_include_member): New.
7404         * gold.cc (queue_initial_tasks): Update call to queue.
7405         * main.cc (main): Print lib group stats.
7406         * object.cc (do_should_include_member): New.
7407         * object.h: Include archive.h.
7408         (Object::should_include_member): New.
7409         (Object::do_should_include_member): New.
7410         (Sized_relobj::do_should_include_member): New.
7411         * options.cc (General_options::parse_start_lib): New.
7412         (General_options::parse_end_lib): New.
7413         (Input_arguments::add_file): Handle lib groups.
7414         (Input_arguments::start_group): Check we are not in a lib.
7415         (Input_arguments::start_lib): New.
7416         (Input_arguments::end_lib): New.
7417         * options.h (General_options): Add start_lib and end_lib.
7418         (Input_argument::lib_): New.
7419         (Input_argument::lib): New.
7420         (Input_argument::is_lib): New.
7421         (Input_file_lib): New.
7422         (Input_arguments::in_lib_): New.
7423         (Input_arguments::in_lib): New.
7424         (Input_arguments::start_lib): New.
7425         (Input_arguments::end_lib_): New.
7426         * plugin.cc (Pluginobj::get_symbol_resolution_info): Mark symbols
7427         in unused members as preempted.
7428         (Sized_pluginobj::do_should_include_member): New.
7429         * plugin.h (Sized_pluginobj::do_should_include_member): New.
7430         * readsyms.cc (Read_symbols::locks): If we are just reading a member,
7431         return the blocker.
7432         (Read_symbols::do_whole_lib_group): New.
7433         (Read_symbols::do_lib_group): New.
7434         (Read_symbols::do_read_symbols): Handle lib groups.
7435         (Read_symbols::get_name): Handle lib groups.
7436         * readsyms.h (Read_symbols): Add an archive member pointer.
7437         (Read_symbols::do_whole_lib_group): New.
7438         (Read_symbols::do_lib_group): New.
7439         (Read_symbols::member_): New.
7440         * script.cc (read_input_script): Update call to queue_soon.
7441
7442 2010-03-19  Doug Kwan  <dougkwan@google.com>
7443
7444         * arm.cc (Stub_table::Stub_table): Initialize new data members
7445         Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_.
7446         (Stub_table::add_reloc_stub): Assign stub offset and update
7447         Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_.
7448         (Stub_table::reloc_stubs_size_, Stub_table::reloc_stubs_addralign_):
7449         New data members.
7450         (Stub_table::update_data_size_and_addralign): Use
7451         Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_
7452         instead of going over all reloc stubs.
7453         (Stub_table::finalize_stubs): Do not assign reloc stub offsets.
7454         * stringpool.cc (Stringpool_template::Stringpool_template): Initialize
7455         Stringpool_template::offset_ to size of Stringpool_char.
7456         (Stringpool_template::new_key_offset): Remove code to initialize
7457         Stringpool_template::offset_.
7458         * stringpool.h (Stringpool_template::set_no_zero_null): Set
7459         Stringpool_template::offset_ to zero.
7460
7461 2010-03-15  Doug Kwan  <dougkwan@google.com>
7462
7463         * stringpool.cc (Stringpool_template::Stringpool_template): Initialize
7464         offset_.
7465         (Stringpool_template::new_key_offset): New method.
7466         (Stringpool_template::add_string): Assign offsets when adding new
7467         strings.
7468         (Stringpool_template::set_string_offsets): Do not set string offsets
7469         when not optimizing.
7470         * stringpool.h (Chunked_vector::Chunked_vector): Initialize data
7471         member size_.
7472         (Chunked_vector::clear): Clear size_.
7473         (Chunked_vector::reserve): Call reserve method of all Element_vectors.
7474         (Chunked_vector::size): Return size_.
7475         (Chunked_vector::push_back): Use size_ to find insert position.
7476         (Chunked_vector::size_): New data member.
7477         (Stringpool_template::set_no_zero_null): Assert string set is empty.
7478         (Stringpool_template::new_key_offset): New method declaration.
7479         (Stringpool_template::offset_): New data member.
7480
7481 2010-03-15   Rafael Espindola  <espindola@google.com>
7482
7483         * readsyms.cc (Read_symbols::do_read_symbols): Update calls to
7484         Add_symbols' constructor.
7485         * readsyms.h (Add_symbols): Remove the input_group member.
7486
7487 2010-03-10  Ian Lance Taylor  <iant@google.com>
7488
7489         * reloc.cc (Sized_relobj::split_stack_adjust_reltype): Call the
7490         target to ask whether a reference to a symbol requires a stack
7491         split.
7492         * target.h (Target::is_call_to_non_split): New function.
7493         (Target::do_is_call_to_non_split): Declare virtual function.
7494         * target.cc: Include "symtab.h".
7495         (Target::do_is_call_to_non_split): New function.
7496         * i386.cc (Target_i386::do_is_call_to_non_split): New function.
7497
7498 2010-03-10  Cary Coutant  <ccoutant@google.com>
7499
7500         * fileread.cc (File_read::~File_read): Don't delete whole_file_view_.
7501         (File_read::open[1]): Remove initial mapping of whole_file_view_.
7502         (File_read::open[2]): Add whole_file_view_ to list of views.
7503         (File_read::make_view): Remove test of whole_file_view_.
7504         (File_read::find_or_make_view): Create whole_file_view_ if
7505         necessary.
7506         (File_read::clear_views): Replace bool parameter with enum;
7507         adjust all callers.  Don't delete views with permanent data;
7508         do delete cached views and views from archives if
7509         --no-keep-files-mapped is set.  Set whole_file_view_ to NULL
7510         if clearing the corresponding view.
7511         * fileread.h (File_read::Clear_views_mode): New enum.
7512         (File_read::View::is_permanent_view): New method.
7513         (File_read::clear_views): Replace bool parameter
7514         with enum; adjust all callers.
7515         * options.h (General_options): Change keep_files_mapped option;
7516         add map_whole_files.
7517         * readsyms.cc (Add_symbols::run): Delete sd_ object before
7518         releasing the file.
7519         * reloc.cc (Scan_relocs::run): Delete rd_ object before releasing
7520         the file.
7521
7522 2010-03-10  David S. Miller  <davem@davemloft.net>
7523
7524         * sparc.cc (Target_sparc::Scan::local): Accept R_SPARC_WPLT30.
7525
7526 2010-03-09  Sriraman Tallam  <tmsriram@google.com>
7527
7528         * icf.cc (get_section_contents): Add '@' marker after processing the
7529         merge reloc.
7530
7531 2010-03-08  Doug Kwan  <dougkwan@google.com>
7532
7533         * gold/arm.cc (Arm_exidx_fixup::update_offset_map): Fix build breakage
7534         due to a conversion warning.
7535         (Arm_relobj::update_output_local_symbol_count): Check for local
7536         symbol with unset output index.
7537
7538 2010-03-05  Ian Lance Taylor  <iant@google.com>
7539
7540         * options.h (class General_options): Add --spare-dynamic-tags.
7541         * output.cc (Output_data_dynamic::set_final_data_size): Implement
7542         --spare-dynamic-tags.
7543
7544 2010-03-05  Ian Lance Taylor  <iant@google.com>
7545
7546         * incremental.cc: Include "libiberty.h".
7547
7548 2010-03-05  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
7549
7550         * dynobj.h (Verdef::Verdef): Add is_info arg, is_info member
7551         function, is_info_ member.
7552         * dynobj.cc (Verdef::write): Set VER_FLG_INFO if this->is_info_.
7553         (Versions::Versions): Update caller.
7554         (Versions::define_base_version): Likewise.
7555         (Versions::add_def): Likewise.
7556
7557 2010-03-03  Sriraman Tallam  <tmsriram@google.com>
7558
7559         * i386.cc (Target_i386::can_check_for_function_pointers): New function.
7560         (Scan::possible_function_pointer_reloc): New function.
7561         (Scan::local_reloc_may_be_function_pointer): Change to call
7562         possible_function_pointer_reloc.
7563         (Scan::global_reloc_may_be_function_pointer): Ditto.
7564         * icf.h (Icf::check_section_for_function_pointers): Change to reject
7565         relocations in ".data.rel.ro._ZTV" section.
7566         * testsuite/icf_safe_so_test.sh: Change to pass i386.
7567         * testsuite/icf_safe_so_test.cc: Ditto.
7568         * testsuite/icf_safe_test.cc: Ditto.
7569         * testsuite/icf_safe_test.sh: Ditto.
7570
7571 2010-03-03  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
7572             Ian Lance Taylor  <iant@google.com>
7573
7574         * target-reloc.h (relocate_section): Check the symbol table index
7575         for -1U before setting the local symbol index.
7576         (scan_relocatable_relocs): If copying the relocation, record that
7577         the local symbol is required.
7578         * object.h (Symbol_value::is_output_symtab_index_set): New
7579         function.
7580         (Symbol_value::may_be_discarded_from_output_symtab): New
7581         function.
7582         (Symbol_value::has_output_symtab_entry): New function.
7583         (Symbol_value::needs_output_symtab_entry): Remove.
7584         (Symbol_value::output_symtab_index): Make sure the symbol index is
7585         set.
7586         (Symbol_value::set_output_symtab_index): Make sure the symbol
7587         index is not set.  Make sure the new index is valid.
7588         (Symbol_value::set_must_have_output_symtab_entry): New function.
7589         (Symbol_value::has_output_dynsym_entry): New function.
7590         (Symbol_value::set_output_dynsym_index): Make sure the new index
7591         is valid.
7592         (Sized_relobj::set_must_have_output_symtab_entry): New function.
7593         * object.cc (Sized_relobj::do_count_local_symbols): Only discard a
7594         local symbol if permitted.
7595         (Sized_relobj::do_finalize_local_symbols): Call
7596         is_output_symtab_index_set rather than needs_output_symtab_entry.
7597         (Sized_relobj::write_local_symbols): Call has_output_symtab_entry
7598         rather than needs_output_symtab_entry.  Call
7599         has_output_dynsym_entry rather than needs_output_dynsym_entry.
7600         * arm.cc (Arm_relobj::update_output_local_symbol_count): Call
7601         is_output_symtab_index_set rather than needs_output_symtab_entry.
7602         * testsuite/discard_locals_relocatable_test.c: New file.
7603         * testsuite/discard_locals_test.sh: Test -r.
7604         * testsuite/Makefile.am (check_DATA): Add
7605         discard_locals_relocatable_test1.syms,
7606         discard_local_relocatable_test2.syms.
7607         (MOSTLYCLEANFILES): Likewise.  Also add
7608         discard_locals_relocatable_test1.lout and
7609         discard_locals_relocatable_test2.out.
7610         (discard_locals_relocatable_test1.syms): New target.
7611         (discard_locals_relocatable_test.o): New target.
7612         (discard_locals_relocatable_test1.out): New target.
7613         (discard_locals_relocatable_test2.syms): New target.
7614         (discard_locals_relocatable_test2.out): New target.
7615         (various): Add missing ../ld-new dependencies.
7616         * testsuite/Makefile.in: Rebuild.
7617
7618 2010-03-03  Nick Clifton  <nickc@redhat.com>
7619
7620         * po/fi.po: New Finnish translation.
7621
7622 2010-03-01  Doug Kwan  <dougkwan@google.com>
7623
7624         * layout.cc (Layout::Layout): Force section types of .init_array*,
7625         .preinit_array* and .fini_array* sections.
7626         * output.cc (Output_section::Input_section_sort_entry::has_priority):
7627         Fix check of return value of std::string::find.().
7628         (Output_section::Input_section_sort_compare::operator()): Remove
7629         comment about .init_array.
7630         (Output_section::Input_section_sort_init_fini_compare::operator()):
7631         New method.
7632         (Output_section::sort_attached_input_sections): Handle .init_array
7633         and .fini_array specially.
7634         * output.h (Output_section::Inut_section_sort_compare): Update
7635         comment.
7636         (Output_section::Input_section_sort_init_fini_compare): New struct.
7637
7638 2010-02-26  Doug Kwan  <dougkwan@google.com>
7639
7640         * arm.cc (Target_arm::Relocate::reloc_is_non_pic): Treat
7641         R_ARM_PREL31 and R_ARM_SBREL31 as position independent.
7642         * testsuite/debug_msg.sh: Avoid matching source line number for
7643         use of global variable undef_int.
7644
7645 2010-02-26  Doug Kwan  <dougkwan@google.com>
7646
7647         * arm.cc (Target_arm::scan_reloc_for_stub): Move code handling
7648         R_ARM_V4BX to Target_arm::scan_reloc_section_for_stubs.
7649         (Target_arm::scan_reloc_section_for_stubs): Instead of calling
7650         scan_reloc_for_stub, do all processing of R_ARM_V4BX here.
7651         * options.cc (General_options::General_options): Initialize member
7652         fix_v4bx_.
7653         * testsuite/Makefile.am (check_SCRIPTS): Add arm_fix_v4bx.sh
7654         (check_DATA): Add arm_fix_v4bx.stdout, arm_fix_v4bx_interworking.stdout
7655         and rm_no_fix_v4bx.stdout
7656         (arm_fix_v4bx.stdout, arm_fix_v4bx, arm_fix_v4bx.o,
7657         arm_fix_v4bx_interworking.stdout, arm_fix_v4bx_interworking,
7658         arm_no_fix_v4bx.stdout, arm_no_fix_v4bx): New make rules.
7659         (MOSTLYCLEANFILES): Add arm_fix_v4bx, arm_fix_v4bx_interworking
7660         and arm_no_fix_v4bx.
7661         * Makefile.in: Regenerate.
7662         * testsuite/arm_fix_v4bx.s: New file.
7663         * testsuite/arm_fix_v4bx.sh: Ditto.
7664
7665 2010-02-24  Doug Kwan  <dougkwan@google.com>
7666
7667         * arm.cc (Target_arm::got_section): Make the .got section the first
7668         non RELRO section in the data segment.
7669         * testsuite/script_test_5.sh: Fix match patterns to avoid matching
7670         suffixes of section names.
7671
7672 2010-02-24  Doug Kwan  <dougkwan@google.com>
7673
7674         * arm.cc (Target_arm::do_finalize_sections): Skip processor specific
7675         flags and attributes merging if an input file is a binary file.
7676         * fileread.cc (Input_file::open): Record format of original file.
7677         * fileread.h (Input_file::Format): New enum type.
7678         (Input_file::Input_file): Initialize data member format_.
7679         (Input_file::format): New method definition.
7680         (Input_file::format_):: New data member.
7681
7682 2010-02-24  Doug Kwan  <dougkwan@google.com>
7683
7684         * arm.cc (Arm_output_data_got): New class.
7685         (ARM_TCB_SIZE): New constant
7686         (Target_arm): Use Arm_output_data_got instead of Output_data_got.
7687         (Arm_output_section::fix_exidx_coverage): Add a parameter for layout.
7688         If user uses a script with a SECTIONS clause, issue only a warning
7689         for a misplaced EXIDX input section.  Otherwise, issue an error.
7690         (Arm_relobj::do_gc_process_relocs): Exit early if we are not doing
7691         garbage collection.
7692         (Target_arm::got_mode_index_entry): Handle static linking.
7693         (Target_arm::Scan::local): Ditto.
7694         (Target_arm::Scan::global): Ditto.
7695         (Target_arm::Relocate::relocate_tls): Handle static linking.  Fix
7696         all incorrectly implemented relocations.
7697         (Target_arm::fix_exidx_coverage): Pass layout to
7698         Arm_output_section::fix_exidx_coverage.
7699         * layout.cc (Layout::section_name_mapping): Remove trailing dots
7700         from ".ARM.exidx." and ".ARM.extab.".
7701
7702 2010-02-23  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
7703
7704         * arm.cc (Target_arm::do_finalize_sections): Create attribute
7705         section if it does not already exist.
7706         * attributes.cc (Attributes_section_data::Attributes_section_data):
7707         Don't crash if size is zero.
7708
7709 2010-02-23  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
7710             Ian Lance Taylor  <iant@google.com>
7711
7712         * gold.cc (queue_middle_tasks): If no input files were opened,
7713         exit.
7714         * workqueue.h (Task_function::Task_function): Assert that there is
7715         a blocker.
7716
7717 2010-02-22  Doug Kwan  <dougkwan@google.com>
7718
7719         * gold-threads.h (Once::~Once): Explicitly define virtual destructor.
7720         * icf.cc (get_section_contents): Cast snprintf arguments to long long
7721         types to avoid warnings due to different uint64_t implementations
7722         on different hosts.
7723
7724 2010-02-21  Doug Kwan  <dougkwan@google.com>
7725
7726         * arm.cc (Arm_relocate_functions::arm_branch_common): Fix bug in
7727         handling of the maximum backward branch offset.
7728         (Arm_relocate_functions::thumb_branch_common): Ditto.
7729         * testsuite/Makefile.am (check_SCRIPTS): Add arm_branch_in_range.sh.
7730         (check_DATA): Add arm_bl_in_range.stdout, arm_bl_out_of_range.stdout
7731         thumb_bl_in_range.stdout, thumb_bl_out_of_range.stdout,
7732         thumb2_bl_in_range.stdout and thumb2_bl_out_of_range.stdout.
7733         (arm_bl_in_range.stdout, arm_bl_in_range, arm_bl_in_range.o,
7734         arm_bl_out_of_range.stdout, arm_bl_out_of_range,
7735         arm_bl_out_of_range.o, thumb_bl_in_range.stdout, thumb_bl_in_range,
7736         thumb_bl_in_range.o, thumb_bl_out_of_range.stdout,
7737         thumb_bl_out_of_range thumb_bl_out_of_range.o,
7738         thumb2_bl_in_range.stdout, thumb2_bl_in_range, thumb2_bl_in_range.o
7739         thumb2_bl_out_of_range.stdout, thumb2_bl_out_of_range,
7740         thumb2_bl_out_of_range.o): New rules.
7741         (MOSTLYCLEANFILES): Add arm_bl_in_range, arm_bl_out_of_range,
7742         thumb_bl_in_range, thumb_bl_out_of_range, thumb2_bl_in_range and
7743         thumb2_bl_out_of_range
7744         * testsuite/Makefile.in: Regenerate.
7745         * testsuite/arm_bl_in_range.s: New file.
7746         * testsuite/arm_bl_out_of_range.s: Ditto.
7747         * testsuite/arm_branch_in_range.sh: Ditto.
7748         * testsuite/arm_branch_range.t: Ditto.
7749         * testsuite/thumb2_branch_range.t: Ditto.
7750         * testsuite/thumb_bl_in_range.s: Ditto.
7751         * testsuite/thumb_bl_out_of_range.s: Ditto.
7752         * testsuite/thumb_branch_range.t: Ditto.
7753
7754 2010-02-20  Sriraman Tallam  <tmsriram@google.com>
7755
7756         * gc.h (gc_process_relocs): Change vectors to point to the new list.
7757         Add reloc offset information.
7758         * icf.cc (get_section_contents): Change iterators to point to the new
7759         vectors. Add reloc offset information to the contents.
7760         * icf.h (Icf::Sections_reachable_info): New typedef.
7761         (Icf::Sections_reachable_list): New typedef.
7762         (Icf::Offset_info): New typedef.
7763         (Icf::Reloc_info): New struct typedef.
7764         (Icf::Reloc_info_list): New typedef.
7765         (Icf::symbol_reloc_list): Delete method.
7766         (Icf::addend_reloc_list): Delete method.
7767         (Icf::section_reloc_list): Delete method.
7768         (Icf::reloc_info_list): New method.
7769         (Icf::reloc_info_list_): New member.
7770
7771 2010-02-19  Doug Kwan  <dougkwan@google.com>
7772
7773         * arm-reloc.def: Mark R_ARM_TLS_GD32, R_ARM_TLS_LDM32,
7774         R_ARM_TLS_LDO32, R_ARM_TLS_IE32 and R_ARM_TLS_LE32 are implemented.
7775         * arm.cc (Arm_relocation_functions): New forward declaration.
7776         (Target_arm::Target_arm): Initialize new data members
7777         got_mod_index_offset_ and tls_base_symbol_defined_.
7778         (Target_arm::Relocate::relocate_tls): New method.
7779         (Target_arm::optimize_tls_reloc, Target_arm::define_tls_base_symbol,
7780          Target_arm::got_mod_index_entry, Target_arm::rel_tls_desc_section):
7781         New methods.
7782         (Target_arm::Got_type): Add GOT_TYPE_TLS_NOFFSET, GOT_TYPE_OFFSET,
7783         GOT_TYPE_TLS_PAIR and GOT_TYPE_TLS_DESC.
7784         (Target_arm::got_mod_index_offset_,
7785         Target_arm::tls_base_symbol_defined_): New data members.
7786         (Target_arm::Scan::local, Target::Scan::global,
7787         Target_arm::Relocate::relocate): Handle 32-bit initial TLS
7788         relocations.
7789
7790 2010-02-18  Doug Kwan  <dougkwan@google.com>
7791
7792         * arm.cc (Arm_relobj::find_linked_text_section): New method.
7793         (Arm_relobj::make_exidx_input_section): Pass section index of linked
7794         text section as a parameter becuase some broken tools may not set
7795         the link in section header.
7796         (Target_arm::has_got_section): New method.
7797         (Target_arm::scan_section_for_cortex_a8_stubs): Treat an input section
7798         without any mapping symbol as data only.  Remove warning.
7799         (Arm_relobj::do_read_synbols): If an EXIDX input section has no
7800         link in its section header, try to discover the link by inspecting the
7801         REL31 relocation at the beginning of the section.
7802         (Target_arm::Scan::check_non_pic): Report name of offending relocation
7803         in error message.
7804         (Target_arm::Scan::global): Treat any reference to the symbol
7805         _GLOBAL_OFFSET_TABLE_ as a GOT access.
7806
7807 2010-02-12  Sriraman Tallam  <tmsriram@google.com>
7808
7809         * arm.cc (Scan::local_reloc_may_be_function_pointer): New function.
7810         (Scan::global_reloc_may_be_function_pointer): New function.
7811         * sparc.cc (Scan::local_reloc_may_be_function_pointer): New function.
7812         (Scan::global_reloc_may_be_function_pointer): New function.
7813         * powerpc.cc (Scan::local_reloc_may_be_function_pointer): New function.
7814         (Scan::global_reloc_may_be_function_pointer): New function.
7815         * i386.cc (Scan::local_reloc_may_be_function_pointer): New function.
7816         (Scan::global_reloc_may_be_function_pointer): New function.
7817         * x86_64.cc (Scan::local_reloc_may_be_function_pointer): New function.
7818         (Scan::global_reloc_may_be_function_pointer): New function.
7819         (Scan::possible_function_pointer_reloc): New function.
7820         (Target_x86_64::can_check_for_function_pointers): New function.
7821         * gc.h (gc_process_relocs): Scan relocation types to determine if
7822         function pointers were taken for targets that support it.
7823         * icf.cc (Icf::find_identical_sections): Include functions for
7824         folding in safe ICF whose pointer is not taken.
7825         * icf.h (Secn_fptr_taken_set): New typedef.
7826         (fptr_section_id_): New member.
7827         (section_has_function_pointers): New function.
7828         (set_section_has_function_pointers): New function.
7829         (check_section_for_function_pointers): New function.
7830         * options.h: Fix comment for safe ICF option.
7831         * target.h (can_check_for_function_pointers): New function.
7832         * testsuite/Makefile.am: Add icf_safe_so_test test case.
7833         Modify icf_safe_test for X86-64.
7834         * testsuite/Makefile.in: Regenerate.
7835         * testsuite/icf_safe_so_test.cc: New file.
7836         * testsuite/icf_safe_so_test.sh: New file.
7837         * testsuite/icf_safe_test.cc (kept_func_3): New function.
7838         (main): Change to take pointer to function kept_func_3.
7839         * testsuite/icf_safe_test.sh (arch_specific_safe_fold): Check if safe
7840         folding is done correctly for X86-64.
7841
7842 2010-02-12  David S. Miller  <davem@davemloft.net>
7843
7844         * output.h (Output_reloc<SHT_REL>::Output_reloc): Add
7845         is_symbolless parameter.
7846         (Output_reloc<SHT_REL>::is_symbolless): New.
7847         (Output_reloc<SHT_REL>::is_symbolless_): New.
7848         (Output_reloc<SHT_REL>::type_): Decrease to 29 bits.
7849         (Output_reloc<SHT_RELA>::Output_reloc): Add is_symbolless parameter.
7850         (Output_reloc<SHT_RELA>::is_symbolless): New.
7851         (Output_data_reloc::add_global): Handle is_symbolless.
7852         (Output_data_reloc::add_global_relative): Likewise.
7853         (Output_data_reloc::add_local): Likewise.
7854         (Output_data_reloc::add_local_relative): Likewise.
7855         (Output_data_reloc::add_symbolless_global_addend): New.
7856         (Output_data_reloc::add_symbolless_local_addend): New.
7857         * output.cc (Output_reloc<SHT_REL>::Output_reloc): Handle
7858         is_symbolless.
7859         (Output_reloc::set_needs_dynsym_index): Test ->is_symbolless_
7860         instead of ->is_relative_
7861         (Output_reloc::write): Likewise.
7862         (Output_reloc::get_symbol_index): Return 0 when ->is_symbolless_
7863         (Output_reloc::write_rel): Simplify.
7864
7865         * sparc.cc (Target_sparc::Scan::local): Use
7866         ->add_symbolless_local_addend as needed.
7867         (Target_sparc::Scan::global): Use ->add_symbolless_global_addend as
7868         needed.  Also, emit appropriate unaligned vs. aligned dynamic reloc
7869         based upon relocation offset.
7870
7871 2010-02-11  Doug Kwan  <dougkwan@google.com>
7872
7873         * arm.cc (Target_arm::Scan::local): Fix bugs in relocation handling.
7874         (Target_arm::Scan::global): Ditto.  Also remove a comment before the
7875         beginning of function.
7876         (Target_arm::Relocate::relocate): Remove error messages for MOVW_ABS
7877         and MOVT_ABS relocations.  Those are non issued in scanning.  Fix
7878         parameter is_32bit in calls to should_apply_static_reloc.
7879         * testsuite/Makefile.am (check_SCRIPTS): Add arm_abs_global.sh.
7880         (check_DATA): Add arm_abs_global.stdout.
7881         (arm_abs_lib.o, libarm_abs.so, arm_abs_global.o, arm_abs_global,
7882         arm_abs_global.stdout): New rules.
7883         (MOSTLLYCLEANFILES): Add arm_abs_global
7884         * Makefile.in: Regenerate.
7885         * testsuite/arm_abs_global.s: New file.
7886         * testsuite/arm_abs_global.sh: Ditto.
7887         * testsuite/arm_abs_lib.s: Ditto.
7888
7889 2010-02-11  Ian Lance Taylor  <iant@google.com>
7890
7891         * gold.cc (queue_middle_gc_tasks): Use a separate blocker for each
7892         Read_relocs task.
7893         (queue_middle_tasks): Likewise, and also for Scan_relocs.  Run
7894         Allocate_commons_task first.
7895         * reloc.cc (Read_relocs::run): Pass next_blocker_ down to next
7896         task, rather than symtab_lock_.
7897         (Gc_process_relocs::~Gc_process_relocs): New function.
7898         (Gc_process_relocs::is_runnable): Check this_blocker_.
7899         (Gc_process_relocs::locks): Use next_blocker_ rather than
7900         blocker_.
7901         (Scan_relocs::~Scan_relocs): New function.
7902         (Scan_relocs::is_runnable): Check this_blocker_ rather than
7903         symtab_lock_.
7904         (Scan_relocs::locks): Drop symtab_lock_ and blocker_.  Add
7905         next_blocker_.
7906         * reloc.h (class Read_relocs): Drop symtab_lock_ and blocker_
7907         fields.  Add this_blocker_ and next_blocker_ fields.  Adjust
7908         constructor accordingly.
7909         (class Gc_process_relocs): Likewise.
7910         (class Scan_relocs): Likewise.
7911         * common.h (class Allocate_commons_task): Remove symtab_lock_
7912         field, and corresponding constructor parameter.
7913         * common.cc (Allocate_commons_tasK::is_runnable): Remove use of
7914         symtab_lock_.
7915         (Allocate_commons_task::locks): Likewise.
7916
7917 2010-02-11  Ian Lance Taylor  <iant@google.com>
7918
7919         * gold-threads.h (class Once): Define.
7920         (class Initialize_lock): Rewrite as child of Once.
7921         * gold-threads.cc (class Once_initialize): Define.
7922         (once_pointer_control): New static variable.
7923         (once_pointer, once_arg): New static variables.
7924         (c_run_once): New static function.
7925         (Once::Once, Once::run_once, Once::internal_run): New functions.
7926         (class Initialize_lock_once): Remove.
7927         (initialize_lock_control): Remove.
7928         (initialize_lock_pointer): Remove.
7929         (initialize_lock_once): Remove.
7930         (Initialize_lock::Initialize_lock): Move to gold-threads.h.
7931         (Initialize_lock::initialize): Rewrite.
7932         (Initialize_lock::do_run_once): New function.
7933         * archive.cc (Archive::interpret_header): Only clear name if it is
7934         not already empty.
7935         * fileread.cc: Include "gold-threads.h"
7936         (file_counts_lock): New static variable.
7937         (file_counts_initialize_lock): Likewise.
7938         (File_read::release): Only increment counts when using --stats.
7939         Use a lock around the increment.
7940         * parameters.cc (class Set_parameters_target_once): Define.
7941         (set_parameters_target_once): New static variable.
7942         (Parameters::Parameters): Move here from parameters.h.
7943         (Parameters::set_target): Rewrite.
7944         (Parameters::set_target_once): New function.
7945         (Parameters::clear_target): Move here and rewrite.
7946         * parameters.h (class Parameters): Update declarations.  Add
7947         set_parameters_target_once_ field.
7948         (Parameters::Parameters): Move to parameters.cc.
7949         (Parameters::clear_target): Likewise.
7950         * readsyms.cc (Read_symbols::do_group): Create a Start_group
7951         task.
7952         (Start_group::~Start_group): New function.
7953         (Start_group::is_runnable): New function.
7954         (Start_group::locks, Start_group::run): New functions.
7955         (Finish_group::run): Change saw_undefined to size_t.
7956         * readsyms.h (class Start_group): Define.
7957         (class Finish_group): Change saw_undefined_ field to size_t.
7958         (Finish_group::Finish_group): Remove saw_undefined and
7959         this_blocker parameters.  Change all callers.
7960         (Finish_group::set_saw_undefined): New function.
7961         (Finish_group::set_blocker): New function.
7962         * symtab.h (class Symbol_table): Change saw_undefined to return
7963         size_t.  Change saw_undefined_ field to size_t.
7964         * target-select.cc (Set_target_once::do_run_once): New function.
7965         (Target_selector::Target_selector): Initialize set_target_once_
7966         field.  Don't initialize lock_ and initialize_lock_ fields.
7967         (Target_selector::instantiate_target): Rewrite.
7968         (Target_selector::set_target): New function.
7969         * target-select.h (class Set_target_once): Define.
7970         (class Target_selector): Update declarations.  Make
7971         Set_target_once a friend.  Remove lock_ and initialize_lock_
7972         fields.  Add set_target_once_ field.
7973
7974 2010-02-10  Ian Lance Taylor  <iant@google.com>
7975
7976         * dirsearch.cc (Dirsearch::initialize): Add all blockers before
7977         queueing any tasks.
7978         * gold.cc (queue_middle_gc_tasks): Likewise.  Fix final blocker.
7979         (queue_middle_tasks): Add all blockers before queueing any tasks.
7980         (queue_final_tasks): Likewise.
7981         * token.h (Task_token::add_blockers): New function.
7982         * object.h (Input_objects::number_of_relobjs): New function.
7983
7984 2010-02-10  Ian Lance Taylor  <iant@google.com>
7985
7986         * i386.cc (Relocate::relocate_tls): A local symbol is final if not
7987         shared, not if not position independent.
7988         * x86_64.cc (Relocate::relocate_tls): Likewise.
7989         * testsuite/Makefile.am (check_PROGRAMS): Add tls_pie_pic_test.
7990         (tls_pie_pic_test): New target.
7991         * testsuite/Makefile.in: Rebuild.
7992
7993         * testsuite/Makefile.am (check_PROGRAMS): Add tls_pie_test.
7994         (tls_test_main_pie.o, tls_test_pie.o): New targets.
7995         (tls_test_file2_pie.o, tls_test_c_pie.o, tls_pie_test): Likewise.
7996         * testsuite/Makefile.in: Rebuild.
7997
7998 2010-02-09  David S. Miller  <davem@davemloft.net>
7999
8000         * sparc.cc (Target_sparc::Scan::local): Do not emit relocs other than
8001         R_SPARC_RELATIVE using ->add_local_relative().
8002         (Target_sparc::Scan::global): Likewise for ->add_global_relative().
8003
8004         * output.h (Output_data_dynamic::add_section_size): New method
8005         that takes two Output_data objects.
8006         (Output_data_dynamic::Dynamic_entry): Create storage for secondary
8007         entry param.  Handle it in initializers.
8008         * output.cc (Output_data_dynamic::Dynamic_entry::write): For
8009         DYNAMIC_SECTION_SIZE, add in second object size if non-NULL.
8010         * layout.h (Layout::add_target_dynamic_tags): Add dynrel_includes_plt
8011         arg.
8012         * layout.cc (Layout::add_target_dynamic_tags): If dynrel_includes_plt,
8013         and .rela.plt exists, set DT_REL{,A}SZ to sum of .rela.dyn and .rela.plt
8014         * arm.cc (Target_arm::do_finalize_sections): Update to pass false
8015         for dynrel_includes_plt.
8016         * i386.cc (Target_i386::do_finalize_sections): Likewise.
8017         * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
8018         * sparc.cc (Target_sparc::make_plt_entry): Force .rela.dyn to be output
8019         before .rela.plt
8020         (Target_sparc::do_finalize_sections): Update to pass true for
8021         dynrel_includes_plt.
8022         * powerpc.cc (Target_powerpc::make_plt_entry): Force .rela.dyn to be
8023         output before .rela.plt
8024         (Target_powerpc::do_finalize_sections): Update to pass true for
8025         dynrel_includes_plt when 32-bit.
8026
8027 2010-02-08  Doug Kwan  <dougkwan@google.com>
8028
8029         * arm.cc (Arm_relobj::simple_input_section_output_address): New
8030         method.
8031         (Arm_relobj::section_needs_cortex_a8_stub_scanning,
8032         Arm_relobj::scan_section_for_cortex_a8_stubs,
8033         Arm_relobj::do_relocation_section): Instead of calling
8034         Output_section::output_address, use faster
8035         Arm_relobj::simple_input_section_output_address.
8036
8037 2010-02-08  David S. Miller  <davem@davemloft.net>
8038
8039         * sparc.cc (Target_sparc::Relocate::relocate): If relocation offset is
8040         unaligned for R_SPARC_16, R_SPARC_32, or R_SPARC_64, use the unaligned
8041         relocation helper function.
8042
8043         * sparc.cc (Target_sparc::Scan::local): Handle R_SPARC_GOTDATA_OP*
8044         just like R_SPARC_GOT{10,13,22}.
8045         (Target_sparc::Scan::local): Likewise.
8046         (Target_sparc::Relocate:relocate): Likewise.
8047
8048 2010-02-06  Ian Lance Taylor  <iant@google.com>
8049
8050         * configure.ac: Rewrite targetobjs duplicate removal code to use
8051         only shell constructs.
8052         * configure: Rebuild.
8053
8054 2010-02-05  Doug Kwan  <dougkwan@google.com>
8055
8056         PR 11247
8057         * arm.cc (Arm_relobj::section_is_scannable): New method.
8058         (Arm_relobj::section_needs_reloc_stub_scanning): Use it.
8059         (Arm_relobj::section_needs_cortex_a8_stub_scanning): Same.
8060
8061 2010-02-04  Doug Kwan  <dougkwan@google.com>
8062
8063         PR 11247
8064         * arm-reloc-property.cc (cstdio): Include.
8065         * configure.ac (targetobjs): Remove duplicates.
8066         * configure: Regenerate.
8067         * resolve.cc (Symbol_table::resolve): Explicit instantiate both
8068         big and little endian version for a given address size.
8069
8070 2010-02-03  Doug Kwan  <dougkwan@google.com>
8071
8072         * arm-reloc-property.cc
8073         (Arm_reloc_property_table::reloc_name_in_error_message): New method
8074         definition.
8075         * arm-reloc-property.h
8076         (Arm_reloc_property_table::get_implemented_static_reloc_property):
8077         New method definition.
8078         (Arm_reloc_property_table::reloc_name_in_error_message): New method
8079         declaration.
8080         * arm-reloc.def (THM_MOVT_ABS, THM_MOVT_PREL, THM_MOVT_BREL): Change
8081         overflow to N.
8082         (GOT_PREL): Change implemented to Y.
8083         * arm.cc (Target_arm::reloc_uses_thumb_bit): Remove method.
8084         (Target_arm::Relocate::reloc_needs_sym_origin): Remove method.
8085         (Arm_relocate_functions::movw_abs_nc): Remove method.
8086         (Arm_relocate_functions::movt_abs): Ditto.
8087         (Arm_relocate_functions::thm_movw_abs_nc): Ditto.
8088         (Arm_relocate_functions::thm_movt_abs): Ditto.
8089         (Arm_relocate_functions::movw_rel_nc): Ditto.
8090         (Arm_relocate_functions::movw_rel): Ditto.
8091         (Arm_relocate_functions::movt_rel): Ditto.
8092         (Arm_relocate_functions:thm_movw_rel_nc): Ditto.
8093         (Arm_relocate_functions:thm_movw_rel): Ditto.
8094         (Arm_relocate_functions:thm_movt_rel): Ditto.
8095         (Arm_relocate_functions::movw, Arm_relocate_functions::movt,
8096         (Arm_relocate_functions::thm_movw, Arm_relocate_functions::thm_movt):
8097         New method definitions.
8098         (Arm_relocation_functions::arm_grp_alu): Add assertion for group index.
8099         (Arm_relocation_functions::arm_grp_ldr): Ditto.
8100         (Arm_relocation_functions::arm_grp_ldrs): Ditto.
8101         (Arm_relocation_functions::arm_grp_ldc): Ditto.
8102         (Target_arm::Relocate::relocate): Check for non-static or
8103         unimplemented relocation code and exit early.  Change calls to
8104         Target_arm::reloc_uses_thumb_bit and
8105         Target_arm::Reloc::reloc_needs_sym_origin to use relocation property
8106         instead.  Refactor code to handle similar relocations to increase
8107         code sharing.  Remove check for unsupported relocation code in switch
8108         statement.
8109         (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Use
8110         relocation property table to find out size.  Change error message to
8111         print out the name of a relocation code instead of the numeric value.
8112         (Target_arm::scan_reloc_for_stub): Use relocation property table
8113         instead of calling Target_arm::reloc_uses_thumb_bit().
8114
8115 2010-02-02  Doug Kwan  <dougkwan@google.com>
8116
8117         * arm.cc (Target_arm::relocate_section): Do view adjustment for all
8118         types of relaxed input section.
8119
8120 2010-02-02  Doug Kwan  <dougkwan@google.com>
8121
8122         * Makefile.am (HFILES): Add arm-reloc-property.h.
8123         (DEFFILES): New.
8124         (TARGETSOURCES): Add arm-reloc-property.cc
8125         (ALL_TARGETOBJS): Add arm-reloc-property.$(OBJEXT)
8126         (libgold_a_SOURCES): $(DEFFILES)
8127         * Makefile.in: Regenerate.
8128         * arm-reloc-property.cc: New file.
8129         * arm-reloc-property.h: New file.
8130         * arm-reloc.def: New file.
8131         * arm.cc: Update comments.
8132         (arm-reloc-property.h): New included header.
8133         (arm_reloc_property_table): New global variable.
8134         (Target_arm::do_select_as_default_target): New method definition.
8135         * configure.tgt (armeb*-*-*,armbe*-*-*,arm*-*-*): Add
8136         arm-reloc-property to targ_extra_obj.
8137         * parameters.cc (set_parameters_target): Call
8138         Target::select_as_default_target().
8139         * target.h (Target::select_as_default_target): New method definition.
8140         (Target::do_select_as_default_target): Same.
8141
8142 2010-02-01  Doug Kwan  <dougkwan@google.com>
8143
8144         * arm.cc (Arm_exidx_fixup::Arm_exidx_fixup): Initialize
8145         first_output_text_section_.
8146         (Arm_exidx_fixup::first_output_text_section): New method definition.
8147         (Arm_exidx_fixup::first_output_text_section_): New data member.
8148         (Arm_exidx_fixup::process_exidx_section): Record the first text
8149         output section seen.
8150         (Arm_output_section::fix_exidx_coverage): Set correct linked section
8151         and entsize in output section header.
8152
8153 2010-01-29  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
8154
8155         * gold/arm.cc: Added support for the ARM relocations: R_ARM_THM_PC8,
8156         R_ARM_THM_PC12, R_ARM_THM_ALU_PREL_11_0.
8157         (Arm_relocate_functions::thm_alu11): New Method.
8158         (Arm_relocate_functions::thm_pc8): New Method.
8159         (Arm_relocate_functions::thm_pc12): New Method.
8160         (Target_arm::Scan::local): Handle the relocations.
8161         (Target_arm::Scan::global): Likewise.
8162         (Target_arm::Relocate::relocate): Likewise.
8163         (Target_arm:Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
8164
8165 2010-01-29  Doug Kwan  <dougkwan@google.com>
8166
8167         * arm.cc (Target_arm::Scan::global): General PLTs for the same set
8168         of relocation types as ld.
8169
8170 2010-01-29  Doug Kwan  <dougkwan@google.com>
8171
8172         * arm.cc (Arm_relocate_functions::arm_branch_common) Change visibility
8173         to public.
8174         (Arm_relocate_functions::thumb_branch_common): Ditto.
8175         (Arm_relocate_functions::thm_call, Arm_relocate_functions::thm_jump24,
8176         Arm_relocate_functions::thm_xpc22, Arm_relocate_functions::plt32,
8177         Arm_relocate_functions::xpc25, Arm_relocate_functions::call,
8178         Arm_relocate_functions::jump24): Remove.
8179         (Target_arm::Relocate::relocate): Adjust code to call
8180         Arm_relocation_functions::arm_branch_common and
8181         Arm_relocation_functions::thumb_branch_common instead of their removed
8182         wrappers.  Merge switch-cases together to reduce source code size.
8183
8184 2010-01-29  Doug Kwan  <dougkwan@google.com>
8185
8186         * arm.cc (Arm_relobj::Arm_relobj): Initialize new data member
8187         output_local_symbol_count_needs_update_.
8188         (Arm_relobj::output_local_symbol_count_needs_update,
8189          Arm_relobj::set_output_local_symbol_count_needs_update,
8190          Arm_relobj::update_output_local_symbol_count): New methods.
8191         (Arm_relobj::output_local_symbol_count_needs_update_): New data
8192         member.
8193         (Arm_exidx_cantunwind::do_fixed_endian_write): Write address
8194         of pointed function as in a R_ARM_PREL31 relocation.
8195         (Arm_output_section<big_endian>::fix_exidx_coverage): Mark objects
8196         for output local symbol count updating.
8197         (Target_arm::do_relax): Update output local symbol counts in objects
8198         if necessary.
8199         * object.h (Sized_relobj::set_output_local_symbol_count): New method.
8200
8201 2010-01-29  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
8202
8203         * arm.cc: Added support for the ARM relocations:
8204         R_ARM_MOVW_BREL_NC, R_ARM_MOVT_BREL, R_ARM_MOVW_BREL,
8205         R_ARM_THM_MOVW_BREL_NC, R_ARM_THM_MOVT_BREL, R_ARM_THM_MOVW_BREL.
8206         (Arm_relocate_functions::movw_rel_nc): Renamed (was
8207         movw_prel_nc).
8208         (Arm_relocate_functions::movw_rel): New method.
8209         (Arm_relocate_functions::movt_rel): Renamed (was movt_prel).
8210         (Arm_relocate_functions::thm_movw_rel_nc): Renamed (was
8211         thm_movw_prel_nc).
8212         (Arm_relocate_functions::thm_movw_rel): New method.
8213         (Arm_relocate_functions::thm_movt_rel): Renamed (was
8214         thm_movt_prel).
8215         (Target_arm::Scan::local): Handle MOVW_BREL/MOVT_BREL
8216         relocations.
8217         (Target_arm::Scan::global): Likewise.
8218         (Target_arm::Relocate::relocate): Likewise.
8219         (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
8220         Likewise.
8221
8222 2010-01-27  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
8223
8224         * arm.cc: Added support for ARM group relocations.
8225         (Target_arm::reloc_needs_sym_origin): New method.
8226         (Arm_relocate_functions::calc_grp_kn): New method.
8227         (Arm_relocate_functions::calc_grp_residual): New method.
8228         (Arm_relocate_functions::calc_grp_gn): New method.
8229         (Arm_relocate_functions::arm_grp_alu): New Method.
8230         (Arm_relocate_functions::arm_grp_ldr): New Method.
8231         (Arm_relocate_functions::arm_grp_ldrs): New Method.
8232         (Arm_relocate_functions::arm_grp_ldc): New Method.
8233         (Target_arm::Scan::local): Handle the ARM group relocations.
8234         (Target_arm::Scan::global): Likewise.
8235         (Target_arm::Relocate::relocate): Likewise.
8236         (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
8237         Likewise.
8238
8239 2010-01-26  Doug Kwan  <dougkwan@google.com>
8240
8241         * arm.cc (set): Include.
8242         (class Arm_exidx_fixup): Change type of last_input_section_ to const
8243         pointer type.
8244         (Arm_output_section::Text_section_list): New type.
8245         (Arm_output_section::append_text_sections_to_list): New method.
8246         (Arm_output_section::fix_exidx_coverage): Ditto.
8247         (Arm_relobj::Arm_relobj): Initialize exidx_section_map_.
8248         (Arm_relobj::convert_input_section_to_relaxed_section): Use
8249         Relobj::set_section_offset() instead of
8250         Sized_relobj::invalidate_section_offset().
8251         (Arm_relobj::section_needs_reloc_stub_scanning): Add an extra
8252         parameter for section headers. Ignore relocation sections for
8253         unallocated sections and EXIDX sections.
8254         (Target_arm::fix_exidx_coverage): New method.
8255         (Target_arm::output_section_address_less_than): New type.
8256         (Arm_exidx_fixup::add_exidx_cantunwind_as_needed): Use index of the
8257         linked text section instead of the EXIDX section.
8258         (Arm_output_section::create_stub_group): Add an assertion to check
8259         that this is not an EXIDX output section.
8260         (Arm_output_section::append_text_sections_to_list): New method.
8261         (Arm_output_section::fix_exidx_coverage): Ditto.
8262         (Arm_relobj::scan_sections_for_stubs): Adjust call to
8263         Arm_relobj::section_needs_reloc_stub_scanning.
8264         (Target_arm::do_relax): Fix EXIDX output section coverage in the
8265         first pass.
8266         (Target_arm::fix_exidx_coverage): New method.
8267         * object.h (Relobj::set_output_section): New method.
8268         (Sized_relobj::invalidate_section_offset): Remove method.
8269         (Sized_relobj::do_invalidate_section_offset): Remove method.
8270         (Sized_relobj::do_set_section_offset): Handle offset value -1.
8271
8272 2010-01-25  Doug Kwan  <dougkwan@google.com>
8273
8274         * arm.cc (Arm_exidx_merged_section::do_output_offset):
8275         Fix warning due to signed and unsigned comparison on a 32-bit host.
8276
8277 2010-01-22  Doug Kwan  <dougkwan@google.com>
8278
8279         * arm.cc (Target_arm::do_relax): Record an output section for section
8280         offset adjustment it contains any stub table that has changed.
8281         * layout.cc (Layout::clean_up_after_relaxation): Adjust section
8282         offsets in an output section if necessary.
8283         * output.cc (Output_section::Output_section): Initialize
8284         section_offsets_need_adjustments_.
8285         (Output_section::add_input_section_for_script): Renamed to
8286         Output_section::add_simple_input_section.
8287         (Output_section::save_states): Add a comment.
8288         (Output_section::discard_states): New method defintion.
8289         (Output_section::adjust_section_offsets): Same.
8290         * output.h (Output_section::add_input_section_for_script): Renamed to
8291         Output_section::add_simple_input_section.
8292         (Output_section::discard_states): New method declaration.
8293         (Output_section::adjust_section_offsets): Same.
8294         (Output_section::section_offsets_need_adjustment,
8295         Output_section::set_section_offsets_need_adjustment): New method
8296         definitions.
8297         (Output_section::section_offsets_need_adjustment_): New data member.
8298         * script-sections.cc
8299         (Output_section_element_input::set_section_address): Adjust code for
8300         renaming of Output_section::add_input_section_for_script.
8301         (Orphan_output_section::set_section_address): Same.
8302
8303 2010-01-22  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
8304
8305         * gold/arm.cc (Target_arm): Updated fix_v4bx method and usage of
8306         Fix_v4bx enum values .
8307         * gold/options.h (General_options): New option definitions.
8308         (General_options::fix_v4bx): New method.
8309         (General_options::Fix_v4bx): New enum.
8310         * gold/options.cc (General_options::parse_fix_v4bx): New method.
8311         (General_options::parse_fix_v4bx_interworking): New method.
8312
8313 2010-01-22  Doug Kwan  <dougkwan@google.com>
8314
8315         * arm.cc (Arm_exidx_fixup): New class.
8316
8317 2010-01-21  Doug Kwan  <dougkwan@google.com>
8318
8319         * arm.cc (Arm_exidx_cantunwind, Arm_exidx_merged_section): New
8320         classes.
8321         (Arm_exidx_section_offset_map): New type.
8322
8323 2010-01-21  Doug Kwan  <dougkwan@google.com>
8324
8325         * arm.cc (Arm_exidx_input_section): New class.
8326         (Arm_relobj::exidx_input_section_by_link,
8327         Arm_relobj::exidx_input_section_by_shndx,
8328         Arm_relobj::make_exidx_input_section): New methods.
8329         (read_arm_attributes_section): Remove.
8330         (Arm_relobj::do_read_symbols): Look for ARM.exidx sections and record
8331         information about them.
8332         (Arm_dynobj::do_read_symbols): Move code in read_arm_attributes_section
8333         to here.
8334
8335 2010-01-20  Doug Kwan  <dougkwan@google.com>
8336
8337         * arm.cc (Target_arm::Arm_input_section_map): Change key type from
8338         Input_section_specifier to Section_id.
8339         (Target_arm::new_arm_input_section: Adjust code for change of key
8340         type.
8341         (Target_arm::find_arm_input_section): Ditto.
8342         * gc.h (object.h): Include for Section_id nand Section_id_hash.
8343         (Section_id): Remove.
8344         (Garbage_collection::Section_id_hash): Remove.
8345         * icf.h (object.h): Include for Section_id nand Section_id_hash.
8346         (Section_id): Remove.
8347         (Icf::Section_id_hash): Remove.
8348         * object.h (Section_id, Const_section_id, Section_id_hash,
8349         Const_section_id_hash): New type definitions.
8350         * output.cc (Output_section::add_relaxed_input_section): Change to
8351         use Const_section_id instead of Input_section_specifier as key type.
8352         (Output_section::add_merge_input_section): Ditto.
8353         (Output_section::build_relaxation_map): Change to use Section_id
8354         instead of Input_section_specifier as key type.
8355         (Output_section::convert_input_sections_in_list_to_relaxed_sections):
8356         Ditto.
8357         (Output_section::convert_input_sections_to_relaxed_sections): Change
8358         to use Const_section_id instead of Input_section_specifier as key type.
8359         (Output_section::find_merge_section): Ditto.
8360         (Output_section::find_relaxed_input_section): Ditto.
8361         * output.h (Input_section_specifier): Remove class.
8362         (Output_section::Output_section_data_by_input_section_map): Change
8363         key type to Const_section_id.
8364         (Output_section::Output_relaxed_input_section_by_input_section_map):
8365         Ditto.
8366         (Output_section::Relaxation_map): Change key type to Section_id.
8367
8368 2010-01-20  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
8369
8370         * gold/arm.cc: Added support for R_ARM_V4BX relocation
8371         (class Arm_v4bx_stub): New class.
8372         (DEF_STUBS): Updated definition to support v4_veneer_bx.
8373         (Stub_factory::make_arm_v4bx_stub): New method.
8374         (Stub_factory::elf32_arm_stub_v4_veneer_bx): New veneer template.
8375         (Stub_table::empty): Handle v4bx stubs.
8376         (Stub_table::add_arm_v4bx_stub): New method.
8377         (Stub_table::find_arm_v4bx_stub): New method.
8378         (Arm_relocate_functions::v4bx): New method.
8379         (Target_arm::fix_v4bx): New method.
8380         (Target_arm::Target_arm): Handle R_ARM_V4BX.
8381         (Stub_table::relocate_stubs): Likewise.
8382         (Stub_table::do_write): Likewise.
8383         (Stub_table::update_data_size_and_addralign): Likewise.
8384         (Stub_table::finalize_stubs):  Likewise.
8385         (Target_arm::Scan::local): Likewise.
8386         (Target_arm::Scan::global): Likewise.
8387         (Target_arm::do_finalize_sections): Likewise.
8388         (Target_arm::Relocate::relocate): Likewise.
8389         (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
8390         Likewise.
8391         (Target_arm::scan_reloc_for_stub): Likewise.
8392         (Target_arm::scan_reloc_section_for_stubs): Likewise.
8393
8394 2010-01-19  Ian Lance Taylor  <iant@google.com>
8395
8396         * output.cc (Output_section_headers::do_sized_write): Write large
8397         segment count to sh_info field.
8398         (Output_file_header::do_sized_write): For large segment count,
8399         write PN_XNUM to e_phnum field.
8400
8401 2010-01-15  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
8402
8403         * arm.cc (Arm_relocate_functions::thm_jump6): New function.
8404         (Arm_relocate_functions::thm_jump8): New function.
8405         (Arm_relocate_functions::thm_jump11): New function.
8406         (Target_arm::Scan::local): Handle R_ARM_THM_JUMP6, R_ARM_THM_JUMP8,
8407         R_ARM_THM_JUMP11.
8408         (Target_arm::Scan::global): Likewise.
8409         (Target_arm::Relocate::relocate): Likewise.
8410         (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
8411         Likewise.
8412
8413 2010-01-14  Doug Kwan  <dougkwan@google.com>
8414
8415         * arm.cc (map, utility): Include headers.
8416         (Target_arm::apply_cortex_a8_workaround): New method.
8417         (Arm_relobj::do_relocate_sections): Apply any Cortex-A8 workaround.
8418         (Target_arm::Scan::local): Handle R_ARM_THM_JUMP24, R_ARM_THM_JUMP19.
8419         (Target_arm::Scan::global): R_ARM_THM_JUMP19.
8420         (Target_arm::do_finalize_sections): Set fix_cortex_a8_ according to
8421         the --[no-]fix-cortex-a8 command line options.
8422         (Target_arm::Relocate::relocate): Handle R_ARM_JUMP19.
8423         (Target_arm::relocate_stub): Use addend in instruction template.
8424         * options.h (DEFINE_bool): Set the user-set flag.
8425         (General_options): Add --[no-]-fix-cortex options.
8426         * output.cc (Output_section::convert_input_sections_to_relaxed_sections)
8427         : Update fast look-up map after conversion.
8428
8429 2010-01-14  Sriraman Tallam  <tmsriram@google.com>
8430
8431         * object.cc (Sized_relobj::do_layout): Change to call layout_gnu_stack
8432         in the first pass of do_layout.
8433
8434 2010-01-13  Doug Kwan  <dougkwan@google.com>
8435
8436         * arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
8437         Arm_relobj::scan_sections_for_stubs): Rearrange code to avoid an
8438         apparent compiler problem of not folding static constant integral
8439         data members of elfcpp::Elf_sizes<32>.
8440
8441 2010-01-13  Doug Kwan  <dougkwan@google.com>
8442
8443         * arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
8444         Arm_relobj::section_needs_cortex_a8_stub_scanning,
8445         Arm_relobj::scan_section_for_cortex_a8_erratum,
8446         Arm_relobj::scan_span_for_cortex_a8_erratum): New methods.
8447         (Arm_relobj::scan_sections_for_stubs): Move code deciding what
8448         sections to scan for relocation stubs into a new method
8449         Arm_relobj::section_needs_reloc_stub_scanning.  Handle both
8450         relocation and Cortex-A8 stub scanning.
8451         (Target_arm::do_relax): Force stubs to be after stubbed sections
8452         if fixing the Cortex-A8 erratum.  Remove all Cortex-A8 stubs at
8453         the beginning of a new relaxation pass.  Update a comment.
8454         (Target_arm::scan_span_for_cortex_a8_erratum): New method definition.
8455
8456 2010-01-12  Ian Lance Taylor  <iant@google.com>
8457
8458         * target-reloc.h (visibility_error): New inline function.
8459         (relocate_section): Call visibility_error.
8460         * testsuite/Makefile.am (check_DATA): Add protected_3.err.
8461         (MOSTLYCLEANFILES): Likewise.
8462         (protected_4_pic.o, protected_3.err): New targets.
8463         * testsuite/protected_4.cc: New file.
8464
8465 2010-01-12  Doug Kwan  <dougkwan@google.com>
8466
8467         * arm.cc (Cortex_a8_reloc): New class.
8468         (Target_arm::Target_arm): Initialize new data members fix_cortex_a8_
8469         and cortex_a8_relocs_info_.
8470         (Target_arm::fix_cortex_a8): New method definition.
8471         (Target_arm::Cortex_a8_relocs_info): New type.
8472         (Target_arm::fix_cortex_a8_, Target_arm::cortex_a8_relocs_info_):
8473         New data member declarations.
8474         (Target_arm::scan_reloc_for_stub): Record information about
8475         relocations for THUMB branches that might be exempted from the
8476         Cortex-A8 workaround.
8477         (Target_arm::do_relax): Clear all Cortex-A8 relocation information
8478         at the beginning of a relaxation pass.
8479
8480 2010-01-12  Doug Kwan  <dougkwan@google.com>
8481
8482         * arm.cc (Arm_relobj::mapping_symbols_info_): New data member.
8483         (Arm_relobj::Mapping_symbol_position,
8484          Arm_reloj::Mapping_symbol_position_less,
8485          Arm_relobj::Mapping_symbols_info): New types.
8486         (Target_arm::is_mapping_symbol_name): New method definition.
8487         (Arm_relobj::do_count_local_symbols): Save information about mapping
8488         symbols.
8489
8490 2010-01-11  Doug Kwan  <dougkwan@google.com>
8491
8492         * arm.cc (Arm_relocate_functions::thumb32_branch_offset,
8493         Arm_relocate_functions::thumb32_branch_upper,
8494         Arm_relocate_functions::thumb32_branch_lower,
8495         Arm_relocate_functions::thumb32_cond_branch_offset,
8496         Arm_relocate_functions::thumb32_cond_branch_upper,
8497         Arm_relocate_functions::thumb32_cond_branch_lower,
8498         Arm_relocate_functions::thm_jump19): New methods to handle THUMB
8499         branch offset encoding.
8500         (Arm_relocate_functions::thumb_branch_common): Use new branch
8501         offset encoding methods to avoid code duplication.
8502         (Stub_template::Stub_template) Handle THUMB16_SPECIAL_TYPE.
8503         (Stub_addend_reader::operator()): Use new branch encoding method
8504         to avoid code duplication.
8505
8506 2010-01-11  Doug Kwan  <dougkwan@google.com>
8507
8508         * arm.cc (Arm_relobj::do_gc_process_relocs): New method.
8509         (Target_arm::do_finalize_sections): Define special EXIDX section
8510         symbols only if referenced.
8511         * gc.h (Garbage_collection::add_reference): New method.
8512         (gc_process_relocs): Use Garbage_collection::add_reference to avoid
8513         code duplication.
8514
8515 2010-01-11  Ian Lance Taylor  <iant@google.com>
8516
8517         * script.cc (Version_script_info::build_expression_list_lookup):
8518         Change complaing about duplicate wildcard match from error to
8519         warning.
8520
8521         * script.cc (class Lazy_demangler): Recreate--revert part of patch
8522         of 2009-12-30.
8523         (Version_script_info::Version_script_info): Initialize globs_,
8524         default_version_, default_is_global_, and exact_.  Don't
8525         initialize globals_ or locals_.
8526         (Version_script_info::build_lookup_tables): Build local symbols
8527         first.
8528         (Version_script_info::unquote): New function.
8529         (Version_script_info::add_exact_match): New function.
8530         (Version_script_info::build_expression_list_lookup): Remove lookup
8531         parameter.  Add is_global parameter.  Change all callers.  Handle
8532         wildcard pattern specially.  Unquote pattern.  Call
8533         add_exact_match.
8534         (Version_script_info::get_name_to_match): New function.
8535         (Version_script_info::get_symbol_version): New function.
8536         (Version_script_info::get_symbol_version_helper): Remove.
8537         (Version_script_info::check_unmatched_names): Call unquote.
8538         * script.h (class Version_script_info): Change get_symbol_version
8539         to be non-inline and add is_global parameter; change all callers.
8540         Rewrite symbol_is_local.  Update declarations.  Define struct
8541         Version_tree_match, Exact, Globs.  Don't define struct Lookup.
8542         Remove globals_ and locals_ members.  Add exact_, globs_,
8543         default_version_, is_global_.
8544         (Version_script_info::Glob): Remove pattern, add expression and
8545         is_global.  Update constructor.  Change all callers.
8546         * dynobj.cc (Versions::finalize): Mark the version symbol as the
8547         default version.
8548         (Versions::symbol_section_contents): If a symbol is undefined, or
8549         defined in a dynamic object, set the version index to
8550         VER_NDX_LOCAL.
8551         * symtab.cc (Symbol_table::add_from_relobj): Don't call
8552         symbol_is_local.
8553         (Symbol_table::add_from_pluginobj): Likewise.
8554         * testsuite/ver_matching_test.sh: blaza1 and blaza go into V2.
8555
8556 2010-01-11  Doug Kwan  <dougkwan@google.com>
8557
8558         * Makefile.am (incremental_dump_DEPENDENCIES): Add libintl dependency.
8559         (incremental_dump_LDADD): Add linking option for libintl.
8560         * Makefile.in: Regenerate.
8561
8562 2010-01-11  H.J. Lu  <hongjiu.lu@intel.com>
8563
8564         PR gold/11144
8565         * testsuite/Makefile.am (dynamic_list.stdout): Use --dyn-syms
8566         instead of -Ds.
8567         * testsuite/Makefile.in: Regenerated.
8568
8569 2010-01-10  Doug Kwan  <dougkwan@google.com>
8570
8571         * options.h (DEFINE_var): Use parentheses around argument varname__
8572         in macro body to avoid any unintended subsequent substitutions.
8573
8574 2010-01-10  Ian Lance Taylor  <iant@google.com>
8575
8576         * resolve.cc (Symbol_table::resolve): Add symbols to list of ODR
8577         candidates before doing symbol resolution.
8578
8579         * resolve.cc (Symbol_table::resolve): Add symbols to the list of
8580         ODR candidates if only one is weak.
8581
8582 2010-01-08  Ian Lance Taylor  <iant@google.com>
8583
8584         * script.cc (Version_script_info::build_expression_list_lookup):
8585         Don't warn about ambiguous version, just record the ambiguity.
8586         (Version_script_info::get_symbol_version_helper): Give error if
8587         version is ambiguous.
8588
8589 2010-01-08  Doug Kwan  <dougkwan@google.com>
8590
8591         * arm.cc (Stub_table::Stub_table): Initalize cortex_a8_stubs_,
8592         prev_data_size_ and prev_addralign_.  Remove initializer for
8593         deleted data member has_been_changed_.
8594         (Stub_table::empty): Look at both reloc_stubs_ and cortex_a8_stubs_
8595         to determine if the table is empty.
8596         (Stub_table::has_been_changed, Stub_table_set_has_been_changed):
8597         Remove.
8598         (Stub_table::add_reloc_stub): Define method in class definition
8599         instead of just declaring it there.
8600         (Stub_table::add_cortex_a8_stub): New method definition.
8601         (Stub_table::update_data_size_and_addralign): Ditto.
8602         (Stub_table::finalize_stubs): Ditto.
8603         (Stub_table::apply_cortex_a8_workaround_to_address_range): Ditto.
8604         (Stub_table::do_addralign_): Return address alignment in the
8605         (Stub_table::do_reset_address_and_file_offset): Define method in
8606         class definition instead of declaring it there.  Set current data
8607         size to be the data size of the previous pass.
8608         (Stub_table::set_final_data_size): Use current data size as the
8609         final data size.
8610         (Stub_table::relocate_stub): Change parameter type of stub from
8611         Reloc_stub pointer to Stub pointer.
8612         (Stub_table::addralign_, Stub_table::has_been_changed_): Remove.
8613         (Stub_table::Cortex_a8_stub_list): New typedef.
8614         (Stub_table::cortex_a8_stubs_, Stub_table::prev_data_size_,
8615          Stub_table::prev_addralign_): New data member.
8616         (Arm_relobj::Arm_relobj): Initialize data member
8617         section_has_cortex_a8_workaround_.
8618         (Arm_relobj::section_has_cortex_a8_workaround,
8619          Arm_relobj::mark_section_for_cortex_a8_workaround): New method
8620          definitions.
8621         (Arm_relobj::section_has_cortex_a8_workaround_): New data member
8622         declarations.
8623         (Target_arm::relocate_stub): Change parameter type of stub from
8624         Reloc_stub pointer to Stub pointer.
8625         (Insn_template::size, Insn_template::alignment): Handle
8626         THUMB16_SPECIAL_TYPE.
8627         (Stub_table::remove_all_cortex_a8_stubs, Stub_table::finalize_stubs,
8628          Stub_table::update_data_size_and_addralign,
8629          Stub_table::apply_cortex_a8_workaround_to_address_range): New method
8630         definitions.
8631         (Stub_table::relocate_stubs): Handle Cortex-A8 stubs.
8632         (Stub_table::do_write): Ditto.
8633         (Target_arm::do_relax): Adjust code for changes in Stub_table.
8634
8635 2010-01-08  Ian Lance Taylor  <iant@google.com>
8636
8637         PR 11108
8638         * symtab.h (class Symbol): Remove fields is_target_special_ and
8639         has_plt_offset_.  Add field is_defined_in_discarded_section_.
8640         (Symbol::is_defined_in_discarded_section): New function.
8641         (Symbol::set_is_defined_in_discarded_section): New function.
8642         (Symbol::has_plt_offset): Rewrite.
8643         (Symbol::set_plt_offset): Verify that new offset is not -1U.
8644         * symtab.cc (Symbol::init_fields): Initialize plt_offset_ to -1U.
8645         Don't initialize is_target_special_ or has_plt_offset_.
8646         Initialize is_defined_in_discarded_section_.
8647         (Symbol_table::add_from_relobj): If appropriate, set
8648         is_defined_in_discarded_section.
8649         * resolve.cc (Symbol::override_base_with_special): Don't test
8650         is_target_special_.  Change has_plt_offset_ to has_plt_offset().
8651         * target-reloc.h (relocate_section): Do special handling for
8652         symbols defined in discarded sections for global symbols as well
8653         as local symbols.
8654
8655 2010-01-08  Ian Lance Taylor  <iant@google.com>
8656
8657         * dynobj.cc (big_endian>::find_dynsym_sections): Set pi to NULL in
8658         the SHT_SYMTAB case.
8659
8660 2010-01-08  Ian Lance Taylor  <iant@google.com>
8661
8662         * object.cc (Sized_relobj::do_layout): Don't get confused if
8663         layout_eh_frame returns NULL.
8664
8665 2010-01-08  Ian Lance Taylor  <iant@google.com>
8666
8667         PR 11084
8668         * dynobj.cc (Sized_dynobj::find_dynsym_sections): If there is no
8669         dynamic symbol table, use the normal symbol table.
8670         (Sized_dynobj::do_read_symbols): Remove assertion about type of
8671         symbol table.
8672
8673 2010-01-08  Ian Lance Taylor  <iant@google.com>
8674
8675         PR 11072
8676         * layout.cc (Layout::include_section): Remove .gnu_debuglink
8677         sections.
8678
8679 2010-01-08  H.J. Lu  <hongjiu.lu@intel.com>
8680
8681         * version.cc (print_version): Change to "Copyright 2010".
8682
8683 2010-01-08  Ian Lance Taylor  <iant@google.com>
8684
8685         PR 10287
8686         PR 11063
8687         * i386.cc (class Target_i386): Change return type of plt_section
8688         to be non-const.
8689         (class Output_data_plt_i386): Add tls_desc_rel_ field.
8690         (Output_data_plt_i386::Output_data_plt_i386): Initialize
8691         tls_desc_rel_ field.
8692         (Output_data_plt_i386::rel_tls_desc): New function.
8693         (Target_i386::rel_tls_desc_section): New function.
8694         (Target_i386::Scan::local): Rewrite R_386_TLS_GOTDESC handling.
8695         (Target_i386::Scan::global): For R_386_TLS_GOTDESC put
8696         R_386_TLS_DESC reloc in rel_tls_desc_section.
8697         * x86_64.cc (class Target_x86_64): Add tlsdesc_reloc_info_ field.
8698         Define struct Tlsdesc_info.
8699         (Target_x86_64::Target_x86_64): Initialize tlsdesc_reloc_info_.
8700         (Target_x86_64::do_reloc_symbol_index): New function.
8701         (Target_x86_64::add_tlsdesc_info): New function.
8702         (class Output_data_plt_x86_64): Add tlsdesc_rel_ field.
8703         (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize
8704         tlsdesc_rel_ field.
8705         (Output_data_plt_x86_64::rela_plt): Rename from rel_plt.  Change
8706         all callers.
8707         (Output_data_plt_x86_64::rela_tlsdesc): New function.
8708         (Target_x86_64::rela_tlsdesc_section): New function.
8709         (Target_x86_64::Scan::local): Rewrite R_X86_64_GOTPC32_TLSDESC
8710         handling.
8711         (Target_x86_64::Scan::global): For R_X86_64_GOTPC32_TLSDESC put
8712         (Target_x86_64::do_reloc_addend): New function.
8713         R_X86_64_TLSDESC reloc in rela_tlsdesc_section.
8714         * output.h (class Output_reloc) [SHT_REL]: Add new constructor
8715         declarations.  Define TARGET_CODE.  Add arg field to u1_ union.
8716         (Output_reloc::type): New function.
8717         (Output_reloc::is_local_section_symbol): Check for TARGET_CODE.
8718         (Output_reloc::is_target_specific): New function.
8719         (Output_reloc::target_arg): New function.
8720         (class Output_reloc) [SHT_RELA]: Add four new constructors for
8721         absolute relocs and target specific relocs.
8722         (class Output_data_reloc) [SHT_REL]: Add add_absolute and
8723         add_target_specific.
8724         (class Output_data_reloc) [SHT_RELA]: Likewise.
8725         * output.cc (Output_reloc::Output_reloc): Add four new versions
8726         for absolute relocs and target specific relocs.
8727         (Output_reloc::set_needs_dynsym_index): Add TARGET_CODE case.
8728         (Output_reloc::get_symbol_index): Likewise.
8729         (Output_reloc::local_section_offset): Check that local_sym_index_
8730         is not TARGET_CODE or 0.
8731         (Output_reloc::symbol_value): Likewise.
8732         (Output_reloc::write) [SHT_RELA]: Call target for target specific
8733         reloc.
8734         * target.h (class Target): Add reloc_symbol_index and reloc_addend
8735         functions.  Add do_reloc_symbol_index and do_reloc_addend virtual
8736         functions.
8737         * layout.cc (add_target_dynamic_tags): Use output section for
8738         DT_PLTRELSZ and DT_JMPREL.
8739
8740 2010-01-07  Ian Lance Taylor  <iant@google.com>
8741
8742         PR 11061
8743         * output.h (class Output_reloc) [SHT_RELA]: Add is_relative
8744         function.
8745         (class Output_data_reloc_generic): Define.
8746         (class Output_data_reloc_base): Change base class to
8747         Output_data_reloc_generic.  Change add() method to call
8748         bump_relative_reloc_count for a relative reloc.  Remove
8749         sort_relocs_ field.
8750         * output.cc (Output_data_reloc_base::do_write): Change sort_reloc_
8751         to sort_relocs().
8752         * layout.cc (Layout::add_target_dynamic_tags): Change dyn_rel to
8753         Output_data_reloc_generic*.  Add DT_RELCOUNT/DT_RELACOUNT tag if
8754         appropriate.
8755         * layout.h (class Layout): Update declaration.
8756
8757 2010-01-07  Ian Lance Taylor  <iant@google.com>
8758
8759         * output.h (class Output_data): Add const version of
8760         output_section and do_output_section.
8761         (class Output_section_data): Add const version of
8762         do_output_section.
8763         (class Output_section): Likewise.
8764         * layout.cc (Layout::add_target_dynamic_tags): New function.
8765         * layout.h (class Layout): Update declarations.
8766         * arm.cc (Target_arm::do_finalize_sections): Use
8767         add_target_dynamic_tags.
8768         * i386.cc (Target_i386::do_finalize_sections): Likewise.
8769         * powerpc.cc (Target_powerpc::do_finalize_sections): Likewise.
8770         * sparc.cc (Target_sparc::do_finalize_sections): Likewise.
8771         * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
8772
8773 2010-01-07  Ian Lance Taylor  <iant@google.com>
8774
8775         PR 11042
8776         * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Mark the dynamic
8777         object as needed.
8778
8779 2010-01-07  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
8780             Ian Lance Taylor  <iant@google.com>
8781
8782         PR 11019
8783         * object.cc: Instantiate Xindex::initialize_symtab_xindex and
8784         Xindex::read_symtab_xindex.
8785
8786 2010-01-07  Doug Kwan  <dougkwan@google.com>
8787
8788         * arm.cc (Insn_template::Type): New enum value THUMB16_SPECIAL_TYPE.
8789         (Insn_template::thumb16_bcond_insn): New method declaration.
8790         (Insn_template): Fix spelling.
8791         (Stub::thumb16_special): New method declaration.
8792         (Stub::do_write): Define virtual method which was previously pure
8793         virtual.
8794         (Stub::do_thumb16_special): New method declaration.
8795         (Stub::do_fixed_endian_write): New template member.
8796         (Reloc_stub::do_write): Remove.
8797         (Reloc_stub::do_fixed_endian_write): Remove.
8798         (Cortex_a8_stub): New class definition.
8799         (Stub_factory::make_cortex_a8_stub): New method definition.
8800         (Stub_factory::Stub_factory): Add missing static storage class
8801         qualifier for elf32_arm_stub_a8_veneer_blx.
8802
8803 2010-01-07  Ian Lance Taylor  <iant@google.com>
8804
8805         PR 10980
8806         * options.h (class General_options): Add --warn-unresolved-symbols
8807         and --error-unresolved-symbols.
8808         * errors.cc (Errors::undefined_symbol): Implement
8809         --warn-unresolved-symbols.
8810
8811         * options.h (class General_options): Add -z text and -z textoff.
8812         * layout.cc (Layout::finish_dynamic_section): Implement -z text.
8813
8814 2010-01-06  Sriraman Tallam  <tmsriram@google.com>
8815
8816         * gc.h (Garbage_collection::Cident_section_map): New typedef.
8817         (Garbage_collection::cident_sections): New function.
8818         (Garbage_collection::add_cident_section): New function.
8819         (Garbage_collection::cident_sections_): New member.
8820         (gc_process_relocs): Add references to sections whose names are C
8821         identifiers.
8822         * gold.h (cident_section_start_prefix): New constant.
8823         (cident_section_stop_prefix): New constant.
8824         (is_cident): New function.
8825         * layout.cc (Layout::define_section_symbols): Replace string constants
8826         with the newly defined constants.
8827         * object.cc (Sized_relobj::do_layout): Track sections whose names are
8828         C identifiers.
8829         * testsuite/Makefile.am: Add gc_orphan_section_test.
8830         * testsuite/Makefile.in: Regenerate.
8831         * testsuite/gc_orphan_section_test.cc: New file.
8832         * testsuite/gc_orphan_section_test.sh: New file.
8833
8834 2010-01-06  Ian Lance Taylor  <iant@google.com>
8835
8836         PR 10980
8837         * options.h (class General_options): Add --warn-shared-textrel.
8838         * layout.cc (Layout::finish_dynamic_section): Implement
8839         --warn-shared-textrel.
8840
8841         PR 10980
8842         * options.h (class General_options): Add --warn-multiple-gp.
8843
8844 2010-01-06  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
8845
8846         * Makefile.am (incremental_dump_DEPENDENCIES): Remove
8847         $(THREADSLIB) and $(LIBDL).
8848         * Makefile.in: Rebuild.
8849
8850 2010-01-06  Ian Lance Taylor  <iant@google.com>
8851
8852         PR 10980
8853         * options.cc (General_options::parse_section_start): New function.
8854         (General_options::section_start): New function.
8855         (General_options::General_options): Initialize all members.
8856         * options.h: Include <map>
8857         (class General_options): Add --section-start.  Add section_starts_
8858         member.
8859         * layout.cc (Layout::attach_allocated_section_to_segment): If
8860         --section-start was used, set the address of the segment.  Remove
8861         local sort_sections.
8862         (Layout::relaxation_loop_body): If the address of the load segment
8863         has been set by --section-start, don't use it.
8864         * output.h (Output_segment::update_flags_for_output_section): New
8865         function.
8866         * output.cc (Output_segment::add_output_section): Call
8867         update_flags_for_output_section.
8868
8869 2010-01-05  Ian Lance Taylor  <iant@google.com>
8870
8871         PR 10980
8872         * options.h (class General_options): Add --undefined-version.
8873         * script.cc (struct Version_expression): Add was_matched_by_symbol
8874         field.
8875         (Version_script_info::matched_symbol): New function.
8876         (Version_script_info::get_symbol_version_helper): Call
8877         matched_symbol.
8878         (Version_script_info::check_unmatched_names): New function.
8879         * script.h (class Version_script_info): Update declarations.
8880         * gold.cc (queue_middle_tasks): Handle --no-undefined-version.
8881
8882         * options.h (class General_options): Use DEFINE_bool_alias for
8883         allow_multiple_definition.
8884         * resolve.cc (Symbol_table::should_override): Don't test
8885         allow_multiple_definition.
8886
8887         PR 10980
8888         * options.h (class General_options): Add --cref.
8889         * main.cc (main): Print cref table if --cref.  Don't close mapfile
8890         until after printing cref table.
8891         * cref.cc: Include "symtab.h".
8892         (class Cref_inputs): Define Cref_table_compare and Cref_table.
8893         (Cref_table_compare::operator()): New function.
8894         (Cref_inputs::gather_cref): New function.
8895         (filecol): New static const.
8896         (Cref_inputs::print_cref): New function.
8897         (Cref::print_cref): New function.
8898         * cref.h: Include <cstdio>.
8899         (class Cref): Update declarations.
8900         * mapfile.h (Mapfile::file): New function.
8901         * object.h (class Object): Define Symbols.  Declare virtual
8902         do_get_global_symbols.
8903         (Object::get_global_symbols): New function.
8904         * object.cc (Input_objects::add_object): Pass object to cref_ if
8905         --cref.
8906         (Input_objects::archive_start): Likewise.
8907         (Input_objects::archive_stop): Likewise.
8908         (Input_objects::print_cref): New function.
8909         * dynobj.h (Sized_dynobj::do_get_global_symbols): New function.
8910         * dynobj.cc (big_endian>::do_add_symbols): Create symbols_ if
8911         --cref.
8912         * plugin.cc (Sized_pluginobj::do_get_global_symbols): New
8913         function.
8914         * plugin.h (class Sized_pluginobj): Update declarations.
8915
8916 2010-01-05  Ian Lance Taylor  <iant@google.com>
8917
8918         * symtab.cc (Symbol_table::add_from_object): Rename def parameter
8919         to is_default_version.  Rename insdef to insdefault.
8920         (Symbol_table::add_from_relobj): Rename def to is_default_version
8921         and local to is_forced_local.
8922         (Symbol_table::add_from_pluginobj): Likewise.
8923         (Symbol_table::add_from_dynobj): Likewise.
8924         (Symbol_table::define_special_symbol): Rename insdef to
8925         insdefault.
8926
8927 2010-01-04  Ian Lance Taylor  <iant@google.com>
8928
8929         PR 10980
8930         * options.h (class General_options): Add
8931         --allow-multiple-definition and -z muldefs.
8932         * resolve.cc (Symbol_table::should_override): Don't warn about a
8933         multiple symbol definition if --allow-multiple-definition or -z
8934         muldefs.
8935
8936         PR 10980
8937         * options.h (class General_options): Add --add-needed and
8938         --copy-dt-needed-entries.  Tweak --as-needed help entry.
8939         * object.cc (Input_objects::check_dynamic_dependencies): Give an
8940         error if --copy-dt-needed-entries aka --add-needed is used and
8941         would cause a change in behaviour.
8942
8943         PR 10980
8944         * options.h (class General_options): Add -G as a short version of
8945         --shared.  Add no-op options -assert, -g, and -i.
8946
8947 2010-01-04  Sriraman Tallam  <tmsriram@google.com>
8948
8949         * gc.h (gc_process_relocs): Call is_section_foldable_candidate to
8950         check for .text or .gnu.linkonce.t sections.
8951         * icf.cc (Icf::find_identical_sections): Ditto.
8952         Change the detection for mangled function name within the section
8953         name.
8954         * icf.h (is_section_foldable_candidate): New function.
8955
8956 2009-12-30  Ian Lance Taylor  <iant@google.com>
8957
8958         PR 10980
8959         * options.h (class General_options): Permit two dashes with
8960         --retain-symbols-file.
8961
8962 2009-12-30  Ian Lance Taylor  <iant@google.com>
8963
8964         PR 10979
8965         * layout.cc (Layout::relaxation_loop_body): If -Ttext was used,
8966         don't put the file header and segment headers in the text
8967         segment.
8968
8969         PR 10979
8970         * common.cc (Sort_commons::operator()): Stabilize sort when both
8971         entries are NULL.
8972         (Symbol_table::do_allocate_commons_list): When allocating common
8973         symbols, skip a symbol which is no longer common.
8974         * symtab.h (Symbol::is_common): Test whether the symbol comes from
8975         an object before checking its type.
8976         * testsuite/common_test_2.c: New file.
8977         * testsuite/common_test_3.c: New file.
8978         * testsuite/Makefile.am (check_PROGRAMS): Add common_test_2.
8979         (common_test_2_SOURCES, common_test_2_DEPENDENCIES): Define.
8980         (common_test_2_LDFLAGS, common_test_2_LDADD): Define.
8981         (common_test_2_pic.o, common_test_2.so): New targets.
8982         (common_test_3_pic.o, common_test_3.so): New targets.
8983         * testsuite/Makefile.in: Rebuild.
8984
8985         PR 10979
8986         * script.cc (read_input_script): If we see a new SECTIONS clause,
8987         and we have added an input section, give an error.
8988         * layout.h (class Layout): Add have_added_input_section function.
8989         Add have_added_input_section_ field.
8990         * layout.cc (Layout::Layout): Initialize
8991         have_added_input_section_.
8992         (Layout::layout): Set have_added_input_section_.
8993         (Layout::layout_eh_frame): Likewise.
8994
8995 2009-12-30  Ian Lance Taylor  <iant@google.com>
8996
8997         PR 10931
8998         * options.h (class General_options): Add --sort-common option.
8999         * symtab.h (class Symbol_table): Define Sort_commons_order enum.
9000         * common.cc (Sort_common): Add sort_order parameter to
9001         constructor.  Add sort_order_ field.
9002         (Sort_commons::operator): Check sort_order_.
9003         (Symbol_table::allocate_commons): Determine the sort order.
9004         (Symbol_table::do_allocate_commons): Add sort_order parameter.
9005         Change all callers.
9006         (Symbol_table::do_allocate_commons_list): Likewise.
9007
9008 2009-12-30  Ian Lance Taylor  <iant@google.com>
9009
9010         PR 10916
9011         * symtab.cc (Symbol_table::add_from_relobj): When not exporting
9012         symbols from this object, don't change the visibility of an
9013         undefined symbol.
9014         * testsuite/exclude_libs_test_1.c (lib1_ref): New function.
9015
9016 2009-12-30  Ian Lance Taylor  <iant@google.com>
9017
9018         PR 10861
9019         * script.h (class Version_script_info): Define Language enum.
9020         Update declarations.  Define Glob, Exact, and Lookup types.  Add
9021         new fields globals_, locals_, and is_finalized_.
9022         * script.cc: Various formatting fixes.
9023         (class Parser_closure): Change language_stack_ from a vector of
9024         std::string to one of Version_script_info::Language.  Adjust all
9025         uses accordingly.
9026         (class Lazy_demangler): Remove.
9027         (struct Version_expression): Change language from std::string to
9028         Version_script_info::Language.
9029         (Version_script_info::Version_script_info): New function.
9030         (Version_script_info::~Version_script_info): Don't call clear.
9031         (Version_script_info::finalize): New function.
9032         (Version_script_info::build_lookup_tables): New function.
9033         (Version_script_info::build_expression_list_lookup): New
9034         function.
9035         (Version_script_info::get_symbol_version_helper): Rewrite to use
9036         lookup tables.
9037         (Version_script_info::print_expression_list): Adjust to use
9038         Version_script_info::Language.
9039         (script_push_lex_into_version_mode): Check that the version script
9040         has not been finalized.
9041         (version_script_push_lang): Change language string to
9042         Version_script_info::Language.
9043         * options.cc (Command_line::version_script): New function.
9044         * options.h (class General_options): Add finalize_dynamic_list
9045         function.  Change version_script from declaration to definition.
9046         * testsuite/ver_test_4.script: Remove duplicate def of t2_2.
9047         * testsuite/version_script.map: Remove duplicate def of foo.
9048         * testsuite/Makefile.am (ver_matching_def.so): Depend upon
9049         version_script.map.
9050         * testsuite/Makefile.in: Rebuild.
9051
9052 2009-12-30  Ian Lance Taylor  <iant@google.com>
9053
9054         PR 10843
9055         * target-reloc.h (relocate_for_relocatable): When copying a reloc,
9056         if the input symbol index is 0, make the output symbol index 0.
9057
9058 2009-12-30  Ian Lance Taylor  <iant@google.com>
9059
9060         PR 10670
9061         * options.h (class General_options): Add -x/--discard-all.
9062         * object.cc (Sized_relobj::do_count_local_symbols): Handle
9063         --discard-all.  If the local symbol needs a dynamic entry, check
9064         that before handling --discard-locals.
9065
9066 2009-12-30  Ian Lance Taylor  <iant@google.com>
9067
9068         PR 10450
9069         * output.cc (Output_segment::Output_segment): If PT_TLS, set the
9070         flags to PF_R.
9071         (Output_segment::add_output_section): Don't change the flags if
9072         the type is PT_TLS.
9073
9074         PR 10450
9075         * dynobj.cc (Dynobj::create_gnu_hash_table): Add symbols to the
9076         GNU hash table if they need a dynamic value.  Otherwise, don't add
9077         them if they are defined in a dynamic object or are forced local.
9078
9079 2009-12-29  Ian Lance Taylor  <iant@google.com>
9080
9081         PR 10450
9082         * layout.cc (Layout::create_dynamic_symtab): Only set entsize of
9083         .gnu.hash table for a 32-bit target.
9084
9085         PR 10450
9086         * symtab.h (Symbol::needs_dynsym_entry): A symbol in both a
9087         regular and a dynamic object only needs a dynamic symbol table
9088         entry if it is externally visible.
9089
9090         PR 10450
9091         * i386.cc (class Target_i386): Initialize global_offset_table_ in
9092         constructor.  Add global_offset_table_ field.
9093         (Target_i386::got_section): Set global_offset_table_.
9094         (Target_i386::do_finalize_sections): Set global_offset_table_
9095         size.
9096         * x86_64.cc (class Target_x86_64): Initialize global_offset_table_
9097         in constructor.  Add global_offset_table_ field.
9098         (Target_x86_64::got_section): Set global_offset_table_.
9099         (Target_x86_64::do_finalize_sections): Set global_offset_table_
9100         size.
9101
9102         * layout.cc (Layout::Layout): Initialize increase_relro_.
9103         (Layout::get_output_section): Add is_relro, is_last_relro, and
9104         is_first_non_relro parameters.  Change all callers.
9105         (Layout::choose_output_section): Likewise.
9106         (Layout::add_output_section_data): Likewise.
9107         (Layout::make_output_section): Likewise.
9108         (Layout::set_segment_offsets): Clear increase_relro when using a
9109         linker script.
9110         * layout.h (class Layout): Add increase_relro method.  Add
9111         increase_relro_ field.  Update declarations.
9112         * output.cc (Output_section::Output_section): Initialize
9113         is_last_relro_ and is_first_non_relro_.
9114         (Output_segment::add_output_section): Group relro sections is
9115         do_sort is true.  Handle is_last_relro and is_first_non_relro.
9116         (Output_segment::maximum_alignment): Remove relro handling.
9117         (Output_segment::set_section_addresses): Add increase_relro
9118         parameter.  Change all callers.  Add initial alignment to align
9119         relro sections on separate page.  Remove old relro handling.
9120         (Output_segment::set_section_list_addresses): Remove in_relro
9121         parameter.  Change all callers.
9122         (Output_segment::set_offset): Add increase parameter.  Change all
9123         callers.  Remove old relro handling.
9124         * output.h (class Output_section): Add new methods: is_last_relro,
9125         set_is_last_relro, is_first_non_relro, set_is_first_non_relro.
9126         Add is_last_relro_ and is_first_non_relro_ fields.
9127         * i386.cc (Target_i386::got_section): Don't call set_is_relro.
9128         Create separate .got.plt section.  Call increase_relro.
9129         * x86_64.cc (Target_x86_64::got_section): Likewise.
9130         * testsuite/relro_script_test.t: Add .got.plt.
9131
9132         PR 10450
9133         * layout.cc (Layout::Layout): Initialize dynamic_symbol_ field.
9134         (Layout::create_initial_dynamic_sections): Set dynamic_symbol_.
9135         (Layout::finalize): Call set_dynamic_symbol_size.
9136         (Layout::set_dynamic_symbol_size): New function.
9137         * layout.h (class Layout): Add dynamic_symbol_ field.  Declare
9138         set_dynamic_symbol_size.
9139
9140         PR 10450
9141         * output.h (class Output_section): Add is_entsize_zero_ field.
9142         * output.cc (Output_section::Output_section): Initialize
9143         is_entsize_zero_.
9144         (Output_section::set_entsize): If two different entsizes are
9145         requested, force it to zero.
9146         (Output_section::add_input_section): Set flags for .debug_str
9147         before updating section flags.  Set entsize.
9148         (Output_section::update_flags_for_input_section): Set SHF_MERGE
9149         and SHF_STRING if all input sections have those flags.
9150
9151 2009-12-29   Rafael Espindola  <espindola@google.com>
9152
9153         * main.cc (main): Fix the sys time reporting.
9154         * workqueue.cc (Workqueue::find_and_run_task): Fix the sys time
9155         reporting.
9156
9157 2009-12-29  Sriraman Tallam  <tmsriram@google.com>
9158
9159         * options.cc (General_options::parse_version): Allow -v to exit
9160         without an error if there is nothing to link.
9161
9162 2009-12-29  Ian Lance Taylor  <iant@google.com>
9163
9164         * configure.ac: Set the MCMODEL_MEDIUM conditional to false if
9165         using a version of gcc before 4.1.
9166         * configure: Rebuild.
9167
9168 2009-12-28  Chris Demetriou  <cgd@google.com>
9169
9170         * attributes.cc (Output_attributes_section_data::do_write): Use
9171         std::vector::front rather than std::vector::data.
9172
9173 2009-12-28  Ian Lance Taylor  <iant@google.com>
9174
9175         * symtab.h (class Symbol_table): Add enum Defined.
9176         * resolve.cc (Symbol_table::should_override): Add defined
9177         parameter.  Change all callers.  Test whether object is NULL
9178         before calling a method on it.
9179         (Symbol_table::report_resolve_problem): Add defined parameter.
9180         Change all callers.
9181         (Symbol_table::should_override_with_special): Likewise.
9182         * symtab.cc (Symbol_table::define_in_output_data): Add defined
9183         parameter.  Change all callers.
9184         (Symbol_table::do_define_in_output_data): Likewise.
9185         (Symbol_table::define_in_output_segment): Likewise.
9186         (Symbol_table::do_define_in_output_segment): Likewise.
9187         (Symbol_table::define_as_constant): Likewise.
9188         (Symbol_table::do_define_as_constant): Likewise.
9189         * script.h (class Symbol_assignment): Add is_defsym parameter to
9190         constructor; change all callers.
9191         * script.cc (Script_options::add_symbol_assignment): Add is_defsym
9192         parameter.  Change all callers.  Add is_defsym_ field.
9193         (class Parser_closure): Add parsing_defsym parameter to
9194         constructor; change all callers.  Add parsing_defsym accessor
9195         function.  Add parsing_defsym_ field.
9196
9197 2009-12-28  Ian Lance Taylor  <iant@google.com>
9198
9199         * gold.cc (queue_middle_tasks): Fix formatting.
9200         * object.cc (Relobj::is_section_name_included): Likewise.
9201
9202 2009-12-23  Ian Lance Taylor  <iant@google.com>
9203
9204         * i386.cc (Target_i386::do_calls_non_split): Recognize
9205         -fsplit-stack prologue for a function with a static chain.
9206         * x86_64.cc (Target_x86_64::do_calls_non_split): Recognize
9207         -fsplit-stack prologue when using %r11.
9208
9209 2009-12-21  Sriraman Tallam  <tmsriram@google.com>
9210
9211         * options.cc (General_options::parse_version): Make -v continue and do
9212         the link like GNU ld does.
9213
9214 2009-12-17  Rafael Avila de Espindola  <espindola@google.com>
9215
9216         * Makefile.am (CCFILES): Add timer.cc.
9217         (HFILES): Add timer.h.
9218         * configure.ac: Check for sysconf and times.
9219         * main.cc: include timer.h.
9220         (main): Use Timer instead of get_run_time.
9221         * timer.cc: New.
9222         * timer.h: New.
9223         * workqueue.cc: include timer.h.
9224         (Workqueue::find_and_run_task):
9225         Report user, sys and wall time.
9226         * Makefile.in: Regenerate.
9227         * config.in: Regenerate.
9228         * configure: Regenerate.
9229
9230 2009-12-16  Doug Kwan  <dougkwan@google.com>
9231
9232         * arm.cc (Arm_relobj::scan_sections_for_stubs): Exclude ICF-eliminated
9233         sections.
9234         * object.cc (Sized_relobj::do_finalize_local_symbols): Handle
9235         relaxed input sections.
9236         * output.cc (Output_section::find_relaxed_input_section): Change
9237         return type to Output_relaxed_input_section pointer.  Adjust code
9238         for new type of relaxed_input_section_map_.
9239         * output.h (Output_section::find_relaxed_input_section): Change
9240         return type to Output_relaxed_input_section pointer.
9241         (Output_section::Output_relaxed_input_section_by_input_section_map):
9242         New type.
9243         (Output_section::relaxed_input_section_map_): Change type to
9244         Output_section::Output_relaxed_input_section_by_input_section_map.
9245         * symtab.cc (Symbol_table::compute_final_value): Handle relaxed
9246         input section.
9247
9248 2009-12-15  Ian Lance Taylor  <iant@google.com>
9249
9250         * layout.cc (Layout::create_shstrtab): Only write out after input
9251         sections if we are compressing debug sections.
9252
9253 2009-12-15  Ian Lance Taylor  <iant@google.com>
9254
9255         * archive.cc (Archive::add_symbols): Only look up a symbol without
9256         a version if there is, in fact, a version.
9257
9258 2009-12-14  Ian Lance Taylor  <iant@google.com>
9259
9260         Revert -Wshadow changes, all changes from:
9261         2009-12-11  Doug Kwan  <dougkwan@google.com>
9262         2009-12-11  Nick Clifton  <nickc@redhat.com>
9263         * configure.ac: Remove -Wshadow when setting WARN_CXXFLAGS.
9264
9265 2009-12-11  Doug Kwan  <dougkwan@google.com>
9266
9267         * arm.cc (Target_arm::do_finalize_sections): Fix build breakage
9268         due to -Wshadow.
9269         * attributes.cc (Object_attribute::size): Ditto.
9270         (Attributes_section_data::size): Ditto.
9271         (Attributes_section_data::Attributes_section_data): Ditto.
9272         (Output_attributes_section_data::do_write): Ditto.
9273         * attributes.h (Object_attribute::set_type): Ditto.
9274         * testsuite/tls_test_main.cc (safe_lock, safe_unlock): Ditto.
9275
9276 2009-12-11  Nick Clifton  <nickc@redhat.com>
9277
9278         * archive.cc: Fix shadowed variable warnings.
9279         * arm.cc: Likewise.
9280         * compressed_output.cc: Likewise.
9281         * compressed_output.h: Likewise.
9282         * configure: Likewise.
9283         * dwarf_reader.cc: Likewise.
9284         * dynobj.cc: Likewise.
9285         * dynobj.h: Likewise.
9286         * ehframe.cc: Likewise.
9287         * ehframe.h: Likewise.
9288         * errors.cc: Likewise.
9289         * expression.cc: Likewise.
9290         * fileread.cc: Likewise.
9291         * fileread.h: Likewise.
9292         * freebsd.h: Likewise.
9293         * i386.cc: Likewise.
9294         * icf.cc: Likewise.
9295         * incremental.h: Likewise.
9296         * layout.cc: Likewise.
9297         * layout.h: Likewise.
9298         * mapfile.cc: Likewise.
9299         * merge.cc: Likewise.
9300         * merge.h: Likewise.
9301         * object.cc: Likewise.
9302         * object.h: Likewise.
9303         * options.h: Likewise.
9304         * output.cc: Likewise.
9305         * output.h: Likewise.
9306         * parameters.cc: Likewise.
9307         * plugin.cc: Likewise.
9308         * powerpc.cc: Likewise.
9309         * reduced_debug_output.cc: Likewise.
9310         * reduced_debug_output.h: Likewise.
9311         * reloc.cc: Likewise.
9312         * reloc.h: Likewise.
9313         * resolve.cc: Likewise.
9314         * script-sections.cc: Likewise.
9315         * script.cc: Likewise.
9316         * script.h: Likewise.
9317         * sparc.cc: Likewise.
9318         * symtab.cc: Likewise.
9319         * symtab.h: Likewise.
9320         * target-select.cc: Likewise.
9321         * target-select.h: Likewise.
9322         * token.h: Likewise.
9323         * workqueue.cc: Likewise.
9324         * workqueue.h: Likewise.
9325         * x86_64.cc: Likewise.
9326
9327 2009-12-10  Doug Kwan  <dougkwan@google.com>
9328
9329         * arm.cc (attributes.h): New include.
9330         (Arm_relobj::Arm_relobj): Initialize attributes_section_data_.
9331         (Arm_relobj::~Arm_relobj): Delete object pointed by
9332         attributes_section_data_.
9333         (Arm_relobj::attributes_section_data): New method definition.
9334         (Arm_relobj::attributes_section_data_): New data member declaration.
9335         (Arm_dynobj::Arm_dynobj): Initialize attributes_section_data_.
9336         (Arm_dynobj::~Arm_dynobj): Delete object pointed by
9337         attributes_section_data_.
9338         (Arm_dynobj::attributes_section_data): New method definition.
9339         (Arm_dynobj::attributes_section_data_): New data member declaration.
9340         (Target_arm::Target_arm): Initialize attributes_section_data_.  Change
9341         initialization value of may_use_blx_ to false.
9342         (Target_arm::using_thumb2, Target_arm::using_thumb_only,
9343         Target_arm::may_use_arm_nop, Target_arm::may_use_thumb2_nop): Use
9344         object attributes to compute results instead of hard-coding.
9345         (Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order,
9346         Target_arm::get_secondary_compatible_arch,
9347         Target_arm::set_secondary_compatible_arch
9348         Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name,
9349         Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes):
9350         New method declarations.
9351         (Target_arm::get_aeabi_object_attribute): New method definition.
9352         (Target_arm::attributes_section_data_): New data member declaration.
9353         (read_arm_attributes_section): New template definition.
9354         (Arm_relobj::do_read_symbols): Read attributes section if it exists.
9355         (Arm_dynobj::do_read_symbols): Ditto.
9356         (Target_arm::do_finalize_sections): Merge attributes sections from
9357         input.  Check for BLX use after attributes section merging.
9358         Fix __exidx_start and __exidx_end visibility.  Create an
9359         .ARM.attributes section if necessary.
9360         (Target_arm::get_secondary_compatible_arch,
9361         Target_arm::set_secondary_compatible_arch,
9362         Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name,
9363         Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes,
9364         Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order):
9365         New method definitions.
9366
9367 2009-12-09  Ian Lance Taylor  <iant@google.com>
9368
9369         * plugin.cc (Plugin::load): Don't cast from void* to a function
9370         pointer.
9371
9372 2009-12-09  Ian Lance Taylor  <iant@google.com>
9373
9374         * dynobj.cc (Sized_dynobj::do_read_symbols): Clear version
9375         information fields.
9376
9377 2009-12-09  H.J. Lu  <hongjiu.lu@intel.com>
9378
9379         * testsuite/Makefile.am (two_file_shared_1_pic_2_test_DEPENDENCIES):
9380         Replace two_file_shared_1.so with two_file_shared_2.so.
9381         * testsuite/Makefile.in: Regenerated.
9382
9383 2009-12-08  Doug Kwan  <dougkwan@google.com>
9384
9385         * Makefile.am (CCFILES): Add attributes.cc and int_encoding.cc.
9386         (HFILES): Add attributes.h and int_encoding.h.
9387         * Makefile.in: Regenerate.
9388         * dwarf_reader.cc (read_unsigned_LEB_128, read_signed_LEB_128): Move
9389         function definitions to int_encoding.cc
9390         * dwarf_reader.h (read_unsigned_LEB_128, read_signed_LEB_128): Move
9391         prototypes to int_encoding.h
9392         * reduced_debug_output.cc (int_encoding.h): New include.
9393         (write_unsigned_LEB_128, get_length_as_unsigned_LEB_128): Move
9394         function definitions to int_encoding.cc
9395         (insert_into_vector, read_from_pointer): Move template definitions to
9396         int_encoding.h
9397         * attributes.cc: New file.
9398         * attributes.h: New file.
9399         * int_encoding.cc: New file.
9400         * int_encoding.h: New file.
9401
9402 2009-12-07  Rafael Avila de Espindola  <espindola@google.com>
9403
9404         PR gold/11055
9405         * incremental-dump.cc (dump_incremental_inputs): New.
9406         (main): Use dump_incremental_inputs.
9407
9408 2009-12-07  H.J. Lu  <hongjiu.lu@intel.com>
9409
9410         PR gold/10893
9411         * i386.cc (Target_i386::Scan::globa): Use is_func instead of
9412         checking elfcpp::STT_FUNC.
9413         (Target_i386::Relocate::relocate): Likewise.
9414         * x86_64.cc (Target_x86_64::Scan::global): Likewise.
9415
9416         * symtab.cc (Symbol_table::sized_write_symbol): Turn IFUNC
9417         symbols from shared libraries into normal FUNC symbols.
9418
9419         * symtab.h (Symbol): Add is_func and use it.
9420
9421 2009-12-05  Doug Kwan  <dougkwan@google.com>
9422
9423         * arm.cc (Target_arm::arm_info): Initialize new fields
9424         attributes_section and attributes_vendor.
9425         * i386.cc (Target_i386::i386_info): Same.
9426         * object.cc (Sized_relobj::do_layout): Skip attribute section.
9427         * gold/powerpc.cc (Target_powerpc::powerpc_info): Initialize new
9428         fields attributes_section and attributes_vendor.
9429         * sparc.cc (Target_sparc::sparc_info): Same.
9430         * target.h (Target::attributes_section, Target::attributes_vendor,
9431         Target::is_attributes_section, Target::attribute_arg_type,
9432         Target::attributes_order): New method definitions.
9433         (Target::Target_info::attributes_section,
9434         Target::Target_info::attributes_vendor): New fields.
9435         (Target::do_attribute_arg_type, Target::do_attributes_order): New
9436         virtual method definitions.
9437         * x86_64.cc (Target_x86_64::x86_64_info): Initialize new fields
9438         attributes_section and attributes_vendor.
9439         * testsuite/testfile.cc (Target_test::test_target_info): Same.
9440
9441 2009-12-05  Doug Kwan  <dougkwan@google.com>
9442
9443         * arm.cc: Update comments about interworking and stub generation.
9444         (Target_arm::Relocate::reloc_is_non_pic): Update list of relocations
9445         considered as non-PIC.
9446         (Arm_relocate_functions::base_abs): Fix formatting.
9447         (Arm_relocate_functions::got_prel): Fix comment.  Change interface
9448         of function to use GOT entry address instead of offset.
9449         (Target_arm::Scan::global): Issue an error if a symbol would need a
9450         PLT does not get one because it is untyped.  Remove code to create
9451         dynamic symbols for relative branches.
9452         (Target_arm::Relocate::relocate: Use 0 instead of false since function
9453         takes unsigned integer instead of boolean.
9454
9455 2009-12-05  H.J. Lu  <hongjiu.lu@intel.com>
9456
9457         * testsuite/Makefile.am (constructor_test_LDADD): New. Empty.
9458         (two_file_test_LDADD): Likewise.
9459         (common_test_1_LDADD): Likewise.
9460         (exception_test_LDADD) Likewise.
9461         (weak_test_LDADD): Likewise.
9462         (many_sections_test_LDADD): Likewise.
9463         (initpri1_LDADD): Likewise.
9464         (script_test_1_LDADD): Likewise.
9465         (script_test_2_LDADD): Likewise.
9466         (justsyms_LDADD): Likewise.
9467         (binary_test_LDADD): Likewise.
9468         (large_LDADD): Likewise.
9469         * testsuite/Makefile.in: Regenerated.
9470
9471 2009-12-04  H.J. Lu  <hongjiu.lu@intel.com>
9472
9473         * resolve.cc (symbol_to_bits): Treat STB_GNU_UNIQUE as STB_GLOBAL.
9474         (Symbol_table::override_with_special): Likewise.
9475         (Symbol_table::add_from_object): Likewise.
9476
9477 2009-12-04  Rafael Avila de Espindola  <espindola@google.com>
9478
9479         * incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
9480         Don't set the data_offset twice.
9481
9482 2009-12-04  Rafael Avila de Espindola  <espindola@google.com>
9483
9484         * testsuite/Makefile.in: Regenerate.
9485
9486 2009-12-03  Doug Kwan  <dougkwan@google.com>
9487
9488         * arm.cc: Remove comment about missing .ARM.exidx section symbols.
9489         (Target_arm::do_finalize_sections): Add parameter for symbol table
9490         pointer.  Add __exidx_start and __exidx_end symbols as appropriate.
9491         * i386.cc (Target_i386::do_finalize_sections): Add an additional
9492         parameter for symbol table pointer.
9493         * layout.cc (Layout::finalize): Call Target::finalize_sections with
9494         an additional parameter for a pointer to symbol table.
9495         * powerpc.cc (Target_powerpc::do_finalize_sections): Add an additional
9496         parameter for a symbol table pointer.
9497         * sparc.cc (Target_sparc::do_finalize_sections): Ditto.
9498         * target.h (Target::finalize_sections, Target::do_finalize_sections):
9499         Ditto.
9500         * x86_64.cc (Target_x86_64::do_finalize_sections): Add an additional
9501         parameter for a symbol table pointer.
9502
9503 2009-12-03  Rafael Avila de Espindola  <espindola@google.com>
9504
9505         * incremental.cc (Incremental_inputs_header)
9506         (Incremental_inputs_header_write, Incremental_inputs_entry)
9507         (Incremental_inputs_entry_write): Move ...
9508         * incremental.h (Incremental_inputs_header)
9509         (Incremental_inputs_header_write, Incremental_inputs_entry)
9510         (Incremental_inputs_entry_write): here.
9511
9512 2009-12-02  Rafael Avila de Espindola  <espindola@google.com>
9513
9514         * incremental.cc (make_sized_incremental_binary): Set the target.
9515         Error if it is incompatible.
9516         * output.h (Output_file): Add filename method.
9517
9518 2009-12-02  Rafael Avila de Espindola  <espindola@google.com>
9519
9520         * incremental.cc (Incremental_inputs_entry): Remove unused argument
9521         from the get_* methods.
9522
9523 2009-12-02  Rafael Avila de Espindola  <espindola@google.com>
9524
9525         * incremental-dump.cc (main): Check that the offeset of a script is 0.
9526         * incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
9527         Write 0 for the data_offset of scripts.
9528
9529 2009-12-02  Rafael Avila de Espindola  <espindola@google.com>
9530
9531         * testsuite/Makefile.am: Add the incremental_test.sh test.
9532         * testsuite/incremental_test.sh: New.
9533         * testsuite/incremental_test_1.c: New.
9534         * testsuite/incremental_test_2.c: New.
9535
9536 2009-12-01  Rafael Avila de Espindola  <espindola@google.com>
9537
9538         * incremental-dump.cc (main): Fix typos.
9539
9540 2009-11-27  Rafael Avila de Espindola  <espindola@google.com>
9541
9542         PR gold/11025
9543         * incremental-dump.cc (main): Use llu to print 64 bit values.
9544
9545 2009-11-26  Per Øyvind Karlsen <peroyvind@mandriva.org>
9546             H.J. Lu  <hongjiu.lu@intel.com>
9547
9548         * Makefile.am (incremental_dump_DEPENDENCIES): Add $(THREADSLIB)
9549         $(LIBDL).
9550         (incremental_dump_LDADD): Likewise.
9551         * Makefile.in: Regenerated.
9552
9553 2009-11-25  Doug Kwan  <dougkwan@google.com>
9554
9555         Revert:
9556
9557         2009-11-25  Doug Kwan  <dougkwan@google.com>
9558
9559                 * arm.cc (Target_arm::Target_arm): Move method definition
9560                 outside of class definition.  Add code to handle
9561                 --target1-rel, --target1-abs and --target2= options.
9562                 (Target_arm::get_reloc_reloc_type): Change method to be
9563                 non-static and const.
9564                 (Target_arm::target1_is_rel_, Target_arm::target2_reloc_):
9565                 New data member declaration.
9566                 (Target_arm::Scan::local, Target_arm::Scan::global,
9567                 Target_arm::Relocate::relocate,
9568                 Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
9569                 Adjust call to Target_arm::get_real_reloc_type.
9570                 (Target_arm::get_real_reloc_type): Use command line options
9571                 to determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
9572                 * options.h (--target1-rel, --target1-abs, --target2): New
9573                 ARM-only options.
9574
9575 2009-11-25  Doug Kwan  <dougkwan@google.com>
9576
9577         * arm.cc (Target_arm::Target_arm): Move method definition outside of
9578         class definition.  Add code to handle --target1-rel, --target1-abs
9579         and --target2= options.
9580         (Target_arm::get_reloc_reloc_type): Change method to be non-static
9581         and const.
9582         (Target_arm::target1_is_rel_, Target_arm::target2_reloc_): New data
9583         member declaration.
9584         (Target_arm::Scan::local, Target_arm::Scan::global,
9585         Target_arm::Relocate::relocate,
9586         Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Adjust
9587         call to Target_arm::get_real_reloc_type.
9588         (Target_arm::get_real_reloc_type): Use command line options to
9589         determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
9590         * options.h (--target1-rel, --target1-abs, --target2): New ARM-only
9591         options.
9592
9593 2009-11-25  Doug Kwan  <dougkwan@google.com>
9594
9595         * arm.cc (Target_arm::may_use_thumb2_nop): New method definition.
9596         (Arm_relocate_functions::thumb_branch_common): New metod declaration.
9597         (Arm_relocate_functions::abs12, Arm_relocate_functions::abs16): Fix
9598         formatting.
9599         (Arm_relocate_functions::thm_call): Replace body with a call to
9600         Arm_relocate_functions::thumb_branch_common.
9601         (Arm_relocate_functions::thm_jump24,
9602         Arm_relocate_functions::thm_xpc22): New method definitions.
9603         (Arm_relocate_functions::thumb_branch_common): New method definition.
9604         (Reloc_stub::stbu_type_for_reloc): Fix incorrect uses of bit-wise-or
9605         operator.
9606         (Target_arm::Relocate::relocate): Adjust call to thm_call.
9607         Add code to handle R_ARM_THM_XPC22 and R_ARM_THM_JUMP24.
9608
9609 2009-11-24  Rafael Avila de Espindola  <espindola@google.com>
9610
9611         * Makefile.am: Build incremental-dump
9612         * Makefile.in: Regenerate.
9613         * incremental-dump.cc: New.
9614         * incremental.cc (Incremental_inputs_header_data,
9615         Incremental_inputs_entry_data): Move to incremental.h
9616         * incremental.h: (Incremental_inputs_header_data,
9617         Incremental_inputs_entry_data): Move from incremental.cc
9618
9619 2009-11-24  Rafael Avila de Espindola  <espindola@google.com>
9620
9621         * incremental.cc (Incremental_inputs_header,
9622         Incremental_inputs_header_write, Incremental_inputs_entry,
9623         Incremental_inputs_entry_write): Add a typedef with the data type.
9624
9625 2009-11-24  Rafael Avila de Espindola  <espindola@google.com>
9626
9627         * incremental.cc (Incremental_inputs_header,
9628         Incremental_inputs_header_write, Incremental_inputs_entry,
9629         Incremental_inputs_entry_write): Update comment about which
9630         type has the filed descriptions.
9631
9632 2009-11-15  Doug Kwan  <dougkwan@google.com>
9633
9634         * arm.cc (Target_arm::may_use_arm_nop): New method definition.
9635         (Arm_relocate_functions::arm_branch_common): Change method defintion
9636         in class definition to a method declaration and update list of formal
9637         parameters.
9638         (Arm_relocate_functions::plt32, Arm_relocate_functions::call,
9639         Arm_relocation_functions::jump24): Adjust call to
9640         Arm_relocate_functions::arm_branch_common.  Update list of formal
9641         parameters.
9642         (Arm_relocate_functions::xpc25): New method definition.
9643         (Arm_relocate_functions::arm_branch_common): Move method defintion
9644         out from class definition.  Use stubs for mode-switching and extending
9645         branch ranges.
9646         (Target_arm::Relocate::relocate): Handle weakly-undefined symbols
9647         specially.  Change code to enable use of stubs in ARM branches.
9648
9649 2009-11-10  Doug Kwan  <dougkwan@google.com>
9650
9651         * arm.cc (Arm_relobj::do_relocate_sections): Remove options parameter
9652         in method declaration.
9653         (Target_arm::relocate_stub): New method declaration.
9654         (Target_arm::default_target): Change to return a pointer instead of
9655         a const reference.
9656         (Reloc_stub::stub_type_for_reloc): Adjust for the change in
9657         Target_arm::default_target.
9658         (Arm_Relobj::do_relocate_sections): Remove options paramater in
9659         method definition.
9660         (Target_arm::relocate_section): Adjust view.
9661         (Target_arm::relocate_stub): New method definition.
9662
9663 2009-11-10  Doug Kwan  <dougkwan@google.com>
9664
9665         * i386.cc (Target_i386::do_calls_non_split): Add a cast to avoid
9666         a format warning.
9667         * incremental.cc (open_incremental_binary): Initialized local
9668         variables to avoid warnings.
9669         * object.cc (make_elf_object): Ditto.
9670         * x86_64.cc (Target_x86_64::do_calls_non_split): Add a cast to avoid
9671         a format warning.
9672
9673 009-11-09  H.J. Lu  <hongjiu.lu@intel.com>
9674
9675         PR gold/10930
9676         * testsuite/plugin_test.c: Include "config.h".
9677
9678 2009-11-09  Doug Kwan  <dougkwan@google.com>
9679
9680         * arm.cc (Target_arm::fake_relnum_for_stubs): New constant.
9681         (arm_symbol_value): Remove.
9682         (Arm_relocate_functions::arm_branch_common,
9683         Arm_relocate_functions::abs8, Arm_relocate_functions::thm_abs5,
9684         Arm_relocate_functions::abs12, Arm_relocate_functions::abs16,
9685         Arm_relocate_functions::abs32, Arm_relocate_functions::rel32,
9686         Arm_relocate_functions::thm_call, Arm_relocate_functions::plt32,
9687         Arm_relocate_functions::call, Arm_relocate_functions::jump24,
9688         Arm_relocate_functions::prel31, Arm_relocate_functions::mov_abs_nc,
9689         Arm_relocate_functions::movt_abs, Arm_relocate_functions::movw_abs_nc,
9690         Arm_relocate_functions::thm_mobw_abs_nc,
9691         Arm_relocate_functions::thm_mov_abs,
9692         Arm_relocate_functions::movw_prel_nc,
9693         Arm_relocate_functions::thm_movt_abs,
9694         Arm_relocate_functions::movt_prel,
9695         Arm_relocate_functions::thm_movw_prel_nc,
9696         Arm_relocate_functions::thm_movt_prel): Adjust callers of the above.
9697         (Target_arm::Relocate::relocate): Only decompose address into two
9698         parts if relocation type uses the thumb-bit and pass the actual
9699         bit instead of a flag indicating that the thumb-bit is used.  Adjust
9700         calls to methods in Arm_relocate_functions for this change.
9701
9702 2009-11-08  Ian Lance Taylor  <iant@google.com>
9703
9704         PR 10925
9705         * reloc.cc: Instantiate
9706         Sized_relobj::initialize_input_to_output_maps and
9707         Sized_relobj:free_input_to_output_maps.
9708
9709 2009-11-06  Ian Lance Taylor  <iant@google.com>
9710
9711         PR 10876
9712         * defstd.cc (in_segment): Set only_if_ref true for "end".
9713
9714 2009-11-06  Doug Kwan  <dougkwan@google.com>
9715
9716         * arm.cc (class Reloc_stub): Correct a comment.
9717         (Target_arm::Target_arm): Initialize arm_input_section_map_.
9718         (Target_arm::scan_section_for_stubs): New method declaration.
9719         (Target_arm::do_make_elf_object, Target_arm::do_make_output_section):
9720         Change methods from private to protected.
9721         (Target_arm::do_may_relax): New method definition.
9722         (Target_arm::do_relax, Target_arm::group_sections,
9723         Target_arm::scan_reloc_for_stub,
9724         Target_arm::scan_reloc_section_for_stubs): New method declarations.
9725         (Target_arm::arm_input_section_map_): New data member declaration.
9726         (Target_arm::scan_reloc_for_stub,
9727         Target_arm::scan_reloc_section_for_stubs,
9728         Target_arm::scan_section_for_stubs, Target_arm::group_sections,
9729         Target_arm::do_relax): New method definitions.
9730
9731 2009-11-06  Mikolaj Zalewski  <mikolaj@google.com>
9732
9733         * configure.ac: Check for (struct stat)::st_mtim
9734         * fileread.cc (File_read::get_mtime): Use st_mtim if available.
9735         * config.in: Regenerate.
9736         * configure: Regenerate.
9737
9738 2009-11-05  Ian Lance Taylor  <iant@google.com>
9739
9740         PR 10910
9741         * output.cc (Output_segment::add_output_section): Add missing
9742         return statement.
9743
9744 2009-11-04  Ian Lance Taylor  <iant@google.com>
9745
9746         PR 10880
9747         * object.h (class Object): Add is_needed and set_is_needed
9748         methods.  Add is_needed_ field.  Make bool fields into bitfields.
9749         * symtab.cc (Symbol_table::set_dynsym_indexes): If a symbol is
9750         defined in a dynamic object and referenced by a regular object,
9751         set is_needed for the dynamic object.
9752         * layout.cc (Layout::finish_dynamic_section): Don't add DT_NEEDED
9753         if the file is marked with as_needed and it is not needed.
9754
9755 2009-11-04  Ian Lance Taylor  <iant@google.com>
9756
9757         PR 10887
9758         * arm.cc (Target_arm::do_finalize_sections): Don't add dynamic
9759         tags if data is discarded by linker script.
9760         * i386.cc (Target_i386::do_finalize_sections): Likewise.
9761         * powerpc.cc (Target_powerpc::do_finalize_sections): Likewise.
9762         * sparc.cc (Target_sparc::do_finalize_sections): Likewise.
9763         * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
9764
9765 2009-11-04  Ian Lance Taylor  <iant@google.com>
9766
9767         * layout.cc (Layout::get_output_section): Add is_interp and
9768         is_dynamic_linker_section parameters.  Change all callers.
9769         (Layout::choose_output_section): Likewise.
9770         (Layout::make_output_section): Likewise.
9771         (Layout::add_output_section_data): Add is_dynamic_linker_section
9772         parameter.  Change all callers.
9773         * layout.h (class Layout): Update declarations.
9774         * output.h (class Output_section): Add is_interp, set_is_interp,
9775         is_dynamic_linker_section, set_is_dynamic_linker_section methods.
9776         Add is_interp_, is_dynamic_linker_section_ fields.  Change
9777         generate_code_fills_at_write_ to a bitfield.
9778         * output.cc (Output_section::Output_sections): Initialize new
9779         fields.
9780         (Output_segment::add_output_section): Add do_sort parameter.
9781         Change all callers.
9782
9783 2009-11-03  Ian Lance Taylor  <iant@google.com>
9784
9785         PR 10860
9786         * options.h (class General_options): Add --warn-common.
9787         * resolve.cc (Symbol_table::resolve): Handle --warn-common when
9788         merging two common symbols.
9789         (Symbol_table::should_override): Handle --warn-common when merging
9790         a common symbol with a defined symbol.  Use report_resolve_problem
9791         for multiple definitions.
9792         (Symbol_table::report_resolve_problem): New function.
9793         * symtab.h (class Symbol_table): Declare report_resolve_problem.
9794
9795 2009-11-03  Doug Kwan  <dougkwan@google.com>
9796
9797         * arm.cc (Target_arm::Target_arm): Initialize stub_tables_ and
9798         stub_factory_.
9799         (Target_arm::stub_factory): New method definition.
9800         (Target_arm::new_arm_input_section,
9801         Target_arm::find_arm_input_section, Target_arm::new_stub_table,
9802         Target_arm::reloc_uses_thumb_bit): New method declarations.
9803         (Target_arm::Stub_table_list, Target_arm::Arm_input_section_map):
9804         New type definitions.
9805         (Target_arm::stub_tables_, Target_arm::stub_factory_): New data
9806         member declarations.
9807         (Target_arm::reloc_uses_thumb_bit, Target_arm::new_arm_input_section,
9808         Target_arm::find_arm_input_section, Target_arm::new_stub_table):
9809         New method definitions.
9810
9811 2009-11-03  Ian Lance Taylor  <iant@google.com>
9812
9813         * options.h (class General_options): Add --warn_constructors.
9814
9815 2009-11-03  Ian Lance Taylor  <iant@google.com>
9816
9817         PR 10893
9818         * defstd.cc (in_section): Add entries for __rel_iplt_start,
9819         __rel_iplt_end, __rela_iplt_start, __rela_iplt_end, and __stack.
9820
9821 2009-11-03  Ian Lance Taylor  <iant@google.com>
9822
9823         PR 10895
9824         * po/Make-in ($(srcdir)/$(PACKAGE).pot): Pass -C and
9825         --msgid-bugs-address.
9826         (install-pdf): New target.
9827         (install-data_yes): Look up one directory to find mkinstalldirs.
9828
9829 2009-11-03  H.J. Lu  <hongjiu.lu@intel.com>
9830
9831         * po/Make-in (.po.gmo): Don't generate .gmo files in source
9832         tree.
9833
9834 2009-10-30  Doug Kwan  <dougkwan@google.com>
9835
9836         * arm.cc (Stub_addend_reader): Fix bug in previouls check-in.
9837
9838 2009-10-30  Doug Kwan  <dougkwan@google.com>
9839
9840         * arm.cc (Stub_addend_reader): New struct template definition
9841         and partial specializations.
9842         (Stub_addend_reader::operator()): New method definition for a
9843         partially specialized template.
9844
9845 2009-10-30  Doug Kwan  <dougkwan@google.com>
9846
9847         * arm.cc (Arm_relobj::processor_specific_flags): New method
9848         definition.
9849         (Arm_relobj::do_read_symbols): New method declaration.
9850         (Arm_relobj::processor_specific_flags_): New data member declaration.
9851         (Arm_dynobj): New class definition.
9852         (Target_arm::do_finalize_sections): Add input_objects parameter.
9853         (Target_arm::do_adjust_elf_header): New method declaration.
9854         (Target_arm::are_eabi_versions_compatible,
9855         (Target_arm::merge_processor_specific_flags): New method declaration.
9856         (Target_arm::do_make_elf_object): New overloaded method definitions
9857         and declaration.
9858         (Arm_relobj::do_read_symbols): New method definition.
9859         (Arm_dynobj::do_read_symbols): Ditto.
9860         (Target_arm::do_finalize_sections): Add input_objects parameters.
9861         Merge processor-specific flags from all input objects.
9862         (Target_arm::are_eabi_versions_compatible,
9863         Target_arm::merge_processor_specific_flags,
9864         Target_arm::do_adjust_elf_header, Target_arm::do_make_elf_object):
9865         New method definitions.
9866         * i386.cc (Target_i386::do_finalize_sections): Add unnamed
9867         Input_objects pointer type parameter.
9868         * layout.cc (Layout::finalize): Pass input objects to target's.
9869         finalize_sections function.
9870         * output.cc (Output_file_header::do_sized_write): Set ELF file
9871         header's processor-specific flags.
9872         * powerpc.cc (Target_powerpc::do_finalize_sections): Add unnamed
9873         Input_objects pointer type parameter.
9874         * sparc.cc (Target_sparc::do_finalize_sections): Same.
9875         * target.h (Input_objects): New forward class declaration.
9876         (Target::processor_specific_flags,
9877         Target::are_processor_specific_flags_sect): New method definitions.
9878         (Target::finalize_sections): Add input_objects parameter.
9879         (Target::Target): Initialize processor_specific_flags_ and
9880         are_processor_specific_flags_set_.
9881         (Target::do_finalize_sections): Add unnamed Input_objects pointer type
9882         parameter.
9883         (Target::set_processor_specific_flags): New method definition.
9884         (Target::processor_specific_flags_,
9885         Target::are_processor_specific_flags_set_): New data member
9886         declarations.
9887         * x86_64.cc (Target_x86_64::do_finalize_sections): Add unnamed
9888         Input_objects pointer type parameter.
9889
9890 2009-10-30  Doug Kwan  <dougkwan@google.com>
9891
9892         * arm.cc: Use Arm_address instead of elfcpp::Elf_types<32>::Elf_Addr.
9893
9894 2009-10-28  Ian Lance Taylor  <iant@google.com>
9895
9896         * object.h (class Relobj): Drop options parameter from
9897         gc_process_relocs, scan_relocs, relocate, do_gc_process_relocs,
9898         do_scan_relocs, do_relocate.  Change all callers.
9899         (class Sized_relobj): Drop options parameters from
9900         do_gc_process_relocs, do_scan_relocs, do_relocate,
9901         do_relocate_sections, relocate_sections, emit_relocs_scan,
9902         emit_relocs_scan_reltype.  Change all callers.
9903         (struct Relocate_info): Remove options field and all references to
9904         it.
9905         * reloc.h (class Read_relocs): Remove options constructor
9906         parameter and options_ field.  Change all callers.
9907         (class Gc_process_relocs, class Scan_relocs): Likewise.
9908         (class Relocate_task): Likewise.
9909         * target-reloc.h (scan_relocs): Remove options parameter.  Change
9910         all callers.
9911         (scan_relocatable_relocs): Likewise.
9912         * target.h (class Sized_target): Remove options parameter from
9913         gc_process_relocs, scan_relocs, scan_relocatable_relocs.  Change
9914         all callers.
9915         * gc.h (gc_process_relocs): Remove options parameter.  Change all
9916         callers.
9917         * arm.cc: Update functions to remove options parameters.
9918         * i386.cc: Likewise.
9919         * powerpc.cc: Likewise.
9920         * sparc.cc: Likewise.
9921         * x86_64.cc: Likewise.
9922         * testsuite/testfile.cc: Likewise.
9923
9924 2009-10-28  Doug Kwan  <dougkwan@google.com>
9925
9926         * arm.cc (Arm_relobj): New class definition.
9927         (Arm_relobj::scan_sections_for_stubs,
9928         Arm_relobj::do_count_local_symbols, Arm_relobj::do_relocate_sections):
9929         New method definitions.
9930
9931 2009-10-28  Cary Coutant  <ccoutant@google.com>
9932
9933         * plugin.h (Plugin::Plugin): Initialize cleanup_done_.
9934         (Plugin::cleanup_done_): New member.
9935         (Plugin_manager::Plugin_manager): Remove cleanup_done_.
9936         (Plugin_manager::cleanup_done_): Remove.
9937         (Plugin_manager::add_input_file): Edit error message.
9938         * plugin.cc (Plugin::cleanup): Test and set cleanup_done_.
9939         (Plugin_manager::cleanup): Remove use of cleanup_done_.
9940
9941 2009-10-27  Mikolaj Zalewski  <mikolajz@google.com>
9942
9943         * fileread.cc: (File_read::View::~View): Use the new
9944         data_ownership_ filed.
9945         (File_read::~File_read): Dispose the new whole_file_view_.
9946         (File_read::open): Mmap the whole file if needed.
9947         (File_read::open): Use whole_file_view_ instead of contents_.
9948         (File_read::find_view): Use whole_file_view_ if applicable.
9949         (File_read::do_read): Use whole_file_view_ instead of contents_.
9950         (File_read::make_view): Use whole_file_view_ instead of contents_,
9951         update File_read::View::View call.
9952         (File_read::find_or_make_view): Update File_read::View::View
9953         call.
9954         * fileread.h: (File_read::File_read): Initialize whole_file_view_,
9955         remove contents_
9956         (File_read::View::Data_ownership): New enum.
9957         (File_read::View::View): Replace bool mapped_ with Data_ownership
9958         argument.
9959         (File_read::View::mapped_): Remove (replaced by data_ownership_).
9960         (File_read::View::data_ownership_): New field.
9961         (File_read::contents_): Remove (replaced by whole_file_view_).
9962         (File_read::whole_file_view_): New field.
9963         * options.h (class General_options): Add --keep-files-mapped.
9964
9965 2009-10-27  Cary Coutant  <ccoutant@google.com>
9966
9967         * symtab.cc (add_from_pluginobj): Pass correct value for is_ordinary.
9968         * testsuite/Makefile.am (plugin_test_5): New test case.
9969         * testsuite/Makefile.in: Regenerate.
9970
9971 2009-10-25  Doug Kwan  <dougkwan@google.com>
9972
9973         * object.h (Sized_relobj::View_size, Sized_relobj::Views): Change
9974         from private to protected to allow access by child class.
9975         (Sized_relobj::do_relocate_sections): New method declaration.
9976         (Sized_relobj::relocate_sections): Virtualize.
9977         * reloc.cc (Sized_relobj::do_relocate_sections): Rename from
9978         Sized_relobj::relocate_sections.  Instantiate template explicitly
9979         for different target sizes and endianity.
9980
9981 2009-10-24  Doug Kwan  <dougkwan@google.com>
9982
9983         * arm.cc (Arm_output_section, Arm_relobj): Forward class declarations.
9984         (Arm_input_section::as_arm_input_section): New method.
9985         (Arm_output_section): New class definition.
9986         (Arm_output_section::create_stub_group,
9987         Arm_output_section::group_sections): New method definitions.
9988
9989 2009-10-22  Doug Kwan  <dougkwan@google.com>
9990
9991         * arm.cc (Arm_input_section): New class definition.
9992         (Arm_input_section::init, Arm_input_section:do_write,
9993         Arm_input_section::set_final_data_size,
9994         Arm_input_section::do_reset_address_and_file_offset): New method
9995         definitions.
9996
9997 2009-10-21  Doug Kwan  <dougkwan@google.com>
9998
9999         * arm.cc (Stub_table, Arm_input_section): New forward class
10000         declarations.
10001         (Stub_table): New class defintion.
10002         (Stub_table::add_reloc_stub, Stub_table::relocate_stubs
10003         Stub_table::do_reset_address_and_file_offset, Stub_table::do_write):
10004         New method definition.
10005
10006 2009-10-21  Doug Kwan  <dougkwan@google.com>
10007
10008         * arm.cc: Update copyright comments.
10009         (Target_arm): New forward class template declaration.
10010         (Arm_address): New type.
10011         (ARM_MAX_FWD_BRANCH_OFFSET, ARM_MAX_BWD_BRANCH_OFFSET,
10012         THM_MAX_FWD_BRANCH_OFFSET, THM_MAX_BWD_BRANCH_OFFSET,
10013         THM2_MAX_FWD_BRANCH_OFFSET, THM2_MAX_BWD_BRANCH_OFFSET): New
10014         constants.
10015         (Insn_template): Same.
10016         (DEF_STUBS): New macro.
10017         (Stub_type): New enum type.
10018         (Stub_template): New class definition.
10019         (Stub): Same.
10020         (Reloc_stub): Same.
10021         (Stub_factory): Same.
10022         (Target_arm::Target_arm): Initialize may_use_blx_ and
10023         should_force_pic_veneer_.
10024         (Target_arm::may_use_blx, Target_arm::set_may_use_blx,
10025         Target_arm::should_force_pic_veneer,
10026         Target_arm::set_should_force_pic_veneer, Target_arm::using_thumb2,
10027         Target_arm::using_thumb_only, Target_arm:;default_target): New
10028         method defintions.
10029         (Target_arm::may_use_blx_, Target_arm::should_force_pic_veneer_):
10030         New data member declarations.
10031         (Insn_template::size, Insn_template::alignment): New method defintions.
10032         (Stub_template::Stub_template): New method definition.
10033         (Reloc_stub::Key::name, Reloc_stub::stub_type_for_reloc,
10034         Reloc_stub::do_fixed_endian_write, Reloc_stub::do_write): Same.
10035         (Stub_factory::Stub_factory): New method definition.
10036         * gold.h (string_hash): New template.
10037         * output.h (Input_section_specifier::hash_value): Use
10038         gold::string_hash.
10039         (Input_section_specifier::string_hash): Remove.
10040         * stringpool.cc (Stringpool_template::string_hash): Use
10041         gold::string_hash.
10042
10043 2009-10-20  Doug Kwan  <dougkwan@google.com>
10044
10045         * object.cc (Sized_relobj::do_finalize_local_symbols): Handle section
10046         symbols of relaxed input sections.
10047         * output.h (Output_section::find_relaxed_input_section): Make
10048         method public.
10049
10050 2009-10-16  Doug Kwan  <dougkwan@google.com>
10051
10052         * dynobj.cc (Versions::Versions): Initialize version_script_.
10053         Only insert base version symbol definition for a shared object
10054         if version script defines any version versions.
10055         (Versions::define_base_version): New method definition.
10056         (Versions::add_def): Check that base version is not needed.
10057         (Versions::add_need): Define base version lazily.
10058         * dynobj.h (Versions::define_base_version): New method declaration.
10059         (Versions::needs_base_version_): New data member declaration.
10060         * testsuite/Makefile.am (check_SCRIPTS): Add no_version_test.sh
10061         (check_DATA): Add no_version_test.stdout.
10062         (libno_version_test.so, no_version_test.o no_version_test.stdout):
10063         New make rules.
10064         * testsuite/Makefile.in: Regenerate.
10065         * testsuite/no_version_test.c: New file.
10066         * testsuite/no_version_test.sh: Ditto.
10067
10068 2009-10-16  Doug Kwan  <dougkwan@google.com>
10069
10070         * expression.cc (class Segment_start_expression): New class definition.
10071         (Segment_start_expression::value): New method definition.
10072         (script_exp_function_segment_start): Return a new
10073         Segment_start_expression.
10074         * gold/script-c.h (script_saw_segment_start_expression): New function
10075         prototype.
10076         * script-sections.cc (Script_sections::Script_sections): Initialize
10077         SAW_SEGMENT_START_EXPRESSION_ to false.
10078         (Script_sections::set_section_addresses): Use -Ttext, -Tdata
10079         and -Tbbs options to specify section addresses if given in
10080         command line and no SEGMENT_START expression is seen in a script.
10081         * script-sections.h (Script_sections::saw_segment_start_expression,
10082         Script_sections::set_saw_segment_start_expression): New method
10083         definition.
10084         (Script_sections::saw_segment_start_expression_): New data member
10085         declaration.
10086         * script.cc (script_saw_segment_start_expression): New function.
10087         * yyscript.y (SEGMENT_START): Call script_saw_segment_start_expression.
10088         * testsuite/Makefile.am (check_SCRIPTS): Add script_test_6.sh,
10089         script_test_7.sh and script_test_8.sh.
10090         (check_DATA): Add script_test_6.stdout, script_test_7.stdout and
10091         script_test_8.stdout.
10092         (MOSTLYCLEANFILES): Add script_test_6, script_test_7 and script_test_8.
10093         (script_test_6, script_test_6.stdout, script_test_7,
10094         script_test_7.stdout, script_test_8, script_test_8.stdout): New rules.
10095         * Makefile.in: Regenerate.
10096         * testsuite/script_test_6.sh: New file.
10097         * testsuite/script_test_6.t: Same.
10098         * testsuite/script_test_7.sh: Same.
10099         * testsuite/script_test_7.t: Same.
10100         * testsuite/script_test_8.sh: Same.
10101
10102 2009-10-16  Doug Kwan  <dougkwan@google.com>
10103
10104         * output.cc (Output_segment::set_section_list_address): Cast
10105         expressions to unsigned long long type to avoid format warnings.
10106
10107 2009-10-15  Ian Lance Taylor  <iant@google.com>
10108
10109         * script.cc (Script_options::add_symbol_assignment): Always add a
10110         dot assignment to script_sections_.
10111         * script-sections.cc (Script_sections::add_dot_assignment):
10112         Initialize if necessary.
10113
10114         * layout.cc (Layout::relaxation_loop_body): Don't crash if we see
10115         program headers with no load segment if there is a linker script.
10116
10117         * layout.cc (Layout::set_segment_offsets): Align the file offset
10118         to the segment aligment for -N or -n with no load segment.
10119         * output.cc (Output_segment::add_output_section): Don't crash if
10120         the first section is a TLS section.
10121         (Output_segment::set_section_list_addresses): Print an error
10122         message if the address moves backward in a linker script.
10123         * script-sections.cc
10124         (Output_section_element_input::set_section_addresses): Don't
10125         increase *dot_value for a SHF_TLS/SHT_NOBITS section.
10126         (Orphan_output_section::set_section_addresses): Likewise.
10127
10128 2009-10-15  Doug Kwan  <dougkwan@google.com>
10129
10130         * layout.cc (Layout::finish_dynamic_section): Generate tags
10131         DT_FINI_ARRAY, DT_FINI_ARRAYSZ, DT_INIT_ARRAY, DT_INIT_ARRAYSZ,
10132         DT_PREINIT_ARRAY, DT_PREINIT_ARRAYSZ as needed. If -Bsymbolic is
10133         used, add DT_SYMBOLIC and set DF_SYMBOLIC in DT_FLAGS.
10134
10135 2009-10-14  Ian Lance Taylor  <iant@google.com>
10136
10137         * object.h (class Relocate_info): Add reloc_shdr and data_shdr
10138         fields.
10139         * object.cc (Sized_relobj::relocate_sections): Set reloc_shdr and
10140         data_shdr fields of relinfo.
10141         * i386.cc (class Target_i386::Relocate): Remove ldo_addrs_ field.
10142         (Target_i386::Relocate::relocate_tls): Don't call fix_up_ldo.  For
10143         R_386_TLS_LDO_32, adjust based on section flags.
10144         (Target_i386::Relocate::fix_up_ldo): Remove.
10145
10146 2009-10-13  Ian Lance Taylor  <iant@google.com>
10147
10148         Add support for -pie.
10149         * options.h (class General_options): Add -pie and
10150         --pic-executable.
10151         (General_options::output_is_position_independent): Test -pie.
10152         (General_options::output_is_executable): Return true if not shared
10153         and not relocatable.
10154         (General_options::output_is_pie): Remove.
10155         * options.cc (General_options::finalize): Reject incompatible uses
10156         of -pie.
10157         * gold.cc (queue_middle_tasks): A -pie link is not static.
10158         * symtab.h (Symbol::needs_plt_entry): Return false if -pie.
10159         * symtab.cc (Symbol::final_value_is_known): Return false if
10160         output_is_position_independent.
10161         * layout.cc (Layout::set_segment_offsets): Start at address 0 if
10162         output_is_position_independent.
10163         * output.cc (Output_file_header::do_sized_write): Use ET_DYN if
10164         output_is_position_independent.
10165         * i386.cc (Output_data_plt_i386::do_write): Use the PIC PLT if
10166         output_is_position_independent.
10167         * testsuite/Makefile.am (check_PROGRAMS): Add basic_pie_test and
10168         two_file_pie_test.
10169         (basic_pie_test.o, basic_pie_test): New targets.
10170         (two_file_test_1_pie.o, two_file_test_1b_pie.o): New targets.
10171         (two_file_test_2_pie.o, two_file_test_main_pie.o): New targets.
10172         (two_file_pie_test): New target.
10173         * testsuite/Makefile.in: Rebuild.
10174         * README: Remove note saying that -pie is not supported.
10175
10176 2009-10-13  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
10177
10178         * options.h (class General_options): Add -init and -fini.
10179         * layout.cc (Layout::finish_dynamic_section): Emit
10180         given init and fini functions.
10181
10182 2009-10-13  Sriraman Tallam  <tmsriram@google.com>
10183
10184         * gc.h (gc_process_relocs): Check if icf is enabled using new
10185         function.
10186         * gold.cc (queue_initial_tasks): Likewise.
10187         (queue_middle_tasks): Likewise.
10188         * object.cc (do_layout): Likewise.
10189         * symtab.cc (is_section_folded): Likewise.
10190         * main.cc (main): Likewise.
10191         * reloc.cc (Read_relocs::run): Likewise.
10192         (Sized_relobj::do_scan_relocs): Likewise.
10193         * icf.cc (is_function_ctor_or_dtor): New function.
10194         (Icf::find_identical_sections): Check if function is ctor or dtor when
10195         safe icf is chosen.
10196         * options.h (General_options::icf): Change option to be an enum.
10197         (Icf_status): New enum.
10198         (icf_enabled): New method.
10199         (icf_safe_folding): New method.
10200         (set_icf_status): New method.
10201         (icf_status_): New variable.
10202         * (options.cc) (General_options::finalize): Set icf_status_.
10203         * testsuite/Makefile.am: Add commands to build icf_safe_test. Modify
10204         icf_test and icf_keep_unique_test to use the --icf enum flag.
10205         * testsuite/icf_safe_test.sh: New file.
10206         * testsuite/icf_safe_test.cc: New file.
10207
10208 2009-10-12  Sriraman Tallam  <tmsriram@google.com>
10209
10210         * symtab.h: Check for GOLD_SYMTAB_H before header includes. Remove
10211         includes to gc.h and icf.h.
10212         * arm.cc: Include gc.h.
10213         * gold.cc: Likewise.
10214         * i386.cc: Likewise.
10215         * powerpc.cc: Likewise.
10216         * sparc.cc: Likewise.
10217         * x86_64.cc: Likewise.
10218         * gc.h: Include icf.h.
10219
10220 2009-10-11  Ian Lance Taylor  <iant@google.com>
10221
10222         * plugin.cc: Include "gold.h" before other header files.
10223
10224 2009-10-10  Chris Demetriou  <cgd@google.com>
10225
10226         * options.h (Input_file_argument::Input_file_type): New enum.
10227         (Input_file_argument::is_lib_): Replace with...
10228         (Input_file_argument::type_): New member.
10229         (Input_file_argument::Input_file_argument): Take Input_file_type
10230         'type' rather than boolean 'is_lib' as second argument.
10231         (Input_file_argument::is_lib): Use type_.
10232         (Input_file_argument::is_searched_file): New function.
10233         (Input_file_argument::may_need_search): Handle is_searched_file.
10234         * options.cc (General_options::parse_library): Support -l:filename.
10235         (General_options::parse_just_symbols): Update for Input_file_argument
10236         changes.
10237         (Command_line::process): Likewise.
10238         * archive.cc (Archive::get_file_and_offset): Likewise.
10239         * plugin.cc (Plugin_manager::release_input_file): Likewise.
10240         * script.cc (read_script_file, script_add_file): Likewise.
10241         * fileread.cc (Input_file::Input_file): Likewise.
10242         (Input_file::will_search_for): Handle is_searched_file.
10243         (Input_file::open): Likewise.
10244         * readsyms.cc (Read_symbols::get_name): Likewise.
10245         * testsuite/Makefile.am (searched_file_test): New test.
10246         * testsuite/Makefile.in: Regenerate.
10247         * testsuite/searched_file_test.cc: New file.
10248         * testsuite/searched_file_test_lib.cc: New file.
10249
10250 2009-10-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10251             Ian Lance Taylor  <iant@google.com>
10252
10253         * descriptor.cc: Include <cstdio> and "binary-io.h".
10254         (Descriptors::open): Open the files in binary mode always.
10255         * script.cc (Lex::get_token): Treat \r as whitespace.
10256
10257 2009-10-09  Ian Lance Taylor  <iant@google.com>
10258
10259         * testsuite/retain_symbols_file_test.sh: Don't test for __tcf_0.
10260
10261 2009-10-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10262             Ian Lance Taylor  <iant@google.com>
10263
10264         * configure.ac: Check for readv function also.
10265         * fileread.cc (readv): Define if not HAVE_READV.
10266         * fileread.h (File_read:: max_readv_entries): Set to 1 if readv
10267         does not exist.
10268         * config.in: Regenerate.
10269         * configure: Regenerate.
10270
10271 2009-10-09  Doug Kwan  <dougkwan@google.com>
10272
10273         * layout.cc (Layout::make_output_section): Call target hook to make
10274         ordinary output section.
10275         (Layout::finalize): Adjust parameter list of call the
10276         Target::may_relax().
10277         * layout.h (class Layout::section_list): New method.
10278         * merge.h (Output_merge_base::entsize): Change visibility to public.
10279         (Output_merge_base::is_string, Output_merge_base::do_is_string):
10280         New methods.
10281         (Output_merge_string::do_is_string): New method.
10282         * object.cc (Sized_relobj::do_setup): renamed from
10283         Sized_relobj::set_up.
10284         * object.h (Sized_relobj::adjust_shndx,
10285         Sized_relobj::initializ_input_to_output_maps,
10286         Sized_relobj::free_input_to_output_maps): Change visibilities to
10287         protected.
10288         (Sized_relobj::setup): Virtualize.
10289         (Sized_relobj::do_setup): New method declaration.
10290         (Sized_relobj::invalidate_section_offset,
10291         Sized_relobj::do_invalidate_section_offset): New method decfinitions.
10292         (Sized_relobj::elf_file, Sized_relobj::local_values): New methods.
10293         * options.cc (parse_int): New function.
10294         * options.h (parse_int): New declaration.
10295         (DEFINE_int): New macro.
10296         (stub_group_size): New option.
10297         * output.cc (Output_section::Output_section): Initialize memebers
10298         merge_section_map_, merge_section_by_properties_map_,
10299         relaxed_input_section_map_, is_relaxed_input_section_map_valid_.
10300         (Output_section::add_input_section): Handled deferred code-fill
10301         generation and remove an old comment.
10302         (Output_section::add_relaxed_input_section): New method definition.
10303         (Output_section::add_merge_input_section): Use merge section by
10304         properties map to speed to search.  Update merge section maps
10305         as appropriate.
10306         (Output_section::build_relaxation_map): New method definition.
10307         (Output_section::convert_input_sections_in_list_to_relaxed_sections):
10308         Same.
10309         (Output_section::relax_input_section): Renamed to
10310         Output_section::convert_input_sections_to_relaxed_sections and change
10311         interface to take a vector of pointers to relaxed sections.
10312         (Output_section::find_merge_section,
10313         Output_section::find_relaxed_input_section): New method definitions.
10314         (Output_section::is_input_address_mapped,
10315         Output_section::output_offset, Output_section::output_address):
10316         Use output section data maps to speed up searching.
10317         (Output_section::find_starting_output_address): Add comments.
10318         (Output_section::do_write,
10319         Output_section::write_to_postprocessing_buffer): Do code-fill
10320         generation as appropriate.
10321         (Output_section::get_input_sections): Invalidate relaxed input section
10322         map.
10323         (Output_section::restore_states): Adjust type of checkpoint .
10324         Invalidate relaxed input section map.
10325         * output.h (Output_merge_base): New class declaration.
10326         (Input_section_specifier): New class defintion.
10327         (class Output_relaxed_input_section) Change base class to
10328         Output_section_data_build.
10329         (Output_relaxed_input_section::Output_relaxed_input_section): Adjust
10330         base class initializer.
10331         (Output_section::add_relaxed_input_section): New method declaration.
10332         (Output_section::Input_section): Change visibility to protected.
10333         (Output_section::Input_section::relobj,
10334         Output_section::Input_section::shndx): Handle relaxed input sections.
10335         Output_section::input_sections) Change visibility to protected.  Also
10336         define overload to return a non-const pointer.
10337         (Output_section::Merge_section_properties): New class defintion.
10338         (Output_section::Merge_section_by_properties_map,
10339         Output_section::Output_section_data_by_input_section_map,
10340         Output_section::Relaxation_map): New types.
10341         (Output_section::relax_input_section): Rename method to
10342         Output_section::convert_input_sections_to_relaxed_sections and change
10343         interface to take a vector of relaxed section pointers.
10344         (Output_section::find_merge_section,
10345         Output_section::find_relaxed_input_section,
10346         Output_section::build_relaxation_map,
10347         Output_section::convert_input_sections_in_list_to_relaxed_sections):
10348         New method declarations.
10349         (Output_section::merge_section_map_
10350         Output_section::merge_section_by_properties_map_,
10351         Output_section::relaxed_input_section_map_,
10352         Output_section::is_relaxed_input_section_map_valid_,
10353         Output_section::generate_code_fills_at_write_): New data members.
10354         * script-sections.cc
10355         (Output_section_element_input::set_section_addresses): Call
10356         current_data_size and addralign methods of relaxed input sections.
10357         (Orphan_output_section::set_section_addresses): Call current_data_size
10358         and addralign methods of relaxed input sections.
10359         * symtab.cc (Symbol_table::compute_final_value): Extract template
10360         from the body of Symbol_table::sized_finalize_symbol.
10361         (Symbol_table::sized_finalized_symbol): Call
10362         Symbol_table::compute_final_value.
10363         * symtab.h (Symbol_table::Compute_final_value_status): New enum type.
10364         (Symbol_table::compute_final_value): New templated method declaration.
10365         * target.cc (Target::do_make_output_section): New method defintion.
10366         * target.h (Target::make_output_section): New method declaration.
10367         (Target::relax): Add more parameters for input objects, symbol table
10368         and layout.  Adjust call to do_relax.
10369         (Target::do_make_output_section): New method declaration.
10370         (Target::do_relax): Add parameters for input objects, symbol table
10371         and layout.
10372
10373 2009-10-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10374
10375         * pread.c: Include stdio.h.
10376
10377 2009-10-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10378
10379         * plugin.cc: Don't include dlfcn.h when ENABLE_PLUGINS is not
10380         defined.
10381
10382 2009-10-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10383
10384         * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
10385         Change read_shndx type to unsigned int.
10386         (Sized_dwarf_line_info::read_lines): Change shndx type to unsigned
10387         int.
10388         (Sized_dwarf_line_info::read_line_mappings): Likewise.
10389         * dwarf_reader.h (Sized_dwarf_line_info::Sized_dwarf_line_info):
10390         Change read_shndx type to unsigned int.
10391         (Sized_dwarf_line_info::read_lines): Change shndx type to unsigned
10392         int.
10393         (Sized_dwarf_line_info::read_line_mappings): Likewise.
10394         * layout.cc (Layout::create_symtab_sections): Cast the result of
10395         local_symcount * symsize to off_t in the gold_assert.
10396
10397 2009-10-09  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
10398
10399         * arm.cc (Target_arm::relocate::reloc_is_non_pic): Return true for
10400         R_ARM_THM_ABS5, R_ARM_ABS8, R_ARM_ABS12, R_ARM_ABS16,
10401         R_ARM_BASE_ABS.
10402         (Arm_relocate_functions::abs8): Remove has_thumb_bit parameter.
10403         (Arm_relocate_functions::thm_abs5): New function.
10404         (Arm_relocate_functions::abs12): New function.
10405         (Arm_relocate_functions::abs16): New function.
10406         (Arm_relocate_functions::base_abs): New function.
10407         (Scan::check_non_pic): Handle R_ARM_ABS32_NOI.
10408         (Scan::local): Remove special handling of R_ARM_ABS8.  Handle
10409         R_ARM_ABS32_NOI, R_ARM_THM_ABS5, R_ARM_ABS12, R_ARM_ABS16, and
10410         R_ARM_BASE_ABS.
10411         (Scan::global): Likewise.
10412         (Relocate::relocate): Handle R_ARM_ABS12, R_ARM_ABS16,
10413         R_ARM_ABS32_NOI, R_ARM_THM_ABS5, and R_ARM_BASE_ABS.
10414         (Relocatable_size_for_reloc::get_size_for_reloc): Handle
10415         R_ARM_ABS16, R_ARM_THM_ABS5, R_ARM_ABS32_NOI, R_ARM_ABS12, and
10416         R_ARM_BASE_ABS.
10417
10418 2009-10-09  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
10419
10420         * arm.cc (Arm_relocate_functions::movw_prel_nc): New function.
10421         (Arm_relocate_functions::movt_prel): New function.
10422         (Arm_relocate_functions::thm_movw_prel_nc): New function.
10423         (Arm_relocate_functions::thm_movt_prel): New function.
10424         (Scan::local): Handle R_ARM_MOVW_PREL_NC, R_ARM_MOVT_PREL,
10425         R_ARM_THM_MOVW_PREL_NC, and R_ARM_THM_MOVT_PREL.
10426         (Scan::global, Relocate::relocate): Likewise.
10427         (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
10428
10429 2009-10-09  Mikolaj Zalewski  <mikolajz@google.com>
10430
10431         * gold.cc: (queue_initial_tasks): Pass incremental_inputs to
10432         Incremental_checker.
10433         * incremental.cc: (INCREMENTAL_LINK_VERSION): Change type to
10434         unsigned int.
10435         (class Incremental_inputs_header): New class.
10436         (Incremental_inputs_header_writer): Edit comment.
10437         (Incremental_inputs_entry): New class.
10438         (Incremental_inputs_entry_writer): Edit comment.
10439         (Sized_incremental_binary::do_find_incremental_inputs_section):
10440         Add *strtab_shndx parameter, fill it.
10441         (Sized_incremental_binary::do_check_inputs): New method.
10442         (Incremental_checker::can_incrementally_link_output_file): Use
10443         Sized_incremental_binary::check_inputs.
10444         (Incremental_inputs::report_command_line): Save command line in
10445         command_line_.
10446         * incremental.h:
10447         (Incremental_binary::find_incremental_inputs_section): New
10448         method.
10449         (Incremental_binary::do_find_incremental_inputs_section): Add
10450         strtab_shndx parameter.
10451         (Incremental_binary::do_check_inputs): New pure virtual method.
10452         (Sized_incremental_binary::do_check_inputs): Declare.
10453         (Incremental_checker::Incremental_checker): Add incremental_inputs
10454         parameter, use it to initialize incremental_inputs_.
10455         (Incremental_checker::incremental_inputs_): New field.
10456         (Incremental_checker::command_line): New method.
10457         (Incremental_checker::inputs): New method.
10458         (Incremental_checker::command_line_): New field.
10459
10460 2009-10-09  Mikolaj Zalewski  <mikolajz@google.com>
10461
10462         * incremental.cc: Include <cstdarg> and "target-select.h".
10463         (vexplain_no_incremental): New function.
10464         (explain_no_incremental): New function.
10465         (Incremental_binary::error): New method.
10466         (Sized_incremental_binary::do_find_incremental_inputs_section): New
10467         method.
10468         (make_sized_incremental_binary): New function.
10469         (open_incremental_binary): New function.
10470         (can_incrementally_link_file): Add checks if output is ELF and has
10471         inputs section.
10472         * incremental.h: Include "elfcpp_file.h" and "output.h".
10473         (Incremental_binary): New class.
10474         (Sized_incremental_binary): New class.
10475         (open_incremental_binary): Declare.
10476         * object.cc (is_elf_object): Use
10477         elfcpp::Elf_recognizer::is_elf_file.
10478         (make_elf_object): Use elfcpp::Elf_recognizer::is_valid_header.
10479         * output.h (Output_file::filesize): New method.
10480
10481 2009-10-07  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
10482
10483         * arm.cc (Arm_relocate_functions::extract_arm_movw_movt_addend):
10484         New function.
10485         (Arm_relocate_functions::insert_val_arm_movw_movt): New function.
10486         (Arm_relocate_functions::extract_thumb_movw_movt_addend): New
10487         function.
10488         (Arm_relocate_functions::insert_val_thumb_movw_movt): New
10489         function.
10490         (Arm_relocate_functions::movw_abs_nc): New function.
10491         (Arm_relocate_functions::movt_abs): New function.
10492         (Arm_relocate_functions::thm_movw_abs_nc): New function.
10493         (Arm_relocate_functions::thm_movt_abs): New function.
10494         (Scan::local): Handle R_ARM_MOVW_ABS_NC, R_ARM_MOVT_ABS,
10495         R_ARM_THM_MOVW_ABS_NC, R_ARM_THM_MOVT_ABS.
10496         (Scan::global): Likewise.
10497         (Relocate::relocate): Likewise.
10498         (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
10499
10500 2009-10-07  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
10501
10502         * arm.cc (Arm_relocate_functions::got_prel) New function.
10503         (Scan::local, Scan::global): Handle R_ARM_GOT_PREL.
10504         (Relocate::relocate): Likewise.
10505         (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
10506
10507 2009-10-06  Ian Lance Taylor  <iant@google.com>
10508
10509         * options.h (class General_options): Define
10510         split_stack_adjust_size parameter.
10511         * object.h (class Object): Add uses_split_stack_ and
10512         has_no_split_stack_ fields.  Add uses_split_stack and
10513         has_no_split_stack accessor functions.  Declare
10514         handle_split_stack_section.
10515         (class Reloc_symbol_changes): Define.
10516         (class Sized_relobj): Define Function_offsets.  Declare
10517         split_stack_adjust, split_stack_adjust_reltype, and
10518         find_functions.
10519         * object.cc (Object::handle_split_stack_section): New function.
10520         (Sized_relobj::do_layout): Call handle_split_stack_section.
10521         * dynobj.cc (Sized_dynobj::do_layout): Call
10522         handle_split_stack_section.
10523         * reloc.cc (Sized_relobj::relocate_sections): Call
10524         split_stack_adjust for executable sections in split_stack
10525         objects.  Pass reloc_map to relocate_section.
10526         (Sized_relobj::split_stack_adjust): New function.
10527         (Sized_relobj::split_stack_adjust_reltype): New function.
10528         (Sized_relobj::find_functions): New function.
10529         * target-reloc.h: Include "object.h".
10530         (relocate_section): Add reloc_symbol_changes parameter.  Change
10531         all callers.
10532         * target.h (class Target): Add calls_non_split method.  Declare
10533         do_calls_non_split virtual method.  Declare match_view and
10534         set_view_to_nop.
10535         * target.cc: Include "elfcpp.h".
10536         (Target::do_calls_non_split): New function.
10537         (Target::match_view): New function.
10538         (Target::set_view_to_nop): New function.
10539         * gold.cc (queue_middle_tasks): Give an error if mixing
10540         split-stack and non-split-stack objects with -r.
10541         * i386.cc (Target_i386::relocate_section): Add
10542         reloc_symbol_changes parameter.
10543         (Target_i386::do_calls_non_split): New function.
10544         * x86_64.cc (Target_x86_64::relocate_section): Add
10545         reloc_symbol_changes parameter.
10546         (Target_x86_64::do_calls_non_split): New function.
10547         * arm.cc (Target_arm::relocate_section): Add reloc_symbol_changes
10548         parameter.
10549         * powerpc.cc (Target_powerpc::relocate_section): Add
10550         reloc_symbol_changes parameter.
10551         * sparc.cc (Target_sparc::relocate_section): Add
10552         reloc_symbol_changes parameter.
10553         * configure.ac: Call AM_CONDITIONAL for the default target.
10554         * configure: Rebuild.
10555         * testsuite/Makefile.am (TEST_AS): New variable.
10556         (check_SCRIPTS): Add split_i386.sh and split_x86_64.sh.
10557         (check_DATA): Add split_i386 and split_x86_64 files.
10558         (SPLIT_DEFSYMS): Define.
10559         (split_i386_[1234n].o): New targets.
10560         (split_i386_[124]): New targets.
10561         (split_i386_[1234r].stdout): New targets.
10562         (split_x86_64_[1234n].o): New targets.
10563         (split_x86_64_[124]): New targets.
10564         (split_x86_64_[1234r].stdout): New targets.
10565         (MOSTLYCLEANFILES): Add new executables.
10566         * testsuite/split_i386.sh: New file.
10567         * testsuite/split_x86_64.sh: New file.
10568         * testsuite/split_i386_1.s: New file.
10569         * testsuite/split_i386_2.s: New file.
10570         * testsuite/split_i386_3.s: New file.
10571         * testsuite/split_i386_4.s: New file.
10572         * testsuite/split_i386_n.s: New file.
10573         * testsuite/split_x86_64_1.s: New file.
10574         * testsuite/split_x86_64_2.s: New file.
10575         * testsuite/split_x86_64_3.s: New file.
10576         * testsuite/split_x86_64_4.s: New file.
10577         * testsuite/split_x86_64_n.s: New file.
10578         * testsuite/testfile.cc (Target_test): Update relocation_section
10579         function.
10580         * testsuite/Makefile.in: Rebuild.
10581
10582 2009-10-06  Ian Lance Taylor  <iant@google.com>
10583
10584         * i386.cc (class Target_i386::Relocate): Add ldo_addrs_ field.
10585         (Target_i386::Relocate::relocate_tls): Call fix_up_ldo before
10586         changing local_dynamic_type_ from LOCAL_DYNAMIC_NONE.  When
10587         handling R_386_TLS_LDO_32, if local_dynamic_type_ is NONE, push
10588         the address on ldo_addrs_.
10589         (Target_i386::Relocate::fix_up_ldo): New function.
10590
10591 2009-10-06   Rafael Espindola  <espindola@google.com>
10592
10593         * plugin.cc (add_input_library): New.
10594         (Plugin::load): Add add_input_library to tv.
10595         (Plugin_manager::add_input_file): Add the is_lib argument.
10596         (add_input_file): Update call to Plugin_manager::add_input_file.
10597         (add_input_library): New.
10598         * plugin.h (Plugin_manager::add_input_file): Add the is_lib argument.
10599
10600 2009-09-30  Doug Kwan  <dougkwan@google.com>
10601
10602         * arm.cc (Target_arm::may_need_copy_reloc): Check for THUMB function
10603         symbol and call Symbol::may_need_copy_reloc to determine if
10604         a copy reloc is needed.
10605         * copy-relocs.cc (Copy_relocs::need_copy_reloc): Return false if -z
10606         nocopyreloc is given in command line.
10607         (Copy_relocs::emit_copy_reloc): Assert that -z nocopyreloc is not
10608         given in command line.
10609         * i386.cc (Target_i386::may_need_copy_reloc): Remove.
10610         (Target_i386::Scan::global): Use Symbol::may_need_copy_reloc instead
10611         of the removed Target_i386::may_need_copy_reloc.
10612         * options.h (copyreloc): New option with default value false.
10613         * powerpc.cc (Target_powerpc::may_need_copy_reloc): Remove.
10614         (Target_powerpc::Scan::global): Use Symbol::may_need_copy_reloc
10615         instead of the removed Target_powerpc::may_need_copy_reloc.
10616         * sparc.cc (Target_powerpc::may_need_copy_reloc): Remove.
10617         (Target_sparc::Scan::global): Use Symbol::may_need_copy_reloc
10618         instead of the removed Target_sparc::may_need_copy_reloc.
10619         * symtab.h (Symbol::may_need_copy_reloc): New method definition.
10620         * x86_64.cc (Target_powerpc::may_need_copy_reloc): Remove.
10621         (Target_x86_64::Scan::global): Use Symbol::may_need_copy_reloc
10622         instead of the removed Target_x86_64::may_need_copy_reloc.
10623
10624 2009-09-30  Ian Lance Taylor  <iant@google.com>
10625
10626         * object.h (class Object): Remove target_ field, and target,
10627         sized_target, and set_target methods.
10628         (Object::sized_target): Remove.
10629         (class Sized_relobj): Update declarations.  Remove sized_target.
10630         * object.cc (Sized_relobj::setup): Remove target parameter.
10631         Change all callers.
10632         (Input_objects::add_object): Don't do anything with the target.
10633         (make_elf_sized_object): Add punconfigured parameter.  Change all
10634         callers.  Set or test parameter target.
10635         * dynobj.cc (Sized_dynobj::target): Remove target parameter.
10636         Change all callers.
10637         * parameters.cc (Parameters::set_target): Change parameter type to
10638         be non-const.
10639         (Parameters::default_target): Remove.
10640         (set_parameters_target): Change parameter type to be non-const.
10641         (parameters_force_valid_target): New function.
10642         (parameters_clear_target): New function.
10643         * parameters.h (class Parameters): Update declarations.  Remove
10644         default_target method.  Add sized_target and clear_target
10645         methods.  Change target_ to be non-const.
10646         (set_parameters_target): Update declaration.
10647         (parameters_force_valid_target): Declare.
10648         (parameters_clear_target): Declare.
10649         * readsyms.cc (Read_symbols::do_read_symbols): Pass punconfigured
10650         as NULL if we aren't searching.
10651         (Add_symbols::run): Don't check for compatible target.
10652         * fileread.cc (Input_file::open_binary): Call
10653         parameters_force_valid_target.
10654         * gold.cc (queue_middle_tasks): Likewise.
10655         * plugin.cc (make_sized_plugin_object): Likewise.  Don't call
10656         set_target on object.
10657         * dynobj.h (class Sized_dynobj): Update declarations.
10658         * archive.cc (Archive::get_elf_object_for_member): Return NULL if
10659         make_elf_object returns NULL.
10660         (Archive::include_member): Don't check whether object target is
10661         compatible.
10662         * output.cc (Output_section::add_input_section): Get target from
10663         parameters.
10664         (Output_section::relax_input_section): Likewise.
10665         * reloc.cc (Sized_relobj::do_gc_process_relocs): Get target from
10666         parameters.
10667         (Sized_relobj::do_scan_relocs): Likewise.
10668         (Sized_relobj::relocate_sections): Likewise.
10669         * resolve.cc (Symbol_table::resolve): Likewise.
10670         * symtab.cc (Symbol_table::wrap_symbol): Likewise.  Remove object
10671         parameter.  Change all callers.
10672         (Symbol_table::add_from_object): Get target from parameters.
10673         (Symbol_table::add_from_relobj): Don't check object target.
10674         (Symbol_table::add_from_dynobj): Likewise.
10675         (Symbol_table::define_special_symbol): Get target from
10676         parameters.
10677         * symtab.h (class Symbol_table): Update declaration.
10678         * testsuite/binary_unittest.cc (gold_testsuite): Remove target
10679         parameter.  Change all callers.  Clear parameter target.
10680         (Binary_test): Test target here.
10681         * testsuite/object_unittest.cc (gold_testsuite): Remove
10682         target_test_pointer parameter.  Change all callers.
10683         (Object_test): Test target here.
10684
10685 2009-09-26  Ian Lance Taylor  <iant@google.com>
10686
10687         * testsuite/initpri1.c: Don't try to use constructor priorities if
10688         compiling with gcc before 4.3.
10689
10690 2009-09-22  Mikolaj Zalewski  <mikolajz@google.com>
10691
10692         * testsuite/retain_symbols_file_test.sh (check_present): Change
10693         output file name to retain_symbols_file_test.stdout.
10694         (check_absent): Likewise.
10695
10696 2009-09-18  Craig Silverstein  <csilvers@google.com>
10697
10698         * object.cc (Sized_relobj::do_count): Test should_retain_symbol map.
10699         * options.cc: Include <cerrno> and <fstream>.
10700         (General_options::finalize): Parse -retain-symbols-file tag.
10701         * options.h: New flag.
10702         (General_options): New method should_retain_symbol, new
10703         variable symbols_to_retain.
10704         * symtab.cc (Symbol_table::sized_finalize_symbol): Test
10705         should_retain_symbol map.
10706         * testsuite/Makefile.am (retain_symbols_file_test): New test.
10707         * testsuite/Makefile.in: Regenerate.
10708         * testsuite/retain_symbols_file_test.sh: New file.
10709
10710 2009-09-18  Nick Clifton  <nickc@redhat.com>
10711
10712         * po/es.po: Updated Spanish translation.
10713
10714 2009-09-17  Doug Kwan  <dougkwan@google.com>
10715
10716         * debug.h (DEBUG_RELAXATION): New constant.
10717         (DEBUG_ALL): Add DEBUG_RELAXATION.
10718         (debug_string_to_enum): Add relaxation debug option.
10719         * layout.cc
10720         (Layout::Relaxation_debug_check::check_output_data_for_reset_values,
10721         Layout::Relaxation_debug_check::read_sections,
10722         Layout::Relaxation_debug_check::read_sections): New method definitions.
10723         (Layout::Layout): Initialize data members
10724         record_output_section_data_from_scrips_,
10725         script_output_section_data_list_ and relaxation_debug_check_.
10726         (Layout::save_segments, Layout::restore_segments,
10727         Layout::clean_up_after_relaxation, Layout::prepare_for_relaxation,
10728         Layout::relaxation_loop_body): New method definitions.
10729         (Layout::finalize): Support relaxation.  Move section layout code to
10730         Layout::relaxation_loop_body.
10731         (Layout::set_asection_address_from_script): Move code for orphan
10732         section placement out.
10733         (Layout::place_orphan_sections_in_script): New method definition.
10734         * layout.h (Output_segment_headers, Output_file_header):
10735         New forward class declarations.
10736         (Layout::~Layout): Define.
10737         (Layout::new_output_section_data_from_script): New method definition.
10738         (Layout::place_orphan_sections_in_script): New method declaration.
10739         (Layout::Segment_states): New type declaration.
10740         (Layout::save_segments, Layout::restore_segments,
10741         Layout::clean_up_after_relaxation, Layout::prepare_for_relaxation,
10742         Layout::relaxation_loop_body): New method declarations.
10743         (Layout::Output_section_data_list): New type declaration.
10744         (Layout::Relaxation_debug_check): New class definition.
10745         (Layout::record_output_section_data_from_script_,
10746         Layout::script_output_section_data_list_, Layout::segment_states_,
10747         Layout::relaxation_debug_check_): New data members.
10748         * output.cc: (Output_section_headers::do_size): New method definition.
10749         (Output_section_headers::Output_section_headers): Move size
10750         computation to Output_section_headers::do_size.
10751         (Output_segment_headers::do_size): New method definition.
10752         (Output_file_header::Output_file_header): Move size computation to
10753         Output_file_header::do_size and call it.
10754         (Output_file_header::do_size): New method definition.
10755         (Output_data_group::Output_data_group): Adjust call to
10756         Output_section_data.
10757         (Output_data_dynamic::set_final_data_size): Add DT_NULL tag only once.
10758         (Output_symtab_xindex::do_write): Add array bound check.
10759         (Output_section::Input_section::print_to_mapfile): Handle
10760         RELAXED_INPUT_SECTION_CODE.
10761         (Output_section::Output_section): Initialize data member checkpoint_.
10762         (Output_section::~Output_section): Delete checkpoint object pointed
10763         by checkpoint_.
10764         (Output_section::add_input_section): Always add an Input_section if
10765         relaxing.
10766         (Output_section::add_merge_input_section): Add assert.
10767         (Output_section::relax_input_section): New method definition.
10768         (Output_section::set_final_data_size): Set load address to zero for
10769         an unallocated section.
10770         (Output_section::do_address_and_file_offset_have_reset_values):
10771         New method definition.
10772         (Output_section::Input_section_sort_enty::Input_section_sort_enty):
10773         Handle relaxed input section.
10774         (Output_section::sort_attached_input_sections): Checkpoint input
10775         section list lazily.
10776         (Output_section::get_input_sections): Change type of input_sections to
10777         list of Simple_input_section pointers.  Checkpoint input section list
10778         lazily.  Also handle relaxed input sections.
10779         (Output_section::add_input_section_for_script): Take a reference to
10780         a Simple_input_section object instead of Relobj pointer and section
10781         index as parameter.  Handle relaxed input sections.
10782         (Output_section::save_states, Output_section::restore_states): New
10783         method definitions.
10784         * output.h (Output_data::Output_data): Initialize is_data_size_fixed_.
10785         (Output_data::is_data_size_fixed): New method definition.
10786         (Output_data::reset_addresss_and_file_offset): Do not reset data size
10787         if it is fixed.
10788         (Output_data::address_and_file_offset_have_reset_values): New method
10789         definition.
10790         (Output_data::do_address_and_file_offset_have_reset_values): New method
10791         definition.
10792         (Output_data::set_data_size): Check that data size is not fixed.
10793         (Output_data::fix_data_size): New method definition.
10794         (Output_data::is_data_size_fixed_): New data member.
10795         (Output_section_headers::set_final_data_size): New method definition.
10796         (Output_section_headers::do_size): New method declaration.
10797         (Output_segment_headers::set_final_data_size): New method definition.
10798         (Output_segment_headers::do_size): New method declaration.
10799         (Output_file_header::set_final_data_size)::New method definition.
10800         (Output_file_header::do_size)::New method declaration.
10801         (Output_section_data::Output_section_data): Add new parameter
10802         is_data_size_fixed and use it to fix data size.
10803         (Output_data_const::Output_data_const): Adjust call to base class
10804         constructor and fix data size.
10805         (Output_data_const_buffer::Output_data_const_buffer): Adjust call to
10806         base class constructor and fix data size.
10807         (Output_data_fixed_space::Output_data_fixed_space): Adjust call to
10808         base class constructor and fix data size.
10809         (Output_data_zero_fill::Output_data_zero_fill): Adjust call to base
10810         class constructor and fix data size.
10811         (Output_data_group::set_final_data_size): New method definition.
10812         (Output_data_dynamic::Dynamic_entry::tag): New method definition.
10813         (Output_symtab_xindex::Output_symtab_xindex): Adjust call to base
10814         class constructor and fix data size.
10815         (Output_relaxed_input_section): New class definition.
10816         (Output_section::Simple_input_section): New class definition.
10817         (Output_section::get_input_sections): Adjust parameter list.
10818         (Output_section::add_input_section_for_script): Same.
10819         (Output_section::save_states, Output_section::restore_states,
10820         Output_section::do_address_and_file_offset_have_reset_values,
10821         (Output_section::Input_section::Input_section): Handle
10822         RELAXED_INPUT_SECTION_CODE.  Add new overload for
10823         Output_relaxed_input_section.
10824         (Output_section::Input_section::is_input_section,
10825         Output_section::Input_section::set_output_section): Handle relaxed
10826         input section.
10827         (Output_section::Input_section::is_relaxed_input_section,
10828         Output_section::Input_section::output_section_data,
10829         Output_section::Input_section::relaxed_input_section): New method
10830         definitions.
10831         (Output_section::Input_section::RELAXED_INPUT_SECTION_CODE): New enum
10832         value.
10833         (Output_section::Input_section::u1_): Update comments.
10834         (Output_section::Input_section::u2_): Add new union member poris.
10835         (Output_section::Checkpoint_output_section): New classs definition.
10836         (Output_section::relax_input_section): New method declaration.
10837         (Output_section::checkpoint_): New data member.
10838         (Output_segment): Update comments.
10839         (Output_segment::Output_segment): Un-privatize copy constructor.
10840         (Output_segment::operator=): Un-privatize.
10841         * script-sections.cc (Output_section_element::Input_section_list):
10842         Change element type to Output_section::Simple_input_section.
10843         (Output_section_element_dot_assignment::set_section_addresses):
10844         Register output section data for relaxation clean up.
10845         (Output_data_exression::Output_data_expression): Adjust call to base
10846         constructor to fix data size.
10847         (Output_section_element_data::set_section_addresses): Register
10848         Output_data_expression object for relaxation clean up.
10849         (struct Input_section_info): Replace Relobj pointer and section index
10850         pair with Output_section::Simple_input_section and Convert struct to a
10851         class.
10852         (Input_section_sorter::operator()): Adjust access to
10853         Input_section_info data member to use accessors.
10854         (Output_section_element_input::set_section_addresses): Use layout
10855         parameter.  Adjust code to use Output_section::Simple_input_section
10856         and Input_secction_info classes.  Register filler for relaxation
10857         clean up.
10858         (Orphan_output_section::set_section_addresses): Replace Relobj pointer
10859         and section index pair with Output_section::Simple_input_section
10860         class.  Adjust code accordingly.
10861         (Phdrs_element::release_segment): New method definition.
10862         (Script_sections::attach_sections_using_phdrs_clause): Do not modify
10863         segment list.
10864         (Script_sections::release_segments): New method definition.
10865         * gold/script-sections.h (Script_sections::release_segments): New
10866         method declaration.
10867         * gold/target.h (Target::may_relax, Target::relax,
10868         Target::do_may_relax, Target::do_relax): New method definitions.
10869
10870 2009-09-17  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
10871
10872         * arm.cc (has_signed_unsigned_overflow): New function.
10873         (Arm_relocate_functions::abs8): New function.
10874         (Target_arm::Scan::local): Handle R_ARM_ABS8.
10875         (Target_arm::Scan::global): Likewise.
10876         (Target_arm::relocate::relocate): Likewise.
10877         (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
10878         Likewise.
10879
10880 2009-09-16  Cary Coutant  <ccoutant@google.com>
10881
10882         * testsuite/Makefile.am (MOSTLYCLEANFILES): Add more generated files.
10883         * testsuite/Makefile.in: Regenerate.
10884
10885 2009-09-11  Nick Clifton  <nickc@redhat.com>
10886
10887         * po/gold.pot: Updated by the Translation project.
10888
10889 2009-09-08  Cary Coutant  <ccoutant@google.com>
10890
10891         * output.cc (Output_file::open): Add execute permission to empty file.
10892         * testsuite/Makefile.am (permission_test): New test.
10893         * testsuite/Makefile.in: Regenerate.
10894
10895 2009-09-02  Ian Lance Taylor  <iant@google.com>
10896
10897         * output.cc (Output_file::resize): Call map_no_anonymous rather
10898         than map.
10899
10900 2009-09-01  Mikolaj Zalewski  <mikolajz@google.com>
10901
10902         * gold.cc: Include "incremental.h".
10903         (queue_initial_tasks): Call Incremental_checker methods.
10904         * incremental.cc: Include "output.h".
10905         (Incremental_checker::can_incrementally_link_output_file): New
10906         method.
10907         * incremental.h (Incremental_checker): New class.
10908
10909         * output.cc (Output_file::open_for_modification): New method.
10910         (Output_file::map_anonymous): Changed return type to bool.  Record
10911         map in base_ field.
10912         (Output_file::map_no_anonymous): New method, broken out of map.
10913         (Output_file::map): Use map_no_anonymous and map_anonymous.
10914         * output.h (class Output_file): Update declarations.
10915
10916 2009-08-24  Cary Coutant  <ccoutant@google.com>
10917
10918         * options.h (Command_line::Pre_options): New class.
10919         (Command_line::pre_options): New member.
10920         * options.cc (gold::options::ready_to_register): New variable.
10921         (One_option::register_option): Do nothing if not registering options.
10922         Assert if same short option registered twice.
10923         (General_options::General_options): Turn off option registration when
10924         done constructing.
10925         (Command_line::Pre_options::Pre_options): New constructor.
10926
10927 2009-08-24  Cary Coutant  <ccoutant@google.com>
10928
10929         * options.h (General_options::no_keep_memory): Remove incorrect
10930         short option.
10931
10932 2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10933
10934         * Makefile.am (am__skiplex, am__skipyacc): New.
10935         * Makefile.in: Regenerate.
10936
10937 2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10938
10939         * Makefile.am (AM_CPPFLAGS): Renamed from ...
10940         (INCLUDES): ... this.
10941         * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add -Wno-portability.
10942         (AM_CPPFLAGS): Renamed from ...
10943         (INCLUDE): ... this.
10944         * Makefile.in, testsuite/Makefile.in: Regenerate.
10945
10946         * Makefile.in: Regenerate.
10947         * aclocal.m4: Likewise.
10948         * config.in: Likewise.
10949         * configure: Likewise.
10950         * testsuite/Makefile.in: Likewise.
10951
10952         * Makefile.am (AUTOMAKE_OPTIONS): Add foreign.
10953         * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add foreign.
10954         * Makefile.in: Regenerate.
10955         * testsuite/Makefile.in: Regenerate.
10956
10957 2009-08-19  Cary Coutant  <ccoutant@google.com>
10958
10959         * resolve.cc (Symbol_table::resolve): Don't complain about defined
10960         symbols in shared libraries overridden by hidden or internal symbols
10961         in the main program.
10962
10963 2009-08-19  Chris Demetriou  <cgd@google.com>
10964
10965         * testsuite/debug_msg.sh: Match .* rather than ${srcdir} when
10966         checking source file names in error messages.
10967
10968 2009-08-18  Doug Kwan  <dougkwan@google.com>
10969
10970         * dynobj.cc (Sized_dynobj::setup): Take a Target object instead of
10971         an elcpp::Ehdr as parameter.  Adjust call to set_target.
10972         * dynobj.h (Sized_dynobj::setup): Take a Target object instead of
10973         an elfcpp::Ehdr as parameter.
10974         * object.cc (Object::set_target): Remove the version that looks up
10975         a target and sets it.
10976         (Sized_relobj::setup): Take a Target object instead of
10977         an elfcpp::Ehdr as parameter.  Adjust call to set_target.
10978         (make_elf_sized_object): Find target and ask target to
10979         make an ELF object.
10980         * object.h: (Object::set_target): Remove the version that looks up
10981         a target and sets it.
10982         (Sized_relobj::setup): Take a Target object instead of
10983         an elfcpp:Ehdr as parameter.
10984         * target.cc: Include dynobj.h.
10985         (Target::do_make_elf_object_implementation): New.
10986         (Target::do_make_elf_object): New.
10987         * target.h (Target::make_elf_object): New template declaration.
10988         (Target::do_make_elf_object): New method declarations.
10989         (Target::do_make_elf_object_implementation): New template declaration.
10990
10991 2009-08-14  Ian Lance Taylor  <iant@google.com>
10992
10993         * gold.h (FUNCTION_NAME): Define.
10994         (gold_unreachable): Use FUNCTION_NAME.
10995
10996 2009-08-12  Sriraman Tallam  <tmsriram@google.com>
10997
10998         * icf.cc (Icf::find_identical_sections): Issue a warning when a
10999         symbol in the --keep-unique list is not found.
11000
11001 2009-08-12  Sriraman Tallam  <tmsriram@google.com>
11002
11003         * icf.cc (Icf::find_identical_sections): Unfold symbols that have
11004         been maked as --keep-unique.
11005         (Icf::unfold_section): New function.
11006         * icf.h (Icf::unfold_section): New function.
11007         * options.h (General_options::keep_unique): New option.
11008         * testsuite/Makefile.am: Add commands to build icf_keep_unique_test.
11009         * testsuite/Makefile.in: Regenerate.
11010         * testsuite/icf_keep_unique_test.sh: New file.
11011         * testsuite/icf_keep_unique_test.cc: New file.
11012
11013 2009-08-12  Cary Coutant  <ccoutant@google.com>
11014
11015         PR 10471
11016         * resolve.cc (Symbol_table::resolve): Check for references from
11017         dynamic objects to hidden and internal symbols.
11018         * testsuite/Makefile.am (hidden_test.sh): New test.
11019         * testsuite/Makefile.in: Regenerate.
11020         * testsuite/hidden_test.sh: New script.
11021         * testsuite/hidden_test_1.c: New test source.
11022         * testsuite/hidden_test_main.c: New test source.
11023
11024 2009-08-11  Doug Kwan  <dougkwan@google.com>
11025
11026         * arm.cc: Update comments.
11027         (Target_arm::do_finalize_sections): Add a special PT_ARM_EXIDX
11028         segment to locate the .ARM.exidx section if present.
11029
11030 2009-08-09  Doug Kwan  <dougkwan@google.com>
11031
11032         * dynobj.h (Sized_dynobj::do_section_entsize): Revert the previous
11033         patch.
11034
11035 2009-08-07  Sriraman Tallam  <tmsriram@google.com>
11036         * dynobj.h (Sized_dynobj::do_section_entsize): Add return to avoid
11037         compiler warnings.
11038
11039 2009-08-06  Sriraman Tallam  <tmsriram@google.com>
11040
11041         * x86_64.cc (Target_x86_64::Relocate::relocate_tls): Check for a
11042         valid tls_segment only for non-debug-section relocations.
11043         * testsuite/Makefile.am: Add gc_tls_test.
11044         * testsuite/Makefile.in: Regenerate.
11045         * testsuite/gc_tls_test.cc: New file.
11046         * testsuite/gc_tls_test.sh: New file.
11047
11048 2009-08-05  Sriraman Tallam  <tmsriram@google.com>
11049
11050         * icf.cc: New file.
11051         * icf.h: New file.
11052         * Makefile.am (CCFILES): Add icf.cc.
11053         (HFILES): Add icf.h
11054         * Makefile.in: Regenerate.
11055         * dynobj.h (Sized_dynobj::do_section_entsize): New function.
11056         * gc.h (gc_process_relocs): Populate lists used by icf to contain
11057         section, symbol and addend information for the relocs.
11058         * gold.cc (queue_middle_tasks): Call identical code folding.
11059         * gold.h: Add defines for multimap.
11060         * layout.cc (Layout::create_symtab_sections): Add symtab as parameter
11061         to the call of finalize_local_symbols.
11062         * main.cc (main): Create object of class Icf.
11063         * object.cc (Sized_relobj::do_layout): Allow this function to be
11064         called twice during icf.
11065         (Sized_relobj::do_finalize_local_symbols): Fold symbols corresponding
11066         to sections marked as identical by icf.
11067         (Sized_relobj::do_section_flags): Get section_flags from Symbols_data
11068         when available.
11069         (Sized_relobj::do_section_entsize): New function.
11070         * object.h (Object::section_entsize): New function.
11071         (Object::do_section_entsize): New pure virtual function.
11072         (Relobj::finalize_local_symbols): Add new parameter.
11073         (Relobj::do_section_entsize): New function.
11074         * options.h (General_options::icf): New option.
11075         (General_options::icf_iterations): New option.
11076         (General_options::print_icf_sections): New option.
11077         * plugin.cc (Sized_pluginobj::do_section_entsize): New function.
11078         * plugin.h (Sized_pluginobj::do_section_entsize): New function.
11079         * reloc.cc (Read_relocs::run): Delay scanning relocs when doing
11080         icf.
11081         * symtab.cc (Symbol_table::is_section_folded): New function.
11082         (Symbol_table::sized_finalize_symbol):  Fold symbols corresponding
11083         to sections marked as identical by icf.
11084         * symtab.h (Symbol_table::set_icf): New function.
11085         (Symbol_table::icf): New function.
11086         (Symbol_table::is_section_folded): New function.
11087         (Symbol_table::icf_): New data member.
11088         * target-reloc.h (relocate_section): Ignore sections folded by icf.
11089         * testsuite/Makefile.am: Add commands to build icf_test.
11090         * testsuite/Makefile.in: Regenerate.
11091         * testsuite/icf_test.sh: New file.
11092         * testsuite/icf_test.cc: New file.
11093
11094 2009-07-24  Chris Demetriou  <cgd@google.com>
11095
11096         * layout.cc (is_compressible_debug_section): Fix incorrect
11097         comment about compressed section names.
11098
11099 2009-07-20  Ian Lance Taylor  <ian@airs.com>
11100
11101         PR 10419
11102         * x86_64.cc (Target_x86_64::do_code_fill): Correct nop sequences.
11103
11104 2009-07-16  Ian Lance Taylor  <iant@google.com>
11105
11106         PR 10400
11107         * layout.h: #include <map>.
11108         (class Kept_section): Change from struct to class.  Add accessors
11109         and setters.  Add section size to Comdat_group mapping.  Change
11110         Comdat_group to std::map.  Add is_comdat_ field.  Add
11111         linkonce_size field in union.
11112         (class Layout): Update declaration of find_or_add_kept_section.
11113         Don't declare find_kept_object.
11114         * layout.cc (Layout::find_or_add_kept_section): Remove candidate
11115         parameter.  Add object, shndx, is_comdat, and is_group_name
11116         parameters.  Change all callers.  Adjust for new Kept_section.
11117         (Layout::find_kept_object): Remove.
11118         * object.cc (Sized_relobj::include_section_group): Update use of
11119         Kept_section.  Rename secnum to shndx.  Only record
11120         Kept_comdat_section if sections are the same size.
11121         (Sized_relobj::include_linkonce_section): Update use of
11122         Kept_section.  Only record Kept_comdat_section if sections are the
11123         same size.  Set size of linkonce section.
11124         (Sized_relobj::map_to_kept_section): Update call to
11125         get_kept_comdat_section.
11126         * object.h (class Sized_relobj): Rename fields in
11127         Kept_comdat_section to drop trailing underscores; change object
11128         field to Relobj*.  Change Kept_comdat_section_table to store
11129         struct rather than pointer.
11130         (Sized_relobj::set_kept_comdat_section): Remove kept parameter.
11131         Add kept_object and kept_shndx parameters.  Change all callers.
11132         (Sized_relobj::get_kept_comdat_section): Change return type to
11133         bool.  Add kept_object and kept_shndx parameters.  Change all
11134         callers.
11135         * plugin.cc (Pluginobj::include_comdat_group): Update call to
11136         Layout::find_or_add_kept_section.
11137
11138 2009-07-09  Ian Lance Taylor  <iant@google.com>
11139
11140         * merge.cc (Object_merge_map::initialize_input_to_output_map):
11141         Reserve space in the hash table.
11142
11143 2009-07-06  Mikolaj Zalewski  <mikolajz@google.com>
11144
11145         * fileread.cc (File_read::get_mtime): New method.
11146         * fileread.h (Timespec): New structure.
11147         (File_read::get_mtime): New method.
11148         * incremental.cc (Incremental_inputs_entry_data::timestamp_usec):
11149         Renamed from timestamp_nsec.
11150         (Incremental_inputs_entry_write::timestamp_sec): Fix argument to
11151         Elf_Xword.
11152         (Incremental_inputs_entry_write::timestamp_usec): Renamed from
11153         timestamp_nsec.
11154         (Incremental_inputs::report_archive): Save mtime; style fix.
11155         (Incremental_inputs::report_obejct): Save mtime; style fix.
11156         (Incremental_inputs::report_script): Save mtime; style fix.
11157         (Incremental_inputs::finalize_inputs): Style fix.
11158         (Incremental_inputs::finalize): Style fix.
11159         (Incremental_inputs::create_input_section_data): Store inputs
11160         mtime.
11161         * incremental.h (Incremental_inputs::report_script): Add mtime
11162         argument.
11163         (Incremental_inputs::Input_info::Input_info): Intialize only one
11164         union member.
11165         (Incremental_inputs::Input_info::archive): Move to nameless
11166         union.
11167         (Incremental_inputs::Input_info::obejct): Move to nameless union.
11168         (Incremental_inputs::Input_info::script): Move to nameless union.
11169         (Incremental_inputs::mtime): New field.
11170         * script.cc (read_input_script): Pass file mtime to
11171         Incremental_input.
11172         * script.h (Script_info::inputs): Style fix.
11173
11174 2009-07-01  Ian Lance Taylor  <ian@airs.com>
11175
11176         * freebsd.h (Target_freebsd::do_adjust_elf_header): Use size
11177         instead of 32.
11178
11179 2009-06-24  Ian Lance Taylor  <iant@google.com>
11180
11181         PR 10156
11182         * layout.cc (Layout::choose_output_section): If we find an
11183         existing section, update the flags.
11184         (Layout::create_notes): New function, broken out of
11185         Layout::finalize.
11186         (Layout::finalize): Don't create note sections.
11187         (Layout::create_note): Don't crash if linker script discards
11188         section.
11189         (Layout::create_gold_note): Likewise.
11190         (Layout::create_build_id): Likewise.  Don't set
11191         after_input_sections on the section.
11192         (Layout::create_executable_stack_info): Remove target parameter.
11193         Change caller.
11194         * layout.h (class Layout): Declare create_notes.  Update
11195         declaration of create_executable_stack_info.
11196         * gold.cc (queue_middle_tasks): Call create_notes.
11197         * output.cc (Output_section::update_flags_for_input_section): Move
11198         here from output.h.  If SHF_ALLOC flag is newly set, mark address
11199         invalid.
11200         * output.h (Output_data::mark_address_invalid): New function.
11201         (class Output_section): Only declare, not define,
11202         update_flags_for_input_section.  Remove set_flags.
11203
11204 2009-06-24  Ian Lance Taylor  <iant@google.com>
11205
11206         * script-sections.cc (Output_section_definition::
11207         set_section_addresses): Rename shadowing local load_address to
11208         laddr.
11209
11210 2009-06-24  Ian Lance Taylor  <iant@google.com>
11211
11212         PR 10244
11213         * reloc.cc (relocate_sections): Skip empty relocation sections.
11214
11215 2009-06-23  Ian Lance Taylor  <iant@google.com>
11216
11217         PR 10156
11218         * layout.cc (Layout::create_note): Use choose_output_section
11219         rather than make_output_section.
11220
11221 2009-06-23  Ian Lance Taylor  <iant@google.com>
11222
11223         PR 10237
11224         * options.cc (General_options::parse_V): Set printed_version_.
11225         (General_options::General_options): Initialize printed_version_.
11226         * options.h (class General_options): Add printed_version_ field.
11227         * gold.cc (queue_initial_tasks): If there are no input files,
11228         don't give a fatal error if we printed the version information.
11229         (queue_middle_tasks): If using -r with a shared object, give a
11230         fatal error rather than an ordinary error.
11231
11232 2009-06-23  Ian Lance Taylor  <iant@google.com>
11233
11234         PR 10219
11235         * layout.cc (Layout::Layout): Initialize have_stabstr_section_.
11236         (Layout::make_output_section): Set have_stabstr_section_ if we see
11237         a .stab*str section.
11238         (Layout::finalize): Call link_stabs_sections.
11239         (Layout::link_stabs_sections): New file.
11240         * layout.h (class Layout): Add have_stabstr_section_ field.
11241         Declare link_stabs_sections.
11242
11243 2009-06-23  Doug Kwan  <dougkwan@google.com>
11244
11245         * Makefile.am (libgold_a_LIBADD): New.
11246         (ld_new_DEPENDENCIES, ld_new_LDADD): Remove LIBOBJS
11247         * Makefile.in: Regenerate.
11248         * config.in (HAVE_DECL_MEMMEM, HAVE_DECL_STRNDUP): New.
11249         * configure: Regenerate.
11250         * configure.ac (AC_CHECK_DECLS): Add strndup and memmem.
11251         * fileread.cc: Include sys/state.h
11252         * gold.h: Declare memmem and strndup if found missing.
11253         * gold_reloc.h: Include byteswap.h if HAVE_BYTESWAP_H is defined.
11254
11255 2009-06-23  Ian Lance Taylor  <iant@google.com>
11256
11257         * configure.ac: Call AC_CHECK_DECLS using C, not C++.
11258         * configure: Rebuild.
11259
11260 2009-06-23  Ian Lance Taylor  <iant@google.com>
11261
11262         PR 10147
11263         * object.cc (Object::section_contents): Don't try to get a view if
11264         the section has length zero.
11265         (Object::handle_gnu_warning_section): If the section is empty, use
11266         the name of the section as the warning.
11267
11268 2009-06-23  Ian Lance Taylor  <iant@google.com>
11269
11270         PR 10133
11271         * stringpool.h (class Stringpool_template): Add optimize_ field.
11272         (Stringpool_template::set_optimize): New function.
11273         * stringpool.cc (Stringpool_template::Stringpool_template):
11274         Initialize optimize_ field.
11275         (Stringpool_template::set_string_offsets): Test local optimize
11276         fild rather than parameter.
11277         * layout.cc (Layout::Layout): Call set_optimize on the section
11278         name stringpool.
11279
11280 2009-06-22  Ian Lance Taylor  <iant@google.com>
11281
11282         PR 10030
11283         * yyscript.y: Parse TARGET.
11284         * script.cc (script_set_target): New function.
11285         * script-c.h (script_set_target): Declare.
11286         * options.cc (General_options::string_to_object_format): Rename
11287         from string_to_object_format in anonymous namespace.  Change
11288         callers.
11289         * options.h (class General_options): Declare
11290         string_to_object_format.
11291
11292 2009-06-22  Ian Lance Taylor  <iant@google.com>
11293
11294         * script-sections.cc (Script_sections::create_segments): Don't put
11295         program headers in a PT_LOAD segment if -n or -N.
11296
11297 2009-06-22  Ian Lance Taylor  <iant@google.com>
11298
11299         PR 10141
11300         * options.h (class General_options): Add -z lazy and -z now.  Sort
11301         -z options into alphabetical order.
11302         * layout.cc (Layout::finish_dynamic_section): Handle -z now.
11303
11304 2009-06-21  Ian Lance Taylor  <iant@google.com>
11305
11306         * layout.cc (Layout::make_output_section): Call
11307         Target::new_output_section.
11308         (Layout::attach_allocated_section_to_segment): Put large section
11309         sections in a separate load segment with the large segment flag
11310         set.
11311         (Layout::segment_precedes): Sort large data segments after other
11312         load segments.
11313         (align_file_offset): New static function.
11314         (Layout::set_segment_offsets): Use align_file_offset.
11315         * output.h (class Output_section): Add is_small_section_ and
11316         is_large_section_ fields.
11317         (Output_section::is_small_section): New function.
11318         (Output_section::set_is_small_section):  New function.
11319         (Output_section::is_large_section): New function.
11320         (Output_section::set_is_large_section): New function.
11321         (Output_section::is_large_data_section): New function.
11322         (class Output_segment): Add is_large_data_segment_ field.
11323         (Output_segment::is_large_data_segment): New function.
11324         (Output_segment::set_is_large_data_segment): New function.
11325         * output.cc (Output_section::Output_section): Initialize new
11326         fields.
11327         (Output_segment::Output_segment): Likewise.
11328         (Output_segment::add_output_section): Add assertion that large
11329         data sections always go in large data segments.  Force small data
11330         sections to the end of the list of data sections.  Force small BSS
11331         sections to the start of the list of BSS sections.  For large BSS
11332         sections to the end of the list of BSS sections.
11333         * symtab.h (class Symbol): Declare is_common_shndx.
11334         (Symbol::is_defined): Check Symbol::is_common_shndx.
11335         (Symbol::is_common): Likewise.
11336         (class Symbol_table): Define enum Commons_section_type.  Update
11337         declarations.  Add small_commons_ and large_commons_ fields.
11338         * symtab.cc (Symbol::is_common_shndx): New function.
11339         (Symbol_table::Symbol_table): Initialize new fields.
11340         (Symbol_table::add_from_object): Put small and large common
11341         symbols in the right list.
11342         (Symbol_table::sized_finalized_symbol): Check
11343         Symbol::is_common_shndx.
11344         (Symbol_table::sized_write_globals): Likewise.
11345         * common.cc (Symbol_table::do_allocate_commons): Allocate new
11346         common symbol lists.  Don't call do_allocate_commons_list if the
11347         list is empty.
11348         (Symbol_table::do_allocate_commons_list): Remove is_tls
11349         parameter.  Add comons_section_type parameter.  Change all
11350         callers.  Handle small and large common symbols.
11351         * object.cc (Sized_relobj::do_finalize_local_symbols): Check
11352         Symbol::is_common_shndx.
11353         * resolve.cc (symbol_to_bits): Likewise.
11354         * target.h (Target::small_common_shndx): New function.
11355         (Target::small_common_section_flags): New function.
11356         (Target::large_common_shndx): New function.
11357         (Target::large_common_section_flags): New function.
11358         (Target::new_output_section): New function.
11359         (Target::Target_info): Add small_common_shndx, large_common_shndx,
11360         small_common_section_flags, and large_common_section_flags
11361         fields.
11362         (Target::do_new_output_section): New virtual function.
11363         * arm.cc (Target_arm::arm_info): Initialize new fields.
11364         * i386.cc (Target_i386::i386_info): Likewise.
11365         * powerpc.cc (Target_powerpc::powerpc_info) [all versions]:
11366         Likewise.
11367         * sparc.c (Target_sparc::sparc_info) [all versions]: Likewise.
11368         * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
11369         (Target_x86_64::do_new_output_section): New function.
11370         * configure.ac: Define conditional MCMODEL_MEDIUM.
11371         * testsuite/Makefile.am (check_PROGRAMS): Add large.
11372         (large_SOURCES, large_CFLAGS, large_DEPENDENCIES): Define.
11373         (large_LDFLAGS): Define.
11374         * testsuite/large.c: New file.
11375         * testsuite/testfile.cc (Target_test::test_target_info):
11376         Initialize new fields.
11377         * configure, testsuite/Makefile.in: Rebuild.
11378
11379 2009-06-05  Doug Kwan  <dougkwan@google.com>
11380
11381         * Makefile.am (CCFILES): Add target.cc.
11382         * Makefile.in: Regenerate.
11383         * i386.cc (class Target_i386): Define new virtual method to
11384         override do_is_local_label_name in parent.
11385         * object.cc (Sized_relobj::do_count_local_symbols): Discard
11386         local symbols if --discard-locals or -X is given.
11387         * options.h (class General_options): Declare new options
11388         '--discard-locals' and '-X' for discarding locals.
11389         * target.h (class Target): Define new methods is_local_label_name.
11390         Declare new virtual method do_is_local_label_name.
11391         * target.cc: New file.
11392         * testsuite/Makefile.am (check_PROGRAMS): Add discard_locals_test.
11393         (check_SCRIPTS): Add discard_locals_test.sh.
11394         (check_DATA): Add discard_local_tests.syms.
11395         (discard_locals_test_SOURCES, discard_locals_test_LDFLAGS): Define.
11396         (discard_local_tests.syms, discard_locals_test.o): New make rules.
11397         * testsuite/Makefile.in: Regenerate.
11398         * testsuite/discard_locals_test.c: New file.
11399         * testsuite/discard_locals_test.sh: Same.
11400
11401 2009-06-05  Doug Kwan  <dougkwan@google.com>
11402
11403         * object.cc (Sized_relobj::Sized_relobj): Initialize
11404         discarded_eh_frame_shndx_ to -1U.
11405         (Sized_relobj::do_layout): Record index of a discard .eh_frame
11406         section.
11407         (Sized_relobj::do_count_local_symbols): Skip local symbols in
11408         a discarded .eh_frame section.
11409         (Sized_relobj::do_finalize_local_symbols): Ditto.
11410         * object.h (class Sized_relobj): Declare new member
11411         discarded_eh_frame_shndx_.
11412         * testsuite/Makefile.am (check_PROGRAMS): Add local_labels_test.
11413         (local_labels_test.o, local_labels_test): New rules.
11414         * testsuite/Makefile.in: Regenerate.
11415
11416 2009-06-04  Doug Kwan  <dougkwan@google.com>
11417
11418         * layout.cc (Layout::section_name_mapping): Add mapping for
11419         special ARM sections.
11420
11421 2009-06-03  Doug Kwan  <dougkwan@google.com>
11422
11423         * arm.cc (utils::sign_extend): Reverse test in gold_assert.
11424         (utils::has_overflow): Same.
11425
11426 2009-06-03  Ian Lance Taylor  <iant@google.com>
11427
11428         * layout.cc (Layout::section_name_mapping): New array, replacing
11429         Layout::linkonce_mapping.
11430         (Layout::section_name_mapping_count): New variable, replacing
11431         Layout::linkonce_mapping_count.
11432         (Layout::linkonce_output_name): Remove.
11433         (Layout::output_section_name): Rewrite.
11434         * layout.h (class Layout): Rename Linkonce_mapping to
11435         Section_name_mapping, linkonce_mapping to section_name_mapping,
11436         linkonce_mapping_count to section_name_mapping_count.  Don't
11437         declare linkonce_output_name.
11438
11439 2009-06-03  Doug Kwan  <dougkwan@google.com>
11440
11441         * gold/arm.cc (namespace utils): New.
11442         (Target_arm::reloc_is_non_pic): Define new method.
11443         (class Arm_relocate_functions): New.
11444         (Target_arm::Relocate::relocate): Handle relocation types used by
11445         Android.
11446
11447 2009-06-03  Ian Lance Taylor  <iant@google.com>
11448
11449         * arm.cc (Target_arm::scan::global): Use || instead of |.
11450
11451 2009-06-02  Doug Kwan  <dougkwan@google.com>
11452
11453         * gold/arm.cc (Target_arm::Scan::Scan):  Initialize
11454         issued_non_pic_error_.
11455         (class Target_arm::Scan): Declare new method check_non_pic.
11456         Define new method symbol_needs_plt_entry.
11457         Declare new data member issued_non_pic_error_.
11458         (class Target_arm::Relocate): Declare new method
11459         should_apply_static_reloc.
11460         (Target_arm::may_need_copy_reloc): Handle STT_ARM_TFUNC.
11461         (Target_arm::Scan::check_non_pic): Define new method.
11462         (Target_arm::Scan::local): Handle a small subset of reloc types used
11463         by Android.
11464         (Target_arm::Scan::local): Same.
11465         (Target_arm::Relocate::should_apply_statci_reloc): Define new method.
11466
11467 2009-05-31  Mikolaj Zalewski  <mikolajz@google.com>
11468
11469         * incremental.cc (Incremental_inputs::report_command_line): Filter
11470         out --incremental-* options.
11471
11472 2009-05-29  Doug Kwan  <dougkwan@google.com>
11473
11474         * gold/arm.cc (Output_data_plt_arm): Forward declaration for new
11475         template class.
11476         (class Target_arm): Update comment.
11477         (Target_arm::Target_arm): Initialize new data members GOT_,
11478         PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_ and DYNBSS_.
11479         Declare new methods Target_arm::got_section, Target_arm::make_plt_entry
11480         and Target_arm::rel_dyn_section.
11481         Declare new_enum Target_arm::Got_type.
11482         Declare new data members GOT_, PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_
11483         and DYNBSS_.
11484         Update commments for member do_dynsym_value.
11485         (Target_arm::got_size, Target_arm::plt_section,
11486         Target_arm::may_need_copy_reloc and Target_arm::copy_reloc): Define
11487         new methods inside class defintion.
11488         (Target_arm::got_section): Define new method.
11489         (Target_arm::rel_dyn_section): Same.
11490         (Output_data_plt_arm): New template class.
11491         (Output_data_plt_arm::Output_data_plt_arm): Define constructor.
11492         (Output_data_plt_arm:do_adjust_output_section): Define new method.
11493         (Output_data_plt_arm::add_entry): Same.
11494         (Output_data_plt_arm::first_plt_entry): Define new
11495         static data member for PLT instruction template.
11496         (Output_data_plt_arm::plt_entry): Same.
11497         (Output_data_plt_arm::do_write): Define new method.
11498         (Target_arm::make_plt_entry): Same.
11499         (Target_arm::do_finalize_sections): Same.
11500         (Target_arm::do_dynsym_value): Same.
11501
11502 2009-05-28  Doug Kwan  <dougkwan@google.com>
11503
11504         * Makefile.am (TARGETSOURCES): Add arm.cc.
11505         (ALL_TARGETOBJECTS): Add arm.$(OBJEXT)
11506         * Makefile.in: Regenerate.
11507         * arm.cc: New file.
11508         * configure.tgt: Add armbe*-*-*, armeb*-*-* and arm*-*-* targets.
11509
11510 2009-05-26  Doug Kwan  <dougkwan@google.com>
11511
11512         * options.cc (General_options::parse_exclude_libs).  Fix a comment.
11513         (General_options::check_excluded_libs): Strip off directories in
11514         archive name before matching like GNU ld does.
11515         * testsuite/Makefile.am (MOSTLYCLEANFILES,
11516         exclude_libs_test_DEPENDENCIES): Add alt/libexclude_libs_test_3.a
11517         (exclude_libs_test_LDFLAGS): Add linker option
11518         -Wl,--exclude-libs,libexclude_libs_test_3
11519         (exclude_libs_test_LADD): Add alt/libexclude_libs_test_3.a as
11520         an explicit archive without using -l.
11521         (alt/libexclude_libs_test_3.a): New make rule.
11522         * testsuite/Makefile.in: Regenerate.
11523         * testsuite/exclude_libs_test.c : Declare lib3_default().
11524         (main): Call it.
11525         * exclude_libs_test.sh: Add tests for alt/exclude_libs_test_3.a.
11526         * exclude_libs_test_3.c: New file.
11527
11528 2009-05-26  Nick Clifton  <nickc@redhat.com>
11529
11530         * po/id.po: New Indonesian translation.
11531         * po/gold.pot: Updated template file.
11532
11533 2009-05-22  Sriraman Tallam  <tmsriram@google.com>
11534
11535         * testsuite/Makefile.am: Add -ffunction-sections to compile
11536         gc_comdat_test files.  Add -Wl,--gc-sections to build
11537         gc_comdat_test.
11538         * testsuite/Makefile.in: Regenerate.
11539         * testsuite/gc_comdat_test.sh: Fix the condition around grep.
11540
11541 2009-05-21  Sriraman Tallam  <tmsriram@google.com>
11542
11543         * object.cc (Sized_relobj::map_to_kept_section): Return NULL if the
11544         kept comdat section was garbage collected.
11545         * testsuite/Makefile.am: Add test gc_comdat_test.sh.
11546         * testsuite/Makefile.in: Regenerate.
11547         * testsuite/gc_comdat_test.sh: New file.
11548         * testsuite/gc_comdat_test_1.cc: New file.
11549         * testsuite/gc_comdat_test_2.cc: New file.
11550
11551 2009-05-19  Doug Kwan  <dougkwan@google.com>
11552
11553         * archive.cc (Archive::Archive): Move constructor from archive.h
11554         to here.  Initialize no_export_.
11555         (Archive::get_elf_object_for_member): Set no_export flag of object.
11556         * archive.h (Archive::Archive): Move constructor body to
11557         archive.cc.
11558         (Archive::no_export): New method.
11559         (Archive::no_export_): New field.
11560         * object.h (Object::Object): Initialize no_export_ to false.
11561         (Object::no_export, Object::set_no_export): New methods.
11562         (Object::no_export_): New field.
11563         * options.cc (General_options::parse_exclude_libs): New method.
11564         (General_options::check_excluded_libs) Same.
11565         * options.h (exclude_libs): New option.
11566         (General_options::check_excluded_libs): New method declaration.
11567         (General_options::excluded_libs_): New field.
11568         * symtab.cc (Symbol_table::add_from_relobj): Hide symbols with
11569         default or protected visibility if an object has no-export flag set.
11570         testsuite/Makefile.am (check_PROGRAMS): Add exclude_libs_test.
11571         (check_SCRIPTS): Add exclude_libs_test.sh.
11572         (check_DATA): Add exclude_libs_test.syms.
11573         (MOSTLYCLEANFILES): Add exclude_libs_test.syms,
11574         libexclude_libs_test_1.a and libexclude_libs_test_2.a.
11575         (exclude_libs_test_SOURCES, exclude_libs_test_DEPENDENCIES,
11576         exclude_libs_test_LDFLAGS and exclude_libs_test_LDADD): Define.
11577         (exclude_libs_test.syms, libexclude_libs_test_1.a,
11578         libexclude_libs_test_2.a): New rules.
11579         * testsuite/Makefile.in: Regenerate.
11580         * testsuite/exclude_libs_test.c: New file.
11581         * testsuite/exclude_libs_test.sh: Ditto.
11582         * testsuite/exclude_libs_test_1.c: Ditto.
11583         * testsuite/exclude_libs_test_2.c: Ditto.
11584
11585 2009-05-15  Ian Lance Taylor  <iant@google.com>
11586
11587         * configure.ac: Check for declarations for cases where libiberty.h
11588         checks HAVE_DECL_xxx.
11589         * configure, config.in: Rebuild.
11590
11591 2009-05-15  Mikolaj Zalewski  <mikolajz@google.com>
11592
11593         * gold.h (Incremental_argument_list): Remove (invalid) forward
11594         declaration.
11595         * incremental.cc (Incremental_inputs::report_achive): New method.
11596         (Incremental_inputs::report_object): New method.
11597         (Incremental_inputs::report_script): New method.
11598         (Incremental_inputs::finalize_inputs): New method.
11599         (Incremental_inputs::finalize): Call finalize_inputs().
11600         (Incremental_inputs::sized_create_incremental_inputs_section_data):
11601         Create inputs entries.
11602         * incremental.h (Incremental_input_type): New enum.
11603         (Incremental_inputs::Incremental_input): Initialize new fields.
11604         (Incremental_inputs::report_inputs): New method.
11605         (Incremental_inputs::report_achive): New method.
11606         (Incremental_inputs::report_object): New method.
11607         (Incremental_inputs::report_script): New method.
11608         (Incremental_inputs::finalize_inputs): New method.
11609         (Incremental_inputs::Input_info): New struct.
11610         (Incremental_inputs::Input_info_map): New typedef.
11611         (Incremental_inputs::lock_): New field.
11612         (Incremental_inputs::Inputs_): New field.
11613         (Incremental_inputs::Inputs_map): New field.
11614         * main.cc (main): Call Incremental_input::report_inputs.
11615         * options.h (Input_argument_list): Typedef moved from
11616         Input_arguments.
11617         (Input_file_group::Files): Remove, use ::Input_argument_list.
11618         (Input_file_group::Input_argument_list): Remove, use
11619         ::Input_argument_list.
11620         * plugin.cc (Plugin_manager::add_input_file): Add error in
11621         incremental build.
11622         * read_syms.cc (do_read_syms): Call Incremental_input::report_*
11623         functions.
11624         * script.cc (read_input_script): Call
11625         Incremental_input::report_script.
11626         * script.h (Script_info): New class.
11627
11628 2009-04-27  Ian Lance Taylor  <iant@google.com>
11629
11630         * x86_64.cc (do_adjust_output_section): Set entsize to
11631         plt_entry_size.
11632
11633 2009-04-23  Elliott Hughes  <enh@google.com>
11634
11635         * output.cc (Output_file::close): After short writes, continue
11636         writing from the correct offset in the buffer being written.
11637
11638 2009-04-23  Chris Demetriou  <cgd@google.com>
11639
11640         * configure.ac (HAVE_TR1_UNORDERED_MAP_REHASH): New define.
11641         * configure: Regenerate.
11642         * config.in: Regenerate.
11643         * gold.h: Avoid std::tr1::unordered_map and std::tr1::unordered_set
11644         if HAVE_TR1_UNORDERED_MAP_REHASH is not defined.
11645
11646 2009-04-21  Mikolaj Zalewski  <mikolajz@google.com>
11647
11648         * incremental.cc (Incremental_inputs_header_data): Renamed from
11649         Incremental_input_header_data.
11650         (Incremental_inputs_header_data::data_size): New field.
11651         (Incremental_inputs_header_data::put_input_file_count): Renamed
11652         from input_file_count.
11653         (Incremental_inputs_header_data::put_command_line_offset): Renamed
11654         from command_line_offset.
11655         (Incremental_inputs_header_data::put_reserved): Renamed from
11656         put_reserved.
11657         (Incremental_inputs_entry_data): Renamed from
11658         Incremental_input_entry_data.
11659         (Incremental_inputs_entry_data::data_size): New field.
11660         (Incremental_inputs::report_command_line): New method.
11661         (Incremental_inputs::finalize): New method.
11662         (Incremental_inputs::create_incremental_inputs_data): New method.
11663         (Incremental_inputs::sized_create_incremental_inputs_data): New method.
11664         * incremental.h: New file.
11665         * layout.cc (Layout::Layout): Handle new incremental_inputs_.
11666         (Layout::finalize): Create incremental inputs section in
11667         incremental builds.
11668         (Layout::create_incremental_info_sections): New method.
11669         * layout.h (Layout::incremental_inputs): New method.
11670         (Layout::create_incremental_info_sections): New method.
11671         (Layout::incremental_inputs_): New field.
11672         * main.cc (main): Notify Incremental_input of the command line.
11673
11674 2009-04-01  Ian Lance Taylor  <iant@google.com>
11675             Mikolaj Zalewski  <mikolajz@google.com>
11676
11677         * gold.h (reserve_unordered_map): Define, three versions, one for
11678         each version of Unordered_map.
11679         * layout.cc (Layout::Layout): Remove options parameter.  Add
11680         number_of_input_files parameter.  Don't initialize options_.
11681         Initialize number_of_input_files_ and resized_signatures_.  Move
11682         sections_are_attached_.
11683         (Layout::layout_group): Reserve space for group_signatures_.
11684         (Layout::find_or_add_kept_section): Change name parameter to be a
11685         reference.  Resize signatures_ map when it gets large enough.
11686         (Layout::layout_eh_frame): Use parameters->options() instead of
11687         this->options_.
11688         (Layout::make_output_section): Likewise.
11689         (Layout::attach_allocated_section_to_segment): Likewise.
11690         (Layout::finalize, Layout::create_executable_stack): Likewise.
11691         (Layout::set_segment_offsets, Layout::create_interp): Likewise.
11692         (Layout::finish_dynamic_section, Layout::write_binary): Likewise.
11693         * layout.h (class Layout): Update declarations.  Remove options_
11694         field.  Add number_of_input_files_ and resized_signatures_
11695         fields.  Move sections_are_attached_ field.
11696         * main.cc (main): Pass number of input files to Layout
11697         constructor.  Don't pass options.
11698
11699 2009-03-30  Ian Lance Taylor  <iant@google.com>
11700
11701         * ffsll.c (ffsll): Correct implementation.
11702
11703 2009-03-27  Ian Lance Taylor  <iant@google.com>
11704
11705         * ffsll.c: New file.
11706         * configure.ac: Call AC_REPLACE_FUNCS on ffsll.
11707         * gold.h (ffsll): Declare if HAVE_FFSLL is not defined.
11708         * ftruncate.c (ftruncate): Declare before definition.
11709         * mremap.c (mremap): Likewise.
11710         * pread.c (pread): Likewise.
11711         * configure, Makefile.in, config.in: Rebuild.
11712
11713         * mremap.c: New file.
11714         * configure.ac: Call AC_REPLACE_FUNCS on mremap.
11715         * gold.h (MREMAP_MAYMOVE): Define if HAVE_MREMAP is not defined.
11716         (mremap): Declare if HAVE_MREMAP is not defined.
11717         * configure, Makefile.in, config.in: Rebuild.
11718
11719 2009-03-27  Cary Coutant  <ccoutant@google.com>
11720
11721         * powerpc.cc (Target_powerpc::check_non_pic): Assert that output is
11722         position independent.
11723         * sparc.cc (Target_sparc::check_non_pic): Likewise.
11724         * x86_64.cc (Target_x86_64::check_non_pic): Likewise.
11725
11726 2009-03-24  Cary Coutant  <ccoutant@google.com>
11727
11728         * symtab.h (needs_plt_entry): Check for unsatisfied reference from
11729         an executable.
11730         (needs_dynamic_reloc): Likewise.
11731
11732 2009-03-24  Ian Lance Taylor  <iant@google.com>
11733
11734         * yyscript.y (file_cmd): Recognize EXTERN.
11735         (extern_name_list, extern_name_list_body): New nonterminals.
11736         * script.cc (script_add_extern): Define.
11737         * script-c.h (script_add_extern): Declare.
11738
11739 2009-03-24  Rafael Avila de Espindola  <espindola@google.com>
11740
11741         * object.cc (is_elf_object): Define.
11742         * object.h (is_elf_object): Declare.
11743         * archive.cc (Archive::get_elf_object_for_member): Call
11744         is_elf_object.
11745         * readsyms.cc (Read_symbols::do_read_symbols): Likewise.
11746
11747 2009-03-24  Elliott Hughes  <enh@google.com>
11748
11749         * output.cc (Output_file::map_anonymous): Define.
11750         (Output_file::map): Use map_anonymous.  If the regular mmap fails,
11751         try an anonymous one.  Report the size if the mmap fails.
11752         * output.h (class Output_file): Declare map_anonymous.
11753
11754 2009-03-24  Ian Lance Taylor  <iant@google.com>
11755
11756         * target-select.cc (instantiate_target): Don't acquire the lock if
11757         the instantiated_target_ field has already been set.
11758
11759 2009-03-23  Ian Lance Taylor  <iant@google.com>
11760
11761         * gold-threads.h (class Initialize_lock): Define.
11762         * gold-threads.cc (class Initialize_lock_once): Define.
11763         (initialize_lock_control): New static variable.
11764         (initialize_lock_pointer): New static variable.
11765         (initialize_lock_once): New static function.
11766         (Initialize_lock::Initialize_lock): Define.
11767         (Initialize_lock::initialize): Define.
11768         * target-select.h: Include "gold-threads.h".
11769         (class Target_selector): Add lock_ and initialize_lock_ fields.
11770         Don't define instantiate_target, just declare it.
11771         * target-select.cc (Target_selector::Target_selector): Initialize
11772         new fields.
11773         (Target_selector::instantiate_target): Define.
11774         * descriptors.h: Include "gold-threads.h".
11775         (class Descriptors): Add initialize_lock_ field.
11776         * descriptors.cc (Descriptors::Descriptors): Initialize new
11777         field.
11778         (Descriptors::open): Use initialize_lock_ field
11779         * errors.h (class Errors): Add initialize_lock_ field.
11780         * errors.cc (Errors::Errors): Initialize new field.
11781         (Errors::initialize_lock): Use initialize_lock_ field.
11782         * powerpc.cc (class Target_selector_powerpc): Remove
11783         instantiated_target_ field.  In do_recognize call
11784         instantiate_target rather than do_instantiate_target.  In
11785         do_instantiate_target just allocate a new target.
11786         * sparc.cc (class Target_selector_sparc): Likewise.
11787
11788         * freebsd.h: New file.
11789         * i386.cc: Include "freebsd.h".
11790         (Target_i386): Derive from Target_freebsd rather than
11791         Sized_target.
11792         (Target_selector_i386): Derive from Target_selector_freebsd rather
11793         than Target_selector.
11794         * x86_64.cc: Include "freebsd.h".
11795         (Target_x86_64): Derive from Target_freebsd rather than
11796         Sized_target.
11797         (Target_selector_x86_64): Derive from Target_selector_freebsd
11798         rather than Target_selector.
11799         * target.h (class Target): Add adjust_elf_header and
11800         do_adjust_elf_header.
11801         * output.cc (Output_file_header:: do_sized_write): Call target
11802         adjust_elf_header routine.
11803         * configure.tgt: Set targ_osabi.
11804         * configure.ac: Define GOLD_DEFAULT_OSABI.
11805         * parameters.cc (Parameters::default_target): Pass
11806         GOLD_DEFAULT_OSABI to select_target.
11807         * target-select.h (class Target_selector): Make instantiate_target
11808         protected rather than private.
11809         * Makefile.am (HFILES): Add freebsd.h.
11810         * configure, Makefile.in, config.in: Rebuild.
11811
11812         * merge.cc (do_add_input_section): Correct pend value.  Change
11813         message about last entry not being null terminated from error to
11814         warning.
11815
11816 2009-03-20  Mikolaj Zalewski  <mikolajz@google.com>
11817
11818         * incremental.cc: New file.
11819         * Makefile.am (CCFILES): Add incremental.cc.
11820         * Makefile.in: Rebuild.
11821
11822 2009-03-19  Paul Pluzhnikov  <ppluzhnikov@google.com>
11823
11824         * layout.cc (Layout::output_section_name): Preserve names
11825         of '.note.' sections.
11826
11827 2009-03-19  Ian Lance Taylor  <iant@google.com>
11828
11829         * descriptors.cc (Descriptors::open): Check that the options are
11830         valid before using them.
11831
11832 2009-03-18  Ian Lance Taylor  <iant@google.com>
11833
11834         * script-sections.h: Include <list>.
11835         (class Script_sections): Change Sections_elements from std::vector
11836         to std::list.  Typedef public Elements_iterator.  Add
11837         orphan_section_placement_, data_segment_align_start_, and
11838         saw_data_segment_align_ fields.  Remove data_segment_align_index_
11839         field.
11840         * script-sections.cc (class Orphan_section_placement): New class.
11841         (class Sections_element): Add virtual functions is_relro and
11842         orphan_section_init.  Remove virtual function place_orphan_here.
11843         (class Output_section_definition): Add is_relro and
11844         orphan_section_init.  Remove place_orphan_here.
11845         (class Orphan_output_section): Likewise.
11846         (Script_sections::Script_sections): Update for field changes.
11847         (Script_sections::data_segment_align): Set saw_data_segment_align_
11848         and data_segment_align_start_, not data_segment_align_index.
11849         (Script_sections::data_segment_relro_end): Check
11850         saw_data_segment_align_.  Use data_segment_align_start_ rather
11851         than data_segment_align_index_.
11852         (Script_sections::place_orphan): Rewrite to use
11853         Orphan_section_placement.
11854
11855 2009-03-17  Ian Lance Taylor  <iant@google.com>
11856
11857         * archive.cc (Archive::add_symbols): Check for a version attached
11858         to the symbol name in the archive map.
11859         * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_11.
11860         (ver_test_11_SOURCES, ver_test_11_DEPENDENCIES): Define.
11861         (ver_test_11_LDFLAGS, ver_test_11_LDADD): Define.
11862         (ver_test_11.a): New target.
11863         * testsuite/Makefile.in: Rebuild.
11864
11865         * configure.ac: Check for chsize and posix_fallocate.  Replace
11866         ftruncate.
11867         * ftruncate.c: New file, from gnulib.
11868         * output.cc (posix_fallocate): Define dummy version if not
11869         HAVE_POSIX_FALLOCATE.
11870         (Output_file::map): Call posix_fallocate rather than lseek and
11871         write.
11872         * gold.h (ftruncate): Declare if not HAVE_FTRUNCATE.
11873         * configure, Makefile.in, config.in: Rebuild.
11874
11875 2009-03-17  Paul Pluzhnikov  <ppluzhnikov@google.com>
11876
11877         * layout.h (Layout::create_note): Add section_name parameter.
11878         * layout.cc (Layout::create_note): Likewise.
11879         (Layout::create_build_id, Layout::create_gold_note): Fix callers.
11880
11881 2009-03-17  Ian Lance Taylor  <iant@google.com>
11882
11883         * descriptors.cc: Include "options.h".
11884         (FD_CLOEXEC, O_CLOEXEC): Define if not defined.
11885         (Descriptors::open): Always use O_CLOEXEC when opening a new
11886         descriptor.  If we have a plugin, and O_CLOEXEC was not defined,
11887         then set FD_CLOEXEC.
11888
11889         * sparc.cc (class Target_sparc): Add has_got_section.
11890         (Target_sparc::Scan::global): If we see _GLOBAL_OFFSET_TABLE_,
11891         make sure we have a GOT section.
11892
11893         * sparc.cc (optimize_tls_reloc): Recognize R_SPARC_TLS_IE_ADD.
11894         (Target_sparc::Scan::local): Likewise.
11895         (Target_sparc::Scan::global): Likewise.
11896         (Target_sparc::Relocate::relocate): Likewise.
11897         (Target_sparc::Relocate::relocate_tls): Likewise.
11898
11899         * symtab.cc (Symbol_table::define_default_version): New function,
11900         broken out of add_from_object.
11901         (Symbol_table::add_from_object): Call define_default_version.
11902         (Symbol_table::define_special_symbol): Add resolve_oldsym
11903         parameter.  Change all callers.  If the version for a symbol comes
11904         from a version script, resolve it with the symbol with the same
11905         name with no version.  Also add the symbol without a version if
11906         appropriate.
11907         (do_define_in_output_data): If resolving with oldsym, don't delete
11908         sym.
11909         (do_define_in_output_segment): Likewise.
11910         (do_define_as_constant): Likewise.
11911         * symtab.h (class Symbol_table): Update declarations.
11912
11913 2009-03-13  Ian Lance Taylor  <iant@google.com>
11914
11915         * readsyms.cc (Read_symbols::incompatible_warning): New function.
11916         (Read_symbols::requeue): New function.
11917         (Read_symbols::do_read_symbols): If make_elf_object fails because
11918         the target type is not configured, and the file was searched for,
11919         issue a warning and retry with the next directory.
11920         (Add_symbols::run): If the file has an incompatible format, and
11921         it was searched for, requeue the Read_symbols task.  On error,
11922         release the object.
11923         * readsyms.h (class Read_symbols): Add dirindex_ field.  Add
11924         dirindex parameter to constructor.  Change all callers.  Declare
11925         incompatible_warning and requeue.
11926         (class Add_symbols): Add dirpath_, dirindex_, mapfile_,
11927         input_argument_ and input_group_ fields.  Add them to
11928         constructor.  Change all callers.
11929         (class Read_script): Add dirindex_ field.  Add it to constructor.
11930         Change all callers.
11931         * archive.cc (Archive::setup): Remove input_objects parameter.
11932         Change all callers.
11933         (Archive::get_file_and_offset): Likewise.
11934         (Archive::read_all_symbols): Likewise.
11935         (Archive::read_symbols): Likewise.
11936         (Archive::get_elf_object_for_member): Remove input_objects
11937         parameter.  Add punconfigured parameter.  Change all callers.
11938         (Archive::add_symbols): Change return type to bool.  Check return
11939         value of include_member.
11940         (Archive::include_all_members): Likewise.
11941         (Archive::include_member): Change return type to bool.  Return
11942         false if first included object has incompatible target.  Set
11943         included_member_ field.
11944         (Add_archive_symbols::run): If add_symbols returns false, requeue
11945         Read_symbols task.
11946         * archive.h (class Archive): Add included_member_ field.
11947         Initialize it in constructor.  Add input_file and searched_for
11948         methods.  Update declarations.
11949         (class Add_archive_symbols): Add dirpath_, dirindex_, and
11950         input_argument_ fields.  Add them to constructor.  Change all
11951         callers.
11952         * script.cc: Include "target-select.h".
11953         (class Parser_closure): Add skip_on_incompatible_target_ and
11954         found_incompatible_target_ fields.  Add
11955         skip_on_incompatible_target parameter to constructor.  Change all
11956         callers.  Add methods skip_on_incompatible_target,
11957         clear_skip_on_incompatible_target, found_incompatible_target, and
11958         set_found_incompatible_target.
11959         (read_input_script): Add dirindex parameter.  Change all callers.
11960         If parser finds an incompatible target, requeue Read_symbols
11961         task.
11962         (script_set_symbol): Clear skip_on_incompatible_target in
11963         closure.
11964         (script_add_assertion, script_parse_option): Likewise.
11965         (script_start_sections, script_add_phdr): Likewise.
11966         (script_check_output_format): New function.
11967         * script.h (read_input_script): Update declaration.
11968         * script-c.h (script_check_output_format): Declare.
11969         * yyscript.y (file_cmd): Handle OUTPUT_FORMAT.
11970         (ignore_cmd): Remove OUTPUT_FORMAT.
11971         * fileread.cc (Input_file::Input_file): Add explicit this.
11972         (Input_file::will_search_for): New function.
11973         (Input_file::open): Add pindex parameter.  Change all callers.
11974         * fileread.h (class Input_file): Add input_file_argument method.
11975         Declare will_search_for.  Update declarations.
11976         * object.cc (make_elf_object): Add punconfigured parameter.
11977         Change all callers.
11978         * object.h (class Object): Make input_file public.  Add
11979         searched_for method.
11980         (make_elf_object): Update declaration.
11981         * dirsearch.cc (Dirsearch::find): Add pindex parameter.  Use it to
11982         restart search.
11983         * dirsearch.h (class Dirsearch): Update declaration.
11984         * options.h (class General_options): Add --warn-search-mismatch.
11985         * parameters.cc (Parameters::is_compatible_target): New function.
11986         * parameters.h (class Parameters): Declare is_compatible_target.
11987         * workqueue.cc (Workqueue::add_blocker): New function.
11988         * workqueue.h (class Workqueue): Declare add_blocker.
11989
11990         * fileread.cc (Input_file::open): Remove options parameter.
11991         Change all callers.
11992         (Input_file::open_binary): Likewise.
11993         * script.cc (read_input_script): Likewise.
11994         * readsyms.h (class Read_symbols): Remove options_ field.  Remove
11995         options parameter from constructor.  Change all callers.
11996         (class Read_script): Likewise.
11997         * fileread.h (class Input_file): Update declarations.
11998         * script.h (read_input_script): Update declaration.
11999
12000 2009-03-10  Nick Clifton  <nickc@redhat.com>
12001
12002         * po/es.po: New Spanish translation.
12003
12004 2009-03-06  Cary Coutant  <ccoutant@google.com>
12005
12006         * options.cc (parse_short_option): Keep dash_z from registering itself.
12007
12008 2009-03-03  Ian Lance Taylor  <iant@google.com>
12009
12010         PR 9918
12011         * target-reloc.h (relocate_section): Pass output_section to
12012         relocate.
12013         * i386.cc (Target_i386::should_apply_static_reloc): Add
12014         output_section parameter.  Change all callers.
12015         (Target_i386::Relocate::relocate): Add output_section parameter.
12016         * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
12017         * sparc.cc (Target_sparc::Relocate::relocate): Likewise.
12018         * powerpc.cc (Target_powerpc::Relocate::relocate): Likewise.
12019         * testsuite/two_file_shared.sh: New script.
12020         * testsuite/Makefile.am (check_SCRIPTS): Add two_file_shared.sh.
12021         (check_DATA): Add two_file_shared.dbg.
12022         (two_file_shared.dbg): New target.
12023         * testsuite/Makefile.in: Rebuild.
12024
12025 2009-03-01  Ian Lance Taylor  <iant@google.com>
12026
12027         * configure.ac: Check for byteswap.h.
12028         * configure: Rebuild.
12029         * config.in: Rebuild.
12030
12031 2009-03-01  Mikolaj Zalewski  <mikolajz@google.com>
12032
12033         * layout.cc (Layout::find_or_add_kept_section): New function.
12034         (Layout::add_comdat): Removed.
12035         * layout.h (struct Kept_section): Move out of class Layout.
12036         Remove trailing underscores from field names.  Add group_sections
12037         field.  Rename group_ field to is_group.  Change all uses.
12038         (class Layout): Declare find_or_add_kept_section, not add_comdat.
12039         * object.cc (Sized_relobj::Sized_relobj): Don't initialize
12040         comdat_groups_ field.
12041         (Sized_relobj::include_section_group): Use
12042         find_or_add_kept_section and Kept_section::group_sections.
12043         (Sized_relobj::include_linkonce_section): Likewise.
12044         * object.cc (class Sized_relobj): Don't define Comdat_group or
12045         Comdat_group_table.  Remove find_comdat_group and
12046         add_comdat_group.  Remove comdat_groups_ field.
12047         * plugin.cc (include_comdat_group): Use
12048         Layout::find_or_add_kept_section.
12049
12050 2009-02-28  Ian Lance Taylor  <iant@google.com>
12051
12052         * README: --gc-sections and map files are now supported.  Document
12053         some build requirements.
12054
12055         PR 6992
12056         * symtab.cc (Symbol_table::sized_write_section_symbol): In a
12057         relocatable link set the value of the section symbol to zero.
12058         * object.cc (Sized_relobj::do_finalize_local_symbols): In a
12059         relocatable link don't include the section address in the local
12060         symbol value.
12061
12062 2009-02-27  Ian Lance Taylor  <iant@google.com>
12063
12064         PR 6811
12065         * options.h (class Search_directory): Add is_system_directory.
12066         (class General_options): Declare is_in_system_directory.
12067         * options.cc (get_relative_sysroot): Make static.
12068         (get_default_sysroot): Make static.
12069         (General_optoins::is_in_system_directory): New function.
12070         * fileread.cc (Input_file::is_in_system_directory): New function.
12071         * fileread.h (class Input_file): Declare is_in_system_directory.
12072         * object.h (class Object): Add is_in_system_directory.
12073         (class Input_objects): Remove system_library_directory_ field.
12074         * object.cc (Input_objects::add_object): Don't set
12075         system_library_directory_.
12076         (input_objects::found_in_system_library_directory): Remove.
12077         * symtab.cc (Symbol_table::write_globals): Remove input_objects
12078         parameter.  Change all callers.
12079         (Symbol_table::sized_write_globals): Likewise.
12080         (Symbol_table::warn_about_undefined_dynobj_symbol): Likewise.
12081         Call Object::is_in_system_directory.
12082         * symtab.h (class Symbol_table): Update declarations.
12083
12084         PR 5990
12085         * descriptors.h (Open_descriptor): Add is_on_stack field.
12086         * descriptors.cc (Descriptors::open): If the descriptor is on the
12087         top of the stack, remove it.  Initialize is_on_stack field.
12088         (Descriptors::release): Only add pod to stack if it is not on the
12089         stack already.
12090         (Descriptors::close_some_descriptor): Clear stack_next and
12091         is_on_stack fields.
12092
12093         PR 7091
12094         * output.cc (Output_section::find_starting_output_address): Rename
12095         from starting_output_address; add PADDR parameter; change return
12096         type.
12097         * output.h (class Output_section): Declare
12098         find_starting_output_address instead of starting_output_address.
12099         * object.cc (Sized_relobj::do_finalize_local_symbols): Handle a
12100         section symbol for which we can't find a merge section.
12101
12102         PR 9836
12103         * symtab.cc (Symbol_table::add_from_object): If the visibility is
12104         hidden or internal, force the symbol to be local.
12105         * resolve.cc (Symbol::override_visibility): Define.
12106         (Symbol::override_base): Use override_visibility.
12107         (Symbol_table::resolve): Likewise.
12108         (Symbol::override_base_with_special): Likewise.
12109         (Symbol_table::override_with_special): If the visibility is hidden
12110         or internal, force the symbol to be local.
12111         * symtab.h (class Symbol): Add set_visibility and
12112         override_visibility.
12113         * testsuite/ver_test_1.sh: New file.
12114         * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_1.sh.
12115         (check_DATA): Add ver_test_1.syms.
12116         (ver_test_1.syms): New target.
12117         * testsuite/Makefile.in: Rebuild.
12118
12119 2009-02-25  Cary Coutant  <ccoutant@google.com>
12120
12121         * layout.cc (Layout::choose_output_section): Don't rename sections
12122         when using a linker script that has a SECTIONS clause.
12123         * Makefile.in: Regenerate.
12124
12125         * testsuite/Makefile.am (script_test_5.sh): New test case.
12126         * testsuite/Makefile.in: Regenerate.
12127         * testsuite/script_test_5.cc: New file.
12128         * testsuite/script_test_5.sh: New file.
12129         * testsuite/script_test_5.t: New file.
12130
12131 2009-02-13  Rafael Avila de Espindola  <espindola@google.com>
12132
12133         * archive.cc (Archive::include_member): Update calls to add_symbols.
12134         * dynobj.cc (Sized_dynobj<size, big_endian>::make_version_map): Add
12135         the Layout argument.
12136         * dynobj.h (do_add_symbols): Add the Layout argument.
12137         * object.cc (Sized_relobj<size, big_endian>::do_add_symbols): Add the
12138         Layout argument.
12139         * object.h (Object::add_symbols): Add the Layout argument.
12140         (Object::do_add_symbols): Add the Layout argument.
12141         (Sized_relobj::do_add_symbols): Add the Layout argument.
12142         * plugin.cc (Sized_pluginobj<size, big_endian>::do_add_symbols):
12143         Unify the two versions.
12144         (Add_plugin_symbols): Remove.
12145         * plugin.h (Pluginobj::add_symbols, Pluginobj::do_add_symbols): Remove.
12146         (Sized_pluginobj::do_add_symbols): Unify the two versions.
12147         (Add_plugin_symbols): Remove.
12148         * readsyms.cc (Read_symbols::do_read_symbols): Update call to
12149         Add_symbols. Use Add_symbols instead of Add_plugin_symbols.
12150         (Add_symbols::run): Make it work with Pulginobj.
12151
12152 2009-02-06  Ian Lance Taylor  <iant@google.com>
12153
12154         * object.cc (Sized_relobj::do_layout): Make info message start
12155         with lower case letter.
12156
12157 2009-02-06  Mikolaj Zalewski  <mikolajz@google.com>
12158
12159         * binary.cc: Fix file comment.
12160
12161         * options.h (enum Incremental_disposition): Define.
12162         (class General_options): Add new options: --incremental,
12163         --incremental_changed, --incremental_unchanged,
12164         --incremental_unknown.  Add incremental_disposition_ and
12165         implicit_incremental_ fields.
12166         (General_options::incremental_disposition): New function.
12167         (class Position_dependent_options): Add incremental_disposition
12168         option.
12169         (Position_dependent_options::copy_from_options): Set incremental
12170         dispositions.
12171         * options.cc (General_options::parse_incremental_changed): New
12172         function.
12173         (General_options::parse_incremental_unchanged): New function.
12174         (General_options::parse_incremental_unknown): New function.
12175         (General_options::General_options): Initialize new fields
12176         incremental_disposition_ and implicit_incremental_.
12177         (General_options::finalize): Check for uasge of --incremental-*
12178         without --incremental.
12179
12180 2009-02-06  Chris Demetriou  <cgd@google.com>
12181
12182         * gold.h (gold_undefined_symbol): Change to take only a Symbol
12183         pointer and to report location as the file name associated with
12184         the symbol.
12185         (gold_undefined_symbol_at_location): New function to replace the
12186         old gold_undefined_symbol functionality.
12187         * target-reloc.h (relocate_section): Update to use
12188         gold_undefined_symbol_at_location.
12189         * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
12190         Call gold_undefined_symbol function rather than gold_error.
12191         * errors.h (Errors::undefined_symbol): Take location as a
12192         string, rather than calculating it from a relocation.
12193         * errors.cc (Errors::fatal): Print "fatal error:" before the
12194         formatted message.
12195         (Errors::error, Errors::error_at_location): Print "error: "
12196         before the formatted message.
12197         (Errors::undefined_symbol): Take location as a string, rather
12198         than calculating it from a relocation.
12199         (gold_undefined_symbol_at_location): New function akin to
12200         old gold_undefined_symbol, calculates location from relocation.
12201         (gold_undefined_symbol): Change to take only a Symbol pointer
12202         and to report location as the file name associated with the symbol.
12203         * testsuite/debug_msg.sh: Update for changed error messages.
12204         * testsuite/undef_symbol.sh: Likewise.
12205
12206 2009-02-04  Duncan Sands  <baldrick@free.fr>
12207
12208         PR 9812
12209         * reduced_debug_output.h
12210         (Output_reduced_debug_abbrev_section::failed): Use format for
12211         gold_warning.
12212         (Output_reduced_debug_info_section::faild): Likewise.
12213
12214 2009-01-31  Mikolaj Zalewski  <mikolajz@google.com>
12215
12216         * script.cc (Lazy_demangler): New class.
12217         (Version_script_info::get_symbol_version_helper): Demangle a
12218         symbol only once.
12219
12220 2009-01-29  Cary Coutant  <ccoutant@google.com>
12221
12222         * i386.cc (Target_i386::Relocate::relocate): Recognize non-PIC calls
12223         to __tls_get_addr.
12224         * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
12225
12226 2009-01-28  Ian Lance Taylor  <iant@google.com>
12227
12228         * version.cc (version_string): Bump to 1.9.
12229
12230         * gold.h: Include <cstring> and <stdint.h>.
12231         * version.cc: Include <cstdio>.
12232         * object.cc (Sized_relobj::do_layout): Initialize gc_sd to avoid a
12233         warning.
12234         * reduced_debug_output.cc (insert_into_vector): Rename from
12235         Insert_into_vector; change all callers.  Use Swap_unaligned to
12236         avoid aliasing issue; remove union since it is unnecessary.
12237
12238 2009-01-27  Sriraman Tallam  <tmsriram@google.com>
12239
12240         * Makefile.am (CCFILES): Add gc.cc.
12241         (HFILES): Add gc.h.
12242         * Makefile.in: Regenerate.
12243         * gold.cc (Gc_runner): New class.
12244         (queue_initial_tasks): Call garbage collection related tasks
12245         when corresponding options are invoked.
12246         (queue_middle_gc_tasks): New function.
12247         (queue_middle_tasks): Reorder tasks to allow relocs to be read and
12248         processed early before laying out sections during garbage collection.
12249         * gold.h (queue_middle_gc_tasks): New function.
12250         (is_prefix_of): Move from "layout.cc".
12251         * i386.cc (Target_i386::gc_process_relocs): New function.
12252         * layout.cc (is_prefix_of): Remove. Move to "gold.h"
12253         * main.cc (main): Create object of class "Garbage_collection".
12254         * object.cc (Relobj::copy_symbols_data): New function.
12255         (Relobj::is_section_name_included): New function.
12256         (Sized_relobj::do_layout): Allow this function to be called twice
12257         during garbage collection and defer layout of section during the
12258         first call.
12259         * object.h (Relobj::get_symbols_data): New function.
12260         (Relobj::is_section_name_included): New function.
12261         (Relobj::copy_symbols_data): New function.
12262         (Relobj::set_symbols_data): New function.
12263         (Relobj::get_relocs_data): New function.
12264         (Relobj::set_relocs_data): New function.
12265         (Relobj::is_output_section_offset_invalid): New pure virtual function.
12266         (Relobj::gc_process_relocs): New function.
12267         (Relobj::do_gc_process_relocs): New pure virtual function.
12268         (Relobj::sd_): New data member.
12269         (Sized_relobj::is_output_section_offset_invalid): New function.
12270         (Sized_relobj::do_gc_process_relocs): New function.
12271         * options.h (General_options::gc_sections): Modify to not be a no-op.
12272         (General_options::print_gc_sections): New option.
12273         * plugin.cc (Plugin_finish::run): Remove function call to
12274         Plugin_manager::layout_deferred_objects.  Move it to "gold.cc".
12275         * powerpc.cc (Target_powerpc::gc_process_relocs): New function.
12276         * reloc.cc (Read_relocs::run): Add task to process relocs and
12277         determine unreferenced sections when doing garbage collection.
12278         (Gc_process_relocs): New class.
12279         (Sized_relobj::do_gc_process_relocs): New function.
12280         (Sized_relobj::do_scan_relocs): Don't try to scan the relocs for
12281         sections that are garbage collected.
12282         * reloc.h (Gc_process_relocs): New class.
12283         * sparc.cc (Target_sparc::gc_process_relocs): New function.
12284         * symtab.cc (Symbol::should_add_dynsym_entry): Do not add entries for
12285         symbols whose corresponding sections are garbage collected.
12286         (Symbol_table::Symbol_table): Add new parameter for the garbage
12287         collection object.
12288         (Symbol_table::gc_mark_undef_symbols): New function.
12289         (Symbol_table::gc_mark_symbol_for_shlib): New function.
12290         (Symbol_table::gc_mark_dyn_syms): New function.
12291         (Symbol_table::resolve): Do not treat symbols seen in dynamic objects
12292         as garbage.
12293         (Symbol_table::add_from_object): Likewise.
12294         (Symbol_table::add_from_relobj): When building shared objects, do not
12295         treat externally visible symbols as garbage.
12296         (Symbol_table::sized_finalize_symbol): Do not check dynamic symbol
12297         table information for static and relocatable links.
12298         * symtab.h (Symbol_table::set_gc): New function.
12299         (Symbol_table::gc): New function.
12300         (Symbol_table::gc_mark_undef_symbols): New function.
12301         (Symbol_table::gc_mark_symbol_for_shlib): New function.
12302         (Symbol_table::gc_mark_dyn_syms): New function.
12303         (Symbol_table::gc_): New data member.
12304         * target.h (Sized_target::gc_process_relocs): New pure virtual
12305         function.
12306         * x86_64.cc (Target_x86_64::gc_process_relocs): New function.
12307         * testsuite/testfile.cc (Target_test::gc_process_relocs): New function.
12308
12309 2009-01-20  Chris Faylor <me.sourceware@sourceware.org>
12310
12311         * options.h (General_options::gc_sections): Define as a no-op for now.
12312         (General_options::no_keep_memory): Ditto.
12313         (General_options::Bshareable): Define.
12314         * options.cc (General_options::finalize): Honor -Bshareable.
12315
12316 2009-01-20  Andreas Schwab  <schwab@suse.de>
12317
12318         * powerpc.cc (Powerpc_relocate_functions::rel16_ha): Don't try to
12319         read the value in the contents, since we don't use it.  Use the
12320         template endianness when writing.
12321         (Relocate::relocate): Use it for R_PPC_REL16_HA.
12322
12323 2009-01-19  Andreas Schwab  <schwab@suse.de>
12324
12325         * configure.tgt (powerpc64-*): Fix targ_obj.
12326
12327 2009-01-15  Ian Lance Taylor  <iant@google.com>
12328
12329         * object.cc (Sized_relobj::write_local_symbols): Don't write out
12330         local symbols when stripping all symbols.
12331
12332 2009-01-14  Cary Coutant  <ccoutant@google.com>
12333
12334         * output.cc (Output_reloc): Add explicit instantiations.
12335
12336 2009-01-14  Cary Coutant  <ccoutant@google.com>
12337
12338         * archive.cc (Archive::get_elf_object_for_member): Remove call
12339         to File_read::claim_for_plugin.
12340         * descriptors.cc (Descriptors::open): Remove reference to
12341         is_claimed.
12342         (Descriptors::claim_for_plugin): Remove.
12343         * descriptors.h (Descriptors::claim_for_plugin): Remove.
12344         (Descriptors::is_claimed): Remove.
12345         (claim_descriptor_for_plugin): Remove.
12346         * fileread.cc (File_read::claim_for_plugin): Remove.
12347         * fileread.h (File_read::claim_for_plugin): Remove.
12348         (File_read::descriptor): Reopen descriptor if necessary.
12349         * plugin.cc  (Plugin::load): Add two new APIs to transfer vector.
12350         (Plugin_manager::all_symbols_read): Add task parameter. Change
12351         all callers.
12352         (Plugin_manager::get_input_file): New function.
12353         (Plugin_manager::release_input_file): New function.
12354         (Pluginobj::Pluginobj): Add filesize parameter and initialize
12355         corresponding data member.
12356         (Sized_pluginobj::Sized_pluginobj): Add filesize parameter
12357         and pass to base constructor. Change all callers.
12358         (get_input_file, release_input_file): New functions.
12359         (make_sized_plugin_object): Add filesize parameter. Change all callers.
12360         * plugin.h (Plugin_manager::Plugin_manager): Initialize task_ member.
12361         (Plugin_manager::all_symbols_read): Add task parameter.
12362         (Plugin_manager::get_input_file): New function.
12363         (Plugin_manager::release_input_file): New function.
12364         (Plugin_manager::task_): New data member.
12365         (Pluginobj::Pluginobj): Add filesize parameter.
12366         (Pluginobj::filename): New function.
12367         (Pluginobj::descriptor): New function.
12368         (Pluginobj::filesize): New function.
12369         (Pluginobj::filesize_): New data member.
12370         (Sized_pluginobj::Sized_pluginobj): Add filesize parameter.
12371         * readsyms.cc (Read_symbols::do_read_symbols): Remove call to
12372         File_read::claim_for_plugin; use Object::unlock to unlock the file.
12373
12374         * testsuite/Makefile.am (plugin_test_4): New test case for plugins
12375         with archive libraries.
12376         * testsuite/Makefile.in: Regenerate.
12377         * testsuite/plugin_test.c (struct sym_info): New type.
12378         (get_input_file, release_input_file): New static variables.
12379         (onload): Capture new transfer vector entries.
12380         (claim_file_hook): Stop reading at end of file according to filesize.
12381         Factor out parsing of readelf output into separate function.
12382         (all_symbols_read_hook): Exercise get_input_file and release_input_file
12383         APIs and get the source file name from the symbol table.  Convert
12384         source file name to corresponding object file name.  Print info
12385         message when adding new input files.
12386         (parse_readelf_line): New function.
12387         * testsuite/plugin_test_1.sh: Add checks for new info messages.
12388         * testsuite/plugin_test_2.sh: Likewise.
12389         * testsuite/plugin_test_3.sh: Likewise.
12390         * testsuite/plugin_test_4.sh: New test case.
12391
12392 2009-01-07  Ian Lance Taylor  <iant@google.com>
12393
12394         * version.cc (version_string): Bump to 1.8.
12395
12396 2008-12-23  Cary Coutant  <ccoutant@google.com>
12397
12398         * gold.cc (gold_exit): Call plugin cleanup handlers on exit.
12399         * plugin.cc (Plugin_manager::finish): Rename as
12400         layout_deferred_objects.  Move cleanup to separate function.
12401         (Plugin_manager::cleanup): New function.
12402         (Plugin_finish::run): Call layout_deferred_objects and cleanup
12403         separately.
12404         * plugin.h (Plugin_manager::finish): Rename as
12405         layout_deferred_objects.
12406         (Plugin_manager::cleanup): New function.
12407         (Plugin_manager::cleanup_done): New field.
12408
12409 2008-12-23  Cary Coutant  <ccoutant@google.com>
12410
12411         * plugin.cc (is_visible_from_outside): New function.
12412         (Pluginobj::get_symbol_resolution_info): Call is_visible_from_outside
12413         so we don't return "IR only" status for exported symbols or -r links.
12414
12415         * testsuite/Makefile.am (plugin_test_3): New test case.
12416         * testsuite/Makefile.in: Regenerate.
12417         * testsuite/plugin_test_3.sh: New file.
12418
12419 2008-12-22  Cary Coutant  <ccoutant@google.com>
12420
12421         * object.cc (Sized_relobj::layout_section): New function.
12422         (Sized_relobj::do_layout): Defer layout of input sections until after
12423         plugin has provided replacement files.
12424         (Sized_relobj::do_layout_deferred_sections): New function.
12425         * object.h (Relobj::set_section_offset): Remove virtual keyword.
12426         (Relobj::layout_deferred_sections): New function.
12427         (Relobj::do_layout_deferred_sections): New function.
12428         (Sized_relobj::do_layout_deferred_sections): New function.
12429         (Sized_relobj::layout_section): New function.
12430         (Sized_relobj::Deferred_layout): New structure.
12431         (Sized_relobj::deferred_layout_): New field.
12432         * plugin.cc (Plugin_manager::finish): Renamed, was cleanup.
12433         Change all callers.  Layout deferred sections.
12434         (class Plugin_finish): Renamed, was Plugin_cleanup.  Change all
12435         references.
12436         (Plugin_hook::run): Move code from do_plugin_hook inline.
12437         (Plugin_hook::do_plugin_hook): Remove.
12438         * plugin.h (Plugin_manager::Plugin_manager): Add missing initializers.
12439         (Plugin_manager::finish): Renamed, was cleanup.
12440         (Plugin_manager::should_defer_layout): New function.
12441         (Plugin_manager::add_deferred_layout_object): New function.
12442         (Plugin_manager::Deferred_layout_list): New type.
12443         (Plugin_manager::deferred_layout_objects_): New field.
12444         (Plugin_hook::do_plugin_hook): Remove.
12445
12446 2008-12-17  Ian Lance Taylor  <iant@google.com>
12447
12448         * options.h (class General_options): Add --no case for
12449         --export-dynamic.
12450
12451 2008-12-16  Cary Coutant  <ccoutant@google.com>
12452
12453         * plugin.cc (Plugin::load): Move LDPT_MESSAGE to front of transfer
12454         vector.
12455         (Plugin_manager::claim_file): Create plugin object even if
12456         plugin did not call the add_symbols callback.
12457         (Plugin_obj::get_symbol_resolution_info): Guard against plugin
12458         asking for more symbols than were added.
12459         * testsuite/Makefile.am (plugin_test_1): Add test case with
12460         no global symbols.
12461         (empty.syms): New target.
12462         * testsuite/Makefile.in: Regenerate.
12463         * testsuite/plugin_test.c (claim_file_hook): Add new debug
12464         message. Don't call add_symbols if no globals.
12465         (all_symbols_read_hook): Don't provide replacement for empty
12466         claimed file.
12467
12468 2008-12-12  Ian Lance Taylor  <iant@google.com>
12469
12470         * target-reloc.h (Default_scan_relocatable_relocs): Only discard
12471         r_type == 0 for a local symbol with r_sym == 0.
12472         (scan_relocatable_relocs): Pass r_sym to
12473         local_non_section_strategy.
12474         * reloc.cc (Emit_relocs_strategy::local_non_section_strategy): Add
12475         r_sym parameter.
12476
12477         * configure.ac: Update test for TLS descriptors: they are
12478         supported as of glibc 2.9.
12479         * configure: Rebuild.
12480
12481 2008-12-11  Ian Lance Taylor  <iant@google.com>
12482
12483         PR 7091
12484         * target-reloc.h (Default_scan_relocatable_relocs): For each
12485         function, map r_type == 0 to RELOC_DISCARD.
12486
12487 2008-12-10  Cary Coutant  <ccoutant@google.com>
12488
12489         * layout.cc (Layout::add_comdat): Allow COMDAT group from a replacement
12490         object to override a kept COMDAT group from a plugin object.
12491
12492 2008-12-09  Ian Lance Taylor  <iant@google.com>
12493
12494         PR 7088
12495         * yyscript.y (file_cmd): Handle INPUT.
12496
12497         * testsuite/initpri1.c: Change all declarations to be full
12498         prototypes by adding void, to avoid compiler warnings.
12499
12500 2008-12-05  Rafael Avila de Espindola  <espindola@google.com>
12501
12502         * options.cc (General_options::parse_plugin_opt): New.
12503         (General_options::add_plugin): The argument now is just the filename.
12504         (General_options::add_plugin_option): New.
12505         * options.h (plugin_opt): New.
12506         (add_plugin): Change argument name.
12507         (add_plugin_option): New.
12508         * plugin.cc (Plugin::load): Don't parse the plugin option.
12509         * plugin.h (Plugin::Plugin): Rename argument. Init filename_.
12510         (Plugin::add_option): New.
12511         (Plugin::args_): Change type.
12512         (Plugin::filename_): New.
12513         (Plugin_manager::add_plugin_option): New.
12514         * testsuite/Makefile.am (plugin_test_1): Use new syntax.
12515         * testsuite/Makefile.in: Regenerate.
12516
12517 2008-12-05  Cary Coutant  <ccoutant@google.com>
12518
12519         * layout.cc (Layout::include_section): Check for SHF_EXCLUDE.
12520         Handle --strip-lto-sections option.
12521         * options.h (strip_lto_sections): New option.
12522
12523 2008-12-01  Cary Coutant  <ccoutant@google.com>
12524
12525         * plugin.cc (ld_plugin_message): Change format parameter to const.
12526         Fix mismatch between new[] and delete.
12527
12528 2008-11-14  Cary Coutant  <ccoutant@google.com>
12529
12530         * reloc.cc (Sized_relobj::do_read_relocs): Use constant invalid_address
12531         instead of -1U.
12532
12533 2008-11-05  Craig Silverstein  <csilvers@google.com>
12534
12535         * options.cc (General_options::parse_dynamic_list): New function.
12536         * options.h (General_options): New flags dynamic_list,
12537         dynamic_list_data, dynamic_list_cpp_new, and
12538         dynamic_list_cpp_typeinfo.  New variable dynamic_list_.
12539         (General_options::in_dynamic_list): New function.
12540         * script.cc (Lex::Mode): New enum DYNAMIC_LIST.
12541         (Lex::can_start_name): Add support for DYNAMIC_LIST mode.
12542         (Lex::can_continue_name): Likewise.
12543         (yylex): Likewise.
12544         (read_script_file): New parameter script_options.
12545         (read_dynamic_list): New function.
12546         (Script_options::define_dynamic_list): New function.
12547         (dynamic_list_keyword_parsecodes): New variable.
12548         (dynamic_list_keywords): New variable.
12549         * script.h (Script_options::define_dynamic_list): New function
12550         prototype.
12551         (read_dynamic_list): New function prototype.
12552         * symtab.cc (strprefix): New macro.
12553         (Symbol::should_add_dynsym_entry): Support dynamic_list,
12554         dynamic_list_data, dynamic_list_cpp_new, and
12555         dynamic_list_cpp_typeinfo.
12556         * yyscript.y (PARSING_DYNAMIC_LIST): New token.
12557         (dynamic_list_expr): New rule.
12558         (dynamic_list_nodes): Likewise.
12559         (dynamic_list_node): Likewise.
12560         * testsuite/Makefile.am (dynamic_list): New test.
12561         * testsuite/Makefile.in: Regenerated.
12562         * testsuite/dynamic_list.t: New file.
12563         * testsuite/dynamic_list.sh: New file.
12564
12565 2008-11-05  Craig Silverstein  <csilvers@google.com>
12566
12567         * testsuite/tls_test_c.c: Add prototype for t11 and t11_last.
12568         * testsuite/tls_test_c.c (t11): Add explicit "void" to prototype.
12569         (t11_last): Likewise.
12570         * testsuite/ver_test_6.c (main): Likewise.
12571
12572 2008-10-07  Cary Coutant  <ccoutant@google.com>
12573
12574         * options.c (General_options::finalize): Add check for -static and
12575         -shared.
12576         * gold.cc (queue_middle_tasks): Assert that list of dynamic objects
12577         is not empty.
12578
12579 2008-10-02  Cary Coutant  <ccoutant@google.com>
12580
12581         * plugin.cc (make_sized_plugin_object): Fix conditional
12582         compilation to work when not all targets are enabled.
12583
12584 2008-09-29  Cary Coutant  <ccoutant@google.com>
12585
12586         * archive.cc (Archive::get_file_and_offset): Use filename instead
12587         of name to get library path.
12588         (Archive::include_member): Unlock external member of a thin archive.
12589
12590         * testsuite/Makefile.am (TEST_AR): New variable.
12591         (thin_archive_test_1): New test.
12592         (thin_archive_test_2): New test.
12593         * testsuite/Makefile.in: Regenerate.
12594         * testsuite/thin_archive_main.cc: New file.
12595         * testsuite/thin_archive_test_1.cc: New file.
12596         * testsuite/thin_archive_test_2.cc: New file.
12597         * testsuite/thin_archive_test_3.cc: New file.
12598         * testsuite/thin_archive_test_4.cc: New file.
12599
12600 2008-09-29  Cary Coutant  <ccoutant@google.com>
12601
12602         * mapfile.cc (Mapfile::print_input_section): Change -1U to -1ULL.
12603         * object.cc (Sized_relobj::do_layout): Use constant invalid_address
12604         instead of -1U.
12605         (Sized_relobj::do_finalize_local_symbols): Likewise.
12606         (Sized_relobj::map_to_kept_section): Likewise.
12607         * object.h (Sized_relobj::invalid_address): New constant.
12608         (Sized_relobj::do_output_section_offset): Check for invalid_address
12609         and return -1ULL.
12610         * output.cc (Output_reloc::local_section_offset): Use constant
12611         invalid_address instead of -1U.
12612         (Output_reloc::get_address): Likewise.
12613         (Output_section::output_address): Change -1U to -1ULL.
12614         * output.h (Output_reloc::invalid_address): New constant.
12615         * reloc.cc (Sized_relobj::write_sections): Use constant
12616         invalid_address instead of -1U.
12617         (Sized_relobj::relocate_sections): Likewise.
12618         * symtab.cc (Symbol_table::sized_finalize_symbol): Handle symbol
12619         values for merge sections.
12620         * target-reloc.h (relocate_for_relocatable): Use constant
12621         invalid_address instead of -1U.
12622
12623 2008-09-19  Cary Coutant  <ccoutant@google.com>
12624
12625         Add plugin functionality for link-time optimization (LTO).
12626         * configure.ac (plugins): Add --enable-plugins option.
12627         * configure: Regenerate.
12628         * config.in: Regenerate.
12629         * Makefile.am (LIBDL): New variable.
12630         (CCFILES): Add plugin.cc.
12631         (HFILES): Add plugin.h.
12632         (ldadd_var): Add LIBDL.
12633         * Makefile.in: Regenerate.
12634
12635         * archive.cc: Include "plugin.h".
12636         (Archive::setup): Don't preread archive symbols when using a plugin.
12637         (Archive::get_file_and_offset): Add memsize parameter.  Change callers.
12638         (Archive::get_elf_object_for_member): Call plugin hooks for claiming
12639         files.
12640         (Archive::include_member): Add symbols from plugin objects.
12641         * archive.h (Archive::get_file_and_offset): Add memsize parameter.
12642         * descriptors.cc (Descriptors::open): Check for file descriptors
12643         abandoned by plugins.
12644         (Descriptors::claim_for_plugin): New function.
12645         * descriptors.h (Descriptors::claim_for_plugin): New function.
12646         (Open_descriptor::is_claimed): New field.
12647         (claim_descriptor_for_plugin): New function.
12648         * fileread.cc (File_read::claim_for_plugin): New function.
12649         * fileread.h (File_read::claim_for_plugin): New function.
12650         (File_read::descriptor): New function.
12651         * gold.cc: Include "plugin.h".
12652         (queue_initial_tasks): Add task to call plugin hooks for generating
12653         new object files.
12654         * main.cc: Include "plugin.h".
12655         (main): Load plugin libraries.
12656         * object.h (Pluginobj): Declare.
12657         (Object::pluginobj): New function.
12658         (Object::do_pluginobj): New function.
12659         (Object::set_target): New function.
12660         * options.cc: Include "plugin.h".
12661         (General_options::parse_plugin): New function.
12662         (General_options::General_options): Initialize plugins_ field.
12663         (General_options::add_plugin): New function.
12664         * options.h (Plugin_manager): Declare.
12665         (General_options): Add --plugin option.
12666         (General_options::has_plugins): New function.
12667         (General_options::plugins): New function.
12668         (General_options::add_plugin): New function.
12669         (General_options::plugins_): New field.
12670         * plugin.cc: New file.
12671         * plugin.h: New file.
12672         * readsyms.cc: Include "plugin.h".
12673         (Read_symbols::do_read_symbols): Check for archive before checking
12674         for ELF file.  Call plugin hooks to claim files.
12675         * resolve.cc (Symbol_table::resolve): Record when symbol is referenced
12676         from a real object file; force override when processing replacement
12677         files.
12678         * symtab.cc (Symbol::init_fields): Initialize in_real_elf_ field.
12679         (Symbol::init_base_object): Likewise.
12680         (Symbol::init_base_output_data): Likewise.
12681         (Symbol::init_base_output_segment): Likewise.
12682         (Symbol::init_base_constant): Likewise.
12683         (Symbol::init_base_undefined): Likewise.
12684         (Symbol::output_section): Assert that object is not a plugin.
12685         (Symbol_table::add_from_pluginobj): New function.
12686         (Symbol_table::sized_finalize_symbol): Treat symbols from plugins as
12687         undefined.
12688         (Symbol_table::sized_write_globals): Likewise.
12689         (Symbol_table::add_from_pluginobj): Instantiate template.
12690         * symtab.h (Sized_pluginobj): Declare.
12691         (Symbol::in_real_elf): New function.
12692         (Symbol::set_in_real_elf): New function.
12693         (Symbol::in_real_elf_): New field.
12694         (Symbol_table::add_from_pluginobj): New function.
12695
12696         * testsuite/Makefile.am (AM_CFLAGS): New variable.
12697         (LIBDL): New variable.
12698         (LDADD): Add LIBDL.
12699         (check_PROGRAMS): Add plugin_test_1 and plugin_test_2.
12700         (check_SCRIPTS): Add plugin_test_1.sh and plugin_test_2.sh.
12701         (check_DATA): Add plugin_test_1.err and plugin_test_2.err.
12702         (MOSTLYCLEANFILES): Likewise.
12703         * testsuite/Makefile.in: Regenerate.
12704         * testsuite/plugin_test.c: New file.
12705         * testsuite/plugin_test_1.sh: New file.
12706         * testsuite/plugin_test_2.sh: New file.
12707
12708 2008-09-16  Ian Lance Taylor  <iant@google.com>
12709
12710         * target-reloc.h (relocate_section): Check whether a symbol is
12711         defined by the ABI before reporting an undefined symbol error.
12712         * target.h (Target::is_defined_by_abi): Make parameter const.
12713         (Target::do_is_defined_by_abi): Likewise.
12714         * i386.cc (Target_i386::do_is_defined_by_abi): Likewise.
12715         * powerpc.cc (Target_powerpc::do_is_defined_by_abi): Likewise.
12716         * sparc.cc (Target_sparc::do_is_defined_by_abi): Likewise.
12717         * x86_64.cc (Target_x86_64::do_is_defined_by_abi): Likewise.
12718         * testsuite/Makefile.am (tls_test_shared.so): Add -Wl,-z,defs.
12719         * testsuite/Makefile.in: Rebuild.
12720
12721         * fileread.cc (make_view): Add casts to avoid warning.
12722
12723 2008-09-16  Alexandre Oliva  <aoliva@redhat.com>
12724
12725         * i386.cc (Target_i386::define_tls_base_symbol): Update comments.
12726         * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
12727
12728 2008-09-16  Alexandre Oliva  <aoliva@redhat.com>
12729
12730         * options.h (General_options::output_is_executable): New.
12731         (General_options::output_is_pie): New.
12732         * i386.cc (Target_i386::define_tls_base_symbol): Use SEGMENT_START
12733         for shared libraries.
12734         * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
12735
12736 2008-09-11  Chris Demetriou  <cgd@google.com>
12737
12738         * options.h (origin): New -z option.
12739         * layout.cc (Layout:finish_dynamic_section): If "-z origin"
12740         is specified, set DF_ORIGIN in DT_FLAGS and set DF_1_ORIGIN
12741         in DT_FLAGS_1.
12742
12743 2008-09-05  Cary Coutant  <ccoutant@google.com>
12744
12745         * fileread.cc (File_read::make_view): Add check for attempt to map
12746         beyond end of file.
12747
12748 2008-09-05  Cary Coutant  <ccoutant@google.com>
12749
12750         * symtab.cc (Symbol_table::add_from_dynobj): Fix typos in
12751         explicit instantiations.
12752
12753 2008-08-28  Kris Van Hees  <kris.van.hees@oracle.com>
12754
12755         PR gold/6858
12756         * options.cc (General_options::finalize): Allow undefined symbols
12757         in shlibs if linking -shared.
12758
12759         PR gold/6859
12760         * symtab.cc (Symbol::init_base_undefined): Mark explicitly undefined
12761         symbols as not needing a dynsym entry.
12762
12763 2008-08-20  Craig Silverstein  <csilvers@google.com>
12764
12765         * fileread.cc (File_read::open): Do not lock the file unless it
12766         was successfully opened.
12767
12768 2008-08-14  Cary Coutant  <ccoutant@google.com>
12769
12770         * x86_64.cc (Target_x86_64::Relocate::relocat_tls):
12771         Use addend for DTPOFF32, DTPOFF64, and TPOFF32 relocs.
12772         * testsuite/tls_test.cc (struct int128): 128-bit struct
12773         for testing TLS relocs with non-zero addend.
12774         (v12): New TLS variable.
12775         (t12): New test.
12776         (t_last): Add check for v12.
12777         * testsuite/tls_test.h (t12): New function.
12778         * testsuite/tls_test_main.cc (thread_routine): Call new test.
12779
12780 2008-08-13  Ian Lance Taylor  <iant@google.com>
12781
12782         * layout.cc (Layout::attach_allocated_section_to_segment): Don't
12783         set tls_segment_ or relro_segment_.
12784         (Layout::make_output_segment): Set tls_segment_ and relro_segment_
12785         when appropriate.
12786         * output.h (Output_section::clear_is_relro): New function.
12787         * output.cc (Output_segment::add_output_section): Handle SHF_TLS
12788         sections specially even when output_data_ is empty.
12789         (Output_segment::maximum_alignment): When first section is relro,
12790         only force alignment for PT_LOAD segments.
12791         * script.cc (script_data_segment_align): New function.
12792         (script_data_segment_relro_end): New function.
12793         * script-c.h (script_data_segment_align): Declare.
12794         (script_data_segment_relro_end): Declare.
12795         * script-sections.h (class Script_sections): Declare
12796         data_segment_align and data_segment_relro_end.  Add fields
12797         segment_align_index_ and saw_relro_end_.
12798         * script-sections.cc (class Sections_element): Add set_is_relro
12799         virtual function.  Add new bool* parameter to place_orphan_here.
12800         Add get_output_section virtual function.
12801         (class Output_section_definition): Add set_is_relro.  Add new
12802         bool* parameter to place_orphan_here.  Add get_output_section.
12803         Add is_relro_ field.
12804         (Output_section_definition::Output_section_definition): Initialize
12805         evaluated_address_, evaluated_load_address, evaluated_addralign_,
12806         and is_relro_ fields.
12807         (Output_section_definition::place_orphan_here): Add is_relro
12808         parameter.
12809         (Output_section_definition::set_section_addresses): Set relro for
12810         output section.
12811         (Output_section_definition::alternate_constraint): Likewise.
12812         (class Orphan_output_section): Add new bool* parameter to
12813         place_orphan_here.  Add get_output_section.
12814         (Orphan_output_section::place_orphan_here): Add is_relro
12815         parameter.
12816         (Script_sections::Script_sections): Initialize
12817         data_segment_align_index_ and saw_relro_end_.
12818         (Script_sections::data_segment_align): New function.
12819         (Script_sections::data_segment_relro_end): New function.
12820         (Script_sections::place_orphan): Set or clear is_relro.
12821         (Script_sections::set_section_addresses): Force alignment of first
12822         TLS section.
12823         * yyscript.y (exp): Call script_data_segment_align and
12824         script_data_segment_relro_end.
12825         * testsuite/relro_script_test.t: New file.
12826         * testsuite/relro_test.cc (using_script): Declare.
12827         (t1, t2): Test using_script.
12828         * testsuite/Makefile.am (check_PROGRAMS): Add relro_script_test.
12829         (relro_script_test_SOURCES): Define.
12830         (relro_script_test_DEPENDENCIES): Define.
12831         (relro_script_test_LDFLAGS): Define.
12832         (relro_script_test_LDADD): Define.
12833         (relro_script_test.so): New target.
12834         * testsuite/Makefile.in: Rebuild.
12835
12836 2008-08-06  Cary Coutant <ccoutant@google.com>
12837
12838         * archive.cc (Archive::total_archives, Archive::total_members)
12839         (Archive::total_members_loaded): New variables.
12840         (Archive::setup): Add parameter.  Add option to preread
12841         archive symbols.
12842         (Archive::read_armap): Add counter.
12843         (Archive::get_file_and_offset): New function.
12844         (Archive::get_elf_object_for_member): New function.
12845         (Archive::read_all_symbols): New function.
12846         (Archive::read_symbols): New function.
12847         (Archive::add_symbols): Add counters.
12848         (Archive::include_all_members): Use armap to find members if it's
12849         already built.
12850         (Archive::include_member): Skip reading symbols if already read.
12851         Factored code into Archive::get_file_and_offset and
12852         Archive::get_elf_object_for_member.  Changed call to
12853         Mapfile::report_include_archive_member.
12854         (Archive::print_stats): New function.
12855         * archive.h: Declare Object and Read_symbols_data classes.
12856         (Archive::Archive): Add initializers for new members.
12857         (Archive::setup): Add parameter.
12858         (Archive::print_stats): New function.
12859         (Archive::total_archives, Archive::total_members)
12860         (Archive::total_members_loaded): New variables.
12861         (Archive::get_file_and_offset): New function.
12862         (Archive::get_elf_object_for_member): New function.
12863         (Archive::read_all_symbols): New function.
12864         (Archive::read_symbols): New function.
12865         (Archive::Archive_member): New class.
12866         (Archive::members_): New member.
12867         (Archive::num_members_): New member.
12868         * main.cc: Include archive.h.
12869         (main): Call Archive::print_stats.
12870         * mapfile.cc (Mapfile::report_include_archive_member): Delete
12871         archive parameter; member_name is now the fully-decorated name.
12872         * mapfile.h (Mapfile::report_include_archive_member): Likewise.
12873         * options.h: (General_options): Add --preread-archive-symbols option.
12874         * readsyms.cc (Read_symbols::do_read_symbols): Change call to
12875         Archive::setup.
12876
12877 2008-08-04  Ian Lance Taylor  <iant@google.com>
12878
12879         * symtab.h (Symbol::use_plt_offset): New function.
12880         * i386.cc (Relocate::relocate): Call Symbol::use_plt_offset.
12881         * powerpc.cc (Relocate::relocate): Likewise.
12882         * sparc.cc (Relocate::relocate): Likewise.
12883         * x86_64.cc (Relocate::relocate): Likewise.
12884         * testsuite/weak_plt.sh: New test.
12885         * testsuite/weak_plt_main.cc: New test.
12886         * testsuite/weak_plt_shared.cc: New test.
12887         * testsuite/Makefile.am (check_SCRIPTS): Add weak_plt.sh.
12888         (check_PROGRAMS): Add weak_plt.
12889         (check_DATA): Add weak_plt_shared.so.
12890         (weak_plt_main_pic.o, weak_plt): New targets.
12891         (weak_plt_shared_pic.o, weak_plt_shared.so): New targets.
12892         * testsuite/Makefile.in: Rebuild.
12893
12894         * testsuite/Makefile.am (weak_alias_test_1.so): Depend upon
12895         gcctestdir/ld.
12896         (weak_alias_test_2.so, weak_alias_test_4.so): Likewise.
12897         * testsuite/Makefile.in: Rebuild.
12898
12899 2008-08-04  Alan Modra  <amodra@bigpond.net.au>
12900
12901         * Makefile.am (POTFILES.in): Set LC_ALL=C.
12902         * Makefile.in: Regenerate.
12903         * po/POTFILES.in: Regenerate.
12904
12905 2008-07-29  Ian Lance Taylor  <iant@google.com>
12906
12907         * script.cc (Script_options::finalize_symbols): Finalize SECTIONS
12908         symbols before other symbols.
12909         * testsuite/script_test_2.cc (test_addr): Declare.
12910         (test_addr_alias): Declare.
12911         (main): Check that test_addr and test_addr_alias have the right
12912         values.
12913         * testsuite/script_test_2.t: Define test_addr_alias and
12914         test_addr.
12915
12916 2008-07-24  Ian Lance Taylor  <iant@google.com>
12917
12918         PR 5990
12919         * descriptors.cc: New file.
12920         * descriptors.h: New file.
12921         * gold-threads.h (class Hold_optional_lock): New class.
12922         * fileread.cc: Include "descriptors.h".
12923         (File_read::~File_read): Release descriptor rather than closing
12924         it.
12925         (File_read::open) [file]: Call open_descriptor rather than open.
12926         Set is_descriptor_opened_.
12927         (File_read::open) [memory]: Assert that descriptor is not open.
12928         (File_read::reopen_descriptor): New function.
12929         (File_read::release): Release descriptor.
12930         (File_read::do_read): Make non-const.  Reopen descriptor.
12931         (File_read::read): Make non-const.
12932         (File_read::make_view): Reopen descriptor.
12933         (File_read::do_readv): Likewise.
12934         * fileread.h (class File_read): Add is_descriptor_opened_ field.
12935         Update declarations.
12936         * layout.cc: Include "descriptors.h".
12937         (Layout::create_build_id): Use open_descriptor rather than open.
12938         * output.cc: Include "descriptors.h".
12939         (Output_file::open): Use open_descriptor rather than open.
12940         * archive.cc (Archive::const_iterator): Change Archive to be
12941         non-const.
12942         (Archive::begin, Archive::end): Make non-const.
12943         (Archive::count_members): Likewise.
12944         * archive.h (class Archive): Update declarations.
12945         * object.h (Object::read): Make non-const.
12946         * Makefile.am (CCFILES): Add descriptors.cc.
12947         (HFILES): Add descriptors.h.
12948         * Makefile.in: Rebuild.
12949
12950         PR 6716
12951         * gold.h: Always include <clocale>.  Add Solaris workarounds
12952         following code in binutils/sysdep.h.
12953
12954         PR 6048
12955         * ehframe.cc (Eh_frame::add_ehframe_input_section): Check whether
12956         this->eh_frame_hdr_ is NULL before using it.
12957
12958         * dynobj.cc (Versions::Versions): Update comment.
12959
12960         * dynobj.cc (Versions::Versions): If there is an soname, use it as
12961         the base version name.
12962
12963         * stringpool.cc (Stringpool_template::add_with_length): Set key to
12964         array size plus one.
12965         (Stringpool_template::set_string_offsets): Subtract one from key
12966         before using it as an array index.
12967         (Stringpool_template::get_offset_with_length): Likewise.
12968         (Stringpool_template::write_to_buffer): Likewise.
12969         * stringpool.h (Stringpool_template::get_offset_from_key):
12970         Likewise.
12971
12972 2008-07-23  Ian Lance Taylor  <iant@google.com>
12973
12974         PR 6658
12975         * object.h (Merged_symbol_value::value): Do our best to handle a
12976         negative addend.
12977
12978         PR 6647
12979         * script.cc (Version_script_info::get_versions): Don't add empty
12980         version tag to return value.
12981         (Version_script_info::get_symbol_version_helper): Change return
12982         type to bool.  Add pversion parameter.  Change all callers.
12983         (script_register_vers_node): Don't require a non-NULL tag.
12984         * script.h (class Version_script_info): Update declarations.
12985         (Version_script_info::get_symbol_version): Change return type to
12986         bool.  Add version parameter.  Change all callers.
12987         * symtab.cc (Sized_symbol::add_from_relobj): Rework version
12988         handling.  Handle an empty version from a version script.
12989         (Symbol_table::define_special_symbol): Likewise.
12990         * testsuite/ver_test_10.script: New file.
12991         * testsuite/ver_test_10.sh: New file.
12992         * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_10.sh.
12993         (check_DATA): Add ver_test_10.syms.
12994         (ver_test_10.syms, ver_test_10.so): New target.
12995         * testsuite/Makefile.in: Rebuild.
12996
12997 2008-07-23  Simon Baldwin  <simonb@google.com>
12998
12999         * symtab.cc (Symbol_table::sized_write_symbol): Only set st_size
13000         to zero for undefined symbols from dynamic libraries.
13001
13002 2008-07-23  Ian Lance Taylor  <iant@google.com>
13003
13004         * symtab.cc (Symbol_table::resolve): Remove version parameter.
13005         Change all callers.
13006         * symtab.h (class Symbol_table): Update declaration.
13007         * testsuite/ver_test_9.cc: New file.
13008         * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_9.
13009         (ver_test_9_SOURCES, ver_test_9_DEPENDENCIES): Define.
13010         (ver_test_9_LDFLAGS, ver_test_9_LDADD): Define.
13011         (ver_test_9.so, ver_test_9.o): New targets.
13012         * testsuite/Makefile.in: Rebuild.
13013
13014 2008-07-22  Ian Lance Taylor  <iant@google.com>
13015
13016         * options.h (class General_options): Define --check-sections.
13017         * layout.cc (Layout::set_segment_offsets): Handle
13018         --check-sections.
13019
13020         * options.h (class General_options): Define -n/--nmagic and
13021         -N/--omagic.
13022         * options.cc (General_options::finalize): For -n/--nmagic or
13023         -N/--omagic, set -static.
13024         * layout.cc (Layout::attach_allocated_section_to_segment): If
13025         -N/--omagic, don't put read-only and read-write sections in
13026         different segments.
13027         (Layout::find_first_load_seg): If -N/--omagic, don't insist on
13028         finding a read-only segment.
13029         (Layout::set_segment_offsets): If -N/--omagic or -n/--nmagic,
13030         don't set the minimum segment alignment to the common page size,
13031         and don't set the file offset to the address modulo the page size.
13032         * script-sections.cc (Script_sections::create_segments): If
13033         -n/--omagic, don't put read-only and read-write sections in
13034         different segments.
13035
13036         * cref.cc: New file.
13037         * cref.h: New file.
13038         * options.h (class General_options): Add --print-symbol-counts.
13039         * main.cc (main): Issue defined symbol report if requested.
13040         * archive.cc (Archive::interpret_header): Make into a const member
13041         function.
13042         (Archive::add_symbols): Call Input_objects::archive_start and
13043         archive_stop.
13044         (Archive::const_iterator): Define new class.
13045         (Archive::begin, Archive::end): New functions.
13046         (Archive::include_all_members): Rewrite to use iterator.
13047         (Archive::count_members): New function.
13048         * archive.h (class Archive): Update declarations.
13049         (Archive::filename): New function.
13050         * object.cc: Include "cref.h".
13051         (Sized_relobj::Sized_relobj): Initialize defined_count_.
13052         (Sized_relobj::do_get_global_symbol_counts): New function.
13053         (Input_objects::add_object): Add object to cross-referencer.
13054         (Input_objects::archive_start): New function.
13055         (Input_objects::archive_stop): New function.
13056         (Input_objects::print_symbol_counts): New function.
13057         * object.h: Declare Cref and Archive.
13058         (Object::get_global_symbol_counts): New function.
13059         (Object::do_get_global_symbol_counts): New pure virtual function.
13060         (class Sized_relobj): Add defined_count_ field.  Update
13061         declarations.
13062         (class Input_objects): Add cref_ field.  Update constructor.
13063         Update declarations.
13064         * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize symbols_ and
13065         defined_count_.
13066         (Sized_dynobj::do_add_symbols): Allocate symbols_ if printing
13067         symbol counts.
13068         (Sized_dynobj::do_get_global_symbol_counts): New function.
13069         * dynobj.h (class Sized_dynobj): Add fields symbols_ and
13070         defined_count_.  Update declarations.  Define Symbols typedef.
13071         * symtab.cc (Symbol_table::add_from_relobj): Add defined
13072         parameter.  Change all callers.
13073         (Symbol_table::add_from_dynobj): Add sympointers and defined
13074         parameters.  Change all callers.
13075         * symtab.h (class Symbol_table): Update declarations.
13076         * Makefile.am (CCFILES): Add cref.cc.
13077         (HFILES): Add cref.h.
13078         * Makefile.in: Rebuild.
13079
13080 2008-07-22  Simon Baldwin  <simonb@google.com>
13081
13082         * symtab.cc (Symbol_table::sized_write_symbol): Set symbol size
13083         to zero when writing undefined symbols.
13084
13085 2008-07-22  Ian Lance Taylor  <iant@google.com>
13086
13087         * output.cc (Output_section::add_input_section): Don't try to
13088         merge empty merge sections.
13089
13090 2008-07-21  Craig Silverstein  <csilvers@google.com>
13091
13092         * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
13093         Include symbol version in error message.
13094
13095 2008-07-20  Chris Demetriou  <cgd@google.com>
13096
13097         * configure.ac (gold_cv_c_random_seed): New configured variable.
13098         (RANDOM_SEED_CFLAGS): New substituted variable.
13099         * Makefile.am (AM_CFLAGS, AM_CXXFLAGS): Add $(RANDOM_SEED_CFLAGS).
13100         * configure: Rebuild.
13101         * Makefile.in: Likewise.
13102         * testsuite/Makefile.in: Likewise.
13103
13104 2008-07-18  Ian Lance Taylor  <iant@google.com>
13105
13106         * symtab.cc (Symbol_table::add_from_object): Rewrite the case
13107         where we see NAME/NULL and NAME/VERSION  as separate symbols.
13108         * testsuite/ver_test_main.cc (main): Call t4.
13109         (t4, t4_2a): Define.
13110         * testsuite/ver_test_2.cc (t4_2): Define.
13111         * testsuite/ver_test_2.script: Put t4_2a in VER2.
13112         * testsuite/ver_test_4.cc (t4_2a): Define.
13113         * testsuite/ver_test_4.script: Put t4_2a in VER2.
13114         * testsuite/ver_test.h (t4, t4_2, t4_2a): Declare.
13115
13116 2008-07-17  Ian Lance Taylor  <iant@google.com>
13117
13118         * dynobj.cc (Versions::add_def): If we give an error about a
13119         missing version, go ahead and create the version anyhow.
13120
13121 2008-07-10  Ian Lance Taylor  <iant@google.com>
13122
13123         Handle output sections with more than 0x7fffffff bytes.
13124         * object.h (class Relobj): Change map_to_output_ to
13125         output_sections_, and just keep a section pointer.  Change all
13126         uses.  Move comdat group support to Sized_relobj.
13127         (Relobj::is_section_specially_mapped): Remove.
13128         (Relobj::output_section): Remove poff parameter.  Change all
13129         callers.
13130         (Relobj::output_section_offset): New function.
13131         (Relobj::set_section_offset): Rewrite.
13132         (Relobj::map_to_output): Remove.
13133         (Relobj::output_sections): New function.
13134         (Relobj::do_output_section_offset): New pure virtual function.
13135         (Relobj::do_set_section_offset): Likewise.
13136         (class Sized_relobj): Add section_offsets_ field.  Add comdat
13137         group support from Relobj.  Update declarations.
13138         (Sized_relobj::get_output_section_offset): New function.
13139         (Sized_relobj::do_output_section_offset): New function.
13140         (Sized_relobj::do_set_section_offset): New function.
13141         * object.cc (Relobj::output_section_address): Remove.
13142         (Sized_relobj::Sized_relobj): Initialize new fields.
13143         (Sized_relobj::include_section_group): Cast find_kept_object to
13144         Sized_relobj.
13145         (Sized_relobj::include_linkonce_section): Likewise.
13146         (Sized_relobj::do_layout): Use separate arrays for output section
13147         and output offset.
13148         (Sized_relobj::do_count_local_symbols): Change map_to_output to
13149         output_sections.
13150         (Sized_relobj::do_finalize_local_symbols): Change map_to_output to
13151         output_sections and section_offsets.
13152         (Sized_relobj::write_local_symbols): Likewise.
13153         (map_to_kept_section): Compute output address directly.
13154         * reloc.cc (Sized_relobj::do_read_relocs): Change map_to_output to
13155         output_sections and section_offsets.
13156         (Sized_relobj::write_sections): Likewise.
13157         (Sized_relobj::relocate_sections): Likewise.
13158         * symtab.cc (sized_finalize_symbol): Use output_section_offset.
13159         * output.h (class Output_reloc): Update declarations.  Change
13160         u2_.relobj to Sized_relobj*.
13161         (class Output_data_reloc): Change add functions to use
13162         Sized_relobj*.
13163         * output.cc (Output_reloc::Output_reloc): Change relobj to
13164         Sized_relobj*.
13165         (Output_reloc::local_section_offset): Change return type to
13166         Elf_Addr.  Use get_output_section_offset.
13167         (Output_reloc::get_address): Likewise.
13168         (Output_section::is_input_address_mapped): Don't call
13169         is_section_specially_mapped.
13170         (Output_section::output_offset): Likewise.
13171         (Output_section::output_address): Likewise.
13172         (Output_section::starting_output_address): Likewise.
13173         * copy-relocs.cc (Copy_relocs::copy_reloc): Change object
13174         parameter to Sized_relobj*.
13175         (Copy_relocs::need_copy_reloc): Likewise.
13176         (Copy_relocs::save): Likewise.
13177         * copy-relocs.h (class Copy_relocs): Update declarations.
13178         (class Copy_relocs::Copy_reloc_entry): Change constructor to use
13179         Sized_relobj*.  Change relobj_ field to Sized_relobj*.
13180         * target-reloc.h (relocate_for_relocatable): Change
13181         offset_in_output_section type to Elf_Addr.  Change code that uses
13182         it as well.
13183         * layout.cc (Layout::layout): Always set *off.
13184         * mapfile.cc (Mapfile::print_input_section): Use
13185         output_section_offset.
13186         * i386.cc (Target_i386::copy_reloc): Change object parameter to
13187         Sized_relobj*.
13188         * powerpc.cc (Target_powerpc::copy_reloc): Likewise.
13189         * sparc.cc (Target_sparc::copy_reloc): Likewise.
13190         * x86_64.cc (Target_x86_64::copy_reloc): Likewise.
13191
13192 2008-07-03  Ian Lance Taylor  <iant@google.com>
13193
13194         * layout.cc (Layout::include_section): Do not discard unrecognized
13195         SHT_STRTAB sections.
13196
13197 2008-06-30  Craig Silverstein  <csilvers@cs.stanford.edu>
13198
13199         * script.cc (Lex::can_continue_name): Make '?' allowable in
13200         version-script names.
13201         * testsuite/version_script.map: Change glob pattern to use '?'
13202
13203 2008-06-30  Manish Singh  <yosh@gimp.org>
13204
13205         PR 6585
13206         * symtab.cc (Symbol_table::add_undefined_symbols_from_command_line):
13207         Correct typo.
13208
13209 2008-06-30  Ian Lance Taylor  <iant@google.com>
13210
13211         PR 6660
13212         PR 6682
13213         * powerpc.cc (Powerpc_relocate_functions::addr16_ha) [both
13214         versions]: Don't try to read the value in the contents, since we
13215         don't use it.  Use the template endianness when writing.
13216
13217 2008-06-25  Cary Coutant  <ccoutant@google.com>
13218
13219         * fileread.cc (File_read::make_view): Assert on zero-length view.
13220         * object.cc (Sized_relobj::do_read_symbols): Don't try to read
13221         symbol table when there are no symbols to read.
13222
13223 2008-06-23  Craig Silverstein  <csilvers@google.com>
13224
13225         * version.cc (version_string): Bump to 1.7
13226
13227 2008-06-18  Craig Silverstein  <csilvers@google.com>
13228
13229         * powerpc.cc (Powerpc_relocate_functions::addr16_ha): cast
13230         constant 0xFFFF to type Valtype.
13231         (Powerpc_relocate_functions::rel16_ha): Likewise.
13232
13233 2008-06-17  Ian Lance Taylor  <iant@google.com>
13234
13235         * output.h (Output_section::Input_section): Initialize p2align_ to
13236         zero for Output_section_data constructors.
13237         (Output_section::Input_section::addralign): If not an input
13238         section, return the alignment of the Output_section_data.
13239         * testsuite/copy_test.cc: New file.
13240         * testsuite/copy_test_1.cc: New file.
13241         * testsuite/copy_test_2.cc: New file.
13242         * testsuite/Makefile.am (check_PROGRAMS): Add copy_test.
13243         (copy_test_SOURCES, copy_test_DEPENDENCIES): New variables.
13244         (copy_test_LDFLAGS, copy_test_LDADD): New variables.
13245         (copy_test_1_pic.o, copy_test_1.so): New targets.
13246         (copy_test_2_pic.o, copy_test_2.so): New targets.
13247         * testsuite/Makefile.in: Rebuild.
13248
13249         * script-sections.cc (Script_sections::place_orphan): Initialize
13250         local variable exact.
13251
13252 2008-06-13  David Edelsohn  <edelsohn@gnu.org>
13253
13254         * powerpc.cc (Output_data_plt_powerpc::do_write): 8 + 4 = 0xC.
13255
13256 2008-06-12  David Edelsohn  <edelsohn@gnu.org>
13257             David S. Miller  <davem@davemloft.net>
13258
13259         * powerpc.cc: New file.
13260         * Makefile.am (TARGETSOURCES): Add powerpc.cc
13261         (ALL_TARGETOBJS): Add powerpc.$(OBJEXT)
13262         * configure.tgt: Add entries for powerpc-* and powerpc64-*.
13263         * Makefile.in: Rebuild.
13264
13265 2008-06-09  Ian Lance Taylor  <iant@google.com>
13266
13267         * testsuite/relro_test.cc: Include <cstdio>, <cstdlib>, and
13268         <exception>.
13269         (throwing, orig_terminate): New static variables.
13270         (terminate_handler): New static function.
13271         (t2): Set terminate handler.
13272
13273 2008-06-05  Kris Van Hees  <kris.van.hees@oracle.com>
13274
13275         PR 6584
13276         * binary.cc (Binary_to_elf::sized_convert): Fix .data
13277         alignment.
13278
13279 2008-05-30  Cary Coutant  <ccoutant@google.com>
13280
13281         * archive.cc (Archive::include_all_members) Correct to step
13282         over symbol table and extended name table in thin archives.
13283
13284 2008-05-29  Kris Van Hees  <kris.van.hees@oracle.com>
13285
13286         PR 6407
13287         * target-reloc.h (relocate_for_relocatable): Fix new_offset
13288         calculation.
13289
13290 2008-05-28  Caleb Howe  <cshowe@google.com>
13291
13292         * reduced_debug_output.cc: New file.
13293         * reduced_debug_output.h: New file.
13294         * options.h (class General_options): Add --strip-debug-non-line.
13295         * options.cc (General_options::finalize): Add strip_debug_non_line
13296         to the strip heirarchy.
13297         * layout.h (class Layout): Add debug_abbrev_ and debug_info_
13298         fields.
13299         * layout.cc: Include "reduced_debug_output.h".
13300         (Layout::Layout): Initialize new fields.
13301         (line_only_debug_sections): New static array.
13302         (is_lines_only_debug_sections): New static inline function.
13303         (Layout::include_section): Handle --strip-debug-non-line.
13304         (Layout::make_output_section): If --strip-debug-non-line, build
13305         new output sections for .debug_abbrev and .debug_info.
13306         * dwarf_reader.cc (read_unsigned_LEB_128): Move to namespace
13307         gold.  Warn about possible overflow.
13308         (read_signed_LEB_128): Likewise.
13309         * dwarf_reader.h: (read_unsigned_LEB_128): Declare.
13310         (read_signed_LEB_128): Declare.
13311         * Makefile.am (CCFILES): Add reduced_debug_output.cc.
13312         (HFILES): Add reduced_debug_output.h.
13313         * Makefile.in: Rebuild.
13314
13315 2008-05-21  Ian Lance Taylor  <iant@google.com>
13316
13317         * mapfile.cc: New file.
13318         * mapfile.h: New file.
13319         * options.h (class General_options): Add -M/--print-map and -Map.
13320         * options.cc (General_options::finalize): Make -M equivalent to
13321         -Map -.
13322         * main.cc: Include <cstdio> and "mapfile.h".
13323         (main): Open mapfile if requested.
13324         * gold.cc (class Middle_runner): Add mapfile_ field.  Update
13325         constructor.  Change caller.
13326         (queue_initial_tasks): Add mapfile parameter.  Change caller.
13327         (queue_middle_tasks): Likewise.
13328         * gold.h (queue_initial_tasks, queue_middle_tasks): Update
13329         declarations.
13330         * archive.cc: Include "mapfile.h".
13331         (Archive::add_symbols): Add mapfile parameter.  Change all
13332         callers.  Pass mapfile, symbol, and reason to include_member.
13333         (Archive::include_all_members): Add mapfile parameter.  Change all
13334         callers.
13335         (Archive::include_member): Add mapfile, sym, and why parameters.
13336         Change all callers.  Report inclusion to map file.
13337         * archive.h: Include "fileread.h".
13338         (class Archive): Update declarations.
13339         (Archive::file): New const method.
13340         (class Add_archive_symbols): Add mapfile_ field.  Update
13341         constructor.  Change all callers.
13342         * readsyms.h (class Read_symbols): Likewise.
13343         (class Finish_group): Likewise.
13344         (class Read_script): Likewise.
13345         * common.cc: Include "mapfile.h".
13346         (Symbol_table::allocate_commons): Add mapfile parameter.  Change
13347         all callers.
13348         (Symbol_table::do_allocate_commons): Likewise.
13349         (Symbol_table::do_allocate_commons_list): Likewise.  Report common
13350         symbol allocation to mapfile.
13351         * common.h (class Allocate_commons_task): Add mapfile_ field.
13352         Update constructor.  Change all callers.
13353         * symtab.h (class Symbol_table): Update declarations.
13354         * layout.cc: Include "mapfile.h".
13355         (Layout_task_runner::run): Print information to mapfile.
13356         (Layout::create_gold_note): Change Output_data_fixed_space to
13357         Output_data_zero_fill.
13358         (Layout::create_build_id): Likewise.
13359         (Layout::print_to_mapfile): New function.
13360         * layout.h (class Layout_task_runner): Add mapfile_ field.  Update
13361         constructor.  Change caller.
13362         (class Layout): Declare print_to_mapfile.
13363         * output.cc (Output_section::Input_section::print_to_mapfile): New
13364         function.
13365         (Output_section::add_input_section): If producing a map, always
13366         add to input_sections_ list.
13367         (Output_section::do_print_to_mapfile): New function.
13368         (Output_segment::print_sections_to_mapfile): New function.
13369         (Output_segment::print_section_list_to_mapfile): New function.
13370         * output.h: Include "mapfile.h".
13371         (Output_data::print_to_mapfile): New function.
13372         (Output_data::do_print_to_mapfile): New virtual function.
13373         (Output_segment_headers::do_print_to_mapfile): New function.
13374         (Output_file_header::do_print_to_mapfile): New function.
13375         (Output_data_const::do_print_to_mapfile): New function.
13376         (class Output_data_const_buffer): Add map_name_ field.  Update
13377         constructor.  Change all callers.  Add do_print_to_mapfile
13378         function.
13379         (class Output_data_fixed_space): Likewise.
13380         (class Output_data_space): Likewise.
13381         (class Output_data_zero_fill): New class.
13382         (Output_data_strtab::do_print_to_mapfile): New function.
13383         (Output_data_reloc_base::do_print_to_mapfile): New function.
13384         (Output_relocatable_relocs::do_print_to_mapfile): New function.
13385         (Output_data_group::do_print_to_mapfile): New function.
13386         (Output_data_got::do_print_to_mapfile): New function.
13387         (Output_data_dynamic::do_print_to_mapfile): New function.
13388         (Output_symtab_xindex::do_print_to_mapfile): New function.
13389         (class Output_section): Declare do_print_to_mapflie.  Declare
13390         print_to_mapfile in Input_section.
13391         (class Output_segment): Declare new functions.
13392         * object.h (Sized_relobj::symbol_count): New function.
13393         * script-sections.cc
13394         (Output_section_element_dot_assignment::set_section_addresses):
13395         Change Output_data_fixed_space to Output_data_zero_fill.
13396         (Output_data_expression::do_print_to_mapfile): New function.
13397         * script.cc (read_input_script): Add mapfile parameter.  Change
13398         all callers.
13399         * script.h (read_input_script): Update declaration.
13400         * ehframe.h (Eh_frame_hdr::do_print_to_mapfile): New function.
13401         (Eh_frame::do_print_to_mapfile): New function.
13402         * merge.h (Output_merge_data::do_print_to_mapfile): New function.
13403         (Output_merge_string::do_print_to_mapfile): New function.
13404         * i386.cc (Output_data_plt_i386::do_print_to_mapfile): New
13405         function.
13406         * sparc.cc (Output_data_plt_sparc::do_print_to_mapfile): New
13407         function.
13408         * x86_64.cc (Output_data_plt_x86_64::do_print_to_mapfile): New
13409         function.
13410         * Makefile.am (CCFILES): Add mapfile.cc.
13411         (HFILES): Add mapfile.h.
13412         * Makefile.in: Rebuild.
13413
13414 2008-05-19  Ian Lance Taylor  <iant@google.com>
13415
13416         * options.h (class General_options): Add -z relro.
13417         * layout.cc (Layout::Layout): Initialize relro_segment_.
13418         (Layout::add_output_section_data): Return the output section.
13419         (Layout::make_output_section): Rcognize relro sections and mark
13420         them appropriately.
13421         (Layout::attach_allocated_section_to_segment): Put relro sections
13422         in a PT_GNU_RELRO segment.
13423         (Layout::create_initial_dynamic_sections): Mark the .dynamic
13424         section as relro.
13425         (Layout::segment_precedes): Sort PT_GNU_RELRO segments after
13426         PT_TLS segments.
13427         (Layout::linkonce_mapping): Map d.rel.ro.local to
13428         .data.rel.ro.local.
13429         (Layout::output_section_name): Us .data.rel.ro.local for any
13430         section which begins with that.
13431         * layout.h (class Layout): Update add_output_section_data
13432         declaration.  Add relro_segment_ field.
13433         * output.cc (Output_section::Output_section): Initialize is_relro_
13434         and is_relro_local_ fields.
13435         (Output_segment::add_output_section): Group relro sections.
13436         (Output_segment::is_first_section_relro): New function.
13437         (Output_segment::maximum_alignment): If there is a relro section,
13438         align the segment to the common page size.
13439         (Output_segment::set_section_addresses): Track whether we are
13440         looking at relro sections.  If the last section is a relro
13441         section, align to the common page size.
13442         (Output_segment::set_section_list_addresses): Add in_relro
13443         parameter.  Change all callers.  Align to the page size when
13444         moving from relro to non-relro section.
13445         (Output_segment::set_offset): Align memsz of a PT_GNU_RELRO
13446         segment.
13447         * output.h (class Output_section): Add is_relro_ and
13448         is_relro_local_ fields.
13449         (Output_section::is_relro): New function.
13450         (Output_section::set_is_relro): New function.
13451         (Output_section::is_relro_local): New function.
13452         (Output_section::set_is_relro_local): New function.
13453         (class Output_segment): Update declarations.
13454         * i386.cc (Target_i386::got_section): Mark .got section as relro.
13455         * sparc.cc (Target_sparc::got_section): Likewise.
13456         * x86_64.cc (Target_x86_64::got_section): Likewise.
13457         * testsuite/relro_test_main.cc: New file.
13458         * testsuite/relro_test.cc: New file.
13459         * testsuite/Makefile.am (check_PROGRAMS): Add relro_test.
13460         (relro_test_SOURCES, relro_test_DEPENDENCIES): New variables.
13461         (relro_test_LDFLAGS, relro_test_LDADD): New variables.
13462         (relro_test.so, relro_test_pic.o): New targets.
13463         * testsuite/Makefile.in: Rebuild.
13464
13465 2008-05-16  Ian Lance Taylor  <iant@google.com>
13466
13467         * output.cc (Output_segment::add_output_section): Remove front
13468         parameter.
13469         * output.h (class Output_segment): Remove
13470         add_initial_output_section and overloaded add_output_section.
13471         Update declaration of remaining add_output_section.
13472         * layout.cc (Layout::create_interp): Call add_output_section
13473         rather than add_initial_output_section.
13474         (Layout::finish_dynamic_section): Likewise.
13475
13476         * i386.cc (Target_i386::Relocate::relocate_tls): Set dynamic type
13477         for TLS_GOTDESC and TLS_DESC_CALL.  Only optimize TLS_LDO_32 if we
13478         know the dynamic type.
13479         * x86_64.cc (Target_x86_64::Relocate): Add saw_tls_block_reloc_
13480         field.  Initialize it in constructor.
13481         (Target_x86_64::Relocate::relocate_tls): Record that we saw a TLS
13482         block reloc for TLSGD, GOTPC32_TLSDESC, TLSDESC_CALL, and TLSLD.
13483         Only optimize DTPOFF32 and DTPOFF64 if we have seen a TLS block
13484         reloc.
13485
13486         * output.cc (Output_reloc::get_address): Change return type to
13487         Elf_Addr.
13488         * output.h (class Output_reloc): Update get_address declaration.
13489         * x86_64.cc (Output_data_plt_x86_64::do_write): Use 64-bit types
13490         for section addresses.
13491
13492 2008-05-09  Ian Lance Taylor  <iant@google.com>
13493
13494         PR 6493
13495         * gold.cc (gold_nomem): Use return value of write.
13496
13497 2008-05-08  Ian Lance Taylor  <iant@google.com>
13498
13499         * symtab.c (Symbol::init_base_output_data): Add version
13500         parameter.  Change all callers.
13501         (Symbol::init_base_output_segment): Likewise.
13502         (Symbol::init_base_constant): Likewise.
13503         (Symbol::init_base_undefined): Likewise.
13504         (Sized_symbol::init_output_data): Likewise.
13505         (Sized_symbol::init_output_segment): Likewise.
13506         (Sized_symbol::init_constant): Likewise.
13507         (Sized_symbol::init_undefined): Likewise.
13508         (Symbol_table::do_define_in_output_data): If the new symbol has a
13509         version, mark it as the default.
13510         (Symbol_table::do_define_in_output_segment): Likewise.
13511         (Symbol_table::do_define_as_constant): Likewise.
13512         * symtab.h (class Symbol): Update declarations.
13513         (class Sized_symbol): Likewise.
13514         * resolve.cc (Symbol::override_version): New function.
13515         (Symbol::override_base): Call override_version.
13516         (Symbol::override_base_with_special): Likewise.
13517         * testsuite/ver_script_8.script: New file.
13518         * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_8.
13519         (ver_test_8_SOURCES, ver_test_8_DEPENDENCIES): Define.
13520         (ver_test_8_LDFLAGS, ver_test_8_LDADD): Define.
13521         (ver_test_8_1.so, ver_test_8_2.so): New targets.
13522
13523 2008-05-06  Ian Lance Taylor  <iant@google.com>
13524
13525         PR 6049
13526         * options.h (DEFINE_set): Add VARNAME_begin and VARNAME_end
13527         functions.
13528         (class General_options): Remove existing --undefined, and add
13529         --no-undefined instead.  Add new --undefined as synonym for -u.
13530         * archive.cc (Archive::add_symbols): Check whether symbol was
13531         named with -u.
13532         * gold.cc (queue_middle_tasks): Add -u symbols to symbol table.
13533         * symtab.h (class Symbol): Rename CONSTANT to IS_CONSTANT; change
13534         all uses.  Add IS_UNDEFINED.  Update declarations to split
13535         different versions of init_base.  Declare init_base_undefined.
13536         (Symbol::is_defined): Handle IS_UNDEFINED.
13537         (Symbol::is_undefined): Likewise.
13538         (Symbol::is_weak_undefined): Call is_undefined.
13539         (Symbol::is_absolute): Handle IS_CONSTANT.
13540         (class Sized_symbol): Update declarations to split different
13541         versions of init.  Declare init_undefined.
13542         (class Symbol_table): Declare new functions.
13543         * symtab.cc (Symbol::init_base_object): Rename from init_base.
13544         Change all callers.
13545         (Symbol::init_base_output_data): Likewise.
13546         (Symbol::init_base_output_segment): Likewise.
13547         (Symbol::init_base_constant): Likewise.
13548         (Symbol::init_base_undefined): New function.
13549         (Sized_symbol::init_object): Rename from init.  Change all
13550         callers.
13551         (Sized_symbol::init_output_data): Likewise.
13552         (Sized_symbol::init_output_segment): Likewise.
13553         (Sized_symbol::init_constant): Likewise.
13554         (Sized_symbol::init_undefined): New function.
13555         (Symbol_table::add_undefined_symbols_from_command_line): New
13556         function.
13557         (Symbol_table::do_add_undefined_symbols_from_command_line): New
13558         function.
13559         (Symbol::final_value_is_known): Handle IS_UNDEFINED.
13560         (Symbol::output_section): Likewise.
13561         (Symbol::set_output_section): Likewise.
13562         (Symbol_table::sized_finalize_symbol): Likewise.
13563         (Symbol_table::sized_write_globals): Likewise.
13564         * resolve.cc (Symbol_table::should_override): Likewise.
13565         (Symbol::override_base_with_special): Likewise.
13566
13567         * symtab.cc (Symbol_table::add_from_dynobj): If we see a protected
13568         symbol, change it to have default visibility.
13569         * testsuite/protected_1.cc: New file.
13570         * testsuite/protected_2.cc: New file.
13571         * testsuite/protected_3.cc: New file.
13572         * testsuite/protected_main_1.cc: New file.
13573         * testsuite/protected_main_2.cc: New file.
13574         * testsuite/protected_main_3.cc: New file.
13575         * testsuite/Makefile.am (check_PROGRAMS): Add protected_1.
13576         (protected_1_SOURCES, protected_1_DEPENDENCIES): Define.
13577         (protected_1_LDFLAGS, protected_1_LDADD): Define.
13578         (protected_1.so): New target.
13579         (protected_1_pic.o, protected_2_pic.o): New targets.
13580         (protected_3_pic.o): New target.
13581         (check_PROGRAMS): Add protected_2.
13582         (protected_2_SOURCES, protected_2_DEPENDENCIES): Define.
13583         (protected_2_LDFLAGS, protected_2_LDADD): Define.
13584         * testsuite/Makefile.in: Rebuild.
13585
13586         * options.h (DEFINE_var): Add set_user_set_##varname__.
13587         (DEFINE_bool_alias): New macro.
13588         (class General_options): Define -Bstatic using DEFINE_bool_alias
13589         rather than DEFINE_special.  Add --undefined as an alias for -z
13590         defs.
13591         * options.cc (General_options::parse_Bstatic): Remove.
13592
13593         * options.h (class General_options): Add --fatal-warnings.
13594         * main.cc (main): Implement --fatal-warnings.
13595         * errors.h (Errors::warning_count): New function.
13596
13597         * options.h (class General_options): Add -Bsymbolic-functions.
13598         * symtab.h (Symbol::is_preemptible): Check for
13599         -Bsymbolic-functions.
13600
13601 2008-05-05  Ian Lance Taylor  <iant@google.com>
13602
13603         * options.h (DEFINE_bool): For DASH_Z, create the negative option
13604         as noVARNAME rather than no-VARNAME.
13605         (class General_options): Add option -z combreloc.
13606         * output.h (class Output_reloc) [SHT_REL]: Declare compare and
13607         get_address.
13608         (Output_reloc::sort_before) [SHT_REL]: New function.
13609         (Output_reloc::sort_before) [SHT_RELA]: New function.
13610         (class Output_data_reloc_base): Add sort_relocs_ field.  Define
13611         Sort_relocs_comparison.
13612         (Output_data_reloc_base::Output_data_reloc_base): Add sort_relocs
13613         parameter.  Change all callers.
13614         (Output_data_reloc::Output_data_reloc) [both versions]: Add
13615         sort_relocs parameter.  Change all callers.
13616         * output.cc (Output_reloc::get_address): New function, broken out
13617         of write_rel.
13618         (Output_reloc::write_rel): Call it.
13619         (Output_reloc::compare): New function.
13620         (Output_data_reloc_base::do_write): Optionally sort relocs.
13621
13622         * configure.ac: If targ_extra_obj is set, link it in.
13623         * configure.tgt: Initialize all variables.
13624         (x86_64*): Set targ_extra_obj and targ_extra_size.
13625         * configure: Rebuild.
13626
13627         * object.cc (Sized_relobj::include_section_group): Adjust section
13628         indexes read from group data.  Build vector to pass to
13629         layout_group.
13630         * layout.cc (Layout::layout_group): Add flags and shndxes
13631         parameters.  Remove contents parameter.  Change caller.  Update
13632         explicit instantiations.
13633         * layout.h (class Layout): Update layout_group declaration.
13634         * output.cc (Output_data_group::Output_data_group): Add flags and
13635         input_shndxes parameters.  Remove contents parameter.  Change
13636         caller.
13637         (Output_data_group::do_write): Change input_sections_ to
13638         input_shndxes_.
13639         * output.h (class Output_data_group): Update constructor
13640         declaration.  Rename input_sections_ to input_shndxes_.
13641         * testsuite/many_sections_test.cc: Add template.
13642
13643 2008-04-30  Cary Coutant  <ccoutant@google.com>
13644
13645         * target-reloc.h (relocate_section): Fix dead-pointer bug.
13646
13647         * layout.cc (Layout::include_section): Refactored check for debug
13648         info section.
13649         (Layout::add_comdat): Add new parameters.  Change type
13650         of signature parameter.  Add object and shndx to signatures table.
13651         (Layout::find_kept_object): New function.
13652         * layout.h: Include <cstring>.
13653         (Layout::is_debug_info_section): New function.
13654         (Layout::add_comdat): Add new parameters.
13655         (Layout::find_kept_object): New function.
13656         (Layout::Kept_section): New struct.
13657         (Layout::Signatures): Change type of map range.
13658         * object.cc (Relobj::output_section_address): New function.
13659         (Sized_relobj::include_section_group): Add new parameters.  Change
13660         calls to Layout::add_comdat.  Change to build table of kept comdat
13661         groups and table mapping discarded sections to kept sections.
13662         (Sized_relobj::include_linkonce_section): Likewise.  Add new parameter.
13663         (Sized_relobj::do_layout): Change calls to include_section_group and
13664         include_linkonce_section.
13665         (Sized_relobj::do_finalize_local_symbols): Do not set local symbol
13666         value to zero when section is discarded.
13667         (Sized_relobj::map_to_kept_section): New function.
13668         * object.h (Relobj::output_section_address): New function.
13669         (Relobj::Comdat_group): New type.
13670         (Relobj::find_comdat_group): New function.
13671         (Relobj::Comdat_group_table): New type.
13672         (Relobj::Kept_comdat_section): New type.
13673         (Relobj::Kept_comdat_section_table): New type.
13674         (Relobj::add_comdat_group): New function.
13675         (Relobj::set_kept_comdat_section): New function.
13676         (Relobj::get_kept_comdat_section): New function.
13677         (Relobj::comdat_groups_): New field.
13678         (Relobj::kept_comdat_sections_): New field.
13679         (Symbol_value::input_value): Update comment.
13680         (Sized_relobj::map_to_kept_section) New function.
13681         (Sized_relobj::include_linkonce_section): Add new parameter.
13682         * target-reloc.h (Comdat_behavior): New type.
13683         (get_comdat_behavior): New function.
13684         (relocate_section): Add code to map a discarded section to the
13685         corresponding kept section when applying a relocation.
13686
13687 2008-04-30  Craig Silverstein  <csilvers@google.com>
13688
13689         * dwarf_reader.cc (next_generation_count): New static var.
13690         (Addr2line_cache_entry): New struct.
13691         (addr2line_cache): New static var.
13692         (Dwarf_line_info::one_addr2line): Added caching.
13693         (Dwarf_line_info::clear_addr2line_cache): New function.
13694         * dwarf_reader.h (Dwarf_line_info::one_addr2line): Add
13695         cache-size parameter.
13696         (Dwarf_line_info::one_addr2line_cache): New function.
13697         * symtab.cc (Symbol_table::detect_odr_violations): Pass
13698         new cache-size argument to one_addr2line(), and clear cache.
13699
13700 2008-04-28  Cary Coutant  <ccoutant@google.com>
13701
13702         * i386.cc (Relocate::relocate): Fix typos for R_386_PC16 and
13703         R_386_PC8 relocations.
13704
13705 2008-04-23  Ian Lance Taylor  <iant@google.com>
13706
13707         * object.cc (Sized_relobj::include_section_group): Check for
13708         invalid section group.
13709
13710         * object.cc (make_elf_object): Correct test for 64-bit ELF file
13711         header size.
13712
13713         * readsyms.cc (Read_symbols::do_read_symbols): Use get_view rather
13714         than read for file header.
13715         * archive.cc (Archive::include_member): Likewise.
13716
13717 2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
13718
13719         * aclocal.m4: Regenerate.
13720         * configure: Regenerate.
13721
13722 2008-04-19  Ian Lance Taylor  <iant@google.com>
13723
13724         * version.cc (version_string): Bump to 1.6.
13725
13726         * testsuite/Makefile.am (many_sections_r_test): New target.
13727         (many_sections_r_test_SOURCES): Remove.
13728         (many_sections_r_test_DEPENDENCIES): Remove.
13729         (many_sections_r_test_LDFLAGS): Remove.
13730         (many_sections_r_test_LDADD): Remove.
13731
13732         * object.cc (Sized_relobj::do_add_symbols): Always pass
13733         local_symbol_count_ to add_from_relobj.
13734
13735         * testsuite/Makefile.am (many_sections_check.h): Only check one in
13736         every thousand variables.
13737         * testsuite/Makefile.in: Rebuild.
13738
13739         * object.cc (Xindex::initialize_symtab_xindex): New function.
13740         (Xindex::read_symtab_xindex): New function.
13741         (Xindex::sym_xindex_to_shndx): New function.
13742         (Sized_relobj::find_symtab): Pick up SHT_SYMTAB_SHNDX section if
13743         available.
13744         (Sized_relobj::do_initialize_xindex): New function.
13745         (Sized_relobj::do_read_symbols): Adjust section links.
13746         (Sized_relobj::symbol_section_and_value): Add is_ordinary
13747         parameter.  Change all callers.
13748         (Sized_relobj::include_section_group): Adjust section links and
13749         symbol section indexes.
13750         (Sized_relobj::do_layout): Adjust section links.
13751         (Sized_relobj::do_count_local_symbols): Adjust section links and
13752         symbol section indexes.
13753         (Sized_relobj::do_finalize_local_symbols): Distinguish between
13754         ordinary and special symbols.
13755         (Sized_relobj::write_local_symbols): Add symtab_xindex and
13756         dynsym_xindex parameters.  Change all callers.  Adjust section
13757         links.  Use SHN_XINDEX when needed.
13758         (Sized_relobj::get_symbol_location_info): Adjust section links.
13759         Don't get fooled by special symbols.
13760         * object.h (class Xindex): Define.
13761         (class Object): Add xindex_ parameter.  Declare virtual functoin
13762         do_initialize_xindex.
13763         (Object::adjust_sym_shndx): New function.
13764         (Object::set_xindex): New protected function.
13765         (class Symbol_value): Add is_ordinary_shndx_ field.
13766         (Symbol_value::Symbol_value): Initialize is_ordinary_shndx_.
13767         (Symbol_value::value): Assert ordinary section.
13768         (Symbol_value::initialize_input_to_output_map): Likewise.
13769         (Symbol_value::set_input_shndx): Add is_ordinary parameter.
13770         Change all callers.
13771         (Symbol_value::input_shndx): Add is_ordinary parameter.  Change
13772         all callers.
13773         (class Sized_relobj): Update declarations.
13774         (Sized_relobj::local_symbol_input_shndx): Add is_ordinary
13775         parameter.  Change all callers.
13776         (Sized_relobj::adjust_shndx): New function.
13777         * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize dynsym_shndx_
13778         field.
13779         (Sized_dynobj::find_dynsym_sections): Remove pdynsym_shndx
13780         parameter.  Change all callers.  Pick up SHT_DYNSYM_SHNDX section
13781         for SHT_DYNSYM section if available.  Set dynsym_shndx_ field.
13782         (Sized_dynobj::read_dynsym_section): Adjust section links.
13783         (Sized_dynobj::read_dynamic): Likewise.
13784         (Sized_dynobj::do_read_symbols): Use dynsym_shndx_ field.  Adjust
13785         section links.
13786         (Sized_dynobj::do_initialize_xindex): New function.
13787         * dynobj.h (class Sized_dynobj): Add dynsym_shndx_ field.  Declare
13788         do_initialize_xindex.
13789         (Sized_dynobj::adjust_shndx): New function.
13790         * layout.cc (Layout::Layout): Initialize symtab_xindex_ and
13791         dynsym_xindex_ fields.
13792         (Layout::finalize): Add a call to set_section_indexes before
13793         creating the symtab sections.
13794         (Layout::set_section_indexes): Don't do anything if the section
13795         already has a section index.
13796         (Layout::create_symtab_sections): Add shnum parameter.  Change
13797         caller.  Create .symtab_shndx section if needed.
13798         (Layout::create_shdrs): Add shstrtab_section parameter.  Change
13799         caller.
13800         (Layout::allocated_output_section_count): New function.
13801         (Layout::create_dynamic_symtab): Create .dynsym_shndx section if
13802         needed.
13803         * layout.h (class Layout): Add symtab_xindex_ and dynsym_xindex_
13804         fields.  Update declarations.
13805         (Layout::symtab_xindex): New function.
13806         (Layout::dynsym_xindex): New function.
13807         (class Write_symbols_task): Add layout_ field.
13808         (Write_symbols_task::Write_symbols_task): Add layout parameter.
13809         Change caller.
13810         * output.cc (Output_section_headers::Output_section_headers): Add
13811         shstrtab_section parameter.  Change all callers.
13812         (Output_section_headers::do_sized_write): Store overflow values
13813         for section count and section string table section index in
13814         section header zero.
13815         (Output_file_header::do_sized_write): Check for overflow of
13816         section count and section string table section index.
13817         (Output_symtab_xindex::do_write): New function.
13818         (Output_symtab_xindex::endian_do_write): New function.
13819         * output.h (class Output_section_headers): Add shstrtab_section_.
13820         Update declarations.
13821         (class Output_symtab_xindex): Define.
13822         (Output_section::has_out_shndx): New function.
13823         * symtab.cc (Symbol::init_fields): Initialize is_ordinary_shndx_
13824         field.
13825         (Symbol::init_base): Add st_shndx and is_ordinary parameters.
13826         Change all callers.
13827         (Sized_symbol::init): Likewise.
13828         (Symbol::output_section): Check for ordinary symbol.
13829         (Symbol_table::add_from_object): Remove orig_sym parameter.  Add
13830         st_shndx, is_ordinary, and orig_st_shndx parameters.  Change all
13831         callers.
13832         (Symbol_table::add_from_relobj): Add symndx_offset parameter.
13833         Change all callers.  Simplify handling of symbols from sections
13834         not included in the link.
13835         (Symbol_table::add_from_dynobj): Handle ordinary symbol
13836         distinction.
13837         (Weak_alias_sorter::operator()): Assert that symbols are
13838         ordinary.
13839         (Symbol_table::sized_finalize_symbol): Handle ordinary symbol
13840         distinction.
13841         (Symbol_table::write_globals): Add symtab_xindex and dynsym_xindex
13842         parameters.  Change all callers.
13843         (Symbol_table::sized_write_globals): Likewise.  Handle ordinary
13844         symbol distinction.  Use SHN_XINDEX when needed.
13845         (Symbol_table::write_section_symbol): Add symtab_xindex
13846         parameter.  Change all callers.
13847         (Symbol_table::sized_write_section_symbol): Likewise.  Use
13848         SHN_XINDEX when needed.
13849         * symtab.h (class Symbol): Add is_ordinary_shndx_ field.  Update
13850         declarations.
13851         (Symbol::shndx): Add is_ordinary parameter.  Change all callers.
13852         (Symbol::is_defined): Check is_ordinary.
13853         (Symbol::is_undefined, Symbol::is_weak_undefined): Likewise.
13854         (Symbol::is_absolute, Symbol::is_common): Likewise.
13855         (class Sized_symbol): Update declarations.
13856         (class Symbol_table): Update declarations.
13857         * resolve.cc (Symbol::override_base): Add st_shndx and is_ordinary
13858         parameters.  Change all callers.
13859         (Sized_symbol::override): Likewise.
13860         (Symbol_table::override): Likewise.
13861         (symbol_to_bits): Add is_ordinary parameter.  Change all callers.
13862         (Symbol_table::resolve): Remove orig_sym parameter.  Add st_shndx,
13863         is_ordinary, and orig_st_shndx parameters.  Change all callers.
13864         * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Require symbol
13865         to be in an ordinary section.
13866         * dwarf_reader.cc (Sized_dwarf_line_info::symbol_section): Add
13867         object and is_ordinary parameters.  Change all callers.
13868         (Sized_dwarf_line_info::read_relocs): Add object parameter.
13869         Change all callers.  Don't add undefined or non-ordinary symbols
13870         to reloc_map_.
13871         (Sized_dwarf_line_info::read_line_mappings): Add object parameter.
13872         Change all callers.
13873         * dwarf_reader.h (class Sized_dwarf_line_info): Update
13874         declarations.
13875         * ehframe.cc (Eh_frame::read_fde): Check for ordinary symbol.
13876         * reloc.cc (Sized_relobj::do_read_relocs): Adjust section links.
13877         (Sized_relobj::relocate_sections): Likewise.
13878         * target-reloc.h (scan_relocs): Adjust section symbol index.
13879         (scan_relocatable_relocs): Likewise.
13880         * i386.cc (Scan::local): Check for ordinary symbols.
13881         * sparc.cc (Scan::local): Likewise.
13882         * x86_64.cc (Scan::local): Likewise.
13883         * testsuite/binary_unittest.cc (Sized_binary_test): Update calls
13884         to symbol_section_and_value.
13885         * testsuite/many_sections_test.cc: New file.
13886         * testsuite/Makefile.am (BUILT_SOURCES): Define.
13887         (check_PROGRAMS): Add many_sections_test.
13888         (many_sections_test_SOURCES): Define.
13889         (many_sections_test_DEPENDENCIES): Define.
13890         (many_sections_test_LDFLAGS): Define.
13891         (BUILT_SOURCES): Add many_sections_define.h.
13892         (many_sections_define.h): New target.
13893         (BUILT_SOURCES): Add many_sections_check.h.
13894         (many_sections_check.h): New target.
13895         (check_PROGRAMS): Add many_sections_r_test.
13896         (many_sections_r_test_SOURCES): Define.
13897         (many_sections_r_test_DEPENDENCIES): Define.
13898         (many_sections_r_test_LDFLAGS): Define.
13899         (many_sections_r_test_LDADD): Define.
13900         (many_sections_r_test.o): New target.
13901         * testsuite/Makefile.in: Rebuild.
13902
13903 2008-04-17  Cary Coutant  <ccoutant@google.com>
13904
13905         * errors.cc (Errors::info): New function.
13906         (gold_info): New function.
13907         * errors.h (Errors::info): New function.
13908         * gold.h (gold_info): New function.
13909         * object.cc (Input_objects::add_object): Print trace output.
13910         * options.cc (options::parse_set): New function.
13911         (General_options::parse_wrap): Deleted.
13912         (General_options::General_options): Deleted initializer.
13913         * options.h (options::String_set): New typedef.
13914         (options::parse_set): New function.
13915         (DEFINE_set): New macro.
13916         (General_options::wrap): Changed to use DEFINE_set. Changed
13917         callers of any_wrap_symbols and is_wrap_symbol.
13918         (General_options::trace, General_options::trace_symbol):
13919         New options.
13920         (General_options::any_wrap_symbols, General_options::is_wrap_symbol)
13921         (General_options::wrap_symbols_): Deleted.
13922         * symtab.cc (Symbol_table::add_from_object): Print trace output.
13923
13924 2008-04-17  David S. Miller  <davem@davemloft.net>
13925
13926         * options.cc (General_options::parse_V): New function.
13927         * options.h: Add entries for -V and -Qy.
13928
13929 2008-04-17  Ian Lance Taylor  <iant@google.com>
13930
13931         * common.cc (Symbol_table::allocate_commons): Remove options
13932         parameter.  Change caller.
13933         (Symbol_table::do_allocate_commons): Remove options parameter.
13934         Change caller.  Just call do_allocate_commons_list twice.
13935         (Symbol_table::do_allocate_commons_list): New function, broken out
13936         of do_allocate_commons.
13937         * common.h (class Allocate_commons_task): Remove options_ field.
13938         Update constructor.
13939         * symtab.cc (Symbol_table::Symbol_table): Initialize
13940         tls_commons_.
13941         (Symbol_table::add_from_object): Put TLS common symbols on
13942         tls_commons_ list.
13943         (Symbol_table::sized_finalize_symbol): Handle STT_TLS symbols
13944         which are IN_OUTPUT_DATA.
13945         * symtab.h (class Symbol_table): Add tls_commons_ field.  Update
13946         allocate_commons and do_allocate_commons declarations.  Declare
13947         do_allocate_commons_list.
13948         * gold.cc (queue_middle_tasks): Update creation of
13949         Allocate_commons_task to not pass options.
13950         * testsuite/Makefile.am (INCLUDES): Add -I.. .
13951         (TLS_TEST_C_FLAGS): New variable.
13952         (tls_test_c_pic.o): New target.
13953         (tls_test_shared.so): Link in tls_test_c_pic.o.
13954         (tls_test_c_pic_ie.o): New target.
13955         (tls_test_ie_shared.so): Link in tls_test_c_pic_ie.o.
13956         (tls_test_DEPENDENCIES, tls_test_LDADD): Add tls_test_c.o.
13957         (tls_test_c.o): New target.
13958         (tls_pic_test_DEPENDENCIES): Add tls_test_c_pic.o.
13959         (tls_pic_test_LDADD): Likewise.
13960         (tls_shared_gd_to_ie_test_DEPENDENCIES): Add tls_test_c_pic.o.
13961         (tls_shared_gd_to_ie_test_LDADD): Likewise.
13962         (tls_test_c_gnu2.o): New target.
13963         (tls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): Add
13964         tls_test_c_gnu2.o.
13965         (tls_shared_gnu2_gd_to_ie_test_LDADD): Likewise.
13966         (tls_test_gnu2_shared.so): Link in tls_test_c_gnu2.o.
13967         (tls_test_shared_nonpic.so): Link in tls_test_c.o.
13968         * testsuite/tls_test.cc: Include "config.h".
13969         (t_last): Call t11_last.
13970         * testsuite/tls_test.h (t11, t11_last): Declare.
13971         * testsuite/tls_test_c.c: New file.
13972         * testsuite/tls_test_main.cc (thread_routine): Call t11.
13973         * configure.ac: Check for OpenMP support.
13974         * configure, config.in, Makefile.in: Rebuild.
13975         * testsuite/Makefile.in: Rebuild.
13976
13977 2008-04-16  Cary Coutant  <ccoutant@google.com>
13978
13979         * i386.cc (Target_i386::define_tls_base_symbol): New function.
13980         (Target_i386::tls_base_symbol_defined_): New field.
13981         (Target_i386::Scan::local): Define _TLS_MODULE_BASE_ symbol.
13982         (Target_i386::Scan::global): Likewise.
13983         * symtab.cc (sized_finalize_symbol): Add check for TLS symbol.
13984         * x86_64.cc (Target_x86_64::define_tls_base_symbol): New function.
13985         (Target_x86_64::tls_base_symbol_defined_): New field.
13986         (Target_x86_64::Scan::local): Define _TLS_MODULE_BASE_ symbol.
13987         (Target_x86_64::Scan::global): Likewise.
13988
13989 2008-04-16  Cary Coutant  <ccoutant@google.com>
13990
13991         * symtab.h (Symbol::is_strong_undefined): Removed unused function.
13992         (Symbol::needs_plt_entry): Allow weak undefined symbols.
13993         (Symbol::needs_dynamic_reloc): Allow weak undefined symbols when
13994         building shared libraries.
13995         * testsuite/Makefile.am (weak_undef_nonpic_test): New target.
13996         (weak_undef_file1_nonpic.o, weak_undef_file2_nonpic.o)
13997         (weak_undef_lib_nonpic.so, alt/weak_undef_lib_nonpic.so): New targets.
13998         * testsuite/Makefile.in: Rebuild.
13999         * testsuite/weak_undef.h: New file.
14000         * testsuite/weak_undef_file1.cc: Add extra test cases.
14001         * testsuite/weak_undef_file2.cc: Likewise.
14002         * testsuite/weak_undef_test.cc: Likewise.
14003
14004 2008-04-16  David S. Miller  <davem@davemloft.net>
14005
14006         * sparc.cc (Target_sparc::Scan): Change from struct to class.
14007         Add issued_non_pic_error_ field.  Declare check_non_pic.
14008         (Target_sparc::Scan::check_non_pic): New function.
14009         (Target_sparc::Scan::local): Call check_non_pic as appropriate.
14010         (Target_sparc::Scan::global): Likewise.
14011
14012         * configure.ac (FN_PTRS_IN_SO_WITHOUT_PIC): Add sparc64.
14013         * configure: Rebuild.
14014
14015         * options.h (DEFINE_enable): New macro.
14016         (new_dtags): New enable option.
14017         (initfirst, interpose, loadfltr, nodefaultlib,
14018         nodelete, nodlopen, nodump): New -z options.
14019         * layout.cc (Layout:finish_dynamic_section): If new
14020         dtags enabled, emit DT_RUNPATH.  Also, emit a
14021         DT_FLAGS_1 containing any specified -z flags.
14022
14023 2008-04-16  Ian Lance Taylor  <iant@google.com>
14024
14025         * copy-relocs.cc: New file.
14026         * copy-relocs.h: New file.
14027         * reloc.cc: Remove Copy_relocs code.
14028         * reloc.h: Likewise.
14029         * reloc-types.h (struct Reloc_types) [both versions]: Add
14030         get_reloc_addend_noerror.
14031         * output.h (class Output_data_reloc<elfcpp::SHT_REL>): Add
14032         variants of add_global which take an addend which must be zero.
14033         * i386.cc: Include "copy-relocs.h".
14034         (class Target_i386): Change type of copy_relocs_ to variable,
14035         update initializer.
14036         (Target_i386::copy_reloc): Rewrite to pass to Copy_relocs class.
14037         Change all callers.
14038         (Target_i386::do_finalize_sections): Change handling of
14039         copy_relocs_.
14040         * sparc.cc: Include "copy-relocs.h".
14041         (class Target_sparc): Change type of copy_relocs_ to variable,
14042         update initializer.
14043         (Target_sparc::copy_reloc): Rewrite to pass to Copy_relocs class.
14044         Change all callers.
14045         (Target_sparc::do_finalize_sections): Change handling of
14046         copy_relocs_.
14047         * x86_64.cc: Include "copy-relocs.h".
14048         (class Target_x86_64): Change type of copy_relocs_ to variable,
14049         update initializer.
14050         (Target_x86_64::copy_reloc): Rewrite to pass to Copy_relocs
14051         class.  Change all callers.
14052         (Target_x86_64::do_finalize_sections): Change handling of
14053         copy_relocs_.
14054         * Makefile.am (CCFILES): Add copy-relocs.cc.
14055         (HFILES): Add copy-relocs.h.
14056
14057         * Makefile.in, aclocal.m4, testsuite/Makefile.in: Rebuild.
14058
14059         * testsuite/script_test_4.sh: Permit leading zeroes.
14060
14061 2008-04-15  Ian Lance Taylor  <iant@google.com>
14062
14063         * script-sections.cc (Script_sections::create_segments): Use
14064         header_size_adjustment even when there is enough room for the
14065         headers.
14066         * testsuite/script_test_4.sh: New file.
14067         * testsuite/script_test_4.t: New file.
14068         * testsuite/Makefile.am (check_SCRIPTS): Add script_test_4.sh.
14069         (check_DATA): Add script_test_4.stdout.
14070         (MOSTLYCLEANFILES): Likewise.
14071         (script_test_4): New target.
14072         (script_test_4.stdout): New target.
14073         * testsuite/Makefile.in: Rebuild.
14074
14075         * sparc.cc: Add definitions for Output_data_plt_sparc class
14076         constants.
14077
14078 2008-04-14  David S. Miller  <davem@davemloft.net>
14079
14080         * sparc.cc: New file.
14081         * Makefile.am (TARGETSOURCES): Add sparc.cc
14082         (ALL_TARGETOBJS): Add sparc.$(OBJEXT)
14083         * configure.tgt: Document targ_extra_size and
14084         targ_extra_big_endian.  Add entries for sparc-* and
14085         sparc64-*.
14086         * configure.ac: Handle targ_extra_size and
14087         targ_extra_big_endian.
14088         * Makefile.in: Rebuild.
14089         * configure: Likewise.
14090         * po/POTFILES.in: Likewise.
14091         * po/gold.pot: Likewise.
14092
14093 2008-04-14  Ian Lance Taylor  <iant@google.com>
14094
14095         * layout.cc (Layout::Layout): Initialize sections_are_attached_.
14096         (Layout::get_output_section): Ignore SHF_WRITE and SHF_EXECINSTR
14097         in the name/type/flags to section mapping.  Don't call
14098         allocate_output_section.
14099         (Layout::choose_output_section): Change parameter from adjust_name
14100         to is_input_section.  Don't permit input sections after sections
14101         are attached to segments.  Don't call allocate_output_section.
14102         (Layout::layout_eh_frame): Call update_flags_for_input_section,
14103         not write_enable_output_section.
14104         (Layout::make_output_section): Don't push to
14105         unattached_section_list_ nor call attach_to_segment.  Call
14106         attach_section_to_segment if sections are attached.
14107         (Layout::attach_sections_to_segments): New function.
14108         (Layout::attach_section_to_segment): New function.
14109         (Layout::attach_allocated_section_to_segment): Rename from
14110         attach_to_segment.  Remove flags parameter.
14111         (Layout::allocate_output_section): Remove function.
14112         (Layout::write_enable_output_section): Remove function.
14113         * layout.h (class Layout): Update for above changes.  Add new
14114         field sections_are_attached_.
14115         * output.h (Output_section::update_flags_for_input_section): New
14116         function.
14117         * output.cc (Output_section::add_input_section): Call
14118         update_flags_for_input_section.
14119         * gold.cc (queue_middle_tasks): Call attach_sections_to_segments.
14120
14121 2008-04-11  Cary Coutant  <ccoutant@google.com>
14122
14123         * i386.cc (Target_i386::got_mod_index_entry): Restore code previously
14124         thought unnecessary.
14125         * x86_64.cc (Target_x86_64::got_mod_index_entry): Likewise.
14126
14127 2008-04-11  Ian Lance Taylor  <iant@google.com>
14128
14129         * output.h (class Output_section_data): Remove inline definition
14130         of set_addralign.
14131         * output.cc (Output_section_data::set_addralign): New function.
14132
14133 2008-04-11  Cary Coutant  <ccoutant@google.com>
14134
14135         Add support for TLS descriptors for i386 and x86_64.
14136         * i386.cc (Target_i386::Relocate::tls_desc_gd_to_ie): New function.
14137         (Target_i386::Relocate::tls_desc_gd_to_le): New function.
14138         (Target_i386::Got_type): Add GOT_TYPE_TLS_NOFFSET and
14139         GOT_TYPE_TLS_DESC.
14140         (Target_i386::got_mod_index_entry): Remove unnecessary code.
14141         (Target_i386::Scan::local): Implement R_386_TLS_GOTDESC and
14142         R_386_TLS_DESC_CALL relocations.  Fix problem with initial-exec
14143         relocations.
14144         (Target_i386::Scan::global): Fix problem with GD-to-IE relaxation.
14145         Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations;
14146         Fix problem with initial-exec relocations.
14147         (Target_i386::Relocate::relocate_tls): Likewise.
14148         (Target_i386::Relocate::tls_gd_to_ie): Fix problem with GD-to-IE
14149         relaxation.
14150         * output.cc (Output_data_dynamic::Dynamic_entry::write): Add
14151         support for section-plus-offset dynamic table entries.
14152         * output.h (Output_data_dynamic::add_section_plus_offset): New function.
14153         (Output_data_dynamic::Dynamic_entry): Add support for
14154         section-plus-offset dynamic table entries.
14155         (Output_data_dynamic::Classification): Likewise.
14156         (Output_data_dynamic::classification_): Renamed offset_.
14157         * x86_64.cc (Target_x86_64::Relocate::tls_desc_gd_to_ie): New function.
14158         (Target_x86_64::Relocate::tls_desc_gd_to_le): New function.
14159         (Target_x86_64::make_plt_section): New function.
14160         (Target_x86_64::reserve_tlsdesc_entries): New function.
14161         (Output_data_plt_x86_64::Output_data_plt_x86_64): Add new parameter.
14162         (Output_data_plt_x86_64::reserve_tlsdesc_entry): New function.
14163         (Output_data_plt_x86_64::has_tlsdesc_entry): New function.
14164         (Output_data_plt_x86_64::get_tlsdesc_got_offset): New function.
14165         (Output_data_plt_x86_64::get_tlsdesc_plt_offset): New function.
14166         (Output_data_plt_x86_64::tlsdesc_plt_entry): New field.
14167         (Output_data_plt_x86_64::set_final_data_size): Move out of line;
14168         add extra PLT entry for TLS descriptors.
14169         (Output_data_plt_x86_64::got_): New field.
14170         (Output_data_plt_x86_64::tlsdesc_got_offset_): New field.
14171         (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize new
14172         fields.
14173         (Output_data_plt_x86_64::do_write): Write extra PLT entry for TLS
14174         descriptors.
14175         (Target_x86_64::make_plt_entry): Factor out make_plt_section.
14176         (Target_x86_64::got_mod_index_entry): Remove unnecessary code.
14177         (Target_x86_64::Scan::local): Implement R_386_TLS_GOTDESC and
14178         R_386_TLS_DESC_CALL relocations.
14179         (Target_x86_64::Scan::global): Likewise.
14180         (Target_x86_64::do_finalize_sections): Add dynamic table entries
14181         for TLS descriptors.
14182         (Relocate::relocate_tls): Fix problem with GD-to-IE relaxation.
14183         Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations.
14184         (Target_x86_64::Relocate::tls_gd_to_ie): Fix problem with
14185         GD-to-IE relaxation.
14186         * configure.ac: Export new conditional variables TLS_GNU2_DIALECT
14187         and TLS_DESCRIPTORS.
14188         * Makefile.in: Rebuild.
14189         * configure: Rebuild.
14190         * testsuite/Makefile.am (tls_shared_gd_to_ie_test): New target.
14191         (tls_test_shared2.so): New target.
14192         (tls_shared_gd_to_ie_test_SOURCES): New variable.
14193         (tls_shared_gd_to_ie_test_DEPENDENCIES): New variable.
14194         (tls_shared_gd_to_ie_test_LDFLAGS): New variable.
14195         (tls_shared_gd_to_ie_test_LDADD): New variable.
14196         (tls_shared_gnu2_gd_to_ie_test): New target.
14197         (tls_test_gnu2.o, tls_test_file2_gnu2.o, tls_test_gnu2_shared2.so):
14198         New targets.
14199         (tls_shared_gnu2_gd_to_ie_test_SOURCES): New variable.
14200         (ls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): New variable.
14201         (tls_shared_gnu2_gd_to_ie_test_LDFLAGS): New variable.
14202         (tls_shared_gnu2_gd_to_ie_test_LDADD): New variable.
14203         (tls_shared_gnu2_test): New target.
14204         (tls_test_gnu2_shared.so): New target.
14205         (tls_shared_gnu2_test_SOURCES): New variable.
14206         (tls_shared_gnu2_test_DEPENDENCIES): New variable.
14207         (tls_shared_gnu2_test_LDFLAGS): New variable.
14208         (tls_shared_gnu2_test_LDADD): New variable.
14209         * testsuite/Makefile.in: Rebuild.
14210         * testsuite/Makefile.
14211
14212 2008-04-11  Ian Lance Taylor  <iant@google.com>
14213
14214         * testsuite/Makefile.am (justsyms_2r.o): Add dependency on
14215         justsyms.t.
14216         * testsuite/Makefile.in: Rebuild.
14217
14218         * testsuite/script_test_2a.cc (script_test_string_a): Make 8 bytes
14219         long.
14220         * testsuite/script_test_2.cc (main): Adjust test.
14221
14222 2008-04-11  David S. Miller  <davem@davemloft.net>
14223             Ian Lance Taylor  <iant@google.com>
14224
14225         * options.h (General_options): Add entries for '-Y' and
14226         '-relax'.
14227         * options.cc (General_options:finalize): If -Y was used, add those
14228         entries to the library path instead of the default "/lib" and
14229         "/usr/lib".
14230
14231 2008-04-11  David S. Miller  <davem@davemloft.net>
14232
14233         * testsuite/justsyms.t: Start at 0x100.
14234         * testsuite/justsyms_1.cc: Adjust justsyms_string assertion.
14235         * testsuite/script_test_2b.cc (script_test_string_b): Make 8 bytes
14236         long.
14237         * testsuite/script_test_2.cc: Adjust string and section length
14238         checks.
14239
14240 2008-04-09  Ian Lance Taylor  <iant@google.com>
14241
14242         PR gold/5996
14243         * script-sections.cc (Sections_element::allocate_to_segment): Add
14244         orphan parameter.
14245         (Output_section_definition::allocate_to_segment): Likewise.
14246         (Orphan_output_section::allocate_to_segment): Likewise.
14247         (Script_sections::attach_sections_using_phdrs_clause): Don't
14248         propagate non-PT_LOAD segments to orphan sections.
14249         * testsuite/Makefile.am (script_test_3.stdout): Generate using
14250         readelf rather than objdump.
14251         * testsuite/script_test_3.sh: Adjust accordingly.  Test that
14252         .interp section and PT_INTERP segment are the same size.
14253         * testsuite/Makefile.in: Rebuild.
14254
14255         * symtab.cc (Symbol_table::add_from_dynobj): Only look for weak
14256         aliases for symbols defined in the same object.
14257         * testsuite/Makefile.am (check_PROGRAMS): Add weak_alias_test.
14258         (weak_alias_test_SOURCES): New variable.
14259         (weak_alias_test_DEPENDENCIES): New variable.
14260         (weak_alias_test_LDFLAGS): New variable.
14261         (weak_alias_test_LDADD): New variable.
14262         (weak_alias_test_1_pic.o, weak_alias_test_1.so): New targets.
14263         (weak_alias_test_2_pic.o, weak_alias_test_2.so): New targets.
14264         (weak_alias_test_3.o): New target.
14265         (weak_alias_test_4_pic.o, weak_alias_test_4.so): New targets.
14266         * testsuite/weak_alias_test_main.cc: New file.
14267         * testsuite/weak_alias_test_1.cc: New file.
14268         * testsuite/weak_alias_test_2.cc: New file.
14269         * testsuite/weak_alias_test_3.cc: New file.
14270
14271 2008-04-08  Ian Lance Taylor  <iant@google.com>
14272
14273         * options.h (class General_options): Add --noinhibit-exec option.
14274         * main.cc (main): Check --noinhibit-exec.
14275
14276         * options.h (class General_options): Define --wrap as a special
14277         option.  Add wrap_symbols_ field.
14278         (General_options::any_wrap_symbols): New function.
14279         (General_options::is_wrap_symbol): New function.
14280         * options.cc (General_options::parse_wrap): New function.
14281         (General_options::General_options): Initialize wrap_symbols_.
14282         * symtab.cc (Symbol_table::wrap_symbol): New function.
14283         (Symbol_table::add_from_object): Handle --wrap.
14284         * symtab.h (class Symbol_table): Declare wrap_symbol.
14285         * target.h (Target::wrap_char): New function.
14286         (Target::Target_info): Add wrap_char field.
14287         * i386.cc (Target_i386::i386_info): Initialize wrap_char.
14288         * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
14289         * testsuite/testfile.cc (Target_test::test_target_info):
14290         Likewise.
14291
14292         * errors.cc (Errors::undefined_symbol): Mention symbol version if
14293         there is one.
14294
14295         * layout.h (class Layout): Add added_eh_frame_data_ field.
14296         * layout.cc (Layout::Layout): Initialize new field.
14297         (Layout::layout_eh_frame): Don't add eh_frame_data_ to .eh_frame
14298         output section until we find a section we merged successfully.
14299         * object.cc (Sized_relobj::check_eh_frame_flags): Don't require
14300         that the size be non-zero.
14301
14302         * merge.cc (Object_merge_map::get_output_offset): Remove inline
14303         qualifier.
14304
14305 2008-04-08  Craig Silverstein  <csilvers@google.com>
14306
14307         * configure.ac: Export new conditional variable HAVE_ZLIB.
14308         * testsuite/Makefile.am (flagstest_o_specialfile): Condition
14309         on HAVE_ZLIB.
14310         (flagstest_o_specialfile_and_compress_debug_sections): Likewise.
14311         * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
14312
14313 2008-04-07  Ian Lance Taylor  <iant@google.com>
14314
14315         * version.cc (version_string): Set to "1.5".
14316
14317         * x86_64.cc (Target_x86_64::Scan): Change from struct to class.
14318         Add issued_non_pic_error_ field.  Declare check_non_pic.
14319         (Target_x86_64::Scan::check_non_pic): New function.
14320         (Target_x86_64::Scan::local): Call check_non_pic as appropriate.
14321         (Target_x86_64::Scan::global): Likewise.
14322
14323         * output.cc (Output_reloc<SHT_REL>::local_section_offset): Add
14324         addend parameter.  Change caller.  Handle merge sections.
14325         (Output_reloc<SHT_REL>::symbol_value): Change parameter type from
14326         Address to Addend.  Don't add in the result of
14327         local_section_offset, pass down the addend and use the returned
14328         value.
14329         * output.h (class Output_reloc<SHT_REL>): Add Addend typedef.
14330         Update declarations of local_section_offset and symbol_value.
14331         * testsuite/two_file_test_1.cc (t18): New function.
14332         * testsuite/two_file_test_2.cc (f18): New function.
14333         * testsuite/two_file_test_main.cc (main): Call t18.
14334         * testsuite/two_file_test.h (t18, f18): Declare.
14335
14336         * configure.ac: Don't test for objdump, c++filt, or readelf.
14337         * testsuite/Makefile.am: Remove READELF and OBJDUMP_AND_CPPFILT
14338         conditionals.
14339         (TEST_READELF): New variable.
14340         (TEST_OBJDUMP, TEST_CXXFILT, TEST_STRIP): New variables.
14341         (check_PROGRAMS): Add two_file_strip_test.
14342         (two_file_strip_test): New target.
14343         (check_PROGRAMS): Add two_file_same_shared_strip_test.
14344         (two_file_same_shared_strip_test_SOURCES): New variable.
14345         (two_file_same_shared_strip_test_DEPENDENCIES): New variable.
14346         (two_file_same_shared_strip_test_LDFLAGS): New variable.
14347         (two_file_same_shared_strip_test_LDADD): New variable.
14348         (two_file_shared_strip.so): New target.
14349         (ver_test_2.syms, ver_test_4.syms): Use TEST_READELF.
14350         (ver_test_5.syms, ver_test_7.syms): Likewise.
14351         (ver_matching_test.stdout): Use TEST_OBJDUMP and TEST_CXXFILT.
14352         (strip_test_3.stdout): Use TEST_OBJDUMP.
14353         * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
14354
14355 2008-04-04  Cary Coutant  <ccoutant@google.com>
14356
14357         * symtab.h (Symbol::is_weak_undefined): New function.
14358         (Symbol::is_strong_undefined): New function.
14359         (Symbol::is_absolute): New function.
14360         (Symbol::needs_plt_entry): Exclude weak undefined symbols.
14361         (Symbol::needs_dynamic_reloc): Exclude weak undefined and
14362         absolute symbols.
14363         * testsuite/Makefile.am (check_PROGRAMS): Add weak_undef_test.
14364         (weak_undef_test): New target.
14365         * testsuite/Makefile.in: Rebuild.
14366         * testsuite/weak_undef_file1.cc: New file.
14367         * testsuite/weak_undef_file2.cc: New file.
14368         * testsuite/weak_undef_test.cc: New file.
14369
14370 2008-04-03  Craig Silverstein  <csilvers@google.com>
14371
14372         * compressed_output.h (class Output_compressed_section): Use
14373         unsigned buffer.
14374         * compressed_output.cc (zlib_compress): Use unsigned buffers,
14375         add zlib header.
14376         (zlib_compressed_suffix): Removed.
14377         (Output_compressed_section::set_final_data_size): Use unsigned
14378         buffers.
14379         * testsuite/Makefile.am (flagstest_compress_debug_sections):
14380         Fix linker invocation.
14381         (flagstest_o_specialfile_and_compress_debug_sections):
14382         Likewise.
14383         * testsuite/Makefile.in: Regenerated.
14384
14385 2008-04-02  David S. Miller  <davem@davemloft.net>
14386
14387         *  dwarf_reader.cc (Sized_dwarf_line_info::read_header_prolog,
14388         Sized_dwarf_line_info::process_one_opcode): Use Swap_unaligned.
14389
14390 2008-04-02  Craig Silverstein  <csilvers@google.com>
14391
14392         * TODO: New file.
14393
14394 2008-04-02  Ian Lance Taylor  <iant@google.com>
14395
14396         * fileread.cc (File_read::find_view): Add byteshift and vshifted
14397         parameters.  Update for new key type to views_.  Change all
14398         callers.
14399         (File_read::read): Adjust for byteshift in returned view.
14400         (File_read::add_view): New function, broken out of
14401         find_and_make_view.
14402         (File_read::make_view): New function, broken out of
14403         find_and_make_view.
14404         (File_read::find_or_make_view): Add offset and aligned
14405         parameters.  Rewrite accordingly.  Change all callers.
14406         (File_read::get_view): Add offset and aligned parameters.  Adjust
14407         for byteshift in return value.
14408         (File_read::get_lasting_view): Likewise.
14409         * fileread.h (class File_read): Update declarations.
14410         (class File_read::View): Add byteshift_ field.  Add byteshift to
14411         constructor.  Add byteshift method.
14412         * archive.h (Archive::clear_uncached_views): New function.
14413         (Archive::get_view): Add aligned parameter.  Change all callers.
14414         * object.h (Object::get_view): Add aligned parameter.  Change all
14415         callers.
14416         (Object::get_lasting_view): Likewise.
14417
14418         * fileread.cc (File_read::release): Don't call clear_views if
14419         there are multiple objects.
14420         * fileread.h (File_read::clear_uncached_views): New function.
14421         * archive.cc (Add_archive_symbols::run): Call clear_uncached_views
14422         on the archive.
14423
14424 2008-03-31  Cary Coutant  <ccoutant@google.com>
14425
14426         Add thin archive support.
14427         * archive.cc (Archive::armagt): New const.
14428         (Archive::setup): Remove task parameter and calls to unlock.
14429         (Archive::unlock_nested_archives): New function.
14430         (Archive::read_header): Add nested_off parameter. Change
14431         all callers.
14432         (Archive::interpret_header): Likewise.
14433         (Archive::include_all_members): Change to handle thin
14434         archives.
14435         (Archive::include_member): Likewise.
14436         * archive.h (Archive::Archive): Add new parameters and
14437         initializers.
14438         (Archive::armagt): New const.
14439         (Archive::setup): Remove task parameter.
14440         (Archive::unlock_nested_archives): New function.
14441         (Archive::read_header): Add nested_off parameter.
14442         (Archive::interpret_header): Likewise.
14443         (Archive::Nested_archive_table): New typedef.
14444         (Archive::is_thin_archive_): New field.
14445         (Archive::nested_archives_): New field.
14446         (Archive::options_): New field.
14447         (Archive::dirpath_): New field.
14448         (Archive::task_): New field.
14449         * readsyms.cc (Read_symbols::do_read_symbols): Add check
14450         for thin archives.  Pass additional parameters to
14451         Archive::Archive.  Unlock the archive file after calling
14452         Archive::setup.
14453
14454 2008-03-29  Ian Lance Taylor  <iant@google.com>
14455
14456         * symtab.cc (Symbol_table::do_define_as_constant): Don't force a
14457         version symbol to be local.
14458         * testsuite/ver_test_4.sh: New file.
14459         * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_4.sh.
14460         (check_DATA): Add ver_test_4.syms.
14461         (ver_test_4.syms): New target.
14462         * testsuite/Makefile.in: Rebuild.
14463
14464         * output.cc
14465         (Output_section::Input_section_sort_entry::has_priority): New
14466         function.
14467         (Output_section::Input_section_sort_entry::match_file_name): New
14468         function.
14469         (Output_section::Input_section_sort_entry::match_section_name):
14470         Remove.
14471         (Output_section::Input_section_sort_entry::match_section_name_prefix):
14472         Remove.
14473         (Output_section::Input_section_sort_entry::match_section_file):
14474         Remove.
14475         (Output_section::Input_section_sort_compare::operator()): Rewrite
14476         using new Input_section_sort_entry functions.  Sort crtbegin and
14477         crtend first.  Sort sections with no priority before sections with
14478         a priority.
14479         * testsuite/initpri1.c (d3): Check j != 4.
14480         (cd5): New constructor/destructor function.
14481         (main): Check j != 2.
14482
14483         * symtab.cc (Symbol_table::add_from_object): If we don't use the
14484         new symbol when resolving, don't call set_is_default.
14485         * testsuite/ver_test_7.cc: New file.
14486         * testsuite/ver_test_7.sh: New file.
14487         * testsuite/Makefile.am (ver_test_7.so): New target.
14488         (ver_test_7.o): New target.
14489         (check_SCRIPTS): Add ver_test_7.sh.
14490         (check_DATA): Add ver_test_7.syms.
14491         (ver_test_7.syms): New target.
14492
14493 2008-03-28  Ian Lance Taylor  <iant@google.com>
14494
14495         * layout.cc (Layout::layout): If we see an input section with a
14496         name that needs sorting, set the must_sort flag for the output
14497         section.
14498         (Layout::make_output_section): If the name of the output section
14499         indicates that it might require sorting, set the may_sort flag.
14500         * output.h (Output_section::may_sort_attached_input_sections): New
14501         function.
14502         (Output_section::set_may_sort_attached_input_sections): New
14503         function.
14504         (Output_section::must_sort_attached_input_sections): New
14505         function.
14506         (Output_section::set_must_sort_attached_input_sections): New
14507         function.
14508         (class Output_section): Declare Input_section_sort_entry.  Define
14509         Input_section_sort_compare.  Declare
14510         sort_attached_input_sections.  Add new fields:
14511         may_sort_attached_input_sections_,
14512         must_sort_attached_input_sections_,
14513         attached_input_sections_are_sorted_.
14514         * output.cc (Output_section::Output_section): Initialize new
14515         fields.
14516         (Output_section::add_input_section): Add an entry to
14517         input_sections_ if may_sort or must_sort are true.
14518         (Output_section::set_final_data_size): Call
14519         sort_attached_input_sections if necessary.
14520         (Output_section::Input_section_sort_entry): Define new class.
14521         (Output_section::Input_section_sort_compare::operator()): New
14522         function.
14523         (Output_section::sort_attached_input_sections): New function.
14524         * configure.ac: Check whether the compiler supports constructor
14525         priorities.  Define a CONSTRUCTOR_PRIORITY automake conditional.
14526         * testsuite/initpri1.c: New file.
14527         * testsuite/Makefile.am (check_PROGRAMS): Add initpri1 if
14528         CONSTRUCTOR_PRIORITY.
14529         (initpri1_SOURCES, initpri1_DEPENDENCIES): New variables.
14530         (initpri1_LDFLAGS): New variable.
14531         * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
14532
14533 2008-03-27  Ian Lance Taylor  <iant@google.com>
14534
14535         * common.cc (Sort_commons::operator): Correct sorting algorithm.
14536         * testsuite/common_test_1.c: New file.
14537         * testsuite/Makefile.am (check_PROGRAMS): Add common_test_1.
14538         (common_test_1_SOURCES): New variable.
14539         (common_test_1_DEPENDENCIES): New variable.
14540         (common_test_1_LDFLAGS): New variable.
14541
14542         * symtab.cc (Symbol_table::add_from_object): Handle saw_undefined_
14543         and commons_ correctly when NAME/VERSION does not override
14544         NAME/NULL.
14545         * testsuite/ver_test_6.c: New file.
14546         * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_6
14547         (ver_test_6_SOURCES, ver_test_6_DEPENDENCIES): New variables.
14548         (ver_test_6_LDFLAGS, ver_test_6_LDADD): New variables.
14549
14550 2008-03-26  Ian Lance Taylor  <iant@google.com>
14551
14552         * symtab.cc (Symbol_table::add_from_relobj): Don't set the version
14553         of an undefined symbol from a version script.
14554         * testsuite/Makefile.am (ver_test_5.so): New target.
14555         (ver_test_5.o): New target.
14556         (check_SCRIPTS): Add ver_test_5.sh.
14557         (check_DATA): Add ver_test_5.syms.
14558         (ver_test_5.syms): New target.
14559         * testsuite/ver_test_5.cc: New file.
14560         * testsuite/ver_test_5.script: New file.
14561         * testsuite/ver_test_5.sh: New file.
14562         * Makefile.in, testsuite/Makefile.in: Rebuild.
14563
14564         PR gold/5986
14565         Fix problems building gold with gcc 4.3.0.
14566         * gold.h (TEMPLATE_ATTRIBUTE_PRINTF_4): Define.
14567         (gold_error_at_location, gold_warning_at_location): Use it.
14568         * configure.ac: Check whether we can compile and use a template
14569         function with a printf attribute.
14570         * x86_64.cc (Target_x86_64::do_code_fill): Swap out a 32-bit value
14571         when jumping over bytes.
14572         * object.cc: Instantiate Object::read_section_data.
14573         * debug.h: Include <cstring>
14574         * dwarf_reader.cc: Include <algorithm>
14575         * main.cc: Include <cstring>.
14576         * options.cc: Include <cstring>.
14577         * output.cc: Include <cstring>.
14578         * script.cc: Include <cstring>.
14579         * script.h: Include <string>.
14580         * symtab.cc: Include <cstring> and <algorithm>.
14581         * target-select.cc: Include <cstring>.
14582         * version.cc: Include <string>.
14583         * testsuite/testmain.cc: Include <cstdlib>.
14584         * configure, config.in: Rebuild.
14585
14586 2008-03-25  Ian Lance Taylor  <iant@google.com>
14587
14588         * options.cc: Include "../bfd/bfdver.h".
14589         (options::help): Print bug reporting address.
14590
14591         * version.cc (print_version): Adjust output for current value of
14592         BFD_VERSION_STRING.
14593
14594         * NEWS: New file.
14595
14596         * options.cc (options::help): Print list of supported targets.
14597         * target-select.h: Include <vector>.
14598         (class Target_selector): Make machine_, size_, and is_big_endian_
14599         fields const.  Add bfd_name_ and instantiated_target_ fields.
14600         (Target_selector::Target_selector): Add bfd_name parameter.
14601         (Target_selector::recognize): Make non-virtual, call
14602         do_recognize.
14603         (Target_selector::recognize_by_name): Make non-virtual, call
14604         do_recognize_by_name.
14605         (Target_selector::supported_names): New function.
14606         (Target_selector::bfd_name): New function.
14607         (Target_selector::do_instantiate_target): New pure virtual
14608         function.
14609         (Target_selector::do_recognize): New virtual function.
14610         (Target_selector::do_recognize_by_name): New virtual function.
14611         (Target_selector::instantiate_target): New private function.
14612         (supported_target_names): Declare.
14613         * target-select.cc (Target_selector::Target_selector): Update for
14614         new parameter and fields.
14615         (select_target_by_name): Check that the name matches before
14616         calling recognize_by_name.
14617         (supported_target_names): New function.
14618         * i386.cc (class Target_selector_i386): Update Target_selector
14619         constructor call.  Remove recognize and recognize_by_name.  Add
14620         do_instantiate_target.
14621         * x86_64.cc (class Target_selector_x86_64): Likewise.
14622         * testsuite/testfile.cc (class Target_selector_test): Update for
14623         changes to Target_selector.
14624
14625         * README: Rewrite, with some notes on unsupported features.
14626
14627 2008-03-24  Cary Coutant  <ccoutant@google.com>
14628
14629         * i386.cc (Target_i386::Got_type): New enum declaration.
14630         (Target_i386::Scan::local): Updated callers of Output_data_got
14631         member functions.
14632         (Target_i386::Scan::global): Likewise.
14633         (Target_i386::Relocate::relocate): Likewise.
14634         (Target_i386::Relocate::relocate_tls): Likewise.
14635         * object.h (Got_offset_list): New class.
14636         (Sized_relobj::local_has_got_offset): Added got_type parameter.
14637         (Sized_relobj::local_got_offset): Likewise.
14638         (Sized_relobj::set_local_got_offset): Likewise.
14639         (Sized_relobj::local_has_tls_got_offset): Removed.
14640         (Sized_relobj::local_tls_got_offset): Removed.
14641         (Sized_relobj::set_local_tls_got_offset): Removed.
14642         (Sized_relobj::Local_got_offsets): Changed to store a list of offsets.
14643         * output.cc (Output_data_got::add_global): Added got_type parameter.
14644         (Output_data_got::add_global_with_rel): Likewise.
14645         (Output_data_got::add_global_with_rela): Likewise.
14646         (Output_data_got::add_global_pair_with_rel): New function.
14647         (Output_data_got::add_global_pair_with_rela): New function.
14648         (Output_data_got::add_local): Added got_type parameter.
14649         (Output_data_got::add_local_with_rel): Likewise.
14650         (Output_data_got::add_local_with_rela): Likewise.
14651         (Output_data_got::add_local_pair_with_rel): New function.
14652         (Output_data_got::add_local_pair_with_rela): New function.
14653         (Output_data_got::add_global_tls): Removed.
14654         (Output_data_got::add_global_tls_with_rel): Removed.
14655         (Output_data_got::add_global_tls_with_rela): Removed.
14656         (Output_data_got::add_local_tls): Removed.
14657         (Output_data_got::add_local_tls_with_rel): Removed.
14658         (Output_data_got::add_local_tls_with_rela): Removed.
14659         * output.h (Output_data_got::add_global): Added got_type parameter.
14660         (Output_data_got::add_global_with_rel): Likewise.
14661         (Output_data_got::add_global_with_rela): Likewise.
14662         (Output_data_got::add_global_pair_with_rel): New function.
14663         (Output_data_got::add_global_pair_with_rela): New function.
14664         (Output_data_got::add_local): Added got_type parameter.
14665         (Output_data_got::add_local_with_rel): Likewise.
14666         (Output_data_got::add_local_with_rela): Likewise.
14667         (Output_data_got::add_local_pair_with_rel): New function.
14668         (Output_data_got::add_local_pair_with_rela): New function.
14669         (Output_data_got::add_global_tls): Removed.
14670         (Output_data_got::add_global_tls_with_rel): Removed.
14671         (Output_data_got::add_global_tls_with_rela): Removed.
14672         (Output_data_got::add_local_tls): Removed.
14673         (Output_data_got::add_local_tls_with_rel): Removed.
14674         (Output_data_got::add_local_tls_with_rela): Removed.
14675         * resolve.cc (Symbol::override_base_with_special): Removed
14676         reference to has_got_offset_ field.
14677         * symtab.cc (Symbol::init_fields): Replaced initialization
14678         of got_offset_ with got_offsets_.  Removed initialization
14679         of has_got_offset_
14680         * symtab.h (Symbol::has_got_offset): Aded got_type parameter.
14681         (Symbol::got_offset): Likewise.
14682         (Symbol::set_got_offset): Likewise.
14683         (Symbol::has_tls_got_offset): Removed.
14684         (Symbol::tls_got_offset): Removed.
14685         (Symbol::set_tls_got_offset): Removed.
14686         (Symbol::got_offset_): Removed.
14687         (Symbol::tls_mod_got_offset_): Removed.
14688         (Symbol::tls_pair_got_offset_): Removed.
14689         (Symbol::got_offsets_): New field.
14690         (Symbol::has_got_offset): Removed.
14691         (Symbol::has_tls_mod_got_offset): Removed.
14692         (Symbol::has_tls_pair_got_offset): Removed.
14693         * x86_64.cc (Target_x86_64::Got_type): New enum declaration.
14694         (Target_x86_64::Scan::local): Updated callers of Output_data_got
14695         member functions.
14696         (Target_x86_64::Scan::global): Likewise.
14697         (Target_x86_64::Relocate::relocate): Likewise.
14698         (Target_x86_64::Relocate::relocate_tls): Likewise.
14699
14700 2008-03-25  Ben Elliston  <bje@au.ibm.com>
14701
14702         * yyscript.y: Fix spelling error in comment.
14703
14704 2008-03-24  Ian Lance Taylor  <iant@google.com>
14705
14706         * options.h (class General_options): Define build_id option.
14707         * layout.h (class Layout): Declare write_build_id, create_note,
14708         create_build_id.  Add build_id_note_ member.
14709         * layout.cc: Include <cerrno>, <fcntl.h>, <unistd.h>,
14710         "libiberty.h", "md5.h", "sha1.h".
14711         (Layout::Layout): Initialize eh_frame_data_,
14712         eh_frame_hdr_section_, and build_id_note_.
14713         (Layout::finalize): Call create_build_id.
14714         (Layout::create_note): New function, broken out of
14715         Layout::create_gold_note.
14716         (Layout::create_gold_note): Call create_note.
14717         (Layout::create_build_id): New function.
14718         (Layout::write_build_id): New function.
14719         (Close_task_runner::run): Call write_build_id.
14720
14721         * x86_64.cc: Correct license to GPLv3.
14722
14723 2008-03-23  Ian Lance Taylor  <iant@google.com>
14724
14725         * options.cc: Include "demangle.h".
14726         (parse_optional_string): New function.
14727         (parse_long_option): Handle takes_optional_argument.
14728         (parse_short_option): Update dash_z initializer.  Handle
14729         takes_optional_argument.
14730         (General_options::General_options): Initialize do_demangle_.
14731         (General_options::finalize): Set do_demangle_.  Handle demangling
14732         style.
14733         * options.h (parse_optional_string): Declare.
14734         (struct One_option): Add optional_arg field.  Update constructor.
14735         Update call constructor calls.  Add takes_optional_argument
14736         function.
14737         (DEFINE_var): Add optional_arg__ parameter.  Change all callers.
14738         (DEFINE_optional_string): Define.
14739         (General_options::demangle): Change from DEFINE_bool to
14740         DEFINE_optional_string.
14741         (General_options::no_demangle): New function.
14742         (General_options::do_demangle): New function.
14743         (General_options::set_do_demangle): New function.
14744         (General_options::execstack_status_): Move definition to end of
14745         class definition.
14746         (General_options::static_): Likewise.
14747         (General_options::do_demangle_): New field.
14748         * object.cc (big_endian>::get_symbol_location_info): Call
14749         Options::do_demangle, not Options::demangle.
14750         * symtab.cc (demangle): Likewise.
14751
14752 2008-03-22  Ian Lance Taylor  <iant@google.com>
14753
14754         * gold.h: Include <cstddef> and <sys/types.h>
14755         * options.h: Include <cstring>.
14756
14757 2008-03-21  Ian Lance Taylor  <iant@google.com>
14758
14759         * Added source code to GNU binutils.
14760 \f
14761 Copyright (C) 2008-2012 Free Software Foundation, Inc.
14762
14763 Copying and distribution of this file, with or without modification,
14764 are permitted in any medium without royalty provided the copyright
14765 notice and this notice are preserved.
14766
14767 Local Variables:
14768 mode: change-log
14769 left-margin: 8
14770 fill-column: 74
14771 version-control: never
14772 End: