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