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