OSDN Git Service

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