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