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