OSDN Git Service

PR 5990
[pf3gnuchains/pf3gnuchains3x.git] / gold / ChangeLog
1 2009-02-27  Ian Lance Taylor  <iant@google.com>
2
3         PR 5990
4         * descriptors.h (Open_descriptor): Add is_on_stack field.
5         * descriptors.cc (Descriptors::open): If the descriptor is on the
6         top of the stack, remove it.  Initialize is_on_stack field.
7         (Descriptors::release): Only add pod to stack if it is not on the
8         stack already.
9         (Descriptors::close_some_descriptor): Clear stack_next and
10         is_on_stack fields.
11
12         PR 7091
13         * output.cc (Output_section::find_starting_output_address): Rename
14         from starting_output_address; add PADDR parameter; change return
15         type.
16         * output.h (class Output_section): Declare
17         find_starting_output_address instead of starting_output_address.
18         * object.cc (Sized_relobj::do_finalize_local_symbols): Handle a
19         section symbol for which we can't find a merge section.
20
21         PR 9836
22         * symtab.cc (Symbol_table::add_from_object): If the visibility is
23         hidden or internal, force the symbol to be local.
24         * resolve.cc (Symbol::override_visibility): Define.
25         (Symbol::override_base): Use override_visibility.
26         (Symbol_table::resolve): Likewise.
27         (Symbol::override_base_with_special): Likewise.
28         (Symbol_table::override_with_special): If the visibility is hidden
29         or internal, force the symbol to be local.
30         * symtab.h (class Symbol): Add set_visibility and
31         override_visibility.
32         * testsuite/ver_test_1.sh: New file.
33         * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_1.sh.
34         (check_DATA): Add ver_test_1.syms.
35         (ver_test_1.syms): New target.
36         * testsuite/Makefile.in: Rebuild.
37
38 2009-02-25  Cary Coutant  <ccoutant@google.com>
39
40         * layout.cc (Layout::choose_output_section): Don't rename sections
41         when using a linker script that has a SECTIONS clause.
42         * Makefile.in: Regenerate.
43
44         * testsuite/Makefile.am (script_test_5.sh): New test case.
45         * testsuite/Makefile.in: Regenerate.
46         * testsuite/script_test_5.cc: New file.
47         * testsuite/script_test_5.sh: New file.
48         * testsuite/script_test_5.t: New file.
49
50 2009-02-13  Rafael Avila de Espindola  <espindola@google.com>
51
52         * archive.cc (Archive::include_member): Update calls to add_symbols.
53         * dynobj.cc (Sized_dynobj<size, big_endian>::make_version_map): Add
54         the Layout argument.
55         * dynobj.h (do_add_symbols): Add the Layout argument.
56         * object.cc (Sized_relobj<size, big_endian>::do_add_symbols): Add the
57         Layout argument.
58         * object.h (Object::add_symbols): Add the Layout argument.
59         (Object::do_add_symbols): Add the Layout argument.
60         (Sized_relobj::do_add_symbols): Add the Layout argument.
61         * plugin.cc (Sized_pluginobj<size, big_endian>::do_add_symbols):
62         Unify the two versions.
63         (Add_plugin_symbols): Remove.
64         * plugin.h (Pluginobj::add_symbols, Pluginobj::do_add_symbols): Remove.
65         (Sized_pluginobj::do_add_symbols): Unify the two versions.
66         (Add_plugin_symbols): Remove.
67         * readsyms.cc (Read_symbols::do_read_symbols): Update call to
68         Add_symbols. Use Add_symbols instead of Add_plugin_symbols.
69         (Add_symbols::run): Make it work with Pulginobj.
70
71 2009-02-06  Ian Lance Taylor  <iant@google.com>
72
73         * object.cc (Sized_relobj::do_layout): Make info message start
74         with lower case letter.
75
76 2009-02-06  Mikolaj Zalewski  <mikolajz@google.com>
77
78         * binary.cc: Fix file comment.
79
80         * options.h (enum Incremental_disposition): Define.
81         (class General_options): Add new options: --incremental,
82         --incremental_changed, --incremental_unchanged,
83         --incremental_unknown.  Add incremental_disposition_ and
84         implicit_incremental_ fields.
85         (General_options::incremental_disposition): New function.
86         (class Position_dependent_options): Add incremental_disposition
87         option.
88         (Position_dependent_options::copy_from_options): Set incremental
89         dispositions.
90         * options.cc (General_options::parse_incremental_changed): New
91         function.
92         (General_options::parse_incremental_unchanged): New function.
93         (General_options::parse_incremental_unknown): New function.
94         (General_options::General_options): Initialize new fields
95         incremental_disposition_ and implicit_incremental_.
96         (General_options::finalize): Check for uasge of --incremental-*
97         without --incremental.
98
99 2009-02-06  Chris Demetriou  <cgd@google.com>
100
101         * gold.h (gold_undefined_symbol): Change to take only a Symbol
102         pointer and to report location as the file name associated with
103         the symbol.
104         (gold_undefined_symbol_at_location): New function to replace the
105         old gold_undefined_symbol functionality.
106         * target-reloc.h (relocate_section): Update to use
107         gold_undefined_symbol_at_location.
108         * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
109         Call gold_undefined_symbol function rather than gold_error.
110         * errors.h (Errors::undefined_symbol): Take location as a
111         string, rather than calculating it from a relocation.
112         * errors.cc (Errors::fatal): Print "fatal error:" before the
113         formatted message.
114         (Errors::error, Errors::error_at_location): Print "error: "
115         before the formatted message.
116         (Errors::undefined_symbol): Take location as a string, rather
117         than calculating it from a relocation.
118         (gold_undefined_symbol_at_location): New function akin to
119         old gold_undefined_symbol, calculates location from relocation.
120         (gold_undefined_symbol): Change to take only a Symbol pointer
121         and to report location as the file name associated with the symbol.
122         * testsuite/debug_msg.sh: Update for changed error messages.
123         * testsuite/undef_symbol.sh: Likewise.
124
125 2009-02-04  Duncan Sands  <baldrick@free.fr>
126
127         PR 9812
128         * reduced_debug_output.h
129         (Output_reduced_debug_abbrev_section::failed): Use format for
130         gold_warning.
131         (Output_reduced_debug_info_section::faild): Likewise.
132
133 2009-01-31  Mikolaj Zalewski  <mikolajz@google.com>
134
135         * script.cc (Lazy_demangler): New class.
136         (Version_script_info::get_symbol_version_helper): Demangle a
137         symbol only once.
138
139 2009-01-29  Cary Coutant  <ccoutant@google.com>
140
141         * i386.cc (Target_i386::Relocate::relocate): Recognize non-PIC calls
142         to __tls_get_addr.
143         * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
144
145 2009-01-28  Ian Lance Taylor  <iant@google.com>
146
147         * version.cc (version_string): Bump to 1.9.
148
149         * gold.h: Include <cstring> and <stdint.h>.
150         * version.cc: Include <cstdio>.
151         * object.cc (Sized_relobj::do_layout): Initialize gc_sd to avoid a
152         warning.
153         * reduced_debug_output.cc (insert_into_vector): Rename from
154         Insert_into_vector; change all callers.  Use Swap_unaligned to
155         avoid aliasing issue; remove union since it is unnecessary.
156
157 2009-01-27  Sriraman Tallam  <tmsriram@google.com>
158
159         * Makefile.am (CCFILES): Add gc.cc.
160         (HFILES): Add gc.h.
161         * Makefile.in: Regenerate.
162         * gold.cc (Gc_runner): New class.
163         (queue_initial_tasks): Call garbage collection related tasks
164         when corresponding options are invoked.
165         (queue_middle_gc_tasks): New function.
166         (queue_middle_tasks): Reorder tasks to allow relocs to be read and
167         processed early before laying out sections during garbage collection.
168         * gold.h (queue_middle_gc_tasks): New function.
169         (is_prefix_of): Move from "layout.cc".
170         * i386.cc (Target_i386::gc_process_relocs): New function.
171         * layout.cc (is_prefix_of): Remove. Move to "gold.h"
172         * main.cc (main): Create object of class "Garbage_collection".
173         * object.cc (Relobj::copy_symbols_data): New function.
174         (Relobj::is_section_name_included): New function.
175         (Sized_relobj::do_layout): Allow this function to be called twice 
176         during garbage collection and defer layout of section during the 
177         first call.
178         * object.h (Relobj::get_symbols_data): New function.
179         (Relobj::is_section_name_included): New function.
180         (Relobj::copy_symbols_data): New function.
181         (Relobj::set_symbols_data): New function.
182         (Relobj::get_relocs_data): New function.
183         (Relobj::set_relocs_data): New function.
184         (Relobj::is_output_section_offset_invalid): New pure virtual function.
185         (Relobj::gc_process_relocs): New function.
186         (Relobj::do_gc_process_relocs): New pure virtual function.
187         (Relobj::sd_): New data member.
188         (Sized_relobj::is_output_section_offset_invalid): New function.
189         (Sized_relobj::do_gc_process_relocs): New function.
190         * options.h (General_options::gc_sections): Modify to not be a no-op.
191         (General_options::print_gc_sections): New option.
192         * plugin.cc (Plugin_finish::run): Remove function call to
193         Plugin_manager::layout_deferred_objects.  Move it to "gold.cc".
194         * powerpc.cc (Target_powerpc::gc_process_relocs): New function.
195         * reloc.cc (Read_relocs::run): Add task to process relocs and
196         determine unreferenced sections when doing garbage collection.
197         (Gc_process_relocs): New class.
198         (Sized_relobj::do_gc_process_relocs): New function.
199         (Sized_relobj::do_scan_relocs): Don't try to scan the relocs for
200         sections that are garbage collected.
201         * reloc.h (Gc_process_relocs): New class.
202         * sparc.cc (Target_sparc::gc_process_relocs): New function.
203         * symtab.cc (Symbol::should_add_dynsym_entry): Do not add entries for
204         symbols whose corresponding sections are garbage collected.
205         (Symbol_table::Symbol_table): Add new parameter for the garbage
206         collection object.
207         (Symbol_table::gc_mark_undef_symbols): New function.
208         (Symbol_table::gc_mark_symbol_for_shlib): New function.
209         (Symbol_table::gc_mark_dyn_syms): New function.
210         (Symbol_table::resolve): Do not treat symbols seen in dynamic objects
211         as garbage.
212         (Symbol_table::add_from_object): Likewise.
213         (Symbol_table::add_from_relobj): When building shared objects, do not
214         treat externally visible symbols as garbage.
215         (Symbol_table::sized_finalize_symbol): Do not check dynamic symbol
216         table information for static and relocatable links.
217         * symtab.h (Symbol_table::set_gc): New function.
218         (Symbol_table::gc): New function.
219         (Symbol_table::gc_mark_undef_symbols): New function.
220         (Symbol_table::gc_mark_symbol_for_shlib): New function.
221         (Symbol_table::gc_mark_dyn_syms): New function.
222         (Symbol_table::gc_): New data member.
223         * target.h (Sized_target::gc_process_relocs): New pure virtual 
224         function.
225         * x86_64.cc (Target_x86_64::gc_process_relocs): New function.
226         * testsuite/testfile.cc (Target_test::gc_process_relocs): New function.
227
228 2009-01-20  Chris Faylor <me.sourceware@sourceware.org>
229
230         * options.h (General_options::gc_sections): Define as a no-op for now.
231         (General_options::no_keep_memory): Ditto.
232         (General_options::Bshareable): Define.
233         * options.cc (General_options::finalize): Honor -Bshareable.
234
235 2009-01-20  Andreas Schwab  <schwab@suse.de>
236
237         * powerpc.cc (Powerpc_relocate_functions::rel16_ha): Don't try to
238         read the value in the contents, since we don't use it.  Use the
239         template endianness when writing.
240         (Relocate::relocate): Use it for R_PPC_REL16_HA.
241
242 2009-01-19  Andreas Schwab  <schwab@suse.de>
243
244         * configure.tgt (powerpc64-*): Fix targ_obj.
245
246 2009-01-15  Ian Lance Taylor  <iant@google.com>
247
248         * object.cc (Sized_relobj::write_local_symbols): Don't write out
249         local symbols when stripping all symbols.
250
251 2009-01-14  Cary Coutant  <ccoutant@google.com>
252
253         * output.cc (Output_reloc): Add explicit instantiations.
254
255 2009-01-14  Cary Coutant  <ccoutant@google.com>
256
257         * archive.cc (Archive::get_elf_object_for_member): Remove call
258         to File_read::claim_for_plugin.
259         * descriptors.cc (Descriptors::open): Remove reference to
260         is_claimed.
261         (Descriptors::claim_for_plugin): Remove.
262         * descriptors.h (Descriptors::claim_for_plugin): Remove.
263         (Descriptors::is_claimed): Remove.
264         (claim_descriptor_for_plugin): Remove.
265         * fileread.cc (File_read::claim_for_plugin): Remove.
266         * fileread.h (File_read::claim_for_plugin): Remove.
267         (File_read::descriptor): Reopen descriptor if necessary.
268         * plugin.cc  (Plugin::load): Add two new APIs to transfer vector.
269         (Plugin_manager::all_symbols_read): Add task parameter. Change
270         all callers.
271         (Plugin_manager::get_input_file): New function.
272         (Plugin_manager::release_input_file): New function.
273         (Pluginobj::Pluginobj): Add filesize parameter and initialize
274         corresponding data member.
275         (Sized_pluginobj::Sized_pluginobj): Add filesize parameter
276         and pass to base constructor. Change all callers.
277         (get_input_file, release_input_file): New functions.
278         (make_sized_plugin_object): Add filesize parameter. Change all callers.
279         * plugin.h (Plugin_manager::Plugin_manager): Initialize task_ member.
280         (Plugin_manager::all_symbols_read): Add task parameter.
281         (Plugin_manager::get_input_file): New function.
282         (Plugin_manager::release_input_file): New function.
283         (Plugin_manager::task_): New data member.
284         (Pluginobj::Pluginobj): Add filesize parameter.
285         (Pluginobj::filename): New function.
286         (Pluginobj::descriptor): New function.
287         (Pluginobj::filesize): New function.
288         (Pluginobj::filesize_): New data member.
289         (Sized_pluginobj::Sized_pluginobj): Add filesize parameter.
290         * readsyms.cc (Read_symbols::do_read_symbols): Remove call to
291         File_read::claim_for_plugin; use Object::unlock to unlock the file.
292
293         * testsuite/Makefile.am (plugin_test_4): New test case for plugins
294         with archive libraries.
295         * testsuite/Makefile.in: Regenerate.
296         * testsuite/plugin_test.c (struct sym_info): New type.
297         (get_input_file, release_input_file): New static variables.
298         (onload): Capture new transfer vector entries.
299         (claim_file_hook): Stop reading at end of file according to filesize.
300         Factor out parsing of readelf output into separate function.
301         (all_symbols_read_hook): Exercise get_input_file and release_input_file
302         APIs and get the source file name from the symbol table.  Convert
303         source file name to corresponding object file name.  Print info
304         message when adding new input files.
305         (parse_readelf_line): New function.
306         * testsuite/plugin_test_1.sh: Add checks for new info messages.
307         * testsuite/plugin_test_2.sh: Likewise.
308         * testsuite/plugin_test_3.sh: Likewise.
309         * testsuite/plugin_test_4.sh: New test case.
310
311 2009-01-07  Ian Lance Taylor  <iant@google.com>
312
313         * version.cc (version_string): Bump to 1.8.
314
315 2008-12-23  Cary Coutant  <ccoutant@google.com>
316
317         * gold.cc (gold_exit): Call plugin cleanup handlers on exit.
318         * plugin.cc (Plugin_manager::finish): Rename as
319         layout_deferred_objects.  Move cleanup to separate function.
320         (Plugin_manager::cleanup): New function.
321         (Plugin_finish::run): Call layout_deferred_objects and cleanup
322         separately.
323         * plugin.h (Plugin_manager::finish): Rename as
324         layout_deferred_objects.
325         (Plugin_manager::cleanup): New function.
326         (Plugin_manager::cleanup_done): New field.
327
328 2008-12-23  Cary Coutant  <ccoutant@google.com>
329
330         * plugin.cc (is_visible_from_outside): New function.
331         (Pluginobj::get_symbol_resolution_info): Call is_visible_from_outside
332         so we don't return "IR only" status for exported symbols or -r links.
333
334         * testsuite/Makefile.am (plugin_test_3): New test case.
335         * testsuite/Makefile.in: Regenerate.
336         * testsuite/plugin_test_3.sh: New file.
337
338 2008-12-22  Cary Coutant  <ccoutant@google.com>
339
340         * object.cc (Sized_relobj::layout_section): New function.
341         (Sized_relobj::do_layout): Defer layout of input sections until after
342         plugin has provided replacement files.
343         (Sized_relobj::do_layout_deferred_sections): New function.
344         * object.h (Relobj::set_section_offset): Remove virtual keyword.
345         (Relobj::layout_deferred_sections): New function.
346         (Relobj::do_layout_deferred_sections): New function.
347         (Sized_relobj::do_layout_deferred_sections): New function.
348         (Sized_relobj::layout_section): New function.
349         (Sized_relobj::Deferred_layout): New structure.
350         (Sized_relobj::deferred_layout_): New field.
351         * plugin.cc (Plugin_manager::finish): Renamed, was cleanup.
352         Change all callers.  Layout deferred sections.
353         (class Plugin_finish): Renamed, was Plugin_cleanup.  Change all
354         references.
355         (Plugin_hook::run): Move code from do_plugin_hook inline.
356         (Plugin_hook::do_plugin_hook): Remove.
357         * plugin.h (Plugin_manager::Plugin_manager): Add missing initializers.
358         (Plugin_manager::finish): Renamed, was cleanup.
359         (Plugin_manager::should_defer_layout): New function.
360         (Plugin_manager::add_deferred_layout_object): New function.
361         (Plugin_manager::Deferred_layout_list): New type.
362         (Plugin_manager::deferred_layout_objects_): New field.
363         (Plugin_hook::do_plugin_hook): Remove.
364
365 2008-12-17  Ian Lance Taylor  <iant@google.com>
366
367         * options.h (class General_options): Add --no case for
368         --export-dynamic.
369
370 2008-12-16  Cary Coutant  <ccoutant@google.com>
371
372         * plugin.cc (Plugin::load): Move LDPT_MESSAGE to front of transfer
373         vector.
374         (Plugin_manager::claim_file): Create plugin object even if
375         plugin did not call the add_symbols callback.
376         (Plugin_obj::get_symbol_resolution_info): Guard against plugin
377         asking for more symbols than were added.
378         * testsuite/Makefile.am (plugin_test_1): Add test case with
379         no global symbols.
380         (empty.syms): New target.
381         * testsuite/Makefile.in: Regenerate.
382         * testsuite/plugin_test.c (claim_file_hook): Add new debug
383         message. Don't call add_symbols if no globals.
384         (all_symbols_read_hook): Don't provide replacement for empty
385         claimed file.
386
387 2008-12-12  Ian Lance Taylor  <iant@google.com>
388
389         * target-reloc.h (Default_scan_relocatable_relocs): Only discard
390         r_type == 0 for a local symbol with r_sym == 0.
391         (scan_relocatable_relocs): Pass r_sym to
392         local_non_section_strategy.
393         * reloc.cc (Emit_relocs_strategy::local_non_section_strategy): Add
394         r_sym parameter.
395
396         * configure.ac: Update test for TLS descriptors: they are
397         supported as of glibc 2.9.
398         * configure: Rebuild.
399
400 2008-12-11  Ian Lance Taylor  <iant@google.com>
401
402         PR 7091
403         * target-reloc.h (Default_scan_relocatable_relocs): For each
404         function, map r_type == 0 to RELOC_DISCARD.
405
406 2008-12-10  Cary Coutant  <ccoutant@google.com>
407
408         * layout.cc (Layout::add_comdat): Allow COMDAT group from a replacement
409         object to override a kept COMDAT group from a plugin object.
410
411 2008-12-09  Ian Lance Taylor  <iant@google.com>
412
413         PR 7088
414         * yyscript.y (file_cmd): Handle INPUT.
415
416         * testsuite/initpri1.c: Change all declarations to be full
417         prototypes by adding void, to avoid compiler warnings.
418
419 2008-12-05  Rafael Avila de Espindola  <espindola@google.com>
420
421         * options.cc (General_options::parse_plugin_opt): New.
422         (General_options::add_plugin): The argument now is just the filename.
423         (General_options::add_plugin_option): New.
424         * options.h (plugin_opt): New.
425         (add_plugin): Change argument name.
426         (add_plugin_option): New.
427         * plugin.cc (Plugin::load): Don't parse the plugin option.
428         * plugin.h (Plugin::Plugin): Rename argument. Init filename_.
429         (Plugin::add_option): New.
430         (Plugin::args_): Change type.
431         (Plugin::filename_): New.
432         (Plugin_manager::add_plugin_option): New.
433         * testsuite/Makefile.am (plugin_test_1): Use new syntax.
434         * testsuite/Makefile.in: Regenerate.
435
436 2008-12-05  Cary Coutant  <ccoutant@google.com>
437
438         * layout.cc (Layout::include_section): Check for SHF_EXCLUDE.
439         Handle --strip-lto-sections option.
440         * options.h (strip_lto_sections): New option.
441
442 2008-12-01  Cary Coutant  <ccoutant@google.com>
443
444         * plugin.cc (ld_plugin_message): Change format parameter to const.
445         Fix mismatch between new[] and delete.
446
447 2008-11-14  Cary Coutant  <ccoutant@google.com>
448
449         * reloc.cc (Sized_relobj::do_read_relocs): Use constant invalid_address
450         instead of -1U.
451
452 2008-11-05  Craig Silverstein  <csilvers@google.com>
453
454         * options.cc (General_options::parse_dynamic_list): New function.
455         * options.h (General_options): New flags dynamic_list,
456         dynamic_list_data, dynamic_list_cpp_new, and
457         dynamic_list_cpp_typeinfo.  New variable dynamic_list_.
458         (General_options::in_dynamic_list): New function.
459         * script.cc (Lex::Mode): New enum DYNAMIC_LIST.
460         (Lex::can_start_name): Add support for DYNAMIC_LIST mode.
461         (Lex::can_continue_name): Likewise.
462         (yylex): Likewise.
463         (read_script_file): New parameter script_options.
464         (read_dynamic_list): New function.
465         (Script_options::define_dynamic_list): New function.
466         (dynamic_list_keyword_parsecodes): New variable.
467         (dynamic_list_keywords): New variable.
468         * script.h (Script_options::define_dynamic_list): New function
469         prototype.
470         (read_dynamic_list): New function prototype.
471         * symtab.cc (strprefix): New macro.
472         (Symbol::should_add_dynsym_entry): Support dynamic_list,
473         dynamic_list_data, dynamic_list_cpp_new, and
474         dynamic_list_cpp_typeinfo.
475         * yyscript.y (PARSING_DYNAMIC_LIST): New token.
476         (dynamic_list_expr): New rule.
477         (dynamic_list_nodes): Likewise.
478         (dynamic_list_node): Likewise.
479         * testsuite/Makefile.am (dynamic_list): New test.
480         * testsuite/Makefile.in: Regenerated.
481         * testsuite/dynamic_list.t: New file.
482         * testsuite/dynamic_list.sh: New file.
483
484 2008-11-05  Craig Silverstein  <csilvers@google.com>
485
486         * testsuite/tls_test_c.c: Add prototype for t11 and t11_last.
487         * testsuite/tls_test_c.c (t11): Add explicit "void" to prototype.
488         (t11_last): Likewise.
489         * testsuite/ver_test_6.c (main): Likewise.
490
491 2008-10-07  Cary Coutant  <ccoutant@google.com>
492
493         * options.c (General_options::finalize): Add check for -static and
494         -shared.
495         * gold.cc (queue_middle_tasks): Assert that list of dynamic objects
496         is not empty.
497
498 2008-10-02  Cary Coutant  <ccoutant@google.com>
499
500         * plugin.cc (make_sized_plugin_object): Fix conditional
501         compilation to work when not all targets are enabled.
502
503 2008-09-29  Cary Coutant  <ccoutant@google.com>
504
505         * archive.cc (Archive::get_file_and_offset): Use filename instead
506         of name to get library path.
507         (Archive::include_member): Unlock external member of a thin archive.
508
509         * testsuite/Makefile.am (TEST_AR): New variable.
510         (thin_archive_test_1): New test.
511         (thin_archive_test_2): New test.
512         * testsuite/Makefile.in: Regenerate.
513         * testsuite/thin_archive_main.cc: New file.
514         * testsuite/thin_archive_test_1.cc: New file.
515         * testsuite/thin_archive_test_2.cc: New file.
516         * testsuite/thin_archive_test_3.cc: New file.
517         * testsuite/thin_archive_test_4.cc: New file.
518
519 2008-09-29  Cary Coutant  <ccoutant@google.com>
520
521         * mapfile.cc (Mapfile::print_input_section): Change -1U to -1ULL.
522         * object.cc (Sized_relobj::do_layout): Use constant invalid_address
523         instead of -1U.
524         (Sized_relobj::do_finalize_local_symbols): Likewise.
525         (Sized_relobj::map_to_kept_section): Likewise.
526         * object.h (Sized_relobj::invalid_address): New constant.
527         (Sized_relobj::do_output_section_offset): Check for invalid_address
528         and return -1ULL.
529         * output.cc (Output_reloc::local_section_offset): Use constant
530         invalid_address instead of -1U.
531         (Output_reloc::get_address): Likewise.
532         (Output_section::output_address): Change -1U to -1ULL.
533         * output.h (Output_reloc::invalid_address): New constant.
534         * reloc.cc (Sized_relobj::write_sections): Use constant
535         invalid_address instead of -1U.
536         (Sized_relobj::relocate_sections): Likewise.
537         * symtab.cc (Symbol_table::sized_finalize_symbol): Handle symbol
538         values for merge sections.
539         * target-reloc.h (relocate_for_relocatable): Use constant
540         invalid_address instead of -1U.
541
542 2008-09-19  Cary Coutant  <ccoutant@google.com>
543
544         Add plugin functionality for link-time optimization (LTO).
545         * configure.ac (plugins): Add --enable-plugins option.
546         * configure: Regenerate.
547         * config.in: Regenerate.
548         * Makefile.am (LIBDL): New variable.
549         (CCFILES): Add plugin.cc.
550         (HFILES): Add plugin.h.
551         (ldadd_var): Add LIBDL.
552         * Makefile.in: Regenerate.
553
554         * archive.cc: Include "plugin.h".
555         (Archive::setup): Don't preread archive symbols when using a plugin.
556         (Archive::get_file_and_offset): Add memsize parameter.  Change callers.
557         (Archive::get_elf_object_for_member): Call plugin hooks for claiming
558         files.
559         (Archive::include_member): Add symbols from plugin objects.
560         * archive.h (Archive::get_file_and_offset): Add memsize parameter.
561         * descriptors.cc (Descriptors::open): Check for file descriptors
562         abandoned by plugins.
563         (Descriptors::claim_for_plugin): New function.
564         * descriptors.h (Descriptors::claim_for_plugin): New function.
565         (Open_descriptor::is_claimed): New field.
566         (claim_descriptor_for_plugin): New function.
567         * fileread.cc (File_read::claim_for_plugin): New function.
568         * fileread.h (File_read::claim_for_plugin): New function.
569         (File_read::descriptor): New function.
570         * gold.cc: Include "plugin.h".
571         (queue_initial_tasks): Add task to call plugin hooks for generating
572         new object files.
573         * main.cc: Include "plugin.h".
574         (main): Load plugin libraries.
575         * object.h (Pluginobj): Declare.
576         (Object::pluginobj): New function.
577         (Object::do_pluginobj): New function.
578         (Object::set_target): New function.
579         * options.cc: Include "plugin.h".
580         (General_options::parse_plugin): New function.
581         (General_options::General_options): Initialize plugins_ field.
582         (General_options::add_plugin): New function.
583         * options.h (Plugin_manager): Declare.
584         (General_options): Add --plugin option.
585         (General_options::has_plugins): New function.
586         (General_options::plugins): New function.
587         (General_options::add_plugin): New function.
588         (General_options::plugins_): New field.
589         * plugin.cc: New file.
590         * plugin.h: New file.
591         * readsyms.cc: Include "plugin.h".
592         (Read_symbols::do_read_symbols): Check for archive before checking
593         for ELF file.  Call plugin hooks to claim files.
594         * resolve.cc (Symbol_table::resolve): Record when symbol is referenced
595         from a real object file; force override when processing replacement
596         files.
597         * symtab.cc (Symbol::init_fields): Initialize in_real_elf_ field.
598         (Symbol::init_base_object): Likewise.
599         (Symbol::init_base_output_data): Likewise.
600         (Symbol::init_base_output_segment): Likewise.
601         (Symbol::init_base_constant): Likewise.
602         (Symbol::init_base_undefined): Likewise.
603         (Symbol::output_section): Assert that object is not a plugin.
604         (Symbol_table::add_from_pluginobj): New function.
605         (Symbol_table::sized_finalize_symbol): Treat symbols from plugins as
606         undefined.
607         (Symbol_table::sized_write_globals): Likewise.
608         (Symbol_table::add_from_pluginobj): Instantiate template.
609         * symtab.h (Sized_pluginobj): Declare.
610         (Symbol::in_real_elf): New function.
611         (Symbol::set_in_real_elf): New function.
612         (Symbol::in_real_elf_): New field.
613         (Symbol_table::add_from_pluginobj): New function.
614
615         * testsuite/Makefile.am (AM_CFLAGS): New variable.
616         (LIBDL): New variable.
617         (LDADD): Add LIBDL.
618         (check_PROGRAMS): Add plugin_test_1 and plugin_test_2.
619         (check_SCRIPTS): Add plugin_test_1.sh and plugin_test_2.sh.
620         (check_DATA): Add plugin_test_1.err and plugin_test_2.err.
621         (MOSTLYCLEANFILES): Likewise.
622         * testsuite/Makefile.in: Regenerate.
623         * testsuite/plugin_test.c: New file.
624         * testsuite/plugin_test_1.sh: New file.
625         * testsuite/plugin_test_2.sh: New file.
626
627 2008-09-16  Ian Lance Taylor  <iant@google.com>
628
629         * target-reloc.h (relocate_section): Check whether a symbol is
630         defined by the ABI before reporting an undefined symbol error.
631         * target.h (Target::is_defined_by_abi): Make parameter const.
632         (Target::do_is_defined_by_abi): Likewise.
633         * i386.cc (Target_i386::do_is_defined_by_abi): Likewise.
634         * powerpc.cc (Target_powerpc::do_is_defined_by_abi): Likewise.
635         * sparc.cc (Target_sparc::do_is_defined_by_abi): Likewise.
636         * x86_64.cc (Target_x86_64::do_is_defined_by_abi): Likewise.
637         * testsuite/Makefile.am (tls_test_shared.so): Add -Wl,-z,defs.
638         * testsuite/Makefile.in: Rebuild.
639
640         * fileread.cc (make_view): Add casts to avoid warning.
641
642 2008-09-16  Alexandre Oliva  <aoliva@redhat.com>
643
644         * i386.cc (Target_i386::define_tls_base_symbol): Update comments.
645         * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
646
647 2008-09-16  Alexandre Oliva  <aoliva@redhat.com>
648
649         * options.h (General_options::output_is_executable): New.
650         (General_options::output_is_pie): New.
651         * i386.cc (Target_i386::define_tls_base_symbol): Use SEGMENT_START
652         for shared libraries.
653         * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
654
655 2008-09-11  Chris Demetriou  <cgd@google.com>
656
657         * options.h (origin): New -z option.
658         * layout.cc (Layout:finish_dynamic_section): If "-z origin"
659         is specified, set DF_ORIGIN in DT_FLAGS and set DF_1_ORIGIN
660         in DT_FLAGS_1.
661
662 2008-09-05  Cary Coutant  <ccoutant@google.com>
663
664         * fileread.cc (File_read::make_view): Add check for attempt to map
665         beyond end of file.
666
667 2008-09-05  Cary Coutant  <ccoutant@google.com>
668
669         * symtab.cc (Symbol_table::add_from_dynobj): Fix typos in
670         explicit instantiations.
671
672 2008-08-28  Kris Van Hees  <kris.van.hees@oracle.com>
673
674         PR gold/6858
675         * options.cc (General_options::finalize): Allow undefined symbols
676         in shlibs if linking -shared.
677
678         PR gold/6859
679         * symtab.cc (Symbol::init_base_undefined): Mark explicitly undefined
680         symbols as not needing a dynsym entry.
681
682 2008-08-20  Craig Silverstein  <csilvers@google.com>
683
684         * fileread.cc (File_read::open): Do not lock the file unless it
685         was successfully opened.
686
687 2008-08-14  Cary Coutant  <ccoutant@google.com>
688
689         * x86_64.cc (Target_x86_64::Relocate::relocat_tls):
690         Use addend for DTPOFF32, DTPOFF64, and TPOFF32 relocs.
691         * testsuite/tls_test.cc (struct int128): 128-bit struct
692         for testing TLS relocs with non-zero addend.
693         (v12): New TLS variable.
694         (t12): New test.
695         (t_last): Add check for v12.
696         * testsuite/tls_test.h (t12): New function.
697         * testsuite/tls_test_main.cc (thread_routine): Call new test.
698
699 2008-08-13  Ian Lance Taylor  <iant@google.com>
700
701         * layout.cc (Layout::attach_allocated_section_to_segment): Don't
702         set tls_segment_ or relro_segment_.
703         (Layout::make_output_segment): Set tls_segment_ and relro_segment_
704         when appropriate.
705         * output.h (Output_section::clear_is_relro): New function.
706         * output.cc (Output_segment::add_output_section): Handle SHF_TLS
707         sections specially even when output_data_ is empty.
708         (Output_segment::maximum_alignment): When first section is relro,
709         only force alignment for PT_LOAD segments.
710         * script.cc (script_data_segment_align): New function.
711         (script_data_segment_relro_end): New function.
712         * script-c.h (script_data_segment_align): Declare.
713         (script_data_segment_relro_end): Declare.
714         * script-sections.h (class Script_sections): Declare
715         data_segment_align and data_segment_relro_end.  Add fields
716         segment_align_index_ and saw_relro_end_.
717         * script-sections.cc (class Sections_element): Add set_is_relro
718         virtual function.  Add new bool* parameter to place_orphan_here.
719         Add get_output_section virtual function.
720         (class Output_section_definition): Add set_is_relro.  Add new
721         bool* parameter to place_orphan_here.  Add get_output_section.
722         Add is_relro_ field.
723         (Output_section_definition::Output_section_definition): Initialize
724         evaluated_address_, evaluated_load_address, evaluated_addralign_,
725         and is_relro_ fields.
726         (Output_section_definition::place_orphan_here): Add is_relro
727         parameter.
728         (Output_section_definition::set_section_addresses): Set relro for
729         output section.
730         (Output_section_definition::alternate_constraint): Likewise.
731         (class Orphan_output_section): Add new bool* parameter to
732         place_orphan_here.  Add get_output_section.
733         (Orphan_output_section::place_orphan_here): Add is_relro
734         parameter.
735         (Script_sections::Script_sections): Initialize
736         data_segment_align_index_ and saw_relro_end_.
737         (Script_sections::data_segment_align): New function.
738         (Script_sections::data_segment_relro_end): New function.
739         (Script_sections::place_orphan): Set or clear is_relro.
740         (Script_sections::set_section_addresses): Force alignment of first
741         TLS section.
742         * yyscript.y (exp): Call script_data_segment_align and
743         script_data_segment_relro_end.
744         * testsuite/relro_script_test.t: New file.
745         * testsuite/relro_test.cc (using_script): Declare.
746         (t1, t2): Test using_script.
747         * testsuite/Makefile.am (check_PROGRAMS): Add relro_script_test.
748         (relro_script_test_SOURCES): Define.
749         (relro_script_test_DEPENDENCIES): Define.
750         (relro_script_test_LDFLAGS): Define.
751         (relro_script_test_LDADD): Define.
752         (relro_script_test.so): New target.
753         * testsuite/Makefile.in: Rebuild.
754
755 2008-08-06  Cary Coutant <ccoutant@google.com>
756
757         * archive.cc (Archive::total_archives, Archive::total_members)
758         (Archive::total_members_loaded): New variables.
759         (Archive::setup): Add parameter.  Add option to preread
760         archive symbols.
761         (Archive::read_armap): Add counter.
762         (Archive::get_file_and_offset): New function.
763         (Archive::get_elf_object_for_member): New function.
764         (Archive::read_all_symbols): New function.
765         (Archive::read_symbols): New function.
766         (Archive::add_symbols): Add counters.
767         (Archive::include_all_members): Use armap to find members if it's
768         already built.
769         (Archive::include_member): Skip reading symbols if already read.
770         Factored code into Archive::get_file_and_offset and
771         Archive::get_elf_object_for_member.  Changed call to
772         Mapfile::report_include_archive_member.
773         (Archive::print_stats): New function.
774         * archive.h: Declare Object and Read_symbols_data classes.
775         (Archive::Archive): Add initializers for new members.
776         (Archive::setup): Add parameter.
777         (Archive::print_stats): New function.
778         (Archive::total_archives, Archive::total_members)
779         (Archive::total_members_loaded): New variables.
780         (Archive::get_file_and_offset): New function.
781         (Archive::get_elf_object_for_member): New function.
782         (Archive::read_all_symbols): New function.
783         (Archive::read_symbols): New function.
784         (Archive::Archive_member): New class.
785         (Archive::members_): New member.
786         (Archive::num_members_): New member.
787         * main.cc: Include archive.h.
788         (main): Call Archive::print_stats.
789         * mapfile.cc (Mapfile::report_include_archive_member): Delete
790         archive parameter; member_name is now the fully-decorated name.
791         * mapfile.h (Mapfile::report_include_archive_member): Likewise.
792         * options.h: (General_options): Add --preread-archive-symbols option.
793         * readsyms.cc (Read_symbols::do_read_symbols): Change call to
794         Archive::setup.
795
796 2008-08-04  Ian Lance Taylor  <iant@google.com>
797
798         * symtab.h (Symbol::use_plt_offset): New function.
799         * i386.cc (Relocate::relocate): Call Symbol::use_plt_offset.
800         * powerpc.cc (Relocate::relocate): Likewise.
801         * sparc.cc (Relocate::relocate): Likewise.
802         * x86_64.cc (Relocate::relocate): Likewise.
803         * testsuite/weak_plt.sh: New test.
804         * testsuite/weak_plt_main.cc: New test.
805         * testsuite/weak_plt_shared.cc: New test.
806         * testsuite/Makefile.am (check_SCRIPTS): Add weak_plt.sh.
807         (check_PROGRAMS): Add weak_plt.
808         (check_DATA): Add weak_plt_shared.so.
809         (weak_plt_main_pic.o, weak_plt): New targets.
810         (weak_plt_shared_pic.o, weak_plt_shared.so): New targets.
811         * testsuite/Makefile.in: Rebuild.
812
813         * testsuite/Makefile.am (weak_alias_test_1.so): Depend upon
814         gcctestdir/ld.
815         (weak_alias_test_2.so, weak_alias_test_4.so): Likewise.
816         * testsuite/Makefile.in: Rebuild.
817
818 2008-08-04  Alan Modra  <amodra@bigpond.net.au>
819
820         * Makefile.am (POTFILES.in): Set LC_ALL=C.
821         * Makefile.in: Regenerate.
822         * po/POTFILES.in: Regenerate.
823
824 2008-07-29  Ian Lance Taylor  <iant@google.com>
825
826         * script.cc (Script_options::finalize_symbols): Finalize SECTIONS
827         symbols before other symbols.
828         * testsuite/script_test_2.cc (test_addr): Declare.
829         (test_addr_alias): Declare.
830         (main): Check that test_addr and test_addr_alias have the right
831         values.
832         * testsuite/script_test_2.t: Define test_addr_alias and
833         test_addr.
834
835 2008-07-24  Ian Lance Taylor  <iant@google.com>
836
837         PR 5990
838         * descriptors.cc: New file.
839         * descriptors.h: New file.
840         * gold-threads.h (class Hold_optional_lock): New class.
841         * fileread.cc: Include "descriptors.h".
842         (File_read::~File_read): Release descriptor rather than closing
843         it.
844         (File_read::open) [file]: Call open_descriptor rather than open.
845         Set is_descriptor_opened_.
846         (File_read::open) [memory]: Assert that descriptor is not open.
847         (File_read::reopen_descriptor): New function.
848         (File_read::release): Release descriptor.
849         (File_read::do_read): Make non-const.  Reopen descriptor.
850         (File_read::read): Make non-const.
851         (File_read::make_view): Reopen descriptor.
852         (File_read::do_readv): Likewise.
853         * fileread.h (class File_read): Add is_descriptor_opened_ field.
854         Update declarations.
855         * layout.cc: Include "descriptors.h".
856         (Layout::create_build_id): Use open_descriptor rather than open.
857         * output.cc: Include "descriptors.h".
858         (Output_file::open): Use open_descriptor rather than open.
859         * archive.cc (Archive::const_iterator): Change Archive to be
860         non-const.
861         (Archive::begin, Archive::end): Make non-const.
862         (Archive::count_members): Likewise.
863         * archive.h (class Archive): Update declarations.
864         * object.h (Object::read): Make non-const.
865         * Makefile.am (CCFILES): Add descriptors.cc.
866         (HFILES): Add descriptors.h.
867         * Makefile.in: Rebuild.
868
869         PR 6716
870         * gold.h: Always include <clocale>.  Add Solaris workarounds
871         following code in binutils/sysdep.h.
872
873         PR 6048
874         * ehframe.cc (Eh_frame::add_ehframe_input_section): Check whether
875         this->eh_frame_hdr_ is NULL before using it.
876
877         * dynobj.cc (Versions::Versions): Update comment.
878
879         * dynobj.cc (Versions::Versions): If there is an soname, use it as
880         the base version name.
881
882         * stringpool.cc (Stringpool_template::add_with_length): Set key to
883         array size plus one.
884         (Stringpool_template::set_string_offsets): Subtract one from key
885         before using it as an array index.
886         (Stringpool_template::get_offset_with_length): Likewise.
887         (Stringpool_template::write_to_buffer): Likewise.
888         * stringpool.h (Stringpool_template::get_offset_from_key):
889         Likewise.
890
891 2008-07-23  Ian Lance Taylor  <iant@google.com>
892
893         PR 6658
894         * object.h (Merged_symbol_value::value): Do our best to handle a
895         negative addend.
896
897         PR 6647
898         * script.cc (Version_script_info::get_versions): Don't add empty
899         version tag to return value.
900         (Version_script_info::get_symbol_version_helper): Change return
901         type to bool.  Add pversion parameter.  Change all callers.
902         (script_register_vers_node): Don't require a non-NULL tag.
903         * script.h (class Version_script_info): Update declarations.
904         (Version_script_info::get_symbol_version): Change return type to
905         bool.  Add version parameter.  Change all callers.
906         * symtab.cc (Sized_symbol::add_from_relobj): Rework version
907         handling.  Handle an empty version from a version script.
908         (Symbol_table::define_special_symbol): Likewise.
909         * testsuite/ver_test_10.script: New file.
910         * testsuite/ver_test_10.sh: New file.
911         * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_10.sh.
912         (check_DATA): Add ver_test_10.syms.
913         (ver_test_10.syms, ver_test_10.so): New target.
914         * testsuite/Makefile.in: Rebuild.
915
916 2008-07-23  Simon Baldwin  <simonb@google.com>
917
918         * symtab.cc (Symbol_table::sized_write_symbol): Only set st_size
919         to zero for undefined symbols from dynamic libraries.
920
921 2008-07-23  Ian Lance Taylor  <iant@google.com>
922
923         * symtab.cc (Symbol_table::resolve): Remove version parameter.
924         Change all callers.
925         * symtab.h (class Symbol_table): Update declaration.
926         * testsuite/ver_test_9.cc: New file.
927         * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_9.
928         (ver_test_9_SOURCES, ver_test_9_DEPENDENCIES): Define.
929         (ver_test_9_LDFLAGS, ver_test_9_LDADD): Define.
930         (ver_test_9.so, ver_test_9.o): New targets.
931         * testsuite/Makefile.in: Rebuild.
932
933 2008-07-22  Ian Lance Taylor  <iant@google.com>
934
935         * options.h (class General_options): Define --check-sections.
936         * layout.cc (Layout::set_segment_offsets): Handle
937         --check-sections.
938
939         * options.h (class General_options): Define -n/--nmagic and
940         -N/--omagic.
941         * options.cc (General_options::finalize): For -n/--nmagic or
942         -N/--omagic, set -static.
943         * layout.cc (Layout::attach_allocated_section_to_segment): If
944         -N/--omagic, don't put read-only and read-write sections in
945         different segments.
946         (Layout::find_first_load_seg): If -N/--omagic, don't insist on
947         finding a read-only segment.
948         (Layout::set_segment_offsets): If -N/--omagic or -n/--nmagic,
949         don't set the minimum segment alignment to the common page size,
950         and don't set the file offset to the address modulo the page size.
951         * script-sections.cc (Script_sections::create_segments): If
952         -n/--omagic, don't put read-only and read-write sections in
953         different segments.
954
955         * cref.cc: New file.
956         * cref.h: New file.
957         * options.h (class General_options): Add --print-symbol-counts.
958         * main.cc (main): Issue defined symbol report if requested.
959         * archive.cc (Archive::interpret_header): Make into a const member
960         function.
961         (Archive::add_symbols): Call Input_objects::archive_start and
962         archive_stop.
963         (Archive::const_iterator): Define new class.
964         (Archive::begin, Archive::end): New functions.
965         (Archive::include_all_members): Rewrite to use iterator.
966         (Archive::count_members): New function.
967         * archive.h (class Archive): Update declarations.
968         (Archive::filename): New function.
969         * object.cc: Include "cref.h".
970         (Sized_relobj::Sized_relobj): Initialize defined_count_.
971         (Sized_relobj::do_get_global_symbol_counts): New function.
972         (Input_objects::add_object): Add object to cross-referencer.
973         (Input_objects::archive_start): New function.
974         (Input_objects::archive_stop): New function.
975         (Input_objects::print_symbol_counts): New function.
976         * object.h: Declare Cref and Archive.
977         (Object::get_global_symbol_counts): New function.
978         (Object::do_get_global_symbol_counts): New pure virtual function.
979         (class Sized_relobj): Add defined_count_ field.  Update
980         declarations.
981         (class Input_objects): Add cref_ field.  Update constructor.
982         Update declarations.
983         * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize symbols_ and
984         defined_count_.
985         (Sized_dynobj::do_add_symbols): Allocate symbols_ if printing
986         symbol counts.
987         (Sized_dynobj::do_get_global_symbol_counts): New function.
988         * dynobj.h (class Sized_dynobj): Add fields symbols_ and
989         defined_count_.  Update declarations.  Define Symbols typedef.
990         * symtab.cc (Symbol_table::add_from_relobj): Add defined
991         parameter.  Change all callers.
992         (Symbol_table::add_from_dynobj): Add sympointers and defined
993         parameters.  Change all callers.
994         * symtab.h (class Symbol_table): Update declarations.
995         * Makefile.am (CCFILES): Add cref.cc.
996         (HFILES): Add cref.h.
997         * Makefile.in: Rebuild.
998
999 2008-07-22  Simon Baldwin  <simonb@google.com>
1000
1001         * symtab.cc (Symbol_table::sized_write_symbol): Set symbol size
1002         to zero when writing undefined symbols.
1003
1004 2008-07-22  Ian Lance Taylor  <iant@google.com>
1005
1006         * output.cc (Output_section::add_input_section): Don't try to
1007         merge empty merge sections.
1008
1009 2008-07-21  Craig Silverstein  <csilvers@google.com>
1010
1011         * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
1012         Include symbol version in error message.
1013
1014 2008-07-20  Chris Demetriou  <cgd@google.com>
1015
1016         * configure.ac (gold_cv_c_random_seed): New configured variable.
1017         (RANDOM_SEED_CFLAGS): New substituted variable.
1018         * Makefile.am (AM_CFLAGS, AM_CXXFLAGS): Add $(RANDOM_SEED_CFLAGS).
1019         * configure: Rebuild.
1020         * Makefile.in: Likewise.
1021         * testsuite/Makefile.in: Likewise.
1022
1023 2008-07-18  Ian Lance Taylor  <iant@google.com>
1024
1025         * symtab.cc (Symbol_table::add_from_object): Rewrite the case
1026         where we see NAME/NULL and NAME/VERSION  as separate symbols.
1027         * testsuite/ver_test_main.cc (main): Call t4.
1028         (t4, t4_2a): Define.
1029         * testsuite/ver_test_2.cc (t4_2): Define.
1030         * testsuite/ver_test_2.script: Put t4_2a in VER2.
1031         * testsuite/ver_test_4.cc (t4_2a): Define.
1032         * testsuite/ver_test_4.script: Put t4_2a in VER2.
1033         * testsuite/ver_test.h (t4, t4_2, t4_2a): Declare.
1034
1035 2008-07-17  Ian Lance Taylor  <iant@google.com>
1036
1037         * dynobj.cc (Versions::add_def): If we give an error about a
1038         missing version, go ahead and create the version anyhow.
1039
1040 2008-07-10  Ian Lance Taylor  <iant@google.com>
1041
1042         Handle output sections with more than 0x7fffffff bytes.
1043         * object.h (class Relobj): Change map_to_output_ to
1044         output_sections_, and just keep a section pointer.  Change all
1045         uses.  Move comdat group support to Sized_relobj.
1046         (Relobj::is_section_specially_mapped): Remove.
1047         (Relobj::output_section): Remove poff parameter.  Change all
1048         callers.
1049         (Relobj::output_section_offset): New function.
1050         (Relobj::set_section_offset): Rewrite.
1051         (Relobj::map_to_output): Remove.
1052         (Relobj::output_sections): New function.
1053         (Relobj::do_output_section_offset): New pure virtual function.
1054         (Relobj::do_set_section_offset): Likewise.
1055         (class Sized_relobj): Add section_offsets_ field.  Add comdat
1056         group support from Relobj.  Update declarations.
1057         (Sized_relobj::get_output_section_offset): New function.
1058         (Sized_relobj::do_output_section_offset): New function.
1059         (Sized_relobj::do_set_section_offset): New function.
1060         * object.cc (Relobj::output_section_address): Remove.
1061         (Sized_relobj::Sized_relobj): Initialize new fields.
1062         (Sized_relobj::include_section_group): Cast find_kept_object to
1063         Sized_relobj.
1064         (Sized_relobj::include_linkonce_section): Likewise.
1065         (Sized_relobj::do_layout): Use separate arrays for output section
1066         and output offset.
1067         (Sized_relobj::do_count_local_symbols): Change map_to_output to
1068         output_sections.
1069         (Sized_relobj::do_finalize_local_symbols): Change map_to_output to
1070         output_sections and section_offsets.
1071         (Sized_relobj::write_local_symbols): Likewise.
1072         (map_to_kept_section): Compute output address directly.
1073         * reloc.cc (Sized_relobj::do_read_relocs): Change map_to_output to
1074         output_sections and section_offsets.
1075         (Sized_relobj::write_sections): Likewise.
1076         (Sized_relobj::relocate_sections): Likewise.
1077         * symtab.cc (sized_finalize_symbol): Use output_section_offset.
1078         * output.h (class Output_reloc): Update declarations.  Change
1079         u2_.relobj to Sized_relobj*.
1080         (class Output_data_reloc): Change add functions to use
1081         Sized_relobj*.
1082         * output.cc (Output_reloc::Output_reloc): Change relobj to
1083         Sized_relobj*.
1084         (Output_reloc::local_section_offset): Change return type to
1085         Elf_Addr.  Use get_output_section_offset.
1086         (Output_reloc::get_address): Likewise.
1087         (Output_section::is_input_address_mapped): Don't call
1088         is_section_specially_mapped.
1089         (Output_section::output_offset): Likewise.
1090         (Output_section::output_address): Likewise.
1091         (Output_section::starting_output_address): Likewise.
1092         * copy-relocs.cc (Copy_relocs::copy_reloc): Change object
1093         parameter to Sized_relobj*.
1094         (Copy_relocs::need_copy_reloc): Likewise.
1095         (Copy_relocs::save): Likewise.
1096         * copy-relocs.h (class Copy_relocs): Update declarations.
1097         (class Copy_relocs::Copy_reloc_entry): Change constructor to use
1098         Sized_relobj*.  Change relobj_ field to Sized_relobj*.
1099         * target-reloc.h (relocate_for_relocatable): Change
1100         offset_in_output_section type to Elf_Addr.  Change code that uses
1101         it as well.
1102         * layout.cc (Layout::layout): Always set *off.
1103         * mapfile.cc (Mapfile::print_input_section): Use
1104         output_section_offset.
1105         * i386.cc (Target_i386::copy_reloc): Change object parameter to
1106         Sized_relobj*.
1107         * powerpc.cc (Target_powerpc::copy_reloc): Likewise.
1108         * sparc.cc (Target_sparc::copy_reloc): Likewise.
1109         * x86_64.cc (Target_x86_64::copy_reloc): Likewise.
1110
1111 2008-07-03  Ian Lance Taylor  <iant@google.com>
1112
1113         * layout.cc (Layout::include_section): Do not discard unrecognized
1114         SHT_STRTAB sections.
1115
1116 2008-06-30  Craig Silverstein  <csilvers@cs.stanford.edu>
1117
1118         * script.cc (Lex::can_continue_name): Make '?' allowable in
1119         version-script names.
1120         * testsuite/version_script.map: Change glob pattern to use '?'
1121
1122 2008-06-30  Manish Singh  <yosh@gimp.org>
1123
1124         PR 6585
1125         * symtab.cc (Symbol_table::add_undefined_symbols_from_command_line):
1126         Correct typo.
1127
1128 2008-06-30  Ian Lance Taylor  <iant@google.com>
1129
1130         PR 6660
1131         PR 6682
1132         * powerpc.cc (Powerpc_relocate_functions::addr16_ha) [both
1133         versions]: Don't try to read the value in the contents, since we
1134         don't use it.  Use the template endianness when writing.
1135
1136 2008-06-25  Cary Coutant  <ccoutant@google.com>
1137
1138         * fileread.cc (File_read::make_view): Assert on zero-length view.
1139         * object.cc (Sized_relobj::do_read_symbols): Don't try to read
1140         symbol table when there are no symbols to read.
1141
1142 2008-06-23  Craig Silverstein  <csilvers@google.com>
1143
1144         * version.cc (version_string): Bump to 1.7
1145
1146 2008-06-18  Craig Silverstein  <csilvers@google.com>
1147
1148         * powerpc.cc (Powerpc_relocate_functions::addr16_ha): cast
1149         constant 0xFFFF to type Valtype.
1150         (Powerpc_relocate_functions::rel16_ha): Likewise.
1151
1152 2008-06-17  Ian Lance Taylor  <iant@google.com>
1153
1154         * output.h (Output_section::Input_section): Initialize p2align_ to
1155         zero for Output_section_data constructors.
1156         (Output_section::Input_section::addralign): If not an input
1157         section, return the alignment of the Output_section_data.
1158         * testsuite/copy_test.cc: New file.
1159         * testsuite/copy_test_1.cc: New file.
1160         * testsuite/copy_test_2.cc: New file.
1161         * testsuite/Makefile.am (check_PROGRAMS): Add copy_test.
1162         (copy_test_SOURCES, copy_test_DEPENDENCIES): New variables.
1163         (copy_test_LDFLAGS, copy_test_LDADD): New variables.
1164         (copy_test_1_pic.o, copy_test_1.so): New targets.
1165         (copy_test_2_pic.o, copy_test_2.so): New targets.
1166         * testsuite/Makefile.in: Rebuild.
1167
1168         * script-sections.cc (Script_sections::place_orphan): Initialize
1169         local variable exact.
1170
1171 2008-06-13  David Edelsohn  <edelsohn@gnu.org>
1172
1173         * powerpc.cc (Output_data_plt_powerpc::do_write): 8 + 4 = 0xC.
1174
1175 2008-06-12  David Edelsohn  <edelsohn@gnu.org>
1176             David S. Miller  <davem@davemloft.net>
1177
1178         * powerpc.cc: New file.
1179         * Makefile.am (TARGETSOURCES): Add powerpc.cc
1180         (ALL_TARGETOBJS): Add powerpc.$(OBJEXT)
1181         * configure.tgt: Add entries for powerpc-* and powerpc64-*.
1182         * Makefile.in: Rebuild.
1183
1184 2008-06-09  Ian Lance Taylor  <iant@google.com>
1185
1186         * testsuite/relro_test.cc: Include <cstdio>, <cstdlib>, and
1187         <exception>.
1188         (throwing, orig_terminate): New static variables.
1189         (terminate_handler): New static function.
1190         (t2): Set terminate handler.
1191
1192 2008-06-05  Kris Van Hees  <kris.van.hees@oracle.com>
1193
1194         PR 6584
1195         * binary.cc (Binary_to_elf::sized_convert): Fix .data
1196         alignment.
1197
1198 2008-05-30  Cary Coutant  <ccoutant@google.com>
1199
1200         * archive.cc (Archive::include_all_members) Correct to step
1201         over symbol table and extended name table in thin archives.
1202
1203 2008-05-29  Kris Van Hees  <kris.van.hees@oracle.com>
1204
1205         PR 6407
1206         * target-reloc.h (relocate_for_relocatable): Fix new_offset
1207         calculation.
1208
1209 2008-05-28  Caleb Howe  <cshowe@google.com>
1210
1211         * reduced_debug_output.cc: New file.
1212         * reduced_debug_output.h: New file.
1213         * options.h (class General_options): Add --strip-debug-non-line.
1214         * options.cc (General_options::finalize): Add strip_debug_non_line
1215         to the strip heirarchy.
1216         * layout.h (class Layout): Add debug_abbrev_ and debug_info_
1217         fields.
1218         * layout.cc: Include "reduced_debug_output.h".
1219         (Layout::Layout): Initialize new fields.
1220         (line_only_debug_sections): New static array.
1221         (is_lines_only_debug_sections): New static inline function.
1222         (Layout::include_section): Handle --strip-debug-non-line.
1223         (Layout::make_output_section): If --strip-debug-non-line, build
1224         new output sections for .debug_abbrev and .debug_info.
1225         * dwarf_reader.cc (read_unsigned_LEB_128): Move to namespace
1226         gold.  Warn about possible overflow.
1227         (read_signed_LEB_128): Likewise.
1228         * dwarf_reader.h: (read_unsigned_LEB_128): Declare.
1229         (read_signed_LEB_128): Declare.
1230         * Makefile.am (CCFILES): Add reduced_debug_output.cc.
1231         (HFILES): Add reduced_debug_output.h.
1232         * Makefile.in: Rebuild.
1233
1234 2008-05-21  Ian Lance Taylor  <iant@google.com>
1235
1236         * mapfile.cc: New file.
1237         * mapfile.h: New file.
1238         * options.h (class General_options): Add -M/--print-map and -Map.
1239         * options.cc (General_options::finalize): Make -M equivalent to
1240         -Map -.
1241         * main.cc: Include <cstdio> and "mapfile.h".
1242         (main): Open mapfile if requested.
1243         * gold.cc (class Middle_runner): Add mapfile_ field.  Update
1244         constructor.  Change caller.
1245         (queue_initial_tasks): Add mapfile parameter.  Change caller.
1246         (queue_middle_tasks): Likewise.
1247         * gold.h (queue_initial_tasks, queue_middle_tasks): Update
1248         declarations.
1249         * archive.cc: Include "mapfile.h".
1250         (Archive::add_symbols): Add mapfile parameter.  Change all
1251         callers.  Pass mapfile, symbol, and reason to include_member.
1252         (Archive::include_all_members): Add mapfile parameter.  Change all
1253         callers.
1254         (Archive::include_member): Add mapfile, sym, and why parameters.
1255         Change all callers.  Report inclusion to map file.
1256         * archive.h: Include "fileread.h".
1257         (class Archive): Update declarations.
1258         (Archive::file): New const method.
1259         (class Add_archive_symbols): Add mapfile_ field.  Update
1260         constructor.  Change all callers.
1261         * readsyms.h (class Read_symbols): Likewise.
1262         (class Finish_group): Likewise.
1263         (class Read_script): Likewise.
1264         * common.cc: Include "mapfile.h".
1265         (Symbol_table::allocate_commons): Add mapfile parameter.  Change
1266         all callers.
1267         (Symbol_table::do_allocate_commons): Likewise.
1268         (Symbol_table::do_allocate_commons_list): Likewise.  Report common
1269         symbol allocation to mapfile.
1270         * common.h (class Allocate_commons_task): Add mapfile_ field.
1271         Update constructor.  Change all callers.
1272         * symtab.h (class Symbol_table): Update declarations.
1273         * layout.cc: Include "mapfile.h".
1274         (Layout_task_runner::run): Print information to mapfile.
1275         (Layout::create_gold_note): Change Output_data_fixed_space to
1276         Output_data_zero_fill.
1277         (Layout::create_build_id): Likewise.
1278         (Layout::print_to_mapfile): New function.
1279         * layout.h (class Layout_task_runner): Add mapfile_ field.  Update
1280         constructor.  Change caller.
1281         (class Layout): Declare print_to_mapfile.
1282         * output.cc (Output_section::Input_section::print_to_mapfile): New
1283         function.
1284         (Output_section::add_input_section): If producing a map, always
1285         add to input_sections_ list.
1286         (Output_section::do_print_to_mapfile): New function.
1287         (Output_segment::print_sections_to_mapfile): New function.
1288         (Output_segment::print_section_list_to_mapfile): New function.
1289         * output.h: Include "mapfile.h".
1290         (Output_data::print_to_mapfile): New function.
1291         (Output_data::do_print_to_mapfile): New virtual function.
1292         (Output_segment_headers::do_print_to_mapfile): New function.
1293         (Output_file_header::do_print_to_mapfile): New function.
1294         (Output_data_const::do_print_to_mapfile): New function.
1295         (class Output_data_const_buffer): Add map_name_ field.  Update
1296         constructor.  Change all callers.  Add do_print_to_mapfile
1297         function.
1298         (class Output_data_fixed_space): Likewise.
1299         (class Output_data_space): Likewise.
1300         (class Output_data_zero_fill): New class.
1301         (Output_data_strtab::do_print_to_mapfile): New function.
1302         (Output_data_reloc_base::do_print_to_mapfile): New function.
1303         (Output_relocatable_relocs::do_print_to_mapfile): New function.
1304         (Output_data_group::do_print_to_mapfile): New function.
1305         (Output_data_got::do_print_to_mapfile): New function.
1306         (Output_data_dynamic::do_print_to_mapfile): New function.
1307         (Output_symtab_xindex::do_print_to_mapfile): New function.
1308         (class Output_section): Declare do_print_to_mapflie.  Declare
1309         print_to_mapfile in Input_section.
1310         (class Output_segment): Declare new functions.
1311         * object.h (Sized_relobj::symbol_count): New function.
1312         * script-sections.cc
1313         (Output_section_element_dot_assignment::set_section_addresses):
1314         Change Output_data_fixed_space to Output_data_zero_fill.
1315         (Output_data_expression::do_print_to_mapfile): New function.
1316         * script.cc (read_input_script): Add mapfile parameter.  Change
1317         all callers.
1318         * script.h (read_input_script): Update declaration.
1319         * ehframe.h (Eh_frame_hdr::do_print_to_mapfile): New function.
1320         (Eh_frame::do_print_to_mapfile): New function.
1321         * merge.h (Output_merge_data::do_print_to_mapfile): New function.
1322         (Output_merge_string::do_print_to_mapfile): New function.
1323         * i386.cc (Output_data_plt_i386::do_print_to_mapfile): New
1324         function.
1325         * sparc.cc (Output_data_plt_sparc::do_print_to_mapfile): New
1326         function.
1327         * x86_64.cc (Output_data_plt_x86_64::do_print_to_mapfile): New
1328         function.
1329         * Makefile.am (CCFILES): Add mapfile.cc.
1330         (HFILES): Add mapfile.h.
1331         * Makefile.in: Rebuild.
1332
1333 2008-05-19  Ian Lance Taylor  <iant@google.com>
1334
1335         * options.h (class General_options): Add -z relro.
1336         * layout.cc (Layout::Layout): Initialize relro_segment_.
1337         (Layout::add_output_section_data): Return the output section.
1338         (Layout::make_output_section): Rcognize relro sections and mark
1339         them appropriately.
1340         (Layout::attach_allocated_section_to_segment): Put relro sections
1341         in a PT_GNU_RELRO segment.
1342         (Layout::create_initial_dynamic_sections): Mark the .dynamic
1343         section as relro.
1344         (Layout::segment_precedes): Sort PT_GNU_RELRO segments after
1345         PT_TLS segments.
1346         (Layout::linkonce_mapping): Map d.rel.ro.local to
1347         .data.rel.ro.local.
1348         (Layout::output_section_name): Us .data.rel.ro.local for any
1349         section which begins with that.
1350         * layout.h (class Layout): Update add_output_section_data
1351         declaration.  Add relro_segment_ field.
1352         * output.cc (Output_section::Output_section): Initialize is_relro_
1353         and is_relro_local_ fields.
1354         (Output_segment::add_output_section): Group relro sections.
1355         (Output_segment::is_first_section_relro): New function.
1356         (Output_segment::maximum_alignment): If there is a relro section,
1357         align the segment to the common page size.
1358         (Output_segment::set_section_addresses): Track whether we are
1359         looking at relro sections.  If the last section is a relro
1360         section, align to the common page size.
1361         (Output_segment::set_section_list_addresses): Add in_relro
1362         parameter.  Change all callers.  Align to the page size when
1363         moving from relro to non-relro section.
1364         (Output_segment::set_offset): Align memsz of a PT_GNU_RELRO
1365         segment.
1366         * output.h (class Output_section): Add is_relro_ and
1367         is_relro_local_ fields.
1368         (Output_section::is_relro): New function.
1369         (Output_section::set_is_relro): New function.
1370         (Output_section::is_relro_local): New function.
1371         (Output_section::set_is_relro_local): New function.
1372         (class Output_segment): Update declarations.
1373         * i386.cc (Target_i386::got_section): Mark .got section as relro.
1374         * sparc.cc (Target_sparc::got_section): Likewise.
1375         * x86_64.cc (Target_x86_64::got_section): Likewise.
1376         * testsuite/relro_test_main.cc: New file.
1377         * testsuite/relro_test.cc: New file.
1378         * testsuite/Makefile.am (check_PROGRAMS): Add relro_test.
1379         (relro_test_SOURCES, relro_test_DEPENDENCIES): New variables.
1380         (relro_test_LDFLAGS, relro_test_LDADD): New variables.
1381         (relro_test.so, relro_test_pic.o): New targets.
1382         * testsuite/Makefile.in: Rebuild.
1383
1384 2008-05-16  Ian Lance Taylor  <iant@google.com>
1385
1386         * output.cc (Output_segment::add_output_section): Remove front
1387         parameter.
1388         * output.h (class Output_segment): Remove
1389         add_initial_output_section and overloaded add_output_section.
1390         Update declaration of remaining add_output_section.
1391         * layout.cc (Layout::create_interp): Call add_output_section
1392         rather than add_initial_output_section.
1393         (Layout::finish_dynamic_section): Likewise.
1394
1395         * i386.cc (Target_i386::Relocate::relocate_tls): Set dynamic type
1396         for TLS_GOTDESC and TLS_DESC_CALL.  Only optimize TLS_LDO_32 if we
1397         know the dynamic type.
1398         * x86_64.cc (Target_x86_64::Relocate): Add saw_tls_block_reloc_
1399         field.  Initialize it in constructor.
1400         (Target_x86_64::Relocate::relocate_tls): Record that we saw a TLS
1401         block reloc for TLSGD, GOTPC32_TLSDESC, TLSDESC_CALL, and TLSLD.
1402         Only optimize DTPOFF32 and DTPOFF64 if we have seen a TLS block
1403         reloc.
1404
1405         * output.cc (Output_reloc::get_address): Change return type to
1406         Elf_Addr.
1407         * output.h (class Output_reloc): Update get_address declaration.
1408         * x86_64.cc (Output_data_plt_x86_64::do_write): Use 64-bit types
1409         for section addresses.
1410
1411 2008-05-09  Ian Lance Taylor  <iant@google.com>
1412
1413         PR 6493
1414         * gold.cc (gold_nomem): Use return value of write.
1415
1416 2008-05-08  Ian Lance Taylor  <iant@google.com>
1417
1418         * symtab.c (Symbol::init_base_output_data): Add version
1419         parameter.  Change all callers.
1420         (Symbol::init_base_output_segment): Likewise.
1421         (Symbol::init_base_constant): Likewise.
1422         (Symbol::init_base_undefined): Likewise.
1423         (Sized_symbol::init_output_data): Likewise.
1424         (Sized_symbol::init_output_segment): Likewise.
1425         (Sized_symbol::init_constant): Likewise.
1426         (Sized_symbol::init_undefined): Likewise.
1427         (Symbol_table::do_define_in_output_data): If the new symbol has a
1428         version, mark it as the default.
1429         (Symbol_table::do_define_in_output_segment): Likewise.
1430         (Symbol_table::do_define_as_constant): Likewise.
1431         * symtab.h (class Symbol): Update declarations.
1432         (class Sized_symbol): Likewise.
1433         * resolve.cc (Symbol::override_version): New function.
1434         (Symbol::override_base): Call override_version.
1435         (Symbol::override_base_with_special): Likewise.
1436         * testsuite/ver_script_8.script: New file.
1437         * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_8.
1438         (ver_test_8_SOURCES, ver_test_8_DEPENDENCIES): Define.
1439         (ver_test_8_LDFLAGS, ver_test_8_LDADD): Define.
1440         (ver_test_8_1.so, ver_test_8_2.so): New targets.
1441
1442 2008-05-06  Ian Lance Taylor  <iant@google.com>
1443
1444         PR 6049
1445         * options.h (DEFINE_set): Add VARNAME_begin and VARNAME_end
1446         functions.
1447         (class General_options): Remove existing --undefined, and add
1448         --no-undefined instead.  Add new --undefined as synonym for -u.
1449         * archive.cc (Archive::add_symbols): Check whether symbol was
1450         named with -u.
1451         * gold.cc (queue_middle_tasks): Add -u symbols to symbol table.
1452         * symtab.h (class Symbol): Rename CONSTANT to IS_CONSTANT; change
1453         all uses.  Add IS_UNDEFINED.  Update declarations to split
1454         different versions of init_base.  Declare init_base_undefined.
1455         (Symbol::is_defined): Handle IS_UNDEFINED.
1456         (Symbol::is_undefined): Likewise.
1457         (Symbol::is_weak_undefined): Call is_undefined.
1458         (Symbol::is_absolute): Handle IS_CONSTANT.
1459         (class Sized_symbol): Update declarations to split different
1460         versions of init.  Declare init_undefined.
1461         (class Symbol_table): Declare new functions.
1462         * symtab.cc (Symbol::init_base_object): Rename from init_base.
1463         Change all callers.
1464         (Symbol::init_base_output_data): Likewise.
1465         (Symbol::init_base_output_segment): Likewise.
1466         (Symbol::init_base_constant): Likewise.
1467         (Symbol::init_base_undefined): New function.
1468         (Sized_symbol::init_object): Rename from init.  Change all
1469         callers.
1470         (Sized_symbol::init_output_data): Likewise.
1471         (Sized_symbol::init_output_segment): Likewise.
1472         (Sized_symbol::init_constant): Likewise.
1473         (Sized_symbol::init_undefined): New function.
1474         (Symbol_table::add_undefined_symbols_from_command_line): New
1475         function.
1476         (Symbol_table::do_add_undefined_symbols_from_command_line): New
1477         function.
1478         (Symbol::final_value_is_known): Handle IS_UNDEFINED.
1479         (Symbol::output_section): Likewise.
1480         (Symbol::set_output_section): Likewise.
1481         (Symbol_table::sized_finalize_symbol): Likewise.
1482         (Symbol_table::sized_write_globals): Likewise.
1483         * resolve.cc (Symbol_table::should_override): Likewise.
1484         (Symbol::override_base_with_special): Likewise.
1485
1486         * symtab.cc (Symbol_table::add_from_dynobj): If we see a protected
1487         symbol, change it to have default visibility.
1488         * testsuite/protected_1.cc: New file.
1489         * testsuite/protected_2.cc: New file.
1490         * testsuite/protected_3.cc: New file.
1491         * testsuite/protected_main_1.cc: New file.
1492         * testsuite/protected_main_2.cc: New file.
1493         * testsuite/protected_main_3.cc: New file.
1494         * testsuite/Makefile.am (check_PROGRAMS): Add protected_1.
1495         (protected_1_SOURCES, protected_1_DEPENDENCIES): Define.
1496         (protected_1_LDFLAGS, protected_1_LDADD): Define.
1497         (protected_1.so): New target.
1498         (protected_1_pic.o, protected_2_pic.o): New targets.
1499         (protected_3_pic.o): New target.
1500         (check_PROGRAMS): Add protected_2.
1501         (protected_2_SOURCES, protected_2_DEPENDENCIES): Define.
1502         (protected_2_LDFLAGS, protected_2_LDADD): Define.
1503         * testsuite/Makefile.in: Rebuild.
1504
1505         * options.h (DEFINE_var): Add set_user_set_##varname__.
1506         (DEFINE_bool_alias): New macro.
1507         (class General_options): Define -Bstatic using DEFINE_bool_alias
1508         rather than DEFINE_special.  Add --undefined as an alias for -z
1509         defs.
1510         * options.cc (General_options::parse_Bstatic): Remove.
1511
1512         * options.h (class General_options): Add --fatal-warnings.
1513         * main.cc (main): Implement --fatal-warnings.
1514         * errors.h (Errors::warning_count): New function.
1515
1516         * options.h (class General_options): Add -Bsymbolic-functions.
1517         * symtab.h (Symbol::is_preemptible): Check for
1518         -Bsymbolic-functions.
1519
1520 2008-05-05  Ian Lance Taylor  <iant@google.com>
1521
1522         * options.h (DEFINE_bool): For DASH_Z, create the negative option
1523         as noVARNAME rather than no-VARNAME.
1524         (class General_options): Add option -z combreloc.
1525         * output.h (class Output_reloc) [SHT_REL]: Declare compare and
1526         get_address.
1527         (Output_reloc::sort_before) [SHT_REL]: New function.
1528         (Output_reloc::sort_before) [SHT_RELA]: New function.
1529         (class Output_data_reloc_base): Add sort_relocs_ field.  Define
1530         Sort_relocs_comparison.
1531         (Output_data_reloc_base::Output_data_reloc_base): Add sort_relocs
1532         parameter.  Change all callers.
1533         (Output_data_reloc::Output_data_reloc) [both versions]: Add
1534         sort_relocs parameter.  Change all callers.
1535         * output.cc (Output_reloc::get_address): New function, broken out
1536         of write_rel.
1537         (Output_reloc::write_rel): Call it.
1538         (Output_reloc::compare): New function.
1539         (Output_data_reloc_base::do_write): Optionally sort relocs.
1540
1541         * configure.ac: If targ_extra_obj is set, link it in.
1542         * configure.tgt: Initialize all variables.
1543         (x86_64*): Set targ_extra_obj and targ_extra_size.
1544         * configure: Rebuild.
1545
1546         * object.cc (Sized_relobj::include_section_group): Adjust section
1547         indexes read from group data.  Build vector to pass to
1548         layout_group.
1549         * layout.cc (Layout::layout_group): Add flags and shndxes
1550         parameters.  Remove contents parameter.  Change caller.  Update
1551         explicit instantiations.
1552         * layout.h (class Layout): Update layout_group declaration.
1553         * output.cc (Output_data_group::Output_data_group): Add flags and
1554         input_shndxes parameters.  Remove contents parameter.  Change
1555         caller.
1556         (Output_data_group::do_write): Change input_sections_ to
1557         input_shndxes_.
1558         * output.h (class Output_data_group): Update constructor
1559         declaration.  Rename input_sections_ to input_shndxes_.
1560         * testsuite/many_sections_test.cc: Add template.
1561
1562 2008-04-30  Cary Coutant  <ccoutant@google.com>
1563
1564         * target-reloc.h (relocate_section): Fix dead-pointer bug.
1565
1566         * layout.cc (Layout::include_section): Refactored check for debug
1567         info section.
1568         (Layout::add_comdat): Add new parameters.  Change type
1569         of signature parameter.  Add object and shndx to signatures table.
1570         (Layout::find_kept_object): New function.
1571         * layout.h: Include <cstring>.
1572         (Layout::is_debug_info_section): New function.
1573         (Layout::add_comdat): Add new parameters.
1574         (Layout::find_kept_object): New function.
1575         (Layout::Kept_section): New struct.
1576         (Layout::Signatures): Change type of map range.
1577         * object.cc (Relobj::output_section_address): New function.
1578         (Sized_relobj::include_section_group): Add new parameters.  Change
1579         calls to Layout::add_comdat.  Change to build table of kept comdat
1580         groups and table mapping discarded sections to kept sections.
1581         (Sized_relobj::include_linkonce_section): Likewise.  Add new parameter.
1582         (Sized_relobj::do_layout): Change calls to include_section_group and
1583         include_linkonce_section.
1584         (Sized_relobj::do_finalize_local_symbols): Do not set local symbol
1585         value to zero when section is discarded.
1586         (Sized_relobj::map_to_kept_section): New function.
1587         * object.h (Relobj::output_section_address): New function.
1588         (Relobj::Comdat_group): New type.
1589         (Relobj::find_comdat_group): New function.
1590         (Relobj::Comdat_group_table): New type.
1591         (Relobj::Kept_comdat_section): New type.
1592         (Relobj::Kept_comdat_section_table): New type.
1593         (Relobj::add_comdat_group): New function.
1594         (Relobj::set_kept_comdat_section): New function.
1595         (Relobj::get_kept_comdat_section): New function.
1596         (Relobj::comdat_groups_): New field.
1597         (Relobj::kept_comdat_sections_): New field.
1598         (Symbol_value::input_value): Update comment.
1599         (Sized_relobj::map_to_kept_section) New function.
1600         (Sized_relobj::include_linkonce_section): Add new parameter.
1601         * target-reloc.h (Comdat_behavior): New type.
1602         (get_comdat_behavior): New function.
1603         (relocate_section): Add code to map a discarded section to the
1604         corresponding kept section when applying a relocation.
1605
1606 2008-04-30  Craig Silverstein  <csilvers@google.com>
1607
1608         * dwarf_reader.cc (next_generation_count): New static var.
1609         (Addr2line_cache_entry): New struct.
1610         (addr2line_cache): New static var.
1611         (Dwarf_line_info::one_addr2line): Added caching.
1612         (Dwarf_line_info::clear_addr2line_cache): New function.
1613         * dwarf_reader.h (Dwarf_line_info::one_addr2line): Add
1614         cache-size parameter.
1615         (Dwarf_line_info::one_addr2line_cache): New function.
1616         * symtab.cc (Symbol_table::detect_odr_violations): Pass
1617         new cache-size argument to one_addr2line(), and clear cache.
1618
1619 2008-04-28  Cary Coutant  <ccoutant@google.com>
1620
1621         * i386.cc (Relocate::relocate): Fix typos for R_386_PC16 and
1622         R_386_PC8 relocations.
1623
1624 2008-04-23  Ian Lance Taylor  <iant@google.com>
1625
1626         * object.cc (Sized_relobj::include_section_group): Check for
1627         invalid section group.
1628
1629         * object.cc (make_elf_object): Correct test for 64-bit ELF file
1630         header size.
1631
1632         * readsyms.cc (Read_symbols::do_read_symbols): Use get_view rather
1633         than read for file header.
1634         * archive.cc (Archive::include_member): Likewise.
1635
1636 2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
1637
1638         * aclocal.m4: Regenerate.
1639         * configure: Regenerate.
1640
1641 2008-04-19  Ian Lance Taylor  <iant@google.com>
1642
1643         * version.cc (version_string): Bump to 1.6.
1644
1645         * testsuite/Makefile.am (many_sections_r_test): New target.
1646         (many_sections_r_test_SOURCES): Remove.
1647         (many_sections_r_test_DEPENDENCIES): Remove.
1648         (many_sections_r_test_LDFLAGS): Remove.
1649         (many_sections_r_test_LDADD): Remove.
1650
1651         * object.cc (Sized_relobj::do_add_symbols): Always pass
1652         local_symbol_count_ to add_from_relobj.
1653
1654         * testsuite/Makefile.am (many_sections_check.h): Only check one in
1655         every thousand variables.
1656         * testsuite/Makefile.in: Rebuild.
1657
1658         * object.cc (Xindex::initialize_symtab_xindex): New function.
1659         (Xindex::read_symtab_xindex): New function.
1660         (Xindex::sym_xindex_to_shndx): New function.
1661         (Sized_relobj::find_symtab): Pick up SHT_SYMTAB_SHNDX section if
1662         available.
1663         (Sized_relobj::do_initialize_xindex): New function.
1664         (Sized_relobj::do_read_symbols): Adjust section links.
1665         (Sized_relobj::symbol_section_and_value): Add is_ordinary
1666         parameter.  Change all callers.
1667         (Sized_relobj::include_section_group): Adjust section links and
1668         symbol section indexes.
1669         (Sized_relobj::do_layout): Adjust section links.
1670         (Sized_relobj::do_count_local_symbols): Adjust section links and
1671         symbol section indexes.
1672         (Sized_relobj::do_finalize_local_symbols): Distinguish between
1673         ordinary and special symbols.
1674         (Sized_relobj::write_local_symbols): Add symtab_xindex and
1675         dynsym_xindex parameters.  Change all callers.  Adjust section
1676         links.  Use SHN_XINDEX when needed.
1677         (Sized_relobj::get_symbol_location_info): Adjust section links.
1678         Don't get fooled by special symbols.
1679         * object.h (class Xindex): Define.
1680         (class Object): Add xindex_ parameter.  Declare virtual functoin
1681         do_initialize_xindex.
1682         (Object::adjust_sym_shndx): New function.
1683         (Object::set_xindex): New protected function.
1684         (class Symbol_value): Add is_ordinary_shndx_ field.
1685         (Symbol_value::Symbol_value): Initialize is_ordinary_shndx_.
1686         (Symbol_value::value): Assert ordinary section.
1687         (Symbol_value::initialize_input_to_output_map): Likewise.
1688         (Symbol_value::set_input_shndx): Add is_ordinary parameter.
1689         Change all callers.
1690         (Symbol_value::input_shndx): Add is_ordinary parameter.  Change
1691         all callers.
1692         (class Sized_relobj): Update declarations.
1693         (Sized_relobj::local_symbol_input_shndx): Add is_ordinary
1694         parameter.  Change all callers.
1695         (Sized_relobj::adjust_shndx): New function.
1696         * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize dynsym_shndx_
1697         field.
1698         (Sized_dynobj::find_dynsym_sections): Remove pdynsym_shndx
1699         parameter.  Change all callers.  Pick up SHT_DYNSYM_SHNDX section
1700         for SHT_DYNSYM section if available.  Set dynsym_shndx_ field.
1701         (Sized_dynobj::read_dynsym_section): Adjust section links.
1702         (Sized_dynobj::read_dynamic): Likewise.
1703         (Sized_dynobj::do_read_symbols): Use dynsym_shndx_ field.  Adjust
1704         section links.
1705         (Sized_dynobj::do_initialize_xindex): New function.
1706         * dynobj.h (class Sized_dynobj): Add dynsym_shndx_ field.  Declare
1707         do_initialize_xindex.
1708         (Sized_dynobj::adjust_shndx): New function.
1709         * layout.cc (Layout::Layout): Initialize symtab_xindex_ and
1710         dynsym_xindex_ fields.
1711         (Layout::finalize): Add a call to set_section_indexes before
1712         creating the symtab sections.
1713         (Layout::set_section_indexes): Don't do anything if the section
1714         already has a section index.
1715         (Layout::create_symtab_sections): Add shnum parameter.  Change
1716         caller.  Create .symtab_shndx section if needed.
1717         (Layout::create_shdrs): Add shstrtab_section parameter.  Change
1718         caller.
1719         (Layout::allocated_output_section_count): New function.
1720         (Layout::create_dynamic_symtab): Create .dynsym_shndx section if
1721         needed.
1722         * layout.h (class Layout): Add symtab_xindex_ and dynsym_xindex_
1723         fields.  Update declarations.
1724         (Layout::symtab_xindex): New function.
1725         (Layout::dynsym_xindex): New function.
1726         (class Write_symbols_task): Add layout_ field.
1727         (Write_symbols_task::Write_symbols_task): Add layout parameter.
1728         Change caller.
1729         * output.cc (Output_section_headers::Output_section_headers): Add
1730         shstrtab_section parameter.  Change all callers.
1731         (Output_section_headers::do_sized_write): Store overflow values
1732         for section count and section string table section index in
1733         section header zero.
1734         (Output_file_header::do_sized_write): Check for overflow of
1735         section count and section string table section index.
1736         (Output_symtab_xindex::do_write): New function.
1737         (Output_symtab_xindex::endian_do_write): New function.
1738         * output.h (class Output_section_headers): Add shstrtab_section_.
1739         Update declarations.
1740         (class Output_symtab_xindex): Define.
1741         (Output_section::has_out_shndx): New function.
1742         * symtab.cc (Symbol::init_fields): Initialize is_ordinary_shndx_
1743         field.
1744         (Symbol::init_base): Add st_shndx and is_ordinary parameters.
1745         Change all callers.
1746         (Sized_symbol::init): Likewise.
1747         (Symbol::output_section): Check for ordinary symbol.
1748         (Symbol_table::add_from_object): Remove orig_sym parameter.  Add
1749         st_shndx, is_ordinary, and orig_st_shndx parameters.  Change all
1750         callers.
1751         (Symbol_table::add_from_relobj): Add symndx_offset parameter.
1752         Change all callers.  Simplify handling of symbols from sections
1753         not included in the link.
1754         (Symbol_table::add_from_dynobj): Handle ordinary symbol
1755         distinction.
1756         (Weak_alias_sorter::operator()): Assert that symbols are
1757         ordinary.
1758         (Symbol_table::sized_finalize_symbol): Handle ordinary symbol
1759         distinction.
1760         (Symbol_table::write_globals): Add symtab_xindex and dynsym_xindex
1761         parameters.  Change all callers.
1762         (Symbol_table::sized_write_globals): Likewise.  Handle ordinary
1763         symbol distinction.  Use SHN_XINDEX when needed.
1764         (Symbol_table::write_section_symbol): Add symtab_xindex
1765         parameter.  Change all callers.
1766         (Symbol_table::sized_write_section_symbol): Likewise.  Use
1767         SHN_XINDEX when needed.
1768         * symtab.h (class Symbol): Add is_ordinary_shndx_ field.  Update
1769         declarations.
1770         (Symbol::shndx): Add is_ordinary parameter.  Change all callers.
1771         (Symbol::is_defined): Check is_ordinary.
1772         (Symbol::is_undefined, Symbol::is_weak_undefined): Likewise.
1773         (Symbol::is_absolute, Symbol::is_common): Likewise.
1774         (class Sized_symbol): Update declarations.
1775         (class Symbol_table): Update declarations.
1776         * resolve.cc (Symbol::override_base): Add st_shndx and is_ordinary
1777         parameters.  Change all callers.
1778         (Sized_symbol::override): Likewise.
1779         (Symbol_table::override): Likewise.
1780         (symbol_to_bits): Add is_ordinary parameter.  Change all callers.
1781         (Symbol_table::resolve): Remove orig_sym parameter.  Add st_shndx,
1782         is_ordinary, and orig_st_shndx parameters.  Change all callers.
1783         * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Require symbol
1784         to be in an ordinary section.
1785         * dwarf_reader.cc (Sized_dwarf_line_info::symbol_section): Add
1786         object and is_ordinary parameters.  Change all callers.
1787         (Sized_dwarf_line_info::read_relocs): Add object parameter.
1788         Change all callers.  Don't add undefined or non-ordinary symbols
1789         to reloc_map_.
1790         (Sized_dwarf_line_info::read_line_mappings): Add object parameter.
1791         Change all callers.
1792         * dwarf_reader.h (class Sized_dwarf_line_info): Update
1793         declarations.
1794         * ehframe.cc (Eh_frame::read_fde): Check for ordinary symbol.
1795         * reloc.cc (Sized_relobj::do_read_relocs): Adjust section links.
1796         (Sized_relobj::relocate_sections): Likewise.
1797         * target-reloc.h (scan_relocs): Adjust section symbol index.
1798         (scan_relocatable_relocs): Likewise.
1799         * i386.cc (Scan::local): Check for ordinary symbols.
1800         * sparc.cc (Scan::local): Likewise.
1801         * x86_64.cc (Scan::local): Likewise.
1802         * testsuite/binary_unittest.cc (Sized_binary_test): Update calls
1803         to symbol_section_and_value.
1804         * testsuite/many_sections_test.cc: New file.
1805         * testsuite/Makefile.am (BUILT_SOURCES): Define.
1806         (check_PROGRAMS): Add many_sections_test.
1807         (many_sections_test_SOURCES): Define.
1808         (many_sections_test_DEPENDENCIES): Define.
1809         (many_sections_test_LDFLAGS): Define.
1810         (BUILT_SOURCES): Add many_sections_define.h.
1811         (many_sections_define.h): New target.
1812         (BUILT_SOURCES): Add many_sections_check.h.
1813         (many_sections_check.h): New target.
1814         (check_PROGRAMS): Add many_sections_r_test.
1815         (many_sections_r_test_SOURCES): Define.
1816         (many_sections_r_test_DEPENDENCIES): Define.
1817         (many_sections_r_test_LDFLAGS): Define.
1818         (many_sections_r_test_LDADD): Define.
1819         (many_sections_r_test.o): New target.
1820         * testsuite/Makefile.in: Rebuild.
1821
1822 2008-04-17  Cary Coutant  <ccoutant@google.com>
1823
1824         * errors.cc (Errors::info): New function.
1825         (gold_info): New function.
1826         * errors.h (Errors::info): New function.
1827         * gold.h (gold_info): New function.
1828         * object.cc (Input_objects::add_object): Print trace output.
1829         * options.cc (options::parse_set): New function.
1830         (General_options::parse_wrap): Deleted.
1831         (General_options::General_options): Deleted initializer.
1832         * options.h (options::String_set): New typedef.
1833         (options::parse_set): New function.
1834         (DEFINE_set): New macro.
1835         (General_options::wrap): Changed to use DEFINE_set. Changed
1836         callers of any_wrap_symbols and is_wrap_symbol.
1837         (General_options::trace, General_options::trace_symbol):
1838         New options.
1839         (General_options::any_wrap_symbols, General_options::is_wrap_symbol)
1840         (General_options::wrap_symbols_): Deleted.
1841         * symtab.cc (Symbol_table::add_from_object): Print trace output.
1842
1843 2008-04-17  David S. Miller  <davem@davemloft.net>
1844
1845         * options.cc (General_options::parse_V): New function.
1846         * options.h: Add entries for -V and -Qy.
1847
1848 2008-04-17  Ian Lance Taylor  <iant@google.com>
1849
1850         * common.cc (Symbol_table::allocate_commons): Remove options
1851         parameter.  Change caller.
1852         (Symbol_table::do_allocate_commons): Remove options parameter.
1853         Change caller.  Just call do_allocate_commons_list twice.
1854         (Symbol_table::do_allocate_commons_list): New function, broken out
1855         of do_allocate_commons.
1856         * common.h (class Allocate_commons_task): Remove options_ field.
1857         Update constructor.
1858         * symtab.cc (Symbol_table::Symbol_table): Initialize
1859         tls_commons_.
1860         (Symbol_table::add_from_object): Put TLS common symbols on
1861         tls_commons_ list.
1862         (Symbol_table::sized_finalize_symbol): Handle STT_TLS symbols
1863         which are IN_OUTPUT_DATA.
1864         * symtab.h (class Symbol_table): Add tls_commons_ field.  Update
1865         allocate_commons and do_allocate_commons declarations.  Declare
1866         do_allocate_commons_list.
1867         * gold.cc (queue_middle_tasks): Update creation of
1868         Allocate_commons_task to not pass options.
1869         * testsuite/Makefile.am (INCLUDES): Add -I.. .
1870         (TLS_TEST_C_FLAGS): New variable.
1871         (tls_test_c_pic.o): New target.
1872         (tls_test_shared.so): Link in tls_test_c_pic.o.
1873         (tls_test_c_pic_ie.o): New target.
1874         (tls_test_ie_shared.so): Link in tls_test_c_pic_ie.o.
1875         (tls_test_DEPENDENCIES, tls_test_LDADD): Add tls_test_c.o.
1876         (tls_test_c.o): New target.
1877         (tls_pic_test_DEPENDENCIES): Add tls_test_c_pic.o.
1878         (tls_pic_test_LDADD): Likewise.
1879         (tls_shared_gd_to_ie_test_DEPENDENCIES): Add tls_test_c_pic.o.
1880         (tls_shared_gd_to_ie_test_LDADD): Likewise.
1881         (tls_test_c_gnu2.o): New target.
1882         (tls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): Add
1883         tls_test_c_gnu2.o.
1884         (tls_shared_gnu2_gd_to_ie_test_LDADD): Likewise.
1885         (tls_test_gnu2_shared.so): Link in tls_test_c_gnu2.o.
1886         (tls_test_shared_nonpic.so): Link in tls_test_c.o.
1887         * testsuite/tls_test.cc: Include "config.h".
1888         (t_last): Call t11_last.
1889         * testsuite/tls_test.h (t11, t11_last): Declare.
1890         * testsuite/tls_test_c.c: New file.
1891         * testsuite/tls_test_main.cc (thread_routine): Call t11.
1892         * configure.ac: Check for OpenMP support.
1893         * configure, config.in, Makefile.in: Rebuild.
1894         * testsuite/Makefile.in: Rebuild.
1895
1896 2008-04-16  Cary Coutant  <ccoutant@google.com>
1897
1898         * i386.cc (Target_i386::define_tls_base_symbol): New function.
1899         (Target_i386::tls_base_symbol_defined_): New field.
1900         (Target_i386::Scan::local): Define _TLS_MODULE_BASE_ symbol.
1901         (Target_i386::Scan::global): Likewise.
1902         * symtab.cc (sized_finalize_symbol): Add check for TLS symbol.
1903         * x86_64.cc (Target_x86_64::define_tls_base_symbol): New function.
1904         (Target_x86_64::tls_base_symbol_defined_): New field.
1905         (Target_x86_64::Scan::local): Define _TLS_MODULE_BASE_ symbol.
1906         (Target_x86_64::Scan::global): Likewise.
1907
1908 2008-04-16  Cary Coutant  <ccoutant@google.com>
1909
1910         * symtab.h (Symbol::is_strong_undefined): Removed unused function.
1911         (Symbol::needs_plt_entry): Allow weak undefined symbols.
1912         (Symbol::needs_dynamic_reloc): Allow weak undefined symbols when
1913         building shared libraries.
1914         * testsuite/Makefile.am (weak_undef_nonpic_test): New target.
1915         (weak_undef_file1_nonpic.o, weak_undef_file2_nonpic.o)
1916         (weak_undef_lib_nonpic.so, alt/weak_undef_lib_nonpic.so): New targets.
1917         * testsuite/Makefile.in: Rebuild.
1918         * testsuite/weak_undef.h: New file.
1919         * testsuite/weak_undef_file1.cc: Add extra test cases.
1920         * testsuite/weak_undef_file2.cc: Likewise.
1921         * testsuite/weak_undef_test.cc: Likewise.
1922
1923 2008-04-16  David S. Miller  <davem@davemloft.net>
1924
1925         * sparc.cc (Target_sparc::Scan): Change from struct to class.
1926         Add issued_non_pic_error_ field.  Declare check_non_pic.
1927         (Target_sparc::Scan::check_non_pic): New function.
1928         (Target_sparc::Scan::local): Call check_non_pic as appropriate.
1929         (Target_sparc::Scan::global): Likewise.
1930
1931         * configure.ac (FN_PTRS_IN_SO_WITHOUT_PIC): Add sparc64.
1932         * configure: Rebuild.
1933
1934         * options.h (DEFINE_enable): New macro.
1935         (new_dtags): New enable option.
1936         (initfirst, interpose, loadfltr, nodefaultlib,
1937         nodelete, nodlopen, nodump): New -z options.
1938         * layout.cc (Layout:finish_dynamic_section): If new
1939         dtags enabled, emit DT_RUNPATH.  Also, emit a
1940         DT_FLAGS_1 containing any specified -z flags.
1941
1942 2008-04-16  Ian Lance Taylor  <iant@google.com>
1943
1944         * copy-relocs.cc: New file.
1945         * copy-relocs.h: New file.
1946         * reloc.cc: Remove Copy_relocs code.
1947         * reloc.h: Likewise.
1948         * reloc-types.h (struct Reloc_types) [both versions]: Add
1949         get_reloc_addend_noerror.
1950         * output.h (class Output_data_reloc<elfcpp::SHT_REL>): Add
1951         variants of add_global which take an addend which must be zero.
1952         * i386.cc: Include "copy-relocs.h".
1953         (class Target_i386): Change type of copy_relocs_ to variable,
1954         update initializer.
1955         (Target_i386::copy_reloc): Rewrite to pass to Copy_relocs class.
1956         Change all callers.
1957         (Target_i386::do_finalize_sections): Change handling of
1958         copy_relocs_.
1959         * sparc.cc: Include "copy-relocs.h".
1960         (class Target_sparc): Change type of copy_relocs_ to variable,
1961         update initializer.
1962         (Target_sparc::copy_reloc): Rewrite to pass to Copy_relocs class.
1963         Change all callers.
1964         (Target_sparc::do_finalize_sections): Change handling of
1965         copy_relocs_.
1966         * x86_64.cc: Include "copy-relocs.h".
1967         (class Target_x86_64): Change type of copy_relocs_ to variable,
1968         update initializer.
1969         (Target_x86_64::copy_reloc): Rewrite to pass to Copy_relocs
1970         class.  Change all callers.
1971         (Target_x86_64::do_finalize_sections): Change handling of
1972         copy_relocs_.
1973         * Makefile.am (CCFILES): Add copy-relocs.cc.
1974         (HFILES): Add copy-relocs.h.
1975
1976         * Makefile.in, aclocal.m4, testsuite/Makefile.in: Rebuild.
1977
1978         * testsuite/script_test_4.sh: Permit leading zeroes.
1979
1980 2008-04-15  Ian Lance Taylor  <iant@google.com>
1981
1982         * script-sections.cc (Script_sections::create_segments): Use
1983         header_size_adjustment even when there is enough room for the
1984         headers.
1985         * testsuite/script_test_4.sh: New file.
1986         * testsuite/script_test_4.t: New file.
1987         * testsuite/Makefile.am (check_SCRIPTS): Add script_test_4.sh.
1988         (check_DATA): Add script_test_4.stdout.
1989         (MOSTLYCLEANFILES): Likewise.
1990         (script_test_4): New target.
1991         (script_test_4.stdout): New target.
1992         * testsuite/Makefile.in: Rebuild.
1993
1994         * sparc.cc: Add definitions for Output_data_plt_sparc class
1995         constants.
1996
1997 2008-04-14  David S. Miller  <davem@davemloft.net>
1998
1999         * sparc.cc: New file.
2000         * Makefile.am (TARGETSOURCES): Add sparc.cc
2001         (ALL_TARGETOBJS): Add sparc.$(OBJEXT)
2002         * configure.tgt: Document targ_extra_size and
2003         targ_extra_big_endian.  Add entries for sparc-* and
2004         sparc64-*.
2005         * configure.ac: Handle targ_extra_size and
2006         targ_extra_big_endian.
2007         * Makefile.in: Rebuild.
2008         * configure: Likewise.
2009         * po/POTFILES.in: Likewise.
2010         * po/gold.pot: Likewise.
2011
2012 2008-04-14  Ian Lance Taylor  <iant@google.com>
2013
2014         * layout.cc (Layout::Layout): Initialize sections_are_attached_.
2015         (Layout::get_output_section): Ignore SHF_WRITE and SHF_EXECINSTR
2016         in the name/type/flags to section mapping.  Don't call
2017         allocate_output_section.
2018         (Layout::choose_output_section): Change parameter from adjust_name
2019         to is_input_section.  Don't permit input sections after sections
2020         are attached to segments.  Don't call allocate_output_section.
2021         (Layout::layout_eh_frame): Call update_flags_for_input_section,
2022         not write_enable_output_section.
2023         (Layout::make_output_section): Don't push to
2024         unattached_section_list_ nor call attach_to_segment.  Call
2025         attach_section_to_segment if sections are attached.
2026         (Layout::attach_sections_to_segments): New function.
2027         (Layout::attach_section_to_segment): New function.
2028         (Layout::attach_allocated_section_to_segment): Rename from
2029         attach_to_segment.  Remove flags parameter.
2030         (Layout::allocate_output_section): Remove function.
2031         (Layout::write_enable_output_section): Remove function.
2032         * layout.h (class Layout): Update for above changes.  Add new
2033         field sections_are_attached_.
2034         * output.h (Output_section::update_flags_for_input_section): New
2035         function.
2036         * output.cc (Output_section::add_input_section): Call
2037         update_flags_for_input_section.
2038         * gold.cc (queue_middle_tasks): Call attach_sections_to_segments.
2039
2040 2008-04-11  Cary Coutant  <ccoutant@google.com>
2041
2042         * i386.cc (Target_i386::got_mod_index_entry): Restore code previously
2043         thought unnecessary.
2044         * x86_64.cc (Target_x86_64::got_mod_index_entry): Likewise.
2045
2046 2008-04-11  Ian Lance Taylor  <iant@google.com>
2047
2048         * output.h (class Output_section_data): Remove inline definition
2049         of set_addralign.
2050         * output.cc (Output_section_data::set_addralign): New function.
2051
2052 2008-04-11  Cary Coutant  <ccoutant@google.com>
2053
2054         Add support for TLS descriptors for i386 and x86_64.
2055         * i386.cc (Target_i386::Relocate::tls_desc_gd_to_ie): New function.
2056         (Target_i386::Relocate::tls_desc_gd_to_le): New function.
2057         (Target_i386::Got_type): Add GOT_TYPE_TLS_NOFFSET and
2058         GOT_TYPE_TLS_DESC.
2059         (Target_i386::got_mod_index_entry): Remove unnecessary code.
2060         (Target_i386::Scan::local): Implement R_386_TLS_GOTDESC and
2061         R_386_TLS_DESC_CALL relocations.  Fix problem with initial-exec
2062         relocations.
2063         (Target_i386::Scan::global): Fix problem with GD-to-IE relaxation.
2064         Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations;
2065         Fix problem with initial-exec relocations.
2066         (Target_i386::Relocate::relocate_tls): Likewise.
2067         (Target_i386::Relocate::tls_gd_to_ie): Fix problem with GD-to-IE
2068         relaxation.
2069         * output.cc (Output_data_dynamic::Dynamic_entry::write): Add
2070         support for section-plus-offset dynamic table entries.
2071         * output.h (Output_data_dynamic::add_section_plus_offset): New function.
2072         (Output_data_dynamic::Dynamic_entry): Add support for
2073         section-plus-offset dynamic table entries.
2074         (Output_data_dynamic::Classification): Likewise.
2075         (Output_data_dynamic::classification_): Renamed offset_.
2076         * x86_64.cc (Target_x86_64::Relocate::tls_desc_gd_to_ie): New function.
2077         (Target_x86_64::Relocate::tls_desc_gd_to_le): New function.
2078         (Target_x86_64::make_plt_section): New function.
2079         (Target_x86_64::reserve_tlsdesc_entries): New function.
2080         (Output_data_plt_x86_64::Output_data_plt_x86_64): Add new parameter.
2081         (Output_data_plt_x86_64::reserve_tlsdesc_entry): New function.
2082         (Output_data_plt_x86_64::has_tlsdesc_entry): New function.
2083         (Output_data_plt_x86_64::get_tlsdesc_got_offset): New function.
2084         (Output_data_plt_x86_64::get_tlsdesc_plt_offset): New function.
2085         (Output_data_plt_x86_64::tlsdesc_plt_entry): New field.
2086         (Output_data_plt_x86_64::set_final_data_size): Move out of line;
2087         add extra PLT entry for TLS descriptors.
2088         (Output_data_plt_x86_64::got_): New field.
2089         (Output_data_plt_x86_64::tlsdesc_got_offset_): New field.
2090         (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize new
2091         fields.
2092         (Output_data_plt_x86_64::do_write): Write extra PLT entry for TLS
2093         descriptors.
2094         (Target_x86_64::make_plt_entry): Factor out make_plt_section.
2095         (Target_x86_64::got_mod_index_entry): Remove unnecessary code.
2096         (Target_x86_64::Scan::local): Implement R_386_TLS_GOTDESC and
2097         R_386_TLS_DESC_CALL relocations.
2098         (Target_x86_64::Scan::global): Likewise.
2099         (Target_x86_64::do_finalize_sections): Add dynamic table entries
2100         for TLS descriptors.
2101         (Relocate::relocate_tls): Fix problem with GD-to-IE relaxation.
2102         Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations.
2103         (Target_x86_64::Relocate::tls_gd_to_ie): Fix problem with
2104         GD-to-IE relaxation.
2105         * configure.ac: Export new conditional variables TLS_GNU2_DIALECT
2106         and TLS_DESCRIPTORS.
2107         * Makefile.in: Rebuild.
2108         * configure: Rebuild.
2109         * testsuite/Makefile.am (tls_shared_gd_to_ie_test): New target.
2110         (tls_test_shared2.so): New target.
2111         (tls_shared_gd_to_ie_test_SOURCES): New variable.
2112         (tls_shared_gd_to_ie_test_DEPENDENCIES): New variable.
2113         (tls_shared_gd_to_ie_test_LDFLAGS): New variable.
2114         (tls_shared_gd_to_ie_test_LDADD): New variable.
2115         (tls_shared_gnu2_gd_to_ie_test): New target.
2116         (tls_test_gnu2.o, tls_test_file2_gnu2.o, tls_test_gnu2_shared2.so):
2117         New targets.
2118         (tls_shared_gnu2_gd_to_ie_test_SOURCES): New variable.
2119         (ls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): New variable.
2120         (tls_shared_gnu2_gd_to_ie_test_LDFLAGS): New variable.
2121         (tls_shared_gnu2_gd_to_ie_test_LDADD): New variable.
2122         (tls_shared_gnu2_test): New target.
2123         (tls_test_gnu2_shared.so): New target.
2124         (tls_shared_gnu2_test_SOURCES): New variable.
2125         (tls_shared_gnu2_test_DEPENDENCIES): New variable.
2126         (tls_shared_gnu2_test_LDFLAGS): New variable.
2127         (tls_shared_gnu2_test_LDADD): New variable.
2128         * testsuite/Makefile.in: Rebuild.
2129         * testsuite/Makefile.
2130
2131 2008-04-11  Ian Lance Taylor  <iant@google.com>
2132
2133         * testsuite/Makefile.am (justsyms_2r.o): Add dependency on
2134         justsyms.t.
2135         * testsuite/Makefile.in: Rebuild.
2136
2137         * testsuite/script_test_2a.cc (script_test_string_a): Make 8 bytes
2138         long.
2139         * testsuite/script_test_2.cc (main): Adjust test.
2140
2141 2008-04-11  David S. Miller  <davem@davemloft.net>
2142             Ian Lance Taylor  <iant@google.com>
2143
2144         * options.h (General_options): Add entries for '-Y' and
2145         '-relax'.
2146         * options.cc (General_options:finalize): If -Y was used, add those
2147         entries to the library path instead of the default "/lib" and
2148         "/usr/lib".
2149
2150 2008-04-11  David S. Miller  <davem@davemloft.net>
2151
2152         * testsuite/justsyms.t: Start at 0x100.
2153         * testsuite/justsyms_1.cc: Adjust justsyms_string assertion.
2154         * testsuite/script_test_2b.cc (script_test_string_b): Make 8 bytes
2155         long.
2156         * testsuite/script_test_2.cc: Adjust string and section length
2157         checks.
2158
2159 2008-04-09  Ian Lance Taylor  <iant@google.com>
2160
2161         PR gold/5996
2162         * script-sections.cc (Sections_element::allocate_to_segment): Add
2163         orphan parameter.
2164         (Output_section_definition::allocate_to_segment): Likewise.
2165         (Orphan_output_section::allocate_to_segment): Likewise.
2166         (Script_sections::attach_sections_using_phdrs_clause): Don't
2167         propagate non-PT_LOAD segments to orphan sections.
2168         * testsuite/Makefile.am (script_test_3.stdout): Generate using
2169         readelf rather than objdump.
2170         * testsuite/script_test_3.sh: Adjust accordingly.  Test that
2171         .interp section and PT_INTERP segment are the same size.
2172         * testsuite/Makefile.in: Rebuild.
2173
2174         * symtab.cc (Symbol_table::add_from_dynobj): Only look for weak
2175         aliases for symbols defined in the same object.
2176         * testsuite/Makefile.am (check_PROGRAMS): Add weak_alias_test.
2177         (weak_alias_test_SOURCES): New variable.
2178         (weak_alias_test_DEPENDENCIES): New variable.
2179         (weak_alias_test_LDFLAGS): New variable.
2180         (weak_alias_test_LDADD): New variable.
2181         (weak_alias_test_1_pic.o, weak_alias_test_1.so): New targets.
2182         (weak_alias_test_2_pic.o, weak_alias_test_2.so): New targets.
2183         (weak_alias_test_3.o): New target.
2184         (weak_alias_test_4_pic.o, weak_alias_test_4.so): New targets.
2185         * testsuite/weak_alias_test_main.cc: New file.
2186         * testsuite/weak_alias_test_1.cc: New file.
2187         * testsuite/weak_alias_test_2.cc: New file.
2188         * testsuite/weak_alias_test_3.cc: New file.
2189
2190 2008-04-08  Ian Lance Taylor  <iant@google.com>
2191
2192         * options.h (class General_options): Add --noinhibit-exec option.
2193         * main.cc (main): Check --noinhibit-exec.
2194
2195         * options.h (class General_options): Define --wrap as a special
2196         option.  Add wrap_symbols_ field.
2197         (General_options::any_wrap_symbols): New function.
2198         (General_options::is_wrap_symbol): New function.
2199         * options.cc (General_options::parse_wrap): New function.
2200         (General_options::General_options): Initialize wrap_symbols_.
2201         * symtab.cc (Symbol_table::wrap_symbol): New function.
2202         (Symbol_table::add_from_object): Handle --wrap.
2203         * symtab.h (class Symbol_table): Declare wrap_symbol.
2204         * target.h (Target::wrap_char): New function.
2205         (Target::Target_info): Add wrap_char field.
2206         * i386.cc (Target_i386::i386_info): Initialize wrap_char.
2207         * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
2208         * testsuite/testfile.cc (Target_test::test_target_info):
2209         Likewise.
2210
2211         * errors.cc (Errors::undefined_symbol): Mention symbol version if
2212         there is one.
2213
2214         * layout.h (class Layout): Add added_eh_frame_data_ field.
2215         * layout.cc (Layout::Layout): Initialize new field.
2216         (Layout::layout_eh_frame): Don't add eh_frame_data_ to .eh_frame
2217         output section until we find a section we merged successfully.
2218         * object.cc (Sized_relobj::check_eh_frame_flags): Don't require
2219         that the size be non-zero.
2220
2221         * merge.cc (Object_merge_map::get_output_offset): Remove inline
2222         qualifier.
2223
2224 2008-04-08  Craig Silverstein  <csilvers@google.com>
2225
2226         * configure.ac: Export new conditional variable HAVE_ZLIB.
2227         * testsuite/Makefile.am (flagstest_o_specialfile): Condition
2228         on HAVE_ZLIB.
2229         (flagstest_o_specialfile_and_compress_debug_sections): Likewise.
2230         * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
2231
2232 2008-04-07  Ian Lance Taylor  <iant@google.com>
2233
2234         * version.cc (version_string): Set to "1.5".
2235
2236         * x86_64.cc (Target_x86_64::Scan): Change from struct to class.
2237         Add issued_non_pic_error_ field.  Declare check_non_pic.
2238         (Target_x86_64::Scan::check_non_pic): New function.
2239         (Target_x86_64::Scan::local): Call check_non_pic as appropriate.
2240         (Target_x86_64::Scan::global): Likewise.
2241
2242         * output.cc (Output_reloc<SHT_REL>::local_section_offset): Add
2243         addend parameter.  Change caller.  Handle merge sections.
2244         (Output_reloc<SHT_REL>::symbol_value): Change parameter type from
2245         Address to Addend.  Don't add in the result of
2246         local_section_offset, pass down the addend and use the returned
2247         value.
2248         * output.h (class Output_reloc<SHT_REL>): Add Addend typedef.
2249         Update declarations of local_section_offset and symbol_value.
2250         * testsuite/two_file_test_1.cc (t18): New function.
2251         * testsuite/two_file_test_2.cc (f18): New function.
2252         * testsuite/two_file_test_main.cc (main): Call t18.
2253         * testsuite/two_file_test.h (t18, f18): Declare.
2254
2255         * configure.ac: Don't test for objdump, c++filt, or readelf.
2256         * testsuite/Makefile.am: Remove READELF and OBJDUMP_AND_CPPFILT
2257         conditionals.
2258         (TEST_READELF): New variable.
2259         (TEST_OBJDUMP, TEST_CXXFILT, TEST_STRIP): New variables.
2260         (check_PROGRAMS): Add two_file_strip_test.
2261         (two_file_strip_test): New target.
2262         (check_PROGRAMS): Add two_file_same_shared_strip_test.
2263         (two_file_same_shared_strip_test_SOURCES): New variable.
2264         (two_file_same_shared_strip_test_DEPENDENCIES): New variable.
2265         (two_file_same_shared_strip_test_LDFLAGS): New variable.
2266         (two_file_same_shared_strip_test_LDADD): New variable.
2267         (two_file_shared_strip.so): New target.
2268         (ver_test_2.syms, ver_test_4.syms): Use TEST_READELF.
2269         (ver_test_5.syms, ver_test_7.syms): Likewise.
2270         (ver_matching_test.stdout): Use TEST_OBJDUMP and TEST_CXXFILT.
2271         (strip_test_3.stdout): Use TEST_OBJDUMP.
2272         * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
2273
2274 2008-04-04  Cary Coutant  <ccoutant@google.com>
2275
2276         * symtab.h (Symbol::is_weak_undefined): New function.
2277         (Symbol::is_strong_undefined): New function.
2278         (Symbol::is_absolute): New function.
2279         (Symbol::needs_plt_entry): Exclude weak undefined symbols.
2280         (Symbol::needs_dynamic_reloc): Exclude weak undefined and
2281         absolute symbols.
2282         * testsuite/Makefile.am (check_PROGRAMS): Add weak_undef_test.
2283         (weak_undef_test): New target.
2284         * testsuite/Makefile.in: Rebuild.
2285         * testsuite/weak_undef_file1.cc: New file.
2286         * testsuite/weak_undef_file2.cc: New file.
2287         * testsuite/weak_undef_test.cc: New file.
2288
2289 2008-04-03  Craig Silverstein  <csilvers@google.com>
2290
2291         * compressed_output.h (class Output_compressed_section): Use
2292         unsigned buffer.
2293         * compressed_output.cc (zlib_compress): Use unsigned buffers,
2294         add zlib header.
2295         (zlib_compressed_suffix): Removed.
2296         (Output_compressed_section::set_final_data_size): Use unsigned
2297         buffers.
2298         * testsuite/Makefile.am (flagstest_compress_debug_sections):
2299         Fix linker invocation.
2300         (flagstest_o_specialfile_and_compress_debug_sections):
2301         Likewise.
2302         * testsuite/Makefile.in: Regenerated.
2303
2304 2008-04-02  David S. Miller  <davem@davemloft.net>
2305
2306         *  dwarf_reader.cc (Sized_dwarf_line_info::read_header_prolog,
2307         Sized_dwarf_line_info::process_one_opcode): Use Swap_unaligned.
2308
2309 2008-04-02  Craig Silverstein  <csilvers@google.com>
2310
2311         * TODO: New file.
2312
2313 2008-04-02  Ian Lance Taylor  <iant@google.com>
2314
2315         * fileread.cc (File_read::find_view): Add byteshift and vshifted
2316         parameters.  Update for new key type to views_.  Change all
2317         callers.
2318         (File_read::read): Adjust for byteshift in returned view.
2319         (File_read::add_view): New function, broken out of
2320         find_and_make_view.
2321         (File_read::make_view): New function, broken out of
2322         find_and_make_view.
2323         (File_read::find_or_make_view): Add offset and aligned
2324         parameters.  Rewrite accordingly.  Change all callers.
2325         (File_read::get_view): Add offset and aligned parameters.  Adjust
2326         for byteshift in return value.
2327         (File_read::get_lasting_view): Likewise.
2328         * fileread.h (class File_read): Update declarations.
2329         (class File_read::View): Add byteshift_ field.  Add byteshift to
2330         constructor.  Add byteshift method.
2331         * archive.h (Archive::clear_uncached_views): New function.
2332         (Archive::get_view): Add aligned parameter.  Change all callers.
2333         * object.h (Object::get_view): Add aligned parameter.  Change all
2334         callers.
2335         (Object::get_lasting_view): Likewise.
2336
2337         * fileread.cc (File_read::release): Don't call clear_views if
2338         there are multiple objects.
2339         * fileread.h (File_read::clear_uncached_views): New function.
2340         * archive.cc (Add_archive_symbols::run): Call clear_uncached_views
2341         on the archive.
2342
2343 2008-03-31  Cary Coutant  <ccoutant@google.com>
2344
2345         Add thin archive support.
2346         * archive.cc (Archive::armagt): New const.
2347         (Archive::setup): Remove task parameter and calls to unlock.
2348         (Archive::unlock_nested_archives): New function.
2349         (Archive::read_header): Add nested_off parameter. Change
2350         all callers.
2351         (Archive::interpret_header): Likewise.
2352         (Archive::include_all_members): Change to handle thin
2353         archives.
2354         (Archive::include_member): Likewise.
2355         * archive.h (Archive::Archive): Add new parameters and
2356         initializers.
2357         (Archive::armagt): New const.
2358         (Archive::setup): Remove task parameter.
2359         (Archive::unlock_nested_archives): New function.
2360         (Archive::read_header): Add nested_off parameter.
2361         (Archive::interpret_header): Likewise.
2362         (Archive::Nested_archive_table): New typedef.
2363         (Archive::is_thin_archive_): New field.
2364         (Archive::nested_archives_): New field.
2365         (Archive::options_): New field.
2366         (Archive::dirpath_): New field.
2367         (Archive::task_): New field.
2368         * readsyms.cc (Read_symbols::do_read_symbols): Add check
2369         for thin archives.  Pass additional parameters to
2370         Archive::Archive.  Unlock the archive file after calling
2371         Archive::setup.
2372
2373 2008-03-29  Ian Lance Taylor  <iant@google.com>
2374
2375         * symtab.cc (Symbol_table::do_define_as_constant): Don't force a
2376         version symbol to be local.
2377         * testsuite/ver_test_4.sh: New file.
2378         * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_4.sh.
2379         (check_DATA): Add ver_test_4.syms.
2380         (ver_test_4.syms): New target.
2381         * testsuite/Makefile.in: Rebuild.
2382
2383         * output.cc
2384         (Output_section::Input_section_sort_entry::has_priority): New
2385         function.
2386         (Output_section::Input_section_sort_entry::match_file_name): New
2387         function.
2388         (Output_section::Input_section_sort_entry::match_section_name):
2389         Remove.
2390         (Output_section::Input_section_sort_entry::match_section_name_prefix):
2391         Remove.
2392         (Output_section::Input_section_sort_entry::match_section_file):
2393         Remove.
2394         (Output_section::Input_section_sort_compare::operator()): Rewrite
2395         using new Input_section_sort_entry functions.  Sort crtbegin and
2396         crtend first.  Sort sections with no priority before sections with
2397         a priority.
2398         * testsuite/initpri1.c (d3): Check j != 4.
2399         (cd5): New constructor/destructor function.
2400         (main): Check j != 2.
2401
2402         * symtab.cc (Symbol_table::add_from_object): If we don't use the
2403         new symbol when resolving, don't call set_is_default.
2404         * testsuite/ver_test_7.cc: New file.
2405         * testsuite/ver_test_7.sh: New file.
2406         * testsuite/Makefile.am (ver_test_7.so): New target.
2407         (ver_test_7.o): New target.
2408         (check_SCRIPTS): Add ver_test_7.sh.
2409         (check_DATA): Add ver_test_7.syms.
2410         (ver_test_7.syms): New target.
2411
2412 2008-03-28  Ian Lance Taylor  <iant@google.com>
2413
2414         * layout.cc (Layout::layout): If we see an input section with a
2415         name that needs sorting, set the must_sort flag for the output
2416         section.
2417         (Layout::make_output_section): If the name of the output section
2418         indicates that it might require sorting, set the may_sort flag.
2419         * output.h (Output_section::may_sort_attached_input_sections): New
2420         function.
2421         (Output_section::set_may_sort_attached_input_sections): New
2422         function.
2423         (Output_section::must_sort_attached_input_sections): New
2424         function.
2425         (Output_section::set_must_sort_attached_input_sections): New
2426         function.
2427         (class Output_section): Declare Input_section_sort_entry.  Define
2428         Input_section_sort_compare.  Declare
2429         sort_attached_input_sections.  Add new fields:
2430         may_sort_attached_input_sections_,
2431         must_sort_attached_input_sections_,
2432         attached_input_sections_are_sorted_.
2433         * output.cc (Output_section::Output_section): Initialize new
2434         fields.
2435         (Output_section::add_input_section): Add an entry to
2436         input_sections_ if may_sort or must_sort are true.
2437         (Output_section::set_final_data_size): Call
2438         sort_attached_input_sections if necessary.
2439         (Output_section::Input_section_sort_entry): Define new class.
2440         (Output_section::Input_section_sort_compare::operator()): New
2441         function.
2442         (Output_section::sort_attached_input_sections): New function.
2443         * configure.ac: Check whether the compiler supports constructor
2444         priorities.  Define a CONSTRUCTOR_PRIORITY automake conditional.
2445         * testsuite/initpri1.c: New file.
2446         * testsuite/Makefile.am (check_PROGRAMS): Add initpri1 if
2447         CONSTRUCTOR_PRIORITY.
2448         (initpri1_SOURCES, initpri1_DEPENDENCIES): New variables.
2449         (initpri1_LDFLAGS): New variable.
2450         * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
2451
2452 2008-03-27  Ian Lance Taylor  <iant@google.com>
2453
2454         * common.cc (Sort_commons::operator): Correct sorting algorithm.
2455         * testsuite/common_test_1.c: New file.
2456         * testsuite/Makefile.am (check_PROGRAMS): Add common_test_1.
2457         (common_test_1_SOURCES): New variable.
2458         (common_test_1_DEPENDENCIES): New variable.
2459         (common_test_1_LDFLAGS): New variable.
2460
2461         * symtab.cc (Symbol_table::add_from_object): Handle saw_undefined_
2462         and commons_ correctly when NAME/VERSION does not override
2463         NAME/NULL.
2464         * testsuite/ver_test_6.c: New file.
2465         * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_6
2466         (ver_test_6_SOURCES, ver_test_6_DEPENDENCIES): New variables.
2467         (ver_test_6_LDFLAGS, ver_test_6_LDADD): New variables.
2468
2469 2008-03-26  Ian Lance Taylor  <iant@google.com>
2470
2471         * symtab.cc (Symbol_table::add_from_relobj): Don't set the version
2472         of an undefined symbol from a version script.
2473         * testsuite/Makefile.am (ver_test_5.so): New target.
2474         (ver_test_5.o): New target.
2475         (check_SCRIPTS): Add ver_test_5.sh.
2476         (check_DATA): Add ver_test_5.syms.
2477         (ver_test_5.syms): New target.
2478         * testsuite/ver_test_5.cc: New file.
2479         * testsuite/ver_test_5.script: New file.
2480         * testsuite/ver_test_5.sh: New file.
2481         * Makefile.in, testsuite/Makefile.in: Rebuild.
2482
2483         PR gold/5986
2484         Fix problems building gold with gcc 4.3.0.
2485         * gold.h (TEMPLATE_ATTRIBUTE_PRINTF_4): Define.
2486         (gold_error_at_location, gold_warning_at_location): Use it.
2487         * configure.ac: Check whether we can compile and use a template
2488         function with a printf attribute.
2489         * x86_64.cc (Target_x86_64::do_code_fill): Swap out a 32-bit value
2490         when jumping over bytes.
2491         * object.cc: Instantiate Object::read_section_data.
2492         * debug.h: Include <cstring>
2493         * dwarf_reader.cc: Include <algorithm>
2494         * main.cc: Include <cstring>.
2495         * options.cc: Include <cstring>.
2496         * output.cc: Include <cstring>.
2497         * script.cc: Include <cstring>.
2498         * script.h: Include <string>.
2499         * symtab.cc: Include <cstring> and <algorithm>.
2500         * target-select.cc: Include <cstring>.
2501         * version.cc: Include <string>.
2502         * testsuite/testmain.cc: Include <cstdlib>.
2503         * configure, config.in: Rebuild.
2504
2505 2008-03-25  Ian Lance Taylor  <iant@google.com>
2506
2507         * options.cc: Include "../bfd/bfdver.h".
2508         (options::help): Print bug reporting address.
2509
2510         * version.cc (print_version): Adjust output for current value of
2511         BFD_VERSION_STRING.
2512
2513         * NEWS: New file.
2514
2515         * options.cc (options::help): Print list of supported targets.
2516         * target-select.h: Include <vector>.
2517         (class Target_selector): Make machine_, size_, and is_big_endian_
2518         fields const.  Add bfd_name_ and instantiated_target_ fields.
2519         (Target_selector::Target_selector): Add bfd_name parameter.
2520         (Target_selector::recognize): Make non-virtual, call
2521         do_recognize.
2522         (Target_selector::recognize_by_name): Make non-virtual, call
2523         do_recognize_by_name.
2524         (Target_selector::supported_names): New function.
2525         (Target_selector::bfd_name): New function.
2526         (Target_selector::do_instantiate_target): New pure virtual
2527         function.
2528         (Target_selector::do_recognize): New virtual function.
2529         (Target_selector::do_recognize_by_name): New virtual function.
2530         (Target_selector::instantiate_target): New private function.
2531         (supported_target_names): Declare.
2532         * target-select.cc (Target_selector::Target_selector): Update for
2533         new parameter and fields.
2534         (select_target_by_name): Check that the name matches before
2535         calling recognize_by_name.
2536         (supported_target_names): New function.
2537         * i386.cc (class Target_selector_i386): Update Target_selector
2538         constructor call.  Remove recognize and recognize_by_name.  Add
2539         do_instantiate_target.
2540         * x86_64.cc (class Target_selector_x86_64): Likewise.
2541         * testsuite/testfile.cc (class Target_selector_test): Update for
2542         changes to Target_selector.
2543
2544         * README: Rewrite, with some notes on unsupported features.
2545
2546 2008-03-24  Cary Coutant  <ccoutant@google.com>
2547
2548         * i386.cc (Target_i386::Got_type): New enum declaration.
2549         (Target_i386::Scan::local): Updated callers of Output_data_got
2550         member functions.
2551         (Target_i386::Scan::global): Likewise.
2552         (Target_i386::Relocate::relocate): Likewise.
2553         (Target_i386::Relocate::relocate_tls): Likewise.
2554         * object.h (Got_offset_list): New class.
2555         (Sized_relobj::local_has_got_offset): Added got_type parameter.
2556         (Sized_relobj::local_got_offset): Likewise.
2557         (Sized_relobj::set_local_got_offset): Likewise.
2558         (Sized_relobj::local_has_tls_got_offset): Removed.
2559         (Sized_relobj::local_tls_got_offset): Removed.
2560         (Sized_relobj::set_local_tls_got_offset): Removed.
2561         (Sized_relobj::Local_got_offsets): Changed to store a list of offsets.
2562         * output.cc (Output_data_got::add_global): Added got_type parameter.
2563         (Output_data_got::add_global_with_rel): Likewise.
2564         (Output_data_got::add_global_with_rela): Likewise.
2565         (Output_data_got::add_global_pair_with_rel): New function.
2566         (Output_data_got::add_global_pair_with_rela): New function.
2567         (Output_data_got::add_local): Added got_type parameter.
2568         (Output_data_got::add_local_with_rel): Likewise.
2569         (Output_data_got::add_local_with_rela): Likewise.
2570         (Output_data_got::add_local_pair_with_rel): New function.
2571         (Output_data_got::add_local_pair_with_rela): New function.
2572         (Output_data_got::add_global_tls): Removed.
2573         (Output_data_got::add_global_tls_with_rel): Removed.
2574         (Output_data_got::add_global_tls_with_rela): Removed.
2575         (Output_data_got::add_local_tls): Removed.
2576         (Output_data_got::add_local_tls_with_rel): Removed.
2577         (Output_data_got::add_local_tls_with_rela): Removed.
2578         * output.h (Output_data_got::add_global): Added got_type parameter.
2579         (Output_data_got::add_global_with_rel): Likewise.
2580         (Output_data_got::add_global_with_rela): Likewise.
2581         (Output_data_got::add_global_pair_with_rel): New function.
2582         (Output_data_got::add_global_pair_with_rela): New function.
2583         (Output_data_got::add_local): Added got_type parameter.
2584         (Output_data_got::add_local_with_rel): Likewise.
2585         (Output_data_got::add_local_with_rela): Likewise.
2586         (Output_data_got::add_local_pair_with_rel): New function.
2587         (Output_data_got::add_local_pair_with_rela): New function.
2588         (Output_data_got::add_global_tls): Removed.
2589         (Output_data_got::add_global_tls_with_rel): Removed.
2590         (Output_data_got::add_global_tls_with_rela): Removed.
2591         (Output_data_got::add_local_tls): Removed.
2592         (Output_data_got::add_local_tls_with_rel): Removed.
2593         (Output_data_got::add_local_tls_with_rela): Removed.
2594         * resolve.cc (Symbol::override_base_with_special): Removed
2595         reference to has_got_offset_ field.
2596         * symtab.cc (Symbol::init_fields): Replaced initialization
2597         of got_offset_ with got_offsets_.  Removed initialization
2598         of has_got_offset_
2599         * symtab.h (Symbol::has_got_offset): Aded got_type parameter.
2600         (Symbol::got_offset): Likewise.
2601         (Symbol::set_got_offset): Likewise.
2602         (Symbol::has_tls_got_offset): Removed.
2603         (Symbol::tls_got_offset): Removed.
2604         (Symbol::set_tls_got_offset): Removed.
2605         (Symbol::got_offset_): Removed.
2606         (Symbol::tls_mod_got_offset_): Removed.
2607         (Symbol::tls_pair_got_offset_): Removed.
2608         (Symbol::got_offsets_): New field.
2609         (Symbol::has_got_offset): Removed.
2610         (Symbol::has_tls_mod_got_offset): Removed.
2611         (Symbol::has_tls_pair_got_offset): Removed.
2612         * x86_64.cc (Target_x86_64::Got_type): New enum declaration.
2613         (Target_x86_64::Scan::local): Updated callers of Output_data_got
2614         member functions.
2615         (Target_x86_64::Scan::global): Likewise.
2616         (Target_x86_64::Relocate::relocate): Likewise.
2617         (Target_x86_64::Relocate::relocate_tls): Likewise.
2618
2619 2008-03-25  Ben Elliston  <bje@au.ibm.com>
2620
2621         * yyscript.y: Fix spelling error in comment.
2622
2623 2008-03-24  Ian Lance Taylor  <iant@google.com>
2624
2625         * options.h (class General_options): Define build_id option.
2626         * layout.h (class Layout): Declare write_build_id, create_note,
2627         create_build_id.  Add build_id_note_ member.
2628         * layout.cc: Include <cerrno>, <fcntl.h>, <unistd.h>,
2629         "libiberty.h", "md5.h", "sha1.h".
2630         (Layout::Layout): Initialize eh_frame_data_,
2631         eh_frame_hdr_section_, and build_id_note_.
2632         (Layout::finalize): Call create_build_id.
2633         (Layout::create_note): New function, broken out of
2634         Layout::create_gold_note.
2635         (Layout::create_gold_note): Call create_note.
2636         (Layout::create_build_id): New function.
2637         (Layout::write_build_id): New function.
2638         (Close_task_runner::run): Call write_build_id.
2639
2640         * x86_64.cc: Correct license to GPLv3.
2641
2642 2008-03-23  Ian Lance Taylor  <iant@google.com>
2643
2644         * options.cc: Include "demangle.h".
2645         (parse_optional_string): New function.
2646         (parse_long_option): Handle takes_optional_argument.
2647         (parse_short_option): Update dash_z initializer.  Handle
2648         takes_optional_argument.
2649         (General_options::General_options): Initialize do_demangle_.
2650         (General_options::finalize): Set do_demangle_.  Handle demangling
2651         style.
2652         * options.h (parse_optional_string): Declare.
2653         (struct One_option): Add optional_arg field.  Update constructor.
2654         Update call constructor calls.  Add takes_optional_argument
2655         function.
2656         (DEFINE_var): Add optional_arg__ parameter.  Change all callers.
2657         (DEFINE_optional_string): Define.
2658         (General_options::demangle): Change from DEFINE_bool to
2659         DEFINE_optional_string.
2660         (General_options::no_demangle): New function.
2661         (General_options::do_demangle): New function.
2662         (General_options::set_do_demangle): New function.
2663         (General_options::execstack_status_): Move definition to end of
2664         class definition.
2665         (General_options::static_): Likewise.
2666         (General_options::do_demangle_): New field.
2667         * object.cc (big_endian>::get_symbol_location_info): Call
2668         Options::do_demangle, not Options::demangle.
2669         * symtab.cc (demangle): Likewise.
2670
2671 2008-03-22  Ian Lance Taylor  <iant@google.com>
2672
2673         * gold.h: Include <cstddef> and <sys/types.h>
2674         * options.h: Include <cstring>.
2675
2676 2008-03-21  Ian Lance Taylor  <iant@google.com>
2677
2678         * Added source code to GNU binutils.