PR 10471
[external/binutils.git] / gold / ChangeLog
1 2009-08-12  Cary Coutant  <ccoutant@google.com>
2
3         PR 10471
4         * resolve.cc (Symbol_table::resolve): Check for references from
5         dynamic objects to hidden and internal symbols.
6         * testsuite/Makefile.am (hidden_test.sh): New test.
7         * testsuite/Makefile.in: Regenerate.
8         * testsuite/hidden_test.sh: New script.
9         * testsuite/hidden_test_1.c: New test source.
10         * testsuite/hidden_test_main.c: New test source.
11
12 2009-08-11  Doug Kwan  <dougkwan@google.com>
13
14         * arm.cc: Update comments.
15         (Target_arm::do_finalize_sections): Add a special PT_ARM_EXIDX
16         segment to locate the .ARM.exidx section if present.
17
18 2009-08-09  Doug Kwan  <dougkwan@google.com>
19
20         * dynobj.h (Sized_dynobj::do_section_entsize): Revert the previous
21         patch.
22
23 2009-08-07  Sriraman Tallam  <tmsriram@google.com>
24         * dynobj.h (Sized_dynobj::do_section_entsize): Add return to avoid
25         compiler warnings.
26
27 2009-08-06  Sriraman Tallam  <tmsriram@google.com>
28
29         * x86_64.cc (Target_x86_64::Relocate::relocate_tls): Check for a
30         valid tls_segment only for non-debug-section relocations.
31         * testsuite/Makefile.am: Add gc_tls_test.
32         * testsuite/Makefile.in: Regenerate.
33         * testsuite/gc_tls_test.cc: New file.
34         * testsuite/gc_tls_test.sh: New file.
35
36 2009-08-05  Sriraman Tallam  <tmsriram@google.com>
37         
38         * icf.cc: New file.
39         * icf.h: New file.
40         * Makefile.am (CCFILES): Add icf.cc.
41         (HFILES): Add icf.h
42         * Makefile.in: Regenerate.
43         * dynobj.h (Sized_dynobj::do_section_entsize): New function.
44         * gc.h (gc_process_relocs): Populate lists used by icf to contain
45         section, symbol and addend information for the relocs.
46         * gold.cc (queue_middle_tasks): Call identical code folding.
47         * gold.h: Add defines for multimap.
48         * layout.cc (Layout::create_symtab_sections): Add symtab as parameter
49         to the call of finalize_local_symbols.
50         * main.cc (main): Create object of class Icf.
51         * object.cc (Sized_relobj::do_layout): Allow this function to be
52         called twice during icf.
53         (Sized_relobj::do_finalize_local_symbols): Fold symbols corresponding
54         to sections marked as identical by icf.
55         (Sized_relobj::do_section_flags): Get section_flags from Symbols_data
56         when available.
57         (Sized_relobj::do_section_entsize): New function.
58         * object.h (Object::section_entsize): New function.
59         (Object::do_section_entsize): New pure virtual function.
60         (Relobj::finalize_local_symbols): Add new parameter.
61         (Relobj::do_section_entsize): New function.
62         * options.h (General_options::icf): New option.
63         (General_options::icf_iterations): New option.
64         (General_options::print_icf_sections): New option.
65         * plugin.cc (Sized_pluginobj::do_section_entsize): New function.
66         * plugin.h (Sized_pluginobj::do_section_entsize): New function.
67         * reloc.cc (Read_relocs::run): Delay scanning relocs when doing
68         icf.
69         * symtab.cc (Symbol_table::is_section_folded): New function.
70         (Symbol_table::sized_finalize_symbol):  Fold symbols corresponding
71         to sections marked as identical by icf.
72         * symtab.h (Symbol_table::set_icf): New function.
73         (Symbol_table::icf): New function.
74         (Symbol_table::is_section_folded): New function.
75         (Symbol_table::icf_): New data member.
76         * target-reloc.h (relocate_section): Ignore sections folded by icf.
77         * testsuite/Makefile.am: Add commands to build icf_test.
78         * testsuite/Makefile.in: Regenerate.
79         * testsuite/icf_test.sh: New file.
80         * testsuite/icf_test.cc: New file.
81
82 2009-07-24  Chris Demetriou  <cgd@google.com>
83
84         * layout.cc (is_compressible_debug_section): Fix incorrect
85         comment about compressed section names.
86
87 2009-07-20  Ian Lance Taylor  <ian@airs.com>
88
89         PR 10419
90         * x86_64.cc (Target_x86_64::do_code_fill): Correct nop sequences.
91
92 2009-07-16  Ian Lance Taylor  <iant@google.com>
93
94         PR 10400
95         * layout.h: #include <map>.
96         (class Kept_section): Change from struct to class.  Add accessors
97         and setters.  Add section size to Comdat_group mapping.  Change
98         Comdat_group to std::map.  Add is_comdat_ field.  Add
99         linkonce_size field in union.
100         (class Layout): Update declaration of find_or_add_kept_section.
101         Don't declare find_kept_object.
102         * layout.cc (Layout::find_or_add_kept_section): Remove candidate
103         parameter.  Add object, shndx, is_comdat, and is_group_name
104         parameters.  Change all callers.  Adjust for new Kept_section.
105         (Layout::find_kept_object): Remove.
106         * object.cc (Sized_relobj::include_section_group): Update use of
107         Kept_section.  Rename secnum to shndx.  Only record
108         Kept_comdat_section if sections are the same size.
109         (Sized_relobj::include_linkonce_section): Update use of
110         Kept_section.  Only record Kept_comdat_section if sections are the
111         same size.  Set size of linkonce section.
112         (Sized_relobj::map_to_kept_section): Update call to
113         get_kept_comdat_section.
114         * object.h (class Sized_relobj): Rename fields in
115         Kept_comdat_section to drop trailing underscores; change object
116         field to Relobj*.  Change Kept_comdat_section_table to store
117         struct rather than pointer.
118         (Sized_relobj::set_kept_comdat_section): Remove kept parameter.
119         Add kept_object and kept_shndx parameters.  Change all callers.
120         (Sized_relobj::get_kept_comdat_section): Change return type to
121         bool.  Add kept_object and kept_shndx parameters.  Change all
122         callers.
123         * plugin.cc (Pluginobj::include_comdat_group): Update call to
124         Layout::find_or_add_kept_section.
125
126 2009-07-09  Ian Lance Taylor  <iant@google.com>
127
128         * merge.cc (Object_merge_map::initialize_input_to_output_map):
129         Reserve space in the hash table.
130
131 2009-07-06  Mikolaj Zalewski  <mikolajz@google.com>
132
133         * fileread.cc (File_read::get_mtime): New method.
134         * fileread.h (Timespec): New structure.
135         (File_read::get_mtime): New method.
136         * incremental.cc (Incremental_inputs_entry_data::timestamp_usec):
137         Renamed from timestamp_nsec.
138         (Incremental_inputs_entry_write::timestamp_sec): Fix argument to
139         Elf_Xword.
140         (Incremental_inputs_entry_write::timestamp_usec): Renamed from 
141         timestamp_nsec.
142         (Incremental_inputs::report_archive): Save mtime; style fix. 
143         (Incremental_inputs::report_obejct): Save mtime; style fix.
144         (Incremental_inputs::report_script): Save mtime; style fix.
145         (Incremental_inputs::finalize_inputs): Style fix.
146         (Incremental_inputs::finalize): Style fix.
147         (Incremental_inputs::create_input_section_data): Store inputs
148         mtime.
149         * incremental.h (Incremental_inputs::report_script): Add mtime
150         argument.
151         (Incremental_inputs::Input_info::Input_info): Intialize only one
152         union member.
153         (Incremental_inputs::Input_info::archive): Move to nameless
154         union.
155         (Incremental_inputs::Input_info::obejct): Move to nameless union.
156         (Incremental_inputs::Input_info::script): Move to nameless union.
157         (Incremental_inputs::mtime): New field.
158         * script.cc (read_input_script): Pass file mtime to
159         Incremental_input.
160         * script.h (Script_info::inputs): Style fix.
161
162 2009-07-01  Ian Lance Taylor  <ian@airs.com>
163
164         * freebsd.h (Target_freebsd::do_adjust_elf_header): Use size
165         instead of 32.
166
167 2009-06-24  Ian Lance Taylor  <iant@google.com>
168
169         PR 10156
170         * layout.cc (Layout::choose_output_section): If we find an
171         existing section, update the flags.
172         (Layout::create_notes): New function, broken out of
173         Layout::finalize.
174         (Layout::finalize): Don't create note sections.
175         (Layout::create_note): Don't crash if linker script discards
176         section.
177         (Layout::create_gold_note): Likewise.
178         (Layout::create_build_id): Likewise.  Don't set
179         after_input_sections on the section.
180         (Layout::create_executable_stack_info): Remove target parameter.
181         Change caller.
182         * layout.h (class Layout): Declare create_notes.  Update
183         declaration of create_executable_stack_info.
184         * gold.cc (queue_middle_tasks): Call create_notes.
185         * output.cc (Output_section::update_flags_for_input_section): Move
186         here from output.h.  If SHF_ALLOC flag is newly set, mark address
187         invalid.
188         * output.h (Output_data::mark_address_invalid): New function.
189         (class Output_section): Only declare, not define,
190         update_flags_for_input_section.  Remove set_flags.
191
192 2009-06-24  Ian Lance Taylor  <iant@google.com>
193
194         * script-sections.cc (Output_section_definition::
195         set_section_addresses): Rename shadowing local load_address to
196         laddr.
197
198 2009-06-24  Ian Lance Taylor  <iant@google.com>
199
200         PR 10244
201         * reloc.cc (relocate_sections): Skip empty relocation sections.
202
203 2009-06-23  Ian Lance Taylor  <iant@google.com>
204
205         PR 10156
206         * layout.cc (Layout::create_note): Use choose_output_section
207         rather than make_output_section.
208
209 2009-06-23  Ian Lance Taylor  <iant@google.com>
210
211         PR 10237
212         * options.cc (General_options::parse_V): Set printed_version_.
213         (General_options::General_options): Initialize printed_version_.
214         * options.h (class General_options): Add printed_version_ field.
215         * gold.cc (queue_initial_tasks): If there are no input files,
216         don't give a fatal error if we printed the version information.
217         (queue_middle_tasks): If using -r with a shared object, give a
218         fatal error rather than an ordinary error.
219
220 2009-06-23  Ian Lance Taylor  <iant@google.com>
221
222         PR 10219
223         * layout.cc (Layout::Layout): Initialize have_stabstr_section_.
224         (Layout::make_output_section): Set have_stabstr_section_ if we see
225         a .stab*str section.
226         (Layout::finalize): Call link_stabs_sections.
227         (Layout::link_stabs_sections): New file.
228         * layout.h (class Layout): Add have_stabstr_section_ field.
229         Declare link_stabs_sections.
230
231 2009-06-23  Doug Kwan  <dougkwan@google.com>
232
233         * Makefile.am (libgold_a_LIBADD): New.
234         (ld_new_DEPENDENCIES, ld_new_LDADD): Remove LIBOBJS
235         * Makefile.in: Regenerate.
236         * config.in (HAVE_DECL_MEMMEM, HAVE_DECL_STRNDUP): New.
237         * configure: Regenerate.
238         * configure.ac (AC_CHECK_DECLS): Add strndup and memmem.
239         * fileread.cc: Include sys/state.h
240         * gold.h: Declare memmem and strndup if found missing.
241         * gold_reloc.h: Include byteswap.h if HAVE_BYTESWAP_H is defined.
242
243 2009-06-23  Ian Lance Taylor  <iant@google.com>
244
245         * configure.ac: Call AC_CHECK_DECLS using C, not C++.
246         * configure: Rebuild.
247
248 2009-06-23  Ian Lance Taylor  <iant@google.com>
249
250         PR 10147
251         * object.cc (Object::section_contents): Don't try to get a view if
252         the section has length zero.
253         (Object::handle_gnu_warning_section): If the section is empty, use
254         the name of the section as the warning.
255
256 2009-06-23  Ian Lance Taylor  <iant@google.com>
257
258         PR 10133
259         * stringpool.h (class Stringpool_template): Add optimize_ field.
260         (Stringpool_template::set_optimize): New function.
261         * stringpool.cc (Stringpool_template::Stringpool_template):
262         Initialize optimize_ field.
263         (Stringpool_template::set_string_offsets): Test local optimize
264         fild rather than parameter.
265         * layout.cc (Layout::Layout): Call set_optimize on the section
266         name stringpool.
267
268 2009-06-22  Ian Lance Taylor  <iant@google.com>
269
270         PR 10030
271         * yyscript.y: Parse TARGET.
272         * script.cc (script_set_target): New function.
273         * script-c.h (script_set_target): Declare.
274         * options.cc (General_options::string_to_object_format): Rename
275         from string_to_object_format in anonymous namespace.  Change
276         callers.
277         * options.h (class General_options): Declare
278         string_to_object_format.
279
280 2009-06-22  Ian Lance Taylor  <iant@google.com>
281
282         * script-sections.cc (Script_sections::create_segments): Don't put
283         program headers in a PT_LOAD segment if -n or -N.
284
285 2009-06-22  Ian Lance Taylor  <iant@google.com>
286
287         PR 10141
288         * options.h (class General_options): Add -z lazy and -z now.  Sort
289         -z options into alphabetical order.
290         * layout.cc (Layout::finish_dynamic_section): Handle -z now.
291
292 2009-06-21  Ian Lance Taylor  <iant@google.com>
293
294         * layout.cc (Layout::make_output_section): Call
295         Target::new_output_section.
296         (Layout::attach_allocated_section_to_segment): Put large section
297         sections in a separate load segment with the large segment flag
298         set.
299         (Layout::segment_precedes): Sort large data segments after other
300         load segments.
301         (align_file_offset): New static function.
302         (Layout::set_segment_offsets): Use align_file_offset.
303         * output.h (class Output_section): Add is_small_section_ and
304         is_large_section_ fields.
305         (Output_section::is_small_section): New function.
306         (Output_section::set_is_small_section):  New function.
307         (Output_section::is_large_section): New function.
308         (Output_section::set_is_large_section): New function.
309         (Output_section::is_large_data_section): New function.
310         (class Output_segment): Add is_large_data_segment_ field.
311         (Output_segment::is_large_data_segment): New function.
312         (Output_segment::set_is_large_data_segment): New function.
313         * output.cc (Output_section::Output_section): Initialize new
314         fields.
315         (Output_segment::Output_segment): Likewise.
316         (Output_segment::add_output_section): Add assertion that large
317         data sections always go in large data segments.  Force small data
318         sections to the end of the list of data sections.  Force small BSS
319         sections to the start of the list of BSS sections.  For large BSS
320         sections to the end of the list of BSS sections.
321         * symtab.h (class Symbol): Declare is_common_shndx.
322         (Symbol::is_defined): Check Symbol::is_common_shndx.
323         (Symbol::is_common): Likewise.
324         (class Symbol_table): Define enum Commons_section_type.  Update
325         declarations.  Add small_commons_ and large_commons_ fields.
326         * symtab.cc (Symbol::is_common_shndx): New function.
327         (Symbol_table::Symbol_table): Initialize new fields.
328         (Symbol_table::add_from_object): Put small and large common
329         symbols in the right list.
330         (Symbol_table::sized_finalized_symbol): Check
331         Symbol::is_common_shndx.
332         (Symbol_table::sized_write_globals): Likewise.
333         * common.cc (Symbol_table::do_allocate_commons): Allocate new
334         common symbol lists.  Don't call do_allocate_commons_list if the
335         list is empty.
336         (Symbol_table::do_allocate_commons_list): Remove is_tls
337         parameter.  Add comons_section_type parameter.  Change all
338         callers.  Handle small and large common symbols.
339         * object.cc (Sized_relobj::do_finalize_local_symbols): Check
340         Symbol::is_common_shndx.
341         * resolve.cc (symbol_to_bits): Likewise.
342         * target.h (Target::small_common_shndx): New function.
343         (Target::small_common_section_flags): New function.
344         (Target::large_common_shndx): New function.
345         (Target::large_common_section_flags): New function.
346         (Target::new_output_section): New function.
347         (Target::Target_info): Add small_common_shndx, large_common_shndx,
348         small_common_section_flags, and large_common_section_flags
349         fields.
350         (Target::do_new_output_section): New virtual function.
351         * arm.cc (Target_arm::arm_info): Initialize new fields.
352         * i386.cc (Target_i386::i386_info): Likewise.
353         * powerpc.cc (Target_powerpc::powerpc_info) [all versions]:
354         Likewise.
355         * sparc.c (Target_sparc::sparc_info) [all versions]: Likewise.
356         * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
357         (Target_x86_64::do_new_output_section): New function.
358         * configure.ac: Define conditional MCMODEL_MEDIUM.
359         * testsuite/Makefile.am (check_PROGRAMS): Add large.
360         (large_SOURCES, large_CFLAGS, large_DEPENDENCIES): Define.
361         (large_LDFLAGS): Define.
362         * testsuite/large.c: New file.
363         * testsuite/testfile.cc (Target_test::test_target_info):
364         Initialize new fields.
365         * configure, testsuite/Makefile.in: Rebuild.
366
367 2009-06-05  Doug Kwan  <dougkwan@google.com>
368
369         * Makefile.am (CCFILES): Add target.cc.
370         * Makefile.in: Regenerate. 
371         * i386.cc (class Target_i386): Define new virtual method to
372         override do_is_local_label_name in parent.
373         * object.cc (Sized_relobj::do_count_local_symbols): Discard
374         local symbols if --discard-locals or -X is given.
375         * options.h (class General_options): Declare new options
376         '--discard-locals' and '-X' for discarding locals.
377         * target.h (class Target): Define new methods is_local_label_name.
378         Declare new virtual method do_is_local_label_name.
379         * target.cc: New file.
380         * testsuite/Makefile.am (check_PROGRAMS): Add discard_locals_test.
381         (check_SCRIPTS): Add discard_locals_test.sh.
382         (check_DATA): Add discard_local_tests.syms.
383         (discard_locals_test_SOURCES, discard_locals_test_LDFLAGS): Define.
384         (discard_local_tests.syms, discard_locals_test.o): New make rules.
385         * testsuite/Makefile.in: Regenerate.
386         * testsuite/discard_locals_test.c: New file.
387         * testsuite/discard_locals_test.sh: Same.
388
389 2009-06-05  Doug Kwan  <dougkwan@google.com>
390
391         * object.cc (Sized_relobj::Sized_relobj): Initialize
392         discarded_eh_frame_shndx_ to -1U.
393         (Sized_relobj::do_layout): Record index of a discard .eh_frame
394         section.
395         (Sized_relobj::do_count_local_symbols): Skip local symbols in
396         a discarded .eh_frame section.
397         (Sized_relobj::do_finalize_local_symbols): Ditto.
398         * object.h (class Sized_relobj): Declare new member
399         discarded_eh_frame_shndx_.
400         * testsuite/Makefile.am (check_PROGRAMS): Add local_labels_test.
401         (local_labels_test.o, local_labels_test): New rules.
402         * testsuite/Makefile.in: Regenerate.
403
404 2009-06-04  Doug Kwan  <dougkwan@google.com>
405
406         * layout.cc (Layout::section_name_mapping): Add mapping for
407         special ARM sections.
408
409 2009-06-03  Doug Kwan  <dougkwan@google.com>
410
411         * arm.cc (utils::sign_extend): Reverse test in gold_assert.
412         (utils::has_overflow): Same.
413
414 2009-06-03  Ian Lance Taylor  <iant@google.com>
415
416         * layout.cc (Layout::section_name_mapping): New array, replacing
417         Layout::linkonce_mapping.
418         (Layout::section_name_mapping_count): New variable, replacing
419         Layout::linkonce_mapping_count.
420         (Layout::linkonce_output_name): Remove.
421         (Layout::output_section_name): Rewrite.
422         * layout.h (class Layout): Rename Linkonce_mapping to
423         Section_name_mapping, linkonce_mapping to section_name_mapping,
424         linkonce_mapping_count to section_name_mapping_count.  Don't
425         declare linkonce_output_name.
426
427 2009-06-03  Doug Kwan  <dougkwan@google.com>
428
429         * gold/arm.cc (namespace utils): New.
430         (Target_arm::reloc_is_non_pic): Define new method.
431         (class Arm_relocate_functions): New.
432         (Target_arm::Relocate::relocate): Handle relocation types used by
433         Android.
434
435 2009-06-03  Ian Lance Taylor  <iant@google.com>
436
437         * arm.cc (Target_arm::scan::global): Use || instead of |.
438
439 2009-06-02  Doug Kwan  <dougkwan@google.com>
440
441         * gold/arm.cc (Target_arm::Scan::Scan):  Initialize
442         issued_non_pic_error_.
443         (class Target_arm::Scan): Declare new method check_non_pic.
444         Define new method symbol_needs_plt_entry.
445         Declare new data member issued_non_pic_error_.
446         (class Target_arm::Relocate): Declare new method
447         should_apply_static_reloc.
448         (Target_arm::may_need_copy_reloc): Handle STT_ARM_TFUNC.
449         (Target_arm::Scan::check_non_pic): Define new method.
450         (Target_arm::Scan::local): Handle a small subset of reloc types used
451         by Android.
452         (Target_arm::Scan::local): Same.
453         (Target_arm::Relocate::should_apply_statci_reloc): Define new method.
454
455 2009-05-31  Mikolaj Zalewski  <mikolajz@google.com>
456
457         * incremental.cc (Incremental_inputs::report_command_line): Filter
458         out --incremental-* options.
459
460 2009-05-29  Doug Kwan  <dougkwan@google.com>
461
462         * gold/arm.cc (Output_data_plt_arm): Forward declaration for new
463         template class.
464         (class Target_arm): Update comment.
465         (Target_arm::Target_arm): Initialize new data members GOT_,
466         PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_ and DYNBSS_.
467         Declare new methods Target_arm::got_section, Target_arm::make_plt_entry
468         and Target_arm::rel_dyn_section.
469         Declare new_enum Target_arm::Got_type.
470         Declare new data members GOT_, PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_
471         and DYNBSS_.
472         Update commments for member do_dynsym_value.
473         (Target_arm::got_size, Target_arm::plt_section,
474         Target_arm::may_need_copy_reloc and Target_arm::copy_reloc): Define
475         new methods inside class defintion.
476         (Target_arm::got_section): Define new method.
477         (Target_arm::rel_dyn_section): Same.
478         (Output_data_plt_arm): New template class.
479         (Output_data_plt_arm::Output_data_plt_arm): Define constructor.
480         (Output_data_plt_arm:do_adjust_output_section): Define new method.
481         (Output_data_plt_arm::add_entry): Same.
482         (Output_data_plt_arm::first_plt_entry): Define new
483         static data member for PLT instruction template.
484         (Output_data_plt_arm::plt_entry): Same.
485         (Output_data_plt_arm::do_write): Define new method.
486         (Target_arm::make_plt_entry): Same.
487         (Target_arm::do_finalize_sections): Same.
488         (Target_arm::do_dynsym_value): Same.
489
490 2009-05-28  Doug Kwan  <dougkwan@google.com>
491
492         * Makefile.am (TARGETSOURCES): Add arm.cc.
493         (ALL_TARGETOBJECTS): Add arm.$(OBJEXT)
494         * Makefile.in: Regenerate.
495         * arm.cc: New file.
496         * configure.tgt: Add armbe*-*-*, armeb*-*-* and arm*-*-* targets.
497
498 2009-05-26  Doug Kwan  <dougkwan@google.com>
499
500         * options.cc (General_options::parse_exclude_libs).  Fix a comment.
501         (General_options::check_excluded_libs): Strip off directories in
502         archive name before matching like GNU ld does.
503         * testsuite/Makefile.am (MOSTLYCLEANFILES,
504         exclude_libs_test_DEPENDENCIES): Add alt/libexclude_libs_test_3.a
505         (exclude_libs_test_LDFLAGS): Add linker option
506         -Wl,--exclude-libs,libexclude_libs_test_3
507         (exclude_libs_test_LADD): Add alt/libexclude_libs_test_3.a as
508         an explicit archive without using -l.
509         (alt/libexclude_libs_test_3.a): New make rule.
510         * testsuite/Makefile.in: Regenerate.
511         * testsuite/exclude_libs_test.c : Declare lib3_default().
512         (main): Call it.
513         * exclude_libs_test.sh: Add tests for alt/exclude_libs_test_3.a.
514         * exclude_libs_test_3.c: New file.
515
516 2009-05-26  Nick Clifton  <nickc@redhat.com>
517
518         * po/id.po: New Indonesian translation.
519         * po/gold.pot: Updated template file.
520
521 2009-05-22  Sriraman Tallam  <tmsriram@google.com>
522
523         * testsuite/Makefile.am: Add -ffunction-sections to compile 
524         gc_comdat_test files.  Add -Wl,--gc-sections to build
525         gc_comdat_test.
526         * testsuite/Makefile.in: Regenerate.
527         * testsuite/gc_comdat_test.sh: Fix the condition around grep.
528
529 2009-05-21  Sriraman Tallam  <tmsriram@google.com>
530
531         * object.cc (Sized_relobj::map_to_kept_section): Return NULL if the
532         kept comdat section was garbage collected.
533         * testsuite/Makefile.am: Add test gc_comdat_test.sh.
534         * testsuite/Makefile.in: Regenerate.
535         * testsuite/gc_comdat_test.sh: New file.
536         * testsuite/gc_comdat_test_1.cc: New file.
537         * testsuite/gc_comdat_test_2.cc: New file.
538
539 2009-05-19  Doug Kwan  <dougkwan@google.com>
540
541         * archive.cc (Archive::Archive): Move constructor from archive.h
542         to here.  Initialize no_export_.
543         (Archive::get_elf_object_for_member): Set no_export flag of object.
544         * archive.h (Archive::Archive): Move constructor body to
545         archive.cc.
546         (Archive::no_export): New method.
547         (Archive::no_export_): New field.
548         * object.h (Object::Object): Initialize no_export_ to false.
549         (Object::no_export, Object::set_no_export): New methods.
550         (Object::no_export_): New field.
551         * options.cc (General_options::parse_exclude_libs): New method.
552         (General_options::check_excluded_libs) Same.
553         * options.h (exclude_libs): New option.
554         (General_options::check_excluded_libs): New method declaration.
555         (General_options::excluded_libs_): New field.
556         * symtab.cc (Symbol_table::add_from_relobj): Hide symbols with
557         default or protected visibility if an object has no-export flag set.
558         testsuite/Makefile.am (check_PROGRAMS): Add exclude_libs_test.
559         (check_SCRIPTS): Add exclude_libs_test.sh.
560         (check_DATA): Add exclude_libs_test.syms.
561         (MOSTLYCLEANFILES): Add exclude_libs_test.syms,
562         libexclude_libs_test_1.a and libexclude_libs_test_2.a.
563         (exclude_libs_test_SOURCES, exclude_libs_test_DEPENDENCIES,
564         exclude_libs_test_LDFLAGS and exclude_libs_test_LDADD): Define.
565         (exclude_libs_test.syms, libexclude_libs_test_1.a,
566         libexclude_libs_test_2.a): New rules.
567         * testsuite/Makefile.in: Regenerate.
568         * testsuite/exclude_libs_test.c: New file.
569         * testsuite/exclude_libs_test.sh: Ditto.
570         * testsuite/exclude_libs_test_1.c: Ditto.
571         * testsuite/exclude_libs_test_2.c: Ditto.
572
573 2009-05-15  Ian Lance Taylor  <iant@google.com>
574
575         * configure.ac: Check for declarations for cases where libiberty.h
576         checks HAVE_DECL_xxx.
577         * configure, config.in: Rebuild.
578
579 2009-05-15  Mikolaj Zalewski  <mikolajz@google.com>
580
581         * gold.h (Incremental_argument_list): Remove (invalid) forward
582         declaration.
583         * incremental.cc (Incremental_inputs::report_achive): New method.
584         (Incremental_inputs::report_object): New method.
585         (Incremental_inputs::report_script): New method.
586         (Incremental_inputs::finalize_inputs): New method.
587         (Incremental_inputs::finalize): Call finalize_inputs().
588         (Incremental_inputs::sized_create_incremental_inputs_section_data):
589         Create inputs entries.
590         * incremental.h (Incremental_input_type): New enum.
591         (Incremental_inputs::Incremental_input): Initialize new fields.
592         (Incremental_inputs::report_inputs): New method.
593         (Incremental_inputs::report_achive): New method.
594         (Incremental_inputs::report_object): New method.
595         (Incremental_inputs::report_script): New method.
596         (Incremental_inputs::finalize_inputs): New method.
597         (Incremental_inputs::Input_info): New struct.
598         (Incremental_inputs::Input_info_map): New typedef.
599         (Incremental_inputs::lock_): New field.
600         (Incremental_inputs::Inputs_): New field.
601         (Incremental_inputs::Inputs_map): New field.
602         * main.cc (main): Call Incremental_input::report_inputs.
603         * options.h (Input_argument_list): Typedef moved from
604         Input_arguments.
605         (Input_file_group::Files): Remove, use ::Input_argument_list.
606         (Input_file_group::Input_argument_list): Remove, use
607         ::Input_argument_list.
608         * plugin.cc (Plugin_manager::add_input_file): Add error in
609         incremental build.
610         * read_syms.cc (do_read_syms): Call Incremental_input::report_*
611         functions.
612         * script.cc (read_input_script): Call
613         Incremental_input::report_script.
614         * script.h (Script_info): New class.
615
616 2009-04-27  Ian Lance Taylor  <iant@google.com>
617
618         * x86_64.cc (do_adjust_output_section): Set entsize to
619         plt_entry_size.
620
621 2009-04-23  Elliott Hughes  <enh@google.com>
622
623         * output.cc (Output_file::close): After short writes, continue
624         writing from the correct offset in the buffer being written.
625
626 2009-04-23  Chris Demetriou  <cgd@google.com>
627
628         * configure.ac (HAVE_TR1_UNORDERED_MAP_REHASH): New define.
629         * configure: Regenerate.
630         * config.in: Regenerate.
631         * gold.h: Avoid std::tr1::unordered_map and std::tr1::unordered_set
632         if HAVE_TR1_UNORDERED_MAP_REHASH is not defined.
633
634 2009-04-21  Mikolaj Zalewski  <mikolajz@google.com>
635
636         * incremental.cc (Incremental_inputs_header_data): Renamed from
637         Incremental_input_header_data.
638         (Incremental_inputs_header_data::data_size): New field.
639         (Incremental_inputs_header_data::put_input_file_count): Renamed
640         from input_file_count.
641         (Incremental_inputs_header_data::put_command_line_offset): Renamed
642         from command_line_offset.
643         (Incremental_inputs_header_data::put_reserved): Renamed from
644         put_reserved.
645         (Incremental_inputs_entry_data): Renamed from
646         Incremental_input_entry_data.
647         (Incremental_inputs_entry_data::data_size): New field.
648         (Incremental_inputs::report_command_line): New method.
649         (Incremental_inputs::finalize): New method.
650         (Incremental_inputs::create_incremental_inputs_data): New method.
651         (Incremental_inputs::sized_create_incremental_inputs_data): New method.
652         * incremental.h: New file.
653         * layout.cc (Layout::Layout): Handle new incremental_inputs_.
654        (Layout::finalize): Create incremental inputs section in
655         incremental builds.
656        (Layout::create_incremental_info_sections): New method.
657         * layout.h (Layout::incremental_inputs): New method.
658        (Layout::create_incremental_info_sections): New method.
659        (Layout::incremental_inputs_): New field.
660         * main.cc (main): Notify Incremental_input of the command line.
661
662 2009-04-01  Ian Lance Taylor  <iant@google.com>
663             Mikolaj Zalewski  <mikolajz@google.com>
664
665         * gold.h (reserve_unordered_map): Define, three versions, one for
666         each version of Unordered_map.
667         * layout.cc (Layout::Layout): Remove options parameter.  Add
668         number_of_input_files parameter.  Don't initialize options_.
669         Initialize number_of_input_files_ and resized_signatures_.  Move
670         sections_are_attached_.
671         (Layout::layout_group): Reserve space for group_signatures_.
672         (Layout::find_or_add_kept_section): Change name parameter to be a
673         reference.  Resize signatures_ map when it gets large enough.
674         (Layout::layout_eh_frame): Use parameters->options() instead of
675         this->options_.
676         (Layout::make_output_section): Likewise.
677         (Layout::attach_allocated_section_to_segment): Likewise.
678         (Layout::finalize, Layout::create_executable_stack): Likewise.
679         (Layout::set_segment_offsets, Layout::create_interp): Likewise.
680         (Layout::finish_dynamic_section, Layout::write_binary): Likewise.
681         * layout.h (class Layout): Update declarations.  Remove options_
682         field.  Add number_of_input_files_ and resized_signatures_
683         fields.  Move sections_are_attached_ field.
684         * main.cc (main): Pass number of input files to Layout
685         constructor.  Don't pass options.
686
687 2009-03-30  Ian Lance Taylor  <iant@google.com>
688
689         * ffsll.c (ffsll): Correct implementation.
690
691 2009-03-27  Ian Lance Taylor  <iant@google.com>
692
693         * ffsll.c: New file.
694         * configure.ac: Call AC_REPLACE_FUNCS on ffsll.
695         * gold.h (ffsll): Declare if HAVE_FFSLL is not defined.
696         * ftruncate.c (ftruncate): Declare before definition.
697         * mremap.c (mremap): Likewise.
698         * pread.c (pread): Likewise.
699         * configure, Makefile.in, config.in: Rebuild.
700
701         * mremap.c: New file.
702         * configure.ac: Call AC_REPLACE_FUNCS on mremap.
703         * gold.h (MREMAP_MAYMOVE): Define if HAVE_MREMAP is not defined.
704         (mremap): Declare if HAVE_MREMAP is not defined.
705         * configure, Makefile.in, config.in: Rebuild.
706
707 2009-03-27  Cary Coutant  <ccoutant@google.com>
708
709         * powerpc.cc (Target_powerpc::check_non_pic): Assert that output is
710         position independent.
711         * sparc.cc (Target_sparc::check_non_pic): Likewise.
712         * x86_64.cc (Target_x86_64::check_non_pic): Likewise.
713
714 2009-03-24  Cary Coutant  <ccoutant@google.com>
715
716         * symtab.h (needs_plt_entry): Check for unsatisfied reference from
717         an executable.
718         (needs_dynamic_reloc): Likewise.
719
720 2009-03-24  Ian Lance Taylor  <iant@google.com>
721
722         * yyscript.y (file_cmd): Recognize EXTERN.
723         (extern_name_list, extern_name_list_body): New nonterminals.
724         * script.cc (script_add_extern): Define.
725         * script-c.h (script_add_extern): Declare.
726
727 2009-03-24  Rafael Avila de Espindola  <espindola@google.com>
728
729         * object.cc (is_elf_object): Define.
730         * object.h (is_elf_object): Declare.
731         * archive.cc (Archive::get_elf_object_for_member): Call
732         is_elf_object.
733         * readsyms.cc (Read_symbols::do_read_symbols): Likewise.
734
735 2009-03-24  Elliott Hughes  <enh@google.com>
736
737         * output.cc (Output_file::map_anonymous): Define.
738         (Output_file::map): Use map_anonymous.  If the regular mmap fails,
739         try an anonymous one.  Report the size if the mmap fails.
740         * output.h (class Output_file): Declare map_anonymous.
741
742 2009-03-24  Ian Lance Taylor  <iant@google.com>
743
744         * target-select.cc (instantiate_target): Don't acquire the lock if
745         the instantiated_target_ field has already been set.
746
747 2009-03-23  Ian Lance Taylor  <iant@google.com>
748
749         * gold-threads.h (class Initialize_lock): Define.
750         * gold-threads.cc (class Initialize_lock_once): Define.
751         (initialize_lock_control): New static variable.
752         (initialize_lock_pointer): New static variable.
753         (initialize_lock_once): New static function.
754         (Initialize_lock::Initialize_lock): Define.
755         (Initialize_lock::initialize): Define.
756         * target-select.h: Include "gold-threads.h".
757         (class Target_selector): Add lock_ and initialize_lock_ fields.
758         Don't define instantiate_target, just declare it.
759         * target-select.cc (Target_selector::Target_selector): Initialize
760         new fields.
761         (Target_selector::instantiate_target): Define.
762         * descriptors.h: Include "gold-threads.h".
763         (class Descriptors): Add initialize_lock_ field.
764         * descriptors.cc (Descriptors::Descriptors): Initialize new
765         field.
766         (Descriptors::open): Use initialize_lock_ field
767         * errors.h (class Errors): Add initialize_lock_ field.
768         * errors.cc (Errors::Errors): Initialize new field.
769         (Errors::initialize_lock): Use initialize_lock_ field.
770         * powerpc.cc (class Target_selector_powerpc): Remove
771         instantiated_target_ field.  In do_recognize call
772         instantiate_target rather than do_instantiate_target.  In
773         do_instantiate_target just allocate a new target.
774         * sparc.cc (class Target_selector_sparc): Likewise.
775
776         * freebsd.h: New file.
777         * i386.cc: Include "freebsd.h".
778         (Target_i386): Derive from Target_freebsd rather than
779         Sized_target.
780         (Target_selector_i386): Derive from Target_selector_freebsd rather
781         than Target_selector.
782         * x86_64.cc: Include "freebsd.h".
783         (Target_x86_64): Derive from Target_freebsd rather than
784         Sized_target.
785         (Target_selector_x86_64): Derive from Target_selector_freebsd
786         rather than Target_selector.
787         * target.h (class Target): Add adjust_elf_header and
788         do_adjust_elf_header.
789         * output.cc (Output_file_header:: do_sized_write): Call target
790         adjust_elf_header routine.
791         * configure.tgt: Set targ_osabi.
792         * configure.ac: Define GOLD_DEFAULT_OSABI.
793         * parameters.cc (Parameters::default_target): Pass
794         GOLD_DEFAULT_OSABI to select_target.
795         * target-select.h (class Target_selector): Make instantiate_target
796         protected rather than private.
797         * Makefile.am (HFILES): Add freebsd.h.
798         * configure, Makefile.in, config.in: Rebuild.
799
800         * merge.cc (do_add_input_section): Correct pend value.  Change
801         message about last entry not being null terminated from error to
802         warning.
803
804 2009-03-20  Mikolaj Zalewski  <mikolajz@google.com>
805
806         * incremental.cc: New file.
807         * Makefile.am (CCFILES): Add incremental.cc.
808         * Makefile.in: Rebuild.
809
810 2009-03-19  Paul Pluzhnikov  <ppluzhnikov@google.com>
811
812         * layout.cc (Layout::output_section_name): Preserve names
813         of '.note.' sections.
814         
815 2009-03-19  Ian Lance Taylor  <iant@google.com>
816
817         * descriptors.cc (Descriptors::open): Check that the options are
818         valid before using them.
819
820 2009-03-18  Ian Lance Taylor  <iant@google.com>
821
822         * script-sections.h: Include <list>.
823         (class Script_sections): Change Sections_elements from std::vector
824         to std::list.  Typedef public Elements_iterator.  Add
825         orphan_section_placement_, data_segment_align_start_, and
826         saw_data_segment_align_ fields.  Remove data_segment_align_index_
827         field.
828         * script-sections.cc (class Orphan_section_placement): New class.
829         (class Sections_element): Add virtual functions is_relro and
830         orphan_section_init.  Remove virtual function place_orphan_here.
831         (class Output_section_definition): Add is_relro and
832         orphan_section_init.  Remove place_orphan_here.
833         (class Orphan_output_section): Likewise.
834         (Script_sections::Script_sections): Update for field changes.
835         (Script_sections::data_segment_align): Set saw_data_segment_align_
836         and data_segment_align_start_, not data_segment_align_index.
837         (Script_sections::data_segment_relro_end): Check
838         saw_data_segment_align_.  Use data_segment_align_start_ rather
839         than data_segment_align_index_.
840         (Script_sections::place_orphan): Rewrite to use
841         Orphan_section_placement.
842
843 2009-03-17  Ian Lance Taylor  <iant@google.com>
844
845         * archive.cc (Archive::add_symbols): Check for a version attached
846         to the symbol name in the archive map.
847         * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_11.
848         (ver_test_11_SOURCES, ver_test_11_DEPENDENCIES): Define.
849         (ver_test_11_LDFLAGS, ver_test_11_LDADD): Define.
850         (ver_test_11.a): New target.
851         * testsuite/Makefile.in: Rebuild.
852
853         * configure.ac: Check for chsize and posix_fallocate.  Replace
854         ftruncate.
855         * ftruncate.c: New file, from gnulib.
856         * output.cc (posix_fallocate): Define dummy version if not
857         HAVE_POSIX_FALLOCATE.
858         (Output_file::map): Call posix_fallocate rather than lseek and
859         write.
860         * gold.h (ftruncate): Declare if not HAVE_FTRUNCATE.
861         * configure, Makefile.in, config.in: Rebuild.
862
863 2009-03-17  Paul Pluzhnikov  <ppluzhnikov@google.com>
864         
865         * layout.h (Layout::create_note): Add section_name parameter.
866         * layout.cc (Layout::create_note): Likewise.
867         (Layout::create_build_id, Layout::create_gold_note): Fix callers.
868         
869 2009-03-17  Ian Lance Taylor  <iant@google.com>
870
871         * descriptors.cc: Include "options.h".
872         (FD_CLOEXEC, O_CLOEXEC): Define if not defined.
873         (Descriptors::open): Always use O_CLOEXEC when opening a new
874         descriptor.  If we have a plugin, and O_CLOEXEC was not defined,
875         then set FD_CLOEXEC.
876
877         * sparc.cc (class Target_sparc): Add has_got_section.
878         (Target_sparc::Scan::global): If we see _GLOBAL_OFFSET_TABLE_,
879         make sure we have a GOT section.
880
881         * sparc.cc (optimize_tls_reloc): Recognize R_SPARC_TLS_IE_ADD.
882         (Target_sparc::Scan::local): Likewise.
883         (Target_sparc::Scan::global): Likewise.
884         (Target_sparc::Relocate::relocate): Likewise.
885         (Target_sparc::Relocate::relocate_tls): Likewise.
886
887         * symtab.cc (Symbol_table::define_default_version): New function,
888         broken out of add_from_object.
889         (Symbol_table::add_from_object): Call define_default_version.
890         (Symbol_table::define_special_symbol): Add resolve_oldsym
891         parameter.  Change all callers.  If the version for a symbol comes
892         from a version script, resolve it with the symbol with the same
893         name with no version.  Also add the symbol without a version if
894         appropriate.
895         (do_define_in_output_data): If resolving with oldsym, don't delete
896         sym.
897         (do_define_in_output_segment): Likewise.
898         (do_define_as_constant): Likewise.
899         * symtab.h (class Symbol_table): Update declarations.
900
901 2009-03-13  Ian Lance Taylor  <iant@google.com>
902
903         * readsyms.cc (Read_symbols::incompatible_warning): New function.
904         (Read_symbols::requeue): New function.
905         (Read_symbols::do_read_symbols): If make_elf_object fails because
906         the target type is not configured, and the file was searched for,
907         issue a warning and retry with the next directory.
908         (Add_symbols::run): If the file has an incompatible format, and
909         it was searched for, requeue the Read_symbols task.  On error,
910         release the object.
911         * readsyms.h (class Read_symbols): Add dirindex_ field.  Add
912         dirindex parameter to constructor.  Change all callers.  Declare
913         incompatible_warning and requeue.
914         (class Add_symbols): Add dirpath_, dirindex_, mapfile_,
915         input_argument_ and input_group_ fields.  Add them to
916         constructor.  Change all callers.
917         (class Read_script): Add dirindex_ field.  Add it to constructor.
918         Change all callers.
919         * archive.cc (Archive::setup): Remove input_objects parameter.
920         Change all callers.
921         (Archive::get_file_and_offset): Likewise.
922         (Archive::read_all_symbols): Likewise.
923         (Archive::read_symbols): Likewise.
924         (Archive::get_elf_object_for_member): Remove input_objects
925         parameter.  Add punconfigured parameter.  Change all callers.
926         (Archive::add_symbols): Change return type to bool.  Check return
927         value of include_member.
928         (Archive::include_all_members): Likewise.
929         (Archive::include_member): Change return type to bool.  Return
930         false if first included object has incompatible target.  Set
931         included_member_ field.
932         (Add_archive_symbols::run): If add_symbols returns false, requeue
933         Read_symbols task.
934         * archive.h (class Archive): Add included_member_ field.
935         Initialize it in constructor.  Add input_file and searched_for
936         methods.  Update declarations.
937         (class Add_archive_symbols): Add dirpath_, dirindex_, and
938         input_argument_ fields.  Add them to constructor.  Change all
939         callers.
940         * script.cc: Include "target-select.h".
941         (class Parser_closure): Add skip_on_incompatible_target_ and
942         found_incompatible_target_ fields.  Add
943         skip_on_incompatible_target parameter to constructor.  Change all
944         callers.  Add methods skip_on_incompatible_target,
945         clear_skip_on_incompatible_target, found_incompatible_target, and
946         set_found_incompatible_target.
947         (read_input_script): Add dirindex parameter.  Change all callers.
948         If parser finds an incompatible target, requeue Read_symbols
949         task.
950         (script_set_symbol): Clear skip_on_incompatible_target in
951         closure.
952         (script_add_assertion, script_parse_option): Likewise.
953         (script_start_sections, script_add_phdr): Likewise.
954         (script_check_output_format): New function.
955         * script.h (read_input_script): Update declaration.
956         * script-c.h (script_check_output_format): Declare.
957         * yyscript.y (file_cmd): Handle OUTPUT_FORMAT.
958         (ignore_cmd): Remove OUTPUT_FORMAT.
959         * fileread.cc (Input_file::Input_file): Add explicit this.
960         (Input_file::will_search_for): New function.
961         (Input_file::open): Add pindex parameter.  Change all callers.
962         * fileread.h (class Input_file): Add input_file_argument method.
963         Declare will_search_for.  Update declarations.
964         * object.cc (make_elf_object): Add punconfigured parameter.
965         Change all callers.
966         * object.h (class Object): Make input_file public.  Add
967         searched_for method.
968         (make_elf_object): Update declaration.
969         * dirsearch.cc (Dirsearch::find): Add pindex parameter.  Use it to
970         restart search.
971         * dirsearch.h (class Dirsearch): Update declaration.
972         * options.h (class General_options): Add --warn-search-mismatch.
973         * parameters.cc (Parameters::is_compatible_target): New function.
974         * parameters.h (class Parameters): Declare is_compatible_target.
975         * workqueue.cc (Workqueue::add_blocker): New function.
976         * workqueue.h (class Workqueue): Declare add_blocker.
977
978         * fileread.cc (Input_file::open): Remove options parameter.
979         Change all callers.
980         (Input_file::open_binary): Likewise.
981         * script.cc (read_input_script): Likewise.
982         * readsyms.h (class Read_symbols): Remove options_ field.  Remove
983         options parameter from constructor.  Change all callers.
984         (class Read_script): Likewise.
985         * fileread.h (class Input_file): Update declarations.
986         * script.h (read_input_script): Update declaration.
987
988 2009-03-10  Nick Clifton  <nickc@redhat.com>
989
990         * po/es.po: New Spanish translation.
991
992 2009-03-06  Cary Coutant  <ccoutant@google.com>
993
994         * options.cc (parse_short_option): Keep dash_z from registering itself.
995
996 2009-03-03  Ian Lance Taylor  <iant@google.com>
997
998         PR 9918
999         * target-reloc.h (relocate_section): Pass output_section to
1000         relocate.
1001         * i386.cc (Target_i386::should_apply_static_reloc): Add
1002         output_section parameter.  Change all callers.
1003         (Target_i386::Relocate::relocate): Add output_section parameter.
1004         * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
1005         * sparc.cc (Target_sparc::Relocate::relocate): Likewise.
1006         * powerpc.cc (Target_powerpc::Relocate::relocate): Likewise.
1007         * testsuite/two_file_shared.sh: New script.
1008         * testsuite/Makefile.am (check_SCRIPTS): Add two_file_shared.sh.
1009         (check_DATA): Add two_file_shared.dbg.
1010         (two_file_shared.dbg): New target.
1011         * testsuite/Makefile.in: Rebuild.
1012
1013 2009-03-01  Ian Lance Taylor  <iant@google.com>
1014
1015         * configure.ac: Check for byteswap.h.
1016         * configure: Rebuild.
1017         * config.in: Rebuild.
1018
1019 2009-03-01  Mikolaj Zalewski  <mikolajz@google.com>
1020
1021         * layout.cc (Layout::find_or_add_kept_section): New function.
1022         (Layout::add_comdat): Removed.
1023         * layout.h (struct Kept_section): Move out of class Layout.
1024         Remove trailing underscores from field names.  Add group_sections
1025         field.  Rename group_ field to is_group.  Change all uses.
1026         (class Layout): Declare find_or_add_kept_section, not add_comdat.
1027         * object.cc (Sized_relobj::Sized_relobj): Don't initialize
1028         comdat_groups_ field.
1029         (Sized_relobj::include_section_group): Use
1030         find_or_add_kept_section and Kept_section::group_sections.
1031         (Sized_relobj::include_linkonce_section): Likewise.
1032         * object.cc (class Sized_relobj): Don't define Comdat_group or
1033         Comdat_group_table.  Remove find_comdat_group and
1034         add_comdat_group.  Remove comdat_groups_ field.
1035         * plugin.cc (include_comdat_group): Use
1036         Layout::find_or_add_kept_section.
1037
1038 2009-02-28  Ian Lance Taylor  <iant@google.com>
1039
1040         * README: --gc-sections and map files are now supported.  Document
1041         some build requirements.
1042
1043         PR 6992
1044         * symtab.cc (Symbol_table::sized_write_section_symbol): In a
1045         relocatable link set the value of the section symbol to zero.
1046         * object.cc (Sized_relobj::do_finalize_local_symbols): In a
1047         relocatable link don't include the section address in the local
1048         symbol value.
1049
1050 2009-02-27  Ian Lance Taylor  <iant@google.com>
1051
1052         PR 6811
1053         * options.h (class Search_directory): Add is_system_directory.
1054         (class General_options): Declare is_in_system_directory.
1055         * options.cc (get_relative_sysroot): Make static.
1056         (get_default_sysroot): Make static.
1057         (General_optoins::is_in_system_directory): New function.
1058         * fileread.cc (Input_file::is_in_system_directory): New function.
1059         * fileread.h (class Input_file): Declare is_in_system_directory.
1060         * object.h (class Object): Add is_in_system_directory.
1061         (class Input_objects): Remove system_library_directory_ field.
1062         * object.cc (Input_objects::add_object): Don't set
1063         system_library_directory_.
1064         (input_objects::found_in_system_library_directory): Remove.
1065         * symtab.cc (Symbol_table::write_globals): Remove input_objects
1066         parameter.  Change all callers.
1067         (Symbol_table::sized_write_globals): Likewise.
1068         (Symbol_table::warn_about_undefined_dynobj_symbol): Likewise.
1069         Call Object::is_in_system_directory.
1070         * symtab.h (class Symbol_table): Update declarations.
1071
1072         PR 5990
1073         * descriptors.h (Open_descriptor): Add is_on_stack field.
1074         * descriptors.cc (Descriptors::open): If the descriptor is on the
1075         top of the stack, remove it.  Initialize is_on_stack field.
1076         (Descriptors::release): Only add pod to stack if it is not on the
1077         stack already.
1078         (Descriptors::close_some_descriptor): Clear stack_next and
1079         is_on_stack fields.
1080
1081         PR 7091
1082         * output.cc (Output_section::find_starting_output_address): Rename
1083         from starting_output_address; add PADDR parameter; change return
1084         type.
1085         * output.h (class Output_section): Declare
1086         find_starting_output_address instead of starting_output_address.
1087         * object.cc (Sized_relobj::do_finalize_local_symbols): Handle a
1088         section symbol for which we can't find a merge section.
1089
1090         PR 9836
1091         * symtab.cc (Symbol_table::add_from_object): If the visibility is
1092         hidden or internal, force the symbol to be local.
1093         * resolve.cc (Symbol::override_visibility): Define.
1094         (Symbol::override_base): Use override_visibility.
1095         (Symbol_table::resolve): Likewise.
1096         (Symbol::override_base_with_special): Likewise.
1097         (Symbol_table::override_with_special): If the visibility is hidden
1098         or internal, force the symbol to be local.
1099         * symtab.h (class Symbol): Add set_visibility and
1100         override_visibility.
1101         * testsuite/ver_test_1.sh: New file.
1102         * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_1.sh.
1103         (check_DATA): Add ver_test_1.syms.
1104         (ver_test_1.syms): New target.
1105         * testsuite/Makefile.in: Rebuild.
1106
1107 2009-02-25  Cary Coutant  <ccoutant@google.com>
1108
1109         * layout.cc (Layout::choose_output_section): Don't rename sections
1110         when using a linker script that has a SECTIONS clause.
1111         * Makefile.in: Regenerate.
1112
1113         * testsuite/Makefile.am (script_test_5.sh): New test case.
1114         * testsuite/Makefile.in: Regenerate.
1115         * testsuite/script_test_5.cc: New file.
1116         * testsuite/script_test_5.sh: New file.
1117         * testsuite/script_test_5.t: New file.
1118
1119 2009-02-13  Rafael Avila de Espindola  <espindola@google.com>
1120
1121         * archive.cc (Archive::include_member): Update calls to add_symbols.
1122         * dynobj.cc (Sized_dynobj<size, big_endian>::make_version_map): Add
1123         the Layout argument.
1124         * dynobj.h (do_add_symbols): Add the Layout argument.
1125         * object.cc (Sized_relobj<size, big_endian>::do_add_symbols): Add the
1126         Layout argument.
1127         * object.h (Object::add_symbols): Add the Layout argument.
1128         (Object::do_add_symbols): Add the Layout argument.
1129         (Sized_relobj::do_add_symbols): Add the Layout argument.
1130         * plugin.cc (Sized_pluginobj<size, big_endian>::do_add_symbols):
1131         Unify the two versions.
1132         (Add_plugin_symbols): Remove.
1133         * plugin.h (Pluginobj::add_symbols, Pluginobj::do_add_symbols): Remove.
1134         (Sized_pluginobj::do_add_symbols): Unify the two versions.
1135         (Add_plugin_symbols): Remove.
1136         * readsyms.cc (Read_symbols::do_read_symbols): Update call to
1137         Add_symbols. Use Add_symbols instead of Add_plugin_symbols.
1138         (Add_symbols::run): Make it work with Pulginobj.
1139
1140 2009-02-06  Ian Lance Taylor  <iant@google.com>
1141
1142         * object.cc (Sized_relobj::do_layout): Make info message start
1143         with lower case letter.
1144
1145 2009-02-06  Mikolaj Zalewski  <mikolajz@google.com>
1146
1147         * binary.cc: Fix file comment.
1148
1149         * options.h (enum Incremental_disposition): Define.
1150         (class General_options): Add new options: --incremental,
1151         --incremental_changed, --incremental_unchanged,
1152         --incremental_unknown.  Add incremental_disposition_ and
1153         implicit_incremental_ fields.
1154         (General_options::incremental_disposition): New function.
1155         (class Position_dependent_options): Add incremental_disposition
1156         option.
1157         (Position_dependent_options::copy_from_options): Set incremental
1158         dispositions.
1159         * options.cc (General_options::parse_incremental_changed): New
1160         function.
1161         (General_options::parse_incremental_unchanged): New function.
1162         (General_options::parse_incremental_unknown): New function.
1163         (General_options::General_options): Initialize new fields
1164         incremental_disposition_ and implicit_incremental_.
1165         (General_options::finalize): Check for uasge of --incremental-*
1166         without --incremental.
1167
1168 2009-02-06  Chris Demetriou  <cgd@google.com>
1169
1170         * gold.h (gold_undefined_symbol): Change to take only a Symbol
1171         pointer and to report location as the file name associated with
1172         the symbol.
1173         (gold_undefined_symbol_at_location): New function to replace the
1174         old gold_undefined_symbol functionality.
1175         * target-reloc.h (relocate_section): Update to use
1176         gold_undefined_symbol_at_location.
1177         * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
1178         Call gold_undefined_symbol function rather than gold_error.
1179         * errors.h (Errors::undefined_symbol): Take location as a
1180         string, rather than calculating it from a relocation.
1181         * errors.cc (Errors::fatal): Print "fatal error:" before the
1182         formatted message.
1183         (Errors::error, Errors::error_at_location): Print "error: "
1184         before the formatted message.
1185         (Errors::undefined_symbol): Take location as a string, rather
1186         than calculating it from a relocation.
1187         (gold_undefined_symbol_at_location): New function akin to
1188         old gold_undefined_symbol, calculates location from relocation.
1189         (gold_undefined_symbol): Change to take only a Symbol pointer
1190         and to report location as the file name associated with the symbol.
1191         * testsuite/debug_msg.sh: Update for changed error messages.
1192         * testsuite/undef_symbol.sh: Likewise.
1193
1194 2009-02-04  Duncan Sands  <baldrick@free.fr>
1195
1196         PR 9812
1197         * reduced_debug_output.h
1198         (Output_reduced_debug_abbrev_section::failed): Use format for
1199         gold_warning.
1200         (Output_reduced_debug_info_section::faild): Likewise.
1201
1202 2009-01-31  Mikolaj Zalewski  <mikolajz@google.com>
1203
1204         * script.cc (Lazy_demangler): New class.
1205         (Version_script_info::get_symbol_version_helper): Demangle a
1206         symbol only once.
1207
1208 2009-01-29  Cary Coutant  <ccoutant@google.com>
1209
1210         * i386.cc (Target_i386::Relocate::relocate): Recognize non-PIC calls
1211         to __tls_get_addr.
1212         * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
1213
1214 2009-01-28  Ian Lance Taylor  <iant@google.com>
1215
1216         * version.cc (version_string): Bump to 1.9.
1217
1218         * gold.h: Include <cstring> and <stdint.h>.
1219         * version.cc: Include <cstdio>.
1220         * object.cc (Sized_relobj::do_layout): Initialize gc_sd to avoid a
1221         warning.
1222         * reduced_debug_output.cc (insert_into_vector): Rename from
1223         Insert_into_vector; change all callers.  Use Swap_unaligned to
1224         avoid aliasing issue; remove union since it is unnecessary.
1225
1226 2009-01-27  Sriraman Tallam  <tmsriram@google.com>
1227
1228         * Makefile.am (CCFILES): Add gc.cc.
1229         (HFILES): Add gc.h.
1230         * Makefile.in: Regenerate.
1231         * gold.cc (Gc_runner): New class.
1232         (queue_initial_tasks): Call garbage collection related tasks
1233         when corresponding options are invoked.
1234         (queue_middle_gc_tasks): New function.
1235         (queue_middle_tasks): Reorder tasks to allow relocs to be read and
1236         processed early before laying out sections during garbage collection.
1237         * gold.h (queue_middle_gc_tasks): New function.
1238         (is_prefix_of): Move from "layout.cc".
1239         * i386.cc (Target_i386::gc_process_relocs): New function.
1240         * layout.cc (is_prefix_of): Remove. Move to "gold.h"
1241         * main.cc (main): Create object of class "Garbage_collection".
1242         * object.cc (Relobj::copy_symbols_data): New function.
1243         (Relobj::is_section_name_included): New function.
1244         (Sized_relobj::do_layout): Allow this function to be called twice 
1245         during garbage collection and defer layout of section during the 
1246         first call.
1247         * object.h (Relobj::get_symbols_data): New function.
1248         (Relobj::is_section_name_included): New function.
1249         (Relobj::copy_symbols_data): New function.
1250         (Relobj::set_symbols_data): New function.
1251         (Relobj::get_relocs_data): New function.
1252         (Relobj::set_relocs_data): New function.
1253         (Relobj::is_output_section_offset_invalid): New pure virtual function.
1254         (Relobj::gc_process_relocs): New function.
1255         (Relobj::do_gc_process_relocs): New pure virtual function.
1256         (Relobj::sd_): New data member.
1257         (Sized_relobj::is_output_section_offset_invalid): New function.
1258         (Sized_relobj::do_gc_process_relocs): New function.
1259         * options.h (General_options::gc_sections): Modify to not be a no-op.
1260         (General_options::print_gc_sections): New option.
1261         * plugin.cc (Plugin_finish::run): Remove function call to
1262         Plugin_manager::layout_deferred_objects.  Move it to "gold.cc".
1263         * powerpc.cc (Target_powerpc::gc_process_relocs): New function.
1264         * reloc.cc (Read_relocs::run): Add task to process relocs and
1265         determine unreferenced sections when doing garbage collection.
1266         (Gc_process_relocs): New class.
1267         (Sized_relobj::do_gc_process_relocs): New function.
1268         (Sized_relobj::do_scan_relocs): Don't try to scan the relocs for
1269         sections that are garbage collected.
1270         * reloc.h (Gc_process_relocs): New class.
1271         * sparc.cc (Target_sparc::gc_process_relocs): New function.
1272         * symtab.cc (Symbol::should_add_dynsym_entry): Do not add entries for
1273         symbols whose corresponding sections are garbage collected.
1274         (Symbol_table::Symbol_table): Add new parameter for the garbage
1275         collection object.
1276         (Symbol_table::gc_mark_undef_symbols): New function.
1277         (Symbol_table::gc_mark_symbol_for_shlib): New function.
1278         (Symbol_table::gc_mark_dyn_syms): New function.
1279         (Symbol_table::resolve): Do not treat symbols seen in dynamic objects
1280         as garbage.
1281         (Symbol_table::add_from_object): Likewise.
1282         (Symbol_table::add_from_relobj): When building shared objects, do not
1283         treat externally visible symbols as garbage.
1284         (Symbol_table::sized_finalize_symbol): Do not check dynamic symbol
1285         table information for static and relocatable links.
1286         * symtab.h (Symbol_table::set_gc): New function.
1287         (Symbol_table::gc): New function.
1288         (Symbol_table::gc_mark_undef_symbols): New function.
1289         (Symbol_table::gc_mark_symbol_for_shlib): New function.
1290         (Symbol_table::gc_mark_dyn_syms): New function.
1291         (Symbol_table::gc_): New data member.
1292         * target.h (Sized_target::gc_process_relocs): New pure virtual 
1293         function.
1294         * x86_64.cc (Target_x86_64::gc_process_relocs): New function.
1295         * testsuite/testfile.cc (Target_test::gc_process_relocs): New function.
1296
1297 2009-01-20  Chris Faylor <me.sourceware@sourceware.org>
1298
1299         * options.h (General_options::gc_sections): Define as a no-op for now.
1300         (General_options::no_keep_memory): Ditto.
1301         (General_options::Bshareable): Define.
1302         * options.cc (General_options::finalize): Honor -Bshareable.
1303
1304 2009-01-20  Andreas Schwab  <schwab@suse.de>
1305
1306         * powerpc.cc (Powerpc_relocate_functions::rel16_ha): Don't try to
1307         read the value in the contents, since we don't use it.  Use the
1308         template endianness when writing.
1309         (Relocate::relocate): Use it for R_PPC_REL16_HA.
1310
1311 2009-01-19  Andreas Schwab  <schwab@suse.de>
1312
1313         * configure.tgt (powerpc64-*): Fix targ_obj.
1314
1315 2009-01-15  Ian Lance Taylor  <iant@google.com>
1316
1317         * object.cc (Sized_relobj::write_local_symbols): Don't write out
1318         local symbols when stripping all symbols.
1319
1320 2009-01-14  Cary Coutant  <ccoutant@google.com>
1321
1322         * output.cc (Output_reloc): Add explicit instantiations.
1323
1324 2009-01-14  Cary Coutant  <ccoutant@google.com>
1325
1326         * archive.cc (Archive::get_elf_object_for_member): Remove call
1327         to File_read::claim_for_plugin.
1328         * descriptors.cc (Descriptors::open): Remove reference to
1329         is_claimed.
1330         (Descriptors::claim_for_plugin): Remove.
1331         * descriptors.h (Descriptors::claim_for_plugin): Remove.
1332         (Descriptors::is_claimed): Remove.
1333         (claim_descriptor_for_plugin): Remove.
1334         * fileread.cc (File_read::claim_for_plugin): Remove.
1335         * fileread.h (File_read::claim_for_plugin): Remove.
1336         (File_read::descriptor): Reopen descriptor if necessary.
1337         * plugin.cc  (Plugin::load): Add two new APIs to transfer vector.
1338         (Plugin_manager::all_symbols_read): Add task parameter. Change
1339         all callers.
1340         (Plugin_manager::get_input_file): New function.
1341         (Plugin_manager::release_input_file): New function.
1342         (Pluginobj::Pluginobj): Add filesize parameter and initialize
1343         corresponding data member.
1344         (Sized_pluginobj::Sized_pluginobj): Add filesize parameter
1345         and pass to base constructor. Change all callers.
1346         (get_input_file, release_input_file): New functions.
1347         (make_sized_plugin_object): Add filesize parameter. Change all callers.
1348         * plugin.h (Plugin_manager::Plugin_manager): Initialize task_ member.
1349         (Plugin_manager::all_symbols_read): Add task parameter.
1350         (Plugin_manager::get_input_file): New function.
1351         (Plugin_manager::release_input_file): New function.
1352         (Plugin_manager::task_): New data member.
1353         (Pluginobj::Pluginobj): Add filesize parameter.
1354         (Pluginobj::filename): New function.
1355         (Pluginobj::descriptor): New function.
1356         (Pluginobj::filesize): New function.
1357         (Pluginobj::filesize_): New data member.
1358         (Sized_pluginobj::Sized_pluginobj): Add filesize parameter.
1359         * readsyms.cc (Read_symbols::do_read_symbols): Remove call to
1360         File_read::claim_for_plugin; use Object::unlock to unlock the file.
1361
1362         * testsuite/Makefile.am (plugin_test_4): New test case for plugins
1363         with archive libraries.
1364         * testsuite/Makefile.in: Regenerate.
1365         * testsuite/plugin_test.c (struct sym_info): New type.
1366         (get_input_file, release_input_file): New static variables.
1367         (onload): Capture new transfer vector entries.
1368         (claim_file_hook): Stop reading at end of file according to filesize.
1369         Factor out parsing of readelf output into separate function.
1370         (all_symbols_read_hook): Exercise get_input_file and release_input_file
1371         APIs and get the source file name from the symbol table.  Convert
1372         source file name to corresponding object file name.  Print info
1373         message when adding new input files.
1374         (parse_readelf_line): New function.
1375         * testsuite/plugin_test_1.sh: Add checks for new info messages.
1376         * testsuite/plugin_test_2.sh: Likewise.
1377         * testsuite/plugin_test_3.sh: Likewise.
1378         * testsuite/plugin_test_4.sh: New test case.
1379
1380 2009-01-07  Ian Lance Taylor  <iant@google.com>
1381
1382         * version.cc (version_string): Bump to 1.8.
1383
1384 2008-12-23  Cary Coutant  <ccoutant@google.com>
1385
1386         * gold.cc (gold_exit): Call plugin cleanup handlers on exit.
1387         * plugin.cc (Plugin_manager::finish): Rename as
1388         layout_deferred_objects.  Move cleanup to separate function.
1389         (Plugin_manager::cleanup): New function.
1390         (Plugin_finish::run): Call layout_deferred_objects and cleanup
1391         separately.
1392         * plugin.h (Plugin_manager::finish): Rename as
1393         layout_deferred_objects.
1394         (Plugin_manager::cleanup): New function.
1395         (Plugin_manager::cleanup_done): New field.
1396
1397 2008-12-23  Cary Coutant  <ccoutant@google.com>
1398
1399         * plugin.cc (is_visible_from_outside): New function.
1400         (Pluginobj::get_symbol_resolution_info): Call is_visible_from_outside
1401         so we don't return "IR only" status for exported symbols or -r links.
1402
1403         * testsuite/Makefile.am (plugin_test_3): New test case.
1404         * testsuite/Makefile.in: Regenerate.
1405         * testsuite/plugin_test_3.sh: New file.
1406
1407 2008-12-22  Cary Coutant  <ccoutant@google.com>
1408
1409         * object.cc (Sized_relobj::layout_section): New function.
1410         (Sized_relobj::do_layout): Defer layout of input sections until after
1411         plugin has provided replacement files.
1412         (Sized_relobj::do_layout_deferred_sections): New function.
1413         * object.h (Relobj::set_section_offset): Remove virtual keyword.
1414         (Relobj::layout_deferred_sections): New function.
1415         (Relobj::do_layout_deferred_sections): New function.
1416         (Sized_relobj::do_layout_deferred_sections): New function.
1417         (Sized_relobj::layout_section): New function.
1418         (Sized_relobj::Deferred_layout): New structure.
1419         (Sized_relobj::deferred_layout_): New field.
1420         * plugin.cc (Plugin_manager::finish): Renamed, was cleanup.
1421         Change all callers.  Layout deferred sections.
1422         (class Plugin_finish): Renamed, was Plugin_cleanup.  Change all
1423         references.
1424         (Plugin_hook::run): Move code from do_plugin_hook inline.
1425         (Plugin_hook::do_plugin_hook): Remove.
1426         * plugin.h (Plugin_manager::Plugin_manager): Add missing initializers.
1427         (Plugin_manager::finish): Renamed, was cleanup.
1428         (Plugin_manager::should_defer_layout): New function.
1429         (Plugin_manager::add_deferred_layout_object): New function.
1430         (Plugin_manager::Deferred_layout_list): New type.
1431         (Plugin_manager::deferred_layout_objects_): New field.
1432         (Plugin_hook::do_plugin_hook): Remove.
1433
1434 2008-12-17  Ian Lance Taylor  <iant@google.com>
1435
1436         * options.h (class General_options): Add --no case for
1437         --export-dynamic.
1438
1439 2008-12-16  Cary Coutant  <ccoutant@google.com>
1440
1441         * plugin.cc (Plugin::load): Move LDPT_MESSAGE to front of transfer
1442         vector.
1443         (Plugin_manager::claim_file): Create plugin object even if
1444         plugin did not call the add_symbols callback.
1445         (Plugin_obj::get_symbol_resolution_info): Guard against plugin
1446         asking for more symbols than were added.
1447         * testsuite/Makefile.am (plugin_test_1): Add test case with
1448         no global symbols.
1449         (empty.syms): New target.
1450         * testsuite/Makefile.in: Regenerate.
1451         * testsuite/plugin_test.c (claim_file_hook): Add new debug
1452         message. Don't call add_symbols if no globals.
1453         (all_symbols_read_hook): Don't provide replacement for empty
1454         claimed file.
1455
1456 2008-12-12  Ian Lance Taylor  <iant@google.com>
1457
1458         * target-reloc.h (Default_scan_relocatable_relocs): Only discard
1459         r_type == 0 for a local symbol with r_sym == 0.
1460         (scan_relocatable_relocs): Pass r_sym to
1461         local_non_section_strategy.
1462         * reloc.cc (Emit_relocs_strategy::local_non_section_strategy): Add
1463         r_sym parameter.
1464
1465         * configure.ac: Update test for TLS descriptors: they are
1466         supported as of glibc 2.9.
1467         * configure: Rebuild.
1468
1469 2008-12-11  Ian Lance Taylor  <iant@google.com>
1470
1471         PR 7091
1472         * target-reloc.h (Default_scan_relocatable_relocs): For each
1473         function, map r_type == 0 to RELOC_DISCARD.
1474
1475 2008-12-10  Cary Coutant  <ccoutant@google.com>
1476
1477         * layout.cc (Layout::add_comdat): Allow COMDAT group from a replacement
1478         object to override a kept COMDAT group from a plugin object.
1479
1480 2008-12-09  Ian Lance Taylor  <iant@google.com>
1481
1482         PR 7088
1483         * yyscript.y (file_cmd): Handle INPUT.
1484
1485         * testsuite/initpri1.c: Change all declarations to be full
1486         prototypes by adding void, to avoid compiler warnings.
1487
1488 2008-12-05  Rafael Avila de Espindola  <espindola@google.com>
1489
1490         * options.cc (General_options::parse_plugin_opt): New.
1491         (General_options::add_plugin): The argument now is just the filename.
1492         (General_options::add_plugin_option): New.
1493         * options.h (plugin_opt): New.
1494         (add_plugin): Change argument name.
1495         (add_plugin_option): New.
1496         * plugin.cc (Plugin::load): Don't parse the plugin option.
1497         * plugin.h (Plugin::Plugin): Rename argument. Init filename_.
1498         (Plugin::add_option): New.
1499         (Plugin::args_): Change type.
1500         (Plugin::filename_): New.
1501         (Plugin_manager::add_plugin_option): New.
1502         * testsuite/Makefile.am (plugin_test_1): Use new syntax.
1503         * testsuite/Makefile.in: Regenerate.
1504
1505 2008-12-05  Cary Coutant  <ccoutant@google.com>
1506
1507         * layout.cc (Layout::include_section): Check for SHF_EXCLUDE.
1508         Handle --strip-lto-sections option.
1509         * options.h (strip_lto_sections): New option.
1510
1511 2008-12-01  Cary Coutant  <ccoutant@google.com>
1512
1513         * plugin.cc (ld_plugin_message): Change format parameter to const.
1514         Fix mismatch between new[] and delete.
1515
1516 2008-11-14  Cary Coutant  <ccoutant@google.com>
1517
1518         * reloc.cc (Sized_relobj::do_read_relocs): Use constant invalid_address
1519         instead of -1U.
1520
1521 2008-11-05  Craig Silverstein  <csilvers@google.com>
1522
1523         * options.cc (General_options::parse_dynamic_list): New function.
1524         * options.h (General_options): New flags dynamic_list,
1525         dynamic_list_data, dynamic_list_cpp_new, and
1526         dynamic_list_cpp_typeinfo.  New variable dynamic_list_.
1527         (General_options::in_dynamic_list): New function.
1528         * script.cc (Lex::Mode): New enum DYNAMIC_LIST.
1529         (Lex::can_start_name): Add support for DYNAMIC_LIST mode.
1530         (Lex::can_continue_name): Likewise.
1531         (yylex): Likewise.
1532         (read_script_file): New parameter script_options.
1533         (read_dynamic_list): New function.
1534         (Script_options::define_dynamic_list): New function.
1535         (dynamic_list_keyword_parsecodes): New variable.
1536         (dynamic_list_keywords): New variable.
1537         * script.h (Script_options::define_dynamic_list): New function
1538         prototype.
1539         (read_dynamic_list): New function prototype.
1540         * symtab.cc (strprefix): New macro.
1541         (Symbol::should_add_dynsym_entry): Support dynamic_list,
1542         dynamic_list_data, dynamic_list_cpp_new, and
1543         dynamic_list_cpp_typeinfo.
1544         * yyscript.y (PARSING_DYNAMIC_LIST): New token.
1545         (dynamic_list_expr): New rule.
1546         (dynamic_list_nodes): Likewise.
1547         (dynamic_list_node): Likewise.
1548         * testsuite/Makefile.am (dynamic_list): New test.
1549         * testsuite/Makefile.in: Regenerated.
1550         * testsuite/dynamic_list.t: New file.
1551         * testsuite/dynamic_list.sh: New file.
1552
1553 2008-11-05  Craig Silverstein  <csilvers@google.com>
1554
1555         * testsuite/tls_test_c.c: Add prototype for t11 and t11_last.
1556         * testsuite/tls_test_c.c (t11): Add explicit "void" to prototype.
1557         (t11_last): Likewise.
1558         * testsuite/ver_test_6.c (main): Likewise.
1559
1560 2008-10-07  Cary Coutant  <ccoutant@google.com>
1561
1562         * options.c (General_options::finalize): Add check for -static and
1563         -shared.
1564         * gold.cc (queue_middle_tasks): Assert that list of dynamic objects
1565         is not empty.
1566
1567 2008-10-02  Cary Coutant  <ccoutant@google.com>
1568
1569         * plugin.cc (make_sized_plugin_object): Fix conditional
1570         compilation to work when not all targets are enabled.
1571
1572 2008-09-29  Cary Coutant  <ccoutant@google.com>
1573
1574         * archive.cc (Archive::get_file_and_offset): Use filename instead
1575         of name to get library path.
1576         (Archive::include_member): Unlock external member of a thin archive.
1577
1578         * testsuite/Makefile.am (TEST_AR): New variable.
1579         (thin_archive_test_1): New test.
1580         (thin_archive_test_2): New test.
1581         * testsuite/Makefile.in: Regenerate.
1582         * testsuite/thin_archive_main.cc: New file.
1583         * testsuite/thin_archive_test_1.cc: New file.
1584         * testsuite/thin_archive_test_2.cc: New file.
1585         * testsuite/thin_archive_test_3.cc: New file.
1586         * testsuite/thin_archive_test_4.cc: New file.
1587
1588 2008-09-29  Cary Coutant  <ccoutant@google.com>
1589
1590         * mapfile.cc (Mapfile::print_input_section): Change -1U to -1ULL.
1591         * object.cc (Sized_relobj::do_layout): Use constant invalid_address
1592         instead of -1U.
1593         (Sized_relobj::do_finalize_local_symbols): Likewise.
1594         (Sized_relobj::map_to_kept_section): Likewise.
1595         * object.h (Sized_relobj::invalid_address): New constant.
1596         (Sized_relobj::do_output_section_offset): Check for invalid_address
1597         and return -1ULL.
1598         * output.cc (Output_reloc::local_section_offset): Use constant
1599         invalid_address instead of -1U.
1600         (Output_reloc::get_address): Likewise.
1601         (Output_section::output_address): Change -1U to -1ULL.
1602         * output.h (Output_reloc::invalid_address): New constant.
1603         * reloc.cc (Sized_relobj::write_sections): Use constant
1604         invalid_address instead of -1U.
1605         (Sized_relobj::relocate_sections): Likewise.
1606         * symtab.cc (Symbol_table::sized_finalize_symbol): Handle symbol
1607         values for merge sections.
1608         * target-reloc.h (relocate_for_relocatable): Use constant
1609         invalid_address instead of -1U.
1610
1611 2008-09-19  Cary Coutant  <ccoutant@google.com>
1612
1613         Add plugin functionality for link-time optimization (LTO).
1614         * configure.ac (plugins): Add --enable-plugins option.
1615         * configure: Regenerate.
1616         * config.in: Regenerate.
1617         * Makefile.am (LIBDL): New variable.
1618         (CCFILES): Add plugin.cc.
1619         (HFILES): Add plugin.h.
1620         (ldadd_var): Add LIBDL.
1621         * Makefile.in: Regenerate.
1622
1623         * archive.cc: Include "plugin.h".
1624         (Archive::setup): Don't preread archive symbols when using a plugin.
1625         (Archive::get_file_and_offset): Add memsize parameter.  Change callers.
1626         (Archive::get_elf_object_for_member): Call plugin hooks for claiming
1627         files.
1628         (Archive::include_member): Add symbols from plugin objects.
1629         * archive.h (Archive::get_file_and_offset): Add memsize parameter.
1630         * descriptors.cc (Descriptors::open): Check for file descriptors
1631         abandoned by plugins.
1632         (Descriptors::claim_for_plugin): New function.
1633         * descriptors.h (Descriptors::claim_for_plugin): New function.
1634         (Open_descriptor::is_claimed): New field.
1635         (claim_descriptor_for_plugin): New function.
1636         * fileread.cc (File_read::claim_for_plugin): New function.
1637         * fileread.h (File_read::claim_for_plugin): New function.
1638         (File_read::descriptor): New function.
1639         * gold.cc: Include "plugin.h".
1640         (queue_initial_tasks): Add task to call plugin hooks for generating
1641         new object files.
1642         * main.cc: Include "plugin.h".
1643         (main): Load plugin libraries.
1644         * object.h (Pluginobj): Declare.
1645         (Object::pluginobj): New function.
1646         (Object::do_pluginobj): New function.
1647         (Object::set_target): New function.
1648         * options.cc: Include "plugin.h".
1649         (General_options::parse_plugin): New function.
1650         (General_options::General_options): Initialize plugins_ field.
1651         (General_options::add_plugin): New function.
1652         * options.h (Plugin_manager): Declare.
1653         (General_options): Add --plugin option.
1654         (General_options::has_plugins): New function.
1655         (General_options::plugins): New function.
1656         (General_options::add_plugin): New function.
1657         (General_options::plugins_): New field.
1658         * plugin.cc: New file.
1659         * plugin.h: New file.
1660         * readsyms.cc: Include "plugin.h".
1661         (Read_symbols::do_read_symbols): Check for archive before checking
1662         for ELF file.  Call plugin hooks to claim files.
1663         * resolve.cc (Symbol_table::resolve): Record when symbol is referenced
1664         from a real object file; force override when processing replacement
1665         files.
1666         * symtab.cc (Symbol::init_fields): Initialize in_real_elf_ field.
1667         (Symbol::init_base_object): Likewise.
1668         (Symbol::init_base_output_data): Likewise.
1669         (Symbol::init_base_output_segment): Likewise.
1670         (Symbol::init_base_constant): Likewise.
1671         (Symbol::init_base_undefined): Likewise.
1672         (Symbol::output_section): Assert that object is not a plugin.
1673         (Symbol_table::add_from_pluginobj): New function.
1674         (Symbol_table::sized_finalize_symbol): Treat symbols from plugins as
1675         undefined.
1676         (Symbol_table::sized_write_globals): Likewise.
1677         (Symbol_table::add_from_pluginobj): Instantiate template.
1678         * symtab.h (Sized_pluginobj): Declare.
1679         (Symbol::in_real_elf): New function.
1680         (Symbol::set_in_real_elf): New function.
1681         (Symbol::in_real_elf_): New field.
1682         (Symbol_table::add_from_pluginobj): New function.
1683
1684         * testsuite/Makefile.am (AM_CFLAGS): New variable.
1685         (LIBDL): New variable.
1686         (LDADD): Add LIBDL.
1687         (check_PROGRAMS): Add plugin_test_1 and plugin_test_2.
1688         (check_SCRIPTS): Add plugin_test_1.sh and plugin_test_2.sh.
1689         (check_DATA): Add plugin_test_1.err and plugin_test_2.err.
1690         (MOSTLYCLEANFILES): Likewise.
1691         * testsuite/Makefile.in: Regenerate.
1692         * testsuite/plugin_test.c: New file.
1693         * testsuite/plugin_test_1.sh: New file.
1694         * testsuite/plugin_test_2.sh: New file.
1695
1696 2008-09-16  Ian Lance Taylor  <iant@google.com>
1697
1698         * target-reloc.h (relocate_section): Check whether a symbol is
1699         defined by the ABI before reporting an undefined symbol error.
1700         * target.h (Target::is_defined_by_abi): Make parameter const.
1701         (Target::do_is_defined_by_abi): Likewise.
1702         * i386.cc (Target_i386::do_is_defined_by_abi): Likewise.
1703         * powerpc.cc (Target_powerpc::do_is_defined_by_abi): Likewise.
1704         * sparc.cc (Target_sparc::do_is_defined_by_abi): Likewise.
1705         * x86_64.cc (Target_x86_64::do_is_defined_by_abi): Likewise.
1706         * testsuite/Makefile.am (tls_test_shared.so): Add -Wl,-z,defs.
1707         * testsuite/Makefile.in: Rebuild.
1708
1709         * fileread.cc (make_view): Add casts to avoid warning.
1710
1711 2008-09-16  Alexandre Oliva  <aoliva@redhat.com>
1712
1713         * i386.cc (Target_i386::define_tls_base_symbol): Update comments.
1714         * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
1715
1716 2008-09-16  Alexandre Oliva  <aoliva@redhat.com>
1717
1718         * options.h (General_options::output_is_executable): New.
1719         (General_options::output_is_pie): New.
1720         * i386.cc (Target_i386::define_tls_base_symbol): Use SEGMENT_START
1721         for shared libraries.
1722         * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
1723
1724 2008-09-11  Chris Demetriou  <cgd@google.com>
1725
1726         * options.h (origin): New -z option.
1727         * layout.cc (Layout:finish_dynamic_section): If "-z origin"
1728         is specified, set DF_ORIGIN in DT_FLAGS and set DF_1_ORIGIN
1729         in DT_FLAGS_1.
1730
1731 2008-09-05  Cary Coutant  <ccoutant@google.com>
1732
1733         * fileread.cc (File_read::make_view): Add check for attempt to map
1734         beyond end of file.
1735
1736 2008-09-05  Cary Coutant  <ccoutant@google.com>
1737
1738         * symtab.cc (Symbol_table::add_from_dynobj): Fix typos in
1739         explicit instantiations.
1740
1741 2008-08-28  Kris Van Hees  <kris.van.hees@oracle.com>
1742
1743         PR gold/6858
1744         * options.cc (General_options::finalize): Allow undefined symbols
1745         in shlibs if linking -shared.
1746
1747         PR gold/6859
1748         * symtab.cc (Symbol::init_base_undefined): Mark explicitly undefined
1749         symbols as not needing a dynsym entry.
1750
1751 2008-08-20  Craig Silverstein  <csilvers@google.com>
1752
1753         * fileread.cc (File_read::open): Do not lock the file unless it
1754         was successfully opened.
1755
1756 2008-08-14  Cary Coutant  <ccoutant@google.com>
1757
1758         * x86_64.cc (Target_x86_64::Relocate::relocat_tls):
1759         Use addend for DTPOFF32, DTPOFF64, and TPOFF32 relocs.
1760         * testsuite/tls_test.cc (struct int128): 128-bit struct
1761         for testing TLS relocs with non-zero addend.
1762         (v12): New TLS variable.
1763         (t12): New test.
1764         (t_last): Add check for v12.
1765         * testsuite/tls_test.h (t12): New function.
1766         * testsuite/tls_test_main.cc (thread_routine): Call new test.
1767
1768 2008-08-13  Ian Lance Taylor  <iant@google.com>
1769
1770         * layout.cc (Layout::attach_allocated_section_to_segment): Don't
1771         set tls_segment_ or relro_segment_.
1772         (Layout::make_output_segment): Set tls_segment_ and relro_segment_
1773         when appropriate.
1774         * output.h (Output_section::clear_is_relro): New function.
1775         * output.cc (Output_segment::add_output_section): Handle SHF_TLS
1776         sections specially even when output_data_ is empty.
1777         (Output_segment::maximum_alignment): When first section is relro,
1778         only force alignment for PT_LOAD segments.
1779         * script.cc (script_data_segment_align): New function.
1780         (script_data_segment_relro_end): New function.
1781         * script-c.h (script_data_segment_align): Declare.
1782         (script_data_segment_relro_end): Declare.
1783         * script-sections.h (class Script_sections): Declare
1784         data_segment_align and data_segment_relro_end.  Add fields
1785         segment_align_index_ and saw_relro_end_.
1786         * script-sections.cc (class Sections_element): Add set_is_relro
1787         virtual function.  Add new bool* parameter to place_orphan_here.
1788         Add get_output_section virtual function.
1789         (class Output_section_definition): Add set_is_relro.  Add new
1790         bool* parameter to place_orphan_here.  Add get_output_section.
1791         Add is_relro_ field.
1792         (Output_section_definition::Output_section_definition): Initialize
1793         evaluated_address_, evaluated_load_address, evaluated_addralign_,
1794         and is_relro_ fields.
1795         (Output_section_definition::place_orphan_here): Add is_relro
1796         parameter.
1797         (Output_section_definition::set_section_addresses): Set relro for
1798         output section.
1799         (Output_section_definition::alternate_constraint): Likewise.
1800         (class Orphan_output_section): Add new bool* parameter to
1801         place_orphan_here.  Add get_output_section.
1802         (Orphan_output_section::place_orphan_here): Add is_relro
1803         parameter.
1804         (Script_sections::Script_sections): Initialize
1805         data_segment_align_index_ and saw_relro_end_.
1806         (Script_sections::data_segment_align): New function.
1807         (Script_sections::data_segment_relro_end): New function.
1808         (Script_sections::place_orphan): Set or clear is_relro.
1809         (Script_sections::set_section_addresses): Force alignment of first
1810         TLS section.
1811         * yyscript.y (exp): Call script_data_segment_align and
1812         script_data_segment_relro_end.
1813         * testsuite/relro_script_test.t: New file.
1814         * testsuite/relro_test.cc (using_script): Declare.
1815         (t1, t2): Test using_script.
1816         * testsuite/Makefile.am (check_PROGRAMS): Add relro_script_test.
1817         (relro_script_test_SOURCES): Define.
1818         (relro_script_test_DEPENDENCIES): Define.
1819         (relro_script_test_LDFLAGS): Define.
1820         (relro_script_test_LDADD): Define.
1821         (relro_script_test.so): New target.
1822         * testsuite/Makefile.in: Rebuild.
1823
1824 2008-08-06  Cary Coutant <ccoutant@google.com>
1825
1826         * archive.cc (Archive::total_archives, Archive::total_members)
1827         (Archive::total_members_loaded): New variables.
1828         (Archive::setup): Add parameter.  Add option to preread
1829         archive symbols.
1830         (Archive::read_armap): Add counter.
1831         (Archive::get_file_and_offset): New function.
1832         (Archive::get_elf_object_for_member): New function.
1833         (Archive::read_all_symbols): New function.
1834         (Archive::read_symbols): New function.
1835         (Archive::add_symbols): Add counters.
1836         (Archive::include_all_members): Use armap to find members if it's
1837         already built.
1838         (Archive::include_member): Skip reading symbols if already read.
1839         Factored code into Archive::get_file_and_offset and
1840         Archive::get_elf_object_for_member.  Changed call to
1841         Mapfile::report_include_archive_member.
1842         (Archive::print_stats): New function.
1843         * archive.h: Declare Object and Read_symbols_data classes.
1844         (Archive::Archive): Add initializers for new members.
1845         (Archive::setup): Add parameter.
1846         (Archive::print_stats): New function.
1847         (Archive::total_archives, Archive::total_members)
1848         (Archive::total_members_loaded): New variables.
1849         (Archive::get_file_and_offset): New function.
1850         (Archive::get_elf_object_for_member): New function.
1851         (Archive::read_all_symbols): New function.
1852         (Archive::read_symbols): New function.
1853         (Archive::Archive_member): New class.
1854         (Archive::members_): New member.
1855         (Archive::num_members_): New member.
1856         * main.cc: Include archive.h.
1857         (main): Call Archive::print_stats.
1858         * mapfile.cc (Mapfile::report_include_archive_member): Delete
1859         archive parameter; member_name is now the fully-decorated name.
1860         * mapfile.h (Mapfile::report_include_archive_member): Likewise.
1861         * options.h: (General_options): Add --preread-archive-symbols option.
1862         * readsyms.cc (Read_symbols::do_read_symbols): Change call to
1863         Archive::setup.
1864
1865 2008-08-04  Ian Lance Taylor  <iant@google.com>
1866
1867         * symtab.h (Symbol::use_plt_offset): New function.
1868         * i386.cc (Relocate::relocate): Call Symbol::use_plt_offset.
1869         * powerpc.cc (Relocate::relocate): Likewise.
1870         * sparc.cc (Relocate::relocate): Likewise.
1871         * x86_64.cc (Relocate::relocate): Likewise.
1872         * testsuite/weak_plt.sh: New test.
1873         * testsuite/weak_plt_main.cc: New test.
1874         * testsuite/weak_plt_shared.cc: New test.
1875         * testsuite/Makefile.am (check_SCRIPTS): Add weak_plt.sh.
1876         (check_PROGRAMS): Add weak_plt.
1877         (check_DATA): Add weak_plt_shared.so.
1878         (weak_plt_main_pic.o, weak_plt): New targets.
1879         (weak_plt_shared_pic.o, weak_plt_shared.so): New targets.
1880         * testsuite/Makefile.in: Rebuild.
1881
1882         * testsuite/Makefile.am (weak_alias_test_1.so): Depend upon
1883         gcctestdir/ld.
1884         (weak_alias_test_2.so, weak_alias_test_4.so): Likewise.
1885         * testsuite/Makefile.in: Rebuild.
1886
1887 2008-08-04  Alan Modra  <amodra@bigpond.net.au>
1888
1889         * Makefile.am (POTFILES.in): Set LC_ALL=C.
1890         * Makefile.in: Regenerate.
1891         * po/POTFILES.in: Regenerate.
1892
1893 2008-07-29  Ian Lance Taylor  <iant@google.com>
1894
1895         * script.cc (Script_options::finalize_symbols): Finalize SECTIONS
1896         symbols before other symbols.
1897         * testsuite/script_test_2.cc (test_addr): Declare.
1898         (test_addr_alias): Declare.
1899         (main): Check that test_addr and test_addr_alias have the right
1900         values.
1901         * testsuite/script_test_2.t: Define test_addr_alias and
1902         test_addr.
1903
1904 2008-07-24  Ian Lance Taylor  <iant@google.com>
1905
1906         PR 5990
1907         * descriptors.cc: New file.
1908         * descriptors.h: New file.
1909         * gold-threads.h (class Hold_optional_lock): New class.
1910         * fileread.cc: Include "descriptors.h".
1911         (File_read::~File_read): Release descriptor rather than closing
1912         it.
1913         (File_read::open) [file]: Call open_descriptor rather than open.
1914         Set is_descriptor_opened_.
1915         (File_read::open) [memory]: Assert that descriptor is not open.
1916         (File_read::reopen_descriptor): New function.
1917         (File_read::release): Release descriptor.
1918         (File_read::do_read): Make non-const.  Reopen descriptor.
1919         (File_read::read): Make non-const.
1920         (File_read::make_view): Reopen descriptor.
1921         (File_read::do_readv): Likewise.
1922         * fileread.h (class File_read): Add is_descriptor_opened_ field.
1923         Update declarations.
1924         * layout.cc: Include "descriptors.h".
1925         (Layout::create_build_id): Use open_descriptor rather than open.
1926         * output.cc: Include "descriptors.h".
1927         (Output_file::open): Use open_descriptor rather than open.
1928         * archive.cc (Archive::const_iterator): Change Archive to be
1929         non-const.
1930         (Archive::begin, Archive::end): Make non-const.
1931         (Archive::count_members): Likewise.
1932         * archive.h (class Archive): Update declarations.
1933         * object.h (Object::read): Make non-const.
1934         * Makefile.am (CCFILES): Add descriptors.cc.
1935         (HFILES): Add descriptors.h.
1936         * Makefile.in: Rebuild.
1937
1938         PR 6716
1939         * gold.h: Always include <clocale>.  Add Solaris workarounds
1940         following code in binutils/sysdep.h.
1941
1942         PR 6048
1943         * ehframe.cc (Eh_frame::add_ehframe_input_section): Check whether
1944         this->eh_frame_hdr_ is NULL before using it.
1945
1946         * dynobj.cc (Versions::Versions): Update comment.
1947
1948         * dynobj.cc (Versions::Versions): If there is an soname, use it as
1949         the base version name.
1950
1951         * stringpool.cc (Stringpool_template::add_with_length): Set key to
1952         array size plus one.
1953         (Stringpool_template::set_string_offsets): Subtract one from key
1954         before using it as an array index.
1955         (Stringpool_template::get_offset_with_length): Likewise.
1956         (Stringpool_template::write_to_buffer): Likewise.
1957         * stringpool.h (Stringpool_template::get_offset_from_key):
1958         Likewise.
1959
1960 2008-07-23  Ian Lance Taylor  <iant@google.com>
1961
1962         PR 6658
1963         * object.h (Merged_symbol_value::value): Do our best to handle a
1964         negative addend.
1965
1966         PR 6647
1967         * script.cc (Version_script_info::get_versions): Don't add empty
1968         version tag to return value.
1969         (Version_script_info::get_symbol_version_helper): Change return
1970         type to bool.  Add pversion parameter.  Change all callers.
1971         (script_register_vers_node): Don't require a non-NULL tag.
1972         * script.h (class Version_script_info): Update declarations.
1973         (Version_script_info::get_symbol_version): Change return type to
1974         bool.  Add version parameter.  Change all callers.
1975         * symtab.cc (Sized_symbol::add_from_relobj): Rework version
1976         handling.  Handle an empty version from a version script.
1977         (Symbol_table::define_special_symbol): Likewise.
1978         * testsuite/ver_test_10.script: New file.
1979         * testsuite/ver_test_10.sh: New file.
1980         * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_10.sh.
1981         (check_DATA): Add ver_test_10.syms.
1982         (ver_test_10.syms, ver_test_10.so): New target.
1983         * testsuite/Makefile.in: Rebuild.
1984
1985 2008-07-23  Simon Baldwin  <simonb@google.com>
1986
1987         * symtab.cc (Symbol_table::sized_write_symbol): Only set st_size
1988         to zero for undefined symbols from dynamic libraries.
1989
1990 2008-07-23  Ian Lance Taylor  <iant@google.com>
1991
1992         * symtab.cc (Symbol_table::resolve): Remove version parameter.
1993         Change all callers.
1994         * symtab.h (class Symbol_table): Update declaration.
1995         * testsuite/ver_test_9.cc: New file.
1996         * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_9.
1997         (ver_test_9_SOURCES, ver_test_9_DEPENDENCIES): Define.
1998         (ver_test_9_LDFLAGS, ver_test_9_LDADD): Define.
1999         (ver_test_9.so, ver_test_9.o): New targets.
2000         * testsuite/Makefile.in: Rebuild.
2001
2002 2008-07-22  Ian Lance Taylor  <iant@google.com>
2003
2004         * options.h (class General_options): Define --check-sections.
2005         * layout.cc (Layout::set_segment_offsets): Handle
2006         --check-sections.
2007
2008         * options.h (class General_options): Define -n/--nmagic and
2009         -N/--omagic.
2010         * options.cc (General_options::finalize): For -n/--nmagic or
2011         -N/--omagic, set -static.
2012         * layout.cc (Layout::attach_allocated_section_to_segment): If
2013         -N/--omagic, don't put read-only and read-write sections in
2014         different segments.
2015         (Layout::find_first_load_seg): If -N/--omagic, don't insist on
2016         finding a read-only segment.
2017         (Layout::set_segment_offsets): If -N/--omagic or -n/--nmagic,
2018         don't set the minimum segment alignment to the common page size,
2019         and don't set the file offset to the address modulo the page size.
2020         * script-sections.cc (Script_sections::create_segments): If
2021         -n/--omagic, don't put read-only and read-write sections in
2022         different segments.
2023
2024         * cref.cc: New file.
2025         * cref.h: New file.
2026         * options.h (class General_options): Add --print-symbol-counts.
2027         * main.cc (main): Issue defined symbol report if requested.
2028         * archive.cc (Archive::interpret_header): Make into a const member
2029         function.
2030         (Archive::add_symbols): Call Input_objects::archive_start and
2031         archive_stop.
2032         (Archive::const_iterator): Define new class.
2033         (Archive::begin, Archive::end): New functions.
2034         (Archive::include_all_members): Rewrite to use iterator.
2035         (Archive::count_members): New function.
2036         * archive.h (class Archive): Update declarations.
2037         (Archive::filename): New function.
2038         * object.cc: Include "cref.h".
2039         (Sized_relobj::Sized_relobj): Initialize defined_count_.
2040         (Sized_relobj::do_get_global_symbol_counts): New function.
2041         (Input_objects::add_object): Add object to cross-referencer.
2042         (Input_objects::archive_start): New function.
2043         (Input_objects::archive_stop): New function.
2044         (Input_objects::print_symbol_counts): New function.
2045         * object.h: Declare Cref and Archive.
2046         (Object::get_global_symbol_counts): New function.
2047         (Object::do_get_global_symbol_counts): New pure virtual function.
2048         (class Sized_relobj): Add defined_count_ field.  Update
2049         declarations.
2050         (class Input_objects): Add cref_ field.  Update constructor.
2051         Update declarations.
2052         * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize symbols_ and
2053         defined_count_.
2054         (Sized_dynobj::do_add_symbols): Allocate symbols_ if printing
2055         symbol counts.
2056         (Sized_dynobj::do_get_global_symbol_counts): New function.
2057         * dynobj.h (class Sized_dynobj): Add fields symbols_ and
2058         defined_count_.  Update declarations.  Define Symbols typedef.
2059         * symtab.cc (Symbol_table::add_from_relobj): Add defined
2060         parameter.  Change all callers.
2061         (Symbol_table::add_from_dynobj): Add sympointers and defined
2062         parameters.  Change all callers.
2063         * symtab.h (class Symbol_table): Update declarations.
2064         * Makefile.am (CCFILES): Add cref.cc.
2065         (HFILES): Add cref.h.
2066         * Makefile.in: Rebuild.
2067
2068 2008-07-22  Simon Baldwin  <simonb@google.com>
2069
2070         * symtab.cc (Symbol_table::sized_write_symbol): Set symbol size
2071         to zero when writing undefined symbols.
2072
2073 2008-07-22  Ian Lance Taylor  <iant@google.com>
2074
2075         * output.cc (Output_section::add_input_section): Don't try to
2076         merge empty merge sections.
2077
2078 2008-07-21  Craig Silverstein  <csilvers@google.com>
2079
2080         * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
2081         Include symbol version in error message.
2082
2083 2008-07-20  Chris Demetriou  <cgd@google.com>
2084
2085         * configure.ac (gold_cv_c_random_seed): New configured variable.
2086         (RANDOM_SEED_CFLAGS): New substituted variable.
2087         * Makefile.am (AM_CFLAGS, AM_CXXFLAGS): Add $(RANDOM_SEED_CFLAGS).
2088         * configure: Rebuild.
2089         * Makefile.in: Likewise.
2090         * testsuite/Makefile.in: Likewise.
2091
2092 2008-07-18  Ian Lance Taylor  <iant@google.com>
2093
2094         * symtab.cc (Symbol_table::add_from_object): Rewrite the case
2095         where we see NAME/NULL and NAME/VERSION  as separate symbols.
2096         * testsuite/ver_test_main.cc (main): Call t4.
2097         (t4, t4_2a): Define.
2098         * testsuite/ver_test_2.cc (t4_2): Define.
2099         * testsuite/ver_test_2.script: Put t4_2a in VER2.
2100         * testsuite/ver_test_4.cc (t4_2a): Define.
2101         * testsuite/ver_test_4.script: Put t4_2a in VER2.
2102         * testsuite/ver_test.h (t4, t4_2, t4_2a): Declare.
2103
2104 2008-07-17  Ian Lance Taylor  <iant@google.com>
2105
2106         * dynobj.cc (Versions::add_def): If we give an error about a
2107         missing version, go ahead and create the version anyhow.
2108
2109 2008-07-10  Ian Lance Taylor  <iant@google.com>
2110
2111         Handle output sections with more than 0x7fffffff bytes.
2112         * object.h (class Relobj): Change map_to_output_ to
2113         output_sections_, and just keep a section pointer.  Change all
2114         uses.  Move comdat group support to Sized_relobj.
2115         (Relobj::is_section_specially_mapped): Remove.
2116         (Relobj::output_section): Remove poff parameter.  Change all
2117         callers.
2118         (Relobj::output_section_offset): New function.
2119         (Relobj::set_section_offset): Rewrite.
2120         (Relobj::map_to_output): Remove.
2121         (Relobj::output_sections): New function.
2122         (Relobj::do_output_section_offset): New pure virtual function.
2123         (Relobj::do_set_section_offset): Likewise.
2124         (class Sized_relobj): Add section_offsets_ field.  Add comdat
2125         group support from Relobj.  Update declarations.
2126         (Sized_relobj::get_output_section_offset): New function.
2127         (Sized_relobj::do_output_section_offset): New function.
2128         (Sized_relobj::do_set_section_offset): New function.
2129         * object.cc (Relobj::output_section_address): Remove.
2130         (Sized_relobj::Sized_relobj): Initialize new fields.
2131         (Sized_relobj::include_section_group): Cast find_kept_object to
2132         Sized_relobj.
2133         (Sized_relobj::include_linkonce_section): Likewise.
2134         (Sized_relobj::do_layout): Use separate arrays for output section
2135         and output offset.
2136         (Sized_relobj::do_count_local_symbols): Change map_to_output to
2137         output_sections.
2138         (Sized_relobj::do_finalize_local_symbols): Change map_to_output to
2139         output_sections and section_offsets.
2140         (Sized_relobj::write_local_symbols): Likewise.
2141         (map_to_kept_section): Compute output address directly.
2142         * reloc.cc (Sized_relobj::do_read_relocs): Change map_to_output to
2143         output_sections and section_offsets.
2144         (Sized_relobj::write_sections): Likewise.
2145         (Sized_relobj::relocate_sections): Likewise.
2146         * symtab.cc (sized_finalize_symbol): Use output_section_offset.
2147         * output.h (class Output_reloc): Update declarations.  Change
2148         u2_.relobj to Sized_relobj*.
2149         (class Output_data_reloc): Change add functions to use
2150         Sized_relobj*.
2151         * output.cc (Output_reloc::Output_reloc): Change relobj to
2152         Sized_relobj*.
2153         (Output_reloc::local_section_offset): Change return type to
2154         Elf_Addr.  Use get_output_section_offset.
2155         (Output_reloc::get_address): Likewise.
2156         (Output_section::is_input_address_mapped): Don't call
2157         is_section_specially_mapped.
2158         (Output_section::output_offset): Likewise.
2159         (Output_section::output_address): Likewise.
2160         (Output_section::starting_output_address): Likewise.
2161         * copy-relocs.cc (Copy_relocs::copy_reloc): Change object
2162         parameter to Sized_relobj*.
2163         (Copy_relocs::need_copy_reloc): Likewise.
2164         (Copy_relocs::save): Likewise.
2165         * copy-relocs.h (class Copy_relocs): Update declarations.
2166         (class Copy_relocs::Copy_reloc_entry): Change constructor to use
2167         Sized_relobj*.  Change relobj_ field to Sized_relobj*.
2168         * target-reloc.h (relocate_for_relocatable): Change
2169         offset_in_output_section type to Elf_Addr.  Change code that uses
2170         it as well.
2171         * layout.cc (Layout::layout): Always set *off.
2172         * mapfile.cc (Mapfile::print_input_section): Use
2173         output_section_offset.
2174         * i386.cc (Target_i386::copy_reloc): Change object parameter to
2175         Sized_relobj*.
2176         * powerpc.cc (Target_powerpc::copy_reloc): Likewise.
2177         * sparc.cc (Target_sparc::copy_reloc): Likewise.
2178         * x86_64.cc (Target_x86_64::copy_reloc): Likewise.
2179
2180 2008-07-03  Ian Lance Taylor  <iant@google.com>
2181
2182         * layout.cc (Layout::include_section): Do not discard unrecognized
2183         SHT_STRTAB sections.
2184
2185 2008-06-30  Craig Silverstein  <csilvers@cs.stanford.edu>
2186
2187         * script.cc (Lex::can_continue_name): Make '?' allowable in
2188         version-script names.
2189         * testsuite/version_script.map: Change glob pattern to use '?'
2190
2191 2008-06-30  Manish Singh  <yosh@gimp.org>
2192
2193         PR 6585
2194         * symtab.cc (Symbol_table::add_undefined_symbols_from_command_line):
2195         Correct typo.
2196
2197 2008-06-30  Ian Lance Taylor  <iant@google.com>
2198
2199         PR 6660
2200         PR 6682
2201         * powerpc.cc (Powerpc_relocate_functions::addr16_ha) [both
2202         versions]: Don't try to read the value in the contents, since we
2203         don't use it.  Use the template endianness when writing.
2204
2205 2008-06-25  Cary Coutant  <ccoutant@google.com>
2206
2207         * fileread.cc (File_read::make_view): Assert on zero-length view.
2208         * object.cc (Sized_relobj::do_read_symbols): Don't try to read
2209         symbol table when there are no symbols to read.
2210
2211 2008-06-23  Craig Silverstein  <csilvers@google.com>
2212
2213         * version.cc (version_string): Bump to 1.7
2214
2215 2008-06-18  Craig Silverstein  <csilvers@google.com>
2216
2217         * powerpc.cc (Powerpc_relocate_functions::addr16_ha): cast
2218         constant 0xFFFF to type Valtype.
2219         (Powerpc_relocate_functions::rel16_ha): Likewise.
2220
2221 2008-06-17  Ian Lance Taylor  <iant@google.com>
2222
2223         * output.h (Output_section::Input_section): Initialize p2align_ to
2224         zero for Output_section_data constructors.
2225         (Output_section::Input_section::addralign): If not an input
2226         section, return the alignment of the Output_section_data.
2227         * testsuite/copy_test.cc: New file.
2228         * testsuite/copy_test_1.cc: New file.
2229         * testsuite/copy_test_2.cc: New file.
2230         * testsuite/Makefile.am (check_PROGRAMS): Add copy_test.
2231         (copy_test_SOURCES, copy_test_DEPENDENCIES): New variables.
2232         (copy_test_LDFLAGS, copy_test_LDADD): New variables.
2233         (copy_test_1_pic.o, copy_test_1.so): New targets.
2234         (copy_test_2_pic.o, copy_test_2.so): New targets.
2235         * testsuite/Makefile.in: Rebuild.
2236
2237         * script-sections.cc (Script_sections::place_orphan): Initialize
2238         local variable exact.
2239
2240 2008-06-13  David Edelsohn  <edelsohn@gnu.org>
2241
2242         * powerpc.cc (Output_data_plt_powerpc::do_write): 8 + 4 = 0xC.
2243
2244 2008-06-12  David Edelsohn  <edelsohn@gnu.org>
2245             David S. Miller  <davem@davemloft.net>
2246
2247         * powerpc.cc: New file.
2248         * Makefile.am (TARGETSOURCES): Add powerpc.cc
2249         (ALL_TARGETOBJS): Add powerpc.$(OBJEXT)
2250         * configure.tgt: Add entries for powerpc-* and powerpc64-*.
2251         * Makefile.in: Rebuild.
2252
2253 2008-06-09  Ian Lance Taylor  <iant@google.com>
2254
2255         * testsuite/relro_test.cc: Include <cstdio>, <cstdlib>, and
2256         <exception>.
2257         (throwing, orig_terminate): New static variables.
2258         (terminate_handler): New static function.
2259         (t2): Set terminate handler.
2260
2261 2008-06-05  Kris Van Hees  <kris.van.hees@oracle.com>
2262
2263         PR 6584
2264         * binary.cc (Binary_to_elf::sized_convert): Fix .data
2265         alignment.
2266
2267 2008-05-30  Cary Coutant  <ccoutant@google.com>
2268
2269         * archive.cc (Archive::include_all_members) Correct to step
2270         over symbol table and extended name table in thin archives.
2271
2272 2008-05-29  Kris Van Hees  <kris.van.hees@oracle.com>
2273
2274         PR 6407
2275         * target-reloc.h (relocate_for_relocatable): Fix new_offset
2276         calculation.
2277
2278 2008-05-28  Caleb Howe  <cshowe@google.com>
2279
2280         * reduced_debug_output.cc: New file.
2281         * reduced_debug_output.h: New file.
2282         * options.h (class General_options): Add --strip-debug-non-line.
2283         * options.cc (General_options::finalize): Add strip_debug_non_line
2284         to the strip heirarchy.
2285         * layout.h (class Layout): Add debug_abbrev_ and debug_info_
2286         fields.
2287         * layout.cc: Include "reduced_debug_output.h".
2288         (Layout::Layout): Initialize new fields.
2289         (line_only_debug_sections): New static array.
2290         (is_lines_only_debug_sections): New static inline function.
2291         (Layout::include_section): Handle --strip-debug-non-line.
2292         (Layout::make_output_section): If --strip-debug-non-line, build
2293         new output sections for .debug_abbrev and .debug_info.
2294         * dwarf_reader.cc (read_unsigned_LEB_128): Move to namespace
2295         gold.  Warn about possible overflow.
2296         (read_signed_LEB_128): Likewise.
2297         * dwarf_reader.h: (read_unsigned_LEB_128): Declare.
2298         (read_signed_LEB_128): Declare.
2299         * Makefile.am (CCFILES): Add reduced_debug_output.cc.
2300         (HFILES): Add reduced_debug_output.h.
2301         * Makefile.in: Rebuild.
2302
2303 2008-05-21  Ian Lance Taylor  <iant@google.com>
2304
2305         * mapfile.cc: New file.
2306         * mapfile.h: New file.
2307         * options.h (class General_options): Add -M/--print-map and -Map.
2308         * options.cc (General_options::finalize): Make -M equivalent to
2309         -Map -.
2310         * main.cc: Include <cstdio> and "mapfile.h".
2311         (main): Open mapfile if requested.
2312         * gold.cc (class Middle_runner): Add mapfile_ field.  Update
2313         constructor.  Change caller.
2314         (queue_initial_tasks): Add mapfile parameter.  Change caller.
2315         (queue_middle_tasks): Likewise.
2316         * gold.h (queue_initial_tasks, queue_middle_tasks): Update
2317         declarations.
2318         * archive.cc: Include "mapfile.h".
2319         (Archive::add_symbols): Add mapfile parameter.  Change all
2320         callers.  Pass mapfile, symbol, and reason to include_member.
2321         (Archive::include_all_members): Add mapfile parameter.  Change all
2322         callers.
2323         (Archive::include_member): Add mapfile, sym, and why parameters.
2324         Change all callers.  Report inclusion to map file.
2325         * archive.h: Include "fileread.h".
2326         (class Archive): Update declarations.
2327         (Archive::file): New const method.
2328         (class Add_archive_symbols): Add mapfile_ field.  Update
2329         constructor.  Change all callers.
2330         * readsyms.h (class Read_symbols): Likewise.
2331         (class Finish_group): Likewise.
2332         (class Read_script): Likewise.
2333         * common.cc: Include "mapfile.h".
2334         (Symbol_table::allocate_commons): Add mapfile parameter.  Change
2335         all callers.
2336         (Symbol_table::do_allocate_commons): Likewise.
2337         (Symbol_table::do_allocate_commons_list): Likewise.  Report common
2338         symbol allocation to mapfile.
2339         * common.h (class Allocate_commons_task): Add mapfile_ field.
2340         Update constructor.  Change all callers.
2341         * symtab.h (class Symbol_table): Update declarations.
2342         * layout.cc: Include "mapfile.h".
2343         (Layout_task_runner::run): Print information to mapfile.
2344         (Layout::create_gold_note): Change Output_data_fixed_space to
2345         Output_data_zero_fill.
2346         (Layout::create_build_id): Likewise.
2347         (Layout::print_to_mapfile): New function.
2348         * layout.h (class Layout_task_runner): Add mapfile_ field.  Update
2349         constructor.  Change caller.
2350         (class Layout): Declare print_to_mapfile.
2351         * output.cc (Output_section::Input_section::print_to_mapfile): New
2352         function.
2353         (Output_section::add_input_section): If producing a map, always
2354         add to input_sections_ list.
2355         (Output_section::do_print_to_mapfile): New function.
2356         (Output_segment::print_sections_to_mapfile): New function.
2357         (Output_segment::print_section_list_to_mapfile): New function.
2358         * output.h: Include "mapfile.h".
2359         (Output_data::print_to_mapfile): New function.
2360         (Output_data::do_print_to_mapfile): New virtual function.
2361         (Output_segment_headers::do_print_to_mapfile): New function.
2362         (Output_file_header::do_print_to_mapfile): New function.
2363         (Output_data_const::do_print_to_mapfile): New function.
2364         (class Output_data_const_buffer): Add map_name_ field.  Update
2365         constructor.  Change all callers.  Add do_print_to_mapfile
2366         function.
2367         (class Output_data_fixed_space): Likewise.
2368         (class Output_data_space): Likewise.
2369         (class Output_data_zero_fill): New class.
2370         (Output_data_strtab::do_print_to_mapfile): New function.
2371         (Output_data_reloc_base::do_print_to_mapfile): New function.
2372         (Output_relocatable_relocs::do_print_to_mapfile): New function.
2373         (Output_data_group::do_print_to_mapfile): New function.
2374         (Output_data_got::do_print_to_mapfile): New function.
2375         (Output_data_dynamic::do_print_to_mapfile): New function.
2376         (Output_symtab_xindex::do_print_to_mapfile): New function.
2377         (class Output_section): Declare do_print_to_mapflie.  Declare
2378         print_to_mapfile in Input_section.
2379         (class Output_segment): Declare new functions.
2380         * object.h (Sized_relobj::symbol_count): New function.
2381         * script-sections.cc
2382         (Output_section_element_dot_assignment::set_section_addresses):
2383         Change Output_data_fixed_space to Output_data_zero_fill.
2384         (Output_data_expression::do_print_to_mapfile): New function.
2385         * script.cc (read_input_script): Add mapfile parameter.  Change
2386         all callers.
2387         * script.h (read_input_script): Update declaration.
2388         * ehframe.h (Eh_frame_hdr::do_print_to_mapfile): New function.
2389         (Eh_frame::do_print_to_mapfile): New function.
2390         * merge.h (Output_merge_data::do_print_to_mapfile): New function.
2391         (Output_merge_string::do_print_to_mapfile): New function.
2392         * i386.cc (Output_data_plt_i386::do_print_to_mapfile): New
2393         function.
2394         * sparc.cc (Output_data_plt_sparc::do_print_to_mapfile): New
2395         function.
2396         * x86_64.cc (Output_data_plt_x86_64::do_print_to_mapfile): New
2397         function.
2398         * Makefile.am (CCFILES): Add mapfile.cc.
2399         (HFILES): Add mapfile.h.
2400         * Makefile.in: Rebuild.
2401
2402 2008-05-19  Ian Lance Taylor  <iant@google.com>
2403
2404         * options.h (class General_options): Add -z relro.
2405         * layout.cc (Layout::Layout): Initialize relro_segment_.
2406         (Layout::add_output_section_data): Return the output section.
2407         (Layout::make_output_section): Rcognize relro sections and mark
2408         them appropriately.
2409         (Layout::attach_allocated_section_to_segment): Put relro sections
2410         in a PT_GNU_RELRO segment.
2411         (Layout::create_initial_dynamic_sections): Mark the .dynamic
2412         section as relro.
2413         (Layout::segment_precedes): Sort PT_GNU_RELRO segments after
2414         PT_TLS segments.
2415         (Layout::linkonce_mapping): Map d.rel.ro.local to
2416         .data.rel.ro.local.
2417         (Layout::output_section_name): Us .data.rel.ro.local for any
2418         section which begins with that.
2419         * layout.h (class Layout): Update add_output_section_data
2420         declaration.  Add relro_segment_ field.
2421         * output.cc (Output_section::Output_section): Initialize is_relro_
2422         and is_relro_local_ fields.
2423         (Output_segment::add_output_section): Group relro sections.
2424         (Output_segment::is_first_section_relro): New function.
2425         (Output_segment::maximum_alignment): If there is a relro section,
2426         align the segment to the common page size.
2427         (Output_segment::set_section_addresses): Track whether we are
2428         looking at relro sections.  If the last section is a relro
2429         section, align to the common page size.
2430         (Output_segment::set_section_list_addresses): Add in_relro
2431         parameter.  Change all callers.  Align to the page size when
2432         moving from relro to non-relro section.
2433         (Output_segment::set_offset): Align memsz of a PT_GNU_RELRO
2434         segment.
2435         * output.h (class Output_section): Add is_relro_ and
2436         is_relro_local_ fields.
2437         (Output_section::is_relro): New function.
2438         (Output_section::set_is_relro): New function.
2439         (Output_section::is_relro_local): New function.
2440         (Output_section::set_is_relro_local): New function.
2441         (class Output_segment): Update declarations.
2442         * i386.cc (Target_i386::got_section): Mark .got section as relro.
2443         * sparc.cc (Target_sparc::got_section): Likewise.
2444         * x86_64.cc (Target_x86_64::got_section): Likewise.
2445         * testsuite/relro_test_main.cc: New file.
2446         * testsuite/relro_test.cc: New file.
2447         * testsuite/Makefile.am (check_PROGRAMS): Add relro_test.
2448         (relro_test_SOURCES, relro_test_DEPENDENCIES): New variables.
2449         (relro_test_LDFLAGS, relro_test_LDADD): New variables.
2450         (relro_test.so, relro_test_pic.o): New targets.
2451         * testsuite/Makefile.in: Rebuild.
2452
2453 2008-05-16  Ian Lance Taylor  <iant@google.com>
2454
2455         * output.cc (Output_segment::add_output_section): Remove front
2456         parameter.
2457         * output.h (class Output_segment): Remove
2458         add_initial_output_section and overloaded add_output_section.
2459         Update declaration of remaining add_output_section.
2460         * layout.cc (Layout::create_interp): Call add_output_section
2461         rather than add_initial_output_section.
2462         (Layout::finish_dynamic_section): Likewise.
2463
2464         * i386.cc (Target_i386::Relocate::relocate_tls): Set dynamic type
2465         for TLS_GOTDESC and TLS_DESC_CALL.  Only optimize TLS_LDO_32 if we
2466         know the dynamic type.
2467         * x86_64.cc (Target_x86_64::Relocate): Add saw_tls_block_reloc_
2468         field.  Initialize it in constructor.
2469         (Target_x86_64::Relocate::relocate_tls): Record that we saw a TLS
2470         block reloc for TLSGD, GOTPC32_TLSDESC, TLSDESC_CALL, and TLSLD.
2471         Only optimize DTPOFF32 and DTPOFF64 if we have seen a TLS block
2472         reloc.
2473
2474         * output.cc (Output_reloc::get_address): Change return type to
2475         Elf_Addr.
2476         * output.h (class Output_reloc): Update get_address declaration.
2477         * x86_64.cc (Output_data_plt_x86_64::do_write): Use 64-bit types
2478         for section addresses.
2479
2480 2008-05-09  Ian Lance Taylor  <iant@google.com>
2481
2482         PR 6493
2483         * gold.cc (gold_nomem): Use return value of write.
2484
2485 2008-05-08  Ian Lance Taylor  <iant@google.com>
2486
2487         * symtab.c (Symbol::init_base_output_data): Add version
2488         parameter.  Change all callers.
2489         (Symbol::init_base_output_segment): Likewise.
2490         (Symbol::init_base_constant): Likewise.
2491         (Symbol::init_base_undefined): Likewise.
2492         (Sized_symbol::init_output_data): Likewise.
2493         (Sized_symbol::init_output_segment): Likewise.
2494         (Sized_symbol::init_constant): Likewise.
2495         (Sized_symbol::init_undefined): Likewise.
2496         (Symbol_table::do_define_in_output_data): If the new symbol has a
2497         version, mark it as the default.
2498         (Symbol_table::do_define_in_output_segment): Likewise.
2499         (Symbol_table::do_define_as_constant): Likewise.
2500         * symtab.h (class Symbol): Update declarations.
2501         (class Sized_symbol): Likewise.
2502         * resolve.cc (Symbol::override_version): New function.
2503         (Symbol::override_base): Call override_version.
2504         (Symbol::override_base_with_special): Likewise.
2505         * testsuite/ver_script_8.script: New file.
2506         * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_8.
2507         (ver_test_8_SOURCES, ver_test_8_DEPENDENCIES): Define.
2508         (ver_test_8_LDFLAGS, ver_test_8_LDADD): Define.
2509         (ver_test_8_1.so, ver_test_8_2.so): New targets.
2510
2511 2008-05-06  Ian Lance Taylor  <iant@google.com>
2512
2513         PR 6049
2514         * options.h (DEFINE_set): Add VARNAME_begin and VARNAME_end
2515         functions.
2516         (class General_options): Remove existing --undefined, and add
2517         --no-undefined instead.  Add new --undefined as synonym for -u.
2518         * archive.cc (Archive::add_symbols): Check whether symbol was
2519         named with -u.
2520         * gold.cc (queue_middle_tasks): Add -u symbols to symbol table.
2521         * symtab.h (class Symbol): Rename CONSTANT to IS_CONSTANT; change
2522         all uses.  Add IS_UNDEFINED.  Update declarations to split
2523         different versions of init_base.  Declare init_base_undefined.
2524         (Symbol::is_defined): Handle IS_UNDEFINED.
2525         (Symbol::is_undefined): Likewise.
2526         (Symbol::is_weak_undefined): Call is_undefined.
2527         (Symbol::is_absolute): Handle IS_CONSTANT.
2528         (class Sized_symbol): Update declarations to split different
2529         versions of init.  Declare init_undefined.
2530         (class Symbol_table): Declare new functions.
2531         * symtab.cc (Symbol::init_base_object): Rename from init_base.
2532         Change all callers.
2533         (Symbol::init_base_output_data): Likewise.
2534         (Symbol::init_base_output_segment): Likewise.
2535         (Symbol::init_base_constant): Likewise.
2536         (Symbol::init_base_undefined): New function.
2537         (Sized_symbol::init_object): Rename from init.  Change all
2538         callers.
2539         (Sized_symbol::init_output_data): Likewise.
2540         (Sized_symbol::init_output_segment): Likewise.
2541         (Sized_symbol::init_constant): Likewise.
2542         (Sized_symbol::init_undefined): New function.
2543         (Symbol_table::add_undefined_symbols_from_command_line): New
2544         function.
2545         (Symbol_table::do_add_undefined_symbols_from_command_line): New
2546         function.
2547         (Symbol::final_value_is_known): Handle IS_UNDEFINED.
2548         (Symbol::output_section): Likewise.
2549         (Symbol::set_output_section): Likewise.
2550         (Symbol_table::sized_finalize_symbol): Likewise.
2551         (Symbol_table::sized_write_globals): Likewise.
2552         * resolve.cc (Symbol_table::should_override): Likewise.
2553         (Symbol::override_base_with_special): Likewise.
2554
2555         * symtab.cc (Symbol_table::add_from_dynobj): If we see a protected
2556         symbol, change it to have default visibility.
2557         * testsuite/protected_1.cc: New file.
2558         * testsuite/protected_2.cc: New file.
2559         * testsuite/protected_3.cc: New file.
2560         * testsuite/protected_main_1.cc: New file.
2561         * testsuite/protected_main_2.cc: New file.
2562         * testsuite/protected_main_3.cc: New file.
2563         * testsuite/Makefile.am (check_PROGRAMS): Add protected_1.
2564         (protected_1_SOURCES, protected_1_DEPENDENCIES): Define.
2565         (protected_1_LDFLAGS, protected_1_LDADD): Define.
2566         (protected_1.so): New target.
2567         (protected_1_pic.o, protected_2_pic.o): New targets.
2568         (protected_3_pic.o): New target.
2569         (check_PROGRAMS): Add protected_2.
2570         (protected_2_SOURCES, protected_2_DEPENDENCIES): Define.
2571         (protected_2_LDFLAGS, protected_2_LDADD): Define.
2572         * testsuite/Makefile.in: Rebuild.
2573
2574         * options.h (DEFINE_var): Add set_user_set_##varname__.
2575         (DEFINE_bool_alias): New macro.
2576         (class General_options): Define -Bstatic using DEFINE_bool_alias
2577         rather than DEFINE_special.  Add --undefined as an alias for -z
2578         defs.
2579         * options.cc (General_options::parse_Bstatic): Remove.
2580
2581         * options.h (class General_options): Add --fatal-warnings.
2582         * main.cc (main): Implement --fatal-warnings.
2583         * errors.h (Errors::warning_count): New function.
2584
2585         * options.h (class General_options): Add -Bsymbolic-functions.
2586         * symtab.h (Symbol::is_preemptible): Check for
2587         -Bsymbolic-functions.
2588
2589 2008-05-05  Ian Lance Taylor  <iant@google.com>
2590
2591         * options.h (DEFINE_bool): For DASH_Z, create the negative option
2592         as noVARNAME rather than no-VARNAME.
2593         (class General_options): Add option -z combreloc.
2594         * output.h (class Output_reloc) [SHT_REL]: Declare compare and
2595         get_address.
2596         (Output_reloc::sort_before) [SHT_REL]: New function.
2597         (Output_reloc::sort_before) [SHT_RELA]: New function.
2598         (class Output_data_reloc_base): Add sort_relocs_ field.  Define
2599         Sort_relocs_comparison.
2600         (Output_data_reloc_base::Output_data_reloc_base): Add sort_relocs
2601         parameter.  Change all callers.
2602         (Output_data_reloc::Output_data_reloc) [both versions]: Add
2603         sort_relocs parameter.  Change all callers.
2604         * output.cc (Output_reloc::get_address): New function, broken out
2605         of write_rel.
2606         (Output_reloc::write_rel): Call it.
2607         (Output_reloc::compare): New function.
2608         (Output_data_reloc_base::do_write): Optionally sort relocs.
2609
2610         * configure.ac: If targ_extra_obj is set, link it in.
2611         * configure.tgt: Initialize all variables.
2612         (x86_64*): Set targ_extra_obj and targ_extra_size.
2613         * configure: Rebuild.
2614
2615         * object.cc (Sized_relobj::include_section_group): Adjust section
2616         indexes read from group data.  Build vector to pass to
2617         layout_group.
2618         * layout.cc (Layout::layout_group): Add flags and shndxes
2619         parameters.  Remove contents parameter.  Change caller.  Update
2620         explicit instantiations.
2621         * layout.h (class Layout): Update layout_group declaration.
2622         * output.cc (Output_data_group::Output_data_group): Add flags and
2623         input_shndxes parameters.  Remove contents parameter.  Change
2624         caller.
2625         (Output_data_group::do_write): Change input_sections_ to
2626         input_shndxes_.
2627         * output.h (class Output_data_group): Update constructor
2628         declaration.  Rename input_sections_ to input_shndxes_.
2629         * testsuite/many_sections_test.cc: Add template.
2630
2631 2008-04-30  Cary Coutant  <ccoutant@google.com>
2632
2633         * target-reloc.h (relocate_section): Fix dead-pointer bug.
2634
2635         * layout.cc (Layout::include_section): Refactored check for debug
2636         info section.
2637         (Layout::add_comdat): Add new parameters.  Change type
2638         of signature parameter.  Add object and shndx to signatures table.
2639         (Layout::find_kept_object): New function.
2640         * layout.h: Include <cstring>.
2641         (Layout::is_debug_info_section): New function.
2642         (Layout::add_comdat): Add new parameters.
2643         (Layout::find_kept_object): New function.
2644         (Layout::Kept_section): New struct.
2645         (Layout::Signatures): Change type of map range.
2646         * object.cc (Relobj::output_section_address): New function.
2647         (Sized_relobj::include_section_group): Add new parameters.  Change
2648         calls to Layout::add_comdat.  Change to build table of kept comdat
2649         groups and table mapping discarded sections to kept sections.
2650         (Sized_relobj::include_linkonce_section): Likewise.  Add new parameter.
2651         (Sized_relobj::do_layout): Change calls to include_section_group and
2652         include_linkonce_section.
2653         (Sized_relobj::do_finalize_local_symbols): Do not set local symbol
2654         value to zero when section is discarded.
2655         (Sized_relobj::map_to_kept_section): New function.
2656         * object.h (Relobj::output_section_address): New function.
2657         (Relobj::Comdat_group): New type.
2658         (Relobj::find_comdat_group): New function.
2659         (Relobj::Comdat_group_table): New type.
2660         (Relobj::Kept_comdat_section): New type.
2661         (Relobj::Kept_comdat_section_table): New type.
2662         (Relobj::add_comdat_group): New function.
2663         (Relobj::set_kept_comdat_section): New function.
2664         (Relobj::get_kept_comdat_section): New function.
2665         (Relobj::comdat_groups_): New field.
2666         (Relobj::kept_comdat_sections_): New field.
2667         (Symbol_value::input_value): Update comment.
2668         (Sized_relobj::map_to_kept_section) New function.
2669         (Sized_relobj::include_linkonce_section): Add new parameter.
2670         * target-reloc.h (Comdat_behavior): New type.
2671         (get_comdat_behavior): New function.
2672         (relocate_section): Add code to map a discarded section to the
2673         corresponding kept section when applying a relocation.
2674
2675 2008-04-30  Craig Silverstein  <csilvers@google.com>
2676
2677         * dwarf_reader.cc (next_generation_count): New static var.
2678         (Addr2line_cache_entry): New struct.
2679         (addr2line_cache): New static var.
2680         (Dwarf_line_info::one_addr2line): Added caching.
2681         (Dwarf_line_info::clear_addr2line_cache): New function.
2682         * dwarf_reader.h (Dwarf_line_info::one_addr2line): Add
2683         cache-size parameter.
2684         (Dwarf_line_info::one_addr2line_cache): New function.
2685         * symtab.cc (Symbol_table::detect_odr_violations): Pass
2686         new cache-size argument to one_addr2line(), and clear cache.
2687
2688 2008-04-28  Cary Coutant  <ccoutant@google.com>
2689
2690         * i386.cc (Relocate::relocate): Fix typos for R_386_PC16 and
2691         R_386_PC8 relocations.
2692
2693 2008-04-23  Ian Lance Taylor  <iant@google.com>
2694
2695         * object.cc (Sized_relobj::include_section_group): Check for
2696         invalid section group.
2697
2698         * object.cc (make_elf_object): Correct test for 64-bit ELF file
2699         header size.
2700
2701         * readsyms.cc (Read_symbols::do_read_symbols): Use get_view rather
2702         than read for file header.
2703         * archive.cc (Archive::include_member): Likewise.
2704
2705 2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
2706
2707         * aclocal.m4: Regenerate.
2708         * configure: Regenerate.
2709
2710 2008-04-19  Ian Lance Taylor  <iant@google.com>
2711
2712         * version.cc (version_string): Bump to 1.6.
2713
2714         * testsuite/Makefile.am (many_sections_r_test): New target.
2715         (many_sections_r_test_SOURCES): Remove.
2716         (many_sections_r_test_DEPENDENCIES): Remove.
2717         (many_sections_r_test_LDFLAGS): Remove.
2718         (many_sections_r_test_LDADD): Remove.
2719
2720         * object.cc (Sized_relobj::do_add_symbols): Always pass
2721         local_symbol_count_ to add_from_relobj.
2722
2723         * testsuite/Makefile.am (many_sections_check.h): Only check one in
2724         every thousand variables.
2725         * testsuite/Makefile.in: Rebuild.
2726
2727         * object.cc (Xindex::initialize_symtab_xindex): New function.
2728         (Xindex::read_symtab_xindex): New function.
2729         (Xindex::sym_xindex_to_shndx): New function.
2730         (Sized_relobj::find_symtab): Pick up SHT_SYMTAB_SHNDX section if
2731         available.
2732         (Sized_relobj::do_initialize_xindex): New function.
2733         (Sized_relobj::do_read_symbols): Adjust section links.
2734         (Sized_relobj::symbol_section_and_value): Add is_ordinary
2735         parameter.  Change all callers.
2736         (Sized_relobj::include_section_group): Adjust section links and
2737         symbol section indexes.
2738         (Sized_relobj::do_layout): Adjust section links.
2739         (Sized_relobj::do_count_local_symbols): Adjust section links and
2740         symbol section indexes.
2741         (Sized_relobj::do_finalize_local_symbols): Distinguish between
2742         ordinary and special symbols.
2743         (Sized_relobj::write_local_symbols): Add symtab_xindex and
2744         dynsym_xindex parameters.  Change all callers.  Adjust section
2745         links.  Use SHN_XINDEX when needed.
2746         (Sized_relobj::get_symbol_location_info): Adjust section links.
2747         Don't get fooled by special symbols.
2748         * object.h (class Xindex): Define.
2749         (class Object): Add xindex_ parameter.  Declare virtual functoin
2750         do_initialize_xindex.
2751         (Object::adjust_sym_shndx): New function.
2752         (Object::set_xindex): New protected function.
2753         (class Symbol_value): Add is_ordinary_shndx_ field.
2754         (Symbol_value::Symbol_value): Initialize is_ordinary_shndx_.
2755         (Symbol_value::value): Assert ordinary section.
2756         (Symbol_value::initialize_input_to_output_map): Likewise.
2757         (Symbol_value::set_input_shndx): Add is_ordinary parameter.
2758         Change all callers.
2759         (Symbol_value::input_shndx): Add is_ordinary parameter.  Change
2760         all callers.
2761         (class Sized_relobj): Update declarations.
2762         (Sized_relobj::local_symbol_input_shndx): Add is_ordinary
2763         parameter.  Change all callers.
2764         (Sized_relobj::adjust_shndx): New function.
2765         * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize dynsym_shndx_
2766         field.
2767         (Sized_dynobj::find_dynsym_sections): Remove pdynsym_shndx
2768         parameter.  Change all callers.  Pick up SHT_DYNSYM_SHNDX section
2769         for SHT_DYNSYM section if available.  Set dynsym_shndx_ field.
2770         (Sized_dynobj::read_dynsym_section): Adjust section links.
2771         (Sized_dynobj::read_dynamic): Likewise.
2772         (Sized_dynobj::do_read_symbols): Use dynsym_shndx_ field.  Adjust
2773         section links.
2774         (Sized_dynobj::do_initialize_xindex): New function.
2775         * dynobj.h (class Sized_dynobj): Add dynsym_shndx_ field.  Declare
2776         do_initialize_xindex.
2777         (Sized_dynobj::adjust_shndx): New function.
2778         * layout.cc (Layout::Layout): Initialize symtab_xindex_ and
2779         dynsym_xindex_ fields.
2780         (Layout::finalize): Add a call to set_section_indexes before
2781         creating the symtab sections.
2782         (Layout::set_section_indexes): Don't do anything if the section
2783         already has a section index.
2784         (Layout::create_symtab_sections): Add shnum parameter.  Change
2785         caller.  Create .symtab_shndx section if needed.
2786         (Layout::create_shdrs): Add shstrtab_section parameter.  Change
2787         caller.
2788         (Layout::allocated_output_section_count): New function.
2789         (Layout::create_dynamic_symtab): Create .dynsym_shndx section if
2790         needed.
2791         * layout.h (class Layout): Add symtab_xindex_ and dynsym_xindex_
2792         fields.  Update declarations.
2793         (Layout::symtab_xindex): New function.
2794         (Layout::dynsym_xindex): New function.
2795         (class Write_symbols_task): Add layout_ field.
2796         (Write_symbols_task::Write_symbols_task): Add layout parameter.
2797         Change caller.
2798         * output.cc (Output_section_headers::Output_section_headers): Add
2799         shstrtab_section parameter.  Change all callers.
2800         (Output_section_headers::do_sized_write): Store overflow values
2801         for section count and section string table section index in
2802         section header zero.
2803         (Output_file_header::do_sized_write): Check for overflow of
2804         section count and section string table section index.
2805         (Output_symtab_xindex::do_write): New function.
2806         (Output_symtab_xindex::endian_do_write): New function.
2807         * output.h (class Output_section_headers): Add shstrtab_section_.
2808         Update declarations.
2809         (class Output_symtab_xindex): Define.
2810         (Output_section::has_out_shndx): New function.
2811         * symtab.cc (Symbol::init_fields): Initialize is_ordinary_shndx_
2812         field.
2813         (Symbol::init_base): Add st_shndx and is_ordinary parameters.
2814         Change all callers.
2815         (Sized_symbol::init): Likewise.
2816         (Symbol::output_section): Check for ordinary symbol.
2817         (Symbol_table::add_from_object): Remove orig_sym parameter.  Add
2818         st_shndx, is_ordinary, and orig_st_shndx parameters.  Change all
2819         callers.
2820         (Symbol_table::add_from_relobj): Add symndx_offset parameter.
2821         Change all callers.  Simplify handling of symbols from sections
2822         not included in the link.
2823         (Symbol_table::add_from_dynobj): Handle ordinary symbol
2824         distinction.
2825         (Weak_alias_sorter::operator()): Assert that symbols are
2826         ordinary.
2827         (Symbol_table::sized_finalize_symbol): Handle ordinary symbol
2828         distinction.
2829         (Symbol_table::write_globals): Add symtab_xindex and dynsym_xindex
2830         parameters.  Change all callers.
2831         (Symbol_table::sized_write_globals): Likewise.  Handle ordinary
2832         symbol distinction.  Use SHN_XINDEX when needed.
2833         (Symbol_table::write_section_symbol): Add symtab_xindex
2834         parameter.  Change all callers.
2835         (Symbol_table::sized_write_section_symbol): Likewise.  Use
2836         SHN_XINDEX when needed.
2837         * symtab.h (class Symbol): Add is_ordinary_shndx_ field.  Update
2838         declarations.
2839         (Symbol::shndx): Add is_ordinary parameter.  Change all callers.
2840         (Symbol::is_defined): Check is_ordinary.
2841         (Symbol::is_undefined, Symbol::is_weak_undefined): Likewise.
2842         (Symbol::is_absolute, Symbol::is_common): Likewise.
2843         (class Sized_symbol): Update declarations.
2844         (class Symbol_table): Update declarations.
2845         * resolve.cc (Symbol::override_base): Add st_shndx and is_ordinary
2846         parameters.  Change all callers.
2847         (Sized_symbol::override): Likewise.
2848         (Symbol_table::override): Likewise.
2849         (symbol_to_bits): Add is_ordinary parameter.  Change all callers.
2850         (Symbol_table::resolve): Remove orig_sym parameter.  Add st_shndx,
2851         is_ordinary, and orig_st_shndx parameters.  Change all callers.
2852         * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Require symbol
2853         to be in an ordinary section.
2854         * dwarf_reader.cc (Sized_dwarf_line_info::symbol_section): Add
2855         object and is_ordinary parameters.  Change all callers.
2856         (Sized_dwarf_line_info::read_relocs): Add object parameter.
2857         Change all callers.  Don't add undefined or non-ordinary symbols
2858         to reloc_map_.
2859         (Sized_dwarf_line_info::read_line_mappings): Add object parameter.
2860         Change all callers.
2861         * dwarf_reader.h (class Sized_dwarf_line_info): Update
2862         declarations.
2863         * ehframe.cc (Eh_frame::read_fde): Check for ordinary symbol.
2864         * reloc.cc (Sized_relobj::do_read_relocs): Adjust section links.
2865         (Sized_relobj::relocate_sections): Likewise.
2866         * target-reloc.h (scan_relocs): Adjust section symbol index.
2867         (scan_relocatable_relocs): Likewise.
2868         * i386.cc (Scan::local): Check for ordinary symbols.
2869         * sparc.cc (Scan::local): Likewise.
2870         * x86_64.cc (Scan::local): Likewise.
2871         * testsuite/binary_unittest.cc (Sized_binary_test): Update calls
2872         to symbol_section_and_value.
2873         * testsuite/many_sections_test.cc: New file.
2874         * testsuite/Makefile.am (BUILT_SOURCES): Define.
2875         (check_PROGRAMS): Add many_sections_test.
2876         (many_sections_test_SOURCES): Define.
2877         (many_sections_test_DEPENDENCIES): Define.
2878         (many_sections_test_LDFLAGS): Define.
2879         (BUILT_SOURCES): Add many_sections_define.h.
2880         (many_sections_define.h): New target.
2881         (BUILT_SOURCES): Add many_sections_check.h.
2882         (many_sections_check.h): New target.
2883         (check_PROGRAMS): Add many_sections_r_test.
2884         (many_sections_r_test_SOURCES): Define.
2885         (many_sections_r_test_DEPENDENCIES): Define.
2886         (many_sections_r_test_LDFLAGS): Define.
2887         (many_sections_r_test_LDADD): Define.
2888         (many_sections_r_test.o): New target.
2889         * testsuite/Makefile.in: Rebuild.
2890
2891 2008-04-17  Cary Coutant  <ccoutant@google.com>
2892
2893         * errors.cc (Errors::info): New function.
2894         (gold_info): New function.
2895         * errors.h (Errors::info): New function.
2896         * gold.h (gold_info): New function.
2897         * object.cc (Input_objects::add_object): Print trace output.
2898         * options.cc (options::parse_set): New function.
2899         (General_options::parse_wrap): Deleted.
2900         (General_options::General_options): Deleted initializer.
2901         * options.h (options::String_set): New typedef.
2902         (options::parse_set): New function.
2903         (DEFINE_set): New macro.
2904         (General_options::wrap): Changed to use DEFINE_set. Changed
2905         callers of any_wrap_symbols and is_wrap_symbol.
2906         (General_options::trace, General_options::trace_symbol):
2907         New options.
2908         (General_options::any_wrap_symbols, General_options::is_wrap_symbol)
2909         (General_options::wrap_symbols_): Deleted.
2910         * symtab.cc (Symbol_table::add_from_object): Print trace output.
2911
2912 2008-04-17  David S. Miller  <davem@davemloft.net>
2913
2914         * options.cc (General_options::parse_V): New function.
2915         * options.h: Add entries for -V and -Qy.
2916
2917 2008-04-17  Ian Lance Taylor  <iant@google.com>
2918
2919         * common.cc (Symbol_table::allocate_commons): Remove options
2920         parameter.  Change caller.
2921         (Symbol_table::do_allocate_commons): Remove options parameter.
2922         Change caller.  Just call do_allocate_commons_list twice.
2923         (Symbol_table::do_allocate_commons_list): New function, broken out
2924         of do_allocate_commons.
2925         * common.h (class Allocate_commons_task): Remove options_ field.
2926         Update constructor.
2927         * symtab.cc (Symbol_table::Symbol_table): Initialize
2928         tls_commons_.
2929         (Symbol_table::add_from_object): Put TLS common symbols on
2930         tls_commons_ list.
2931         (Symbol_table::sized_finalize_symbol): Handle STT_TLS symbols
2932         which are IN_OUTPUT_DATA.
2933         * symtab.h (class Symbol_table): Add tls_commons_ field.  Update
2934         allocate_commons and do_allocate_commons declarations.  Declare
2935         do_allocate_commons_list.
2936         * gold.cc (queue_middle_tasks): Update creation of
2937         Allocate_commons_task to not pass options.
2938         * testsuite/Makefile.am (INCLUDES): Add -I.. .
2939         (TLS_TEST_C_FLAGS): New variable.
2940         (tls_test_c_pic.o): New target.
2941         (tls_test_shared.so): Link in tls_test_c_pic.o.
2942         (tls_test_c_pic_ie.o): New target.
2943         (tls_test_ie_shared.so): Link in tls_test_c_pic_ie.o.
2944         (tls_test_DEPENDENCIES, tls_test_LDADD): Add tls_test_c.o.
2945         (tls_test_c.o): New target.
2946         (tls_pic_test_DEPENDENCIES): Add tls_test_c_pic.o.
2947         (tls_pic_test_LDADD): Likewise.
2948         (tls_shared_gd_to_ie_test_DEPENDENCIES): Add tls_test_c_pic.o.
2949         (tls_shared_gd_to_ie_test_LDADD): Likewise.
2950         (tls_test_c_gnu2.o): New target.
2951         (tls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): Add
2952         tls_test_c_gnu2.o.
2953         (tls_shared_gnu2_gd_to_ie_test_LDADD): Likewise.
2954         (tls_test_gnu2_shared.so): Link in tls_test_c_gnu2.o.
2955         (tls_test_shared_nonpic.so): Link in tls_test_c.o.
2956         * testsuite/tls_test.cc: Include "config.h".
2957         (t_last): Call t11_last.
2958         * testsuite/tls_test.h (t11, t11_last): Declare.
2959         * testsuite/tls_test_c.c: New file.
2960         * testsuite/tls_test_main.cc (thread_routine): Call t11.
2961         * configure.ac: Check for OpenMP support.
2962         * configure, config.in, Makefile.in: Rebuild.
2963         * testsuite/Makefile.in: Rebuild.
2964
2965 2008-04-16  Cary Coutant  <ccoutant@google.com>
2966
2967         * i386.cc (Target_i386::define_tls_base_symbol): New function.
2968         (Target_i386::tls_base_symbol_defined_): New field.
2969         (Target_i386::Scan::local): Define _TLS_MODULE_BASE_ symbol.
2970         (Target_i386::Scan::global): Likewise.
2971         * symtab.cc (sized_finalize_symbol): Add check for TLS symbol.
2972         * x86_64.cc (Target_x86_64::define_tls_base_symbol): New function.
2973         (Target_x86_64::tls_base_symbol_defined_): New field.
2974         (Target_x86_64::Scan::local): Define _TLS_MODULE_BASE_ symbol.
2975         (Target_x86_64::Scan::global): Likewise.
2976
2977 2008-04-16  Cary Coutant  <ccoutant@google.com>
2978
2979         * symtab.h (Symbol::is_strong_undefined): Removed unused function.
2980         (Symbol::needs_plt_entry): Allow weak undefined symbols.
2981         (Symbol::needs_dynamic_reloc): Allow weak undefined symbols when
2982         building shared libraries.
2983         * testsuite/Makefile.am (weak_undef_nonpic_test): New target.
2984         (weak_undef_file1_nonpic.o, weak_undef_file2_nonpic.o)
2985         (weak_undef_lib_nonpic.so, alt/weak_undef_lib_nonpic.so): New targets.
2986         * testsuite/Makefile.in: Rebuild.
2987         * testsuite/weak_undef.h: New file.
2988         * testsuite/weak_undef_file1.cc: Add extra test cases.
2989         * testsuite/weak_undef_file2.cc: Likewise.
2990         * testsuite/weak_undef_test.cc: Likewise.
2991
2992 2008-04-16  David S. Miller  <davem@davemloft.net>
2993
2994         * sparc.cc (Target_sparc::Scan): Change from struct to class.
2995         Add issued_non_pic_error_ field.  Declare check_non_pic.
2996         (Target_sparc::Scan::check_non_pic): New function.
2997         (Target_sparc::Scan::local): Call check_non_pic as appropriate.
2998         (Target_sparc::Scan::global): Likewise.
2999
3000         * configure.ac (FN_PTRS_IN_SO_WITHOUT_PIC): Add sparc64.
3001         * configure: Rebuild.
3002
3003         * options.h (DEFINE_enable): New macro.
3004         (new_dtags): New enable option.
3005         (initfirst, interpose, loadfltr, nodefaultlib,
3006         nodelete, nodlopen, nodump): New -z options.
3007         * layout.cc (Layout:finish_dynamic_section): If new
3008         dtags enabled, emit DT_RUNPATH.  Also, emit a
3009         DT_FLAGS_1 containing any specified -z flags.
3010
3011 2008-04-16  Ian Lance Taylor  <iant@google.com>
3012
3013         * copy-relocs.cc: New file.
3014         * copy-relocs.h: New file.
3015         * reloc.cc: Remove Copy_relocs code.
3016         * reloc.h: Likewise.
3017         * reloc-types.h (struct Reloc_types) [both versions]: Add
3018         get_reloc_addend_noerror.
3019         * output.h (class Output_data_reloc<elfcpp::SHT_REL>): Add
3020         variants of add_global which take an addend which must be zero.
3021         * i386.cc: Include "copy-relocs.h".
3022         (class Target_i386): Change type of copy_relocs_ to variable,
3023         update initializer.
3024         (Target_i386::copy_reloc): Rewrite to pass to Copy_relocs class.
3025         Change all callers.
3026         (Target_i386::do_finalize_sections): Change handling of
3027         copy_relocs_.
3028         * sparc.cc: Include "copy-relocs.h".
3029         (class Target_sparc): Change type of copy_relocs_ to variable,
3030         update initializer.
3031         (Target_sparc::copy_reloc): Rewrite to pass to Copy_relocs class.
3032         Change all callers.
3033         (Target_sparc::do_finalize_sections): Change handling of
3034         copy_relocs_.
3035         * x86_64.cc: Include "copy-relocs.h".
3036         (class Target_x86_64): Change type of copy_relocs_ to variable,
3037         update initializer.
3038         (Target_x86_64::copy_reloc): Rewrite to pass to Copy_relocs
3039         class.  Change all callers.
3040         (Target_x86_64::do_finalize_sections): Change handling of
3041         copy_relocs_.
3042         * Makefile.am (CCFILES): Add copy-relocs.cc.
3043         (HFILES): Add copy-relocs.h.
3044
3045         * Makefile.in, aclocal.m4, testsuite/Makefile.in: Rebuild.
3046
3047         * testsuite/script_test_4.sh: Permit leading zeroes.
3048
3049 2008-04-15  Ian Lance Taylor  <iant@google.com>
3050
3051         * script-sections.cc (Script_sections::create_segments): Use
3052         header_size_adjustment even when there is enough room for the
3053         headers.
3054         * testsuite/script_test_4.sh: New file.
3055         * testsuite/script_test_4.t: New file.
3056         * testsuite/Makefile.am (check_SCRIPTS): Add script_test_4.sh.
3057         (check_DATA): Add script_test_4.stdout.
3058         (MOSTLYCLEANFILES): Likewise.
3059         (script_test_4): New target.
3060         (script_test_4.stdout): New target.
3061         * testsuite/Makefile.in: Rebuild.
3062
3063         * sparc.cc: Add definitions for Output_data_plt_sparc class
3064         constants.
3065
3066 2008-04-14  David S. Miller  <davem@davemloft.net>
3067
3068         * sparc.cc: New file.
3069         * Makefile.am (TARGETSOURCES): Add sparc.cc
3070         (ALL_TARGETOBJS): Add sparc.$(OBJEXT)
3071         * configure.tgt: Document targ_extra_size and
3072         targ_extra_big_endian.  Add entries for sparc-* and
3073         sparc64-*.
3074         * configure.ac: Handle targ_extra_size and
3075         targ_extra_big_endian.
3076         * Makefile.in: Rebuild.
3077         * configure: Likewise.
3078         * po/POTFILES.in: Likewise.
3079         * po/gold.pot: Likewise.
3080
3081 2008-04-14  Ian Lance Taylor  <iant@google.com>
3082
3083         * layout.cc (Layout::Layout): Initialize sections_are_attached_.
3084         (Layout::get_output_section): Ignore SHF_WRITE and SHF_EXECINSTR
3085         in the name/type/flags to section mapping.  Don't call
3086         allocate_output_section.
3087         (Layout::choose_output_section): Change parameter from adjust_name
3088         to is_input_section.  Don't permit input sections after sections
3089         are attached to segments.  Don't call allocate_output_section.
3090         (Layout::layout_eh_frame): Call update_flags_for_input_section,
3091         not write_enable_output_section.
3092         (Layout::make_output_section): Don't push to
3093         unattached_section_list_ nor call attach_to_segment.  Call
3094         attach_section_to_segment if sections are attached.
3095         (Layout::attach_sections_to_segments): New function.
3096         (Layout::attach_section_to_segment): New function.
3097         (Layout::attach_allocated_section_to_segment): Rename from
3098         attach_to_segment.  Remove flags parameter.
3099         (Layout::allocate_output_section): Remove function.
3100         (Layout::write_enable_output_section): Remove function.
3101         * layout.h (class Layout): Update for above changes.  Add new
3102         field sections_are_attached_.
3103         * output.h (Output_section::update_flags_for_input_section): New
3104         function.
3105         * output.cc (Output_section::add_input_section): Call
3106         update_flags_for_input_section.
3107         * gold.cc (queue_middle_tasks): Call attach_sections_to_segments.
3108
3109 2008-04-11  Cary Coutant  <ccoutant@google.com>
3110
3111         * i386.cc (Target_i386::got_mod_index_entry): Restore code previously
3112         thought unnecessary.
3113         * x86_64.cc (Target_x86_64::got_mod_index_entry): Likewise.
3114
3115 2008-04-11  Ian Lance Taylor  <iant@google.com>
3116
3117         * output.h (class Output_section_data): Remove inline definition
3118         of set_addralign.
3119         * output.cc (Output_section_data::set_addralign): New function.
3120
3121 2008-04-11  Cary Coutant  <ccoutant@google.com>
3122
3123         Add support for TLS descriptors for i386 and x86_64.
3124         * i386.cc (Target_i386::Relocate::tls_desc_gd_to_ie): New function.
3125         (Target_i386::Relocate::tls_desc_gd_to_le): New function.
3126         (Target_i386::Got_type): Add GOT_TYPE_TLS_NOFFSET and
3127         GOT_TYPE_TLS_DESC.
3128         (Target_i386::got_mod_index_entry): Remove unnecessary code.
3129         (Target_i386::Scan::local): Implement R_386_TLS_GOTDESC and
3130         R_386_TLS_DESC_CALL relocations.  Fix problem with initial-exec
3131         relocations.
3132         (Target_i386::Scan::global): Fix problem with GD-to-IE relaxation.
3133         Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations;
3134         Fix problem with initial-exec relocations.
3135         (Target_i386::Relocate::relocate_tls): Likewise.
3136         (Target_i386::Relocate::tls_gd_to_ie): Fix problem with GD-to-IE
3137         relaxation.
3138         * output.cc (Output_data_dynamic::Dynamic_entry::write): Add
3139         support for section-plus-offset dynamic table entries.
3140         * output.h (Output_data_dynamic::add_section_plus_offset): New function.
3141         (Output_data_dynamic::Dynamic_entry): Add support for
3142         section-plus-offset dynamic table entries.
3143         (Output_data_dynamic::Classification): Likewise.
3144         (Output_data_dynamic::classification_): Renamed offset_.
3145         * x86_64.cc (Target_x86_64::Relocate::tls_desc_gd_to_ie): New function.
3146         (Target_x86_64::Relocate::tls_desc_gd_to_le): New function.
3147         (Target_x86_64::make_plt_section): New function.
3148         (Target_x86_64::reserve_tlsdesc_entries): New function.
3149         (Output_data_plt_x86_64::Output_data_plt_x86_64): Add new parameter.
3150         (Output_data_plt_x86_64::reserve_tlsdesc_entry): New function.
3151         (Output_data_plt_x86_64::has_tlsdesc_entry): New function.
3152         (Output_data_plt_x86_64::get_tlsdesc_got_offset): New function.
3153         (Output_data_plt_x86_64::get_tlsdesc_plt_offset): New function.
3154         (Output_data_plt_x86_64::tlsdesc_plt_entry): New field.
3155         (Output_data_plt_x86_64::set_final_data_size): Move out of line;
3156         add extra PLT entry for TLS descriptors.
3157         (Output_data_plt_x86_64::got_): New field.
3158         (Output_data_plt_x86_64::tlsdesc_got_offset_): New field.
3159         (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize new
3160         fields.
3161         (Output_data_plt_x86_64::do_write): Write extra PLT entry for TLS
3162         descriptors.
3163         (Target_x86_64::make_plt_entry): Factor out make_plt_section.
3164         (Target_x86_64::got_mod_index_entry): Remove unnecessary code.
3165         (Target_x86_64::Scan::local): Implement R_386_TLS_GOTDESC and
3166         R_386_TLS_DESC_CALL relocations.
3167         (Target_x86_64::Scan::global): Likewise.
3168         (Target_x86_64::do_finalize_sections): Add dynamic table entries
3169         for TLS descriptors.
3170         (Relocate::relocate_tls): Fix problem with GD-to-IE relaxation.
3171         Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations.
3172         (Target_x86_64::Relocate::tls_gd_to_ie): Fix problem with
3173         GD-to-IE relaxation.
3174         * configure.ac: Export new conditional variables TLS_GNU2_DIALECT
3175         and TLS_DESCRIPTORS.
3176         * Makefile.in: Rebuild.
3177         * configure: Rebuild.
3178         * testsuite/Makefile.am (tls_shared_gd_to_ie_test): New target.
3179         (tls_test_shared2.so): New target.
3180         (tls_shared_gd_to_ie_test_SOURCES): New variable.
3181         (tls_shared_gd_to_ie_test_DEPENDENCIES): New variable.
3182         (tls_shared_gd_to_ie_test_LDFLAGS): New variable.
3183         (tls_shared_gd_to_ie_test_LDADD): New variable.
3184         (tls_shared_gnu2_gd_to_ie_test): New target.
3185         (tls_test_gnu2.o, tls_test_file2_gnu2.o, tls_test_gnu2_shared2.so):
3186         New targets.
3187         (tls_shared_gnu2_gd_to_ie_test_SOURCES): New variable.
3188         (ls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): New variable.
3189         (tls_shared_gnu2_gd_to_ie_test_LDFLAGS): New variable.
3190         (tls_shared_gnu2_gd_to_ie_test_LDADD): New variable.
3191         (tls_shared_gnu2_test): New target.
3192         (tls_test_gnu2_shared.so): New target.
3193         (tls_shared_gnu2_test_SOURCES): New variable.
3194         (tls_shared_gnu2_test_DEPENDENCIES): New variable.
3195         (tls_shared_gnu2_test_LDFLAGS): New variable.
3196         (tls_shared_gnu2_test_LDADD): New variable.
3197         * testsuite/Makefile.in: Rebuild.
3198         * testsuite/Makefile.
3199
3200 2008-04-11  Ian Lance Taylor  <iant@google.com>
3201
3202         * testsuite/Makefile.am (justsyms_2r.o): Add dependency on
3203         justsyms.t.
3204         * testsuite/Makefile.in: Rebuild.
3205
3206         * testsuite/script_test_2a.cc (script_test_string_a): Make 8 bytes
3207         long.
3208         * testsuite/script_test_2.cc (main): Adjust test.
3209
3210 2008-04-11  David S. Miller  <davem@davemloft.net>
3211             Ian Lance Taylor  <iant@google.com>
3212
3213         * options.h (General_options): Add entries for '-Y' and
3214         '-relax'.
3215         * options.cc (General_options:finalize): If -Y was used, add those
3216         entries to the library path instead of the default "/lib" and
3217         "/usr/lib".
3218
3219 2008-04-11  David S. Miller  <davem@davemloft.net>
3220
3221         * testsuite/justsyms.t: Start at 0x100.
3222         * testsuite/justsyms_1.cc: Adjust justsyms_string assertion.
3223         * testsuite/script_test_2b.cc (script_test_string_b): Make 8 bytes
3224         long.
3225         * testsuite/script_test_2.cc: Adjust string and section length
3226         checks.
3227
3228 2008-04-09  Ian Lance Taylor  <iant@google.com>
3229
3230         PR gold/5996
3231         * script-sections.cc (Sections_element::allocate_to_segment): Add
3232         orphan parameter.
3233         (Output_section_definition::allocate_to_segment): Likewise.
3234         (Orphan_output_section::allocate_to_segment): Likewise.
3235         (Script_sections::attach_sections_using_phdrs_clause): Don't
3236         propagate non-PT_LOAD segments to orphan sections.
3237         * testsuite/Makefile.am (script_test_3.stdout): Generate using
3238         readelf rather than objdump.
3239         * testsuite/script_test_3.sh: Adjust accordingly.  Test that
3240         .interp section and PT_INTERP segment are the same size.
3241         * testsuite/Makefile.in: Rebuild.
3242
3243         * symtab.cc (Symbol_table::add_from_dynobj): Only look for weak
3244         aliases for symbols defined in the same object.
3245         * testsuite/Makefile.am (check_PROGRAMS): Add weak_alias_test.
3246         (weak_alias_test_SOURCES): New variable.
3247         (weak_alias_test_DEPENDENCIES): New variable.
3248         (weak_alias_test_LDFLAGS): New variable.
3249         (weak_alias_test_LDADD): New variable.
3250         (weak_alias_test_1_pic.o, weak_alias_test_1.so): New targets.
3251         (weak_alias_test_2_pic.o, weak_alias_test_2.so): New targets.
3252         (weak_alias_test_3.o): New target.
3253         (weak_alias_test_4_pic.o, weak_alias_test_4.so): New targets.
3254         * testsuite/weak_alias_test_main.cc: New file.
3255         * testsuite/weak_alias_test_1.cc: New file.
3256         * testsuite/weak_alias_test_2.cc: New file.
3257         * testsuite/weak_alias_test_3.cc: New file.
3258
3259 2008-04-08  Ian Lance Taylor  <iant@google.com>
3260
3261         * options.h (class General_options): Add --noinhibit-exec option.
3262         * main.cc (main): Check --noinhibit-exec.
3263
3264         * options.h (class General_options): Define --wrap as a special
3265         option.  Add wrap_symbols_ field.
3266         (General_options::any_wrap_symbols): New function.
3267         (General_options::is_wrap_symbol): New function.
3268         * options.cc (General_options::parse_wrap): New function.
3269         (General_options::General_options): Initialize wrap_symbols_.
3270         * symtab.cc (Symbol_table::wrap_symbol): New function.
3271         (Symbol_table::add_from_object): Handle --wrap.
3272         * symtab.h (class Symbol_table): Declare wrap_symbol.
3273         * target.h (Target::wrap_char): New function.
3274         (Target::Target_info): Add wrap_char field.
3275         * i386.cc (Target_i386::i386_info): Initialize wrap_char.
3276         * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
3277         * testsuite/testfile.cc (Target_test::test_target_info):
3278         Likewise.
3279
3280         * errors.cc (Errors::undefined_symbol): Mention symbol version if
3281         there is one.
3282
3283         * layout.h (class Layout): Add added_eh_frame_data_ field.
3284         * layout.cc (Layout::Layout): Initialize new field.
3285         (Layout::layout_eh_frame): Don't add eh_frame_data_ to .eh_frame
3286         output section until we find a section we merged successfully.
3287         * object.cc (Sized_relobj::check_eh_frame_flags): Don't require
3288         that the size be non-zero.
3289
3290         * merge.cc (Object_merge_map::get_output_offset): Remove inline
3291         qualifier.
3292
3293 2008-04-08  Craig Silverstein  <csilvers@google.com>
3294
3295         * configure.ac: Export new conditional variable HAVE_ZLIB.
3296         * testsuite/Makefile.am (flagstest_o_specialfile): Condition
3297         on HAVE_ZLIB.
3298         (flagstest_o_specialfile_and_compress_debug_sections): Likewise.
3299         * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
3300
3301 2008-04-07  Ian Lance Taylor  <iant@google.com>
3302
3303         * version.cc (version_string): Set to "1.5".
3304
3305         * x86_64.cc (Target_x86_64::Scan): Change from struct to class.
3306         Add issued_non_pic_error_ field.  Declare check_non_pic.
3307         (Target_x86_64::Scan::check_non_pic): New function.
3308         (Target_x86_64::Scan::local): Call check_non_pic as appropriate.
3309         (Target_x86_64::Scan::global): Likewise.
3310
3311         * output.cc (Output_reloc<SHT_REL>::local_section_offset): Add
3312         addend parameter.  Change caller.  Handle merge sections.
3313         (Output_reloc<SHT_REL>::symbol_value): Change parameter type from
3314         Address to Addend.  Don't add in the result of
3315         local_section_offset, pass down the addend and use the returned
3316         value.
3317         * output.h (class Output_reloc<SHT_REL>): Add Addend typedef.
3318         Update declarations of local_section_offset and symbol_value.
3319         * testsuite/two_file_test_1.cc (t18): New function.
3320         * testsuite/two_file_test_2.cc (f18): New function.
3321         * testsuite/two_file_test_main.cc (main): Call t18.
3322         * testsuite/two_file_test.h (t18, f18): Declare.
3323
3324         * configure.ac: Don't test for objdump, c++filt, or readelf.
3325         * testsuite/Makefile.am: Remove READELF and OBJDUMP_AND_CPPFILT
3326         conditionals.
3327         (TEST_READELF): New variable.
3328         (TEST_OBJDUMP, TEST_CXXFILT, TEST_STRIP): New variables.
3329         (check_PROGRAMS): Add two_file_strip_test.
3330         (two_file_strip_test): New target.
3331         (check_PROGRAMS): Add two_file_same_shared_strip_test.
3332         (two_file_same_shared_strip_test_SOURCES): New variable.
3333         (two_file_same_shared_strip_test_DEPENDENCIES): New variable.
3334         (two_file_same_shared_strip_test_LDFLAGS): New variable.
3335         (two_file_same_shared_strip_test_LDADD): New variable.
3336         (two_file_shared_strip.so): New target.
3337         (ver_test_2.syms, ver_test_4.syms): Use TEST_READELF.
3338         (ver_test_5.syms, ver_test_7.syms): Likewise.
3339         (ver_matching_test.stdout): Use TEST_OBJDUMP and TEST_CXXFILT.
3340         (strip_test_3.stdout): Use TEST_OBJDUMP.
3341         * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
3342
3343 2008-04-04  Cary Coutant  <ccoutant@google.com>
3344
3345         * symtab.h (Symbol::is_weak_undefined): New function.
3346         (Symbol::is_strong_undefined): New function.
3347         (Symbol::is_absolute): New function.
3348         (Symbol::needs_plt_entry): Exclude weak undefined symbols.
3349         (Symbol::needs_dynamic_reloc): Exclude weak undefined and
3350         absolute symbols.
3351         * testsuite/Makefile.am (check_PROGRAMS): Add weak_undef_test.
3352         (weak_undef_test): New target.
3353         * testsuite/Makefile.in: Rebuild.
3354         * testsuite/weak_undef_file1.cc: New file.
3355         * testsuite/weak_undef_file2.cc: New file.
3356         * testsuite/weak_undef_test.cc: New file.
3357
3358 2008-04-03  Craig Silverstein  <csilvers@google.com>
3359
3360         * compressed_output.h (class Output_compressed_section): Use
3361         unsigned buffer.
3362         * compressed_output.cc (zlib_compress): Use unsigned buffers,
3363         add zlib header.
3364         (zlib_compressed_suffix): Removed.
3365         (Output_compressed_section::set_final_data_size): Use unsigned
3366         buffers.
3367         * testsuite/Makefile.am (flagstest_compress_debug_sections):
3368         Fix linker invocation.
3369         (flagstest_o_specialfile_and_compress_debug_sections):
3370         Likewise.
3371         * testsuite/Makefile.in: Regenerated.
3372
3373 2008-04-02  David S. Miller  <davem@davemloft.net>
3374
3375         *  dwarf_reader.cc (Sized_dwarf_line_info::read_header_prolog,
3376         Sized_dwarf_line_info::process_one_opcode): Use Swap_unaligned.
3377
3378 2008-04-02  Craig Silverstein  <csilvers@google.com>
3379
3380         * TODO: New file.
3381
3382 2008-04-02  Ian Lance Taylor  <iant@google.com>
3383
3384         * fileread.cc (File_read::find_view): Add byteshift and vshifted
3385         parameters.  Update for new key type to views_.  Change all
3386         callers.
3387         (File_read::read): Adjust for byteshift in returned view.
3388         (File_read::add_view): New function, broken out of
3389         find_and_make_view.
3390         (File_read::make_view): New function, broken out of
3391         find_and_make_view.
3392         (File_read::find_or_make_view): Add offset and aligned
3393         parameters.  Rewrite accordingly.  Change all callers.
3394         (File_read::get_view): Add offset and aligned parameters.  Adjust
3395         for byteshift in return value.
3396         (File_read::get_lasting_view): Likewise.
3397         * fileread.h (class File_read): Update declarations.
3398         (class File_read::View): Add byteshift_ field.  Add byteshift to
3399         constructor.  Add byteshift method.
3400         * archive.h (Archive::clear_uncached_views): New function.
3401         (Archive::get_view): Add aligned parameter.  Change all callers.
3402         * object.h (Object::get_view): Add aligned parameter.  Change all
3403         callers.
3404         (Object::get_lasting_view): Likewise.
3405
3406         * fileread.cc (File_read::release): Don't call clear_views if
3407         there are multiple objects.
3408         * fileread.h (File_read::clear_uncached_views): New function.
3409         * archive.cc (Add_archive_symbols::run): Call clear_uncached_views
3410         on the archive.
3411
3412 2008-03-31  Cary Coutant  <ccoutant@google.com>
3413
3414         Add thin archive support.
3415         * archive.cc (Archive::armagt): New const.
3416         (Archive::setup): Remove task parameter and calls to unlock.
3417         (Archive::unlock_nested_archives): New function.
3418         (Archive::read_header): Add nested_off parameter. Change
3419         all callers.
3420         (Archive::interpret_header): Likewise.
3421         (Archive::include_all_members): Change to handle thin
3422         archives.
3423         (Archive::include_member): Likewise.
3424         * archive.h (Archive::Archive): Add new parameters and
3425         initializers.
3426         (Archive::armagt): New const.
3427         (Archive::setup): Remove task parameter.
3428         (Archive::unlock_nested_archives): New function.
3429         (Archive::read_header): Add nested_off parameter.
3430         (Archive::interpret_header): Likewise.
3431         (Archive::Nested_archive_table): New typedef.
3432         (Archive::is_thin_archive_): New field.
3433         (Archive::nested_archives_): New field.
3434         (Archive::options_): New field.
3435         (Archive::dirpath_): New field.
3436         (Archive::task_): New field.
3437         * readsyms.cc (Read_symbols::do_read_symbols): Add check
3438         for thin archives.  Pass additional parameters to
3439         Archive::Archive.  Unlock the archive file after calling
3440         Archive::setup.
3441
3442 2008-03-29  Ian Lance Taylor  <iant@google.com>
3443
3444         * symtab.cc (Symbol_table::do_define_as_constant): Don't force a
3445         version symbol to be local.
3446         * testsuite/ver_test_4.sh: New file.
3447         * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_4.sh.
3448         (check_DATA): Add ver_test_4.syms.
3449         (ver_test_4.syms): New target.
3450         * testsuite/Makefile.in: Rebuild.
3451
3452         * output.cc
3453         (Output_section::Input_section_sort_entry::has_priority): New
3454         function.
3455         (Output_section::Input_section_sort_entry::match_file_name): New
3456         function.
3457         (Output_section::Input_section_sort_entry::match_section_name):
3458         Remove.
3459         (Output_section::Input_section_sort_entry::match_section_name_prefix):
3460         Remove.
3461         (Output_section::Input_section_sort_entry::match_section_file):
3462         Remove.
3463         (Output_section::Input_section_sort_compare::operator()): Rewrite
3464         using new Input_section_sort_entry functions.  Sort crtbegin and
3465         crtend first.  Sort sections with no priority before sections with
3466         a priority.
3467         * testsuite/initpri1.c (d3): Check j != 4.
3468         (cd5): New constructor/destructor function.
3469         (main): Check j != 2.
3470
3471         * symtab.cc (Symbol_table::add_from_object): If we don't use the
3472         new symbol when resolving, don't call set_is_default.
3473         * testsuite/ver_test_7.cc: New file.
3474         * testsuite/ver_test_7.sh: New file.
3475         * testsuite/Makefile.am (ver_test_7.so): New target.
3476         (ver_test_7.o): New target.
3477         (check_SCRIPTS): Add ver_test_7.sh.
3478         (check_DATA): Add ver_test_7.syms.
3479         (ver_test_7.syms): New target.
3480
3481 2008-03-28  Ian Lance Taylor  <iant@google.com>
3482
3483         * layout.cc (Layout::layout): If we see an input section with a
3484         name that needs sorting, set the must_sort flag for the output
3485         section.
3486         (Layout::make_output_section): If the name of the output section
3487         indicates that it might require sorting, set the may_sort flag.
3488         * output.h (Output_section::may_sort_attached_input_sections): New
3489         function.
3490         (Output_section::set_may_sort_attached_input_sections): New
3491         function.
3492         (Output_section::must_sort_attached_input_sections): New
3493         function.
3494         (Output_section::set_must_sort_attached_input_sections): New
3495         function.
3496         (class Output_section): Declare Input_section_sort_entry.  Define
3497         Input_section_sort_compare.  Declare
3498         sort_attached_input_sections.  Add new fields:
3499         may_sort_attached_input_sections_,
3500         must_sort_attached_input_sections_,
3501         attached_input_sections_are_sorted_.
3502         * output.cc (Output_section::Output_section): Initialize new
3503         fields.
3504         (Output_section::add_input_section): Add an entry to
3505         input_sections_ if may_sort or must_sort are true.
3506         (Output_section::set_final_data_size): Call
3507         sort_attached_input_sections if necessary.
3508         (Output_section::Input_section_sort_entry): Define new class.
3509         (Output_section::Input_section_sort_compare::operator()): New
3510         function.
3511         (Output_section::sort_attached_input_sections): New function.
3512         * configure.ac: Check whether the compiler supports constructor
3513         priorities.  Define a CONSTRUCTOR_PRIORITY automake conditional.
3514         * testsuite/initpri1.c: New file.
3515         * testsuite/Makefile.am (check_PROGRAMS): Add initpri1 if
3516         CONSTRUCTOR_PRIORITY.
3517         (initpri1_SOURCES, initpri1_DEPENDENCIES): New variables.
3518         (initpri1_LDFLAGS): New variable.
3519         * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
3520
3521 2008-03-27  Ian Lance Taylor  <iant@google.com>
3522
3523         * common.cc (Sort_commons::operator): Correct sorting algorithm.
3524         * testsuite/common_test_1.c: New file.
3525         * testsuite/Makefile.am (check_PROGRAMS): Add common_test_1.
3526         (common_test_1_SOURCES): New variable.
3527         (common_test_1_DEPENDENCIES): New variable.
3528         (common_test_1_LDFLAGS): New variable.
3529
3530         * symtab.cc (Symbol_table::add_from_object): Handle saw_undefined_
3531         and commons_ correctly when NAME/VERSION does not override
3532         NAME/NULL.
3533         * testsuite/ver_test_6.c: New file.
3534         * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_6
3535         (ver_test_6_SOURCES, ver_test_6_DEPENDENCIES): New variables.
3536         (ver_test_6_LDFLAGS, ver_test_6_LDADD): New variables.
3537
3538 2008-03-26  Ian Lance Taylor  <iant@google.com>
3539
3540         * symtab.cc (Symbol_table::add_from_relobj): Don't set the version
3541         of an undefined symbol from a version script.
3542         * testsuite/Makefile.am (ver_test_5.so): New target.
3543         (ver_test_5.o): New target.
3544         (check_SCRIPTS): Add ver_test_5.sh.
3545         (check_DATA): Add ver_test_5.syms.
3546         (ver_test_5.syms): New target.
3547         * testsuite/ver_test_5.cc: New file.
3548         * testsuite/ver_test_5.script: New file.
3549         * testsuite/ver_test_5.sh: New file.
3550         * Makefile.in, testsuite/Makefile.in: Rebuild.
3551
3552         PR gold/5986
3553         Fix problems building gold with gcc 4.3.0.
3554         * gold.h (TEMPLATE_ATTRIBUTE_PRINTF_4): Define.
3555         (gold_error_at_location, gold_warning_at_location): Use it.
3556         * configure.ac: Check whether we can compile and use a template
3557         function with a printf attribute.
3558         * x86_64.cc (Target_x86_64::do_code_fill): Swap out a 32-bit value
3559         when jumping over bytes.
3560         * object.cc: Instantiate Object::read_section_data.
3561         * debug.h: Include <cstring>
3562         * dwarf_reader.cc: Include <algorithm>
3563         * main.cc: Include <cstring>.
3564         * options.cc: Include <cstring>.
3565         * output.cc: Include <cstring>.
3566         * script.cc: Include <cstring>.
3567         * script.h: Include <string>.
3568         * symtab.cc: Include <cstring> and <algorithm>.
3569         * target-select.cc: Include <cstring>.
3570         * version.cc: Include <string>.
3571         * testsuite/testmain.cc: Include <cstdlib>.
3572         * configure, config.in: Rebuild.
3573
3574 2008-03-25  Ian Lance Taylor  <iant@google.com>
3575
3576         * options.cc: Include "../bfd/bfdver.h".
3577         (options::help): Print bug reporting address.
3578
3579         * version.cc (print_version): Adjust output for current value of
3580         BFD_VERSION_STRING.
3581
3582         * NEWS: New file.
3583
3584         * options.cc (options::help): Print list of supported targets.
3585         * target-select.h: Include <vector>.
3586         (class Target_selector): Make machine_, size_, and is_big_endian_
3587         fields const.  Add bfd_name_ and instantiated_target_ fields.
3588         (Target_selector::Target_selector): Add bfd_name parameter.
3589         (Target_selector::recognize): Make non-virtual, call
3590         do_recognize.
3591         (Target_selector::recognize_by_name): Make non-virtual, call
3592         do_recognize_by_name.
3593         (Target_selector::supported_names): New function.
3594         (Target_selector::bfd_name): New function.
3595         (Target_selector::do_instantiate_target): New pure virtual
3596         function.
3597         (Target_selector::do_recognize): New virtual function.
3598         (Target_selector::do_recognize_by_name): New virtual function.
3599         (Target_selector::instantiate_target): New private function.
3600         (supported_target_names): Declare.
3601         * target-select.cc (Target_selector::Target_selector): Update for
3602         new parameter and fields.
3603         (select_target_by_name): Check that the name matches before
3604         calling recognize_by_name.
3605         (supported_target_names): New function.
3606         * i386.cc (class Target_selector_i386): Update Target_selector
3607         constructor call.  Remove recognize and recognize_by_name.  Add
3608         do_instantiate_target.
3609         * x86_64.cc (class Target_selector_x86_64): Likewise.
3610         * testsuite/testfile.cc (class Target_selector_test): Update for
3611         changes to Target_selector.
3612
3613         * README: Rewrite, with some notes on unsupported features.
3614
3615 2008-03-24  Cary Coutant  <ccoutant@google.com>
3616
3617         * i386.cc (Target_i386::Got_type): New enum declaration.
3618         (Target_i386::Scan::local): Updated callers of Output_data_got
3619         member functions.
3620         (Target_i386::Scan::global): Likewise.
3621         (Target_i386::Relocate::relocate): Likewise.
3622         (Target_i386::Relocate::relocate_tls): Likewise.
3623         * object.h (Got_offset_list): New class.
3624         (Sized_relobj::local_has_got_offset): Added got_type parameter.
3625         (Sized_relobj::local_got_offset): Likewise.
3626         (Sized_relobj::set_local_got_offset): Likewise.
3627         (Sized_relobj::local_has_tls_got_offset): Removed.
3628         (Sized_relobj::local_tls_got_offset): Removed.
3629         (Sized_relobj::set_local_tls_got_offset): Removed.
3630         (Sized_relobj::Local_got_offsets): Changed to store a list of offsets.
3631         * output.cc (Output_data_got::add_global): Added got_type parameter.
3632         (Output_data_got::add_global_with_rel): Likewise.
3633         (Output_data_got::add_global_with_rela): Likewise.
3634         (Output_data_got::add_global_pair_with_rel): New function.
3635         (Output_data_got::add_global_pair_with_rela): New function.
3636         (Output_data_got::add_local): Added got_type parameter.
3637         (Output_data_got::add_local_with_rel): Likewise.
3638         (Output_data_got::add_local_with_rela): Likewise.
3639         (Output_data_got::add_local_pair_with_rel): New function.
3640         (Output_data_got::add_local_pair_with_rela): New function.
3641         (Output_data_got::add_global_tls): Removed.
3642         (Output_data_got::add_global_tls_with_rel): Removed.
3643         (Output_data_got::add_global_tls_with_rela): Removed.
3644         (Output_data_got::add_local_tls): Removed.
3645         (Output_data_got::add_local_tls_with_rel): Removed.
3646         (Output_data_got::add_local_tls_with_rela): Removed.
3647         * output.h (Output_data_got::add_global): Added got_type parameter.
3648         (Output_data_got::add_global_with_rel): Likewise.
3649         (Output_data_got::add_global_with_rela): Likewise.
3650         (Output_data_got::add_global_pair_with_rel): New function.
3651         (Output_data_got::add_global_pair_with_rela): New function.
3652         (Output_data_got::add_local): Added got_type parameter.
3653         (Output_data_got::add_local_with_rel): Likewise.
3654         (Output_data_got::add_local_with_rela): Likewise.
3655         (Output_data_got::add_local_pair_with_rel): New function.
3656         (Output_data_got::add_local_pair_with_rela): New function.
3657         (Output_data_got::add_global_tls): Removed.
3658         (Output_data_got::add_global_tls_with_rel): Removed.
3659         (Output_data_got::add_global_tls_with_rela): Removed.
3660         (Output_data_got::add_local_tls): Removed.
3661         (Output_data_got::add_local_tls_with_rel): Removed.
3662         (Output_data_got::add_local_tls_with_rela): Removed.
3663         * resolve.cc (Symbol::override_base_with_special): Removed
3664         reference to has_got_offset_ field.
3665         * symtab.cc (Symbol::init_fields): Replaced initialization
3666         of got_offset_ with got_offsets_.  Removed initialization
3667         of has_got_offset_
3668         * symtab.h (Symbol::has_got_offset): Aded got_type parameter.
3669         (Symbol::got_offset): Likewise.
3670         (Symbol::set_got_offset): Likewise.
3671         (Symbol::has_tls_got_offset): Removed.
3672         (Symbol::tls_got_offset): Removed.
3673         (Symbol::set_tls_got_offset): Removed.
3674         (Symbol::got_offset_): Removed.
3675         (Symbol::tls_mod_got_offset_): Removed.
3676         (Symbol::tls_pair_got_offset_): Removed.
3677         (Symbol::got_offsets_): New field.
3678         (Symbol::has_got_offset): Removed.
3679         (Symbol::has_tls_mod_got_offset): Removed.
3680         (Symbol::has_tls_pair_got_offset): Removed.
3681         * x86_64.cc (Target_x86_64::Got_type): New enum declaration.
3682         (Target_x86_64::Scan::local): Updated callers of Output_data_got
3683         member functions.
3684         (Target_x86_64::Scan::global): Likewise.
3685         (Target_x86_64::Relocate::relocate): Likewise.
3686         (Target_x86_64::Relocate::relocate_tls): Likewise.
3687
3688 2008-03-25  Ben Elliston  <bje@au.ibm.com>
3689
3690         * yyscript.y: Fix spelling error in comment.
3691
3692 2008-03-24  Ian Lance Taylor  <iant@google.com>
3693
3694         * options.h (class General_options): Define build_id option.
3695         * layout.h (class Layout): Declare write_build_id, create_note,
3696         create_build_id.  Add build_id_note_ member.
3697         * layout.cc: Include <cerrno>, <fcntl.h>, <unistd.h>,
3698         "libiberty.h", "md5.h", "sha1.h".
3699         (Layout::Layout): Initialize eh_frame_data_,
3700         eh_frame_hdr_section_, and build_id_note_.
3701         (Layout::finalize): Call create_build_id.
3702         (Layout::create_note): New function, broken out of
3703         Layout::create_gold_note.
3704         (Layout::create_gold_note): Call create_note.
3705         (Layout::create_build_id): New function.
3706         (Layout::write_build_id): New function.
3707         (Close_task_runner::run): Call write_build_id.
3708
3709         * x86_64.cc: Correct license to GPLv3.
3710
3711 2008-03-23  Ian Lance Taylor  <iant@google.com>
3712
3713         * options.cc: Include "demangle.h".
3714         (parse_optional_string): New function.
3715         (parse_long_option): Handle takes_optional_argument.
3716         (parse_short_option): Update dash_z initializer.  Handle
3717         takes_optional_argument.
3718         (General_options::General_options): Initialize do_demangle_.
3719         (General_options::finalize): Set do_demangle_.  Handle demangling
3720         style.
3721         * options.h (parse_optional_string): Declare.
3722         (struct One_option): Add optional_arg field.  Update constructor.
3723         Update call constructor calls.  Add takes_optional_argument
3724         function.
3725         (DEFINE_var): Add optional_arg__ parameter.  Change all callers.
3726         (DEFINE_optional_string): Define.
3727         (General_options::demangle): Change from DEFINE_bool to
3728         DEFINE_optional_string.
3729         (General_options::no_demangle): New function.
3730         (General_options::do_demangle): New function.
3731         (General_options::set_do_demangle): New function.
3732         (General_options::execstack_status_): Move definition to end of
3733         class definition.
3734         (General_options::static_): Likewise.
3735         (General_options::do_demangle_): New field.
3736         * object.cc (big_endian>::get_symbol_location_info): Call
3737         Options::do_demangle, not Options::demangle.
3738         * symtab.cc (demangle): Likewise.
3739
3740 2008-03-22  Ian Lance Taylor  <iant@google.com>
3741
3742         * gold.h: Include <cstddef> and <sys/types.h>
3743         * options.h: Include <cstring>.
3744
3745 2008-03-21  Ian Lance Taylor  <iant@google.com>
3746
3747         * Added source code to GNU binutils.