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