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