2010-05-12 Doug Kwan <dougkwan@google.com>
[external/binutils.git] / gold / ChangeLog
1 2010-05-12  Doug Kwan  <dougkwan@google.com>
2
3         * arm.cc (Target_arm::do_finalize_sections): Create an empty
4         attributes section only if there no attributes section after merging.
5         (Target_arm::merge_object_attributes): Move value of
6         Tag_MPextension_use_legacy to that of Tag_MPextension_use. 
7         Handle Tag_DIV_use and Tag_MPextension_use_legacy.
8         * testsuite/Makefile.am (check_SCRIPTS): Add arm_attr_merge.sh
9         (check_DATA): Add arm_attr_merge_6.stdout, arm_attr_merge_6r_stdout
10         and arm_attr_merge_7.stdout.
11         (arm_attr_merge_6.stdout, arm_attr_merge_6 arm_attr_merge_6a.o
12         arm_attr_merge_6b.o, arm_attr_merge_6r.stdout, arm_attr_merge_6r,
13         arm_attr_merge_7.stdout, arm_attr_merge_7, arm_attr_merge_7a.o,
14         arm_attr_merge_7b.o): New rules.
15         (MOSTLYCLEANFILES): Add arm_attr_merge_6, arm_attr_merge_6r and
16         arm_attr_merge_7
17         * testsuite/Makefile.in: Regenerate.
18         * testsuite/arm_attr_merge.sh: New file.
19         * testsuite/arm_attr_merge_[67][ab].s: Same.
20
21 2010-05-05  Nick Clifton  <nickc@redhat.com>
22
23         * po/es.po: Updated Spanish translation.
24
25 2010-04-27  H.J. Lu  <hongjiu.lu@intel.com>
26
27         * Makefile.am (install-exec-local): Properly install gold as
28         default cross linker.
29         * Makefile.in: Regenerated.
30
31 2010-04-27  H.J. Lu  <hongjiu.lu@intel.com>
32             Nick Clifton  <nickc@redhat.com>
33
34         * configure.ac (install_as_default): Define and set to false
35         unless --enable-gold or --enable-gold=both/gold has been
36         specified.
37         * configure: Regenerate.
38
39         * Makefile.am (install-exec-local): Install the executable as
40         'ld.gold'.  If install_as_default is true then also install it as
41         'ld'.
42         * Makefile.in: Regenerated.
43
44 2010-04-24  Ian Lance Taylor  <iant@google.com>
45
46         * layout.cc (Layout::layout_reloc): In relocatable link don't
47         combine reloc sections for grouped sections.
48
49 2010-04-23  Sriraman Tallam  <tmsriram@google.com>
50
51         * gc.h (gc_process_relocs): Pass information on relocs pointing to
52         sections that are not ordinary to icf.
53         * icf.cc (get_section_contents): Handle relocation pointing to section
54         with no object or shndx information.
55         * testsuite/Makefile.am: Remove icf_virtual_function_folding_test.sh
56         * testsuite/Makefile.in: Regenerate.
57         * testsuite/icf_virtual_function_folding_test.cc: Remove printf.
58         * testsuite/icf_virtual_function_folding_test.sh: Delete file.
59
60 2010-04-22  Ian Lance Taylor  <iant@google.com>
61
62         * expression.cc (Expression::Expression_eval_info): Add
63         result_alignment_pointer field.
64         (Expression::eval_with_dot): Add result_alignment_pointer
65         parameter.  Change all callers.
66         (Expression::eval_maybe_dot): Likewise.
67         (class Binary_expression): Add alignment_pointer parameter to
68         left_value and right_value.  Change all callers.
69         (BINARY_EXPRESSION): Set result alignment.
70         (class Trinary_expression): Add alignment_pointer parameter to
71         arg2_value and arg3_value.  Change all callers.
72         (Trinary_cond::value): Set result alignment.
73         (Max_expression::value, Min_expression::value): Likewise.
74         (Align_expression::value): Likewise.
75         * script-sections.cc (class Sections_element): Add dot_alignment
76         parameter to set_section_addresses virtual function.  Update
77         instantiations.
78         (class Output_section_element): Likewise.
79         (Script_sections::create_segments): Add dot_alignment parameter.
80         Change all callers.
81         (Script_sections::create_segments_from_phdrs_clause): Likewise.
82         (Script_sections::set_phdrs_clause_addresses): Likewise.
83         * script-sections.h: Update declarations.
84         * script.h: Update declarations.
85         * output.h (Output_segment::set_minimum_p_align): Don't decrease
86         min_p_align.
87         * testsuite/script_test_3.t: Set large alignment.
88         * testsuite/script_test_3.sh: Make sure that at least one LOAD
89         segment has expected alignment.
90
91 2010-04-22  Nick Clifton  <nickc@redhat.com>
92
93         * po/gold.pot: Updated by the Translation project.
94         * po/vi.po: Updated Vietnamese translation.
95
96 2010-04-22  H.J. Lu  <hongjiu.lu@intel.com>
97
98         * testsuite/Makefile.am (check_PROGRAMS): Add
99         icf_virtual_function_folding_test.
100         * testsuite/Makefile.in: Regenerated.
101
102 2010-04-15  Andrew Haley  <aph@redhat.com>
103
104         * options.h (merge_exidx_entries): New option.
105         * arm.cc (class Arm_exidx_fixup): Add new arg, merge_exidx_entries.
106         (class Arm_exidx_fixup::merge_exidx_entries_): New member.
107         (Output_section::fix_exidx_coverage): Add new arg, merge_exidx_entries.
108         (Target_arm::merge_exidx_entries): New function.
109         (process_exidx_entry): Don't merge if merge_exidx_entries_ is false.
110         (Arm_output_section::fix_exidx_coverage): Pass merge_exidx_entries
111         to Arm_exidx_fixup constructor.
112         Add new arg, merge_exidx_entries.
113         (Target_arm::fix_exidx_coverage): pass merge_exidx_entries to
114         Arm_output_section::fix_exidx_coverage.
115
116 2010-04-18  Sriraman Tallam  <tmsriram@google.com>
117
118         * icf.cc (get_section_contents): Check for preemptible functions.
119         Ignore addend when appropriate.
120         * symtab.cc (should_add_dynsym_entry): Add new parameter.  Check for
121         section folded.
122         (add_from_relobj): Check for section folded.
123         (set_dynsym_indexes): Fix call to should_add_dynsym_entry.
124         * symtab.h (should_add_dynsym_entry): Add new parameter.
125         * target-reloc.h (scan_relocs): Check for section folded.
126         * x86_64.cc (Target_x86_64::Scan::possible_function_pointer_reloc):
127         Check reloc types for function pointers in shared objects.
128         * testsuite/Makefile.am (icf_virtual_function_folding_test): New test
129         case.
130         (icf_preemptible_functions_test): New test case.
131         (icf_string_merge_test): New test case.
132         * testsuite.Makefile.in: Regenerate.
133         * testsuite/icf_safe_so_test.sh: Change to not fold foo_glob and
134         bar_glob.  Refactor code.
135         * testsuite/icf_preemptible_functions_test.cc: New file.
136         * testsuite/icf_preemptible_functions_test.sh: New file.
137         * testsuite/icf_string_merge_test.cc: New file.
138         * testsuite/icf_string_merge_test.sh: New file.
139         * testsuite/icf_virtual_function_folding_test.cc: New file.
140         * testsuite/icf_virtual_function_folding_test.sh: New file.
141
142 2010-04-14  Doug Kwan  <dougkwan@google.com>
143
144         * arm.cc (Arm_output_section::fix_exidx_coverage): Mark object
145         for local symbol recounting if we remove a section due to ICF.
146         * gold.cc (queue_middle_gc_tasks): Create a dummy blocker if
147         there are no regular objects in input.
148
149 2010-04-13  Doug Kwan  <dougkwan@google.com>
150
151         * arm.cc (Arm_input_section::set_final_data_size): Compute
152         accurate final data size instead of using current data size.
153
154 2010-04-09  Doug Kwan  <dougkwan@google.com>
155
156         * layout.cc (Layout::choose_output_section): Handle script section
157         types.
158         (Layout::make_output_section_for_script): Add section type parameter.
159         Handle script section types.
160         * layout.h (Layout::make_output_section_for_script): Add section
161         type parameter.
162         * output.cc (Output_section::Output_section): Initialize data member
163         is_noload_.
164         (Output_section::do_reset_address_and_file_offset): Do not set address
165         to 0 if section is a NOLOAD section.
166         * output.h (Output_section::is_noload): New method.
167         (Output_section::set_is_noload): Ditto.
168         (Output_section::is_noload_): New data member.
169         * script-c.h (Script_section_type): New enum type.
170         (struct Parser_output_section_header): Add new file section_type.
171         * script-sections.cc (Sections_element::output_section_name): Add
172         parameter for returning script section type.
173         (Output_section_definition::output_section_name): Ditto.
174         (Output_section_definition::section_type)P; New method.
175         (Output_section_definiton::script_section_type_name): Ditto.
176         (Output_section_definition::script_section_type_): New data member.
177         (Output_section_definition::Output_section_definition): Initialize
178         data member Output_section_definition::script_section_type_.
179         (Output_section_definition::create_sections): Pass script section type
180         to Layout::make_output_section_for_script.
181         (Output_section_definition::output_section_name): Return script
182         section type to caller.
183         (Output_section_definition::set_section_address): Do not advance
184         dot value and load address if section type is NOLOAD.  Set address
185         of NOLOAD sections regardless of section flags.
186         (Output_section_definition::print): Print section type if it is
187         not SCRIPT_SECTION_TYPE_NONE.
188         (Output_section_definition::section_type): New method.
189         (Output_section_definition::script_section_type_name): Ditto.
190         (Script_sections::output_section_name): Add new parameter
191         PSECTION_TYPE for returning script section type.  Pass it to
192         section elements.  Handle discard sections.
193         (Sort_output_sections::operator()): Handle NOLOAD sections.
194         * script-sections.h (Script_sections::Section_type): New enum type.
195         (Script_sections::output_section_name): Add a new parameter for
196         returning script section type.
197         * script.cc (script_keyword_parsecodes): Add keywords COPY, DSECT,
198         INFO and NOLOAD.
199         * yyscript.y (union): Add new field SECTION_TYPE.
200         (COPY, DSECT, INFO, NOLOAD): New tokens.
201         (opt_address_and_section_type): Change type to output_section_header.
202         (section_type): New non-terminal
203         (section_header): Handle section type.
204         (opt_address_and_section_type): Return section type value.
205
206 2010-04-09  H.J. Lu  <hongjiu.lu@intel.com>
207
208         * testsuite/plugin_common_test_1.c (foo): Add prototype.
209         * testsuite/plugin_common_test_2.c (foo): Likewise.
210
211 2010-04-08  Doug Kwan  <dougkwan@google.com>
212
213         * merge.cc (Output_merge_data::set_final_data_size): Handle empty
214         Output_merge_data.
215         * output.cc (Output_section::add_merge_input_section): Simplify
216         code and return status of Output_merge_base::add_input_section.
217         Update merge section map only if Output_merge_base::add_input_section 
218         returns true.
219
220 2010-04-07  Doug Kwan  <dougkwan@google.com>
221
222         * arm.cc (Arm_relobj::scan_section_for_cortex_a8_erratum): Warn
223         if section is marked as containing instructions but has no mapping
224         symbols.
225         (Arm_relobj::do_count_local_symbols): Call adjust_sym_shndx to get
226         correct section index.
227         (Arm_relobj::find_linked_text_section): Ditto.
228
229 2010-04-07  Cary Coutant  <ccoutant@google.com>
230
231         * archive.cc (include_member): Destroy Read_symbols_data object before
232         releasing file.
233         * object.cc (Read_symbols_data::~Read_symbols_data) New destructor.
234         * object.h (Read_symbols_data::Read_symbols_data) New constructor.
235         (Read_symbols_data::~Read_symbols_data) New destructor.
236         (Section_relocs::Section_relocs) New constructor.
237         (Section_relocs::~Section_relocs) New destructor.
238         (Read_relocs_data::Read_relocs_data) New constructor.
239         (Read_relocs_data::~Read_relocs_data) New destructor.
240         * testsuite/binary_unittest.cc (Sized_binary_test): Set sd member
241         pointers to NULL after deleting.
242
243 2010-04-07  Doug Kwan  <dougkwan@google.com>
244
245         * arm.cc: Replace "endianity" with "endianness" in comments.
246         (Arm_exidx_cantunwind): Ditto.
247         (Arm_relobj::Arm_relobj): Initialize merge_flags_and_attribures.
248         (Arm_relobj::merge_flags_and_attributes): New method.
249         (Arm_relobj::merge_flags_and_attributes_): New data member.
250         (Arm_exidx_cantunwind::do_fixed_endian_write): Fix formatting.
251         (Arm_relobj::scan_sections_for_stubs): Ditto.
252         (Arm_relobj::do_read_symbols): Check to see if we really want to
253         merge processor-specific flags and attributes.  Exit early if
254         an object is empty except for section names and the undefined symbol.
255         (Target_arm::do_finalize_sections): Move check for ELF format to
256         Arm_relobj::do_read_symbols.  Merge processor specific flags and
257         attributes from a regular object only when we have determined that
258         it is aapropriate.  Do not create an .ARM.attributes section in
259         output if there is no regular input object.
260         (Target_arm::merge_processor_specific_flags): Check
261         --warn-mismatch before printing any error.
262         (Target_arm::merge_object_attributes): Ditto.
263         * gold.cc (queue_middle_tasks): Handle the case in which there is
264         no regular object in input.
265         * options.cc (General_options::parse_EB): New method.
266         (General_options::parse_EL): Same.
267         (General_options::General_options): Initialize endianness_.
268         * options.h (-EB, -EL, -no-pipeline-knowledge, -p, --warn-mismatch):
269         New options.
270         (General_options::Endianness): New enum.
271         (General_options::endianness): New method.
272         (General_options::endianness_): New data member.
273         * parameters.cc (Parameters::set_options): Check target endianness.
274         (Parameters::set_target_once): Ditto.
275         (Parameters::check_target_endianness): New method.
276         (parameters_force_valid_target): If either -EL or -EB is specified,
277         use it to define endianness of default target.
278         * parameters.h (Parameters::check_target_endianness): New method
279         declaration.
280         * target.h (class Target): Change "endianity" to "endianness"
281         in comments.
282
283 2010-04-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
284
285         * configure.ac (AM_INIT_AUTOMAKE): Add option no-dist.
286         * configure: Regenerate.
287         * Makefile.in: Regenerate.
288         * testsuite/Makefile.in: Regenerate.
289
290 2010-04-06  Cary Coutant  <ccoutant@google.com>
291
292         gcc PR lto/42757
293         * plugin.cc (Pluginobj::get_symbol_resolution_info): Check for
294         prevailing definitions of common symbols.
295         * testsuite/plugin_test_6.sh: New test case.
296         * testsuite/plugin_common_test_1.c: New test case.
297         * testsuite/plugin_common_test_2.c: New test case.
298         * testsuite/Makefile.am (plugin_test_6): New test case.
299         * testsuite/Makefile.in: Regenerate.
300
301 2010-04-06  Nick Clifton  <nickc@redhat.com>
302
303         * po/vi.po: New Vietnamese translation.
304
305 2010-03-30  Doug Kwan  <dougkwan@google.com>
306
307         * arm.cc (Target_arm::using_thumb_only): Handle v6-M
308
309 2010-03-25  Doug Kwan  <dougkwan@google.com>
310
311         * gold/arm.cc (Arm_exidx_fixup::update_offset_map): Rearrange code
312         to avoid a conversion warning on a 32-bit host.
313
314 2010-03-24  Ian Lance Taylor  <iant@google.com>
315
316         * testsuite/script_test_3.t: Add a TLS segment.
317         * testsuite/Makefile.am (check_PROGRAMS): Add
318         tls_phdrs_script_test.
319         (tls_phdrs_script_test_SOURCES): Define.
320         (tls_phdrs_script_test_DEPENDENCIES): Define.
321         (tls_phdrs_script_test_LDFLAGS): Define.
322         (tls_phdrs_script_test_LDADD): Define.
323         * testsuite/Makefile.in: Rebuild.
324
325 2010-03-23  Cary Coutant  <ccoutant@google.com>
326
327         * fileread.cc (find_or_make_view): Fix comment.
328
329 2010-03-23  Ian Lance Taylor  <iant@google.com>
330
331         * script-sections.cc (class Orphan_section_placement): Define
332         PLACE_TLS and PLACE_TLS_BSS.
333         (Orphan_section_placement::Orphan_section_placement): Initialize
334         new places.
335         (Orphan_section_placement::find_place): Handle SHF_TLS sections.
336         * testsuite/Makefile.am (check_PROGRAMS): Add tls_script_test.
337         (tls_script_test_SOURCES): Define.
338         (tls_script_test_DEPENDENCIES): Define.
339         (tls_script_test_LDFLAGS): Define.
340         (tls_script_test_LDADD): Define.
341         * testsuite/Makefile.in: Rebuild.
342
343 2010-03-22  Doug Kwan  <dougkwan@google.com>
344
345         * arm.cc (Arm_relocate_functions::abs8,
346         Arm_relocate_functions::abs16): Use correct check for overflow
347         specified in the ARM ELF specs.
348         (Arm_relocate_functions): thumb_branch_common.  Handle bit 1 of branch
349         target of a BLX instruction specially.
350         (Reloc_stub::stub_type_for_reloc): Ditto.
351         (Relocate::relocate): Use symbolic names instead of numeric relocation
352         codes to report error.
353         (Target_arm::do_relox): Reduce default stub-group size for Cortex-A8
354         workaround.
355         * testsuite/Makefile.am (check_DATA): add thumb_blx_in_range.stdout,
356         thumb_blx_out_of_range.stdout, thumb2_blx_in_range.stdout and
357         thumb2_blx_out_of_range.stdout
358         (thumb_bl_out_of_range, thumb_bl_out_of_range.o,
359         thumb2_bl_out_of_range, thumb2_bl_out_of_range.o): Fix dependenices.
360         (thumb_blx_in_range.stdout, thumb_blx_in_range, thumb_blx_in_range.o,
361         thumb_blx_out_of_range.stdout, thumb_blx_out_of_range,
362         thumb_blx_out_of_range.o, thumb2_blx_in_range.stdout,
363         thumb2_blx_in_range, thumb2_blx_in_range.o,
364         thumb2_blx_out_of_range.stdout, thumb2_blx_out_of_range,
365         thumb2_blx_out_of_range.o): New rules.
366         (MOSTLYCLEANFILES): Add thumb_blx_in_range, thumb_blx_out_of_range,
367         thumb2_blx_in_range and thumb2_blx_out_of_range.
368         * testsuite/Makefile.in: Regenerate.
369         * arm_branch_in_range.sh: Add tests for THUMB BLX.
370         * testsuite/thumb_blx_in_range.s: New file.
371         * testsuite/thumb_blx_out_of_range.s: New file.
372
373 2010-03-22  Rafael Espindola  <espindola@google.com>
374
375         * archive.cc (Should_include): Move to archive.h.
376         (should_include_member): Make it a member of Archive.
377         (Lib_group): New.
378         (Add_lib_group_symbols): New.
379         * archive.h: Include options.h.
380         (Archive_member): Moved from Archive.
381         (Should_include): Moved from archive.cc.
382         (Lib_group): New.
383         (Add_lib_group_symbols): New.
384         * dynobj.cc (do_should_include_member): New.
385         * dynobj.h (do_should_include_member): New.
386         * gold.cc (queue_initial_tasks): Update call to queue.
387         * main.cc (main): Print lib group stats.
388         * object.cc (do_should_include_member): New.
389         * object.h: Include archive.h.
390         (Object::should_include_member): New.
391         (Object::do_should_include_member): New.
392         (Sized_relobj::do_should_include_member): New.
393         * options.cc (General_options::parse_start_lib): New.
394         (General_options::parse_end_lib): New.
395         (Input_arguments::add_file): Handle lib groups.
396         (Input_arguments::start_group): Check we are not in a lib.
397         (Input_arguments::start_lib): New.
398         (Input_arguments::end_lib): New.
399         * options.h (General_options): Add start_lib and end_lib.
400         (Input_argument::lib_): New.
401         (Input_argument::lib): New.
402         (Input_argument::is_lib): New.
403         (Input_file_lib): New.
404         (Input_arguments::in_lib_): New.
405         (Input_arguments::in_lib): New.
406         (Input_arguments::start_lib): New.
407         (Input_arguments::end_lib_): New.
408         * plugin.cc (Pluginobj::get_symbol_resolution_info): Mark symbols
409         in unused members as preempted.
410         (Sized_pluginobj::do_should_include_member): New.
411         * plugin.h (Sized_pluginobj::do_should_include_member): New.
412         * readsyms.cc (Read_symbols::locks): If we are just reading a member,
413         return the blocker.
414         (Read_symbols::do_whole_lib_group): New.
415         (Read_symbols::do_lib_group): New.
416         (Read_symbols::do_read_symbols): Handle lib groups.
417         (Read_symbols::get_name): Handle lib groups.
418         * readsyms.h (Read_symbols): Add an archive member pointer.
419         (Read_symbols::do_whole_lib_group): New.
420         (Read_symbols::do_lib_group): New.
421         (Read_symbols::member_): New.
422         * script.cc (read_input_script): Update call to queue_soon.
423
424 2010-03-19  Doug Kwan  <dougkwan@google.com>
425
426         * arm.cc (Stub_table::Stub_table): Initialize new data members
427         Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_.
428         (Stub_table::add_reloc_stub): Assign stub offset and update
429         Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_.
430         (Stub_table::reloc_stubs_size_, Stub_table::reloc_stubs_addralign_):
431         New data members.
432         (Stub_table::update_data_size_and_addralign): Use
433         Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_
434         instead of going over all reloc stubs.
435         (Stub_table::finalize_stubs): Do not assign reloc stub offsets.
436         * stringpool.cc (Stringpool_template::Stringpool_template): Initialize
437         Stringpool_template::offset_ to size of Stringpool_char.
438         (Stringpool_template::new_key_offset): Remove code to initialize
439         Stringpool_template::offset_.
440         * stringpool.h (Stringpool_template::set_no_zero_null): Set
441         Stringpool_template::offset_ to zero.
442
443 2010-03-15  Doug Kwan  <dougkwan@google.com>
444
445         * stringpool.cc (Stringpool_template::Stringpool_template): Initialize
446         offset_.
447         (Stringpool_template::new_key_offset): New method.
448         (Stringpool_template::add_string): Assign offsets when adding new
449         strings.
450         (Stringpool_template::set_string_offsets): Do not set string offsets
451         when not optimizing.
452         * stringpool.h (Chunked_vector::Chunked_vector): Initialize data
453         member size_.
454         (Chunked_vector::clear): Clear size_.
455         (Chunked_vector::reserve): Call reserve method of all Element_vectors.
456         (Chunked_vector::size): Return size_.
457         (Chunked_vector::push_back): Use size_ to find insert position.
458         (Chunked_vector::size_): New data member. 
459         (Stringpool_template::set_no_zero_null): Assert string set is empty.
460         (Stringpool_template::new_key_offset): New method declaration.
461         (Stringpool_template::offset_): New data member.
462
463 2010-03-15   Rafael Espindola  <espindola@google.com>
464
465         * readsyms.cc (Read_symbols::do_read_symbols): Update calls to
466         Add_symbols' constructor.
467         * readsyms.h (Add_symbols): Remove the input_group member.
468
469 2010-03-10  Ian Lance Taylor  <iant@google.com>
470
471         * reloc.cc (Sized_relobj::split_stack_adjust_reltype): Call the
472         target to ask whether a reference to a symbol requires a stack
473         split.
474         * target.h (Target::is_call_to_non_split): New function.
475         (Target::do_is_call_to_non_split): Declare virtual function.
476         * target.cc: Include "symtab.h".
477         (Target::do_is_call_to_non_split): New function.
478         * i386.cc (Target_i386::do_is_call_to_non_split): New function.
479
480 2010-03-10  Cary Coutant  <ccoutant@google.com>
481
482         * fileread.cc (File_read::~File_read): Don't delete whole_file_view_.
483         (File_read::open[1]): Remove initial mapping of whole_file_view_.
484         (File_read::open[2]): Add whole_file_view_ to list of views.
485         (File_read::make_view): Remove test of whole_file_view_.
486         (File_read::find_or_make_view): Create whole_file_view_ if
487         necessary.
488         (File_read::clear_views): Replace bool parameter with enum;
489         adjust all callers.  Don't delete views with permanent data;
490         do delete cached views and views from archives if
491         --no-keep-files-mapped is set.  Set whole_file_view_ to NULL
492         if clearing the corresponding view.
493         * fileread.h (File_read::Clear_views_mode): New enum.
494         (File_read::View::is_permanent_view): New method.
495         (File_read::clear_views): Replace bool parameter
496         with enum; adjust all callers.
497         * options.h (General_options): Change keep_files_mapped option;
498         add map_whole_files.
499         * readsyms.cc (Add_symbols::run): Delete sd_ object before
500         releasing the file.
501         * reloc.cc (Scan_relocs::run): Delete rd_ object before releasing
502         the file.
503
504 2010-03-10  David S. Miller  <davem@davemloft.net>
505
506         * sparc.cc (Target_sparc::Scan::local): Accept R_SPARC_WPLT30.
507
508 2010-03-09  Sriraman Tallam  <tmsriram@google.com>
509
510         * icf.cc (get_section_contents): Add '@' marker after processing the
511         merge reloc.
512
513 2010-03-08  Doug Kwan  <dougkwan@google.com>
514
515         * gold/arm.cc (Arm_exidx_fixup::update_offset_map): Fix build breakage
516         due to a conversion warning.
517         (Arm_relobj::update_output_local_symbol_count): Check for local
518         symbol with unset output index.
519
520 2010-03-05  Ian Lance Taylor  <iant@google.com>
521
522         * options.h (class General_options): Add --spare-dynamic-tags.
523         * output.cc (Output_data_dynamic::set_final_data_size): Implement
524         --spare-dynamic-tags.
525
526 2010-03-05  Ian Lance Taylor  <iant@google.com>
527
528         * incremental.cc: Include "libiberty.h".
529
530 2010-03-05  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
531
532         * dynobj.h (Verdef::Verdef): Add is_info arg, is_info member
533         function, is_info_ member.
534         * dynobj.cc (Verdef::write): Set VER_FLG_INFO if this->is_info_.
535         (Versions::Versions): Update caller.
536         (Versions::define_base_version): Likewise.
537         (Versions::add_def): Likewise.
538
539 2010-03-03  Sriraman Tallam  <tmsriram@google.com>
540
541         * i386.cc (Target_i386::can_check_for_function_pointers): New function.
542         (Scan::possible_function_pointer_reloc): New function.
543         (Scan::local_reloc_may_be_function_pointer): Change to call
544         possible_function_pointer_reloc.
545         (Scan::global_reloc_may_be_function_pointer): Ditto.
546         * icf.h (Icf::check_section_for_function_pointers): Change to reject
547         relocations in ".data.rel.ro._ZTV" section.
548         * testsuite/icf_safe_so_test.sh: Change to pass i386.
549         * testsuite/icf_safe_so_test.cc: Ditto.
550         * testsuite/icf_safe_test.cc: Ditto.
551         * testsuite/icf_safe_test.sh: Ditto.
552
553 2010-03-03  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
554             Ian Lance Taylor  <iant@google.com>
555
556         * target-reloc.h (relocate_section): Check the symbol table index
557         for -1U before setting the local symbol index.
558         (scan_relocatable_relocs): If copying the relocation, record that
559         the local symbol is required.
560         * object.h (Symbol_value::is_output_symtab_index_set): New
561         function.
562         (Symbol_value::may_be_discarded_from_output_symtab): New
563         function.
564         (Symbol_value::has_output_symtab_entry): New function.
565         (Symbol_value::needs_output_symtab_entry): Remove.
566         (Symbol_value::output_symtab_index): Make sure the symbol index is
567         set.
568         (Symbol_value::set_output_symtab_index): Make sure the symbol
569         index is not set.  Make sure the new index is valid.
570         (Symbol_value::set_must_have_output_symtab_entry): New function.
571         (Symbol_value::has_output_dynsym_entry): New function.
572         (Symbol_value::set_output_dynsym_index): Make sure the new index
573         is valid.
574         (Sized_relobj::set_must_have_output_symtab_entry): New function.
575         * object.cc (Sized_relobj::do_count_local_symbols): Only discard a
576         local symbol if permitted.
577         (Sized_relobj::do_finalize_local_symbols): Call
578         is_output_symtab_index_set rather than needs_output_symtab_entry.
579         (Sized_relobj::write_local_symbols): Call has_output_symtab_entry
580         rather than needs_output_symtab_entry.  Call
581         has_output_dynsym_entry rather than needs_output_dynsym_entry.
582         * arm.cc (Arm_relobj::update_output_local_symbol_count): Call
583         is_output_symtab_index_set rather than needs_output_symtab_entry.
584         * testsuite/discard_locals_relocatable_test.c: New file.
585         * testsuite/discard_locals_test.sh: Test -r.
586         * testsuite/Makefile.am (check_DATA): Add
587         discard_locals_relocatable_test1.syms,
588         discard_local_relocatable_test2.syms.
589         (MOSTLYCLEANFILES): Likewise.  Also add
590         discard_locals_relocatable_test1.lout and
591         discard_locals_relocatable_test2.out.
592         (discard_locals_relocatable_test1.syms): New target.
593         (discard_locals_relocatable_test.o): New target.
594         (discard_locals_relocatable_test1.out): New target.
595         (discard_locals_relocatable_test2.syms): New target.
596         (discard_locals_relocatable_test2.out): New target.
597         (various): Add missing ../ld-new dependencies.
598         * testsuite/Makefile.in: Rebuild.
599
600 2010-03-03  Nick Clifton  <nickc@redhat.com>
601
602         * po/fi.po: New Finnish translation.
603
604 2010-03-01  Doug Kwan  <dougkwan@google.com>
605
606         * layout.cc (Layout::Layout): Force section types of .init_array*,
607         .preinit_array* and .fini_array* sections.
608         * output.cc (Output_section::Input_section_sort_entry::has_priority):
609         Fix check of return value of std::string::find.().
610         (Output_section::Input_section_sort_compare::operator()): Remove
611         comment about .init_array.
612         (Output_section::Input_section_sort_init_fini_compare::operator()):
613         New method.
614         (Output_section::sort_attached_input_sections): Handle .init_array
615         and .fini_array specially.
616         * output.h (Output_section::Inut_section_sort_compare): Update
617         comment.
618         (Output_section::Input_section_sort_init_fini_compare): New struct.
619
620 2010-02-26  Doug Kwan  <dougkwan@google.com>
621
622         * arm.cc (Target_arm::Relocate::reloc_is_non_pic): Treat
623         R_ARM_PREL31 and R_ARM_SBREL31 as position independent.
624         * testsuite/debug_msg.sh: Avoid matching source line number for
625         use of global variable undef_int.
626
627 2010-02-26  Doug Kwan  <dougkwan@google.com>
628
629         * arm.cc (Target_arm::scan_reloc_for_stub): Move code handling
630         R_ARM_V4BX to Target_arm::scan_reloc_section_for_stubs.
631         (Target_arm::scan_reloc_section_for_stubs): Instead of calling
632         scan_reloc_for_stub, do all processing of R_ARM_V4BX here.
633         * options.cc (General_options::General_options): Initialize member
634         fix_v4bx_.
635         * testsuite/Makefile.am (check_SCRIPTS): Add arm_fix_v4bx.sh
636         (check_DATA): Add arm_fix_v4bx.stdout, arm_fix_v4bx_interworking.stdout
637         and rm_no_fix_v4bx.stdout
638         (arm_fix_v4bx.stdout, arm_fix_v4bx, arm_fix_v4bx.o,
639         arm_fix_v4bx_interworking.stdout, arm_fix_v4bx_interworking,
640         arm_no_fix_v4bx.stdout, arm_no_fix_v4bx): New make rules.
641         (MOSTLYCLEANFILES): Add arm_fix_v4bx, arm_fix_v4bx_interworking
642         and arm_no_fix_v4bx.
643         * Makefile.in: Regenerate.
644         * testsuite/arm_fix_v4bx.s: New file.
645         * testsuite/arm_fix_v4bx.sh: Ditto.
646
647 2010-02-24  Doug Kwan  <dougkwan@google.com>
648
649         * arm.cc (Target_arm::got_section): Make the .got section the first
650         non RELRO section in the data segment.
651         * testsuite/script_test_5.sh: Fix match patterns to avoid matching
652         suffixes of section names.
653
654 2010-02-24  Doug Kwan  <dougkwan@google.com>
655
656         * arm.cc (Target_arm::do_finalize_sections): Skip processor specific
657         flags and attributes merging if an input file is a binary file.
658         * fileread.cc (Input_file::open): Record format of original file.
659         * fileread.h (Input_file::Format): New enum type.
660         (Input_file::Input_file): Initialize data member format_.
661         (Input_file::format): New method definition.
662         (Input_file::format_):: New data member.
663
664 2010-02-24  Doug Kwan  <dougkwan@google.com>
665
666         * arm.cc (Arm_output_data_got): New class.
667         (ARM_TCB_SIZE): New constant
668         (Target_arm): Use Arm_output_data_got instead of Output_data_got.
669         (Arm_output_section::fix_exidx_coverage): Add a parameter for layout.
670         If user uses a script with a SECTIONS clause, issue only a warning
671         for a misplaced EXIDX input section.  Otherwise, issue an error.
672         (Arm_relobj::do_gc_process_relocs): Exit early if we are not doing
673         garbage collection.
674         (Target_arm::got_mode_index_entry): Handle static linking.
675         (Target_arm::Scan::local): Ditto.
676         (Target_arm::Scan::global): Ditto.
677         (Target_arm::Relocate::relocate_tls): Handle static linking.  Fix
678         all incorrectly implemented relocations.
679         (Target_arm::fix_exidx_coverage): Pass layout to 
680         Arm_output_section::fix_exidx_coverage.
681         * layout.cc (Layout::section_name_mapping): Remove trailing dots
682         from ".ARM.exidx." and ".ARM.extab.".
683
684 2010-02-23  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
685
686         * arm.cc (Target_arm::do_finalize_sections): Create attribute
687         section if it does not already exist.
688         * attributes.cc (Attributes_section_data::Attributes_section_data):
689         Don't crash if size is zero.
690
691 2010-02-23  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
692             Ian Lance Taylor  <iant@google.com>
693
694         * gold.cc (queue_middle_tasks): If no input files were opened,
695         exit.
696         * workqueue.h (Task_function::Task_function): Assert that there is
697         a blocker.
698
699 2010-02-22  Doug Kwan  <dougkwan@google.com>
700
701         * gold-threads.h (Once::~Once): Explicitly define virtual destructor.
702         * icf.cc (get_section_contents): Cast snprintf arguments to long long
703         types to avoid warnings due to different uint64_t implementations
704         on different hosts.
705
706 2010-02-21  Doug Kwan  <dougkwan@google.com>
707
708         * arm.cc (Arm_relocate_functions::arm_branch_common): Fix bug in
709         handling of the maximum backward branch offset.
710         (Arm_relocate_functions::thumb_branch_common): Ditto.
711         * testsuite/Makefile.am (check_SCRIPTS): Add arm_branch_in_range.sh.
712         (check_DATA): Add arm_bl_in_range.stdout, arm_bl_out_of_range.stdout
713         thumb_bl_in_range.stdout, thumb_bl_out_of_range.stdout, 
714         thumb2_bl_in_range.stdout and thumb2_bl_out_of_range.stdout.
715         (arm_bl_in_range.stdout, arm_bl_in_range, arm_bl_in_range.o,
716         arm_bl_out_of_range.stdout, arm_bl_out_of_range,
717         arm_bl_out_of_range.o, thumb_bl_in_range.stdout, thumb_bl_in_range,
718         thumb_bl_in_range.o, thumb_bl_out_of_range.stdout,
719         thumb_bl_out_of_range thumb_bl_out_of_range.o,
720         thumb2_bl_in_range.stdout, thumb2_bl_in_range, thumb2_bl_in_range.o
721         thumb2_bl_out_of_range.stdout, thumb2_bl_out_of_range,
722         thumb2_bl_out_of_range.o): New rules.
723         (MOSTLYCLEANFILES): Add arm_bl_in_range, arm_bl_out_of_range,
724         thumb_bl_in_range, thumb_bl_out_of_range, thumb2_bl_in_range and
725         thumb2_bl_out_of_range
726         * testsuite/Makefile.in: Regenerate.
727         * testsuite/arm_bl_in_range.s: New file.
728         * testsuite/arm_bl_out_of_range.s: Ditto.
729         * testsuite/arm_branch_in_range.sh: Ditto.
730         * testsuite/arm_branch_range.t: Ditto.
731         * testsuite/thumb2_branch_range.t: Ditto.
732         * testsuite/thumb_bl_in_range.s: Ditto.
733         * testsuite/thumb_bl_out_of_range.s: Ditto.
734         * testsuite/thumb_branch_range.t: Ditto.
735
736 2010-02-20  Sriraman Tallam  <tmsriram@google.com>
737
738         * gc.h (gc_process_relocs): Change vectors to point to the new list.
739         Add reloc offset information.
740         * icf.cc (get_section_contents): Change iterators to point to the new
741         vectors. Add reloc offset information to the contents.
742         * icf.h (Icf::Sections_reachable_info): New typedef.
743         (Icf::Sections_reachable_list): New typedef.
744         (Icf::Offset_info): New typedef.
745         (Icf::Reloc_info): New struct typedef.
746         (Icf::Reloc_info_list): New typedef.
747         (Icf::symbol_reloc_list): Delete method.
748         (Icf::addend_reloc_list): Delete method.
749         (Icf::section_reloc_list): Delete method.
750         (Icf::reloc_info_list): New method.
751         (Icf::reloc_info_list_): New member.
752
753 2010-02-19  Doug Kwan  <dougkwan@google.com>
754
755         * arm-reloc.def: Mark R_ARM_TLS_GD32, R_ARM_TLS_LDM32,
756         R_ARM_TLS_LDO32, R_ARM_TLS_IE32 and R_ARM_TLS_LE32 are implemented.
757         * arm.cc (Arm_relocation_functions): New forward declaration.
758         (Target_arm::Target_arm): Initialize new data members
759         got_mod_index_offset_ and tls_base_symbol_defined_.
760         (Target_arm::Relocate::relocate_tls): New method.
761         (Target_arm::optimize_tls_reloc, Target_arm::define_tls_base_symbol,
762          Target_arm::got_mod_index_entry, Target_arm::rel_tls_desc_section):
763         New methods.
764         (Target_arm::Got_type): Add GOT_TYPE_TLS_NOFFSET, GOT_TYPE_OFFSET,
765         GOT_TYPE_TLS_PAIR and GOT_TYPE_TLS_DESC.
766         (Target_arm::got_mod_index_offset_,
767         Target_arm::tls_base_symbol_defined_): New data members.
768         (Target_arm::Scan::local, Target::Scan::global,
769         Target_arm::Relocate::relocate): Handle 32-bit initial TLS
770         relocations.
771
772 2010-02-18  Doug Kwan  <dougkwan@google.com>
773
774         * arm.cc (Arm_relobj::find_linked_text_section): New method.
775         (Arm_relobj::make_exidx_input_section): Pass section index of linked
776         text section as a parameter becuase some broken tools may not set
777         the link in section header.
778         (Target_arm::has_got_section): New method.
779         (Target_arm::scan_section_for_cortex_a8_stubs): Treat an input section
780         without any mapping symbol as data only.  Remove warning.
781         (Arm_relobj::do_read_synbols): If an EXIDX input section has no
782         link in its section header, try to discover the link by inspecting the
783         REL31 relocation at the beginning of the section.
784         (Target_arm::Scan::check_non_pic): Report name of offending relocation
785         in error message.
786         (Target_arm::Scan::global): Treat any reference to the symbol
787         _GLOBAL_OFFSET_TABLE_ as a GOT access.
788
789 2010-02-12  Sriraman Tallam  <tmsriram@google.com>
790
791         * arm.cc (Scan::local_reloc_may_be_function_pointer): New function.
792         (Scan::global_reloc_may_be_function_pointer): New function.
793         * sparc.cc (Scan::local_reloc_may_be_function_pointer): New function.
794         (Scan::global_reloc_may_be_function_pointer): New function.
795         * powerpc.cc (Scan::local_reloc_may_be_function_pointer): New function.
796         (Scan::global_reloc_may_be_function_pointer): New function.
797         * i386.cc (Scan::local_reloc_may_be_function_pointer): New function.
798         (Scan::global_reloc_may_be_function_pointer): New function.
799         * x86_64.cc (Scan::local_reloc_may_be_function_pointer): New function.
800         (Scan::global_reloc_may_be_function_pointer): New function.
801         (Scan::possible_function_pointer_reloc): New function.
802         (Target_x86_64::can_check_for_function_pointers): New function.
803         * gc.h (gc_process_relocs): Scan relocation types to determine if
804         function pointers were taken for targets that support it.
805         * icf.cc (Icf::find_identical_sections): Include functions for
806         folding in safe ICF whose pointer is not taken.
807         * icf.h (Secn_fptr_taken_set): New typedef.
808         (fptr_section_id_): New member.
809         (section_has_function_pointers): New function.
810         (set_section_has_function_pointers): New function.
811         (check_section_for_function_pointers): New function.
812         * options.h: Fix comment for safe ICF option.
813         * target.h (can_check_for_function_pointers): New function.
814         * testsuite/Makefile.am: Add icf_safe_so_test test case.
815         Modify icf_safe_test for X86-64.
816         * testsuite/Makefile.in: Regenerate.
817         * testsuite/icf_safe_so_test.cc: New file.
818         * testsuite/icf_safe_so_test.sh: New file.
819         * testsuite/icf_safe_test.cc (kept_func_3): New function.
820         (main): Change to take pointer to function kept_func_3.
821         * testsuite/icf_safe_test.sh (arch_specific_safe_fold): Check if safe
822         folding is done correctly for X86-64.
823
824 2010-02-12  David S. Miller  <davem@davemloft.net>
825
826         * output.h (Output_reloc<SHT_REL>::Output_reloc): Add
827         is_symbolless parameter.
828         (Output_reloc<SHT_REL>::is_symbolless): New.
829         (Output_reloc<SHT_REL>::is_symbolless_): New.
830         (Output_reloc<SHT_REL>::type_): Decrease to 29 bits.
831         (Output_reloc<SHT_RELA>::Output_reloc): Add is_symbolless parameter.
832         (Output_reloc<SHT_RELA>::is_symbolless): New.
833         (Output_data_reloc::add_global): Handle is_symbolless.
834         (Output_data_reloc::add_global_relative): Likewise.
835         (Output_data_reloc::add_local): Likewise.
836         (Output_data_reloc::add_local_relative): Likewise.
837         (Output_data_reloc::add_symbolless_global_addend): New.
838         (Output_data_reloc::add_symbolless_local_addend): New.
839         * output.cc (Output_reloc<SHT_REL>::Output_reloc): Handle
840         is_symbolless.
841         (Output_reloc::set_needs_dynsym_index): Test ->is_symbolless_
842         instead of ->is_relative_
843         (Output_reloc::write): Likewise.
844         (Output_reloc::get_symbol_index): Return 0 when ->is_symbolless_
845         (Output_reloc::write_rel): Simplify.
846
847         * sparc.cc (Target_sparc::Scan::local): Use
848         ->add_symbolless_local_addend as needed.
849         (Target_sparc::Scan::global): Use ->add_symbolless_global_addend as
850         needed.  Also, emit appropriate unaligned vs. aligned dynamic reloc
851         based upon relocation offset.
852
853 2010-02-11  Doug Kwan  <dougkwan@google.com>
854
855         * arm.cc (Target_arm::Scan::local): Fix bugs in relocation handling.
856         (Target_arm::Scan::global): Ditto.  Also remove a comment before the
857         beginning of function.
858         (Target_arm::Relocate::relocate): Remove error messages for MOVW_ABS
859         and MOVT_ABS relocations.  Those are non issued in scanning.  Fix
860         parameter is_32bit in calls to should_apply_static_reloc.
861         * testsuite/Makefile.am (check_SCRIPTS): Add arm_abs_global.sh.
862         (check_DATA): Add arm_abs_global.stdout.
863         (arm_abs_lib.o, libarm_abs.so, arm_abs_global.o, arm_abs_global,
864         arm_abs_global.stdout): New rules.
865         (MOSTLLYCLEANFILES): Add arm_abs_global
866         * Makefile.in: Regenerate.
867         * testsuite/arm_abs_global.s: New file.
868         * testsuite/arm_abs_global.sh: Ditto.
869         * testsuite/arm_abs_lib.s: Ditto.
870
871 2010-02-11  Ian Lance Taylor  <iant@google.com>
872
873         * gold.cc (queue_middle_gc_tasks): Use a separate blocker for each
874         Read_relocs task.
875         (queue_middle_tasks): Likewise, and also for Scan_relocs.  Run
876         Allocate_commons_task first.
877         * reloc.cc (Read_relocs::run): Pass next_blocker_ down to next
878         task, rather than symtab_lock_.
879         (Gc_process_relocs::~Gc_process_relocs): New function.
880         (Gc_process_relocs::is_runnable): Check this_blocker_.
881         (Gc_process_relocs::locks): Use next_blocker_ rather than
882         blocker_.
883         (Scan_relocs::~Scan_relocs): New function.
884         (Scan_relocs::is_runnable): Check this_blocker_ rather than
885         symtab_lock_.
886         (Scan_relocs::locks): Drop symtab_lock_ and blocker_.  Add
887         next_blocker_.
888         * reloc.h (class Read_relocs): Drop symtab_lock_ and blocker_
889         fields.  Add this_blocker_ and next_blocker_ fields.  Adjust
890         constructor accordingly.
891         (class Gc_process_relocs): Likewise.
892         (class Scan_relocs): Likewise.
893         * common.h (class Allocate_commons_task): Remove symtab_lock_
894         field, and corresponding constructor parameter.
895         * common.cc (Allocate_commons_tasK::is_runnable): Remove use of
896         symtab_lock_.
897         (Allocate_commons_task::locks): Likewise.
898
899 2010-02-11  Ian Lance Taylor  <iant@google.com>
900
901         * gold-threads.h (class Once): Define.
902         (class Initialize_lock): Rewrite as child of Once.
903         * gold-threads.cc (class Once_initialize): Define.
904         (once_pointer_control): New static variable.
905         (once_pointer, once_arg): New static variables.
906         (c_run_once): New static function.
907         (Once::Once, Once::run_once, Once::internal_run): New functions.
908         (class Initialize_lock_once): Remove.
909         (initialize_lock_control): Remove.
910         (initialize_lock_pointer): Remove.
911         (initialize_lock_once): Remove.
912         (Initialize_lock::Initialize_lock): Move to gold-threads.h.
913         (Initialize_lock::initialize): Rewrite.
914         (Initialize_lock::do_run_once): New function.
915         * archive.cc (Archive::interpret_header): Only clear name if it is
916         not already empty.
917         * fileread.cc: Include "gold-threads.h"
918         (file_counts_lock): New static variable.
919         (file_counts_initialize_lock): Likewise.
920         (File_read::release): Only increment counts when using --stats.
921         Use a lock around the increment.
922         * parameters.cc (class Set_parameters_target_once): Define.
923         (set_parameters_target_once): New static variable.
924         (Parameters::Parameters): Move here from parameters.h.
925         (Parameters::set_target): Rewrite.
926         (Parameters::set_target_once): New function.
927         (Parameters::clear_target): Move here and rewrite.
928         * parameters.h (class Parameters): Update declarations.  Add
929         set_parameters_target_once_ field.
930         (Parameters::Parameters): Move to parameters.cc.
931         (Parameters::clear_target): Likewise.
932         * readsyms.cc (Read_symbols::do_group): Create a Start_group
933         task.
934         (Start_group::~Start_group): New function.
935         (Start_group::is_runnable): New function.
936         (Start_group::locks, Start_group::run): New functions.
937         (Finish_group::run): Change saw_undefined to size_t.
938         * readsyms.h (class Start_group): Define.
939         (class Finish_group): Change saw_undefined_ field to size_t.
940         (Finish_group::Finish_group): Remove saw_undefined and
941         this_blocker parameters.  Change all callers.
942         (Finish_group::set_saw_undefined): New function.
943         (Finish_group::set_blocker): New function.
944         * symtab.h (class Symbol_table): Change saw_undefined to return
945         size_t.  Change saw_undefined_ field to size_t.
946         * target-select.cc (Set_target_once::do_run_once): New function.
947         (Target_selector::Target_selector): Initialize set_target_once_
948         field.  Don't initialize lock_ and initialize_lock_ fields.
949         (Target_selector::instantiate_target): Rewrite.
950         (Target_selector::set_target): New function.
951         * target-select.h (class Set_target_once): Define.
952         (class Target_selector): Update declarations.  Make
953         Set_target_once a friend.  Remove lock_ and initialize_lock_
954         fields.  Add set_target_once_ field.
955
956 2010-02-10  Ian Lance Taylor  <iant@google.com>
957
958         * dirsearch.cc (Dirsearch::initialize): Add all blockers before
959         queueing any tasks.
960         * gold.cc (queue_middle_gc_tasks): Likewise.  Fix final blocker.
961         (queue_middle_tasks): Add all blockers before queueing any tasks.
962         (queue_final_tasks): Likewise.
963         * token.h (Task_token::add_blockers): New function.
964         * object.h (Input_objects::number_of_relobjs): New function.
965
966 2010-02-10  Ian Lance Taylor  <iant@google.com>
967
968         * i386.cc (Relocate::relocate_tls): A local symbol is final if not
969         shared, not if not position independent.
970         * x86_64.cc (Relocate::relocate_tls): Likewise.
971         * testsuite/Makefile.am (check_PROGRAMS): Add tls_pie_pic_test.
972         (tls_pie_pic_test): New target.
973         * testsuite/Makefile.in: Rebuild.
974
975         * testsuite/Makefile.am (check_PROGRAMS): Add tls_pie_test.
976         (tls_test_main_pie.o, tls_test_pie.o): New targets.
977         (tls_test_file2_pie.o, tls_test_c_pie.o, tls_pie_test): Likewise.
978         * testsuite/Makefile.in: Rebuild.
979
980 2010-02-09  David S. Miller  <davem@davemloft.net>
981
982         * sparc.cc (Target_sparc::Scan::local): Do not emit relocs other than
983         R_SPARC_RELATIVE using ->add_local_relative().
984         (Target_sparc::Scan::global): Likewise for ->add_global_relative().
985
986         * output.h (Output_data_dynamic::add_section_size): New method
987         that takes two Output_data objects.
988         (Output_data_dynamic::Dynamic_entry): Create storage for secondary
989         entry param.  Handle it in initializers.
990         * output.cc (Output_data_dynamic::Dynamic_entry::write): For
991         DYNAMIC_SECTION_SIZE, add in second object size if non-NULL.
992         * layout.h (Layout::add_target_dynamic_tags): Add dynrel_includes_plt
993         arg.
994         * layout.cc (Layout::add_target_dynamic_tags): If dynrel_includes_plt,
995         and .rela.plt exists, set DT_REL{,A}SZ to sum of .rela.dyn and .rela.plt
996         * arm.cc (Target_arm::do_finalize_sections): Update to pass false
997         for dynrel_includes_plt.
998         * i386.cc (Target_i386::do_finalize_sections): Likewise.
999         * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
1000         * sparc.cc (Target_sparc::make_plt_entry): Force .rela.dyn to be output
1001         before .rela.plt
1002         (Target_sparc::do_finalize_sections): Update to pass true for
1003         dynrel_includes_plt.
1004         * powerpc.cc (Target_powerpc::make_plt_entry): Force .rela.dyn to be
1005         output before .rela.plt
1006         (Target_powerpc::do_finalize_sections): Update to pass true for
1007         dynrel_includes_plt when 32-bit.
1008
1009 2010-02-08  Doug Kwan  <dougkwan@google.com>
1010
1011         * arm.cc (Arm_relobj::simple_input_section_output_address): New
1012         method.
1013         (Arm_relobj::section_needs_cortex_a8_stub_scanning,
1014         Arm_relobj::scan_section_for_cortex_a8_stubs,
1015         Arm_relobj::do_relocation_section): Instead of calling
1016         Output_section::output_address, use faster
1017         Arm_relobj::simple_input_section_output_address.
1018
1019 2010-02-08  David S. Miller  <davem@davemloft.net>
1020
1021         * sparc.cc (Target_sparc::Relocate::relocate): If relocation offset is
1022         unaligned for R_SPARC_16, R_SPARC_32, or R_SPARC_64, use the unaligned
1023         relocation helper function.
1024
1025         * sparc.cc (Target_sparc::Scan::local): Handle R_SPARC_GOTDATA_OP*
1026         just like R_SPARC_GOT{10,13,22}.
1027         (Target_sparc::Scan::local): Likewise.
1028         (Target_sparc::Relocate:relocate): Likewise.
1029
1030 2010-02-06  Ian Lance Taylor  <iant@google.com>
1031
1032         * configure.ac: Rewrite targetobjs duplicate removal code to use
1033         only shell constructs.
1034         * configure: Rebuild.
1035
1036 2010-02-05  Doug Kwan  <dougkwan@google.com>
1037
1038         PR 11247
1039         * arm.cc (Arm_relobj::section_is_scannable): New method.
1040         (Arm_relobj::section_needs_reloc_stub_scanning): Use it.
1041         (Arm_relobj::section_needs_cortex_a8_stub_scanning): Same.
1042
1043 2010-02-04  Doug Kwan  <dougkwan@google.com>
1044
1045         PR 11247
1046         * arm-reloc-property.cc (cstdio): Include.
1047         * configure.ac (targetobjs): Remove duplicates.
1048         * configure: Regenerate.
1049         * resolve.cc (Symbol_table::resolve): Explicit instantiate both
1050         big and little endian version for a given address size.
1051
1052 2010-02-03  Doug Kwan  <dougkwan@google.com>
1053
1054         * arm-reloc-property.cc
1055         (Arm_reloc_property_table::reloc_name_in_error_message): New method
1056         definition.
1057         * arm-reloc-property.h
1058         (Arm_reloc_property_table::get_implemented_static_reloc_property):
1059         New method definition.
1060         (Arm_reloc_property_table::reloc_name_in_error_message): New method
1061         declaration.
1062         * arm-reloc.def (THM_MOVT_ABS, THM_MOVT_PREL, THM_MOVT_BREL): Change
1063         overflow to N.
1064         (GOT_PREL): Change implemented to Y.
1065         * arm.cc (Target_arm::reloc_uses_thumb_bit): Remove method.
1066         (Target_arm::Relocate::reloc_needs_sym_origin): Remove method.
1067         (Arm_relocate_functions::movw_abs_nc): Remove method.
1068         (Arm_relocate_functions::movt_abs): Ditto.
1069         (Arm_relocate_functions::thm_movw_abs_nc): Ditto.
1070         (Arm_relocate_functions::thm_movt_abs): Ditto.
1071         (Arm_relocate_functions::movw_rel_nc): Ditto.
1072         (Arm_relocate_functions::movw_rel): Ditto.
1073         (Arm_relocate_functions::movt_rel): Ditto.
1074         (Arm_relocate_functions:thm_movw_rel_nc): Ditto.
1075         (Arm_relocate_functions:thm_movw_rel): Ditto.
1076         (Arm_relocate_functions:thm_movt_rel): Ditto.
1077         (Arm_relocate_functions::movw, Arm_relocate_functions::movt,
1078         (Arm_relocate_functions::thm_movw, Arm_relocate_functions::thm_movt):
1079         New method definitions.
1080         (Arm_relocation_functions::arm_grp_alu): Add assertion for group index.
1081         (Arm_relocation_functions::arm_grp_ldr): Ditto.
1082         (Arm_relocation_functions::arm_grp_ldrs): Ditto.
1083         (Arm_relocation_functions::arm_grp_ldc): Ditto.
1084         (Target_arm::Relocate::relocate): Check for non-static or
1085         unimplemented relocation code and exit early.  Change calls to
1086         Target_arm::reloc_uses_thumb_bit and
1087         Target_arm::Reloc::reloc_needs_sym_origin to use relocation property
1088         instead.  Refactor code to handle similar relocations to increase
1089         code sharing.  Remove check for unsupported relocation code in switch
1090         statement.
1091         (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Use
1092         relocation property table to find out size.  Change error message to
1093         print out the name of a relocation code instead of the numeric value.
1094         (Target_arm::scan_reloc_for_stub): Use relocation property table
1095         instead of calling Target_arm::reloc_uses_thumb_bit().
1096
1097 2010-02-02  Doug Kwan  <dougkwan@google.com>
1098
1099         * arm.cc (Target_arm::relocate_section): Do view adjustment for all
1100         types of relaxed input section.
1101
1102 2010-02-02  Doug Kwan  <dougkwan@google.com>
1103
1104         * Makefile.am (HFILES): Add arm-reloc-property.h.
1105         (DEFFILES): New.
1106         (TARGETSOURCES): Add arm-reloc-property.cc
1107         (ALL_TARGETOBJS): Add arm-reloc-property.$(OBJEXT)
1108         (libgold_a_SOURCES): $(DEFFILES)
1109         * Makefile.in: Regenerate.
1110         * arm-reloc-property.cc: New file.
1111         * arm-reloc-property.h: New file.
1112         * arm-reloc.def: New file.
1113         * arm.cc: Update comments.
1114         (arm-reloc-property.h): New included header.
1115         (arm_reloc_property_table): New global variable.
1116         (Target_arm::do_select_as_default_target): New method definition.
1117         * configure.tgt (armeb*-*-*,armbe*-*-*,arm*-*-*): Add
1118         arm-reloc-property to targ_extra_obj.
1119         * parameters.cc (set_parameters_target): Call
1120         Target::select_as_default_target().
1121         * target.h (Target::select_as_default_target): New method definition.
1122         (Target::do_select_as_default_target): Same.
1123
1124 2010-02-01  Doug Kwan  <dougkwan@google.com>
1125
1126         * arm.cc (Arm_exidx_fixup::Arm_exidx_fixup): Initialize
1127         first_output_text_section_.
1128         (Arm_exidx_fixup::first_output_text_section): New method definition.
1129         (Arm_exidx_fixup::first_output_text_section_): New data member.
1130         (Arm_exidx_fixup::process_exidx_section): Record the first text
1131         output section seen.
1132         (Arm_output_section::fix_exidx_coverage): Set correct linked section
1133         and entsize in output section header.
1134
1135 2010-01-29  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
1136
1137         * gold/arm.cc: Added support for the ARM relocations: R_ARM_THM_PC8,
1138         R_ARM_THM_PC12, R_ARM_THM_ALU_PREL_11_0.
1139         (Arm_relocate_functions::thm_alu11): New Method.
1140         (Arm_relocate_functions::thm_pc8): New Method.
1141         (Arm_relocate_functions::thm_pc12): New Method.
1142         (Target_arm::Scan::local): Handle the relocations.
1143         (Target_arm::Scan::global): Likewise.
1144         (Target_arm::Relocate::relocate): Likewise.
1145         (Target_arm:Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
1146
1147 2010-01-29  Doug Kwan  <dougkwan@google.com>
1148
1149         * arm.cc (Target_arm::Scan::global): General PLTs for the same set
1150         of relocation types as ld.
1151
1152 2010-01-29  Doug Kwan  <dougkwan@google.com>
1153
1154         * arm.cc (Arm_relocate_functions::arm_branch_common) Change visibility
1155         to public.
1156         (Arm_relocate_functions::thumb_branch_common): Ditto.
1157         (Arm_relocate_functions::thm_call, Arm_relocate_functions::thm_jump24,
1158         Arm_relocate_functions::thm_xpc22, Arm_relocate_functions::plt32,
1159         Arm_relocate_functions::xpc25, Arm_relocate_functions::call,
1160         Arm_relocate_functions::jump24): Remove.
1161         (Target_arm::Relocate::relocate): Adjust code to call
1162         Arm_relocation_functions::arm_branch_common and
1163         Arm_relocation_functions::thumb_branch_common instead of their removed
1164         wrappers.  Merge switch-cases together to reduce source code size.  
1165
1166 2010-01-29  Doug Kwan  <dougkwan@google.com>
1167
1168         * arm.cc (Arm_relobj::Arm_relobj): Initialize new data member
1169         output_local_symbol_count_needs_update_.
1170         (Arm_relobj::output_local_symbol_count_needs_update,
1171          Arm_relobj::set_output_local_symbol_count_needs_update,
1172          Arm_relobj::update_output_local_symbol_count): New methods.
1173         (Arm_relobj::output_local_symbol_count_needs_update_): New data
1174         member.
1175         (Arm_exidx_cantunwind::do_fixed_endian_write): Write address
1176         of pointed function as in a R_ARM_PREL31 relocation.
1177         (Arm_output_section<big_endian>::fix_exidx_coverage): Mark objects
1178         for output local symbol count updating.
1179         (Target_arm::do_relax): Update output local symbol counts in objects
1180         if necessary.
1181         * object.h (Sized_relobj::set_output_local_symbol_count): New method.
1182
1183 2010-01-29  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
1184
1185         * arm.cc: Added support for the ARM relocations:
1186         R_ARM_MOVW_BREL_NC, R_ARM_MOVT_BREL, R_ARM_MOVW_BREL,
1187         R_ARM_THM_MOVW_BREL_NC, R_ARM_THM_MOVT_BREL, R_ARM_THM_MOVW_BREL.
1188         (Arm_relocate_functions::movw_rel_nc): Renamed (was
1189         movw_prel_nc).
1190         (Arm_relocate_functions::movw_rel): New method.
1191         (Arm_relocate_functions::movt_rel): Renamed (was movt_prel).
1192         (Arm_relocate_functions::thm_movw_rel_nc): Renamed (was
1193         thm_movw_prel_nc).
1194         (Arm_relocate_functions::thm_movw_rel): New method.
1195         (Arm_relocate_functions::thm_movt_rel): Renamed (was
1196         thm_movt_prel).
1197         (Target_arm::Scan::local): Handle MOVW_BREL/MOVT_BREL
1198         relocations.
1199         (Target_arm::Scan::global): Likewise.
1200         (Target_arm::Relocate::relocate): Likewise.
1201         (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
1202         Likewise.
1203
1204 2010-01-27  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
1205
1206         * arm.cc: Added support for ARM group relocations.
1207         (Target_arm::reloc_needs_sym_origin): New method.
1208         (Arm_relocate_functions::calc_grp_kn): New method.
1209         (Arm_relocate_functions::calc_grp_residual): New method.
1210         (Arm_relocate_functions::calc_grp_gn): New method.
1211         (Arm_relocate_functions::arm_grp_alu): New Method.
1212         (Arm_relocate_functions::arm_grp_ldr): New Method.
1213         (Arm_relocate_functions::arm_grp_ldrs): New Method.
1214         (Arm_relocate_functions::arm_grp_ldc): New Method.
1215         (Target_arm::Scan::local): Handle the ARM group relocations.
1216         (Target_arm::Scan::global): Likewise.
1217         (Target_arm::Relocate::relocate): Likewise.
1218         (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
1219         Likewise.
1220
1221 2010-01-26  Doug Kwan  <dougkwan@google.com>
1222
1223         * arm.cc (set): Include.
1224         (class Arm_exidx_fixup): Change type of last_input_section_ to const
1225         pointer type.
1226         (Arm_output_section::Text_section_list): New type.
1227         (Arm_output_section::append_text_sections_to_list): New method.
1228         (Arm_output_section::fix_exidx_coverage): Ditto.
1229         (Arm_relobj::Arm_relobj): Initialize exidx_section_map_.
1230         (Arm_relobj::convert_input_section_to_relaxed_section): Use
1231         Relobj::set_section_offset() instead of
1232         Sized_relobj::invalidate_section_offset().
1233         (Arm_relobj::section_needs_reloc_stub_scanning): Add an extra
1234         parameter for section headers. Ignore relocation sections for
1235         unallocated sections and EXIDX sections.
1236         (Target_arm::fix_exidx_coverage): New method.
1237         (Target_arm::output_section_address_less_than): New type.
1238         (Arm_exidx_fixup::add_exidx_cantunwind_as_needed): Use index of the
1239         linked text section instead of the EXIDX section.
1240         (Arm_output_section::create_stub_group): Add an assertion to check
1241         that this is not an EXIDX output section.
1242         (Arm_output_section::append_text_sections_to_list): New method.
1243         (Arm_output_section::fix_exidx_coverage): Ditto.
1244         (Arm_relobj::scan_sections_for_stubs): Adjust call to
1245         Arm_relobj::section_needs_reloc_stub_scanning.
1246         (Target_arm::do_relax): Fix EXIDX output section coverage in the
1247         first pass.
1248         (Target_arm::fix_exidx_coverage): New method.
1249         * object.h (Relobj::set_output_section): New method.
1250         (Sized_relobj::invalidate_section_offset): Remove method.
1251         (Sized_relobj::do_invalidate_section_offset): Remove method.
1252         (Sized_relobj::do_set_section_offset): Handle offset value -1.
1253
1254 2010-01-25  Doug Kwan  <dougkwan@google.com>
1255
1256         * arm.cc (Arm_exidx_merged_section::do_output_offset):
1257         Fix warning due to signed and unsigned comparison on a 32-bit host.
1258
1259 2010-01-22  Doug Kwan  <dougkwan@google.com>
1260
1261         * arm.cc (Target_arm::do_relax): Record an output section for section
1262         offset adjustment it contains any stub table that has changed.
1263         * layout.cc (Layout::clean_up_after_relaxation): Adjust section
1264         offsets in an output section if necessary.
1265         * output.cc (Output_section::Output_section): Initialize
1266         section_offsets_need_adjustments_.
1267         (Output_section::add_input_section_for_script): Renamed to
1268         Output_section::add_simple_input_section.
1269         (Output_section::save_states): Add a comment.
1270         (Output_section::discard_states): New method defintion.
1271         (Output_section::adjust_section_offsets): Same.
1272         * output.h (Output_section::add_input_section_for_script): Renamed to
1273         Output_section::add_simple_input_section.
1274         (Output_section::discard_states): New method declaration.
1275         (Output_section::adjust_section_offsets): Same.
1276         (Output_section::section_offsets_need_adjustment,
1277         Output_section::set_section_offsets_need_adjustment): New method
1278         definitions.
1279         (Output_section::section_offsets_need_adjustment_): New data member.
1280         * script-sections.cc
1281         (Output_section_element_input::set_section_address): Adjust code for
1282         renaming of Output_section::add_input_section_for_script.
1283         (Orphan_output_section::set_section_address): Same.
1284
1285 2010-01-22  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
1286
1287         * gold/arm.cc (Target_arm): Updated fix_v4bx method and usage of
1288         Fix_v4bx enum values .
1289         * gold/options.h (General_options): New option definitions.
1290         (General_options::fix_v4bx): New method.
1291         (General_options::Fix_v4bx): New enum.
1292         * gold/options.cc (General_options::parse_fix_v4bx): New method.
1293         (General_options::parse_fix_v4bx_interworking): New method.
1294
1295 2010-01-22  Doug Kwan  <dougkwan@google.com>
1296
1297         * arm.cc (Arm_exidx_fixup): New class.
1298
1299 2010-01-21  Doug Kwan  <dougkwan@google.com>
1300
1301         * arm.cc (Arm_exidx_cantunwind, Arm_exidx_merged_section): New
1302         classes.
1303         (Arm_exidx_section_offset_map): New type.
1304
1305 2010-01-21  Doug Kwan  <dougkwan@google.com>
1306
1307         * arm.cc (Arm_exidx_input_section): New class.
1308         (Arm_relobj::exidx_input_section_by_link,
1309         Arm_relobj::exidx_input_section_by_shndx,
1310         Arm_relobj::make_exidx_input_section): New methods.
1311         (read_arm_attributes_section): Remove.
1312         (Arm_relobj::do_read_symbols): Look for ARM.exidx sections and record
1313         information about them.
1314         (Arm_dynobj::do_read_symbols): Move code in read_arm_attributes_section
1315         to here.
1316
1317 2010-01-20  Doug Kwan  <dougkwan@google.com>
1318
1319         * arm.cc (Target_arm::Arm_input_section_map): Change key type from
1320         Input_section_specifier to Section_id.
1321         (Target_arm::new_arm_input_section: Adjust code for change of key
1322         type.
1323         (Target_arm::find_arm_input_section): Ditto.
1324         * gc.h (object.h): Include for Section_id nand Section_id_hash.
1325         (Section_id): Remove.
1326         (Garbage_collection::Section_id_hash): Remove.
1327         * icf.h (object.h): Include for Section_id nand Section_id_hash.
1328         (Section_id): Remove.
1329         (Icf::Section_id_hash): Remove.
1330         * object.h (Section_id, Const_section_id, Section_id_hash,
1331         Const_section_id_hash): New type definitions.
1332         * output.cc (Output_section::add_relaxed_input_section): Change to
1333         use Const_section_id instead of Input_section_specifier as key type.
1334         (Output_section::add_merge_input_section): Ditto.
1335         (Output_section::build_relaxation_map): Change to use Section_id
1336         instead of Input_section_specifier as key type.
1337         (Output_section::convert_input_sections_in_list_to_relaxed_sections):
1338         Ditto.
1339         (Output_section::convert_input_sections_to_relaxed_sections): Change
1340         to use Const_section_id instead of Input_section_specifier as key type.
1341         (Output_section::find_merge_section): Ditto.
1342         (Output_section::find_relaxed_input_section): Ditto.
1343         * output.h (Input_section_specifier): Remove class.
1344         (Output_section::Output_section_data_by_input_section_map): Change
1345         key type to Const_section_id.
1346         (Output_section::Output_relaxed_input_section_by_input_section_map):
1347         Ditto.
1348         (Output_section::Relaxation_map): Change key type to Section_id.
1349
1350 2010-01-20  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
1351
1352         * gold/arm.cc: Added support for R_ARM_V4BX relocation
1353         (class Arm_v4bx_stub): New class.
1354         (DEF_STUBS): Updated definition to support v4_veneer_bx.
1355         (Stub_factory::make_arm_v4bx_stub): New method.
1356         (Stub_factory::elf32_arm_stub_v4_veneer_bx): New veneer template.
1357         (Stub_table::empty): Handle v4bx stubs.
1358         (Stub_table::add_arm_v4bx_stub): New method.
1359         (Stub_table::find_arm_v4bx_stub): New method.
1360         (Arm_relocate_functions::v4bx): New method.
1361         (Target_arm::fix_v4bx): New method.
1362         (Target_arm::Target_arm): Handle R_ARM_V4BX.
1363         (Stub_table::relocate_stubs): Likewise.
1364         (Stub_table::do_write): Likewise.
1365         (Stub_table::update_data_size_and_addralign): Likewise.
1366         (Stub_table::finalize_stubs):  Likewise.
1367         (Target_arm::Scan::local): Likewise.
1368         (Target_arm::Scan::global): Likewise.
1369         (Target_arm::do_finalize_sections): Likewise.
1370         (Target_arm::Relocate::relocate): Likewise.
1371         (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
1372         Likewise.
1373         (Target_arm::scan_reloc_for_stub): Likewise.
1374         (Target_arm::scan_reloc_section_for_stubs): Likewise.
1375
1376 2010-01-19  Ian Lance Taylor  <iant@google.com>
1377
1378         * output.cc (Output_section_headers::do_sized_write): Write large
1379         segment count to sh_info field.
1380         (Output_file_header::do_sized_write): For large segment count,
1381         write PN_XNUM to e_phnum field.
1382
1383 2010-01-15  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
1384
1385         * arm.cc (Arm_relocate_functions::thm_jump6): New function.
1386         (Arm_relocate_functions::thm_jump8): New function.
1387         (Arm_relocate_functions::thm_jump11): New function.
1388         (Target_arm::Scan::local): Handle R_ARM_THM_JUMP6, R_ARM_THM_JUMP8,
1389         R_ARM_THM_JUMP11.
1390         (Target_arm::Scan::global): Likewise.
1391         (Target_arm::Relocate::relocate): Likewise.
1392         (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
1393         Likewise.
1394
1395 2010-01-14  Doug Kwan  <dougkwan@google.com>
1396
1397         * arm.cc (map, utility): Include headers.
1398         (Target_arm::apply_cortex_a8_workaround): New method.
1399         (Arm_relobj::do_relocate_sections): Apply any Cortex-A8 workaround.
1400         (Target_arm::Scan::local): Handle R_ARM_THM_JUMP24, R_ARM_THM_JUMP19.
1401         (Target_arm::Scan::global): R_ARM_THM_JUMP19.
1402         (Target_arm::do_finalize_sections): Set fix_cortex_a8_ according to
1403         the --[no-]fix-cortex-a8 command line options.
1404         (Target_arm::Relocate::relocate): Handle R_ARM_JUMP19.
1405         (Target_arm::relocate_stub): Use addend in instruction template.
1406         * options.h (DEFINE_bool): Set the user-set flag.
1407         (General_options): Add --[no-]-fix-cortex options.
1408         * output.cc (Output_section::convert_input_sections_to_relaxed_sections)
1409         : Update fast look-up map after conversion. 
1410
1411 2010-01-14  Sriraman Tallam  <tmsriram@google.com>
1412
1413         * object.cc (Sized_relobj::do_layout): Change to call layout_gnu_stack
1414         in the first pass of do_layout.
1415
1416 2010-01-13  Doug Kwan  <dougkwan@google.com>
1417
1418         * arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
1419         Arm_relobj::scan_sections_for_stubs): Rearrange code to avoid an
1420         apparent compiler problem of not folding static constant integral
1421         data members of elfcpp::Elf_sizes<32>.
1422
1423 2010-01-13  Doug Kwan  <dougkwan@google.com>
1424
1425         * arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
1426         Arm_relobj::section_needs_cortex_a8_stub_scanning,
1427         Arm_relobj::scan_section_for_cortex_a8_erratum,
1428         Arm_relobj::scan_span_for_cortex_a8_erratum): New methods.
1429         (Arm_relobj::scan_sections_for_stubs): Move code deciding what
1430         sections to scan for relocation stubs into a new method
1431         Arm_relobj::section_needs_reloc_stub_scanning.  Handle both
1432         relocation and Cortex-A8 stub scanning.
1433         (Target_arm::do_relax): Force stubs to be after stubbed sections
1434         if fixing the Cortex-A8 erratum.  Remove all Cortex-A8 stubs at
1435         the beginning of a new relaxation pass.  Update a comment. 
1436         (Target_arm::scan_span_for_cortex_a8_erratum): New method definition.
1437
1438 2010-01-12  Ian Lance Taylor  <iant@google.com>
1439
1440         * target-reloc.h (visibility_error): New inline function.
1441         (relocate_section): Call visibility_error.
1442         * testsuite/Makefile.am (check_DATA): Add protected_3.err.
1443         (MOSTLYCLEANFILES): Likewise.
1444         (protected_4_pic.o, protected_3.err): New targets.
1445         * testsuite/protected_4.cc: New file.
1446
1447 2010-01-12  Doug Kwan  <dougkwan@google.com>
1448
1449         * arm.cc (Cortex_a8_reloc): New class.
1450         (Target_arm::Target_arm): Initialize new data members fix_cortex_a8_
1451         and cortex_a8_relocs_info_.
1452         (Target_arm::fix_cortex_a8): New method definition.
1453         (Target_arm::Cortex_a8_relocs_info): New type.
1454         (Target_arm::fix_cortex_a8_, Target_arm::cortex_a8_relocs_info_):
1455         New data member declarations.
1456         (Target_arm::scan_reloc_for_stub): Record information about
1457         relocations for THUMB branches that might be exempted from the
1458         Cortex-A8 workaround.
1459         (Target_arm::do_relax): Clear all Cortex-A8 relocation information
1460         at the beginning of a relaxation pass.
1461
1462 2010-01-12  Doug Kwan  <dougkwan@google.com>
1463
1464         * arm.cc (Arm_relobj::mapping_symbols_info_): New data member.
1465         (Arm_relobj::Mapping_symbol_position,
1466          Arm_reloj::Mapping_symbol_position_less,
1467          Arm_relobj::Mapping_symbols_info): New types.
1468         (Target_arm::is_mapping_symbol_name): New method definition.
1469         (Arm_relobj::do_count_local_symbols): Save information about mapping
1470         symbols.
1471
1472 2010-01-11  Doug Kwan  <dougkwan@google.com>
1473
1474         * arm.cc (Arm_relocate_functions::thumb32_branch_offset,
1475         Arm_relocate_functions::thumb32_branch_upper,
1476         Arm_relocate_functions::thumb32_branch_lower,
1477         Arm_relocate_functions::thumb32_cond_branch_offset,
1478         Arm_relocate_functions::thumb32_cond_branch_upper,
1479         Arm_relocate_functions::thumb32_cond_branch_lower,
1480         Arm_relocate_functions::thm_jump19): New methods to handle THUMB
1481         branch offset encoding.
1482         (Arm_relocate_functions::thumb_branch_common): Use new branch
1483         offset encoding methods to avoid code duplication.
1484         (Stub_template::Stub_template) Handle THUMB16_SPECIAL_TYPE.
1485         (Stub_addend_reader::operator()): Use new branch encoding method
1486         to avoid code duplication.
1487
1488 2010-01-11  Doug Kwan  <dougkwan@google.com>
1489
1490         * arm.cc (Arm_relobj::do_gc_process_relocs): New method.
1491         (Target_arm::do_finalize_sections): Define special EXIDX section
1492         symbols only if referenced.
1493         * gc.h (Garbage_collection::add_reference): New method.
1494         (gc_process_relocs): Use Garbage_collection::add_reference to avoid
1495         code duplication.
1496
1497 2010-01-11  Ian Lance Taylor  <iant@google.com>
1498
1499         * script.cc (Version_script_info::build_expression_list_lookup):
1500         Change complaing about duplicate wildcard match from error to
1501         warning.
1502
1503         * script.cc (class Lazy_demangler): Recreate--revert part of patch
1504         of 2009-12-30.
1505         (Version_script_info::Version_script_info): Initialize globs_,
1506         default_version_, default_is_global_, and exact_.  Don't
1507         initialize globals_ or locals_.
1508         (Version_script_info::build_lookup_tables): Build local symbols
1509         first.
1510         (Version_script_info::unquote): New function.
1511         (Version_script_info::add_exact_match): New function.
1512         (Version_script_info::build_expression_list_lookup): Remove lookup
1513         parameter.  Add is_global parameter.  Change all callers.  Handle
1514         wildcard pattern specially.  Unquote pattern.  Call
1515         add_exact_match.
1516         (Version_script_info::get_name_to_match): New function.
1517         (Version_script_info::get_symbol_version): New function.
1518         (Version_script_info::get_symbol_version_helper): Remove.
1519         (Version_script_info::check_unmatched_names): Call unquote.
1520         * script.h (class Version_script_info): Change get_symbol_version
1521         to be non-inline and add is_global parameter; change all callers.
1522         Rewrite symbol_is_local.  Update declarations.  Define struct
1523         Version_tree_match, Exact, Globs.  Don't define struct Lookup.
1524         Remove globals_ and locals_ members.  Add exact_, globs_,
1525         default_version_, is_global_.
1526         (Version_script_info::Glob): Remove pattern, add expression and
1527         is_global.  Update constructor.  Change all callers.
1528         * dynobj.cc (Versions::finalize): Mark the version symbol as the
1529         default version.
1530         (Versions::symbol_section_contents): If a symbol is undefined, or
1531         defined in a dynamic object, set the version index to
1532         VER_NDX_LOCAL.
1533         * symtab.cc (Symbol_table::add_from_relobj): Don't call
1534         symbol_is_local.
1535         (Symbol_table::add_from_pluginobj): Likewise.
1536         * testsuite/ver_matching_test.sh: blaza1 and blaza go into V2.
1537
1538 2010-01-11  Doug Kwan  <dougkwan@google.com>
1539
1540         * Makefile.am (incremental_dump_DEPENDENCIES): Add libintl dependency.
1541         (incremental_dump_LDADD): Add linking option for libintl.
1542         * Makefile.in: Regenerate.
1543
1544 2010-01-11  H.J. Lu  <hongjiu.lu@intel.com>
1545
1546         PR gold/11144
1547         * testsuite/Makefile.am (dynamic_list.stdout): Use --dyn-syms
1548         instead of -Ds.
1549         * testsuite/Makefile.in: Regenerated.
1550
1551 2010-01-10  Doug Kwan  <dougkwan@google.com>
1552
1553         * options.h (DEFINE_var): Use parentheses around argument varname__
1554         in macro body to avoid any unintended subsequent substitutions.
1555
1556 2010-01-10  Ian Lance Taylor  <iant@google.com>
1557
1558         * resolve.cc (Symbol_table::resolve): Add symbols to list of ODR
1559         candidates before doing symbol resolution.
1560
1561         * resolve.cc (Symbol_table::resolve): Add symbols to the list of
1562         ODR candidates if only one is weak.
1563
1564 2010-01-08  Ian Lance Taylor  <iant@google.com>
1565
1566         * script.cc (Version_script_info::build_expression_list_lookup):
1567         Don't warn about ambiguous version, just record the ambiguity.
1568         (Version_script_info::get_symbol_version_helper): Give error if
1569         version is ambiguous.
1570
1571 2010-01-08  Doug Kwan  <dougkwan@google.com>
1572
1573         * arm.cc (Stub_table::Stub_table): Initalize cortex_a8_stubs_,
1574           prev_data_size_ and prev_addralign_.  Remove initializer for
1575           deleted data member has_been_changed_.
1576           (Stub_table::empty): Look at both reloc_stubs_ and cortex_a8_stubs_
1577           to determine if the table is empty.
1578           (Stub_table::has_been_changed, Stub_table_set_has_been_changed):
1579           Remove.
1580           (Stub_table::add_reloc_stub): Define method in class definition
1581           instead of just declaring it there.
1582           (Stub_table::add_cortex_a8_stub): New method definition.
1583           (Stub_table::update_data_size_and_addralign): Ditto.
1584           (Stub_table::finalize_stubs): Ditto.
1585           (Stub_table::apply_cortex_a8_workaround_to_address_range): Ditto.
1586           (Stub_table::do_addralign_): Return address alignment in the
1587           (Stub_table::do_reset_address_and_file_offset): Define method in
1588           class definition instead of declaring it there.  Set current data
1589           size to be the data size of the previous pass.
1590           (Stub_table::set_final_data_size): Use current data size as the
1591           final data size.
1592           (Stub_table::relocate_stub): Change parameter type of stub from
1593           Reloc_stub pointer to Stub pointer.
1594           (Stub_table::addralign_, Stub_table::has_been_changed_): Remove.
1595           (Stub_table::Cortex_a8_stub_list): New typedef.
1596           (Stub_table::cortex_a8_stubs_, Stub_table::prev_data_size_,
1597            Stub_table::prev_addralign_): New data member.
1598           (Arm_relobj::Arm_relobj): Initialize data member
1599           section_has_cortex_a8_workaround_.
1600           (Arm_relobj::section_has_cortex_a8_workaround,
1601            Arm_relobj::mark_section_for_cortex_a8_workaround): New method
1602            definitions.
1603           (Arm_relobj::section_has_cortex_a8_workaround_): New data member
1604           declarations.
1605           (Target_arm::relocate_stub): Change parameter type of stub from
1606           Reloc_stub pointer to Stub pointer.
1607           (Insn_template::size, Insn_template::alignment): Handle
1608           THUMB16_SPECIAL_TYPE.
1609           (Stub_table::remove_all_cortex_a8_stubs, Stub_table::finalize_stubs,
1610            Stub_table::update_data_size_and_addralign,
1611            Stub_table::apply_cortex_a8_workaround_to_address_range): New method
1612           definitions.
1613           (Stub_table::relocate_stubs): Handle Cortex-A8 stubs.
1614           (Stub_table::do_write): Ditto.
1615           (Target_arm::do_relax): Adjust code for changes in Stub_table.
1616
1617 2010-01-08  Ian Lance Taylor  <iant@google.com>
1618
1619         PR 11108
1620         * symtab.h (class Symbol): Remove fields is_target_special_ and
1621         has_plt_offset_.  Add field is_defined_in_discarded_section_.
1622         (Symbol::is_defined_in_discarded_section): New function.
1623         (Symbol::set_is_defined_in_discarded_section): New function.
1624         (Symbol::has_plt_offset): Rewrite.
1625         (Symbol::set_plt_offset): Verify that new offset is not -1U.
1626         * symtab.cc (Symbol::init_fields): Initialize plt_offset_ to -1U.
1627         Don't initialize is_target_special_ or has_plt_offset_.
1628         Initialize is_defined_in_discarded_section_.
1629         (Symbol_table::add_from_relobj): If appropriate, set
1630         is_defined_in_discarded_section.
1631         * resolve.cc (Symbol::override_base_with_special): Don't test
1632         is_target_special_.  Change has_plt_offset_ to has_plt_offset().
1633         * target-reloc.h (relocate_section): Do special handling for
1634         symbols defined in discarded sections for global symbols as well
1635         as local symbols.
1636
1637 2010-01-08  Ian Lance Taylor  <iant@google.com>
1638
1639         * dynobj.cc (big_endian>::find_dynsym_sections): Set pi to NULL in
1640         the SHT_SYMTAB case.
1641
1642 2010-01-08  Ian Lance Taylor  <iant@google.com>
1643
1644         * object.cc (Sized_relobj::do_layout): Don't get confused if
1645         layout_eh_frame returns NULL.
1646
1647 2010-01-08  Ian Lance Taylor  <iant@google.com>
1648
1649         PR 11084
1650         * dynobj.cc (Sized_dynobj::find_dynsym_sections): If there is no
1651         dynamic symbol table, use the normal symbol table.
1652         (Sized_dynobj::do_read_symbols): Remove assertion about type of
1653         symbol table.
1654
1655 2010-01-08  Ian Lance Taylor  <iant@google.com>
1656
1657         PR 11072
1658         * layout.cc (Layout::include_section): Remove .gnu_debuglink
1659         sections.
1660
1661 2010-01-08  H.J. Lu  <hongjiu.lu@intel.com>
1662
1663         * version.cc (print_version): Change to "Copyright 2010".
1664
1665 2010-01-08  Ian Lance Taylor  <iant@google.com>
1666
1667         PR 10287
1668         PR 11063
1669         * i386.cc (class Target_i386): Change return type of plt_section
1670         to be non-const.
1671         (class Output_data_plt_i386): Add tls_desc_rel_ field.
1672         (Output_data_plt_i386::Output_data_plt_i386): Initialize
1673         tls_desc_rel_ field.
1674         (Output_data_plt_i386::rel_tls_desc): New function.
1675         (Target_i386::rel_tls_desc_section): New function.
1676         (Target_i386::Scan::local): Rewrite R_386_TLS_GOTDESC handling.
1677         (Target_i386::Scan::global): For R_386_TLS_GOTDESC put
1678         R_386_TLS_DESC reloc in rel_tls_desc_section.
1679         * x86_64.cc (class Target_x86_64): Add tlsdesc_reloc_info_ field.
1680         Define struct Tlsdesc_info.
1681         (Target_x86_64::Target_x86_64): Initialize tlsdesc_reloc_info_.
1682         (Target_x86_64::do_reloc_symbol_index): New function.
1683         (Target_x86_64::add_tlsdesc_info): New function.
1684         (class Output_data_plt_x86_64): Add tlsdesc_rel_ field.
1685         (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize
1686         tlsdesc_rel_ field.
1687         (Output_data_plt_x86_64::rela_plt): Rename from rel_plt.  Change
1688         all callers.
1689         (Output_data_plt_x86_64::rela_tlsdesc): New function.
1690         (Target_x86_64::rela_tlsdesc_section): New function.
1691         (Target_x86_64::Scan::local): Rewrite R_X86_64_GOTPC32_TLSDESC
1692         handling.
1693         (Target_x86_64::Scan::global): For R_X86_64_GOTPC32_TLSDESC put
1694         (Target_x86_64::do_reloc_addend): New function.
1695         R_X86_64_TLSDESC reloc in rela_tlsdesc_section.
1696         * output.h (class Output_reloc) [SHT_REL]: Add new constructor
1697         declarations.  Define TARGET_CODE.  Add arg field to u1_ union.
1698         (Output_reloc::type): New function.
1699         (Output_reloc::is_local_section_symbol): Check for TARGET_CODE.
1700         (Output_reloc::is_target_specific): New function.
1701         (Output_reloc::target_arg): New function.
1702         (class Output_reloc) [SHT_RELA]: Add four new constructors for
1703         absolute relocs and target specific relocs.
1704         (class Output_data_reloc) [SHT_REL]: Add add_absolute and
1705         add_target_specific.
1706         (class Output_data_reloc) [SHT_RELA]: Likewise.
1707         * output.cc (Output_reloc::Output_reloc): Add four new versions
1708         for absolute relocs and target specific relocs.
1709         (Output_reloc::set_needs_dynsym_index): Add TARGET_CODE case.
1710         (Output_reloc::get_symbol_index): Likewise.
1711         (Output_reloc::local_section_offset): Check that local_sym_index_
1712         is not TARGET_CODE or 0.
1713         (Output_reloc::symbol_value): Likewise.
1714         (Output_reloc::write) [SHT_RELA]: Call target for target specific
1715         reloc.
1716         * target.h (class Target): Add reloc_symbol_index and reloc_addend
1717         functions.  Add do_reloc_symbol_index and do_reloc_addend virtual
1718         functions.
1719         * layout.cc (add_target_dynamic_tags): Use output section for
1720         DT_PLTRELSZ and DT_JMPREL.
1721
1722 2010-01-07  Ian Lance Taylor  <iant@google.com>
1723
1724         PR 11061
1725         * output.h (class Output_reloc) [SHT_RELA]: Add is_relative
1726         function.
1727         (class Output_data_reloc_generic): Define.
1728         (class Output_data_reloc_base): Change base class to
1729         Output_data_reloc_generic.  Change add() method to call
1730         bump_relative_reloc_count for a relative reloc.  Remove
1731         sort_relocs_ field.
1732         * output.cc (Output_data_reloc_base::do_write): Change sort_reloc_
1733         to sort_relocs().
1734         * layout.cc (Layout::add_target_dynamic_tags): Change dyn_rel to
1735         Output_data_reloc_generic*.  Add DT_RELCOUNT/DT_RELACOUNT tag if
1736         appropriate.
1737         * layout.h (class Layout): Update declaration.
1738
1739 2010-01-07  Ian Lance Taylor  <iant@google.com>
1740
1741         * output.h (class Output_data): Add const version of
1742         output_section and do_output_section.
1743         (class Output_section_data): Add const version of
1744         do_output_section.
1745         (class Output_section): Likewise.
1746         * layout.cc (Layout::add_target_dynamic_tags): New function.
1747         * layout.h (class Layout): Update declarations.
1748         * arm.cc (Target_arm::do_finalize_sections): Use
1749         add_target_dynamic_tags.
1750         * i386.cc (Target_i386::do_finalize_sections): Likewise.
1751         * powerpc.cc (Target_powerpc::do_finalize_sections): Likewise.
1752         * sparc.cc (Target_sparc::do_finalize_sections): Likewise.
1753         * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
1754
1755 2010-01-07  Ian Lance Taylor  <iant@google.com>
1756
1757         PR 11042
1758         * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Mark the dynamic
1759         object as needed.
1760
1761 2010-01-07  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
1762             Ian Lance Taylor  <iant@google.com>
1763
1764         PR 11019
1765         * object.cc: Instantiate Xindex::initialize_symtab_xindex and
1766         Xindex::read_symtab_xindex.
1767
1768 2010-01-07  Doug Kwan  <dougkwan@google.com>
1769
1770         * arm.cc (Insn_template::Type): New enum value THUMB16_SPECIAL_TYPE.
1771         (Insn_template::thumb16_bcond_insn): New method declaration.
1772         (Insn_template): Fix spelling.
1773         (Stub::thumb16_special): New method declaration.
1774         (Stub::do_write): Define virtual method which was previously pure
1775         virtual.
1776         (Stub::do_thumb16_special): New method declaration.
1777         (Stub::do_fixed_endian_write): New template member.
1778         (Reloc_stub::do_write): Remove.
1779         (Reloc_stub::do_fixed_endian_write): Remove.
1780         (Cortex_a8_stub): New class definition.
1781         (Stub_factory::make_cortex_a8_stub): New method definition.
1782         (Stub_factory::Stub_factory): Add missing static storage class
1783         qualifier for elf32_arm_stub_a8_veneer_blx.
1784
1785 2010-01-07  Ian Lance Taylor  <iant@google.com>
1786
1787         PR 10980
1788         * options.h (class General_options): Add --warn-unresolved-symbols
1789         and --error-unresolved-symbols.
1790         * errors.cc (Errors::undefined_symbol): Implement
1791         --warn-unresolved-symbols.
1792
1793         * options.h (class General_options): Add -z text and -z textoff.
1794         * layout.cc (Layout::finish_dynamic_section): Implement -z text.
1795
1796 2010-01-06  Sriraman Tallam  <tmsriram@google.com>
1797
1798         * gc.h (Garbage_collection::Cident_section_map): New typedef.
1799         (Garbage_collection::cident_sections): New function.
1800         (Garbage_collection::add_cident_section): New function.
1801         (Garbage_collection::cident_sections_): New member.
1802         (gc_process_relocs): Add references to sections whose names are C
1803         identifiers.
1804         * gold.h (cident_section_start_prefix): New constant.
1805         (cident_section_stop_prefix): New constant.
1806         (is_cident): New function.
1807         * layout.cc (Layout::define_section_symbols): Replace string constants
1808         with the newly defined constants.
1809         * object.cc (Sized_relobj::do_layout): Track sections whose names are
1810         C identifiers.
1811         * testsuite/Makefile.am: Add gc_orphan_section_test.
1812         * testsuite/Makefile.in: Regenerate.
1813         * testsuite/gc_orphan_section_test.cc: New file.
1814         * testsuite/gc_orphan_section_test.sh: New file.
1815
1816 2010-01-06  Ian Lance Taylor  <iant@google.com>
1817
1818         PR 10980
1819         * options.h (class General_options): Add --warn-shared-textrel.
1820         * layout.cc (Layout::finish_dynamic_section): Implement
1821         --warn-shared-textrel.
1822
1823         PR 10980
1824         * options.h (class General_options): Add --warn-multiple-gp.
1825
1826 2010-01-06  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
1827
1828         * Makefile.am (incremental_dump_DEPENDENCIES): Remove
1829         $(THREADSLIB) and $(LIBDL).
1830         * Makefile.in: Rebuild.
1831
1832 2010-01-06  Ian Lance Taylor  <iant@google.com>
1833
1834         PR 10980
1835         * options.cc (General_options::parse_section_start): New function.
1836         (General_options::section_start): New function.
1837         (General_options::General_options): Initialize all members.
1838         * options.h: Include <map>
1839         (class General_options): Add --section-start.  Add section_starts_
1840         member.
1841         * layout.cc (Layout::attach_allocated_section_to_segment): If
1842         --section-start was used, set the address of the segment.  Remove
1843         local sort_sections.
1844         (Layout::relaxation_loop_body): If the address of the load segment
1845         has been set by --section-start, don't use it.
1846         * output.h (Output_segment::update_flags_for_output_section): New
1847         function.
1848         * output.cc (Output_segment::add_output_section): Call
1849         update_flags_for_output_section.
1850
1851 2010-01-05  Ian Lance Taylor  <iant@google.com>
1852
1853         PR 10980
1854         * options.h (class General_options): Add --undefined-version.
1855         * script.cc (struct Version_expression): Add was_matched_by_symbol
1856         field.
1857         (Version_script_info::matched_symbol): New function.
1858         (Version_script_info::get_symbol_version_helper): Call
1859         matched_symbol.
1860         (Version_script_info::check_unmatched_names): New function.
1861         * script.h (class Version_script_info): Update declarations.
1862         * gold.cc (queue_middle_tasks): Handle --no-undefined-version.
1863
1864         * options.h (class General_options): Use DEFINE_bool_alias for
1865         allow_multiple_definition.
1866         * resolve.cc (Symbol_table::should_override): Don't test
1867         allow_multiple_definition.
1868
1869         PR 10980
1870         * options.h (class General_options): Add --cref.
1871         * main.cc (main): Print cref table if --cref.  Don't close mapfile
1872         until after printing cref table.
1873         * cref.cc: Include "symtab.h".
1874         (class Cref_inputs): Define Cref_table_compare and Cref_table.
1875         (Cref_table_compare::operator()): New function.
1876         (Cref_inputs::gather_cref): New function.
1877         (filecol): New static const.
1878         (Cref_inputs::print_cref): New function.
1879         (Cref::print_cref): New function.
1880         * cref.h: Include <cstdio>.
1881         (class Cref): Update declarations.
1882         * mapfile.h (Mapfile::file): New function.
1883         * object.h (class Object): Define Symbols.  Declare virtual
1884         do_get_global_symbols.
1885         (Object::get_global_symbols): New function.
1886         * object.cc (Input_objects::add_object): Pass object to cref_ if
1887         --cref.
1888         (Input_objects::archive_start): Likewise.
1889         (Input_objects::archive_stop): Likewise.
1890         (Input_objects::print_cref): New function.
1891         * dynobj.h (Sized_dynobj::do_get_global_symbols): New function.
1892         * dynobj.cc (big_endian>::do_add_symbols): Create symbols_ if
1893         --cref.
1894         * plugin.cc (Sized_pluginobj::do_get_global_symbols): New
1895         function.
1896         * plugin.h (class Sized_pluginobj): Update declarations.
1897
1898 2010-01-05  Ian Lance Taylor  <iant@google.com>
1899
1900         * symtab.cc (Symbol_table::add_from_object): Rename def parameter
1901         to is_default_version.  Rename insdef to insdefault.
1902         (Symbol_table::add_from_relobj): Rename def to is_default_version
1903         and local to is_forced_local.
1904         (Symbol_table::add_from_pluginobj): Likewise.
1905         (Symbol_table::add_from_dynobj): Likewise.
1906         (Symbol_table::define_special_symbol): Rename insdef to
1907         insdefault.
1908
1909 2010-01-04  Ian Lance Taylor  <iant@google.com>
1910
1911         PR 10980
1912         * options.h (class General_options): Add
1913         --allow-multiple-definition and -z muldefs.
1914         * resolve.cc (Symbol_table::should_override): Don't warn about a
1915         multiple symbol definition if --allow-multiple-definition or -z
1916         muldefs.
1917
1918         PR 10980
1919         * options.h (class General_options): Add --add-needed and
1920         --copy-dt-needed-entries.  Tweak --as-needed help entry.
1921         * object.cc (Input_objects::check_dynamic_dependencies): Give an
1922         error if --copy-dt-needed-entries aka --add-needed is used and
1923         would cause a change in behaviour.
1924
1925         PR 10980
1926         * options.h (class General_options): Add -G as a short version of
1927         --shared.  Add no-op options -assert, -g, and -i.
1928
1929 2010-01-04  Sriraman Tallam  <tmsriram@google.com>
1930
1931         * gc.h (gc_process_relocs): Call is_section_foldable_candidate to
1932         check for .text or .gnu.linkonce.t sections.
1933         * icf.cc (Icf::find_identical_sections): Ditto.
1934         Change the detection for mangled function name within the section
1935         name.
1936         * icf.h (is_section_foldable_candidate): New function.
1937
1938 2009-12-30  Ian Lance Taylor  <iant@google.com>
1939
1940         PR 10980
1941         * options.h (class General_options): Permit two dashes with
1942         --retain-symbols-file.
1943
1944 2009-12-30  Ian Lance Taylor  <iant@google.com>
1945
1946         PR 10979
1947         * layout.cc (Layout::relaxation_loop_body): If -Ttext was used,
1948         don't put the file header and segment headers in the text
1949         segment.
1950
1951         PR 10979
1952         * common.cc (Sort_commons::operator()): Stabilize sort when both
1953         entries are NULL.
1954         (Symbol_table::do_allocate_commons_list): When allocating common
1955         symbols, skip a symbol which is no longer common.
1956         * symtab.h (Symbol::is_common): Test whether the symbol comes from
1957         an object before checking its type.
1958         * testsuite/common_test_2.c: New file.
1959         * testsuite/common_test_3.c: New file.
1960         * testsuite/Makefile.am (check_PROGRAMS): Add common_test_2.
1961         (common_test_2_SOURCES, common_test_2_DEPENDENCIES): Define.
1962         (common_test_2_LDFLAGS, common_test_2_LDADD): Define.
1963         (common_test_2_pic.o, common_test_2.so): New targets.
1964         (common_test_3_pic.o, common_test_3.so): New targets.
1965         * testsuite/Makefile.in: Rebuild.
1966
1967         PR 10979
1968         * script.cc (read_input_script): If we see a new SECTIONS clause,
1969         and we have added an input section, give an error.
1970         * layout.h (class Layout): Add have_added_input_section function.
1971         Add have_added_input_section_ field.
1972         * layout.cc (Layout::Layout): Initialize
1973         have_added_input_section_.
1974         (Layout::layout): Set have_added_input_section_.
1975         (Layout::layout_eh_frame): Likewise.
1976
1977 2009-12-30  Ian Lance Taylor  <iant@google.com>
1978
1979         PR 10931
1980         * options.h (class General_options): Add --sort-common option.
1981         * symtab.h (class Symbol_table): Define Sort_commons_order enum.
1982         * common.cc (Sort_common): Add sort_order parameter to
1983         constructor.  Add sort_order_ field.
1984         (Sort_commons::operator): Check sort_order_.
1985         (Symbol_table::allocate_commons): Determine the sort order.
1986         (Symbol_table::do_allocate_commons): Add sort_order parameter.
1987         Change all callers.
1988         (Symbol_table::do_allocate_commons_list): Likewise.
1989
1990 2009-12-30  Ian Lance Taylor  <iant@google.com>
1991
1992         PR 10916
1993         * symtab.cc (Symbol_table::add_from_relobj): When not exporting
1994         symbols from this object, don't change the visibility of an
1995         undefined symbol.
1996         * testsuite/exclude_libs_test_1.c (lib1_ref): New function.
1997
1998 2009-12-30  Ian Lance Taylor  <iant@google.com>
1999
2000         PR 10861
2001         * script.h (class Version_script_info): Define Language enum.
2002         Update declarations.  Define Glob, Exact, and Lookup types.  Add
2003         new fields globals_, locals_, and is_finalized_.
2004         * script.cc: Various formatting fixes.
2005         (class Parser_closure): Change language_stack_ from a vector of
2006         std::string to one of Version_script_info::Language.  Adjust all
2007         uses accordingly.
2008         (class Lazy_demangler): Remove.
2009         (struct Version_expression): Change language from std::string to
2010         Version_script_info::Language.
2011         (Version_script_info::Version_script_info): New function.
2012         (Version_script_info::~Version_script_info): Don't call clear.
2013         (Version_script_info::finalize): New function.
2014         (Version_script_info::build_lookup_tables): New function.
2015         (Version_script_info::build_expression_list_lookup): New
2016         function.
2017         (Version_script_info::get_symbol_version_helper): Rewrite to use
2018         lookup tables.
2019         (Version_script_info::print_expression_list): Adjust to use
2020         Version_script_info::Language.
2021         (script_push_lex_into_version_mode): Check that the version script
2022         has not been finalized.
2023         (version_script_push_lang): Change language string to
2024         Version_script_info::Language.
2025         * options.cc (Command_line::version_script): New function.
2026         * options.h (class General_options): Add finalize_dynamic_list
2027         function.  Change version_script from declaration to definition.
2028         * testsuite/ver_test_4.script: Remove duplicate def of t2_2.
2029         * testsuite/version_script.map: Remove duplicate def of foo.
2030         * testsuite/Makefile.am (ver_matching_def.so): Depend upon
2031         version_script.map.
2032         * testsuite/Makefile.in: Rebuild.
2033
2034 2009-12-30  Ian Lance Taylor  <iant@google.com>
2035
2036         PR 10843
2037         * target-reloc.h (relocate_for_relocatable): When copying a reloc,
2038         if the input symbol index is 0, make the output symbol index 0.
2039
2040 2009-12-30  Ian Lance Taylor  <iant@google.com>
2041
2042         PR 10670
2043         * options.h (class General_options): Add -x/--discard-all.
2044         * object.cc (Sized_relobj::do_count_local_symbols): Handle
2045         --discard-all.  If the local symbol needs a dynamic entry, check
2046         that before handling --discard-locals.
2047
2048 2009-12-30  Ian Lance Taylor  <iant@google.com>
2049
2050         PR 10450
2051         * output.cc (Output_segment::Output_segment): If PT_TLS, set the
2052         flags to PF_R.
2053         (Output_segment::add_output_section): Don't change the flags if
2054         the type is PT_TLS.
2055
2056         PR 10450
2057         * dynobj.cc (Dynobj::create_gnu_hash_table): Add symbols to the
2058         GNU hash table if they need a dynamic value.  Otherwise, don't add
2059         them if they are defined in a dynamic object or are forced local.
2060
2061 2009-12-29  Ian Lance Taylor  <iant@google.com>
2062
2063         PR 10450
2064         * layout.cc (Layout::create_dynamic_symtab): Only set entsize of
2065         .gnu.hash table for a 32-bit target.
2066
2067         PR 10450
2068         * symtab.h (Symbol::needs_dynsym_entry): A symbol in both a
2069         regular and a dynamic object only needs a dynamic symbol table
2070         entry if it is externally visible.
2071
2072         PR 10450
2073         * i386.cc (class Target_i386): Initialize global_offset_table_ in
2074         constructor.  Add global_offset_table_ field.
2075         (Target_i386::got_section): Set global_offset_table_.
2076         (Target_i386::do_finalize_sections): Set global_offset_table_
2077         size.
2078         * x86_64.cc (class Target_x86_64): Initialize global_offset_table_
2079         in constructor.  Add global_offset_table_ field.
2080         (Target_x86_64::got_section): Set global_offset_table_.
2081         (Target_x86_64::do_finalize_sections): Set global_offset_table_
2082         size.
2083
2084         * layout.cc (Layout::Layout): Initialize increase_relro_.
2085         (Layout::get_output_section): Add is_relro, is_last_relro, and
2086         is_first_non_relro parameters.  Change all callers.
2087         (Layout::choose_output_section): Likewise.
2088         (Layout::add_output_section_data): Likewise.
2089         (Layout::make_output_section): Likewise.
2090         (Layout::set_segment_offsets): Clear increase_relro when using a
2091         linker script.
2092         * layout.h (class Layout): Add increase_relro method.  Add
2093         increase_relro_ field.  Update declarations.
2094         * output.cc (Output_section::Output_section): Initialize
2095         is_last_relro_ and is_first_non_relro_.
2096         (Output_segment::add_output_section): Group relro sections is
2097         do_sort is true.  Handle is_last_relro and is_first_non_relro.
2098         (Output_segment::maximum_alignment): Remove relro handling.
2099         (Output_segment::set_section_addresses): Add increase_relro
2100         parameter.  Change all callers.  Add initial alignment to align
2101         relro sections on separate page.  Remove old relro handling.
2102         (Output_segment::set_section_list_addresses): Remove in_relro
2103         parameter.  Change all callers.
2104         (Output_segment::set_offset): Add increase parameter.  Change all
2105         callers.  Remove old relro handling.
2106         * output.h (class Output_section): Add new methods: is_last_relro,
2107         set_is_last_relro, is_first_non_relro, set_is_first_non_relro.
2108         Add is_last_relro_ and is_first_non_relro_ fields.
2109         * i386.cc (Target_i386::got_section): Don't call set_is_relro.
2110         Create separate .got.plt section.  Call increase_relro.
2111         * x86_64.cc (Target_x86_64::got_section): Likewise.
2112         * testsuite/relro_script_test.t: Add .got.plt.
2113
2114         PR 10450
2115         * layout.cc (Layout::Layout): Initialize dynamic_symbol_ field.
2116         (Layout::create_initial_dynamic_sections): Set dynamic_symbol_.
2117         (Layout::finalize): Call set_dynamic_symbol_size.
2118         (Layout::set_dynamic_symbol_size): New function.
2119         * layout.h (class Layout): Add dynamic_symbol_ field.  Declare
2120         set_dynamic_symbol_size.
2121
2122         PR 10450
2123         * output.h (class Output_section): Add is_entsize_zero_ field.
2124         * output.cc (Output_section::Output_section): Initialize
2125         is_entsize_zero_.
2126         (Output_section::set_entsize): If two different entsizes are
2127         requested, force it to zero.
2128         (Output_section::add_input_section): Set flags for .debug_str
2129         before updating section flags.  Set entsize.
2130         (Output_section::update_flags_for_input_section): Set SHF_MERGE
2131         and SHF_STRING if all input sections have those flags.
2132
2133 2009-12-29   Rafael Espindola  <espindola@google.com>
2134
2135         * main.cc (main): Fix the sys time reporting.
2136         * workqueue.cc (Workqueue::find_and_run_task): Fix the sys time
2137         reporting.
2138
2139 2009-12-29  Sriraman Tallam  <tmsriram@google.com>
2140
2141         * options.cc (General_options::parse_version): Allow -v to exit
2142         without an error if there is nothing to link.
2143
2144 2009-12-29  Ian Lance Taylor  <iant@google.com>
2145
2146         * configure.ac: Set the MCMODEL_MEDIUM conditional to false if
2147         using a version of gcc before 4.1.
2148         * configure: Rebuild.
2149
2150 2009-12-28  Chris Demetriou  <cgd@google.com>
2151
2152         * attributes.cc (Output_attributes_section_data::do_write): Use
2153         std::vector::front rather than std::vector::data.
2154
2155 2009-12-28  Ian Lance Taylor  <iant@google.com>
2156
2157         * symtab.h (class Symbol_table): Add enum Defined.
2158         * resolve.cc (Symbol_table::should_override): Add defined
2159         parameter.  Change all callers.  Test whether object is NULL
2160         before calling a method on it.
2161         (Symbol_table::report_resolve_problem): Add defined parameter.
2162         Change all callers.
2163         (Symbol_table::should_override_with_special): Likewise.
2164         * symtab.cc (Symbol_table::define_in_output_data): Add defined
2165         parameter.  Change all callers.
2166         (Symbol_table::do_define_in_output_data): Likewise.
2167         (Symbol_table::define_in_output_segment): Likewise.
2168         (Symbol_table::do_define_in_output_segment): Likewise.
2169         (Symbol_table::define_as_constant): Likewise.
2170         (Symbol_table::do_define_as_constant): Likewise.
2171         * script.h (class Symbol_assignment): Add is_defsym parameter to
2172         constructor; change all callers.
2173         * script.cc (Script_options::add_symbol_assignment): Add is_defsym
2174         parameter.  Change all callers.  Add is_defsym_ field.
2175         (class Parser_closure): Add parsing_defsym parameter to
2176         constructor; change all callers.  Add parsing_defsym accessor
2177         function.  Add parsing_defsym_ field.
2178
2179 2009-12-28  Ian Lance Taylor  <iant@google.com>
2180
2181         * gold.cc (queue_middle_tasks): Fix formatting.
2182         * object.cc (Relobj::is_section_name_included): Likewise.
2183
2184 2009-12-23  Ian Lance Taylor  <iant@google.com>
2185
2186         * i386.cc (Target_i386::do_calls_non_split): Recognize
2187         -fsplit-stack prologue for a function with a static chain.
2188         * x86_64.cc (Target_x86_64::do_calls_non_split): Recognize
2189         -fsplit-stack prologue when using %r11.
2190
2191 2009-12-21  Sriraman Tallam  <tmsriram@google.com>
2192
2193         * options.cc (General_options::parse_version): Make -v continue and do
2194         the link like GNU ld does.
2195
2196 2009-12-17  Rafael Avila de Espindola  <espindola@google.com>
2197
2198         * Makefile.am (CCFILES): Add timer.cc.
2199         (HFILES): Add timer.h.
2200         * configure.ac: Check for sysconf and times.
2201         * main.cc: include timer.h.
2202         (main): Use Timer instead of get_run_time.
2203         * timer.cc: New.
2204         * timer.h: New.
2205         * workqueue.cc: include timer.h.
2206         (Workqueue::find_and_run_task):
2207         Report user, sys and wall time.
2208         * Makefile.in: Regenerate.
2209         * config.in: Regenerate.
2210         * configure: Regenerate.
2211
2212 2009-12-16  Doug Kwan  <dougkwan@google.com>
2213
2214         * arm.cc (Arm_relobj::scan_sections_for_stubs): Exclude ICF-eliminated
2215         sections.
2216         * object.cc (Sized_relobj::do_finalize_local_symbols): Handle
2217         relaxed input sections.
2218         * output.cc (Output_section::find_relaxed_input_section): Change
2219         return type to Output_relaxed_input_section pointer.  Adjust code
2220         for new type of relaxed_input_section_map_.
2221         * output.h (Output_section::find_relaxed_input_section): Change
2222         return type to Output_relaxed_input_section pointer.
2223         (Output_section::Output_relaxed_input_section_by_input_section_map):
2224         New type.
2225         (Output_section::relaxed_input_section_map_): Change type to
2226         Output_section::Output_relaxed_input_section_by_input_section_map.
2227         * symtab.cc (Symbol_table::compute_final_value): Handle relaxed
2228         input section.
2229
2230 2009-12-15  Ian Lance Taylor  <iant@google.com>
2231
2232         * layout.cc (Layout::create_shstrtab): Only write out after input
2233         sections if we are compressing debug sections.
2234
2235 2009-12-15  Ian Lance Taylor  <iant@google.com>
2236
2237         * archive.cc (Archive::add_symbols): Only look up a symbol without
2238         a version if there is, in fact, a version.
2239
2240 2009-12-14  Ian Lance Taylor  <iant@google.com>
2241
2242         Revert -Wshadow changes, all changes from:
2243         2009-12-11  Doug Kwan  <dougkwan@google.com>
2244         2009-12-11  Nick Clifton  <nickc@redhat.com>
2245         * configure.ac: Remove -Wshadow when setting WARN_CXXFLAGS.
2246
2247 2009-12-11  Doug Kwan  <dougkwan@google.com>
2248
2249         * arm.cc (Target_arm::do_finalize_sections): Fix build breakage
2250         due to -Wshadow.
2251         * attributes.cc (Object_attribute::size): Ditto.
2252         (Attributes_section_data::size): Ditto.
2253         (Attributes_section_data::Attributes_section_data): Ditto.
2254         (Output_attributes_section_data::do_write): Ditto.
2255         * attributes.h (Object_attribute::set_type): Ditto.
2256         * testsuite/tls_test_main.cc (safe_lock, safe_unlock): Ditto.
2257
2258 2009-12-11  Nick Clifton  <nickc@redhat.com>
2259
2260         * archive.cc: Fix shadowed variable warnings.
2261         * arm.cc: Likewise.
2262         * compressed_output.cc: Likewise.
2263         * compressed_output.h: Likewise.
2264         * configure: Likewise.
2265         * dwarf_reader.cc: Likewise.
2266         * dynobj.cc: Likewise.
2267         * dynobj.h: Likewise.
2268         * ehframe.cc: Likewise.
2269         * ehframe.h: Likewise.
2270         * errors.cc: Likewise.
2271         * expression.cc: Likewise.
2272         * fileread.cc: Likewise.
2273         * fileread.h: Likewise.
2274         * freebsd.h: Likewise.
2275         * i386.cc: Likewise.
2276         * icf.cc: Likewise.
2277         * incremental.h: Likewise.
2278         * layout.cc: Likewise.
2279         * layout.h: Likewise.
2280         * mapfile.cc: Likewise.
2281         * merge.cc: Likewise.
2282         * merge.h: Likewise.
2283         * object.cc: Likewise.
2284         * object.h: Likewise.
2285         * options.h: Likewise.
2286         * output.cc: Likewise.
2287         * output.h: Likewise.
2288         * parameters.cc: Likewise.
2289         * plugin.cc: Likewise.
2290         * powerpc.cc: Likewise.
2291         * reduced_debug_output.cc: Likewise.
2292         * reduced_debug_output.h: Likewise.
2293         * reloc.cc: Likewise.
2294         * reloc.h: Likewise.
2295         * resolve.cc: Likewise.
2296         * script-sections.cc: Likewise.
2297         * script.cc: Likewise.
2298         * script.h: Likewise.
2299         * sparc.cc: Likewise.
2300         * symtab.cc: Likewise.
2301         * symtab.h: Likewise.
2302         * target-select.cc: Likewise.
2303         * target-select.h: Likewise.
2304         * token.h: Likewise.
2305         * workqueue.cc: Likewise.
2306         * workqueue.h: Likewise.
2307         * x86_64.cc: Likewise.
2308
2309 2009-12-10  Doug Kwan  <dougkwan@google.com>
2310
2311         * arm.cc (attributes.h): New include.
2312         (Arm_relobj::Arm_relobj): Initialize attributes_section_data_.
2313         (Arm_relobj::~Arm_relobj): Delete object pointed by
2314         attributes_section_data_.
2315         (Arm_relobj::attributes_section_data): New method definition.
2316         (Arm_relobj::attributes_section_data_): New data member declaration.
2317         (Arm_dynobj::Arm_dynobj): Initialize attributes_section_data_.
2318         (Arm_dynobj::~Arm_dynobj): Delete object pointed by
2319         attributes_section_data_.
2320         (Arm_dynobj::attributes_section_data): New method definition.
2321         (Arm_dynobj::attributes_section_data_): New data member declaration.
2322         (Target_arm::Target_arm): Initialize attributes_section_data_.  Change
2323         initialization value of may_use_blx_ to false.
2324         (Target_arm::using_thumb2, Target_arm::using_thumb_only,
2325         Target_arm::may_use_arm_nop, Target_arm::may_use_thumb2_nop): Use
2326         object attributes to compute results instead of hard-coding.
2327         (Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order,
2328         Target_arm::get_secondary_compatible_arch,
2329         Target_arm::set_secondary_compatible_arch
2330         Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name,
2331         Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes):
2332         New method declarations.
2333         (Target_arm::get_aeabi_object_attribute): New method definition.
2334         (Target_arm::attributes_section_data_): New data member declaration.
2335         (read_arm_attributes_section): New template definition.
2336         (Arm_relobj::do_read_symbols): Read attributes section if it exists.
2337         (Arm_dynobj::do_read_symbols): Ditto.
2338         (Target_arm::do_finalize_sections): Merge attributes sections from
2339         input.  Check for BLX use after attributes section merging.
2340         Fix __exidx_start and __exidx_end visibility.  Create an
2341         .ARM.attributes section if necessary.
2342         (Target_arm::get_secondary_compatible_arch,
2343         Target_arm::set_secondary_compatible_arch,
2344         Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name,
2345         Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes,
2346         Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order): 
2347         New method definitions.
2348
2349 2009-12-09  Ian Lance Taylor  <iant@google.com>
2350
2351         * plugin.cc (Plugin::load): Don't cast from void* to a function
2352         pointer.
2353
2354 2009-12-09  Ian Lance Taylor  <iant@google.com>
2355
2356         * dynobj.cc (Sized_dynobj::do_read_symbols): Clear version
2357         information fields.
2358
2359 2009-12-09  H.J. Lu  <hongjiu.lu@intel.com>
2360
2361         * testsuite/Makefile.am (two_file_shared_1_pic_2_test_DEPENDENCIES):
2362         Replace two_file_shared_1.so with two_file_shared_2.so.
2363         * testsuite/Makefile.in: Regenerated.
2364
2365 2009-12-08  Doug Kwan  <dougkwan@google.com>
2366
2367         * Makefile.am (CCFILES): Add attributes.cc and int_encoding.cc.
2368         (HFILES): Add attributes.h and int_encoding.h.
2369         * Makefile.in: Regenerate.
2370         * dwarf_reader.cc (read_unsigned_LEB_128, read_signed_LEB_128): Move
2371         function definitions to int_encoding.cc
2372         * dwarf_reader.h (read_unsigned_LEB_128, read_signed_LEB_128): Move
2373         prototypes to int_encoding.h
2374         * reduced_debug_output.cc (int_encoding.h): New include.
2375         (write_unsigned_LEB_128, get_length_as_unsigned_LEB_128): Move
2376         function definitions to int_encoding.cc
2377         (insert_into_vector, read_from_pointer): Move template definitions to
2378         int_encoding.h
2379         * attributes.cc: New file.
2380         * attributes.h: New file.
2381         * int_encoding.cc: New file.
2382         * int_encoding.h: New file.
2383
2384 2009-12-07  Rafael Avila de Espindola  <espindola@google.com>
2385
2386         PR gold/11055
2387         * incremental-dump.cc (dump_incremental_inputs): New.
2388         (main): Use dump_incremental_inputs.
2389
2390 2009-12-07  H.J. Lu  <hongjiu.lu@intel.com>
2391
2392         PR gold/10893
2393         * i386.cc (Target_i386::Scan::globa): Use is_func instead of
2394         checking elfcpp::STT_FUNC.
2395         (Target_i386::Relocate::relocate): Likewise.
2396         * x86_64.cc (Target_x86_64::Scan::global): Likewise.
2397
2398         * symtab.cc (Symbol_table::sized_write_symbol): Turn IFUNC
2399         symbols from shared libraries into normal FUNC symbols.
2400
2401         * symtab.h (Symbol): Add is_func and use it.
2402
2403 2009-12-05  Doug Kwan  <dougkwan@google.com>
2404
2405         * arm.cc (Target_arm::arm_info): Initialize new fields
2406         attributes_section and attributes_vendor.
2407         * i386.cc (Target_i386::i386_info): Same.
2408         * object.cc (Sized_relobj::do_layout): Skip attribute section.
2409         * gold/powerpc.cc (Target_powerpc::powerpc_info): Initialize new
2410         fields attributes_section and attributes_vendor.
2411         * sparc.cc (Target_sparc::sparc_info): Same.
2412         * target.h (Target::attributes_section, Target::attributes_vendor,
2413         Target::is_attributes_section, Target::attribute_arg_type,
2414         Target::attributes_order): New method definitions.
2415         (Target::Target_info::attributes_section,
2416         Target::Target_info::attributes_vendor): New fields.
2417         (Target::do_attribute_arg_type, Target::do_attributes_order): New
2418         virtual method definitions.
2419         * x86_64.cc (Target_x86_64::x86_64_info): Initialize new fields
2420         attributes_section and attributes_vendor.
2421         * testsuite/testfile.cc (Target_test::test_target_info): Same.
2422
2423 2009-12-05  Doug Kwan  <dougkwan@google.com>
2424
2425         * arm.cc: Update comments about interworking and stub generation.
2426         (Target_arm::Relocate::reloc_is_non_pic): Update list of relocations
2427         considered as non-PIC.
2428         (Arm_relocate_functions::base_abs): Fix formatting.
2429         (Arm_relocate_functions::got_prel): Fix comment.  Change interface
2430         of function to use GOT entry address instead of offset.
2431         (Target_arm::Scan::global): Issue an error if a symbol would need a
2432         PLT does not get one because it is untyped.  Remove code to create
2433         dynamic symbols for relative branches.
2434         (Target_arm::Relocate::relocate: Use 0 instead of false since function
2435         takes unsigned integer instead of boolean.
2436
2437 2009-12-05  H.J. Lu  <hongjiu.lu@intel.com>
2438
2439         * testsuite/Makefile.am (constructor_test_LDADD): New. Empty.
2440         (two_file_test_LDADD): Likewise.
2441         (common_test_1_LDADD): Likewise.
2442         (exception_test_LDADD) Likewise.
2443         (weak_test_LDADD): Likewise.
2444         (many_sections_test_LDADD): Likewise.
2445         (initpri1_LDADD): Likewise.
2446         (script_test_1_LDADD): Likewise.
2447         (script_test_2_LDADD): Likewise.
2448         (justsyms_LDADD): Likewise.
2449         (binary_test_LDADD): Likewise.
2450         (large_LDADD): Likewise.
2451         * testsuite/Makefile.in: Regenerated.
2452
2453 2009-12-04  H.J. Lu  <hongjiu.lu@intel.com>
2454
2455         * resolve.cc (symbol_to_bits): Treat STB_GNU_UNIQUE as STB_GLOBAL.
2456         (Symbol_table::override_with_special): Likewise.
2457         (Symbol_table::add_from_object): Likewise.
2458
2459 2009-12-04  Rafael Avila de Espindola  <espindola@google.com>
2460
2461         * incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
2462         Don't set the data_offset twice.
2463
2464 2009-12-04  Rafael Avila de Espindola  <espindola@google.com>
2465
2466         * testsuite/Makefile.in: Regenerate.
2467
2468 2009-12-03  Doug Kwan  <dougkwan@google.com>
2469
2470         * arm.cc: Remove comment about missing .ARM.exidx section symbols.
2471         (Target_arm::do_finalize_sections): Add parameter for symbol table
2472         pointer.  Add __exidx_start and __exidx_end symbols as appropriate.
2473         * i386.cc (Target_i386::do_finalize_sections): Add an additional
2474         parameter for symbol table pointer.
2475         * layout.cc (Layout::finalize): Call Target::finalize_sections with
2476         an additional parameter for a pointer to symbol table.
2477         * powerpc.cc (Target_powerpc::do_finalize_sections): Add an additional
2478         parameter for a symbol table pointer.
2479         * sparc.cc (Target_sparc::do_finalize_sections): Ditto.
2480         * target.h (Target::finalize_sections, Target::do_finalize_sections):
2481         Ditto.
2482         * x86_64.cc (Target_x86_64::do_finalize_sections): Add an additional
2483         parameter for a symbol table pointer.
2484
2485 2009-12-03  Rafael Avila de Espindola  <espindola@google.com>
2486
2487         * incremental.cc (Incremental_inputs_header)
2488         (Incremental_inputs_header_write, Incremental_inputs_entry)
2489         (Incremental_inputs_entry_write): Move ...
2490         * incremental.h (Incremental_inputs_header)
2491         (Incremental_inputs_header_write, Incremental_inputs_entry)
2492         (Incremental_inputs_entry_write): here.
2493
2494 2009-12-02  Rafael Avila de Espindola  <espindola@google.com>
2495
2496         * incremental.cc (make_sized_incremental_binary): Set the target.
2497         Error if it is incompatible.
2498         * output.h (Output_file): Add filename method.
2499
2500 2009-12-02  Rafael Avila de Espindola  <espindola@google.com>
2501
2502         * incremental.cc (Incremental_inputs_entry): Remove unused argument
2503         from the get_* methods.
2504
2505 2009-12-02  Rafael Avila de Espindola  <espindola@google.com>
2506
2507         * incremental-dump.cc (main): Check that the offeset of a script is 0.
2508         * incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
2509         Write 0 for the data_offset of scripts.
2510
2511 2009-12-02  Rafael Avila de Espindola  <espindola@google.com>
2512
2513         * testsuite/Makefile.am: Add the incremental_test.sh test.
2514         * testsuite/incremental_test.sh: New.
2515         * testsuite/incremental_test_1.c: New.
2516         * testsuite/incremental_test_2.c: New.
2517
2518 2009-12-01  Rafael Avila de Espindola  <espindola@google.com>
2519
2520        * incremental-dump.cc (main): Fix typos.
2521
2522 2009-11-27  Rafael Avila de Espindola  <espindola@google.com>
2523
2524         PR gold/11025
2525         * incremental-dump.cc (main): Use llu to print 64 bit values.
2526
2527 2009-11-26  Per Ã˜yvind Karlsen <peroyvind@mandriva.org>
2528             H.J. Lu  <hongjiu.lu@intel.com>
2529
2530         * Makefile.am (incremental_dump_DEPENDENCIES): Add $(THREADSLIB)
2531         $(LIBDL).
2532         (incremental_dump_LDADD): Likewise.
2533         * Makefile.in: Regenerated.
2534
2535 2009-11-25  Doug Kwan  <dougkwan@google.com>
2536         
2537         Revert:
2538
2539         2009-11-25  Doug Kwan  <dougkwan@google.com>
2540
2541                 * arm.cc (Target_arm::Target_arm): Move method definition
2542                 outside of class definition.  Add code to handle
2543                 --target1-rel, --target1-abs and --target2= options.
2544                 (Target_arm::get_reloc_reloc_type): Change method to be
2545                 non-static and const.
2546                 (Target_arm::target1_is_rel_, Target_arm::target2_reloc_):
2547                 New data member declaration.
2548                 (Target_arm::Scan::local, Target_arm::Scan::global,
2549                 Target_arm::Relocate::relocate,
2550                 Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
2551                 Adjust call to Target_arm::get_real_reloc_type.
2552                 (Target_arm::get_real_reloc_type): Use command line options
2553                 to determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
2554                 * options.h (--target1-rel, --target1-abs, --target2): New
2555                 ARM-only options.
2556
2557 2009-11-25  Doug Kwan  <dougkwan@google.com>
2558
2559         * arm.cc (Target_arm::Target_arm): Move method definition outside of
2560         class definition.  Add code to handle --target1-rel, --target1-abs
2561         and --target2= options.
2562         (Target_arm::get_reloc_reloc_type): Change method to be non-static
2563         and const.
2564         (Target_arm::target1_is_rel_, Target_arm::target2_reloc_): New data
2565         member declaration.
2566         (Target_arm::Scan::local, Target_arm::Scan::global,
2567         Target_arm::Relocate::relocate,
2568         Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Adjust
2569         call to Target_arm::get_real_reloc_type.
2570         (Target_arm::get_real_reloc_type): Use command line options to
2571         determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
2572         * options.h (--target1-rel, --target1-abs, --target2): New ARM-only
2573         options.
2574
2575 2009-11-25  Doug Kwan  <dougkwan@google.com>
2576
2577         * arm.cc (Target_arm::may_use_thumb2_nop): New method definition.
2578         (Arm_relocate_functions::thumb_branch_common): New metod declaration.
2579         (Arm_relocate_functions::abs12, Arm_relocate_functions::abs16): Fix
2580         formatting.
2581         (Arm_relocate_functions::thm_call): Replace body with a call to
2582         Arm_relocate_functions::thumb_branch_common.
2583         (Arm_relocate_functions::thm_jump24,
2584         Arm_relocate_functions::thm_xpc22): New method definitions.
2585         (Arm_relocate_functions::thumb_branch_common): New method definition.
2586         (Reloc_stub::stbu_type_for_reloc): Fix incorrect uses of bit-wise-or
2587         operator.
2588         (Target_arm::Relocate::relocate): Adjust call to thm_call.
2589         Add code to handle R_ARM_THM_XPC22 and R_ARM_THM_JUMP24.
2590
2591 2009-11-24  Rafael Avila de Espindola  <espindola@google.com>
2592
2593         * Makefile.am: Build incremental-dump
2594         * Makefile.in: Regenerate.
2595         * incremental-dump.cc: New.
2596         * incremental.cc (Incremental_inputs_header_data,
2597         Incremental_inputs_entry_data): Move to incremental.h
2598         * incremental.h: (Incremental_inputs_header_data,
2599         Incremental_inputs_entry_data): Move from incremental.cc
2600
2601 2009-11-24  Rafael Avila de Espindola  <espindola@google.com>
2602
2603         * incremental.cc (Incremental_inputs_header,
2604         Incremental_inputs_header_write, Incremental_inputs_entry,
2605         Incremental_inputs_entry_write): Add a typedef with the data type.
2606
2607 2009-11-24  Rafael Avila de Espindola  <espindola@google.com>
2608
2609         * incremental.cc (Incremental_inputs_header,
2610         Incremental_inputs_header_write, Incremental_inputs_entry,
2611         Incremental_inputs_entry_write): Update comment about which
2612         type has the filed descriptions.
2613
2614 2009-11-15  Doug Kwan  <dougkwan@google.com>
2615
2616         * arm.cc (Target_arm::may_use_arm_nop): New method definition.
2617         (Arm_relocate_functions::arm_branch_common): Change method defintion
2618         in class definition to a method declaration and update list of formal
2619         parameters.
2620         (Arm_relocate_functions::plt32, Arm_relocate_functions::call,
2621         Arm_relocation_functions::jump24): Adjust call to
2622         Arm_relocate_functions::arm_branch_common.  Update list of formal
2623         parameters.
2624         (Arm_relocate_functions::xpc25): New method definition.
2625         (Arm_relocate_functions::arm_branch_common): Move method defintion
2626         out from class definition.  Use stubs for mode-switching and extending
2627         branch ranges.
2628         (Target_arm::Relocate::relocate): Handle weakly-undefined symbols
2629         specially.  Change code to enable use of stubs in ARM branches.
2630
2631 2009-11-10  Doug Kwan  <dougkwan@google.com>
2632
2633         * arm.cc (Arm_relobj::do_relocate_sections): Remove options parameter
2634         in method declaration.
2635         (Target_arm::relocate_stub): New method declaration.
2636         (Target_arm::default_target): Change to return a pointer instead of
2637         a const reference.
2638         (Reloc_stub::stub_type_for_reloc): Adjust for the change in
2639         Target_arm::default_target.
2640         (Arm_Relobj::do_relocate_sections): Remove options paramater in
2641         method definition.
2642         (Target_arm::relocate_section): Adjust view.
2643         (Target_arm::relocate_stub): New method definition.
2644
2645 2009-11-10  Doug Kwan  <dougkwan@google.com>
2646
2647         * i386.cc (Target_i386::do_calls_non_split): Add a cast to avoid
2648         a format warning.
2649         * incremental.cc (open_incremental_binary): Initialized local
2650         variables to avoid warnings.
2651         * object.cc (make_elf_object): Ditto.
2652         * x86_64.cc (Target_x86_64::do_calls_non_split): Add a cast to avoid
2653         a format warning.
2654  
2655 009-11-09  H.J. Lu  <hongjiu.lu@intel.com>
2656
2657         PR gold/10930
2658         * testsuite/plugin_test.c: Include "config.h".
2659
2660 2009-11-09  Doug Kwan  <dougkwan@google.com>
2661
2662         * arm.cc (Target_arm::fake_relnum_for_stubs): New constant.
2663         (arm_symbol_value): Remove.
2664         (Arm_relocate_functions::arm_branch_common,
2665         Arm_relocate_functions::abs8, Arm_relocate_functions::thm_abs5,
2666         Arm_relocate_functions::abs12, Arm_relocate_functions::abs16,
2667         Arm_relocate_functions::abs32, Arm_relocate_functions::rel32,
2668         Arm_relocate_functions::thm_call, Arm_relocate_functions::plt32,
2669         Arm_relocate_functions::call, Arm_relocate_functions::jump24,
2670         Arm_relocate_functions::prel31, Arm_relocate_functions::mov_abs_nc,
2671         Arm_relocate_functions::movt_abs, Arm_relocate_functions::movw_abs_nc,
2672         Arm_relocate_functions::thm_mobw_abs_nc,
2673         Arm_relocate_functions::thm_mov_abs,
2674         Arm_relocate_functions::movw_prel_nc,
2675         Arm_relocate_functions::thm_movt_abs,
2676         Arm_relocate_functions::movt_prel,
2677         Arm_relocate_functions::thm_movw_prel_nc,
2678         Arm_relocate_functions::thm_movt_prel): Adjust callers of the above.
2679         (Target_arm::Relocate::relocate): Only decompose address into two
2680         parts if relocation type uses the thumb-bit and pass the actual
2681         bit instead of a flag indicating that the thumb-bit is used.  Adjust
2682         calls to methods in Arm_relocate_functions for this change.
2683
2684 2009-11-08  Ian Lance Taylor  <iant@google.com>
2685
2686         PR 10925
2687         * reloc.cc: Instantiate
2688         Sized_relobj::initialize_input_to_output_maps and
2689         Sized_relobj:free_input_to_output_maps.
2690
2691 2009-11-06  Ian Lance Taylor  <iant@google.com>
2692
2693         PR 10876
2694         * defstd.cc (in_segment): Set only_if_ref true for "end".
2695
2696 2009-11-06  Doug Kwan  <dougkwan@google.com>
2697
2698         * arm.cc (class Reloc_stub): Correct a comment.
2699         (Target_arm::Target_arm): Initialize arm_input_section_map_.
2700         (Target_arm::scan_section_for_stubs): New method declaration.
2701         (Target_arm::do_make_elf_object, Target_arm::do_make_output_section):
2702         Change methods from private to protected.
2703         (Target_arm::do_may_relax): New method definition.
2704         (Target_arm::do_relax, Target_arm::group_sections,
2705         Target_arm::scan_reloc_for_stub,
2706         Target_arm::scan_reloc_section_for_stubs): New method declarations.
2707         (Target_arm::arm_input_section_map_): New data member declaration.
2708         (Target_arm::scan_reloc_for_stub,
2709         Target_arm::scan_reloc_section_for_stubs,
2710         Target_arm::scan_section_for_stubs, Target_arm::group_sections,
2711         Target_arm::do_relax): New method definitions.
2712
2713 2009-11-06  Mikolaj Zalewski  <mikolaj@google.com>
2714
2715         * configure.ac: Check for (struct stat)::st_mtim
2716         * fileread.cc (File_read::get_mtime): Use st_mtim if available.
2717         * config.in: Regenerate.
2718         * configure: Regenerate.
2719
2720 2009-11-05  Ian Lance Taylor  <iant@google.com>
2721
2722         PR 10910
2723         * output.cc (Output_segment::add_output_section): Add missing
2724         return statement.
2725
2726 2009-11-04  Ian Lance Taylor  <iant@google.com>
2727
2728         PR 10880
2729         * object.h (class Object): Add is_needed and set_is_needed
2730         methods.  Add is_needed_ field.  Make bool fields into bitfields.
2731         * symtab.cc (Symbol_table::set_dynsym_indexes): If a symbol is
2732         defined in a dynamic object and referenced by a regular object,
2733         set is_needed for the dynamic object.
2734         * layout.cc (Layout::finish_dynamic_section): Don't add DT_NEEDED
2735         if the file is marked with as_needed and it is not needed.
2736
2737 2009-11-04  Ian Lance Taylor  <iant@google.com>
2738
2739         PR 10887
2740         * arm.cc (Target_arm::do_finalize_sections): Don't add dynamic
2741         tags if data is discarded by linker script.
2742         * i386.cc (Target_i386::do_finalize_sections): Likewise.
2743         * powerpc.cc (Target_powerpc::do_finalize_sections): Likewise.
2744         * sparc.cc (Target_sparc::do_finalize_sections): Likewise.
2745         * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
2746
2747 2009-11-04  Ian Lance Taylor  <iant@google.com>
2748
2749         * layout.cc (Layout::get_output_section): Add is_interp and
2750         is_dynamic_linker_section parameters.  Change all callers.
2751         (Layout::choose_output_section): Likewise.
2752         (Layout::make_output_section): Likewise.
2753         (Layout::add_output_section_data): Add is_dynamic_linker_section
2754         parameter.  Change all callers.
2755         * layout.h (class Layout): Update declarations.
2756         * output.h (class Output_section): Add is_interp, set_is_interp,
2757         is_dynamic_linker_section, set_is_dynamic_linker_section methods.
2758         Add is_interp_, is_dynamic_linker_section_ fields.  Change
2759         generate_code_fills_at_write_ to a bitfield.
2760         * output.cc (Output_section::Output_sections): Initialize new
2761         fields.
2762         (Output_segment::add_output_section): Add do_sort parameter.
2763         Change all callers.
2764
2765 2009-11-03  Ian Lance Taylor  <iant@google.com>
2766
2767         PR 10860
2768         * options.h (class General_options): Add --warn-common.
2769         * resolve.cc (Symbol_table::resolve): Handle --warn-common when
2770         merging two common symbols.
2771         (Symbol_table::should_override): Handle --warn-common when merging
2772         a common symbol with a defined symbol.  Use report_resolve_problem
2773         for multiple definitions.
2774         (Symbol_table::report_resolve_problem): New function.
2775         * symtab.h (class Symbol_table): Declare report_resolve_problem.
2776
2777 2009-11-03  Doug Kwan  <dougkwan@google.com>
2778
2779         * arm.cc (Target_arm::Target_arm): Initialize stub_tables_ and
2780         stub_factory_.
2781         (Target_arm::stub_factory): New method definition.
2782         (Target_arm::new_arm_input_section,
2783         Target_arm::find_arm_input_section, Target_arm::new_stub_table,
2784         Target_arm::reloc_uses_thumb_bit): New method declarations.
2785         (Target_arm::Stub_table_list, Target_arm::Arm_input_section_map): 
2786         New type definitions.
2787         (Target_arm::stub_tables_, Target_arm::stub_factory_): New data
2788         member declarations.
2789         (Target_arm::reloc_uses_thumb_bit, Target_arm::new_arm_input_section,
2790         Target_arm::find_arm_input_section, Target_arm::new_stub_table):
2791         New method definitions.
2792
2793 2009-11-03  Ian Lance Taylor  <iant@google.com>
2794
2795         * options.h (class General_options): Add --warn_constructors.
2796
2797 2009-11-03  Ian Lance Taylor  <iant@google.com>
2798
2799         PR 10893
2800         * defstd.cc (in_section): Add entries for __rel_iplt_start,
2801         __rel_iplt_end, __rela_iplt_start, __rela_iplt_end, and __stack.
2802
2803 2009-11-03  Ian Lance Taylor  <iant@google.com>
2804
2805         PR 10895
2806         * po/Make-in ($(srcdir)/$(PACKAGE).pot): Pass -C and
2807         --msgid-bugs-address.
2808         (install-pdf): New target.
2809         (install-data_yes): Look up one directory to find mkinstalldirs.
2810
2811 2009-11-03  H.J. Lu  <hongjiu.lu@intel.com>
2812
2813         * po/Make-in (.po.gmo): Don't generate .gmo files in source
2814         tree.
2815
2816 2009-10-30  Doug Kwan  <dougkwan@google.com>
2817
2818         * arm.cc (Stub_addend_reader): Fix bug in previouls check-in.
2819
2820 2009-10-30  Doug Kwan  <dougkwan@google.com>
2821
2822         * arm.cc (Stub_addend_reader): New struct template definition
2823         and partial specializations.
2824         (Stub_addend_reader::operator()): New method definition for a
2825         partially specialized template.
2826
2827 2009-10-30  Doug Kwan  <dougkwan@google.com>
2828
2829         * arm.cc (Arm_relobj::processor_specific_flags): New method
2830         definition.
2831         (Arm_relobj::do_read_symbols): New method declaration.
2832         (Arm_relobj::processor_specific_flags_): New data member declaration.
2833         (Arm_dynobj): New class definition.
2834         (Target_arm::do_finalize_sections): Add input_objects parameter.
2835         (Target_arm::do_adjust_elf_header): New method declaration.
2836         (Target_arm::are_eabi_versions_compatible,
2837         (Target_arm::merge_processor_specific_flags): New method declaration.
2838         (Target_arm::do_make_elf_object): New overloaded method definitions
2839         and declaration.
2840         (Arm_relobj::do_read_symbols): New method definition.
2841         (Arm_dynobj::do_read_symbols): Ditto.
2842         (Target_arm::do_finalize_sections): Add input_objects parameters.
2843         Merge processor-specific flags from all input objects.
2844         (Target_arm::are_eabi_versions_compatible,
2845         Target_arm::merge_processor_specific_flags,
2846         Target_arm::do_adjust_elf_header, Target_arm::do_make_elf_object):
2847         New method definitions.
2848         * i386.cc (Target_i386::do_finalize_sections): Add unnamed
2849         Input_objects pointer type parameter.
2850         * layout.cc (Layout::finalize): Pass input objects to target's.
2851         finalize_sections function.
2852         * output.cc (Output_file_header::do_sized_write): Set ELF file
2853         header's processor-specific flags.
2854         * powerpc.cc (Target_powerpc::do_finalize_sections): Add unnamed
2855         Input_objects pointer type parameter.
2856         * sparc.cc (Target_sparc::do_finalize_sections): Same.
2857         * target.h (Input_objects): New forward class declaration.
2858         (Target::processor_specific_flags,
2859         Target::are_processor_specific_flags_sect): New method definitions.
2860         (Target::finalize_sections): Add input_objects parameter.
2861         (Target::Target): Initialize processor_specific_flags_ and
2862         are_processor_specific_flags_set_.
2863         (Target::do_finalize_sections): Add unnamed Input_objects pointer type
2864         parameter.
2865         (Target::set_processor_specific_flags): New method definition.
2866         (Target::processor_specific_flags_,
2867         Target::are_processor_specific_flags_set_): New data member
2868         declarations.
2869         * x86_64.cc (Target_x86_64::do_finalize_sections): Add unnamed
2870         Input_objects pointer type parameter.
2871
2872 2009-10-30  Doug Kwan  <dougkwan@google.com>
2873
2874         * arm.cc: Use Arm_address instead of elfcpp::Elf_types<32>::Elf_Addr.
2875
2876 2009-10-28  Ian Lance Taylor  <iant@google.com>
2877
2878         * object.h (class Relobj): Drop options parameter from
2879         gc_process_relocs, scan_relocs, relocate, do_gc_process_relocs,
2880         do_scan_relocs, do_relocate.  Change all callers.
2881         (class Sized_relobj): Drop options parameters from
2882         do_gc_process_relocs, do_scan_relocs, do_relocate,
2883         do_relocate_sections, relocate_sections, emit_relocs_scan,
2884         emit_relocs_scan_reltype.  Change all callers.
2885         (struct Relocate_info): Remove options field and all references to
2886         it.
2887         * reloc.h (class Read_relocs): Remove options constructor
2888         parameter and options_ field.  Change all callers.
2889         (class Gc_process_relocs, class Scan_relocs): Likewise.
2890         (class Relocate_task): Likewise.
2891         * target-reloc.h (scan_relocs): Remove options parameter.  Change
2892         all callers.
2893         (scan_relocatable_relocs): Likewise.
2894         * target.h (class Sized_target): Remove options parameter from
2895         gc_process_relocs, scan_relocs, scan_relocatable_relocs.  Change
2896         all callers.
2897         * gc.h (gc_process_relocs): Remove options parameter.  Change all
2898         callers.
2899         * arm.cc: Update functions to remove options parameters.
2900         * i386.cc: Likewise.
2901         * powerpc.cc: Likewise.
2902         * sparc.cc: Likewise.
2903         * x86_64.cc: Likewise.
2904         * testsuite/testfile.cc: Likewise.
2905
2906 2009-10-28  Doug Kwan  <dougkwan@google.com>
2907
2908         * arm.cc (Arm_relobj): New class definition.
2909         (Arm_relobj::scan_sections_for_stubs, 
2910         Arm_relobj::do_count_local_symbols, Arm_relobj::do_relocate_sections):
2911         New method definitions.
2912
2913 2009-10-28  Cary Coutant  <ccoutant@google.com>
2914
2915         * plugin.h (Plugin::Plugin): Initialize cleanup_done_.
2916         (Plugin::cleanup_done_): New member.
2917         (Plugin_manager::Plugin_manager): Remove cleanup_done_.
2918         (Plugin_manager::cleanup_done_): Remove.
2919         (Plugin_manager::add_input_file): Edit error message.
2920         * plugin.cc (Plugin::cleanup): Test and set cleanup_done_.
2921         (Plugin_manager::cleanup): Remove use of cleanup_done_.
2922
2923 2009-10-27  Mikolaj Zalewski  <mikolajz@google.com>
2924
2925         * fileread.cc: (File_read::View::~View): Use the new
2926         data_ownership_ filed.
2927         (File_read::~File_read): Dispose the new whole_file_view_.
2928         (File_read::open): Mmap the whole file if needed.
2929         (File_read::open): Use whole_file_view_ instead of contents_.
2930         (File_read::find_view): Use whole_file_view_ if applicable.
2931         (File_read::do_read): Use whole_file_view_ instead of contents_.
2932         (File_read::make_view): Use whole_file_view_ instead of contents_,
2933         update File_read::View::View call.
2934         (File_read::find_or_make_view): Update File_read::View::View
2935         call.
2936         * fileread.h: (File_read::File_read): Initialize whole_file_view_,
2937         remove contents_
2938         (File_read::View::Data_ownership): New enum.
2939         (File_read::View::View): Replace bool mapped_ with Data_ownership
2940         argument.
2941         (File_read::View::mapped_): Remove (replaced by data_ownership_).
2942         (File_read::View::data_ownership_): New field.
2943         (File_read::contents_): Remove (replaced by whole_file_view_).
2944         (File_read::whole_file_view_): New field.
2945         * options.h (class General_options): Add --keep-files-mapped.
2946
2947 2009-10-27  Cary Coutant  <ccoutant@google.com>
2948
2949         * symtab.cc (add_from_pluginobj): Pass correct value for is_ordinary.
2950         * testsuite/Makefile.am (plugin_test_5): New test case.
2951         * testsuite/Makefile.in: Regenerate.
2952
2953 2009-10-25  Doug Kwan  <dougkwan@google.com>
2954
2955         * object.h (Sized_relobj::View_size, Sized_relobj::Views): Change
2956         from private to protected to allow access by child class.
2957         (Sized_relobj::do_relocate_sections): New method declaration.
2958         (Sized_relobj::relocate_sections): Virtualize.
2959         * reloc.cc (Sized_relobj::do_relocate_sections): Rename from 
2960         Sized_relobj::relocate_sections.  Instantiate template explicitly
2961         for different target sizes and endianity.
2962
2963 2009-10-24  Doug Kwan  <dougkwan@google.com>
2964
2965         * arm.cc (Arm_output_section, Arm_relobj): Forward class declarations.
2966         (Arm_input_section::as_arm_input_section): New method.
2967         (Arm_output_section): New class definition.
2968         (Arm_output_section::create_stub_group,
2969         Arm_output_section::group_sections): New method definitions.
2970
2971 2009-10-22  Doug Kwan  <dougkwan@google.com>
2972
2973         * arm.cc (Arm_input_section): New class definition.
2974         (Arm_input_section::init, Arm_input_section:do_write,
2975         Arm_input_section::set_final_data_size,
2976         Arm_input_section::do_reset_address_and_file_offset): New method
2977         definitions.
2978
2979 2009-10-21  Doug Kwan  <dougkwan@google.com>
2980
2981         * arm.cc (Stub_table, Arm_input_section): New forward class
2982         declarations.
2983         (Stub_table): New class defintion.
2984         (Stub_table::add_reloc_stub, Stub_table::relocate_stubs
2985         Stub_table::do_reset_address_and_file_offset, Stub_table::do_write):
2986         New method definition.
2987
2988 2009-10-21  Doug Kwan  <dougkwan@google.com>
2989
2990         * arm.cc: Update copyright comments.
2991         (Target_arm): New forward class template declaration.
2992         (Arm_address): New type.
2993         (ARM_MAX_FWD_BRANCH_OFFSET, ARM_MAX_BWD_BRANCH_OFFSET,
2994         THM_MAX_FWD_BRANCH_OFFSET, THM_MAX_BWD_BRANCH_OFFSET,
2995         THM2_MAX_FWD_BRANCH_OFFSET, THM2_MAX_BWD_BRANCH_OFFSET): New
2996         constants.
2997         (Insn_template): Same.
2998         (DEF_STUBS): New macro.
2999         (Stub_type): New enum type.
3000         (Stub_template): New class definition.
3001         (Stub): Same.
3002         (Reloc_stub): Same.
3003         (Stub_factory): Same.
3004         (Target_arm::Target_arm): Initialize may_use_blx_ and
3005         should_force_pic_veneer_.
3006         (Target_arm::may_use_blx, Target_arm::set_may_use_blx,
3007         Target_arm::should_force_pic_veneer,
3008         Target_arm::set_should_force_pic_veneer, Target_arm::using_thumb2,
3009         Target_arm::using_thumb_only, Target_arm:;default_target): New
3010         method defintions.
3011         (Target_arm::may_use_blx_, Target_arm::should_force_pic_veneer_):
3012         New data member declarations.
3013         (Insn_template::size, Insn_template::alignment): New method defintions.
3014         (Stub_template::Stub_template): New method definition.
3015         (Reloc_stub::Key::name, Reloc_stub::stub_type_for_reloc,
3016         Reloc_stub::do_fixed_endian_write, Reloc_stub::do_write): Same.
3017         (Stub_factory::Stub_factory): New method definition.
3018         * gold.h (string_hash): New template.
3019         * output.h (Input_section_specifier::hash_value): Use
3020         gold::string_hash.
3021         (Input_section_specifier::string_hash): Remove.
3022         * stringpool.cc (Stringpool_template::string_hash): Use
3023         gold::string_hash.
3024
3025 2009-10-20  Doug Kwan  <dougkwan@google.com>
3026
3027         * object.cc (Sized_relobj::do_finalize_local_symbols): Handle section
3028         symbols of relaxed input sections.
3029         * output.h (Output_section::find_relaxed_input_section): Make
3030         method public.
3031
3032 2009-10-16  Doug Kwan  <dougkwan@google.com>
3033
3034         * dynobj.cc (Versions::Versions): Initialize version_script_.
3035         Only insert base version symbol definition for a shared object
3036         if version script defines any version versions.
3037         (Versions::define_base_version): New method definition.
3038         (Versions::add_def): Check that base version is not needed.
3039         (Versions::add_need): Define base version lazily.
3040         * dynobj.h (Versions::define_base_version): New method declaration.
3041         (Versions::needs_base_version_): New data member declaration.
3042         * testsuite/Makefile.am (check_SCRIPTS): Add no_version_test.sh
3043         (check_DATA): Add no_version_test.stdout.
3044         (libno_version_test.so, no_version_test.o no_version_test.stdout):
3045         New make rules.
3046         * testsuite/Makefile.in: Regenerate.
3047         * testsuite/no_version_test.c: New file.
3048         * testsuite/no_version_test.sh: Ditto.
3049
3050 2009-10-16  Doug Kwan  <dougkwan@google.com>
3051
3052         * expression.cc (class Segment_start_expression): New class definition.
3053         (Segment_start_expression::value): New method definition.
3054         (script_exp_function_segment_start): Return a new
3055         Segment_start_expression.
3056         * gold/script-c.h (script_saw_segment_start_expression): New function
3057         prototype.
3058         * script-sections.cc (Script_sections::Script_sections): Initialize
3059         SAW_SEGMENT_START_EXPRESSION_ to false.
3060         (Script_sections::set_section_addresses): Use -Ttext, -Tdata
3061         and -Tbbs options to specify section addresses if given in
3062         command line and no SEGMENT_START expression is seen in a script.
3063         * script-sections.h (Script_sections::saw_segment_start_expression,
3064         Script_sections::set_saw_segment_start_expression): New method
3065         definition.
3066         (Script_sections::saw_segment_start_expression_): New data member
3067         declaration.
3068         * script.cc (script_saw_segment_start_expression): New function.
3069         * yyscript.y (SEGMENT_START): Call script_saw_segment_start_expression.
3070         * testsuite/Makefile.am (check_SCRIPTS): Add script_test_6.sh,
3071         script_test_7.sh and script_test_8.sh.
3072         (check_DATA): Add script_test_6.stdout, script_test_7.stdout and
3073         script_test_8.stdout.
3074         (MOSTLYCLEANFILES): Add script_test_6, script_test_7 and script_test_8.
3075         (script_test_6, script_test_6.stdout, script_test_7,
3076         script_test_7.stdout, script_test_8, script_test_8.stdout): New rules.
3077         * Makefile.in: Regenerate.
3078         * testsuite/script_test_6.sh: New file.
3079         * testsuite/script_test_6.t: Same.
3080         * testsuite/script_test_7.sh: Same.
3081         * testsuite/script_test_7.t: Same.
3082         * testsuite/script_test_8.sh: Same.
3083
3084 2009-10-16  Doug Kwan  <dougkwan@google.com>
3085
3086         * output.cc (Output_segment::set_section_list_address): Cast
3087         expressions to unsigned long long type to avoid format warnings.
3088
3089 2009-10-15  Ian Lance Taylor  <iant@google.com>
3090
3091         * script.cc (Script_options::add_symbol_assignment): Always add a
3092         dot assignment to script_sections_.
3093         * script-sections.cc (Script_sections::add_dot_assignment):
3094         Initialize if necessary.
3095
3096         * layout.cc (Layout::relaxation_loop_body): Don't crash if we see
3097         program headers with no load segment if there is a linker script.
3098
3099         * layout.cc (Layout::set_segment_offsets): Align the file offset
3100         to the segment aligment for -N or -n with no load segment.
3101         * output.cc (Output_segment::add_output_section): Don't crash if
3102         the first section is a TLS section.
3103         (Output_segment::set_section_list_addresses): Print an error
3104         message if the address moves backward in a linker script.
3105         * script-sections.cc
3106         (Output_section_element_input::set_section_addresses): Don't
3107         increase *dot_value for a SHF_TLS/SHT_NOBITS section.
3108         (Orphan_output_section::set_section_addresses): Likewise.
3109
3110 2009-10-15  Doug Kwan  <dougkwan@google.com>
3111
3112         * layout.cc (Layout::finish_dynamic_section): Generate tags
3113         DT_FINI_ARRAY, DT_FINI_ARRAYSZ, DT_INIT_ARRAY, DT_INIT_ARRAYSZ,
3114         DT_PREINIT_ARRAY, DT_PREINIT_ARRAYSZ as needed. If -Bsymbolic is
3115         used, add DT_SYMBOLIC and set DF_SYMBOLIC in DT_FLAGS.
3116
3117 2009-10-14  Ian Lance Taylor  <iant@google.com>
3118
3119         * object.h (class Relocate_info): Add reloc_shdr and data_shdr
3120         fields.
3121         * object.cc (Sized_relobj::relocate_sections): Set reloc_shdr and
3122         data_shdr fields of relinfo.
3123         * i386.cc (class Target_i386::Relocate): Remove ldo_addrs_ field.
3124         (Target_i386::Relocate::relocate_tls): Don't call fix_up_ldo.  For
3125         R_386_TLS_LDO_32, adjust based on section flags.
3126         (Target_i386::Relocate::fix_up_ldo): Remove.
3127
3128 2009-10-13  Ian Lance Taylor  <iant@google.com>
3129
3130         Add support for -pie.
3131         * options.h (class General_options): Add -pie and
3132         --pic-executable.
3133         (General_options::output_is_position_independent): Test -pie.
3134         (General_options::output_is_executable): Return true if not shared
3135         and not relocatable.
3136         (General_options::output_is_pie): Remove.
3137         * options.cc (General_options::finalize): Reject incompatible uses
3138         of -pie.
3139         * gold.cc (queue_middle_tasks): A -pie link is not static.
3140         * symtab.h (Symbol::needs_plt_entry): Return false if -pie.
3141         * symtab.cc (Symbol::final_value_is_known): Return false if
3142         output_is_position_independent.
3143         * layout.cc (Layout::set_segment_offsets): Start at address 0 if
3144         output_is_position_independent.
3145         * output.cc (Output_file_header::do_sized_write): Use ET_DYN if
3146         output_is_position_independent.
3147         * i386.cc (Output_data_plt_i386::do_write): Use the PIC PLT if
3148         output_is_position_independent.
3149         * testsuite/Makefile.am (check_PROGRAMS): Add basic_pie_test and
3150         two_file_pie_test.
3151         (basic_pie_test.o, basic_pie_test): New targets.
3152         (two_file_test_1_pie.o, two_file_test_1b_pie.o): New targets.
3153         (two_file_test_2_pie.o, two_file_test_main_pie.o): New targets.
3154         (two_file_pie_test): New target.
3155         * testsuite/Makefile.in: Rebuild.
3156         * README: Remove note saying that -pie is not supported.
3157
3158 2009-10-13  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
3159
3160         * options.h (class General_options): Add -init and -fini.
3161         * layout.cc (Layout::finish_dynamic_section): Emit
3162         given init and fini functions.
3163
3164 2009-10-13  Sriraman Tallam  <tmsriram@google.com>
3165
3166         * gc.h (gc_process_relocs): Check if icf is enabled using new
3167         function.
3168         * gold.cc (queue_initial_tasks): Likewise.
3169         (queue_middle_tasks): Likewise.
3170         * object.cc (do_layout): Likewise.
3171         * symtab.cc (is_section_folded): Likewise.
3172         * main.cc (main): Likewise.
3173         * reloc.cc (Read_relocs::run): Likewise.
3174         (Sized_relobj::do_scan_relocs): Likewise.
3175         * icf.cc (is_function_ctor_or_dtor): New function.
3176         (Icf::find_identical_sections): Check if function is ctor or dtor when
3177         safe icf is chosen.
3178         * options.h (General_options::icf): Change option to be an enum.
3179         (Icf_status): New enum.
3180         (icf_enabled): New method.
3181         (icf_safe_folding): New method.
3182         (set_icf_status): New method.
3183         (icf_status_): New variable.
3184         * (options.cc) (General_options::finalize): Set icf_status_.
3185         * testsuite/Makefile.am: Add commands to build icf_safe_test. Modify
3186         icf_test and icf_keep_unique_test to use the --icf enum flag.
3187         * testsuite/icf_safe_test.sh: New file.
3188         * testsuite/icf_safe_test.cc: New file. 
3189
3190 2009-10-12  Sriraman Tallam  <tmsriram@google.com>
3191
3192         * symtab.h: Check for GOLD_SYMTAB_H before header includes. Remove
3193         includes to gc.h and icf.h.
3194         * arm.cc: Include gc.h.
3195         * gold.cc: Likewise.
3196         * i386.cc: Likewise.
3197         * powerpc.cc: Likewise.
3198         * sparc.cc: Likewise.
3199         * x86_64.cc: Likewise.
3200         * gc.h: Include icf.h.
3201
3202 2009-10-11  Ian Lance Taylor  <iant@google.com>
3203
3204         * plugin.cc: Include "gold.h" before other header files.
3205
3206 2009-10-10  Chris Demetriou  <cgd@google.com>
3207
3208         * options.h (Input_file_argument::Input_file_type): New enum.
3209         (Input_file_argument::is_lib_): Replace with...
3210         (Input_file_argument::type_): New member.
3211         (Input_file_argument::Input_file_argument): Take Input_file_type
3212         'type' rather than boolean 'is_lib' as second argument.
3213         (Input_file_argument::is_lib): Use type_.
3214         (Input_file_argument::is_searched_file): New function.
3215         (Input_file_argument::may_need_search): Handle is_searched_file.
3216         * options.cc (General_options::parse_library): Support -l:filename.
3217         (General_options::parse_just_symbols): Update for Input_file_argument
3218         changes.
3219         (Command_line::process): Likewise.
3220         * archive.cc (Archive::get_file_and_offset): Likewise.
3221         * plugin.cc (Plugin_manager::release_input_file): Likewise.
3222         * script.cc (read_script_file, script_add_file): Likewise.
3223         * fileread.cc (Input_file::Input_file): Likewise.
3224         (Input_file::will_search_for): Handle is_searched_file.
3225         (Input_file::open): Likewise.
3226         * readsyms.cc (Read_symbols::get_name): Likewise.
3227         * testsuite/Makefile.am (searched_file_test): New test.
3228         * testsuite/Makefile.in: Regenerate.
3229         * testsuite/searched_file_test.cc: New file.
3230         * testsuite/searched_file_test_lib.cc: New file.
3231
3232 2009-10-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3233             Ian Lance Taylor  <iant@google.com>
3234
3235         * descriptor.cc: Include <cstdio> and "binary-io.h".
3236         (Descriptors::open): Open the files in binary mode always.
3237         * script.cc (Lex::get_token): Treat \r as whitespace.
3238
3239 2009-10-09  Ian Lance Taylor  <iant@google.com>
3240
3241         * testsuite/retain_symbols_file_test.sh: Don't test for __tcf_0.
3242
3243 2009-10-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3244             Ian Lance Taylor  <iant@google.com>
3245
3246         * configure.ac: Check for readv function also.
3247         * fileread.cc (readv): Define if not HAVE_READV.
3248         * fileread.h (File_read:: max_readv_entries): Set to 1 if readv
3249         does not exist.
3250         * config.in: Regenerate.
3251         * configure: Regenerate.
3252
3253 2009-10-09  Doug Kwan  <dougkwan@google.com>
3254
3255         * layout.cc (Layout::make_output_section): Call target hook to make
3256         ordinary output section.
3257         (Layout::finalize): Adjust parameter list of call the
3258         Target::may_relax().
3259         * layout.h (class Layout::section_list): New method.
3260         * merge.h (Output_merge_base::entsize): Change visibility to public.
3261         (Output_merge_base::is_string, Output_merge_base::do_is_string):
3262         New methods.
3263         (Output_merge_string::do_is_string): New method.
3264         * object.cc (Sized_relobj::do_setup): renamed from
3265         Sized_relobj::set_up.
3266         * object.h (Sized_relobj::adjust_shndx,
3267         Sized_relobj::initializ_input_to_output_maps,
3268         Sized_relobj::free_input_to_output_maps): Change visibilities to
3269         protected.
3270         (Sized_relobj::setup): Virtualize.
3271         (Sized_relobj::do_setup): New method declaration.
3272         (Sized_relobj::invalidate_section_offset,
3273         Sized_relobj::do_invalidate_section_offset): New method decfinitions.
3274         (Sized_relobj::elf_file, Sized_relobj::local_values): New methods.
3275         * options.cc (parse_int): New function.
3276         * options.h (parse_int): New declaration.
3277         (DEFINE_int): New macro.
3278         (stub_group_size): New option.
3279         * output.cc (Output_section::Output_section): Initialize memebers
3280         merge_section_map_, merge_section_by_properties_map_,
3281         relaxed_input_section_map_, is_relaxed_input_section_map_valid_.
3282         (Output_section::add_input_section): Handled deferred code-fill
3283         generation and remove an old comment.
3284         (Output_section::add_relaxed_input_section): New method definition.
3285         (Output_section::add_merge_input_section): Use merge section by
3286         properties map to speed to search.  Update merge section maps
3287         as appropriate.
3288         (Output_section::build_relaxation_map): New method definition.
3289         (Output_section::convert_input_sections_in_list_to_relaxed_sections):
3290         Same.
3291         (Output_section::relax_input_section): Renamed to
3292         Output_section::convert_input_sections_to_relaxed_sections and change
3293         interface to take a vector of pointers to relaxed sections.
3294         (Output_section::find_merge_section,
3295         Output_section::find_relaxed_input_section): New method definitions.
3296         (Output_section::is_input_address_mapped,
3297         Output_section::output_offset, Output_section::output_address):
3298         Use output section data maps to speed up searching.
3299         (Output_section::find_starting_output_address): Add comments.
3300         (Output_section::do_write,
3301         Output_section::write_to_postprocessing_buffer): Do code-fill
3302         generation as appropriate.
3303         (Output_section::get_input_sections): Invalidate relaxed input section
3304         map.
3305         (Output_section::restore_states): Adjust type of checkpoint .
3306         Invalidate relaxed input section map.
3307         * output.h (Output_merge_base): New class declaration.
3308         (Input_section_specifier): New class defintion.
3309         (class Output_relaxed_input_section) Change base class to
3310         Output_section_data_build.
3311         (Output_relaxed_input_section::Output_relaxed_input_section): Adjust
3312         base class initializer.
3313         (Output_section::add_relaxed_input_section): New method declaration.
3314         (Output_section::Input_section): Change visibility to protected.
3315         (Output_section::Input_section::relobj,
3316         Output_section::Input_section::shndx): Handle relaxed input sections.
3317         Output_section::input_sections) Change visibility to protected.  Also
3318         define overload to return a non-const pointer.
3319         (Output_section::Merge_section_properties): New class defintion.
3320         (Output_section::Merge_section_by_properties_map,
3321         Output_section::Output_section_data_by_input_section_map,
3322         Output_section::Relaxation_map): New types.
3323         (Output_section::relax_input_section): Rename method to
3324         Output_section::convert_input_sections_to_relaxed_sections and change
3325         interface to take a vector of relaxed section pointers.
3326         (Output_section::find_merge_section,
3327         Output_section::find_relaxed_input_section,
3328         Output_section::build_relaxation_map,
3329         Output_section::convert_input_sections_in_list_to_relaxed_sections):
3330         New method declarations.
3331         (Output_section::merge_section_map_
3332         Output_section::merge_section_by_properties_map_,
3333         Output_section::relaxed_input_section_map_,
3334         Output_section::is_relaxed_input_section_map_valid_,
3335         Output_section::generate_code_fills_at_write_): New data members.
3336         * script-sections.cc
3337         (Output_section_element_input::set_section_addresses): Call
3338         current_data_size and addralign methods of relaxed input sections.
3339         (Orphan_output_section::set_section_addresses): Call current_data_size
3340         and addralign methods of relaxed input sections.
3341         * symtab.cc (Symbol_table::compute_final_value): Extract template
3342         from the body of Symbol_table::sized_finalize_symbol.
3343         (Symbol_table::sized_finalized_symbol): Call
3344         Symbol_table::compute_final_value.
3345         * symtab.h (Symbol_table::Compute_final_value_status): New enum type.
3346         (Symbol_table::compute_final_value): New templated method declaration.
3347         * target.cc (Target::do_make_output_section): New method defintion.
3348         * target.h (Target::make_output_section): New method declaration.
3349         (Target::relax): Add more parameters for input objects, symbol table
3350         and layout.  Adjust call to do_relax.
3351         (Target::do_make_output_section): New method declaration.
3352         (Target::do_relax): Add parameters for input objects, symbol table
3353         and layout.
3354
3355 2009-10-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3356
3357         * pread.c: Include stdio.h.
3358
3359 2009-10-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3360
3361         * plugin.cc: Don't include dlfcn.h when ENABLE_PLUGINS is not
3362         defined.
3363
3364 2009-10-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3365
3366         * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
3367         Change read_shndx type to unsigned int.
3368         (Sized_dwarf_line_info::read_lines): Change shndx type to unsigned
3369         int.
3370         (Sized_dwarf_line_info::read_line_mappings): Likewise.
3371         * dwarf_reader.h (Sized_dwarf_line_info::Sized_dwarf_line_info):
3372         Change read_shndx type to unsigned int.
3373         (Sized_dwarf_line_info::read_lines): Change shndx type to unsigned
3374         int.
3375         (Sized_dwarf_line_info::read_line_mappings): Likewise.
3376         * layout.cc (Layout::create_symtab_sections): Cast the result of
3377         local_symcount * symsize to off_t in the gold_assert.
3378
3379 2009-10-09  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
3380
3381         * arm.cc (Target_arm::relocate::reloc_is_non_pic): Return true for
3382         R_ARM_THM_ABS5, R_ARM_ABS8, R_ARM_ABS12, R_ARM_ABS16,
3383         R_ARM_BASE_ABS.
3384         (Arm_relocate_functions::abs8): Remove has_thumb_bit parameter.
3385         (Arm_relocate_functions::thm_abs5): New function.
3386         (Arm_relocate_functions::abs12): New function.
3387         (Arm_relocate_functions::abs16): New function.
3388         (Arm_relocate_functions::base_abs): New function.
3389         (Scan::check_non_pic): Handle R_ARM_ABS32_NOI.
3390         (Scan::local): Remove special handling of R_ARM_ABS8.  Handle
3391         R_ARM_ABS32_NOI, R_ARM_THM_ABS5, R_ARM_ABS12, R_ARM_ABS16, and
3392         R_ARM_BASE_ABS.
3393         (Scan::global): Likewise.
3394         (Relocate::relocate): Handle R_ARM_ABS12, R_ARM_ABS16,
3395         R_ARM_ABS32_NOI, R_ARM_THM_ABS5, and R_ARM_BASE_ABS.
3396         (Relocatable_size_for_reloc::get_size_for_reloc): Handle
3397         R_ARM_ABS16, R_ARM_THM_ABS5, R_ARM_ABS32_NOI, R_ARM_ABS12, and
3398         R_ARM_BASE_ABS.
3399
3400 2009-10-09  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
3401
3402         * arm.cc (Arm_relocate_functions::movw_prel_nc): New function.
3403         (Arm_relocate_functions::movt_prel): New function.
3404         (Arm_relocate_functions::thm_movw_prel_nc): New function.
3405         (Arm_relocate_functions::thm_movt_prel): New function.
3406         (Scan::local): Handle R_ARM_MOVW_PREL_NC, R_ARM_MOVT_PREL,
3407         R_ARM_THM_MOVW_PREL_NC, and R_ARM_THM_MOVT_PREL.
3408         (Scan::global, Relocate::relocate): Likewise.
3409         (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
3410
3411 2009-10-09  Mikolaj Zalewski  <mikolajz@google.com>
3412
3413         * gold.cc: (queue_initial_tasks): Pass incremental_inputs to
3414         Incremental_checker.
3415         * incremental.cc: (INCREMENTAL_LINK_VERSION): Change type to
3416         unsigned int.
3417         (class Incremental_inputs_header): New class.
3418         (Incremental_inputs_header_writer): Edit comment.
3419         (Incremental_inputs_entry): New class.
3420         (Incremental_inputs_entry_writer): Edit comment.
3421         (Sized_incremental_binary::do_find_incremental_inputs_section):
3422         Add *strtab_shndx parameter, fill it.
3423         (Sized_incremental_binary::do_check_inputs): New method.
3424         (Incremental_checker::can_incrementally_link_output_file): Use
3425         Sized_incremental_binary::check_inputs.
3426         (Incremental_inputs::report_command_line): Save command line in
3427         command_line_.
3428         * incremental.h:
3429         (Incremental_binary::find_incremental_inputs_section): New
3430         method.
3431         (Incremental_binary::do_find_incremental_inputs_section): Add
3432         strtab_shndx parameter.
3433         (Incremental_binary::do_check_inputs): New pure virtual method.
3434         (Sized_incremental_binary::do_check_inputs): Declare.
3435         (Incremental_checker::Incremental_checker): Add incremental_inputs
3436         parameter, use it to initialize incremental_inputs_.
3437         (Incremental_checker::incremental_inputs_): New field.
3438         (Incremental_checker::command_line): New method.
3439         (Incremental_checker::inputs): New method.
3440         (Incremental_checker::command_line_): New field.
3441
3442 2009-10-09  Mikolaj Zalewski  <mikolajz@google.com>
3443
3444         * incremental.cc: Include <cstdarg> and "target-select.h".
3445         (vexplain_no_incremental): New function.
3446         (explain_no_incremental): New function.
3447         (Incremental_binary::error): New method.
3448         (Sized_incremental_binary::do_find_incremental_inputs_section): New
3449         method.
3450         (make_sized_incremental_binary): New function.
3451         (open_incremental_binary): New function.
3452         (can_incrementally_link_file): Add checks if output is ELF and has
3453         inputs section.
3454         * incremental.h: Include "elfcpp_file.h" and "output.h".
3455         (Incremental_binary): New class.
3456         (Sized_incremental_binary): New class.
3457         (open_incremental_binary): Declare.
3458         * object.cc (is_elf_object): Use
3459         elfcpp::Elf_recognizer::is_elf_file.
3460         (make_elf_object): Use elfcpp::Elf_recognizer::is_valid_header.
3461         * output.h (Output_file::filesize): New method.
3462
3463 2009-10-07  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
3464
3465         * arm.cc (Arm_relocate_functions::extract_arm_movw_movt_addend):
3466         New function.
3467         (Arm_relocate_functions::insert_val_arm_movw_movt): New function.
3468         (Arm_relocate_functions::extract_thumb_movw_movt_addend): New
3469         function.
3470         (Arm_relocate_functions::insert_val_thumb_movw_movt): New
3471         function.
3472         (Arm_relocate_functions::movw_abs_nc): New function.
3473         (Arm_relocate_functions::movt_abs): New function.
3474         (Arm_relocate_functions::thm_movw_abs_nc): New function.
3475         (Arm_relocate_functions::thm_movt_abs): New function.
3476         (Scan::local): Handle R_ARM_MOVW_ABS_NC, R_ARM_MOVT_ABS,
3477         R_ARM_THM_MOVW_ABS_NC, R_ARM_THM_MOVT_ABS.
3478         (Scan::global): Likewise.
3479         (Relocate::relocate): Likewise.
3480         (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
3481
3482 2009-10-07  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
3483
3484         * arm.cc (Arm_relocate_functions::got_prel) New function.
3485         (Scan::local, Scan::global): Handle R_ARM_GOT_PREL.
3486         (Relocate::relocate): Likewise.
3487         (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
3488
3489 2009-10-06  Ian Lance Taylor  <iant@google.com>
3490
3491         * options.h (class General_options): Define
3492         split_stack_adjust_size parameter.
3493         * object.h (class Object): Add uses_split_stack_ and
3494         has_no_split_stack_ fields.  Add uses_split_stack and
3495         has_no_split_stack accessor functions.  Declare
3496         handle_split_stack_section.
3497         (class Reloc_symbol_changes): Define.
3498         (class Sized_relobj): Define Function_offsets.  Declare
3499         split_stack_adjust, split_stack_adjust_reltype, and
3500         find_functions.
3501         * object.cc (Object::handle_split_stack_section): New function.
3502         (Sized_relobj::do_layout): Call handle_split_stack_section.
3503         * dynobj.cc (Sized_dynobj::do_layout): Call
3504         handle_split_stack_section.
3505         * reloc.cc (Sized_relobj::relocate_sections): Call
3506         split_stack_adjust for executable sections in split_stack
3507         objects.  Pass reloc_map to relocate_section.
3508         (Sized_relobj::split_stack_adjust): New function.
3509         (Sized_relobj::split_stack_adjust_reltype): New function.
3510         (Sized_relobj::find_functions): New function.
3511         * target-reloc.h: Include "object.h".
3512         (relocate_section): Add reloc_symbol_changes parameter.  Change
3513         all callers.
3514         * target.h (class Target): Add calls_non_split method.  Declare
3515         do_calls_non_split virtual method.  Declare match_view and
3516         set_view_to_nop.
3517         * target.cc: Include "elfcpp.h".
3518         (Target::do_calls_non_split): New function.
3519         (Target::match_view): New function.
3520         (Target::set_view_to_nop): New function.
3521         * gold.cc (queue_middle_tasks): Give an error if mixing
3522         split-stack and non-split-stack objects with -r.
3523         * i386.cc (Target_i386::relocate_section): Add
3524         reloc_symbol_changes parameter.
3525         (Target_i386::do_calls_non_split): New function.
3526         * x86_64.cc (Target_x86_64::relocate_section): Add
3527         reloc_symbol_changes parameter.
3528         (Target_x86_64::do_calls_non_split): New function.
3529         * arm.cc (Target_arm::relocate_section): Add reloc_symbol_changes
3530         parameter.
3531         * powerpc.cc (Target_powerpc::relocate_section): Add
3532         reloc_symbol_changes parameter.
3533         * sparc.cc (Target_sparc::relocate_section): Add
3534         reloc_symbol_changes parameter.
3535         * configure.ac: Call AM_CONDITIONAL for the default target.
3536         * configure: Rebuild.
3537         * testsuite/Makefile.am (TEST_AS): New variable.
3538         (check_SCRIPTS): Add split_i386.sh and split_x86_64.sh.
3539         (check_DATA): Add split_i386 and split_x86_64 files.
3540         (SPLIT_DEFSYMS): Define.
3541         (split_i386_[1234n].o): New targets.
3542         (split_i386_[124]): New targets.
3543         (split_i386_[1234r].stdout): New targets.
3544         (split_x86_64_[1234n].o): New targets.
3545         (split_x86_64_[124]): New targets.
3546         (split_x86_64_[1234r].stdout): New targets.
3547         (MOSTLYCLEANFILES): Add new executables.
3548         * testsuite/split_i386.sh: New file.
3549         * testsuite/split_x86_64.sh: New file.
3550         * testsuite/split_i386_1.s: New file.
3551         * testsuite/split_i386_2.s: New file.
3552         * testsuite/split_i386_3.s: New file.
3553         * testsuite/split_i386_4.s: New file.
3554         * testsuite/split_i386_n.s: New file.
3555         * testsuite/split_x86_64_1.s: New file.
3556         * testsuite/split_x86_64_2.s: New file.
3557         * testsuite/split_x86_64_3.s: New file.
3558         * testsuite/split_x86_64_4.s: New file.
3559         * testsuite/split_x86_64_n.s: New file.
3560         * testsuite/testfile.cc (Target_test): Update relocation_section
3561         function.
3562         * testsuite/Makefile.in: Rebuild.
3563
3564 2009-10-06  Ian Lance Taylor  <iant@google.com>
3565
3566         * i386.cc (class Target_i386::Relocate): Add ldo_addrs_ field.
3567         (Target_i386::Relocate::relocate_tls): Call fix_up_ldo before
3568         changing local_dynamic_type_ from LOCAL_DYNAMIC_NONE.  When
3569         handling R_386_TLS_LDO_32, if local_dynamic_type_ is NONE, push
3570         the address on ldo_addrs_.
3571         (Target_i386::Relocate::fix_up_ldo): New function.
3572
3573 2009-10-06   Rafael Espindola  <espindola@google.com>
3574
3575         * plugin.cc (add_input_library): New.
3576         (Plugin::load): Add add_input_library to tv.
3577         (Plugin_manager::add_input_file): Add the is_lib argument.
3578         (add_input_file): Update call to Plugin_manager::add_input_file.
3579         (add_input_library): New.
3580         * plugin.h (Plugin_manager::add_input_file): Add the is_lib argument.
3581
3582 2009-09-30  Doug Kwan  <dougkwan@google.com>
3583
3584         * arm.cc (Target_arm::may_need_copy_reloc): Check for THUMB function
3585         symbol and call Symbol::may_need_copy_reloc to determine if
3586         a copy reloc is needed.
3587         * copy-relocs.cc (Copy_relocs::need_copy_reloc): Return false if -z
3588         nocopyreloc is given in command line.
3589         (Copy_relocs::emit_copy_reloc): Assert that -z nocopyreloc is not
3590         given in command line.
3591         * i386.cc (Target_i386::may_need_copy_reloc): Remove.
3592         (Target_i386::Scan::global): Use Symbol::may_need_copy_reloc instead
3593         of the removed Target_i386::may_need_copy_reloc.
3594         * options.h (copyreloc): New option with default value false.
3595         * powerpc.cc (Target_powerpc::may_need_copy_reloc): Remove.
3596         (Target_powerpc::Scan::global): Use Symbol::may_need_copy_reloc
3597         instead of the removed Target_powerpc::may_need_copy_reloc.
3598         * sparc.cc (Target_powerpc::may_need_copy_reloc): Remove.
3599         (Target_sparc::Scan::global): Use Symbol::may_need_copy_reloc
3600         instead of the removed Target_sparc::may_need_copy_reloc.
3601         * symtab.h (Symbol::may_need_copy_reloc): New method definition.
3602         * x86_64.cc (Target_powerpc::may_need_copy_reloc): Remove.
3603         (Target_x86_64::Scan::global): Use Symbol::may_need_copy_reloc
3604         instead of the removed Target_x86_64::may_need_copy_reloc.
3605
3606 2009-09-30  Ian Lance Taylor  <iant@google.com>
3607
3608         * object.h (class Object): Remove target_ field, and target,
3609         sized_target, and set_target methods.
3610         (Object::sized_target): Remove.
3611         (class Sized_relobj): Update declarations.  Remove sized_target.
3612         * object.cc (Sized_relobj::setup): Remove target parameter.
3613         Change all callers.
3614         (Input_objects::add_object): Don't do anything with the target.
3615         (make_elf_sized_object): Add punconfigured parameter.  Change all
3616         callers.  Set or test parameter target.
3617         * dynobj.cc (Sized_dynobj::target): Remove target parameter.
3618         Change all callers.
3619         * parameters.cc (Parameters::set_target): Change parameter type to
3620         be non-const.
3621         (Parameters::default_target): Remove.
3622         (set_parameters_target): Change parameter type to be non-const.
3623         (parameters_force_valid_target): New function.
3624         (parameters_clear_target): New function.
3625         * parameters.h (class Parameters): Update declarations.  Remove
3626         default_target method.  Add sized_target and clear_target
3627         methods.  Change target_ to be non-const.
3628         (set_parameters_target): Update declaration.
3629         (parameters_force_valid_target): Declare.
3630         (parameters_clear_target): Declare.
3631         * readsyms.cc (Read_symbols::do_read_symbols): Pass punconfigured
3632         as NULL if we aren't searching.
3633         (Add_symbols::run): Don't check for compatible target.
3634         * fileread.cc (Input_file::open_binary): Call
3635         parameters_force_valid_target.
3636         * gold.cc (queue_middle_tasks): Likewise.
3637         * plugin.cc (make_sized_plugin_object): Likewise.  Don't call
3638         set_target on object.
3639         * dynobj.h (class Sized_dynobj): Update declarations.
3640         * archive.cc (Archive::get_elf_object_for_member): Return NULL if
3641         make_elf_object returns NULL.
3642         (Archive::include_member): Don't check whether object target is
3643         compatible.
3644         * output.cc (Output_section::add_input_section): Get target from
3645         parameters.
3646         (Output_section::relax_input_section): Likewise.
3647         * reloc.cc (Sized_relobj::do_gc_process_relocs): Get target from
3648         parameters.
3649         (Sized_relobj::do_scan_relocs): Likewise.
3650         (Sized_relobj::relocate_sections): Likewise.
3651         * resolve.cc (Symbol_table::resolve): Likewise.
3652         * symtab.cc (Symbol_table::wrap_symbol): Likewise.  Remove object
3653         parameter.  Change all callers.
3654         (Symbol_table::add_from_object): Get target from parameters.
3655         (Symbol_table::add_from_relobj): Don't check object target.
3656         (Symbol_table::add_from_dynobj): Likewise.
3657         (Symbol_table::define_special_symbol): Get target from
3658         parameters.
3659         * symtab.h (class Symbol_table): Update declaration.
3660         * testsuite/binary_unittest.cc (gold_testsuite): Remove target
3661         parameter.  Change all callers.  Clear parameter target.
3662         (Binary_test): Test target here.
3663         * testsuite/object_unittest.cc (gold_testsuite): Remove
3664         target_test_pointer parameter.  Change all callers.
3665         (Object_test): Test target here.
3666
3667 2009-09-26  Ian Lance Taylor  <iant@google.com>
3668
3669         * testsuite/initpri1.c: Don't try to use constructor priorities if
3670         compiling with gcc before 4.3.
3671
3672 2009-09-22  Mikolaj Zalewski  <mikolajz@google.com>
3673
3674         * testsuite/retain_symbols_file_test.sh (check_present): Change
3675         output file name to retain_symbols_file_test.stdout.
3676         (check_absent): Likewise.
3677
3678 2009-09-18  Craig Silverstein  <csilvers@google.com>
3679
3680         * object.cc (Sized_relobj::do_count): Test should_retain_symbol map.
3681         * options.cc: Include <cerrno> and <fstream>.
3682         (General_options::finalize): Parse -retain-symbols-file tag.
3683         * options.h: New flag.
3684         (General_options): New method should_retain_symbol, new
3685         variable symbols_to_retain.
3686         * symtab.cc (Symbol_table::sized_finalize_symbol): Test
3687         should_retain_symbol map.
3688         * testsuite/Makefile.am (retain_symbols_file_test): New test.
3689         * testsuite/Makefile.in: Regenerate.
3690         * testsuite/retain_symbols_file_test.sh: New file.
3691
3692 2009-09-18  Nick Clifton  <nickc@redhat.com>
3693
3694         * po/es.po: Updated Spanish translation.
3695
3696 2009-09-17  Doug Kwan  <dougkwan@google.com>
3697
3698         * debug.h (DEBUG_RELAXATION): New constant.
3699         (DEBUG_ALL): Add DEBUG_RELAXATION.
3700         (debug_string_to_enum): Add relaxation debug option.
3701         * layout.cc
3702         (Layout::Relaxation_debug_check::check_output_data_for_reset_values,
3703         Layout::Relaxation_debug_check::read_sections,
3704         Layout::Relaxation_debug_check::read_sections): New method definitions.
3705         (Layout::Layout): Initialize data members
3706         record_output_section_data_from_scrips_,
3707         script_output_section_data_list_ and relaxation_debug_check_.
3708         (Layout::save_segments, Layout::restore_segments,
3709         Layout::clean_up_after_relaxation, Layout::prepare_for_relaxation,
3710         Layout::relaxation_loop_body): New method definitions.
3711         (Layout::finalize): Support relaxation.  Move section layout code to
3712         Layout::relaxation_loop_body.
3713         (Layout::set_asection_address_from_script): Move code for orphan
3714         section placement out.
3715         (Layout::place_orphan_sections_in_script): New method definition.
3716         * layout.h (Output_segment_headers, Output_file_header):
3717         New forward class declarations.
3718         (Layout::~Layout): Define.
3719         (Layout::new_output_section_data_from_script): New method definition.
3720         (Layout::place_orphan_sections_in_script): New method declaration.
3721         (Layout::Segment_states): New type declaration.
3722         (Layout::save_segments, Layout::restore_segments,
3723         Layout::clean_up_after_relaxation, Layout::prepare_for_relaxation,
3724         Layout::relaxation_loop_body): New method declarations.
3725         (Layout::Output_section_data_list): New type declaration.
3726         (Layout::Relaxation_debug_check): New class definition.
3727         (Layout::record_output_section_data_from_script_,
3728         Layout::script_output_section_data_list_, Layout::segment_states_,
3729         Layout::relaxation_debug_check_): New data members.
3730         * output.cc: (Output_section_headers::do_size): New method definition.
3731         (Output_section_headers::Output_section_headers): Move size
3732         computation to Output_section_headers::do_size.
3733         (Output_segment_headers::do_size): New method definition.
3734         (Output_file_header::Output_file_header): Move size computation to 
3735         Output_file_header::do_size and call it.
3736         (Output_file_header::do_size): New method definition.
3737         (Output_data_group::Output_data_group): Adjust call to
3738         Output_section_data.
3739         (Output_data_dynamic::set_final_data_size): Add DT_NULL tag only once.
3740         (Output_symtab_xindex::do_write): Add array bound check.
3741         (Output_section::Input_section::print_to_mapfile): Handle
3742         RELAXED_INPUT_SECTION_CODE.
3743         (Output_section::Output_section): Initialize data member checkpoint_.
3744         (Output_section::~Output_section): Delete checkpoint object pointed
3745         by checkpoint_.
3746         (Output_section::add_input_section): Always add an Input_section if
3747         relaxing.
3748         (Output_section::add_merge_input_section): Add assert.
3749         (Output_section::relax_input_section): New method definition.
3750         (Output_section::set_final_data_size): Set load address to zero for
3751         an unallocated section.
3752         (Output_section::do_address_and_file_offset_have_reset_values):
3753         New method definition.
3754         (Output_section::Input_section_sort_enty::Input_section_sort_enty):
3755         Handle relaxed input section.
3756         (Output_section::sort_attached_input_sections): Checkpoint input
3757         section list lazily.
3758         (Output_section::get_input_sections): Change type of input_sections to
3759         list of Simple_input_section pointers.  Checkpoint input section list
3760         lazily.  Also handle relaxed input sections.
3761         (Output_section::add_input_section_for_script): Take a reference to
3762         a Simple_input_section object instead of Relobj pointer and section
3763         index as parameter.  Handle relaxed input sections.
3764         (Output_section::save_states, Output_section::restore_states): New
3765         method definitions.
3766         * output.h (Output_data::Output_data): Initialize is_data_size_fixed_.
3767         (Output_data::is_data_size_fixed): New method definition.
3768         (Output_data::reset_addresss_and_file_offset): Do not reset data size
3769         if it is fixed.
3770         (Output_data::address_and_file_offset_have_reset_values): New method
3771         definition.
3772         (Output_data::do_address_and_file_offset_have_reset_values): New method
3773         definition.
3774         (Output_data::set_data_size): Check that data size is not fixed.
3775         (Output_data::fix_data_size): New method definition.
3776         (Output_data::is_data_size_fixed_): New data member.
3777         (Output_section_headers::set_final_data_size): New method definition.
3778         (Output_section_headers::do_size): New method declaration.
3779         (Output_segment_headers::set_final_data_size): New method definition.
3780         (Output_segment_headers::do_size): New method declaration.
3781         (Output_file_header::set_final_data_size)::New method definition.
3782         (Output_file_header::do_size)::New method declaration.
3783         (Output_section_data::Output_section_data): Add new parameter
3784         is_data_size_fixed and use it to fix data size.
3785         (Output_data_const::Output_data_const): Adjust call to base class
3786         constructor and fix data size.
3787         (Output_data_const_buffer::Output_data_const_buffer): Adjust call to
3788         base class constructor and fix data size.
3789         (Output_data_fixed_space::Output_data_fixed_space): Adjust call to
3790         base class constructor and fix data size.
3791         (Output_data_zero_fill::Output_data_zero_fill): Adjust call to base
3792         class constructor and fix data size.
3793         (Output_data_group::set_final_data_size): New method definition.
3794         (Output_data_dynamic::Dynamic_entry::tag): New method definition.
3795         (Output_symtab_xindex::Output_symtab_xindex): Adjust call to base
3796         class constructor and fix data size.
3797         (Output_relaxed_input_section): New class definition.
3798         (Output_section::Simple_input_section): New class definition.
3799         (Output_section::get_input_sections): Adjust parameter list.
3800         (Output_section::add_input_section_for_script): Same.
3801         (Output_section::save_states, Output_section::restore_states,
3802         Output_section::do_address_and_file_offset_have_reset_values,
3803         (Output_section::Input_section::Input_section): Handle
3804         RELAXED_INPUT_SECTION_CODE.  Add new overload for
3805         Output_relaxed_input_section.
3806         (Output_section::Input_section::is_input_section,
3807         Output_section::Input_section::set_output_section): Handle relaxed
3808         input section.
3809         (Output_section::Input_section::is_relaxed_input_section,
3810         Output_section::Input_section::output_section_data,
3811         Output_section::Input_section::relaxed_input_section): New method
3812         definitions.
3813         (Output_section::Input_section::RELAXED_INPUT_SECTION_CODE): New enum
3814         value.
3815         (Output_section::Input_section::u1_): Update comments.
3816         (Output_section::Input_section::u2_): Add new union member poris.
3817         (Output_section::Checkpoint_output_section): New classs definition.
3818         (Output_section::relax_input_section): New method declaration.
3819         (Output_section::checkpoint_): New data member.
3820         (Output_segment): Update comments.
3821         (Output_segment::Output_segment): Un-privatize copy constructor.
3822         (Output_segment::operator=): Un-privatize.
3823         * script-sections.cc (Output_section_element::Input_section_list):
3824         Change element type to Output_section::Simple_input_section.
3825         (Output_section_element_dot_assignment::set_section_addresses):
3826         Register output section data for relaxation clean up.
3827         (Output_data_exression::Output_data_expression): Adjust call to base
3828         constructor to fix data size.
3829         (Output_section_element_data::set_section_addresses): Register
3830         Output_data_expression object for relaxation clean up.
3831         (struct Input_section_info): Replace Relobj pointer and section index
3832         pair with Output_section::Simple_input_section and Convert struct to a
3833         class.
3834         (Input_section_sorter::operator()): Adjust access to
3835         Input_section_info data member to use accessors. 
3836         (Output_section_element_input::set_section_addresses): Use layout
3837         parameter.  Adjust code to use Output_section::Simple_input_section
3838         and Input_secction_info classes.  Register filler for relaxation
3839         clean up.
3840         (Orphan_output_section::set_section_addresses): Replace Relobj pointer
3841         and section index pair with Output_section::Simple_input_section
3842         class.  Adjust code accordingly.
3843         (Phdrs_element::release_segment): New method definition.
3844         (Script_sections::attach_sections_using_phdrs_clause): Do not modify
3845         segment list.
3846         (Script_sections::release_segments): New method definition.
3847         * gold/script-sections.h (Script_sections::release_segments): New
3848         method declaration.
3849         * gold/target.h (Target::may_relax, Target::relax,
3850         Target::do_may_relax, Target::do_relax): New method definitions.
3851
3852 2009-09-17  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
3853
3854         * arm.cc (has_signed_unsigned_overflow): New function.
3855         (Arm_relocate_functions::abs8): New function.
3856         (Target_arm::Scan::local): Handle R_ARM_ABS8.
3857         (Target_arm::Scan::global): Likewise.
3858         (Target_arm::relocate::relocate): Likewise.
3859         (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
3860         Likewise.
3861
3862 2009-09-16  Cary Coutant  <ccoutant@google.com>
3863
3864         * testsuite/Makefile.am (MOSTLYCLEANFILES): Add more generated files.
3865         * testsuite/Makefile.in: Regenerate.
3866
3867 2009-09-11  Nick Clifton  <nickc@redhat.com>
3868
3869         * po/gold.pot: Updated by the Translation project.
3870
3871 2009-09-08  Cary Coutant  <ccoutant@google.com>
3872
3873         * output.cc (Output_file::open): Add execute permission to empty file.
3874         * testsuite/Makefile.am (permission_test): New test.
3875         * testsuite/Makefile.in: Regenerate.
3876
3877 2009-09-02  Ian Lance Taylor  <iant@google.com>
3878
3879         * output.cc (Output_file::resize): Call map_no_anonymous rather
3880         than map.
3881
3882 2009-09-01  Mikolaj Zalewski  <mikolajz@google.com>
3883
3884         * gold.cc: Include "incremental.h".
3885         (queue_initial_tasks): Call Incremental_checker methods.
3886         * incremental.cc: Include "output.h".
3887         (Incremental_checker::can_incrementally_link_output_file): New
3888         method.
3889         * incremental.h (Incremental_checker): New class.
3890
3891         * output.cc (Output_file::open_for_modification): New method.
3892         (Output_file::map_anonymous): Changed return type to bool.  Record
3893         map in base_ field.
3894         (Output_file::map_no_anonymous): New method, broken out of map.
3895         (Output_file::map): Use map_no_anonymous and map_anonymous.
3896         * output.h (class Output_file): Update declarations.
3897
3898 2009-08-24  Cary Coutant  <ccoutant@google.com>
3899
3900         * options.h (Command_line::Pre_options): New class.
3901         (Command_line::pre_options): New member.
3902         * options.cc (gold::options::ready_to_register): New variable.
3903         (One_option::register_option): Do nothing if not registering options.
3904         Assert if same short option registered twice.
3905         (General_options::General_options): Turn off option registration when
3906         done constructing.
3907         (Command_line::Pre_options::Pre_options): New constructor.
3908
3909 2009-08-24  Cary Coutant  <ccoutant@google.com>
3910
3911         * options.h (General_options::no_keep_memory): Remove incorrect
3912         short option.
3913
3914 2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
3915
3916         * Makefile.am (am__skiplex, am__skipyacc): New.
3917         * Makefile.in: Regenerate.
3918
3919 2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
3920
3921         * Makefile.am (AM_CPPFLAGS): Renamed from ...
3922         (INCLUDES): ... this.
3923         * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add -Wno-portability.
3924         (AM_CPPFLAGS): Renamed from ...
3925         (INCLUDE): ... this.
3926         * Makefile.in, testsuite/Makefile.in: Regenerate.
3927
3928         * Makefile.in: Regenerate.
3929         * aclocal.m4: Likewise.
3930         * config.in: Likewise.
3931         * configure: Likewise.
3932         * testsuite/Makefile.in: Likewise.
3933
3934         * Makefile.am (AUTOMAKE_OPTIONS): Add foreign.
3935         * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add foreign.
3936         * Makefile.in: Regenerate.
3937         * testsuite/Makefile.in: Regenerate.
3938
3939 2009-08-19  Cary Coutant  <ccoutant@google.com>
3940
3941         * resolve.cc (Symbol_table::resolve): Don't complain about defined
3942         symbols in shared libraries overridden by hidden or internal symbols
3943         in the main program.
3944
3945 2009-08-19  Chris Demetriou  <cgd@google.com>
3946
3947         * testsuite/debug_msg.sh: Match .* rather than ${srcdir} when
3948         checking source file names in error messages.
3949
3950 2009-08-18  Doug Kwan  <dougkwan@google.com>
3951
3952         * dynobj.cc (Sized_dynobj::setup): Take a Target object instead of
3953         an elcpp::Ehdr as parameter.  Adjust call to set_target.
3954         * dynobj.h (Sized_dynobj::setup): Take a Target object instead of
3955         an elfcpp::Ehdr as parameter.
3956         * object.cc (Object::set_target): Remove the version that looks up
3957         a target and sets it.
3958         (Sized_relobj::setup): Take a Target object instead of
3959         an elfcpp::Ehdr as parameter.  Adjust call to set_target.
3960         (make_elf_sized_object): Find target and ask target to
3961         make an ELF object.
3962         * object.h: (Object::set_target): Remove the version that looks up
3963         a target and sets it.
3964         (Sized_relobj::setup): Take a Target object instead of
3965         an elfcpp:Ehdr as parameter.
3966         * target.cc: Include dynobj.h.
3967         (Target::do_make_elf_object_implementation): New.
3968         (Target::do_make_elf_object): New.
3969         * target.h (Target::make_elf_object): New template declaration.
3970         (Target::do_make_elf_object): New method declarations.
3971         (Target::do_make_elf_object_implementation): New template declaration.
3972
3973 2009-08-14  Ian Lance Taylor  <iant@google.com>
3974
3975         * gold.h (FUNCTION_NAME): Define.
3976         (gold_unreachable): Use FUNCTION_NAME.
3977
3978 2009-08-12  Sriraman Tallam  <tmsriram@google.com>
3979
3980         * icf.cc (Icf::find_identical_sections): Issue a warning when a
3981         symbol in the --keep-unique list is not found.
3982
3983 2009-08-12  Sriraman Tallam  <tmsriram@google.com>
3984
3985         * icf.cc (Icf::find_identical_sections): Unfold symbols that have
3986         been maked as --keep-unique.
3987         (Icf::unfold_section): New function.
3988         * icf.h (Icf::unfold_section): New function.
3989         * options.h (General_options::keep_unique): New option.
3990         * testsuite/Makefile.am: Add commands to build icf_keep_unique_test.
3991         * testsuite/Makefile.in: Regenerate.
3992         * testsuite/icf_keep_unique_test.sh: New file.
3993         * testsuite/icf_keep_unique_test.cc: New file.
3994
3995 2009-08-12  Cary Coutant  <ccoutant@google.com>
3996
3997         PR 10471
3998         * resolve.cc (Symbol_table::resolve): Check for references from
3999         dynamic objects to hidden and internal symbols.
4000         * testsuite/Makefile.am (hidden_test.sh): New test.
4001         * testsuite/Makefile.in: Regenerate.
4002         * testsuite/hidden_test.sh: New script.
4003         * testsuite/hidden_test_1.c: New test source.
4004         * testsuite/hidden_test_main.c: New test source.
4005
4006 2009-08-11  Doug Kwan  <dougkwan@google.com>
4007
4008         * arm.cc: Update comments.
4009         (Target_arm::do_finalize_sections): Add a special PT_ARM_EXIDX
4010         segment to locate the .ARM.exidx section if present.
4011
4012 2009-08-09  Doug Kwan  <dougkwan@google.com>
4013
4014         * dynobj.h (Sized_dynobj::do_section_entsize): Revert the previous
4015         patch.
4016
4017 2009-08-07  Sriraman Tallam  <tmsriram@google.com>
4018         * dynobj.h (Sized_dynobj::do_section_entsize): Add return to avoid
4019         compiler warnings.
4020
4021 2009-08-06  Sriraman Tallam  <tmsriram@google.com>
4022
4023         * x86_64.cc (Target_x86_64::Relocate::relocate_tls): Check for a
4024         valid tls_segment only for non-debug-section relocations.
4025         * testsuite/Makefile.am: Add gc_tls_test.
4026         * testsuite/Makefile.in: Regenerate.
4027         * testsuite/gc_tls_test.cc: New file.
4028         * testsuite/gc_tls_test.sh: New file.
4029
4030 2009-08-05  Sriraman Tallam  <tmsriram@google.com>
4031         
4032         * icf.cc: New file.
4033         * icf.h: New file.
4034         * Makefile.am (CCFILES): Add icf.cc.
4035         (HFILES): Add icf.h
4036         * Makefile.in: Regenerate.
4037         * dynobj.h (Sized_dynobj::do_section_entsize): New function.
4038         * gc.h (gc_process_relocs): Populate lists used by icf to contain
4039         section, symbol and addend information for the relocs.
4040         * gold.cc (queue_middle_tasks): Call identical code folding.
4041         * gold.h: Add defines for multimap.
4042         * layout.cc (Layout::create_symtab_sections): Add symtab as parameter
4043         to the call of finalize_local_symbols.
4044         * main.cc (main): Create object of class Icf.
4045         * object.cc (Sized_relobj::do_layout): Allow this function to be
4046         called twice during icf.
4047         (Sized_relobj::do_finalize_local_symbols): Fold symbols corresponding
4048         to sections marked as identical by icf.
4049         (Sized_relobj::do_section_flags): Get section_flags from Symbols_data
4050         when available.
4051         (Sized_relobj::do_section_entsize): New function.
4052         * object.h (Object::section_entsize): New function.
4053         (Object::do_section_entsize): New pure virtual function.
4054         (Relobj::finalize_local_symbols): Add new parameter.
4055         (Relobj::do_section_entsize): New function.
4056         * options.h (General_options::icf): New option.
4057         (General_options::icf_iterations): New option.
4058         (General_options::print_icf_sections): New option.
4059         * plugin.cc (Sized_pluginobj::do_section_entsize): New function.
4060         * plugin.h (Sized_pluginobj::do_section_entsize): New function.
4061         * reloc.cc (Read_relocs::run): Delay scanning relocs when doing
4062         icf.
4063         * symtab.cc (Symbol_table::is_section_folded): New function.
4064         (Symbol_table::sized_finalize_symbol):  Fold symbols corresponding
4065         to sections marked as identical by icf.
4066         * symtab.h (Symbol_table::set_icf): New function.
4067         (Symbol_table::icf): New function.
4068         (Symbol_table::is_section_folded): New function.
4069         (Symbol_table::icf_): New data member.
4070         * target-reloc.h (relocate_section): Ignore sections folded by icf.
4071         * testsuite/Makefile.am: Add commands to build icf_test.
4072         * testsuite/Makefile.in: Regenerate.
4073         * testsuite/icf_test.sh: New file.
4074         * testsuite/icf_test.cc: New file.
4075
4076 2009-07-24  Chris Demetriou  <cgd@google.com>
4077
4078         * layout.cc (is_compressible_debug_section): Fix incorrect
4079         comment about compressed section names.
4080
4081 2009-07-20  Ian Lance Taylor  <ian@airs.com>
4082
4083         PR 10419
4084         * x86_64.cc (Target_x86_64::do_code_fill): Correct nop sequences.
4085
4086 2009-07-16  Ian Lance Taylor  <iant@google.com>
4087
4088         PR 10400
4089         * layout.h: #include <map>.
4090         (class Kept_section): Change from struct to class.  Add accessors
4091         and setters.  Add section size to Comdat_group mapping.  Change
4092         Comdat_group to std::map.  Add is_comdat_ field.  Add
4093         linkonce_size field in union.
4094         (class Layout): Update declaration of find_or_add_kept_section.
4095         Don't declare find_kept_object.
4096         * layout.cc (Layout::find_or_add_kept_section): Remove candidate
4097         parameter.  Add object, shndx, is_comdat, and is_group_name
4098         parameters.  Change all callers.  Adjust for new Kept_section.
4099         (Layout::find_kept_object): Remove.
4100         * object.cc (Sized_relobj::include_section_group): Update use of
4101         Kept_section.  Rename secnum to shndx.  Only record
4102         Kept_comdat_section if sections are the same size.
4103         (Sized_relobj::include_linkonce_section): Update use of
4104         Kept_section.  Only record Kept_comdat_section if sections are the
4105         same size.  Set size of linkonce section.
4106         (Sized_relobj::map_to_kept_section): Update call to
4107         get_kept_comdat_section.
4108         * object.h (class Sized_relobj): Rename fields in
4109         Kept_comdat_section to drop trailing underscores; change object
4110         field to Relobj*.  Change Kept_comdat_section_table to store
4111         struct rather than pointer.
4112         (Sized_relobj::set_kept_comdat_section): Remove kept parameter.
4113         Add kept_object and kept_shndx parameters.  Change all callers.
4114         (Sized_relobj::get_kept_comdat_section): Change return type to
4115         bool.  Add kept_object and kept_shndx parameters.  Change all
4116         callers.
4117         * plugin.cc (Pluginobj::include_comdat_group): Update call to
4118         Layout::find_or_add_kept_section.
4119
4120 2009-07-09  Ian Lance Taylor  <iant@google.com>
4121
4122         * merge.cc (Object_merge_map::initialize_input_to_output_map):
4123         Reserve space in the hash table.
4124
4125 2009-07-06  Mikolaj Zalewski  <mikolajz@google.com>
4126
4127         * fileread.cc (File_read::get_mtime): New method.
4128         * fileread.h (Timespec): New structure.
4129         (File_read::get_mtime): New method.
4130         * incremental.cc (Incremental_inputs_entry_data::timestamp_usec):
4131         Renamed from timestamp_nsec.
4132         (Incremental_inputs_entry_write::timestamp_sec): Fix argument to
4133         Elf_Xword.
4134         (Incremental_inputs_entry_write::timestamp_usec): Renamed from 
4135         timestamp_nsec.
4136         (Incremental_inputs::report_archive): Save mtime; style fix. 
4137         (Incremental_inputs::report_obejct): Save mtime; style fix.
4138         (Incremental_inputs::report_script): Save mtime; style fix.
4139         (Incremental_inputs::finalize_inputs): Style fix.
4140         (Incremental_inputs::finalize): Style fix.
4141         (Incremental_inputs::create_input_section_data): Store inputs
4142         mtime.
4143         * incremental.h (Incremental_inputs::report_script): Add mtime
4144         argument.
4145         (Incremental_inputs::Input_info::Input_info): Intialize only one
4146         union member.
4147         (Incremental_inputs::Input_info::archive): Move to nameless
4148         union.
4149         (Incremental_inputs::Input_info::obejct): Move to nameless union.
4150         (Incremental_inputs::Input_info::script): Move to nameless union.
4151         (Incremental_inputs::mtime): New field.
4152         * script.cc (read_input_script): Pass file mtime to
4153         Incremental_input.
4154         * script.h (Script_info::inputs): Style fix.
4155
4156 2009-07-01  Ian Lance Taylor  <ian@airs.com>
4157
4158         * freebsd.h (Target_freebsd::do_adjust_elf_header): Use size
4159         instead of 32.
4160
4161 2009-06-24  Ian Lance Taylor  <iant@google.com>
4162
4163         PR 10156
4164         * layout.cc (Layout::choose_output_section): If we find an
4165         existing section, update the flags.
4166         (Layout::create_notes): New function, broken out of
4167         Layout::finalize.
4168         (Layout::finalize): Don't create note sections.
4169         (Layout::create_note): Don't crash if linker script discards
4170         section.
4171         (Layout::create_gold_note): Likewise.
4172         (Layout::create_build_id): Likewise.  Don't set
4173         after_input_sections on the section.
4174         (Layout::create_executable_stack_info): Remove target parameter.
4175         Change caller.
4176         * layout.h (class Layout): Declare create_notes.  Update
4177         declaration of create_executable_stack_info.
4178         * gold.cc (queue_middle_tasks): Call create_notes.
4179         * output.cc (Output_section::update_flags_for_input_section): Move
4180         here from output.h.  If SHF_ALLOC flag is newly set, mark address
4181         invalid.
4182         * output.h (Output_data::mark_address_invalid): New function.
4183         (class Output_section): Only declare, not define,
4184         update_flags_for_input_section.  Remove set_flags.
4185
4186 2009-06-24  Ian Lance Taylor  <iant@google.com>
4187
4188         * script-sections.cc (Output_section_definition::
4189         set_section_addresses): Rename shadowing local load_address to
4190         laddr.
4191
4192 2009-06-24  Ian Lance Taylor  <iant@google.com>
4193
4194         PR 10244
4195         * reloc.cc (relocate_sections): Skip empty relocation sections.
4196
4197 2009-06-23  Ian Lance Taylor  <iant@google.com>
4198
4199         PR 10156
4200         * layout.cc (Layout::create_note): Use choose_output_section
4201         rather than make_output_section.
4202
4203 2009-06-23  Ian Lance Taylor  <iant@google.com>
4204
4205         PR 10237
4206         * options.cc (General_options::parse_V): Set printed_version_.
4207         (General_options::General_options): Initialize printed_version_.
4208         * options.h (class General_options): Add printed_version_ field.
4209         * gold.cc (queue_initial_tasks): If there are no input files,
4210         don't give a fatal error if we printed the version information.
4211         (queue_middle_tasks): If using -r with a shared object, give a
4212         fatal error rather than an ordinary error.
4213
4214 2009-06-23  Ian Lance Taylor  <iant@google.com>
4215
4216         PR 10219
4217         * layout.cc (Layout::Layout): Initialize have_stabstr_section_.
4218         (Layout::make_output_section): Set have_stabstr_section_ if we see
4219         a .stab*str section.
4220         (Layout::finalize): Call link_stabs_sections.
4221         (Layout::link_stabs_sections): New file.
4222         * layout.h (class Layout): Add have_stabstr_section_ field.
4223         Declare link_stabs_sections.
4224
4225 2009-06-23  Doug Kwan  <dougkwan@google.com>
4226
4227         * Makefile.am (libgold_a_LIBADD): New.
4228         (ld_new_DEPENDENCIES, ld_new_LDADD): Remove LIBOBJS
4229         * Makefile.in: Regenerate.
4230         * config.in (HAVE_DECL_MEMMEM, HAVE_DECL_STRNDUP): New.
4231         * configure: Regenerate.
4232         * configure.ac (AC_CHECK_DECLS): Add strndup and memmem.
4233         * fileread.cc: Include sys/state.h
4234         * gold.h: Declare memmem and strndup if found missing.
4235         * gold_reloc.h: Include byteswap.h if HAVE_BYTESWAP_H is defined.
4236
4237 2009-06-23  Ian Lance Taylor  <iant@google.com>
4238
4239         * configure.ac: Call AC_CHECK_DECLS using C, not C++.
4240         * configure: Rebuild.
4241
4242 2009-06-23  Ian Lance Taylor  <iant@google.com>
4243
4244         PR 10147
4245         * object.cc (Object::section_contents): Don't try to get a view if
4246         the section has length zero.
4247         (Object::handle_gnu_warning_section): If the section is empty, use
4248         the name of the section as the warning.
4249
4250 2009-06-23  Ian Lance Taylor  <iant@google.com>
4251
4252         PR 10133
4253         * stringpool.h (class Stringpool_template): Add optimize_ field.
4254         (Stringpool_template::set_optimize): New function.
4255         * stringpool.cc (Stringpool_template::Stringpool_template):
4256         Initialize optimize_ field.
4257         (Stringpool_template::set_string_offsets): Test local optimize
4258         fild rather than parameter.
4259         * layout.cc (Layout::Layout): Call set_optimize on the section
4260         name stringpool.
4261
4262 2009-06-22  Ian Lance Taylor  <iant@google.com>
4263
4264         PR 10030
4265         * yyscript.y: Parse TARGET.
4266         * script.cc (script_set_target): New function.
4267         * script-c.h (script_set_target): Declare.
4268         * options.cc (General_options::string_to_object_format): Rename
4269         from string_to_object_format in anonymous namespace.  Change
4270         callers.
4271         * options.h (class General_options): Declare
4272         string_to_object_format.
4273
4274 2009-06-22  Ian Lance Taylor  <iant@google.com>
4275
4276         * script-sections.cc (Script_sections::create_segments): Don't put
4277         program headers in a PT_LOAD segment if -n or -N.
4278
4279 2009-06-22  Ian Lance Taylor  <iant@google.com>
4280
4281         PR 10141
4282         * options.h (class General_options): Add -z lazy and -z now.  Sort
4283         -z options into alphabetical order.
4284         * layout.cc (Layout::finish_dynamic_section): Handle -z now.
4285
4286 2009-06-21  Ian Lance Taylor  <iant@google.com>
4287
4288         * layout.cc (Layout::make_output_section): Call
4289         Target::new_output_section.
4290         (Layout::attach_allocated_section_to_segment): Put large section
4291         sections in a separate load segment with the large segment flag
4292         set.
4293         (Layout::segment_precedes): Sort large data segments after other
4294         load segments.
4295         (align_file_offset): New static function.
4296         (Layout::set_segment_offsets): Use align_file_offset.
4297         * output.h (class Output_section): Add is_small_section_ and
4298         is_large_section_ fields.
4299         (Output_section::is_small_section): New function.
4300         (Output_section::set_is_small_section):  New function.
4301         (Output_section::is_large_section): New function.
4302         (Output_section::set_is_large_section): New function.
4303         (Output_section::is_large_data_section): New function.
4304         (class Output_segment): Add is_large_data_segment_ field.
4305         (Output_segment::is_large_data_segment): New function.
4306         (Output_segment::set_is_large_data_segment): New function.
4307         * output.cc (Output_section::Output_section): Initialize new
4308         fields.
4309         (Output_segment::Output_segment): Likewise.
4310         (Output_segment::add_output_section): Add assertion that large
4311         data sections always go in large data segments.  Force small data
4312         sections to the end of the list of data sections.  Force small BSS
4313         sections to the start of the list of BSS sections.  For large BSS
4314         sections to the end of the list of BSS sections.
4315         * symtab.h (class Symbol): Declare is_common_shndx.
4316         (Symbol::is_defined): Check Symbol::is_common_shndx.
4317         (Symbol::is_common): Likewise.
4318         (class Symbol_table): Define enum Commons_section_type.  Update
4319         declarations.  Add small_commons_ and large_commons_ fields.
4320         * symtab.cc (Symbol::is_common_shndx): New function.
4321         (Symbol_table::Symbol_table): Initialize new fields.
4322         (Symbol_table::add_from_object): Put small and large common
4323         symbols in the right list.
4324         (Symbol_table::sized_finalized_symbol): Check
4325         Symbol::is_common_shndx.
4326         (Symbol_table::sized_write_globals): Likewise.
4327         * common.cc (Symbol_table::do_allocate_commons): Allocate new
4328         common symbol lists.  Don't call do_allocate_commons_list if the
4329         list is empty.
4330         (Symbol_table::do_allocate_commons_list): Remove is_tls
4331         parameter.  Add comons_section_type parameter.  Change all
4332         callers.  Handle small and large common symbols.
4333         * object.cc (Sized_relobj::do_finalize_local_symbols): Check
4334         Symbol::is_common_shndx.
4335         * resolve.cc (symbol_to_bits): Likewise.
4336         * target.h (Target::small_common_shndx): New function.
4337         (Target::small_common_section_flags): New function.
4338         (Target::large_common_shndx): New function.
4339         (Target::large_common_section_flags): New function.
4340         (Target::new_output_section): New function.
4341         (Target::Target_info): Add small_common_shndx, large_common_shndx,
4342         small_common_section_flags, and large_common_section_flags
4343         fields.
4344         (Target::do_new_output_section): New virtual function.
4345         * arm.cc (Target_arm::arm_info): Initialize new fields.
4346         * i386.cc (Target_i386::i386_info): Likewise.
4347         * powerpc.cc (Target_powerpc::powerpc_info) [all versions]:
4348         Likewise.
4349         * sparc.c (Target_sparc::sparc_info) [all versions]: Likewise.
4350         * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
4351         (Target_x86_64::do_new_output_section): New function.
4352         * configure.ac: Define conditional MCMODEL_MEDIUM.
4353         * testsuite/Makefile.am (check_PROGRAMS): Add large.
4354         (large_SOURCES, large_CFLAGS, large_DEPENDENCIES): Define.
4355         (large_LDFLAGS): Define.
4356         * testsuite/large.c: New file.
4357         * testsuite/testfile.cc (Target_test::test_target_info):
4358         Initialize new fields.
4359         * configure, testsuite/Makefile.in: Rebuild.
4360
4361 2009-06-05  Doug Kwan  <dougkwan@google.com>
4362
4363         * Makefile.am (CCFILES): Add target.cc.
4364         * Makefile.in: Regenerate. 
4365         * i386.cc (class Target_i386): Define new virtual method to
4366         override do_is_local_label_name in parent.
4367         * object.cc (Sized_relobj::do_count_local_symbols): Discard
4368         local symbols if --discard-locals or -X is given.
4369         * options.h (class General_options): Declare new options
4370         '--discard-locals' and '-X' for discarding locals.
4371         * target.h (class Target): Define new methods is_local_label_name.
4372         Declare new virtual method do_is_local_label_name.
4373         * target.cc: New file.
4374         * testsuite/Makefile.am (check_PROGRAMS): Add discard_locals_test.
4375         (check_SCRIPTS): Add discard_locals_test.sh.
4376         (check_DATA): Add discard_local_tests.syms.
4377         (discard_locals_test_SOURCES, discard_locals_test_LDFLAGS): Define.
4378         (discard_local_tests.syms, discard_locals_test.o): New make rules.
4379         * testsuite/Makefile.in: Regenerate.
4380         * testsuite/discard_locals_test.c: New file.
4381         * testsuite/discard_locals_test.sh: Same.
4382
4383 2009-06-05  Doug Kwan  <dougkwan@google.com>
4384
4385         * object.cc (Sized_relobj::Sized_relobj): Initialize
4386         discarded_eh_frame_shndx_ to -1U.
4387         (Sized_relobj::do_layout): Record index of a discard .eh_frame
4388         section.
4389         (Sized_relobj::do_count_local_symbols): Skip local symbols in
4390         a discarded .eh_frame section.
4391         (Sized_relobj::do_finalize_local_symbols): Ditto.
4392         * object.h (class Sized_relobj): Declare new member
4393         discarded_eh_frame_shndx_.
4394         * testsuite/Makefile.am (check_PROGRAMS): Add local_labels_test.
4395         (local_labels_test.o, local_labels_test): New rules.
4396         * testsuite/Makefile.in: Regenerate.
4397
4398 2009-06-04  Doug Kwan  <dougkwan@google.com>
4399
4400         * layout.cc (Layout::section_name_mapping): Add mapping for
4401         special ARM sections.
4402
4403 2009-06-03  Doug Kwan  <dougkwan@google.com>
4404
4405         * arm.cc (utils::sign_extend): Reverse test in gold_assert.
4406         (utils::has_overflow): Same.
4407
4408 2009-06-03  Ian Lance Taylor  <iant@google.com>
4409
4410         * layout.cc (Layout::section_name_mapping): New array, replacing
4411         Layout::linkonce_mapping.
4412         (Layout::section_name_mapping_count): New variable, replacing
4413         Layout::linkonce_mapping_count.
4414         (Layout::linkonce_output_name): Remove.
4415         (Layout::output_section_name): Rewrite.
4416         * layout.h (class Layout): Rename Linkonce_mapping to
4417         Section_name_mapping, linkonce_mapping to section_name_mapping,
4418         linkonce_mapping_count to section_name_mapping_count.  Don't
4419         declare linkonce_output_name.
4420
4421 2009-06-03  Doug Kwan  <dougkwan@google.com>
4422
4423         * gold/arm.cc (namespace utils): New.
4424         (Target_arm::reloc_is_non_pic): Define new method.
4425         (class Arm_relocate_functions): New.
4426         (Target_arm::Relocate::relocate): Handle relocation types used by
4427         Android.
4428
4429 2009-06-03  Ian Lance Taylor  <iant@google.com>
4430
4431         * arm.cc (Target_arm::scan::global): Use || instead of |.
4432
4433 2009-06-02  Doug Kwan  <dougkwan@google.com>
4434
4435         * gold/arm.cc (Target_arm::Scan::Scan):  Initialize
4436         issued_non_pic_error_.
4437         (class Target_arm::Scan): Declare new method check_non_pic.
4438         Define new method symbol_needs_plt_entry.
4439         Declare new data member issued_non_pic_error_.
4440         (class Target_arm::Relocate): Declare new method
4441         should_apply_static_reloc.
4442         (Target_arm::may_need_copy_reloc): Handle STT_ARM_TFUNC.
4443         (Target_arm::Scan::check_non_pic): Define new method.
4444         (Target_arm::Scan::local): Handle a small subset of reloc types used
4445         by Android.
4446         (Target_arm::Scan::local): Same.
4447         (Target_arm::Relocate::should_apply_statci_reloc): Define new method.
4448
4449 2009-05-31  Mikolaj Zalewski  <mikolajz@google.com>
4450
4451         * incremental.cc (Incremental_inputs::report_command_line): Filter
4452         out --incremental-* options.
4453
4454 2009-05-29  Doug Kwan  <dougkwan@google.com>
4455
4456         * gold/arm.cc (Output_data_plt_arm): Forward declaration for new
4457         template class.
4458         (class Target_arm): Update comment.
4459         (Target_arm::Target_arm): Initialize new data members GOT_,
4460         PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_ and DYNBSS_.
4461         Declare new methods Target_arm::got_section, Target_arm::make_plt_entry
4462         and Target_arm::rel_dyn_section.
4463         Declare new_enum Target_arm::Got_type.
4464         Declare new data members GOT_, PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_
4465         and DYNBSS_.
4466         Update commments for member do_dynsym_value.
4467         (Target_arm::got_size, Target_arm::plt_section,
4468         Target_arm::may_need_copy_reloc and Target_arm::copy_reloc): Define
4469         new methods inside class defintion.
4470         (Target_arm::got_section): Define new method.
4471         (Target_arm::rel_dyn_section): Same.
4472         (Output_data_plt_arm): New template class.
4473         (Output_data_plt_arm::Output_data_plt_arm): Define constructor.
4474         (Output_data_plt_arm:do_adjust_output_section): Define new method.
4475         (Output_data_plt_arm::add_entry): Same.
4476         (Output_data_plt_arm::first_plt_entry): Define new
4477         static data member for PLT instruction template.
4478         (Output_data_plt_arm::plt_entry): Same.
4479         (Output_data_plt_arm::do_write): Define new method.
4480         (Target_arm::make_plt_entry): Same.
4481         (Target_arm::do_finalize_sections): Same.
4482         (Target_arm::do_dynsym_value): Same.
4483
4484 2009-05-28  Doug Kwan  <dougkwan@google.com>
4485
4486         * Makefile.am (TARGETSOURCES): Add arm.cc.
4487         (ALL_TARGETOBJECTS): Add arm.$(OBJEXT)
4488         * Makefile.in: Regenerate.
4489         * arm.cc: New file.
4490         * configure.tgt: Add armbe*-*-*, armeb*-*-* and arm*-*-* targets.
4491
4492 2009-05-26  Doug Kwan  <dougkwan@google.com>
4493
4494         * options.cc (General_options::parse_exclude_libs).  Fix a comment.
4495         (General_options::check_excluded_libs): Strip off directories in
4496         archive name before matching like GNU ld does.
4497         * testsuite/Makefile.am (MOSTLYCLEANFILES,
4498         exclude_libs_test_DEPENDENCIES): Add alt/libexclude_libs_test_3.a
4499         (exclude_libs_test_LDFLAGS): Add linker option
4500         -Wl,--exclude-libs,libexclude_libs_test_3
4501         (exclude_libs_test_LADD): Add alt/libexclude_libs_test_3.a as
4502         an explicit archive without using -l.
4503         (alt/libexclude_libs_test_3.a): New make rule.
4504         * testsuite/Makefile.in: Regenerate.
4505         * testsuite/exclude_libs_test.c : Declare lib3_default().
4506         (main): Call it.
4507         * exclude_libs_test.sh: Add tests for alt/exclude_libs_test_3.a.
4508         * exclude_libs_test_3.c: New file.
4509
4510 2009-05-26  Nick Clifton  <nickc@redhat.com>
4511
4512         * po/id.po: New Indonesian translation.
4513         * po/gold.pot: Updated template file.
4514
4515 2009-05-22  Sriraman Tallam  <tmsriram@google.com>
4516
4517         * testsuite/Makefile.am: Add -ffunction-sections to compile 
4518         gc_comdat_test files.  Add -Wl,--gc-sections to build
4519         gc_comdat_test.
4520         * testsuite/Makefile.in: Regenerate.
4521         * testsuite/gc_comdat_test.sh: Fix the condition around grep.
4522
4523 2009-05-21  Sriraman Tallam  <tmsriram@google.com>
4524
4525         * object.cc (Sized_relobj::map_to_kept_section): Return NULL if the
4526         kept comdat section was garbage collected.
4527         * testsuite/Makefile.am: Add test gc_comdat_test.sh.
4528         * testsuite/Makefile.in: Regenerate.
4529         * testsuite/gc_comdat_test.sh: New file.
4530         * testsuite/gc_comdat_test_1.cc: New file.
4531         * testsuite/gc_comdat_test_2.cc: New file.
4532
4533 2009-05-19  Doug Kwan  <dougkwan@google.com>
4534
4535         * archive.cc (Archive::Archive): Move constructor from archive.h
4536         to here.  Initialize no_export_.
4537         (Archive::get_elf_object_for_member): Set no_export flag of object.
4538         * archive.h (Archive::Archive): Move constructor body to
4539         archive.cc.
4540         (Archive::no_export): New method.
4541         (Archive::no_export_): New field.
4542         * object.h (Object::Object): Initialize no_export_ to false.
4543         (Object::no_export, Object::set_no_export): New methods.
4544         (Object::no_export_): New field.
4545         * options.cc (General_options::parse_exclude_libs): New method.
4546         (General_options::check_excluded_libs) Same.
4547         * options.h (exclude_libs): New option.
4548         (General_options::check_excluded_libs): New method declaration.
4549         (General_options::excluded_libs_): New field.
4550         * symtab.cc (Symbol_table::add_from_relobj): Hide symbols with
4551         default or protected visibility if an object has no-export flag set.
4552         testsuite/Makefile.am (check_PROGRAMS): Add exclude_libs_test.
4553         (check_SCRIPTS): Add exclude_libs_test.sh.
4554         (check_DATA): Add exclude_libs_test.syms.
4555         (MOSTLYCLEANFILES): Add exclude_libs_test.syms,
4556         libexclude_libs_test_1.a and libexclude_libs_test_2.a.
4557         (exclude_libs_test_SOURCES, exclude_libs_test_DEPENDENCIES,
4558         exclude_libs_test_LDFLAGS and exclude_libs_test_LDADD): Define.
4559         (exclude_libs_test.syms, libexclude_libs_test_1.a,
4560         libexclude_libs_test_2.a): New rules.
4561         * testsuite/Makefile.in: Regenerate.
4562         * testsuite/exclude_libs_test.c: New file.
4563         * testsuite/exclude_libs_test.sh: Ditto.
4564         * testsuite/exclude_libs_test_1.c: Ditto.
4565         * testsuite/exclude_libs_test_2.c: Ditto.
4566
4567 2009-05-15  Ian Lance Taylor  <iant@google.com>
4568
4569         * configure.ac: Check for declarations for cases where libiberty.h
4570         checks HAVE_DECL_xxx.
4571         * configure, config.in: Rebuild.
4572
4573 2009-05-15  Mikolaj Zalewski  <mikolajz@google.com>
4574
4575         * gold.h (Incremental_argument_list): Remove (invalid) forward
4576         declaration.
4577         * incremental.cc (Incremental_inputs::report_achive): New method.
4578         (Incremental_inputs::report_object): New method.
4579         (Incremental_inputs::report_script): New method.
4580         (Incremental_inputs::finalize_inputs): New method.
4581         (Incremental_inputs::finalize): Call finalize_inputs().
4582         (Incremental_inputs::sized_create_incremental_inputs_section_data):
4583         Create inputs entries.
4584         * incremental.h (Incremental_input_type): New enum.
4585         (Incremental_inputs::Incremental_input): Initialize new fields.
4586         (Incremental_inputs::report_inputs): New method.
4587         (Incremental_inputs::report_achive): New method.
4588         (Incremental_inputs::report_object): New method.
4589         (Incremental_inputs::report_script): New method.
4590         (Incremental_inputs::finalize_inputs): New method.
4591         (Incremental_inputs::Input_info): New struct.
4592         (Incremental_inputs::Input_info_map): New typedef.
4593         (Incremental_inputs::lock_): New field.
4594         (Incremental_inputs::Inputs_): New field.
4595         (Incremental_inputs::Inputs_map): New field.
4596         * main.cc (main): Call Incremental_input::report_inputs.
4597         * options.h (Input_argument_list): Typedef moved from
4598         Input_arguments.
4599         (Input_file_group::Files): Remove, use ::Input_argument_list.
4600         (Input_file_group::Input_argument_list): Remove, use
4601         ::Input_argument_list.
4602         * plugin.cc (Plugin_manager::add_input_file): Add error in
4603         incremental build.
4604         * read_syms.cc (do_read_syms): Call Incremental_input::report_*
4605         functions.
4606         * script.cc (read_input_script): Call
4607         Incremental_input::report_script.
4608         * script.h (Script_info): New class.
4609
4610 2009-04-27  Ian Lance Taylor  <iant@google.com>
4611
4612         * x86_64.cc (do_adjust_output_section): Set entsize to
4613         plt_entry_size.
4614
4615 2009-04-23  Elliott Hughes  <enh@google.com>
4616
4617         * output.cc (Output_file::close): After short writes, continue
4618         writing from the correct offset in the buffer being written.
4619
4620 2009-04-23  Chris Demetriou  <cgd@google.com>
4621
4622         * configure.ac (HAVE_TR1_UNORDERED_MAP_REHASH): New define.
4623         * configure: Regenerate.
4624         * config.in: Regenerate.
4625         * gold.h: Avoid std::tr1::unordered_map and std::tr1::unordered_set
4626         if HAVE_TR1_UNORDERED_MAP_REHASH is not defined.
4627
4628 2009-04-21  Mikolaj Zalewski  <mikolajz@google.com>
4629
4630         * incremental.cc (Incremental_inputs_header_data): Renamed from
4631         Incremental_input_header_data.
4632         (Incremental_inputs_header_data::data_size): New field.
4633         (Incremental_inputs_header_data::put_input_file_count): Renamed
4634         from input_file_count.
4635         (Incremental_inputs_header_data::put_command_line_offset): Renamed
4636         from command_line_offset.
4637         (Incremental_inputs_header_data::put_reserved): Renamed from
4638         put_reserved.
4639         (Incremental_inputs_entry_data): Renamed from
4640         Incremental_input_entry_data.
4641         (Incremental_inputs_entry_data::data_size): New field.
4642         (Incremental_inputs::report_command_line): New method.
4643         (Incremental_inputs::finalize): New method.
4644         (Incremental_inputs::create_incremental_inputs_data): New method.
4645         (Incremental_inputs::sized_create_incremental_inputs_data): New method.
4646         * incremental.h: New file.
4647         * layout.cc (Layout::Layout): Handle new incremental_inputs_.
4648        (Layout::finalize): Create incremental inputs section in
4649         incremental builds.
4650        (Layout::create_incremental_info_sections): New method.
4651         * layout.h (Layout::incremental_inputs): New method.
4652        (Layout::create_incremental_info_sections): New method.
4653        (Layout::incremental_inputs_): New field.
4654         * main.cc (main): Notify Incremental_input of the command line.
4655
4656 2009-04-01  Ian Lance Taylor  <iant@google.com>
4657             Mikolaj Zalewski  <mikolajz@google.com>
4658
4659         * gold.h (reserve_unordered_map): Define, three versions, one for
4660         each version of Unordered_map.
4661         * layout.cc (Layout::Layout): Remove options parameter.  Add
4662         number_of_input_files parameter.  Don't initialize options_.
4663         Initialize number_of_input_files_ and resized_signatures_.  Move
4664         sections_are_attached_.
4665         (Layout::layout_group): Reserve space for group_signatures_.
4666         (Layout::find_or_add_kept_section): Change name parameter to be a
4667         reference.  Resize signatures_ map when it gets large enough.
4668         (Layout::layout_eh_frame): Use parameters->options() instead of
4669         this->options_.
4670         (Layout::make_output_section): Likewise.
4671         (Layout::attach_allocated_section_to_segment): Likewise.
4672         (Layout::finalize, Layout::create_executable_stack): Likewise.
4673         (Layout::set_segment_offsets, Layout::create_interp): Likewise.
4674         (Layout::finish_dynamic_section, Layout::write_binary): Likewise.
4675         * layout.h (class Layout): Update declarations.  Remove options_
4676         field.  Add number_of_input_files_ and resized_signatures_
4677         fields.  Move sections_are_attached_ field.
4678         * main.cc (main): Pass number of input files to Layout
4679         constructor.  Don't pass options.
4680
4681 2009-03-30  Ian Lance Taylor  <iant@google.com>
4682
4683         * ffsll.c (ffsll): Correct implementation.
4684
4685 2009-03-27  Ian Lance Taylor  <iant@google.com>
4686
4687         * ffsll.c: New file.
4688         * configure.ac: Call AC_REPLACE_FUNCS on ffsll.
4689         * gold.h (ffsll): Declare if HAVE_FFSLL is not defined.
4690         * ftruncate.c (ftruncate): Declare before definition.
4691         * mremap.c (mremap): Likewise.
4692         * pread.c (pread): Likewise.
4693         * configure, Makefile.in, config.in: Rebuild.
4694
4695         * mremap.c: New file.
4696         * configure.ac: Call AC_REPLACE_FUNCS on mremap.
4697         * gold.h (MREMAP_MAYMOVE): Define if HAVE_MREMAP is not defined.
4698         (mremap): Declare if HAVE_MREMAP is not defined.
4699         * configure, Makefile.in, config.in: Rebuild.
4700
4701 2009-03-27  Cary Coutant  <ccoutant@google.com>
4702
4703         * powerpc.cc (Target_powerpc::check_non_pic): Assert that output is
4704         position independent.
4705         * sparc.cc (Target_sparc::check_non_pic): Likewise.
4706         * x86_64.cc (Target_x86_64::check_non_pic): Likewise.
4707
4708 2009-03-24  Cary Coutant  <ccoutant@google.com>
4709
4710         * symtab.h (needs_plt_entry): Check for unsatisfied reference from
4711         an executable.
4712         (needs_dynamic_reloc): Likewise.
4713
4714 2009-03-24  Ian Lance Taylor  <iant@google.com>
4715
4716         * yyscript.y (file_cmd): Recognize EXTERN.
4717         (extern_name_list, extern_name_list_body): New nonterminals.
4718         * script.cc (script_add_extern): Define.
4719         * script-c.h (script_add_extern): Declare.
4720
4721 2009-03-24  Rafael Avila de Espindola  <espindola@google.com>
4722
4723         * object.cc (is_elf_object): Define.
4724         * object.h (is_elf_object): Declare.
4725         * archive.cc (Archive::get_elf_object_for_member): Call
4726         is_elf_object.
4727         * readsyms.cc (Read_symbols::do_read_symbols): Likewise.
4728
4729 2009-03-24  Elliott Hughes  <enh@google.com>
4730
4731         * output.cc (Output_file::map_anonymous): Define.
4732         (Output_file::map): Use map_anonymous.  If the regular mmap fails,
4733         try an anonymous one.  Report the size if the mmap fails.
4734         * output.h (class Output_file): Declare map_anonymous.
4735
4736 2009-03-24  Ian Lance Taylor  <iant@google.com>
4737
4738         * target-select.cc (instantiate_target): Don't acquire the lock if
4739         the instantiated_target_ field has already been set.
4740
4741 2009-03-23  Ian Lance Taylor  <iant@google.com>
4742
4743         * gold-threads.h (class Initialize_lock): Define.
4744         * gold-threads.cc (class Initialize_lock_once): Define.
4745         (initialize_lock_control): New static variable.
4746         (initialize_lock_pointer): New static variable.
4747         (initialize_lock_once): New static function.
4748         (Initialize_lock::Initialize_lock): Define.
4749         (Initialize_lock::initialize): Define.
4750         * target-select.h: Include "gold-threads.h".
4751         (class Target_selector): Add lock_ and initialize_lock_ fields.
4752         Don't define instantiate_target, just declare it.
4753         * target-select.cc (Target_selector::Target_selector): Initialize
4754         new fields.
4755         (Target_selector::instantiate_target): Define.
4756         * descriptors.h: Include "gold-threads.h".
4757         (class Descriptors): Add initialize_lock_ field.
4758         * descriptors.cc (Descriptors::Descriptors): Initialize new
4759         field.
4760         (Descriptors::open): Use initialize_lock_ field
4761         * errors.h (class Errors): Add initialize_lock_ field.
4762         * errors.cc (Errors::Errors): Initialize new field.
4763         (Errors::initialize_lock): Use initialize_lock_ field.
4764         * powerpc.cc (class Target_selector_powerpc): Remove
4765         instantiated_target_ field.  In do_recognize call
4766         instantiate_target rather than do_instantiate_target.  In
4767         do_instantiate_target just allocate a new target.
4768         * sparc.cc (class Target_selector_sparc): Likewise.
4769
4770         * freebsd.h: New file.
4771         * i386.cc: Include "freebsd.h".
4772         (Target_i386): Derive from Target_freebsd rather than
4773         Sized_target.
4774         (Target_selector_i386): Derive from Target_selector_freebsd rather
4775         than Target_selector.
4776         * x86_64.cc: Include "freebsd.h".
4777         (Target_x86_64): Derive from Target_freebsd rather than
4778         Sized_target.
4779         (Target_selector_x86_64): Derive from Target_selector_freebsd
4780         rather than Target_selector.
4781         * target.h (class Target): Add adjust_elf_header and
4782         do_adjust_elf_header.
4783         * output.cc (Output_file_header:: do_sized_write): Call target
4784         adjust_elf_header routine.
4785         * configure.tgt: Set targ_osabi.
4786         * configure.ac: Define GOLD_DEFAULT_OSABI.
4787         * parameters.cc (Parameters::default_target): Pass
4788         GOLD_DEFAULT_OSABI to select_target.
4789         * target-select.h (class Target_selector): Make instantiate_target
4790         protected rather than private.
4791         * Makefile.am (HFILES): Add freebsd.h.
4792         * configure, Makefile.in, config.in: Rebuild.
4793
4794         * merge.cc (do_add_input_section): Correct pend value.  Change
4795         message about last entry not being null terminated from error to
4796         warning.
4797
4798 2009-03-20  Mikolaj Zalewski  <mikolajz@google.com>
4799
4800         * incremental.cc: New file.
4801         * Makefile.am (CCFILES): Add incremental.cc.
4802         * Makefile.in: Rebuild.
4803
4804 2009-03-19  Paul Pluzhnikov  <ppluzhnikov@google.com>
4805
4806         * layout.cc (Layout::output_section_name): Preserve names
4807         of '.note.' sections.
4808         
4809 2009-03-19  Ian Lance Taylor  <iant@google.com>
4810
4811         * descriptors.cc (Descriptors::open): Check that the options are
4812         valid before using them.
4813
4814 2009-03-18  Ian Lance Taylor  <iant@google.com>
4815
4816         * script-sections.h: Include <list>.
4817         (class Script_sections): Change Sections_elements from std::vector
4818         to std::list.  Typedef public Elements_iterator.  Add
4819         orphan_section_placement_, data_segment_align_start_, and
4820         saw_data_segment_align_ fields.  Remove data_segment_align_index_
4821         field.
4822         * script-sections.cc (class Orphan_section_placement): New class.
4823         (class Sections_element): Add virtual functions is_relro and
4824         orphan_section_init.  Remove virtual function place_orphan_here.
4825         (class Output_section_definition): Add is_relro and
4826         orphan_section_init.  Remove place_orphan_here.
4827         (class Orphan_output_section): Likewise.
4828         (Script_sections::Script_sections): Update for field changes.
4829         (Script_sections::data_segment_align): Set saw_data_segment_align_
4830         and data_segment_align_start_, not data_segment_align_index.
4831         (Script_sections::data_segment_relro_end): Check
4832         saw_data_segment_align_.  Use data_segment_align_start_ rather
4833         than data_segment_align_index_.
4834         (Script_sections::place_orphan): Rewrite to use
4835         Orphan_section_placement.
4836
4837 2009-03-17  Ian Lance Taylor  <iant@google.com>
4838
4839         * archive.cc (Archive::add_symbols): Check for a version attached
4840         to the symbol name in the archive map.
4841         * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_11.
4842         (ver_test_11_SOURCES, ver_test_11_DEPENDENCIES): Define.
4843         (ver_test_11_LDFLAGS, ver_test_11_LDADD): Define.
4844         (ver_test_11.a): New target.
4845         * testsuite/Makefile.in: Rebuild.
4846
4847         * configure.ac: Check for chsize and posix_fallocate.  Replace
4848         ftruncate.
4849         * ftruncate.c: New file, from gnulib.
4850         * output.cc (posix_fallocate): Define dummy version if not
4851         HAVE_POSIX_FALLOCATE.
4852         (Output_file::map): Call posix_fallocate rather than lseek and
4853         write.
4854         * gold.h (ftruncate): Declare if not HAVE_FTRUNCATE.
4855         * configure, Makefile.in, config.in: Rebuild.
4856
4857 2009-03-17  Paul Pluzhnikov  <ppluzhnikov@google.com>
4858         
4859         * layout.h (Layout::create_note): Add section_name parameter.
4860         * layout.cc (Layout::create_note): Likewise.
4861         (Layout::create_build_id, Layout::create_gold_note): Fix callers.
4862         
4863 2009-03-17  Ian Lance Taylor  <iant@google.com>
4864
4865         * descriptors.cc: Include "options.h".
4866         (FD_CLOEXEC, O_CLOEXEC): Define if not defined.
4867         (Descriptors::open): Always use O_CLOEXEC when opening a new
4868         descriptor.  If we have a plugin, and O_CLOEXEC was not defined,
4869         then set FD_CLOEXEC.
4870
4871         * sparc.cc (class Target_sparc): Add has_got_section.
4872         (Target_sparc::Scan::global): If we see _GLOBAL_OFFSET_TABLE_,
4873         make sure we have a GOT section.
4874
4875         * sparc.cc (optimize_tls_reloc): Recognize R_SPARC_TLS_IE_ADD.
4876         (Target_sparc::Scan::local): Likewise.
4877         (Target_sparc::Scan::global): Likewise.
4878         (Target_sparc::Relocate::relocate): Likewise.
4879         (Target_sparc::Relocate::relocate_tls): Likewise.
4880
4881         * symtab.cc (Symbol_table::define_default_version): New function,
4882         broken out of add_from_object.
4883         (Symbol_table::add_from_object): Call define_default_version.
4884         (Symbol_table::define_special_symbol): Add resolve_oldsym
4885         parameter.  Change all callers.  If the version for a symbol comes
4886         from a version script, resolve it with the symbol with the same
4887         name with no version.  Also add the symbol without a version if
4888         appropriate.
4889         (do_define_in_output_data): If resolving with oldsym, don't delete
4890         sym.
4891         (do_define_in_output_segment): Likewise.
4892         (do_define_as_constant): Likewise.
4893         * symtab.h (class Symbol_table): Update declarations.
4894
4895 2009-03-13  Ian Lance Taylor  <iant@google.com>
4896
4897         * readsyms.cc (Read_symbols::incompatible_warning): New function.
4898         (Read_symbols::requeue): New function.
4899         (Read_symbols::do_read_symbols): If make_elf_object fails because
4900         the target type is not configured, and the file was searched for,
4901         issue a warning and retry with the next directory.
4902         (Add_symbols::run): If the file has an incompatible format, and
4903         it was searched for, requeue the Read_symbols task.  On error,
4904         release the object.
4905         * readsyms.h (class Read_symbols): Add dirindex_ field.  Add
4906         dirindex parameter to constructor.  Change all callers.  Declare
4907         incompatible_warning and requeue.
4908         (class Add_symbols): Add dirpath_, dirindex_, mapfile_,
4909         input_argument_ and input_group_ fields.  Add them to
4910         constructor.  Change all callers.
4911         (class Read_script): Add dirindex_ field.  Add it to constructor.
4912         Change all callers.
4913         * archive.cc (Archive::setup): Remove input_objects parameter.
4914         Change all callers.
4915         (Archive::get_file_and_offset): Likewise.
4916         (Archive::read_all_symbols): Likewise.
4917         (Archive::read_symbols): Likewise.
4918         (Archive::get_elf_object_for_member): Remove input_objects
4919         parameter.  Add punconfigured parameter.  Change all callers.
4920         (Archive::add_symbols): Change return type to bool.  Check return
4921         value of include_member.
4922         (Archive::include_all_members): Likewise.
4923         (Archive::include_member): Change return type to bool.  Return
4924         false if first included object has incompatible target.  Set
4925         included_member_ field.
4926         (Add_archive_symbols::run): If add_symbols returns false, requeue
4927         Read_symbols task.
4928         * archive.h (class Archive): Add included_member_ field.
4929         Initialize it in constructor.  Add input_file and searched_for
4930         methods.  Update declarations.
4931         (class Add_archive_symbols): Add dirpath_, dirindex_, and
4932         input_argument_ fields.  Add them to constructor.  Change all
4933         callers.
4934         * script.cc: Include "target-select.h".
4935         (class Parser_closure): Add skip_on_incompatible_target_ and
4936         found_incompatible_target_ fields.  Add
4937         skip_on_incompatible_target parameter to constructor.  Change all
4938         callers.  Add methods skip_on_incompatible_target,
4939         clear_skip_on_incompatible_target, found_incompatible_target, and
4940         set_found_incompatible_target.
4941         (read_input_script): Add dirindex parameter.  Change all callers.
4942         If parser finds an incompatible target, requeue Read_symbols
4943         task.
4944         (script_set_symbol): Clear skip_on_incompatible_target in
4945         closure.
4946         (script_add_assertion, script_parse_option): Likewise.
4947         (script_start_sections, script_add_phdr): Likewise.
4948         (script_check_output_format): New function.
4949         * script.h (read_input_script): Update declaration.
4950         * script-c.h (script_check_output_format): Declare.
4951         * yyscript.y (file_cmd): Handle OUTPUT_FORMAT.
4952         (ignore_cmd): Remove OUTPUT_FORMAT.
4953         * fileread.cc (Input_file::Input_file): Add explicit this.
4954         (Input_file::will_search_for): New function.
4955         (Input_file::open): Add pindex parameter.  Change all callers.
4956         * fileread.h (class Input_file): Add input_file_argument method.
4957         Declare will_search_for.  Update declarations.
4958         * object.cc (make_elf_object): Add punconfigured parameter.
4959         Change all callers.
4960         * object.h (class Object): Make input_file public.  Add
4961         searched_for method.
4962         (make_elf_object): Update declaration.
4963         * dirsearch.cc (Dirsearch::find): Add pindex parameter.  Use it to
4964         restart search.
4965         * dirsearch.h (class Dirsearch): Update declaration.
4966         * options.h (class General_options): Add --warn-search-mismatch.
4967         * parameters.cc (Parameters::is_compatible_target): New function.
4968         * parameters.h (class Parameters): Declare is_compatible_target.
4969         * workqueue.cc (Workqueue::add_blocker): New function.
4970         * workqueue.h (class Workqueue): Declare add_blocker.
4971
4972         * fileread.cc (Input_file::open): Remove options parameter.
4973         Change all callers.
4974         (Input_file::open_binary): Likewise.
4975         * script.cc (read_input_script): Likewise.
4976         * readsyms.h (class Read_symbols): Remove options_ field.  Remove
4977         options parameter from constructor.  Change all callers.
4978         (class Read_script): Likewise.
4979         * fileread.h (class Input_file): Update declarations.
4980         * script.h (read_input_script): Update declaration.
4981
4982 2009-03-10  Nick Clifton  <nickc@redhat.com>
4983
4984         * po/es.po: New Spanish translation.
4985
4986 2009-03-06  Cary Coutant  <ccoutant@google.com>
4987
4988         * options.cc (parse_short_option): Keep dash_z from registering itself.
4989
4990 2009-03-03  Ian Lance Taylor  <iant@google.com>
4991
4992         PR 9918
4993         * target-reloc.h (relocate_section): Pass output_section to
4994         relocate.
4995         * i386.cc (Target_i386::should_apply_static_reloc): Add
4996         output_section parameter.  Change all callers.
4997         (Target_i386::Relocate::relocate): Add output_section parameter.
4998         * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
4999         * sparc.cc (Target_sparc::Relocate::relocate): Likewise.
5000         * powerpc.cc (Target_powerpc::Relocate::relocate): Likewise.
5001         * testsuite/two_file_shared.sh: New script.
5002         * testsuite/Makefile.am (check_SCRIPTS): Add two_file_shared.sh.
5003         (check_DATA): Add two_file_shared.dbg.
5004         (two_file_shared.dbg): New target.
5005         * testsuite/Makefile.in: Rebuild.
5006
5007 2009-03-01  Ian Lance Taylor  <iant@google.com>
5008
5009         * configure.ac: Check for byteswap.h.
5010         * configure: Rebuild.
5011         * config.in: Rebuild.
5012
5013 2009-03-01  Mikolaj Zalewski  <mikolajz@google.com>
5014
5015         * layout.cc (Layout::find_or_add_kept_section): New function.
5016         (Layout::add_comdat): Removed.
5017         * layout.h (struct Kept_section): Move out of class Layout.
5018         Remove trailing underscores from field names.  Add group_sections
5019         field.  Rename group_ field to is_group.  Change all uses.
5020         (class Layout): Declare find_or_add_kept_section, not add_comdat.
5021         * object.cc (Sized_relobj::Sized_relobj): Don't initialize
5022         comdat_groups_ field.
5023         (Sized_relobj::include_section_group): Use
5024         find_or_add_kept_section and Kept_section::group_sections.
5025         (Sized_relobj::include_linkonce_section): Likewise.
5026         * object.cc (class Sized_relobj): Don't define Comdat_group or
5027         Comdat_group_table.  Remove find_comdat_group and
5028         add_comdat_group.  Remove comdat_groups_ field.
5029         * plugin.cc (include_comdat_group): Use
5030         Layout::find_or_add_kept_section.
5031
5032 2009-02-28  Ian Lance Taylor  <iant@google.com>
5033
5034         * README: --gc-sections and map files are now supported.  Document
5035         some build requirements.
5036
5037         PR 6992
5038         * symtab.cc (Symbol_table::sized_write_section_symbol): In a
5039         relocatable link set the value of the section symbol to zero.
5040         * object.cc (Sized_relobj::do_finalize_local_symbols): In a
5041         relocatable link don't include the section address in the local
5042         symbol value.
5043
5044 2009-02-27  Ian Lance Taylor  <iant@google.com>
5045
5046         PR 6811
5047         * options.h (class Search_directory): Add is_system_directory.
5048         (class General_options): Declare is_in_system_directory.
5049         * options.cc (get_relative_sysroot): Make static.
5050         (get_default_sysroot): Make static.
5051         (General_optoins::is_in_system_directory): New function.
5052         * fileread.cc (Input_file::is_in_system_directory): New function.
5053         * fileread.h (class Input_file): Declare is_in_system_directory.
5054         * object.h (class Object): Add is_in_system_directory.
5055         (class Input_objects): Remove system_library_directory_ field.
5056         * object.cc (Input_objects::add_object): Don't set
5057         system_library_directory_.
5058         (input_objects::found_in_system_library_directory): Remove.
5059         * symtab.cc (Symbol_table::write_globals): Remove input_objects
5060         parameter.  Change all callers.
5061         (Symbol_table::sized_write_globals): Likewise.
5062         (Symbol_table::warn_about_undefined_dynobj_symbol): Likewise.
5063         Call Object::is_in_system_directory.
5064         * symtab.h (class Symbol_table): Update declarations.
5065
5066         PR 5990
5067         * descriptors.h (Open_descriptor): Add is_on_stack field.
5068         * descriptors.cc (Descriptors::open): If the descriptor is on the
5069         top of the stack, remove it.  Initialize is_on_stack field.
5070         (Descriptors::release): Only add pod to stack if it is not on the
5071         stack already.
5072         (Descriptors::close_some_descriptor): Clear stack_next and
5073         is_on_stack fields.
5074
5075         PR 7091
5076         * output.cc (Output_section::find_starting_output_address): Rename
5077         from starting_output_address; add PADDR parameter; change return
5078         type.
5079         * output.h (class Output_section): Declare
5080         find_starting_output_address instead of starting_output_address.
5081         * object.cc (Sized_relobj::do_finalize_local_symbols): Handle a
5082         section symbol for which we can't find a merge section.
5083
5084         PR 9836
5085         * symtab.cc (Symbol_table::add_from_object): If the visibility is
5086         hidden or internal, force the symbol to be local.
5087         * resolve.cc (Symbol::override_visibility): Define.
5088         (Symbol::override_base): Use override_visibility.
5089         (Symbol_table::resolve): Likewise.
5090         (Symbol::override_base_with_special): Likewise.
5091         (Symbol_table::override_with_special): If the visibility is hidden
5092         or internal, force the symbol to be local.
5093         * symtab.h (class Symbol): Add set_visibility and
5094         override_visibility.
5095         * testsuite/ver_test_1.sh: New file.
5096         * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_1.sh.
5097         (check_DATA): Add ver_test_1.syms.
5098         (ver_test_1.syms): New target.
5099         * testsuite/Makefile.in: Rebuild.
5100
5101 2009-02-25  Cary Coutant  <ccoutant@google.com>
5102
5103         * layout.cc (Layout::choose_output_section): Don't rename sections
5104         when using a linker script that has a SECTIONS clause.
5105         * Makefile.in: Regenerate.
5106
5107         * testsuite/Makefile.am (script_test_5.sh): New test case.
5108         * testsuite/Makefile.in: Regenerate.
5109         * testsuite/script_test_5.cc: New file.
5110         * testsuite/script_test_5.sh: New file.
5111         * testsuite/script_test_5.t: New file.
5112
5113 2009-02-13  Rafael Avila de Espindola  <espindola@google.com>
5114
5115         * archive.cc (Archive::include_member): Update calls to add_symbols.
5116         * dynobj.cc (Sized_dynobj<size, big_endian>::make_version_map): Add
5117         the Layout argument.
5118         * dynobj.h (do_add_symbols): Add the Layout argument.
5119         * object.cc (Sized_relobj<size, big_endian>::do_add_symbols): Add the
5120         Layout argument.
5121         * object.h (Object::add_symbols): Add the Layout argument.
5122         (Object::do_add_symbols): Add the Layout argument.
5123         (Sized_relobj::do_add_symbols): Add the Layout argument.
5124         * plugin.cc (Sized_pluginobj<size, big_endian>::do_add_symbols):
5125         Unify the two versions.
5126         (Add_plugin_symbols): Remove.
5127         * plugin.h (Pluginobj::add_symbols, Pluginobj::do_add_symbols): Remove.
5128         (Sized_pluginobj::do_add_symbols): Unify the two versions.
5129         (Add_plugin_symbols): Remove.
5130         * readsyms.cc (Read_symbols::do_read_symbols): Update call to
5131         Add_symbols. Use Add_symbols instead of Add_plugin_symbols.
5132         (Add_symbols::run): Make it work with Pulginobj.
5133
5134 2009-02-06  Ian Lance Taylor  <iant@google.com>
5135
5136         * object.cc (Sized_relobj::do_layout): Make info message start
5137         with lower case letter.
5138
5139 2009-02-06  Mikolaj Zalewski  <mikolajz@google.com>
5140
5141         * binary.cc: Fix file comment.
5142
5143         * options.h (enum Incremental_disposition): Define.
5144         (class General_options): Add new options: --incremental,
5145         --incremental_changed, --incremental_unchanged,
5146         --incremental_unknown.  Add incremental_disposition_ and
5147         implicit_incremental_ fields.
5148         (General_options::incremental_disposition): New function.
5149         (class Position_dependent_options): Add incremental_disposition
5150         option.
5151         (Position_dependent_options::copy_from_options): Set incremental
5152         dispositions.
5153         * options.cc (General_options::parse_incremental_changed): New
5154         function.
5155         (General_options::parse_incremental_unchanged): New function.
5156         (General_options::parse_incremental_unknown): New function.
5157         (General_options::General_options): Initialize new fields
5158         incremental_disposition_ and implicit_incremental_.
5159         (General_options::finalize): Check for uasge of --incremental-*
5160         without --incremental.
5161
5162 2009-02-06  Chris Demetriou  <cgd@google.com>
5163
5164         * gold.h (gold_undefined_symbol): Change to take only a Symbol
5165         pointer and to report location as the file name associated with
5166         the symbol.
5167         (gold_undefined_symbol_at_location): New function to replace the
5168         old gold_undefined_symbol functionality.
5169         * target-reloc.h (relocate_section): Update to use
5170         gold_undefined_symbol_at_location.
5171         * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
5172         Call gold_undefined_symbol function rather than gold_error.
5173         * errors.h (Errors::undefined_symbol): Take location as a
5174         string, rather than calculating it from a relocation.
5175         * errors.cc (Errors::fatal): Print "fatal error:" before the
5176         formatted message.
5177         (Errors::error, Errors::error_at_location): Print "error: "
5178         before the formatted message.
5179         (Errors::undefined_symbol): Take location as a string, rather
5180         than calculating it from a relocation.
5181         (gold_undefined_symbol_at_location): New function akin to
5182         old gold_undefined_symbol, calculates location from relocation.
5183         (gold_undefined_symbol): Change to take only a Symbol pointer
5184         and to report location as the file name associated with the symbol.
5185         * testsuite/debug_msg.sh: Update for changed error messages.
5186         * testsuite/undef_symbol.sh: Likewise.
5187
5188 2009-02-04  Duncan Sands  <baldrick@free.fr>
5189
5190         PR 9812
5191         * reduced_debug_output.h
5192         (Output_reduced_debug_abbrev_section::failed): Use format for
5193         gold_warning.
5194         (Output_reduced_debug_info_section::faild): Likewise.
5195
5196 2009-01-31  Mikolaj Zalewski  <mikolajz@google.com>
5197
5198         * script.cc (Lazy_demangler): New class.
5199         (Version_script_info::get_symbol_version_helper): Demangle a
5200         symbol only once.
5201
5202 2009-01-29  Cary Coutant  <ccoutant@google.com>
5203
5204         * i386.cc (Target_i386::Relocate::relocate): Recognize non-PIC calls
5205         to __tls_get_addr.
5206         * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
5207
5208 2009-01-28  Ian Lance Taylor  <iant@google.com>
5209
5210         * version.cc (version_string): Bump to 1.9.
5211
5212         * gold.h: Include <cstring> and <stdint.h>.
5213         * version.cc: Include <cstdio>.
5214         * object.cc (Sized_relobj::do_layout): Initialize gc_sd to avoid a
5215         warning.
5216         * reduced_debug_output.cc (insert_into_vector): Rename from
5217         Insert_into_vector; change all callers.  Use Swap_unaligned to
5218         avoid aliasing issue; remove union since it is unnecessary.
5219
5220 2009-01-27  Sriraman Tallam  <tmsriram@google.com>
5221
5222         * Makefile.am (CCFILES): Add gc.cc.
5223         (HFILES): Add gc.h.
5224         * Makefile.in: Regenerate.
5225         * gold.cc (Gc_runner): New class.
5226         (queue_initial_tasks): Call garbage collection related tasks
5227         when corresponding options are invoked.
5228         (queue_middle_gc_tasks): New function.
5229         (queue_middle_tasks): Reorder tasks to allow relocs to be read and
5230         processed early before laying out sections during garbage collection.
5231         * gold.h (queue_middle_gc_tasks): New function.
5232         (is_prefix_of): Move from "layout.cc".
5233         * i386.cc (Target_i386::gc_process_relocs): New function.
5234         * layout.cc (is_prefix_of): Remove. Move to "gold.h"
5235         * main.cc (main): Create object of class "Garbage_collection".
5236         * object.cc (Relobj::copy_symbols_data): New function.
5237         (Relobj::is_section_name_included): New function.
5238         (Sized_relobj::do_layout): Allow this function to be called twice 
5239         during garbage collection and defer layout of section during the 
5240         first call.
5241         * object.h (Relobj::get_symbols_data): New function.
5242         (Relobj::is_section_name_included): New function.
5243         (Relobj::copy_symbols_data): New function.
5244         (Relobj::set_symbols_data): New function.
5245         (Relobj::get_relocs_data): New function.
5246         (Relobj::set_relocs_data): New function.
5247         (Relobj::is_output_section_offset_invalid): New pure virtual function.
5248         (Relobj::gc_process_relocs): New function.
5249         (Relobj::do_gc_process_relocs): New pure virtual function.
5250         (Relobj::sd_): New data member.
5251         (Sized_relobj::is_output_section_offset_invalid): New function.
5252         (Sized_relobj::do_gc_process_relocs): New function.
5253         * options.h (General_options::gc_sections): Modify to not be a no-op.
5254         (General_options::print_gc_sections): New option.
5255         * plugin.cc (Plugin_finish::run): Remove function call to
5256         Plugin_manager::layout_deferred_objects.  Move it to "gold.cc".
5257         * powerpc.cc (Target_powerpc::gc_process_relocs): New function.
5258         * reloc.cc (Read_relocs::run): Add task to process relocs and
5259         determine unreferenced sections when doing garbage collection.
5260         (Gc_process_relocs): New class.
5261         (Sized_relobj::do_gc_process_relocs): New function.
5262         (Sized_relobj::do_scan_relocs): Don't try to scan the relocs for
5263         sections that are garbage collected.
5264         * reloc.h (Gc_process_relocs): New class.
5265         * sparc.cc (Target_sparc::gc_process_relocs): New function.
5266         * symtab.cc (Symbol::should_add_dynsym_entry): Do not add entries for
5267         symbols whose corresponding sections are garbage collected.
5268         (Symbol_table::Symbol_table): Add new parameter for the garbage
5269         collection object.
5270         (Symbol_table::gc_mark_undef_symbols): New function.
5271         (Symbol_table::gc_mark_symbol_for_shlib): New function.
5272         (Symbol_table::gc_mark_dyn_syms): New function.
5273         (Symbol_table::resolve): Do not treat symbols seen in dynamic objects
5274         as garbage.
5275         (Symbol_table::add_from_object): Likewise.
5276         (Symbol_table::add_from_relobj): When building shared objects, do not
5277         treat externally visible symbols as garbage.
5278         (Symbol_table::sized_finalize_symbol): Do not check dynamic symbol
5279         table information for static and relocatable links.
5280         * symtab.h (Symbol_table::set_gc): New function.
5281         (Symbol_table::gc): New function.
5282         (Symbol_table::gc_mark_undef_symbols): New function.
5283         (Symbol_table::gc_mark_symbol_for_shlib): New function.
5284         (Symbol_table::gc_mark_dyn_syms): New function.
5285         (Symbol_table::gc_): New data member.
5286         * target.h (Sized_target::gc_process_relocs): New pure virtual 
5287         function.
5288         * x86_64.cc (Target_x86_64::gc_process_relocs): New function.
5289         * testsuite/testfile.cc (Target_test::gc_process_relocs): New function.
5290
5291 2009-01-20  Chris Faylor <me.sourceware@sourceware.org>
5292
5293         * options.h (General_options::gc_sections): Define as a no-op for now.
5294         (General_options::no_keep_memory): Ditto.
5295         (General_options::Bshareable): Define.
5296         * options.cc (General_options::finalize): Honor -Bshareable.
5297
5298 2009-01-20  Andreas Schwab  <schwab@suse.de>
5299
5300         * powerpc.cc (Powerpc_relocate_functions::rel16_ha): Don't try to
5301         read the value in the contents, since we don't use it.  Use the
5302         template endianness when writing.
5303         (Relocate::relocate): Use it for R_PPC_REL16_HA.
5304
5305 2009-01-19  Andreas Schwab  <schwab@suse.de>
5306
5307         * configure.tgt (powerpc64-*): Fix targ_obj.
5308
5309 2009-01-15  Ian Lance Taylor  <iant@google.com>
5310
5311         * object.cc (Sized_relobj::write_local_symbols): Don't write out
5312         local symbols when stripping all symbols.
5313
5314 2009-01-14  Cary Coutant  <ccoutant@google.com>
5315
5316         * output.cc (Output_reloc): Add explicit instantiations.
5317
5318 2009-01-14  Cary Coutant  <ccoutant@google.com>
5319
5320         * archive.cc (Archive::get_elf_object_for_member): Remove call
5321         to File_read::claim_for_plugin.
5322         * descriptors.cc (Descriptors::open): Remove reference to
5323         is_claimed.
5324         (Descriptors::claim_for_plugin): Remove.
5325         * descriptors.h (Descriptors::claim_for_plugin): Remove.
5326         (Descriptors::is_claimed): Remove.
5327         (claim_descriptor_for_plugin): Remove.
5328         * fileread.cc (File_read::claim_for_plugin): Remove.
5329         * fileread.h (File_read::claim_for_plugin): Remove.
5330         (File_read::descriptor): Reopen descriptor if necessary.
5331         * plugin.cc  (Plugin::load): Add two new APIs to transfer vector.
5332         (Plugin_manager::all_symbols_read): Add task parameter. Change
5333         all callers.
5334         (Plugin_manager::get_input_file): New function.
5335         (Plugin_manager::release_input_file): New function.
5336         (Pluginobj::Pluginobj): Add filesize parameter and initialize
5337         corresponding data member.
5338         (Sized_pluginobj::Sized_pluginobj): Add filesize parameter
5339         and pass to base constructor. Change all callers.
5340         (get_input_file, release_input_file): New functions.
5341         (make_sized_plugin_object): Add filesize parameter. Change all callers.
5342         * plugin.h (Plugin_manager::Plugin_manager): Initialize task_ member.
5343         (Plugin_manager::all_symbols_read): Add task parameter.
5344         (Plugin_manager::get_input_file): New function.
5345         (Plugin_manager::release_input_file): New function.
5346         (Plugin_manager::task_): New data member.
5347         (Pluginobj::Pluginobj): Add filesize parameter.
5348         (Pluginobj::filename): New function.
5349         (Pluginobj::descriptor): New function.
5350         (Pluginobj::filesize): New function.
5351         (Pluginobj::filesize_): New data member.
5352         (Sized_pluginobj::Sized_pluginobj): Add filesize parameter.
5353         * readsyms.cc (Read_symbols::do_read_symbols): Remove call to
5354         File_read::claim_for_plugin; use Object::unlock to unlock the file.
5355
5356         * testsuite/Makefile.am (plugin_test_4): New test case for plugins
5357         with archive libraries.
5358         * testsuite/Makefile.in: Regenerate.
5359         * testsuite/plugin_test.c (struct sym_info): New type.
5360         (get_input_file, release_input_file): New static variables.
5361         (onload): Capture new transfer vector entries.
5362         (claim_file_hook): Stop reading at end of file according to filesize.
5363         Factor out parsing of readelf output into separate function.
5364         (all_symbols_read_hook): Exercise get_input_file and release_input_file
5365         APIs and get the source file name from the symbol table.  Convert
5366         source file name to corresponding object file name.  Print info
5367         message when adding new input files.
5368         (parse_readelf_line): New function.
5369         * testsuite/plugin_test_1.sh: Add checks for new info messages.
5370         * testsuite/plugin_test_2.sh: Likewise.
5371         * testsuite/plugin_test_3.sh: Likewise.
5372         * testsuite/plugin_test_4.sh: New test case.
5373
5374 2009-01-07  Ian Lance Taylor  <iant@google.com>
5375
5376         * version.cc (version_string): Bump to 1.8.
5377
5378 2008-12-23  Cary Coutant  <ccoutant@google.com>
5379
5380         * gold.cc (gold_exit): Call plugin cleanup handlers on exit.
5381         * plugin.cc (Plugin_manager::finish): Rename as
5382         layout_deferred_objects.  Move cleanup to separate function.
5383         (Plugin_manager::cleanup): New function.
5384         (Plugin_finish::run): Call layout_deferred_objects and cleanup
5385         separately.
5386         * plugin.h (Plugin_manager::finish): Rename as
5387         layout_deferred_objects.
5388         (Plugin_manager::cleanup): New function.
5389         (Plugin_manager::cleanup_done): New field.
5390
5391 2008-12-23  Cary Coutant  <ccoutant@google.com>
5392
5393         * plugin.cc (is_visible_from_outside): New function.
5394         (Pluginobj::get_symbol_resolution_info): Call is_visible_from_outside
5395         so we don't return "IR only" status for exported symbols or -r links.
5396
5397         * testsuite/Makefile.am (plugin_test_3): New test case.
5398         * testsuite/Makefile.in: Regenerate.
5399         * testsuite/plugin_test_3.sh: New file.
5400
5401 2008-12-22  Cary Coutant  <ccoutant@google.com>
5402
5403         * object.cc (Sized_relobj::layout_section): New function.
5404         (Sized_relobj::do_layout): Defer layout of input sections until after
5405         plugin has provided replacement files.
5406         (Sized_relobj::do_layout_deferred_sections): New function.
5407         * object.h (Relobj::set_section_offset): Remove virtual keyword.
5408         (Relobj::layout_deferred_sections): New function.
5409         (Relobj::do_layout_deferred_sections): New function.
5410         (Sized_relobj::do_layout_deferred_sections): New function.
5411         (Sized_relobj::layout_section): New function.
5412         (Sized_relobj::Deferred_layout): New structure.
5413         (Sized_relobj::deferred_layout_): New field.
5414         * plugin.cc (Plugin_manager::finish): Renamed, was cleanup.
5415         Change all callers.  Layout deferred sections.
5416         (class Plugin_finish): Renamed, was Plugin_cleanup.  Change all
5417         references.
5418         (Plugin_hook::run): Move code from do_plugin_hook inline.
5419         (Plugin_hook::do_plugin_hook): Remove.
5420         * plugin.h (Plugin_manager::Plugin_manager): Add missing initializers.
5421         (Plugin_manager::finish): Renamed, was cleanup.
5422         (Plugin_manager::should_defer_layout): New function.
5423         (Plugin_manager::add_deferred_layout_object): New function.
5424         (Plugin_manager::Deferred_layout_list): New type.
5425         (Plugin_manager::deferred_layout_objects_): New field.
5426         (Plugin_hook::do_plugin_hook): Remove.
5427
5428 2008-12-17  Ian Lance Taylor  <iant@google.com>
5429
5430         * options.h (class General_options): Add --no case for
5431         --export-dynamic.
5432
5433 2008-12-16  Cary Coutant  <ccoutant@google.com>
5434
5435         * plugin.cc (Plugin::load): Move LDPT_MESSAGE to front of transfer
5436         vector.
5437         (Plugin_manager::claim_file): Create plugin object even if
5438         plugin did not call the add_symbols callback.
5439         (Plugin_obj::get_symbol_resolution_info): Guard against plugin
5440         asking for more symbols than were added.
5441         * testsuite/Makefile.am (plugin_test_1): Add test case with
5442         no global symbols.
5443         (empty.syms): New target.
5444         * testsuite/Makefile.in: Regenerate.
5445         * testsuite/plugin_test.c (claim_file_hook): Add new debug
5446         message. Don't call add_symbols if no globals.
5447         (all_symbols_read_hook): Don't provide replacement for empty
5448         claimed file.
5449
5450 2008-12-12  Ian Lance Taylor  <iant@google.com>
5451
5452         * target-reloc.h (Default_scan_relocatable_relocs): Only discard
5453         r_type == 0 for a local symbol with r_sym == 0.
5454         (scan_relocatable_relocs): Pass r_sym to
5455         local_non_section_strategy.
5456         * reloc.cc (Emit_relocs_strategy::local_non_section_strategy): Add
5457         r_sym parameter.
5458
5459         * configure.ac: Update test for TLS descriptors: they are
5460         supported as of glibc 2.9.
5461         * configure: Rebuild.
5462
5463 2008-12-11  Ian Lance Taylor  <iant@google.com>
5464
5465         PR 7091
5466         * target-reloc.h (Default_scan_relocatable_relocs): For each
5467         function, map r_type == 0 to RELOC_DISCARD.
5468
5469 2008-12-10  Cary Coutant  <ccoutant@google.com>
5470
5471         * layout.cc (Layout::add_comdat): Allow COMDAT group from a replacement
5472         object to override a kept COMDAT group from a plugin object.
5473
5474 2008-12-09  Ian Lance Taylor  <iant@google.com>
5475
5476         PR 7088
5477         * yyscript.y (file_cmd): Handle INPUT.
5478
5479         * testsuite/initpri1.c: Change all declarations to be full
5480         prototypes by adding void, to avoid compiler warnings.
5481
5482 2008-12-05  Rafael Avila de Espindola  <espindola@google.com>
5483
5484         * options.cc (General_options::parse_plugin_opt): New.
5485         (General_options::add_plugin): The argument now is just the filename.
5486         (General_options::add_plugin_option): New.
5487         * options.h (plugin_opt): New.
5488         (add_plugin): Change argument name.
5489         (add_plugin_option): New.
5490         * plugin.cc (Plugin::load): Don't parse the plugin option.
5491         * plugin.h (Plugin::Plugin): Rename argument. Init filename_.
5492         (Plugin::add_option): New.
5493         (Plugin::args_): Change type.
5494         (Plugin::filename_): New.
5495         (Plugin_manager::add_plugin_option): New.
5496         * testsuite/Makefile.am (plugin_test_1): Use new syntax.
5497         * testsuite/Makefile.in: Regenerate.
5498
5499 2008-12-05  Cary Coutant  <ccoutant@google.com>
5500
5501         * layout.cc (Layout::include_section): Check for SHF_EXCLUDE.
5502         Handle --strip-lto-sections option.
5503         * options.h (strip_lto_sections): New option.
5504
5505 2008-12-01  Cary Coutant  <ccoutant@google.com>
5506
5507         * plugin.cc (ld_plugin_message): Change format parameter to const.
5508         Fix mismatch between new[] and delete.
5509
5510 2008-11-14  Cary Coutant  <ccoutant@google.com>
5511
5512         * reloc.cc (Sized_relobj::do_read_relocs): Use constant invalid_address
5513         instead of -1U.
5514
5515 2008-11-05  Craig Silverstein  <csilvers@google.com>
5516
5517         * options.cc (General_options::parse_dynamic_list): New function.
5518         * options.h (General_options): New flags dynamic_list,
5519         dynamic_list_data, dynamic_list_cpp_new, and
5520         dynamic_list_cpp_typeinfo.  New variable dynamic_list_.
5521         (General_options::in_dynamic_list): New function.
5522         * script.cc (Lex::Mode): New enum DYNAMIC_LIST.
5523         (Lex::can_start_name): Add support for DYNAMIC_LIST mode.
5524         (Lex::can_continue_name): Likewise.
5525         (yylex): Likewise.
5526         (read_script_file): New parameter script_options.
5527         (read_dynamic_list): New function.
5528         (Script_options::define_dynamic_list): New function.
5529         (dynamic_list_keyword_parsecodes): New variable.
5530         (dynamic_list_keywords): New variable.
5531         * script.h (Script_options::define_dynamic_list): New function
5532         prototype.
5533         (read_dynamic_list): New function prototype.
5534         * symtab.cc (strprefix): New macro.
5535         (Symbol::should_add_dynsym_entry): Support dynamic_list,
5536         dynamic_list_data, dynamic_list_cpp_new, and
5537         dynamic_list_cpp_typeinfo.
5538         * yyscript.y (PARSING_DYNAMIC_LIST): New token.
5539         (dynamic_list_expr): New rule.
5540         (dynamic_list_nodes): Likewise.
5541         (dynamic_list_node): Likewise.
5542         * testsuite/Makefile.am (dynamic_list): New test.
5543         * testsuite/Makefile.in: Regenerated.
5544         * testsuite/dynamic_list.t: New file.
5545         * testsuite/dynamic_list.sh: New file.
5546
5547 2008-11-05  Craig Silverstein  <csilvers@google.com>
5548
5549         * testsuite/tls_test_c.c: Add prototype for t11 and t11_last.
5550         * testsuite/tls_test_c.c (t11): Add explicit "void" to prototype.
5551         (t11_last): Likewise.
5552         * testsuite/ver_test_6.c (main): Likewise.
5553
5554 2008-10-07  Cary Coutant  <ccoutant@google.com>
5555
5556         * options.c (General_options::finalize): Add check for -static and
5557         -shared.
5558         * gold.cc (queue_middle_tasks): Assert that list of dynamic objects
5559         is not empty.
5560
5561 2008-10-02  Cary Coutant  <ccoutant@google.com>
5562
5563         * plugin.cc (make_sized_plugin_object): Fix conditional
5564         compilation to work when not all targets are enabled.
5565
5566 2008-09-29  Cary Coutant  <ccoutant@google.com>
5567
5568         * archive.cc (Archive::get_file_and_offset): Use filename instead
5569         of name to get library path.
5570         (Archive::include_member): Unlock external member of a thin archive.
5571
5572         * testsuite/Makefile.am (TEST_AR): New variable.
5573         (thin_archive_test_1): New test.
5574         (thin_archive_test_2): New test.
5575         * testsuite/Makefile.in: Regenerate.
5576         * testsuite/thin_archive_main.cc: New file.
5577         * testsuite/thin_archive_test_1.cc: New file.
5578         * testsuite/thin_archive_test_2.cc: New file.
5579         * testsuite/thin_archive_test_3.cc: New file.
5580         * testsuite/thin_archive_test_4.cc: New file.
5581
5582 2008-09-29  Cary Coutant  <ccoutant@google.com>
5583
5584         * mapfile.cc (Mapfile::print_input_section): Change -1U to -1ULL.
5585         * object.cc (Sized_relobj::do_layout): Use constant invalid_address
5586         instead of -1U.
5587         (Sized_relobj::do_finalize_local_symbols): Likewise.
5588         (Sized_relobj::map_to_kept_section): Likewise.
5589         * object.h (Sized_relobj::invalid_address): New constant.
5590         (Sized_relobj::do_output_section_offset): Check for invalid_address
5591         and return -1ULL.
5592         * output.cc (Output_reloc::local_section_offset): Use constant
5593         invalid_address instead of -1U.
5594         (Output_reloc::get_address): Likewise.
5595         (Output_section::output_address): Change -1U to -1ULL.
5596         * output.h (Output_reloc::invalid_address): New constant.
5597         * reloc.cc (Sized_relobj::write_sections): Use constant
5598         invalid_address instead of -1U.
5599         (Sized_relobj::relocate_sections): Likewise.
5600         * symtab.cc (Symbol_table::sized_finalize_symbol): Handle symbol
5601         values for merge sections.
5602         * target-reloc.h (relocate_for_relocatable): Use constant
5603         invalid_address instead of -1U.
5604
5605 2008-09-19  Cary Coutant  <ccoutant@google.com>
5606
5607         Add plugin functionality for link-time optimization (LTO).
5608         * configure.ac (plugins): Add --enable-plugins option.
5609         * configure: Regenerate.
5610         * config.in: Regenerate.
5611         * Makefile.am (LIBDL): New variable.
5612         (CCFILES): Add plugin.cc.
5613         (HFILES): Add plugin.h.
5614         (ldadd_var): Add LIBDL.
5615         * Makefile.in: Regenerate.
5616
5617         * archive.cc: Include "plugin.h".
5618         (Archive::setup): Don't preread archive symbols when using a plugin.
5619         (Archive::get_file_and_offset): Add memsize parameter.  Change callers.
5620         (Archive::get_elf_object_for_member): Call plugin hooks for claiming
5621         files.
5622         (Archive::include_member): Add symbols from plugin objects.
5623         * archive.h (Archive::get_file_and_offset): Add memsize parameter.
5624         * descriptors.cc (Descriptors::open): Check for file descriptors
5625         abandoned by plugins.
5626         (Descriptors::claim_for_plugin): New function.
5627         * descriptors.h (Descriptors::claim_for_plugin): New function.
5628         (Open_descriptor::is_claimed): New field.
5629         (claim_descriptor_for_plugin): New function.
5630         * fileread.cc (File_read::claim_for_plugin): New function.
5631         * fileread.h (File_read::claim_for_plugin): New function.
5632         (File_read::descriptor): New function.
5633         * gold.cc: Include "plugin.h".
5634         (queue_initial_tasks): Add task to call plugin hooks for generating
5635         new object files.
5636         * main.cc: Include "plugin.h".
5637         (main): Load plugin libraries.
5638         * object.h (Pluginobj): Declare.
5639         (Object::pluginobj): New function.
5640         (Object::do_pluginobj): New function.
5641         (Object::set_target): New function.
5642         * options.cc: Include "plugin.h".
5643         (General_options::parse_plugin): New function.
5644         (General_options::General_options): Initialize plugins_ field.
5645         (General_options::add_plugin): New function.
5646         * options.h (Plugin_manager): Declare.
5647         (General_options): Add --plugin option.
5648         (General_options::has_plugins): New function.
5649         (General_options::plugins): New function.
5650         (General_options::add_plugin): New function.
5651         (General_options::plugins_): New field.
5652         * plugin.cc: New file.
5653         * plugin.h: New file.
5654         * readsyms.cc: Include "plugin.h".
5655         (Read_symbols::do_read_symbols): Check for archive before checking
5656         for ELF file.  Call plugin hooks to claim files.
5657         * resolve.cc (Symbol_table::resolve): Record when symbol is referenced
5658         from a real object file; force override when processing replacement
5659         files.
5660         * symtab.cc (Symbol::init_fields): Initialize in_real_elf_ field.
5661         (Symbol::init_base_object): Likewise.
5662         (Symbol::init_base_output_data): Likewise.
5663         (Symbol::init_base_output_segment): Likewise.
5664         (Symbol::init_base_constant): Likewise.
5665         (Symbol::init_base_undefined): Likewise.
5666         (Symbol::output_section): Assert that object is not a plugin.
5667         (Symbol_table::add_from_pluginobj): New function.
5668         (Symbol_table::sized_finalize_symbol): Treat symbols from plugins as
5669         undefined.
5670         (Symbol_table::sized_write_globals): Likewise.
5671         (Symbol_table::add_from_pluginobj): Instantiate template.
5672         * symtab.h (Sized_pluginobj): Declare.
5673         (Symbol::in_real_elf): New function.
5674         (Symbol::set_in_real_elf): New function.
5675         (Symbol::in_real_elf_): New field.
5676         (Symbol_table::add_from_pluginobj): New function.
5677
5678         * testsuite/Makefile.am (AM_CFLAGS): New variable.
5679         (LIBDL): New variable.
5680         (LDADD): Add LIBDL.
5681         (check_PROGRAMS): Add plugin_test_1 and plugin_test_2.
5682         (check_SCRIPTS): Add plugin_test_1.sh and plugin_test_2.sh.
5683         (check_DATA): Add plugin_test_1.err and plugin_test_2.err.
5684         (MOSTLYCLEANFILES): Likewise.
5685         * testsuite/Makefile.in: Regenerate.
5686         * testsuite/plugin_test.c: New file.
5687         * testsuite/plugin_test_1.sh: New file.
5688         * testsuite/plugin_test_2.sh: New file.
5689
5690 2008-09-16  Ian Lance Taylor  <iant@google.com>
5691
5692         * target-reloc.h (relocate_section): Check whether a symbol is
5693         defined by the ABI before reporting an undefined symbol error.
5694         * target.h (Target::is_defined_by_abi): Make parameter const.
5695         (Target::do_is_defined_by_abi): Likewise.
5696         * i386.cc (Target_i386::do_is_defined_by_abi): Likewise.
5697         * powerpc.cc (Target_powerpc::do_is_defined_by_abi): Likewise.
5698         * sparc.cc (Target_sparc::do_is_defined_by_abi): Likewise.
5699         * x86_64.cc (Target_x86_64::do_is_defined_by_abi): Likewise.
5700         * testsuite/Makefile.am (tls_test_shared.so): Add -Wl,-z,defs.
5701         * testsuite/Makefile.in: Rebuild.
5702
5703         * fileread.cc (make_view): Add casts to avoid warning.
5704
5705 2008-09-16  Alexandre Oliva  <aoliva@redhat.com>
5706
5707         * i386.cc (Target_i386::define_tls_base_symbol): Update comments.
5708         * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
5709
5710 2008-09-16  Alexandre Oliva  <aoliva@redhat.com>
5711
5712         * options.h (General_options::output_is_executable): New.
5713         (General_options::output_is_pie): New.
5714         * i386.cc (Target_i386::define_tls_base_symbol): Use SEGMENT_START
5715         for shared libraries.
5716         * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
5717
5718 2008-09-11  Chris Demetriou  <cgd@google.com>
5719
5720         * options.h (origin): New -z option.
5721         * layout.cc (Layout:finish_dynamic_section): If "-z origin"
5722         is specified, set DF_ORIGIN in DT_FLAGS and set DF_1_ORIGIN
5723         in DT_FLAGS_1.
5724
5725 2008-09-05  Cary Coutant  <ccoutant@google.com>
5726
5727         * fileread.cc (File_read::make_view): Add check for attempt to map
5728         beyond end of file.
5729
5730 2008-09-05  Cary Coutant  <ccoutant@google.com>
5731
5732         * symtab.cc (Symbol_table::add_from_dynobj): Fix typos in
5733         explicit instantiations.
5734
5735 2008-08-28  Kris Van Hees  <kris.van.hees@oracle.com>
5736
5737         PR gold/6858
5738         * options.cc (General_options::finalize): Allow undefined symbols
5739         in shlibs if linking -shared.
5740
5741         PR gold/6859
5742         * symtab.cc (Symbol::init_base_undefined): Mark explicitly undefined
5743         symbols as not needing a dynsym entry.
5744
5745 2008-08-20  Craig Silverstein  <csilvers@google.com>
5746
5747         * fileread.cc (File_read::open): Do not lock the file unless it
5748         was successfully opened.
5749
5750 2008-08-14  Cary Coutant  <ccoutant@google.com>
5751
5752         * x86_64.cc (Target_x86_64::Relocate::relocat_tls):
5753         Use addend for DTPOFF32, DTPOFF64, and TPOFF32 relocs.
5754         * testsuite/tls_test.cc (struct int128): 128-bit struct
5755         for testing TLS relocs with non-zero addend.
5756         (v12): New TLS variable.
5757         (t12): New test.
5758         (t_last): Add check for v12.
5759         * testsuite/tls_test.h (t12): New function.
5760         * testsuite/tls_test_main.cc (thread_routine): Call new test.
5761
5762 2008-08-13  Ian Lance Taylor  <iant@google.com>
5763
5764         * layout.cc (Layout::attach_allocated_section_to_segment): Don't
5765         set tls_segment_ or relro_segment_.
5766         (Layout::make_output_segment): Set tls_segment_ and relro_segment_
5767         when appropriate.
5768         * output.h (Output_section::clear_is_relro): New function.
5769         * output.cc (Output_segment::add_output_section): Handle SHF_TLS
5770         sections specially even when output_data_ is empty.
5771         (Output_segment::maximum_alignment): When first section is relro,
5772         only force alignment for PT_LOAD segments.
5773         * script.cc (script_data_segment_align): New function.
5774         (script_data_segment_relro_end): New function.
5775         * script-c.h (script_data_segment_align): Declare.
5776         (script_data_segment_relro_end): Declare.
5777         * script-sections.h (class Script_sections): Declare
5778         data_segment_align and data_segment_relro_end.  Add fields
5779         segment_align_index_ and saw_relro_end_.
5780         * script-sections.cc (class Sections_element): Add set_is_relro
5781         virtual function.  Add new bool* parameter to place_orphan_here.
5782         Add get_output_section virtual function.
5783         (class Output_section_definition): Add set_is_relro.  Add new
5784         bool* parameter to place_orphan_here.  Add get_output_section.
5785         Add is_relro_ field.
5786         (Output_section_definition::Output_section_definition): Initialize
5787         evaluated_address_, evaluated_load_address, evaluated_addralign_,
5788         and is_relro_ fields.
5789         (Output_section_definition::place_orphan_here): Add is_relro
5790         parameter.
5791         (Output_section_definition::set_section_addresses): Set relro for
5792         output section.
5793         (Output_section_definition::alternate_constraint): Likewise.
5794         (class Orphan_output_section): Add new bool* parameter to
5795         place_orphan_here.  Add get_output_section.
5796         (Orphan_output_section::place_orphan_here): Add is_relro
5797         parameter.
5798         (Script_sections::Script_sections): Initialize
5799         data_segment_align_index_ and saw_relro_end_.
5800         (Script_sections::data_segment_align): New function.
5801         (Script_sections::data_segment_relro_end): New function.
5802         (Script_sections::place_orphan): Set or clear is_relro.
5803         (Script_sections::set_section_addresses): Force alignment of first
5804         TLS section.
5805         * yyscript.y (exp): Call script_data_segment_align and
5806         script_data_segment_relro_end.
5807         * testsuite/relro_script_test.t: New file.
5808         * testsuite/relro_test.cc (using_script): Declare.
5809         (t1, t2): Test using_script.
5810         * testsuite/Makefile.am (check_PROGRAMS): Add relro_script_test.
5811         (relro_script_test_SOURCES): Define.
5812         (relro_script_test_DEPENDENCIES): Define.
5813         (relro_script_test_LDFLAGS): Define.
5814         (relro_script_test_LDADD): Define.
5815         (relro_script_test.so): New target.
5816         * testsuite/Makefile.in: Rebuild.
5817
5818 2008-08-06  Cary Coutant <ccoutant@google.com>
5819
5820         * archive.cc (Archive::total_archives, Archive::total_members)
5821         (Archive::total_members_loaded): New variables.
5822         (Archive::setup): Add parameter.  Add option to preread
5823         archive symbols.
5824         (Archive::read_armap): Add counter.
5825         (Archive::get_file_and_offset): New function.
5826         (Archive::get_elf_object_for_member): New function.
5827         (Archive::read_all_symbols): New function.
5828         (Archive::read_symbols): New function.
5829         (Archive::add_symbols): Add counters.
5830         (Archive::include_all_members): Use armap to find members if it's
5831         already built.
5832         (Archive::include_member): Skip reading symbols if already read.
5833         Factored code into Archive::get_file_and_offset and
5834         Archive::get_elf_object_for_member.  Changed call to
5835         Mapfile::report_include_archive_member.
5836         (Archive::print_stats): New function.
5837         * archive.h: Declare Object and Read_symbols_data classes.
5838         (Archive::Archive): Add initializers for new members.
5839         (Archive::setup): Add parameter.
5840         (Archive::print_stats): New function.
5841         (Archive::total_archives, Archive::total_members)
5842         (Archive::total_members_loaded): New variables.
5843         (Archive::get_file_and_offset): New function.
5844         (Archive::get_elf_object_for_member): New function.
5845         (Archive::read_all_symbols): New function.
5846         (Archive::read_symbols): New function.
5847         (Archive::Archive_member): New class.
5848         (Archive::members_): New member.
5849         (Archive::num_members_): New member.
5850         * main.cc: Include archive.h.
5851         (main): Call Archive::print_stats.
5852         * mapfile.cc (Mapfile::report_include_archive_member): Delete
5853         archive parameter; member_name is now the fully-decorated name.
5854         * mapfile.h (Mapfile::report_include_archive_member): Likewise.
5855         * options.h: (General_options): Add --preread-archive-symbols option.
5856         * readsyms.cc (Read_symbols::do_read_symbols): Change call to
5857         Archive::setup.
5858
5859 2008-08-04  Ian Lance Taylor  <iant@google.com>
5860
5861         * symtab.h (Symbol::use_plt_offset): New function.
5862         * i386.cc (Relocate::relocate): Call Symbol::use_plt_offset.
5863         * powerpc.cc (Relocate::relocate): Likewise.
5864         * sparc.cc (Relocate::relocate): Likewise.
5865         * x86_64.cc (Relocate::relocate): Likewise.
5866         * testsuite/weak_plt.sh: New test.
5867         * testsuite/weak_plt_main.cc: New test.
5868         * testsuite/weak_plt_shared.cc: New test.
5869         * testsuite/Makefile.am (check_SCRIPTS): Add weak_plt.sh.
5870         (check_PROGRAMS): Add weak_plt.
5871         (check_DATA): Add weak_plt_shared.so.
5872         (weak_plt_main_pic.o, weak_plt): New targets.
5873         (weak_plt_shared_pic.o, weak_plt_shared.so): New targets.
5874         * testsuite/Makefile.in: Rebuild.
5875
5876         * testsuite/Makefile.am (weak_alias_test_1.so): Depend upon
5877         gcctestdir/ld.
5878         (weak_alias_test_2.so, weak_alias_test_4.so): Likewise.
5879         * testsuite/Makefile.in: Rebuild.
5880
5881 2008-08-04  Alan Modra  <amodra@bigpond.net.au>
5882
5883         * Makefile.am (POTFILES.in): Set LC_ALL=C.
5884         * Makefile.in: Regenerate.
5885         * po/POTFILES.in: Regenerate.
5886
5887 2008-07-29  Ian Lance Taylor  <iant@google.com>
5888
5889         * script.cc (Script_options::finalize_symbols): Finalize SECTIONS
5890         symbols before other symbols.
5891         * testsuite/script_test_2.cc (test_addr): Declare.
5892         (test_addr_alias): Declare.
5893         (main): Check that test_addr and test_addr_alias have the right
5894         values.
5895         * testsuite/script_test_2.t: Define test_addr_alias and
5896         test_addr.
5897
5898 2008-07-24  Ian Lance Taylor  <iant@google.com>
5899
5900         PR 5990
5901         * descriptors.cc: New file.
5902         * descriptors.h: New file.
5903         * gold-threads.h (class Hold_optional_lock): New class.
5904         * fileread.cc: Include "descriptors.h".
5905         (File_read::~File_read): Release descriptor rather than closing
5906         it.
5907         (File_read::open) [file]: Call open_descriptor rather than open.
5908         Set is_descriptor_opened_.
5909         (File_read::open) [memory]: Assert that descriptor is not open.
5910         (File_read::reopen_descriptor): New function.
5911         (File_read::release): Release descriptor.
5912         (File_read::do_read): Make non-const.  Reopen descriptor.
5913         (File_read::read): Make non-const.
5914         (File_read::make_view): Reopen descriptor.
5915         (File_read::do_readv): Likewise.
5916         * fileread.h (class File_read): Add is_descriptor_opened_ field.
5917         Update declarations.
5918         * layout.cc: Include "descriptors.h".
5919         (Layout::create_build_id): Use open_descriptor rather than open.
5920         * output.cc: Include "descriptors.h".
5921         (Output_file::open): Use open_descriptor rather than open.
5922         * archive.cc (Archive::const_iterator): Change Archive to be
5923         non-const.
5924         (Archive::begin, Archive::end): Make non-const.
5925         (Archive::count_members): Likewise.
5926         * archive.h (class Archive): Update declarations.
5927         * object.h (Object::read): Make non-const.
5928         * Makefile.am (CCFILES): Add descriptors.cc.
5929         (HFILES): Add descriptors.h.
5930         * Makefile.in: Rebuild.
5931
5932         PR 6716
5933         * gold.h: Always include <clocale>.  Add Solaris workarounds
5934         following code in binutils/sysdep.h.
5935
5936         PR 6048
5937         * ehframe.cc (Eh_frame::add_ehframe_input_section): Check whether
5938         this->eh_frame_hdr_ is NULL before using it.
5939
5940         * dynobj.cc (Versions::Versions): Update comment.
5941
5942         * dynobj.cc (Versions::Versions): If there is an soname, use it as
5943         the base version name.
5944
5945         * stringpool.cc (Stringpool_template::add_with_length): Set key to
5946         array size plus one.
5947         (Stringpool_template::set_string_offsets): Subtract one from key
5948         before using it as an array index.
5949         (Stringpool_template::get_offset_with_length): Likewise.
5950         (Stringpool_template::write_to_buffer): Likewise.
5951         * stringpool.h (Stringpool_template::get_offset_from_key):
5952         Likewise.
5953
5954 2008-07-23  Ian Lance Taylor  <iant@google.com>
5955
5956         PR 6658
5957         * object.h (Merged_symbol_value::value): Do our best to handle a
5958         negative addend.
5959
5960         PR 6647
5961         * script.cc (Version_script_info::get_versions): Don't add empty
5962         version tag to return value.
5963         (Version_script_info::get_symbol_version_helper): Change return
5964         type to bool.  Add pversion parameter.  Change all callers.
5965         (script_register_vers_node): Don't require a non-NULL tag.
5966         * script.h (class Version_script_info): Update declarations.
5967         (Version_script_info::get_symbol_version): Change return type to
5968         bool.  Add version parameter.  Change all callers.
5969         * symtab.cc (Sized_symbol::add_from_relobj): Rework version
5970         handling.  Handle an empty version from a version script.
5971         (Symbol_table::define_special_symbol): Likewise.
5972         * testsuite/ver_test_10.script: New file.
5973         * testsuite/ver_test_10.sh: New file.
5974         * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_10.sh.
5975         (check_DATA): Add ver_test_10.syms.
5976         (ver_test_10.syms, ver_test_10.so): New target.
5977         * testsuite/Makefile.in: Rebuild.
5978
5979 2008-07-23  Simon Baldwin  <simonb@google.com>
5980
5981         * symtab.cc (Symbol_table::sized_write_symbol): Only set st_size
5982         to zero for undefined symbols from dynamic libraries.
5983
5984 2008-07-23  Ian Lance Taylor  <iant@google.com>
5985
5986         * symtab.cc (Symbol_table::resolve): Remove version parameter.
5987         Change all callers.
5988         * symtab.h (class Symbol_table): Update declaration.
5989         * testsuite/ver_test_9.cc: New file.
5990         * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_9.
5991         (ver_test_9_SOURCES, ver_test_9_DEPENDENCIES): Define.
5992         (ver_test_9_LDFLAGS, ver_test_9_LDADD): Define.
5993         (ver_test_9.so, ver_test_9.o): New targets.
5994         * testsuite/Makefile.in: Rebuild.
5995
5996 2008-07-22  Ian Lance Taylor  <iant@google.com>
5997
5998         * options.h (class General_options): Define --check-sections.
5999         * layout.cc (Layout::set_segment_offsets): Handle
6000         --check-sections.
6001
6002         * options.h (class General_options): Define -n/--nmagic and
6003         -N/--omagic.
6004         * options.cc (General_options::finalize): For -n/--nmagic or
6005         -N/--omagic, set -static.
6006         * layout.cc (Layout::attach_allocated_section_to_segment): If
6007         -N/--omagic, don't put read-only and read-write sections in
6008         different segments.
6009         (Layout::find_first_load_seg): If -N/--omagic, don't insist on
6010         finding a read-only segment.
6011         (Layout::set_segment_offsets): If -N/--omagic or -n/--nmagic,
6012         don't set the minimum segment alignment to the common page size,
6013         and don't set the file offset to the address modulo the page size.
6014         * script-sections.cc (Script_sections::create_segments): If
6015         -n/--omagic, don't put read-only and read-write sections in
6016         different segments.
6017
6018         * cref.cc: New file.
6019         * cref.h: New file.
6020         * options.h (class General_options): Add --print-symbol-counts.
6021         * main.cc (main): Issue defined symbol report if requested.
6022         * archive.cc (Archive::interpret_header): Make into a const member
6023         function.
6024         (Archive::add_symbols): Call Input_objects::archive_start and
6025         archive_stop.
6026         (Archive::const_iterator): Define new class.
6027         (Archive::begin, Archive::end): New functions.
6028         (Archive::include_all_members): Rewrite to use iterator.
6029         (Archive::count_members): New function.
6030         * archive.h (class Archive): Update declarations.
6031         (Archive::filename): New function.
6032         * object.cc: Include "cref.h".
6033         (Sized_relobj::Sized_relobj): Initialize defined_count_.
6034         (Sized_relobj::do_get_global_symbol_counts): New function.
6035         (Input_objects::add_object): Add object to cross-referencer.
6036         (Input_objects::archive_start): New function.
6037         (Input_objects::archive_stop): New function.
6038         (Input_objects::print_symbol_counts): New function.
6039         * object.h: Declare Cref and Archive.
6040         (Object::get_global_symbol_counts): New function.
6041         (Object::do_get_global_symbol_counts): New pure virtual function.
6042         (class Sized_relobj): Add defined_count_ field.  Update
6043         declarations.
6044         (class Input_objects): Add cref_ field.  Update constructor.
6045         Update declarations.
6046         * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize symbols_ and
6047         defined_count_.
6048         (Sized_dynobj::do_add_symbols): Allocate symbols_ if printing
6049         symbol counts.
6050         (Sized_dynobj::do_get_global_symbol_counts): New function.
6051         * dynobj.h (class Sized_dynobj): Add fields symbols_ and
6052         defined_count_.  Update declarations.  Define Symbols typedef.
6053         * symtab.cc (Symbol_table::add_from_relobj): Add defined
6054         parameter.  Change all callers.
6055         (Symbol_table::add_from_dynobj): Add sympointers and defined
6056         parameters.  Change all callers.
6057         * symtab.h (class Symbol_table): Update declarations.
6058         * Makefile.am (CCFILES): Add cref.cc.
6059         (HFILES): Add cref.h.
6060         * Makefile.in: Rebuild.
6061
6062 2008-07-22  Simon Baldwin  <simonb@google.com>
6063
6064         * symtab.cc (Symbol_table::sized_write_symbol): Set symbol size
6065         to zero when writing undefined symbols.
6066
6067 2008-07-22  Ian Lance Taylor  <iant@google.com>
6068
6069         * output.cc (Output_section::add_input_section): Don't try to
6070         merge empty merge sections.
6071
6072 2008-07-21  Craig Silverstein  <csilvers@google.com>
6073
6074         * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
6075         Include symbol version in error message.
6076
6077 2008-07-20  Chris Demetriou  <cgd@google.com>
6078
6079         * configure.ac (gold_cv_c_random_seed): New configured variable.
6080         (RANDOM_SEED_CFLAGS): New substituted variable.
6081         * Makefile.am (AM_CFLAGS, AM_CXXFLAGS): Add $(RANDOM_SEED_CFLAGS).
6082         * configure: Rebuild.
6083         * Makefile.in: Likewise.
6084         * testsuite/Makefile.in: Likewise.
6085
6086 2008-07-18  Ian Lance Taylor  <iant@google.com>
6087
6088         * symtab.cc (Symbol_table::add_from_object): Rewrite the case
6089         where we see NAME/NULL and NAME/VERSION  as separate symbols.
6090         * testsuite/ver_test_main.cc (main): Call t4.
6091         (t4, t4_2a): Define.
6092         * testsuite/ver_test_2.cc (t4_2): Define.
6093         * testsuite/ver_test_2.script: Put t4_2a in VER2.
6094         * testsuite/ver_test_4.cc (t4_2a): Define.
6095         * testsuite/ver_test_4.script: Put t4_2a in VER2.
6096         * testsuite/ver_test.h (t4, t4_2, t4_2a): Declare.
6097
6098 2008-07-17  Ian Lance Taylor  <iant@google.com>
6099
6100         * dynobj.cc (Versions::add_def): If we give an error about a
6101         missing version, go ahead and create the version anyhow.
6102
6103 2008-07-10  Ian Lance Taylor  <iant@google.com>
6104
6105         Handle output sections with more than 0x7fffffff bytes.
6106         * object.h (class Relobj): Change map_to_output_ to
6107         output_sections_, and just keep a section pointer.  Change all
6108         uses.  Move comdat group support to Sized_relobj.
6109         (Relobj::is_section_specially_mapped): Remove.
6110         (Relobj::output_section): Remove poff parameter.  Change all
6111         callers.
6112         (Relobj::output_section_offset): New function.
6113         (Relobj::set_section_offset): Rewrite.
6114         (Relobj::map_to_output): Remove.
6115         (Relobj::output_sections): New function.
6116         (Relobj::do_output_section_offset): New pure virtual function.
6117         (Relobj::do_set_section_offset): Likewise.
6118         (class Sized_relobj): Add section_offsets_ field.  Add comdat
6119         group support from Relobj.  Update declarations.
6120         (Sized_relobj::get_output_section_offset): New function.
6121         (Sized_relobj::do_output_section_offset): New function.
6122         (Sized_relobj::do_set_section_offset): New function.
6123         * object.cc (Relobj::output_section_address): Remove.
6124         (Sized_relobj::Sized_relobj): Initialize new fields.
6125         (Sized_relobj::include_section_group): Cast find_kept_object to
6126         Sized_relobj.
6127         (Sized_relobj::include_linkonce_section): Likewise.
6128         (Sized_relobj::do_layout): Use separate arrays for output section
6129         and output offset.
6130         (Sized_relobj::do_count_local_symbols): Change map_to_output to
6131         output_sections.
6132         (Sized_relobj::do_finalize_local_symbols): Change map_to_output to
6133         output_sections and section_offsets.
6134         (Sized_relobj::write_local_symbols): Likewise.
6135         (map_to_kept_section): Compute output address directly.
6136         * reloc.cc (Sized_relobj::do_read_relocs): Change map_to_output to
6137         output_sections and section_offsets.
6138         (Sized_relobj::write_sections): Likewise.
6139         (Sized_relobj::relocate_sections): Likewise.
6140         * symtab.cc (sized_finalize_symbol): Use output_section_offset.
6141         * output.h (class Output_reloc): Update declarations.  Change
6142         u2_.relobj to Sized_relobj*.
6143         (class Output_data_reloc): Change add functions to use
6144         Sized_relobj*.
6145         * output.cc (Output_reloc::Output_reloc): Change relobj to
6146         Sized_relobj*.
6147         (Output_reloc::local_section_offset): Change return type to
6148         Elf_Addr.  Use get_output_section_offset.
6149         (Output_reloc::get_address): Likewise.
6150         (Output_section::is_input_address_mapped): Don't call
6151         is_section_specially_mapped.
6152         (Output_section::output_offset): Likewise.
6153         (Output_section::output_address): Likewise.
6154         (Output_section::starting_output_address): Likewise.
6155         * copy-relocs.cc (Copy_relocs::copy_reloc): Change object
6156         parameter to Sized_relobj*.
6157         (Copy_relocs::need_copy_reloc): Likewise.
6158         (Copy_relocs::save): Likewise.
6159         * copy-relocs.h (class Copy_relocs): Update declarations.
6160         (class Copy_relocs::Copy_reloc_entry): Change constructor to use
6161         Sized_relobj*.  Change relobj_ field to Sized_relobj*.
6162         * target-reloc.h (relocate_for_relocatable): Change
6163         offset_in_output_section type to Elf_Addr.  Change code that uses
6164         it as well.
6165         * layout.cc (Layout::layout): Always set *off.
6166         * mapfile.cc (Mapfile::print_input_section): Use
6167         output_section_offset.
6168         * i386.cc (Target_i386::copy_reloc): Change object parameter to
6169         Sized_relobj*.
6170         * powerpc.cc (Target_powerpc::copy_reloc): Likewise.
6171         * sparc.cc (Target_sparc::copy_reloc): Likewise.
6172         * x86_64.cc (Target_x86_64::copy_reloc): Likewise.
6173
6174 2008-07-03  Ian Lance Taylor  <iant@google.com>
6175
6176         * layout.cc (Layout::include_section): Do not discard unrecognized
6177         SHT_STRTAB sections.
6178
6179 2008-06-30  Craig Silverstein  <csilvers@cs.stanford.edu>
6180
6181         * script.cc (Lex::can_continue_name): Make '?' allowable in
6182         version-script names.
6183         * testsuite/version_script.map: Change glob pattern to use '?'
6184
6185 2008-06-30  Manish Singh  <yosh@gimp.org>
6186
6187         PR 6585
6188         * symtab.cc (Symbol_table::add_undefined_symbols_from_command_line):
6189         Correct typo.
6190
6191 2008-06-30  Ian Lance Taylor  <iant@google.com>
6192
6193         PR 6660
6194         PR 6682
6195         * powerpc.cc (Powerpc_relocate_functions::addr16_ha) [both
6196         versions]: Don't try to read the value in the contents, since we
6197         don't use it.  Use the template endianness when writing.
6198
6199 2008-06-25  Cary Coutant  <ccoutant@google.com>
6200
6201         * fileread.cc (File_read::make_view): Assert on zero-length view.
6202         * object.cc (Sized_relobj::do_read_symbols): Don't try to read
6203         symbol table when there are no symbols to read.
6204
6205 2008-06-23  Craig Silverstein  <csilvers@google.com>
6206
6207         * version.cc (version_string): Bump to 1.7
6208
6209 2008-06-18  Craig Silverstein  <csilvers@google.com>
6210
6211         * powerpc.cc (Powerpc_relocate_functions::addr16_ha): cast
6212         constant 0xFFFF to type Valtype.
6213         (Powerpc_relocate_functions::rel16_ha): Likewise.
6214
6215 2008-06-17  Ian Lance Taylor  <iant@google.com>
6216
6217         * output.h (Output_section::Input_section): Initialize p2align_ to
6218         zero for Output_section_data constructors.
6219         (Output_section::Input_section::addralign): If not an input
6220         section, return the alignment of the Output_section_data.
6221         * testsuite/copy_test.cc: New file.
6222         * testsuite/copy_test_1.cc: New file.
6223         * testsuite/copy_test_2.cc: New file.
6224         * testsuite/Makefile.am (check_PROGRAMS): Add copy_test.
6225         (copy_test_SOURCES, copy_test_DEPENDENCIES): New variables.
6226         (copy_test_LDFLAGS, copy_test_LDADD): New variables.
6227         (copy_test_1_pic.o, copy_test_1.so): New targets.
6228         (copy_test_2_pic.o, copy_test_2.so): New targets.
6229         * testsuite/Makefile.in: Rebuild.
6230
6231         * script-sections.cc (Script_sections::place_orphan): Initialize
6232         local variable exact.
6233
6234 2008-06-13  David Edelsohn  <edelsohn@gnu.org>
6235
6236         * powerpc.cc (Output_data_plt_powerpc::do_write): 8 + 4 = 0xC.
6237
6238 2008-06-12  David Edelsohn  <edelsohn@gnu.org>
6239             David S. Miller  <davem@davemloft.net>
6240
6241         * powerpc.cc: New file.
6242         * Makefile.am (TARGETSOURCES): Add powerpc.cc
6243         (ALL_TARGETOBJS): Add powerpc.$(OBJEXT)
6244         * configure.tgt: Add entries for powerpc-* and powerpc64-*.
6245         * Makefile.in: Rebuild.
6246
6247 2008-06-09  Ian Lance Taylor  <iant@google.com>
6248
6249         * testsuite/relro_test.cc: Include <cstdio>, <cstdlib>, and
6250         <exception>.
6251         (throwing, orig_terminate): New static variables.
6252         (terminate_handler): New static function.
6253         (t2): Set terminate handler.
6254
6255 2008-06-05  Kris Van Hees  <kris.van.hees@oracle.com>
6256
6257         PR 6584
6258         * binary.cc (Binary_to_elf::sized_convert): Fix .data
6259         alignment.
6260
6261 2008-05-30  Cary Coutant  <ccoutant@google.com>
6262
6263         * archive.cc (Archive::include_all_members) Correct to step
6264         over symbol table and extended name table in thin archives.
6265
6266 2008-05-29  Kris Van Hees  <kris.van.hees@oracle.com>
6267
6268         PR 6407
6269         * target-reloc.h (relocate_for_relocatable): Fix new_offset
6270         calculation.
6271
6272 2008-05-28  Caleb Howe  <cshowe@google.com>
6273
6274         * reduced_debug_output.cc: New file.
6275         * reduced_debug_output.h: New file.
6276         * options.h (class General_options): Add --strip-debug-non-line.
6277         * options.cc (General_options::finalize): Add strip_debug_non_line
6278         to the strip heirarchy.
6279         * layout.h (class Layout): Add debug_abbrev_ and debug_info_
6280         fields.
6281         * layout.cc: Include "reduced_debug_output.h".
6282         (Layout::Layout): Initialize new fields.
6283         (line_only_debug_sections): New static array.
6284         (is_lines_only_debug_sections): New static inline function.
6285         (Layout::include_section): Handle --strip-debug-non-line.
6286         (Layout::make_output_section): If --strip-debug-non-line, build
6287         new output sections for .debug_abbrev and .debug_info.
6288         * dwarf_reader.cc (read_unsigned_LEB_128): Move to namespace
6289         gold.  Warn about possible overflow.
6290         (read_signed_LEB_128): Likewise.
6291         * dwarf_reader.h: (read_unsigned_LEB_128): Declare.
6292         (read_signed_LEB_128): Declare.
6293         * Makefile.am (CCFILES): Add reduced_debug_output.cc.
6294         (HFILES): Add reduced_debug_output.h.
6295         * Makefile.in: Rebuild.
6296
6297 2008-05-21  Ian Lance Taylor  <iant@google.com>
6298
6299         * mapfile.cc: New file.
6300         * mapfile.h: New file.
6301         * options.h (class General_options): Add -M/--print-map and -Map.
6302         * options.cc (General_options::finalize): Make -M equivalent to
6303         -Map -.
6304         * main.cc: Include <cstdio> and "mapfile.h".
6305         (main): Open mapfile if requested.
6306         * gold.cc (class Middle_runner): Add mapfile_ field.  Update
6307         constructor.  Change caller.
6308         (queue_initial_tasks): Add mapfile parameter.  Change caller.
6309         (queue_middle_tasks): Likewise.
6310         * gold.h (queue_initial_tasks, queue_middle_tasks): Update
6311         declarations.
6312         * archive.cc: Include "mapfile.h".
6313         (Archive::add_symbols): Add mapfile parameter.  Change all
6314         callers.  Pass mapfile, symbol, and reason to include_member.
6315         (Archive::include_all_members): Add mapfile parameter.  Change all
6316         callers.
6317         (Archive::include_member): Add mapfile, sym, and why parameters.
6318         Change all callers.  Report inclusion to map file.
6319         * archive.h: Include "fileread.h".
6320         (class Archive): Update declarations.
6321         (Archive::file): New const method.
6322         (class Add_archive_symbols): Add mapfile_ field.  Update
6323         constructor.  Change all callers.
6324         * readsyms.h (class Read_symbols): Likewise.
6325         (class Finish_group): Likewise.
6326         (class Read_script): Likewise.
6327         * common.cc: Include "mapfile.h".
6328         (Symbol_table::allocate_commons): Add mapfile parameter.  Change
6329         all callers.
6330         (Symbol_table::do_allocate_commons): Likewise.
6331         (Symbol_table::do_allocate_commons_list): Likewise.  Report common
6332         symbol allocation to mapfile.
6333         * common.h (class Allocate_commons_task): Add mapfile_ field.
6334         Update constructor.  Change all callers.
6335         * symtab.h (class Symbol_table): Update declarations.
6336         * layout.cc: Include "mapfile.h".
6337         (Layout_task_runner::run): Print information to mapfile.
6338         (Layout::create_gold_note): Change Output_data_fixed_space to
6339         Output_data_zero_fill.
6340         (Layout::create_build_id): Likewise.
6341         (Layout::print_to_mapfile): New function.
6342         * layout.h (class Layout_task_runner): Add mapfile_ field.  Update
6343         constructor.  Change caller.
6344         (class Layout): Declare print_to_mapfile.
6345         * output.cc (Output_section::Input_section::print_to_mapfile): New
6346         function.
6347         (Output_section::add_input_section): If producing a map, always
6348         add to input_sections_ list.
6349         (Output_section::do_print_to_mapfile): New function.
6350         (Output_segment::print_sections_to_mapfile): New function.
6351         (Output_segment::print_section_list_to_mapfile): New function.
6352         * output.h: Include "mapfile.h".
6353         (Output_data::print_to_mapfile): New function.
6354         (Output_data::do_print_to_mapfile): New virtual function.
6355         (Output_segment_headers::do_print_to_mapfile): New function.
6356         (Output_file_header::do_print_to_mapfile): New function.
6357         (Output_data_const::do_print_to_mapfile): New function.
6358         (class Output_data_const_buffer): Add map_name_ field.  Update
6359         constructor.  Change all callers.  Add do_print_to_mapfile
6360         function.
6361         (class Output_data_fixed_space): Likewise.
6362         (class Output_data_space): Likewise.
6363         (class Output_data_zero_fill): New class.
6364         (Output_data_strtab::do_print_to_mapfile): New function.
6365         (Output_data_reloc_base::do_print_to_mapfile): New function.
6366         (Output_relocatable_relocs::do_print_to_mapfile): New function.
6367         (Output_data_group::do_print_to_mapfile): New function.
6368         (Output_data_got::do_print_to_mapfile): New function.
6369         (Output_data_dynamic::do_print_to_mapfile): New function.
6370         (Output_symtab_xindex::do_print_to_mapfile): New function.
6371         (class Output_section): Declare do_print_to_mapflie.  Declare
6372         print_to_mapfile in Input_section.
6373         (class Output_segment): Declare new functions.
6374         * object.h (Sized_relobj::symbol_count): New function.
6375         * script-sections.cc
6376         (Output_section_element_dot_assignment::set_section_addresses):
6377         Change Output_data_fixed_space to Output_data_zero_fill.
6378         (Output_data_expression::do_print_to_mapfile): New function.
6379         * script.cc (read_input_script): Add mapfile parameter.  Change
6380         all callers.
6381         * script.h (read_input_script): Update declaration.
6382         * ehframe.h (Eh_frame_hdr::do_print_to_mapfile): New function.
6383         (Eh_frame::do_print_to_mapfile): New function.
6384         * merge.h (Output_merge_data::do_print_to_mapfile): New function.
6385         (Output_merge_string::do_print_to_mapfile): New function.
6386         * i386.cc (Output_data_plt_i386::do_print_to_mapfile): New
6387         function.
6388         * sparc.cc (Output_data_plt_sparc::do_print_to_mapfile): New
6389         function.
6390         * x86_64.cc (Output_data_plt_x86_64::do_print_to_mapfile): New
6391         function.
6392         * Makefile.am (CCFILES): Add mapfile.cc.
6393         (HFILES): Add mapfile.h.
6394         * Makefile.in: Rebuild.
6395
6396 2008-05-19  Ian Lance Taylor  <iant@google.com>
6397
6398         * options.h (class General_options): Add -z relro.
6399         * layout.cc (Layout::Layout): Initialize relro_segment_.
6400         (Layout::add_output_section_data): Return the output section.
6401         (Layout::make_output_section): Rcognize relro sections and mark
6402         them appropriately.
6403         (Layout::attach_allocated_section_to_segment): Put relro sections
6404         in a PT_GNU_RELRO segment.
6405         (Layout::create_initial_dynamic_sections): Mark the .dynamic
6406         section as relro.
6407         (Layout::segment_precedes): Sort PT_GNU_RELRO segments after
6408         PT_TLS segments.
6409         (Layout::linkonce_mapping): Map d.rel.ro.local to
6410         .data.rel.ro.local.
6411         (Layout::output_section_name): Us .data.rel.ro.local for any
6412         section which begins with that.
6413         * layout.h (class Layout): Update add_output_section_data
6414         declaration.  Add relro_segment_ field.
6415         * output.cc (Output_section::Output_section): Initialize is_relro_
6416         and is_relro_local_ fields.
6417         (Output_segment::add_output_section): Group relro sections.
6418         (Output_segment::is_first_section_relro): New function.
6419         (Output_segment::maximum_alignment): If there is a relro section,
6420         align the segment to the common page size.
6421         (Output_segment::set_section_addresses): Track whether we are
6422         looking at relro sections.  If the last section is a relro
6423         section, align to the common page size.
6424         (Output_segment::set_section_list_addresses): Add in_relro
6425         parameter.  Change all callers.  Align to the page size when
6426         moving from relro to non-relro section.
6427         (Output_segment::set_offset): Align memsz of a PT_GNU_RELRO
6428         segment.
6429         * output.h (class Output_section): Add is_relro_ and
6430         is_relro_local_ fields.
6431         (Output_section::is_relro): New function.
6432         (Output_section::set_is_relro): New function.
6433         (Output_section::is_relro_local): New function.
6434         (Output_section::set_is_relro_local): New function.
6435         (class Output_segment): Update declarations.
6436         * i386.cc (Target_i386::got_section): Mark .got section as relro.
6437         * sparc.cc (Target_sparc::got_section): Likewise.
6438         * x86_64.cc (Target_x86_64::got_section): Likewise.
6439         * testsuite/relro_test_main.cc: New file.
6440         * testsuite/relro_test.cc: New file.
6441         * testsuite/Makefile.am (check_PROGRAMS): Add relro_test.
6442         (relro_test_SOURCES, relro_test_DEPENDENCIES): New variables.
6443         (relro_test_LDFLAGS, relro_test_LDADD): New variables.
6444         (relro_test.so, relro_test_pic.o): New targets.
6445         * testsuite/Makefile.in: Rebuild.
6446
6447 2008-05-16  Ian Lance Taylor  <iant@google.com>
6448
6449         * output.cc (Output_segment::add_output_section): Remove front
6450         parameter.
6451         * output.h (class Output_segment): Remove
6452         add_initial_output_section and overloaded add_output_section.
6453         Update declaration of remaining add_output_section.
6454         * layout.cc (Layout::create_interp): Call add_output_section
6455         rather than add_initial_output_section.
6456         (Layout::finish_dynamic_section): Likewise.
6457
6458         * i386.cc (Target_i386::Relocate::relocate_tls): Set dynamic type
6459         for TLS_GOTDESC and TLS_DESC_CALL.  Only optimize TLS_LDO_32 if we
6460         know the dynamic type.
6461         * x86_64.cc (Target_x86_64::Relocate): Add saw_tls_block_reloc_
6462         field.  Initialize it in constructor.
6463         (Target_x86_64::Relocate::relocate_tls): Record that we saw a TLS
6464         block reloc for TLSGD, GOTPC32_TLSDESC, TLSDESC_CALL, and TLSLD.
6465         Only optimize DTPOFF32 and DTPOFF64 if we have seen a TLS block
6466         reloc.
6467
6468         * output.cc (Output_reloc::get_address): Change return type to
6469         Elf_Addr.
6470         * output.h (class Output_reloc): Update get_address declaration.
6471         * x86_64.cc (Output_data_plt_x86_64::do_write): Use 64-bit types
6472         for section addresses.
6473
6474 2008-05-09  Ian Lance Taylor  <iant@google.com>
6475
6476         PR 6493
6477         * gold.cc (gold_nomem): Use return value of write.
6478
6479 2008-05-08  Ian Lance Taylor  <iant@google.com>
6480
6481         * symtab.c (Symbol::init_base_output_data): Add version
6482         parameter.  Change all callers.
6483         (Symbol::init_base_output_segment): Likewise.
6484         (Symbol::init_base_constant): Likewise.
6485         (Symbol::init_base_undefined): Likewise.
6486         (Sized_symbol::init_output_data): Likewise.
6487         (Sized_symbol::init_output_segment): Likewise.
6488         (Sized_symbol::init_constant): Likewise.
6489         (Sized_symbol::init_undefined): Likewise.
6490         (Symbol_table::do_define_in_output_data): If the new symbol has a
6491         version, mark it as the default.
6492         (Symbol_table::do_define_in_output_segment): Likewise.
6493         (Symbol_table::do_define_as_constant): Likewise.
6494         * symtab.h (class Symbol): Update declarations.
6495         (class Sized_symbol): Likewise.
6496         * resolve.cc (Symbol::override_version): New function.
6497         (Symbol::override_base): Call override_version.
6498         (Symbol::override_base_with_special): Likewise.
6499         * testsuite/ver_script_8.script: New file.
6500         * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_8.
6501         (ver_test_8_SOURCES, ver_test_8_DEPENDENCIES): Define.
6502         (ver_test_8_LDFLAGS, ver_test_8_LDADD): Define.
6503         (ver_test_8_1.so, ver_test_8_2.so): New targets.
6504
6505 2008-05-06  Ian Lance Taylor  <iant@google.com>
6506
6507         PR 6049
6508         * options.h (DEFINE_set): Add VARNAME_begin and VARNAME_end
6509         functions.
6510         (class General_options): Remove existing --undefined, and add
6511         --no-undefined instead.  Add new --undefined as synonym for -u.
6512         * archive.cc (Archive::add_symbols): Check whether symbol was
6513         named with -u.
6514         * gold.cc (queue_middle_tasks): Add -u symbols to symbol table.
6515         * symtab.h (class Symbol): Rename CONSTANT to IS_CONSTANT; change
6516         all uses.  Add IS_UNDEFINED.  Update declarations to split
6517         different versions of init_base.  Declare init_base_undefined.
6518         (Symbol::is_defined): Handle IS_UNDEFINED.
6519         (Symbol::is_undefined): Likewise.
6520         (Symbol::is_weak_undefined): Call is_undefined.
6521         (Symbol::is_absolute): Handle IS_CONSTANT.
6522         (class Sized_symbol): Update declarations to split different
6523         versions of init.  Declare init_undefined.
6524         (class Symbol_table): Declare new functions.
6525         * symtab.cc (Symbol::init_base_object): Rename from init_base.
6526         Change all callers.
6527         (Symbol::init_base_output_data): Likewise.
6528         (Symbol::init_base_output_segment): Likewise.
6529         (Symbol::init_base_constant): Likewise.
6530         (Symbol::init_base_undefined): New function.
6531         (Sized_symbol::init_object): Rename from init.  Change all
6532         callers.
6533         (Sized_symbol::init_output_data): Likewise.
6534         (Sized_symbol::init_output_segment): Likewise.
6535         (Sized_symbol::init_constant): Likewise.
6536         (Sized_symbol::init_undefined): New function.
6537         (Symbol_table::add_undefined_symbols_from_command_line): New
6538         function.
6539         (Symbol_table::do_add_undefined_symbols_from_command_line): New
6540         function.
6541         (Symbol::final_value_is_known): Handle IS_UNDEFINED.
6542         (Symbol::output_section): Likewise.
6543         (Symbol::set_output_section): Likewise.
6544         (Symbol_table::sized_finalize_symbol): Likewise.
6545         (Symbol_table::sized_write_globals): Likewise.
6546         * resolve.cc (Symbol_table::should_override): Likewise.
6547         (Symbol::override_base_with_special): Likewise.
6548
6549         * symtab.cc (Symbol_table::add_from_dynobj): If we see a protected
6550         symbol, change it to have default visibility.
6551         * testsuite/protected_1.cc: New file.
6552         * testsuite/protected_2.cc: New file.
6553         * testsuite/protected_3.cc: New file.
6554         * testsuite/protected_main_1.cc: New file.
6555         * testsuite/protected_main_2.cc: New file.
6556         * testsuite/protected_main_3.cc: New file.
6557         * testsuite/Makefile.am (check_PROGRAMS): Add protected_1.
6558         (protected_1_SOURCES, protected_1_DEPENDENCIES): Define.
6559         (protected_1_LDFLAGS, protected_1_LDADD): Define.
6560         (protected_1.so): New target.
6561         (protected_1_pic.o, protected_2_pic.o): New targets.
6562         (protected_3_pic.o): New target.
6563         (check_PROGRAMS): Add protected_2.
6564         (protected_2_SOURCES, protected_2_DEPENDENCIES): Define.
6565         (protected_2_LDFLAGS, protected_2_LDADD): Define.
6566         * testsuite/Makefile.in: Rebuild.
6567
6568         * options.h (DEFINE_var): Add set_user_set_##varname__.
6569         (DEFINE_bool_alias): New macro.
6570         (class General_options): Define -Bstatic using DEFINE_bool_alias
6571         rather than DEFINE_special.  Add --undefined as an alias for -z
6572         defs.
6573         * options.cc (General_options::parse_Bstatic): Remove.
6574
6575         * options.h (class General_options): Add --fatal-warnings.
6576         * main.cc (main): Implement --fatal-warnings.
6577         * errors.h (Errors::warning_count): New function.
6578
6579         * options.h (class General_options): Add -Bsymbolic-functions.
6580         * symtab.h (Symbol::is_preemptible): Check for
6581         -Bsymbolic-functions.
6582
6583 2008-05-05  Ian Lance Taylor  <iant@google.com>
6584
6585         * options.h (DEFINE_bool): For DASH_Z, create the negative option
6586         as noVARNAME rather than no-VARNAME.
6587         (class General_options): Add option -z combreloc.
6588         * output.h (class Output_reloc) [SHT_REL]: Declare compare and
6589         get_address.
6590         (Output_reloc::sort_before) [SHT_REL]: New function.
6591         (Output_reloc::sort_before) [SHT_RELA]: New function.
6592         (class Output_data_reloc_base): Add sort_relocs_ field.  Define
6593         Sort_relocs_comparison.
6594         (Output_data_reloc_base::Output_data_reloc_base): Add sort_relocs
6595         parameter.  Change all callers.
6596         (Output_data_reloc::Output_data_reloc) [both versions]: Add
6597         sort_relocs parameter.  Change all callers.
6598         * output.cc (Output_reloc::get_address): New function, broken out
6599         of write_rel.
6600         (Output_reloc::write_rel): Call it.
6601         (Output_reloc::compare): New function.
6602         (Output_data_reloc_base::do_write): Optionally sort relocs.
6603
6604         * configure.ac: If targ_extra_obj is set, link it in.
6605         * configure.tgt: Initialize all variables.
6606         (x86_64*): Set targ_extra_obj and targ_extra_size.
6607         * configure: Rebuild.
6608
6609         * object.cc (Sized_relobj::include_section_group): Adjust section
6610         indexes read from group data.  Build vector to pass to
6611         layout_group.
6612         * layout.cc (Layout::layout_group): Add flags and shndxes
6613         parameters.  Remove contents parameter.  Change caller.  Update
6614         explicit instantiations.
6615         * layout.h (class Layout): Update layout_group declaration.
6616         * output.cc (Output_data_group::Output_data_group): Add flags and
6617         input_shndxes parameters.  Remove contents parameter.  Change
6618         caller.
6619         (Output_data_group::do_write): Change input_sections_ to
6620         input_shndxes_.
6621         * output.h (class Output_data_group): Update constructor
6622         declaration.  Rename input_sections_ to input_shndxes_.
6623         * testsuite/many_sections_test.cc: Add template.
6624
6625 2008-04-30  Cary Coutant  <ccoutant@google.com>
6626
6627         * target-reloc.h (relocate_section): Fix dead-pointer bug.
6628
6629         * layout.cc (Layout::include_section): Refactored check for debug
6630         info section.
6631         (Layout::add_comdat): Add new parameters.  Change type
6632         of signature parameter.  Add object and shndx to signatures table.
6633         (Layout::find_kept_object): New function.
6634         * layout.h: Include <cstring>.
6635         (Layout::is_debug_info_section): New function.
6636         (Layout::add_comdat): Add new parameters.
6637         (Layout::find_kept_object): New function.
6638         (Layout::Kept_section): New struct.
6639         (Layout::Signatures): Change type of map range.
6640         * object.cc (Relobj::output_section_address): New function.
6641         (Sized_relobj::include_section_group): Add new parameters.  Change
6642         calls to Layout::add_comdat.  Change to build table of kept comdat
6643         groups and table mapping discarded sections to kept sections.
6644         (Sized_relobj::include_linkonce_section): Likewise.  Add new parameter.
6645         (Sized_relobj::do_layout): Change calls to include_section_group and
6646         include_linkonce_section.
6647         (Sized_relobj::do_finalize_local_symbols): Do not set local symbol
6648         value to zero when section is discarded.
6649         (Sized_relobj::map_to_kept_section): New function.
6650         * object.h (Relobj::output_section_address): New function.
6651         (Relobj::Comdat_group): New type.
6652         (Relobj::find_comdat_group): New function.
6653         (Relobj::Comdat_group_table): New type.
6654         (Relobj::Kept_comdat_section): New type.
6655         (Relobj::Kept_comdat_section_table): New type.
6656         (Relobj::add_comdat_group): New function.
6657         (Relobj::set_kept_comdat_section): New function.
6658         (Relobj::get_kept_comdat_section): New function.
6659         (Relobj::comdat_groups_): New field.
6660         (Relobj::kept_comdat_sections_): New field.
6661         (Symbol_value::input_value): Update comment.
6662         (Sized_relobj::map_to_kept_section) New function.
6663         (Sized_relobj::include_linkonce_section): Add new parameter.
6664         * target-reloc.h (Comdat_behavior): New type.
6665         (get_comdat_behavior): New function.
6666         (relocate_section): Add code to map a discarded section to the
6667         corresponding kept section when applying a relocation.
6668
6669 2008-04-30  Craig Silverstein  <csilvers@google.com>
6670
6671         * dwarf_reader.cc (next_generation_count): New static var.
6672         (Addr2line_cache_entry): New struct.
6673         (addr2line_cache): New static var.
6674         (Dwarf_line_info::one_addr2line): Added caching.
6675         (Dwarf_line_info::clear_addr2line_cache): New function.
6676         * dwarf_reader.h (Dwarf_line_info::one_addr2line): Add
6677         cache-size parameter.
6678         (Dwarf_line_info::one_addr2line_cache): New function.
6679         * symtab.cc (Symbol_table::detect_odr_violations): Pass
6680         new cache-size argument to one_addr2line(), and clear cache.
6681
6682 2008-04-28  Cary Coutant  <ccoutant@google.com>
6683
6684         * i386.cc (Relocate::relocate): Fix typos for R_386_PC16 and
6685         R_386_PC8 relocations.
6686
6687 2008-04-23  Ian Lance Taylor  <iant@google.com>
6688
6689         * object.cc (Sized_relobj::include_section_group): Check for
6690         invalid section group.
6691
6692         * object.cc (make_elf_object): Correct test for 64-bit ELF file
6693         header size.
6694
6695         * readsyms.cc (Read_symbols::do_read_symbols): Use get_view rather
6696         than read for file header.
6697         * archive.cc (Archive::include_member): Likewise.
6698
6699 2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
6700
6701         * aclocal.m4: Regenerate.
6702         * configure: Regenerate.
6703
6704 2008-04-19  Ian Lance Taylor  <iant@google.com>
6705
6706         * version.cc (version_string): Bump to 1.6.
6707
6708         * testsuite/Makefile.am (many_sections_r_test): New target.
6709         (many_sections_r_test_SOURCES): Remove.
6710         (many_sections_r_test_DEPENDENCIES): Remove.
6711         (many_sections_r_test_LDFLAGS): Remove.
6712         (many_sections_r_test_LDADD): Remove.
6713
6714         * object.cc (Sized_relobj::do_add_symbols): Always pass
6715         local_symbol_count_ to add_from_relobj.
6716
6717         * testsuite/Makefile.am (many_sections_check.h): Only check one in
6718         every thousand variables.
6719         * testsuite/Makefile.in: Rebuild.
6720
6721         * object.cc (Xindex::initialize_symtab_xindex): New function.
6722         (Xindex::read_symtab_xindex): New function.
6723         (Xindex::sym_xindex_to_shndx): New function.
6724         (Sized_relobj::find_symtab): Pick up SHT_SYMTAB_SHNDX section if
6725         available.
6726         (Sized_relobj::do_initialize_xindex): New function.
6727         (Sized_relobj::do_read_symbols): Adjust section links.
6728         (Sized_relobj::symbol_section_and_value): Add is_ordinary
6729         parameter.  Change all callers.
6730         (Sized_relobj::include_section_group): Adjust section links and
6731         symbol section indexes.
6732         (Sized_relobj::do_layout): Adjust section links.
6733         (Sized_relobj::do_count_local_symbols): Adjust section links and
6734         symbol section indexes.
6735         (Sized_relobj::do_finalize_local_symbols): Distinguish between
6736         ordinary and special symbols.
6737         (Sized_relobj::write_local_symbols): Add symtab_xindex and
6738         dynsym_xindex parameters.  Change all callers.  Adjust section
6739         links.  Use SHN_XINDEX when needed.
6740         (Sized_relobj::get_symbol_location_info): Adjust section links.
6741         Don't get fooled by special symbols.
6742         * object.h (class Xindex): Define.
6743         (class Object): Add xindex_ parameter.  Declare virtual functoin
6744         do_initialize_xindex.
6745         (Object::adjust_sym_shndx): New function.
6746         (Object::set_xindex): New protected function.
6747         (class Symbol_value): Add is_ordinary_shndx_ field.
6748         (Symbol_value::Symbol_value): Initialize is_ordinary_shndx_.
6749         (Symbol_value::value): Assert ordinary section.
6750         (Symbol_value::initialize_input_to_output_map): Likewise.
6751         (Symbol_value::set_input_shndx): Add is_ordinary parameter.
6752         Change all callers.
6753         (Symbol_value::input_shndx): Add is_ordinary parameter.  Change
6754         all callers.
6755         (class Sized_relobj): Update declarations.
6756         (Sized_relobj::local_symbol_input_shndx): Add is_ordinary
6757         parameter.  Change all callers.
6758         (Sized_relobj::adjust_shndx): New function.
6759         * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize dynsym_shndx_
6760         field.
6761         (Sized_dynobj::find_dynsym_sections): Remove pdynsym_shndx
6762         parameter.  Change all callers.  Pick up SHT_DYNSYM_SHNDX section
6763         for SHT_DYNSYM section if available.  Set dynsym_shndx_ field.
6764         (Sized_dynobj::read_dynsym_section): Adjust section links.
6765         (Sized_dynobj::read_dynamic): Likewise.
6766         (Sized_dynobj::do_read_symbols): Use dynsym_shndx_ field.  Adjust
6767         section links.
6768         (Sized_dynobj::do_initialize_xindex): New function.
6769         * dynobj.h (class Sized_dynobj): Add dynsym_shndx_ field.  Declare
6770         do_initialize_xindex.
6771         (Sized_dynobj::adjust_shndx): New function.
6772         * layout.cc (Layout::Layout): Initialize symtab_xindex_ and
6773         dynsym_xindex_ fields.
6774         (Layout::finalize): Add a call to set_section_indexes before
6775         creating the symtab sections.
6776         (Layout::set_section_indexes): Don't do anything if the section
6777         already has a section index.
6778         (Layout::create_symtab_sections): Add shnum parameter.  Change
6779         caller.  Create .symtab_shndx section if needed.
6780         (Layout::create_shdrs): Add shstrtab_section parameter.  Change
6781         caller.
6782         (Layout::allocated_output_section_count): New function.
6783         (Layout::create_dynamic_symtab): Create .dynsym_shndx section if
6784         needed.
6785         * layout.h (class Layout): Add symtab_xindex_ and dynsym_xindex_
6786         fields.  Update declarations.
6787         (Layout::symtab_xindex): New function.
6788         (Layout::dynsym_xindex): New function.
6789         (class Write_symbols_task): Add layout_ field.
6790         (Write_symbols_task::Write_symbols_task): Add layout parameter.
6791         Change caller.
6792         * output.cc (Output_section_headers::Output_section_headers): Add
6793         shstrtab_section parameter.  Change all callers.
6794         (Output_section_headers::do_sized_write): Store overflow values
6795         for section count and section string table section index in
6796         section header zero.
6797         (Output_file_header::do_sized_write): Check for overflow of
6798         section count and section string table section index.
6799         (Output_symtab_xindex::do_write): New function.
6800         (Output_symtab_xindex::endian_do_write): New function.
6801         * output.h (class Output_section_headers): Add shstrtab_section_.
6802         Update declarations.
6803         (class Output_symtab_xindex): Define.
6804         (Output_section::has_out_shndx): New function.
6805         * symtab.cc (Symbol::init_fields): Initialize is_ordinary_shndx_
6806         field.
6807         (Symbol::init_base): Add st_shndx and is_ordinary parameters.
6808         Change all callers.
6809         (Sized_symbol::init): Likewise.
6810         (Symbol::output_section): Check for ordinary symbol.
6811         (Symbol_table::add_from_object): Remove orig_sym parameter.  Add
6812         st_shndx, is_ordinary, and orig_st_shndx parameters.  Change all
6813         callers.
6814         (Symbol_table::add_from_relobj): Add symndx_offset parameter.
6815         Change all callers.  Simplify handling of symbols from sections
6816         not included in the link.
6817         (Symbol_table::add_from_dynobj): Handle ordinary symbol
6818         distinction.
6819         (Weak_alias_sorter::operator()): Assert that symbols are
6820         ordinary.
6821         (Symbol_table::sized_finalize_symbol): Handle ordinary symbol
6822         distinction.
6823         (Symbol_table::write_globals): Add symtab_xindex and dynsym_xindex
6824         parameters.  Change all callers.
6825         (Symbol_table::sized_write_globals): Likewise.  Handle ordinary
6826         symbol distinction.  Use SHN_XINDEX when needed.
6827         (Symbol_table::write_section_symbol): Add symtab_xindex
6828         parameter.  Change all callers.
6829         (Symbol_table::sized_write_section_symbol): Likewise.  Use
6830         SHN_XINDEX when needed.
6831         * symtab.h (class Symbol): Add is_ordinary_shndx_ field.  Update
6832         declarations.
6833         (Symbol::shndx): Add is_ordinary parameter.  Change all callers.
6834         (Symbol::is_defined): Check is_ordinary.
6835         (Symbol::is_undefined, Symbol::is_weak_undefined): Likewise.
6836         (Symbol::is_absolute, Symbol::is_common): Likewise.
6837         (class Sized_symbol): Update declarations.
6838         (class Symbol_table): Update declarations.
6839         * resolve.cc (Symbol::override_base): Add st_shndx and is_ordinary
6840         parameters.  Change all callers.
6841         (Sized_symbol::override): Likewise.
6842         (Symbol_table::override): Likewise.
6843         (symbol_to_bits): Add is_ordinary parameter.  Change all callers.
6844         (Symbol_table::resolve): Remove orig_sym parameter.  Add st_shndx,
6845         is_ordinary, and orig_st_shndx parameters.  Change all callers.
6846         * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Require symbol
6847         to be in an ordinary section.
6848         * dwarf_reader.cc (Sized_dwarf_line_info::symbol_section): Add
6849         object and is_ordinary parameters.  Change all callers.
6850         (Sized_dwarf_line_info::read_relocs): Add object parameter.
6851         Change all callers.  Don't add undefined or non-ordinary symbols
6852         to reloc_map_.
6853         (Sized_dwarf_line_info::read_line_mappings): Add object parameter.
6854         Change all callers.
6855         * dwarf_reader.h (class Sized_dwarf_line_info): Update
6856         declarations.
6857         * ehframe.cc (Eh_frame::read_fde): Check for ordinary symbol.
6858         * reloc.cc (Sized_relobj::do_read_relocs): Adjust section links.
6859         (Sized_relobj::relocate_sections): Likewise.
6860         * target-reloc.h (scan_relocs): Adjust section symbol index.
6861         (scan_relocatable_relocs): Likewise.
6862         * i386.cc (Scan::local): Check for ordinary symbols.
6863         * sparc.cc (Scan::local): Likewise.
6864         * x86_64.cc (Scan::local): Likewise.
6865         * testsuite/binary_unittest.cc (Sized_binary_test): Update calls
6866         to symbol_section_and_value.
6867         * testsuite/many_sections_test.cc: New file.
6868         * testsuite/Makefile.am (BUILT_SOURCES): Define.
6869         (check_PROGRAMS): Add many_sections_test.
6870         (many_sections_test_SOURCES): Define.
6871         (many_sections_test_DEPENDENCIES): Define.
6872         (many_sections_test_LDFLAGS): Define.
6873         (BUILT_SOURCES): Add many_sections_define.h.
6874         (many_sections_define.h): New target.
6875         (BUILT_SOURCES): Add many_sections_check.h.
6876         (many_sections_check.h): New target.
6877         (check_PROGRAMS): Add many_sections_r_test.
6878         (many_sections_r_test_SOURCES): Define.
6879         (many_sections_r_test_DEPENDENCIES): Define.
6880         (many_sections_r_test_LDFLAGS): Define.
6881         (many_sections_r_test_LDADD): Define.
6882         (many_sections_r_test.o): New target.
6883         * testsuite/Makefile.in: Rebuild.
6884
6885 2008-04-17  Cary Coutant  <ccoutant@google.com>
6886
6887         * errors.cc (Errors::info): New function.
6888         (gold_info): New function.
6889         * errors.h (Errors::info): New function.
6890         * gold.h (gold_info): New function.
6891         * object.cc (Input_objects::add_object): Print trace output.
6892         * options.cc (options::parse_set): New function.
6893         (General_options::parse_wrap): Deleted.
6894         (General_options::General_options): Deleted initializer.
6895         * options.h (options::String_set): New typedef.
6896         (options::parse_set): New function.
6897         (DEFINE_set): New macro.
6898         (General_options::wrap): Changed to use DEFINE_set. Changed
6899         callers of any_wrap_symbols and is_wrap_symbol.
6900         (General_options::trace, General_options::trace_symbol):
6901         New options.
6902         (General_options::any_wrap_symbols, General_options::is_wrap_symbol)
6903         (General_options::wrap_symbols_): Deleted.
6904         * symtab.cc (Symbol_table::add_from_object): Print trace output.
6905
6906 2008-04-17  David S. Miller  <davem@davemloft.net>
6907
6908         * options.cc (General_options::parse_V): New function.
6909         * options.h: Add entries for -V and -Qy.
6910
6911 2008-04-17  Ian Lance Taylor  <iant@google.com>
6912
6913         * common.cc (Symbol_table::allocate_commons): Remove options
6914         parameter.  Change caller.
6915         (Symbol_table::do_allocate_commons): Remove options parameter.
6916         Change caller.  Just call do_allocate_commons_list twice.
6917         (Symbol_table::do_allocate_commons_list): New function, broken out
6918         of do_allocate_commons.
6919         * common.h (class Allocate_commons_task): Remove options_ field.
6920         Update constructor.
6921         * symtab.cc (Symbol_table::Symbol_table): Initialize
6922         tls_commons_.
6923         (Symbol_table::add_from_object): Put TLS common symbols on
6924         tls_commons_ list.
6925         (Symbol_table::sized_finalize_symbol): Handle STT_TLS symbols
6926         which are IN_OUTPUT_DATA.
6927         * symtab.h (class Symbol_table): Add tls_commons_ field.  Update
6928         allocate_commons and do_allocate_commons declarations.  Declare
6929         do_allocate_commons_list.
6930         * gold.cc (queue_middle_tasks): Update creation of
6931         Allocate_commons_task to not pass options.
6932         * testsuite/Makefile.am (INCLUDES): Add -I.. .
6933         (TLS_TEST_C_FLAGS): New variable.
6934         (tls_test_c_pic.o): New target.
6935         (tls_test_shared.so): Link in tls_test_c_pic.o.
6936         (tls_test_c_pic_ie.o): New target.
6937         (tls_test_ie_shared.so): Link in tls_test_c_pic_ie.o.
6938         (tls_test_DEPENDENCIES, tls_test_LDADD): Add tls_test_c.o.
6939         (tls_test_c.o): New target.
6940         (tls_pic_test_DEPENDENCIES): Add tls_test_c_pic.o.
6941         (tls_pic_test_LDADD): Likewise.
6942         (tls_shared_gd_to_ie_test_DEPENDENCIES): Add tls_test_c_pic.o.
6943         (tls_shared_gd_to_ie_test_LDADD): Likewise.
6944         (tls_test_c_gnu2.o): New target.
6945         (tls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): Add
6946         tls_test_c_gnu2.o.
6947         (tls_shared_gnu2_gd_to_ie_test_LDADD): Likewise.
6948         (tls_test_gnu2_shared.so): Link in tls_test_c_gnu2.o.
6949         (tls_test_shared_nonpic.so): Link in tls_test_c.o.
6950         * testsuite/tls_test.cc: Include "config.h".
6951         (t_last): Call t11_last.
6952         * testsuite/tls_test.h (t11, t11_last): Declare.
6953         * testsuite/tls_test_c.c: New file.
6954         * testsuite/tls_test_main.cc (thread_routine): Call t11.
6955         * configure.ac: Check for OpenMP support.
6956         * configure, config.in, Makefile.in: Rebuild.
6957         * testsuite/Makefile.in: Rebuild.
6958
6959 2008-04-16  Cary Coutant  <ccoutant@google.com>
6960
6961         * i386.cc (Target_i386::define_tls_base_symbol): New function.
6962         (Target_i386::tls_base_symbol_defined_): New field.
6963         (Target_i386::Scan::local): Define _TLS_MODULE_BASE_ symbol.
6964         (Target_i386::Scan::global): Likewise.
6965         * symtab.cc (sized_finalize_symbol): Add check for TLS symbol.
6966         * x86_64.cc (Target_x86_64::define_tls_base_symbol): New function.
6967         (Target_x86_64::tls_base_symbol_defined_): New field.
6968         (Target_x86_64::Scan::local): Define _TLS_MODULE_BASE_ symbol.
6969         (Target_x86_64::Scan::global): Likewise.
6970
6971 2008-04-16  Cary Coutant  <ccoutant@google.com>
6972
6973         * symtab.h (Symbol::is_strong_undefined): Removed unused function.
6974         (Symbol::needs_plt_entry): Allow weak undefined symbols.
6975         (Symbol::needs_dynamic_reloc): Allow weak undefined symbols when
6976         building shared libraries.
6977         * testsuite/Makefile.am (weak_undef_nonpic_test): New target.
6978         (weak_undef_file1_nonpic.o, weak_undef_file2_nonpic.o)
6979         (weak_undef_lib_nonpic.so, alt/weak_undef_lib_nonpic.so): New targets.
6980         * testsuite/Makefile.in: Rebuild.
6981         * testsuite/weak_undef.h: New file.
6982         * testsuite/weak_undef_file1.cc: Add extra test cases.
6983         * testsuite/weak_undef_file2.cc: Likewise.
6984         * testsuite/weak_undef_test.cc: Likewise.
6985
6986 2008-04-16  David S. Miller  <davem@davemloft.net>
6987
6988         * sparc.cc (Target_sparc::Scan): Change from struct to class.
6989         Add issued_non_pic_error_ field.  Declare check_non_pic.
6990         (Target_sparc::Scan::check_non_pic): New function.
6991         (Target_sparc::Scan::local): Call check_non_pic as appropriate.
6992         (Target_sparc::Scan::global): Likewise.
6993
6994         * configure.ac (FN_PTRS_IN_SO_WITHOUT_PIC): Add sparc64.
6995         * configure: Rebuild.
6996
6997         * options.h (DEFINE_enable): New macro.
6998         (new_dtags): New enable option.
6999         (initfirst, interpose, loadfltr, nodefaultlib,
7000         nodelete, nodlopen, nodump): New -z options.
7001         * layout.cc (Layout:finish_dynamic_section): If new
7002         dtags enabled, emit DT_RUNPATH.  Also, emit a
7003         DT_FLAGS_1 containing any specified -z flags.
7004
7005 2008-04-16  Ian Lance Taylor  <iant@google.com>
7006
7007         * copy-relocs.cc: New file.
7008         * copy-relocs.h: New file.
7009         * reloc.cc: Remove Copy_relocs code.
7010         * reloc.h: Likewise.
7011         * reloc-types.h (struct Reloc_types) [both versions]: Add
7012         get_reloc_addend_noerror.
7013         * output.h (class Output_data_reloc<elfcpp::SHT_REL>): Add
7014         variants of add_global which take an addend which must be zero.
7015         * i386.cc: Include "copy-relocs.h".
7016         (class Target_i386): Change type of copy_relocs_ to variable,
7017         update initializer.
7018         (Target_i386::copy_reloc): Rewrite to pass to Copy_relocs class.
7019         Change all callers.
7020         (Target_i386::do_finalize_sections): Change handling of
7021         copy_relocs_.
7022         * sparc.cc: Include "copy-relocs.h".
7023         (class Target_sparc): Change type of copy_relocs_ to variable,
7024         update initializer.
7025         (Target_sparc::copy_reloc): Rewrite to pass to Copy_relocs class.
7026         Change all callers.
7027         (Target_sparc::do_finalize_sections): Change handling of
7028         copy_relocs_.
7029         * x86_64.cc: Include "copy-relocs.h".
7030         (class Target_x86_64): Change type of copy_relocs_ to variable,
7031         update initializer.
7032         (Target_x86_64::copy_reloc): Rewrite to pass to Copy_relocs
7033         class.  Change all callers.
7034         (Target_x86_64::do_finalize_sections): Change handling of
7035         copy_relocs_.
7036         * Makefile.am (CCFILES): Add copy-relocs.cc.
7037         (HFILES): Add copy-relocs.h.
7038
7039         * Makefile.in, aclocal.m4, testsuite/Makefile.in: Rebuild.
7040
7041         * testsuite/script_test_4.sh: Permit leading zeroes.
7042
7043 2008-04-15  Ian Lance Taylor  <iant@google.com>
7044
7045         * script-sections.cc (Script_sections::create_segments): Use
7046         header_size_adjustment even when there is enough room for the
7047         headers.
7048         * testsuite/script_test_4.sh: New file.
7049         * testsuite/script_test_4.t: New file.
7050         * testsuite/Makefile.am (check_SCRIPTS): Add script_test_4.sh.
7051         (check_DATA): Add script_test_4.stdout.
7052         (MOSTLYCLEANFILES): Likewise.
7053         (script_test_4): New target.
7054         (script_test_4.stdout): New target.
7055         * testsuite/Makefile.in: Rebuild.
7056
7057         * sparc.cc: Add definitions for Output_data_plt_sparc class
7058         constants.
7059
7060 2008-04-14  David S. Miller  <davem@davemloft.net>
7061
7062         * sparc.cc: New file.
7063         * Makefile.am (TARGETSOURCES): Add sparc.cc
7064         (ALL_TARGETOBJS): Add sparc.$(OBJEXT)
7065         * configure.tgt: Document targ_extra_size and
7066         targ_extra_big_endian.  Add entries for sparc-* and
7067         sparc64-*.
7068         * configure.ac: Handle targ_extra_size and
7069         targ_extra_big_endian.
7070         * Makefile.in: Rebuild.
7071         * configure: Likewise.
7072         * po/POTFILES.in: Likewise.
7073         * po/gold.pot: Likewise.
7074
7075 2008-04-14  Ian Lance Taylor  <iant@google.com>
7076
7077         * layout.cc (Layout::Layout): Initialize sections_are_attached_.
7078         (Layout::get_output_section): Ignore SHF_WRITE and SHF_EXECINSTR
7079         in the name/type/flags to section mapping.  Don't call
7080         allocate_output_section.
7081         (Layout::choose_output_section): Change parameter from adjust_name
7082         to is_input_section.  Don't permit input sections after sections
7083         are attached to segments.  Don't call allocate_output_section.
7084         (Layout::layout_eh_frame): Call update_flags_for_input_section,
7085         not write_enable_output_section.
7086         (Layout::make_output_section): Don't push to
7087         unattached_section_list_ nor call attach_to_segment.  Call
7088         attach_section_to_segment if sections are attached.
7089         (Layout::attach_sections_to_segments): New function.
7090         (Layout::attach_section_to_segment): New function.
7091         (Layout::attach_allocated_section_to_segment): Rename from
7092         attach_to_segment.  Remove flags parameter.
7093         (Layout::allocate_output_section): Remove function.
7094         (Layout::write_enable_output_section): Remove function.
7095         * layout.h (class Layout): Update for above changes.  Add new
7096         field sections_are_attached_.
7097         * output.h (Output_section::update_flags_for_input_section): New
7098         function.
7099         * output.cc (Output_section::add_input_section): Call
7100         update_flags_for_input_section.
7101         * gold.cc (queue_middle_tasks): Call attach_sections_to_segments.
7102
7103 2008-04-11  Cary Coutant  <ccoutant@google.com>
7104
7105         * i386.cc (Target_i386::got_mod_index_entry): Restore code previously
7106         thought unnecessary.
7107         * x86_64.cc (Target_x86_64::got_mod_index_entry): Likewise.
7108
7109 2008-04-11  Ian Lance Taylor  <iant@google.com>
7110
7111         * output.h (class Output_section_data): Remove inline definition
7112         of set_addralign.
7113         * output.cc (Output_section_data::set_addralign): New function.
7114
7115 2008-04-11  Cary Coutant  <ccoutant@google.com>
7116
7117         Add support for TLS descriptors for i386 and x86_64.
7118         * i386.cc (Target_i386::Relocate::tls_desc_gd_to_ie): New function.
7119         (Target_i386::Relocate::tls_desc_gd_to_le): New function.
7120         (Target_i386::Got_type): Add GOT_TYPE_TLS_NOFFSET and
7121         GOT_TYPE_TLS_DESC.
7122         (Target_i386::got_mod_index_entry): Remove unnecessary code.
7123         (Target_i386::Scan::local): Implement R_386_TLS_GOTDESC and
7124         R_386_TLS_DESC_CALL relocations.  Fix problem with initial-exec
7125         relocations.
7126         (Target_i386::Scan::global): Fix problem with GD-to-IE relaxation.
7127         Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations;
7128         Fix problem with initial-exec relocations.
7129         (Target_i386::Relocate::relocate_tls): Likewise.
7130         (Target_i386::Relocate::tls_gd_to_ie): Fix problem with GD-to-IE
7131         relaxation.
7132         * output.cc (Output_data_dynamic::Dynamic_entry::write): Add
7133         support for section-plus-offset dynamic table entries.
7134         * output.h (Output_data_dynamic::add_section_plus_offset): New function.
7135         (Output_data_dynamic::Dynamic_entry): Add support for
7136         section-plus-offset dynamic table entries.
7137         (Output_data_dynamic::Classification): Likewise.
7138         (Output_data_dynamic::classification_): Renamed offset_.
7139         * x86_64.cc (Target_x86_64::Relocate::tls_desc_gd_to_ie): New function.
7140         (Target_x86_64::Relocate::tls_desc_gd_to_le): New function.
7141         (Target_x86_64::make_plt_section): New function.
7142         (Target_x86_64::reserve_tlsdesc_entries): New function.
7143         (Output_data_plt_x86_64::Output_data_plt_x86_64): Add new parameter.
7144         (Output_data_plt_x86_64::reserve_tlsdesc_entry): New function.
7145         (Output_data_plt_x86_64::has_tlsdesc_entry): New function.
7146         (Output_data_plt_x86_64::get_tlsdesc_got_offset): New function.
7147         (Output_data_plt_x86_64::get_tlsdesc_plt_offset): New function.
7148         (Output_data_plt_x86_64::tlsdesc_plt_entry): New field.
7149         (Output_data_plt_x86_64::set_final_data_size): Move out of line;
7150         add extra PLT entry for TLS descriptors.
7151         (Output_data_plt_x86_64::got_): New field.
7152         (Output_data_plt_x86_64::tlsdesc_got_offset_): New field.
7153         (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize new
7154         fields.
7155         (Output_data_plt_x86_64::do_write): Write extra PLT entry for TLS
7156         descriptors.
7157         (Target_x86_64::make_plt_entry): Factor out make_plt_section.
7158         (Target_x86_64::got_mod_index_entry): Remove unnecessary code.
7159         (Target_x86_64::Scan::local): Implement R_386_TLS_GOTDESC and
7160         R_386_TLS_DESC_CALL relocations.
7161         (Target_x86_64::Scan::global): Likewise.
7162         (Target_x86_64::do_finalize_sections): Add dynamic table entries
7163         for TLS descriptors.
7164         (Relocate::relocate_tls): Fix problem with GD-to-IE relaxation.
7165         Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations.
7166         (Target_x86_64::Relocate::tls_gd_to_ie): Fix problem with
7167         GD-to-IE relaxation.
7168         * configure.ac: Export new conditional variables TLS_GNU2_DIALECT
7169         and TLS_DESCRIPTORS.
7170         * Makefile.in: Rebuild.
7171         * configure: Rebuild.
7172         * testsuite/Makefile.am (tls_shared_gd_to_ie_test): New target.
7173         (tls_test_shared2.so): New target.
7174         (tls_shared_gd_to_ie_test_SOURCES): New variable.
7175         (tls_shared_gd_to_ie_test_DEPENDENCIES): New variable.
7176         (tls_shared_gd_to_ie_test_LDFLAGS): New variable.
7177         (tls_shared_gd_to_ie_test_LDADD): New variable.
7178         (tls_shared_gnu2_gd_to_ie_test): New target.
7179         (tls_test_gnu2.o, tls_test_file2_gnu2.o, tls_test_gnu2_shared2.so):
7180         New targets.
7181         (tls_shared_gnu2_gd_to_ie_test_SOURCES): New variable.
7182         (ls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): New variable.
7183         (tls_shared_gnu2_gd_to_ie_test_LDFLAGS): New variable.
7184         (tls_shared_gnu2_gd_to_ie_test_LDADD): New variable.
7185         (tls_shared_gnu2_test): New target.
7186         (tls_test_gnu2_shared.so): New target.
7187         (tls_shared_gnu2_test_SOURCES): New variable.
7188         (tls_shared_gnu2_test_DEPENDENCIES): New variable.
7189         (tls_shared_gnu2_test_LDFLAGS): New variable.
7190         (tls_shared_gnu2_test_LDADD): New variable.
7191         * testsuite/Makefile.in: Rebuild.
7192         * testsuite/Makefile.
7193
7194 2008-04-11  Ian Lance Taylor  <iant@google.com>
7195
7196         * testsuite/Makefile.am (justsyms_2r.o): Add dependency on
7197         justsyms.t.
7198         * testsuite/Makefile.in: Rebuild.
7199
7200         * testsuite/script_test_2a.cc (script_test_string_a): Make 8 bytes
7201         long.
7202         * testsuite/script_test_2.cc (main): Adjust test.
7203
7204 2008-04-11  David S. Miller  <davem@davemloft.net>
7205             Ian Lance Taylor  <iant@google.com>
7206
7207         * options.h (General_options): Add entries for '-Y' and
7208         '-relax'.
7209         * options.cc (General_options:finalize): If -Y was used, add those
7210         entries to the library path instead of the default "/lib" and
7211         "/usr/lib".
7212
7213 2008-04-11  David S. Miller  <davem@davemloft.net>
7214
7215         * testsuite/justsyms.t: Start at 0x100.
7216         * testsuite/justsyms_1.cc: Adjust justsyms_string assertion.
7217         * testsuite/script_test_2b.cc (script_test_string_b): Make 8 bytes
7218         long.
7219         * testsuite/script_test_2.cc: Adjust string and section length
7220         checks.
7221
7222 2008-04-09  Ian Lance Taylor  <iant@google.com>
7223
7224         PR gold/5996
7225         * script-sections.cc (Sections_element::allocate_to_segment): Add
7226         orphan parameter.
7227         (Output_section_definition::allocate_to_segment): Likewise.
7228         (Orphan_output_section::allocate_to_segment): Likewise.
7229         (Script_sections::attach_sections_using_phdrs_clause): Don't
7230         propagate non-PT_LOAD segments to orphan sections.
7231         * testsuite/Makefile.am (script_test_3.stdout): Generate using
7232         readelf rather than objdump.
7233         * testsuite/script_test_3.sh: Adjust accordingly.  Test that
7234         .interp section and PT_INTERP segment are the same size.
7235         * testsuite/Makefile.in: Rebuild.
7236
7237         * symtab.cc (Symbol_table::add_from_dynobj): Only look for weak
7238         aliases for symbols defined in the same object.
7239         * testsuite/Makefile.am (check_PROGRAMS): Add weak_alias_test.
7240         (weak_alias_test_SOURCES): New variable.
7241         (weak_alias_test_DEPENDENCIES): New variable.
7242         (weak_alias_test_LDFLAGS): New variable.
7243         (weak_alias_test_LDADD): New variable.
7244         (weak_alias_test_1_pic.o, weak_alias_test_1.so): New targets.
7245         (weak_alias_test_2_pic.o, weak_alias_test_2.so): New targets.
7246         (weak_alias_test_3.o): New target.
7247         (weak_alias_test_4_pic.o, weak_alias_test_4.so): New targets.
7248         * testsuite/weak_alias_test_main.cc: New file.
7249         * testsuite/weak_alias_test_1.cc: New file.
7250         * testsuite/weak_alias_test_2.cc: New file.
7251         * testsuite/weak_alias_test_3.cc: New file.
7252
7253 2008-04-08  Ian Lance Taylor  <iant@google.com>
7254
7255         * options.h (class General_options): Add --noinhibit-exec option.
7256         * main.cc (main): Check --noinhibit-exec.
7257
7258         * options.h (class General_options): Define --wrap as a special
7259         option.  Add wrap_symbols_ field.
7260         (General_options::any_wrap_symbols): New function.
7261         (General_options::is_wrap_symbol): New function.
7262         * options.cc (General_options::parse_wrap): New function.
7263         (General_options::General_options): Initialize wrap_symbols_.
7264         * symtab.cc (Symbol_table::wrap_symbol): New function.
7265         (Symbol_table::add_from_object): Handle --wrap.
7266         * symtab.h (class Symbol_table): Declare wrap_symbol.
7267         * target.h (Target::wrap_char): New function.
7268         (Target::Target_info): Add wrap_char field.
7269         * i386.cc (Target_i386::i386_info): Initialize wrap_char.
7270         * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
7271         * testsuite/testfile.cc (Target_test::test_target_info):
7272         Likewise.
7273
7274         * errors.cc (Errors::undefined_symbol): Mention symbol version if
7275         there is one.
7276
7277         * layout.h (class Layout): Add added_eh_frame_data_ field.
7278         * layout.cc (Layout::Layout): Initialize new field.
7279         (Layout::layout_eh_frame): Don't add eh_frame_data_ to .eh_frame
7280         output section until we find a section we merged successfully.
7281         * object.cc (Sized_relobj::check_eh_frame_flags): Don't require
7282         that the size be non-zero.
7283
7284         * merge.cc (Object_merge_map::get_output_offset): Remove inline
7285         qualifier.
7286
7287 2008-04-08  Craig Silverstein  <csilvers@google.com>
7288
7289         * configure.ac: Export new conditional variable HAVE_ZLIB.
7290         * testsuite/Makefile.am (flagstest_o_specialfile): Condition
7291         on HAVE_ZLIB.
7292         (flagstest_o_specialfile_and_compress_debug_sections): Likewise.
7293         * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
7294
7295 2008-04-07  Ian Lance Taylor  <iant@google.com>
7296
7297         * version.cc (version_string): Set to "1.5".
7298
7299         * x86_64.cc (Target_x86_64::Scan): Change from struct to class.
7300         Add issued_non_pic_error_ field.  Declare check_non_pic.
7301         (Target_x86_64::Scan::check_non_pic): New function.
7302         (Target_x86_64::Scan::local): Call check_non_pic as appropriate.
7303         (Target_x86_64::Scan::global): Likewise.
7304
7305         * output.cc (Output_reloc<SHT_REL>::local_section_offset): Add
7306         addend parameter.  Change caller.  Handle merge sections.
7307         (Output_reloc<SHT_REL>::symbol_value): Change parameter type from
7308         Address to Addend.  Don't add in the result of
7309         local_section_offset, pass down the addend and use the returned
7310         value.
7311         * output.h (class Output_reloc<SHT_REL>): Add Addend typedef.
7312         Update declarations of local_section_offset and symbol_value.
7313         * testsuite/two_file_test_1.cc (t18): New function.
7314         * testsuite/two_file_test_2.cc (f18): New function.
7315         * testsuite/two_file_test_main.cc (main): Call t18.
7316         * testsuite/two_file_test.h (t18, f18): Declare.
7317
7318         * configure.ac: Don't test for objdump, c++filt, or readelf.
7319         * testsuite/Makefile.am: Remove READELF and OBJDUMP_AND_CPPFILT
7320         conditionals.
7321         (TEST_READELF): New variable.
7322         (TEST_OBJDUMP, TEST_CXXFILT, TEST_STRIP): New variables.
7323         (check_PROGRAMS): Add two_file_strip_test.
7324         (two_file_strip_test): New target.
7325         (check_PROGRAMS): Add two_file_same_shared_strip_test.
7326         (two_file_same_shared_strip_test_SOURCES): New variable.
7327         (two_file_same_shared_strip_test_DEPENDENCIES): New variable.
7328         (two_file_same_shared_strip_test_LDFLAGS): New variable.
7329         (two_file_same_shared_strip_test_LDADD): New variable.
7330         (two_file_shared_strip.so): New target.
7331         (ver_test_2.syms, ver_test_4.syms): Use TEST_READELF.
7332         (ver_test_5.syms, ver_test_7.syms): Likewise.
7333         (ver_matching_test.stdout): Use TEST_OBJDUMP and TEST_CXXFILT.
7334         (strip_test_3.stdout): Use TEST_OBJDUMP.
7335         * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
7336
7337 2008-04-04  Cary Coutant  <ccoutant@google.com>
7338
7339         * symtab.h (Symbol::is_weak_undefined): New function.
7340         (Symbol::is_strong_undefined): New function.
7341         (Symbol::is_absolute): New function.
7342         (Symbol::needs_plt_entry): Exclude weak undefined symbols.
7343         (Symbol::needs_dynamic_reloc): Exclude weak undefined and
7344         absolute symbols.
7345         * testsuite/Makefile.am (check_PROGRAMS): Add weak_undef_test.
7346         (weak_undef_test): New target.
7347         * testsuite/Makefile.in: Rebuild.
7348         * testsuite/weak_undef_file1.cc: New file.
7349         * testsuite/weak_undef_file2.cc: New file.
7350         * testsuite/weak_undef_test.cc: New file.
7351
7352 2008-04-03  Craig Silverstein  <csilvers@google.com>
7353
7354         * compressed_output.h (class Output_compressed_section): Use
7355         unsigned buffer.
7356         * compressed_output.cc (zlib_compress): Use unsigned buffers,
7357         add zlib header.
7358         (zlib_compressed_suffix): Removed.
7359         (Output_compressed_section::set_final_data_size): Use unsigned
7360         buffers.
7361         * testsuite/Makefile.am (flagstest_compress_debug_sections):
7362         Fix linker invocation.
7363         (flagstest_o_specialfile_and_compress_debug_sections):
7364         Likewise.
7365         * testsuite/Makefile.in: Regenerated.
7366
7367 2008-04-02  David S. Miller  <davem@davemloft.net>
7368
7369         *  dwarf_reader.cc (Sized_dwarf_line_info::read_header_prolog,
7370         Sized_dwarf_line_info::process_one_opcode): Use Swap_unaligned.
7371
7372 2008-04-02  Craig Silverstein  <csilvers@google.com>
7373
7374         * TODO: New file.
7375
7376 2008-04-02  Ian Lance Taylor  <iant@google.com>
7377
7378         * fileread.cc (File_read::find_view): Add byteshift and vshifted
7379         parameters.  Update for new key type to views_.  Change all
7380         callers.
7381         (File_read::read): Adjust for byteshift in returned view.
7382         (File_read::add_view): New function, broken out of
7383         find_and_make_view.
7384         (File_read::make_view): New function, broken out of
7385         find_and_make_view.
7386         (File_read::find_or_make_view): Add offset and aligned
7387         parameters.  Rewrite accordingly.  Change all callers.
7388         (File_read::get_view): Add offset and aligned parameters.  Adjust
7389         for byteshift in return value.
7390         (File_read::get_lasting_view): Likewise.
7391         * fileread.h (class File_read): Update declarations.
7392         (class File_read::View): Add byteshift_ field.  Add byteshift to
7393         constructor.  Add byteshift method.
7394         * archive.h (Archive::clear_uncached_views): New function.
7395         (Archive::get_view): Add aligned parameter.  Change all callers.
7396         * object.h (Object::get_view): Add aligned parameter.  Change all
7397         callers.
7398         (Object::get_lasting_view): Likewise.
7399
7400         * fileread.cc (File_read::release): Don't call clear_views if
7401         there are multiple objects.
7402         * fileread.h (File_read::clear_uncached_views): New function.
7403         * archive.cc (Add_archive_symbols::run): Call clear_uncached_views
7404         on the archive.
7405
7406 2008-03-31  Cary Coutant  <ccoutant@google.com>
7407
7408         Add thin archive support.
7409         * archive.cc (Archive::armagt): New const.
7410         (Archive::setup): Remove task parameter and calls to unlock.
7411         (Archive::unlock_nested_archives): New function.
7412         (Archive::read_header): Add nested_off parameter. Change
7413         all callers.
7414         (Archive::interpret_header): Likewise.
7415         (Archive::include_all_members): Change to handle thin
7416         archives.
7417         (Archive::include_member): Likewise.
7418         * archive.h (Archive::Archive): Add new parameters and
7419         initializers.
7420         (Archive::armagt): New const.
7421         (Archive::setup): Remove task parameter.
7422         (Archive::unlock_nested_archives): New function.
7423         (Archive::read_header): Add nested_off parameter.
7424         (Archive::interpret_header): Likewise.
7425         (Archive::Nested_archive_table): New typedef.
7426         (Archive::is_thin_archive_): New field.
7427         (Archive::nested_archives_): New field.
7428         (Archive::options_): New field.
7429         (Archive::dirpath_): New field.
7430         (Archive::task_): New field.
7431         * readsyms.cc (Read_symbols::do_read_symbols): Add check
7432         for thin archives.  Pass additional parameters to
7433         Archive::Archive.  Unlock the archive file after calling
7434         Archive::setup.
7435
7436 2008-03-29  Ian Lance Taylor  <iant@google.com>
7437
7438         * symtab.cc (Symbol_table::do_define_as_constant): Don't force a
7439         version symbol to be local.
7440         * testsuite/ver_test_4.sh: New file.
7441         * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_4.sh.
7442         (check_DATA): Add ver_test_4.syms.
7443         (ver_test_4.syms): New target.
7444         * testsuite/Makefile.in: Rebuild.
7445
7446         * output.cc
7447         (Output_section::Input_section_sort_entry::has_priority): New
7448         function.
7449         (Output_section::Input_section_sort_entry::match_file_name): New
7450         function.
7451         (Output_section::Input_section_sort_entry::match_section_name):
7452         Remove.
7453         (Output_section::Input_section_sort_entry::match_section_name_prefix):
7454         Remove.
7455         (Output_section::Input_section_sort_entry::match_section_file):
7456         Remove.
7457         (Output_section::Input_section_sort_compare::operator()): Rewrite
7458         using new Input_section_sort_entry functions.  Sort crtbegin and
7459         crtend first.  Sort sections with no priority before sections with
7460         a priority.
7461         * testsuite/initpri1.c (d3): Check j != 4.
7462         (cd5): New constructor/destructor function.
7463         (main): Check j != 2.
7464
7465         * symtab.cc (Symbol_table::add_from_object): If we don't use the
7466         new symbol when resolving, don't call set_is_default.
7467         * testsuite/ver_test_7.cc: New file.
7468         * testsuite/ver_test_7.sh: New file.
7469         * testsuite/Makefile.am (ver_test_7.so): New target.
7470         (ver_test_7.o): New target.
7471         (check_SCRIPTS): Add ver_test_7.sh.
7472         (check_DATA): Add ver_test_7.syms.
7473         (ver_test_7.syms): New target.
7474
7475 2008-03-28  Ian Lance Taylor  <iant@google.com>
7476
7477         * layout.cc (Layout::layout): If we see an input section with a
7478         name that needs sorting, set the must_sort flag for the output
7479         section.
7480         (Layout::make_output_section): If the name of the output section
7481         indicates that it might require sorting, set the may_sort flag.
7482         * output.h (Output_section::may_sort_attached_input_sections): New
7483         function.
7484         (Output_section::set_may_sort_attached_input_sections): New
7485         function.
7486         (Output_section::must_sort_attached_input_sections): New
7487         function.
7488         (Output_section::set_must_sort_attached_input_sections): New
7489         function.
7490         (class Output_section): Declare Input_section_sort_entry.  Define
7491         Input_section_sort_compare.  Declare
7492         sort_attached_input_sections.  Add new fields:
7493         may_sort_attached_input_sections_,
7494         must_sort_attached_input_sections_,
7495         attached_input_sections_are_sorted_.
7496         * output.cc (Output_section::Output_section): Initialize new
7497         fields.
7498         (Output_section::add_input_section): Add an entry to
7499         input_sections_ if may_sort or must_sort are true.
7500         (Output_section::set_final_data_size): Call
7501         sort_attached_input_sections if necessary.
7502         (Output_section::Input_section_sort_entry): Define new class.
7503         (Output_section::Input_section_sort_compare::operator()): New
7504         function.
7505         (Output_section::sort_attached_input_sections): New function.
7506         * configure.ac: Check whether the compiler supports constructor
7507         priorities.  Define a CONSTRUCTOR_PRIORITY automake conditional.
7508         * testsuite/initpri1.c: New file.
7509         * testsuite/Makefile.am (check_PROGRAMS): Add initpri1 if
7510         CONSTRUCTOR_PRIORITY.
7511         (initpri1_SOURCES, initpri1_DEPENDENCIES): New variables.
7512         (initpri1_LDFLAGS): New variable.
7513         * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
7514
7515 2008-03-27  Ian Lance Taylor  <iant@google.com>
7516
7517         * common.cc (Sort_commons::operator): Correct sorting algorithm.
7518         * testsuite/common_test_1.c: New file.
7519         * testsuite/Makefile.am (check_PROGRAMS): Add common_test_1.
7520         (common_test_1_SOURCES): New variable.
7521         (common_test_1_DEPENDENCIES): New variable.
7522         (common_test_1_LDFLAGS): New variable.
7523
7524         * symtab.cc (Symbol_table::add_from_object): Handle saw_undefined_
7525         and commons_ correctly when NAME/VERSION does not override
7526         NAME/NULL.
7527         * testsuite/ver_test_6.c: New file.
7528         * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_6
7529         (ver_test_6_SOURCES, ver_test_6_DEPENDENCIES): New variables.
7530         (ver_test_6_LDFLAGS, ver_test_6_LDADD): New variables.
7531
7532 2008-03-26  Ian Lance Taylor  <iant@google.com>
7533
7534         * symtab.cc (Symbol_table::add_from_relobj): Don't set the version
7535         of an undefined symbol from a version script.
7536         * testsuite/Makefile.am (ver_test_5.so): New target.
7537         (ver_test_5.o): New target.
7538         (check_SCRIPTS): Add ver_test_5.sh.
7539         (check_DATA): Add ver_test_5.syms.
7540         (ver_test_5.syms): New target.
7541         * testsuite/ver_test_5.cc: New file.
7542         * testsuite/ver_test_5.script: New file.
7543         * testsuite/ver_test_5.sh: New file.
7544         * Makefile.in, testsuite/Makefile.in: Rebuild.
7545
7546         PR gold/5986
7547         Fix problems building gold with gcc 4.3.0.
7548         * gold.h (TEMPLATE_ATTRIBUTE_PRINTF_4): Define.
7549         (gold_error_at_location, gold_warning_at_location): Use it.
7550         * configure.ac: Check whether we can compile and use a template
7551         function with a printf attribute.
7552         * x86_64.cc (Target_x86_64::do_code_fill): Swap out a 32-bit value
7553         when jumping over bytes.
7554         * object.cc: Instantiate Object::read_section_data.
7555         * debug.h: Include <cstring>
7556         * dwarf_reader.cc: Include <algorithm>
7557         * main.cc: Include <cstring>.
7558         * options.cc: Include <cstring>.
7559         * output.cc: Include <cstring>.
7560         * script.cc: Include <cstring>.
7561         * script.h: Include <string>.
7562         * symtab.cc: Include <cstring> and <algorithm>.
7563         * target-select.cc: Include <cstring>.
7564         * version.cc: Include <string>.
7565         * testsuite/testmain.cc: Include <cstdlib>.
7566         * configure, config.in: Rebuild.
7567
7568 2008-03-25  Ian Lance Taylor  <iant@google.com>
7569
7570         * options.cc: Include "../bfd/bfdver.h".
7571         (options::help): Print bug reporting address.
7572
7573         * version.cc (print_version): Adjust output for current value of
7574         BFD_VERSION_STRING.
7575
7576         * NEWS: New file.
7577
7578         * options.cc (options::help): Print list of supported targets.
7579         * target-select.h: Include <vector>.
7580         (class Target_selector): Make machine_, size_, and is_big_endian_
7581         fields const.  Add bfd_name_ and instantiated_target_ fields.
7582         (Target_selector::Target_selector): Add bfd_name parameter.
7583         (Target_selector::recognize): Make non-virtual, call
7584         do_recognize.
7585         (Target_selector::recognize_by_name): Make non-virtual, call
7586         do_recognize_by_name.
7587         (Target_selector::supported_names): New function.
7588         (Target_selector::bfd_name): New function.
7589         (Target_selector::do_instantiate_target): New pure virtual
7590         function.
7591         (Target_selector::do_recognize): New virtual function.
7592         (Target_selector::do_recognize_by_name): New virtual function.
7593         (Target_selector::instantiate_target): New private function.
7594         (supported_target_names): Declare.
7595         * target-select.cc (Target_selector::Target_selector): Update for
7596         new parameter and fields.
7597         (select_target_by_name): Check that the name matches before
7598         calling recognize_by_name.
7599         (supported_target_names): New function.
7600         * i386.cc (class Target_selector_i386): Update Target_selector
7601         constructor call.  Remove recognize and recognize_by_name.  Add
7602         do_instantiate_target.
7603         * x86_64.cc (class Target_selector_x86_64): Likewise.
7604         * testsuite/testfile.cc (class Target_selector_test): Update for
7605         changes to Target_selector.
7606
7607         * README: Rewrite, with some notes on unsupported features.
7608
7609 2008-03-24  Cary Coutant  <ccoutant@google.com>
7610
7611         * i386.cc (Target_i386::Got_type): New enum declaration.
7612         (Target_i386::Scan::local): Updated callers of Output_data_got
7613         member functions.
7614         (Target_i386::Scan::global): Likewise.
7615         (Target_i386::Relocate::relocate): Likewise.
7616         (Target_i386::Relocate::relocate_tls): Likewise.
7617         * object.h (Got_offset_list): New class.
7618         (Sized_relobj::local_has_got_offset): Added got_type parameter.
7619         (Sized_relobj::local_got_offset): Likewise.
7620         (Sized_relobj::set_local_got_offset): Likewise.
7621         (Sized_relobj::local_has_tls_got_offset): Removed.
7622         (Sized_relobj::local_tls_got_offset): Removed.
7623         (Sized_relobj::set_local_tls_got_offset): Removed.
7624         (Sized_relobj::Local_got_offsets): Changed to store a list of offsets.
7625         * output.cc (Output_data_got::add_global): Added got_type parameter.
7626         (Output_data_got::add_global_with_rel): Likewise.
7627         (Output_data_got::add_global_with_rela): Likewise.
7628         (Output_data_got::add_global_pair_with_rel): New function.
7629         (Output_data_got::add_global_pair_with_rela): New function.
7630         (Output_data_got::add_local): Added got_type parameter.
7631         (Output_data_got::add_local_with_rel): Likewise.
7632         (Output_data_got::add_local_with_rela): Likewise.
7633         (Output_data_got::add_local_pair_with_rel): New function.
7634         (Output_data_got::add_local_pair_with_rela): New function.
7635         (Output_data_got::add_global_tls): Removed.
7636         (Output_data_got::add_global_tls_with_rel): Removed.
7637         (Output_data_got::add_global_tls_with_rela): Removed.
7638         (Output_data_got::add_local_tls): Removed.
7639         (Output_data_got::add_local_tls_with_rel): Removed.
7640         (Output_data_got::add_local_tls_with_rela): Removed.
7641         * output.h (Output_data_got::add_global): Added got_type parameter.
7642         (Output_data_got::add_global_with_rel): Likewise.
7643         (Output_data_got::add_global_with_rela): Likewise.
7644         (Output_data_got::add_global_pair_with_rel): New function.
7645         (Output_data_got::add_global_pair_with_rela): New function.
7646         (Output_data_got::add_local): Added got_type parameter.
7647         (Output_data_got::add_local_with_rel): Likewise.
7648         (Output_data_got::add_local_with_rela): Likewise.
7649         (Output_data_got::add_local_pair_with_rel): New function.
7650         (Output_data_got::add_local_pair_with_rela): New function.
7651         (Output_data_got::add_global_tls): Removed.
7652         (Output_data_got::add_global_tls_with_rel): Removed.
7653         (Output_data_got::add_global_tls_with_rela): Removed.
7654         (Output_data_got::add_local_tls): Removed.
7655         (Output_data_got::add_local_tls_with_rel): Removed.
7656         (Output_data_got::add_local_tls_with_rela): Removed.
7657         * resolve.cc (Symbol::override_base_with_special): Removed
7658         reference to has_got_offset_ field.
7659         * symtab.cc (Symbol::init_fields): Replaced initialization
7660         of got_offset_ with got_offsets_.  Removed initialization
7661         of has_got_offset_
7662         * symtab.h (Symbol::has_got_offset): Aded got_type parameter.
7663         (Symbol::got_offset): Likewise.
7664         (Symbol::set_got_offset): Likewise.
7665         (Symbol::has_tls_got_offset): Removed.
7666         (Symbol::tls_got_offset): Removed.
7667         (Symbol::set_tls_got_offset): Removed.
7668         (Symbol::got_offset_): Removed.
7669         (Symbol::tls_mod_got_offset_): Removed.
7670         (Symbol::tls_pair_got_offset_): Removed.
7671         (Symbol::got_offsets_): New field.
7672         (Symbol::has_got_offset): Removed.
7673         (Symbol::has_tls_mod_got_offset): Removed.
7674         (Symbol::has_tls_pair_got_offset): Removed.
7675         * x86_64.cc (Target_x86_64::Got_type): New enum declaration.
7676         (Target_x86_64::Scan::local): Updated callers of Output_data_got
7677         member functions.
7678         (Target_x86_64::Scan::global): Likewise.
7679         (Target_x86_64::Relocate::relocate): Likewise.
7680         (Target_x86_64::Relocate::relocate_tls): Likewise.
7681
7682 2008-03-25  Ben Elliston  <bje@au.ibm.com>
7683
7684         * yyscript.y: Fix spelling error in comment.
7685
7686 2008-03-24  Ian Lance Taylor  <iant@google.com>
7687
7688         * options.h (class General_options): Define build_id option.
7689         * layout.h (class Layout): Declare write_build_id, create_note,
7690         create_build_id.  Add build_id_note_ member.
7691         * layout.cc: Include <cerrno>, <fcntl.h>, <unistd.h>,
7692         "libiberty.h", "md5.h", "sha1.h".
7693         (Layout::Layout): Initialize eh_frame_data_,
7694         eh_frame_hdr_section_, and build_id_note_.
7695         (Layout::finalize): Call create_build_id.
7696         (Layout::create_note): New function, broken out of
7697         Layout::create_gold_note.
7698         (Layout::create_gold_note): Call create_note.
7699         (Layout::create_build_id): New function.
7700         (Layout::write_build_id): New function.
7701         (Close_task_runner::run): Call write_build_id.
7702
7703         * x86_64.cc: Correct license to GPLv3.
7704
7705 2008-03-23  Ian Lance Taylor  <iant@google.com>
7706
7707         * options.cc: Include "demangle.h".
7708         (parse_optional_string): New function.
7709         (parse_long_option): Handle takes_optional_argument.
7710         (parse_short_option): Update dash_z initializer.  Handle
7711         takes_optional_argument.
7712         (General_options::General_options): Initialize do_demangle_.
7713         (General_options::finalize): Set do_demangle_.  Handle demangling
7714         style.
7715         * options.h (parse_optional_string): Declare.
7716         (struct One_option): Add optional_arg field.  Update constructor.
7717         Update call constructor calls.  Add takes_optional_argument
7718         function.
7719         (DEFINE_var): Add optional_arg__ parameter.  Change all callers.
7720         (DEFINE_optional_string): Define.
7721         (General_options::demangle): Change from DEFINE_bool to
7722         DEFINE_optional_string.
7723         (General_options::no_demangle): New function.
7724         (General_options::do_demangle): New function.
7725         (General_options::set_do_demangle): New function.
7726         (General_options::execstack_status_): Move definition to end of
7727         class definition.
7728         (General_options::static_): Likewise.
7729         (General_options::do_demangle_): New field.
7730         * object.cc (big_endian>::get_symbol_location_info): Call
7731         Options::do_demangle, not Options::demangle.
7732         * symtab.cc (demangle): Likewise.
7733
7734 2008-03-22  Ian Lance Taylor  <iant@google.com>
7735
7736         * gold.h: Include <cstddef> and <sys/types.h>
7737         * options.h: Include <cstring>.
7738
7739 2008-03-21  Ian Lance Taylor  <iant@google.com>
7740
7741         * Added source code to GNU binutils.