* arm.cc (Arm_relocate_functions::movw_prel_nc): New function.
[deliverable/binutils-gdb.git] / gold / ChangeLog
CommitLineData
c2a122b6
ILT
12009-10-09 Viktor Kutuzov <vkutuzov@accesssoftek.com>
2
3 * arm.cc (Arm_relocate_functions::movw_prel_nc): New function.
4 (Arm_relocate_functions::movt_prel): New function.
5 (Arm_relocate_functions::thm_movw_prel_nc): New function.
6 (Arm_relocate_functions::thm_movt_prel): New function.
7 (Scan::local): Handle R_ARM_MOVW_PREL_NC, R_ARM_MOVT_PREL,
8 R_ARM_THM_MOVW_PREL_NC, and R_ARM_THM_MOVT_PREL.
9 (Scan::global, Relocate::relocate): Likewise.
10 (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
11
c4aa1e2d
ILT
122009-10-09 Mikolaj Zalewski <mikolajz@google.com>
13
14 * gold.cc: (queue_initial_tasks): Pass incremental_inputs to
15 Incremental_checker.
16 * incremental.cc: (INCREMENTAL_LINK_VERSION): Change type to
17 unsigned int.
18 (class Incremental_inputs_header): New class.
19 (Incremental_inputs_header_writer): Edit comment.
20 (Incremental_inputs_entry): New class.
21 (Incremental_inputs_entry_writer): Edit comment.
22 (Sized_incremental_binary::do_find_incremental_inputs_section):
23 Add *strtab_shndx parameter, fill it.
24 (Sized_incremental_binary::do_check_inputs): New method.
25 (Incremental_checker::can_incrementally_link_output_file): Use
26 Sized_incremental_binary::check_inputs.
27 (Incremental_inputs::report_command_line): Save command line in
28 command_line_.
29 * incremental.h:
30 (Incremental_binary::find_incremental_inputs_section): New
31 method.
32 (Incremental_binary::do_find_incremental_inputs_section): Add
33 strtab_shndx parameter.
34 (Incremental_binary::do_check_inputs): New pure virtual method.
35 (Sized_incremental_binary::do_check_inputs): Declare.
36 (Incremental_checker::Incremental_checker): Add incremental_inputs
37 parameter, use it to initialize incremental_inputs_.
38 (Incremental_checker::incremental_inputs_): New field.
39 (Incremental_checker::command_line): New method.
40 (Incremental_checker::inputs): New method.
41 (Incremental_checker::command_line_): New field.
42
c549a694
ILT
432009-10-09 Mikolaj Zalewski <mikolajz@google.com>
44
45 * incremental.cc: Include <cstdarg> and "target-select.h".
46 (vexplain_no_incremental): New function.
47 (explain_no_incremental): New function.
48 (Incremental_binary::error): New method.
49 (Sized_incremental_binary::do_find_incremental_inputs_section): New
50 method.
51 (make_sized_incremental_binary): New function.
52 (open_incremental_binary): New function.
53 (can_incrementally_link_file): Add checks if output is ELF and has
54 inputs section.
55 * incremental.h: Include "elfcpp_file.h" and "output.h".
56 (Incremental_binary): New class.
57 (Sized_incremental_binary): New class.
58 (open_incremental_binary): Declare.
59 * object.cc (is_elf_object): Use
60 elfcpp::Elf_recognizer::is_elf_file.
61 (make_elf_object): Use elfcpp::Elf_recognizer::is_valid_header.
62 * output.h (Output_file::filesize): New method.
63
fd3c5f0b
ILT
642009-10-07 Viktor Kutuzov <vkutuzov@accesssoftek.com>
65
66 * arm.cc (Arm_relocate_functions::extract_arm_movw_movt_addend):
67 New function.
68 (Arm_relocate_functions::insert_val_arm_movw_movt): New function.
69 (Arm_relocate_functions::extract_thumb_movw_movt_addend): New
70 function.
71 (Arm_relocate_functions::insert_val_thumb_movw_movt): New
72 function.
73 (Arm_relocate_functions::movw_abs_nc): New function.
74 (Arm_relocate_functions::movt_abs): New function.
75 (Arm_relocate_functions::thm_movw_abs_nc): New function.
76 (Arm_relocate_functions::thm_movt_abs): New function.
77 (Scan::local): Handle R_ARM_MOVW_ABS_NC, R_ARM_MOVT_ABS,
78 R_ARM_THM_MOVW_ABS_NC, R_ARM_THM_MOVT_ABS.
79 (Scan::global): Likewise.
80 (Relocate::relocate): Likewise.
81 (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
82
7f5309a5
ILT
832009-10-07 Viktor Kutuzov <vkutuzov@accesssoftek.com>
84
85 * arm.cc (Arm_relocate_functions::got_prel) New function.
86 (Scan::local, Scan::global): Handle R_ARM_GOT_PREL.
87 (Relocate::relocate): Likewise.
88 (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
89
364c7fa5
ILT
902009-10-06 Ian Lance Taylor <iant@google.com>
91
92 * options.h (class General_options): Define
93 split_stack_adjust_size parameter.
94 * object.h (class Object): Add uses_split_stack_ and
95 has_no_split_stack_ fields. Add uses_split_stack and
96 has_no_split_stack accessor functions. Declare
97 handle_split_stack_section.
98 (class Reloc_symbol_changes): Define.
99 (class Sized_relobj): Define Function_offsets. Declare
100 split_stack_adjust, split_stack_adjust_reltype, and
101 find_functions.
102 * object.cc (Object::handle_split_stack_section): New function.
103 (Sized_relobj::do_layout): Call handle_split_stack_section.
104 * dynobj.cc (Sized_dynobj::do_layout): Call
105 handle_split_stack_section.
106 * reloc.cc (Sized_relobj::relocate_sections): Call
107 split_stack_adjust for executable sections in split_stack
108 objects. Pass reloc_map to relocate_section.
109 (Sized_relobj::split_stack_adjust): New function.
110 (Sized_relobj::split_stack_adjust_reltype): New function.
111 (Sized_relobj::find_functions): New function.
112 * target-reloc.h: Include "object.h".
113 (relocate_section): Add reloc_symbol_changes parameter. Change
114 all callers.
115 * target.h (class Target): Add calls_non_split method. Declare
116 do_calls_non_split virtual method. Declare match_view and
117 set_view_to_nop.
118 * target.cc: Include "elfcpp.h".
119 (Target::do_calls_non_split): New function.
120 (Target::match_view): New function.
121 (Target::set_view_to_nop): New function.
122 * gold.cc (queue_middle_tasks): Give an error if mixing
123 split-stack and non-split-stack objects with -r.
124 * i386.cc (Target_i386::relocate_section): Add
125 reloc_symbol_changes parameter.
126 (Target_i386::do_calls_non_split): New function.
127 * x86_64.cc (Target_x86_64::relocate_section): Add
128 reloc_symbol_changes parameter.
129 (Target_x86_64::do_calls_non_split): New function.
130 * arm.cc (Target_arm::relocate_section): Add reloc_symbol_changes
131 parameter.
132 * powerpc.cc (Target_powerpc::relocate_section): Add
133 reloc_symbol_changes parameter.
134 * sparc.cc (Target_sparc::relocate_section): Add
135 reloc_symbol_changes parameter.
136 * configure.ac: Call AM_CONDITIONAL for the default target.
137 * configure: Rebuild.
138 * testsuite/Makefile.am (TEST_AS): New variable.
139 (check_SCRIPTS): Add split_i386.sh and split_x86_64.sh.
140 (check_DATA): Add split_i386 and split_x86_64 files.
141 (SPLIT_DEFSYMS): Define.
142 (split_i386_[1234n].o): New targets.
143 (split_i386_[124]): New targets.
144 (split_i386_[1234r].stdout): New targets.
145 (split_x86_64_[1234n].o): New targets.
146 (split_x86_64_[124]): New targets.
147 (split_x86_64_[1234r].stdout): New targets.
148 (MOSTLYCLEANFILES): Add new executables.
149 * testsuite/split_i386.sh: New file.
150 * testsuite/split_x86_64.sh: New file.
151 * testsuite/split_i386_1.s: New file.
152 * testsuite/split_i386_2.s: New file.
153 * testsuite/split_i386_3.s: New file.
154 * testsuite/split_i386_4.s: New file.
155 * testsuite/split_i386_n.s: New file.
156 * testsuite/split_x86_64_1.s: New file.
157 * testsuite/split_x86_64_2.s: New file.
158 * testsuite/split_x86_64_3.s: New file.
159 * testsuite/split_x86_64_4.s: New file.
160 * testsuite/split_x86_64_n.s: New file.
161 * testsuite/testfile.cc (Target_test): Update relocation_section
162 function.
163 * testsuite/Makefile.in: Rebuild.
164
e8a9fcda
ILT
1652009-10-06 Ian Lance Taylor <iant@google.com>
166
167 * i386.cc (class Target_i386::Relocate): Add ldo_addrs_ field.
168 (Target_i386::Relocate::relocate_tls): Call fix_up_ldo before
169 changing local_dynamic_type_ from LOCAL_DYNAMIC_NONE. When
170 handling R_386_TLS_LDO_32, if local_dynamic_type_ is NONE, push
171 the address on ldo_addrs_.
172 (Target_i386::Relocate::fix_up_ldo): New function.
173
e99daf92
ILT
1742009-10-06 Rafael Espindola <espindola@google.com>
175
176 * plugin.cc (add_input_library): New.
177 (Plugin::load): Add add_input_library to tv.
178 (Plugin_manager::add_input_file): Add the is_lib argument.
179 (add_input_file): Update call to Plugin_manager::add_input_file.
180 (add_input_library): New.
181 * plugin.h (Plugin_manager::add_input_file): Add the is_lib argument.
182
966d4097
DK
1832009-09-30 Doug Kwan <dougkwan@google.com>
184
185 * arm.cc (Target_arm::may_need_copy_reloc): Check for THUMB function
186 symbol and call Symbol::may_need_copy_reloc to determine if
187 a copy reloc is needed.
188 * copy-relocs.cc (Copy_relocs::need_copy_reloc): Return false if -z
189 nocopyreloc is given in command line.
190 (Copy_relocs::emit_copy_reloc): Assert that -z nocopyreloc is not
191 given in command line.
192 * i386.cc (Target_i386::may_need_copy_reloc): Remove.
193 (Target_i386::Scan::global): Use Symbol::may_need_copy_reloc instead
194 of the removed Target_i386::may_need_copy_reloc.
195 * options.h (copyreloc): New option with default value false.
196 * powerpc.cc (Target_powerpc::may_need_copy_reloc): Remove.
197 (Target_powerpc::Scan::global): Use Symbol::may_need_copy_reloc
198 instead of the removed Target_powerpc::may_need_copy_reloc.
199 * sparc.cc (Target_powerpc::may_need_copy_reloc): Remove.
200 (Target_sparc::Scan::global): Use Symbol::may_need_copy_reloc
201 instead of the removed Target_sparc::may_need_copy_reloc.
202 * symtab.h (Symbol::may_need_copy_reloc): New method definition.
203 * x86_64.cc (Target_powerpc::may_need_copy_reloc): Remove.
204 (Target_x86_64::Scan::global): Use Symbol::may_need_copy_reloc
205 instead of the removed Target_x86_64::may_need_copy_reloc.
206
029ba973
ILT
2072009-09-30 Ian Lance Taylor <iant@google.com>
208
209 * object.h (class Object): Remove target_ field, and target,
210 sized_target, and set_target methods.
211 (Object::sized_target): Remove.
212 (class Sized_relobj): Update declarations. Remove sized_target.
213 * object.cc (Sized_relobj::setup): Remove target parameter.
214 Change all callers.
215 (Input_objects::add_object): Don't do anything with the target.
216 (make_elf_sized_object): Add punconfigured parameter. Change all
217 callers. Set or test parameter target.
218 * dynobj.cc (Sized_dynobj::target): Remove target parameter.
219 Change all callers.
220 * parameters.cc (Parameters::set_target): Change parameter type to
221 be non-const.
222 (Parameters::default_target): Remove.
223 (set_parameters_target): Change parameter type to be non-const.
224 (parameters_force_valid_target): New function.
225 (parameters_clear_target): New function.
226 * parameters.h (class Parameters): Update declarations. Remove
227 default_target method. Add sized_target and clear_target
228 methods. Change target_ to be non-const.
229 (set_parameters_target): Update declaration.
230 (parameters_force_valid_target): Declare.
231 (parameters_clear_target): Declare.
232 * readsyms.cc (Read_symbols::do_read_symbols): Pass punconfigured
233 as NULL if we aren't searching.
234 (Add_symbols::run): Don't check for compatible target.
235 * fileread.cc (Input_file::open_binary): Call
236 parameters_force_valid_target.
237 * gold.cc (queue_middle_tasks): Likewise.
238 * plugin.cc (make_sized_plugin_object): Likewise. Don't call
239 set_target on object.
240 * dynobj.h (class Sized_dynobj): Update declarations.
241 * archive.cc (Archive::get_elf_object_for_member): Return NULL if
242 make_elf_object returns NULL.
243 (Archive::include_member): Don't check whether object target is
244 compatible.
245 * output.cc (Output_section::add_input_section): Get target from
246 parameters.
247 (Output_section::relax_input_section): Likewise.
248 * reloc.cc (Sized_relobj::do_gc_process_relocs): Get target from
249 parameters.
250 (Sized_relobj::do_scan_relocs): Likewise.
251 (Sized_relobj::relocate_sections): Likewise.
252 * resolve.cc (Symbol_table::resolve): Likewise.
253 * symtab.cc (Symbol_table::wrap_symbol): Likewise. Remove object
254 parameter. Change all callers.
255 (Symbol_table::add_from_object): Get target from parameters.
256 (Symbol_table::add_from_relobj): Don't check object target.
257 (Symbol_table::add_from_dynobj): Likewise.
258 (Symbol_table::define_special_symbol): Get target from
259 parameters.
260 * symtab.h (class Symbol_table): Update declaration.
261 * testsuite/binary_unittest.cc (gold_testsuite): Remove target
262 parameter. Change all callers. Clear parameter target.
263 (Binary_test): Test target here.
264 * testsuite/object_unittest.cc (gold_testsuite): Remove
265 target_test_pointer parameter. Change all callers.
266 (Object_test): Test target here.
267
a6a22b83
ILT
2682009-09-26 Ian Lance Taylor <iant@google.com>
269
270 * testsuite/initpri1.c: Don't try to use constructor priorities if
271 compiling with gcc before 4.3.
272
6a8f49fe
ILT
2732009-09-22 Mikolaj Zalewski <mikolajz@google.com>
274
275 * testsuite/retain_symbols_file_test.sh (check_present): Change
276 output file name to retain_symbols_file_test.stdout.
277 (check_absent): Likewise.
278
8c604651
CS
2792009-09-18 Craig Silverstein <csilvers@google.com>
280
281 * object.cc (Sized_relobj::do_count): Test should_retain_symbol map.
282 * options.cc: Include <cerrno> and <fstream>.
283 (General_options::finalize): Parse -retain-symbols-file tag.
284 * options.h: New flag.
285 (General_options): New method should_retain_symbol, new
286 variable symbols_to_retain.
287 * symtab.cc (Symbol_table::sized_finalize_symbol): Test
288 should_retain_symbol map.
289 * testsuite/Makefile.am (retain_symbols_file_test): New test.
290 * testsuite/Makefile.in: Regenerate.
291 * testsuite/retain_symbols_file_test.sh: New file.
292
ca58b19f
NC
2932009-09-18 Nick Clifton <nickc@redhat.com>
294
295 * po/es.po: Updated Spanish translation.
296
20e6d0d6
DK
2972009-09-17 Doug Kwan <dougkwan@google.com>
298
299 * debug.h (DEBUG_RELAXATION): New constant.
300 (DEBUG_ALL): Add DEBUG_RELAXATION.
301 (debug_string_to_enum): Add relaxation debug option.
302 * layout.cc
303 (Layout::Relaxation_debug_check::check_output_data_for_reset_values,
304 Layout::Relaxation_debug_check::read_sections,
305 Layout::Relaxation_debug_check::read_sections): New method definitions.
306 (Layout::Layout): Initialize data members
307 record_output_section_data_from_scrips_,
308 script_output_section_data_list_ and relaxation_debug_check_.
309 (Layout::save_segments, Layout::restore_segments,
310 Layout::clean_up_after_relaxation, Layout::prepare_for_relaxation,
311 Layout::relaxation_loop_body): New method definitions.
312 (Layout::finalize): Support relaxation. Move section layout code to
313 Layout::relaxation_loop_body.
314 (Layout::set_asection_address_from_script): Move code for orphan
315 section placement out.
316 (Layout::place_orphan_sections_in_script): New method definition.
317 * layout.h (Output_segment_headers, Output_file_header):
318 New forward class declarations.
319 (Layout::~Layout): Define.
320 (Layout::new_output_section_data_from_script): New method definition.
321 (Layout::place_orphan_sections_in_script): New method declaration.
322 (Layout::Segment_states): New type declaration.
323 (Layout::save_segments, Layout::restore_segments,
324 Layout::clean_up_after_relaxation, Layout::prepare_for_relaxation,
325 Layout::relaxation_loop_body): New method declarations.
326 (Layout::Output_section_data_list): New type declaration.
327 (Layout::Relaxation_debug_check): New class definition.
328 (Layout::record_output_section_data_from_script_,
329 Layout::script_output_section_data_list_, Layout::segment_states_,
330 Layout::relaxation_debug_check_): New data members.
331 * output.cc: (Output_section_headers::do_size): New method definition.
332 (Output_section_headers::Output_section_headers): Move size
333 computation to Output_section_headers::do_size.
334 (Output_segment_headers::do_size): New method definition.
335 (Output_file_header::Output_file_header): Move size computation to
336 Output_file_header::do_size and call it.
337 (Output_file_header::do_size): New method definition.
338 (Output_data_group::Output_data_group): Adjust call to
339 Output_section_data.
340 (Output_data_dynamic::set_final_data_size): Add DT_NULL tag only once.
341 (Output_symtab_xindex::do_write): Add array bound check.
342 (Output_section::Input_section::print_to_mapfile): Handle
343 RELAXED_INPUT_SECTION_CODE.
344 (Output_section::Output_section): Initialize data member checkpoint_.
345 (Output_section::~Output_section): Delete checkpoint object pointed
346 by checkpoint_.
347 (Output_section::add_input_section): Always add an Input_section if
348 relaxing.
349 (Output_section::add_merge_input_section): Add assert.
350 (Output_section::relax_input_section): New method definition.
351 (Output_section::set_final_data_size): Set load address to zero for
352 an unallocated section.
353 (Output_section::do_address_and_file_offset_have_reset_values):
354 New method definition.
355 (Output_section::Input_section_sort_enty::Input_section_sort_enty):
356 Handle relaxed input section.
357 (Output_section::sort_attached_input_sections): Checkpoint input
358 section list lazily.
359 (Output_section::get_input_sections): Change type of input_sections to
360 list of Simple_input_section pointers. Checkpoint input section list
361 lazily. Also handle relaxed input sections.
362 (Output_section::add_input_section_for_script): Take a reference to
363 a Simple_input_section object instead of Relobj pointer and section
364 index as parameter. Handle relaxed input sections.
365 (Output_section::save_states, Output_section::restore_states): New
366 method definitions.
367 * output.h (Output_data::Output_data): Initialize is_data_size_fixed_.
368 (Output_data::is_data_size_fixed): New method definition.
369 (Output_data::reset_addresss_and_file_offset): Do not reset data size
370 if it is fixed.
371 (Output_data::address_and_file_offset_have_reset_values): New method
372 definition.
373 (Output_data::do_address_and_file_offset_have_reset_values): New method
374 definition.
375 (Output_data::set_data_size): Check that data size is not fixed.
376 (Output_data::fix_data_size): New method definition.
377 (Output_data::is_data_size_fixed_): New data member.
378 (Output_section_headers::set_final_data_size): New method definition.
379 (Output_section_headers::do_size): New method declaration.
380 (Output_segment_headers::set_final_data_size): New method definition.
381 (Output_segment_headers::do_size): New method declaration.
382 (Output_file_header::set_final_data_size)::New method definition.
383 (Output_file_header::do_size)::New method declaration.
384 (Output_section_data::Output_section_data): Add new parameter
385 is_data_size_fixed and use it to fix data size.
386 (Output_data_const::Output_data_const): Adjust call to base class
387 constructor and fix data size.
388 (Output_data_const_buffer::Output_data_const_buffer): Adjust call to
389 base class constructor and fix data size.
390 (Output_data_fixed_space::Output_data_fixed_space): Adjust call to
391 base class constructor and fix data size.
392 (Output_data_zero_fill::Output_data_zero_fill): Adjust call to base
393 class constructor and fix data size.
394 (Output_data_group::set_final_data_size): New method definition.
395 (Output_data_dynamic::Dynamic_entry::tag): New method definition.
396 (Output_symtab_xindex::Output_symtab_xindex): Adjust call to base
397 class constructor and fix data size.
398 (Output_relaxed_input_section): New class definition.
399 (Output_section::Simple_input_section): New class definition.
400 (Output_section::get_input_sections): Adjust parameter list.
401 (Output_section::add_input_section_for_script): Same.
402 (Output_section::save_states, Output_section::restore_states,
403 Output_section::do_address_and_file_offset_have_reset_values,
404 (Output_section::Input_section::Input_section): Handle
405 RELAXED_INPUT_SECTION_CODE. Add new overload for
406 Output_relaxed_input_section.
407 (Output_section::Input_section::is_input_section,
408 Output_section::Input_section::set_output_section): Handle relaxed
409 input section.
410 (Output_section::Input_section::is_relaxed_input_section,
411 Output_section::Input_section::output_section_data,
412 Output_section::Input_section::relaxed_input_section): New method
413 definitions.
414 (Output_section::Input_section::RELAXED_INPUT_SECTION_CODE): New enum
415 value.
416 (Output_section::Input_section::u1_): Update comments.
417 (Output_section::Input_section::u2_): Add new union member poris.
418 (Output_section::Checkpoint_output_section): New classs definition.
419 (Output_section::relax_input_section): New method declaration.
420 (Output_section::checkpoint_): New data member.
421 (Output_segment): Update comments.
422 (Output_segment::Output_segment): Un-privatize copy constructor.
423 (Output_segment::operator=): Un-privatize.
424 * script-sections.cc (Output_section_element::Input_section_list):
425 Change element type to Output_section::Simple_input_section.
426 (Output_section_element_dot_assignment::set_section_addresses):
427 Register output section data for relaxation clean up.
428 (Output_data_exression::Output_data_expression): Adjust call to base
429 constructor to fix data size.
430 (Output_section_element_data::set_section_addresses): Register
431 Output_data_expression object for relaxation clean up.
432 (struct Input_section_info): Replace Relobj pointer and section index
433 pair with Output_section::Simple_input_section and Convert struct to a
434 class.
435 (Input_section_sorter::operator()): Adjust access to
436 Input_section_info data member to use accessors.
437 (Output_section_element_input::set_section_addresses): Use layout
438 parameter. Adjust code to use Output_section::Simple_input_section
439 and Input_secction_info classes. Register filler for relaxation
440 clean up.
441 (Orphan_output_section::set_section_addresses): Replace Relobj pointer
442 and section index pair with Output_section::Simple_input_section
443 class. Adjust code accordingly.
444 (Phdrs_element::release_segment): New method definition.
445 (Script_sections::attach_sections_using_phdrs_clause): Do not modify
446 segment list.
447 (Script_sections::release_segments): New method definition.
448 * gold/script-sections.h (Script_sections::release_segments): New
449 method declaration.
450 * gold/target.h (Target::may_relax, Target::relax,
451 Target::do_may_relax, Target::do_relax): New method definitions.
452
5e445df6
ILT
4532009-09-17 Viktor Kutuzov <vkutuzov@accesssoftek.com>
454
455 * arm.cc (has_signed_unsigned_overflow): New function.
456 (Arm_relocate_functions::abs8): New function.
457 (Target_arm::Scan::local): Handle R_ARM_ABS8.
458 (Target_arm::Scan::global): Likewise.
459 (Target_arm::relocate::relocate): Likewise.
460 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
461 Likewise.
462
8c604651 4632009-09-16 Cary Coutant <ccoutant@google.com>
72fef11a
CC
464
465 * testsuite/Makefile.am (MOSTLYCLEANFILES): Add more generated files.
466 * testsuite/Makefile.in: Regenerate.
467
1e9cc1c2
NC
4682009-09-11 Nick Clifton <nickc@redhat.com>
469
470 * po/gold.pot: Updated by the Translation project.
471
6a89f575
CC
4722009-09-08 Cary Coutant <ccoutant@google.com>
473
474 * output.cc (Output_file::open): Add execute permission to empty file.
475 * testsuite/Makefile.am (permission_test): New test.
476 * testsuite/Makefile.in: Regenerate.
477
fdcac5af
ILT
4782009-09-02 Ian Lance Taylor <iant@google.com>
479
480 * output.cc (Output_file::resize): Call map_no_anonymous rather
481 than map.
482
44453f85
ILT
4832009-09-01 Mikolaj Zalewski <mikolajz@google.com>
484
485 * gold.cc: Include "incremental.h".
486 (queue_initial_tasks): Call Incremental_checker methods.
487 * incremental.cc: Include "output.h".
488 (Incremental_checker::can_incrementally_link_output_file): New
489 method.
490 * incremental.h (Incremental_checker): New class.
491
492 * output.cc (Output_file::open_for_modification): New method.
493 (Output_file::map_anonymous): Changed return type to bool. Record
494 map in base_ field.
495 (Output_file::map_no_anonymous): New method, broken out of map.
496 (Output_file::map): Use map_no_anonymous and map_anonymous.
497 * output.h (class Output_file): Update declarations.
498
293c1386
CC
4992009-08-24 Cary Coutant <ccoutant@google.com>
500
501 * options.h (Command_line::Pre_options): New class.
502 (Command_line::pre_options): New member.
503 * options.cc (gold::options::ready_to_register): New variable.
504 (One_option::register_option): Do nothing if not registering options.
505 Assert if same short option registered twice.
506 (General_options::General_options): Turn off option registration when
507 done constructing.
508 (Command_line::Pre_options::Pre_options): New constructor.
509
f773f3d2
CC
5102009-08-24 Cary Coutant <ccoutant@google.com>
511
06a73cfe
CC
512 * options.h (General_options::no_keep_memory): Remove incorrect
513 short option.
f773f3d2 514
a15af8e2
RW
5152009-08-24 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
516
517 * Makefile.am (am__skiplex, am__skipyacc): New.
518 * Makefile.in: Regenerate.
519
c462b41b
RW
5202009-08-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
521
14ec8efd
RW
522 * Makefile.am (AM_CPPFLAGS): Renamed from ...
523 (INCLUDES): ... this.
524 * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add -Wno-portability.
525 (AM_CPPFLAGS): Renamed from ...
526 (INCLUDE): ... this.
527 * Makefile.in, testsuite/Makefile.in: Regenerate.
528
81ecdfbb
RW
529 * Makefile.in: Regenerate.
530 * aclocal.m4: Likewise.
531 * config.in: Likewise.
532 * configure: Likewise.
533 * testsuite/Makefile.in: Likewise.
534
c462b41b
RW
535 * Makefile.am (AUTOMAKE_OPTIONS): Add foreign.
536 * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add foreign.
537 * Makefile.in: Regenerate.
538 * testsuite/Makefile.in: Regenerate.
539
2da73f13
CC
5402009-08-19 Cary Coutant <ccoutant@google.com>
541
542 * resolve.cc (Symbol_table::resolve): Don't complain about defined
543 symbols in shared libraries overridden by hidden or internal symbols
544 in the main program.
545
2db70501
CD
5462009-08-19 Chris Demetriou <cgd@google.com>
547
548 * testsuite/debug_msg.sh: Match .* rather than ${srcdir} when
549 checking source file names in error messages.
550
f733487b
DK
5512009-08-18 Doug Kwan <dougkwan@google.com>
552
553 * dynobj.cc (Sized_dynobj::setup): Take a Target object instead of
554 an elcpp::Ehdr as parameter. Adjust call to set_target.
555 * dynobj.h (Sized_dynobj::setup): Take a Target object instead of
556 an elfcpp::Ehdr as parameter.
557 * object.cc (Object::set_target): Remove the version that looks up
558 a target and sets it.
559 (Sized_relobj::setup): Take a Target object instead of
560 an elfcpp::Ehdr as parameter. Adjust call to set_target.
561 (make_elf_sized_object): Find target and ask target to
562 make an ELF object.
563 * object.h: (Object::set_target): Remove the version that looks up
564 a target and sets it.
565 (Sized_relobj::setup): Take a Target object instead of
566 an elfcpp:Ehdr as parameter.
567 * target.cc: Include dynobj.h.
568 (Target::do_make_elf_object_implementation): New.
569 (Target::do_make_elf_object): New.
570 * target.h (Target::make_elf_object): New template declaration.
571 (Target::do_make_elf_object): New method declarations.
572 (Target::do_make_elf_object_implementation): New template declaration.
573
cc70f101
ILT
5742009-08-14 Ian Lance Taylor <iant@google.com>
575
576 * gold.h (FUNCTION_NAME): Define.
577 (gold_unreachable): Use FUNCTION_NAME.
578
ef5e0cb1
ST
5792009-08-12 Sriraman Tallam <tmsriram@google.com>
580
581 * icf.cc (Icf::find_identical_sections): Issue a warning when a
582 symbol in the --keep-unique list is not found.
583
48c187ce
ST
5842009-08-12 Sriraman Tallam <tmsriram@google.com>
585
586 * icf.cc (Icf::find_identical_sections): Unfold symbols that have
587 been maked as --keep-unique.
588 (Icf::unfold_section): New function.
589 * icf.h (Icf::unfold_section): New function.
590 * options.h (General_options::keep_unique): New option.
591 * testsuite/Makefile.am: Add commands to build icf_keep_unique_test.
592 * testsuite/Makefile.in: Regenerate.
593 * testsuite/icf_keep_unique_test.sh: New file.
594 * testsuite/icf_keep_unique_test.cc: New file.
595
645afe0c
CC
5962009-08-12 Cary Coutant <ccoutant@google.com>
597
598 PR 10471
599 * resolve.cc (Symbol_table::resolve): Check for references from
600 dynamic objects to hidden and internal symbols.
601 * testsuite/Makefile.am (hidden_test.sh): New test.
602 * testsuite/Makefile.in: Regenerate.
603 * testsuite/hidden_test.sh: New script.
604 * testsuite/hidden_test_1.c: New test source.
605 * testsuite/hidden_test_main.c: New test source.
606
11af873f
DK
6072009-08-11 Doug Kwan <dougkwan@google.com>
608
609 * arm.cc: Update comments.
610 (Target_arm::do_finalize_sections): Add a special PT_ARM_EXIDX
611 segment to locate the .ARM.exidx section if present.
612
b9f7d72d
DK
6132009-08-09 Doug Kwan <dougkwan@google.com>
614
615 * dynobj.h (Sized_dynobj::do_section_entsize): Revert the previous
616 patch.
617
ddd3c53c
ST
6182009-08-07 Sriraman Tallam <tmsriram@google.com>
619 * dynobj.h (Sized_dynobj::do_section_entsize): Add return to avoid
620 compiler warnings.
621
27721062
ST
6222009-08-06 Sriraman Tallam <tmsriram@google.com>
623
624 * x86_64.cc (Target_x86_64::Relocate::relocate_tls): Check for a
625 valid tls_segment only for non-debug-section relocations.
626 * testsuite/Makefile.am: Add gc_tls_test.
627 * testsuite/Makefile.in: Regenerate.
628 * testsuite/gc_tls_test.cc: New file.
629 * testsuite/gc_tls_test.sh: New file.
630
ef15dade
ST
6312009-08-05 Sriraman Tallam <tmsriram@google.com>
632
633 * icf.cc: New file.
634 * icf.h: New file.
635 * Makefile.am (CCFILES): Add icf.cc.
636 (HFILES): Add icf.h
637 * Makefile.in: Regenerate.
638 * dynobj.h (Sized_dynobj::do_section_entsize): New function.
639 * gc.h (gc_process_relocs): Populate lists used by icf to contain
640 section, symbol and addend information for the relocs.
641 * gold.cc (queue_middle_tasks): Call identical code folding.
642 * gold.h: Add defines for multimap.
643 * layout.cc (Layout::create_symtab_sections): Add symtab as parameter
644 to the call of finalize_local_symbols.
645 * main.cc (main): Create object of class Icf.
646 * object.cc (Sized_relobj::do_layout): Allow this function to be
647 called twice during icf.
648 (Sized_relobj::do_finalize_local_symbols): Fold symbols corresponding
649 to sections marked as identical by icf.
650 (Sized_relobj::do_section_flags): Get section_flags from Symbols_data
651 when available.
652 (Sized_relobj::do_section_entsize): New function.
653 * object.h (Object::section_entsize): New function.
654 (Object::do_section_entsize): New pure virtual function.
655 (Relobj::finalize_local_symbols): Add new parameter.
656 (Relobj::do_section_entsize): New function.
657 * options.h (General_options::icf): New option.
658 (General_options::icf_iterations): New option.
659 (General_options::print_icf_sections): New option.
660 * plugin.cc (Sized_pluginobj::do_section_entsize): New function.
661 * plugin.h (Sized_pluginobj::do_section_entsize): New function.
662 * reloc.cc (Read_relocs::run): Delay scanning relocs when doing
663 icf.
664 * symtab.cc (Symbol_table::is_section_folded): New function.
665 (Symbol_table::sized_finalize_symbol): Fold symbols corresponding
666 to sections marked as identical by icf.
667 * symtab.h (Symbol_table::set_icf): New function.
668 (Symbol_table::icf): New function.
669 (Symbol_table::is_section_folded): New function.
670 (Symbol_table::icf_): New data member.
671 * target-reloc.h (relocate_section): Ignore sections folded by icf.
672 * testsuite/Makefile.am: Add commands to build icf_test.
673 * testsuite/Makefile.in: Regenerate.
674 * testsuite/icf_test.sh: New file.
675 * testsuite/icf_test.cc: New file.
676
c3b65ac4
CD
6772009-07-24 Chris Demetriou <cgd@google.com>
678
679 * layout.cc (is_compressible_debug_section): Fix incorrect
680 comment about compressed section names.
681
1caf2c51
ILT
6822009-07-20 Ian Lance Taylor <ian@airs.com>
683
684 PR 10419
685 * x86_64.cc (Target_x86_64::do_code_fill): Correct nop sequences.
686
1ef4d87f
ILT
6872009-07-16 Ian Lance Taylor <iant@google.com>
688
689 PR 10400
690 * layout.h: #include <map>.
691 (class Kept_section): Change from struct to class. Add accessors
692 and setters. Add section size to Comdat_group mapping. Change
693 Comdat_group to std::map. Add is_comdat_ field. Add
694 linkonce_size field in union.
695 (class Layout): Update declaration of find_or_add_kept_section.
696 Don't declare find_kept_object.
697 * layout.cc (Layout::find_or_add_kept_section): Remove candidate
698 parameter. Add object, shndx, is_comdat, and is_group_name
699 parameters. Change all callers. Adjust for new Kept_section.
700 (Layout::find_kept_object): Remove.
701 * object.cc (Sized_relobj::include_section_group): Update use of
702 Kept_section. Rename secnum to shndx. Only record
703 Kept_comdat_section if sections are the same size.
704 (Sized_relobj::include_linkonce_section): Update use of
705 Kept_section. Only record Kept_comdat_section if sections are the
706 same size. Set size of linkonce section.
707 (Sized_relobj::map_to_kept_section): Update call to
708 get_kept_comdat_section.
709 * object.h (class Sized_relobj): Rename fields in
710 Kept_comdat_section to drop trailing underscores; change object
711 field to Relobj*. Change Kept_comdat_section_table to store
712 struct rather than pointer.
713 (Sized_relobj::set_kept_comdat_section): Remove kept parameter.
714 Add kept_object and kept_shndx parameters. Change all callers.
715 (Sized_relobj::get_kept_comdat_section): Change return type to
716 bool. Add kept_object and kept_shndx parameters. Change all
717 callers.
718 * plugin.cc (Pluginobj::include_comdat_group): Update call to
719 Layout::find_or_add_kept_section.
720
37c3b7b0
ILT
7212009-07-09 Ian Lance Taylor <iant@google.com>
722
723 * merge.cc (Object_merge_map::initialize_input_to_output_map):
724 Reserve space in the hash table.
725
98fa85cb
ILT
7262009-07-06 Mikolaj Zalewski <mikolajz@google.com>
727
728 * fileread.cc (File_read::get_mtime): New method.
729 * fileread.h (Timespec): New structure.
730 (File_read::get_mtime): New method.
731 * incremental.cc (Incremental_inputs_entry_data::timestamp_usec):
732 Renamed from timestamp_nsec.
733 (Incremental_inputs_entry_write::timestamp_sec): Fix argument to
734 Elf_Xword.
735 (Incremental_inputs_entry_write::timestamp_usec): Renamed from
736 timestamp_nsec.
737 (Incremental_inputs::report_archive): Save mtime; style fix.
738 (Incremental_inputs::report_obejct): Save mtime; style fix.
739 (Incremental_inputs::report_script): Save mtime; style fix.
740 (Incremental_inputs::finalize_inputs): Style fix.
741 (Incremental_inputs::finalize): Style fix.
742 (Incremental_inputs::create_input_section_data): Store inputs
743 mtime.
744 * incremental.h (Incremental_inputs::report_script): Add mtime
745 argument.
746 (Incremental_inputs::Input_info::Input_info): Intialize only one
747 union member.
748 (Incremental_inputs::Input_info::archive): Move to nameless
749 union.
750 (Incremental_inputs::Input_info::obejct): Move to nameless union.
751 (Incremental_inputs::Input_info::script): Move to nameless union.
752 (Incremental_inputs::mtime): New field.
753 * script.cc (read_input_script): Pass file mtime to
754 Incremental_input.
755 * script.h (Script_info::inputs): Style fix.
756
c9d70757
ILT
7572009-07-01 Ian Lance Taylor <ian@airs.com>
758
759 * freebsd.h (Target_freebsd::do_adjust_elf_header): Use size
760 instead of 32.
761
9c547ec3
ILT
7622009-06-24 Ian Lance Taylor <iant@google.com>
763
764 PR 10156
765 * layout.cc (Layout::choose_output_section): If we find an
766 existing section, update the flags.
767 (Layout::create_notes): New function, broken out of
768 Layout::finalize.
769 (Layout::finalize): Don't create note sections.
770 (Layout::create_note): Don't crash if linker script discards
771 section.
772 (Layout::create_gold_note): Likewise.
773 (Layout::create_build_id): Likewise. Don't set
774 after_input_sections on the section.
775 (Layout::create_executable_stack_info): Remove target parameter.
776 Change caller.
777 * layout.h (class Layout): Declare create_notes. Update
778 declaration of create_executable_stack_info.
779 * gold.cc (queue_middle_tasks): Call create_notes.
780 * output.cc (Output_section::update_flags_for_input_section): Move
781 here from output.h. If SHF_ALLOC flag is newly set, mark address
782 invalid.
783 * output.h (Output_data::mark_address_invalid): New function.
784 (class Output_section): Only declare, not define,
785 update_flags_for_input_section. Remove set_flags.
786
55458500
ILT
7872009-06-24 Ian Lance Taylor <iant@google.com>
788
789 * script-sections.cc (Output_section_definition::
790 set_section_addresses): Rename shadowing local load_address to
791 laddr.
792
1307d6cd
ILT
7932009-06-24 Ian Lance Taylor <iant@google.com>
794
795 PR 10244
796 * reloc.cc (relocate_sections): Skip empty relocation sections.
797
ec3f783e
ILT
7982009-06-23 Ian Lance Taylor <iant@google.com>
799
800 PR 10156
801 * layout.cc (Layout::create_note): Use choose_output_section
802 rather than make_output_section.
803
459c9f1c
ILT
8042009-06-23 Ian Lance Taylor <iant@google.com>
805
806 PR 10237
807 * options.cc (General_options::parse_V): Set printed_version_.
808 (General_options::General_options): Initialize printed_version_.
809 * options.h (class General_options): Add printed_version_ field.
810 * gold.cc (queue_initial_tasks): If there are no input files,
811 don't give a fatal error if we printed the version information.
812 (queue_middle_tasks): If using -r with a shared object, give a
813 fatal error rather than an ordinary error.
814
1518dc8f
ILT
8152009-06-23 Ian Lance Taylor <iant@google.com>
816
817 PR 10219
818 * layout.cc (Layout::Layout): Initialize have_stabstr_section_.
819 (Layout::make_output_section): Set have_stabstr_section_ if we see
820 a .stab*str section.
821 (Layout::finalize): Call link_stabs_sections.
822 (Layout::link_stabs_sections): New file.
823 * layout.h (class Layout): Add have_stabstr_section_ field.
824 Declare link_stabs_sections.
825
3d857b98
DK
8262009-06-23 Doug Kwan <dougkwan@google.com>
827
828 * Makefile.am (libgold_a_LIBADD): New.
829 (ld_new_DEPENDENCIES, ld_new_LDADD): Remove LIBOBJS
830 * Makefile.in: Regenerate.
831 * config.in (HAVE_DECL_MEMMEM, HAVE_DECL_STRNDUP): New.
832 * configure: Regenerate.
833 * configure.ac (AC_CHECK_DECLS): Add strndup and memmem.
834 * fileread.cc: Include sys/state.h
835 * gold.h: Declare memmem and strndup if found missing.
836 * gold_reloc.h: Include byteswap.h if HAVE_BYTESWAP_H is defined.
837
0639a6f6
ILT
8382009-06-23 Ian Lance Taylor <iant@google.com>
839
840 * configure.ac: Call AC_CHECK_DECLS using C, not C++.
841 * configure: Rebuild.
842
8d63875c
ILT
8432009-06-23 Ian Lance Taylor <iant@google.com>
844
845 PR 10147
846 * object.cc (Object::section_contents): Don't try to get a view if
847 the section has length zero.
848 (Object::handle_gnu_warning_section): If the section is empty, use
849 the name of the section as the warning.
850
f7c8a183
ILT
8512009-06-23 Ian Lance Taylor <iant@google.com>
852
853 PR 10133
854 * stringpool.h (class Stringpool_template): Add optimize_ field.
855 (Stringpool_template::set_optimize): New function.
856 * stringpool.cc (Stringpool_template::Stringpool_template):
857 Initialize optimize_ field.
858 (Stringpool_template::set_string_offsets): Test local optimize
859 fild rather than parameter.
860 * layout.cc (Layout::Layout): Call set_optimize on the section
861 name stringpool.
862
e6a307ba
ILT
8632009-06-22 Ian Lance Taylor <iant@google.com>
864
865 PR 10030
866 * yyscript.y: Parse TARGET.
867 * script.cc (script_set_target): New function.
868 * script-c.h (script_set_target): Declare.
869 * options.cc (General_options::string_to_object_format): Rename
870 from string_to_object_format in anonymous namespace. Change
871 callers.
872 * options.h (class General_options): Declare
873 string_to_object_format.
874
3ee173de
ILT
8752009-06-22 Ian Lance Taylor <iant@google.com>
876
877 * script-sections.cc (Script_sections::create_segments): Don't put
878 program headers in a PT_LOAD segment if -n or -N.
879
8802009-06-22 Ian Lance Taylor <iant@google.com>
e1c74d60
ILT
881
882 PR 10141
883 * options.h (class General_options): Add -z lazy and -z now. Sort
884 -z options into alphabetical order.
885 * layout.cc (Layout::finish_dynamic_section): Handle -z now.
886
cd6739a1 8872009-06-21 Ian Lance Taylor <iant@google.com>
8a5e3e08
ILT
888
889 * layout.cc (Layout::make_output_section): Call
890 Target::new_output_section.
891 (Layout::attach_allocated_section_to_segment): Put large section
892 sections in a separate load segment with the large segment flag
893 set.
894 (Layout::segment_precedes): Sort large data segments after other
895 load segments.
896 (align_file_offset): New static function.
897 (Layout::set_segment_offsets): Use align_file_offset.
898 * output.h (class Output_section): Add is_small_section_ and
899 is_large_section_ fields.
900 (Output_section::is_small_section): New function.
901 (Output_section::set_is_small_section): New function.
902 (Output_section::is_large_section): New function.
903 (Output_section::set_is_large_section): New function.
904 (Output_section::is_large_data_section): New function.
905 (class Output_segment): Add is_large_data_segment_ field.
906 (Output_segment::is_large_data_segment): New function.
907 (Output_segment::set_is_large_data_segment): New function.
908 * output.cc (Output_section::Output_section): Initialize new
909 fields.
910 (Output_segment::Output_segment): Likewise.
911 (Output_segment::add_output_section): Add assertion that large
912 data sections always go in large data segments. Force small data
913 sections to the end of the list of data sections. Force small BSS
914 sections to the start of the list of BSS sections. For large BSS
915 sections to the end of the list of BSS sections.
916 * symtab.h (class Symbol): Declare is_common_shndx.
917 (Symbol::is_defined): Check Symbol::is_common_shndx.
918 (Symbol::is_common): Likewise.
919 (class Symbol_table): Define enum Commons_section_type. Update
920 declarations. Add small_commons_ and large_commons_ fields.
921 * symtab.cc (Symbol::is_common_shndx): New function.
922 (Symbol_table::Symbol_table): Initialize new fields.
923 (Symbol_table::add_from_object): Put small and large common
924 symbols in the right list.
925 (Symbol_table::sized_finalized_symbol): Check
926 Symbol::is_common_shndx.
927 (Symbol_table::sized_write_globals): Likewise.
928 * common.cc (Symbol_table::do_allocate_commons): Allocate new
929 common symbol lists. Don't call do_allocate_commons_list if the
930 list is empty.
931 (Symbol_table::do_allocate_commons_list): Remove is_tls
932 parameter. Add comons_section_type parameter. Change all
933 callers. Handle small and large common symbols.
934 * object.cc (Sized_relobj::do_finalize_local_symbols): Check
935 Symbol::is_common_shndx.
936 * resolve.cc (symbol_to_bits): Likewise.
937 * target.h (Target::small_common_shndx): New function.
938 (Target::small_common_section_flags): New function.
939 (Target::large_common_shndx): New function.
940 (Target::large_common_section_flags): New function.
941 (Target::new_output_section): New function.
942 (Target::Target_info): Add small_common_shndx, large_common_shndx,
943 small_common_section_flags, and large_common_section_flags
944 fields.
945 (Target::do_new_output_section): New virtual function.
946 * arm.cc (Target_arm::arm_info): Initialize new fields.
947 * i386.cc (Target_i386::i386_info): Likewise.
948 * powerpc.cc (Target_powerpc::powerpc_info) [all versions]:
949 Likewise.
950 * sparc.c (Target_sparc::sparc_info) [all versions]: Likewise.
951 * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
952 (Target_x86_64::do_new_output_section): New function.
953 * configure.ac: Define conditional MCMODEL_MEDIUM.
954 * testsuite/Makefile.am (check_PROGRAMS): Add large.
955 (large_SOURCES, large_CFLAGS, large_DEPENDENCIES): Define.
956 (large_LDFLAGS): Define.
957 * testsuite/large.c: New file.
958 * testsuite/testfile.cc (Target_test::test_target_info):
959 Initialize new fields.
960 * configure, testsuite/Makefile.in: Rebuild.
961
bb04269c
DK
9622009-06-05 Doug Kwan <dougkwan@google.com>
963
964 * Makefile.am (CCFILES): Add target.cc.
965 * Makefile.in: Regenerate.
966 * i386.cc (class Target_i386): Define new virtual method to
967 override do_is_local_label_name in parent.
968 * object.cc (Sized_relobj::do_count_local_symbols): Discard
969 local symbols if --discard-locals or -X is given.
970 * options.h (class General_options): Declare new options
971 '--discard-locals' and '-X' for discarding locals.
972 * target.h (class Target): Define new methods is_local_label_name.
973 Declare new virtual method do_is_local_label_name.
974 * target.cc: New file.
975 * testsuite/Makefile.am (check_PROGRAMS): Add discard_locals_test.
976 (check_SCRIPTS): Add discard_locals_test.sh.
977 (check_DATA): Add discard_local_tests.syms.
978 (discard_locals_test_SOURCES, discard_locals_test_LDFLAGS): Define.
979 (discard_local_tests.syms, discard_locals_test.o): New make rules.
980 * testsuite/Makefile.in: Regenerate.
981 * testsuite/discard_locals_test.c: New file.
982 * testsuite/discard_locals_test.sh: Same.
983
805bb01c
DK
9842009-06-05 Doug Kwan <dougkwan@google.com>
985
986 * object.cc (Sized_relobj::Sized_relobj): Initialize
987 discarded_eh_frame_shndx_ to -1U.
988 (Sized_relobj::do_layout): Record index of a discard .eh_frame
989 section.
990 (Sized_relobj::do_count_local_symbols): Skip local symbols in
991 a discarded .eh_frame section.
992 (Sized_relobj::do_finalize_local_symbols): Ditto.
993 * object.h (class Sized_relobj): Declare new member
994 discarded_eh_frame_shndx_.
995 * testsuite/Makefile.am (check_PROGRAMS): Add local_labels_test.
996 (local_labels_test.o, local_labels_test): New rules.
997 * testsuite/Makefile.in: Regenerate.
998
1dcd334d
DK
9992009-06-04 Doug Kwan <dougkwan@google.com>
1000
1001 * layout.cc (Layout::section_name_mapping): Add mapping for
1002 special ARM sections.
1003
96d49306
DK
10042009-06-03 Doug Kwan <dougkwan@google.com>
1005
1006 * arm.cc (utils::sign_extend): Reverse test in gold_assert.
1007 (utils::has_overflow): Same.
1008
dff16297
ILT
10092009-06-03 Ian Lance Taylor <iant@google.com>
1010
1011 * layout.cc (Layout::section_name_mapping): New array, replacing
1012 Layout::linkonce_mapping.
1013 (Layout::section_name_mapping_count): New variable, replacing
1014 Layout::linkonce_mapping_count.
1015 (Layout::linkonce_output_name): Remove.
1016 (Layout::output_section_name): Rewrite.
1017 * layout.h (class Layout): Rename Linkonce_mapping to
1018 Section_name_mapping, linkonce_mapping to section_name_mapping,
1019 linkonce_mapping_count to section_name_mapping_count. Don't
1020 declare linkonce_output_name.
1021
c121c671
DK
10222009-06-03 Doug Kwan <dougkwan@google.com>
1023
1024 * gold/arm.cc (namespace utils): New.
1025 (Target_arm::reloc_is_non_pic): Define new method.
1026 (class Arm_relocate_functions): New.
1027 (Target_arm::Relocate::relocate): Handle relocation types used by
1028 Android.
1029
07800fab
ILT
10302009-06-03 Ian Lance Taylor <iant@google.com>
1031
1032 * arm.cc (Target_arm::scan::global): Use || instead of |.
1033
c121c671
DK
10342009-06-02 Doug Kwan <dougkwan@google.com>
1035
1036 * gold/arm.cc (Target_arm::Scan::Scan): Initialize
1037 issued_non_pic_error_.
1038 (class Target_arm::Scan): Declare new method check_non_pic.
1039 Define new method symbol_needs_plt_entry.
1040 Declare new data member issued_non_pic_error_.
1041 (class Target_arm::Relocate): Declare new method
1042 should_apply_static_reloc.
1043 (Target_arm::may_need_copy_reloc): Handle STT_ARM_TFUNC.
1044 (Target_arm::Scan::check_non_pic): Define new method.
1045 (Target_arm::Scan::local): Handle a small subset of reloc types used
1046 by Android.
1047 (Target_arm::Scan::local): Same.
1048 (Target_arm::Relocate::should_apply_statci_reloc): Define new method.
1049
b19b0c6d
ILT
10502009-05-31 Mikolaj Zalewski <mikolajz@google.com>
1051
1052 * incremental.cc (Incremental_inputs::report_command_line): Filter
1053 out --incremental-* options.
1054
94cdfcff
DK
10552009-05-29 Doug Kwan <dougkwan@google.com>
1056
1057 * gold/arm.cc (Output_data_plt_arm): Forward declaration for new
1058 template class.
1059 (class Target_arm): Update comment.
1060 (Target_arm::Target_arm): Initialize new data members GOT_,
1061 PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_ and DYNBSS_.
1062 Declare new methods Target_arm::got_section, Target_arm::make_plt_entry
1063 and Target_arm::rel_dyn_section.
1064 Declare new_enum Target_arm::Got_type.
1065 Declare new data members GOT_, PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_
1066 and DYNBSS_.
1067 Update commments for member do_dynsym_value.
1068 (Target_arm::got_size, Target_arm::plt_section,
1069 Target_arm::may_need_copy_reloc and Target_arm::copy_reloc): Define
1070 new methods inside class defintion.
1071 (Target_arm::got_section): Define new method.
1072 (Target_arm::rel_dyn_section): Same.
1073 (Output_data_plt_arm): New template class.
1074 (Output_data_plt_arm::Output_data_plt_arm): Define constructor.
1075 (Output_data_plt_arm:do_adjust_output_section): Define new method.
1076 (Output_data_plt_arm::add_entry): Same.
1077 (Output_data_plt_arm::first_plt_entry): Define new
1078 static data member for PLT instruction template.
1079 (Output_data_plt_arm::plt_entry): Same.
1080 (Output_data_plt_arm::do_write): Define new method.
1081 (Target_arm::make_plt_entry): Same.
1082 (Target_arm::do_finalize_sections): Same.
1083 (Target_arm::do_dynsym_value): Same.
1084
4a657b0d
DK
10852009-05-28 Doug Kwan <dougkwan@google.com>
1086
1087 * Makefile.am (TARGETSOURCES): Add arm.cc.
1088 (ALL_TARGETOBJECTS): Add arm.$(OBJEXT)
1089 * Makefile.in: Regenerate.
1090 * arm.cc: New file.
1091 * configure.tgt: Add armbe*-*-*, armeb*-*-* and arm*-*-* targets.
1092
e7ae8c36
DK
10932009-05-26 Doug Kwan <dougkwan@google.com>
1094
1095 * options.cc (General_options::parse_exclude_libs). Fix a comment.
1096 (General_options::check_excluded_libs): Strip off directories in
1097 archive name before matching like GNU ld does.
1098 * testsuite/Makefile.am (MOSTLYCLEANFILES,
1099 exclude_libs_test_DEPENDENCIES): Add alt/libexclude_libs_test_3.a
1100 (exclude_libs_test_LDFLAGS): Add linker option
1101 -Wl,--exclude-libs,libexclude_libs_test_3
1102 (exclude_libs_test_LADD): Add alt/libexclude_libs_test_3.a as
1103 an explicit archive without using -l.
1104 (alt/libexclude_libs_test_3.a): New make rule.
1105 * testsuite/Makefile.in: Regenerate.
1106 * testsuite/exclude_libs_test.c : Declare lib3_default().
1107 (main): Call it.
1108 * exclude_libs_test.sh: Add tests for alt/exclude_libs_test_3.a.
1109 * exclude_libs_test_3.c: New file.
1110
f12e7348
NC
11112009-05-26 Nick Clifton <nickc@redhat.com>
1112
1113 * po/id.po: New Indonesian translation.
1114 * po/gold.pot: Updated template file.
1115
4daadc0d
ST
11162009-05-22 Sriraman Tallam <tmsriram@google.com>
1117
1118 * testsuite/Makefile.am: Add -ffunction-sections to compile
1119 gc_comdat_test files. Add -Wl,--gc-sections to build
1120 gc_comdat_test.
1121 * testsuite/Makefile.in: Regenerate.
1122 * testsuite/gc_comdat_test.sh: Fix the condition around grep.
1123
531813ad
ST
11242009-05-21 Sriraman Tallam <tmsriram@google.com>
1125
1126 * object.cc (Sized_relobj::map_to_kept_section): Return NULL if the
1127 kept comdat section was garbage collected.
1128 * testsuite/Makefile.am: Add test gc_comdat_test.sh.
1129 * testsuite/Makefile.in: Regenerate.
1130 * testsuite/gc_comdat_test.sh: New file.
1131 * testsuite/gc_comdat_test_1.cc: New file.
1132 * testsuite/gc_comdat_test_2.cc: New file.
1133
65514900
CC
11342009-05-19 Doug Kwan <dougkwan@google.com>
1135
1136 * archive.cc (Archive::Archive): Move constructor from archive.h
1137 to here. Initialize no_export_.
1138 (Archive::get_elf_object_for_member): Set no_export flag of object.
1139 * archive.h (Archive::Archive): Move constructor body to
1140 archive.cc.
1141 (Archive::no_export): New method.
1142 (Archive::no_export_): New field.
1143 * object.h (Object::Object): Initialize no_export_ to false.
1144 (Object::no_export, Object::set_no_export): New methods.
1145 (Object::no_export_): New field.
1146 * options.cc (General_options::parse_exclude_libs): New method.
1147 (General_options::check_excluded_libs) Same.
1148 * options.h (exclude_libs): New option.
1149 (General_options::check_excluded_libs): New method declaration.
1150 (General_options::excluded_libs_): New field.
1151 * symtab.cc (Symbol_table::add_from_relobj): Hide symbols with
1152 default or protected visibility if an object has no-export flag set.
1153 testsuite/Makefile.am (check_PROGRAMS): Add exclude_libs_test.
1154 (check_SCRIPTS): Add exclude_libs_test.sh.
1155 (check_DATA): Add exclude_libs_test.syms.
1156 (MOSTLYCLEANFILES): Add exclude_libs_test.syms,
1157 libexclude_libs_test_1.a and libexclude_libs_test_2.a.
1158 (exclude_libs_test_SOURCES, exclude_libs_test_DEPENDENCIES,
1159 exclude_libs_test_LDFLAGS and exclude_libs_test_LDADD): Define.
1160 (exclude_libs_test.syms, libexclude_libs_test_1.a,
1161 libexclude_libs_test_2.a): New rules.
1162 * testsuite/Makefile.in: Regenerate.
1163 * testsuite/exclude_libs_test.c: New file.
1164 * testsuite/exclude_libs_test.sh: Ditto.
1165 * testsuite/exclude_libs_test_1.c: Ditto.
1166 * testsuite/exclude_libs_test_2.c: Ditto.
1167
1b77ea50
ILT
11682009-05-15 Ian Lance Taylor <iant@google.com>
1169
1170 * configure.ac: Check for declarations for cases where libiberty.h
1171 checks HAVE_DECL_xxx.
1172 * configure, config.in: Rebuild.
1173
072fe7ce
ILT
11742009-05-15 Mikolaj Zalewski <mikolajz@google.com>
1175
1176 * gold.h (Incremental_argument_list): Remove (invalid) forward
1177 declaration.
1178 * incremental.cc (Incremental_inputs::report_achive): New method.
1179 (Incremental_inputs::report_object): New method.
1180 (Incremental_inputs::report_script): New method.
1181 (Incremental_inputs::finalize_inputs): New method.
1182 (Incremental_inputs::finalize): Call finalize_inputs().
1183 (Incremental_inputs::sized_create_incremental_inputs_section_data):
1184 Create inputs entries.
1185 * incremental.h (Incremental_input_type): New enum.
1186 (Incremental_inputs::Incremental_input): Initialize new fields.
1187 (Incremental_inputs::report_inputs): New method.
1188 (Incremental_inputs::report_achive): New method.
1189 (Incremental_inputs::report_object): New method.
1190 (Incremental_inputs::report_script): New method.
1191 (Incremental_inputs::finalize_inputs): New method.
1192 (Incremental_inputs::Input_info): New struct.
1193 (Incremental_inputs::Input_info_map): New typedef.
1194 (Incremental_inputs::lock_): New field.
1195 (Incremental_inputs::Inputs_): New field.
1196 (Incremental_inputs::Inputs_map): New field.
1197 * main.cc (main): Call Incremental_input::report_inputs.
1198 * options.h (Input_argument_list): Typedef moved from
1199 Input_arguments.
1200 (Input_file_group::Files): Remove, use ::Input_argument_list.
1201 (Input_file_group::Input_argument_list): Remove, use
1202 ::Input_argument_list.
1203 * plugin.cc (Plugin_manager::add_input_file): Add error in
1204 incremental build.
1205 * read_syms.cc (do_read_syms): Call Incremental_input::report_*
1206 functions.
1207 * script.cc (read_input_script): Call
1208 Incremental_input::report_script.
1209 * script.h (Script_info): New class.
1210
b0481b0b
ILT
12112009-04-27 Ian Lance Taylor <iant@google.com>
1212
1213 * x86_64.cc (do_adjust_output_section): Set entsize to
1214 plt_entry_size.
1215
b22a5a41 12162009-04-23 Elliott Hughes <enh@google.com>
6d1e3092
CD
1217
1218 * output.cc (Output_file::close): After short writes, continue
1219 writing from the correct offset in the buffer being written.
1220
40fde488
CD
12212009-04-23 Chris Demetriou <cgd@google.com>
1222
1223 * configure.ac (HAVE_TR1_UNORDERED_MAP_REHASH): New define.
1224 * configure: Regenerate.
1225 * config.in: Regenerate.
1226 * gold.h: Avoid std::tr1::unordered_map and std::tr1::unordered_set
1227 if HAVE_TR1_UNORDERED_MAP_REHASH is not defined.
1228
3ce2c28e
ILT
12292009-04-21 Mikolaj Zalewski <mikolajz@google.com>
1230
1231 * incremental.cc (Incremental_inputs_header_data): Renamed from
1232 Incremental_input_header_data.
1233 (Incremental_inputs_header_data::data_size): New field.
1234 (Incremental_inputs_header_data::put_input_file_count): Renamed
1235 from input_file_count.
1236 (Incremental_inputs_header_data::put_command_line_offset): Renamed
1237 from command_line_offset.
1238 (Incremental_inputs_header_data::put_reserved): Renamed from
1239 put_reserved.
1240 (Incremental_inputs_entry_data): Renamed from
1241 Incremental_input_entry_data.
1242 (Incremental_inputs_entry_data::data_size): New field.
1243 (Incremental_inputs::report_command_line): New method.
1244 (Incremental_inputs::finalize): New method.
1245 (Incremental_inputs::create_incremental_inputs_data): New method.
1246 (Incremental_inputs::sized_create_incremental_inputs_data): New method.
1247 * incremental.h: New file.
1248 * layout.cc (Layout::Layout): Handle new incremental_inputs_.
1249 (Layout::finalize): Create incremental inputs section in
1250 incremental builds.
1251 (Layout::create_incremental_info_sections): New method.
1252 * layout.h (Layout::incremental_inputs): New method.
1253 (Layout::create_incremental_info_sections): New method.
1254 (Layout::incremental_inputs_): New field.
1255 * main.cc (main): Notify Incremental_input of the command line.
1256
e55bde5e
ILT
12572009-04-01 Ian Lance Taylor <iant@google.com>
1258 Mikolaj Zalewski <mikolajz@google.com>
1259
1260 * gold.h (reserve_unordered_map): Define, three versions, one for
1261 each version of Unordered_map.
1262 * layout.cc (Layout::Layout): Remove options parameter. Add
1263 number_of_input_files parameter. Don't initialize options_.
1264 Initialize number_of_input_files_ and resized_signatures_. Move
1265 sections_are_attached_.
1266 (Layout::layout_group): Reserve space for group_signatures_.
1267 (Layout::find_or_add_kept_section): Change name parameter to be a
1268 reference. Resize signatures_ map when it gets large enough.
1269 (Layout::layout_eh_frame): Use parameters->options() instead of
1270 this->options_.
1271 (Layout::make_output_section): Likewise.
1272 (Layout::attach_allocated_section_to_segment): Likewise.
1273 (Layout::finalize, Layout::create_executable_stack): Likewise.
1274 (Layout::set_segment_offsets, Layout::create_interp): Likewise.
1275 (Layout::finish_dynamic_section, Layout::write_binary): Likewise.
1276 * layout.h (class Layout): Update declarations. Remove options_
1277 field. Add number_of_input_files_ and resized_signatures_
1278 fields. Move sections_are_attached_ field.
1279 * main.cc (main): Pass number of input files to Layout
1280 constructor. Don't pass options.
1281
154b857c
ILT
12822009-03-30 Ian Lance Taylor <iant@google.com>
1283
1284 * ffsll.c (ffsll): Correct implementation.
1285
2f35ab9b
ILT
12862009-03-27 Ian Lance Taylor <iant@google.com>
1287
fd03461a
ILT
1288 * ffsll.c: New file.
1289 * configure.ac: Call AC_REPLACE_FUNCS on ffsll.
1290 * gold.h (ffsll): Declare if HAVE_FFSLL is not defined.
1291 * ftruncate.c (ftruncate): Declare before definition.
1292 * mremap.c (mremap): Likewise.
1293 * pread.c (pread): Likewise.
1294 * configure, Makefile.in, config.in: Rebuild.
1295
2f35ab9b
ILT
1296 * mremap.c: New file.
1297 * configure.ac: Call AC_REPLACE_FUNCS on mremap.
1298 * gold.h (MREMAP_MAYMOVE): Define if HAVE_MREMAP is not defined.
1299 (mremap): Declare if HAVE_MREMAP is not defined.
1300 * configure, Makefile.in, config.in: Rebuild.
1301
33aea2fd
CC
13022009-03-27 Cary Coutant <ccoutant@google.com>
1303
1304 * powerpc.cc (Target_powerpc::check_non_pic): Assert that output is
1305 position independent.
1306 * sparc.cc (Target_sparc::check_non_pic): Likewise.
1307 * x86_64.cc (Target_x86_64::check_non_pic): Likewise.
1308
6d479619
CC
13092009-03-24 Cary Coutant <ccoutant@google.com>
1310
1311 * symtab.h (needs_plt_entry): Check for unsatisfied reference from
1312 an executable.
1313 (needs_dynamic_reloc): Likewise.
1314
afc06bb8
ILT
13152009-03-24 Ian Lance Taylor <iant@google.com>
1316
1317 * yyscript.y (file_cmd): Recognize EXTERN.
1318 (extern_name_list, extern_name_list_body): New nonterminals.
1319 * script.cc (script_add_extern): Define.
1320 * script-c.h (script_add_extern): Declare.
1321
f6060a4d
ILT
13222009-03-24 Rafael Avila de Espindola <espindola@google.com>
1323
1324 * object.cc (is_elf_object): Define.
1325 * object.h (is_elf_object): Declare.
1326 * archive.cc (Archive::get_elf_object_for_member): Call
1327 is_elf_object.
33aea2fd 1328 * readsyms.cc (Read_symbols::do_read_symbols): Likewise.
f6060a4d 1329
26736d8e
ILT
13302009-03-24 Elliott Hughes <enh@google.com>
1331
1332 * output.cc (Output_file::map_anonymous): Define.
1333 (Output_file::map): Use map_anonymous. If the regular mmap fails,
1334 try an anonymous one. Report the size if the mmap fails.
1335 * output.h (class Output_file): Declare map_anonymous.
1336
22fd9730
ILT
13372009-03-24 Ian Lance Taylor <iant@google.com>
1338
1339 * target-select.cc (instantiate_target): Don't acquire the lock if
1340 the instantiated_target_ field has already been set.
1341
cb010894
ILT
13422009-03-23 Ian Lance Taylor <iant@google.com>
1343
7f055c20
ILT
1344 * gold-threads.h (class Initialize_lock): Define.
1345 * gold-threads.cc (class Initialize_lock_once): Define.
1346 (initialize_lock_control): New static variable.
1347 (initialize_lock_pointer): New static variable.
1348 (initialize_lock_once): New static function.
1349 (Initialize_lock::Initialize_lock): Define.
1350 (Initialize_lock::initialize): Define.
1351 * target-select.h: Include "gold-threads.h".
1352 (class Target_selector): Add lock_ and initialize_lock_ fields.
1353 Don't define instantiate_target, just declare it.
1354 * target-select.cc (Target_selector::Target_selector): Initialize
1355 new fields.
1356 (Target_selector::instantiate_target): Define.
1357 * descriptors.h: Include "gold-threads.h".
1358 (class Descriptors): Add initialize_lock_ field.
1359 * descriptors.cc (Descriptors::Descriptors): Initialize new
1360 field.
1361 (Descriptors::open): Use initialize_lock_ field
1362 * errors.h (class Errors): Add initialize_lock_ field.
1363 * errors.cc (Errors::Errors): Initialize new field.
1364 (Errors::initialize_lock): Use initialize_lock_ field.
1365 * powerpc.cc (class Target_selector_powerpc): Remove
1366 instantiated_target_ field. In do_recognize call
1367 instantiate_target rather than do_instantiate_target. In
1368 do_instantiate_target just allocate a new target.
1369 * sparc.cc (class Target_selector_sparc): Likewise.
1370
36959681
ILT
1371 * freebsd.h: New file.
1372 * i386.cc: Include "freebsd.h".
1373 (Target_i386): Derive from Target_freebsd rather than
1374 Sized_target.
1375 (Target_selector_i386): Derive from Target_selector_freebsd rather
1376 than Target_selector.
1377 * x86_64.cc: Include "freebsd.h".
1378 (Target_x86_64): Derive from Target_freebsd rather than
1379 Sized_target.
1380 (Target_selector_x86_64): Derive from Target_selector_freebsd
1381 rather than Target_selector.
1382 * target.h (class Target): Add adjust_elf_header and
1383 do_adjust_elf_header.
1384 * output.cc (Output_file_header:: do_sized_write): Call target
1385 adjust_elf_header routine.
1386 * configure.tgt: Set targ_osabi.
1387 * configure.ac: Define GOLD_DEFAULT_OSABI.
1388 * parameters.cc (Parameters::default_target): Pass
1389 GOLD_DEFAULT_OSABI to select_target.
1390 * target-select.h (class Target_selector): Make instantiate_target
1391 protected rather than private.
1392 * Makefile.am (HFILES): Add freebsd.h.
1393 * configure, Makefile.in, config.in: Rebuild.
1394
cb010894
ILT
1395 * merge.cc (do_add_input_section): Correct pend value. Change
1396 message about last entry not being null terminated from error to
1397 warning.
1398
0e879927
ILT
13992009-03-20 Mikolaj Zalewski <mikolajz@google.com>
1400
1401 * incremental.cc: New file.
1402 * Makefile.am (CCFILES): Add incremental.cc.
1403 * Makefile.in: Rebuild.
1404
41105937
PP
14052009-03-19 Paul Pluzhnikov <ppluzhnikov@google.com>
1406
1407 * layout.cc (Layout::output_section_name): Preserve names
1408 of '.note.' sections.
1409
60439920
ILT
14102009-03-19 Ian Lance Taylor <iant@google.com>
1411
1412 * descriptors.cc (Descriptors::open): Check that the options are
1413 valid before using them.
1414
0d371ad3
ILT
14152009-03-18 Ian Lance Taylor <iant@google.com>
1416
1417 * script-sections.h: Include <list>.
1418 (class Script_sections): Change Sections_elements from std::vector
1419 to std::list. Typedef public Elements_iterator. Add
1420 orphan_section_placement_, data_segment_align_start_, and
1421 saw_data_segment_align_ fields. Remove data_segment_align_index_
1422 field.
1423 * script-sections.cc (class Orphan_section_placement): New class.
1424 (class Sections_element): Add virtual functions is_relro and
1425 orphan_section_init. Remove virtual function place_orphan_here.
1426 (class Output_section_definition): Add is_relro and
1427 orphan_section_init. Remove place_orphan_here.
1428 (class Orphan_output_section): Likewise.
1429 (Script_sections::Script_sections): Update for field changes.
1430 (Script_sections::data_segment_align): Set saw_data_segment_align_
1431 and data_segment_align_start_, not data_segment_align_index.
1432 (Script_sections::data_segment_relro_end): Check
1433 saw_data_segment_align_. Use data_segment_align_start_ rather
1434 than data_segment_align_index_.
1435 (Script_sections::place_orphan): Rewrite to use
1436 Orphan_section_placement.
1437
9201d894
ILT
14382009-03-17 Ian Lance Taylor <iant@google.com>
1439
9c5b8369
ILT
1440 * archive.cc (Archive::add_symbols): Check for a version attached
1441 to the symbol name in the archive map.
1442 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_11.
1443 (ver_test_11_SOURCES, ver_test_11_DEPENDENCIES): Define.
1444 (ver_test_11_LDFLAGS, ver_test_11_LDADD): Define.
1445 (ver_test_11.a): New target.
1446 * testsuite/Makefile.in: Rebuild.
1447
9201d894
ILT
1448 * configure.ac: Check for chsize and posix_fallocate. Replace
1449 ftruncate.
1450 * ftruncate.c: New file, from gnulib.
1451 * output.cc (posix_fallocate): Define dummy version if not
1452 HAVE_POSIX_FALLOCATE.
1453 (Output_file::map): Call posix_fallocate rather than lseek and
1454 write.
1455 * gold.h (ftruncate): Declare if not HAVE_FTRUNCATE.
1456 * configure, Makefile.in, config.in: Rebuild.
1457
ef4ab7a8
PP
14582009-03-17 Paul Pluzhnikov <ppluzhnikov@google.com>
1459
1460 * layout.h (Layout::create_note): Add section_name parameter.
1461 * layout.cc (Layout::create_note): Likewise.
1462 (Layout::create_build_id, Layout::create_gold_note): Fix callers.
1463
8c500701
ILT
14642009-03-17 Ian Lance Taylor <iant@google.com>
1465
e85b18e1
ILT
1466 * descriptors.cc: Include "options.h".
1467 (FD_CLOEXEC, O_CLOEXEC): Define if not defined.
1468 (Descriptors::open): Always use O_CLOEXEC when opening a new
1469 descriptor. If we have a plugin, and O_CLOEXEC was not defined,
1470 then set FD_CLOEXEC.
1471
9efe6174
ILT
1472 * sparc.cc (class Target_sparc): Add has_got_section.
1473 (Target_sparc::Scan::global): If we see _GLOBAL_OFFSET_TABLE_,
1474 make sure we have a GOT section.
1475
1476 * sparc.cc (optimize_tls_reloc): Recognize R_SPARC_TLS_IE_ADD.
1477 (Target_sparc::Scan::local): Likewise.
1478 (Target_sparc::Scan::global): Likewise.
1479 (Target_sparc::Relocate::relocate): Likewise.
1480 (Target_sparc::Relocate::relocate_tls): Likewise.
1481
8c500701
ILT
1482 * symtab.cc (Symbol_table::define_default_version): New function,
1483 broken out of add_from_object.
1484 (Symbol_table::add_from_object): Call define_default_version.
1485 (Symbol_table::define_special_symbol): Add resolve_oldsym
1486 parameter. Change all callers. If the version for a symbol comes
1487 from a version script, resolve it with the symbol with the same
1488 name with no version. Also add the symbol without a version if
1489 appropriate.
1490 (do_define_in_output_data): If resolving with oldsym, don't delete
1491 sym.
1492 (do_define_in_output_segment): Likewise.
1493 (do_define_as_constant): Likewise.
1494 * symtab.h (class Symbol_table): Update declarations.
1495
f1ed28fb
ILT
14962009-03-13 Ian Lance Taylor <iant@google.com>
1497
15f8229b
ILT
1498 * readsyms.cc (Read_symbols::incompatible_warning): New function.
1499 (Read_symbols::requeue): New function.
1500 (Read_symbols::do_read_symbols): If make_elf_object fails because
1501 the target type is not configured, and the file was searched for,
1502 issue a warning and retry with the next directory.
1503 (Add_symbols::run): If the file has an incompatible format, and
1504 it was searched for, requeue the Read_symbols task. On error,
1505 release the object.
1506 * readsyms.h (class Read_symbols): Add dirindex_ field. Add
1507 dirindex parameter to constructor. Change all callers. Declare
1508 incompatible_warning and requeue.
1509 (class Add_symbols): Add dirpath_, dirindex_, mapfile_,
1510 input_argument_ and input_group_ fields. Add them to
1511 constructor. Change all callers.
1512 (class Read_script): Add dirindex_ field. Add it to constructor.
1513 Change all callers.
1514 * archive.cc (Archive::setup): Remove input_objects parameter.
1515 Change all callers.
1516 (Archive::get_file_and_offset): Likewise.
1517 (Archive::read_all_symbols): Likewise.
1518 (Archive::read_symbols): Likewise.
1519 (Archive::get_elf_object_for_member): Remove input_objects
1520 parameter. Add punconfigured parameter. Change all callers.
1521 (Archive::add_symbols): Change return type to bool. Check return
1522 value of include_member.
1523 (Archive::include_all_members): Likewise.
1524 (Archive::include_member): Change return type to bool. Return
1525 false if first included object has incompatible target. Set
1526 included_member_ field.
1527 (Add_archive_symbols::run): If add_symbols returns false, requeue
1528 Read_symbols task.
1529 * archive.h (class Archive): Add included_member_ field.
1530 Initialize it in constructor. Add input_file and searched_for
1531 methods. Update declarations.
1532 (class Add_archive_symbols): Add dirpath_, dirindex_, and
1533 input_argument_ fields. Add them to constructor. Change all
1534 callers.
1535 * script.cc: Include "target-select.h".
1536 (class Parser_closure): Add skip_on_incompatible_target_ and
1537 found_incompatible_target_ fields. Add
1538 skip_on_incompatible_target parameter to constructor. Change all
1539 callers. Add methods skip_on_incompatible_target,
1540 clear_skip_on_incompatible_target, found_incompatible_target, and
1541 set_found_incompatible_target.
1542 (read_input_script): Add dirindex parameter. Change all callers.
1543 If parser finds an incompatible target, requeue Read_symbols
1544 task.
1545 (script_set_symbol): Clear skip_on_incompatible_target in
1546 closure.
1547 (script_add_assertion, script_parse_option): Likewise.
1548 (script_start_sections, script_add_phdr): Likewise.
1549 (script_check_output_format): New function.
1550 * script.h (read_input_script): Update declaration.
1551 * script-c.h (script_check_output_format): Declare.
1552 * yyscript.y (file_cmd): Handle OUTPUT_FORMAT.
1553 (ignore_cmd): Remove OUTPUT_FORMAT.
1554 * fileread.cc (Input_file::Input_file): Add explicit this.
1555 (Input_file::will_search_for): New function.
1556 (Input_file::open): Add pindex parameter. Change all callers.
1557 * fileread.h (class Input_file): Add input_file_argument method.
1558 Declare will_search_for. Update declarations.
1559 * object.cc (make_elf_object): Add punconfigured parameter.
1560 Change all callers.
1561 * object.h (class Object): Make input_file public. Add
1562 searched_for method.
1563 (make_elf_object): Update declaration.
1564 * dirsearch.cc (Dirsearch::find): Add pindex parameter. Use it to
1565 restart search.
1566 * dirsearch.h (class Dirsearch): Update declaration.
1567 * options.h (class General_options): Add --warn-search-mismatch.
1568 * parameters.cc (Parameters::is_compatible_target): New function.
1569 * parameters.h (class Parameters): Declare is_compatible_target.
1570 * workqueue.cc (Workqueue::add_blocker): New function.
1571 * workqueue.h (class Workqueue): Declare add_blocker.
1572
f1ed28fb
ILT
1573 * fileread.cc (Input_file::open): Remove options parameter.
1574 Change all callers.
1575 (Input_file::open_binary): Likewise.
1576 * script.cc (read_input_script): Likewise.
1577 * readsyms.h (class Read_symbols): Remove options_ field. Remove
1578 options parameter from constructor. Change all callers.
1579 (class Read_script): Likewise.
1580 * fileread.h (class Input_file): Update declarations.
1581 * script.h (read_input_script): Update declaration.
1582
34dd024a
NC
15832009-03-10 Nick Clifton <nickc@redhat.com>
1584
1585 * po/es.po: New Spanish translation.
1586
6d71b17c
CC
15872009-03-06 Cary Coutant <ccoutant@google.com>
1588
1589 * options.cc (parse_short_option): Keep dash_z from registering itself.
1590
031cdbed
ILT
15912009-03-03 Ian Lance Taylor <iant@google.com>
1592
1593 PR 9918
1594 * target-reloc.h (relocate_section): Pass output_section to
1595 relocate.
1596 * i386.cc (Target_i386::should_apply_static_reloc): Add
1597 output_section parameter. Change all callers.
1598 (Target_i386::Relocate::relocate): Add output_section parameter.
1599 * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
1600 * sparc.cc (Target_sparc::Relocate::relocate): Likewise.
1601 * powerpc.cc (Target_powerpc::Relocate::relocate): Likewise.
1602 * testsuite/two_file_shared.sh: New script.
1603 * testsuite/Makefile.am (check_SCRIPTS): Add two_file_shared.sh.
1604 (check_DATA): Add two_file_shared.dbg.
1605 (two_file_shared.dbg): New target.
1606 * testsuite/Makefile.in: Rebuild.
1607
15d5fa16
ILT
16082009-03-01 Ian Lance Taylor <iant@google.com>
1609
1610 * configure.ac: Check for byteswap.h.
1611 * configure: Rebuild.
1612 * config.in: Rebuild.
1613
8a4c0b0d
ILT
16142009-03-01 Mikolaj Zalewski <mikolajz@google.com>
1615
1616 * layout.cc (Layout::find_or_add_kept_section): New function.
1617 (Layout::add_comdat): Removed.
1618 * layout.h (struct Kept_section): Move out of class Layout.
1619 Remove trailing underscores from field names. Add group_sections
1620 field. Rename group_ field to is_group. Change all uses.
1621 (class Layout): Declare find_or_add_kept_section, not add_comdat.
1622 * object.cc (Sized_relobj::Sized_relobj): Don't initialize
1623 comdat_groups_ field.
1624 (Sized_relobj::include_section_group): Use
1625 find_or_add_kept_section and Kept_section::group_sections.
1626 (Sized_relobj::include_linkonce_section): Likewise.
1627 * object.cc (class Sized_relobj): Don't define Comdat_group or
1628 Comdat_group_table. Remove find_comdat_group and
1629 add_comdat_group. Remove comdat_groups_ field.
1630 * plugin.cc (include_comdat_group): Use
1631 Layout::find_or_add_kept_section.
1632
b4ecf66b
ILT
16332009-02-28 Ian Lance Taylor <iant@google.com>
1634
14359ca0
ILT
1635 * README: --gc-sections and map files are now supported. Document
1636 some build requirements.
1637
b4ecf66b
ILT
1638 PR 6992
1639 * symtab.cc (Symbol_table::sized_write_section_symbol): In a
1640 relocatable link set the value of the section symbol to zero.
1641 * object.cc (Sized_relobj::do_finalize_local_symbols): In a
1642 relocatable link don't include the section address in the local
1643 symbol value.
1644
0602e05a
ILT
16452009-02-27 Ian Lance Taylor <iant@google.com>
1646
fd9d194f
ILT
1647 PR 6811
1648 * options.h (class Search_directory): Add is_system_directory.
1649 (class General_options): Declare is_in_system_directory.
1650 * options.cc (get_relative_sysroot): Make static.
1651 (get_default_sysroot): Make static.
1652 (General_optoins::is_in_system_directory): New function.
1653 * fileread.cc (Input_file::is_in_system_directory): New function.
1654 * fileread.h (class Input_file): Declare is_in_system_directory.
1655 * object.h (class Object): Add is_in_system_directory.
1656 (class Input_objects): Remove system_library_directory_ field.
1657 * object.cc (Input_objects::add_object): Don't set
1658 system_library_directory_.
1659 (input_objects::found_in_system_library_directory): Remove.
1660 * symtab.cc (Symbol_table::write_globals): Remove input_objects
1661 parameter. Change all callers.
1662 (Symbol_table::sized_write_globals): Likewise.
1663 (Symbol_table::warn_about_undefined_dynobj_symbol): Likewise.
1664 Call Object::is_in_system_directory.
1665 * symtab.h (class Symbol_table): Update declarations.
1666
61edd21f
ILT
1667 PR 5990
1668 * descriptors.h (Open_descriptor): Add is_on_stack field.
1669 * descriptors.cc (Descriptors::open): If the descriptor is on the
1670 top of the stack, remove it. Initialize is_on_stack field.
1671 (Descriptors::release): Only add pod to stack if it is not on the
1672 stack already.
1673 (Descriptors::close_some_descriptor): Clear stack_next and
1674 is_on_stack fields.
1675
e29e076a
ILT
1676 PR 7091
1677 * output.cc (Output_section::find_starting_output_address): Rename
1678 from starting_output_address; add PADDR parameter; change return
1679 type.
1680 * output.h (class Output_section): Declare
1681 find_starting_output_address instead of starting_output_address.
1682 * object.cc (Sized_relobj::do_finalize_local_symbols): Handle a
1683 section symbol for which we can't find a merge section.
1684
0602e05a
ILT
1685 PR 9836
1686 * symtab.cc (Symbol_table::add_from_object): If the visibility is
1687 hidden or internal, force the symbol to be local.
1688 * resolve.cc (Symbol::override_visibility): Define.
1689 (Symbol::override_base): Use override_visibility.
1690 (Symbol_table::resolve): Likewise.
1691 (Symbol::override_base_with_special): Likewise.
1692 (Symbol_table::override_with_special): If the visibility is hidden
1693 or internal, force the symbol to be local.
1694 * symtab.h (class Symbol): Add set_visibility and
1695 override_visibility.
1696 * testsuite/ver_test_1.sh: New file.
1697 * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_1.sh.
1698 (check_DATA): Add ver_test_1.syms.
1699 (ver_test_1.syms): New target.
1700 * testsuite/Makefile.in: Rebuild.
1701
401a9a73
CC
17022009-02-25 Cary Coutant <ccoutant@google.com>
1703
1704 * layout.cc (Layout::choose_output_section): Don't rename sections
1705 when using a linker script that has a SECTIONS clause.
1706 * Makefile.in: Regenerate.
1707
1708 * testsuite/Makefile.am (script_test_5.sh): New test case.
1709 * testsuite/Makefile.in: Regenerate.
1710 * testsuite/script_test_5.cc: New file.
1711 * testsuite/script_test_5.sh: New file.
1712 * testsuite/script_test_5.t: New file.
1713
f488e4b0
CC
17142009-02-13 Rafael Avila de Espindola <espindola@google.com>
1715
1716 * archive.cc (Archive::include_member): Update calls to add_symbols.
1717 * dynobj.cc (Sized_dynobj<size, big_endian>::make_version_map): Add
1718 the Layout argument.
1719 * dynobj.h (do_add_symbols): Add the Layout argument.
1720 * object.cc (Sized_relobj<size, big_endian>::do_add_symbols): Add the
1721 Layout argument.
1722 * object.h (Object::add_symbols): Add the Layout argument.
1723 (Object::do_add_symbols): Add the Layout argument.
1724 (Sized_relobj::do_add_symbols): Add the Layout argument.
1725 * plugin.cc (Sized_pluginobj<size, big_endian>::do_add_symbols):
1726 Unify the two versions.
1727 (Add_plugin_symbols): Remove.
1728 * plugin.h (Pluginobj::add_symbols, Pluginobj::do_add_symbols): Remove.
1729 (Sized_pluginobj::do_add_symbols): Unify the two versions.
1730 (Add_plugin_symbols): Remove.
1731 * readsyms.cc (Read_symbols::do_read_symbols): Update call to
1732 Add_symbols. Use Add_symbols instead of Add_plugin_symbols.
1733 (Add_symbols::run): Make it work with Pulginobj.
1734
89dd1680
ILT
17352009-02-06 Ian Lance Taylor <iant@google.com>
1736
1737 * object.cc (Sized_relobj::do_layout): Make info message start
1738 with lower case letter.
1739
266d0a74
ILT
17402009-02-06 Mikolaj Zalewski <mikolajz@google.com>
1741
602b464e
ILT
1742 * binary.cc: Fix file comment.
1743
266d0a74
ILT
1744 * options.h (enum Incremental_disposition): Define.
1745 (class General_options): Add new options: --incremental,
1746 --incremental_changed, --incremental_unchanged,
1747 --incremental_unknown. Add incremental_disposition_ and
1748 implicit_incremental_ fields.
1749 (General_options::incremental_disposition): New function.
1750 (class Position_dependent_options): Add incremental_disposition
1751 option.
1752 (Position_dependent_options::copy_from_options): Set incremental
1753 dispositions.
1754 * options.cc (General_options::parse_incremental_changed): New
1755 function.
1756 (General_options::parse_incremental_unchanged): New function.
1757 (General_options::parse_incremental_unknown): New function.
1758 (General_options::General_options): Initialize new fields
1759 incremental_disposition_ and implicit_incremental_.
1760 (General_options::finalize): Check for uasge of --incremental-*
1761 without --incremental.
1762
f073bbf7
CD
17632009-02-06 Chris Demetriou <cgd@google.com>
1764
1765 * gold.h (gold_undefined_symbol): Change to take only a Symbol
1766 pointer and to report location as the file name associated with
1767 the symbol.
1768 (gold_undefined_symbol_at_location): New function to replace the
1769 old gold_undefined_symbol functionality.
1770 * target-reloc.h (relocate_section): Update to use
1771 gold_undefined_symbol_at_location.
1772 * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
1773 Call gold_undefined_symbol function rather than gold_error.
1774 * errors.h (Errors::undefined_symbol): Take location as a
1775 string, rather than calculating it from a relocation.
1776 * errors.cc (Errors::fatal): Print "fatal error:" before the
1777 formatted message.
1778 (Errors::error, Errors::error_at_location): Print "error: "
1779 before the formatted message.
1780 (Errors::undefined_symbol): Take location as a string, rather
1781 than calculating it from a relocation.
1782 (gold_undefined_symbol_at_location): New function akin to
1783 old gold_undefined_symbol, calculates location from relocation.
1784 (gold_undefined_symbol): Change to take only a Symbol pointer
1785 and to report location as the file name associated with the symbol.
1786 * testsuite/debug_msg.sh: Update for changed error messages.
1787 * testsuite/undef_symbol.sh: Likewise.
1788
8e94a90c
ILT
17892009-02-04 Duncan Sands <baldrick@free.fr>
1790
1791 PR 9812
1792 * reduced_debug_output.h
1793 (Output_reduced_debug_abbrev_section::failed): Use format for
1794 gold_warning.
1795 (Output_reduced_debug_info_section::faild): Likewise.
1796
88a0e15b
ILT
17972009-01-31 Mikolaj Zalewski <mikolajz@google.com>
1798
1799 * script.cc (Lazy_demangler): New class.
1800 (Version_script_info::get_symbol_version_helper): Demangle a
1801 symbol only once.
1802
5efc7cd2
CC
18032009-01-29 Cary Coutant <ccoutant@google.com>
1804
1805 * i386.cc (Target_i386::Relocate::relocate): Recognize non-PIC calls
1806 to __tls_get_addr.
1807 * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
1808
e0ebcf42
ILT
18092009-01-28 Ian Lance Taylor <iant@google.com>
1810
5efc7cd2 1811 * version.cc (version_string): Bump to 1.9.
75fe7426 1812
e0ebcf42
ILT
1813 * gold.h: Include <cstring> and <stdint.h>.
1814 * version.cc: Include <cstdio>.
1815 * object.cc (Sized_relobj::do_layout): Initialize gc_sd to avoid a
1816 warning.
1817 * reduced_debug_output.cc (insert_into_vector): Rename from
1818 Insert_into_vector; change all callers. Use Swap_unaligned to
1819 avoid aliasing issue; remove union since it is unnecessary.
1820
8e2813be 18212009-01-27 Sriraman Tallam <tmsriram@google.com>
6d03d481
ST
1822
1823 * Makefile.am (CCFILES): Add gc.cc.
1824 (HFILES): Add gc.h.
1825 * Makefile.in: Regenerate.
1826 * gold.cc (Gc_runner): New class.
1827 (queue_initial_tasks): Call garbage collection related tasks
1828 when corresponding options are invoked.
1829 (queue_middle_gc_tasks): New function.
1830 (queue_middle_tasks): Reorder tasks to allow relocs to be read and
1831 processed early before laying out sections during garbage collection.
1832 * gold.h (queue_middle_gc_tasks): New function.
1833 (is_prefix_of): Move from "layout.cc".
1834 * i386.cc (Target_i386::gc_process_relocs): New function.
1835 * layout.cc (is_prefix_of): Remove. Move to "gold.h"
1836 * main.cc (main): Create object of class "Garbage_collection".
1837 * object.cc (Relobj::copy_symbols_data): New function.
1838 (Relobj::is_section_name_included): New function.
1839 (Sized_relobj::do_layout): Allow this function to be called twice
1840 during garbage collection and defer layout of section during the
1841 first call.
1842 * object.h (Relobj::get_symbols_data): New function.
1843 (Relobj::is_section_name_included): New function.
1844 (Relobj::copy_symbols_data): New function.
1845 (Relobj::set_symbols_data): New function.
1846 (Relobj::get_relocs_data): New function.
1847 (Relobj::set_relocs_data): New function.
1848 (Relobj::is_output_section_offset_invalid): New pure virtual function.
1849 (Relobj::gc_process_relocs): New function.
1850 (Relobj::do_gc_process_relocs): New pure virtual function.
1851 (Relobj::sd_): New data member.
1852 (Sized_relobj::is_output_section_offset_invalid): New function.
1853 (Sized_relobj::do_gc_process_relocs): New function.
1854 * options.h (General_options::gc_sections): Modify to not be a no-op.
1855 (General_options::print_gc_sections): New option.
1856 * plugin.cc (Plugin_finish::run): Remove function call to
1857 Plugin_manager::layout_deferred_objects. Move it to "gold.cc".
1858 * powerpc.cc (Target_powerpc::gc_process_relocs): New function.
1859 * reloc.cc (Read_relocs::run): Add task to process relocs and
1860 determine unreferenced sections when doing garbage collection.
1861 (Gc_process_relocs): New class.
1862 (Sized_relobj::do_gc_process_relocs): New function.
1863 (Sized_relobj::do_scan_relocs): Don't try to scan the relocs for
1864 sections that are garbage collected.
1865 * reloc.h (Gc_process_relocs): New class.
1866 * sparc.cc (Target_sparc::gc_process_relocs): New function.
1867 * symtab.cc (Symbol::should_add_dynsym_entry): Do not add entries for
1868 symbols whose corresponding sections are garbage collected.
1869 (Symbol_table::Symbol_table): Add new parameter for the garbage
1870 collection object.
1871 (Symbol_table::gc_mark_undef_symbols): New function.
1872 (Symbol_table::gc_mark_symbol_for_shlib): New function.
1873 (Symbol_table::gc_mark_dyn_syms): New function.
1874 (Symbol_table::resolve): Do not treat symbols seen in dynamic objects
1875 as garbage.
1876 (Symbol_table::add_from_object): Likewise.
1877 (Symbol_table::add_from_relobj): When building shared objects, do not
1878 treat externally visible symbols as garbage.
1879 (Symbol_table::sized_finalize_symbol): Do not check dynamic symbol
1880 table information for static and relocatable links.
1881 * symtab.h (Symbol_table::set_gc): New function.
1882 (Symbol_table::gc): New function.
1883 (Symbol_table::gc_mark_undef_symbols): New function.
1884 (Symbol_table::gc_mark_symbol_for_shlib): New function.
1885 (Symbol_table::gc_mark_dyn_syms): New function.
1886 (Symbol_table::gc_): New data member.
1887 * target.h (Sized_target::gc_process_relocs): New pure virtual
1888 function.
1889 * x86_64.cc (Target_x86_64::gc_process_relocs): New function.
1890 * testsuite/testfile.cc (Target_test::gc_process_relocs): New function.
1891
3b293544
CF
18922009-01-20 Chris Faylor <me.sourceware@sourceware.org>
1893
1894 * options.h (General_options::gc_sections): Define as a no-op for now.
1895 (General_options::no_keep_memory): Ditto.
1896 (General_options::Bshareable): Define.
1897 * options.cc (General_options::finalize): Honor -Bshareable.
1898
83d22aa8
AS
18992009-01-20 Andreas Schwab <schwab@suse.de>
1900
1901 * powerpc.cc (Powerpc_relocate_functions::rel16_ha): Don't try to
1902 read the value in the contents, since we don't use it. Use the
1903 template endianness when writing.
1904 (Relocate::relocate): Use it for R_PPC_REL16_HA.
1905
cd536b21
AS
19062009-01-19 Andreas Schwab <schwab@suse.de>
1907
1908 * configure.tgt (powerpc64-*): Fix targ_obj.
1909
99e9a495
ILT
19102009-01-15 Ian Lance Taylor <iant@google.com>
1911
1912 * object.cc (Sized_relobj::write_local_symbols): Don't write out
1913 local symbols when stripping all symbols.
1914
bbbfea06
CC
19152009-01-14 Cary Coutant <ccoutant@google.com>
1916
99e9a495 1917 * output.cc (Output_reloc): Add explicit instantiations.
bbbfea06 1918
0f7c0701
CC
19192009-01-14 Cary Coutant <ccoutant@google.com>
1920
1921 * archive.cc (Archive::get_elf_object_for_member): Remove call
1922 to File_read::claim_for_plugin.
1923 * descriptors.cc (Descriptors::open): Remove reference to
1924 is_claimed.
1925 (Descriptors::claim_for_plugin): Remove.
1926 * descriptors.h (Descriptors::claim_for_plugin): Remove.
1927 (Descriptors::is_claimed): Remove.
1928 (claim_descriptor_for_plugin): Remove.
1929 * fileread.cc (File_read::claim_for_plugin): Remove.
1930 * fileread.h (File_read::claim_for_plugin): Remove.
1931 (File_read::descriptor): Reopen descriptor if necessary.
1932 * plugin.cc (Plugin::load): Add two new APIs to transfer vector.
1933 (Plugin_manager::all_symbols_read): Add task parameter. Change
1934 all callers.
1935 (Plugin_manager::get_input_file): New function.
1936 (Plugin_manager::release_input_file): New function.
1937 (Pluginobj::Pluginobj): Add filesize parameter and initialize
1938 corresponding data member.
1939 (Sized_pluginobj::Sized_pluginobj): Add filesize parameter
1940 and pass to base constructor. Change all callers.
1941 (get_input_file, release_input_file): New functions.
1942 (make_sized_plugin_object): Add filesize parameter. Change all callers.
1943 * plugin.h (Plugin_manager::Plugin_manager): Initialize task_ member.
1944 (Plugin_manager::all_symbols_read): Add task parameter.
1945 (Plugin_manager::get_input_file): New function.
1946 (Plugin_manager::release_input_file): New function.
1947 (Plugin_manager::task_): New data member.
1948 (Pluginobj::Pluginobj): Add filesize parameter.
1949 (Pluginobj::filename): New function.
1950 (Pluginobj::descriptor): New function.
1951 (Pluginobj::filesize): New function.
1952 (Pluginobj::filesize_): New data member.
1953 (Sized_pluginobj::Sized_pluginobj): Add filesize parameter.
1954 * readsyms.cc (Read_symbols::do_read_symbols): Remove call to
1955 File_read::claim_for_plugin; use Object::unlock to unlock the file.
1956
1957 * testsuite/Makefile.am (plugin_test_4): New test case for plugins
1958 with archive libraries.
1959 * testsuite/Makefile.in: Regenerate.
1960 * testsuite/plugin_test.c (struct sym_info): New type.
1961 (get_input_file, release_input_file): New static variables.
1962 (onload): Capture new transfer vector entries.
1963 (claim_file_hook): Stop reading at end of file according to filesize.
1964 Factor out parsing of readelf output into separate function.
1965 (all_symbols_read_hook): Exercise get_input_file and release_input_file
1966 APIs and get the source file name from the symbol table. Convert
1967 source file name to corresponding object file name. Print info
1968 message when adding new input files.
1969 (parse_readelf_line): New function.
1970 * testsuite/plugin_test_1.sh: Add checks for new info messages.
1971 * testsuite/plugin_test_2.sh: Likewise.
1972 * testsuite/plugin_test_3.sh: Likewise.
1973 * testsuite/plugin_test_4.sh: New test case.
1974
62a6d109
ILT
19752009-01-07 Ian Lance Taylor <iant@google.com>
1976
1977 * version.cc (version_string): Bump to 1.8.
1978
483620e8
CC
19792008-12-23 Cary Coutant <ccoutant@google.com>
1980
1981 * gold.cc (gold_exit): Call plugin cleanup handlers on exit.
1982 * plugin.cc (Plugin_manager::finish): Rename as
1983 layout_deferred_objects. Move cleanup to separate function.
1984 (Plugin_manager::cleanup): New function.
1985 (Plugin_finish::run): Call layout_deferred_objects and cleanup
1986 separately.
1987 * plugin.h (Plugin_manager::finish): Rename as
1988 layout_deferred_objects.
1989 (Plugin_manager::cleanup): New function.
1990 (Plugin_manager::cleanup_done): New field.
1991
d66a9eb3
CC
19922008-12-23 Cary Coutant <ccoutant@google.com>
1993
1994 * plugin.cc (is_visible_from_outside): New function.
1995 (Pluginobj::get_symbol_resolution_info): Call is_visible_from_outside
1996 so we don't return "IR only" status for exported symbols or -r links.
1997
1998 * testsuite/Makefile.am (plugin_test_3): New test case.
1999 * testsuite/Makefile.in: Regenerate.
2000 * testsuite/plugin_test_3.sh: New file.
2001
5995b570
CC
20022008-12-22 Cary Coutant <ccoutant@google.com>
2003
2004 * object.cc (Sized_relobj::layout_section): New function.
2005 (Sized_relobj::do_layout): Defer layout of input sections until after
2006 plugin has provided replacement files.
2007 (Sized_relobj::do_layout_deferred_sections): New function.
2008 * object.h (Relobj::set_section_offset): Remove virtual keyword.
2009 (Relobj::layout_deferred_sections): New function.
2010 (Relobj::do_layout_deferred_sections): New function.
2011 (Sized_relobj::do_layout_deferred_sections): New function.
2012 (Sized_relobj::layout_section): New function.
2013 (Sized_relobj::Deferred_layout): New structure.
2014 (Sized_relobj::deferred_layout_): New field.
2015 * plugin.cc (Plugin_manager::finish): Renamed, was cleanup.
2016 Change all callers. Layout deferred sections.
2017 (class Plugin_finish): Renamed, was Plugin_cleanup. Change all
2018 references.
2019 (Plugin_hook::run): Move code from do_plugin_hook inline.
2020 (Plugin_hook::do_plugin_hook): Remove.
2021 * plugin.h (Plugin_manager::Plugin_manager): Add missing initializers.
2022 (Plugin_manager::finish): Renamed, was cleanup.
2023 (Plugin_manager::should_defer_layout): New function.
2024 (Plugin_manager::add_deferred_layout_object): New function.
2025 (Plugin_manager::Deferred_layout_list): New type.
2026 (Plugin_manager::deferred_layout_objects_): New field.
2027 (Plugin_hook::do_plugin_hook): Remove.
2028
ee769c88
ILT
20292008-12-17 Ian Lance Taylor <iant@google.com>
2030
2031 * options.h (class General_options): Add --no case for
2032 --export-dynamic.
2033
abc8dcba
CC
20342008-12-16 Cary Coutant <ccoutant@google.com>
2035
2036 * plugin.cc (Plugin::load): Move LDPT_MESSAGE to front of transfer
2037 vector.
2038 (Plugin_manager::claim_file): Create plugin object even if
2039 plugin did not call the add_symbols callback.
2040 (Plugin_obj::get_symbol_resolution_info): Guard against plugin
2041 asking for more symbols than were added.
2042 * testsuite/Makefile.am (plugin_test_1): Add test case with
2043 no global symbols.
2044 (empty.syms): New target.
2045 * testsuite/Makefile.in: Regenerate.
2046 * testsuite/plugin_test.c (claim_file_hook): Add new debug
2047 message. Don't call add_symbols if no globals.
2048 (all_symbols_read_hook): Don't provide replacement for empty
2049 claimed file.
2050
b0074644
ILT
20512008-12-12 Ian Lance Taylor <iant@google.com>
2052
68943102
ILT
2053 * target-reloc.h (Default_scan_relocatable_relocs): Only discard
2054 r_type == 0 for a local symbol with r_sym == 0.
2055 (scan_relocatable_relocs): Pass r_sym to
2056 local_non_section_strategy.
2057 * reloc.cc (Emit_relocs_strategy::local_non_section_strategy): Add
2058 r_sym parameter.
2059
b0074644
ILT
2060 * configure.ac: Update test for TLS descriptors: they are
2061 supported as of glibc 2.9.
2062 * configure: Rebuild.
2063
c2508178
ILT
20642008-12-11 Ian Lance Taylor <iant@google.com>
2065
2066 PR 7091
2067 * target-reloc.h (Default_scan_relocatable_relocs): For each
2068 function, map r_type == 0 to RELOC_DISCARD.
2069
2756a258
CC
20702008-12-10 Cary Coutant <ccoutant@google.com>
2071
2072 * layout.cc (Layout::add_comdat): Allow COMDAT group from a replacement
2073 object to override a kept COMDAT group from a plugin object.
2074
bb6f53d3
ILT
20752008-12-09 Ian Lance Taylor <iant@google.com>
2076
fbc558e1
ILT
2077 PR 7088
2078 * yyscript.y (file_cmd): Handle INPUT.
2079
bb6f53d3
ILT
2080 * testsuite/initpri1.c: Change all declarations to be full
2081 prototypes by adding void, to avoid compiler warnings.
2082
4674ecfc
CC
20832008-12-05 Rafael Avila de Espindola <espindola@google.com>
2084
2085 * options.cc (General_options::parse_plugin_opt): New.
2086 (General_options::add_plugin): The argument now is just the filename.
2087 (General_options::add_plugin_option): New.
2088 * options.h (plugin_opt): New.
2089 (add_plugin): Change argument name.
2090 (add_plugin_option): New.
2091 * plugin.cc (Plugin::load): Don't parse the plugin option.
2092 * plugin.h (Plugin::Plugin): Rename argument. Init filename_.
2093 (Plugin::add_option): New.
2094 (Plugin::args_): Change type.
2095 (Plugin::filename_): New.
2096 (Plugin_manager::add_plugin_option): New.
2097 * testsuite/Makefile.am (plugin_test_1): Use new syntax.
2098 * testsuite/Makefile.in: Regenerate.
2099
fd06b4aa
CC
21002008-12-05 Cary Coutant <ccoutant@google.com>
2101
2102 * layout.cc (Layout::include_section): Check for SHF_EXCLUDE.
2103 Handle --strip-lto-sections option.
2104 * options.h (strip_lto_sections): New option.
2105
6c52134c
CC
21062008-12-01 Cary Coutant <ccoutant@google.com>
2107
2108 * plugin.cc (ld_plugin_message): Change format parameter to const.
2109 Fix mismatch between new[] and delete.
2110
a45248e0
CC
21112008-11-14 Cary Coutant <ccoutant@google.com>
2112
2113 * reloc.cc (Sized_relobj::do_read_relocs): Use constant invalid_address
2114 instead of -1U.
2115
c82fbeee
CS
21162008-11-05 Craig Silverstein <csilvers@google.com>
2117
2118 * options.cc (General_options::parse_dynamic_list): New function.
2119 * options.h (General_options): New flags dynamic_list,
2120 dynamic_list_data, dynamic_list_cpp_new, and
2121 dynamic_list_cpp_typeinfo. New variable dynamic_list_.
2122 (General_options::in_dynamic_list): New function.
2123 * script.cc (Lex::Mode): New enum DYNAMIC_LIST.
2124 (Lex::can_start_name): Add support for DYNAMIC_LIST mode.
2125 (Lex::can_continue_name): Likewise.
2126 (yylex): Likewise.
2127 (read_script_file): New parameter script_options.
2128 (read_dynamic_list): New function.
2129 (Script_options::define_dynamic_list): New function.
2130 (dynamic_list_keyword_parsecodes): New variable.
2131 (dynamic_list_keywords): New variable.
2132 * script.h (Script_options::define_dynamic_list): New function
2133 prototype.
2134 (read_dynamic_list): New function prototype.
2135 * symtab.cc (strprefix): New macro.
2136 (Symbol::should_add_dynsym_entry): Support dynamic_list,
2137 dynamic_list_data, dynamic_list_cpp_new, and
2138 dynamic_list_cpp_typeinfo.
2139 * yyscript.y (PARSING_DYNAMIC_LIST): New token.
2140 (dynamic_list_expr): New rule.
2141 (dynamic_list_nodes): Likewise.
2142 (dynamic_list_node): Likewise.
2143 * testsuite/Makefile.am (dynamic_list): New test.
2144 * testsuite/Makefile.in: Regenerated.
2145 * testsuite/dynamic_list.t: New file.
2146 * testsuite/dynamic_list.sh: New file.
2147
e0bb29a5
CS
21482008-11-05 Craig Silverstein <csilvers@google.com>
2149
2150 * testsuite/tls_test_c.c: Add prototype for t11 and t11_last.
2151 * testsuite/tls_test_c.c (t11): Add explicit "void" to prototype.
2152 (t11_last): Likewise.
2153 * testsuite/ver_test_6.c (main): Likewise.
2154
4e1e25e0
CC
21552008-10-07 Cary Coutant <ccoutant@google.com>
2156
2157 * options.c (General_options::finalize): Add check for -static and
2158 -shared.
2159 * gold.cc (queue_middle_tasks): Assert that list of dynamic objects
2160 is not empty.
2161
92f03fcb
CC
21622008-10-02 Cary Coutant <ccoutant@google.com>
2163
2164 * plugin.cc (make_sized_plugin_object): Fix conditional
2165 compilation to work when not all targets are enabled.
2166
fbd8a257
CC
21672008-09-29 Cary Coutant <ccoutant@google.com>
2168
2169 * archive.cc (Archive::get_file_and_offset): Use filename instead
2170 of name to get library path.
2171 (Archive::include_member): Unlock external member of a thin archive.
2172
2173 * testsuite/Makefile.am (TEST_AR): New variable.
2174 (thin_archive_test_1): New test.
2175 (thin_archive_test_2): New test.
81636b3f
CC
2176 * testsuite/Makefile.in: Regenerate.
2177 * testsuite/thin_archive_main.cc: New file.
2178 * testsuite/thin_archive_test_1.cc: New file.
2179 * testsuite/thin_archive_test_2.cc: New file.
2180 * testsuite/thin_archive_test_3.cc: New file.
2181 * testsuite/thin_archive_test_4.cc: New file.
fbd8a257 2182
eff45813
CC
21832008-09-29 Cary Coutant <ccoutant@google.com>
2184
2185 * mapfile.cc (Mapfile::print_input_section): Change -1U to -1ULL.
2186 * object.cc (Sized_relobj::do_layout): Use constant invalid_address
2187 instead of -1U.
2188 (Sized_relobj::do_finalize_local_symbols): Likewise.
2189 (Sized_relobj::map_to_kept_section): Likewise.
2190 * object.h (Sized_relobj::invalid_address): New constant.
2191 (Sized_relobj::do_output_section_offset): Check for invalid_address
2192 and return -1ULL.
2193 * output.cc (Output_reloc::local_section_offset): Use constant
2194 invalid_address instead of -1U.
2195 (Output_reloc::get_address): Likewise.
2196 (Output_section::output_address): Change -1U to -1ULL.
2197 * output.h (Output_reloc::invalid_address): New constant.
2198 * reloc.cc (Sized_relobj::write_sections): Use constant
2199 invalid_address instead of -1U.
2200 (Sized_relobj::relocate_sections): Likewise.
2201 * symtab.cc (Symbol_table::sized_finalize_symbol): Handle symbol
2202 values for merge sections.
2203 * target-reloc.h (relocate_for_relocatable): Use constant
2204 invalid_address instead of -1U.
2205
89fc3421
CC
22062008-09-19 Cary Coutant <ccoutant@google.com>
2207
2208 Add plugin functionality for link-time optimization (LTO).
2209 * configure.ac (plugins): Add --enable-plugins option.
2210 * configure: Regenerate.
2211 * config.in: Regenerate.
2212 * Makefile.am (LIBDL): New variable.
2213 (CCFILES): Add plugin.cc.
2214 (HFILES): Add plugin.h.
2215 (ldadd_var): Add LIBDL.
2216 * Makefile.in: Regenerate.
2217
2218 * archive.cc: Include "plugin.h".
2219 (Archive::setup): Don't preread archive symbols when using a plugin.
2220 (Archive::get_file_and_offset): Add memsize parameter. Change callers.
2221 (Archive::get_elf_object_for_member): Call plugin hooks for claiming
2222 files.
2223 (Archive::include_member): Add symbols from plugin objects.
2224 * archive.h (Archive::get_file_and_offset): Add memsize parameter.
2225 * descriptors.cc (Descriptors::open): Check for file descriptors
2226 abandoned by plugins.
2227 (Descriptors::claim_for_plugin): New function.
2228 * descriptors.h (Descriptors::claim_for_plugin): New function.
2229 (Open_descriptor::is_claimed): New field.
2230 (claim_descriptor_for_plugin): New function.
2231 * fileread.cc (File_read::claim_for_plugin): New function.
2232 * fileread.h (File_read::claim_for_plugin): New function.
2233 (File_read::descriptor): New function.
2234 * gold.cc: Include "plugin.h".
2235 (queue_initial_tasks): Add task to call plugin hooks for generating
2236 new object files.
2237 * main.cc: Include "plugin.h".
2238 (main): Load plugin libraries.
2239 * object.h (Pluginobj): Declare.
2240 (Object::pluginobj): New function.
2241 (Object::do_pluginobj): New function.
2242 (Object::set_target): New function.
2243 * options.cc: Include "plugin.h".
2244 (General_options::parse_plugin): New function.
2245 (General_options::General_options): Initialize plugins_ field.
2246 (General_options::add_plugin): New function.
2247 * options.h (Plugin_manager): Declare.
2248 (General_options): Add --plugin option.
2249 (General_options::has_plugins): New function.
2250 (General_options::plugins): New function.
2251 (General_options::add_plugin): New function.
2252 (General_options::plugins_): New field.
2253 * plugin.cc: New file.
2254 * plugin.h: New file.
2255 * readsyms.cc: Include "plugin.h".
2256 (Read_symbols::do_read_symbols): Check for archive before checking
2257 for ELF file. Call plugin hooks to claim files.
2258 * resolve.cc (Symbol_table::resolve): Record when symbol is referenced
2259 from a real object file; force override when processing replacement
2260 files.
2261 * symtab.cc (Symbol::init_fields): Initialize in_real_elf_ field.
2262 (Symbol::init_base_object): Likewise.
2263 (Symbol::init_base_output_data): Likewise.
2264 (Symbol::init_base_output_segment): Likewise.
2265 (Symbol::init_base_constant): Likewise.
2266 (Symbol::init_base_undefined): Likewise.
2267 (Symbol::output_section): Assert that object is not a plugin.
2268 (Symbol_table::add_from_pluginobj): New function.
2269 (Symbol_table::sized_finalize_symbol): Treat symbols from plugins as
2270 undefined.
2271 (Symbol_table::sized_write_globals): Likewise.
2272 (Symbol_table::add_from_pluginobj): Instantiate template.
2273 * symtab.h (Sized_pluginobj): Declare.
2274 (Symbol::in_real_elf): New function.
2275 (Symbol::set_in_real_elf): New function.
2276 (Symbol::in_real_elf_): New field.
2277 (Symbol_table::add_from_pluginobj): New function.
2278
2279 * testsuite/Makefile.am (AM_CFLAGS): New variable.
2280 (LIBDL): New variable.
2281 (LDADD): Add LIBDL.
2282 (check_PROGRAMS): Add plugin_test_1 and plugin_test_2.
2283 (check_SCRIPTS): Add plugin_test_1.sh and plugin_test_2.sh.
2284 (check_DATA): Add plugin_test_1.err and plugin_test_2.err.
2285 (MOSTLYCLEANFILES): Likewise.
2286 * testsuite/Makefile.in: Regenerate.
2287 * testsuite/plugin_test.c: New file.
2288 * testsuite/plugin_test_1.sh: New file.
2289 * testsuite/plugin_test_2.sh: New file.
2290
de31bda5
ILT
22912008-09-16 Ian Lance Taylor <iant@google.com>
2292
9c2d0ef9
ILT
2293 * target-reloc.h (relocate_section): Check whether a symbol is
2294 defined by the ABI before reporting an undefined symbol error.
2295 * target.h (Target::is_defined_by_abi): Make parameter const.
2296 (Target::do_is_defined_by_abi): Likewise.
2297 * i386.cc (Target_i386::do_is_defined_by_abi): Likewise.
2298 * powerpc.cc (Target_powerpc::do_is_defined_by_abi): Likewise.
2299 * sparc.cc (Target_sparc::do_is_defined_by_abi): Likewise.
2300 * x86_64.cc (Target_x86_64::do_is_defined_by_abi): Likewise.
2301 * testsuite/Makefile.am (tls_test_shared.so): Add -Wl,-z,defs.
2302 * testsuite/Makefile.in: Rebuild.
2303
de31bda5
ILT
2304 * fileread.cc (make_view): Add casts to avoid warning.
2305
9fa33bee
AO
23062008-09-16 Alexandre Oliva <aoliva@redhat.com>
2307
2308 * i386.cc (Target_i386::define_tls_base_symbol): Update comments.
2309 * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
2310
183fd0e3
AO
23112008-09-16 Alexandre Oliva <aoliva@redhat.com>
2312
2313 * options.h (General_options::output_is_executable): New.
2314 (General_options::output_is_pie): New.
2315 * i386.cc (Target_i386::define_tls_base_symbol): Use SEGMENT_START
2316 for shared libraries.
2317 * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
2318
7be8330a
CD
23192008-09-11 Chris Demetriou <cgd@google.com>
2320
2321 * options.h (origin): New -z option.
2322 * layout.cc (Layout:finish_dynamic_section): If "-z origin"
2323 is specified, set DF_ORIGIN in DT_FLAGS and set DF_1_ORIGIN
2324 in DT_FLAGS_1.
2325
a9caad02
CC
23262008-09-05 Cary Coutant <ccoutant@google.com>
2327
2328 * fileread.cc (File_read::make_view): Add check for attempt to map
2329 beyond end of file.
2330
ae6dce4d
CC
23312008-09-05 Cary Coutant <ccoutant@google.com>
2332
2333 * symtab.cc (Symbol_table::add_from_dynobj): Fix typos in
2334 explicit instantiations.
2335
d7ab2a47
KVH
23362008-08-28 Kris Van Hees <kris.van.hees@oracle.com>
2337
2338 PR gold/6858
2339 * options.cc (General_options::finalize): Allow undefined symbols
2340 in shlibs if linking -shared.
2341
2342 PR gold/6859
2343 * symtab.cc (Symbol::init_base_undefined): Mark explicitly undefined
2344 symbols as not needing a dynsym entry.
2345
1e52a9c1
CS
23462008-08-20 Craig Silverstein <csilvers@google.com>
2347
2348 * fileread.cc (File_read::open): Do not lock the file unless it
2349 was successfully opened.
2350
d85c80a3
CC
23512008-08-14 Cary Coutant <ccoutant@google.com>
2352
2353 * x86_64.cc (Target_x86_64::Relocate::relocat_tls):
2354 Use addend for DTPOFF32, DTPOFF64, and TPOFF32 relocs.
2355 * testsuite/tls_test.cc (struct int128): 128-bit struct
2356 for testing TLS relocs with non-zero addend.
2357 (v12): New TLS variable.
2358 (t12): New test.
2359 (t_last): Add check for v12.
2360 * testsuite/tls_test.h (t12): New function.
2361 * testsuite/tls_test_main.cc (thread_routine): Call new test.
2362
2d924fd9
ILT
23632008-08-13 Ian Lance Taylor <iant@google.com>
2364
2365 * layout.cc (Layout::attach_allocated_section_to_segment): Don't
2366 set tls_segment_ or relro_segment_.
2367 (Layout::make_output_segment): Set tls_segment_ and relro_segment_
2368 when appropriate.
2369 * output.h (Output_section::clear_is_relro): New function.
2370 * output.cc (Output_segment::add_output_section): Handle SHF_TLS
2371 sections specially even when output_data_ is empty.
2372 (Output_segment::maximum_alignment): When first section is relro,
2373 only force alignment for PT_LOAD segments.
2374 * script.cc (script_data_segment_align): New function.
2375 (script_data_segment_relro_end): New function.
2376 * script-c.h (script_data_segment_align): Declare.
2377 (script_data_segment_relro_end): Declare.
2378 * script-sections.h (class Script_sections): Declare
2379 data_segment_align and data_segment_relro_end. Add fields
2380 segment_align_index_ and saw_relro_end_.
2381 * script-sections.cc (class Sections_element): Add set_is_relro
2382 virtual function. Add new bool* parameter to place_orphan_here.
2383 Add get_output_section virtual function.
2384 (class Output_section_definition): Add set_is_relro. Add new
2385 bool* parameter to place_orphan_here. Add get_output_section.
2386 Add is_relro_ field.
2387 (Output_section_definition::Output_section_definition): Initialize
2388 evaluated_address_, evaluated_load_address, evaluated_addralign_,
2389 and is_relro_ fields.
2390 (Output_section_definition::place_orphan_here): Add is_relro
2391 parameter.
2392 (Output_section_definition::set_section_addresses): Set relro for
2393 output section.
2394 (Output_section_definition::alternate_constraint): Likewise.
2395 (class Orphan_output_section): Add new bool* parameter to
2396 place_orphan_here. Add get_output_section.
2397 (Orphan_output_section::place_orphan_here): Add is_relro
2398 parameter.
2399 (Script_sections::Script_sections): Initialize
2400 data_segment_align_index_ and saw_relro_end_.
2401 (Script_sections::data_segment_align): New function.
2402 (Script_sections::data_segment_relro_end): New function.
2403 (Script_sections::place_orphan): Set or clear is_relro.
2404 (Script_sections::set_section_addresses): Force alignment of first
2405 TLS section.
2406 * yyscript.y (exp): Call script_data_segment_align and
2407 script_data_segment_relro_end.
2408 * testsuite/relro_script_test.t: New file.
2409 * testsuite/relro_test.cc (using_script): Declare.
2410 (t1, t2): Test using_script.
2411 * testsuite/Makefile.am (check_PROGRAMS): Add relro_script_test.
2412 (relro_script_test_SOURCES): Define.
2413 (relro_script_test_DEPENDENCIES): Define.
2414 (relro_script_test_LDFLAGS): Define.
2415 (relro_script_test_LDADD): Define.
2416 (relro_script_test.so): New target.
2417 * testsuite/Makefile.in: Rebuild.
2418
f827c9a9
CC
24192008-08-06 Cary Coutant <ccoutant@google.com>
2420
2421 * archive.cc (Archive::total_archives, Archive::total_members)
2422 (Archive::total_members_loaded): New variables.
2423 (Archive::setup): Add parameter. Add option to preread
2424 archive symbols.
2425 (Archive::read_armap): Add counter.
2426 (Archive::get_file_and_offset): New function.
2427 (Archive::get_elf_object_for_member): New function.
2428 (Archive::read_all_symbols): New function.
2429 (Archive::read_symbols): New function.
2430 (Archive::add_symbols): Add counters.
2431 (Archive::include_all_members): Use armap to find members if it's
2432 already built.
2433 (Archive::include_member): Skip reading symbols if already read.
2434 Factored code into Archive::get_file_and_offset and
2435 Archive::get_elf_object_for_member. Changed call to
2436 Mapfile::report_include_archive_member.
2437 (Archive::print_stats): New function.
2438 * archive.h: Declare Object and Read_symbols_data classes.
2439 (Archive::Archive): Add initializers for new members.
2440 (Archive::setup): Add parameter.
2441 (Archive::print_stats): New function.
2442 (Archive::total_archives, Archive::total_members)
2443 (Archive::total_members_loaded): New variables.
2444 (Archive::get_file_and_offset): New function.
2445 (Archive::get_elf_object_for_member): New function.
2446 (Archive::read_all_symbols): New function.
2447 (Archive::read_symbols): New function.
2448 (Archive::Archive_member): New class.
2449 (Archive::members_): New member.
2450 (Archive::num_members_): New member.
2451 * main.cc: Include archive.h.
2452 (main): Call Archive::print_stats.
2453 * mapfile.cc (Mapfile::report_include_archive_member): Delete
2454 archive parameter; member_name is now the fully-decorated name.
2455 * mapfile.h (Mapfile::report_include_archive_member): Likewise.
2456 * options.h: (General_options): Add --preread-archive-symbols option.
2457 * readsyms.cc (Read_symbols::do_read_symbols): Change call to
2458 Archive::setup.
2459
de4c45bd
ILT
24602008-08-04 Ian Lance Taylor <iant@google.com>
2461
2462 * symtab.h (Symbol::use_plt_offset): New function.
2463 * i386.cc (Relocate::relocate): Call Symbol::use_plt_offset.
2464 * powerpc.cc (Relocate::relocate): Likewise.
2465 * sparc.cc (Relocate::relocate): Likewise.
2466 * x86_64.cc (Relocate::relocate): Likewise.
2467 * testsuite/weak_plt.sh: New test.
2468 * testsuite/weak_plt_main.cc: New test.
2469 * testsuite/weak_plt_shared.cc: New test.
2470 * testsuite/Makefile.am (check_SCRIPTS): Add weak_plt.sh.
2471 (check_PROGRAMS): Add weak_plt.
2472 (check_DATA): Add weak_plt_shared.so.
2473 (weak_plt_main_pic.o, weak_plt): New targets.
2474 (weak_plt_shared_pic.o, weak_plt_shared.so): New targets.
2475 * testsuite/Makefile.in: Rebuild.
2476
2477 * testsuite/Makefile.am (weak_alias_test_1.so): Depend upon
2478 gcctestdir/ld.
2479 (weak_alias_test_2.so, weak_alias_test_4.so): Likewise.
2480 * testsuite/Makefile.in: Rebuild.
2481
323ee3f4
AM
24822008-08-04 Alan Modra <amodra@bigpond.net.au>
2483
2484 * Makefile.am (POTFILES.in): Set LC_ALL=C.
2485 * Makefile.in: Regenerate.
2486 * po/POTFILES.in: Regenerate.
2487
7c07ecec
ILT
24882008-07-29 Ian Lance Taylor <iant@google.com>
2489
2490 * script.cc (Script_options::finalize_symbols): Finalize SECTIONS
2491 symbols before other symbols.
2492 * testsuite/script_test_2.cc (test_addr): Declare.
2493 (test_addr_alias): Declare.
2494 (main): Check that test_addr and test_addr_alias have the right
cd536b21 2495 values.
7c07ecec
ILT
2496 * testsuite/script_test_2.t: Define test_addr_alias and
2497 test_addr.
2498
5778530e
ILT
24992008-07-24 Ian Lance Taylor <iant@google.com>
2500
2a00e4fb
ILT
2501 PR 5990
2502 * descriptors.cc: New file.
2503 * descriptors.h: New file.
2504 * gold-threads.h (class Hold_optional_lock): New class.
2505 * fileread.cc: Include "descriptors.h".
2506 (File_read::~File_read): Release descriptor rather than closing
2507 it.
2508 (File_read::open) [file]: Call open_descriptor rather than open.
2509 Set is_descriptor_opened_.
2510 (File_read::open) [memory]: Assert that descriptor is not open.
2511 (File_read::reopen_descriptor): New function.
2512 (File_read::release): Release descriptor.
2513 (File_read::do_read): Make non-const. Reopen descriptor.
2514 (File_read::read): Make non-const.
2515 (File_read::make_view): Reopen descriptor.
2516 (File_read::do_readv): Likewise.
2517 * fileread.h (class File_read): Add is_descriptor_opened_ field.
2518 Update declarations.
2519 * layout.cc: Include "descriptors.h".
2520 (Layout::create_build_id): Use open_descriptor rather than open.
2521 * output.cc: Include "descriptors.h".
2522 (Output_file::open): Use open_descriptor rather than open.
2523 * archive.cc (Archive::const_iterator): Change Archive to be
2524 non-const.
2525 (Archive::begin, Archive::end): Make non-const.
2526 (Archive::count_members): Likewise.
2527 * archive.h (class Archive): Update declarations.
2528 * object.h (Object::read): Make non-const.
2529 * Makefile.am (CCFILES): Add descriptors.cc.
2530 (HFILES): Add descriptors.h.
2531 * Makefile.in: Rebuild.
2532
801647d1
ILT
2533 PR 6716
2534 * gold.h: Always include <clocale>. Add Solaris workarounds
2535 following code in binutils/sysdep.h.
2536
5edd166e
ILT
2537 PR 6048
2538 * ehframe.cc (Eh_frame::add_ehframe_input_section): Check whether
2539 this->eh_frame_hdr_ is NULL before using it.
2540
c89ad728
ILT
2541 * dynobj.cc (Versions::Versions): Update comment.
2542
aa86f06b
ILT
2543 * dynobj.cc (Versions::Versions): If there is an soname, use it as
2544 the base version name.
2545
5778530e
ILT
2546 * stringpool.cc (Stringpool_template::add_with_length): Set key to
2547 array size plus one.
2548 (Stringpool_template::set_string_offsets): Subtract one from key
2549 before using it as an array index.
2550 (Stringpool_template::get_offset_with_length): Likewise.
2551 (Stringpool_template::write_to_buffer): Likewise.
2552 * stringpool.h (Stringpool_template::get_offset_from_key):
2553 Likewise.
2554
057ead22
ILT
25552008-07-23 Ian Lance Taylor <iant@google.com>
2556
7f649c59
ILT
2557 PR 6658
2558 * object.h (Merged_symbol_value::value): Do our best to handle a
2559 negative addend.
2560
057ead22
ILT
2561 PR 6647
2562 * script.cc (Version_script_info::get_versions): Don't add empty
2563 version tag to return value.
2564 (Version_script_info::get_symbol_version_helper): Change return
2565 type to bool. Add pversion parameter. Change all callers.
2566 (script_register_vers_node): Don't require a non-NULL tag.
2567 * script.h (class Version_script_info): Update declarations.
2568 (Version_script_info::get_symbol_version): Change return type to
2569 bool. Add version parameter. Change all callers.
2570 * symtab.cc (Sized_symbol::add_from_relobj): Rework version
2571 handling. Handle an empty version from a version script.
2572 (Symbol_table::define_special_symbol): Likewise.
2573 * testsuite/ver_test_10.script: New file.
2574 * testsuite/ver_test_10.sh: New file.
2575 * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_10.sh.
2576 (check_DATA): Add ver_test_10.syms.
2577 (ver_test_10.syms, ver_test_10.so): New target.
2578 * testsuite/Makefile.in: Rebuild.
2579
58e54ac2
CD
25802008-07-23 Simon Baldwin <simonb@google.com>
2581
2582 * symtab.cc (Symbol_table::sized_write_symbol): Only set st_size
2583 to zero for undefined symbols from dynamic libraries.
2584
95d14cd3
ILT
25852008-07-23 Ian Lance Taylor <iant@google.com>
2586
2587 * symtab.cc (Symbol_table::resolve): Remove version parameter.
2588 Change all callers.
2589 * symtab.h (class Symbol_table): Update declaration.
2590 * testsuite/ver_test_9.cc: New file.
2591 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_9.
2592 (ver_test_9_SOURCES, ver_test_9_DEPENDENCIES): Define.
2593 (ver_test_9_LDFLAGS, ver_test_9_LDADD): Define.
2594 (ver_test_9.so, ver_test_9.o): New targets.
2595 * testsuite/Makefile.in: Rebuild.
2596
92de84a6
ILT
25972008-07-22 Ian Lance Taylor <iant@google.com>
2598
34810851
ILT
2599 * options.h (class General_options): Define --check-sections.
2600 * layout.cc (Layout::set_segment_offsets): Handle
2601 --check-sections.
2602
af6156ef
ILT
2603 * options.h (class General_options): Define -n/--nmagic and
2604 -N/--omagic.
2605 * options.cc (General_options::finalize): For -n/--nmagic or
2606 -N/--omagic, set -static.
2607 * layout.cc (Layout::attach_allocated_section_to_segment): If
2608 -N/--omagic, don't put read-only and read-write sections in
2609 different segments.
2610 (Layout::find_first_load_seg): If -N/--omagic, don't insist on
2611 finding a read-only segment.
2612 (Layout::set_segment_offsets): If -N/--omagic or -n/--nmagic,
2613 don't set the minimum segment alignment to the common page size,
2614 and don't set the file offset to the address modulo the page size.
2615 * script-sections.cc (Script_sections::create_segments): If
2616 -n/--omagic, don't put read-only and read-write sections in
2617 different segments.
2618
92de84a6
ILT
2619 * cref.cc: New file.
2620 * cref.h: New file.
2621 * options.h (class General_options): Add --print-symbol-counts.
2622 * main.cc (main): Issue defined symbol report if requested.
2623 * archive.cc (Archive::interpret_header): Make into a const member
2624 function.
2625 (Archive::add_symbols): Call Input_objects::archive_start and
2626 archive_stop.
2627 (Archive::const_iterator): Define new class.
2628 (Archive::begin, Archive::end): New functions.
2629 (Archive::include_all_members): Rewrite to use iterator.
2630 (Archive::count_members): New function.
2631 * archive.h (class Archive): Update declarations.
2632 (Archive::filename): New function.
2633 * object.cc: Include "cref.h".
2634 (Sized_relobj::Sized_relobj): Initialize defined_count_.
2635 (Sized_relobj::do_get_global_symbol_counts): New function.
2636 (Input_objects::add_object): Add object to cross-referencer.
2637 (Input_objects::archive_start): New function.
2638 (Input_objects::archive_stop): New function.
2639 (Input_objects::print_symbol_counts): New function.
2640 * object.h: Declare Cref and Archive.
2641 (Object::get_global_symbol_counts): New function.
2642 (Object::do_get_global_symbol_counts): New pure virtual function.
2643 (class Sized_relobj): Add defined_count_ field. Update
2644 declarations.
2645 (class Input_objects): Add cref_ field. Update constructor.
2646 Update declarations.
2647 * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize symbols_ and
2648 defined_count_.
2649 (Sized_dynobj::do_add_symbols): Allocate symbols_ if printing
2650 symbol counts.
2651 (Sized_dynobj::do_get_global_symbol_counts): New function.
2652 * dynobj.h (class Sized_dynobj): Add fields symbols_ and
2653 defined_count_. Update declarations. Define Symbols typedef.
2654 * symtab.cc (Symbol_table::add_from_relobj): Add defined
2655 parameter. Change all callers.
2656 (Symbol_table::add_from_dynobj): Add sympointers and defined
2657 parameters. Change all callers.
2658 * symtab.h (class Symbol_table): Update declarations.
2659 * Makefile.am (CCFILES): Add cref.cc.
2660 (HFILES): Add cref.h.
2661 * Makefile.in: Rebuild.
2662
3f7c5e1d
CD
26632008-07-22 Simon Baldwin <simonb@google.com>
2664
2665 * symtab.cc (Symbol_table::sized_write_symbol): Set symbol size
2666 to zero when writing undefined symbols.
2667
e0b64032
ILT
26682008-07-22 Ian Lance Taylor <iant@google.com>
2669
2670 * output.cc (Output_section::add_input_section): Don't try to
2671 merge empty merge sections.
2672
096b02cf
CS
26732008-07-21 Craig Silverstein <csilvers@google.com>
2674
2675 * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
2676 Include symbol version in error message.
cd536b21 2677
1d1f116d
CD
26782008-07-20 Chris Demetriou <cgd@google.com>
2679
cd536b21 2680 * configure.ac (gold_cv_c_random_seed): New configured variable.
1d1f116d
CD
2681 (RANDOM_SEED_CFLAGS): New substituted variable.
2682 * Makefile.am (AM_CFLAGS, AM_CXXFLAGS): Add $(RANDOM_SEED_CFLAGS).
2683 * configure: Rebuild.
2684 * Makefile.in: Likewise.
2685 * testsuite/Makefile.in: Likewise.
2686
a18f591e
ILT
26872008-07-18 Ian Lance Taylor <iant@google.com>
2688
2689 * symtab.cc (Symbol_table::add_from_object): Rewrite the case
2690 where we see NAME/NULL and NAME/VERSION as separate symbols.
2691 * testsuite/ver_test_main.cc (main): Call t4.
2692 (t4, t4_2a): Define.
2693 * testsuite/ver_test_2.cc (t4_2): Define.
2694 * testsuite/ver_test_2.script: Put t4_2a in VER2.
2695 * testsuite/ver_test_4.cc (t4_2a): Define.
2696 * testsuite/ver_test_4.script: Put t4_2a in VER2.
2697 * testsuite/ver_test.h (t4, t4_2, t4_2a): Declare.
2698
c6e3f6ed
ILT
26992008-07-17 Ian Lance Taylor <iant@google.com>
2700
2701 * dynobj.cc (Versions::add_def): If we give an error about a
2702 missing version, go ahead and create the version anyhow.
2703
ef9beddf
ILT
27042008-07-10 Ian Lance Taylor <iant@google.com>
2705
2706 Handle output sections with more than 0x7fffffff bytes.
2707 * object.h (class Relobj): Change map_to_output_ to
2708 output_sections_, and just keep a section pointer. Change all
2709 uses. Move comdat group support to Sized_relobj.
2710 (Relobj::is_section_specially_mapped): Remove.
2711 (Relobj::output_section): Remove poff parameter. Change all
2712 callers.
2713 (Relobj::output_section_offset): New function.
2714 (Relobj::set_section_offset): Rewrite.
2715 (Relobj::map_to_output): Remove.
2716 (Relobj::output_sections): New function.
2717 (Relobj::do_output_section_offset): New pure virtual function.
2718 (Relobj::do_set_section_offset): Likewise.
2719 (class Sized_relobj): Add section_offsets_ field. Add comdat
2720 group support from Relobj. Update declarations.
2721 (Sized_relobj::get_output_section_offset): New function.
2722 (Sized_relobj::do_output_section_offset): New function.
2723 (Sized_relobj::do_set_section_offset): New function.
2724 * object.cc (Relobj::output_section_address): Remove.
2725 (Sized_relobj::Sized_relobj): Initialize new fields.
2726 (Sized_relobj::include_section_group): Cast find_kept_object to
2727 Sized_relobj.
2728 (Sized_relobj::include_linkonce_section): Likewise.
2729 (Sized_relobj::do_layout): Use separate arrays for output section
2730 and output offset.
2731 (Sized_relobj::do_count_local_symbols): Change map_to_output to
2732 output_sections.
2733 (Sized_relobj::do_finalize_local_symbols): Change map_to_output to
2734 output_sections and section_offsets.
2735 (Sized_relobj::write_local_symbols): Likewise.
2736 (map_to_kept_section): Compute output address directly.
2737 * reloc.cc (Sized_relobj::do_read_relocs): Change map_to_output to
2738 output_sections and section_offsets.
2739 (Sized_relobj::write_sections): Likewise.
2740 (Sized_relobj::relocate_sections): Likewise.
2741 * symtab.cc (sized_finalize_symbol): Use output_section_offset.
2742 * output.h (class Output_reloc): Update declarations. Change
2743 u2_.relobj to Sized_relobj*.
2744 (class Output_data_reloc): Change add functions to use
2745 Sized_relobj*.
2746 * output.cc (Output_reloc::Output_reloc): Change relobj to
2747 Sized_relobj*.
2748 (Output_reloc::local_section_offset): Change return type to
2749 Elf_Addr. Use get_output_section_offset.
2750 (Output_reloc::get_address): Likewise.
2751 (Output_section::is_input_address_mapped): Don't call
2752 is_section_specially_mapped.
2753 (Output_section::output_offset): Likewise.
2754 (Output_section::output_address): Likewise.
2755 (Output_section::starting_output_address): Likewise.
2756 * copy-relocs.cc (Copy_relocs::copy_reloc): Change object
2757 parameter to Sized_relobj*.
2758 (Copy_relocs::need_copy_reloc): Likewise.
2759 (Copy_relocs::save): Likewise.
2760 * copy-relocs.h (class Copy_relocs): Update declarations.
2761 (class Copy_relocs::Copy_reloc_entry): Change constructor to use
2762 Sized_relobj*. Change relobj_ field to Sized_relobj*.
2763 * target-reloc.h (relocate_for_relocatable): Change
2764 offset_in_output_section type to Elf_Addr. Change code that uses
2765 it as well.
2766 * layout.cc (Layout::layout): Always set *off.
2767 * mapfile.cc (Mapfile::print_input_section): Use
2768 output_section_offset.
2769 * i386.cc (Target_i386::copy_reloc): Change object parameter to
2770 Sized_relobj*.
2771 * powerpc.cc (Target_powerpc::copy_reloc): Likewise.
2772 * sparc.cc (Target_sparc::copy_reloc): Likewise.
2773 * x86_64.cc (Target_x86_64::copy_reloc): Likewise.
2774
5cb66f97
ILT
27752008-07-03 Ian Lance Taylor <iant@google.com>
2776
2777 * layout.cc (Layout::include_section): Do not discard unrecognized
2778 SHT_STRTAB sections.
2779
afe47622
CS
27802008-06-30 Craig Silverstein <csilvers@cs.stanford.edu>
2781
2782 * script.cc (Lex::can_continue_name): Make '?' allowable in
2783 version-script names.
2784 * testsuite/version_script.map: Change glob pattern to use '?'
2785
5adf9721
ILT
27862008-06-30 Manish Singh <yosh@gimp.org>
2787
2788 PR 6585
2789 * symtab.cc (Symbol_table::add_undefined_symbols_from_command_line):
2790 Correct typo.
2791
e6fde208
ILT
27922008-06-30 Ian Lance Taylor <iant@google.com>
2793
2794 PR 6660
2795 PR 6682
2796 * powerpc.cc (Powerpc_relocate_functions::addr16_ha) [both
2797 versions]: Don't try to read the value in the contents, since we
2798 don't use it. Use the template endianness when writing.
2799
3f2e6a2d
CC
28002008-06-25 Cary Coutant <ccoutant@google.com>
2801
2802 * fileread.cc (File_read::make_view): Assert on zero-length view.
2803 * object.cc (Sized_relobj::do_read_symbols): Don't try to read
2804 symbol table when there are no symbols to read.
2805
c43d3a48
CS
28062008-06-23 Craig Silverstein <csilvers@google.com>
2807
2808 * version.cc (version_string): Bump to 1.7
2809
5f494ea0
CS
28102008-06-18 Craig Silverstein <csilvers@google.com>
2811
2812 * powerpc.cc (Powerpc_relocate_functions::addr16_ha): cast
2813 constant 0xFFFF to type Valtype.
2814 (Powerpc_relocate_functions::rel16_ha): Likewise.
2815
c42e122e
ILT
28162008-06-17 Ian Lance Taylor <iant@google.com>
2817
f34787f8
ILT
2818 * output.h (Output_section::Input_section): Initialize p2align_ to
2819 zero for Output_section_data constructors.
2820 (Output_section::Input_section::addralign): If not an input
2821 section, return the alignment of the Output_section_data.
2822 * testsuite/copy_test.cc: New file.
2823 * testsuite/copy_test_1.cc: New file.
2824 * testsuite/copy_test_2.cc: New file.
2825 * testsuite/Makefile.am (check_PROGRAMS): Add copy_test.
2826 (copy_test_SOURCES, copy_test_DEPENDENCIES): New variables.
2827 (copy_test_LDFLAGS, copy_test_LDADD): New variables.
2828 (copy_test_1_pic.o, copy_test_1.so): New targets.
2829 (copy_test_2_pic.o, copy_test_2.so): New targets.
2830 * testsuite/Makefile.in: Rebuild.
2831
c42e122e
ILT
2832 * script-sections.cc (Script_sections::place_orphan): Initialize
2833 local variable exact.
2834
ce3ac18a
DE
28352008-06-13 David Edelsohn <edelsohn@gnu.org>
2836
2837 * powerpc.cc (Output_data_plt_powerpc::do_write): 8 + 4 = 0xC.
2838
42cacb20
DE
28392008-06-12 David Edelsohn <edelsohn@gnu.org>
2840 David S. Miller <davem@davemloft.net>
2841
2842 * powerpc.cc: New file.
2843 * Makefile.am (TARGETSOURCES): Add powerpc.cc
2844 (ALL_TARGETOBJS): Add powerpc.$(OBJEXT)
2845 * configure.tgt: Add entries for powerpc-* and powerpc64-*.
2846 * Makefile.in: Rebuild.
2847
7b308235
ILT
28482008-06-09 Ian Lance Taylor <iant@google.com>
2849
2850 * testsuite/relro_test.cc: Include <cstdio>, <cstdlib>, and
2851 <exception>.
2852 (throwing, orig_terminate): New static variables.
2853 (terminate_handler): New static function.
2854 (t2): Set terminate handler.
2855
f0b886e3
ILT
28562008-06-05 Kris Van Hees <kris.van.hees@oracle.com>
2857
2858 PR 6584
cd536b21 2859 * binary.cc (Binary_to_elf::sized_convert): Fix .data
f0b886e3
ILT
2860 alignment.
2861
3e90f135
CC
28622008-05-30 Cary Coutant <ccoutant@google.com>
2863
2864 * archive.cc (Archive::include_all_members) Correct to step
2865 over symbol table and extended name table in thin archives.
2866
e09ad04a
ILT
28672008-05-29 Kris Van Hees <kris.van.hees@oracle.com>
2868
2869 PR 6407
2870 * target-reloc.h (relocate_for_relocatable): Fix new_offset
2871 calculation.
2872
62b01cb5
ILT
28732008-05-28 Caleb Howe <cshowe@google.com>
2874
2875 * reduced_debug_output.cc: New file.
2876 * reduced_debug_output.h: New file.
92de84a6 2877 * options.h (class General_options): Add --strip-debug-non-line.
62b01cb5
ILT
2878 * options.cc (General_options::finalize): Add strip_debug_non_line
2879 to the strip heirarchy.
2880 * layout.h (class Layout): Add debug_abbrev_ and debug_info_
2881 fields.
2882 * layout.cc: Include "reduced_debug_output.h".
2883 (Layout::Layout): Initialize new fields.
2884 (line_only_debug_sections): New static array.
2885 (is_lines_only_debug_sections): New static inline function.
2886 (Layout::include_section): Handle --strip-debug-non-line.
2887 (Layout::make_output_section): If --strip-debug-non-line, build
2888 new output sections for .debug_abbrev and .debug_info.
2889 * dwarf_reader.cc (read_unsigned_LEB_128): Move to namespace
2890 gold. Warn about possible overflow.
2891 (read_signed_LEB_128): Likewise.
2892 * dwarf_reader.h: (read_unsigned_LEB_128): Declare.
2893 (read_signed_LEB_128): Declare.
2894 * Makefile.am (CCFILES): Add reduced_debug_output.cc.
2895 (HFILES): Add reduced_debug_output.h.
2896 * Makefile.in: Rebuild.
2897
7d9e3d98
ILT
28982008-05-21 Ian Lance Taylor <iant@google.com>
2899
2900 * mapfile.cc: New file.
2901 * mapfile.h: New file.
2902 * options.h (class General_options): Add -M/--print-map and -Map.
2903 * options.cc (General_options::finalize): Make -M equivalent to
2904 -Map -.
2905 * main.cc: Include <cstdio> and "mapfile.h".
2906 (main): Open mapfile if requested.
2907 * gold.cc (class Middle_runner): Add mapfile_ field. Update
2908 constructor. Change caller.
2909 (queue_initial_tasks): Add mapfile parameter. Change caller.
2910 (queue_middle_tasks): Likewise.
2911 * gold.h (queue_initial_tasks, queue_middle_tasks): Update
2912 declarations.
2913 * archive.cc: Include "mapfile.h".
2914 (Archive::add_symbols): Add mapfile parameter. Change all
2915 callers. Pass mapfile, symbol, and reason to include_member.
2916 (Archive::include_all_members): Add mapfile parameter. Change all
2917 callers.
2918 (Archive::include_member): Add mapfile, sym, and why parameters.
2919 Change all callers. Report inclusion to map file.
2920 * archive.h: Include "fileread.h".
2921 (class Archive): Update declarations.
2922 (Archive::file): New const method.
2923 (class Add_archive_symbols): Add mapfile_ field. Update
2924 constructor. Change all callers.
2925 * readsyms.h (class Read_symbols): Likewise.
2926 (class Finish_group): Likewise.
2927 (class Read_script): Likewise.
2928 * common.cc: Include "mapfile.h".
2929 (Symbol_table::allocate_commons): Add mapfile parameter. Change
2930 all callers.
2931 (Symbol_table::do_allocate_commons): Likewise.
2932 (Symbol_table::do_allocate_commons_list): Likewise. Report common
2933 symbol allocation to mapfile.
2934 * common.h (class Allocate_commons_task): Add mapfile_ field.
2935 Update constructor. Change all callers.
2936 * symtab.h (class Symbol_table): Update declarations.
2937 * layout.cc: Include "mapfile.h".
2938 (Layout_task_runner::run): Print information to mapfile.
2939 (Layout::create_gold_note): Change Output_data_fixed_space to
2940 Output_data_zero_fill.
2941 (Layout::create_build_id): Likewise.
2942 (Layout::print_to_mapfile): New function.
2943 * layout.h (class Layout_task_runner): Add mapfile_ field. Update
2944 constructor. Change caller.
2945 (class Layout): Declare print_to_mapfile.
2946 * output.cc (Output_section::Input_section::print_to_mapfile): New
2947 function.
2948 (Output_section::add_input_section): If producing a map, always
2949 add to input_sections_ list.
2950 (Output_section::do_print_to_mapfile): New function.
2951 (Output_segment::print_sections_to_mapfile): New function.
2952 (Output_segment::print_section_list_to_mapfile): New function.
2953 * output.h: Include "mapfile.h".
2954 (Output_data::print_to_mapfile): New function.
2955 (Output_data::do_print_to_mapfile): New virtual function.
2956 (Output_segment_headers::do_print_to_mapfile): New function.
2957 (Output_file_header::do_print_to_mapfile): New function.
2958 (Output_data_const::do_print_to_mapfile): New function.
2959 (class Output_data_const_buffer): Add map_name_ field. Update
2960 constructor. Change all callers. Add do_print_to_mapfile
2961 function.
2962 (class Output_data_fixed_space): Likewise.
2963 (class Output_data_space): Likewise.
2964 (class Output_data_zero_fill): New class.
2965 (Output_data_strtab::do_print_to_mapfile): New function.
2966 (Output_data_reloc_base::do_print_to_mapfile): New function.
2967 (Output_relocatable_relocs::do_print_to_mapfile): New function.
2968 (Output_data_group::do_print_to_mapfile): New function.
2969 (Output_data_got::do_print_to_mapfile): New function.
2970 (Output_data_dynamic::do_print_to_mapfile): New function.
2971 (Output_symtab_xindex::do_print_to_mapfile): New function.
2972 (class Output_section): Declare do_print_to_mapflie. Declare
2973 print_to_mapfile in Input_section.
2974 (class Output_segment): Declare new functions.
2975 * object.h (Sized_relobj::symbol_count): New function.
2976 * script-sections.cc
2977 (Output_section_element_dot_assignment::set_section_addresses):
2978 Change Output_data_fixed_space to Output_data_zero_fill.
2979 (Output_data_expression::do_print_to_mapfile): New function.
2980 * script.cc (read_input_script): Add mapfile parameter. Change
2981 all callers.
2982 * script.h (read_input_script): Update declaration.
2983 * ehframe.h (Eh_frame_hdr::do_print_to_mapfile): New function.
2984 (Eh_frame::do_print_to_mapfile): New function.
2985 * merge.h (Output_merge_data::do_print_to_mapfile): New function.
2986 (Output_merge_string::do_print_to_mapfile): New function.
2987 * i386.cc (Output_data_plt_i386::do_print_to_mapfile): New
2988 function.
2989 * sparc.cc (Output_data_plt_sparc::do_print_to_mapfile): New
2990 function.
2991 * x86_64.cc (Output_data_plt_x86_64::do_print_to_mapfile): New
2992 function.
2993 * Makefile.am (CCFILES): Add mapfile.cc.
2994 (HFILES): Add mapfile.h.
2995 * Makefile.in: Rebuild.
2996
9f1d377b
ILT
29972008-05-19 Ian Lance Taylor <iant@google.com>
2998
2999 * options.h (class General_options): Add -z relro.
3000 * layout.cc (Layout::Layout): Initialize relro_segment_.
3001 (Layout::add_output_section_data): Return the output section.
3002 (Layout::make_output_section): Rcognize relro sections and mark
3003 them appropriately.
3004 (Layout::attach_allocated_section_to_segment): Put relro sections
3005 in a PT_GNU_RELRO segment.
3006 (Layout::create_initial_dynamic_sections): Mark the .dynamic
3007 section as relro.
3008 (Layout::segment_precedes): Sort PT_GNU_RELRO segments after
3009 PT_TLS segments.
3010 (Layout::linkonce_mapping): Map d.rel.ro.local to
3011 .data.rel.ro.local.
3012 (Layout::output_section_name): Us .data.rel.ro.local for any
3013 section which begins with that.
3014 * layout.h (class Layout): Update add_output_section_data
3015 declaration. Add relro_segment_ field.
3016 * output.cc (Output_section::Output_section): Initialize is_relro_
3017 and is_relro_local_ fields.
3018 (Output_segment::add_output_section): Group relro sections.
3019 (Output_segment::is_first_section_relro): New function.
3020 (Output_segment::maximum_alignment): If there is a relro section,
3021 align the segment to the common page size.
3022 (Output_segment::set_section_addresses): Track whether we are
3023 looking at relro sections. If the last section is a relro
3024 section, align to the common page size.
3025 (Output_segment::set_section_list_addresses): Add in_relro
3026 parameter. Change all callers. Align to the page size when
3027 moving from relro to non-relro section.
3028 (Output_segment::set_offset): Align memsz of a PT_GNU_RELRO
3029 segment.
3030 * output.h (class Output_section): Add is_relro_ and
3031 is_relro_local_ fields.
3032 (Output_section::is_relro): New function.
3033 (Output_section::set_is_relro): New function.
3034 (Output_section::is_relro_local): New function.
3035 (Output_section::set_is_relro_local): New function.
3036 (class Output_segment): Update declarations.
3037 * i386.cc (Target_i386::got_section): Mark .got section as relro.
3038 * sparc.cc (Target_sparc::got_section): Likewise.
3039 * x86_64.cc (Target_x86_64::got_section): Likewise.
3040 * testsuite/relro_test_main.cc: New file.
3041 * testsuite/relro_test.cc: New file.
3042 * testsuite/Makefile.am (check_PROGRAMS): Add relro_test.
3043 (relro_test_SOURCES, relro_test_DEPENDENCIES): New variables.
3044 (relro_test_LDFLAGS, relro_test_LDADD): New variables.
3045 (relro_test.so, relro_test_pic.o): New targets.
3046 * testsuite/Makefile.in: Rebuild.
3047
a984ee1d
ILT
30482008-05-16 Ian Lance Taylor <iant@google.com>
3049
01676dcd
ILT
3050 * output.cc (Output_segment::add_output_section): Remove front
3051 parameter.
3052 * output.h (class Output_segment): Remove
3053 add_initial_output_section and overloaded add_output_section.
3054 Update declaration of remaining add_output_section.
3055 * layout.cc (Layout::create_interp): Call add_output_section
3056 rather than add_initial_output_section.
3057 (Layout::finish_dynamic_section): Likewise.
3058
497897f9
ILT
3059 * i386.cc (Target_i386::Relocate::relocate_tls): Set dynamic type
3060 for TLS_GOTDESC and TLS_DESC_CALL. Only optimize TLS_LDO_32 if we
3061 know the dynamic type.
3062 * x86_64.cc (Target_x86_64::Relocate): Add saw_tls_block_reloc_
3063 field. Initialize it in constructor.
3064 (Target_x86_64::Relocate::relocate_tls): Record that we saw a TLS
3065 block reloc for TLSGD, GOTPC32_TLSDESC, TLSDESC_CALL, and TLSLD.
3066 Only optimize DTPOFF32 and DTPOFF64 if we have seen a TLS block
3067 reloc.
3068
a984ee1d
ILT
3069 * output.cc (Output_reloc::get_address): Change return type to
3070 Elf_Addr.
3071 * output.h (class Output_reloc): Update get_address declaration.
3072 * x86_64.cc (Output_data_plt_x86_64::do_write): Use 64-bit types
3073 for section addresses.
3074
55ba0940
ILT
30752008-05-09 Ian Lance Taylor <iant@google.com>
3076
3077 PR 6493
3078 * gold.cc (gold_nomem): Use return value of write.
3079
75517b77
ILT
30802008-05-08 Ian Lance Taylor <iant@google.com>
3081
3082 * symtab.c (Symbol::init_base_output_data): Add version
3083 parameter. Change all callers.
3084 (Symbol::init_base_output_segment): Likewise.
3085 (Symbol::init_base_constant): Likewise.
3086 (Symbol::init_base_undefined): Likewise.
3087 (Sized_symbol::init_output_data): Likewise.
3088 (Sized_symbol::init_output_segment): Likewise.
3089 (Sized_symbol::init_constant): Likewise.
3090 (Sized_symbol::init_undefined): Likewise.
3091 (Symbol_table::do_define_in_output_data): If the new symbol has a
3092 version, mark it as the default.
3093 (Symbol_table::do_define_in_output_segment): Likewise.
3094 (Symbol_table::do_define_as_constant): Likewise.
3095 * symtab.h (class Symbol): Update declarations.
3096 (class Sized_symbol): Likewise.
3097 * resolve.cc (Symbol::override_version): New function.
c42e122e 3098 (Symbol::override_base): Call override_version.
75517b77
ILT
3099 (Symbol::override_base_with_special): Likewise.
3100 * testsuite/ver_script_8.script: New file.
3101 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_8.
3102 (ver_test_8_SOURCES, ver_test_8_DEPENDENCIES): Define.
3103 (ver_test_8_LDFLAGS, ver_test_8_LDADD): Define.
3104 (ver_test_8_1.so, ver_test_8_2.so): New targets.
3105
f1f70eae
ILT
31062008-05-06 Ian Lance Taylor <iant@google.com>
3107
f3e9c5c5
ILT
3108 PR 6049
3109 * options.h (DEFINE_set): Add VARNAME_begin and VARNAME_end
3110 functions.
3111 (class General_options): Remove existing --undefined, and add
3112 --no-undefined instead. Add new --undefined as synonym for -u.
3113 * archive.cc (Archive::add_symbols): Check whether symbol was
3114 named with -u.
3115 * gold.cc (queue_middle_tasks): Add -u symbols to symbol table.
3116 * symtab.h (class Symbol): Rename CONSTANT to IS_CONSTANT; change
3117 all uses. Add IS_UNDEFINED. Update declarations to split
3118 different versions of init_base. Declare init_base_undefined.
3119 (Symbol::is_defined): Handle IS_UNDEFINED.
3120 (Symbol::is_undefined): Likewise.
3121 (Symbol::is_weak_undefined): Call is_undefined.
3122 (Symbol::is_absolute): Handle IS_CONSTANT.
3123 (class Sized_symbol): Update declarations to split different
3124 versions of init. Declare init_undefined.
3125 (class Symbol_table): Declare new functions.
3126 * symtab.cc (Symbol::init_base_object): Rename from init_base.
3127 Change all callers.
3128 (Symbol::init_base_output_data): Likewise.
3129 (Symbol::init_base_output_segment): Likewise.
3130 (Symbol::init_base_constant): Likewise.
3131 (Symbol::init_base_undefined): New function.
3132 (Sized_symbol::init_object): Rename from init. Change all
3133 callers.
3134 (Sized_symbol::init_output_data): Likewise.
3135 (Sized_symbol::init_output_segment): Likewise.
3136 (Sized_symbol::init_constant): Likewise.
3137 (Sized_symbol::init_undefined): New function.
3138 (Symbol_table::add_undefined_symbols_from_command_line): New
3139 function.
3140 (Symbol_table::do_add_undefined_symbols_from_command_line): New
3141 function.
3142 (Symbol::final_value_is_known): Handle IS_UNDEFINED.
3143 (Symbol::output_section): Likewise.
3144 (Symbol::set_output_section): Likewise.
3145 (Symbol_table::sized_finalize_symbol): Likewise.
3146 (Symbol_table::sized_write_globals): Likewise.
3147 * resolve.cc (Symbol_table::should_override): Likewise.
3148 (Symbol::override_base_with_special): Likewise.
3149
8bdcdf2c
ILT
3150 * symtab.cc (Symbol_table::add_from_dynobj): If we see a protected
3151 symbol, change it to have default visibility.
3152 * testsuite/protected_1.cc: New file.
3153 * testsuite/protected_2.cc: New file.
3154 * testsuite/protected_3.cc: New file.
3155 * testsuite/protected_main_1.cc: New file.
3156 * testsuite/protected_main_2.cc: New file.
3157 * testsuite/protected_main_3.cc: New file.
3158 * testsuite/Makefile.am (check_PROGRAMS): Add protected_1.
3159 (protected_1_SOURCES, protected_1_DEPENDENCIES): Define.
3160 (protected_1_LDFLAGS, protected_1_LDADD): Define.
3161 (protected_1.so): New target.
3162 (protected_1_pic.o, protected_2_pic.o): New targets.
3163 (protected_3_pic.o): New target.
3164 (check_PROGRAMS): Add protected_2.
3165 (protected_2_SOURCES, protected_2_DEPENDENCIES): Define.
3166 (protected_2_LDFLAGS, protected_2_LDADD): Define.
3167 * testsuite/Makefile.in: Rebuild.
3168
2b706932
ILT
3169 * options.h (DEFINE_var): Add set_user_set_##varname__.
3170 (DEFINE_bool_alias): New macro.
3171 (class General_options): Define -Bstatic using DEFINE_bool_alias
3172 rather than DEFINE_special. Add --undefined as an alias for -z
3173 defs.
3174 * options.cc (General_options::parse_Bstatic): Remove.
3175
d82a5bcc
ILT
3176 * options.h (class General_options): Add --fatal-warnings.
3177 * main.cc (main): Implement --fatal-warnings.
3178 * errors.h (Errors::warning_count): New function.
3179
f1f70eae
ILT
3180 * options.h (class General_options): Add -Bsymbolic-functions.
3181 * symtab.h (Symbol::is_preemptible): Check for
3182 -Bsymbolic-functions.
3183
8825ac63
ILT
31842008-05-05 Ian Lance Taylor <iant@google.com>
3185
d98bc257
ILT
3186 * options.h (DEFINE_bool): For DASH_Z, create the negative option
3187 as noVARNAME rather than no-VARNAME.
3188 (class General_options): Add option -z combreloc.
3189 * output.h (class Output_reloc) [SHT_REL]: Declare compare and
3190 get_address.
3191 (Output_reloc::sort_before) [SHT_REL]: New function.
3192 (Output_reloc::sort_before) [SHT_RELA]: New function.
3193 (class Output_data_reloc_base): Add sort_relocs_ field. Define
3194 Sort_relocs_comparison.
3195 (Output_data_reloc_base::Output_data_reloc_base): Add sort_relocs
3196 parameter. Change all callers.
3197 (Output_data_reloc::Output_data_reloc) [both versions]: Add
3198 sort_relocs parameter. Change all callers.
3199 * output.cc (Output_reloc::get_address): New function, broken out
3200 of write_rel.
3201 (Output_reloc::write_rel): Call it.
3202 (Output_reloc::compare): New function.
3203 (Output_data_reloc_base::do_write): Optionally sort relocs.
3204
60b2b4e7
ILT
3205 * configure.ac: If targ_extra_obj is set, link it in.
3206 * configure.tgt: Initialize all variables.
3207 (x86_64*): Set targ_extra_obj and targ_extra_size.
3208 * configure: Rebuild.
3209
8825ac63
ILT
3210 * object.cc (Sized_relobj::include_section_group): Adjust section
3211 indexes read from group data. Build vector to pass to
3212 layout_group.
3213 * layout.cc (Layout::layout_group): Add flags and shndxes
3214 parameters. Remove contents parameter. Change caller. Update
3215 explicit instantiations.
3216 * layout.h (class Layout): Update layout_group declaration.
3217 * output.cc (Output_data_group::Output_data_group): Add flags and
3218 input_shndxes parameters. Remove contents parameter. Change
3219 caller.
3220 (Output_data_group::do_write): Change input_sections_ to
3221 input_shndxes_.
3222 * output.h (class Output_data_group): Update constructor
3223 declaration. Rename input_sections_ to input_shndxes_.
3224 * testsuite/many_sections_test.cc: Add template.
3225
e94cf127
CC
32262008-04-30 Cary Coutant <ccoutant@google.com>
3227
4418b2d5
CC
3228 * target-reloc.h (relocate_section): Fix dead-pointer bug.
3229
e94cf127
CC
3230 * layout.cc (Layout::include_section): Refactored check for debug
3231 info section.
3232 (Layout::add_comdat): Add new parameters. Change type
3233 of signature parameter. Add object and shndx to signatures table.
3234 (Layout::find_kept_object): New function.
3235 * layout.h: Include <cstring>.
3236 (Layout::is_debug_info_section): New function.
3237 (Layout::add_comdat): Add new parameters.
3238 (Layout::find_kept_object): New function.
3239 (Layout::Kept_section): New struct.
3240 (Layout::Signatures): Change type of map range.
3241 * object.cc (Relobj::output_section_address): New function.
3242 (Sized_relobj::include_section_group): Add new parameters. Change
3243 calls to Layout::add_comdat. Change to build table of kept comdat
3244 groups and table mapping discarded sections to kept sections.
3245 (Sized_relobj::include_linkonce_section): Likewise. Add new parameter.
3246 (Sized_relobj::do_layout): Change calls to include_section_group and
3247 include_linkonce_section.
3248 (Sized_relobj::do_finalize_local_symbols): Do not set local symbol
3249 value to zero when section is discarded.
3250 (Sized_relobj::map_to_kept_section): New function.
3251 * object.h (Relobj::output_section_address): New function.
3252 (Relobj::Comdat_group): New type.
3253 (Relobj::find_comdat_group): New function.
3254 (Relobj::Comdat_group_table): New type.
3255 (Relobj::Kept_comdat_section): New type.
3256 (Relobj::Kept_comdat_section_table): New type.
3257 (Relobj::add_comdat_group): New function.
3258 (Relobj::set_kept_comdat_section): New function.
3259 (Relobj::get_kept_comdat_section): New function.
3260 (Relobj::comdat_groups_): New field.
3261 (Relobj::kept_comdat_sections_): New field.
3262 (Symbol_value::input_value): Update comment.
3263 (Sized_relobj::map_to_kept_section) New function.
3264 (Sized_relobj::include_linkonce_section): Add new parameter.
3265 * target-reloc.h (Comdat_behavior): New type.
3266 (get_comdat_behavior): New function.
3267 (relocate_section): Add code to map a discarded section to the
3268 corresponding kept section when applying a relocation.
3269
e4e5049b
CS
32702008-04-30 Craig Silverstein <csilvers@google.com>
3271
3272 * dwarf_reader.cc (next_generation_count): New static var.
3273 (Addr2line_cache_entry): New struct.
3274 (addr2line_cache): New static var.
3275 (Dwarf_line_info::one_addr2line): Added caching.
3276 (Dwarf_line_info::clear_addr2line_cache): New function.
3277 * dwarf_reader.h (Dwarf_line_info::one_addr2line): Add
3278 cache-size parameter.
3279 (Dwarf_line_info::one_addr2line_cache): New function.
3280 * symtab.cc (Symbol_table::detect_odr_violations): Pass
3281 new cache-size argument to one_addr2line(), and clear cache.
3282
d09e9154
CC
32832008-04-28 Cary Coutant <ccoutant@google.com>
3284
3285 * i386.cc (Relocate::relocate): Fix typos for R_386_PC16 and
3286 R_386_PC8 relocations.
3287
7ef73768
ILT
32882008-04-23 Ian Lance Taylor <iant@google.com>
3289
55438702
ILT
3290 * object.cc (Sized_relobj::include_section_group): Check for
3291 invalid section group.
3292
c165fb93
ILT
3293 * object.cc (make_elf_object): Correct test for 64-bit ELF file
3294 header size.
3295
7ef73768
ILT
3296 * readsyms.cc (Read_symbols::do_read_symbols): Use get_view rather
3297 than read for file header.
3298 * archive.cc (Archive::include_member): Likewise.
3299
6194aaab
L
33002008-04-23 Paolo Bonzini <bonzini@gnu.org>
3301
3302 * aclocal.m4: Regenerate.
3303 * configure: Regenerate.
3304
d491d34e
ILT
33052008-04-19 Ian Lance Taylor <iant@google.com>
3306
5ea2bac6
ILT
3307 * version.cc (version_string): Bump to 1.6.
3308
7bc3e21a
ILT
3309 * testsuite/Makefile.am (many_sections_r_test): New target.
3310 (many_sections_r_test_SOURCES): Remove.
3311 (many_sections_r_test_DEPENDENCIES): Remove.
3312 (many_sections_r_test_LDFLAGS): Remove.
3313 (many_sections_r_test_LDADD): Remove.
3314
7fcd3aa9
ILT
3315 * object.cc (Sized_relobj::do_add_symbols): Always pass
3316 local_symbol_count_ to add_from_relobj.
3317
4c94d6ae
ILT
3318 * testsuite/Makefile.am (many_sections_check.h): Only check one in
3319 every thousand variables.
3320 * testsuite/Makefile.in: Rebuild.
3321
d491d34e
ILT
3322 * object.cc (Xindex::initialize_symtab_xindex): New function.
3323 (Xindex::read_symtab_xindex): New function.
3324 (Xindex::sym_xindex_to_shndx): New function.
3325 (Sized_relobj::find_symtab): Pick up SHT_SYMTAB_SHNDX section if
3326 available.
3327 (Sized_relobj::do_initialize_xindex): New function.
3328 (Sized_relobj::do_read_symbols): Adjust section links.
3329 (Sized_relobj::symbol_section_and_value): Add is_ordinary
3330 parameter. Change all callers.
3331 (Sized_relobj::include_section_group): Adjust section links and
3332 symbol section indexes.
3333 (Sized_relobj::do_layout): Adjust section links.
3334 (Sized_relobj::do_count_local_symbols): Adjust section links and
3335 symbol section indexes.
3336 (Sized_relobj::do_finalize_local_symbols): Distinguish between
3337 ordinary and special symbols.
3338 (Sized_relobj::write_local_symbols): Add symtab_xindex and
3339 dynsym_xindex parameters. Change all callers. Adjust section
3340 links. Use SHN_XINDEX when needed.
3341 (Sized_relobj::get_symbol_location_info): Adjust section links.
3342 Don't get fooled by special symbols.
3343 * object.h (class Xindex): Define.
3344 (class Object): Add xindex_ parameter. Declare virtual functoin
3345 do_initialize_xindex.
3346 (Object::adjust_sym_shndx): New function.
3347 (Object::set_xindex): New protected function.
3348 (class Symbol_value): Add is_ordinary_shndx_ field.
3349 (Symbol_value::Symbol_value): Initialize is_ordinary_shndx_.
3350 (Symbol_value::value): Assert ordinary section.
3351 (Symbol_value::initialize_input_to_output_map): Likewise.
3352 (Symbol_value::set_input_shndx): Add is_ordinary parameter.
3353 Change all callers.
3354 (Symbol_value::input_shndx): Add is_ordinary parameter. Change
3355 all callers.
3356 (class Sized_relobj): Update declarations.
3357 (Sized_relobj::local_symbol_input_shndx): Add is_ordinary
3358 parameter. Change all callers.
3359 (Sized_relobj::adjust_shndx): New function.
3360 * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize dynsym_shndx_
3361 field.
3362 (Sized_dynobj::find_dynsym_sections): Remove pdynsym_shndx
3363 parameter. Change all callers. Pick up SHT_DYNSYM_SHNDX section
3364 for SHT_DYNSYM section if available. Set dynsym_shndx_ field.
3365 (Sized_dynobj::read_dynsym_section): Adjust section links.
3366 (Sized_dynobj::read_dynamic): Likewise.
3367 (Sized_dynobj::do_read_symbols): Use dynsym_shndx_ field. Adjust
3368 section links.
3369 (Sized_dynobj::do_initialize_xindex): New function.
3370 * dynobj.h (class Sized_dynobj): Add dynsym_shndx_ field. Declare
3371 do_initialize_xindex.
3372 (Sized_dynobj::adjust_shndx): New function.
3373 * layout.cc (Layout::Layout): Initialize symtab_xindex_ and
3374 dynsym_xindex_ fields.
3375 (Layout::finalize): Add a call to set_section_indexes before
3376 creating the symtab sections.
3377 (Layout::set_section_indexes): Don't do anything if the section
3378 already has a section index.
3379 (Layout::create_symtab_sections): Add shnum parameter. Change
3380 caller. Create .symtab_shndx section if needed.
3381 (Layout::create_shdrs): Add shstrtab_section parameter. Change
3382 caller.
3383 (Layout::allocated_output_section_count): New function.
3384 (Layout::create_dynamic_symtab): Create .dynsym_shndx section if
3385 needed.
3386 * layout.h (class Layout): Add symtab_xindex_ and dynsym_xindex_
3387 fields. Update declarations.
3388 (Layout::symtab_xindex): New function.
3389 (Layout::dynsym_xindex): New function.
3390 (class Write_symbols_task): Add layout_ field.
3391 (Write_symbols_task::Write_symbols_task): Add layout parameter.
3392 Change caller.
3393 * output.cc (Output_section_headers::Output_section_headers): Add
3394 shstrtab_section parameter. Change all callers.
3395 (Output_section_headers::do_sized_write): Store overflow values
3396 for section count and section string table section index in
3397 section header zero.
3398 (Output_file_header::do_sized_write): Check for overflow of
3399 section count and section string table section index.
3400 (Output_symtab_xindex::do_write): New function.
3401 (Output_symtab_xindex::endian_do_write): New function.
3402 * output.h (class Output_section_headers): Add shstrtab_section_.
3403 Update declarations.
3404 (class Output_symtab_xindex): Define.
3405 (Output_section::has_out_shndx): New function.
3406 * symtab.cc (Symbol::init_fields): Initialize is_ordinary_shndx_
3407 field.
3408 (Symbol::init_base): Add st_shndx and is_ordinary parameters.
3409 Change all callers.
3410 (Sized_symbol::init): Likewise.
3411 (Symbol::output_section): Check for ordinary symbol.
3412 (Symbol_table::add_from_object): Remove orig_sym parameter. Add
3413 st_shndx, is_ordinary, and orig_st_shndx parameters. Change all
3414 callers.
3415 (Symbol_table::add_from_relobj): Add symndx_offset parameter.
3416 Change all callers. Simplify handling of symbols from sections
3417 not included in the link.
3418 (Symbol_table::add_from_dynobj): Handle ordinary symbol
3419 distinction.
3420 (Weak_alias_sorter::operator()): Assert that symbols are
3421 ordinary.
3422 (Symbol_table::sized_finalize_symbol): Handle ordinary symbol
3423 distinction.
3424 (Symbol_table::write_globals): Add symtab_xindex and dynsym_xindex
3425 parameters. Change all callers.
3426 (Symbol_table::sized_write_globals): Likewise. Handle ordinary
3427 symbol distinction. Use SHN_XINDEX when needed.
3428 (Symbol_table::write_section_symbol): Add symtab_xindex
3429 parameter. Change all callers.
3430 (Symbol_table::sized_write_section_symbol): Likewise. Use
3431 SHN_XINDEX when needed.
3432 * symtab.h (class Symbol): Add is_ordinary_shndx_ field. Update
3433 declarations.
3434 (Symbol::shndx): Add is_ordinary parameter. Change all callers.
3435 (Symbol::is_defined): Check is_ordinary.
3436 (Symbol::is_undefined, Symbol::is_weak_undefined): Likewise.
3437 (Symbol::is_absolute, Symbol::is_common): Likewise.
3438 (class Sized_symbol): Update declarations.
3439 (class Symbol_table): Update declarations.
3440 * resolve.cc (Symbol::override_base): Add st_shndx and is_ordinary
3441 parameters. Change all callers.
3442 (Sized_symbol::override): Likewise.
3443 (Symbol_table::override): Likewise.
3444 (symbol_to_bits): Add is_ordinary parameter. Change all callers.
3445 (Symbol_table::resolve): Remove orig_sym parameter. Add st_shndx,
3446 is_ordinary, and orig_st_shndx parameters. Change all callers.
3447 * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Require symbol
3448 to be in an ordinary section.
3449 * dwarf_reader.cc (Sized_dwarf_line_info::symbol_section): Add
3450 object and is_ordinary parameters. Change all callers.
3451 (Sized_dwarf_line_info::read_relocs): Add object parameter.
3452 Change all callers. Don't add undefined or non-ordinary symbols
3453 to reloc_map_.
3454 (Sized_dwarf_line_info::read_line_mappings): Add object parameter.
3455 Change all callers.
3456 * dwarf_reader.h (class Sized_dwarf_line_info): Update
3457 declarations.
3458 * ehframe.cc (Eh_frame::read_fde): Check for ordinary symbol.
3459 * reloc.cc (Sized_relobj::do_read_relocs): Adjust section links.
3460 (Sized_relobj::relocate_sections): Likewise.
3461 * target-reloc.h (scan_relocs): Adjust section symbol index.
3462 (scan_relocatable_relocs): Likewise.
3463 * i386.cc (Scan::local): Check for ordinary symbols.
3464 * sparc.cc (Scan::local): Likewise.
3465 * x86_64.cc (Scan::local): Likewise.
3466 * testsuite/binary_unittest.cc (Sized_binary_test): Update calls
3467 to symbol_section_and_value.
3468 * testsuite/many_sections_test.cc: New file.
3469 * testsuite/Makefile.am (BUILT_SOURCES): Define.
3470 (check_PROGRAMS): Add many_sections_test.
3471 (many_sections_test_SOURCES): Define.
3472 (many_sections_test_DEPENDENCIES): Define.
3473 (many_sections_test_LDFLAGS): Define.
3474 (BUILT_SOURCES): Add many_sections_define.h.
3475 (many_sections_define.h): New target.
3476 (BUILT_SOURCES): Add many_sections_check.h.
3477 (many_sections_check.h): New target.
3478 (check_PROGRAMS): Add many_sections_r_test.
3479 (many_sections_r_test_SOURCES): Define.
3480 (many_sections_r_test_DEPENDENCIES): Define.
3481 (many_sections_r_test_LDFLAGS): Define.
3482 (many_sections_r_test_LDADD): Define.
3483 (many_sections_r_test.o): New target.
3484 * testsuite/Makefile.in: Rebuild.
3485
c5818ff1
CC
34862008-04-17 Cary Coutant <ccoutant@google.com>
3487
3488 * errors.cc (Errors::info): New function.
3489 (gold_info): New function.
3490 * errors.h (Errors::info): New function.
3491 * gold.h (gold_info): New function.
3492 * object.cc (Input_objects::add_object): Print trace output.
3493 * options.cc (options::parse_set): New function.
3494 (General_options::parse_wrap): Deleted.
3495 (General_options::General_options): Deleted initializer.
3496 * options.h (options::String_set): New typedef.
3497 (options::parse_set): New function.
3498 (DEFINE_set): New macro.
3499 (General_options::wrap): Changed to use DEFINE_set. Changed
3500 callers of any_wrap_symbols and is_wrap_symbol.
3501 (General_options::trace, General_options::trace_symbol):
3502 New options.
3503 (General_options::any_wrap_symbols, General_options::is_wrap_symbol)
3504 (General_options::wrap_symbols_): Deleted.
3505 * symtab.cc (Symbol_table::add_from_object): Print trace output.
3506
b5be4a7c
DM
35072008-04-17 David S. Miller <davem@davemloft.net>
3508
3509 * options.cc (General_options::parse_V): New function.
3510 * options.h: Add entries for -V and -Qy.
3511
155a0dd7
ILT
35122008-04-17 Ian Lance Taylor <iant@google.com>
3513
3514 * common.cc (Symbol_table::allocate_commons): Remove options
3515 parameter. Change caller.
3516 (Symbol_table::do_allocate_commons): Remove options parameter.
3517 Change caller. Just call do_allocate_commons_list twice.
3518 (Symbol_table::do_allocate_commons_list): New function, broken out
3519 of do_allocate_commons.
3520 * common.h (class Allocate_commons_task): Remove options_ field.
3521 Update constructor.
3522 * symtab.cc (Symbol_table::Symbol_table): Initialize
3523 tls_commons_.
3524 (Symbol_table::add_from_object): Put TLS common symbols on
3525 tls_commons_ list.
3526 (Symbol_table::sized_finalize_symbol): Handle STT_TLS symbols
3527 which are IN_OUTPUT_DATA.
3528 * symtab.h (class Symbol_table): Add tls_commons_ field. Update
3529 allocate_commons and do_allocate_commons declarations. Declare
3530 do_allocate_commons_list.
3531 * gold.cc (queue_middle_tasks): Update creation of
3532 Allocate_commons_task to not pass options.
3533 * testsuite/Makefile.am (INCLUDES): Add -I.. .
3534 (TLS_TEST_C_FLAGS): New variable.
3535 (tls_test_c_pic.o): New target.
3536 (tls_test_shared.so): Link in tls_test_c_pic.o.
3537 (tls_test_c_pic_ie.o): New target.
3538 (tls_test_ie_shared.so): Link in tls_test_c_pic_ie.o.
3539 (tls_test_DEPENDENCIES, tls_test_LDADD): Add tls_test_c.o.
3540 (tls_test_c.o): New target.
3541 (tls_pic_test_DEPENDENCIES): Add tls_test_c_pic.o.
3542 (tls_pic_test_LDADD): Likewise.
3543 (tls_shared_gd_to_ie_test_DEPENDENCIES): Add tls_test_c_pic.o.
3544 (tls_shared_gd_to_ie_test_LDADD): Likewise.
3545 (tls_test_c_gnu2.o): New target.
3546 (tls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): Add
3547 tls_test_c_gnu2.o.
3548 (tls_shared_gnu2_gd_to_ie_test_LDADD): Likewise.
3549 (tls_test_gnu2_shared.so): Link in tls_test_c_gnu2.o.
3550 (tls_test_shared_nonpic.so): Link in tls_test_c.o.
3551 * testsuite/tls_test.cc: Include "config.h".
3552 (t_last): Call t11_last.
3553 * testsuite/tls_test.h (t11, t11_last): Declare.
3554 * testsuite/tls_test_c.c: New file.
3555 * testsuite/tls_test_main.cc (thread_routine): Call t11.
3556 * configure.ac: Check for OpenMP support.
3557 * configure, config.in, Makefile.in: Rebuild.
3558 * testsuite/Makefile.in: Rebuild.
3559
edfbb029
CC
35602008-04-16 Cary Coutant <ccoutant@google.com>
3561
3562 * i386.cc (Target_i386::define_tls_base_symbol): New function.
3563 (Target_i386::tls_base_symbol_defined_): New field.
3564 (Target_i386::Scan::local): Define _TLS_MODULE_BASE_ symbol.
3565 (Target_i386::Scan::global): Likewise.
3566 * symtab.cc (sized_finalize_symbol): Add check for TLS symbol.
3567 * x86_64.cc (Target_x86_64::define_tls_base_symbol): New function.
3568 (Target_x86_64::tls_base_symbol_defined_): New field.
3569 (Target_x86_64::Scan::local): Define _TLS_MODULE_BASE_ symbol.
3570 (Target_x86_64::Scan::global): Likewise.
3571
f3c69fca
CC
35722008-04-16 Cary Coutant <ccoutant@google.com>
3573
3574 * symtab.h (Symbol::is_strong_undefined): Removed unused function.
3575 (Symbol::needs_plt_entry): Allow weak undefined symbols.
3576 (Symbol::needs_dynamic_reloc): Allow weak undefined symbols when
3577 building shared libraries.
3578 * testsuite/Makefile.am (weak_undef_nonpic_test): New target.
3579 (weak_undef_file1_nonpic.o, weak_undef_file2_nonpic.o)
3580 (weak_undef_lib_nonpic.so, alt/weak_undef_lib_nonpic.so): New targets.
3581 * testsuite/Makefile.in: Rebuild.
3582 * testsuite/weak_undef.h: New file.
3583 * testsuite/weak_undef_file1.cc: Add extra test cases.
3584 * testsuite/weak_undef_file2.cc: Likewise.
3585 * testsuite/weak_undef_test.cc: Likewise.
3586
7c414435
DM
35872008-04-16 David S. Miller <davem@davemloft.net>
3588
32b769e1
DM
3589 * sparc.cc (Target_sparc::Scan): Change from struct to class.
3590 Add issued_non_pic_error_ field. Declare check_non_pic.
3591 (Target_sparc::Scan::check_non_pic): New function.
3592 (Target_sparc::Scan::local): Call check_non_pic as appropriate.
3593 (Target_sparc::Scan::global): Likewise.
3594
11936fb1
DM
3595 * configure.ac (FN_PTRS_IN_SO_WITHOUT_PIC): Add sparc64.
3596 * configure: Rebuild.
3597
7c414435
DM
3598 * options.h (DEFINE_enable): New macro.
3599 (new_dtags): New enable option.
3600 (initfirst, interpose, loadfltr, nodefaultlib,
3601 nodelete, nodlopen, nodump): New -z options.
3602 * layout.cc (Layout:finish_dynamic_section): If new
3603 dtags enabled, emit DT_RUNPATH. Also, emit a
3604 DT_FLAGS_1 containing any specified -z flags.
3605
85c7bf8b
ILT
36062008-04-16 Ian Lance Taylor <iant@google.com>
3607
12c0daef
ILT
3608 * copy-relocs.cc: New file.
3609 * copy-relocs.h: New file.
3610 * reloc.cc: Remove Copy_relocs code.
3611 * reloc.h: Likewise.
3612 * reloc-types.h (struct Reloc_types) [both versions]: Add
3613 get_reloc_addend_noerror.
3614 * output.h (class Output_data_reloc<elfcpp::SHT_REL>): Add
3615 variants of add_global which take an addend which must be zero.
3616 * i386.cc: Include "copy-relocs.h".
3617 (class Target_i386): Change type of copy_relocs_ to variable,
3618 update initializer.
3619 (Target_i386::copy_reloc): Rewrite to pass to Copy_relocs class.
3620 Change all callers.
3621 (Target_i386::do_finalize_sections): Change handling of
3622 copy_relocs_.
3623 * sparc.cc: Include "copy-relocs.h".
3624 (class Target_sparc): Change type of copy_relocs_ to variable,
3625 update initializer.
3626 (Target_sparc::copy_reloc): Rewrite to pass to Copy_relocs class.
3627 Change all callers.
3628 (Target_sparc::do_finalize_sections): Change handling of
3629 copy_relocs_.
3630 * x86_64.cc: Include "copy-relocs.h".
3631 (class Target_x86_64): Change type of copy_relocs_ to variable,
3632 update initializer.
3633 (Target_x86_64::copy_reloc): Rewrite to pass to Copy_relocs
3634 class. Change all callers.
3635 (Target_x86_64::do_finalize_sections): Change handling of
3636 copy_relocs_.
3637 * Makefile.am (CCFILES): Add copy-relocs.cc.
3638 (HFILES): Add copy-relocs.h.
3639
4f4995b6
ILT
3640 * Makefile.in, aclocal.m4, testsuite/Makefile.in: Rebuild.
3641
85c7bf8b
ILT
3642 * testsuite/script_test_4.sh: Permit leading zeroes.
3643
4f2a9edd
ILT
36442008-04-15 Ian Lance Taylor <iant@google.com>
3645
e6188289
ILT
3646 * script-sections.cc (Script_sections::create_segments): Use
3647 header_size_adjustment even when there is enough room for the
3648 headers.
3649 * testsuite/script_test_4.sh: New file.
3650 * testsuite/script_test_4.t: New file.
3651 * testsuite/Makefile.am (check_SCRIPTS): Add script_test_4.sh.
3652 (check_DATA): Add script_test_4.stdout.
3653 (MOSTLYCLEANFILES): Likewise.
3654 (script_test_4): New target.
3655 (script_test_4.stdout): New target.
3656 * testsuite/Makefile.in: Rebuild.
3657
4f2a9edd
ILT
3658 * sparc.cc: Add definitions for Output_data_plt_sparc class
3659 constants.
3660
f5314dd5
DM
36612008-04-14 David S. Miller <davem@davemloft.net>
3662
3663 * sparc.cc: New file.
3664 * Makefile.am (TARGETSOURCES): Add sparc.cc
3665 (ALL_TARGETOBJS): Add sparc.$(OBJEXT)
3666 * configure.tgt: Document targ_extra_size and
3667 targ_extra_big_endian. Add entries for sparc-* and
3668 sparc64-*.
3669 * configure.ac: Handle targ_extra_size and
3670 targ_extra_big_endian.
3671 * Makefile.in: Rebuild.
3672 * configure: Likewise.
3673 * po/POTFILES.in: Likewise.
3674 * po/gold.pot: Likewise.
3675
154e0e9a
ILT
36762008-04-14 Ian Lance Taylor <iant@google.com>
3677
3678 * layout.cc (Layout::Layout): Initialize sections_are_attached_.
3679 (Layout::get_output_section): Ignore SHF_WRITE and SHF_EXECINSTR
3680 in the name/type/flags to section mapping. Don't call
3681 allocate_output_section.
3682 (Layout::choose_output_section): Change parameter from adjust_name
3683 to is_input_section. Don't permit input sections after sections
3684 are attached to segments. Don't call allocate_output_section.
3685 (Layout::layout_eh_frame): Call update_flags_for_input_section,
3686 not write_enable_output_section.
3687 (Layout::make_output_section): Don't push to
3688 unattached_section_list_ nor call attach_to_segment. Call
3689 attach_section_to_segment if sections are attached.
3690 (Layout::attach_sections_to_segments): New function.
3691 (Layout::attach_section_to_segment): New function.
3692 (Layout::attach_allocated_section_to_segment): Rename from
3693 attach_to_segment. Remove flags parameter.
3694 (Layout::allocate_output_section): Remove function.
3695 (Layout::write_enable_output_section): Remove function.
3696 * layout.h (class Layout): Update for above changes. Add new
3697 field sections_are_attached_.
3698 * output.h (Output_section::update_flags_for_input_section): New
3699 function.
3700 * output.cc (Output_section::add_input_section): Call
3701 update_flags_for_input_section.
3702 * gold.cc (queue_middle_tasks): Call attach_sections_to_segments.
3703
009a67a2
CC
37042008-04-11 Cary Coutant <ccoutant@google.com>
3705
3706 * i386.cc (Target_i386::got_mod_index_entry): Restore code previously
3707 thought unnecessary.
3708 * x86_64.cc (Target_x86_64::got_mod_index_entry): Likewise.
3709
759b1a24
ILT
37102008-04-11 Ian Lance Taylor <iant@google.com>
3711
3712 * output.h (class Output_section_data): Remove inline definition
3713 of set_addralign.
3714 * output.cc (Output_section_data::set_addralign): New function.
3715
c2b45e22
CC
37162008-04-11 Cary Coutant <ccoutant@google.com>
3717
3718 Add support for TLS descriptors for i386 and x86_64.
3719 * i386.cc (Target_i386::Relocate::tls_desc_gd_to_ie): New function.
3720 (Target_i386::Relocate::tls_desc_gd_to_le): New function.
3721 (Target_i386::Got_type): Add GOT_TYPE_TLS_NOFFSET and
3722 GOT_TYPE_TLS_DESC.
3723 (Target_i386::got_mod_index_entry): Remove unnecessary code.
3724 (Target_i386::Scan::local): Implement R_386_TLS_GOTDESC and
3725 R_386_TLS_DESC_CALL relocations. Fix problem with initial-exec
3726 relocations.
3727 (Target_i386::Scan::global): Fix problem with GD-to-IE relaxation.
3728 Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations;
3729 Fix problem with initial-exec relocations.
3730 (Target_i386::Relocate::relocate_tls): Likewise.
3731 (Target_i386::Relocate::tls_gd_to_ie): Fix problem with GD-to-IE
3732 relaxation.
3733 * output.cc (Output_data_dynamic::Dynamic_entry::write): Add
3734 support for section-plus-offset dynamic table entries.
3735 * output.h (Output_data_dynamic::add_section_plus_offset): New function.
3736 (Output_data_dynamic::Dynamic_entry): Add support for
3737 section-plus-offset dynamic table entries.
3738 (Output_data_dynamic::Classification): Likewise.
3739 (Output_data_dynamic::classification_): Renamed offset_.
3740 * x86_64.cc (Target_x86_64::Relocate::tls_desc_gd_to_ie): New function.
3741 (Target_x86_64::Relocate::tls_desc_gd_to_le): New function.
3742 (Target_x86_64::make_plt_section): New function.
3743 (Target_x86_64::reserve_tlsdesc_entries): New function.
3744 (Output_data_plt_x86_64::Output_data_plt_x86_64): Add new parameter.
3745 (Output_data_plt_x86_64::reserve_tlsdesc_entry): New function.
3746 (Output_data_plt_x86_64::has_tlsdesc_entry): New function.
3747 (Output_data_plt_x86_64::get_tlsdesc_got_offset): New function.
3748 (Output_data_plt_x86_64::get_tlsdesc_plt_offset): New function.
3749 (Output_data_plt_x86_64::tlsdesc_plt_entry): New field.
3750 (Output_data_plt_x86_64::set_final_data_size): Move out of line;
3751 add extra PLT entry for TLS descriptors.
3752 (Output_data_plt_x86_64::got_): New field.
3753 (Output_data_plt_x86_64::tlsdesc_got_offset_): New field.
3754 (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize new
3755 fields.
3756 (Output_data_plt_x86_64::do_write): Write extra PLT entry for TLS
3757 descriptors.
3758 (Target_x86_64::make_plt_entry): Factor out make_plt_section.
3759 (Target_x86_64::got_mod_index_entry): Remove unnecessary code.
3760 (Target_x86_64::Scan::local): Implement R_386_TLS_GOTDESC and
3761 R_386_TLS_DESC_CALL relocations.
3762 (Target_x86_64::Scan::global): Likewise.
3763 (Target_x86_64::do_finalize_sections): Add dynamic table entries
3764 for TLS descriptors.
3765 (Relocate::relocate_tls): Fix problem with GD-to-IE relaxation.
3766 Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations.
3767 (Target_x86_64::Relocate::tls_gd_to_ie): Fix problem with
3768 GD-to-IE relaxation.
3769 * configure.ac: Export new conditional variables TLS_GNU2_DIALECT
3770 and TLS_DESCRIPTORS.
3771 * Makefile.in: Rebuild.
3772 * configure: Rebuild.
3773 * testsuite/Makefile.am (tls_shared_gd_to_ie_test): New target.
3774 (tls_test_shared2.so): New target.
3775 (tls_shared_gd_to_ie_test_SOURCES): New variable.
3776 (tls_shared_gd_to_ie_test_DEPENDENCIES): New variable.
3777 (tls_shared_gd_to_ie_test_LDFLAGS): New variable.
3778 (tls_shared_gd_to_ie_test_LDADD): New variable.
3779 (tls_shared_gnu2_gd_to_ie_test): New target.
3780 (tls_test_gnu2.o, tls_test_file2_gnu2.o, tls_test_gnu2_shared2.so):
3781 New targets.
3782 (tls_shared_gnu2_gd_to_ie_test_SOURCES): New variable.
3783 (ls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): New variable.
3784 (tls_shared_gnu2_gd_to_ie_test_LDFLAGS): New variable.
3785 (tls_shared_gnu2_gd_to_ie_test_LDADD): New variable.
3786 (tls_shared_gnu2_test): New target.
3787 (tls_test_gnu2_shared.so): New target.
3788 (tls_shared_gnu2_test_SOURCES): New variable.
3789 (tls_shared_gnu2_test_DEPENDENCIES): New variable.
3790 (tls_shared_gnu2_test_LDFLAGS): New variable.
3791 (tls_shared_gnu2_test_LDADD): New variable.
3792 * testsuite/Makefile.in: Rebuild.
3793 * testsuite/Makefile.
3794
83bfb6b7
ILT
37952008-04-11 Ian Lance Taylor <iant@google.com>
3796
3797 * testsuite/Makefile.am (justsyms_2r.o): Add dependency on
3798 justsyms.t.
3799 * testsuite/Makefile.in: Rebuild.
3800
3801 * testsuite/script_test_2a.cc (script_test_string_a): Make 8 bytes
3802 long.
3803 * testsuite/script_test_2.cc (main): Adjust test.
3804
706e1f5e
ILT
38052008-04-11 David S. Miller <davem@davemloft.net>
3806 Ian Lance Taylor <iant@google.com>
3807
3808 * options.h (General_options): Add entries for '-Y' and
3809 '-relax'.
3810 * options.cc (General_options:finalize): If -Y was used, add those
3811 entries to the library path instead of the default "/lib" and
3812 "/usr/lib".
3813
7c98e6bb
DM
38142008-04-11 David S. Miller <davem@davemloft.net>
3815
3816 * testsuite/justsyms.t: Start at 0x100.
3817 * testsuite/justsyms_1.cc: Adjust justsyms_string assertion.
83bfb6b7
ILT
3818 * testsuite/script_test_2b.cc (script_test_string_b): Make 8 bytes
3819 long.
3820 * testsuite/script_test_2.cc: Adjust string and section length
3821 checks.
7c98e6bb 3822
99a37bfd
ILT
38232008-04-09 Ian Lance Taylor <iant@google.com>
3824
2cefc357
ILT
3825 PR gold/5996
3826 * script-sections.cc (Sections_element::allocate_to_segment): Add
3827 orphan parameter.
3828 (Output_section_definition::allocate_to_segment): Likewise.
3829 (Orphan_output_section::allocate_to_segment): Likewise.
3830 (Script_sections::attach_sections_using_phdrs_clause): Don't
3831 propagate non-PT_LOAD segments to orphan sections.
3832 * testsuite/Makefile.am (script_test_3.stdout): Generate using
3833 readelf rather than objdump.
3834 * testsuite/script_test_3.sh: Adjust accordingly. Test that
3835 .interp section and PT_INTERP segment are the same size.
3836 * testsuite/Makefile.in: Rebuild.
3837
99a37bfd
ILT
3838 * symtab.cc (Symbol_table::add_from_dynobj): Only look for weak
3839 aliases for symbols defined in the same object.
3840 * testsuite/Makefile.am (check_PROGRAMS): Add weak_alias_test.
3841 (weak_alias_test_SOURCES): New variable.
3842 (weak_alias_test_DEPENDENCIES): New variable.
3843 (weak_alias_test_LDFLAGS): New variable.
3844 (weak_alias_test_LDADD): New variable.
3845 (weak_alias_test_1_pic.o, weak_alias_test_1.so): New targets.
3846 (weak_alias_test_2_pic.o, weak_alias_test_2.so): New targets.
3847 (weak_alias_test_3.o): New target.
3848 (weak_alias_test_4_pic.o, weak_alias_test_4.so): New targets.
3849 * testsuite/weak_alias_test_main.cc: New file.
3850 * testsuite/weak_alias_test_1.cc: New file.
3851 * testsuite/weak_alias_test_2.cc: New file.
3852 * testsuite/weak_alias_test_3.cc: New file.
3853
780e49c5
ILT
38542008-04-08 Ian Lance Taylor <iant@google.com>
3855
cdb0b8f5
ILT
3856 * options.h (class General_options): Add --noinhibit-exec option.
3857 * main.cc (main): Check --noinhibit-exec.
3858
0864d551
ILT
3859 * options.h (class General_options): Define --wrap as a special
3860 option. Add wrap_symbols_ field.
3861 (General_options::any_wrap_symbols): New function.
3862 (General_options::is_wrap_symbol): New function.
3863 * options.cc (General_options::parse_wrap): New function.
3864 (General_options::General_options): Initialize wrap_symbols_.
3865 * symtab.cc (Symbol_table::wrap_symbol): New function.
3866 (Symbol_table::add_from_object): Handle --wrap.
3867 * symtab.h (class Symbol_table): Declare wrap_symbol.
3868 * target.h (Target::wrap_char): New function.
3869 (Target::Target_info): Add wrap_char field.
3870 * i386.cc (Target_i386::i386_info): Initialize wrap_char.
3871 * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
3872 * testsuite/testfile.cc (Target_test::test_target_info):
3873 Likewise.
3874
789aa6de
ILT
3875 * errors.cc (Errors::undefined_symbol): Mention symbol version if
3876 there is one.
3877
2c38906f
ILT
3878 * layout.h (class Layout): Add added_eh_frame_data_ field.
3879 * layout.cc (Layout::Layout): Initialize new field.
3880 (Layout::layout_eh_frame): Don't add eh_frame_data_ to .eh_frame
3881 output section until we find a section we merged successfully.
3882 * object.cc (Sized_relobj::check_eh_frame_flags): Don't require
3883 that the size be non-zero.
3884
780e49c5
ILT
3885 * merge.cc (Object_merge_map::get_output_offset): Remove inline
3886 qualifier.
3887
7fcd0256
ILT
38882008-04-08 Craig Silverstein <csilvers@google.com>
3889
3890 * configure.ac: Export new conditional variable HAVE_ZLIB.
3891 * testsuite/Makefile.am (flagstest_o_specialfile): Condition
3892 on HAVE_ZLIB.
3893 (flagstest_o_specialfile_and_compress_debug_sections): Likewise.
3894 * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
3895
6835af53
ILT
38962008-04-07 Ian Lance Taylor <iant@google.com>
3897
e24f324c
ILT
3898 * version.cc (version_string): Set to "1.5".
3899
a036edd8
ILT
3900 * x86_64.cc (Target_x86_64::Scan): Change from struct to class.
3901 Add issued_non_pic_error_ field. Declare check_non_pic.
3902 (Target_x86_64::Scan::check_non_pic): New function.
3903 (Target_x86_64::Scan::local): Call check_non_pic as appropriate.
3904 (Target_x86_64::Scan::global): Likewise.
3905
624f8810
ILT
3906 * output.cc (Output_reloc<SHT_REL>::local_section_offset): Add
3907 addend parameter. Change caller. Handle merge sections.
3908 (Output_reloc<SHT_REL>::symbol_value): Change parameter type from
3909 Address to Addend. Don't add in the result of
3910 local_section_offset, pass down the addend and use the returned
3911 value.
3912 * output.h (class Output_reloc<SHT_REL>): Add Addend typedef.
3913 Update declarations of local_section_offset and symbol_value.
3914 * testsuite/two_file_test_1.cc (t18): New function.
3915 * testsuite/two_file_test_2.cc (f18): New function.
3916 * testsuite/two_file_test_main.cc (main): Call t18.
3917 * testsuite/two_file_test.h (t18, f18): Declare.
3918
6835af53
ILT
3919 * configure.ac: Don't test for objdump, c++filt, or readelf.
3920 * testsuite/Makefile.am: Remove READELF and OBJDUMP_AND_CPPFILT
3921 conditionals.
3922 (TEST_READELF): New variable.
3923 (TEST_OBJDUMP, TEST_CXXFILT, TEST_STRIP): New variables.
3924 (check_PROGRAMS): Add two_file_strip_test.
3925 (two_file_strip_test): New target.
3926 (check_PROGRAMS): Add two_file_same_shared_strip_test.
3927 (two_file_same_shared_strip_test_SOURCES): New variable.
3928 (two_file_same_shared_strip_test_DEPENDENCIES): New variable.
3929 (two_file_same_shared_strip_test_LDFLAGS): New variable.
3930 (two_file_same_shared_strip_test_LDADD): New variable.
3931 (two_file_shared_strip.so): New target.
3932 (ver_test_2.syms, ver_test_4.syms): Use TEST_READELF.
3933 (ver_test_5.syms, ver_test_7.syms): Likewise.
3934 (ver_matching_test.stdout): Use TEST_OBJDUMP and TEST_CXXFILT.
3935 (strip_test_3.stdout): Use TEST_OBJDUMP.
3936 * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
3937
86925eef
CC
39382008-04-04 Cary Coutant <ccoutant@google.com>
3939
3940 * symtab.h (Symbol::is_weak_undefined): New function.
3941 (Symbol::is_strong_undefined): New function.
3942 (Symbol::is_absolute): New function.
3943 (Symbol::needs_plt_entry): Exclude weak undefined symbols.
3944 (Symbol::needs_dynamic_reloc): Exclude weak undefined and
3945 absolute symbols.
3946 * testsuite/Makefile.am (check_PROGRAMS): Add weak_undef_test.
3947 (weak_undef_test): New target.
3948 * testsuite/Makefile.in: Rebuild.
3949 * testsuite/weak_undef_file1.cc: New file.
3950 * testsuite/weak_undef_file2.cc: New file.
3951 * testsuite/weak_undef_test.cc: New file.
3952
126f3ece
ILT
39532008-04-03 Craig Silverstein <csilvers@google.com>
3954
3955 * compressed_output.h (class Output_compressed_section): Use
3956 unsigned buffer.
3957 * compressed_output.cc (zlib_compress): Use unsigned buffers,
3958 add zlib header.
3959 (zlib_compressed_suffix): Removed.
3960 (Output_compressed_section::set_final_data_size): Use unsigned
3961 buffers.
3962 * testsuite/Makefile.am (flagstest_compress_debug_sections):
3963 Fix linker invocation.
3964 (flagstest_o_specialfile_and_compress_debug_sections):
3965 Likewise.
3966 * testsuite/Makefile.in: Regenerated.
3967
deae2a14
DM
39682008-04-02 David S. Miller <davem@davemloft.net>
3969
3970 * dwarf_reader.cc (Sized_dwarf_line_info::read_header_prolog,
3971 Sized_dwarf_line_info::process_one_opcode): Use Swap_unaligned.
3972
70752818
ILT
39732008-04-02 Craig Silverstein <csilvers@google.com>
3974
3975 * TODO: New file.
3976
39d0cb0e
ILT
39772008-04-02 Ian Lance Taylor <iant@google.com>
3978
3979 * fileread.cc (File_read::find_view): Add byteshift and vshifted
3980 parameters. Update for new key type to views_. Change all
3981 callers.
3982 (File_read::read): Adjust for byteshift in returned view.
3983 (File_read::add_view): New function, broken out of
3984 find_and_make_view.
3985 (File_read::make_view): New function, broken out of
3986 find_and_make_view.
3987 (File_read::find_or_make_view): Add offset and aligned
3988 parameters. Rewrite accordingly. Change all callers.
3989 (File_read::get_view): Add offset and aligned parameters. Adjust
3990 for byteshift in return value.
3991 (File_read::get_lasting_view): Likewise.
3992 * fileread.h (class File_read): Update declarations.
3993 (class File_read::View): Add byteshift_ field. Add byteshift to
3994 constructor. Add byteshift method.
3995 * archive.h (Archive::clear_uncached_views): New function.
3996 (Archive::get_view): Add aligned parameter. Change all callers.
3997 * object.h (Object::get_view): Add aligned parameter. Change all
3998 callers.
3999 (Object::get_lasting_view): Likewise.
4000
4001 * fileread.cc (File_read::release): Don't call clear_views if
4002 there are multiple objects.
4003 * fileread.h (File_read::clear_uncached_views): New function.
4004 * archive.cc (Add_archive_symbols::run): Call clear_uncached_views
4005 on the archive.
4006
a1207466
CC
40072008-03-31 Cary Coutant <ccoutant@google.com>
4008
4009 Add thin archive support.
4010 * archive.cc (Archive::armagt): New const.
4011 (Archive::setup): Remove task parameter and calls to unlock.
4012 (Archive::unlock_nested_archives): New function.
4013 (Archive::read_header): Add nested_off parameter. Change
4014 all callers.
4015 (Archive::interpret_header): Likewise.
4016 (Archive::include_all_members): Change to handle thin
4017 archives.
4018 (Archive::include_member): Likewise.
4019 * archive.h (Archive::Archive): Add new parameters and
4020 initializers.
4021 (Archive::armagt): New const.
4022 (Archive::setup): Remove task parameter.
4023 (Archive::unlock_nested_archives): New function.
4024 (Archive::read_header): Add nested_off parameter.
4025 (Archive::interpret_header): Likewise.
4026 (Archive::Nested_archive_table): New typedef.
4027 (Archive::is_thin_archive_): New field.
4028 (Archive::nested_archives_): New field.
4029 (Archive::options_): New field.
4030 (Archive::dirpath_): New field.
4031 (Archive::task_): New field.
4032 * readsyms.cc (Read_symbols::do_read_symbols): Add check
4033 for thin archives. Pass additional parameters to
4034 Archive::Archive. Unlock the archive file after calling
4035 Archive::setup.
cd536b21 4036
479f6503
ILT
40372008-03-29 Ian Lance Taylor <iant@google.com>
4038
686c8caf
ILT
4039 * symtab.cc (Symbol_table::do_define_as_constant): Don't force a
4040 version symbol to be local.
4041 * testsuite/ver_test_4.sh: New file.
4042 * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_4.sh.
4043 (check_DATA): Add ver_test_4.syms.
4044 (ver_test_4.syms): New target.
4045 * testsuite/Makefile.in: Rebuild.
4046
ab794b6b
ILT
4047 * output.cc
4048 (Output_section::Input_section_sort_entry::has_priority): New
4049 function.
4050 (Output_section::Input_section_sort_entry::match_file_name): New
4051 function.
4052 (Output_section::Input_section_sort_entry::match_section_name):
4053 Remove.
4054 (Output_section::Input_section_sort_entry::match_section_name_prefix):
4055 Remove.
4056 (Output_section::Input_section_sort_entry::match_section_file):
4057 Remove.
4058 (Output_section::Input_section_sort_compare::operator()): Rewrite
4059 using new Input_section_sort_entry functions. Sort crtbegin and
4060 crtend first. Sort sections with no priority before sections with
4061 a priority.
4062 * testsuite/initpri1.c (d3): Check j != 4.
4063 (cd5): New constructor/destructor function.
4064 (main): Check j != 2.
4065
479f6503
ILT
4066 * symtab.cc (Symbol_table::add_from_object): If we don't use the
4067 new symbol when resolving, don't call set_is_default.
4068 * testsuite/ver_test_7.cc: New file.
4069 * testsuite/ver_test_7.sh: New file.
4070 * testsuite/Makefile.am (ver_test_7.so): New target.
4071 (ver_test_7.o): New target.
4072 (check_SCRIPTS): Add ver_test_7.sh.
4073 (check_DATA): Add ver_test_7.syms.
4074 (ver_test_7.syms): New target.
4075
2fd32231
ILT
40762008-03-28 Ian Lance Taylor <iant@google.com>
4077
4078 * layout.cc (Layout::layout): If we see an input section with a
4079 name that needs sorting, set the must_sort flag for the output
4080 section.
4081 (Layout::make_output_section): If the name of the output section
4082 indicates that it might require sorting, set the may_sort flag.
4083 * output.h (Output_section::may_sort_attached_input_sections): New
4084 function.
4085 (Output_section::set_may_sort_attached_input_sections): New
4086 function.
4087 (Output_section::must_sort_attached_input_sections): New
4088 function.
4089 (Output_section::set_must_sort_attached_input_sections): New
4090 function.
4091 (class Output_section): Declare Input_section_sort_entry. Define
4092 Input_section_sort_compare. Declare
4093 sort_attached_input_sections. Add new fields:
4094 may_sort_attached_input_sections_,
4095 must_sort_attached_input_sections_,
4096 attached_input_sections_are_sorted_.
4097 * output.cc (Output_section::Output_section): Initialize new
4098 fields.
4099 (Output_section::add_input_section): Add an entry to
4100 input_sections_ if may_sort or must_sort are true.
4101 (Output_section::set_final_data_size): Call
4102 sort_attached_input_sections if necessary.
4103 (Output_section::Input_section_sort_entry): Define new class.
4104 (Output_section::Input_section_sort_compare::operator()): New
4105 function.
4106 (Output_section::sort_attached_input_sections): New function.
4107 * configure.ac: Check whether the compiler supports constructor
4108 priorities. Define a CONSTRUCTOR_PRIORITY automake conditional.
4109 * testsuite/initpri1.c: New file.
4110 * testsuite/Makefile.am (check_PROGRAMS): Add initpri1 if
4111 CONSTRUCTOR_PRIORITY.
4112 (initpri1_SOURCES, initpri1_DEPENDENCIES): New variables.
4113 (initpri1_LDFLAGS): New variable.
4114 * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
4115
18e6b24e
ILT
41162008-03-27 Ian Lance Taylor <iant@google.com>
4117
49bdd526
ILT
4118 * common.cc (Sort_commons::operator): Correct sorting algorithm.
4119 * testsuite/common_test_1.c: New file.
4120 * testsuite/Makefile.am (check_PROGRAMS): Add common_test_1.
4121 (common_test_1_SOURCES): New variable.
4122 (common_test_1_DEPENDENCIES): New variable.
4123 (common_test_1_LDFLAGS): New variable.
4124
18e6b24e
ILT
4125 * symtab.cc (Symbol_table::add_from_object): Handle saw_undefined_
4126 and commons_ correctly when NAME/VERSION does not override
4127 NAME/NULL.
4128 * testsuite/ver_test_6.c: New file.
4129 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_6
4130 (ver_test_6_SOURCES, ver_test_6_DEPENDENCIES): New variables.
4131 (ver_test_6_LDFLAGS, ver_test_6_LDADD): New variables.
4132
04bf7072
ILT
41332008-03-26 Ian Lance Taylor <iant@google.com>
4134
5871526f
ILT
4135 * symtab.cc (Symbol_table::add_from_relobj): Don't set the version
4136 of an undefined symbol from a version script.
4137 * testsuite/Makefile.am (ver_test_5.so): New target.
4138 (ver_test_5.o): New target.
4139 (check_SCRIPTS): Add ver_test_5.sh.
4140 (check_DATA): Add ver_test_5.syms.
4141 (ver_test_5.syms): New target.
4142 * testsuite/ver_test_5.cc: New file.
4143 * testsuite/ver_test_5.script: New file.
4144 * testsuite/ver_test_5.sh: New file.
4145 * Makefile.in, testsuite/Makefile.in: Rebuild.
4146
04bf7072
ILT
4147 PR gold/5986
4148 Fix problems building gold with gcc 4.3.0.
4149 * gold.h (TEMPLATE_ATTRIBUTE_PRINTF_4): Define.
4150 (gold_error_at_location, gold_warning_at_location): Use it.
4151 * configure.ac: Check whether we can compile and use a template
4152 function with a printf attribute.
4153 * x86_64.cc (Target_x86_64::do_code_fill): Swap out a 32-bit value
4154 when jumping over bytes.
4155 * object.cc: Instantiate Object::read_section_data.
4156 * debug.h: Include <cstring>
4157 * dwarf_reader.cc: Include <algorithm>
4158 * main.cc: Include <cstring>.
4159 * options.cc: Include <cstring>.
4160 * output.cc: Include <cstring>.
4161 * script.cc: Include <cstring>.
4162 * script.h: Include <string>.
4163 * symtab.cc: Include <cstring> and <algorithm>.
4164 * target-select.cc: Include <cstring>.
4165 * version.cc: Include <string>.
4166 * testsuite/testmain.cc: Include <cstdlib>.
4167 * configure, config.in: Rebuild.
4168
874c5b28
ILT
41692008-03-25 Ian Lance Taylor <iant@google.com>
4170
819d6c3a
ILT
4171 * options.cc: Include "../bfd/bfdver.h".
4172 (options::help): Print bug reporting address.
4173
f4b2c6f5
ILT
4174 * version.cc (print_version): Adjust output for current value of
4175 BFD_VERSION_STRING.
4176
4177 * NEWS: New file.
4178
e96caa79
ILT
4179 * options.cc (options::help): Print list of supported targets.
4180 * target-select.h: Include <vector>.
4181 (class Target_selector): Make machine_, size_, and is_big_endian_
4182 fields const. Add bfd_name_ and instantiated_target_ fields.
4183 (Target_selector::Target_selector): Add bfd_name parameter.
4184 (Target_selector::recognize): Make non-virtual, call
4185 do_recognize.
4186 (Target_selector::recognize_by_name): Make non-virtual, call
4187 do_recognize_by_name.
4188 (Target_selector::supported_names): New function.
4189 (Target_selector::bfd_name): New function.
4190 (Target_selector::do_instantiate_target): New pure virtual
4191 function.
4192 (Target_selector::do_recognize): New virtual function.
4193 (Target_selector::do_recognize_by_name): New virtual function.
4194 (Target_selector::instantiate_target): New private function.
4195 (supported_target_names): Declare.
4196 * target-select.cc (Target_selector::Target_selector): Update for
4197 new parameter and fields.
4198 (select_target_by_name): Check that the name matches before
4199 calling recognize_by_name.
4200 (supported_target_names): New function.
4201 * i386.cc (class Target_selector_i386): Update Target_selector
4202 constructor call. Remove recognize and recognize_by_name. Add
4203 do_instantiate_target.
4204 * x86_64.cc (class Target_selector_x86_64): Likewise.
4205 * testsuite/testfile.cc (class Target_selector_test): Update for
4206 changes to Target_selector.
4207
874c5b28
ILT
4208 * README: Rewrite, with some notes on unsupported features.
4209
0a65a3a7
CC
42102008-03-24 Cary Coutant <ccoutant@google.com>
4211
4212 * i386.cc (Target_i386::Got_type): New enum declaration.
4213 (Target_i386::Scan::local): Updated callers of Output_data_got
4214 member functions.
4215 (Target_i386::Scan::global): Likewise.
4216 (Target_i386::Relocate::relocate): Likewise.
4217 (Target_i386::Relocate::relocate_tls): Likewise.
4218 * object.h (Got_offset_list): New class.
4219 (Sized_relobj::local_has_got_offset): Added got_type parameter.
4220 (Sized_relobj::local_got_offset): Likewise.
4221 (Sized_relobj::set_local_got_offset): Likewise.
4222 (Sized_relobj::local_has_tls_got_offset): Removed.
4223 (Sized_relobj::local_tls_got_offset): Removed.
4224 (Sized_relobj::set_local_tls_got_offset): Removed.
4225 (Sized_relobj::Local_got_offsets): Changed to store a list of offsets.
4226 * output.cc (Output_data_got::add_global): Added got_type parameter.
4227 (Output_data_got::add_global_with_rel): Likewise.
4228 (Output_data_got::add_global_with_rela): Likewise.
4229 (Output_data_got::add_global_pair_with_rel): New function.
4230 (Output_data_got::add_global_pair_with_rela): New function.
4231 (Output_data_got::add_local): Added got_type parameter.
4232 (Output_data_got::add_local_with_rel): Likewise.
4233 (Output_data_got::add_local_with_rela): Likewise.
4234 (Output_data_got::add_local_pair_with_rel): New function.
4235 (Output_data_got::add_local_pair_with_rela): New function.
4236 (Output_data_got::add_global_tls): Removed.
4237 (Output_data_got::add_global_tls_with_rel): Removed.
4238 (Output_data_got::add_global_tls_with_rela): Removed.
4239 (Output_data_got::add_local_tls): Removed.
4240 (Output_data_got::add_local_tls_with_rel): Removed.
4241 (Output_data_got::add_local_tls_with_rela): Removed.
4242 * output.h (Output_data_got::add_global): Added got_type parameter.
4243 (Output_data_got::add_global_with_rel): Likewise.
4244 (Output_data_got::add_global_with_rela): Likewise.
4245 (Output_data_got::add_global_pair_with_rel): New function.
4246 (Output_data_got::add_global_pair_with_rela): New function.
4247 (Output_data_got::add_local): Added got_type parameter.
4248 (Output_data_got::add_local_with_rel): Likewise.
4249 (Output_data_got::add_local_with_rela): Likewise.
4250 (Output_data_got::add_local_pair_with_rel): New function.
4251 (Output_data_got::add_local_pair_with_rela): New function.
4252 (Output_data_got::add_global_tls): Removed.
4253 (Output_data_got::add_global_tls_with_rel): Removed.
4254 (Output_data_got::add_global_tls_with_rela): Removed.
4255 (Output_data_got::add_local_tls): Removed.
4256 (Output_data_got::add_local_tls_with_rel): Removed.
4257 (Output_data_got::add_local_tls_with_rela): Removed.
4258 * resolve.cc (Symbol::override_base_with_special): Removed
4259 reference to has_got_offset_ field.
4260 * symtab.cc (Symbol::init_fields): Replaced initialization
4261 of got_offset_ with got_offsets_. Removed initialization
4262 of has_got_offset_
53fcba31 4263 * symtab.h (Symbol::has_got_offset): Aded got_type parameter.
0a65a3a7
CC
4264 (Symbol::got_offset): Likewise.
4265 (Symbol::set_got_offset): Likewise.
4266 (Symbol::has_tls_got_offset): Removed.
4267 (Symbol::tls_got_offset): Removed.
4268 (Symbol::set_tls_got_offset): Removed.
4269 (Symbol::got_offset_): Removed.
4270 (Symbol::tls_mod_got_offset_): Removed.
4271 (Symbol::tls_pair_got_offset_): Removed.
4272 (Symbol::got_offsets_): New field.
4273 (Symbol::has_got_offset): Removed.
4274 (Symbol::has_tls_mod_got_offset): Removed.
4275 (Symbol::has_tls_pair_got_offset): Removed.
4276 * x86_64.cc (Target_x86_64::Got_type): New enum declaration.
4277 (Target_x86_64::Scan::local): Updated callers of Output_data_got
4278 member functions.
4279 (Target_x86_64::Scan::global): Likewise.
4280 (Target_x86_64::Relocate::relocate): Likewise.
4281 (Target_x86_64::Relocate::relocate_tls): Likewise.
4282
bd52eafb
BE
42832008-03-25 Ben Elliston <bje@au.ibm.com>
4284
4285 * yyscript.y: Fix spelling error in comment.
4286
8b105e34
ILT
42872008-03-24 Ian Lance Taylor <iant@google.com>
4288
8ed814a9
ILT
4289 * options.h (class General_options): Define build_id option.
4290 * layout.h (class Layout): Declare write_build_id, create_note,
4291 create_build_id. Add build_id_note_ member.
4292 * layout.cc: Include <cerrno>, <fcntl.h>, <unistd.h>,
4293 "libiberty.h", "md5.h", "sha1.h".
4294 (Layout::Layout): Initialize eh_frame_data_,
4295 eh_frame_hdr_section_, and build_id_note_.
4296 (Layout::finalize): Call create_build_id.
4297 (Layout::create_note): New function, broken out of
4298 Layout::create_gold_note.
4299 (Layout::create_gold_note): Call create_note.
4300 (Layout::create_build_id): New function.
4301 (Layout::write_build_id): New function.
4302 (Close_task_runner::run): Call write_build_id.
4303
8b105e34
ILT
4304 * x86_64.cc: Correct license to GPLv3.
4305
086a1841
ILT
43062008-03-23 Ian Lance Taylor <iant@google.com>
4307
4308 * options.cc: Include "demangle.h".
4309 (parse_optional_string): New function.
4310 (parse_long_option): Handle takes_optional_argument.
4311 (parse_short_option): Update dash_z initializer. Handle
4312 takes_optional_argument.
4313 (General_options::General_options): Initialize do_demangle_.
4314 (General_options::finalize): Set do_demangle_. Handle demangling
4315 style.
4316 * options.h (parse_optional_string): Declare.
4317 (struct One_option): Add optional_arg field. Update constructor.
4318 Update call constructor calls. Add takes_optional_argument
4319 function.
4320 (DEFINE_var): Add optional_arg__ parameter. Change all callers.
4321 (DEFINE_optional_string): Define.
4322 (General_options::demangle): Change from DEFINE_bool to
4323 DEFINE_optional_string.
4324 (General_options::no_demangle): New function.
4325 (General_options::do_demangle): New function.
4326 (General_options::set_do_demangle): New function.
4327 (General_options::execstack_status_): Move definition to end of
4328 class definition.
4329 (General_options::static_): Likewise.
4330 (General_options::do_demangle_): New field.
4331 * object.cc (big_endian>::get_symbol_location_info): Call
4332 Options::do_demangle, not Options::demangle.
4333 * symtab.cc (demangle): Likewise.
4334
cbb93e63
ILT
43352008-03-22 Ian Lance Taylor <iant@google.com>
4336
4337 * gold.h: Include <cstddef> and <sys/types.h>
4338 * options.h: Include <cstring>.
4339
ec531623
ILT
43402008-03-21 Ian Lance Taylor <iant@google.com>
4341
4342 * Added source code to GNU binutils.
This page took 0.271203 seconds and 4 git commands to generate.