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