2009-12-03 Doug Kwan <dougkwan@google.com>
[external/binutils.git] / gold / ChangeLog
1 2009-12-03  Doug Kwan  <dougkwan@google.com>
2
3         * arm.cc: Remove comment about missing .ARM.exidx section symbols.
4         (Target_arm::do_finalize_sections): Add parameter for symbol table
5         pointer.  Add __exidx_start and __exidx_end symbols as appropriate.
6         * i386.cc (Target_i386::do_finalize_sections): Add an additional
7         parameter for symbol table pointer.
8         * layout.cc (Layout::finalize): Call Target::finalize_sections with
9         an additional parameter for a pointer to symbol table.
10         * powerpc.cc (Target_powerpc::do_finalize_sections): Add an additional
11         parameter for a symbol table pointer.
12         * sparc.cc (Target_sparc::do_finalize_sections): Ditto.
13         * target.h (Target::finalize_sections, Target::do_finalize_sections):
14         Ditto.
15         * x86_64.cc (Target_x86_64::do_finalize_sections): Add an additional
16         parameter for a symbol table pointer.
17
18 2009-12-03  Rafael Avila de Espindola  <espindola@google.com>
19
20         * incremental.cc (Incremental_inputs_header)
21         (Incremental_inputs_header_write, Incremental_inputs_entry)
22         (Incremental_inputs_entry_write): Move ...
23         * incremental.h (Incremental_inputs_header)
24         (Incremental_inputs_header_write, Incremental_inputs_entry)
25         (Incremental_inputs_entry_write): here.
26
27 2009-12-02  Rafael Avila de Espindola  <espindola@google.com>
28
29         * incremental.cc (make_sized_incremental_binary): Set the target.
30         Error if it is incompatible.
31         * output.h (Output_file): Add filename method.
32
33 2009-12-02  Rafael Avila de Espindola  <espindola@google.com>
34
35         * incremental.cc (Incremental_inputs_entry): Remove unused argument
36         from the get_* methods.
37
38 2009-12-02  Rafael Avila de Espindola  <espindola@google.com>
39
40         * incremental-dump.cc (main): Check that the offeset of a script is 0.
41         * incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
42         Write 0 for the data_offset of scripts.
43
44 2009-12-02  Rafael Avila de Espindola  <espindola@google.com>
45
46         * testsuite/Makefile.am: Add the incremental_test.sh test.
47         * testsuite/incremental_test.sh: New.
48         * testsuite/incremental_test_1.c: New.
49         * testsuite/incremental_test_2.c: New.
50
51 2009-12-01  Rafael Avila de Espindola  <espindola@google.com>
52
53        * incremental-dump.cc (main): Fix typos.
54
55 2009-11-27  Rafael Avila de Espindola  <espindola@google.com>
56
57         PR gold/11025
58         * incremental-dump.cc (main): Use llu to print 64 bit values.
59
60 2009-11-26  Per Ã˜yvind Karlsen <peroyvind@mandriva.org>
61             H.J. Lu  <hongjiu.lu@intel.com>
62
63         * Makefile.am (incremental_dump_DEPENDENCIES): Add $(THREADSLIB)
64         $(LIBDL).
65         (incremental_dump_LDADD): Likewise.
66         * Makefile.in: Regenerated.
67
68 2009-11-25  Doug Kwan  <dougkwan@google.com>
69         
70         Revert:
71
72         2009-11-25  Doug Kwan  <dougkwan@google.com>
73
74                 * arm.cc (Target_arm::Target_arm): Move method definition
75                 outside of class definition.  Add code to handle
76                 --target1-rel, --target1-abs and --target2= options.
77                 (Target_arm::get_reloc_reloc_type): Change method to be
78                 non-static and const.
79                 (Target_arm::target1_is_rel_, Target_arm::target2_reloc_):
80                 New data member declaration.
81                 (Target_arm::Scan::local, Target_arm::Scan::global,
82                 Target_arm::Relocate::relocate,
83                 Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
84                 Adjust call to Target_arm::get_real_reloc_type.
85                 (Target_arm::get_real_reloc_type): Use command line options
86                 to determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
87                 * options.h (--target1-rel, --target1-abs, --target2): New
88                 ARM-only options.
89
90 2009-11-25  Doug Kwan  <dougkwan@google.com>
91
92         * arm.cc (Target_arm::Target_arm): Move method definition outside of
93         class definition.  Add code to handle --target1-rel, --target1-abs
94         and --target2= options.
95         (Target_arm::get_reloc_reloc_type): Change method to be non-static
96         and const.
97         (Target_arm::target1_is_rel_, Target_arm::target2_reloc_): New data
98         member declaration.
99         (Target_arm::Scan::local, Target_arm::Scan::global,
100         Target_arm::Relocate::relocate,
101         Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Adjust
102         call to Target_arm::get_real_reloc_type.
103         (Target_arm::get_real_reloc_type): Use command line options to
104         determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
105         * options.h (--target1-rel, --target1-abs, --target2): New ARM-only
106         options.
107
108 2009-11-25  Doug Kwan  <dougkwan@google.com>
109
110         * arm.cc (Target_arm::may_use_thumb2_nop): New method definition.
111         (Arm_relocate_functions::thumb_branch_common): New metod declaration.
112         (Arm_relocate_functions::abs12, Arm_relocate_functions::abs16): Fix
113         formatting.
114         (Arm_relocate_functions::thm_call): Replace body with a call to
115         Arm_relocate_functions::thumb_branch_common.
116         (Arm_relocate_functions::thm_jump24,
117         Arm_relocate_functions::thm_xpc22): New method definitions.
118         (Arm_relocate_functions::thumb_branch_common): New method definition.
119         (Reloc_stub::stbu_type_for_reloc): Fix incorrect uses of bit-wise-or
120         operator.
121         (Target_arm::Relocate::relocate): Adjust call to thm_call.
122         Add code to handle R_ARM_THM_XPC22 and R_ARM_THM_JUMP24.
123
124 2009-11-24  Rafael Avila de Espindola  <espindola@google.com>
125
126         * Makefile.am: Build incremental-dump
127         * Makefile.in: Regenerate.
128         * incremental-dump.cc: New.
129         * incremental.cc (Incremental_inputs_header_data,
130         Incremental_inputs_entry_data): Move to incremental.h
131         * incremental.h: (Incremental_inputs_header_data,
132         Incremental_inputs_entry_data): Move from incremental.cc
133
134 2009-11-24  Rafael Avila de Espindola  <espindola@google.com>
135
136         * incremental.cc (Incremental_inputs_header,
137         Incremental_inputs_header_write, Incremental_inputs_entry,
138         Incremental_inputs_entry_write): Add a typedef with the data type.
139
140 2009-11-24  Rafael Avila de Espindola  <espindola@google.com>
141
142         * incremental.cc (Incremental_inputs_header,
143         Incremental_inputs_header_write, Incremental_inputs_entry,
144         Incremental_inputs_entry_write): Update comment about which
145         type has the filed descriptions.
146
147 2009-11-15  Doug Kwan  <dougkwan@google.com>
148
149         * arm.cc (Target_arm::may_use_arm_nop): New method definition.
150         (Arm_relocate_functions::arm_branch_common): Change method defintion
151         in class definition to a method declaration and update list of formal
152         parameters.
153         (Arm_relocate_functions::plt32, Arm_relocate_functions::call,
154         Arm_relocation_functions::jump24): Adjust call to
155         Arm_relocate_functions::arm_branch_common.  Update list of formal
156         parameters.
157         (Arm_relocate_functions::xpc25): New method definition.
158         (Arm_relocate_functions::arm_branch_common): Move method defintion
159         out from class definition.  Use stubs for mode-switching and extending
160         branch ranges.
161         (Target_arm::Relocate::relocate): Handle weakly-undefined symbols
162         specially.  Change code to enable use of stubs in ARM branches.
163
164 2009-11-10  Doug Kwan  <dougkwan@google.com>
165
166         * arm.cc (Arm_relobj::do_relocate_sections): Remove options parameter
167         in method declaration.
168         (Target_arm::relocate_stub): New method declaration.
169         (Target_arm::default_target): Change to return a pointer instead of
170         a const reference.
171         (Reloc_stub::stub_type_for_reloc): Adjust for the change in
172         Target_arm::default_target.
173         (Arm_Relobj::do_relocate_sections): Remove options paramater in
174         method definition.
175         (Target_arm::relocate_section): Adjust view.
176         (Target_arm::relocate_stub): New method definition.
177
178 2009-11-10  Doug Kwan  <dougkwan@google.com>
179
180         * i386.cc (Target_i386::do_calls_non_split): Add a cast to avoid
181         a format warning.
182         * incremental.cc (open_incremental_binary): Initialized local
183         variables to avoid warnings.
184         * object.cc (make_elf_object): Ditto.
185         * x86_64.cc (Target_x86_64::do_calls_non_split): Add a cast to avoid
186         a format warning.
187  
188 009-11-09  H.J. Lu  <hongjiu.lu@intel.com>
189
190         PR gold/10930
191         * testsuite/plugin_test.c: Include "config.h".
192
193 2009-11-09  Doug Kwan  <dougkwan@google.com>
194
195         * arm.cc (Target_arm::fake_relnum_for_stubs): New constant.
196         (arm_symbol_value): Remove.
197         (Arm_relocate_functions::arm_branch_common,
198         Arm_relocate_functions::abs8, Arm_relocate_functions::thm_abs5,
199         Arm_relocate_functions::abs12, Arm_relocate_functions::abs16,
200         Arm_relocate_functions::abs32, Arm_relocate_functions::rel32,
201         Arm_relocate_functions::thm_call, Arm_relocate_functions::plt32,
202         Arm_relocate_functions::call, Arm_relocate_functions::jump24,
203         Arm_relocate_functions::prel31, Arm_relocate_functions::mov_abs_nc,
204         Arm_relocate_functions::movt_abs, Arm_relocate_functions::movw_abs_nc,
205         Arm_relocate_functions::thm_mobw_abs_nc,
206         Arm_relocate_functions::thm_mov_abs,
207         Arm_relocate_functions::movw_prel_nc,
208         Arm_relocate_functions::thm_movt_abs,
209         Arm_relocate_functions::movt_prel,
210         Arm_relocate_functions::thm_movw_prel_nc,
211         Arm_relocate_functions::thm_movt_prel): Adjust callers of the above.
212         (Target_arm::Relocate::relocate): Only decompose address into two
213         parts if relocation type uses the thumb-bit and pass the actual
214         bit instead of a flag indicating that the thumb-bit is used.  Adjust
215         calls to methods in Arm_relocate_functions for this change.
216
217 2009-11-08  Ian Lance Taylor  <ian@airs.com>
218
219         PR 10925
220         * reloc.cc: Instantiate
221         Sized_relobj::initialize_input_to_output_maps and
222         Sized_relobj:free_input_to_output_maps.
223
224 2009-11-06  Ian Lance Taylor  <iant@google.com>
225
226         PR 10876
227         * defstd.cc (in_segment): Set only_if_ref true for "end".
228
229 2009-11-06  Doug Kwan  <dougkwan@google.com>
230
231         * arm.cc (class Reloc_stub): Correct a comment.
232         (Target_arm::Target_arm): Initialize arm_input_section_map_.
233         (Target_arm::scan_section_for_stubs): New method declaration.
234         (Target_arm::do_make_elf_object, Target_arm::do_make_output_section):
235         Change methods from private to protected.
236         (Target_arm::do_may_relax): New method definition.
237         (Target_arm::do_relax, Target_arm::group_sections,
238         Target_arm::scan_reloc_for_stub,
239         Target_arm::scan_reloc_section_for_stubs): New method declarations.
240         (Target_arm::arm_input_section_map_): New data member declaration.
241         (Target_arm::scan_reloc_for_stub,
242         Target_arm::scan_reloc_section_for_stubs,
243         Target_arm::scan_section_for_stubs, Target_arm::group_sections,
244         Target_arm::do_relax): New method definitions.
245
246 2009-11-06  Mikolaj Zalewski  <mikolaj@google.com>
247
248         * configure.ac: Check for (struct stat)::st_mtim
249         * fileread.cc (File_read::get_mtime): Use st_mtim if available.
250         * config.in: Regenerate.
251         * configure: Regenerate.
252
253 2009-11-05  Ian Lance Taylor  <iant@google.com>
254
255         PR 10910
256         * output.cc (Output_segment::add_output_section): Add missing
257         return statement.
258
259 2009-11-04  Ian Lance Taylor  <iant@google.com>
260
261         PR 10880
262         * object.h (class Object): Add is_needed and set_is_needed
263         methods.  Add is_needed_ field.  Make bool fields into bitfields.
264         * symtab.cc (Symbol_table::set_dynsym_indexes): If a symbol is
265         defined in a dynamic object and referenced by a regular object,
266         set is_needed for the dynamic object.
267         * layout.cc (Layout::finish_dynamic_section): Don't add DT_NEEDED
268         if the file is marked with as_needed and it is not needed.
269
270 2009-11-04  Ian Lance Taylor  <iant@google.com>
271
272         PR 10887
273         * arm.cc (Target_arm::do_finalize_sections): Don't add dynamic
274         tags if data is discarded by linker script.
275         * i386.cc (Target_i386::do_finalize_sections): Likewise.
276         * powerpc.cc (Target_powerpc::do_finalize_sections): Likewise.
277         * sparc.cc (Target_sparc::do_finalize_sections): Likewise.
278         * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
279
280 2009-11-04  Ian Lance Taylor  <iant@google.com>
281
282         * layout.cc (Layout::get_output_section): Add is_interp and
283         is_dynamic_linker_section parameters.  Change all callers.
284         (Layout::choose_output_section): Likewise.
285         (Layout::make_output_section): Likewise.
286         (Layout::add_output_section_data): Add is_dynamic_linker_section
287         parameter.  Change all callers.
288         * layout.h (class Layout): Update declarations.
289         * output.h (class Output_section): Add is_interp, set_is_interp,
290         is_dynamic_linker_section, set_is_dynamic_linker_section methods.
291         Add is_interp_, is_dynamic_linker_section_ fields.  Change
292         generate_code_fills_at_write_ to a bitfield.
293         * output.cc (Output_section::Output_sections): Initialize new
294         fields.
295         (Output_segment::add_output_section): Add do_sort parameter.
296         Change all callers.
297
298 2009-11-03  Ian Lance Taylor  <iant@google.com>
299
300         PR 10860
301         * options.h (class General_options): Add --warn-common.
302         * resolve.cc (Symbol_table::resolve): Handle --warn-common when
303         merging two common symbols.
304         (Symbol_table::should_override): Handle --warn-common when merging
305         a common symbol with a defined symbol.  Use report_resolve_problem
306         for multiple definitions.
307         (Symbol_table::report_resolve_problem): New function.
308         * symtab.h (class Symbol_table): Declare report_resolve_problem.
309
310 2009-11-03  Doug Kwan  <dougkwan@google.com>
311
312         * arm.cc (Target_arm::Target_arm): Initialize stub_tables_ and
313         stub_factory_.
314         (Target_arm::stub_factory): New method definition.
315         (Target_arm::new_arm_input_section,
316         Target_arm::find_arm_input_section, Target_arm::new_stub_table,
317         Target_arm::reloc_uses_thumb_bit): New method declarations.
318         (Target_arm::Stub_table_list, Target_arm::Arm_input_section_map): 
319         New type definitions.
320         (Target_arm::stub_tables_, Target_arm::stub_factory_): New data
321         member declarations.
322         (Target_arm::reloc_uses_thumb_bit, Target_arm::new_arm_input_section,
323         Target_arm::find_arm_input_section, Target_arm::new_stub_table):
324         New method definitions.
325
326 2009-11-03  Ian Lance Taylor  <iant@google.com>
327
328         * options.h (class General_options): Add --warn_constructors.
329
330 2009-11-03  Ian Lance Taylor  <iant@google.com>
331
332         PR 10893
333         * defstd.cc (in_section): Add entries for __rel_iplt_start,
334         __rel_iplt_end, __rela_iplt_start, __rela_iplt_end, and __stack.
335
336 2009-11-03  Ian Lance Taylor  <iant@google.com>
337
338         PR 10895
339         * po/Make-in ($(srcdir)/$(PACKAGE).pot): Pass -C and
340         --msgid-bugs-address.
341         (install-pdf): New target.
342         (install-data_yes): Look up one directory to find mkinstalldirs.
343
344 2009-11-03  H.J. Lu  <hongjiu.lu@intel.com>
345
346         * po/Make-in (.po.gmo): Don't generate .gmo files in source
347         tree.
348
349 2009-10-30  Doug Kwan  <dougkwan@google.com>
350
351         * arm.cc (Stub_addend_reader): Fix bug in previouls check-in.
352
353 2009-10-30  Doug Kwan  <dougkwan@google.com>
354
355         * arm.cc (Stub_addend_reader): New struct template definition
356         and partial specializations.
357         (Stub_addend_reader::operator()): New method definition for a
358         partially specialized template.
359
360 2009-10-30  Doug Kwan  <dougkwan@google.com>
361
362         * arm.cc (Arm_relobj::processor_specific_flags): New method
363         definition.
364         (Arm_relobj::do_read_symbols): New method declaration.
365         (Arm_relobj::processor_specific_flags_): New data member declaration.
366         (Arm_dynobj): New class definition.
367         (Target_arm::do_finalize_sections): Add input_objects parameter.
368         (Target_arm::do_adjust_elf_header): New method declaration.
369         (Target_arm::are_eabi_versions_compatible,
370         (Target_arm::merge_processor_specific_flags): New method declaration.
371         (Target_arm::do_make_elf_object): New overloaded method definitions
372         and declaration.
373         (Arm_relobj::do_read_symbols): New method definition.
374         (Arm_dynobj::do_read_symbols): Ditto.
375         (Target_arm::do_finalize_sections): Add input_objects parameters.
376         Merge processor-specific flags from all input objects.
377         (Target_arm::are_eabi_versions_compatible,
378         Target_arm::merge_processor_specific_flags,
379         Target_arm::do_adjust_elf_header, Target_arm::do_make_elf_object):
380         New method definitions.
381         * i386.cc (Target_i386::do_finalize_sections): Add unnamed
382         Input_objects pointer type parameter.
383         * layout.cc (Layout::finalize): Pass input objects to target's.
384         finalize_sections function.
385         * output.cc (Output_file_header::do_sized_write): Set ELF file
386         header's processor-specific flags.
387         * powerpc.cc (Target_powerpc::do_finalize_sections): Add unnamed
388         Input_objects pointer type parameter.
389         * sparc.cc (Target_sparc::do_finalize_sections): Same.
390         * target.h (Input_objects): New forward class declaration.
391         (Target::processor_specific_flags,
392         Target::are_processor_specific_flags_sect): New method definitions.
393         (Target::finalize_sections): Add input_objects parameter.
394         (Target::Target): Initialize processor_specific_flags_ and
395         are_processor_specific_flags_set_.
396         (Target::do_finalize_sections): Add unnamed Input_objects pointer type
397         parameter.
398         (Target::set_processor_specific_flags): New method definition.
399         (Target::processor_specific_flags_,
400         Target::are_processor_specific_flags_set_): New data member
401         declarations.
402         * x86_64.cc (Target_x86_64::do_finalize_sections): Add unnamed
403         Input_objects pointer type parameter.
404
405 2009-10-30  Doug Kwan  <dougkwan@google.com>
406
407         * arm.cc: Use Arm_address instead of elfcpp::Elf_types<32>::Elf_Addr.
408
409 2009-10-28  Ian Lance Taylor  <iant@google.com>
410
411         * object.h (class Relobj): Drop options parameter from
412         gc_process_relocs, scan_relocs, relocate, do_gc_process_relocs,
413         do_scan_relocs, do_relocate.  Change all callers.
414         (class Sized_relobj): Drop options parameters from
415         do_gc_process_relocs, do_scan_relocs, do_relocate,
416         do_relocate_sections, relocate_sections, emit_relocs_scan,
417         emit_relocs_scan_reltype.  Change all callers.
418         (struct Relocate_info): Remove options field and all references to
419         it.
420         * reloc.h (class Read_relocs): Remove options constructor
421         parameter and options_ field.  Change all callers.
422         (class Gc_process_relocs, class Scan_relocs): Likewise.
423         (class Relocate_task): Likewise.
424         * target-reloc.h (scan_relocs): Remove options parameter.  Change
425         all callers.
426         (scan_relocatable_relocs): Likewise.
427         * target.h (class Sized_target): Remove options parameter from
428         gc_process_relocs, scan_relocs, scan_relocatable_relocs.  Change
429         all callers.
430         * gc.h (gc_process_relocs): Remove options parameter.  Change all
431         callers.
432         * arm.cc: Update functions to remove options parameters.
433         * i386.cc: Likewise.
434         * powerpc.cc: Likewise.
435         * sparc.cc: Likewise.
436         * x86_64.cc: Likewise.
437         * testsuite/testfile.cc: Likewise.
438
439 2009-10-28  Doug Kwan  <dougkwan@google.com>
440
441         * arm.cc (Arm_relobj): New class definition.
442         (Arm_relobj::scan_sections_for_stubs, 
443         Arm_relobj::do_count_local_symbols, Arm_relobj::do_relocate_sections):
444         New method definitions.
445
446 2009-10-28  Cary Coutant  <ccoutant@google.com>
447
448         * plugin.h (Plugin::Plugin): Initialize cleanup_done_.
449         (Plugin::cleanup_done_): New member.
450         (Plugin_manager::Plugin_manager): Remove cleanup_done_.
451         (Plugin_manager::cleanup_done_): Remove.
452         (Plugin_manager::add_input_file): Edit error message.
453         * plugin.cc (Plugin::cleanup): Test and set cleanup_done_.
454         (Plugin_manager::cleanup): Remove use of cleanup_done_.
455
456 2009-10-27  Mikolaj Zalewski  <mikolajz@google.com>
457
458         * fileread.cc: (File_read::View::~View): Use the new
459         data_ownership_ filed.
460         (File_read::~File_read): Dispose the new whole_file_view_.
461         (File_read::open): Mmap the whole file if needed.
462         (File_read::open): Use whole_file_view_ instead of contents_.
463         (File_read::find_view): Use whole_file_view_ if applicable.
464         (File_read::do_read): Use whole_file_view_ instead of contents_.
465         (File_read::make_view): Use whole_file_view_ instead of contents_,
466         update File_read::View::View call.
467         (File_read::find_or_make_view): Update File_read::View::View
468         call.
469         * fileread.h: (File_read::File_read): Initialize whole_file_view_,
470         remove contents_
471         (File_read::View::Data_ownership): New enum.
472         (File_read::View::View): Replace bool mapped_ with Data_ownership
473         argument.
474         (File_read::View::mapped_): Remove (replaced by data_ownership_).
475         (File_read::View::data_ownership_): New field.
476         (File_read::contents_): Remove (replaced by whole_file_view_).
477         (File_read::whole_file_view_): New field.
478         * options.h (class General_options): Add --keep-files-mapped.
479
480 2009-10-27  Cary Coutant  <ccoutant@google.com>
481
482         * symtab.cc (add_from_pluginobj): Pass correct value for is_ordinary.
483         * testsuite/Makefile.am (plugin_test_5): New test case.
484         * testsuite/Makefile.in: Regenerate.
485
486 2009-10-25  Doug Kwan  <dougkwan@google.com>
487
488         * object.h (Sized_relobj::View_size, Sized_relobj::Views): Change
489         from private to protected to allow access by child class.
490         (Sized_relobj::do_relocate_sections): New method declaration.
491         (Sized_relobj::relocate_sections): Virtualize.
492         * reloc.cc (Sized_relobj::do_relocate_sections): Rename from 
493         Sized_relobj::relocate_sections.  Instantiate template explicitly
494         for different target sizes and endianity.
495
496 2009-10-24  Doug Kwan  <dougkwan@google.com>
497
498         * arm.cc (Arm_output_section, Arm_relobj): Forward class declarations.
499         (Arm_input_section::as_arm_input_section): New method.
500         (Arm_output_section): New class definition.
501         (Arm_output_section::create_stub_group,
502         Arm_output_section::group_sections): New method definitions.
503
504 2009-10-22  Doug Kwan  <dougkwan@google.com>
505
506         * arm.cc (Arm_input_section): New class definition.
507         (Arm_input_section::init, Arm_input_section:do_write,
508         Arm_input_section::set_final_data_size,
509         Arm_input_section::do_reset_address_and_file_offset): New method
510         definitions.
511
512 2009-10-21  Doug Kwan  <dougkwan@google.com>
513
514         * arm.cc (Stub_table, Arm_input_section): New forward class
515         declarations.
516         (Stub_table): New class defintion.
517         (Stub_table::add_reloc_stub, Stub_table::relocate_stubs
518         Stub_table::do_reset_address_and_file_offset, Stub_table::do_write):
519         New method definition.
520
521 2009-10-21  Doug Kwan  <dougkwan@google.com>
522
523         * arm.cc: Update copyright comments.
524         (Target_arm): New forward class template declaration.
525         (Arm_address): New type.
526         (ARM_MAX_FWD_BRANCH_OFFSET, ARM_MAX_BWD_BRANCH_OFFSET,
527         THM_MAX_FWD_BRANCH_OFFSET, THM_MAX_BWD_BRANCH_OFFSET,
528         THM2_MAX_FWD_BRANCH_OFFSET, THM2_MAX_BWD_BRANCH_OFFSET): New
529         constants.
530         (Insn_template): Same.
531         (DEF_STUBS): New macro.
532         (Stub_type): New enum type.
533         (Stub_template): New class definition.
534         (Stub): Same.
535         (Reloc_stub): Same.
536         (Stub_factory): Same.
537         (Target_arm::Target_arm): Initialize may_use_blx_ and
538         should_force_pic_veneer_.
539         (Target_arm::may_use_blx, Target_arm::set_may_use_blx,
540         Target_arm::should_force_pic_veneer,
541         Target_arm::set_should_force_pic_veneer, Target_arm::using_thumb2,
542         Target_arm::using_thumb_only, Target_arm:;default_target): New
543         method defintions.
544         (Target_arm::may_use_blx_, Target_arm::should_force_pic_veneer_):
545         New data member declarations.
546         (Insn_template::size, Insn_template::alignment): New method defintions.
547         (Stub_template::Stub_template): New method definition.
548         (Reloc_stub::Key::name, Reloc_stub::stub_type_for_reloc,
549         Reloc_stub::do_fixed_endian_write, Reloc_stub::do_write): Same.
550         (Stub_factory::Stub_factory): New method definition.
551         * gold.h (string_hash): New template.
552         * output.h (Input_section_specifier::hash_value): Use
553         gold::string_hash.
554         (Input_section_specifier::string_hash): Remove.
555         * stringpool.cc (Stringpool_template::string_hash): Use
556         gold::string_hash.
557
558 2009-10-20  Doug Kwan  <dougkwan@google.com>
559
560         * object.cc (Sized_relobj::do_finalize_local_symbols): Handle section
561         symbols of relaxed input sections.
562         * output.h (Output_section::find_relaxed_input_section): Make
563         method public.
564
565 2009-10-16  Doug Kwan  <dougkwan@google.com>
566
567         * dynobj.cc (Versions::Versions): Initialize version_script_.
568         Only insert base version symbol definition for a shared object
569         if version script defines any version versions.
570         (Versions::define_base_version): New method definition.
571         (Versions::add_def): Check that base version is not needed.
572         (Versions::add_need): Define base version lazily.
573         * dynobj.h (Versions::define_base_version): New method declaration.
574         (Versions::needs_base_version_): New data member declaration.
575         * testsuite/Makefile.am (check_SCRIPTS): Add no_version_test.sh
576         (check_DATA): Add no_version_test.stdout.
577         (libno_version_test.so, no_version_test.o no_version_test.stdout):
578         New make rules.
579         * testsuite/Makefile.in: Regenerate.
580         * testsuite/no_version_test.c: New file.
581         * testsuite/no_version_test.sh: Ditto.
582
583 2009-10-16  Doug Kwan  <dougkwan@google.com>
584
585         * expression.cc (class Segment_start_expression): New class definition.
586         (Segment_start_expression::value): New method definition.
587         (script_exp_function_segment_start): Return a new
588         Segment_start_expression.
589         * gold/script-c.h (script_saw_segment_start_expression): New function
590         prototype.
591         * script-sections.cc (Script_sections::Script_sections): Initialize
592         SAW_SEGMENT_START_EXPRESSION_ to false.
593         (Script_sections::set_section_addresses): Use -Ttext, -Tdata
594         and -Tbbs options to specify section addresses if given in
595         command line and no SEGMENT_START expression is seen in a script.
596         * script-sections.h (Script_sections::saw_segment_start_expression,
597         Script_sections::set_saw_segment_start_expression): New method
598         definition.
599         (Script_sections::saw_segment_start_expression_): New data member
600         declaration.
601         * script.cc (script_saw_segment_start_expression): New function.
602         * yyscript.y (SEGMENT_START): Call script_saw_segment_start_expression.
603         * testsuite/Makefile.am (check_SCRIPTS): Add script_test_6.sh,
604         script_test_7.sh and script_test_8.sh.
605         (check_DATA): Add script_test_6.stdout, script_test_7.stdout and
606         script_test_8.stdout.
607         (MOSTLYCLEANFILES): Add script_test_6, script_test_7 and script_test_8.
608         (script_test_6, script_test_6.stdout, script_test_7,
609         script_test_7.stdout, script_test_8, script_test_8.stdout): New rules.
610         * Makefile.in: Regenerate.
611         * testsuite/script_test_6.sh: New file.
612         * testsuite/script_test_6.t: Same.
613         * testsuite/script_test_7.sh: Same.
614         * testsuite/script_test_7.t: Same.
615         * testsuite/script_test_8.sh: Same.
616
617 2009-10-16  Doug Kwan  <dougkwan@google.com>
618
619         * output.cc (Output_segment::set_section_list_address): Cast
620         expressions to unsigned long long type to avoid format warnings.
621
622 2009-10-15  Ian Lance Taylor  <iant@google.com>
623
624         * script.cc (Script_options::add_symbol_assignment): Always add a
625         dot assignment to script_sections_.
626         * script-sections.cc (Script_sections::add_dot_assignment):
627         Initialize if necessary.
628
629         * layout.cc (Layout::relaxation_loop_body): Don't crash if we see
630         program headers with no load segment if there is a linker script.
631
632         * layout.cc (Layout::set_segment_offsets): Align the file offset
633         to the segment aligment for -N or -n with no load segment.
634         * output.cc (Output_segment::add_output_section): Don't crash if
635         the first section is a TLS section.
636         (Output_segment::set_section_list_addresses): Print an error
637         message if the address moves backward in a linker script.
638         * script-sections.cc
639         (Output_section_element_input::set_section_addresses): Don't
640         increase *dot_value for a SHF_TLS/SHT_NOBITS section.
641         (Orphan_output_section::set_section_addresses): Likewise.
642
643 2009-10-15  Doug Kwan  <dougkwan@google.com>
644
645         * layout.cc (Layout::finish_dynamic_section): Generate tags
646         DT_FINI_ARRAY, DT_FINI_ARRAYSZ, DT_INIT_ARRAY, DT_INIT_ARRAYSZ,
647         DT_PREINIT_ARRAY, DT_PREINIT_ARRAYSZ as needed. If -Bsymbolic is
648         used, add DT_SYMBOLIC and set DF_SYMBOLIC in DT_FLAGS.
649
650 2009-10-14  Ian Lance Taylor  <iant@google.com>
651
652         * object.h (class Relocate_info): Add reloc_shdr and data_shdr
653         fields.
654         * object.cc (Sized_relobj::relocate_sections): Set reloc_shdr and
655         data_shdr fields of relinfo.
656         * i386.cc (class Target_i386::Relocate): Remove ldo_addrs_ field.
657         (Target_i386::Relocate::relocate_tls): Don't call fix_up_ldo.  For
658         R_386_TLS_LDO_32, adjust based on section flags.
659         (Target_i386::Relocate::fix_up_ldo): Remove.
660
661 2009-10-13  Ian Lance Taylor  <iant@google.com>
662
663         Add support for -pie.
664         * options.h (class General_options): Add -pie and
665         --pic-executable.
666         (General_options::output_is_position_independent): Test -pie.
667         (General_options::output_is_executable): Return true if not shared
668         and not relocatable.
669         (General_options::output_is_pie): Remove.
670         * options.cc (General_options::finalize): Reject incompatible uses
671         of -pie.
672         * gold.cc (queue_middle_tasks): A -pie link is not static.
673         * symtab.h (Symbol::needs_plt_entry): Return false if -pie.
674         * symtab.cc (Symbol::final_value_is_known): Return false if
675         output_is_position_independent.
676         * layout.cc (Layout::set_segment_offsets): Start at address 0 if
677         output_is_position_independent.
678         * output.cc (Output_file_header::do_sized_write): Use ET_DYN if
679         output_is_position_independent.
680         * i386.cc (Output_data_plt_i386::do_write): Use the PIC PLT if
681         output_is_position_independent.
682         * testsuite/Makefile.am (check_PROGRAMS): Add basic_pie_test and
683         two_file_pie_test.
684         (basic_pie_test.o, basic_pie_test): New targets.
685         (two_file_test_1_pie.o, two_file_test_1b_pie.o): New targets.
686         (two_file_test_2_pie.o, two_file_test_main_pie.o): New targets.
687         (two_file_pie_test): New target.
688         * testsuite/Makefile.in: Rebuild.
689         * README: Remove note saying that -pie is not supported.
690
691 2009-10-13  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
692
693         * options.h (class General_options): Add -init and -fini.
694         * layout.cc (Layout::finish_dynamic_section): Emit
695         given init and fini functions.
696
697 2009-10-13  Sriraman Tallam  <tmsriram@google.com>
698
699         * gc.h (gc_process_relocs): Check if icf is enabled using new
700         function.
701         * gold.cc (queue_initial_tasks): Likewise.
702         (queue_middle_tasks): Likewise.
703         * object.cc (do_layout): Likewise.
704         * symtab.cc (is_section_folded): Likewise.
705         * main.cc (main): Likewise.
706         * reloc.cc (Read_relocs::run): Likewise.
707         (Sized_relobj::do_scan_relocs): Likewise.
708         * icf.cc (is_function_ctor_or_dtor): New function.
709         (Icf::find_identical_sections): Check if function is ctor or dtor when
710         safe icf is chosen.
711         * options.h (General_options::icf): Change option to be an enum.
712         (Icf_status): New enum.
713         (icf_enabled): New method.
714         (icf_safe_folding): New method.
715         (set_icf_status): New method.
716         (icf_status_): New variable.
717         * (options.cc) (General_options::finalize): Set icf_status_.
718         * testsuite/Makefile.am: Add commands to build icf_safe_test. Modify
719         icf_test and icf_keep_unique_test to use the --icf enum flag.
720         * testsuite/icf_safe_test.sh: New file.
721         * testsuite/icf_safe_test.cc: New file. 
722
723 2009-10-12  Sriraman Tallam  <tmsriram@google.com>
724
725         * symtab.h: Check for GOLD_SYMTAB_H before header includes. Remove
726         includes to gc.h and icf.h.
727         * arm.cc: Include gc.h.
728         * gold.cc: Likewise.
729         * i386.cc: Likewise.
730         * powerpc.cc: Likewise.
731         * sparc.cc: Likewise.
732         * x86_64.cc: Likewise.
733         * gc.h: Include icf.h.
734
735 2009-10-11  Ian Lance Taylor  <iant@google.com>
736
737         * plugin.cc: Include "gold.h" before other header files.
738
739 2009-10-10  Chris Demetriou  <cgd@google.com>
740
741         * options.h (Input_file_argument::Input_file_type): New enum.
742         (Input_file_argument::is_lib_): Replace with...
743         (Input_file_argument::type_): New member.
744         (Input_file_argument::Input_file_argument): Take Input_file_type
745         'type' rather than boolean 'is_lib' as second argument.
746         (Input_file_argument::is_lib): Use type_.
747         (Input_file_argument::is_searched_file): New function.
748         (Input_file_argument::may_need_search): Handle is_searched_file.
749         * options.cc (General_options::parse_library): Support -l:filename.
750         (General_options::parse_just_symbols): Update for Input_file_argument
751         changes.
752         (Command_line::process): Likewise.
753         * archive.cc (Archive::get_file_and_offset): Likewise.
754         * plugin.cc (Plugin_manager::release_input_file): Likewise.
755         * script.cc (read_script_file, script_add_file): Likewise.
756         * fileread.cc (Input_file::Input_file): Likewise.
757         (Input_file::will_search_for): Handle is_searched_file.
758         (Input_file::open): Likewise.
759         * readsyms.cc (Read_symbols::get_name): Likewise.
760         * testsuite/Makefile.am (searched_file_test): New test.
761         * testsuite/Makefile.in: Regenerate.
762         * testsuite/searched_file_test.cc: New file.
763         * testsuite/searched_file_test_lib.cc: New file.
764
765 2009-10-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
766             Ian Lance Taylor  <iant@google.com>
767
768         * descriptor.cc: Include <cstdio> and "binary-io.h".
769         (Descriptors::open): Open the files in binary mode always.
770         * script.cc (Lex::get_token): Treat \r as whitespace.
771
772 2009-10-09  Ian Lance Taylor  <iant@google.com>
773
774         * testsuite/retain_symbols_file_test.sh: Don't test for __tcf_0.
775
776 2009-10-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
777             Ian Lance Taylor  <iant@google.com>
778
779         * configure.ac: Check for readv function also.
780         * fileread.cc (readv): Define if not HAVE_READV.
781         * fileread.h (File_read:: max_readv_entries): Set to 1 if readv
782         does not exist.
783         * config.in: Regenerate.
784         * configure: Regenerate.
785
786 2009-10-09  Doug Kwan  <dougkwan@google.com>
787
788         * layout.cc (Layout::make_output_section): Call target hook to make
789         ordinary output section.
790         (Layout::finalize): Adjust parameter list of call the
791         Target::may_relax().
792         * layout.h (class Layout::section_list): New method.
793         * merge.h (Output_merge_base::entsize): Change visibility to public.
794         (Output_merge_base::is_string, Output_merge_base::do_is_string):
795         New methods.
796         (Output_merge_string::do_is_string): New method.
797         * object.cc (Sized_relobj::do_setup): renamed from
798         Sized_relobj::set_up.
799         * object.h (Sized_relobj::adjust_shndx,
800         Sized_relobj::initializ_input_to_output_maps,
801         Sized_relobj::free_input_to_output_maps): Change visibilities to
802         protected.
803         (Sized_relobj::setup): Virtualize.
804         (Sized_relobj::do_setup): New method declaration.
805         (Sized_relobj::invalidate_section_offset,
806         Sized_relobj::do_invalidate_section_offset): New method decfinitions.
807         (Sized_relobj::elf_file, Sized_relobj::local_values): New methods.
808         * options.cc (parse_int): New function.
809         * options.h (parse_int): New declaration.
810         (DEFINE_int): New macro.
811         (stub_group_size): New option.
812         * output.cc (Output_section::Output_section): Initialize memebers
813         merge_section_map_, merge_section_by_properties_map_,
814         relaxed_input_section_map_, is_relaxed_input_section_map_valid_.
815         (Output_section::add_input_section): Handled deferred code-fill
816         generation and remove an old comment.
817         (Output_section::add_relaxed_input_section): New method definition.
818         (Output_section::add_merge_input_section): Use merge section by
819         properties map to speed to search.  Update merge section maps
820         as appropriate.
821         (Output_section::build_relaxation_map): New method definition.
822         (Output_section::convert_input_sections_in_list_to_relaxed_sections):
823         Same.
824         (Output_section::relax_input_section): Renamed to
825         Output_section::convert_input_sections_to_relaxed_sections and change
826         interface to take a vector of pointers to relaxed sections.
827         (Output_section::find_merge_section,
828         Output_section::find_relaxed_input_section): New method definitions.
829         (Output_section::is_input_address_mapped,
830         Output_section::output_offset, Output_section::output_address):
831         Use output section data maps to speed up searching.
832         (Output_section::find_starting_output_address): Add comments.
833         (Output_section::do_write,
834         Output_section::write_to_postprocessing_buffer): Do code-fill
835         generation as appropriate.
836         (Output_section::get_input_sections): Invalidate relaxed input section
837         map.
838         (Output_section::restore_states): Adjust type of checkpoint .
839         Invalidate relaxed input section map.
840         * output.h (Output_merge_base): New class declaration.
841         (Input_section_specifier): New class defintion.
842         (class Output_relaxed_input_section) Change base class to
843         Output_section_data_build.
844         (Output_relaxed_input_section::Output_relaxed_input_section): Adjust
845         base class initializer.
846         (Output_section::add_relaxed_input_section): New method declaration.
847         (Output_section::Input_section): Change visibility to protected.
848         (Output_section::Input_section::relobj,
849         Output_section::Input_section::shndx): Handle relaxed input sections.
850         Output_section::input_sections) Change visibility to protected.  Also
851         define overload to return a non-const pointer.
852         (Output_section::Merge_section_properties): New class defintion.
853         (Output_section::Merge_section_by_properties_map,
854         Output_section::Output_section_data_by_input_section_map,
855         Output_section::Relaxation_map): New types.
856         (Output_section::relax_input_section): Rename method to
857         Output_section::convert_input_sections_to_relaxed_sections and change
858         interface to take a vector of relaxed section pointers.
859         (Output_section::find_merge_section,
860         Output_section::find_relaxed_input_section,
861         Output_section::build_relaxation_map,
862         Output_section::convert_input_sections_in_list_to_relaxed_sections):
863         New method declarations.
864         (Output_section::merge_section_map_
865         Output_section::merge_section_by_properties_map_,
866         Output_section::relaxed_input_section_map_,
867         Output_section::is_relaxed_input_section_map_valid_,
868         Output_section::generate_code_fills_at_write_): New data members.
869         * script-sections.cc
870         (Output_section_element_input::set_section_addresses): Call
871         current_data_size and addralign methods of relaxed input sections.
872         (Orphan_output_section::set_section_addresses): Call current_data_size
873         and addralign methods of relaxed input sections.
874         * symtab.cc (Symbol_table::compute_final_value): Extract template
875         from the body of Symbol_table::sized_finalize_symbol.
876         (Symbol_table::sized_finalized_symbol): Call
877         Symbol_table::compute_final_value.
878         * symtab.h (Symbol_table::Compute_final_value_status): New enum type.
879         (Symbol_table::compute_final_value): New templated method declaration.
880         * target.cc (Target::do_make_output_section): New method defintion.
881         * target.h (Target::make_output_section): New method declaration.
882         (Target::relax): Add more parameters for input objects, symbol table
883         and layout.  Adjust call to do_relax.
884         (Target::do_make_output_section): New method declaration.
885         (Target::do_relax): Add parameters for input objects, symbol table
886         and layout.
887
888 2009-10-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
889
890         * pread.c: Include stdio.h.
891
892 2009-10-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
893
894         * plugin.cc: Don't include dlfcn.h when ENABLE_PLUGINS is not
895         defined.
896
897 2009-10-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
898
899         * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
900         Change read_shndx type to unsigned int.
901         (Sized_dwarf_line_info::read_lines): Change shndx type to unsigned
902         int.
903         (Sized_dwarf_line_info::read_line_mappings): Likewise.
904         * dwarf_reader.h (Sized_dwarf_line_info::Sized_dwarf_line_info):
905         Change read_shndx type to unsigned int.
906         (Sized_dwarf_line_info::read_lines): Change shndx type to unsigned
907         int.
908         (Sized_dwarf_line_info::read_line_mappings): Likewise.
909         * layout.cc (Layout::create_symtab_sections): Cast the result of
910         local_symcount * symsize to off_t in the gold_assert.
911
912 2009-10-09  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
913
914         * arm.cc (Target_arm::relocate::reloc_is_non_pic): Return true for
915         R_ARM_THM_ABS5, R_ARM_ABS8, R_ARM_ABS12, R_ARM_ABS16,
916         R_ARM_BASE_ABS.
917         (Arm_relocate_functions::abs8): Remove has_thumb_bit parameter.
918         (Arm_relocate_functions::thm_abs5): New function.
919         (Arm_relocate_functions::abs12): New function.
920         (Arm_relocate_functions::abs16): New function.
921         (Arm_relocate_functions::base_abs): New function.
922         (Scan::check_non_pic): Handle R_ARM_ABS32_NOI.
923         (Scan::local): Remove special handling of R_ARM_ABS8.  Handle
924         R_ARM_ABS32_NOI, R_ARM_THM_ABS5, R_ARM_ABS12, R_ARM_ABS16, and
925         R_ARM_BASE_ABS.
926         (Scan::global): Likewise.
927         (Relocate::relocate): Handle R_ARM_ABS12, R_ARM_ABS16,
928         R_ARM_ABS32_NOI, R_ARM_THM_ABS5, and R_ARM_BASE_ABS.
929         (Relocatable_size_for_reloc::get_size_for_reloc): Handle
930         R_ARM_ABS16, R_ARM_THM_ABS5, R_ARM_ABS32_NOI, R_ARM_ABS12, and
931         R_ARM_BASE_ABS.
932
933 2009-10-09  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
934
935         * arm.cc (Arm_relocate_functions::movw_prel_nc): New function.
936         (Arm_relocate_functions::movt_prel): New function.
937         (Arm_relocate_functions::thm_movw_prel_nc): New function.
938         (Arm_relocate_functions::thm_movt_prel): New function.
939         (Scan::local): Handle R_ARM_MOVW_PREL_NC, R_ARM_MOVT_PREL,
940         R_ARM_THM_MOVW_PREL_NC, and R_ARM_THM_MOVT_PREL.
941         (Scan::global, Relocate::relocate): Likewise.
942         (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
943
944 2009-10-09  Mikolaj Zalewski  <mikolajz@google.com>
945
946         * gold.cc: (queue_initial_tasks): Pass incremental_inputs to
947         Incremental_checker.
948         * incremental.cc: (INCREMENTAL_LINK_VERSION): Change type to
949         unsigned int.
950         (class Incremental_inputs_header): New class.
951         (Incremental_inputs_header_writer): Edit comment.
952         (Incremental_inputs_entry): New class.
953         (Incremental_inputs_entry_writer): Edit comment.
954         (Sized_incremental_binary::do_find_incremental_inputs_section):
955         Add *strtab_shndx parameter, fill it.
956         (Sized_incremental_binary::do_check_inputs): New method.
957         (Incremental_checker::can_incrementally_link_output_file): Use
958         Sized_incremental_binary::check_inputs.
959         (Incremental_inputs::report_command_line): Save command line in
960         command_line_.
961         * incremental.h:
962         (Incremental_binary::find_incremental_inputs_section): New
963         method.
964         (Incremental_binary::do_find_incremental_inputs_section): Add
965         strtab_shndx parameter.
966         (Incremental_binary::do_check_inputs): New pure virtual method.
967         (Sized_incremental_binary::do_check_inputs): Declare.
968         (Incremental_checker::Incremental_checker): Add incremental_inputs
969         parameter, use it to initialize incremental_inputs_.
970         (Incremental_checker::incremental_inputs_): New field.
971         (Incremental_checker::command_line): New method.
972         (Incremental_checker::inputs): New method.
973         (Incremental_checker::command_line_): New field.
974
975 2009-10-09  Mikolaj Zalewski  <mikolajz@google.com>
976
977         * incremental.cc: Include <cstdarg> and "target-select.h".
978         (vexplain_no_incremental): New function.
979         (explain_no_incremental): New function.
980         (Incremental_binary::error): New method.
981         (Sized_incremental_binary::do_find_incremental_inputs_section): New
982         method.
983         (make_sized_incremental_binary): New function.
984         (open_incremental_binary): New function.
985         (can_incrementally_link_file): Add checks if output is ELF and has
986         inputs section.
987         * incremental.h: Include "elfcpp_file.h" and "output.h".
988         (Incremental_binary): New class.
989         (Sized_incremental_binary): New class.
990         (open_incremental_binary): Declare.
991         * object.cc (is_elf_object): Use
992         elfcpp::Elf_recognizer::is_elf_file.
993         (make_elf_object): Use elfcpp::Elf_recognizer::is_valid_header.
994         * output.h (Output_file::filesize): New method.
995
996 2009-10-07  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
997
998         * arm.cc (Arm_relocate_functions::extract_arm_movw_movt_addend):
999         New function.
1000         (Arm_relocate_functions::insert_val_arm_movw_movt): New function.
1001         (Arm_relocate_functions::extract_thumb_movw_movt_addend): New
1002         function.
1003         (Arm_relocate_functions::insert_val_thumb_movw_movt): New
1004         function.
1005         (Arm_relocate_functions::movw_abs_nc): New function.
1006         (Arm_relocate_functions::movt_abs): New function.
1007         (Arm_relocate_functions::thm_movw_abs_nc): New function.
1008         (Arm_relocate_functions::thm_movt_abs): New function.
1009         (Scan::local): Handle R_ARM_MOVW_ABS_NC, R_ARM_MOVT_ABS,
1010         R_ARM_THM_MOVW_ABS_NC, R_ARM_THM_MOVT_ABS.
1011         (Scan::global): Likewise.
1012         (Relocate::relocate): Likewise.
1013         (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
1014
1015 2009-10-07  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
1016
1017         * arm.cc (Arm_relocate_functions::got_prel) New function.
1018         (Scan::local, Scan::global): Handle R_ARM_GOT_PREL.
1019         (Relocate::relocate): Likewise.
1020         (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
1021
1022 2009-10-06  Ian Lance Taylor  <iant@google.com>
1023
1024         * options.h (class General_options): Define
1025         split_stack_adjust_size parameter.
1026         * object.h (class Object): Add uses_split_stack_ and
1027         has_no_split_stack_ fields.  Add uses_split_stack and
1028         has_no_split_stack accessor functions.  Declare
1029         handle_split_stack_section.
1030         (class Reloc_symbol_changes): Define.
1031         (class Sized_relobj): Define Function_offsets.  Declare
1032         split_stack_adjust, split_stack_adjust_reltype, and
1033         find_functions.
1034         * object.cc (Object::handle_split_stack_section): New function.
1035         (Sized_relobj::do_layout): Call handle_split_stack_section.
1036         * dynobj.cc (Sized_dynobj::do_layout): Call
1037         handle_split_stack_section.
1038         * reloc.cc (Sized_relobj::relocate_sections): Call
1039         split_stack_adjust for executable sections in split_stack
1040         objects.  Pass reloc_map to relocate_section.
1041         (Sized_relobj::split_stack_adjust): New function.
1042         (Sized_relobj::split_stack_adjust_reltype): New function.
1043         (Sized_relobj::find_functions): New function.
1044         * target-reloc.h: Include "object.h".
1045         (relocate_section): Add reloc_symbol_changes parameter.  Change
1046         all callers.
1047         * target.h (class Target): Add calls_non_split method.  Declare
1048         do_calls_non_split virtual method.  Declare match_view and
1049         set_view_to_nop.
1050         * target.cc: Include "elfcpp.h".
1051         (Target::do_calls_non_split): New function.
1052         (Target::match_view): New function.
1053         (Target::set_view_to_nop): New function.
1054         * gold.cc (queue_middle_tasks): Give an error if mixing
1055         split-stack and non-split-stack objects with -r.
1056         * i386.cc (Target_i386::relocate_section): Add
1057         reloc_symbol_changes parameter.
1058         (Target_i386::do_calls_non_split): New function.
1059         * x86_64.cc (Target_x86_64::relocate_section): Add
1060         reloc_symbol_changes parameter.
1061         (Target_x86_64::do_calls_non_split): New function.
1062         * arm.cc (Target_arm::relocate_section): Add reloc_symbol_changes
1063         parameter.
1064         * powerpc.cc (Target_powerpc::relocate_section): Add
1065         reloc_symbol_changes parameter.
1066         * sparc.cc (Target_sparc::relocate_section): Add
1067         reloc_symbol_changes parameter.
1068         * configure.ac: Call AM_CONDITIONAL for the default target.
1069         * configure: Rebuild.
1070         * testsuite/Makefile.am (TEST_AS): New variable.
1071         (check_SCRIPTS): Add split_i386.sh and split_x86_64.sh.
1072         (check_DATA): Add split_i386 and split_x86_64 files.
1073         (SPLIT_DEFSYMS): Define.
1074         (split_i386_[1234n].o): New targets.
1075         (split_i386_[124]): New targets.
1076         (split_i386_[1234r].stdout): New targets.
1077         (split_x86_64_[1234n].o): New targets.
1078         (split_x86_64_[124]): New targets.
1079         (split_x86_64_[1234r].stdout): New targets.
1080         (MOSTLYCLEANFILES): Add new executables.
1081         * testsuite/split_i386.sh: New file.
1082         * testsuite/split_x86_64.sh: New file.
1083         * testsuite/split_i386_1.s: New file.
1084         * testsuite/split_i386_2.s: New file.
1085         * testsuite/split_i386_3.s: New file.
1086         * testsuite/split_i386_4.s: New file.
1087         * testsuite/split_i386_n.s: New file.
1088         * testsuite/split_x86_64_1.s: New file.
1089         * testsuite/split_x86_64_2.s: New file.
1090         * testsuite/split_x86_64_3.s: New file.
1091         * testsuite/split_x86_64_4.s: New file.
1092         * testsuite/split_x86_64_n.s: New file.
1093         * testsuite/testfile.cc (Target_test): Update relocation_section
1094         function.
1095         * testsuite/Makefile.in: Rebuild.
1096
1097 2009-10-06  Ian Lance Taylor  <iant@google.com>
1098
1099         * i386.cc (class Target_i386::Relocate): Add ldo_addrs_ field.
1100         (Target_i386::Relocate::relocate_tls): Call fix_up_ldo before
1101         changing local_dynamic_type_ from LOCAL_DYNAMIC_NONE.  When
1102         handling R_386_TLS_LDO_32, if local_dynamic_type_ is NONE, push
1103         the address on ldo_addrs_.
1104         (Target_i386::Relocate::fix_up_ldo): New function.
1105
1106 2009-10-06   Rafael Espindola  <espindola@google.com>
1107
1108         * plugin.cc (add_input_library): New.
1109         (Plugin::load): Add add_input_library to tv.
1110         (Plugin_manager::add_input_file): Add the is_lib argument.
1111         (add_input_file): Update call to Plugin_manager::add_input_file.
1112         (add_input_library): New.
1113         * plugin.h (Plugin_manager::add_input_file): Add the is_lib argument.
1114
1115 2009-09-30  Doug Kwan  <dougkwan@google.com>
1116
1117         * arm.cc (Target_arm::may_need_copy_reloc): Check for THUMB function
1118         symbol and call Symbol::may_need_copy_reloc to determine if
1119         a copy reloc is needed.
1120         * copy-relocs.cc (Copy_relocs::need_copy_reloc): Return false if -z
1121         nocopyreloc is given in command line.
1122         (Copy_relocs::emit_copy_reloc): Assert that -z nocopyreloc is not
1123         given in command line.
1124         * i386.cc (Target_i386::may_need_copy_reloc): Remove.
1125         (Target_i386::Scan::global): Use Symbol::may_need_copy_reloc instead
1126         of the removed Target_i386::may_need_copy_reloc.
1127         * options.h (copyreloc): New option with default value false.
1128         * powerpc.cc (Target_powerpc::may_need_copy_reloc): Remove.
1129         (Target_powerpc::Scan::global): Use Symbol::may_need_copy_reloc
1130         instead of the removed Target_powerpc::may_need_copy_reloc.
1131         * sparc.cc (Target_powerpc::may_need_copy_reloc): Remove.
1132         (Target_sparc::Scan::global): Use Symbol::may_need_copy_reloc
1133         instead of the removed Target_sparc::may_need_copy_reloc.
1134         * symtab.h (Symbol::may_need_copy_reloc): New method definition.
1135         * x86_64.cc (Target_powerpc::may_need_copy_reloc): Remove.
1136         (Target_x86_64::Scan::global): Use Symbol::may_need_copy_reloc
1137         instead of the removed Target_x86_64::may_need_copy_reloc.
1138
1139 2009-09-30  Ian Lance Taylor  <iant@google.com>
1140
1141         * object.h (class Object): Remove target_ field, and target,
1142         sized_target, and set_target methods.
1143         (Object::sized_target): Remove.
1144         (class Sized_relobj): Update declarations.  Remove sized_target.
1145         * object.cc (Sized_relobj::setup): Remove target parameter.
1146         Change all callers.
1147         (Input_objects::add_object): Don't do anything with the target.
1148         (make_elf_sized_object): Add punconfigured parameter.  Change all
1149         callers.  Set or test parameter target.
1150         * dynobj.cc (Sized_dynobj::target): Remove target parameter.
1151         Change all callers.
1152         * parameters.cc (Parameters::set_target): Change parameter type to
1153         be non-const.
1154         (Parameters::default_target): Remove.
1155         (set_parameters_target): Change parameter type to be non-const.
1156         (parameters_force_valid_target): New function.
1157         (parameters_clear_target): New function.
1158         * parameters.h (class Parameters): Update declarations.  Remove
1159         default_target method.  Add sized_target and clear_target
1160         methods.  Change target_ to be non-const.
1161         (set_parameters_target): Update declaration.
1162         (parameters_force_valid_target): Declare.
1163         (parameters_clear_target): Declare.
1164         * readsyms.cc (Read_symbols::do_read_symbols): Pass punconfigured
1165         as NULL if we aren't searching.
1166         (Add_symbols::run): Don't check for compatible target.
1167         * fileread.cc (Input_file::open_binary): Call
1168         parameters_force_valid_target.
1169         * gold.cc (queue_middle_tasks): Likewise.
1170         * plugin.cc (make_sized_plugin_object): Likewise.  Don't call
1171         set_target on object.
1172         * dynobj.h (class Sized_dynobj): Update declarations.
1173         * archive.cc (Archive::get_elf_object_for_member): Return NULL if
1174         make_elf_object returns NULL.
1175         (Archive::include_member): Don't check whether object target is
1176         compatible.
1177         * output.cc (Output_section::add_input_section): Get target from
1178         parameters.
1179         (Output_section::relax_input_section): Likewise.
1180         * reloc.cc (Sized_relobj::do_gc_process_relocs): Get target from
1181         parameters.
1182         (Sized_relobj::do_scan_relocs): Likewise.
1183         (Sized_relobj::relocate_sections): Likewise.
1184         * resolve.cc (Symbol_table::resolve): Likewise.
1185         * symtab.cc (Symbol_table::wrap_symbol): Likewise.  Remove object
1186         parameter.  Change all callers.
1187         (Symbol_table::add_from_object): Get target from parameters.
1188         (Symbol_table::add_from_relobj): Don't check object target.
1189         (Symbol_table::add_from_dynobj): Likewise.
1190         (Symbol_table::define_special_symbol): Get target from
1191         parameters.
1192         * symtab.h (class Symbol_table): Update declaration.
1193         * testsuite/binary_unittest.cc (gold_testsuite): Remove target
1194         parameter.  Change all callers.  Clear parameter target.
1195         (Binary_test): Test target here.
1196         * testsuite/object_unittest.cc (gold_testsuite): Remove
1197         target_test_pointer parameter.  Change all callers.
1198         (Object_test): Test target here.
1199
1200 2009-09-26  Ian Lance Taylor  <iant@google.com>
1201
1202         * testsuite/initpri1.c: Don't try to use constructor priorities if
1203         compiling with gcc before 4.3.
1204
1205 2009-09-22  Mikolaj Zalewski  <mikolajz@google.com>
1206
1207         * testsuite/retain_symbols_file_test.sh (check_present): Change
1208         output file name to retain_symbols_file_test.stdout.
1209         (check_absent): Likewise.
1210
1211 2009-09-18  Craig Silverstein  <csilvers@google.com>
1212
1213         * object.cc (Sized_relobj::do_count): Test should_retain_symbol map.
1214         * options.cc: Include <cerrno> and <fstream>.
1215         (General_options::finalize): Parse -retain-symbols-file tag.
1216         * options.h: New flag.
1217         (General_options): New method should_retain_symbol, new
1218         variable symbols_to_retain.
1219         * symtab.cc (Symbol_table::sized_finalize_symbol): Test
1220         should_retain_symbol map.
1221         * testsuite/Makefile.am (retain_symbols_file_test): New test.
1222         * testsuite/Makefile.in: Regenerate.
1223         * testsuite/retain_symbols_file_test.sh: New file.
1224
1225 2009-09-18  Nick Clifton  <nickc@redhat.com>
1226
1227         * po/es.po: Updated Spanish translation.
1228
1229 2009-09-17  Doug Kwan  <dougkwan@google.com>
1230
1231         * debug.h (DEBUG_RELAXATION): New constant.
1232         (DEBUG_ALL): Add DEBUG_RELAXATION.
1233         (debug_string_to_enum): Add relaxation debug option.
1234         * layout.cc
1235         (Layout::Relaxation_debug_check::check_output_data_for_reset_values,
1236         Layout::Relaxation_debug_check::read_sections,
1237         Layout::Relaxation_debug_check::read_sections): New method definitions.
1238         (Layout::Layout): Initialize data members
1239         record_output_section_data_from_scrips_,
1240         script_output_section_data_list_ and relaxation_debug_check_.
1241         (Layout::save_segments, Layout::restore_segments,
1242         Layout::clean_up_after_relaxation, Layout::prepare_for_relaxation,
1243         Layout::relaxation_loop_body): New method definitions.
1244         (Layout::finalize): Support relaxation.  Move section layout code to
1245         Layout::relaxation_loop_body.
1246         (Layout::set_asection_address_from_script): Move code for orphan
1247         section placement out.
1248         (Layout::place_orphan_sections_in_script): New method definition.
1249         * layout.h (Output_segment_headers, Output_file_header):
1250         New forward class declarations.
1251         (Layout::~Layout): Define.
1252         (Layout::new_output_section_data_from_script): New method definition.
1253         (Layout::place_orphan_sections_in_script): New method declaration.
1254         (Layout::Segment_states): New type declaration.
1255         (Layout::save_segments, Layout::restore_segments,
1256         Layout::clean_up_after_relaxation, Layout::prepare_for_relaxation,
1257         Layout::relaxation_loop_body): New method declarations.
1258         (Layout::Output_section_data_list): New type declaration.
1259         (Layout::Relaxation_debug_check): New class definition.
1260         (Layout::record_output_section_data_from_script_,
1261         Layout::script_output_section_data_list_, Layout::segment_states_,
1262         Layout::relaxation_debug_check_): New data members.
1263         * output.cc: (Output_section_headers::do_size): New method definition.
1264         (Output_section_headers::Output_section_headers): Move size
1265         computation to Output_section_headers::do_size.
1266         (Output_segment_headers::do_size): New method definition.
1267         (Output_file_header::Output_file_header): Move size computation to 
1268         Output_file_header::do_size and call it.
1269         (Output_file_header::do_size): New method definition.
1270         (Output_data_group::Output_data_group): Adjust call to
1271         Output_section_data.
1272         (Output_data_dynamic::set_final_data_size): Add DT_NULL tag only once.
1273         (Output_symtab_xindex::do_write): Add array bound check.
1274         (Output_section::Input_section::print_to_mapfile): Handle
1275         RELAXED_INPUT_SECTION_CODE.
1276         (Output_section::Output_section): Initialize data member checkpoint_.
1277         (Output_section::~Output_section): Delete checkpoint object pointed
1278         by checkpoint_.
1279         (Output_section::add_input_section): Always add an Input_section if
1280         relaxing.
1281         (Output_section::add_merge_input_section): Add assert.
1282         (Output_section::relax_input_section): New method definition.
1283         (Output_section::set_final_data_size): Set load address to zero for
1284         an unallocated section.
1285         (Output_section::do_address_and_file_offset_have_reset_values):
1286         New method definition.
1287         (Output_section::Input_section_sort_enty::Input_section_sort_enty):
1288         Handle relaxed input section.
1289         (Output_section::sort_attached_input_sections): Checkpoint input
1290         section list lazily.
1291         (Output_section::get_input_sections): Change type of input_sections to
1292         list of Simple_input_section pointers.  Checkpoint input section list
1293         lazily.  Also handle relaxed input sections.
1294         (Output_section::add_input_section_for_script): Take a reference to
1295         a Simple_input_section object instead of Relobj pointer and section
1296         index as parameter.  Handle relaxed input sections.
1297         (Output_section::save_states, Output_section::restore_states): New
1298         method definitions.
1299         * output.h (Output_data::Output_data): Initialize is_data_size_fixed_.
1300         (Output_data::is_data_size_fixed): New method definition.
1301         (Output_data::reset_addresss_and_file_offset): Do not reset data size
1302         if it is fixed.
1303         (Output_data::address_and_file_offset_have_reset_values): New method
1304         definition.
1305         (Output_data::do_address_and_file_offset_have_reset_values): New method
1306         definition.
1307         (Output_data::set_data_size): Check that data size is not fixed.
1308         (Output_data::fix_data_size): New method definition.
1309         (Output_data::is_data_size_fixed_): New data member.
1310         (Output_section_headers::set_final_data_size): New method definition.
1311         (Output_section_headers::do_size): New method declaration.
1312         (Output_segment_headers::set_final_data_size): New method definition.
1313         (Output_segment_headers::do_size): New method declaration.
1314         (Output_file_header::set_final_data_size)::New method definition.
1315         (Output_file_header::do_size)::New method declaration.
1316         (Output_section_data::Output_section_data): Add new parameter
1317         is_data_size_fixed and use it to fix data size.
1318         (Output_data_const::Output_data_const): Adjust call to base class
1319         constructor and fix data size.
1320         (Output_data_const_buffer::Output_data_const_buffer): Adjust call to
1321         base class constructor and fix data size.
1322         (Output_data_fixed_space::Output_data_fixed_space): Adjust call to
1323         base class constructor and fix data size.
1324         (Output_data_zero_fill::Output_data_zero_fill): Adjust call to base
1325         class constructor and fix data size.
1326         (Output_data_group::set_final_data_size): New method definition.
1327         (Output_data_dynamic::Dynamic_entry::tag): New method definition.
1328         (Output_symtab_xindex::Output_symtab_xindex): Adjust call to base
1329         class constructor and fix data size.
1330         (Output_relaxed_input_section): New class definition.
1331         (Output_section::Simple_input_section): New class definition.
1332         (Output_section::get_input_sections): Adjust parameter list.
1333         (Output_section::add_input_section_for_script): Same.
1334         (Output_section::save_states, Output_section::restore_states,
1335         Output_section::do_address_and_file_offset_have_reset_values,
1336         (Output_section::Input_section::Input_section): Handle
1337         RELAXED_INPUT_SECTION_CODE.  Add new overload for
1338         Output_relaxed_input_section.
1339         (Output_section::Input_section::is_input_section,
1340         Output_section::Input_section::set_output_section): Handle relaxed
1341         input section.
1342         (Output_section::Input_section::is_relaxed_input_section,
1343         Output_section::Input_section::output_section_data,
1344         Output_section::Input_section::relaxed_input_section): New method
1345         definitions.
1346         (Output_section::Input_section::RELAXED_INPUT_SECTION_CODE): New enum
1347         value.
1348         (Output_section::Input_section::u1_): Update comments.
1349         (Output_section::Input_section::u2_): Add new union member poris.
1350         (Output_section::Checkpoint_output_section): New classs definition.
1351         (Output_section::relax_input_section): New method declaration.
1352         (Output_section::checkpoint_): New data member.
1353         (Output_segment): Update comments.
1354         (Output_segment::Output_segment): Un-privatize copy constructor.
1355         (Output_segment::operator=): Un-privatize.
1356         * script-sections.cc (Output_section_element::Input_section_list):
1357         Change element type to Output_section::Simple_input_section.
1358         (Output_section_element_dot_assignment::set_section_addresses):
1359         Register output section data for relaxation clean up.
1360         (Output_data_exression::Output_data_expression): Adjust call to base
1361         constructor to fix data size.
1362         (Output_section_element_data::set_section_addresses): Register
1363         Output_data_expression object for relaxation clean up.
1364         (struct Input_section_info): Replace Relobj pointer and section index
1365         pair with Output_section::Simple_input_section and Convert struct to a
1366         class.
1367         (Input_section_sorter::operator()): Adjust access to
1368         Input_section_info data member to use accessors. 
1369         (Output_section_element_input::set_section_addresses): Use layout
1370         parameter.  Adjust code to use Output_section::Simple_input_section
1371         and Input_secction_info classes.  Register filler for relaxation
1372         clean up.
1373         (Orphan_output_section::set_section_addresses): Replace Relobj pointer
1374         and section index pair with Output_section::Simple_input_section
1375         class.  Adjust code accordingly.
1376         (Phdrs_element::release_segment): New method definition.
1377         (Script_sections::attach_sections_using_phdrs_clause): Do not modify
1378         segment list.
1379         (Script_sections::release_segments): New method definition.
1380         * gold/script-sections.h (Script_sections::release_segments): New
1381         method declaration.
1382         * gold/target.h (Target::may_relax, Target::relax,
1383         Target::do_may_relax, Target::do_relax): New method definitions.
1384
1385 2009-09-17  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
1386
1387         * arm.cc (has_signed_unsigned_overflow): New function.
1388         (Arm_relocate_functions::abs8): New function.
1389         (Target_arm::Scan::local): Handle R_ARM_ABS8.
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 2009-09-16  Cary Coutant  <ccoutant@google.com>
1396
1397         * testsuite/Makefile.am (MOSTLYCLEANFILES): Add more generated files.
1398         * testsuite/Makefile.in: Regenerate.
1399
1400 2009-09-11  Nick Clifton  <nickc@redhat.com>
1401
1402         * po/gold.pot: Updated by the Translation project.
1403
1404 2009-09-08  Cary Coutant  <ccoutant@google.com>
1405
1406         * output.cc (Output_file::open): Add execute permission to empty file.
1407         * testsuite/Makefile.am (permission_test): New test.
1408         * testsuite/Makefile.in: Regenerate.
1409
1410 2009-09-02  Ian Lance Taylor  <iant@google.com>
1411
1412         * output.cc (Output_file::resize): Call map_no_anonymous rather
1413         than map.
1414
1415 2009-09-01  Mikolaj Zalewski  <mikolajz@google.com>
1416
1417         * gold.cc: Include "incremental.h".
1418         (queue_initial_tasks): Call Incremental_checker methods.
1419         * incremental.cc: Include "output.h".
1420         (Incremental_checker::can_incrementally_link_output_file): New
1421         method.
1422         * incremental.h (Incremental_checker): New class.
1423
1424         * output.cc (Output_file::open_for_modification): New method.
1425         (Output_file::map_anonymous): Changed return type to bool.  Record
1426         map in base_ field.
1427         (Output_file::map_no_anonymous): New method, broken out of map.
1428         (Output_file::map): Use map_no_anonymous and map_anonymous.
1429         * output.h (class Output_file): Update declarations.
1430
1431 2009-08-24  Cary Coutant  <ccoutant@google.com>
1432
1433         * options.h (Command_line::Pre_options): New class.
1434         (Command_line::pre_options): New member.
1435         * options.cc (gold::options::ready_to_register): New variable.
1436         (One_option::register_option): Do nothing if not registering options.
1437         Assert if same short option registered twice.
1438         (General_options::General_options): Turn off option registration when
1439         done constructing.
1440         (Command_line::Pre_options::Pre_options): New constructor.
1441
1442 2009-08-24  Cary Coutant  <ccoutant@google.com>
1443
1444         * options.h (General_options::no_keep_memory): Remove incorrect
1445         short option.
1446
1447 2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1448
1449         * Makefile.am (am__skiplex, am__skipyacc): New.
1450         * Makefile.in: Regenerate.
1451
1452 2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1453
1454         * Makefile.am (AM_CPPFLAGS): Renamed from ...
1455         (INCLUDES): ... this.
1456         * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add -Wno-portability.
1457         (AM_CPPFLAGS): Renamed from ...
1458         (INCLUDE): ... this.
1459         * Makefile.in, testsuite/Makefile.in: Regenerate.
1460
1461         * Makefile.in: Regenerate.
1462         * aclocal.m4: Likewise.
1463         * config.in: Likewise.
1464         * configure: Likewise.
1465         * testsuite/Makefile.in: Likewise.
1466
1467         * Makefile.am (AUTOMAKE_OPTIONS): Add foreign.
1468         * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add foreign.
1469         * Makefile.in: Regenerate.
1470         * testsuite/Makefile.in: Regenerate.
1471
1472 2009-08-19  Cary Coutant  <ccoutant@google.com>
1473
1474         * resolve.cc (Symbol_table::resolve): Don't complain about defined
1475         symbols in shared libraries overridden by hidden or internal symbols
1476         in the main program.
1477
1478 2009-08-19  Chris Demetriou  <cgd@google.com>
1479
1480         * testsuite/debug_msg.sh: Match .* rather than ${srcdir} when
1481         checking source file names in error messages.
1482
1483 2009-08-18  Doug Kwan  <dougkwan@google.com>
1484
1485         * dynobj.cc (Sized_dynobj::setup): Take a Target object instead of
1486         an elcpp::Ehdr as parameter.  Adjust call to set_target.
1487         * dynobj.h (Sized_dynobj::setup): Take a Target object instead of
1488         an elfcpp::Ehdr as parameter.
1489         * object.cc (Object::set_target): Remove the version that looks up
1490         a target and sets it.
1491         (Sized_relobj::setup): Take a Target object instead of
1492         an elfcpp::Ehdr as parameter.  Adjust call to set_target.
1493         (make_elf_sized_object): Find target and ask target to
1494         make an ELF object.
1495         * object.h: (Object::set_target): Remove the version that looks up
1496         a target and sets it.
1497         (Sized_relobj::setup): Take a Target object instead of
1498         an elfcpp:Ehdr as parameter.
1499         * target.cc: Include dynobj.h.
1500         (Target::do_make_elf_object_implementation): New.
1501         (Target::do_make_elf_object): New.
1502         * target.h (Target::make_elf_object): New template declaration.
1503         (Target::do_make_elf_object): New method declarations.
1504         (Target::do_make_elf_object_implementation): New template declaration.
1505
1506 2009-08-14  Ian Lance Taylor  <iant@google.com>
1507
1508         * gold.h (FUNCTION_NAME): Define.
1509         (gold_unreachable): Use FUNCTION_NAME.
1510
1511 2009-08-12  Sriraman Tallam  <tmsriram@google.com>
1512
1513         * icf.cc (Icf::find_identical_sections): Issue a warning when a
1514         symbol in the --keep-unique list is not found.
1515
1516 2009-08-12  Sriraman Tallam  <tmsriram@google.com>
1517
1518         * icf.cc (Icf::find_identical_sections): Unfold symbols that have
1519         been maked as --keep-unique.
1520         (Icf::unfold_section): New function.
1521         * icf.h (Icf::unfold_section): New function.
1522         * options.h (General_options::keep_unique): New option.
1523         * testsuite/Makefile.am: Add commands to build icf_keep_unique_test.
1524         * testsuite/Makefile.in: Regenerate.
1525         * testsuite/icf_keep_unique_test.sh: New file.
1526         * testsuite/icf_keep_unique_test.cc: New file.
1527
1528 2009-08-12  Cary Coutant  <ccoutant@google.com>
1529
1530         PR 10471
1531         * resolve.cc (Symbol_table::resolve): Check for references from
1532         dynamic objects to hidden and internal symbols.
1533         * testsuite/Makefile.am (hidden_test.sh): New test.
1534         * testsuite/Makefile.in: Regenerate.
1535         * testsuite/hidden_test.sh: New script.
1536         * testsuite/hidden_test_1.c: New test source.
1537         * testsuite/hidden_test_main.c: New test source.
1538
1539 2009-08-11  Doug Kwan  <dougkwan@google.com>
1540
1541         * arm.cc: Update comments.
1542         (Target_arm::do_finalize_sections): Add a special PT_ARM_EXIDX
1543         segment to locate the .ARM.exidx section if present.
1544
1545 2009-08-09  Doug Kwan  <dougkwan@google.com>
1546
1547         * dynobj.h (Sized_dynobj::do_section_entsize): Revert the previous
1548         patch.
1549
1550 2009-08-07  Sriraman Tallam  <tmsriram@google.com>
1551         * dynobj.h (Sized_dynobj::do_section_entsize): Add return to avoid
1552         compiler warnings.
1553
1554 2009-08-06  Sriraman Tallam  <tmsriram@google.com>
1555
1556         * x86_64.cc (Target_x86_64::Relocate::relocate_tls): Check for a
1557         valid tls_segment only for non-debug-section relocations.
1558         * testsuite/Makefile.am: Add gc_tls_test.
1559         * testsuite/Makefile.in: Regenerate.
1560         * testsuite/gc_tls_test.cc: New file.
1561         * testsuite/gc_tls_test.sh: New file.
1562
1563 2009-08-05  Sriraman Tallam  <tmsriram@google.com>
1564         
1565         * icf.cc: New file.
1566         * icf.h: New file.
1567         * Makefile.am (CCFILES): Add icf.cc.
1568         (HFILES): Add icf.h
1569         * Makefile.in: Regenerate.
1570         * dynobj.h (Sized_dynobj::do_section_entsize): New function.
1571         * gc.h (gc_process_relocs): Populate lists used by icf to contain
1572         section, symbol and addend information for the relocs.
1573         * gold.cc (queue_middle_tasks): Call identical code folding.
1574         * gold.h: Add defines for multimap.
1575         * layout.cc (Layout::create_symtab_sections): Add symtab as parameter
1576         to the call of finalize_local_symbols.
1577         * main.cc (main): Create object of class Icf.
1578         * object.cc (Sized_relobj::do_layout): Allow this function to be
1579         called twice during icf.
1580         (Sized_relobj::do_finalize_local_symbols): Fold symbols corresponding
1581         to sections marked as identical by icf.
1582         (Sized_relobj::do_section_flags): Get section_flags from Symbols_data
1583         when available.
1584         (Sized_relobj::do_section_entsize): New function.
1585         * object.h (Object::section_entsize): New function.
1586         (Object::do_section_entsize): New pure virtual function.
1587         (Relobj::finalize_local_symbols): Add new parameter.
1588         (Relobj::do_section_entsize): New function.
1589         * options.h (General_options::icf): New option.
1590         (General_options::icf_iterations): New option.
1591         (General_options::print_icf_sections): New option.
1592         * plugin.cc (Sized_pluginobj::do_section_entsize): New function.
1593         * plugin.h (Sized_pluginobj::do_section_entsize): New function.
1594         * reloc.cc (Read_relocs::run): Delay scanning relocs when doing
1595         icf.
1596         * symtab.cc (Symbol_table::is_section_folded): New function.
1597         (Symbol_table::sized_finalize_symbol):  Fold symbols corresponding
1598         to sections marked as identical by icf.
1599         * symtab.h (Symbol_table::set_icf): New function.
1600         (Symbol_table::icf): New function.
1601         (Symbol_table::is_section_folded): New function.
1602         (Symbol_table::icf_): New data member.
1603         * target-reloc.h (relocate_section): Ignore sections folded by icf.
1604         * testsuite/Makefile.am: Add commands to build icf_test.
1605         * testsuite/Makefile.in: Regenerate.
1606         * testsuite/icf_test.sh: New file.
1607         * testsuite/icf_test.cc: New file.
1608
1609 2009-07-24  Chris Demetriou  <cgd@google.com>
1610
1611         * layout.cc (is_compressible_debug_section): Fix incorrect
1612         comment about compressed section names.
1613
1614 2009-07-20  Ian Lance Taylor  <ian@airs.com>
1615
1616         PR 10419
1617         * x86_64.cc (Target_x86_64::do_code_fill): Correct nop sequences.
1618
1619 2009-07-16  Ian Lance Taylor  <iant@google.com>
1620
1621         PR 10400
1622         * layout.h: #include <map>.
1623         (class Kept_section): Change from struct to class.  Add accessors
1624         and setters.  Add section size to Comdat_group mapping.  Change
1625         Comdat_group to std::map.  Add is_comdat_ field.  Add
1626         linkonce_size field in union.
1627         (class Layout): Update declaration of find_or_add_kept_section.
1628         Don't declare find_kept_object.
1629         * layout.cc (Layout::find_or_add_kept_section): Remove candidate
1630         parameter.  Add object, shndx, is_comdat, and is_group_name
1631         parameters.  Change all callers.  Adjust for new Kept_section.
1632         (Layout::find_kept_object): Remove.
1633         * object.cc (Sized_relobj::include_section_group): Update use of
1634         Kept_section.  Rename secnum to shndx.  Only record
1635         Kept_comdat_section if sections are the same size.
1636         (Sized_relobj::include_linkonce_section): Update use of
1637         Kept_section.  Only record Kept_comdat_section if sections are the
1638         same size.  Set size of linkonce section.
1639         (Sized_relobj::map_to_kept_section): Update call to
1640         get_kept_comdat_section.
1641         * object.h (class Sized_relobj): Rename fields in
1642         Kept_comdat_section to drop trailing underscores; change object
1643         field to Relobj*.  Change Kept_comdat_section_table to store
1644         struct rather than pointer.
1645         (Sized_relobj::set_kept_comdat_section): Remove kept parameter.
1646         Add kept_object and kept_shndx parameters.  Change all callers.
1647         (Sized_relobj::get_kept_comdat_section): Change return type to
1648         bool.  Add kept_object and kept_shndx parameters.  Change all
1649         callers.
1650         * plugin.cc (Pluginobj::include_comdat_group): Update call to
1651         Layout::find_or_add_kept_section.
1652
1653 2009-07-09  Ian Lance Taylor  <iant@google.com>
1654
1655         * merge.cc (Object_merge_map::initialize_input_to_output_map):
1656         Reserve space in the hash table.
1657
1658 2009-07-06  Mikolaj Zalewski  <mikolajz@google.com>
1659
1660         * fileread.cc (File_read::get_mtime): New method.
1661         * fileread.h (Timespec): New structure.
1662         (File_read::get_mtime): New method.
1663         * incremental.cc (Incremental_inputs_entry_data::timestamp_usec):
1664         Renamed from timestamp_nsec.
1665         (Incremental_inputs_entry_write::timestamp_sec): Fix argument to
1666         Elf_Xword.
1667         (Incremental_inputs_entry_write::timestamp_usec): Renamed from 
1668         timestamp_nsec.
1669         (Incremental_inputs::report_archive): Save mtime; style fix. 
1670         (Incremental_inputs::report_obejct): Save mtime; style fix.
1671         (Incremental_inputs::report_script): Save mtime; style fix.
1672         (Incremental_inputs::finalize_inputs): Style fix.
1673         (Incremental_inputs::finalize): Style fix.
1674         (Incremental_inputs::create_input_section_data): Store inputs
1675         mtime.
1676         * incremental.h (Incremental_inputs::report_script): Add mtime
1677         argument.
1678         (Incremental_inputs::Input_info::Input_info): Intialize only one
1679         union member.
1680         (Incremental_inputs::Input_info::archive): Move to nameless
1681         union.
1682         (Incremental_inputs::Input_info::obejct): Move to nameless union.
1683         (Incremental_inputs::Input_info::script): Move to nameless union.
1684         (Incremental_inputs::mtime): New field.
1685         * script.cc (read_input_script): Pass file mtime to
1686         Incremental_input.
1687         * script.h (Script_info::inputs): Style fix.
1688
1689 2009-07-01  Ian Lance Taylor  <ian@airs.com>
1690
1691         * freebsd.h (Target_freebsd::do_adjust_elf_header): Use size
1692         instead of 32.
1693
1694 2009-06-24  Ian Lance Taylor  <iant@google.com>
1695
1696         PR 10156
1697         * layout.cc (Layout::choose_output_section): If we find an
1698         existing section, update the flags.
1699         (Layout::create_notes): New function, broken out of
1700         Layout::finalize.
1701         (Layout::finalize): Don't create note sections.
1702         (Layout::create_note): Don't crash if linker script discards
1703         section.
1704         (Layout::create_gold_note): Likewise.
1705         (Layout::create_build_id): Likewise.  Don't set
1706         after_input_sections on the section.
1707         (Layout::create_executable_stack_info): Remove target parameter.
1708         Change caller.
1709         * layout.h (class Layout): Declare create_notes.  Update
1710         declaration of create_executable_stack_info.
1711         * gold.cc (queue_middle_tasks): Call create_notes.
1712         * output.cc (Output_section::update_flags_for_input_section): Move
1713         here from output.h.  If SHF_ALLOC flag is newly set, mark address
1714         invalid.
1715         * output.h (Output_data::mark_address_invalid): New function.
1716         (class Output_section): Only declare, not define,
1717         update_flags_for_input_section.  Remove set_flags.
1718
1719 2009-06-24  Ian Lance Taylor  <iant@google.com>
1720
1721         * script-sections.cc (Output_section_definition::
1722         set_section_addresses): Rename shadowing local load_address to
1723         laddr.
1724
1725 2009-06-24  Ian Lance Taylor  <iant@google.com>
1726
1727         PR 10244
1728         * reloc.cc (relocate_sections): Skip empty relocation sections.
1729
1730 2009-06-23  Ian Lance Taylor  <iant@google.com>
1731
1732         PR 10156
1733         * layout.cc (Layout::create_note): Use choose_output_section
1734         rather than make_output_section.
1735
1736 2009-06-23  Ian Lance Taylor  <iant@google.com>
1737
1738         PR 10237
1739         * options.cc (General_options::parse_V): Set printed_version_.
1740         (General_options::General_options): Initialize printed_version_.
1741         * options.h (class General_options): Add printed_version_ field.
1742         * gold.cc (queue_initial_tasks): If there are no input files,
1743         don't give a fatal error if we printed the version information.
1744         (queue_middle_tasks): If using -r with a shared object, give a
1745         fatal error rather than an ordinary error.
1746
1747 2009-06-23  Ian Lance Taylor  <iant@google.com>
1748
1749         PR 10219
1750         * layout.cc (Layout::Layout): Initialize have_stabstr_section_.
1751         (Layout::make_output_section): Set have_stabstr_section_ if we see
1752         a .stab*str section.
1753         (Layout::finalize): Call link_stabs_sections.
1754         (Layout::link_stabs_sections): New file.
1755         * layout.h (class Layout): Add have_stabstr_section_ field.
1756         Declare link_stabs_sections.
1757
1758 2009-06-23  Doug Kwan  <dougkwan@google.com>
1759
1760         * Makefile.am (libgold_a_LIBADD): New.
1761         (ld_new_DEPENDENCIES, ld_new_LDADD): Remove LIBOBJS
1762         * Makefile.in: Regenerate.
1763         * config.in (HAVE_DECL_MEMMEM, HAVE_DECL_STRNDUP): New.
1764         * configure: Regenerate.
1765         * configure.ac (AC_CHECK_DECLS): Add strndup and memmem.
1766         * fileread.cc: Include sys/state.h
1767         * gold.h: Declare memmem and strndup if found missing.
1768         * gold_reloc.h: Include byteswap.h if HAVE_BYTESWAP_H is defined.
1769
1770 2009-06-23  Ian Lance Taylor  <iant@google.com>
1771
1772         * configure.ac: Call AC_CHECK_DECLS using C, not C++.
1773         * configure: Rebuild.
1774
1775 2009-06-23  Ian Lance Taylor  <iant@google.com>
1776
1777         PR 10147
1778         * object.cc (Object::section_contents): Don't try to get a view if
1779         the section has length zero.
1780         (Object::handle_gnu_warning_section): If the section is empty, use
1781         the name of the section as the warning.
1782
1783 2009-06-23  Ian Lance Taylor  <iant@google.com>
1784
1785         PR 10133
1786         * stringpool.h (class Stringpool_template): Add optimize_ field.
1787         (Stringpool_template::set_optimize): New function.
1788         * stringpool.cc (Stringpool_template::Stringpool_template):
1789         Initialize optimize_ field.
1790         (Stringpool_template::set_string_offsets): Test local optimize
1791         fild rather than parameter.
1792         * layout.cc (Layout::Layout): Call set_optimize on the section
1793         name stringpool.
1794
1795 2009-06-22  Ian Lance Taylor  <iant@google.com>
1796
1797         PR 10030
1798         * yyscript.y: Parse TARGET.
1799         * script.cc (script_set_target): New function.
1800         * script-c.h (script_set_target): Declare.
1801         * options.cc (General_options::string_to_object_format): Rename
1802         from string_to_object_format in anonymous namespace.  Change
1803         callers.
1804         * options.h (class General_options): Declare
1805         string_to_object_format.
1806
1807 2009-06-22  Ian Lance Taylor  <iant@google.com>
1808
1809         * script-sections.cc (Script_sections::create_segments): Don't put
1810         program headers in a PT_LOAD segment if -n or -N.
1811
1812 2009-06-22  Ian Lance Taylor  <iant@google.com>
1813
1814         PR 10141
1815         * options.h (class General_options): Add -z lazy and -z now.  Sort
1816         -z options into alphabetical order.
1817         * layout.cc (Layout::finish_dynamic_section): Handle -z now.
1818
1819 2009-06-21  Ian Lance Taylor  <iant@google.com>
1820
1821         * layout.cc (Layout::make_output_section): Call
1822         Target::new_output_section.
1823         (Layout::attach_allocated_section_to_segment): Put large section
1824         sections in a separate load segment with the large segment flag
1825         set.
1826         (Layout::segment_precedes): Sort large data segments after other
1827         load segments.
1828         (align_file_offset): New static function.
1829         (Layout::set_segment_offsets): Use align_file_offset.
1830         * output.h (class Output_section): Add is_small_section_ and
1831         is_large_section_ fields.
1832         (Output_section::is_small_section): New function.
1833         (Output_section::set_is_small_section):  New function.
1834         (Output_section::is_large_section): New function.
1835         (Output_section::set_is_large_section): New function.
1836         (Output_section::is_large_data_section): New function.
1837         (class Output_segment): Add is_large_data_segment_ field.
1838         (Output_segment::is_large_data_segment): New function.
1839         (Output_segment::set_is_large_data_segment): New function.
1840         * output.cc (Output_section::Output_section): Initialize new
1841         fields.
1842         (Output_segment::Output_segment): Likewise.
1843         (Output_segment::add_output_section): Add assertion that large
1844         data sections always go in large data segments.  Force small data
1845         sections to the end of the list of data sections.  Force small BSS
1846         sections to the start of the list of BSS sections.  For large BSS
1847         sections to the end of the list of BSS sections.
1848         * symtab.h (class Symbol): Declare is_common_shndx.
1849         (Symbol::is_defined): Check Symbol::is_common_shndx.
1850         (Symbol::is_common): Likewise.
1851         (class Symbol_table): Define enum Commons_section_type.  Update
1852         declarations.  Add small_commons_ and large_commons_ fields.
1853         * symtab.cc (Symbol::is_common_shndx): New function.
1854         (Symbol_table::Symbol_table): Initialize new fields.
1855         (Symbol_table::add_from_object): Put small and large common
1856         symbols in the right list.
1857         (Symbol_table::sized_finalized_symbol): Check
1858         Symbol::is_common_shndx.
1859         (Symbol_table::sized_write_globals): Likewise.
1860         * common.cc (Symbol_table::do_allocate_commons): Allocate new
1861         common symbol lists.  Don't call do_allocate_commons_list if the
1862         list is empty.
1863         (Symbol_table::do_allocate_commons_list): Remove is_tls
1864         parameter.  Add comons_section_type parameter.  Change all
1865         callers.  Handle small and large common symbols.
1866         * object.cc (Sized_relobj::do_finalize_local_symbols): Check
1867         Symbol::is_common_shndx.
1868         * resolve.cc (symbol_to_bits): Likewise.
1869         * target.h (Target::small_common_shndx): New function.
1870         (Target::small_common_section_flags): New function.
1871         (Target::large_common_shndx): New function.
1872         (Target::large_common_section_flags): New function.
1873         (Target::new_output_section): New function.
1874         (Target::Target_info): Add small_common_shndx, large_common_shndx,
1875         small_common_section_flags, and large_common_section_flags
1876         fields.
1877         (Target::do_new_output_section): New virtual function.
1878         * arm.cc (Target_arm::arm_info): Initialize new fields.
1879         * i386.cc (Target_i386::i386_info): Likewise.
1880         * powerpc.cc (Target_powerpc::powerpc_info) [all versions]:
1881         Likewise.
1882         * sparc.c (Target_sparc::sparc_info) [all versions]: Likewise.
1883         * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
1884         (Target_x86_64::do_new_output_section): New function.
1885         * configure.ac: Define conditional MCMODEL_MEDIUM.
1886         * testsuite/Makefile.am (check_PROGRAMS): Add large.
1887         (large_SOURCES, large_CFLAGS, large_DEPENDENCIES): Define.
1888         (large_LDFLAGS): Define.
1889         * testsuite/large.c: New file.
1890         * testsuite/testfile.cc (Target_test::test_target_info):
1891         Initialize new fields.
1892         * configure, testsuite/Makefile.in: Rebuild.
1893
1894 2009-06-05  Doug Kwan  <dougkwan@google.com>
1895
1896         * Makefile.am (CCFILES): Add target.cc.
1897         * Makefile.in: Regenerate. 
1898         * i386.cc (class Target_i386): Define new virtual method to
1899         override do_is_local_label_name in parent.
1900         * object.cc (Sized_relobj::do_count_local_symbols): Discard
1901         local symbols if --discard-locals or -X is given.
1902         * options.h (class General_options): Declare new options
1903         '--discard-locals' and '-X' for discarding locals.
1904         * target.h (class Target): Define new methods is_local_label_name.
1905         Declare new virtual method do_is_local_label_name.
1906         * target.cc: New file.
1907         * testsuite/Makefile.am (check_PROGRAMS): Add discard_locals_test.
1908         (check_SCRIPTS): Add discard_locals_test.sh.
1909         (check_DATA): Add discard_local_tests.syms.
1910         (discard_locals_test_SOURCES, discard_locals_test_LDFLAGS): Define.
1911         (discard_local_tests.syms, discard_locals_test.o): New make rules.
1912         * testsuite/Makefile.in: Regenerate.
1913         * testsuite/discard_locals_test.c: New file.
1914         * testsuite/discard_locals_test.sh: Same.
1915
1916 2009-06-05  Doug Kwan  <dougkwan@google.com>
1917
1918         * object.cc (Sized_relobj::Sized_relobj): Initialize
1919         discarded_eh_frame_shndx_ to -1U.
1920         (Sized_relobj::do_layout): Record index of a discard .eh_frame
1921         section.
1922         (Sized_relobj::do_count_local_symbols): Skip local symbols in
1923         a discarded .eh_frame section.
1924         (Sized_relobj::do_finalize_local_symbols): Ditto.
1925         * object.h (class Sized_relobj): Declare new member
1926         discarded_eh_frame_shndx_.
1927         * testsuite/Makefile.am (check_PROGRAMS): Add local_labels_test.
1928         (local_labels_test.o, local_labels_test): New rules.
1929         * testsuite/Makefile.in: Regenerate.
1930
1931 2009-06-04  Doug Kwan  <dougkwan@google.com>
1932
1933         * layout.cc (Layout::section_name_mapping): Add mapping for
1934         special ARM sections.
1935
1936 2009-06-03  Doug Kwan  <dougkwan@google.com>
1937
1938         * arm.cc (utils::sign_extend): Reverse test in gold_assert.
1939         (utils::has_overflow): Same.
1940
1941 2009-06-03  Ian Lance Taylor  <iant@google.com>
1942
1943         * layout.cc (Layout::section_name_mapping): New array, replacing
1944         Layout::linkonce_mapping.
1945         (Layout::section_name_mapping_count): New variable, replacing
1946         Layout::linkonce_mapping_count.
1947         (Layout::linkonce_output_name): Remove.
1948         (Layout::output_section_name): Rewrite.
1949         * layout.h (class Layout): Rename Linkonce_mapping to
1950         Section_name_mapping, linkonce_mapping to section_name_mapping,
1951         linkonce_mapping_count to section_name_mapping_count.  Don't
1952         declare linkonce_output_name.
1953
1954 2009-06-03  Doug Kwan  <dougkwan@google.com>
1955
1956         * gold/arm.cc (namespace utils): New.
1957         (Target_arm::reloc_is_non_pic): Define new method.
1958         (class Arm_relocate_functions): New.
1959         (Target_arm::Relocate::relocate): Handle relocation types used by
1960         Android.
1961
1962 2009-06-03  Ian Lance Taylor  <iant@google.com>
1963
1964         * arm.cc (Target_arm::scan::global): Use || instead of |.
1965
1966 2009-06-02  Doug Kwan  <dougkwan@google.com>
1967
1968         * gold/arm.cc (Target_arm::Scan::Scan):  Initialize
1969         issued_non_pic_error_.
1970         (class Target_arm::Scan): Declare new method check_non_pic.
1971         Define new method symbol_needs_plt_entry.
1972         Declare new data member issued_non_pic_error_.
1973         (class Target_arm::Relocate): Declare new method
1974         should_apply_static_reloc.
1975         (Target_arm::may_need_copy_reloc): Handle STT_ARM_TFUNC.
1976         (Target_arm::Scan::check_non_pic): Define new method.
1977         (Target_arm::Scan::local): Handle a small subset of reloc types used
1978         by Android.
1979         (Target_arm::Scan::local): Same.
1980         (Target_arm::Relocate::should_apply_statci_reloc): Define new method.
1981
1982 2009-05-31  Mikolaj Zalewski  <mikolajz@google.com>
1983
1984         * incremental.cc (Incremental_inputs::report_command_line): Filter
1985         out --incremental-* options.
1986
1987 2009-05-29  Doug Kwan  <dougkwan@google.com>
1988
1989         * gold/arm.cc (Output_data_plt_arm): Forward declaration for new
1990         template class.
1991         (class Target_arm): Update comment.
1992         (Target_arm::Target_arm): Initialize new data members GOT_,
1993         PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_ and DYNBSS_.
1994         Declare new methods Target_arm::got_section, Target_arm::make_plt_entry
1995         and Target_arm::rel_dyn_section.
1996         Declare new_enum Target_arm::Got_type.
1997         Declare new data members GOT_, PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_
1998         and DYNBSS_.
1999         Update commments for member do_dynsym_value.
2000         (Target_arm::got_size, Target_arm::plt_section,
2001         Target_arm::may_need_copy_reloc and Target_arm::copy_reloc): Define
2002         new methods inside class defintion.
2003         (Target_arm::got_section): Define new method.
2004         (Target_arm::rel_dyn_section): Same.
2005         (Output_data_plt_arm): New template class.
2006         (Output_data_plt_arm::Output_data_plt_arm): Define constructor.
2007         (Output_data_plt_arm:do_adjust_output_section): Define new method.
2008         (Output_data_plt_arm::add_entry): Same.
2009         (Output_data_plt_arm::first_plt_entry): Define new
2010         static data member for PLT instruction template.
2011         (Output_data_plt_arm::plt_entry): Same.
2012         (Output_data_plt_arm::do_write): Define new method.
2013         (Target_arm::make_plt_entry): Same.
2014         (Target_arm::do_finalize_sections): Same.
2015         (Target_arm::do_dynsym_value): Same.
2016
2017 2009-05-28  Doug Kwan  <dougkwan@google.com>
2018
2019         * Makefile.am (TARGETSOURCES): Add arm.cc.
2020         (ALL_TARGETOBJECTS): Add arm.$(OBJEXT)
2021         * Makefile.in: Regenerate.
2022         * arm.cc: New file.
2023         * configure.tgt: Add armbe*-*-*, armeb*-*-* and arm*-*-* targets.
2024
2025 2009-05-26  Doug Kwan  <dougkwan@google.com>
2026
2027         * options.cc (General_options::parse_exclude_libs).  Fix a comment.
2028         (General_options::check_excluded_libs): Strip off directories in
2029         archive name before matching like GNU ld does.
2030         * testsuite/Makefile.am (MOSTLYCLEANFILES,
2031         exclude_libs_test_DEPENDENCIES): Add alt/libexclude_libs_test_3.a
2032         (exclude_libs_test_LDFLAGS): Add linker option
2033         -Wl,--exclude-libs,libexclude_libs_test_3
2034         (exclude_libs_test_LADD): Add alt/libexclude_libs_test_3.a as
2035         an explicit archive without using -l.
2036         (alt/libexclude_libs_test_3.a): New make rule.
2037         * testsuite/Makefile.in: Regenerate.
2038         * testsuite/exclude_libs_test.c : Declare lib3_default().
2039         (main): Call it.
2040         * exclude_libs_test.sh: Add tests for alt/exclude_libs_test_3.a.
2041         * exclude_libs_test_3.c: New file.
2042
2043 2009-05-26  Nick Clifton  <nickc@redhat.com>
2044
2045         * po/id.po: New Indonesian translation.
2046         * po/gold.pot: Updated template file.
2047
2048 2009-05-22  Sriraman Tallam  <tmsriram@google.com>
2049
2050         * testsuite/Makefile.am: Add -ffunction-sections to compile 
2051         gc_comdat_test files.  Add -Wl,--gc-sections to build
2052         gc_comdat_test.
2053         * testsuite/Makefile.in: Regenerate.
2054         * testsuite/gc_comdat_test.sh: Fix the condition around grep.
2055
2056 2009-05-21  Sriraman Tallam  <tmsriram@google.com>
2057
2058         * object.cc (Sized_relobj::map_to_kept_section): Return NULL if the
2059         kept comdat section was garbage collected.
2060         * testsuite/Makefile.am: Add test gc_comdat_test.sh.
2061         * testsuite/Makefile.in: Regenerate.
2062         * testsuite/gc_comdat_test.sh: New file.
2063         * testsuite/gc_comdat_test_1.cc: New file.
2064         * testsuite/gc_comdat_test_2.cc: New file.
2065
2066 2009-05-19  Doug Kwan  <dougkwan@google.com>
2067
2068         * archive.cc (Archive::Archive): Move constructor from archive.h
2069         to here.  Initialize no_export_.
2070         (Archive::get_elf_object_for_member): Set no_export flag of object.
2071         * archive.h (Archive::Archive): Move constructor body to
2072         archive.cc.
2073         (Archive::no_export): New method.
2074         (Archive::no_export_): New field.
2075         * object.h (Object::Object): Initialize no_export_ to false.
2076         (Object::no_export, Object::set_no_export): New methods.
2077         (Object::no_export_): New field.
2078         * options.cc (General_options::parse_exclude_libs): New method.
2079         (General_options::check_excluded_libs) Same.
2080         * options.h (exclude_libs): New option.
2081         (General_options::check_excluded_libs): New method declaration.
2082         (General_options::excluded_libs_): New field.
2083         * symtab.cc (Symbol_table::add_from_relobj): Hide symbols with
2084         default or protected visibility if an object has no-export flag set.
2085         testsuite/Makefile.am (check_PROGRAMS): Add exclude_libs_test.
2086         (check_SCRIPTS): Add exclude_libs_test.sh.
2087         (check_DATA): Add exclude_libs_test.syms.
2088         (MOSTLYCLEANFILES): Add exclude_libs_test.syms,
2089         libexclude_libs_test_1.a and libexclude_libs_test_2.a.
2090         (exclude_libs_test_SOURCES, exclude_libs_test_DEPENDENCIES,
2091         exclude_libs_test_LDFLAGS and exclude_libs_test_LDADD): Define.
2092         (exclude_libs_test.syms, libexclude_libs_test_1.a,
2093         libexclude_libs_test_2.a): New rules.
2094         * testsuite/Makefile.in: Regenerate.
2095         * testsuite/exclude_libs_test.c: New file.
2096         * testsuite/exclude_libs_test.sh: Ditto.
2097         * testsuite/exclude_libs_test_1.c: Ditto.
2098         * testsuite/exclude_libs_test_2.c: Ditto.
2099
2100 2009-05-15  Ian Lance Taylor  <iant@google.com>
2101
2102         * configure.ac: Check for declarations for cases where libiberty.h
2103         checks HAVE_DECL_xxx.
2104         * configure, config.in: Rebuild.
2105
2106 2009-05-15  Mikolaj Zalewski  <mikolajz@google.com>
2107
2108         * gold.h (Incremental_argument_list): Remove (invalid) forward
2109         declaration.
2110         * incremental.cc (Incremental_inputs::report_achive): New method.
2111         (Incremental_inputs::report_object): New method.
2112         (Incremental_inputs::report_script): New method.
2113         (Incremental_inputs::finalize_inputs): New method.
2114         (Incremental_inputs::finalize): Call finalize_inputs().
2115         (Incremental_inputs::sized_create_incremental_inputs_section_data):
2116         Create inputs entries.
2117         * incremental.h (Incremental_input_type): New enum.
2118         (Incremental_inputs::Incremental_input): Initialize new fields.
2119         (Incremental_inputs::report_inputs): New method.
2120         (Incremental_inputs::report_achive): New method.
2121         (Incremental_inputs::report_object): New method.
2122         (Incremental_inputs::report_script): New method.
2123         (Incremental_inputs::finalize_inputs): New method.
2124         (Incremental_inputs::Input_info): New struct.
2125         (Incremental_inputs::Input_info_map): New typedef.
2126         (Incremental_inputs::lock_): New field.
2127         (Incremental_inputs::Inputs_): New field.
2128         (Incremental_inputs::Inputs_map): New field.
2129         * main.cc (main): Call Incremental_input::report_inputs.
2130         * options.h (Input_argument_list): Typedef moved from
2131         Input_arguments.
2132         (Input_file_group::Files): Remove, use ::Input_argument_list.
2133         (Input_file_group::Input_argument_list): Remove, use
2134         ::Input_argument_list.
2135         * plugin.cc (Plugin_manager::add_input_file): Add error in
2136         incremental build.
2137         * read_syms.cc (do_read_syms): Call Incremental_input::report_*
2138         functions.
2139         * script.cc (read_input_script): Call
2140         Incremental_input::report_script.
2141         * script.h (Script_info): New class.
2142
2143 2009-04-27  Ian Lance Taylor  <iant@google.com>
2144
2145         * x86_64.cc (do_adjust_output_section): Set entsize to
2146         plt_entry_size.
2147
2148 2009-04-23  Elliott Hughes  <enh@google.com>
2149
2150         * output.cc (Output_file::close): After short writes, continue
2151         writing from the correct offset in the buffer being written.
2152
2153 2009-04-23  Chris Demetriou  <cgd@google.com>
2154
2155         * configure.ac (HAVE_TR1_UNORDERED_MAP_REHASH): New define.
2156         * configure: Regenerate.
2157         * config.in: Regenerate.
2158         * gold.h: Avoid std::tr1::unordered_map and std::tr1::unordered_set
2159         if HAVE_TR1_UNORDERED_MAP_REHASH is not defined.
2160
2161 2009-04-21  Mikolaj Zalewski  <mikolajz@google.com>
2162
2163         * incremental.cc (Incremental_inputs_header_data): Renamed from
2164         Incremental_input_header_data.
2165         (Incremental_inputs_header_data::data_size): New field.
2166         (Incremental_inputs_header_data::put_input_file_count): Renamed
2167         from input_file_count.
2168         (Incremental_inputs_header_data::put_command_line_offset): Renamed
2169         from command_line_offset.
2170         (Incremental_inputs_header_data::put_reserved): Renamed from
2171         put_reserved.
2172         (Incremental_inputs_entry_data): Renamed from
2173         Incremental_input_entry_data.
2174         (Incremental_inputs_entry_data::data_size): New field.
2175         (Incremental_inputs::report_command_line): New method.
2176         (Incremental_inputs::finalize): New method.
2177         (Incremental_inputs::create_incremental_inputs_data): New method.
2178         (Incremental_inputs::sized_create_incremental_inputs_data): New method.
2179         * incremental.h: New file.
2180         * layout.cc (Layout::Layout): Handle new incremental_inputs_.
2181        (Layout::finalize): Create incremental inputs section in
2182         incremental builds.
2183        (Layout::create_incremental_info_sections): New method.
2184         * layout.h (Layout::incremental_inputs): New method.
2185        (Layout::create_incremental_info_sections): New method.
2186        (Layout::incremental_inputs_): New field.
2187         * main.cc (main): Notify Incremental_input of the command line.
2188
2189 2009-04-01  Ian Lance Taylor  <iant@google.com>
2190             Mikolaj Zalewski  <mikolajz@google.com>
2191
2192         * gold.h (reserve_unordered_map): Define, three versions, one for
2193         each version of Unordered_map.
2194         * layout.cc (Layout::Layout): Remove options parameter.  Add
2195         number_of_input_files parameter.  Don't initialize options_.
2196         Initialize number_of_input_files_ and resized_signatures_.  Move
2197         sections_are_attached_.
2198         (Layout::layout_group): Reserve space for group_signatures_.
2199         (Layout::find_or_add_kept_section): Change name parameter to be a
2200         reference.  Resize signatures_ map when it gets large enough.
2201         (Layout::layout_eh_frame): Use parameters->options() instead of
2202         this->options_.
2203         (Layout::make_output_section): Likewise.
2204         (Layout::attach_allocated_section_to_segment): Likewise.
2205         (Layout::finalize, Layout::create_executable_stack): Likewise.
2206         (Layout::set_segment_offsets, Layout::create_interp): Likewise.
2207         (Layout::finish_dynamic_section, Layout::write_binary): Likewise.
2208         * layout.h (class Layout): Update declarations.  Remove options_
2209         field.  Add number_of_input_files_ and resized_signatures_
2210         fields.  Move sections_are_attached_ field.
2211         * main.cc (main): Pass number of input files to Layout
2212         constructor.  Don't pass options.
2213
2214 2009-03-30  Ian Lance Taylor  <iant@google.com>
2215
2216         * ffsll.c (ffsll): Correct implementation.
2217
2218 2009-03-27  Ian Lance Taylor  <iant@google.com>
2219
2220         * ffsll.c: New file.
2221         * configure.ac: Call AC_REPLACE_FUNCS on ffsll.
2222         * gold.h (ffsll): Declare if HAVE_FFSLL is not defined.
2223         * ftruncate.c (ftruncate): Declare before definition.
2224         * mremap.c (mremap): Likewise.
2225         * pread.c (pread): Likewise.
2226         * configure, Makefile.in, config.in: Rebuild.
2227
2228         * mremap.c: New file.
2229         * configure.ac: Call AC_REPLACE_FUNCS on mremap.
2230         * gold.h (MREMAP_MAYMOVE): Define if HAVE_MREMAP is not defined.
2231         (mremap): Declare if HAVE_MREMAP is not defined.
2232         * configure, Makefile.in, config.in: Rebuild.
2233
2234 2009-03-27  Cary Coutant  <ccoutant@google.com>
2235
2236         * powerpc.cc (Target_powerpc::check_non_pic): Assert that output is
2237         position independent.
2238         * sparc.cc (Target_sparc::check_non_pic): Likewise.
2239         * x86_64.cc (Target_x86_64::check_non_pic): Likewise.
2240
2241 2009-03-24  Cary Coutant  <ccoutant@google.com>
2242
2243         * symtab.h (needs_plt_entry): Check for unsatisfied reference from
2244         an executable.
2245         (needs_dynamic_reloc): Likewise.
2246
2247 2009-03-24  Ian Lance Taylor  <iant@google.com>
2248
2249         * yyscript.y (file_cmd): Recognize EXTERN.
2250         (extern_name_list, extern_name_list_body): New nonterminals.
2251         * script.cc (script_add_extern): Define.
2252         * script-c.h (script_add_extern): Declare.
2253
2254 2009-03-24  Rafael Avila de Espindola  <espindola@google.com>
2255
2256         * object.cc (is_elf_object): Define.
2257         * object.h (is_elf_object): Declare.
2258         * archive.cc (Archive::get_elf_object_for_member): Call
2259         is_elf_object.
2260         * readsyms.cc (Read_symbols::do_read_symbols): Likewise.
2261
2262 2009-03-24  Elliott Hughes  <enh@google.com>
2263
2264         * output.cc (Output_file::map_anonymous): Define.
2265         (Output_file::map): Use map_anonymous.  If the regular mmap fails,
2266         try an anonymous one.  Report the size if the mmap fails.
2267         * output.h (class Output_file): Declare map_anonymous.
2268
2269 2009-03-24  Ian Lance Taylor  <iant@google.com>
2270
2271         * target-select.cc (instantiate_target): Don't acquire the lock if
2272         the instantiated_target_ field has already been set.
2273
2274 2009-03-23  Ian Lance Taylor  <iant@google.com>
2275
2276         * gold-threads.h (class Initialize_lock): Define.
2277         * gold-threads.cc (class Initialize_lock_once): Define.
2278         (initialize_lock_control): New static variable.
2279         (initialize_lock_pointer): New static variable.
2280         (initialize_lock_once): New static function.
2281         (Initialize_lock::Initialize_lock): Define.
2282         (Initialize_lock::initialize): Define.
2283         * target-select.h: Include "gold-threads.h".
2284         (class Target_selector): Add lock_ and initialize_lock_ fields.
2285         Don't define instantiate_target, just declare it.
2286         * target-select.cc (Target_selector::Target_selector): Initialize
2287         new fields.
2288         (Target_selector::instantiate_target): Define.
2289         * descriptors.h: Include "gold-threads.h".
2290         (class Descriptors): Add initialize_lock_ field.
2291         * descriptors.cc (Descriptors::Descriptors): Initialize new
2292         field.
2293         (Descriptors::open): Use initialize_lock_ field
2294         * errors.h (class Errors): Add initialize_lock_ field.
2295         * errors.cc (Errors::Errors): Initialize new field.
2296         (Errors::initialize_lock): Use initialize_lock_ field.
2297         * powerpc.cc (class Target_selector_powerpc): Remove
2298         instantiated_target_ field.  In do_recognize call
2299         instantiate_target rather than do_instantiate_target.  In
2300         do_instantiate_target just allocate a new target.
2301         * sparc.cc (class Target_selector_sparc): Likewise.
2302
2303         * freebsd.h: New file.
2304         * i386.cc: Include "freebsd.h".
2305         (Target_i386): Derive from Target_freebsd rather than
2306         Sized_target.
2307         (Target_selector_i386): Derive from Target_selector_freebsd rather
2308         than Target_selector.
2309         * x86_64.cc: Include "freebsd.h".
2310         (Target_x86_64): Derive from Target_freebsd rather than
2311         Sized_target.
2312         (Target_selector_x86_64): Derive from Target_selector_freebsd
2313         rather than Target_selector.
2314         * target.h (class Target): Add adjust_elf_header and
2315         do_adjust_elf_header.
2316         * output.cc (Output_file_header:: do_sized_write): Call target
2317         adjust_elf_header routine.
2318         * configure.tgt: Set targ_osabi.
2319         * configure.ac: Define GOLD_DEFAULT_OSABI.
2320         * parameters.cc (Parameters::default_target): Pass
2321         GOLD_DEFAULT_OSABI to select_target.
2322         * target-select.h (class Target_selector): Make instantiate_target
2323         protected rather than private.
2324         * Makefile.am (HFILES): Add freebsd.h.
2325         * configure, Makefile.in, config.in: Rebuild.
2326
2327         * merge.cc (do_add_input_section): Correct pend value.  Change
2328         message about last entry not being null terminated from error to
2329         warning.
2330
2331 2009-03-20  Mikolaj Zalewski  <mikolajz@google.com>
2332
2333         * incremental.cc: New file.
2334         * Makefile.am (CCFILES): Add incremental.cc.
2335         * Makefile.in: Rebuild.
2336
2337 2009-03-19  Paul Pluzhnikov  <ppluzhnikov@google.com>
2338
2339         * layout.cc (Layout::output_section_name): Preserve names
2340         of '.note.' sections.
2341         
2342 2009-03-19  Ian Lance Taylor  <iant@google.com>
2343
2344         * descriptors.cc (Descriptors::open): Check that the options are
2345         valid before using them.
2346
2347 2009-03-18  Ian Lance Taylor  <iant@google.com>
2348
2349         * script-sections.h: Include <list>.
2350         (class Script_sections): Change Sections_elements from std::vector
2351         to std::list.  Typedef public Elements_iterator.  Add
2352         orphan_section_placement_, data_segment_align_start_, and
2353         saw_data_segment_align_ fields.  Remove data_segment_align_index_
2354         field.
2355         * script-sections.cc (class Orphan_section_placement): New class.
2356         (class Sections_element): Add virtual functions is_relro and
2357         orphan_section_init.  Remove virtual function place_orphan_here.
2358         (class Output_section_definition): Add is_relro and
2359         orphan_section_init.  Remove place_orphan_here.
2360         (class Orphan_output_section): Likewise.
2361         (Script_sections::Script_sections): Update for field changes.
2362         (Script_sections::data_segment_align): Set saw_data_segment_align_
2363         and data_segment_align_start_, not data_segment_align_index.
2364         (Script_sections::data_segment_relro_end): Check
2365         saw_data_segment_align_.  Use data_segment_align_start_ rather
2366         than data_segment_align_index_.
2367         (Script_sections::place_orphan): Rewrite to use
2368         Orphan_section_placement.
2369
2370 2009-03-17  Ian Lance Taylor  <iant@google.com>
2371
2372         * archive.cc (Archive::add_symbols): Check for a version attached
2373         to the symbol name in the archive map.
2374         * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_11.
2375         (ver_test_11_SOURCES, ver_test_11_DEPENDENCIES): Define.
2376         (ver_test_11_LDFLAGS, ver_test_11_LDADD): Define.
2377         (ver_test_11.a): New target.
2378         * testsuite/Makefile.in: Rebuild.
2379
2380         * configure.ac: Check for chsize and posix_fallocate.  Replace
2381         ftruncate.
2382         * ftruncate.c: New file, from gnulib.
2383         * output.cc (posix_fallocate): Define dummy version if not
2384         HAVE_POSIX_FALLOCATE.
2385         (Output_file::map): Call posix_fallocate rather than lseek and
2386         write.
2387         * gold.h (ftruncate): Declare if not HAVE_FTRUNCATE.
2388         * configure, Makefile.in, config.in: Rebuild.
2389
2390 2009-03-17  Paul Pluzhnikov  <ppluzhnikov@google.com>
2391         
2392         * layout.h (Layout::create_note): Add section_name parameter.
2393         * layout.cc (Layout::create_note): Likewise.
2394         (Layout::create_build_id, Layout::create_gold_note): Fix callers.
2395         
2396 2009-03-17  Ian Lance Taylor  <iant@google.com>
2397
2398         * descriptors.cc: Include "options.h".
2399         (FD_CLOEXEC, O_CLOEXEC): Define if not defined.
2400         (Descriptors::open): Always use O_CLOEXEC when opening a new
2401         descriptor.  If we have a plugin, and O_CLOEXEC was not defined,
2402         then set FD_CLOEXEC.
2403
2404         * sparc.cc (class Target_sparc): Add has_got_section.
2405         (Target_sparc::Scan::global): If we see _GLOBAL_OFFSET_TABLE_,
2406         make sure we have a GOT section.
2407
2408         * sparc.cc (optimize_tls_reloc): Recognize R_SPARC_TLS_IE_ADD.
2409         (Target_sparc::Scan::local): Likewise.
2410         (Target_sparc::Scan::global): Likewise.
2411         (Target_sparc::Relocate::relocate): Likewise.
2412         (Target_sparc::Relocate::relocate_tls): Likewise.
2413
2414         * symtab.cc (Symbol_table::define_default_version): New function,
2415         broken out of add_from_object.
2416         (Symbol_table::add_from_object): Call define_default_version.
2417         (Symbol_table::define_special_symbol): Add resolve_oldsym
2418         parameter.  Change all callers.  If the version for a symbol comes
2419         from a version script, resolve it with the symbol with the same
2420         name with no version.  Also add the symbol without a version if
2421         appropriate.
2422         (do_define_in_output_data): If resolving with oldsym, don't delete
2423         sym.
2424         (do_define_in_output_segment): Likewise.
2425         (do_define_as_constant): Likewise.
2426         * symtab.h (class Symbol_table): Update declarations.
2427
2428 2009-03-13  Ian Lance Taylor  <iant@google.com>
2429
2430         * readsyms.cc (Read_symbols::incompatible_warning): New function.
2431         (Read_symbols::requeue): New function.
2432         (Read_symbols::do_read_symbols): If make_elf_object fails because
2433         the target type is not configured, and the file was searched for,
2434         issue a warning and retry with the next directory.
2435         (Add_symbols::run): If the file has an incompatible format, and
2436         it was searched for, requeue the Read_symbols task.  On error,
2437         release the object.
2438         * readsyms.h (class Read_symbols): Add dirindex_ field.  Add
2439         dirindex parameter to constructor.  Change all callers.  Declare
2440         incompatible_warning and requeue.
2441         (class Add_symbols): Add dirpath_, dirindex_, mapfile_,
2442         input_argument_ and input_group_ fields.  Add them to
2443         constructor.  Change all callers.
2444         (class Read_script): Add dirindex_ field.  Add it to constructor.
2445         Change all callers.
2446         * archive.cc (Archive::setup): Remove input_objects parameter.
2447         Change all callers.
2448         (Archive::get_file_and_offset): Likewise.
2449         (Archive::read_all_symbols): Likewise.
2450         (Archive::read_symbols): Likewise.
2451         (Archive::get_elf_object_for_member): Remove input_objects
2452         parameter.  Add punconfigured parameter.  Change all callers.
2453         (Archive::add_symbols): Change return type to bool.  Check return
2454         value of include_member.
2455         (Archive::include_all_members): Likewise.
2456         (Archive::include_member): Change return type to bool.  Return
2457         false if first included object has incompatible target.  Set
2458         included_member_ field.
2459         (Add_archive_symbols::run): If add_symbols returns false, requeue
2460         Read_symbols task.
2461         * archive.h (class Archive): Add included_member_ field.
2462         Initialize it in constructor.  Add input_file and searched_for
2463         methods.  Update declarations.
2464         (class Add_archive_symbols): Add dirpath_, dirindex_, and
2465         input_argument_ fields.  Add them to constructor.  Change all
2466         callers.
2467         * script.cc: Include "target-select.h".
2468         (class Parser_closure): Add skip_on_incompatible_target_ and
2469         found_incompatible_target_ fields.  Add
2470         skip_on_incompatible_target parameter to constructor.  Change all
2471         callers.  Add methods skip_on_incompatible_target,
2472         clear_skip_on_incompatible_target, found_incompatible_target, and
2473         set_found_incompatible_target.
2474         (read_input_script): Add dirindex parameter.  Change all callers.
2475         If parser finds an incompatible target, requeue Read_symbols
2476         task.
2477         (script_set_symbol): Clear skip_on_incompatible_target in
2478         closure.
2479         (script_add_assertion, script_parse_option): Likewise.
2480         (script_start_sections, script_add_phdr): Likewise.
2481         (script_check_output_format): New function.
2482         * script.h (read_input_script): Update declaration.
2483         * script-c.h (script_check_output_format): Declare.
2484         * yyscript.y (file_cmd): Handle OUTPUT_FORMAT.
2485         (ignore_cmd): Remove OUTPUT_FORMAT.
2486         * fileread.cc (Input_file::Input_file): Add explicit this.
2487         (Input_file::will_search_for): New function.
2488         (Input_file::open): Add pindex parameter.  Change all callers.
2489         * fileread.h (class Input_file): Add input_file_argument method.
2490         Declare will_search_for.  Update declarations.
2491         * object.cc (make_elf_object): Add punconfigured parameter.
2492         Change all callers.
2493         * object.h (class Object): Make input_file public.  Add
2494         searched_for method.
2495         (make_elf_object): Update declaration.
2496         * dirsearch.cc (Dirsearch::find): Add pindex parameter.  Use it to
2497         restart search.
2498         * dirsearch.h (class Dirsearch): Update declaration.
2499         * options.h (class General_options): Add --warn-search-mismatch.
2500         * parameters.cc (Parameters::is_compatible_target): New function.
2501         * parameters.h (class Parameters): Declare is_compatible_target.
2502         * workqueue.cc (Workqueue::add_blocker): New function.
2503         * workqueue.h (class Workqueue): Declare add_blocker.
2504
2505         * fileread.cc (Input_file::open): Remove options parameter.
2506         Change all callers.
2507         (Input_file::open_binary): Likewise.
2508         * script.cc (read_input_script): Likewise.
2509         * readsyms.h (class Read_symbols): Remove options_ field.  Remove
2510         options parameter from constructor.  Change all callers.
2511         (class Read_script): Likewise.
2512         * fileread.h (class Input_file): Update declarations.
2513         * script.h (read_input_script): Update declaration.
2514
2515 2009-03-10  Nick Clifton  <nickc@redhat.com>
2516
2517         * po/es.po: New Spanish translation.
2518
2519 2009-03-06  Cary Coutant  <ccoutant@google.com>
2520
2521         * options.cc (parse_short_option): Keep dash_z from registering itself.
2522
2523 2009-03-03  Ian Lance Taylor  <iant@google.com>
2524
2525         PR 9918
2526         * target-reloc.h (relocate_section): Pass output_section to
2527         relocate.
2528         * i386.cc (Target_i386::should_apply_static_reloc): Add
2529         output_section parameter.  Change all callers.
2530         (Target_i386::Relocate::relocate): Add output_section parameter.
2531         * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
2532         * sparc.cc (Target_sparc::Relocate::relocate): Likewise.
2533         * powerpc.cc (Target_powerpc::Relocate::relocate): Likewise.
2534         * testsuite/two_file_shared.sh: New script.
2535         * testsuite/Makefile.am (check_SCRIPTS): Add two_file_shared.sh.
2536         (check_DATA): Add two_file_shared.dbg.
2537         (two_file_shared.dbg): New target.
2538         * testsuite/Makefile.in: Rebuild.
2539
2540 2009-03-01  Ian Lance Taylor  <iant@google.com>
2541
2542         * configure.ac: Check for byteswap.h.
2543         * configure: Rebuild.
2544         * config.in: Rebuild.
2545
2546 2009-03-01  Mikolaj Zalewski  <mikolajz@google.com>
2547
2548         * layout.cc (Layout::find_or_add_kept_section): New function.
2549         (Layout::add_comdat): Removed.
2550         * layout.h (struct Kept_section): Move out of class Layout.
2551         Remove trailing underscores from field names.  Add group_sections
2552         field.  Rename group_ field to is_group.  Change all uses.
2553         (class Layout): Declare find_or_add_kept_section, not add_comdat.
2554         * object.cc (Sized_relobj::Sized_relobj): Don't initialize
2555         comdat_groups_ field.
2556         (Sized_relobj::include_section_group): Use
2557         find_or_add_kept_section and Kept_section::group_sections.
2558         (Sized_relobj::include_linkonce_section): Likewise.
2559         * object.cc (class Sized_relobj): Don't define Comdat_group or
2560         Comdat_group_table.  Remove find_comdat_group and
2561         add_comdat_group.  Remove comdat_groups_ field.
2562         * plugin.cc (include_comdat_group): Use
2563         Layout::find_or_add_kept_section.
2564
2565 2009-02-28  Ian Lance Taylor  <iant@google.com>
2566
2567         * README: --gc-sections and map files are now supported.  Document
2568         some build requirements.
2569
2570         PR 6992
2571         * symtab.cc (Symbol_table::sized_write_section_symbol): In a
2572         relocatable link set the value of the section symbol to zero.
2573         * object.cc (Sized_relobj::do_finalize_local_symbols): In a
2574         relocatable link don't include the section address in the local
2575         symbol value.
2576
2577 2009-02-27  Ian Lance Taylor  <iant@google.com>
2578
2579         PR 6811
2580         * options.h (class Search_directory): Add is_system_directory.
2581         (class General_options): Declare is_in_system_directory.
2582         * options.cc (get_relative_sysroot): Make static.
2583         (get_default_sysroot): Make static.
2584         (General_optoins::is_in_system_directory): New function.
2585         * fileread.cc (Input_file::is_in_system_directory): New function.
2586         * fileread.h (class Input_file): Declare is_in_system_directory.
2587         * object.h (class Object): Add is_in_system_directory.
2588         (class Input_objects): Remove system_library_directory_ field.
2589         * object.cc (Input_objects::add_object): Don't set
2590         system_library_directory_.
2591         (input_objects::found_in_system_library_directory): Remove.
2592         * symtab.cc (Symbol_table::write_globals): Remove input_objects
2593         parameter.  Change all callers.
2594         (Symbol_table::sized_write_globals): Likewise.
2595         (Symbol_table::warn_about_undefined_dynobj_symbol): Likewise.
2596         Call Object::is_in_system_directory.
2597         * symtab.h (class Symbol_table): Update declarations.
2598
2599         PR 5990
2600         * descriptors.h (Open_descriptor): Add is_on_stack field.
2601         * descriptors.cc (Descriptors::open): If the descriptor is on the
2602         top of the stack, remove it.  Initialize is_on_stack field.
2603         (Descriptors::release): Only add pod to stack if it is not on the
2604         stack already.
2605         (Descriptors::close_some_descriptor): Clear stack_next and
2606         is_on_stack fields.
2607
2608         PR 7091
2609         * output.cc (Output_section::find_starting_output_address): Rename
2610         from starting_output_address; add PADDR parameter; change return
2611         type.
2612         * output.h (class Output_section): Declare
2613         find_starting_output_address instead of starting_output_address.
2614         * object.cc (Sized_relobj::do_finalize_local_symbols): Handle a
2615         section symbol for which we can't find a merge section.
2616
2617         PR 9836
2618         * symtab.cc (Symbol_table::add_from_object): If the visibility is
2619         hidden or internal, force the symbol to be local.
2620         * resolve.cc (Symbol::override_visibility): Define.
2621         (Symbol::override_base): Use override_visibility.
2622         (Symbol_table::resolve): Likewise.
2623         (Symbol::override_base_with_special): Likewise.
2624         (Symbol_table::override_with_special): If the visibility is hidden
2625         or internal, force the symbol to be local.
2626         * symtab.h (class Symbol): Add set_visibility and
2627         override_visibility.
2628         * testsuite/ver_test_1.sh: New file.
2629         * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_1.sh.
2630         (check_DATA): Add ver_test_1.syms.
2631         (ver_test_1.syms): New target.
2632         * testsuite/Makefile.in: Rebuild.
2633
2634 2009-02-25  Cary Coutant  <ccoutant@google.com>
2635
2636         * layout.cc (Layout::choose_output_section): Don't rename sections
2637         when using a linker script that has a SECTIONS clause.
2638         * Makefile.in: Regenerate.
2639
2640         * testsuite/Makefile.am (script_test_5.sh): New test case.
2641         * testsuite/Makefile.in: Regenerate.
2642         * testsuite/script_test_5.cc: New file.
2643         * testsuite/script_test_5.sh: New file.
2644         * testsuite/script_test_5.t: New file.
2645
2646 2009-02-13  Rafael Avila de Espindola  <espindola@google.com>
2647
2648         * archive.cc (Archive::include_member): Update calls to add_symbols.
2649         * dynobj.cc (Sized_dynobj<size, big_endian>::make_version_map): Add
2650         the Layout argument.
2651         * dynobj.h (do_add_symbols): Add the Layout argument.
2652         * object.cc (Sized_relobj<size, big_endian>::do_add_symbols): Add the
2653         Layout argument.
2654         * object.h (Object::add_symbols): Add the Layout argument.
2655         (Object::do_add_symbols): Add the Layout argument.
2656         (Sized_relobj::do_add_symbols): Add the Layout argument.
2657         * plugin.cc (Sized_pluginobj<size, big_endian>::do_add_symbols):
2658         Unify the two versions.
2659         (Add_plugin_symbols): Remove.
2660         * plugin.h (Pluginobj::add_symbols, Pluginobj::do_add_symbols): Remove.
2661         (Sized_pluginobj::do_add_symbols): Unify the two versions.
2662         (Add_plugin_symbols): Remove.
2663         * readsyms.cc (Read_symbols::do_read_symbols): Update call to
2664         Add_symbols. Use Add_symbols instead of Add_plugin_symbols.
2665         (Add_symbols::run): Make it work with Pulginobj.
2666
2667 2009-02-06  Ian Lance Taylor  <iant@google.com>
2668
2669         * object.cc (Sized_relobj::do_layout): Make info message start
2670         with lower case letter.
2671
2672 2009-02-06  Mikolaj Zalewski  <mikolajz@google.com>
2673
2674         * binary.cc: Fix file comment.
2675
2676         * options.h (enum Incremental_disposition): Define.
2677         (class General_options): Add new options: --incremental,
2678         --incremental_changed, --incremental_unchanged,
2679         --incremental_unknown.  Add incremental_disposition_ and
2680         implicit_incremental_ fields.
2681         (General_options::incremental_disposition): New function.
2682         (class Position_dependent_options): Add incremental_disposition
2683         option.
2684         (Position_dependent_options::copy_from_options): Set incremental
2685         dispositions.
2686         * options.cc (General_options::parse_incremental_changed): New
2687         function.
2688         (General_options::parse_incremental_unchanged): New function.
2689         (General_options::parse_incremental_unknown): New function.
2690         (General_options::General_options): Initialize new fields
2691         incremental_disposition_ and implicit_incremental_.
2692         (General_options::finalize): Check for uasge of --incremental-*
2693         without --incremental.
2694
2695 2009-02-06  Chris Demetriou  <cgd@google.com>
2696
2697         * gold.h (gold_undefined_symbol): Change to take only a Symbol
2698         pointer and to report location as the file name associated with
2699         the symbol.
2700         (gold_undefined_symbol_at_location): New function to replace the
2701         old gold_undefined_symbol functionality.
2702         * target-reloc.h (relocate_section): Update to use
2703         gold_undefined_symbol_at_location.
2704         * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
2705         Call gold_undefined_symbol function rather than gold_error.
2706         * errors.h (Errors::undefined_symbol): Take location as a
2707         string, rather than calculating it from a relocation.
2708         * errors.cc (Errors::fatal): Print "fatal error:" before the
2709         formatted message.
2710         (Errors::error, Errors::error_at_location): Print "error: "
2711         before the formatted message.
2712         (Errors::undefined_symbol): Take location as a string, rather
2713         than calculating it from a relocation.
2714         (gold_undefined_symbol_at_location): New function akin to
2715         old gold_undefined_symbol, calculates location from relocation.
2716         (gold_undefined_symbol): Change to take only a Symbol pointer
2717         and to report location as the file name associated with the symbol.
2718         * testsuite/debug_msg.sh: Update for changed error messages.
2719         * testsuite/undef_symbol.sh: Likewise.
2720
2721 2009-02-04  Duncan Sands  <baldrick@free.fr>
2722
2723         PR 9812
2724         * reduced_debug_output.h
2725         (Output_reduced_debug_abbrev_section::failed): Use format for
2726         gold_warning.
2727         (Output_reduced_debug_info_section::faild): Likewise.
2728
2729 2009-01-31  Mikolaj Zalewski  <mikolajz@google.com>
2730
2731         * script.cc (Lazy_demangler): New class.
2732         (Version_script_info::get_symbol_version_helper): Demangle a
2733         symbol only once.
2734
2735 2009-01-29  Cary Coutant  <ccoutant@google.com>
2736
2737         * i386.cc (Target_i386::Relocate::relocate): Recognize non-PIC calls
2738         to __tls_get_addr.
2739         * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
2740
2741 2009-01-28  Ian Lance Taylor  <iant@google.com>
2742
2743         * version.cc (version_string): Bump to 1.9.
2744
2745         * gold.h: Include <cstring> and <stdint.h>.
2746         * version.cc: Include <cstdio>.
2747         * object.cc (Sized_relobj::do_layout): Initialize gc_sd to avoid a
2748         warning.
2749         * reduced_debug_output.cc (insert_into_vector): Rename from
2750         Insert_into_vector; change all callers.  Use Swap_unaligned to
2751         avoid aliasing issue; remove union since it is unnecessary.
2752
2753 2009-01-27  Sriraman Tallam  <tmsriram@google.com>
2754
2755         * Makefile.am (CCFILES): Add gc.cc.
2756         (HFILES): Add gc.h.
2757         * Makefile.in: Regenerate.
2758         * gold.cc (Gc_runner): New class.
2759         (queue_initial_tasks): Call garbage collection related tasks
2760         when corresponding options are invoked.
2761         (queue_middle_gc_tasks): New function.
2762         (queue_middle_tasks): Reorder tasks to allow relocs to be read and
2763         processed early before laying out sections during garbage collection.
2764         * gold.h (queue_middle_gc_tasks): New function.
2765         (is_prefix_of): Move from "layout.cc".
2766         * i386.cc (Target_i386::gc_process_relocs): New function.
2767         * layout.cc (is_prefix_of): Remove. Move to "gold.h"
2768         * main.cc (main): Create object of class "Garbage_collection".
2769         * object.cc (Relobj::copy_symbols_data): New function.
2770         (Relobj::is_section_name_included): New function.
2771         (Sized_relobj::do_layout): Allow this function to be called twice 
2772         during garbage collection and defer layout of section during the 
2773         first call.
2774         * object.h (Relobj::get_symbols_data): New function.
2775         (Relobj::is_section_name_included): New function.
2776         (Relobj::copy_symbols_data): New function.
2777         (Relobj::set_symbols_data): New function.
2778         (Relobj::get_relocs_data): New function.
2779         (Relobj::set_relocs_data): New function.
2780         (Relobj::is_output_section_offset_invalid): New pure virtual function.
2781         (Relobj::gc_process_relocs): New function.
2782         (Relobj::do_gc_process_relocs): New pure virtual function.
2783         (Relobj::sd_): New data member.
2784         (Sized_relobj::is_output_section_offset_invalid): New function.
2785         (Sized_relobj::do_gc_process_relocs): New function.
2786         * options.h (General_options::gc_sections): Modify to not be a no-op.
2787         (General_options::print_gc_sections): New option.
2788         * plugin.cc (Plugin_finish::run): Remove function call to
2789         Plugin_manager::layout_deferred_objects.  Move it to "gold.cc".
2790         * powerpc.cc (Target_powerpc::gc_process_relocs): New function.
2791         * reloc.cc (Read_relocs::run): Add task to process relocs and
2792         determine unreferenced sections when doing garbage collection.
2793         (Gc_process_relocs): New class.
2794         (Sized_relobj::do_gc_process_relocs): New function.
2795         (Sized_relobj::do_scan_relocs): Don't try to scan the relocs for
2796         sections that are garbage collected.
2797         * reloc.h (Gc_process_relocs): New class.
2798         * sparc.cc (Target_sparc::gc_process_relocs): New function.
2799         * symtab.cc (Symbol::should_add_dynsym_entry): Do not add entries for
2800         symbols whose corresponding sections are garbage collected.
2801         (Symbol_table::Symbol_table): Add new parameter for the garbage
2802         collection object.
2803         (Symbol_table::gc_mark_undef_symbols): New function.
2804         (Symbol_table::gc_mark_symbol_for_shlib): New function.
2805         (Symbol_table::gc_mark_dyn_syms): New function.
2806         (Symbol_table::resolve): Do not treat symbols seen in dynamic objects
2807         as garbage.
2808         (Symbol_table::add_from_object): Likewise.
2809         (Symbol_table::add_from_relobj): When building shared objects, do not
2810         treat externally visible symbols as garbage.
2811         (Symbol_table::sized_finalize_symbol): Do not check dynamic symbol
2812         table information for static and relocatable links.
2813         * symtab.h (Symbol_table::set_gc): New function.
2814         (Symbol_table::gc): New function.
2815         (Symbol_table::gc_mark_undef_symbols): New function.
2816         (Symbol_table::gc_mark_symbol_for_shlib): New function.
2817         (Symbol_table::gc_mark_dyn_syms): New function.
2818         (Symbol_table::gc_): New data member.
2819         * target.h (Sized_target::gc_process_relocs): New pure virtual 
2820         function.
2821         * x86_64.cc (Target_x86_64::gc_process_relocs): New function.
2822         * testsuite/testfile.cc (Target_test::gc_process_relocs): New function.
2823
2824 2009-01-20  Chris Faylor <me.sourceware@sourceware.org>
2825
2826         * options.h (General_options::gc_sections): Define as a no-op for now.
2827         (General_options::no_keep_memory): Ditto.
2828         (General_options::Bshareable): Define.
2829         * options.cc (General_options::finalize): Honor -Bshareable.
2830
2831 2009-01-20  Andreas Schwab  <schwab@suse.de>
2832
2833         * powerpc.cc (Powerpc_relocate_functions::rel16_ha): Don't try to
2834         read the value in the contents, since we don't use it.  Use the
2835         template endianness when writing.
2836         (Relocate::relocate): Use it for R_PPC_REL16_HA.
2837
2838 2009-01-19  Andreas Schwab  <schwab@suse.de>
2839
2840         * configure.tgt (powerpc64-*): Fix targ_obj.
2841
2842 2009-01-15  Ian Lance Taylor  <iant@google.com>
2843
2844         * object.cc (Sized_relobj::write_local_symbols): Don't write out
2845         local symbols when stripping all symbols.
2846
2847 2009-01-14  Cary Coutant  <ccoutant@google.com>
2848
2849         * output.cc (Output_reloc): Add explicit instantiations.
2850
2851 2009-01-14  Cary Coutant  <ccoutant@google.com>
2852
2853         * archive.cc (Archive::get_elf_object_for_member): Remove call
2854         to File_read::claim_for_plugin.
2855         * descriptors.cc (Descriptors::open): Remove reference to
2856         is_claimed.
2857         (Descriptors::claim_for_plugin): Remove.
2858         * descriptors.h (Descriptors::claim_for_plugin): Remove.
2859         (Descriptors::is_claimed): Remove.
2860         (claim_descriptor_for_plugin): Remove.
2861         * fileread.cc (File_read::claim_for_plugin): Remove.
2862         * fileread.h (File_read::claim_for_plugin): Remove.
2863         (File_read::descriptor): Reopen descriptor if necessary.
2864         * plugin.cc  (Plugin::load): Add two new APIs to transfer vector.
2865         (Plugin_manager::all_symbols_read): Add task parameter. Change
2866         all callers.
2867         (Plugin_manager::get_input_file): New function.
2868         (Plugin_manager::release_input_file): New function.
2869         (Pluginobj::Pluginobj): Add filesize parameter and initialize
2870         corresponding data member.
2871         (Sized_pluginobj::Sized_pluginobj): Add filesize parameter
2872         and pass to base constructor. Change all callers.
2873         (get_input_file, release_input_file): New functions.
2874         (make_sized_plugin_object): Add filesize parameter. Change all callers.
2875         * plugin.h (Plugin_manager::Plugin_manager): Initialize task_ member.
2876         (Plugin_manager::all_symbols_read): Add task parameter.
2877         (Plugin_manager::get_input_file): New function.
2878         (Plugin_manager::release_input_file): New function.
2879         (Plugin_manager::task_): New data member.
2880         (Pluginobj::Pluginobj): Add filesize parameter.
2881         (Pluginobj::filename): New function.
2882         (Pluginobj::descriptor): New function.
2883         (Pluginobj::filesize): New function.
2884         (Pluginobj::filesize_): New data member.
2885         (Sized_pluginobj::Sized_pluginobj): Add filesize parameter.
2886         * readsyms.cc (Read_symbols::do_read_symbols): Remove call to
2887         File_read::claim_for_plugin; use Object::unlock to unlock the file.
2888
2889         * testsuite/Makefile.am (plugin_test_4): New test case for plugins
2890         with archive libraries.
2891         * testsuite/Makefile.in: Regenerate.
2892         * testsuite/plugin_test.c (struct sym_info): New type.
2893         (get_input_file, release_input_file): New static variables.
2894         (onload): Capture new transfer vector entries.
2895         (claim_file_hook): Stop reading at end of file according to filesize.
2896         Factor out parsing of readelf output into separate function.
2897         (all_symbols_read_hook): Exercise get_input_file and release_input_file
2898         APIs and get the source file name from the symbol table.  Convert
2899         source file name to corresponding object file name.  Print info
2900         message when adding new input files.
2901         (parse_readelf_line): New function.
2902         * testsuite/plugin_test_1.sh: Add checks for new info messages.
2903         * testsuite/plugin_test_2.sh: Likewise.
2904         * testsuite/plugin_test_3.sh: Likewise.
2905         * testsuite/plugin_test_4.sh: New test case.
2906
2907 2009-01-07  Ian Lance Taylor  <iant@google.com>
2908
2909         * version.cc (version_string): Bump to 1.8.
2910
2911 2008-12-23  Cary Coutant  <ccoutant@google.com>
2912
2913         * gold.cc (gold_exit): Call plugin cleanup handlers on exit.
2914         * plugin.cc (Plugin_manager::finish): Rename as
2915         layout_deferred_objects.  Move cleanup to separate function.
2916         (Plugin_manager::cleanup): New function.
2917         (Plugin_finish::run): Call layout_deferred_objects and cleanup
2918         separately.
2919         * plugin.h (Plugin_manager::finish): Rename as
2920         layout_deferred_objects.
2921         (Plugin_manager::cleanup): New function.
2922         (Plugin_manager::cleanup_done): New field.
2923
2924 2008-12-23  Cary Coutant  <ccoutant@google.com>
2925
2926         * plugin.cc (is_visible_from_outside): New function.
2927         (Pluginobj::get_symbol_resolution_info): Call is_visible_from_outside
2928         so we don't return "IR only" status for exported symbols or -r links.
2929
2930         * testsuite/Makefile.am (plugin_test_3): New test case.
2931         * testsuite/Makefile.in: Regenerate.
2932         * testsuite/plugin_test_3.sh: New file.
2933
2934 2008-12-22  Cary Coutant  <ccoutant@google.com>
2935
2936         * object.cc (Sized_relobj::layout_section): New function.
2937         (Sized_relobj::do_layout): Defer layout of input sections until after
2938         plugin has provided replacement files.
2939         (Sized_relobj::do_layout_deferred_sections): New function.
2940         * object.h (Relobj::set_section_offset): Remove virtual keyword.
2941         (Relobj::layout_deferred_sections): New function.
2942         (Relobj::do_layout_deferred_sections): New function.
2943         (Sized_relobj::do_layout_deferred_sections): New function.
2944         (Sized_relobj::layout_section): New function.
2945         (Sized_relobj::Deferred_layout): New structure.
2946         (Sized_relobj::deferred_layout_): New field.
2947         * plugin.cc (Plugin_manager::finish): Renamed, was cleanup.
2948         Change all callers.  Layout deferred sections.
2949         (class Plugin_finish): Renamed, was Plugin_cleanup.  Change all
2950         references.
2951         (Plugin_hook::run): Move code from do_plugin_hook inline.
2952         (Plugin_hook::do_plugin_hook): Remove.
2953         * plugin.h (Plugin_manager::Plugin_manager): Add missing initializers.
2954         (Plugin_manager::finish): Renamed, was cleanup.
2955         (Plugin_manager::should_defer_layout): New function.
2956         (Plugin_manager::add_deferred_layout_object): New function.
2957         (Plugin_manager::Deferred_layout_list): New type.
2958         (Plugin_manager::deferred_layout_objects_): New field.
2959         (Plugin_hook::do_plugin_hook): Remove.
2960
2961 2008-12-17  Ian Lance Taylor  <iant@google.com>
2962
2963         * options.h (class General_options): Add --no case for
2964         --export-dynamic.
2965
2966 2008-12-16  Cary Coutant  <ccoutant@google.com>
2967
2968         * plugin.cc (Plugin::load): Move LDPT_MESSAGE to front of transfer
2969         vector.
2970         (Plugin_manager::claim_file): Create plugin object even if
2971         plugin did not call the add_symbols callback.
2972         (Plugin_obj::get_symbol_resolution_info): Guard against plugin
2973         asking for more symbols than were added.
2974         * testsuite/Makefile.am (plugin_test_1): Add test case with
2975         no global symbols.
2976         (empty.syms): New target.
2977         * testsuite/Makefile.in: Regenerate.
2978         * testsuite/plugin_test.c (claim_file_hook): Add new debug
2979         message. Don't call add_symbols if no globals.
2980         (all_symbols_read_hook): Don't provide replacement for empty
2981         claimed file.
2982
2983 2008-12-12  Ian Lance Taylor  <iant@google.com>
2984
2985         * target-reloc.h (Default_scan_relocatable_relocs): Only discard
2986         r_type == 0 for a local symbol with r_sym == 0.
2987         (scan_relocatable_relocs): Pass r_sym to
2988         local_non_section_strategy.
2989         * reloc.cc (Emit_relocs_strategy::local_non_section_strategy): Add
2990         r_sym parameter.
2991
2992         * configure.ac: Update test for TLS descriptors: they are
2993         supported as of glibc 2.9.
2994         * configure: Rebuild.
2995
2996 2008-12-11  Ian Lance Taylor  <iant@google.com>
2997
2998         PR 7091
2999         * target-reloc.h (Default_scan_relocatable_relocs): For each
3000         function, map r_type == 0 to RELOC_DISCARD.
3001
3002 2008-12-10  Cary Coutant  <ccoutant@google.com>
3003
3004         * layout.cc (Layout::add_comdat): Allow COMDAT group from a replacement
3005         object to override a kept COMDAT group from a plugin object.
3006
3007 2008-12-09  Ian Lance Taylor  <iant@google.com>
3008
3009         PR 7088
3010         * yyscript.y (file_cmd): Handle INPUT.
3011
3012         * testsuite/initpri1.c: Change all declarations to be full
3013         prototypes by adding void, to avoid compiler warnings.
3014
3015 2008-12-05  Rafael Avila de Espindola  <espindola@google.com>
3016
3017         * options.cc (General_options::parse_plugin_opt): New.
3018         (General_options::add_plugin): The argument now is just the filename.
3019         (General_options::add_plugin_option): New.
3020         * options.h (plugin_opt): New.
3021         (add_plugin): Change argument name.
3022         (add_plugin_option): New.
3023         * plugin.cc (Plugin::load): Don't parse the plugin option.
3024         * plugin.h (Plugin::Plugin): Rename argument. Init filename_.
3025         (Plugin::add_option): New.
3026         (Plugin::args_): Change type.
3027         (Plugin::filename_): New.
3028         (Plugin_manager::add_plugin_option): New.
3029         * testsuite/Makefile.am (plugin_test_1): Use new syntax.
3030         * testsuite/Makefile.in: Regenerate.
3031
3032 2008-12-05  Cary Coutant  <ccoutant@google.com>
3033
3034         * layout.cc (Layout::include_section): Check for SHF_EXCLUDE.
3035         Handle --strip-lto-sections option.
3036         * options.h (strip_lto_sections): New option.
3037
3038 2008-12-01  Cary Coutant  <ccoutant@google.com>
3039
3040         * plugin.cc (ld_plugin_message): Change format parameter to const.
3041         Fix mismatch between new[] and delete.
3042
3043 2008-11-14  Cary Coutant  <ccoutant@google.com>
3044
3045         * reloc.cc (Sized_relobj::do_read_relocs): Use constant invalid_address
3046         instead of -1U.
3047
3048 2008-11-05  Craig Silverstein  <csilvers@google.com>
3049
3050         * options.cc (General_options::parse_dynamic_list): New function.
3051         * options.h (General_options): New flags dynamic_list,
3052         dynamic_list_data, dynamic_list_cpp_new, and
3053         dynamic_list_cpp_typeinfo.  New variable dynamic_list_.
3054         (General_options::in_dynamic_list): New function.
3055         * script.cc (Lex::Mode): New enum DYNAMIC_LIST.
3056         (Lex::can_start_name): Add support for DYNAMIC_LIST mode.
3057         (Lex::can_continue_name): Likewise.
3058         (yylex): Likewise.
3059         (read_script_file): New parameter script_options.
3060         (read_dynamic_list): New function.
3061         (Script_options::define_dynamic_list): New function.
3062         (dynamic_list_keyword_parsecodes): New variable.
3063         (dynamic_list_keywords): New variable.
3064         * script.h (Script_options::define_dynamic_list): New function
3065         prototype.
3066         (read_dynamic_list): New function prototype.
3067         * symtab.cc (strprefix): New macro.
3068         (Symbol::should_add_dynsym_entry): Support dynamic_list,
3069         dynamic_list_data, dynamic_list_cpp_new, and
3070         dynamic_list_cpp_typeinfo.
3071         * yyscript.y (PARSING_DYNAMIC_LIST): New token.
3072         (dynamic_list_expr): New rule.
3073         (dynamic_list_nodes): Likewise.
3074         (dynamic_list_node): Likewise.
3075         * testsuite/Makefile.am (dynamic_list): New test.
3076         * testsuite/Makefile.in: Regenerated.
3077         * testsuite/dynamic_list.t: New file.
3078         * testsuite/dynamic_list.sh: New file.
3079
3080 2008-11-05  Craig Silverstein  <csilvers@google.com>
3081
3082         * testsuite/tls_test_c.c: Add prototype for t11 and t11_last.
3083         * testsuite/tls_test_c.c (t11): Add explicit "void" to prototype.
3084         (t11_last): Likewise.
3085         * testsuite/ver_test_6.c (main): Likewise.
3086
3087 2008-10-07  Cary Coutant  <ccoutant@google.com>
3088
3089         * options.c (General_options::finalize): Add check for -static and
3090         -shared.
3091         * gold.cc (queue_middle_tasks): Assert that list of dynamic objects
3092         is not empty.
3093
3094 2008-10-02  Cary Coutant  <ccoutant@google.com>
3095
3096         * plugin.cc (make_sized_plugin_object): Fix conditional
3097         compilation to work when not all targets are enabled.
3098
3099 2008-09-29  Cary Coutant  <ccoutant@google.com>
3100
3101         * archive.cc (Archive::get_file_and_offset): Use filename instead
3102         of name to get library path.
3103         (Archive::include_member): Unlock external member of a thin archive.
3104
3105         * testsuite/Makefile.am (TEST_AR): New variable.
3106         (thin_archive_test_1): New test.
3107         (thin_archive_test_2): New test.
3108         * testsuite/Makefile.in: Regenerate.
3109         * testsuite/thin_archive_main.cc: New file.
3110         * testsuite/thin_archive_test_1.cc: New file.
3111         * testsuite/thin_archive_test_2.cc: New file.
3112         * testsuite/thin_archive_test_3.cc: New file.
3113         * testsuite/thin_archive_test_4.cc: New file.
3114
3115 2008-09-29  Cary Coutant  <ccoutant@google.com>
3116
3117         * mapfile.cc (Mapfile::print_input_section): Change -1U to -1ULL.
3118         * object.cc (Sized_relobj::do_layout): Use constant invalid_address
3119         instead of -1U.
3120         (Sized_relobj::do_finalize_local_symbols): Likewise.
3121         (Sized_relobj::map_to_kept_section): Likewise.
3122         * object.h (Sized_relobj::invalid_address): New constant.
3123         (Sized_relobj::do_output_section_offset): Check for invalid_address
3124         and return -1ULL.
3125         * output.cc (Output_reloc::local_section_offset): Use constant
3126         invalid_address instead of -1U.
3127         (Output_reloc::get_address): Likewise.
3128         (Output_section::output_address): Change -1U to -1ULL.
3129         * output.h (Output_reloc::invalid_address): New constant.
3130         * reloc.cc (Sized_relobj::write_sections): Use constant
3131         invalid_address instead of -1U.
3132         (Sized_relobj::relocate_sections): Likewise.
3133         * symtab.cc (Symbol_table::sized_finalize_symbol): Handle symbol
3134         values for merge sections.
3135         * target-reloc.h (relocate_for_relocatable): Use constant
3136         invalid_address instead of -1U.
3137
3138 2008-09-19  Cary Coutant  <ccoutant@google.com>
3139
3140         Add plugin functionality for link-time optimization (LTO).
3141         * configure.ac (plugins): Add --enable-plugins option.
3142         * configure: Regenerate.
3143         * config.in: Regenerate.
3144         * Makefile.am (LIBDL): New variable.
3145         (CCFILES): Add plugin.cc.
3146         (HFILES): Add plugin.h.
3147         (ldadd_var): Add LIBDL.
3148         * Makefile.in: Regenerate.
3149
3150         * archive.cc: Include "plugin.h".
3151         (Archive::setup): Don't preread archive symbols when using a plugin.
3152         (Archive::get_file_and_offset): Add memsize parameter.  Change callers.
3153         (Archive::get_elf_object_for_member): Call plugin hooks for claiming
3154         files.
3155         (Archive::include_member): Add symbols from plugin objects.
3156         * archive.h (Archive::get_file_and_offset): Add memsize parameter.
3157         * descriptors.cc (Descriptors::open): Check for file descriptors
3158         abandoned by plugins.
3159         (Descriptors::claim_for_plugin): New function.
3160         * descriptors.h (Descriptors::claim_for_plugin): New function.
3161         (Open_descriptor::is_claimed): New field.
3162         (claim_descriptor_for_plugin): New function.
3163         * fileread.cc (File_read::claim_for_plugin): New function.
3164         * fileread.h (File_read::claim_for_plugin): New function.
3165         (File_read::descriptor): New function.
3166         * gold.cc: Include "plugin.h".
3167         (queue_initial_tasks): Add task to call plugin hooks for generating
3168         new object files.
3169         * main.cc: Include "plugin.h".
3170         (main): Load plugin libraries.
3171         * object.h (Pluginobj): Declare.
3172         (Object::pluginobj): New function.
3173         (Object::do_pluginobj): New function.
3174         (Object::set_target): New function.
3175         * options.cc: Include "plugin.h".
3176         (General_options::parse_plugin): New function.
3177         (General_options::General_options): Initialize plugins_ field.
3178         (General_options::add_plugin): New function.
3179         * options.h (Plugin_manager): Declare.
3180         (General_options): Add --plugin option.
3181         (General_options::has_plugins): New function.
3182         (General_options::plugins): New function.
3183         (General_options::add_plugin): New function.
3184         (General_options::plugins_): New field.
3185         * plugin.cc: New file.
3186         * plugin.h: New file.
3187         * readsyms.cc: Include "plugin.h".
3188         (Read_symbols::do_read_symbols): Check for archive before checking
3189         for ELF file.  Call plugin hooks to claim files.
3190         * resolve.cc (Symbol_table::resolve): Record when symbol is referenced
3191         from a real object file; force override when processing replacement
3192         files.
3193         * symtab.cc (Symbol::init_fields): Initialize in_real_elf_ field.
3194         (Symbol::init_base_object): Likewise.
3195         (Symbol::init_base_output_data): Likewise.
3196         (Symbol::init_base_output_segment): Likewise.
3197         (Symbol::init_base_constant): Likewise.
3198         (Symbol::init_base_undefined): Likewise.
3199         (Symbol::output_section): Assert that object is not a plugin.
3200         (Symbol_table::add_from_pluginobj): New function.
3201         (Symbol_table::sized_finalize_symbol): Treat symbols from plugins as
3202         undefined.
3203         (Symbol_table::sized_write_globals): Likewise.
3204         (Symbol_table::add_from_pluginobj): Instantiate template.
3205         * symtab.h (Sized_pluginobj): Declare.
3206         (Symbol::in_real_elf): New function.
3207         (Symbol::set_in_real_elf): New function.
3208         (Symbol::in_real_elf_): New field.
3209         (Symbol_table::add_from_pluginobj): New function.
3210
3211         * testsuite/Makefile.am (AM_CFLAGS): New variable.
3212         (LIBDL): New variable.
3213         (LDADD): Add LIBDL.
3214         (check_PROGRAMS): Add plugin_test_1 and plugin_test_2.
3215         (check_SCRIPTS): Add plugin_test_1.sh and plugin_test_2.sh.
3216         (check_DATA): Add plugin_test_1.err and plugin_test_2.err.
3217         (MOSTLYCLEANFILES): Likewise.
3218         * testsuite/Makefile.in: Regenerate.
3219         * testsuite/plugin_test.c: New file.
3220         * testsuite/plugin_test_1.sh: New file.
3221         * testsuite/plugin_test_2.sh: New file.
3222
3223 2008-09-16  Ian Lance Taylor  <iant@google.com>
3224
3225         * target-reloc.h (relocate_section): Check whether a symbol is
3226         defined by the ABI before reporting an undefined symbol error.
3227         * target.h (Target::is_defined_by_abi): Make parameter const.
3228         (Target::do_is_defined_by_abi): Likewise.
3229         * i386.cc (Target_i386::do_is_defined_by_abi): Likewise.
3230         * powerpc.cc (Target_powerpc::do_is_defined_by_abi): Likewise.
3231         * sparc.cc (Target_sparc::do_is_defined_by_abi): Likewise.
3232         * x86_64.cc (Target_x86_64::do_is_defined_by_abi): Likewise.
3233         * testsuite/Makefile.am (tls_test_shared.so): Add -Wl,-z,defs.
3234         * testsuite/Makefile.in: Rebuild.
3235
3236         * fileread.cc (make_view): Add casts to avoid warning.
3237
3238 2008-09-16  Alexandre Oliva  <aoliva@redhat.com>
3239
3240         * i386.cc (Target_i386::define_tls_base_symbol): Update comments.
3241         * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
3242
3243 2008-09-16  Alexandre Oliva  <aoliva@redhat.com>
3244
3245         * options.h (General_options::output_is_executable): New.
3246         (General_options::output_is_pie): New.
3247         * i386.cc (Target_i386::define_tls_base_symbol): Use SEGMENT_START
3248         for shared libraries.
3249         * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
3250
3251 2008-09-11  Chris Demetriou  <cgd@google.com>
3252
3253         * options.h (origin): New -z option.
3254         * layout.cc (Layout:finish_dynamic_section): If "-z origin"
3255         is specified, set DF_ORIGIN in DT_FLAGS and set DF_1_ORIGIN
3256         in DT_FLAGS_1.
3257
3258 2008-09-05  Cary Coutant  <ccoutant@google.com>
3259
3260         * fileread.cc (File_read::make_view): Add check for attempt to map
3261         beyond end of file.
3262
3263 2008-09-05  Cary Coutant  <ccoutant@google.com>
3264
3265         * symtab.cc (Symbol_table::add_from_dynobj): Fix typos in
3266         explicit instantiations.
3267
3268 2008-08-28  Kris Van Hees  <kris.van.hees@oracle.com>
3269
3270         PR gold/6858
3271         * options.cc (General_options::finalize): Allow undefined symbols
3272         in shlibs if linking -shared.
3273
3274         PR gold/6859
3275         * symtab.cc (Symbol::init_base_undefined): Mark explicitly undefined
3276         symbols as not needing a dynsym entry.
3277
3278 2008-08-20  Craig Silverstein  <csilvers@google.com>
3279
3280         * fileread.cc (File_read::open): Do not lock the file unless it
3281         was successfully opened.
3282
3283 2008-08-14  Cary Coutant  <ccoutant@google.com>
3284
3285         * x86_64.cc (Target_x86_64::Relocate::relocat_tls):
3286         Use addend for DTPOFF32, DTPOFF64, and TPOFF32 relocs.
3287         * testsuite/tls_test.cc (struct int128): 128-bit struct
3288         for testing TLS relocs with non-zero addend.
3289         (v12): New TLS variable.
3290         (t12): New test.
3291         (t_last): Add check for v12.
3292         * testsuite/tls_test.h (t12): New function.
3293         * testsuite/tls_test_main.cc (thread_routine): Call new test.
3294
3295 2008-08-13  Ian Lance Taylor  <iant@google.com>
3296
3297         * layout.cc (Layout::attach_allocated_section_to_segment): Don't
3298         set tls_segment_ or relro_segment_.
3299         (Layout::make_output_segment): Set tls_segment_ and relro_segment_
3300         when appropriate.
3301         * output.h (Output_section::clear_is_relro): New function.
3302         * output.cc (Output_segment::add_output_section): Handle SHF_TLS
3303         sections specially even when output_data_ is empty.
3304         (Output_segment::maximum_alignment): When first section is relro,
3305         only force alignment for PT_LOAD segments.
3306         * script.cc (script_data_segment_align): New function.
3307         (script_data_segment_relro_end): New function.
3308         * script-c.h (script_data_segment_align): Declare.
3309         (script_data_segment_relro_end): Declare.
3310         * script-sections.h (class Script_sections): Declare
3311         data_segment_align and data_segment_relro_end.  Add fields
3312         segment_align_index_ and saw_relro_end_.
3313         * script-sections.cc (class Sections_element): Add set_is_relro
3314         virtual function.  Add new bool* parameter to place_orphan_here.
3315         Add get_output_section virtual function.
3316         (class Output_section_definition): Add set_is_relro.  Add new
3317         bool* parameter to place_orphan_here.  Add get_output_section.
3318         Add is_relro_ field.
3319         (Output_section_definition::Output_section_definition): Initialize
3320         evaluated_address_, evaluated_load_address, evaluated_addralign_,
3321         and is_relro_ fields.
3322         (Output_section_definition::place_orphan_here): Add is_relro
3323         parameter.
3324         (Output_section_definition::set_section_addresses): Set relro for
3325         output section.
3326         (Output_section_definition::alternate_constraint): Likewise.
3327         (class Orphan_output_section): Add new bool* parameter to
3328         place_orphan_here.  Add get_output_section.
3329         (Orphan_output_section::place_orphan_here): Add is_relro
3330         parameter.
3331         (Script_sections::Script_sections): Initialize
3332         data_segment_align_index_ and saw_relro_end_.
3333         (Script_sections::data_segment_align): New function.
3334         (Script_sections::data_segment_relro_end): New function.
3335         (Script_sections::place_orphan): Set or clear is_relro.
3336         (Script_sections::set_section_addresses): Force alignment of first
3337         TLS section.
3338         * yyscript.y (exp): Call script_data_segment_align and
3339         script_data_segment_relro_end.
3340         * testsuite/relro_script_test.t: New file.
3341         * testsuite/relro_test.cc (using_script): Declare.
3342         (t1, t2): Test using_script.
3343         * testsuite/Makefile.am (check_PROGRAMS): Add relro_script_test.
3344         (relro_script_test_SOURCES): Define.
3345         (relro_script_test_DEPENDENCIES): Define.
3346         (relro_script_test_LDFLAGS): Define.
3347         (relro_script_test_LDADD): Define.
3348         (relro_script_test.so): New target.
3349         * testsuite/Makefile.in: Rebuild.
3350
3351 2008-08-06  Cary Coutant <ccoutant@google.com>
3352
3353         * archive.cc (Archive::total_archives, Archive::total_members)
3354         (Archive::total_members_loaded): New variables.
3355         (Archive::setup): Add parameter.  Add option to preread
3356         archive symbols.
3357         (Archive::read_armap): Add counter.
3358         (Archive::get_file_and_offset): New function.
3359         (Archive::get_elf_object_for_member): New function.
3360         (Archive::read_all_symbols): New function.
3361         (Archive::read_symbols): New function.
3362         (Archive::add_symbols): Add counters.
3363         (Archive::include_all_members): Use armap to find members if it's
3364         already built.
3365         (Archive::include_member): Skip reading symbols if already read.
3366         Factored code into Archive::get_file_and_offset and
3367         Archive::get_elf_object_for_member.  Changed call to
3368         Mapfile::report_include_archive_member.
3369         (Archive::print_stats): New function.
3370         * archive.h: Declare Object and Read_symbols_data classes.
3371         (Archive::Archive): Add initializers for new members.
3372         (Archive::setup): Add parameter.
3373         (Archive::print_stats): New function.
3374         (Archive::total_archives, Archive::total_members)
3375         (Archive::total_members_loaded): New variables.
3376         (Archive::get_file_and_offset): New function.
3377         (Archive::get_elf_object_for_member): New function.
3378         (Archive::read_all_symbols): New function.
3379         (Archive::read_symbols): New function.
3380         (Archive::Archive_member): New class.
3381         (Archive::members_): New member.
3382         (Archive::num_members_): New member.
3383         * main.cc: Include archive.h.
3384         (main): Call Archive::print_stats.
3385         * mapfile.cc (Mapfile::report_include_archive_member): Delete
3386         archive parameter; member_name is now the fully-decorated name.
3387         * mapfile.h (Mapfile::report_include_archive_member): Likewise.
3388         * options.h: (General_options): Add --preread-archive-symbols option.
3389         * readsyms.cc (Read_symbols::do_read_symbols): Change call to
3390         Archive::setup.
3391
3392 2008-08-04  Ian Lance Taylor  <iant@google.com>
3393
3394         * symtab.h (Symbol::use_plt_offset): New function.
3395         * i386.cc (Relocate::relocate): Call Symbol::use_plt_offset.
3396         * powerpc.cc (Relocate::relocate): Likewise.
3397         * sparc.cc (Relocate::relocate): Likewise.
3398         * x86_64.cc (Relocate::relocate): Likewise.
3399         * testsuite/weak_plt.sh: New test.
3400         * testsuite/weak_plt_main.cc: New test.
3401         * testsuite/weak_plt_shared.cc: New test.
3402         * testsuite/Makefile.am (check_SCRIPTS): Add weak_plt.sh.
3403         (check_PROGRAMS): Add weak_plt.
3404         (check_DATA): Add weak_plt_shared.so.
3405         (weak_plt_main_pic.o, weak_plt): New targets.
3406         (weak_plt_shared_pic.o, weak_plt_shared.so): New targets.
3407         * testsuite/Makefile.in: Rebuild.
3408
3409         * testsuite/Makefile.am (weak_alias_test_1.so): Depend upon
3410         gcctestdir/ld.
3411         (weak_alias_test_2.so, weak_alias_test_4.so): Likewise.
3412         * testsuite/Makefile.in: Rebuild.
3413
3414 2008-08-04  Alan Modra  <amodra@bigpond.net.au>
3415
3416         * Makefile.am (POTFILES.in): Set LC_ALL=C.
3417         * Makefile.in: Regenerate.
3418         * po/POTFILES.in: Regenerate.
3419
3420 2008-07-29  Ian Lance Taylor  <iant@google.com>
3421
3422         * script.cc (Script_options::finalize_symbols): Finalize SECTIONS
3423         symbols before other symbols.
3424         * testsuite/script_test_2.cc (test_addr): Declare.
3425         (test_addr_alias): Declare.
3426         (main): Check that test_addr and test_addr_alias have the right
3427         values.
3428         * testsuite/script_test_2.t: Define test_addr_alias and
3429         test_addr.
3430
3431 2008-07-24  Ian Lance Taylor  <iant@google.com>
3432
3433         PR 5990
3434         * descriptors.cc: New file.
3435         * descriptors.h: New file.
3436         * gold-threads.h (class Hold_optional_lock): New class.
3437         * fileread.cc: Include "descriptors.h".
3438         (File_read::~File_read): Release descriptor rather than closing
3439         it.
3440         (File_read::open) [file]: Call open_descriptor rather than open.
3441         Set is_descriptor_opened_.
3442         (File_read::open) [memory]: Assert that descriptor is not open.
3443         (File_read::reopen_descriptor): New function.
3444         (File_read::release): Release descriptor.
3445         (File_read::do_read): Make non-const.  Reopen descriptor.
3446         (File_read::read): Make non-const.
3447         (File_read::make_view): Reopen descriptor.
3448         (File_read::do_readv): Likewise.
3449         * fileread.h (class File_read): Add is_descriptor_opened_ field.
3450         Update declarations.
3451         * layout.cc: Include "descriptors.h".
3452         (Layout::create_build_id): Use open_descriptor rather than open.
3453         * output.cc: Include "descriptors.h".
3454         (Output_file::open): Use open_descriptor rather than open.
3455         * archive.cc (Archive::const_iterator): Change Archive to be
3456         non-const.
3457         (Archive::begin, Archive::end): Make non-const.
3458         (Archive::count_members): Likewise.
3459         * archive.h (class Archive): Update declarations.
3460         * object.h (Object::read): Make non-const.
3461         * Makefile.am (CCFILES): Add descriptors.cc.
3462         (HFILES): Add descriptors.h.
3463         * Makefile.in: Rebuild.
3464
3465         PR 6716
3466         * gold.h: Always include <clocale>.  Add Solaris workarounds
3467         following code in binutils/sysdep.h.
3468
3469         PR 6048
3470         * ehframe.cc (Eh_frame::add_ehframe_input_section): Check whether
3471         this->eh_frame_hdr_ is NULL before using it.
3472
3473         * dynobj.cc (Versions::Versions): Update comment.
3474
3475         * dynobj.cc (Versions::Versions): If there is an soname, use it as
3476         the base version name.
3477
3478         * stringpool.cc (Stringpool_template::add_with_length): Set key to
3479         array size plus one.
3480         (Stringpool_template::set_string_offsets): Subtract one from key
3481         before using it as an array index.
3482         (Stringpool_template::get_offset_with_length): Likewise.
3483         (Stringpool_template::write_to_buffer): Likewise.
3484         * stringpool.h (Stringpool_template::get_offset_from_key):
3485         Likewise.
3486
3487 2008-07-23  Ian Lance Taylor  <iant@google.com>
3488
3489         PR 6658
3490         * object.h (Merged_symbol_value::value): Do our best to handle a
3491         negative addend.
3492
3493         PR 6647
3494         * script.cc (Version_script_info::get_versions): Don't add empty
3495         version tag to return value.
3496         (Version_script_info::get_symbol_version_helper): Change return
3497         type to bool.  Add pversion parameter.  Change all callers.
3498         (script_register_vers_node): Don't require a non-NULL tag.
3499         * script.h (class Version_script_info): Update declarations.
3500         (Version_script_info::get_symbol_version): Change return type to
3501         bool.  Add version parameter.  Change all callers.
3502         * symtab.cc (Sized_symbol::add_from_relobj): Rework version
3503         handling.  Handle an empty version from a version script.
3504         (Symbol_table::define_special_symbol): Likewise.
3505         * testsuite/ver_test_10.script: New file.
3506         * testsuite/ver_test_10.sh: New file.
3507         * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_10.sh.
3508         (check_DATA): Add ver_test_10.syms.
3509         (ver_test_10.syms, ver_test_10.so): New target.
3510         * testsuite/Makefile.in: Rebuild.
3511
3512 2008-07-23  Simon Baldwin  <simonb@google.com>
3513
3514         * symtab.cc (Symbol_table::sized_write_symbol): Only set st_size
3515         to zero for undefined symbols from dynamic libraries.
3516
3517 2008-07-23  Ian Lance Taylor  <iant@google.com>
3518
3519         * symtab.cc (Symbol_table::resolve): Remove version parameter.
3520         Change all callers.
3521         * symtab.h (class Symbol_table): Update declaration.
3522         * testsuite/ver_test_9.cc: New file.
3523         * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_9.
3524         (ver_test_9_SOURCES, ver_test_9_DEPENDENCIES): Define.
3525         (ver_test_9_LDFLAGS, ver_test_9_LDADD): Define.
3526         (ver_test_9.so, ver_test_9.o): New targets.
3527         * testsuite/Makefile.in: Rebuild.
3528
3529 2008-07-22  Ian Lance Taylor  <iant@google.com>
3530
3531         * options.h (class General_options): Define --check-sections.
3532         * layout.cc (Layout::set_segment_offsets): Handle
3533         --check-sections.
3534
3535         * options.h (class General_options): Define -n/--nmagic and
3536         -N/--omagic.
3537         * options.cc (General_options::finalize): For -n/--nmagic or
3538         -N/--omagic, set -static.
3539         * layout.cc (Layout::attach_allocated_section_to_segment): If
3540         -N/--omagic, don't put read-only and read-write sections in
3541         different segments.
3542         (Layout::find_first_load_seg): If -N/--omagic, don't insist on
3543         finding a read-only segment.
3544         (Layout::set_segment_offsets): If -N/--omagic or -n/--nmagic,
3545         don't set the minimum segment alignment to the common page size,
3546         and don't set the file offset to the address modulo the page size.
3547         * script-sections.cc (Script_sections::create_segments): If
3548         -n/--omagic, don't put read-only and read-write sections in
3549         different segments.
3550
3551         * cref.cc: New file.
3552         * cref.h: New file.
3553         * options.h (class General_options): Add --print-symbol-counts.
3554         * main.cc (main): Issue defined symbol report if requested.
3555         * archive.cc (Archive::interpret_header): Make into a const member
3556         function.
3557         (Archive::add_symbols): Call Input_objects::archive_start and
3558         archive_stop.
3559         (Archive::const_iterator): Define new class.
3560         (Archive::begin, Archive::end): New functions.
3561         (Archive::include_all_members): Rewrite to use iterator.
3562         (Archive::count_members): New function.
3563         * archive.h (class Archive): Update declarations.
3564         (Archive::filename): New function.
3565         * object.cc: Include "cref.h".
3566         (Sized_relobj::Sized_relobj): Initialize defined_count_.
3567         (Sized_relobj::do_get_global_symbol_counts): New function.
3568         (Input_objects::add_object): Add object to cross-referencer.
3569         (Input_objects::archive_start): New function.
3570         (Input_objects::archive_stop): New function.
3571         (Input_objects::print_symbol_counts): New function.
3572         * object.h: Declare Cref and Archive.
3573         (Object::get_global_symbol_counts): New function.
3574         (Object::do_get_global_symbol_counts): New pure virtual function.
3575         (class Sized_relobj): Add defined_count_ field.  Update
3576         declarations.
3577         (class Input_objects): Add cref_ field.  Update constructor.
3578         Update declarations.
3579         * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize symbols_ and
3580         defined_count_.
3581         (Sized_dynobj::do_add_symbols): Allocate symbols_ if printing
3582         symbol counts.
3583         (Sized_dynobj::do_get_global_symbol_counts): New function.
3584         * dynobj.h (class Sized_dynobj): Add fields symbols_ and
3585         defined_count_.  Update declarations.  Define Symbols typedef.
3586         * symtab.cc (Symbol_table::add_from_relobj): Add defined
3587         parameter.  Change all callers.
3588         (Symbol_table::add_from_dynobj): Add sympointers and defined
3589         parameters.  Change all callers.
3590         * symtab.h (class Symbol_table): Update declarations.
3591         * Makefile.am (CCFILES): Add cref.cc.
3592         (HFILES): Add cref.h.
3593         * Makefile.in: Rebuild.
3594
3595 2008-07-22  Simon Baldwin  <simonb@google.com>
3596
3597         * symtab.cc (Symbol_table::sized_write_symbol): Set symbol size
3598         to zero when writing undefined symbols.
3599
3600 2008-07-22  Ian Lance Taylor  <iant@google.com>
3601
3602         * output.cc (Output_section::add_input_section): Don't try to
3603         merge empty merge sections.
3604
3605 2008-07-21  Craig Silverstein  <csilvers@google.com>
3606
3607         * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
3608         Include symbol version in error message.
3609
3610 2008-07-20  Chris Demetriou  <cgd@google.com>
3611
3612         * configure.ac (gold_cv_c_random_seed): New configured variable.
3613         (RANDOM_SEED_CFLAGS): New substituted variable.
3614         * Makefile.am (AM_CFLAGS, AM_CXXFLAGS): Add $(RANDOM_SEED_CFLAGS).
3615         * configure: Rebuild.
3616         * Makefile.in: Likewise.
3617         * testsuite/Makefile.in: Likewise.
3618
3619 2008-07-18  Ian Lance Taylor  <iant@google.com>
3620
3621         * symtab.cc (Symbol_table::add_from_object): Rewrite the case
3622         where we see NAME/NULL and NAME/VERSION  as separate symbols.
3623         * testsuite/ver_test_main.cc (main): Call t4.
3624         (t4, t4_2a): Define.
3625         * testsuite/ver_test_2.cc (t4_2): Define.
3626         * testsuite/ver_test_2.script: Put t4_2a in VER2.
3627         * testsuite/ver_test_4.cc (t4_2a): Define.
3628         * testsuite/ver_test_4.script: Put t4_2a in VER2.
3629         * testsuite/ver_test.h (t4, t4_2, t4_2a): Declare.
3630
3631 2008-07-17  Ian Lance Taylor  <iant@google.com>
3632
3633         * dynobj.cc (Versions::add_def): If we give an error about a
3634         missing version, go ahead and create the version anyhow.
3635
3636 2008-07-10  Ian Lance Taylor  <iant@google.com>
3637
3638         Handle output sections with more than 0x7fffffff bytes.
3639         * object.h (class Relobj): Change map_to_output_ to
3640         output_sections_, and just keep a section pointer.  Change all
3641         uses.  Move comdat group support to Sized_relobj.
3642         (Relobj::is_section_specially_mapped): Remove.
3643         (Relobj::output_section): Remove poff parameter.  Change all
3644         callers.
3645         (Relobj::output_section_offset): New function.
3646         (Relobj::set_section_offset): Rewrite.
3647         (Relobj::map_to_output): Remove.
3648         (Relobj::output_sections): New function.
3649         (Relobj::do_output_section_offset): New pure virtual function.
3650         (Relobj::do_set_section_offset): Likewise.
3651         (class Sized_relobj): Add section_offsets_ field.  Add comdat
3652         group support from Relobj.  Update declarations.
3653         (Sized_relobj::get_output_section_offset): New function.
3654         (Sized_relobj::do_output_section_offset): New function.
3655         (Sized_relobj::do_set_section_offset): New function.
3656         * object.cc (Relobj::output_section_address): Remove.
3657         (Sized_relobj::Sized_relobj): Initialize new fields.
3658         (Sized_relobj::include_section_group): Cast find_kept_object to
3659         Sized_relobj.
3660         (Sized_relobj::include_linkonce_section): Likewise.
3661         (Sized_relobj::do_layout): Use separate arrays for output section
3662         and output offset.
3663         (Sized_relobj::do_count_local_symbols): Change map_to_output to
3664         output_sections.
3665         (Sized_relobj::do_finalize_local_symbols): Change map_to_output to
3666         output_sections and section_offsets.
3667         (Sized_relobj::write_local_symbols): Likewise.
3668         (map_to_kept_section): Compute output address directly.
3669         * reloc.cc (Sized_relobj::do_read_relocs): Change map_to_output to
3670         output_sections and section_offsets.
3671         (Sized_relobj::write_sections): Likewise.
3672         (Sized_relobj::relocate_sections): Likewise.
3673         * symtab.cc (sized_finalize_symbol): Use output_section_offset.
3674         * output.h (class Output_reloc): Update declarations.  Change
3675         u2_.relobj to Sized_relobj*.
3676         (class Output_data_reloc): Change add functions to use
3677         Sized_relobj*.
3678         * output.cc (Output_reloc::Output_reloc): Change relobj to
3679         Sized_relobj*.
3680         (Output_reloc::local_section_offset): Change return type to
3681         Elf_Addr.  Use get_output_section_offset.
3682         (Output_reloc::get_address): Likewise.
3683         (Output_section::is_input_address_mapped): Don't call
3684         is_section_specially_mapped.
3685         (Output_section::output_offset): Likewise.
3686         (Output_section::output_address): Likewise.
3687         (Output_section::starting_output_address): Likewise.
3688         * copy-relocs.cc (Copy_relocs::copy_reloc): Change object
3689         parameter to Sized_relobj*.
3690         (Copy_relocs::need_copy_reloc): Likewise.
3691         (Copy_relocs::save): Likewise.
3692         * copy-relocs.h (class Copy_relocs): Update declarations.
3693         (class Copy_relocs::Copy_reloc_entry): Change constructor to use
3694         Sized_relobj*.  Change relobj_ field to Sized_relobj*.
3695         * target-reloc.h (relocate_for_relocatable): Change
3696         offset_in_output_section type to Elf_Addr.  Change code that uses
3697         it as well.
3698         * layout.cc (Layout::layout): Always set *off.
3699         * mapfile.cc (Mapfile::print_input_section): Use
3700         output_section_offset.
3701         * i386.cc (Target_i386::copy_reloc): Change object parameter to
3702         Sized_relobj*.
3703         * powerpc.cc (Target_powerpc::copy_reloc): Likewise.
3704         * sparc.cc (Target_sparc::copy_reloc): Likewise.
3705         * x86_64.cc (Target_x86_64::copy_reloc): Likewise.
3706
3707 2008-07-03  Ian Lance Taylor  <iant@google.com>
3708
3709         * layout.cc (Layout::include_section): Do not discard unrecognized
3710         SHT_STRTAB sections.
3711
3712 2008-06-30  Craig Silverstein  <csilvers@cs.stanford.edu>
3713
3714         * script.cc (Lex::can_continue_name): Make '?' allowable in
3715         version-script names.
3716         * testsuite/version_script.map: Change glob pattern to use '?'
3717
3718 2008-06-30  Manish Singh  <yosh@gimp.org>
3719
3720         PR 6585
3721         * symtab.cc (Symbol_table::add_undefined_symbols_from_command_line):
3722         Correct typo.
3723
3724 2008-06-30  Ian Lance Taylor  <iant@google.com>
3725
3726         PR 6660
3727         PR 6682
3728         * powerpc.cc (Powerpc_relocate_functions::addr16_ha) [both
3729         versions]: Don't try to read the value in the contents, since we
3730         don't use it.  Use the template endianness when writing.
3731
3732 2008-06-25  Cary Coutant  <ccoutant@google.com>
3733
3734         * fileread.cc (File_read::make_view): Assert on zero-length view.
3735         * object.cc (Sized_relobj::do_read_symbols): Don't try to read
3736         symbol table when there are no symbols to read.
3737
3738 2008-06-23  Craig Silverstein  <csilvers@google.com>
3739
3740         * version.cc (version_string): Bump to 1.7
3741
3742 2008-06-18  Craig Silverstein  <csilvers@google.com>
3743
3744         * powerpc.cc (Powerpc_relocate_functions::addr16_ha): cast
3745         constant 0xFFFF to type Valtype.
3746         (Powerpc_relocate_functions::rel16_ha): Likewise.
3747
3748 2008-06-17  Ian Lance Taylor  <iant@google.com>
3749
3750         * output.h (Output_section::Input_section): Initialize p2align_ to
3751         zero for Output_section_data constructors.
3752         (Output_section::Input_section::addralign): If not an input
3753         section, return the alignment of the Output_section_data.
3754         * testsuite/copy_test.cc: New file.
3755         * testsuite/copy_test_1.cc: New file.
3756         * testsuite/copy_test_2.cc: New file.
3757         * testsuite/Makefile.am (check_PROGRAMS): Add copy_test.
3758         (copy_test_SOURCES, copy_test_DEPENDENCIES): New variables.
3759         (copy_test_LDFLAGS, copy_test_LDADD): New variables.
3760         (copy_test_1_pic.o, copy_test_1.so): New targets.
3761         (copy_test_2_pic.o, copy_test_2.so): New targets.
3762         * testsuite/Makefile.in: Rebuild.
3763
3764         * script-sections.cc (Script_sections::place_orphan): Initialize
3765         local variable exact.
3766
3767 2008-06-13  David Edelsohn  <edelsohn@gnu.org>
3768
3769         * powerpc.cc (Output_data_plt_powerpc::do_write): 8 + 4 = 0xC.
3770
3771 2008-06-12  David Edelsohn  <edelsohn@gnu.org>
3772             David S. Miller  <davem@davemloft.net>
3773
3774         * powerpc.cc: New file.
3775         * Makefile.am (TARGETSOURCES): Add powerpc.cc
3776         (ALL_TARGETOBJS): Add powerpc.$(OBJEXT)
3777         * configure.tgt: Add entries for powerpc-* and powerpc64-*.
3778         * Makefile.in: Rebuild.
3779
3780 2008-06-09  Ian Lance Taylor  <iant@google.com>
3781
3782         * testsuite/relro_test.cc: Include <cstdio>, <cstdlib>, and
3783         <exception>.
3784         (throwing, orig_terminate): New static variables.
3785         (terminate_handler): New static function.
3786         (t2): Set terminate handler.
3787
3788 2008-06-05  Kris Van Hees  <kris.van.hees@oracle.com>
3789
3790         PR 6584
3791         * binary.cc (Binary_to_elf::sized_convert): Fix .data
3792         alignment.
3793
3794 2008-05-30  Cary Coutant  <ccoutant@google.com>
3795
3796         * archive.cc (Archive::include_all_members) Correct to step
3797         over symbol table and extended name table in thin archives.
3798
3799 2008-05-29  Kris Van Hees  <kris.van.hees@oracle.com>
3800
3801         PR 6407
3802         * target-reloc.h (relocate_for_relocatable): Fix new_offset
3803         calculation.
3804
3805 2008-05-28  Caleb Howe  <cshowe@google.com>
3806
3807         * reduced_debug_output.cc: New file.
3808         * reduced_debug_output.h: New file.
3809         * options.h (class General_options): Add --strip-debug-non-line.
3810         * options.cc (General_options::finalize): Add strip_debug_non_line
3811         to the strip heirarchy.
3812         * layout.h (class Layout): Add debug_abbrev_ and debug_info_
3813         fields.
3814         * layout.cc: Include "reduced_debug_output.h".
3815         (Layout::Layout): Initialize new fields.
3816         (line_only_debug_sections): New static array.
3817         (is_lines_only_debug_sections): New static inline function.
3818         (Layout::include_section): Handle --strip-debug-non-line.
3819         (Layout::make_output_section): If --strip-debug-non-line, build
3820         new output sections for .debug_abbrev and .debug_info.
3821         * dwarf_reader.cc (read_unsigned_LEB_128): Move to namespace
3822         gold.  Warn about possible overflow.
3823         (read_signed_LEB_128): Likewise.
3824         * dwarf_reader.h: (read_unsigned_LEB_128): Declare.
3825         (read_signed_LEB_128): Declare.
3826         * Makefile.am (CCFILES): Add reduced_debug_output.cc.
3827         (HFILES): Add reduced_debug_output.h.
3828         * Makefile.in: Rebuild.
3829
3830 2008-05-21  Ian Lance Taylor  <iant@google.com>
3831
3832         * mapfile.cc: New file.
3833         * mapfile.h: New file.
3834         * options.h (class General_options): Add -M/--print-map and -Map.
3835         * options.cc (General_options::finalize): Make -M equivalent to
3836         -Map -.
3837         * main.cc: Include <cstdio> and "mapfile.h".
3838         (main): Open mapfile if requested.
3839         * gold.cc (class Middle_runner): Add mapfile_ field.  Update
3840         constructor.  Change caller.
3841         (queue_initial_tasks): Add mapfile parameter.  Change caller.
3842         (queue_middle_tasks): Likewise.
3843         * gold.h (queue_initial_tasks, queue_middle_tasks): Update
3844         declarations.
3845         * archive.cc: Include "mapfile.h".
3846         (Archive::add_symbols): Add mapfile parameter.  Change all
3847         callers.  Pass mapfile, symbol, and reason to include_member.
3848         (Archive::include_all_members): Add mapfile parameter.  Change all
3849         callers.
3850         (Archive::include_member): Add mapfile, sym, and why parameters.
3851         Change all callers.  Report inclusion to map file.
3852         * archive.h: Include "fileread.h".
3853         (class Archive): Update declarations.
3854         (Archive::file): New const method.
3855         (class Add_archive_symbols): Add mapfile_ field.  Update
3856         constructor.  Change all callers.
3857         * readsyms.h (class Read_symbols): Likewise.
3858         (class Finish_group): Likewise.
3859         (class Read_script): Likewise.
3860         * common.cc: Include "mapfile.h".
3861         (Symbol_table::allocate_commons): Add mapfile parameter.  Change
3862         all callers.
3863         (Symbol_table::do_allocate_commons): Likewise.
3864         (Symbol_table::do_allocate_commons_list): Likewise.  Report common
3865         symbol allocation to mapfile.
3866         * common.h (class Allocate_commons_task): Add mapfile_ field.
3867         Update constructor.  Change all callers.
3868         * symtab.h (class Symbol_table): Update declarations.
3869         * layout.cc: Include "mapfile.h".
3870         (Layout_task_runner::run): Print information to mapfile.
3871         (Layout::create_gold_note): Change Output_data_fixed_space to
3872         Output_data_zero_fill.
3873         (Layout::create_build_id): Likewise.
3874         (Layout::print_to_mapfile): New function.
3875         * layout.h (class Layout_task_runner): Add mapfile_ field.  Update
3876         constructor.  Change caller.
3877         (class Layout): Declare print_to_mapfile.
3878         * output.cc (Output_section::Input_section::print_to_mapfile): New
3879         function.
3880         (Output_section::add_input_section): If producing a map, always
3881         add to input_sections_ list.
3882         (Output_section::do_print_to_mapfile): New function.
3883         (Output_segment::print_sections_to_mapfile): New function.
3884         (Output_segment::print_section_list_to_mapfile): New function.
3885         * output.h: Include "mapfile.h".
3886         (Output_data::print_to_mapfile): New function.
3887         (Output_data::do_print_to_mapfile): New virtual function.
3888         (Output_segment_headers::do_print_to_mapfile): New function.
3889         (Output_file_header::do_print_to_mapfile): New function.
3890         (Output_data_const::do_print_to_mapfile): New function.
3891         (class Output_data_const_buffer): Add map_name_ field.  Update
3892         constructor.  Change all callers.  Add do_print_to_mapfile
3893         function.
3894         (class Output_data_fixed_space): Likewise.
3895         (class Output_data_space): Likewise.
3896         (class Output_data_zero_fill): New class.
3897         (Output_data_strtab::do_print_to_mapfile): New function.
3898         (Output_data_reloc_base::do_print_to_mapfile): New function.
3899         (Output_relocatable_relocs::do_print_to_mapfile): New function.
3900         (Output_data_group::do_print_to_mapfile): New function.
3901         (Output_data_got::do_print_to_mapfile): New function.
3902         (Output_data_dynamic::do_print_to_mapfile): New function.
3903         (Output_symtab_xindex::do_print_to_mapfile): New function.
3904         (class Output_section): Declare do_print_to_mapflie.  Declare
3905         print_to_mapfile in Input_section.
3906         (class Output_segment): Declare new functions.
3907         * object.h (Sized_relobj::symbol_count): New function.
3908         * script-sections.cc
3909         (Output_section_element_dot_assignment::set_section_addresses):
3910         Change Output_data_fixed_space to Output_data_zero_fill.
3911         (Output_data_expression::do_print_to_mapfile): New function.
3912         * script.cc (read_input_script): Add mapfile parameter.  Change
3913         all callers.
3914         * script.h (read_input_script): Update declaration.
3915         * ehframe.h (Eh_frame_hdr::do_print_to_mapfile): New function.
3916         (Eh_frame::do_print_to_mapfile): New function.
3917         * merge.h (Output_merge_data::do_print_to_mapfile): New function.
3918         (Output_merge_string::do_print_to_mapfile): New function.
3919         * i386.cc (Output_data_plt_i386::do_print_to_mapfile): New
3920         function.
3921         * sparc.cc (Output_data_plt_sparc::do_print_to_mapfile): New
3922         function.
3923         * x86_64.cc (Output_data_plt_x86_64::do_print_to_mapfile): New
3924         function.
3925         * Makefile.am (CCFILES): Add mapfile.cc.
3926         (HFILES): Add mapfile.h.
3927         * Makefile.in: Rebuild.
3928
3929 2008-05-19  Ian Lance Taylor  <iant@google.com>
3930
3931         * options.h (class General_options): Add -z relro.
3932         * layout.cc (Layout::Layout): Initialize relro_segment_.
3933         (Layout::add_output_section_data): Return the output section.
3934         (Layout::make_output_section): Rcognize relro sections and mark
3935         them appropriately.
3936         (Layout::attach_allocated_section_to_segment): Put relro sections
3937         in a PT_GNU_RELRO segment.
3938         (Layout::create_initial_dynamic_sections): Mark the .dynamic
3939         section as relro.
3940         (Layout::segment_precedes): Sort PT_GNU_RELRO segments after
3941         PT_TLS segments.
3942         (Layout::linkonce_mapping): Map d.rel.ro.local to
3943         .data.rel.ro.local.
3944         (Layout::output_section_name): Us .data.rel.ro.local for any
3945         section which begins with that.
3946         * layout.h (class Layout): Update add_output_section_data
3947         declaration.  Add relro_segment_ field.
3948         * output.cc (Output_section::Output_section): Initialize is_relro_
3949         and is_relro_local_ fields.
3950         (Output_segment::add_output_section): Group relro sections.
3951         (Output_segment::is_first_section_relro): New function.
3952         (Output_segment::maximum_alignment): If there is a relro section,
3953         align the segment to the common page size.
3954         (Output_segment::set_section_addresses): Track whether we are
3955         looking at relro sections.  If the last section is a relro
3956         section, align to the common page size.
3957         (Output_segment::set_section_list_addresses): Add in_relro
3958         parameter.  Change all callers.  Align to the page size when
3959         moving from relro to non-relro section.
3960         (Output_segment::set_offset): Align memsz of a PT_GNU_RELRO
3961         segment.
3962         * output.h (class Output_section): Add is_relro_ and
3963         is_relro_local_ fields.
3964         (Output_section::is_relro): New function.
3965         (Output_section::set_is_relro): New function.
3966         (Output_section::is_relro_local): New function.
3967         (Output_section::set_is_relro_local): New function.
3968         (class Output_segment): Update declarations.
3969         * i386.cc (Target_i386::got_section): Mark .got section as relro.
3970         * sparc.cc (Target_sparc::got_section): Likewise.
3971         * x86_64.cc (Target_x86_64::got_section): Likewise.
3972         * testsuite/relro_test_main.cc: New file.
3973         * testsuite/relro_test.cc: New file.
3974         * testsuite/Makefile.am (check_PROGRAMS): Add relro_test.
3975         (relro_test_SOURCES, relro_test_DEPENDENCIES): New variables.
3976         (relro_test_LDFLAGS, relro_test_LDADD): New variables.
3977         (relro_test.so, relro_test_pic.o): New targets.
3978         * testsuite/Makefile.in: Rebuild.
3979
3980 2008-05-16  Ian Lance Taylor  <iant@google.com>
3981
3982         * output.cc (Output_segment::add_output_section): Remove front
3983         parameter.
3984         * output.h (class Output_segment): Remove
3985         add_initial_output_section and overloaded add_output_section.
3986         Update declaration of remaining add_output_section.
3987         * layout.cc (Layout::create_interp): Call add_output_section
3988         rather than add_initial_output_section.
3989         (Layout::finish_dynamic_section): Likewise.
3990
3991         * i386.cc (Target_i386::Relocate::relocate_tls): Set dynamic type
3992         for TLS_GOTDESC and TLS_DESC_CALL.  Only optimize TLS_LDO_32 if we
3993         know the dynamic type.
3994         * x86_64.cc (Target_x86_64::Relocate): Add saw_tls_block_reloc_
3995         field.  Initialize it in constructor.
3996         (Target_x86_64::Relocate::relocate_tls): Record that we saw a TLS
3997         block reloc for TLSGD, GOTPC32_TLSDESC, TLSDESC_CALL, and TLSLD.
3998         Only optimize DTPOFF32 and DTPOFF64 if we have seen a TLS block
3999         reloc.
4000
4001         * output.cc (Output_reloc::get_address): Change return type to
4002         Elf_Addr.
4003         * output.h (class Output_reloc): Update get_address declaration.
4004         * x86_64.cc (Output_data_plt_x86_64::do_write): Use 64-bit types
4005         for section addresses.
4006
4007 2008-05-09  Ian Lance Taylor  <iant@google.com>
4008
4009         PR 6493
4010         * gold.cc (gold_nomem): Use return value of write.
4011
4012 2008-05-08  Ian Lance Taylor  <iant@google.com>
4013
4014         * symtab.c (Symbol::init_base_output_data): Add version
4015         parameter.  Change all callers.
4016         (Symbol::init_base_output_segment): Likewise.
4017         (Symbol::init_base_constant): Likewise.
4018         (Symbol::init_base_undefined): Likewise.
4019         (Sized_symbol::init_output_data): Likewise.
4020         (Sized_symbol::init_output_segment): Likewise.
4021         (Sized_symbol::init_constant): Likewise.
4022         (Sized_symbol::init_undefined): Likewise.
4023         (Symbol_table::do_define_in_output_data): If the new symbol has a
4024         version, mark it as the default.
4025         (Symbol_table::do_define_in_output_segment): Likewise.
4026         (Symbol_table::do_define_as_constant): Likewise.
4027         * symtab.h (class Symbol): Update declarations.
4028         (class Sized_symbol): Likewise.
4029         * resolve.cc (Symbol::override_version): New function.
4030         (Symbol::override_base): Call override_version.
4031         (Symbol::override_base_with_special): Likewise.
4032         * testsuite/ver_script_8.script: New file.
4033         * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_8.
4034         (ver_test_8_SOURCES, ver_test_8_DEPENDENCIES): Define.
4035         (ver_test_8_LDFLAGS, ver_test_8_LDADD): Define.
4036         (ver_test_8_1.so, ver_test_8_2.so): New targets.
4037
4038 2008-05-06  Ian Lance Taylor  <iant@google.com>
4039
4040         PR 6049
4041         * options.h (DEFINE_set): Add VARNAME_begin and VARNAME_end
4042         functions.
4043         (class General_options): Remove existing --undefined, and add
4044         --no-undefined instead.  Add new --undefined as synonym for -u.
4045         * archive.cc (Archive::add_symbols): Check whether symbol was
4046         named with -u.
4047         * gold.cc (queue_middle_tasks): Add -u symbols to symbol table.
4048         * symtab.h (class Symbol): Rename CONSTANT to IS_CONSTANT; change
4049         all uses.  Add IS_UNDEFINED.  Update declarations to split
4050         different versions of init_base.  Declare init_base_undefined.
4051         (Symbol::is_defined): Handle IS_UNDEFINED.
4052         (Symbol::is_undefined): Likewise.
4053         (Symbol::is_weak_undefined): Call is_undefined.
4054         (Symbol::is_absolute): Handle IS_CONSTANT.
4055         (class Sized_symbol): Update declarations to split different
4056         versions of init.  Declare init_undefined.
4057         (class Symbol_table): Declare new functions.
4058         * symtab.cc (Symbol::init_base_object): Rename from init_base.
4059         Change all callers.
4060         (Symbol::init_base_output_data): Likewise.
4061         (Symbol::init_base_output_segment): Likewise.
4062         (Symbol::init_base_constant): Likewise.
4063         (Symbol::init_base_undefined): New function.
4064         (Sized_symbol::init_object): Rename from init.  Change all
4065         callers.
4066         (Sized_symbol::init_output_data): Likewise.
4067         (Sized_symbol::init_output_segment): Likewise.
4068         (Sized_symbol::init_constant): Likewise.
4069         (Sized_symbol::init_undefined): New function.
4070         (Symbol_table::add_undefined_symbols_from_command_line): New
4071         function.
4072         (Symbol_table::do_add_undefined_symbols_from_command_line): New
4073         function.
4074         (Symbol::final_value_is_known): Handle IS_UNDEFINED.
4075         (Symbol::output_section): Likewise.
4076         (Symbol::set_output_section): Likewise.
4077         (Symbol_table::sized_finalize_symbol): Likewise.
4078         (Symbol_table::sized_write_globals): Likewise.
4079         * resolve.cc (Symbol_table::should_override): Likewise.
4080         (Symbol::override_base_with_special): Likewise.
4081
4082         * symtab.cc (Symbol_table::add_from_dynobj): If we see a protected
4083         symbol, change it to have default visibility.
4084         * testsuite/protected_1.cc: New file.
4085         * testsuite/protected_2.cc: New file.
4086         * testsuite/protected_3.cc: New file.
4087         * testsuite/protected_main_1.cc: New file.
4088         * testsuite/protected_main_2.cc: New file.
4089         * testsuite/protected_main_3.cc: New file.
4090         * testsuite/Makefile.am (check_PROGRAMS): Add protected_1.
4091         (protected_1_SOURCES, protected_1_DEPENDENCIES): Define.
4092         (protected_1_LDFLAGS, protected_1_LDADD): Define.
4093         (protected_1.so): New target.
4094         (protected_1_pic.o, protected_2_pic.o): New targets.
4095         (protected_3_pic.o): New target.
4096         (check_PROGRAMS): Add protected_2.
4097         (protected_2_SOURCES, protected_2_DEPENDENCIES): Define.
4098         (protected_2_LDFLAGS, protected_2_LDADD): Define.
4099         * testsuite/Makefile.in: Rebuild.
4100
4101         * options.h (DEFINE_var): Add set_user_set_##varname__.
4102         (DEFINE_bool_alias): New macro.
4103         (class General_options): Define -Bstatic using DEFINE_bool_alias
4104         rather than DEFINE_special.  Add --undefined as an alias for -z
4105         defs.
4106         * options.cc (General_options::parse_Bstatic): Remove.
4107
4108         * options.h (class General_options): Add --fatal-warnings.
4109         * main.cc (main): Implement --fatal-warnings.
4110         * errors.h (Errors::warning_count): New function.
4111
4112         * options.h (class General_options): Add -Bsymbolic-functions.
4113         * symtab.h (Symbol::is_preemptible): Check for
4114         -Bsymbolic-functions.
4115
4116 2008-05-05  Ian Lance Taylor  <iant@google.com>
4117
4118         * options.h (DEFINE_bool): For DASH_Z, create the negative option
4119         as noVARNAME rather than no-VARNAME.
4120         (class General_options): Add option -z combreloc.
4121         * output.h (class Output_reloc) [SHT_REL]: Declare compare and
4122         get_address.
4123         (Output_reloc::sort_before) [SHT_REL]: New function.
4124         (Output_reloc::sort_before) [SHT_RELA]: New function.
4125         (class Output_data_reloc_base): Add sort_relocs_ field.  Define
4126         Sort_relocs_comparison.
4127         (Output_data_reloc_base::Output_data_reloc_base): Add sort_relocs
4128         parameter.  Change all callers.
4129         (Output_data_reloc::Output_data_reloc) [both versions]: Add
4130         sort_relocs parameter.  Change all callers.
4131         * output.cc (Output_reloc::get_address): New function, broken out
4132         of write_rel.
4133         (Output_reloc::write_rel): Call it.
4134         (Output_reloc::compare): New function.
4135         (Output_data_reloc_base::do_write): Optionally sort relocs.
4136
4137         * configure.ac: If targ_extra_obj is set, link it in.
4138         * configure.tgt: Initialize all variables.
4139         (x86_64*): Set targ_extra_obj and targ_extra_size.
4140         * configure: Rebuild.
4141
4142         * object.cc (Sized_relobj::include_section_group): Adjust section
4143         indexes read from group data.  Build vector to pass to
4144         layout_group.
4145         * layout.cc (Layout::layout_group): Add flags and shndxes
4146         parameters.  Remove contents parameter.  Change caller.  Update
4147         explicit instantiations.
4148         * layout.h (class Layout): Update layout_group declaration.
4149         * output.cc (Output_data_group::Output_data_group): Add flags and
4150         input_shndxes parameters.  Remove contents parameter.  Change
4151         caller.
4152         (Output_data_group::do_write): Change input_sections_ to
4153         input_shndxes_.
4154         * output.h (class Output_data_group): Update constructor
4155         declaration.  Rename input_sections_ to input_shndxes_.
4156         * testsuite/many_sections_test.cc: Add template.
4157
4158 2008-04-30  Cary Coutant  <ccoutant@google.com>
4159
4160         * target-reloc.h (relocate_section): Fix dead-pointer bug.
4161
4162         * layout.cc (Layout::include_section): Refactored check for debug
4163         info section.
4164         (Layout::add_comdat): Add new parameters.  Change type
4165         of signature parameter.  Add object and shndx to signatures table.
4166         (Layout::find_kept_object): New function.
4167         * layout.h: Include <cstring>.
4168         (Layout::is_debug_info_section): New function.
4169         (Layout::add_comdat): Add new parameters.
4170         (Layout::find_kept_object): New function.
4171         (Layout::Kept_section): New struct.
4172         (Layout::Signatures): Change type of map range.
4173         * object.cc (Relobj::output_section_address): New function.
4174         (Sized_relobj::include_section_group): Add new parameters.  Change
4175         calls to Layout::add_comdat.  Change to build table of kept comdat
4176         groups and table mapping discarded sections to kept sections.
4177         (Sized_relobj::include_linkonce_section): Likewise.  Add new parameter.
4178         (Sized_relobj::do_layout): Change calls to include_section_group and
4179         include_linkonce_section.
4180         (Sized_relobj::do_finalize_local_symbols): Do not set local symbol
4181         value to zero when section is discarded.
4182         (Sized_relobj::map_to_kept_section): New function.
4183         * object.h (Relobj::output_section_address): New function.
4184         (Relobj::Comdat_group): New type.
4185         (Relobj::find_comdat_group): New function.
4186         (Relobj::Comdat_group_table): New type.
4187         (Relobj::Kept_comdat_section): New type.
4188         (Relobj::Kept_comdat_section_table): New type.
4189         (Relobj::add_comdat_group): New function.
4190         (Relobj::set_kept_comdat_section): New function.
4191         (Relobj::get_kept_comdat_section): New function.
4192         (Relobj::comdat_groups_): New field.
4193         (Relobj::kept_comdat_sections_): New field.
4194         (Symbol_value::input_value): Update comment.
4195         (Sized_relobj::map_to_kept_section) New function.
4196         (Sized_relobj::include_linkonce_section): Add new parameter.
4197         * target-reloc.h (Comdat_behavior): New type.
4198         (get_comdat_behavior): New function.
4199         (relocate_section): Add code to map a discarded section to the
4200         corresponding kept section when applying a relocation.
4201
4202 2008-04-30  Craig Silverstein  <csilvers@google.com>
4203
4204         * dwarf_reader.cc (next_generation_count): New static var.
4205         (Addr2line_cache_entry): New struct.
4206         (addr2line_cache): New static var.
4207         (Dwarf_line_info::one_addr2line): Added caching.
4208         (Dwarf_line_info::clear_addr2line_cache): New function.
4209         * dwarf_reader.h (Dwarf_line_info::one_addr2line): Add
4210         cache-size parameter.
4211         (Dwarf_line_info::one_addr2line_cache): New function.
4212         * symtab.cc (Symbol_table::detect_odr_violations): Pass
4213         new cache-size argument to one_addr2line(), and clear cache.
4214
4215 2008-04-28  Cary Coutant  <ccoutant@google.com>
4216
4217         * i386.cc (Relocate::relocate): Fix typos for R_386_PC16 and
4218         R_386_PC8 relocations.
4219
4220 2008-04-23  Ian Lance Taylor  <iant@google.com>
4221
4222         * object.cc (Sized_relobj::include_section_group): Check for
4223         invalid section group.
4224
4225         * object.cc (make_elf_object): Correct test for 64-bit ELF file
4226         header size.
4227
4228         * readsyms.cc (Read_symbols::do_read_symbols): Use get_view rather
4229         than read for file header.
4230         * archive.cc (Archive::include_member): Likewise.
4231
4232 2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
4233
4234         * aclocal.m4: Regenerate.
4235         * configure: Regenerate.
4236
4237 2008-04-19  Ian Lance Taylor  <iant@google.com>
4238
4239         * version.cc (version_string): Bump to 1.6.
4240
4241         * testsuite/Makefile.am (many_sections_r_test): New target.
4242         (many_sections_r_test_SOURCES): Remove.
4243         (many_sections_r_test_DEPENDENCIES): Remove.
4244         (many_sections_r_test_LDFLAGS): Remove.
4245         (many_sections_r_test_LDADD): Remove.
4246
4247         * object.cc (Sized_relobj::do_add_symbols): Always pass
4248         local_symbol_count_ to add_from_relobj.
4249
4250         * testsuite/Makefile.am (many_sections_check.h): Only check one in
4251         every thousand variables.
4252         * testsuite/Makefile.in: Rebuild.
4253
4254         * object.cc (Xindex::initialize_symtab_xindex): New function.
4255         (Xindex::read_symtab_xindex): New function.
4256         (Xindex::sym_xindex_to_shndx): New function.
4257         (Sized_relobj::find_symtab): Pick up SHT_SYMTAB_SHNDX section if
4258         available.
4259         (Sized_relobj::do_initialize_xindex): New function.
4260         (Sized_relobj::do_read_symbols): Adjust section links.
4261         (Sized_relobj::symbol_section_and_value): Add is_ordinary
4262         parameter.  Change all callers.
4263         (Sized_relobj::include_section_group): Adjust section links and
4264         symbol section indexes.
4265         (Sized_relobj::do_layout): Adjust section links.
4266         (Sized_relobj::do_count_local_symbols): Adjust section links and
4267         symbol section indexes.
4268         (Sized_relobj::do_finalize_local_symbols): Distinguish between
4269         ordinary and special symbols.
4270         (Sized_relobj::write_local_symbols): Add symtab_xindex and
4271         dynsym_xindex parameters.  Change all callers.  Adjust section
4272         links.  Use SHN_XINDEX when needed.
4273         (Sized_relobj::get_symbol_location_info): Adjust section links.
4274         Don't get fooled by special symbols.
4275         * object.h (class Xindex): Define.
4276         (class Object): Add xindex_ parameter.  Declare virtual functoin
4277         do_initialize_xindex.
4278         (Object::adjust_sym_shndx): New function.
4279         (Object::set_xindex): New protected function.
4280         (class Symbol_value): Add is_ordinary_shndx_ field.
4281         (Symbol_value::Symbol_value): Initialize is_ordinary_shndx_.
4282         (Symbol_value::value): Assert ordinary section.
4283         (Symbol_value::initialize_input_to_output_map): Likewise.
4284         (Symbol_value::set_input_shndx): Add is_ordinary parameter.
4285         Change all callers.
4286         (Symbol_value::input_shndx): Add is_ordinary parameter.  Change
4287         all callers.
4288         (class Sized_relobj): Update declarations.
4289         (Sized_relobj::local_symbol_input_shndx): Add is_ordinary
4290         parameter.  Change all callers.
4291         (Sized_relobj::adjust_shndx): New function.
4292         * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize dynsym_shndx_
4293         field.
4294         (Sized_dynobj::find_dynsym_sections): Remove pdynsym_shndx
4295         parameter.  Change all callers.  Pick up SHT_DYNSYM_SHNDX section
4296         for SHT_DYNSYM section if available.  Set dynsym_shndx_ field.
4297         (Sized_dynobj::read_dynsym_section): Adjust section links.
4298         (Sized_dynobj::read_dynamic): Likewise.
4299         (Sized_dynobj::do_read_symbols): Use dynsym_shndx_ field.  Adjust
4300         section links.
4301         (Sized_dynobj::do_initialize_xindex): New function.
4302         * dynobj.h (class Sized_dynobj): Add dynsym_shndx_ field.  Declare
4303         do_initialize_xindex.
4304         (Sized_dynobj::adjust_shndx): New function.
4305         * layout.cc (Layout::Layout): Initialize symtab_xindex_ and
4306         dynsym_xindex_ fields.
4307         (Layout::finalize): Add a call to set_section_indexes before
4308         creating the symtab sections.
4309         (Layout::set_section_indexes): Don't do anything if the section
4310         already has a section index.
4311         (Layout::create_symtab_sections): Add shnum parameter.  Change
4312         caller.  Create .symtab_shndx section if needed.
4313         (Layout::create_shdrs): Add shstrtab_section parameter.  Change
4314         caller.
4315         (Layout::allocated_output_section_count): New function.
4316         (Layout::create_dynamic_symtab): Create .dynsym_shndx section if
4317         needed.
4318         * layout.h (class Layout): Add symtab_xindex_ and dynsym_xindex_
4319         fields.  Update declarations.
4320         (Layout::symtab_xindex): New function.
4321         (Layout::dynsym_xindex): New function.
4322         (class Write_symbols_task): Add layout_ field.
4323         (Write_symbols_task::Write_symbols_task): Add layout parameter.
4324         Change caller.
4325         * output.cc (Output_section_headers::Output_section_headers): Add
4326         shstrtab_section parameter.  Change all callers.
4327         (Output_section_headers::do_sized_write): Store overflow values
4328         for section count and section string table section index in
4329         section header zero.
4330         (Output_file_header::do_sized_write): Check for overflow of
4331         section count and section string table section index.
4332         (Output_symtab_xindex::do_write): New function.
4333         (Output_symtab_xindex::endian_do_write): New function.
4334         * output.h (class Output_section_headers): Add shstrtab_section_.
4335         Update declarations.
4336         (class Output_symtab_xindex): Define.
4337         (Output_section::has_out_shndx): New function.
4338         * symtab.cc (Symbol::init_fields): Initialize is_ordinary_shndx_
4339         field.
4340         (Symbol::init_base): Add st_shndx and is_ordinary parameters.
4341         Change all callers.
4342         (Sized_symbol::init): Likewise.
4343         (Symbol::output_section): Check for ordinary symbol.
4344         (Symbol_table::add_from_object): Remove orig_sym parameter.  Add
4345         st_shndx, is_ordinary, and orig_st_shndx parameters.  Change all
4346         callers.
4347         (Symbol_table::add_from_relobj): Add symndx_offset parameter.
4348         Change all callers.  Simplify handling of symbols from sections
4349         not included in the link.
4350         (Symbol_table::add_from_dynobj): Handle ordinary symbol
4351         distinction.
4352         (Weak_alias_sorter::operator()): Assert that symbols are
4353         ordinary.
4354         (Symbol_table::sized_finalize_symbol): Handle ordinary symbol
4355         distinction.
4356         (Symbol_table::write_globals): Add symtab_xindex and dynsym_xindex
4357         parameters.  Change all callers.
4358         (Symbol_table::sized_write_globals): Likewise.  Handle ordinary
4359         symbol distinction.  Use SHN_XINDEX when needed.
4360         (Symbol_table::write_section_symbol): Add symtab_xindex
4361         parameter.  Change all callers.
4362         (Symbol_table::sized_write_section_symbol): Likewise.  Use
4363         SHN_XINDEX when needed.
4364         * symtab.h (class Symbol): Add is_ordinary_shndx_ field.  Update
4365         declarations.
4366         (Symbol::shndx): Add is_ordinary parameter.  Change all callers.
4367         (Symbol::is_defined): Check is_ordinary.
4368         (Symbol::is_undefined, Symbol::is_weak_undefined): Likewise.
4369         (Symbol::is_absolute, Symbol::is_common): Likewise.
4370         (class Sized_symbol): Update declarations.
4371         (class Symbol_table): Update declarations.
4372         * resolve.cc (Symbol::override_base): Add st_shndx and is_ordinary
4373         parameters.  Change all callers.
4374         (Sized_symbol::override): Likewise.
4375         (Symbol_table::override): Likewise.
4376         (symbol_to_bits): Add is_ordinary parameter.  Change all callers.
4377         (Symbol_table::resolve): Remove orig_sym parameter.  Add st_shndx,
4378         is_ordinary, and orig_st_shndx parameters.  Change all callers.
4379         * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Require symbol
4380         to be in an ordinary section.
4381         * dwarf_reader.cc (Sized_dwarf_line_info::symbol_section): Add
4382         object and is_ordinary parameters.  Change all callers.
4383         (Sized_dwarf_line_info::read_relocs): Add object parameter.
4384         Change all callers.  Don't add undefined or non-ordinary symbols
4385         to reloc_map_.
4386         (Sized_dwarf_line_info::read_line_mappings): Add object parameter.
4387         Change all callers.
4388         * dwarf_reader.h (class Sized_dwarf_line_info): Update
4389         declarations.
4390         * ehframe.cc (Eh_frame::read_fde): Check for ordinary symbol.
4391         * reloc.cc (Sized_relobj::do_read_relocs): Adjust section links.
4392         (Sized_relobj::relocate_sections): Likewise.
4393         * target-reloc.h (scan_relocs): Adjust section symbol index.
4394         (scan_relocatable_relocs): Likewise.
4395         * i386.cc (Scan::local): Check for ordinary symbols.
4396         * sparc.cc (Scan::local): Likewise.
4397         * x86_64.cc (Scan::local): Likewise.
4398         * testsuite/binary_unittest.cc (Sized_binary_test): Update calls
4399         to symbol_section_and_value.
4400         * testsuite/many_sections_test.cc: New file.
4401         * testsuite/Makefile.am (BUILT_SOURCES): Define.
4402         (check_PROGRAMS): Add many_sections_test.
4403         (many_sections_test_SOURCES): Define.
4404         (many_sections_test_DEPENDENCIES): Define.
4405         (many_sections_test_LDFLAGS): Define.
4406         (BUILT_SOURCES): Add many_sections_define.h.
4407         (many_sections_define.h): New target.
4408         (BUILT_SOURCES): Add many_sections_check.h.
4409         (many_sections_check.h): New target.
4410         (check_PROGRAMS): Add many_sections_r_test.
4411         (many_sections_r_test_SOURCES): Define.
4412         (many_sections_r_test_DEPENDENCIES): Define.
4413         (many_sections_r_test_LDFLAGS): Define.
4414         (many_sections_r_test_LDADD): Define.
4415         (many_sections_r_test.o): New target.
4416         * testsuite/Makefile.in: Rebuild.
4417
4418 2008-04-17  Cary Coutant  <ccoutant@google.com>
4419
4420         * errors.cc (Errors::info): New function.
4421         (gold_info): New function.
4422         * errors.h (Errors::info): New function.
4423         * gold.h (gold_info): New function.
4424         * object.cc (Input_objects::add_object): Print trace output.
4425         * options.cc (options::parse_set): New function.
4426         (General_options::parse_wrap): Deleted.
4427         (General_options::General_options): Deleted initializer.
4428         * options.h (options::String_set): New typedef.
4429         (options::parse_set): New function.
4430         (DEFINE_set): New macro.
4431         (General_options::wrap): Changed to use DEFINE_set. Changed
4432         callers of any_wrap_symbols and is_wrap_symbol.
4433         (General_options::trace, General_options::trace_symbol):
4434         New options.
4435         (General_options::any_wrap_symbols, General_options::is_wrap_symbol)
4436         (General_options::wrap_symbols_): Deleted.
4437         * symtab.cc (Symbol_table::add_from_object): Print trace output.
4438
4439 2008-04-17  David S. Miller  <davem@davemloft.net>
4440
4441         * options.cc (General_options::parse_V): New function.
4442         * options.h: Add entries for -V and -Qy.
4443
4444 2008-04-17  Ian Lance Taylor  <iant@google.com>
4445
4446         * common.cc (Symbol_table::allocate_commons): Remove options
4447         parameter.  Change caller.
4448         (Symbol_table::do_allocate_commons): Remove options parameter.
4449         Change caller.  Just call do_allocate_commons_list twice.
4450         (Symbol_table::do_allocate_commons_list): New function, broken out
4451         of do_allocate_commons.
4452         * common.h (class Allocate_commons_task): Remove options_ field.
4453         Update constructor.
4454         * symtab.cc (Symbol_table::Symbol_table): Initialize
4455         tls_commons_.
4456         (Symbol_table::add_from_object): Put TLS common symbols on
4457         tls_commons_ list.
4458         (Symbol_table::sized_finalize_symbol): Handle STT_TLS symbols
4459         which are IN_OUTPUT_DATA.
4460         * symtab.h (class Symbol_table): Add tls_commons_ field.  Update
4461         allocate_commons and do_allocate_commons declarations.  Declare
4462         do_allocate_commons_list.
4463         * gold.cc (queue_middle_tasks): Update creation of
4464         Allocate_commons_task to not pass options.
4465         * testsuite/Makefile.am (INCLUDES): Add -I.. .
4466         (TLS_TEST_C_FLAGS): New variable.
4467         (tls_test_c_pic.o): New target.
4468         (tls_test_shared.so): Link in tls_test_c_pic.o.
4469         (tls_test_c_pic_ie.o): New target.
4470         (tls_test_ie_shared.so): Link in tls_test_c_pic_ie.o.
4471         (tls_test_DEPENDENCIES, tls_test_LDADD): Add tls_test_c.o.
4472         (tls_test_c.o): New target.
4473         (tls_pic_test_DEPENDENCIES): Add tls_test_c_pic.o.
4474         (tls_pic_test_LDADD): Likewise.
4475         (tls_shared_gd_to_ie_test_DEPENDENCIES): Add tls_test_c_pic.o.
4476         (tls_shared_gd_to_ie_test_LDADD): Likewise.
4477         (tls_test_c_gnu2.o): New target.
4478         (tls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): Add
4479         tls_test_c_gnu2.o.
4480         (tls_shared_gnu2_gd_to_ie_test_LDADD): Likewise.
4481         (tls_test_gnu2_shared.so): Link in tls_test_c_gnu2.o.
4482         (tls_test_shared_nonpic.so): Link in tls_test_c.o.
4483         * testsuite/tls_test.cc: Include "config.h".
4484         (t_last): Call t11_last.
4485         * testsuite/tls_test.h (t11, t11_last): Declare.
4486         * testsuite/tls_test_c.c: New file.
4487         * testsuite/tls_test_main.cc (thread_routine): Call t11.
4488         * configure.ac: Check for OpenMP support.
4489         * configure, config.in, Makefile.in: Rebuild.
4490         * testsuite/Makefile.in: Rebuild.
4491
4492 2008-04-16  Cary Coutant  <ccoutant@google.com>
4493
4494         * i386.cc (Target_i386::define_tls_base_symbol): New function.
4495         (Target_i386::tls_base_symbol_defined_): New field.
4496         (Target_i386::Scan::local): Define _TLS_MODULE_BASE_ symbol.
4497         (Target_i386::Scan::global): Likewise.
4498         * symtab.cc (sized_finalize_symbol): Add check for TLS symbol.
4499         * x86_64.cc (Target_x86_64::define_tls_base_symbol): New function.
4500         (Target_x86_64::tls_base_symbol_defined_): New field.
4501         (Target_x86_64::Scan::local): Define _TLS_MODULE_BASE_ symbol.
4502         (Target_x86_64::Scan::global): Likewise.
4503
4504 2008-04-16  Cary Coutant  <ccoutant@google.com>
4505
4506         * symtab.h (Symbol::is_strong_undefined): Removed unused function.
4507         (Symbol::needs_plt_entry): Allow weak undefined symbols.
4508         (Symbol::needs_dynamic_reloc): Allow weak undefined symbols when
4509         building shared libraries.
4510         * testsuite/Makefile.am (weak_undef_nonpic_test): New target.
4511         (weak_undef_file1_nonpic.o, weak_undef_file2_nonpic.o)
4512         (weak_undef_lib_nonpic.so, alt/weak_undef_lib_nonpic.so): New targets.
4513         * testsuite/Makefile.in: Rebuild.
4514         * testsuite/weak_undef.h: New file.
4515         * testsuite/weak_undef_file1.cc: Add extra test cases.
4516         * testsuite/weak_undef_file2.cc: Likewise.
4517         * testsuite/weak_undef_test.cc: Likewise.
4518
4519 2008-04-16  David S. Miller  <davem@davemloft.net>
4520
4521         * sparc.cc (Target_sparc::Scan): Change from struct to class.
4522         Add issued_non_pic_error_ field.  Declare check_non_pic.
4523         (Target_sparc::Scan::check_non_pic): New function.
4524         (Target_sparc::Scan::local): Call check_non_pic as appropriate.
4525         (Target_sparc::Scan::global): Likewise.
4526
4527         * configure.ac (FN_PTRS_IN_SO_WITHOUT_PIC): Add sparc64.
4528         * configure: Rebuild.
4529
4530         * options.h (DEFINE_enable): New macro.
4531         (new_dtags): New enable option.
4532         (initfirst, interpose, loadfltr, nodefaultlib,
4533         nodelete, nodlopen, nodump): New -z options.
4534         * layout.cc (Layout:finish_dynamic_section): If new
4535         dtags enabled, emit DT_RUNPATH.  Also, emit a
4536         DT_FLAGS_1 containing any specified -z flags.
4537
4538 2008-04-16  Ian Lance Taylor  <iant@google.com>
4539
4540         * copy-relocs.cc: New file.
4541         * copy-relocs.h: New file.
4542         * reloc.cc: Remove Copy_relocs code.
4543         * reloc.h: Likewise.
4544         * reloc-types.h (struct Reloc_types) [both versions]: Add
4545         get_reloc_addend_noerror.
4546         * output.h (class Output_data_reloc<elfcpp::SHT_REL>): Add
4547         variants of add_global which take an addend which must be zero.
4548         * i386.cc: Include "copy-relocs.h".
4549         (class Target_i386): Change type of copy_relocs_ to variable,
4550         update initializer.
4551         (Target_i386::copy_reloc): Rewrite to pass to Copy_relocs class.
4552         Change all callers.
4553         (Target_i386::do_finalize_sections): Change handling of
4554         copy_relocs_.
4555         * sparc.cc: Include "copy-relocs.h".
4556         (class Target_sparc): Change type of copy_relocs_ to variable,
4557         update initializer.
4558         (Target_sparc::copy_reloc): Rewrite to pass to Copy_relocs class.
4559         Change all callers.
4560         (Target_sparc::do_finalize_sections): Change handling of
4561         copy_relocs_.
4562         * x86_64.cc: Include "copy-relocs.h".
4563         (class Target_x86_64): Change type of copy_relocs_ to variable,
4564         update initializer.
4565         (Target_x86_64::copy_reloc): Rewrite to pass to Copy_relocs
4566         class.  Change all callers.
4567         (Target_x86_64::do_finalize_sections): Change handling of
4568         copy_relocs_.
4569         * Makefile.am (CCFILES): Add copy-relocs.cc.
4570         (HFILES): Add copy-relocs.h.
4571
4572         * Makefile.in, aclocal.m4, testsuite/Makefile.in: Rebuild.
4573
4574         * testsuite/script_test_4.sh: Permit leading zeroes.
4575
4576 2008-04-15  Ian Lance Taylor  <iant@google.com>
4577
4578         * script-sections.cc (Script_sections::create_segments): Use
4579         header_size_adjustment even when there is enough room for the
4580         headers.
4581         * testsuite/script_test_4.sh: New file.
4582         * testsuite/script_test_4.t: New file.
4583         * testsuite/Makefile.am (check_SCRIPTS): Add script_test_4.sh.
4584         (check_DATA): Add script_test_4.stdout.
4585         (MOSTLYCLEANFILES): Likewise.
4586         (script_test_4): New target.
4587         (script_test_4.stdout): New target.
4588         * testsuite/Makefile.in: Rebuild.
4589
4590         * sparc.cc: Add definitions for Output_data_plt_sparc class
4591         constants.
4592
4593 2008-04-14  David S. Miller  <davem@davemloft.net>
4594
4595         * sparc.cc: New file.
4596         * Makefile.am (TARGETSOURCES): Add sparc.cc
4597         (ALL_TARGETOBJS): Add sparc.$(OBJEXT)
4598         * configure.tgt: Document targ_extra_size and
4599         targ_extra_big_endian.  Add entries for sparc-* and
4600         sparc64-*.
4601         * configure.ac: Handle targ_extra_size and
4602         targ_extra_big_endian.
4603         * Makefile.in: Rebuild.
4604         * configure: Likewise.
4605         * po/POTFILES.in: Likewise.
4606         * po/gold.pot: Likewise.
4607
4608 2008-04-14  Ian Lance Taylor  <iant@google.com>
4609
4610         * layout.cc (Layout::Layout): Initialize sections_are_attached_.
4611         (Layout::get_output_section): Ignore SHF_WRITE and SHF_EXECINSTR
4612         in the name/type/flags to section mapping.  Don't call
4613         allocate_output_section.
4614         (Layout::choose_output_section): Change parameter from adjust_name
4615         to is_input_section.  Don't permit input sections after sections
4616         are attached to segments.  Don't call allocate_output_section.
4617         (Layout::layout_eh_frame): Call update_flags_for_input_section,
4618         not write_enable_output_section.
4619         (Layout::make_output_section): Don't push to
4620         unattached_section_list_ nor call attach_to_segment.  Call
4621         attach_section_to_segment if sections are attached.
4622         (Layout::attach_sections_to_segments): New function.
4623         (Layout::attach_section_to_segment): New function.
4624         (Layout::attach_allocated_section_to_segment): Rename from
4625         attach_to_segment.  Remove flags parameter.
4626         (Layout::allocate_output_section): Remove function.
4627         (Layout::write_enable_output_section): Remove function.
4628         * layout.h (class Layout): Update for above changes.  Add new
4629         field sections_are_attached_.
4630         * output.h (Output_section::update_flags_for_input_section): New
4631         function.
4632         * output.cc (Output_section::add_input_section): Call
4633         update_flags_for_input_section.
4634         * gold.cc (queue_middle_tasks): Call attach_sections_to_segments.
4635
4636 2008-04-11  Cary Coutant  <ccoutant@google.com>
4637
4638         * i386.cc (Target_i386::got_mod_index_entry): Restore code previously
4639         thought unnecessary.
4640         * x86_64.cc (Target_x86_64::got_mod_index_entry): Likewise.
4641
4642 2008-04-11  Ian Lance Taylor  <iant@google.com>
4643
4644         * output.h (class Output_section_data): Remove inline definition
4645         of set_addralign.
4646         * output.cc (Output_section_data::set_addralign): New function.
4647
4648 2008-04-11  Cary Coutant  <ccoutant@google.com>
4649
4650         Add support for TLS descriptors for i386 and x86_64.
4651         * i386.cc (Target_i386::Relocate::tls_desc_gd_to_ie): New function.
4652         (Target_i386::Relocate::tls_desc_gd_to_le): New function.
4653         (Target_i386::Got_type): Add GOT_TYPE_TLS_NOFFSET and
4654         GOT_TYPE_TLS_DESC.
4655         (Target_i386::got_mod_index_entry): Remove unnecessary code.
4656         (Target_i386::Scan::local): Implement R_386_TLS_GOTDESC and
4657         R_386_TLS_DESC_CALL relocations.  Fix problem with initial-exec
4658         relocations.
4659         (Target_i386::Scan::global): Fix problem with GD-to-IE relaxation.
4660         Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations;
4661         Fix problem with initial-exec relocations.
4662         (Target_i386::Relocate::relocate_tls): Likewise.
4663         (Target_i386::Relocate::tls_gd_to_ie): Fix problem with GD-to-IE
4664         relaxation.
4665         * output.cc (Output_data_dynamic::Dynamic_entry::write): Add
4666         support for section-plus-offset dynamic table entries.
4667         * output.h (Output_data_dynamic::add_section_plus_offset): New function.
4668         (Output_data_dynamic::Dynamic_entry): Add support for
4669         section-plus-offset dynamic table entries.
4670         (Output_data_dynamic::Classification): Likewise.
4671         (Output_data_dynamic::classification_): Renamed offset_.
4672         * x86_64.cc (Target_x86_64::Relocate::tls_desc_gd_to_ie): New function.
4673         (Target_x86_64::Relocate::tls_desc_gd_to_le): New function.
4674         (Target_x86_64::make_plt_section): New function.
4675         (Target_x86_64::reserve_tlsdesc_entries): New function.
4676         (Output_data_plt_x86_64::Output_data_plt_x86_64): Add new parameter.
4677         (Output_data_plt_x86_64::reserve_tlsdesc_entry): New function.
4678         (Output_data_plt_x86_64::has_tlsdesc_entry): New function.
4679         (Output_data_plt_x86_64::get_tlsdesc_got_offset): New function.
4680         (Output_data_plt_x86_64::get_tlsdesc_plt_offset): New function.
4681         (Output_data_plt_x86_64::tlsdesc_plt_entry): New field.
4682         (Output_data_plt_x86_64::set_final_data_size): Move out of line;
4683         add extra PLT entry for TLS descriptors.
4684         (Output_data_plt_x86_64::got_): New field.
4685         (Output_data_plt_x86_64::tlsdesc_got_offset_): New field.
4686         (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize new
4687         fields.
4688         (Output_data_plt_x86_64::do_write): Write extra PLT entry for TLS
4689         descriptors.
4690         (Target_x86_64::make_plt_entry): Factor out make_plt_section.
4691         (Target_x86_64::got_mod_index_entry): Remove unnecessary code.
4692         (Target_x86_64::Scan::local): Implement R_386_TLS_GOTDESC and
4693         R_386_TLS_DESC_CALL relocations.
4694         (Target_x86_64::Scan::global): Likewise.
4695         (Target_x86_64::do_finalize_sections): Add dynamic table entries
4696         for TLS descriptors.
4697         (Relocate::relocate_tls): Fix problem with GD-to-IE relaxation.
4698         Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations.
4699         (Target_x86_64::Relocate::tls_gd_to_ie): Fix problem with
4700         GD-to-IE relaxation.
4701         * configure.ac: Export new conditional variables TLS_GNU2_DIALECT
4702         and TLS_DESCRIPTORS.
4703         * Makefile.in: Rebuild.
4704         * configure: Rebuild.
4705         * testsuite/Makefile.am (tls_shared_gd_to_ie_test): New target.
4706         (tls_test_shared2.so): New target.
4707         (tls_shared_gd_to_ie_test_SOURCES): New variable.
4708         (tls_shared_gd_to_ie_test_DEPENDENCIES): New variable.
4709         (tls_shared_gd_to_ie_test_LDFLAGS): New variable.
4710         (tls_shared_gd_to_ie_test_LDADD): New variable.
4711         (tls_shared_gnu2_gd_to_ie_test): New target.
4712         (tls_test_gnu2.o, tls_test_file2_gnu2.o, tls_test_gnu2_shared2.so):
4713         New targets.
4714         (tls_shared_gnu2_gd_to_ie_test_SOURCES): New variable.
4715         (ls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): New variable.
4716         (tls_shared_gnu2_gd_to_ie_test_LDFLAGS): New variable.
4717         (tls_shared_gnu2_gd_to_ie_test_LDADD): New variable.
4718         (tls_shared_gnu2_test): New target.
4719         (tls_test_gnu2_shared.so): New target.
4720         (tls_shared_gnu2_test_SOURCES): New variable.
4721         (tls_shared_gnu2_test_DEPENDENCIES): New variable.
4722         (tls_shared_gnu2_test_LDFLAGS): New variable.
4723         (tls_shared_gnu2_test_LDADD): New variable.
4724         * testsuite/Makefile.in: Rebuild.
4725         * testsuite/Makefile.
4726
4727 2008-04-11  Ian Lance Taylor  <iant@google.com>
4728
4729         * testsuite/Makefile.am (justsyms_2r.o): Add dependency on
4730         justsyms.t.
4731         * testsuite/Makefile.in: Rebuild.
4732
4733         * testsuite/script_test_2a.cc (script_test_string_a): Make 8 bytes
4734         long.
4735         * testsuite/script_test_2.cc (main): Adjust test.
4736
4737 2008-04-11  David S. Miller  <davem@davemloft.net>
4738             Ian Lance Taylor  <iant@google.com>
4739
4740         * options.h (General_options): Add entries for '-Y' and
4741         '-relax'.
4742         * options.cc (General_options:finalize): If -Y was used, add those
4743         entries to the library path instead of the default "/lib" and
4744         "/usr/lib".
4745
4746 2008-04-11  David S. Miller  <davem@davemloft.net>
4747
4748         * testsuite/justsyms.t: Start at 0x100.
4749         * testsuite/justsyms_1.cc: Adjust justsyms_string assertion.
4750         * testsuite/script_test_2b.cc (script_test_string_b): Make 8 bytes
4751         long.
4752         * testsuite/script_test_2.cc: Adjust string and section length
4753         checks.
4754
4755 2008-04-09  Ian Lance Taylor  <iant@google.com>
4756
4757         PR gold/5996
4758         * script-sections.cc (Sections_element::allocate_to_segment): Add
4759         orphan parameter.
4760         (Output_section_definition::allocate_to_segment): Likewise.
4761         (Orphan_output_section::allocate_to_segment): Likewise.
4762         (Script_sections::attach_sections_using_phdrs_clause): Don't
4763         propagate non-PT_LOAD segments to orphan sections.
4764         * testsuite/Makefile.am (script_test_3.stdout): Generate using
4765         readelf rather than objdump.
4766         * testsuite/script_test_3.sh: Adjust accordingly.  Test that
4767         .interp section and PT_INTERP segment are the same size.
4768         * testsuite/Makefile.in: Rebuild.
4769
4770         * symtab.cc (Symbol_table::add_from_dynobj): Only look for weak
4771         aliases for symbols defined in the same object.
4772         * testsuite/Makefile.am (check_PROGRAMS): Add weak_alias_test.
4773         (weak_alias_test_SOURCES): New variable.
4774         (weak_alias_test_DEPENDENCIES): New variable.
4775         (weak_alias_test_LDFLAGS): New variable.
4776         (weak_alias_test_LDADD): New variable.
4777         (weak_alias_test_1_pic.o, weak_alias_test_1.so): New targets.
4778         (weak_alias_test_2_pic.o, weak_alias_test_2.so): New targets.
4779         (weak_alias_test_3.o): New target.
4780         (weak_alias_test_4_pic.o, weak_alias_test_4.so): New targets.
4781         * testsuite/weak_alias_test_main.cc: New file.
4782         * testsuite/weak_alias_test_1.cc: New file.
4783         * testsuite/weak_alias_test_2.cc: New file.
4784         * testsuite/weak_alias_test_3.cc: New file.
4785
4786 2008-04-08  Ian Lance Taylor  <iant@google.com>
4787
4788         * options.h (class General_options): Add --noinhibit-exec option.
4789         * main.cc (main): Check --noinhibit-exec.
4790
4791         * options.h (class General_options): Define --wrap as a special
4792         option.  Add wrap_symbols_ field.
4793         (General_options::any_wrap_symbols): New function.
4794         (General_options::is_wrap_symbol): New function.
4795         * options.cc (General_options::parse_wrap): New function.
4796         (General_options::General_options): Initialize wrap_symbols_.
4797         * symtab.cc (Symbol_table::wrap_symbol): New function.
4798         (Symbol_table::add_from_object): Handle --wrap.
4799         * symtab.h (class Symbol_table): Declare wrap_symbol.
4800         * target.h (Target::wrap_char): New function.
4801         (Target::Target_info): Add wrap_char field.
4802         * i386.cc (Target_i386::i386_info): Initialize wrap_char.
4803         * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
4804         * testsuite/testfile.cc (Target_test::test_target_info):
4805         Likewise.
4806
4807         * errors.cc (Errors::undefined_symbol): Mention symbol version if
4808         there is one.
4809
4810         * layout.h (class Layout): Add added_eh_frame_data_ field.
4811         * layout.cc (Layout::Layout): Initialize new field.
4812         (Layout::layout_eh_frame): Don't add eh_frame_data_ to .eh_frame
4813         output section until we find a section we merged successfully.
4814         * object.cc (Sized_relobj::check_eh_frame_flags): Don't require
4815         that the size be non-zero.
4816
4817         * merge.cc (Object_merge_map::get_output_offset): Remove inline
4818         qualifier.
4819
4820 2008-04-08  Craig Silverstein  <csilvers@google.com>
4821
4822         * configure.ac: Export new conditional variable HAVE_ZLIB.
4823         * testsuite/Makefile.am (flagstest_o_specialfile): Condition
4824         on HAVE_ZLIB.
4825         (flagstest_o_specialfile_and_compress_debug_sections): Likewise.
4826         * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
4827
4828 2008-04-07  Ian Lance Taylor  <iant@google.com>
4829
4830         * version.cc (version_string): Set to "1.5".
4831
4832         * x86_64.cc (Target_x86_64::Scan): Change from struct to class.
4833         Add issued_non_pic_error_ field.  Declare check_non_pic.
4834         (Target_x86_64::Scan::check_non_pic): New function.
4835         (Target_x86_64::Scan::local): Call check_non_pic as appropriate.
4836         (Target_x86_64::Scan::global): Likewise.
4837
4838         * output.cc (Output_reloc<SHT_REL>::local_section_offset): Add
4839         addend parameter.  Change caller.  Handle merge sections.
4840         (Output_reloc<SHT_REL>::symbol_value): Change parameter type from
4841         Address to Addend.  Don't add in the result of
4842         local_section_offset, pass down the addend and use the returned
4843         value.
4844         * output.h (class Output_reloc<SHT_REL>): Add Addend typedef.
4845         Update declarations of local_section_offset and symbol_value.
4846         * testsuite/two_file_test_1.cc (t18): New function.
4847         * testsuite/two_file_test_2.cc (f18): New function.
4848         * testsuite/two_file_test_main.cc (main): Call t18.
4849         * testsuite/two_file_test.h (t18, f18): Declare.
4850
4851         * configure.ac: Don't test for objdump, c++filt, or readelf.
4852         * testsuite/Makefile.am: Remove READELF and OBJDUMP_AND_CPPFILT
4853         conditionals.
4854         (TEST_READELF): New variable.
4855         (TEST_OBJDUMP, TEST_CXXFILT, TEST_STRIP): New variables.
4856         (check_PROGRAMS): Add two_file_strip_test.
4857         (two_file_strip_test): New target.
4858         (check_PROGRAMS): Add two_file_same_shared_strip_test.
4859         (two_file_same_shared_strip_test_SOURCES): New variable.
4860         (two_file_same_shared_strip_test_DEPENDENCIES): New variable.
4861         (two_file_same_shared_strip_test_LDFLAGS): New variable.
4862         (two_file_same_shared_strip_test_LDADD): New variable.
4863         (two_file_shared_strip.so): New target.
4864         (ver_test_2.syms, ver_test_4.syms): Use TEST_READELF.
4865         (ver_test_5.syms, ver_test_7.syms): Likewise.
4866         (ver_matching_test.stdout): Use TEST_OBJDUMP and TEST_CXXFILT.
4867         (strip_test_3.stdout): Use TEST_OBJDUMP.
4868         * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
4869
4870 2008-04-04  Cary Coutant  <ccoutant@google.com>
4871
4872         * symtab.h (Symbol::is_weak_undefined): New function.
4873         (Symbol::is_strong_undefined): New function.
4874         (Symbol::is_absolute): New function.
4875         (Symbol::needs_plt_entry): Exclude weak undefined symbols.
4876         (Symbol::needs_dynamic_reloc): Exclude weak undefined and
4877         absolute symbols.
4878         * testsuite/Makefile.am (check_PROGRAMS): Add weak_undef_test.
4879         (weak_undef_test): New target.
4880         * testsuite/Makefile.in: Rebuild.
4881         * testsuite/weak_undef_file1.cc: New file.
4882         * testsuite/weak_undef_file2.cc: New file.
4883         * testsuite/weak_undef_test.cc: New file.
4884
4885 2008-04-03  Craig Silverstein  <csilvers@google.com>
4886
4887         * compressed_output.h (class Output_compressed_section): Use
4888         unsigned buffer.
4889         * compressed_output.cc (zlib_compress): Use unsigned buffers,
4890         add zlib header.
4891         (zlib_compressed_suffix): Removed.
4892         (Output_compressed_section::set_final_data_size): Use unsigned
4893         buffers.
4894         * testsuite/Makefile.am (flagstest_compress_debug_sections):
4895         Fix linker invocation.
4896         (flagstest_o_specialfile_and_compress_debug_sections):
4897         Likewise.
4898         * testsuite/Makefile.in: Regenerated.
4899
4900 2008-04-02  David S. Miller  <davem@davemloft.net>
4901
4902         *  dwarf_reader.cc (Sized_dwarf_line_info::read_header_prolog,
4903         Sized_dwarf_line_info::process_one_opcode): Use Swap_unaligned.
4904
4905 2008-04-02  Craig Silverstein  <csilvers@google.com>
4906
4907         * TODO: New file.
4908
4909 2008-04-02  Ian Lance Taylor  <iant@google.com>
4910
4911         * fileread.cc (File_read::find_view): Add byteshift and vshifted
4912         parameters.  Update for new key type to views_.  Change all
4913         callers.
4914         (File_read::read): Adjust for byteshift in returned view.
4915         (File_read::add_view): New function, broken out of
4916         find_and_make_view.
4917         (File_read::make_view): New function, broken out of
4918         find_and_make_view.
4919         (File_read::find_or_make_view): Add offset and aligned
4920         parameters.  Rewrite accordingly.  Change all callers.
4921         (File_read::get_view): Add offset and aligned parameters.  Adjust
4922         for byteshift in return value.
4923         (File_read::get_lasting_view): Likewise.
4924         * fileread.h (class File_read): Update declarations.
4925         (class File_read::View): Add byteshift_ field.  Add byteshift to
4926         constructor.  Add byteshift method.
4927         * archive.h (Archive::clear_uncached_views): New function.
4928         (Archive::get_view): Add aligned parameter.  Change all callers.
4929         * object.h (Object::get_view): Add aligned parameter.  Change all
4930         callers.
4931         (Object::get_lasting_view): Likewise.
4932
4933         * fileread.cc (File_read::release): Don't call clear_views if
4934         there are multiple objects.
4935         * fileread.h (File_read::clear_uncached_views): New function.
4936         * archive.cc (Add_archive_symbols::run): Call clear_uncached_views
4937         on the archive.
4938
4939 2008-03-31  Cary Coutant  <ccoutant@google.com>
4940
4941         Add thin archive support.
4942         * archive.cc (Archive::armagt): New const.
4943         (Archive::setup): Remove task parameter and calls to unlock.
4944         (Archive::unlock_nested_archives): New function.
4945         (Archive::read_header): Add nested_off parameter. Change
4946         all callers.
4947         (Archive::interpret_header): Likewise.
4948         (Archive::include_all_members): Change to handle thin
4949         archives.
4950         (Archive::include_member): Likewise.
4951         * archive.h (Archive::Archive): Add new parameters and
4952         initializers.
4953         (Archive::armagt): New const.
4954         (Archive::setup): Remove task parameter.
4955         (Archive::unlock_nested_archives): New function.
4956         (Archive::read_header): Add nested_off parameter.
4957         (Archive::interpret_header): Likewise.
4958         (Archive::Nested_archive_table): New typedef.
4959         (Archive::is_thin_archive_): New field.
4960         (Archive::nested_archives_): New field.
4961         (Archive::options_): New field.
4962         (Archive::dirpath_): New field.
4963         (Archive::task_): New field.
4964         * readsyms.cc (Read_symbols::do_read_symbols): Add check
4965         for thin archives.  Pass additional parameters to
4966         Archive::Archive.  Unlock the archive file after calling
4967         Archive::setup.
4968
4969 2008-03-29  Ian Lance Taylor  <iant@google.com>
4970
4971         * symtab.cc (Symbol_table::do_define_as_constant): Don't force a
4972         version symbol to be local.
4973         * testsuite/ver_test_4.sh: New file.
4974         * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_4.sh.
4975         (check_DATA): Add ver_test_4.syms.
4976         (ver_test_4.syms): New target.
4977         * testsuite/Makefile.in: Rebuild.
4978
4979         * output.cc
4980         (Output_section::Input_section_sort_entry::has_priority): New
4981         function.
4982         (Output_section::Input_section_sort_entry::match_file_name): New
4983         function.
4984         (Output_section::Input_section_sort_entry::match_section_name):
4985         Remove.
4986         (Output_section::Input_section_sort_entry::match_section_name_prefix):
4987         Remove.
4988         (Output_section::Input_section_sort_entry::match_section_file):
4989         Remove.
4990         (Output_section::Input_section_sort_compare::operator()): Rewrite
4991         using new Input_section_sort_entry functions.  Sort crtbegin and
4992         crtend first.  Sort sections with no priority before sections with
4993         a priority.
4994         * testsuite/initpri1.c (d3): Check j != 4.
4995         (cd5): New constructor/destructor function.
4996         (main): Check j != 2.
4997
4998         * symtab.cc (Symbol_table::add_from_object): If we don't use the
4999         new symbol when resolving, don't call set_is_default.
5000         * testsuite/ver_test_7.cc: New file.
5001         * testsuite/ver_test_7.sh: New file.
5002         * testsuite/Makefile.am (ver_test_7.so): New target.
5003         (ver_test_7.o): New target.
5004         (check_SCRIPTS): Add ver_test_7.sh.
5005         (check_DATA): Add ver_test_7.syms.
5006         (ver_test_7.syms): New target.
5007
5008 2008-03-28  Ian Lance Taylor  <iant@google.com>
5009
5010         * layout.cc (Layout::layout): If we see an input section with a
5011         name that needs sorting, set the must_sort flag for the output
5012         section.
5013         (Layout::make_output_section): If the name of the output section
5014         indicates that it might require sorting, set the may_sort flag.
5015         * output.h (Output_section::may_sort_attached_input_sections): New
5016         function.
5017         (Output_section::set_may_sort_attached_input_sections): New
5018         function.
5019         (Output_section::must_sort_attached_input_sections): New
5020         function.
5021         (Output_section::set_must_sort_attached_input_sections): New
5022         function.
5023         (class Output_section): Declare Input_section_sort_entry.  Define
5024         Input_section_sort_compare.  Declare
5025         sort_attached_input_sections.  Add new fields:
5026         may_sort_attached_input_sections_,
5027         must_sort_attached_input_sections_,
5028         attached_input_sections_are_sorted_.
5029         * output.cc (Output_section::Output_section): Initialize new
5030         fields.
5031         (Output_section::add_input_section): Add an entry to
5032         input_sections_ if may_sort or must_sort are true.
5033         (Output_section::set_final_data_size): Call
5034         sort_attached_input_sections if necessary.
5035         (Output_section::Input_section_sort_entry): Define new class.
5036         (Output_section::Input_section_sort_compare::operator()): New
5037         function.
5038         (Output_section::sort_attached_input_sections): New function.
5039         * configure.ac: Check whether the compiler supports constructor
5040         priorities.  Define a CONSTRUCTOR_PRIORITY automake conditional.
5041         * testsuite/initpri1.c: New file.
5042         * testsuite/Makefile.am (check_PROGRAMS): Add initpri1 if
5043         CONSTRUCTOR_PRIORITY.
5044         (initpri1_SOURCES, initpri1_DEPENDENCIES): New variables.
5045         (initpri1_LDFLAGS): New variable.
5046         * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
5047
5048 2008-03-27  Ian Lance Taylor  <iant@google.com>
5049
5050         * common.cc (Sort_commons::operator): Correct sorting algorithm.
5051         * testsuite/common_test_1.c: New file.
5052         * testsuite/Makefile.am (check_PROGRAMS): Add common_test_1.
5053         (common_test_1_SOURCES): New variable.
5054         (common_test_1_DEPENDENCIES): New variable.
5055         (common_test_1_LDFLAGS): New variable.
5056
5057         * symtab.cc (Symbol_table::add_from_object): Handle saw_undefined_
5058         and commons_ correctly when NAME/VERSION does not override
5059         NAME/NULL.
5060         * testsuite/ver_test_6.c: New file.
5061         * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_6
5062         (ver_test_6_SOURCES, ver_test_6_DEPENDENCIES): New variables.
5063         (ver_test_6_LDFLAGS, ver_test_6_LDADD): New variables.
5064
5065 2008-03-26  Ian Lance Taylor  <iant@google.com>
5066
5067         * symtab.cc (Symbol_table::add_from_relobj): Don't set the version
5068         of an undefined symbol from a version script.
5069         * testsuite/Makefile.am (ver_test_5.so): New target.
5070         (ver_test_5.o): New target.
5071         (check_SCRIPTS): Add ver_test_5.sh.
5072         (check_DATA): Add ver_test_5.syms.
5073         (ver_test_5.syms): New target.
5074         * testsuite/ver_test_5.cc: New file.
5075         * testsuite/ver_test_5.script: New file.
5076         * testsuite/ver_test_5.sh: New file.
5077         * Makefile.in, testsuite/Makefile.in: Rebuild.
5078
5079         PR gold/5986
5080         Fix problems building gold with gcc 4.3.0.
5081         * gold.h (TEMPLATE_ATTRIBUTE_PRINTF_4): Define.
5082         (gold_error_at_location, gold_warning_at_location): Use it.
5083         * configure.ac: Check whether we can compile and use a template
5084         function with a printf attribute.
5085         * x86_64.cc (Target_x86_64::do_code_fill): Swap out a 32-bit value
5086         when jumping over bytes.
5087         * object.cc: Instantiate Object::read_section_data.
5088         * debug.h: Include <cstring>
5089         * dwarf_reader.cc: Include <algorithm>
5090         * main.cc: Include <cstring>.
5091         * options.cc: Include <cstring>.
5092         * output.cc: Include <cstring>.
5093         * script.cc: Include <cstring>.
5094         * script.h: Include <string>.
5095         * symtab.cc: Include <cstring> and <algorithm>.
5096         * target-select.cc: Include <cstring>.
5097         * version.cc: Include <string>.
5098         * testsuite/testmain.cc: Include <cstdlib>.
5099         * configure, config.in: Rebuild.
5100
5101 2008-03-25  Ian Lance Taylor  <iant@google.com>
5102
5103         * options.cc: Include "../bfd/bfdver.h".
5104         (options::help): Print bug reporting address.
5105
5106         * version.cc (print_version): Adjust output for current value of
5107         BFD_VERSION_STRING.
5108
5109         * NEWS: New file.
5110
5111         * options.cc (options::help): Print list of supported targets.
5112         * target-select.h: Include <vector>.
5113         (class Target_selector): Make machine_, size_, and is_big_endian_
5114         fields const.  Add bfd_name_ and instantiated_target_ fields.
5115         (Target_selector::Target_selector): Add bfd_name parameter.
5116         (Target_selector::recognize): Make non-virtual, call
5117         do_recognize.
5118         (Target_selector::recognize_by_name): Make non-virtual, call
5119         do_recognize_by_name.
5120         (Target_selector::supported_names): New function.
5121         (Target_selector::bfd_name): New function.
5122         (Target_selector::do_instantiate_target): New pure virtual
5123         function.
5124         (Target_selector::do_recognize): New virtual function.
5125         (Target_selector::do_recognize_by_name): New virtual function.
5126         (Target_selector::instantiate_target): New private function.
5127         (supported_target_names): Declare.
5128         * target-select.cc (Target_selector::Target_selector): Update for
5129         new parameter and fields.
5130         (select_target_by_name): Check that the name matches before
5131         calling recognize_by_name.
5132         (supported_target_names): New function.
5133         * i386.cc (class Target_selector_i386): Update Target_selector
5134         constructor call.  Remove recognize and recognize_by_name.  Add
5135         do_instantiate_target.
5136         * x86_64.cc (class Target_selector_x86_64): Likewise.
5137         * testsuite/testfile.cc (class Target_selector_test): Update for
5138         changes to Target_selector.
5139
5140         * README: Rewrite, with some notes on unsupported features.
5141
5142 2008-03-24  Cary Coutant  <ccoutant@google.com>
5143
5144         * i386.cc (Target_i386::Got_type): New enum declaration.
5145         (Target_i386::Scan::local): Updated callers of Output_data_got
5146         member functions.
5147         (Target_i386::Scan::global): Likewise.
5148         (Target_i386::Relocate::relocate): Likewise.
5149         (Target_i386::Relocate::relocate_tls): Likewise.
5150         * object.h (Got_offset_list): New class.
5151         (Sized_relobj::local_has_got_offset): Added got_type parameter.
5152         (Sized_relobj::local_got_offset): Likewise.
5153         (Sized_relobj::set_local_got_offset): Likewise.
5154         (Sized_relobj::local_has_tls_got_offset): Removed.
5155         (Sized_relobj::local_tls_got_offset): Removed.
5156         (Sized_relobj::set_local_tls_got_offset): Removed.
5157         (Sized_relobj::Local_got_offsets): Changed to store a list of offsets.
5158         * output.cc (Output_data_got::add_global): Added got_type parameter.
5159         (Output_data_got::add_global_with_rel): Likewise.
5160         (Output_data_got::add_global_with_rela): Likewise.
5161         (Output_data_got::add_global_pair_with_rel): New function.
5162         (Output_data_got::add_global_pair_with_rela): New function.
5163         (Output_data_got::add_local): Added got_type parameter.
5164         (Output_data_got::add_local_with_rel): Likewise.
5165         (Output_data_got::add_local_with_rela): Likewise.
5166         (Output_data_got::add_local_pair_with_rel): New function.
5167         (Output_data_got::add_local_pair_with_rela): New function.
5168         (Output_data_got::add_global_tls): Removed.
5169         (Output_data_got::add_global_tls_with_rel): Removed.
5170         (Output_data_got::add_global_tls_with_rela): Removed.
5171         (Output_data_got::add_local_tls): Removed.
5172         (Output_data_got::add_local_tls_with_rel): Removed.
5173         (Output_data_got::add_local_tls_with_rela): Removed.
5174         * output.h (Output_data_got::add_global): Added got_type parameter.
5175         (Output_data_got::add_global_with_rel): Likewise.
5176         (Output_data_got::add_global_with_rela): Likewise.
5177         (Output_data_got::add_global_pair_with_rel): New function.
5178         (Output_data_got::add_global_pair_with_rela): New function.
5179         (Output_data_got::add_local): Added got_type parameter.
5180         (Output_data_got::add_local_with_rel): Likewise.
5181         (Output_data_got::add_local_with_rela): Likewise.
5182         (Output_data_got::add_local_pair_with_rel): New function.
5183         (Output_data_got::add_local_pair_with_rela): New function.
5184         (Output_data_got::add_global_tls): Removed.
5185         (Output_data_got::add_global_tls_with_rel): Removed.
5186         (Output_data_got::add_global_tls_with_rela): Removed.
5187         (Output_data_got::add_local_tls): Removed.
5188         (Output_data_got::add_local_tls_with_rel): Removed.
5189         (Output_data_got::add_local_tls_with_rela): Removed.
5190         * resolve.cc (Symbol::override_base_with_special): Removed
5191         reference to has_got_offset_ field.
5192         * symtab.cc (Symbol::init_fields): Replaced initialization
5193         of got_offset_ with got_offsets_.  Removed initialization
5194         of has_got_offset_
5195         * symtab.h (Symbol::has_got_offset): Aded got_type parameter.
5196         (Symbol::got_offset): Likewise.
5197         (Symbol::set_got_offset): Likewise.
5198         (Symbol::has_tls_got_offset): Removed.
5199         (Symbol::tls_got_offset): Removed.
5200         (Symbol::set_tls_got_offset): Removed.
5201         (Symbol::got_offset_): Removed.
5202         (Symbol::tls_mod_got_offset_): Removed.
5203         (Symbol::tls_pair_got_offset_): Removed.
5204         (Symbol::got_offsets_): New field.
5205         (Symbol::has_got_offset): Removed.
5206         (Symbol::has_tls_mod_got_offset): Removed.
5207         (Symbol::has_tls_pair_got_offset): Removed.
5208         * x86_64.cc (Target_x86_64::Got_type): New enum declaration.
5209         (Target_x86_64::Scan::local): Updated callers of Output_data_got
5210         member functions.
5211         (Target_x86_64::Scan::global): Likewise.
5212         (Target_x86_64::Relocate::relocate): Likewise.
5213         (Target_x86_64::Relocate::relocate_tls): Likewise.
5214
5215 2008-03-25  Ben Elliston  <bje@au.ibm.com>
5216
5217         * yyscript.y: Fix spelling error in comment.
5218
5219 2008-03-24  Ian Lance Taylor  <iant@google.com>
5220
5221         * options.h (class General_options): Define build_id option.
5222         * layout.h (class Layout): Declare write_build_id, create_note,
5223         create_build_id.  Add build_id_note_ member.
5224         * layout.cc: Include <cerrno>, <fcntl.h>, <unistd.h>,
5225         "libiberty.h", "md5.h", "sha1.h".
5226         (Layout::Layout): Initialize eh_frame_data_,
5227         eh_frame_hdr_section_, and build_id_note_.
5228         (Layout::finalize): Call create_build_id.
5229         (Layout::create_note): New function, broken out of
5230         Layout::create_gold_note.
5231         (Layout::create_gold_note): Call create_note.
5232         (Layout::create_build_id): New function.
5233         (Layout::write_build_id): New function.
5234         (Close_task_runner::run): Call write_build_id.
5235
5236         * x86_64.cc: Correct license to GPLv3.
5237
5238 2008-03-23  Ian Lance Taylor  <iant@google.com>
5239
5240         * options.cc: Include "demangle.h".
5241         (parse_optional_string): New function.
5242         (parse_long_option): Handle takes_optional_argument.
5243         (parse_short_option): Update dash_z initializer.  Handle
5244         takes_optional_argument.
5245         (General_options::General_options): Initialize do_demangle_.
5246         (General_options::finalize): Set do_demangle_.  Handle demangling
5247         style.
5248         * options.h (parse_optional_string): Declare.
5249         (struct One_option): Add optional_arg field.  Update constructor.
5250         Update call constructor calls.  Add takes_optional_argument
5251         function.
5252         (DEFINE_var): Add optional_arg__ parameter.  Change all callers.
5253         (DEFINE_optional_string): Define.
5254         (General_options::demangle): Change from DEFINE_bool to
5255         DEFINE_optional_string.
5256         (General_options::no_demangle): New function.
5257         (General_options::do_demangle): New function.
5258         (General_options::set_do_demangle): New function.
5259         (General_options::execstack_status_): Move definition to end of
5260         class definition.
5261         (General_options::static_): Likewise.
5262         (General_options::do_demangle_): New field.
5263         * object.cc (big_endian>::get_symbol_location_info): Call
5264         Options::do_demangle, not Options::demangle.
5265         * symtab.cc (demangle): Likewise.
5266
5267 2008-03-22  Ian Lance Taylor  <iant@google.com>
5268
5269         * gold.h: Include <cstddef> and <sys/types.h>
5270         * options.h: Include <cstring>.
5271
5272 2008-03-21  Ian Lance Taylor  <iant@google.com>
5273
5274         * Added source code to GNU binutils.