*** empty log message ***
[deliverable/binutils-gdb.git] / gold / ChangeLog
CommitLineData
a2e47362
CC
12010-07-12 Cary Coutant <ccoutant@google.com>
2
3 * compressed_output.cc (zlib_decompress): New function.
4 (get_uncompressed_size): New function.
5 (decompress_input_section): New function.
6 * compressed_output.h (get_uncompressed_size): New function.
7 (decompress_input_section): New function.
8 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info)
9 Handle compressed debug sections.
10 * layout.cc (is_compressed_debug_section): New function.
11 (Layout::output_section_name): Map compressed section names to
12 canonical names.
13 * layout.h (is_compressed_debug_section): New function.
14 (is_debug_info_section): Recognize compressed debug sections.
15 * merge.cc: Include compressed_output.h.
16 (Output_merge_data::do_add_input_section): Handle compressed
17 debug sections.
18 (Output_merge_string::do_add_input_section): Handle compressed
19 debug sections.
20 * object.cc: Include compressed_output.h.
21 (Sized_relobj::Sized_relobj): Initialize new data members.
22 (build_compressed_section_map): New function.
23 (Sized_relobj::do_read_symbols): Handle compressed debug sections.
24 * object.h (Object::section_is_compressed): New method.
25 (Object::do_section_is_compressed): New method.
26 (Sized_relobj::Compressed_section_map): New type.
27 (Sized_relobj::do_section_is_compressed): New method.
28 (Sized_relobj::compressed_sections_): New data member.
29 * output.cc (Output_section::add_input_section): Handle compressed
30 debug sections.
31 * reloc.cc: Include compressed_output.h.
32 (Sized_relobj::write_sections): Handle compressed debug sections.
33
ce279a62
CC
342010-07-08 Cary Coutant <ccoutant@google.com>
35
36 * resolve.cc (Symbol_table::resolve): Remember whether undef was
37 weak when resolving to a dynamic def.
38 (Symbol_table::should_override): Add adjust_dyndef flag; set it
39 for weak undef/dynamic def cases. Adjust callers.
40 * symtab.cc (Symbol::init_fields): Initialize undef_binding_set_ and
41 undef_binding_weak_.
42 (Symbol_table::sized_write_globals): Adjust symbol binding.
43 (Symbol_table::sized_write_symbol): Add binding parameter.
44 * symtab.h (Symbol::set_undef_binding): New method.
45 (Symbol::is_undef_binding_weak): New method.
46 (Symbol::undef_binding_set_, Symbol::undef_binding_weak_): New members.
47 (Symbol_table::should_override): Add new parameter.
48 (Symbol_table::sized_write_symbol): Add new parameter.
49
50 * testsuite/weak_undef_file1.cc: Add new test case.
51 * testsuite/weak_undef_file2.cc: Fix header comment.
52 * testsuite/weak_undef_test.cc: Add new test case.
53
b2286c10
DK
542010-06-29 Doug Kwan <dougkwan@google.com>
55
56 * arm-reloc-property.cc (Arm_reloc_property::Arm_reloc_property):
57 Initialize USE_SYMBOL_.
58 * arm-reloc-property.h (Arm_reloc_property::uses_symbol): New method
59 definition.
60 (Arm_reloc_property::uses_symbol_): New data member declaration.
61 * arm.cc (Target_arm::Relocate::relocate): Exit early if relocation
62 uses symbol value and symbol is undefined but not weakly undefined.
63
4802450a
RÁE
642010-06-28 Rafael Espindola <espindola@google.com>
65
66 * plugin.cc (Plugin::load): Use dlerror.
67
e5ca47ba
ILT
682010-06-26 Jeffrey Yaskin <jyasskin@google.com>
69
70 * symtab.cc (detect_odr_violations): When reporting an ODR
71 violation, report an object where the symbol is defined.
72
8a75a161
DK
732010-06-25 Doug Kwan <dougkwan@google.com>
74
75 * arm.cc (Target_arm::can_check_for_functions_pointers): Return true.
76 (Target_arm::section_may_have_icf_unsafe_pointers): New method
77 definition.
78 (Target_arm::Scan::local_reloc_may_be_function_pointer,
79 Target_arm::Scan::global_reloc_may_be_function_pointer): Implement
80 target hook to detect function points.
81 (Target_arm::Scan::possible_function_pointer_reloc): New method.
82 * icf.h (Icf::check_section_for_function_pointers): Change type of
83 parameter SECTION_NAME to const reference to std::string. Use
84 target hook to determine if section may have unsafe pointers.
85 * target.h (Target::section_may_have_icf_unsafe_pointers): New
86 method definition.
87
42218b9f
RÁE
882010-06-21 Rafael Espindola <espindola@google.com>
89
90 * fileread.cc (Input_file::find_fie): New
91 (Input_file::open): Use Input_file::find_fie.
92 * fileread.h (Input_file::find_fie): New
93 * plugin.cc (set_extra_library_path): New.
94 (Plugin::load): Add set_extra_library_path to the transfer vector.
95 (Plugin_manager::set_extra_library_path): New.
96 (Plugin_manager::add_input_file): Use the extra search path if set.
97 (set_extra_library_path(): New.
98 * plugin.h (Plugin_manager): Add set_extra_library_path and
99 extra_search_path_.
100
a0506cca
CC
1012010-06-19 Cary Coutant <ccoutant@google.com>
102
103 * layout.cc (gdb_sections): Add .debug_types.
104 (lines_only_debug_sections): Likewise.
105
6508b958
RÁE
1062010-06-18 Rafael Espindola <espindola@google.com>
107
108 * plugin.cc (add_input_file,add_input_library)
109 (Plugin_manager::add_input_file): Make filename arguments const.
110 * plugin.h (Plugin_manager::add_input_file): Make filename arguments
111 const.
112
3e235302
DK
1132010-06-16 Doug Kwan <dougkwan@google.com>
114
115 * arm.cc (Target_arm::do_finalize_sections): Do not emit an
116 .ARM.attributes section if we have not merged any input
117 attributes sections.
118
106e8a6c
DK
1192010-06-15 Viktor Kutuzov <vkutuzov@accesssoftek.com>
120
121 * arm.cc: Allow combining objects with no EABI version
122 information.
123
91ff43fe
RÁE
1242010-06-15 Rafael Espindola <espindola@google.com>
125
126 * plugin.cc (Plugin_hook::run): Set in_real_elf for the start symbol.
127
68ed838c
ILT
1282010-06-15 Viktor Kutuzov <vkutuzov@accesssoftek.com>
129
130 * fileread.cc: Only #include <sys/uio.h> if HAVE_READV.
131 (struct iovec): Correct !HAVE_READV definition.
132
f3a2388f
CC
1332010-06-10 Cary Coutant <ccoutant@google.com>
134
135 * object.cc (Sized_relobj::do_layout): Defer layout for reloc sections.
136 (Sized_relobj::do_layout_deferred_sections): Do layout for deferred
137 reloc sections.
138 * object.h (Sized_relobj::deferred_layout_relocs_): New data member.
139
140 PR 11683
141 * symtab.h (Symbol::is_placeholder): New member function.
142 * target-reloc.h (relocate_section): Check for placeholder symbols.
143
144 * testsuite/Makefile.am (plugin_test_8): New test.
145 (plugin_test_9): New test.
146 * testsuite/Makefile.in: Regenerate.
147
e1df38aa
NC
1482010-06-09 Nick Clifton <nickc@redhat.com>
149
150 * yyscript.y (input_list_element): Allow strings prefixed with
151 the '-' character. Treat these as libraries.
152 * script.cc (script_add_library): New function. Adds a library
153 specified by "-l<name>" found in an input script.
154 * script-c.h: Add prototype for script_add_library.
155
25bbe950
DK
1562010-06-07 Doug Kwan <dougkwan@google.com>
157
158 * arm.cc (Target_arm::do_relax): Reserve more space for stubs.
159 Restrict stub-group size to be within long conditional branch
160 range when working around cortex-A8 erratum.
161
0f32ea4c
ILT
1622010-06-07 Damien Diederen <dd@crosstwine.com>
163
164 * gold-threads.cc (Lock_impl_threads::Lock_impl_threads): Correct
165 #ifdef typo.
166
8fe2a369
ST
1672010-06-03 Sriraman Tallam <tmsriram@google.com>
168
169 PR gold/11658
170 * output.cc
171 (Output_section::Input_section_sort_entry::compare_section_ordering):
172 Change to return non-zero correctly.
173 (Output_section::Input_section_sort_section_order_index_compare
174 ::operator()): Change to fix ambiguity in comparisons.
175
6e9ba2ca
ST
1762010-06-01 Sriraman Tallam <tmsriram@google.com>
177
178 * gold.h (is_wildcard_string): New function.
179 * layout.cc (Layout::layout): Pass this pointer to add_input_section.
180 (Layout::layout_eh_frame): Ditto.
181 (Layout::find_section_order_index): New method.
182 (Layout::read_layout_from_file): New method.
183 * layout.h (Layout::find_section_order_index): New method.
184 (Layout::read_layout_from_file): New method.
185 (Layout::input_section_position_): New private member.
186 (Layout::input_section_glob_): New private member.
187 * main.cc (main): Call read_layout_from_file here.
188 * options.h (--section-ordering-file): New option.
189 * output.cc (Output_section::input_section_order_specified_): New
190 member.
191 (Output_section::Output_section): Initialize new member.
192 (Output_section::add_input_section): Add new parameter.
193 Keep input sections when --section-ordering-file is used.
194 (Output_section::set_final_data_size): Sort input sections when
195 section ordering file is specified.
196 (Output_section::Input_section_sort_entry): Add new parameter.
197 Check sorting type.
198 (Output_section::Input_section_sort_entry::compare_section_ordering):
199 New method.
200 (Output_section::Input_section_sort_compare::operator()): Change to
201 consider section_order_index.
202 (Output_section::Input_section_sort_init_fini_compare::operator()):
203 Change to consider section_order_index.
204 (Output_section::Input_section_sort_section_order_index_compare
205 ::operator()): New method.
206 (Output_section::sort_attached_input_sections): Change to sort
207 according to section order when specified.
e1df38aa
NC
208 (Output_section::add_input_section<32, true>): Add new parameter.
209 (Output_section::add_input_section<64, true>): Add new parameter.
210 (Output_section::add_input_section<32, false>): Add new parameter.
211 (Output_section::add_input_section<64, false>): Add new parameter.
6e9ba2ca
ST
212 * output.h (Output_section::add_input_section): Add new parameter.
213 (Output_section::input_section_order_specified): New
214 method.
215 (Output_section::set_input_section_order_specified): New method.
216 (Input_section::Input_section): Initialize section_order_index_.
217 (Input_section::section_order_index): New method.
218 (Input_section::set_section_order_index): New method.
219 (Input_section::section_order_index_): New member.
220 (Input_section::Input_section_sort_section_order_index_compare): New
221 struct.
222 (Output_section::input_section_order_specified_): New member.
223 * script-sections.cc (is_wildcard_string): Delete and move modified
224 method to gold.h.
225 (Output_section_element_input::Output_section_element_input): Modify
226 call to is_wildcard_string.
227 (Output_section_element_input::Input_section_pattern
228 ::Input_section_pattern): Ditto.
229 (Output_section_element_input::Output_section_element_input): Ditto.
230 * testsuite/Makefile.am (final_layout): New test case.
231 * testsuite/Makefile.in: Regenerate.
232 * testsuite/final_layout.cc: New file.
233 * testsuite/final_layout.sh: New file.
234
3537c84b
RÁE
2352010-06-01 Rafael Espindola <espindola@google.com>
236
237 * plugin.cc (Plugin::load): Pass the output name to the plugin.
238
105b6afd
RÁE
2392010-06-01 Rafael Espindola <espindola@google.com>
240
241 * plugin.cc (Sized_pluginobj::::do_add_symbols): Correctly set the
242 visibility of symbols.
243
29e11421
DK
2442010-05-27 Doug Kwan <dougkwan@google.com>
245
246 * object.cc (Sized_relobj::do_finalize_local_symbols): Use offset
247 from start of output section instead of address for a local symbol
248 in a merged or relaxed section when doing a relocatable link.
249
5e0f337e
RÁE
2502010-05-26 Rafael Espindola <espindola@google.com>
251
252 PR 11604
253 * gold/object.cc(Sized_relobj::do_layout_deferred_sections): Avoid
254 adding sections the garbage collector removed.
255 * gold/testsuite/Makefile.am: Add test.
256 * gold/testsuite/Makefile.in: Regenerate.
257 * gold/testsuite/plugin_test_7.sh: New.
258 * gold/testsuite/plugin_test_7_1.c: New.
259 * gold/testsuite/plugin_test_7_2.c: New.
260
f4187277
RÁE
2612010-05-26 Rafael Espindola <espindola@google.com>
262
263 * script-sections.cc (Output_section_definition::set_section_addresses):
264 Check for --section-start.
265
5c388529
DK
2662010-05-26 Doug Kwan <dougkwan@google.com>
267
268 * arm.cc (Arm_scan_relocatable_relocs): New class.
269 (Target_arm::relocate_special_relocatable): New method.
270 (Arm_relocate_functions::arm_branch_common): Handle relocatable link.
271 (Arm_relocate_functions::thumb_branch_common): Same.
272 (Target_arm::scan_relocatable_relocs): Use Arm_scan_relocatable_relocs
273 instead of Default_scan_relocatable_relocs.
274 * target-reloc.h (relocate_for_relocatable): Let target handle
275 relocation strategy Relocatable_relocs::RELOC_SPECIAL.
276 * target.h (Sized_target::relocate_special_relocatable): New method.
277
bca1c3ae
ILT
2782010-05-25 Viktor Kutuzov <vkutuzov@accesssoftek.com>
279
280 * timer.cc: Only #include <sys/times.h> if HAVE_TIMES is defined.
281
0439c796
DK
2822010-05-23 Doug Kwan <dougkwan@google.com>
283
284 * arm.cc (Arm_input_section::do_output_offset): Use convert_types
285 instead of a cast.
286 (Target_arm::apply_cortex_a8_workaround): Rewrite a conditional branch
287 with a direct branch, not a conditional branch, to a stub.
288 * merge.cc (Output_merge_base::record_input_section): New method
289 defintion.
290 (Output_merge_data::do_add_input_section): Record input section if
291 keeps-input-sections flag is set.
292 (Output_merge_string::do_add_input_section): Ditto.
293 * merge.h (Output_merge_base::Output_merge_base): Initialize new data
294 members KEEPS_INPUT_SECTIONS_, FIRST_RELOBJ_, FIRST_SHNDX_ and
295 INPUT_SECTIONS_.
296 (Output_merge_base::keeps_input_sections,
297 Output_merge_base::set_keeps_input_sections,
298 Output_merge_base::first_relobj, Output_merge_base::first_shndx): New
299 method definitions.
300 (Output_merge_base::Input_sections): New type declaration.
301 (Output_merge_base::input_sections_begin,
302 Output_merge_base::input_sections_end,
303 Output_merge_base::do_set_keeps_input_sections): New method definitions.
304 (Output_merge_base::bool keeps_input_sections_,
305 Output_merge_base::first_relobj_, Output_merge_base::first_shndx_,
306 Output_merge_base::input_sections_): New data members.
307 (Output_merge_data::do_set_keeps_input_sections): New method
308 defintion.
309 (Output_merge_string::do_set_keeps_input_sections): Ditto.
310 * output.cc (Output_section::Input_section::relobj): Move method
311 defintion from class declaration to here and handle merge sections.
312 (Output_section::Input_section::shndx): Ditto.
313 (Output_section::Output_section): Remove initializations of removed
314 data members and initialize new data member LOOKUP_MAPS_.
315 (Output_section::add_input_section): Set keeps-input-sections flag
316 for a newly created merge output section as appropriate. Adjust code
317 to use Output_section_lookup_maps class.
318 (Output_section::add_relaxed_input_section): Adjst code for lookup
319 maps code refactoring.
320 (Output_section::add_merge_input_section): Add a new parameter
321 KEEPS_INPUT_SECTION. Adjust code to use Output_section_lookup_maps
322 class. If adding input section to a newly created merge output
323 section fails, remove the new merge section.
324 (Output_section::convert_input_sections_in_list_to_relaxed_input_sections):
e1df38aa 325 Adjust code for use of the Output_section_lookup_maps class.
0439c796
DK
326 (Output_section::find_merge_section): Ditto.
327 (Output_section::build_lookup_maps): New method defintion.
328 (Output_section::find_relaxed_input_section): Adjust code to use
329 Output_section_lookup_maps class.
330 (Output_section::get_input_sections): Export merge sections. Adjust
331 code to use Output_section_lookup_maps class.
332 (Output_section:::add_script_input_section): Adjust code to use
333 Output_section_lookup_maps class. Update lookup maps for merge
334 sections also.
335 (Output_section::discard_states): Use Output_section_lookup_maps.
336 (Output_section::restore_states): Same.
337 * output.h (Merge_section_properties): Move class defintion out of
338 Output_section.
339 (Output_section_lookup_maps): New class.
340 (Output_section::Input_section::is_merge_section): New method
341 defintion.
342 (Output_section::Input_section::relobj): Move defintion out of class
343 defintion. Declare method only.
344 (Output_section::Input_section::shndx): Ditto.
345 (Output_section::Input_section::output_merge_base): New method defintion.
346 (Output_section::Input_section::u2_.pomb): New union field.
347 (Output_section::Merge_section_by_properties_map,
348 Output_section::Output_section_data_by_input_section_map,
349 Output_section::Ouptut_relaxed_input_section_by_input_section_map):
350 Remove types.
351 (Output_section::add_merge_input_section): Add new parameter
352 KEEPS_INPUT_SECTIONS.
353 (Output_section::build_lookup_maps): New method declaration.
354 (Output_section::merge_section_map_,
355 Output_section::merge_section_by_properties_map_,
356 Output_section::relaxed_input_section_map_,
357 Output_section::is_relaxed_input_section_map_valid_): Remove data
358 members.
359 (Output_section::lookup_maps_): New data member.
360
76295588
L
3612010-05-21 Doug Kwan <dougkwan@google.com>
362
363 PR gold/11619
364 * arm.cc (Arm_input_section::do_output_offset): Add a cast to
365 avoid a compilation error.
366
d103a984
RÁE
3672010-05-19 Rafael Espindola <espindola@google.com>
368
369 * script-sections.cc (Output_section_definition::allocate_to_segment):
370 Update the phdrs_list even when the output section is NULL.
371 * testsuite/Makefile.am: Add test.
372 * testsuite/Makefile.in: Regenerate.
373 * testsuite/script_test_9.cc: New.
374 * testsuite/script_test_9.sh: New.
375 * testsuite/script_test_9.t: New.
376
6625d24e
DK
3772010-05-19 Doug Kwan <dougkwan@google.com>
378
379 * arm.cc (Arm_input_section::original_size): New method.
380 (Arm_input_section::do_addralign): Add a cast.
381 (Arm_input_section::do_output_offset): Remove static cast.
382 (Arm_input_section::original_addralign,
383 Arm_input_section::original_size_): Change type to uint32_t.
384 (Arm_input_section::init): Add safe casts for section alignment
385 and size.
386 (Arm_input_section::set_final_data_size): Do not set address and
387 offset of stub table.
388 (Arm_output_section::fix_exidx_coverage): Change use of of
389 Output_section::Simple_input_section to that of
390 Output_section::Input_section.
391 (Target_arm::do_relax): Set addresses and file offsets of Stub_tables
392 except for the first pass.
393 * output.cc (Output_section::get_input_sections): Change type of
394 input_sections to std::list<Input_section>.
395 (Output_section::add_script_input_section): Rename from
396 Output_section::add_simple_input_section. Change type of SIS
397 parameter from Simple_input_section to Input_section.
398 * output.h (Output_section::Simple_input_section): Remove class.
399 (Output_section::Input_section): Change class visibility to public.
400 (Output_section::Input_section::addralign): Use stored alignments
401 for special input sections if set.
402 (Output_section::Input_section::set_addralign): New method.
403 (Output_section::get_input_sections): Change parameter type from
404 list of Simple_input_section to list of Input_section.
405 (Output_section::add_script_input_section): Rename from
406 Output_section::add_simple_input_section. Change first parameter's
407 type from Simple_input_section to Input_section and remove the
408 second and third parameters.
409 * script-sections.cc (Input_section::Input_section_list): Change
410 type to list of Output_section::Input_section/
411 (Input_section_info::Input_section_info): Change parameter type of
412 INPUT_SECTION to Output_section::Input_section.
413 (Input_section_info::input_section): Change return type.
414 (Input_section_info::input_section_): Change type to
415 Output_section::Input_section.
416 (Output_section_element_input::set_section_addresses): Adjust code
417 to use Output_section::Input_section instead of
418 Output_section::Simple_input_section. Adjust code for renaming
419 of Output_section::add_simple_input_section.
420 (Orphan_output_section::set_section_addresses): Ditto.
421
e1e82ea4
RW
4222010-05-18 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
423
424 * gold.h (Unordered_multimap, Unordered_map): Fix defines for
425 when neither HAVE_TR1_UNORDERED_MAP nor HAVE_EXT_HASH_MAP are set.
426
91e75c8a
RÁE
4272010-05-18 Rafael Espindola <espindola@google.com>
428
429 * options.cc (General_options::finalize): Handle -nostdlib.
430 * options.h (nostdlib): New option.
431 * script.cc (script_add_search_dir): Handle -nostdlib.
432
da59ad79
DK
4332010-05-12 Doug Kwan <dougkwan@google.com>
434
435 * arm.cc (Target_arm::do_finalize_sections): Create an empty
436 attributes section only if there no attributes section after merging.
437 (Target_arm::merge_object_attributes): Move value of
e1df38aa 438 Tag_MPextension_use_legacy to that of Tag_MPextension_use.
da59ad79
DK
439 Handle Tag_DIV_use and Tag_MPextension_use_legacy.
440 * testsuite/Makefile.am (check_SCRIPTS): Add arm_attr_merge.sh
441 (check_DATA): Add arm_attr_merge_6.stdout, arm_attr_merge_6r_stdout
442 and arm_attr_merge_7.stdout.
443 (arm_attr_merge_6.stdout, arm_attr_merge_6 arm_attr_merge_6a.o
444 arm_attr_merge_6b.o, arm_attr_merge_6r.stdout, arm_attr_merge_6r,
445 arm_attr_merge_7.stdout, arm_attr_merge_7, arm_attr_merge_7a.o,
446 arm_attr_merge_7b.o): New rules.
447 (MOSTLYCLEANFILES): Add arm_attr_merge_6, arm_attr_merge_6r and
448 arm_attr_merge_7
449 * testsuite/Makefile.in: Regenerate.
450 * testsuite/arm_attr_merge.sh: New file.
451 * testsuite/arm_attr_merge_[67][ab].s: Same.
452
3e01a7fd
NC
4532010-05-05 Nick Clifton <nickc@redhat.com>
454
455 * po/es.po: Updated Spanish translation.
456
7ad2014a
L
4572010-04-27 H.J. Lu <hongjiu.lu@intel.com>
458
459 * Makefile.am (install-exec-local): Properly install gold as
460 default cross linker.
461 * Makefile.in: Regenerated.
462
4fda8867
NC
4632010-04-27 H.J. Lu <hongjiu.lu@intel.com>
464 Nick Clifton <nickc@redhat.com>
465
466 * configure.ac (install_as_default): Define and set to false
467 unless --enable-gold or --enable-gold=both/gold has been
468 specified.
469 * configure: Regenerate.
470
471 * Makefile.am (install-exec-local): Install the executable as
472 'ld.gold'. If install_as_default is true then also install it as
473 'ld'.
474 * Makefile.in: Regenerated.
475
bd288ea2
ILT
4762010-04-24 Ian Lance Taylor <iant@google.com>
477
478 * layout.cc (Layout::layout_reloc): In relocatable link don't
479 combine reloc sections for grouped sections.
480
ef38fd8a
ST
4812010-04-23 Sriraman Tallam <tmsriram@google.com>
482
483 * gc.h (gc_process_relocs): Pass information on relocs pointing to
484 sections that are not ordinary to icf.
485 * icf.cc (get_section_contents): Handle relocation pointing to section
486 with no object or shndx information.
487 * testsuite/Makefile.am: Remove icf_virtual_function_folding_test.sh
488 * testsuite/Makefile.in: Regenerate.
489 * testsuite/icf_virtual_function_folding_test.cc: Remove printf.
490 * testsuite/icf_virtual_function_folding_test.sh: Delete file.
491
f6973bdc
ILT
4922010-04-22 Ian Lance Taylor <iant@google.com>
493
494 * expression.cc (Expression::Expression_eval_info): Add
495 result_alignment_pointer field.
496 (Expression::eval_with_dot): Add result_alignment_pointer
497 parameter. Change all callers.
498 (Expression::eval_maybe_dot): Likewise.
499 (class Binary_expression): Add alignment_pointer parameter to
500 left_value and right_value. Change all callers.
501 (BINARY_EXPRESSION): Set result alignment.
502 (class Trinary_expression): Add alignment_pointer parameter to
503 arg2_value and arg3_value. Change all callers.
504 (Trinary_cond::value): Set result alignment.
505 (Max_expression::value, Min_expression::value): Likewise.
506 (Align_expression::value): Likewise.
507 * script-sections.cc (class Sections_element): Add dot_alignment
508 parameter to set_section_addresses virtual function. Update
509 instantiations.
510 (class Output_section_element): Likewise.
511 (Script_sections::create_segments): Add dot_alignment parameter.
512 Change all callers.
513 (Script_sections::create_segments_from_phdrs_clause): Likewise.
514 (Script_sections::set_phdrs_clause_addresses): Likewise.
515 * script-sections.h: Update declarations.
516 * script.h: Update declarations.
517 * output.h (Output_segment::set_minimum_p_align): Don't decrease
518 min_p_align.
519 * testsuite/script_test_3.t: Set large alignment.
520 * testsuite/script_test_3.sh: Make sure that at least one LOAD
521 segment has expected alignment.
522
9c9c98a5
NC
5232010-04-22 Nick Clifton <nickc@redhat.com>
524
525 * po/gold.pot: Updated by the Translation project.
526 * po/vi.po: Updated Vietnamese translation.
527
2253bfba
L
5282010-04-22 H.J. Lu <hongjiu.lu@intel.com>
529
530 * testsuite/Makefile.am (check_PROGRAMS): Add
531 icf_virtual_function_folding_test.
532 * testsuite/Makefile.in: Regenerated.
533
85fdf906
AH
5342010-04-15 Andrew Haley <aph@redhat.com>
535
536 * options.h (merge_exidx_entries): New option.
537 * arm.cc (class Arm_exidx_fixup): Add new arg, merge_exidx_entries.
538 (class Arm_exidx_fixup::merge_exidx_entries_): New member.
539 (Output_section::fix_exidx_coverage): Add new arg, merge_exidx_entries.
540 (Target_arm::merge_exidx_entries): New function.
541 (process_exidx_entry): Don't merge if merge_exidx_entries_ is false.
542 (Arm_output_section::fix_exidx_coverage): Pass merge_exidx_entries
543 to Arm_exidx_fixup constructor.
544 Add new arg, merge_exidx_entries.
545 (Target_arm::fix_exidx_coverage): pass merge_exidx_entries to
546 Arm_output_section::fix_exidx_coverage.
547
ce97fa81
ST
5482010-04-18 Sriraman Tallam <tmsriram@google.com>
549
550 * icf.cc (get_section_contents): Check for preemptible functions.
551 Ignore addend when appropriate.
552 * symtab.cc (should_add_dynsym_entry): Add new parameter. Check for
553 section folded.
554 (add_from_relobj): Check for section folded.
555 (set_dynsym_indexes): Fix call to should_add_dynsym_entry.
556 * symtab.h (should_add_dynsym_entry): Add new parameter.
557 * target-reloc.h (scan_relocs): Check for section folded.
558 * x86_64.cc (Target_x86_64::Scan::possible_function_pointer_reloc):
559 Check reloc types for function pointers in shared objects.
560 * testsuite/Makefile.am (icf_virtual_function_folding_test): New test
561 case.
562 (icf_preemptible_functions_test): New test case.
563 (icf_string_merge_test): New test case.
564 * testsuite.Makefile.in: Regenerate.
565 * testsuite/icf_safe_so_test.sh: Change to not fold foo_glob and
566 bar_glob. Refactor code.
567 * testsuite/icf_preemptible_functions_test.cc: New file.
568 * testsuite/icf_preemptible_functions_test.sh: New file.
569 * testsuite/icf_string_merge_test.cc: New file.
570 * testsuite/icf_string_merge_test.sh: New file.
571 * testsuite/icf_virtual_function_folding_test.cc: New file.
572 * testsuite/icf_virtual_function_folding_test.sh: New file.
573
04ceb17c
DK
5742010-04-14 Doug Kwan <dougkwan@google.com>
575
576 * arm.cc (Arm_output_section::fix_exidx_coverage): Mark object
577 for local symbol recounting if we remove a section due to ICF.
578 * gold.cc (queue_middle_gc_tasks): Create a dummy blocker if
579 there are no regular objects in input.
580
153e7da4
DK
5812010-04-13 Doug Kwan <dougkwan@google.com>
582
583 * arm.cc (Arm_input_section::set_final_data_size): Compute
584 accurate final data size instead of using current data size.
585
4dbd9faf
DK
5862010-04-09 Doug Kwan <dougkwan@google.com>
587
588 * layout.cc (Layout::choose_output_section): Handle script section
589 types.
590 (Layout::make_output_section_for_script): Add section type parameter.
591 Handle script section types.
592 * layout.h (Layout::make_output_section_for_script): Add section
593 type parameter.
594 * output.cc (Output_section::Output_section): Initialize data member
595 is_noload_.
596 (Output_section::do_reset_address_and_file_offset): Do not set address
597 to 0 if section is a NOLOAD section.
598 * output.h (Output_section::is_noload): New method.
599 (Output_section::set_is_noload): Ditto.
600 (Output_section::is_noload_): New data member.
601 * script-c.h (Script_section_type): New enum type.
602 (struct Parser_output_section_header): Add new file section_type.
603 * script-sections.cc (Sections_element::output_section_name): Add
604 parameter for returning script section type.
605 (Output_section_definition::output_section_name): Ditto.
606 (Output_section_definition::section_type)P; New method.
607 (Output_section_definiton::script_section_type_name): Ditto.
608 (Output_section_definition::script_section_type_): New data member.
609 (Output_section_definition::Output_section_definition): Initialize
610 data member Output_section_definition::script_section_type_.
611 (Output_section_definition::create_sections): Pass script section type
612 to Layout::make_output_section_for_script.
613 (Output_section_definition::output_section_name): Return script
614 section type to caller.
615 (Output_section_definition::set_section_address): Do not advance
616 dot value and load address if section type is NOLOAD. Set address
617 of NOLOAD sections regardless of section flags.
618 (Output_section_definition::print): Print section type if it is
619 not SCRIPT_SECTION_TYPE_NONE.
620 (Output_section_definition::section_type): New method.
621 (Output_section_definition::script_section_type_name): Ditto.
622 (Script_sections::output_section_name): Add new parameter
623 PSECTION_TYPE for returning script section type. Pass it to
624 section elements. Handle discard sections.
625 (Sort_output_sections::operator()): Handle NOLOAD sections.
626 * script-sections.h (Script_sections::Section_type): New enum type.
627 (Script_sections::output_section_name): Add a new parameter for
628 returning script section type.
629 * script.cc (script_keyword_parsecodes): Add keywords COPY, DSECT,
630 INFO and NOLOAD.
631 * yyscript.y (union): Add new field SECTION_TYPE.
632 (COPY, DSECT, INFO, NOLOAD): New tokens.
633 (opt_address_and_section_type): Change type to output_section_header.
634 (section_type): New non-terminal
635 (section_header): Handle section type.
2253bfba 636 (opt_address_and_section_type): Return section type value.
4dbd9faf 637
721ea635
L
6382010-04-09 H.J. Lu <hongjiu.lu@intel.com>
639
640 * testsuite/plugin_common_test_1.c (foo): Add prototype.
641 * testsuite/plugin_common_test_2.c (foo): Likewise.
642
6bf924b0
DK
6432010-04-08 Doug Kwan <dougkwan@google.com>
644
645 * merge.cc (Output_merge_data::set_final_data_size): Handle empty
646 Output_merge_data.
647 * output.cc (Output_section::add_merge_input_section): Simplify
648 code and return status of Output_merge_base::add_input_section.
e1df38aa 649 Update merge section map only if Output_merge_base::add_input_section
6bf924b0
DK
650 returns true.
651
24af6f92
DK
6522010-04-07 Doug Kwan <dougkwan@google.com>
653
654 * arm.cc (Arm_relobj::scan_section_for_cortex_a8_erratum): Warn
655 if section is marked as containing instructions but has no mapping
656 symbols.
657 (Arm_relobj::do_count_local_symbols): Call adjust_sym_shndx to get
658 correct section index.
659 (Arm_relobj::find_linked_text_section): Ditto.
660
00698fc5
CC
6612010-04-07 Cary Coutant <ccoutant@google.com>
662
663 * archive.cc (include_member): Destroy Read_symbols_data object before
664 releasing file.
665 * object.cc (Read_symbols_data::~Read_symbols_data) New destructor.
666 * object.h (Read_symbols_data::Read_symbols_data) New constructor.
667 (Read_symbols_data::~Read_symbols_data) New destructor.
668 (Section_relocs::Section_relocs) New constructor.
669 (Section_relocs::~Section_relocs) New destructor.
670 (Read_relocs_data::Read_relocs_data) New constructor.
671 (Read_relocs_data::~Read_relocs_data) New destructor.
672 * testsuite/binary_unittest.cc (Sized_binary_test): Set sd member
673 pointers to NULL after deleting.
674
7296d933
DK
6752010-04-07 Doug Kwan <dougkwan@google.com>
676
677 * arm.cc: Replace "endianity" with "endianness" in comments.
678 (Arm_exidx_cantunwind): Ditto.
679 (Arm_relobj::Arm_relobj): Initialize merge_flags_and_attribures.
680 (Arm_relobj::merge_flags_and_attributes): New method.
681 (Arm_relobj::merge_flags_and_attributes_): New data member.
682 (Arm_exidx_cantunwind::do_fixed_endian_write): Fix formatting.
683 (Arm_relobj::scan_sections_for_stubs): Ditto.
684 (Arm_relobj::do_read_symbols): Check to see if we really want to
685 merge processor-specific flags and attributes. Exit early if
686 an object is empty except for section names and the undefined symbol.
687 (Target_arm::do_finalize_sections): Move check for ELF format to
688 Arm_relobj::do_read_symbols. Merge processor specific flags and
689 attributes from a regular object only when we have determined that
690 it is aapropriate. Do not create an .ARM.attributes section in
691 output if there is no regular input object.
692 (Target_arm::merge_processor_specific_flags): Check
693 --warn-mismatch before printing any error.
694 (Target_arm::merge_object_attributes): Ditto.
695 * gold.cc (queue_middle_tasks): Handle the case in which there is
696 no regular object in input.
697 * options.cc (General_options::parse_EB): New method.
698 (General_options::parse_EL): Same.
699 (General_options::General_options): Initialize endianness_.
700 * options.h (-EB, -EL, -no-pipeline-knowledge, -p, --warn-mismatch):
701 New options.
702 (General_options::Endianness): New enum.
703 (General_options::endianness): New method.
704 (General_options::endianness_): New data member.
705 * parameters.cc (Parameters::set_options): Check target endianness.
706 (Parameters::set_target_once): Ditto.
707 (Parameters::check_target_endianness): New method.
708 (parameters_force_valid_target): If either -EL or -EB is specified,
709 use it to define endianness of default target.
710 * parameters.h (Parameters::check_target_endianness): New method
711 declaration.
712 * target.h (class Target): Change "endianity" to "endianness"
713 in comments.
714
efc8d4f2
RW
7152010-04-07 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
716
717 * configure.ac (AM_INIT_AUTOMAKE): Add option no-dist.
718 * configure: Regenerate.
719 * Makefile.in: Regenerate.
720 * testsuite/Makefile.in: Regenerate.
721
be234d88
CC
7222010-04-06 Cary Coutant <ccoutant@google.com>
723
724 gcc PR lto/42757
725 * plugin.cc (Pluginobj::get_symbol_resolution_info): Check for
726 prevailing definitions of common symbols.
727 * testsuite/plugin_test_6.sh: New test case.
728 * testsuite/plugin_common_test_1.c: New test case.
729 * testsuite/plugin_common_test_2.c: New test case.
730 * testsuite/Makefile.am (plugin_test_6): New test case.
731 * testsuite/Makefile.in: Regenerate.
732
bd32c6bd
NC
7332010-04-06 Nick Clifton <nickc@redhat.com>
734
735 * po/vi.po: New Vietnamese translation.
736
323c532f
DK
7372010-03-30 Doug Kwan <dougkwan@google.com>
738
739 * arm.cc (Target_arm::using_thumb_only): Handle v6-M
740
4fcd97eb
DK
7412010-03-25 Doug Kwan <dougkwan@google.com>
742
743 * gold/arm.cc (Arm_exidx_fixup::update_offset_map): Rearrange code
744 to avoid a conversion warning on a 32-bit host.
745
4ebf39db
ILT
7462010-03-24 Ian Lance Taylor <iant@google.com>
747
748 * testsuite/script_test_3.t: Add a TLS segment.
749 * testsuite/Makefile.am (check_PROGRAMS): Add
750 tls_phdrs_script_test.
751 (tls_phdrs_script_test_SOURCES): Define.
752 (tls_phdrs_script_test_DEPENDENCIES): Define.
753 (tls_phdrs_script_test_LDFLAGS): Define.
754 (tls_phdrs_script_test_LDADD): Define.
755 * testsuite/Makefile.in: Rebuild.
756
4a599bdd
CC
7572010-03-23 Cary Coutant <ccoutant@google.com>
758
759 * fileread.cc (find_or_make_view): Fix comment.
760
6c93b22c
ILT
7612010-03-23 Ian Lance Taylor <iant@google.com>
762
763 * script-sections.cc (class Orphan_section_placement): Define
764 PLACE_TLS and PLACE_TLS_BSS.
765 (Orphan_section_placement::Orphan_section_placement): Initialize
766 new places.
767 (Orphan_section_placement::find_place): Handle SHF_TLS sections.
768 * testsuite/Makefile.am (check_PROGRAMS): Add tls_script_test.
769 (tls_script_test_SOURCES): Define.
770 (tls_script_test_DEPENDENCIES): Define.
771 (tls_script_test_LDFLAGS): Define.
772 (tls_script_test_LDADD): Define.
773 * testsuite/Makefile.in: Rebuild.
774
a2c7281b
DK
7752010-03-22 Doug Kwan <dougkwan@google.com>
776
777 * arm.cc (Arm_relocate_functions::abs8,
778 Arm_relocate_functions::abs16): Use correct check for overflow
779 specified in the ARM ELF specs.
780 (Arm_relocate_functions): thumb_branch_common. Handle bit 1 of branch
781 target of a BLX instruction specially.
782 (Reloc_stub::stub_type_for_reloc): Ditto.
783 (Relocate::relocate): Use symbolic names instead of numeric relocation
784 codes to report error.
785 (Target_arm::do_relox): Reduce default stub-group size for Cortex-A8
786 workaround.
787 * testsuite/Makefile.am (check_DATA): add thumb_blx_in_range.stdout,
788 thumb_blx_out_of_range.stdout, thumb2_blx_in_range.stdout and
789 thumb2_blx_out_of_range.stdout
790 (thumb_bl_out_of_range, thumb_bl_out_of_range.o,
791 thumb2_bl_out_of_range, thumb2_bl_out_of_range.o): Fix dependenices.
792 (thumb_blx_in_range.stdout, thumb_blx_in_range, thumb_blx_in_range.o,
793 thumb_blx_out_of_range.stdout, thumb_blx_out_of_range,
794 thumb_blx_out_of_range.o, thumb2_blx_in_range.stdout,
795 thumb2_blx_in_range, thumb2_blx_in_range.o,
796 thumb2_blx_out_of_range.stdout, thumb2_blx_out_of_range,
797 thumb2_blx_out_of_range.o): New rules.
798 (MOSTLYCLEANFILES): Add thumb_blx_in_range, thumb_blx_out_of_range,
799 thumb2_blx_in_range and thumb2_blx_out_of_range.
800 * testsuite/Makefile.in: Regenerate.
801 * arm_branch_in_range.sh: Add tests for THUMB BLX.
802 * testsuite/thumb_blx_in_range.s: New file.
803 * testsuite/thumb_blx_out_of_range.s: New file.
804
b0193076
RÁE
8052010-03-22 Rafael Espindola <espindola@google.com>
806
807 * archive.cc (Should_include): Move to archive.h.
808 (should_include_member): Make it a member of Archive.
809 (Lib_group): New.
810 (Add_lib_group_symbols): New.
811 * archive.h: Include options.h.
812 (Archive_member): Moved from Archive.
813 (Should_include): Moved from archive.cc.
814 (Lib_group): New.
815 (Add_lib_group_symbols): New.
816 * dynobj.cc (do_should_include_member): New.
817 * dynobj.h (do_should_include_member): New.
818 * gold.cc (queue_initial_tasks): Update call to queue.
819 * main.cc (main): Print lib group stats.
820 * object.cc (do_should_include_member): New.
821 * object.h: Include archive.h.
822 (Object::should_include_member): New.
823 (Object::do_should_include_member): New.
824 (Sized_relobj::do_should_include_member): New.
825 * options.cc (General_options::parse_start_lib): New.
826 (General_options::parse_end_lib): New.
827 (Input_arguments::add_file): Handle lib groups.
828 (Input_arguments::start_group): Check we are not in a lib.
829 (Input_arguments::start_lib): New.
830 (Input_arguments::end_lib): New.
831 * options.h (General_options): Add start_lib and end_lib.
832 (Input_argument::lib_): New.
833 (Input_argument::lib): New.
834 (Input_argument::is_lib): New.
835 (Input_file_lib): New.
836 (Input_arguments::in_lib_): New.
837 (Input_arguments::in_lib): New.
838 (Input_arguments::start_lib): New.
839 (Input_arguments::end_lib_): New.
840 * plugin.cc (Pluginobj::get_symbol_resolution_info): Mark symbols
841 in unused members as preempted.
842 (Sized_pluginobj::do_should_include_member): New.
843 * plugin.h (Sized_pluginobj::do_should_include_member): New.
844 * readsyms.cc (Read_symbols::locks): If we are just reading a member,
845 return the blocker.
846 (Read_symbols::do_whole_lib_group): New.
847 (Read_symbols::do_lib_group): New.
848 (Read_symbols::do_read_symbols): Handle lib groups.
849 (Read_symbols::get_name): Handle lib groups.
850 * readsyms.h (Read_symbols): Add an archive member pointer.
851 (Read_symbols::do_whole_lib_group): New.
852 (Read_symbols::do_lib_group): New.
853 (Read_symbols::member_): New.
854 * script.cc (read_input_script): Update call to queue_soon.
855
d099120c
DK
8562010-03-19 Doug Kwan <dougkwan@google.com>
857
858 * arm.cc (Stub_table::Stub_table): Initialize new data members
859 Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_.
860 (Stub_table::add_reloc_stub): Assign stub offset and update
861 Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_.
862 (Stub_table::reloc_stubs_size_, Stub_table::reloc_stubs_addralign_):
863 New data members.
864 (Stub_table::update_data_size_and_addralign): Use
865 Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_
866 instead of going over all reloc stubs.
867 (Stub_table::finalize_stubs): Do not assign reloc stub offsets.
868 * stringpool.cc (Stringpool_template::Stringpool_template): Initialize
869 Stringpool_template::offset_ to size of Stringpool_char.
870 (Stringpool_template::new_key_offset): Remove code to initialize
871 Stringpool_template::offset_.
872 * stringpool.h (Stringpool_template::set_no_zero_null): Set
873 Stringpool_template::offset_ to zero.
874
1aa37384
DK
8752010-03-15 Doug Kwan <dougkwan@google.com>
876
877 * stringpool.cc (Stringpool_template::Stringpool_template): Initialize
878 offset_.
879 (Stringpool_template::new_key_offset): New method.
880 (Stringpool_template::add_string): Assign offsets when adding new
881 strings.
882 (Stringpool_template::set_string_offsets): Do not set string offsets
883 when not optimizing.
884 * stringpool.h (Chunked_vector::Chunked_vector): Initialize data
885 member size_.
886 (Chunked_vector::clear): Clear size_.
887 (Chunked_vector::reserve): Call reserve method of all Element_vectors.
888 (Chunked_vector::size): Return size_.
889 (Chunked_vector::push_back): Use size_ to find insert position.
e1df38aa 890 (Chunked_vector::size_): New data member.
1aa37384
DK
891 (Stringpool_template::set_no_zero_null): Assert string set is empty.
892 (Stringpool_template::new_key_offset): New method declaration.
893 (Stringpool_template::offset_): New data member.
894
b672b057
RÁE
8952010-03-15 Rafael Espindola <espindola@google.com>
896
897 * readsyms.cc (Read_symbols::do_read_symbols): Update calls to
898 Add_symbols' constructor.
899 * readsyms.h (Add_symbols): Remove the input_group member.
900
b6848d3c
ILT
9012010-03-10 Ian Lance Taylor <iant@google.com>
902
903 * reloc.cc (Sized_relobj::split_stack_adjust_reltype): Call the
904 target to ask whether a reference to a symbol requires a stack
905 split.
906 * target.h (Target::is_call_to_non_split): New function.
907 (Target::do_is_call_to_non_split): Declare virtual function.
908 * target.cc: Include "symtab.h".
909 (Target::do_is_call_to_non_split): New function.
910 * i386.cc (Target_i386::do_is_call_to_non_split): New function.
911
a2a5469e
CC
9122010-03-10 Cary Coutant <ccoutant@google.com>
913
914 * fileread.cc (File_read::~File_read): Don't delete whole_file_view_.
915 (File_read::open[1]): Remove initial mapping of whole_file_view_.
916 (File_read::open[2]): Add whole_file_view_ to list of views.
917 (File_read::make_view): Remove test of whole_file_view_.
918 (File_read::find_or_make_view): Create whole_file_view_ if
919 necessary.
920 (File_read::clear_views): Replace bool parameter with enum;
921 adjust all callers. Don't delete views with permanent data;
922 do delete cached views and views from archives if
923 --no-keep-files-mapped is set. Set whole_file_view_ to NULL
924 if clearing the corresponding view.
925 * fileread.h (File_read::Clear_views_mode): New enum.
926 (File_read::View::is_permanent_view): New method.
927 (File_read::clear_views): Replace bool parameter
928 with enum; adjust all callers.
929 * options.h (General_options): Change keep_files_mapped option;
930 add map_whole_files.
931 * readsyms.cc (Add_symbols::run): Delete sd_ object before
932 releasing the file.
933 * reloc.cc (Scan_relocs::run): Delete rd_ object before releasing
934 the file.
935
8861f32b
DM
9362010-03-10 David S. Miller <davem@davemloft.net>
937
938 * sparc.cc (Target_sparc::Scan::local): Accept R_SPARC_WPLT30.
939
d62d0f5f
ST
9402010-03-09 Sriraman Tallam <tmsriram@google.com>
941
942 * icf.cc (get_section_contents): Add '@' marker after processing the
943 merge reloc.
944
9177756d
DK
9452010-03-08 Doug Kwan <dougkwan@google.com>
946
947 * gold/arm.cc (Arm_exidx_fixup::update_offset_map): Fix build breakage
948 due to a conversion warning.
949 (Arm_relobj::update_output_local_symbol_count): Check for local
950 symbol with unset output index.
951
9e9e071b
ILT
9522010-03-05 Ian Lance Taylor <iant@google.com>
953
954 * options.h (class General_options): Add --spare-dynamic-tags.
955 * output.cc (Output_data_dynamic::set_final_data_size): Implement
956 --spare-dynamic-tags.
957
a81ee015
ILT
9582010-03-05 Ian Lance Taylor <iant@google.com>
959
960 * incremental.cc: Include "libiberty.h".
961
44ec90b9
RO
9622010-03-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
963
964 * dynobj.h (Verdef::Verdef): Add is_info arg, is_info member
965 function, is_info_ member.
966 * dynobj.cc (Verdef::write): Set VER_FLG_INFO if this->is_info_.
967 (Versions::Versions): Update caller.
968 (Versions::define_base_version): Likewise.
969 (Versions::add_def): Likewise.
970
0897ed3b
ST
9712010-03-03 Sriraman Tallam <tmsriram@google.com>
972
973 * i386.cc (Target_i386::can_check_for_function_pointers): New function.
974 (Scan::possible_function_pointer_reloc): New function.
975 (Scan::local_reloc_may_be_function_pointer): Change to call
976 possible_function_pointer_reloc.
977 (Scan::global_reloc_may_be_function_pointer): Ditto.
978 * icf.h (Icf::check_section_for_function_pointers): Change to reject
979 relocations in ".data.rel.ro._ZTV" section.
980 * testsuite/icf_safe_so_test.sh: Change to pass i386.
981 * testsuite/icf_safe_so_test.cc: Ditto.
982 * testsuite/icf_safe_test.cc: Ditto.
983 * testsuite/icf_safe_test.sh: Ditto.
984
d3bbad62
ILT
9852010-03-03 Viktor Kutuzov <vkutuzov@accesssoftek.com>
986 Ian Lance Taylor <iant@google.com>
987
988 * target-reloc.h (relocate_section): Check the symbol table index
989 for -1U before setting the local symbol index.
990 (scan_relocatable_relocs): If copying the relocation, record that
991 the local symbol is required.
992 * object.h (Symbol_value::is_output_symtab_index_set): New
993 function.
994 (Symbol_value::may_be_discarded_from_output_symtab): New
995 function.
996 (Symbol_value::has_output_symtab_entry): New function.
997 (Symbol_value::needs_output_symtab_entry): Remove.
998 (Symbol_value::output_symtab_index): Make sure the symbol index is
999 set.
1000 (Symbol_value::set_output_symtab_index): Make sure the symbol
1001 index is not set. Make sure the new index is valid.
1002 (Symbol_value::set_must_have_output_symtab_entry): New function.
1003 (Symbol_value::has_output_dynsym_entry): New function.
1004 (Symbol_value::set_output_dynsym_index): Make sure the new index
1005 is valid.
1006 (Sized_relobj::set_must_have_output_symtab_entry): New function.
1007 * object.cc (Sized_relobj::do_count_local_symbols): Only discard a
1008 local symbol if permitted.
1009 (Sized_relobj::do_finalize_local_symbols): Call
1010 is_output_symtab_index_set rather than needs_output_symtab_entry.
1011 (Sized_relobj::write_local_symbols): Call has_output_symtab_entry
1012 rather than needs_output_symtab_entry. Call
1013 has_output_dynsym_entry rather than needs_output_dynsym_entry.
1014 * arm.cc (Arm_relobj::update_output_local_symbol_count): Call
1015 is_output_symtab_index_set rather than needs_output_symtab_entry.
1016 * testsuite/discard_locals_relocatable_test.c: New file.
1017 * testsuite/discard_locals_test.sh: Test -r.
1018 * testsuite/Makefile.am (check_DATA): Add
1019 discard_locals_relocatable_test1.syms,
1020 discard_local_relocatable_test2.syms.
1021 (MOSTLYCLEANFILES): Likewise. Also add
1022 discard_locals_relocatable_test1.lout and
1023 discard_locals_relocatable_test2.out.
1024 (discard_locals_relocatable_test1.syms): New target.
1025 (discard_locals_relocatable_test.o): New target.
1026 (discard_locals_relocatable_test1.out): New target.
1027 (discard_locals_relocatable_test2.syms): New target.
1028 (discard_locals_relocatable_test2.out): New target.
1029 (various): Add missing ../ld-new dependencies.
1030 * testsuite/Makefile.in: Rebuild.
1031
7e8ccf26
NC
10322010-03-03 Nick Clifton <nickc@redhat.com>
1033
1034 * po/fi.po: New Finnish translation.
1035
2a0ff005
DK
10362010-03-01 Doug Kwan <dougkwan@google.com>
1037
1038 * layout.cc (Layout::Layout): Force section types of .init_array*,
1039 .preinit_array* and .fini_array* sections.
1040 * output.cc (Output_section::Input_section_sort_entry::has_priority):
1041 Fix check of return value of std::string::find.().
1042 (Output_section::Input_section_sort_compare::operator()): Remove
1043 comment about .init_array.
1044 (Output_section::Input_section_sort_init_fini_compare::operator()):
1045 New method.
1046 (Output_section::sort_attached_input_sections): Handle .init_array
1047 and .fini_array specially.
1048 * output.h (Output_section::Inut_section_sort_compare): Update
1049 comment.
1050 (Output_section::Input_section_sort_init_fini_compare): New struct.
1051
c3e4ae29
DK
10522010-02-26 Doug Kwan <dougkwan@google.com>
1053
1054 * arm.cc (Target_arm::Relocate::reloc_is_non_pic): Treat
1055 R_ARM_PREL31 and R_ARM_SBREL31 as position independent.
1056 * testsuite/debug_msg.sh: Avoid matching source line number for
1057 use of global variable undef_int.
1058
2fd9ae7a
DK
10592010-02-26 Doug Kwan <dougkwan@google.com>
1060
1061 * arm.cc (Target_arm::scan_reloc_for_stub): Move code handling
1062 R_ARM_V4BX to Target_arm::scan_reloc_section_for_stubs.
1063 (Target_arm::scan_reloc_section_for_stubs): Instead of calling
1064 scan_reloc_for_stub, do all processing of R_ARM_V4BX here.
1065 * options.cc (General_options::General_options): Initialize member
1066 fix_v4bx_.
1067 * testsuite/Makefile.am (check_SCRIPTS): Add arm_fix_v4bx.sh
1068 (check_DATA): Add arm_fix_v4bx.stdout, arm_fix_v4bx_interworking.stdout
1069 and rm_no_fix_v4bx.stdout
1070 (arm_fix_v4bx.stdout, arm_fix_v4bx, arm_fix_v4bx.o,
1071 arm_fix_v4bx_interworking.stdout, arm_fix_v4bx_interworking,
1072 arm_no_fix_v4bx.stdout, arm_no_fix_v4bx): New make rules.
1073 (MOSTLYCLEANFILES): Add arm_fix_v4bx, arm_fix_v4bx_interworking
1074 and arm_no_fix_v4bx.
1075 * Makefile.in: Regenerate.
1076 * testsuite/arm_fix_v4bx.s: New file.
1077 * testsuite/arm_fix_v4bx.sh: Ditto.
1078
67ec7d0b
DK
10792010-02-24 Doug Kwan <dougkwan@google.com>
1080
1081 * arm.cc (Target_arm::got_section): Make the .got section the first
1082 non RELRO section in the data segment.
1083 * testsuite/script_test_5.sh: Fix match patterns to avoid matching
1084 suffixes of section names.
1085
10165461
DK
10862010-02-24 Doug Kwan <dougkwan@google.com>
1087
1088 * arm.cc (Target_arm::do_finalize_sections): Skip processor specific
1089 flags and attributes merging if an input file is a binary file.
1090 * fileread.cc (Input_file::open): Record format of original file.
1091 * fileread.h (Input_file::Format): New enum type.
1092 (Input_file::Input_file): Initialize data member format_.
1093 (Input_file::format): New method definition.
1094 (Input_file::format_):: New data member.
1095
4a54abbb
DK
10962010-02-24 Doug Kwan <dougkwan@google.com>
1097
1098 * arm.cc (Arm_output_data_got): New class.
1099 (ARM_TCB_SIZE): New constant
1100 (Target_arm): Use Arm_output_data_got instead of Output_data_got.
1101 (Arm_output_section::fix_exidx_coverage): Add a parameter for layout.
1102 If user uses a script with a SECTIONS clause, issue only a warning
1103 for a misplaced EXIDX input section. Otherwise, issue an error.
1104 (Arm_relobj::do_gc_process_relocs): Exit early if we are not doing
1105 garbage collection.
1106 (Target_arm::got_mode_index_entry): Handle static linking.
1107 (Target_arm::Scan::local): Ditto.
1108 (Target_arm::Scan::global): Ditto.
1109 (Target_arm::Relocate::relocate_tls): Handle static linking. Fix
1110 all incorrectly implemented relocations.
e1df38aa 1111 (Target_arm::fix_exidx_coverage): Pass layout to
4a54abbb
DK
1112 Arm_output_section::fix_exidx_coverage.
1113 * layout.cc (Layout::section_name_mapping): Remove trailing dots
1114 from ".ARM.exidx." and ".ARM.extab.".
1115
ca419a6f
ILT
11162010-02-23 Viktor Kutuzov <vkutuzov@accesssoftek.com>
1117
1118 * arm.cc (Target_arm::do_finalize_sections): Create attribute
1119 section if it does not already exist.
1120 * attributes.cc (Attributes_section_data::Attributes_section_data):
1121 Don't crash if size is zero.
1122
135b9c78
ILT
11232010-02-23 Viktor Kutuzov <vkutuzov@accesssoftek.com>
1124 Ian Lance Taylor <iant@google.com>
1125
1126 * gold.cc (queue_middle_tasks): If no input files were opened,
1127 exit.
1128 * workqueue.h (Task_function::Task_function): Assert that there is
1129 a blocker.
1130
bb0bfe4f
DK
11312010-02-22 Doug Kwan <dougkwan@google.com>
1132
1133 * gold-threads.h (Once::~Once): Explicitly define virtual destructor.
1134 * icf.cc (get_section_contents): Cast snprintf arguments to long long
1135 types to avoid warnings due to different uint64_t implementations
1136 on different hosts.
1137
2a2b6d42
DK
11382010-02-21 Doug Kwan <dougkwan@google.com>
1139
1140 * arm.cc (Arm_relocate_functions::arm_branch_common): Fix bug in
1141 handling of the maximum backward branch offset.
1142 (Arm_relocate_functions::thumb_branch_common): Ditto.
1143 * testsuite/Makefile.am (check_SCRIPTS): Add arm_branch_in_range.sh.
1144 (check_DATA): Add arm_bl_in_range.stdout, arm_bl_out_of_range.stdout
e1df38aa 1145 thumb_bl_in_range.stdout, thumb_bl_out_of_range.stdout,
2a2b6d42
DK
1146 thumb2_bl_in_range.stdout and thumb2_bl_out_of_range.stdout.
1147 (arm_bl_in_range.stdout, arm_bl_in_range, arm_bl_in_range.o,
1148 arm_bl_out_of_range.stdout, arm_bl_out_of_range,
1149 arm_bl_out_of_range.o, thumb_bl_in_range.stdout, thumb_bl_in_range,
1150 thumb_bl_in_range.o, thumb_bl_out_of_range.stdout,
1151 thumb_bl_out_of_range thumb_bl_out_of_range.o,
1152 thumb2_bl_in_range.stdout, thumb2_bl_in_range, thumb2_bl_in_range.o
1153 thumb2_bl_out_of_range.stdout, thumb2_bl_out_of_range,
1154 thumb2_bl_out_of_range.o): New rules.
1155 (MOSTLYCLEANFILES): Add arm_bl_in_range, arm_bl_out_of_range,
1156 thumb_bl_in_range, thumb_bl_out_of_range, thumb2_bl_in_range and
1157 thumb2_bl_out_of_range
1158 * testsuite/Makefile.in: Regenerate.
1159 * testsuite/arm_bl_in_range.s: New file.
1160 * testsuite/arm_bl_out_of_range.s: Ditto.
1161 * testsuite/arm_branch_in_range.sh: Ditto.
1162 * testsuite/arm_branch_range.t: Ditto.
1163 * testsuite/thumb2_branch_range.t: Ditto.
1164 * testsuite/thumb_bl_in_range.s: Ditto.
1165 * testsuite/thumb_bl_out_of_range.s: Ditto.
1166 * testsuite/thumb_branch_range.t: Ditto.
1167
b487ad64
ST
11682010-02-20 Sriraman Tallam <tmsriram@google.com>
1169
1170 * gc.h (gc_process_relocs): Change vectors to point to the new list.
1171 Add reloc offset information.
1172 * icf.cc (get_section_contents): Change iterators to point to the new
1173 vectors. Add reloc offset information to the contents.
1174 * icf.h (Icf::Sections_reachable_info): New typedef.
1175 (Icf::Sections_reachable_list): New typedef.
1176 (Icf::Offset_info): New typedef.
1177 (Icf::Reloc_info): New struct typedef.
1178 (Icf::Reloc_info_list): New typedef.
1179 (Icf::symbol_reloc_list): Delete method.
1180 (Icf::addend_reloc_list): Delete method.
1181 (Icf::section_reloc_list): Delete method.
1182 (Icf::reloc_info_list): New method.
1183 (Icf::reloc_info_list_): New member.
1184
f96accdf
DK
11852010-02-19 Doug Kwan <dougkwan@google.com>
1186
1187 * arm-reloc.def: Mark R_ARM_TLS_GD32, R_ARM_TLS_LDM32,
1188 R_ARM_TLS_LDO32, R_ARM_TLS_IE32 and R_ARM_TLS_LE32 are implemented.
1189 * arm.cc (Arm_relocation_functions): New forward declaration.
1190 (Target_arm::Target_arm): Initialize new data members
1191 got_mod_index_offset_ and tls_base_symbol_defined_.
1192 (Target_arm::Relocate::relocate_tls): New method.
1193 (Target_arm::optimize_tls_reloc, Target_arm::define_tls_base_symbol,
1194 Target_arm::got_mod_index_entry, Target_arm::rel_tls_desc_section):
1195 New methods.
1196 (Target_arm::Got_type): Add GOT_TYPE_TLS_NOFFSET, GOT_TYPE_OFFSET,
1197 GOT_TYPE_TLS_PAIR and GOT_TYPE_TLS_DESC.
1198 (Target_arm::got_mod_index_offset_,
1199 Target_arm::tls_base_symbol_defined_): New data members.
1200 (Target_arm::Scan::local, Target::Scan::global,
1201 Target_arm::Relocate::relocate): Handle 32-bit initial TLS
1202 relocations.
1203
c8761b9a
DK
12042010-02-18 Doug Kwan <dougkwan@google.com>
1205
1206 * arm.cc (Arm_relobj::find_linked_text_section): New method.
1207 (Arm_relobj::make_exidx_input_section): Pass section index of linked
1208 text section as a parameter becuase some broken tools may not set
1209 the link in section header.
1210 (Target_arm::has_got_section): New method.
1211 (Target_arm::scan_section_for_cortex_a8_stubs): Treat an input section
1212 without any mapping symbol as data only. Remove warning.
1213 (Arm_relobj::do_read_synbols): If an EXIDX input section has no
1214 link in its section header, try to discover the link by inspecting the
1215 REL31 relocation at the beginning of the section.
1216 (Target_arm::Scan::check_non_pic): Report name of offending relocation
1217 in error message.
1218 (Target_arm::Scan::global): Treat any reference to the symbol
1219 _GLOBAL_OFFSET_TABLE_ as a GOT access.
1220
21bb3914
ST
12212010-02-12 Sriraman Tallam <tmsriram@google.com>
1222
1223 * arm.cc (Scan::local_reloc_may_be_function_pointer): New function.
1224 (Scan::global_reloc_may_be_function_pointer): New function.
1225 * sparc.cc (Scan::local_reloc_may_be_function_pointer): New function.
1226 (Scan::global_reloc_may_be_function_pointer): New function.
1227 * powerpc.cc (Scan::local_reloc_may_be_function_pointer): New function.
1228 (Scan::global_reloc_may_be_function_pointer): New function.
1229 * i386.cc (Scan::local_reloc_may_be_function_pointer): New function.
1230 (Scan::global_reloc_may_be_function_pointer): New function.
1231 * x86_64.cc (Scan::local_reloc_may_be_function_pointer): New function.
1232 (Scan::global_reloc_may_be_function_pointer): New function.
1233 (Scan::possible_function_pointer_reloc): New function.
1234 (Target_x86_64::can_check_for_function_pointers): New function.
1235 * gc.h (gc_process_relocs): Scan relocation types to determine if
1236 function pointers were taken for targets that support it.
1237 * icf.cc (Icf::find_identical_sections): Include functions for
1238 folding in safe ICF whose pointer is not taken.
1239 * icf.h (Secn_fptr_taken_set): New typedef.
1240 (fptr_section_id_): New member.
1241 (section_has_function_pointers): New function.
1242 (set_section_has_function_pointers): New function.
1243 (check_section_for_function_pointers): New function.
1244 * options.h: Fix comment for safe ICF option.
1245 * target.h (can_check_for_function_pointers): New function.
1246 * testsuite/Makefile.am: Add icf_safe_so_test test case.
1247 Modify icf_safe_test for X86-64.
1248 * testsuite/Makefile.in: Regenerate.
1249 * testsuite/icf_safe_so_test.cc: New file.
1250 * testsuite/icf_safe_so_test.sh: New file.
1251 * testsuite/icf_safe_test.cc (kept_func_3): New function.
1252 (main): Change to take pointer to function kept_func_3.
1253 * testsuite/icf_safe_test.sh (arch_specific_safe_fold): Check if safe
1254 folding is done correctly for X86-64.
1255
0da6fa6c
DM
12562010-02-12 David S. Miller <davem@davemloft.net>
1257
1258 * output.h (Output_reloc<SHT_REL>::Output_reloc): Add
1259 is_symbolless parameter.
1260 (Output_reloc<SHT_REL>::is_symbolless): New.
1261 (Output_reloc<SHT_REL>::is_symbolless_): New.
1262 (Output_reloc<SHT_REL>::type_): Decrease to 29 bits.
1263 (Output_reloc<SHT_RELA>::Output_reloc): Add is_symbolless parameter.
1264 (Output_reloc<SHT_RELA>::is_symbolless): New.
1265 (Output_data_reloc::add_global): Handle is_symbolless.
1266 (Output_data_reloc::add_global_relative): Likewise.
1267 (Output_data_reloc::add_local): Likewise.
1268 (Output_data_reloc::add_local_relative): Likewise.
1269 (Output_data_reloc::add_symbolless_global_addend): New.
1270 (Output_data_reloc::add_symbolless_local_addend): New.
1271 * output.cc (Output_reloc<SHT_REL>::Output_reloc): Handle
1272 is_symbolless.
1273 (Output_reloc::set_needs_dynsym_index): Test ->is_symbolless_
1274 instead of ->is_relative_
1275 (Output_reloc::write): Likewise.
1276 (Output_reloc::get_symbol_index): Return 0 when ->is_symbolless_
1277 (Output_reloc::write_rel): Simplify.
1278
1279 * sparc.cc (Target_sparc::Scan::local): Use
1280 ->add_symbolless_local_addend as needed.
1281 (Target_sparc::Scan::global): Use ->add_symbolless_global_addend as
1282 needed. Also, emit appropriate unaligned vs. aligned dynamic reloc
1283 based upon relocation offset.
1284
e4782e83
DK
12852010-02-11 Doug Kwan <dougkwan@google.com>
1286
1287 * arm.cc (Target_arm::Scan::local): Fix bugs in relocation handling.
1288 (Target_arm::Scan::global): Ditto. Also remove a comment before the
1289 beginning of function.
1290 (Target_arm::Relocate::relocate): Remove error messages for MOVW_ABS
1291 and MOVT_ABS relocations. Those are non issued in scanning. Fix
1292 parameter is_32bit in calls to should_apply_static_reloc.
1293 * testsuite/Makefile.am (check_SCRIPTS): Add arm_abs_global.sh.
1294 (check_DATA): Add arm_abs_global.stdout.
1295 (arm_abs_lib.o, libarm_abs.so, arm_abs_global.o, arm_abs_global,
1296 arm_abs_global.stdout): New rules.
1297 (MOSTLLYCLEANFILES): Add arm_abs_global
1298 * Makefile.in: Regenerate.
1299 * testsuite/arm_abs_global.s: New file.
1300 * testsuite/arm_abs_global.sh: Ditto.
1301 * testsuite/arm_abs_lib.s: Ditto.
1302
93ceb764
ILT
13032010-02-11 Ian Lance Taylor <iant@google.com>
1304
1305 * gold.cc (queue_middle_gc_tasks): Use a separate blocker for each
1306 Read_relocs task.
1307 (queue_middle_tasks): Likewise, and also for Scan_relocs. Run
1308 Allocate_commons_task first.
1309 * reloc.cc (Read_relocs::run): Pass next_blocker_ down to next
1310 task, rather than symtab_lock_.
1311 (Gc_process_relocs::~Gc_process_relocs): New function.
1312 (Gc_process_relocs::is_runnable): Check this_blocker_.
1313 (Gc_process_relocs::locks): Use next_blocker_ rather than
1314 blocker_.
1315 (Scan_relocs::~Scan_relocs): New function.
1316 (Scan_relocs::is_runnable): Check this_blocker_ rather than
1317 symtab_lock_.
1318 (Scan_relocs::locks): Drop symtab_lock_ and blocker_. Add
1319 next_blocker_.
1320 * reloc.h (class Read_relocs): Drop symtab_lock_ and blocker_
1321 fields. Add this_blocker_ and next_blocker_ fields. Adjust
1322 constructor accordingly.
1323 (class Gc_process_relocs): Likewise.
1324 (class Scan_relocs): Likewise.
1325 * common.h (class Allocate_commons_task): Remove symtab_lock_
1326 field, and corresponding constructor parameter.
1327 * common.cc (Allocate_commons_tasK::is_runnable): Remove use of
1328 symtab_lock_.
1329 (Allocate_commons_task::locks): Likewise.
1330
114dfbe1
ILT
13312010-02-11 Ian Lance Taylor <iant@google.com>
1332
1333 * gold-threads.h (class Once): Define.
1334 (class Initialize_lock): Rewrite as child of Once.
1335 * gold-threads.cc (class Once_initialize): Define.
1336 (once_pointer_control): New static variable.
1337 (once_pointer, once_arg): New static variables.
1338 (c_run_once): New static function.
1339 (Once::Once, Once::run_once, Once::internal_run): New functions.
1340 (class Initialize_lock_once): Remove.
1341 (initialize_lock_control): Remove.
1342 (initialize_lock_pointer): Remove.
1343 (initialize_lock_once): Remove.
1344 (Initialize_lock::Initialize_lock): Move to gold-threads.h.
1345 (Initialize_lock::initialize): Rewrite.
1346 (Initialize_lock::do_run_once): New function.
1347 * archive.cc (Archive::interpret_header): Only clear name if it is
1348 not already empty.
1349 * fileread.cc: Include "gold-threads.h"
1350 (file_counts_lock): New static variable.
1351 (file_counts_initialize_lock): Likewise.
1352 (File_read::release): Only increment counts when using --stats.
1353 Use a lock around the increment.
1354 * parameters.cc (class Set_parameters_target_once): Define.
1355 (set_parameters_target_once): New static variable.
1356 (Parameters::Parameters): Move here from parameters.h.
1357 (Parameters::set_target): Rewrite.
1358 (Parameters::set_target_once): New function.
1359 (Parameters::clear_target): Move here and rewrite.
1360 * parameters.h (class Parameters): Update declarations. Add
1361 set_parameters_target_once_ field.
1362 (Parameters::Parameters): Move to parameters.cc.
1363 (Parameters::clear_target): Likewise.
1364 * readsyms.cc (Read_symbols::do_group): Create a Start_group
1365 task.
1366 (Start_group::~Start_group): New function.
1367 (Start_group::is_runnable): New function.
1368 (Start_group::locks, Start_group::run): New functions.
1369 (Finish_group::run): Change saw_undefined to size_t.
1370 * readsyms.h (class Start_group): Define.
1371 (class Finish_group): Change saw_undefined_ field to size_t.
1372 (Finish_group::Finish_group): Remove saw_undefined and
1373 this_blocker parameters. Change all callers.
1374 (Finish_group::set_saw_undefined): New function.
1375 (Finish_group::set_blocker): New function.
1376 * symtab.h (class Symbol_table): Change saw_undefined to return
1377 size_t. Change saw_undefined_ field to size_t.
1378 * target-select.cc (Set_target_once::do_run_once): New function.
1379 (Target_selector::Target_selector): Initialize set_target_once_
1380 field. Don't initialize lock_ and initialize_lock_ fields.
1381 (Target_selector::instantiate_target): Rewrite.
1382 (Target_selector::set_target): New function.
1383 * target-select.h (class Set_target_once): Define.
1384 (class Target_selector): Update declarations. Make
1385 Set_target_once a friend. Remove lock_ and initialize_lock_
1386 fields. Add set_target_once_ field.
1387
fa17a3f4
ILT
13882010-02-10 Ian Lance Taylor <iant@google.com>
1389
1390 * dirsearch.cc (Dirsearch::initialize): Add all blockers before
1391 queueing any tasks.
1392 * gold.cc (queue_middle_gc_tasks): Likewise. Fix final blocker.
1393 (queue_middle_tasks): Add all blockers before queueing any tasks.
1394 (queue_final_tasks): Likewise.
1395 * token.h (Task_token::add_blockers): New function.
1396 * object.h (Input_objects::number_of_relobjs): New function.
1397
c7177d31
ILT
13982010-02-10 Ian Lance Taylor <iant@google.com>
1399
5de0e392
ILT
1400 * i386.cc (Relocate::relocate_tls): A local symbol is final if not
1401 shared, not if not position independent.
1402 * x86_64.cc (Relocate::relocate_tls): Likewise.
1403 * testsuite/Makefile.am (check_PROGRAMS): Add tls_pie_pic_test.
1404 (tls_pie_pic_test): New target.
1405 * testsuite/Makefile.in: Rebuild.
1406
c7177d31
ILT
1407 * testsuite/Makefile.am (check_PROGRAMS): Add tls_pie_test.
1408 (tls_test_main_pie.o, tls_test_pie.o): New targets.
1409 (tls_test_file2_pie.o, tls_test_c_pie.o, tls_pie_test): Likewise.
1410 * testsuite/Makefile.in: Rebuild.
1411
684b268a
DM
14122010-02-09 David S. Miller <davem@davemloft.net>
1413
1414 * sparc.cc (Target_sparc::Scan::local): Do not emit relocs other than
1415 R_SPARC_RELATIVE using ->add_local_relative().
1416 (Target_sparc::Scan::global): Likewise for ->add_global_relative().
1417
612a8d3d
DM
1418 * output.h (Output_data_dynamic::add_section_size): New method
1419 that takes two Output_data objects.
1420 (Output_data_dynamic::Dynamic_entry): Create storage for secondary
1421 entry param. Handle it in initializers.
1422 * output.cc (Output_data_dynamic::Dynamic_entry::write): For
1423 DYNAMIC_SECTION_SIZE, add in second object size if non-NULL.
1424 * layout.h (Layout::add_target_dynamic_tags): Add dynrel_includes_plt
1425 arg.
1426 * layout.cc (Layout::add_target_dynamic_tags): If dynrel_includes_plt,
1427 and .rela.plt exists, set DT_REL{,A}SZ to sum of .rela.dyn and .rela.plt
1428 * arm.cc (Target_arm::do_finalize_sections): Update to pass false
1429 for dynrel_includes_plt.
1430 * i386.cc (Target_i386::do_finalize_sections): Likewise.
1431 * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
1432 * sparc.cc (Target_sparc::make_plt_entry): Force .rela.dyn to be output
1433 before .rela.plt
1434 (Target_sparc::do_finalize_sections): Update to pass true for
1435 dynrel_includes_plt.
1436 * powerpc.cc (Target_powerpc::make_plt_entry): Force .rela.dyn to be
1437 output before .rela.plt
1438 (Target_powerpc::do_finalize_sections): Update to pass true for
1439 dynrel_includes_plt when 32-bit.
1440
cb1be87e
DK
14412010-02-08 Doug Kwan <dougkwan@google.com>
1442
1443 * arm.cc (Arm_relobj::simple_input_section_output_address): New
1444 method.
1445 (Arm_relobj::section_needs_cortex_a8_stub_scanning,
1446 Arm_relobj::scan_section_for_cortex_a8_stubs,
1447 Arm_relobj::do_relocation_section): Instead of calling
1448 Output_section::output_address, use faster
1449 Arm_relobj::simple_input_section_output_address.
1450
705b5121
DM
14512010-02-08 David S. Miller <davem@davemloft.net>
1452
1453 * sparc.cc (Target_sparc::Relocate::relocate): If relocation offset is
1454 unaligned for R_SPARC_16, R_SPARC_32, or R_SPARC_64, use the unaligned
1455 relocation helper function.
1456
024c4466
DM
1457 * sparc.cc (Target_sparc::Scan::local): Handle R_SPARC_GOTDATA_OP*
1458 just like R_SPARC_GOT{10,13,22}.
1459 (Target_sparc::Scan::local): Likewise.
1460 (Target_sparc::Relocate:relocate): Likewise.
1461
9109c078
ILT
14622010-02-06 Ian Lance Taylor <iant@google.com>
1463
1464 * configure.ac: Rewrite targetobjs duplicate removal code to use
1465 only shell constructs.
1466 * configure: Rebuild.
1467
cf846138
DK
14682010-02-05 Doug Kwan <dougkwan@google.com>
1469
1470 PR 11247
1471 * arm.cc (Arm_relobj::section_is_scannable): New method.
1472 (Arm_relobj::section_needs_reloc_stub_scanning): Use it.
1473 (Arm_relobj::section_needs_cortex_a8_stub_scanning): Same.
1474
6cfaf60b
DK
14752010-02-04 Doug Kwan <dougkwan@google.com>
1476
1477 PR 11247
1478 * arm-reloc-property.cc (cstdio): Include.
1479 * configure.ac (targetobjs): Remove duplicates.
1480 * configure: Regenerate.
1481 * resolve.cc (Symbol_table::resolve): Explicit instantiate both
1482 big and little endian version for a given address size.
1483
5c57f1be
DK
14842010-02-03 Doug Kwan <dougkwan@google.com>
1485
1486 * arm-reloc-property.cc
1487 (Arm_reloc_property_table::reloc_name_in_error_message): New method
1488 definition.
1489 * arm-reloc-property.h
1490 (Arm_reloc_property_table::get_implemented_static_reloc_property):
1491 New method definition.
1492 (Arm_reloc_property_table::reloc_name_in_error_message): New method
1493 declaration.
1494 * arm-reloc.def (THM_MOVT_ABS, THM_MOVT_PREL, THM_MOVT_BREL): Change
1495 overflow to N.
1496 (GOT_PREL): Change implemented to Y.
1497 * arm.cc (Target_arm::reloc_uses_thumb_bit): Remove method.
1498 (Target_arm::Relocate::reloc_needs_sym_origin): Remove method.
1499 (Arm_relocate_functions::movw_abs_nc): Remove method.
1500 (Arm_relocate_functions::movt_abs): Ditto.
1501 (Arm_relocate_functions::thm_movw_abs_nc): Ditto.
1502 (Arm_relocate_functions::thm_movt_abs): Ditto.
1503 (Arm_relocate_functions::movw_rel_nc): Ditto.
1504 (Arm_relocate_functions::movw_rel): Ditto.
1505 (Arm_relocate_functions::movt_rel): Ditto.
1506 (Arm_relocate_functions:thm_movw_rel_nc): Ditto.
1507 (Arm_relocate_functions:thm_movw_rel): Ditto.
1508 (Arm_relocate_functions:thm_movt_rel): Ditto.
1509 (Arm_relocate_functions::movw, Arm_relocate_functions::movt,
1510 (Arm_relocate_functions::thm_movw, Arm_relocate_functions::thm_movt):
1511 New method definitions.
1512 (Arm_relocation_functions::arm_grp_alu): Add assertion for group index.
1513 (Arm_relocation_functions::arm_grp_ldr): Ditto.
1514 (Arm_relocation_functions::arm_grp_ldrs): Ditto.
1515 (Arm_relocation_functions::arm_grp_ldc): Ditto.
1516 (Target_arm::Relocate::relocate): Check for non-static or
1517 unimplemented relocation code and exit early. Change calls to
1518 Target_arm::reloc_uses_thumb_bit and
1519 Target_arm::Reloc::reloc_needs_sym_origin to use relocation property
1520 instead. Refactor code to handle similar relocations to increase
1521 code sharing. Remove check for unsupported relocation code in switch
1522 statement.
1523 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Use
1524 relocation property table to find out size. Change error message to
1525 print out the name of a relocation code instead of the numeric value.
1526 (Target_arm::scan_reloc_for_stub): Use relocation property table
1527 instead of calling Target_arm::reloc_uses_thumb_bit().
1528
218c5831
DK
15292010-02-02 Doug Kwan <dougkwan@google.com>
1530
1531 * arm.cc (Target_arm::relocate_section): Do view adjustment for all
1532 types of relaxed input section.
1533
0d31c79d
DK
15342010-02-02 Doug Kwan <dougkwan@google.com>
1535
1536 * Makefile.am (HFILES): Add arm-reloc-property.h.
1537 (DEFFILES): New.
1538 (TARGETSOURCES): Add arm-reloc-property.cc
1539 (ALL_TARGETOBJS): Add arm-reloc-property.$(OBJEXT)
1540 (libgold_a_SOURCES): $(DEFFILES)
1541 * Makefile.in: Regenerate.
1542 * arm-reloc-property.cc: New file.
1543 * arm-reloc-property.h: New file.
1544 * arm-reloc.def: New file.
1545 * arm.cc: Update comments.
1546 (arm-reloc-property.h): New included header.
1547 (arm_reloc_property_table): New global variable.
1548 (Target_arm::do_select_as_default_target): New method definition.
1549 * configure.tgt (armeb*-*-*,armbe*-*-*,arm*-*-*): Add
1550 arm-reloc-property to targ_extra_obj.
1551 * parameters.cc (set_parameters_target): Call
1552 Target::select_as_default_target().
1553 * target.h (Target::select_as_default_target): New method definition.
1554 (Target::do_select_as_default_target): Same.
1555
546c7457
DK
15562010-02-01 Doug Kwan <dougkwan@google.com>
1557
1558 * arm.cc (Arm_exidx_fixup::Arm_exidx_fixup): Initialize
1559 first_output_text_section_.
1560 (Arm_exidx_fixup::first_output_text_section): New method definition.
1561 (Arm_exidx_fixup::first_output_text_section_): New data member.
1562 (Arm_exidx_fixup::process_exidx_section): Record the first text
1563 output section seen.
1564 (Arm_output_section::fix_exidx_coverage): Set correct linked section
1565 and entsize in output section header.
1566
11b861d5
DK
15672010-01-29 Viktor Kutuzov <vkutuzov@accesssoftek.com>
1568
1569 * gold/arm.cc: Added support for the ARM relocations: R_ARM_THM_PC8,
1570 R_ARM_THM_PC12, R_ARM_THM_ALU_PREL_11_0.
1571 (Arm_relocate_functions::thm_alu11): New Method.
1572 (Arm_relocate_functions::thm_pc8): New Method.
1573 (Arm_relocate_functions::thm_pc12): New Method.
1574 (Target_arm::Scan::local): Handle the relocations.
1575 (Target_arm::Scan::global): Likewise.
1576 (Target_arm::Relocate::relocate): Likewise.
1577 (Target_arm:Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
1578
c9a2c125
DK
15792010-01-29 Doug Kwan <dougkwan@google.com>
1580
1581 * arm.cc (Target_arm::Scan::global): General PLTs for the same set
1582 of relocation types as ld.
1583
1521477a
DK
15842010-01-29 Doug Kwan <dougkwan@google.com>
1585
1586 * arm.cc (Arm_relocate_functions::arm_branch_common) Change visibility
1587 to public.
1588 (Arm_relocate_functions::thumb_branch_common): Ditto.
1589 (Arm_relocate_functions::thm_call, Arm_relocate_functions::thm_jump24,
1590 Arm_relocate_functions::thm_xpc22, Arm_relocate_functions::plt32,
1591 Arm_relocate_functions::xpc25, Arm_relocate_functions::call,
1592 Arm_relocate_functions::jump24): Remove.
1593 (Target_arm::Relocate::relocate): Adjust code to call
1594 Arm_relocation_functions::arm_branch_common and
1595 Arm_relocation_functions::thumb_branch_common instead of their removed
e1df38aa 1596 wrappers. Merge switch-cases together to reduce source code size.
1521477a 1597
e7eca48c
DK
15982010-01-29 Doug Kwan <dougkwan@google.com>
1599
1600 * arm.cc (Arm_relobj::Arm_relobj): Initialize new data member
1601 output_local_symbol_count_needs_update_.
1602 (Arm_relobj::output_local_symbol_count_needs_update,
1603 Arm_relobj::set_output_local_symbol_count_needs_update,
1604 Arm_relobj::update_output_local_symbol_count): New methods.
1605 (Arm_relobj::output_local_symbol_count_needs_update_): New data
1606 member.
1607 (Arm_exidx_cantunwind::do_fixed_endian_write): Write address
1608 of pointed function as in a R_ARM_PREL31 relocation.
1609 (Arm_output_section<big_endian>::fix_exidx_coverage): Mark objects
1610 for output local symbol count updating.
1611 (Target_arm::do_relax): Update output local symbol counts in objects
1612 if necessary.
1613 * object.h (Sized_relobj::set_output_local_symbol_count): New method.
1614
02961d7e
ILT
16152010-01-29 Viktor Kutuzov <vkutuzov@accesssoftek.com>
1616
1617 * arm.cc: Added support for the ARM relocations:
1618 R_ARM_MOVW_BREL_NC, R_ARM_MOVT_BREL, R_ARM_MOVW_BREL,
1619 R_ARM_THM_MOVW_BREL_NC, R_ARM_THM_MOVT_BREL, R_ARM_THM_MOVW_BREL.
1620 (Arm_relocate_functions::movw_rel_nc): Renamed (was
1621 movw_prel_nc).
1622 (Arm_relocate_functions::movw_rel): New method.
1623 (Arm_relocate_functions::movt_rel): Renamed (was movt_prel).
1624 (Arm_relocate_functions::thm_movw_rel_nc): Renamed (was
1625 thm_movw_prel_nc).
1626 (Arm_relocate_functions::thm_movw_rel): New method.
1627 (Arm_relocate_functions::thm_movt_rel): Renamed (was
1628 thm_movt_prel).
1629 (Target_arm::Scan::local): Handle MOVW_BREL/MOVT_BREL
1630 relocations.
1631 (Target_arm::Scan::global): Likewise.
1632 (Target_arm::Relocate::relocate): Likewise.
1633 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
1634 Likewise.
1635
b10d2873
ILT
16362010-01-27 Viktor Kutuzov <vkutuzov@accesssoftek.com>
1637
1638 * arm.cc: Added support for ARM group relocations.
1639 (Target_arm::reloc_needs_sym_origin): New method.
1640 (Arm_relocate_functions::calc_grp_kn): New method.
1641 (Arm_relocate_functions::calc_grp_residual): New method.
1642 (Arm_relocate_functions::calc_grp_gn): New method.
1643 (Arm_relocate_functions::arm_grp_alu): New Method.
1644 (Arm_relocate_functions::arm_grp_ldr): New Method.
1645 (Arm_relocate_functions::arm_grp_ldrs): New Method.
1646 (Arm_relocate_functions::arm_grp_ldc): New Method.
1647 (Target_arm::Scan::local): Handle the ARM group relocations.
1648 (Target_arm::Scan::global): Likewise.
1649 (Target_arm::Relocate::relocate): Likewise.
1650 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
1651 Likewise.
1652
2b328d4e
DK
16532010-01-26 Doug Kwan <dougkwan@google.com>
1654
1655 * arm.cc (set): Include.
1656 (class Arm_exidx_fixup): Change type of last_input_section_ to const
1657 pointer type.
1658 (Arm_output_section::Text_section_list): New type.
1659 (Arm_output_section::append_text_sections_to_list): New method.
1660 (Arm_output_section::fix_exidx_coverage): Ditto.
1661 (Arm_relobj::Arm_relobj): Initialize exidx_section_map_.
1662 (Arm_relobj::convert_input_section_to_relaxed_section): Use
1663 Relobj::set_section_offset() instead of
1664 Sized_relobj::invalidate_section_offset().
1665 (Arm_relobj::section_needs_reloc_stub_scanning): Add an extra
1666 parameter for section headers. Ignore relocation sections for
1667 unallocated sections and EXIDX sections.
1668 (Target_arm::fix_exidx_coverage): New method.
1669 (Target_arm::output_section_address_less_than): New type.
1670 (Arm_exidx_fixup::add_exidx_cantunwind_as_needed): Use index of the
1671 linked text section instead of the EXIDX section.
1672 (Arm_output_section::create_stub_group): Add an assertion to check
1673 that this is not an EXIDX output section.
1674 (Arm_output_section::append_text_sections_to_list): New method.
1675 (Arm_output_section::fix_exidx_coverage): Ditto.
1676 (Arm_relobj::scan_sections_for_stubs): Adjust call to
1677 Arm_relobj::section_needs_reloc_stub_scanning.
1678 (Target_arm::do_relax): Fix EXIDX output section coverage in the
1679 first pass.
1680 (Target_arm::fix_exidx_coverage): New method.
1681 * object.h (Relobj::set_output_section): New method.
1682 (Sized_relobj::invalidate_section_offset): Remove method.
1683 (Sized_relobj::do_invalidate_section_offset): Remove method.
1684 (Sized_relobj::do_set_section_offset): Handle offset value -1.
1685
c7f3c371
DK
16862010-01-25 Doug Kwan <dougkwan@google.com>
1687
1688 * arm.cc (Arm_exidx_merged_section::do_output_offset):
1689 Fix warning due to signed and unsigned comparison on a 32-bit host.
1690
8923b24c
DK
16912010-01-22 Doug Kwan <dougkwan@google.com>
1692
1693 * arm.cc (Target_arm::do_relax): Record an output section for section
1694 offset adjustment it contains any stub table that has changed.
1695 * layout.cc (Layout::clean_up_after_relaxation): Adjust section
1696 offsets in an output section if necessary.
1697 * output.cc (Output_section::Output_section): Initialize
1698 section_offsets_need_adjustments_.
1699 (Output_section::add_input_section_for_script): Renamed to
1700 Output_section::add_simple_input_section.
1701 (Output_section::save_states): Add a comment.
1702 (Output_section::discard_states): New method defintion.
1703 (Output_section::adjust_section_offsets): Same.
1704 * output.h (Output_section::add_input_section_for_script): Renamed to
1705 Output_section::add_simple_input_section.
1706 (Output_section::discard_states): New method declaration.
1707 (Output_section::adjust_section_offsets): Same.
1708 (Output_section::section_offsets_need_adjustment,
1709 Output_section::set_section_offsets_need_adjustment): New method
1710 definitions.
1711 (Output_section::section_offsets_need_adjustment_): New data member.
1712 * script-sections.cc
1713 (Output_section_element_input::set_section_address): Adjust code for
1714 renaming of Output_section::add_input_section_for_script.
1715 (Orphan_output_section::set_section_address): Same.
1716
9b2fd367
DK
17172010-01-22 Viktor Kutuzov <vkutuzov@accesssoftek.com>
1718
1719 * gold/arm.cc (Target_arm): Updated fix_v4bx method and usage of
1720 Fix_v4bx enum values .
1721 * gold/options.h (General_options): New option definitions.
1722 (General_options::fix_v4bx): New method.
1723 (General_options::Fix_v4bx): New enum.
1724 * gold/options.cc (General_options::parse_fix_v4bx): New method.
1725 (General_options::parse_fix_v4bx_interworking): New method.
1726
80d0d023
DK
17272010-01-22 Doug Kwan <dougkwan@google.com>
1728
1729 * arm.cc (Arm_exidx_fixup): New class.
1730
af2cdeae
DK
17312010-01-21 Doug Kwan <dougkwan@google.com>
1732
1733 * arm.cc (Arm_exidx_cantunwind, Arm_exidx_merged_section): New
1734 classes.
1735 (Arm_exidx_section_offset_map): New type.
1736
993d07c1
DK
17372010-01-21 Doug Kwan <dougkwan@google.com>
1738
1739 * arm.cc (Arm_exidx_input_section): New class.
1740 (Arm_relobj::exidx_input_section_by_link,
1741 Arm_relobj::exidx_input_section_by_shndx,
1742 Arm_relobj::make_exidx_input_section): New methods.
1743 (read_arm_attributes_section): Remove.
1744 (Arm_relobj::do_read_symbols): Look for ARM.exidx sections and record
1745 information about them.
1746 (Arm_dynobj::do_read_symbols): Move code in read_arm_attributes_section
1747 to here.
1748
5ac169d4
DK
17492010-01-20 Doug Kwan <dougkwan@google.com>
1750
1751 * arm.cc (Target_arm::Arm_input_section_map): Change key type from
1752 Input_section_specifier to Section_id.
1753 (Target_arm::new_arm_input_section: Adjust code for change of key
1754 type.
1755 (Target_arm::find_arm_input_section): Ditto.
1756 * gc.h (object.h): Include for Section_id nand Section_id_hash.
1757 (Section_id): Remove.
1758 (Garbage_collection::Section_id_hash): Remove.
1759 * icf.h (object.h): Include for Section_id nand Section_id_hash.
1760 (Section_id): Remove.
1761 (Icf::Section_id_hash): Remove.
1762 * object.h (Section_id, Const_section_id, Section_id_hash,
1763 Const_section_id_hash): New type definitions.
1764 * output.cc (Output_section::add_relaxed_input_section): Change to
1765 use Const_section_id instead of Input_section_specifier as key type.
1766 (Output_section::add_merge_input_section): Ditto.
1767 (Output_section::build_relaxation_map): Change to use Section_id
1768 instead of Input_section_specifier as key type.
1769 (Output_section::convert_input_sections_in_list_to_relaxed_sections):
1770 Ditto.
1771 (Output_section::convert_input_sections_to_relaxed_sections): Change
1772 to use Const_section_id instead of Input_section_specifier as key type.
1773 (Output_section::find_merge_section): Ditto.
1774 (Output_section::find_relaxed_input_section): Ditto.
1775 * output.h (Input_section_specifier): Remove class.
1776 (Output_section::Output_section_data_by_input_section_map): Change
1777 key type to Const_section_id.
1778 (Output_section::Output_relaxed_input_section_by_input_section_map):
1779 Ditto.
1780 (Output_section::Relaxation_map): Change key type to Section_id.
1781
a2162063
ILT
17822010-01-20 Viktor Kutuzov <vkutuzov@accesssoftek.com>
1783
1784 * gold/arm.cc: Added support for R_ARM_V4BX relocation
1785 (class Arm_v4bx_stub): New class.
1786 (DEF_STUBS): Updated definition to support v4_veneer_bx.
1787 (Stub_factory::make_arm_v4bx_stub): New method.
1788 (Stub_factory::elf32_arm_stub_v4_veneer_bx): New veneer template.
1789 (Stub_table::empty): Handle v4bx stubs.
1790 (Stub_table::add_arm_v4bx_stub): New method.
1791 (Stub_table::find_arm_v4bx_stub): New method.
1792 (Arm_relocate_functions::v4bx): New method.
1793 (Target_arm::fix_v4bx): New method.
1794 (Target_arm::Target_arm): Handle R_ARM_V4BX.
1795 (Stub_table::relocate_stubs): Likewise.
1796 (Stub_table::do_write): Likewise.
1797 (Stub_table::update_data_size_and_addralign): Likewise.
1798 (Stub_table::finalize_stubs): Likewise.
1799 (Target_arm::Scan::local): Likewise.
1800 (Target_arm::Scan::global): Likewise.
1801 (Target_arm::do_finalize_sections): Likewise.
1802 (Target_arm::Relocate::relocate): Likewise.
1803 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
1804 Likewise.
1805 (Target_arm::scan_reloc_for_stub): Likewise.
1806 (Target_arm::scan_reloc_section_for_stubs): Likewise.
1807
5696ab0b
ILT
18082010-01-19 Ian Lance Taylor <iant@google.com>
1809
1810 * output.cc (Output_section_headers::do_sized_write): Write large
1811 segment count to sh_info field.
1812 (Output_file_header::do_sized_write): For large segment count,
1813 write PN_XNUM to e_phnum field.
1814
800d0f56
ILT
18152010-01-15 Viktor Kutuzov <vkutuzov@accesssoftek.com>
1816
1817 * arm.cc (Arm_relocate_functions::thm_jump6): New function.
1818 (Arm_relocate_functions::thm_jump8): New function.
1819 (Arm_relocate_functions::thm_jump11): New function.
1820 (Target_arm::Scan::local): Handle R_ARM_THM_JUMP6, R_ARM_THM_JUMP8,
1821 R_ARM_THM_JUMP11.
1822 (Target_arm::Scan::global): Likewise.
1823 (Target_arm::Relocate::relocate): Likewise.
1824 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
1825 Likewise.
1826
41263c05
DK
18272010-01-14 Doug Kwan <dougkwan@google.com>
1828
1829 * arm.cc (map, utility): Include headers.
1830 (Target_arm::apply_cortex_a8_workaround): New method.
1831 (Arm_relobj::do_relocate_sections): Apply any Cortex-A8 workaround.
1832 (Target_arm::Scan::local): Handle R_ARM_THM_JUMP24, R_ARM_THM_JUMP19.
1833 (Target_arm::Scan::global): R_ARM_THM_JUMP19.
1834 (Target_arm::do_finalize_sections): Set fix_cortex_a8_ according to
1835 the --[no-]fix-cortex-a8 command line options.
1836 (Target_arm::Relocate::relocate): Handle R_ARM_JUMP19.
1837 (Target_arm::relocate_stub): Use addend in instruction template.
1838 * options.h (DEFINE_bool): Set the user-set flag.
1839 (General_options): Add --[no-]-fix-cortex options.
1840 * output.cc (Output_section::convert_input_sections_to_relaxed_sections)
e1df38aa 1841 : Update fast look-up map after conversion.
41263c05 1842
459e9b03
ST
18432010-01-14 Sriraman Tallam <tmsriram@google.com>
1844
1845 * object.cc (Sized_relobj::do_layout): Change to call layout_gnu_stack
1846 in the first pass of do_layout.
1847
b521dfe4
DK
18482010-01-13 Doug Kwan <dougkwan@google.com>
1849
1850 * arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
1851 Arm_relobj::scan_sections_for_stubs): Rearrange code to avoid an
1852 apparent compiler problem of not folding static constant integral
1853 data members of elfcpp::Elf_sizes<32>.
1854
44272192
DK
18552010-01-13 Doug Kwan <dougkwan@google.com>
1856
1857 * arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
1858 Arm_relobj::section_needs_cortex_a8_stub_scanning,
1859 Arm_relobj::scan_section_for_cortex_a8_erratum,
1860 Arm_relobj::scan_span_for_cortex_a8_erratum): New methods.
1861 (Arm_relobj::scan_sections_for_stubs): Move code deciding what
1862 sections to scan for relocation stubs into a new method
1863 Arm_relobj::section_needs_reloc_stub_scanning. Handle both
1864 relocation and Cortex-A8 stub scanning.
1865 (Target_arm::do_relax): Force stubs to be after stubbed sections
1866 if fixing the Cortex-A8 erratum. Remove all Cortex-A8 stubs at
e1df38aa 1867 the beginning of a new relaxation pass. Update a comment.
44272192
DK
1868 (Target_arm::scan_span_for_cortex_a8_erratum): New method definition.
1869
44b71ece
ILT
18702010-01-12 Ian Lance Taylor <iant@google.com>
1871
1872 * target-reloc.h (visibility_error): New inline function.
1873 (relocate_section): Call visibility_error.
1874 * testsuite/Makefile.am (check_DATA): Add protected_3.err.
1875 (MOSTLYCLEANFILES): Likewise.
1876 (protected_4_pic.o, protected_3.err): New targets.
1877 * testsuite/protected_4.cc: New file.
1878
a120bc7f
DK
18792010-01-12 Doug Kwan <dougkwan@google.com>
1880
1881 * arm.cc (Cortex_a8_reloc): New class.
1882 (Target_arm::Target_arm): Initialize new data members fix_cortex_a8_
1883 and cortex_a8_relocs_info_.
1884 (Target_arm::fix_cortex_a8): New method definition.
1885 (Target_arm::Cortex_a8_relocs_info): New type.
1886 (Target_arm::fix_cortex_a8_, Target_arm::cortex_a8_relocs_info_):
1887 New data member declarations.
1888 (Target_arm::scan_reloc_for_stub): Record information about
1889 relocations for THUMB branches that might be exempted from the
1890 Cortex-A8 workaround.
1891 (Target_arm::do_relax): Clear all Cortex-A8 relocation information
1892 at the beginning of a relaxation pass.
1893
20138696
DK
18942010-01-12 Doug Kwan <dougkwan@google.com>
1895
1896 * arm.cc (Arm_relobj::mapping_symbols_info_): New data member.
1897 (Arm_relobj::Mapping_symbol_position,
1898 Arm_reloj::Mapping_symbol_position_less,
1899 Arm_relobj::Mapping_symbols_info): New types.
1900 (Target_arm::is_mapping_symbol_name): New method definition.
1901 (Arm_relobj::do_count_local_symbols): Save information about mapping
1902 symbols.
1903
089d69dc
DK
19042010-01-11 Doug Kwan <dougkwan@google.com>
1905
1906 * arm.cc (Arm_relocate_functions::thumb32_branch_offset,
1907 Arm_relocate_functions::thumb32_branch_upper,
1908 Arm_relocate_functions::thumb32_branch_lower,
1909 Arm_relocate_functions::thumb32_cond_branch_offset,
1910 Arm_relocate_functions::thumb32_cond_branch_upper,
1911 Arm_relocate_functions::thumb32_cond_branch_lower,
1912 Arm_relocate_functions::thm_jump19): New methods to handle THUMB
1913 branch offset encoding.
1914 (Arm_relocate_functions::thumb_branch_common): Use new branch
1915 offset encoding methods to avoid code duplication.
1916 (Stub_template::Stub_template) Handle THUMB16_SPECIAL_TYPE.
1917 (Stub_addend_reader::operator()): Use new branch encoding method
1918 to avoid code duplication.
1919
99e5bff2
DK
19202010-01-11 Doug Kwan <dougkwan@google.com>
1921
1922 * arm.cc (Arm_relobj::do_gc_process_relocs): New method.
1923 (Target_arm::do_finalize_sections): Define special EXIDX section
1924 symbols only if referenced.
1925 * gc.h (Garbage_collection::add_reference): New method.
1926 (gc_process_relocs): Use Garbage_collection::add_reference to avoid
1927 code duplication.
1928
98e090bd
ILT
19292010-01-11 Ian Lance Taylor <iant@google.com>
1930
d0a91bd8
ILT
1931 * script.cc (Version_script_info::build_expression_list_lookup):
1932 Change complaing about duplicate wildcard match from error to
1933 warning.
1934
98e090bd
ILT
1935 * script.cc (class Lazy_demangler): Recreate--revert part of patch
1936 of 2009-12-30.
1937 (Version_script_info::Version_script_info): Initialize globs_,
1938 default_version_, default_is_global_, and exact_. Don't
1939 initialize globals_ or locals_.
1940 (Version_script_info::build_lookup_tables): Build local symbols
1941 first.
1942 (Version_script_info::unquote): New function.
1943 (Version_script_info::add_exact_match): New function.
1944 (Version_script_info::build_expression_list_lookup): Remove lookup
1945 parameter. Add is_global parameter. Change all callers. Handle
1946 wildcard pattern specially. Unquote pattern. Call
1947 add_exact_match.
1948 (Version_script_info::get_name_to_match): New function.
1949 (Version_script_info::get_symbol_version): New function.
1950 (Version_script_info::get_symbol_version_helper): Remove.
1951 (Version_script_info::check_unmatched_names): Call unquote.
1952 * script.h (class Version_script_info): Change get_symbol_version
1953 to be non-inline and add is_global parameter; change all callers.
1954 Rewrite symbol_is_local. Update declarations. Define struct
1955 Version_tree_match, Exact, Globs. Don't define struct Lookup.
1956 Remove globals_ and locals_ members. Add exact_, globs_,
1957 default_version_, is_global_.
1958 (Version_script_info::Glob): Remove pattern, add expression and
1959 is_global. Update constructor. Change all callers.
1960 * dynobj.cc (Versions::finalize): Mark the version symbol as the
1961 default version.
1962 (Versions::symbol_section_contents): If a symbol is undefined, or
1963 defined in a dynamic object, set the version index to
1964 VER_NDX_LOCAL.
1965 * symtab.cc (Symbol_table::add_from_relobj): Don't call
1966 symbol_is_local.
1967 (Symbol_table::add_from_pluginobj): Likewise.
1968 * testsuite/ver_matching_test.sh: blaza1 and blaza go into V2.
1969
d56962d3
DK
19702010-01-11 Doug Kwan <dougkwan@google.com>
1971
1972 * Makefile.am (incremental_dump_DEPENDENCIES): Add libintl dependency.
1973 (incremental_dump_LDADD): Add linking option for libintl.
1974 * Makefile.in: Regenerate.
1975
94e6ee91
L
19762010-01-11 H.J. Lu <hongjiu.lu@intel.com>
1977
1978 PR gold/11144
1979 * testsuite/Makefile.am (dynamic_list.stdout): Use --dyn-syms
1980 instead of -Ds.
1981 * testsuite/Makefile.in: Regenerated.
1982
e96c574b
DK
19832010-01-10 Doug Kwan <dougkwan@google.com>
1984
1985 * options.h (DEFINE_var): Use parentheses around argument varname__
1986 in macro body to avoid any unintended subsequent substitutions.
1987
7198066b
ILT
19882010-01-10 Ian Lance Taylor <iant@google.com>
1989
ba4d53bf
ILT
1990 * resolve.cc (Symbol_table::resolve): Add symbols to list of ODR
1991 candidates before doing symbol resolution.
1992
7198066b
ILT
1993 * resolve.cc (Symbol_table::resolve): Add symbols to the list of
1994 ODR candidates if only one is weak.
1995
a2beed37
ILT
19962010-01-08 Ian Lance Taylor <iant@google.com>
1997
1998 * script.cc (Version_script_info::build_expression_list_lookup):
1999 Don't warn about ambiguous version, just record the ambiguity.
2000 (Version_script_info::get_symbol_version_helper): Give error if
2001 version is ambiguous.
2002
2fb7225c
DK
20032010-01-08 Doug Kwan <dougkwan@google.com>
2004
2005 * arm.cc (Stub_table::Stub_table): Initalize cortex_a8_stubs_,
2006 prev_data_size_ and prev_addralign_. Remove initializer for
2007 deleted data member has_been_changed_.
2008 (Stub_table::empty): Look at both reloc_stubs_ and cortex_a8_stubs_
2009 to determine if the table is empty.
2010 (Stub_table::has_been_changed, Stub_table_set_has_been_changed):
2011 Remove.
2012 (Stub_table::add_reloc_stub): Define method in class definition
2013 instead of just declaring it there.
2014 (Stub_table::add_cortex_a8_stub): New method definition.
2015 (Stub_table::update_data_size_and_addralign): Ditto.
2016 (Stub_table::finalize_stubs): Ditto.
2017 (Stub_table::apply_cortex_a8_workaround_to_address_range): Ditto.
2018 (Stub_table::do_addralign_): Return address alignment in the
2019 (Stub_table::do_reset_address_and_file_offset): Define method in
2020 class definition instead of declaring it there. Set current data
2021 size to be the data size of the previous pass.
2022 (Stub_table::set_final_data_size): Use current data size as the
2023 final data size.
2024 (Stub_table::relocate_stub): Change parameter type of stub from
2025 Reloc_stub pointer to Stub pointer.
2026 (Stub_table::addralign_, Stub_table::has_been_changed_): Remove.
2027 (Stub_table::Cortex_a8_stub_list): New typedef.
2028 (Stub_table::cortex_a8_stubs_, Stub_table::prev_data_size_,
2029 Stub_table::prev_addralign_): New data member.
2030 (Arm_relobj::Arm_relobj): Initialize data member
2031 section_has_cortex_a8_workaround_.
2032 (Arm_relobj::section_has_cortex_a8_workaround,
2033 Arm_relobj::mark_section_for_cortex_a8_workaround): New method
2034 definitions.
2035 (Arm_relobj::section_has_cortex_a8_workaround_): New data member
2036 declarations.
2037 (Target_arm::relocate_stub): Change parameter type of stub from
2038 Reloc_stub pointer to Stub pointer.
2039 (Insn_template::size, Insn_template::alignment): Handle
2040 THUMB16_SPECIAL_TYPE.
2041 (Stub_table::remove_all_cortex_a8_stubs, Stub_table::finalize_stubs,
2042 Stub_table::update_data_size_and_addralign,
2043 Stub_table::apply_cortex_a8_workaround_to_address_range): New method
2044 definitions.
2045 (Stub_table::relocate_stubs): Handle Cortex-A8 stubs.
2046 (Stub_table::do_write): Ditto.
2047 (Target_arm::do_relax): Adjust code for changes in Stub_table.
2048
880cd20d
ILT
20492010-01-08 Ian Lance Taylor <iant@google.com>
2050
2051 PR 11108
2052 * symtab.h (class Symbol): Remove fields is_target_special_ and
2053 has_plt_offset_. Add field is_defined_in_discarded_section_.
2054 (Symbol::is_defined_in_discarded_section): New function.
2055 (Symbol::set_is_defined_in_discarded_section): New function.
2056 (Symbol::has_plt_offset): Rewrite.
2057 (Symbol::set_plt_offset): Verify that new offset is not -1U.
2058 * symtab.cc (Symbol::init_fields): Initialize plt_offset_ to -1U.
2059 Don't initialize is_target_special_ or has_plt_offset_.
2060 Initialize is_defined_in_discarded_section_.
2061 (Symbol_table::add_from_relobj): If appropriate, set
2062 is_defined_in_discarded_section.
2063 * resolve.cc (Symbol::override_base_with_special): Don't test
2064 is_target_special_. Change has_plt_offset_ to has_plt_offset().
2065 * target-reloc.h (relocate_section): Do special handling for
2066 symbols defined in discarded sections for global symbols as well
2067 as local symbols.
2068
2703e3eb
ILT
20692010-01-08 Ian Lance Taylor <iant@google.com>
2070
2071 * dynobj.cc (big_endian>::find_dynsym_sections): Set pi to NULL in
2072 the SHT_SYMTAB case.
2073
339d40a3
ILT
20742010-01-08 Ian Lance Taylor <iant@google.com>
2075
2076 * object.cc (Sized_relobj::do_layout): Don't get confused if
2077 layout_eh_frame returns NULL.
2078
abecea76
ILT
20792010-01-08 Ian Lance Taylor <iant@google.com>
2080
2081 PR 11084
2082 * dynobj.cc (Sized_dynobj::find_dynsym_sections): If there is no
2083 dynamic symbol table, use the normal symbol table.
2084 (Sized_dynobj::do_read_symbols): Remove assertion about type of
2085 symbol table.
2086
6b7dd3f3
ILT
20872010-01-08 Ian Lance Taylor <iant@google.com>
2088
2089 PR 11072
2090 * layout.cc (Layout::include_section): Remove .gnu_debuglink
2091 sections.
2092
36c50e63
L
20932010-01-08 H.J. Lu <hongjiu.lu@intel.com>
2094
2095 * version.cc (print_version): Change to "Copyright 2010".
2096
e291e7b9
ILT
20972010-01-08 Ian Lance Taylor <iant@google.com>
2098
2099 PR 10287
2100 PR 11063
2101 * i386.cc (class Target_i386): Change return type of plt_section
2102 to be non-const.
2103 (class Output_data_plt_i386): Add tls_desc_rel_ field.
2104 (Output_data_plt_i386::Output_data_plt_i386): Initialize
2105 tls_desc_rel_ field.
2106 (Output_data_plt_i386::rel_tls_desc): New function.
2107 (Target_i386::rel_tls_desc_section): New function.
2108 (Target_i386::Scan::local): Rewrite R_386_TLS_GOTDESC handling.
2109 (Target_i386::Scan::global): For R_386_TLS_GOTDESC put
2110 R_386_TLS_DESC reloc in rel_tls_desc_section.
2111 * x86_64.cc (class Target_x86_64): Add tlsdesc_reloc_info_ field.
2112 Define struct Tlsdesc_info.
2113 (Target_x86_64::Target_x86_64): Initialize tlsdesc_reloc_info_.
2114 (Target_x86_64::do_reloc_symbol_index): New function.
2115 (Target_x86_64::add_tlsdesc_info): New function.
2116 (class Output_data_plt_x86_64): Add tlsdesc_rel_ field.
2117 (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize
2118 tlsdesc_rel_ field.
2119 (Output_data_plt_x86_64::rela_plt): Rename from rel_plt. Change
2120 all callers.
2121 (Output_data_plt_x86_64::rela_tlsdesc): New function.
2122 (Target_x86_64::rela_tlsdesc_section): New function.
2123 (Target_x86_64::Scan::local): Rewrite R_X86_64_GOTPC32_TLSDESC
2124 handling.
2125 (Target_x86_64::Scan::global): For R_X86_64_GOTPC32_TLSDESC put
2126 (Target_x86_64::do_reloc_addend): New function.
2127 R_X86_64_TLSDESC reloc in rela_tlsdesc_section.
2128 * output.h (class Output_reloc) [SHT_REL]: Add new constructor
2129 declarations. Define TARGET_CODE. Add arg field to u1_ union.
2130 (Output_reloc::type): New function.
2131 (Output_reloc::is_local_section_symbol): Check for TARGET_CODE.
2132 (Output_reloc::is_target_specific): New function.
2133 (Output_reloc::target_arg): New function.
2134 (class Output_reloc) [SHT_RELA]: Add four new constructors for
2135 absolute relocs and target specific relocs.
2136 (class Output_data_reloc) [SHT_REL]: Add add_absolute and
2137 add_target_specific.
2138 (class Output_data_reloc) [SHT_RELA]: Likewise.
2139 * output.cc (Output_reloc::Output_reloc): Add four new versions
2140 for absolute relocs and target specific relocs.
2141 (Output_reloc::set_needs_dynsym_index): Add TARGET_CODE case.
2142 (Output_reloc::get_symbol_index): Likewise.
2143 (Output_reloc::local_section_offset): Check that local_sym_index_
2144 is not TARGET_CODE or 0.
2145 (Output_reloc::symbol_value): Likewise.
2146 (Output_reloc::write) [SHT_RELA]: Call target for target specific
2147 reloc.
2148 * target.h (class Target): Add reloc_symbol_index and reloc_addend
2149 functions. Add do_reloc_symbol_index and do_reloc_addend virtual
2150 functions.
2151 * layout.cc (add_target_dynamic_tags): Use output section for
2152 DT_PLTRELSZ and DT_JMPREL.
2153
3a44184e
ILT
21542010-01-07 Ian Lance Taylor <iant@google.com>
2155
2156 PR 11061
2157 * output.h (class Output_reloc) [SHT_RELA]: Add is_relative
2158 function.
2159 (class Output_data_reloc_generic): Define.
2160 (class Output_data_reloc_base): Change base class to
2161 Output_data_reloc_generic. Change add() method to call
2162 bump_relative_reloc_count for a relative reloc. Remove
2163 sort_relocs_ field.
2164 * output.cc (Output_data_reloc_base::do_write): Change sort_reloc_
2165 to sort_relocs().
2166 * layout.cc (Layout::add_target_dynamic_tags): Change dyn_rel to
2167 Output_data_reloc_generic*. Add DT_RELCOUNT/DT_RELACOUNT tag if
2168 appropriate.
2169 * layout.h (class Layout): Update declaration.
2170
ea715a34
ILT
21712010-01-07 Ian Lance Taylor <iant@google.com>
2172
2173 * output.h (class Output_data): Add const version of
2174 output_section and do_output_section.
2175 (class Output_section_data): Add const version of
2176 do_output_section.
2177 (class Output_section): Likewise.
2178 * layout.cc (Layout::add_target_dynamic_tags): New function.
2179 * layout.h (class Layout): Update declarations.
2180 * arm.cc (Target_arm::do_finalize_sections): Use
2181 add_target_dynamic_tags.
2182 * i386.cc (Target_i386::do_finalize_sections): Likewise.
2183 * powerpc.cc (Target_powerpc::do_finalize_sections): Likewise.
2184 * sparc.cc (Target_sparc::do_finalize_sections): Likewise.
2185 * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
2186
659948a4
ILT
21872010-01-07 Ian Lance Taylor <iant@google.com>
2188
2189 PR 11042
2190 * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Mark the dynamic
2191 object as needed.
2192
9d3b86f6
ILT
21932010-01-07 Dmitry Gorbachev <d.g.gorbachev@gmail.com>
2194 Ian Lance Taylor <iant@google.com>
2195
2196 PR 11019
2197 * object.cc: Instantiate Xindex::initialize_symtab_xindex and
2198 Xindex::read_symtab_xindex.
2199
bb0d3eb0
DK
22002010-01-07 Doug Kwan <dougkwan@google.com>
2201
2202 * arm.cc (Insn_template::Type): New enum value THUMB16_SPECIAL_TYPE.
2203 (Insn_template::thumb16_bcond_insn): New method declaration.
2204 (Insn_template): Fix spelling.
2205 (Stub::thumb16_special): New method declaration.
2206 (Stub::do_write): Define virtual method which was previously pure
2207 virtual.
2208 (Stub::do_thumb16_special): New method declaration.
2209 (Stub::do_fixed_endian_write): New template member.
2210 (Reloc_stub::do_write): Remove.
2211 (Reloc_stub::do_fixed_endian_write): Remove.
2212 (Cortex_a8_stub): New class definition.
2213 (Stub_factory::make_cortex_a8_stub): New method definition.
2214 (Stub_factory::Stub_factory): Add missing static storage class
2215 qualifier for elf32_arm_stub_a8_veneer_blx.
2216
ffeef7df
ILT
22172010-01-07 Ian Lance Taylor <iant@google.com>
2218
dc3f80fe
ILT
2219 PR 10980
2220 * options.h (class General_options): Add --warn-unresolved-symbols
2221 and --error-unresolved-symbols.
2222 * errors.cc (Errors::undefined_symbol): Implement
2223 --warn-unresolved-symbols.
2224
ffeef7df
ILT
2225 * options.h (class General_options): Add -z text and -z textoff.
2226 * layout.cc (Layout::finish_dynamic_section): Implement -z text.
2227
f1ec9ded
ST
22282010-01-06 Sriraman Tallam <tmsriram@google.com>
2229
2230 * gc.h (Garbage_collection::Cident_section_map): New typedef.
2231 (Garbage_collection::cident_sections): New function.
2232 (Garbage_collection::add_cident_section): New function.
2233 (Garbage_collection::cident_sections_): New member.
2234 (gc_process_relocs): Add references to sections whose names are C
2235 identifiers.
2236 * gold.h (cident_section_start_prefix): New constant.
2237 (cident_section_stop_prefix): New constant.
2238 (is_cident): New function.
2239 * layout.cc (Layout::define_section_symbols): Replace string constants
2240 with the newly defined constants.
2241 * object.cc (Sized_relobj::do_layout): Track sections whose names are
2242 C identifiers.
2243 * testsuite/Makefile.am: Add gc_orphan_section_test.
2244 * testsuite/Makefile.in: Regenerate.
2245 * testsuite/gc_orphan_section_test.cc: New file.
2246 * testsuite/gc_orphan_section_test.sh: New file.
2247
6eda8c29
ILT
22482010-01-06 Ian Lance Taylor <iant@google.com>
2249
b9674e17
ILT
2250 PR 10980
2251 * options.h (class General_options): Add --warn-shared-textrel.
2252 * layout.cc (Layout::finish_dynamic_section): Implement
2253 --warn-shared-textrel.
2254
6eda8c29
ILT
2255 PR 10980
2256 * options.h (class General_options): Add --warn-multiple-gp.
2257
32dcd44e
ILT
22582010-01-06 Viktor Kutuzov <vkutuzov@accesssoftek.com>
2259
2260 * Makefile.am (incremental_dump_DEPENDENCIES): Remove
2261 $(THREADSLIB) and $(LIBDL).
2262 * Makefile.in: Rebuild.
2263
a192ba05
ILT
22642010-01-06 Ian Lance Taylor <iant@google.com>
2265
2266 PR 10980
2267 * options.cc (General_options::parse_section_start): New function.
2268 (General_options::section_start): New function.
2269 (General_options::General_options): Initialize all members.
2270 * options.h: Include <map>
2271 (class General_options): Add --section-start. Add section_starts_
2272 member.
2273 * layout.cc (Layout::attach_allocated_section_to_segment): If
2274 --section-start was used, set the address of the segment. Remove
2275 local sort_sections.
2276 (Layout::relaxation_loop_body): If the address of the load segment
2277 has been set by --section-start, don't use it.
2278 * output.h (Output_segment::update_flags_for_output_section): New
2279 function.
2280 * output.cc (Output_segment::add_output_section): Call
2281 update_flags_for_output_section.
2282
dde3f402
ILT
22832010-01-05 Ian Lance Taylor <iant@google.com>
2284
62dfdd4d
ILT
2285 PR 10980
2286 * options.h (class General_options): Add --undefined-version.
2287 * script.cc (struct Version_expression): Add was_matched_by_symbol
2288 field.
2289 (Version_script_info::matched_symbol): New function.
2290 (Version_script_info::get_symbol_version_helper): Call
2291 matched_symbol.
2292 (Version_script_info::check_unmatched_names): New function.
2293 * script.h (class Version_script_info): Update declarations.
2294 * gold.cc (queue_middle_tasks): Handle --no-undefined-version.
2295
9c4ae156
ILT
2296 * options.h (class General_options): Use DEFINE_bool_alias for
2297 allow_multiple_definition.
2298 * resolve.cc (Symbol_table::should_override): Don't test
2299 allow_multiple_definition.
2300
dde3f402
ILT
2301 PR 10980
2302 * options.h (class General_options): Add --cref.
2303 * main.cc (main): Print cref table if --cref. Don't close mapfile
2304 until after printing cref table.
2305 * cref.cc: Include "symtab.h".
2306 (class Cref_inputs): Define Cref_table_compare and Cref_table.
2307 (Cref_table_compare::operator()): New function.
2308 (Cref_inputs::gather_cref): New function.
2309 (filecol): New static const.
2310 (Cref_inputs::print_cref): New function.
2311 (Cref::print_cref): New function.
2312 * cref.h: Include <cstdio>.
2313 (class Cref): Update declarations.
2314 * mapfile.h (Mapfile::file): New function.
2315 * object.h (class Object): Define Symbols. Declare virtual
2316 do_get_global_symbols.
2317 (Object::get_global_symbols): New function.
2318 * object.cc (Input_objects::add_object): Pass object to cref_ if
2319 --cref.
2320 (Input_objects::archive_start): Likewise.
2321 (Input_objects::archive_stop): Likewise.
2322 (Input_objects::print_cref): New function.
2323 * dynobj.h (Sized_dynobj::do_get_global_symbols): New function.
2324 * dynobj.cc (big_endian>::do_add_symbols): Create symbols_ if
2325 --cref.
2326 * plugin.cc (Sized_pluginobj::do_get_global_symbols): New
2327 function.
2328 * plugin.h (class Sized_pluginobj): Update declarations.
2329
8781f709
ILT
23302010-01-05 Ian Lance Taylor <iant@google.com>
2331
2332 * symtab.cc (Symbol_table::add_from_object): Rename def parameter
2333 to is_default_version. Rename insdef to insdefault.
2334 (Symbol_table::add_from_relobj): Rename def to is_default_version
2335 and local to is_forced_local.
2336 (Symbol_table::add_from_pluginobj): Likewise.
2337 (Symbol_table::add_from_dynobj): Likewise.
2338 (Symbol_table::define_special_symbol): Rename insdef to
2339 insdefault.
2340
fe35d28d
ILT
23412010-01-04 Ian Lance Taylor <iant@google.com>
2342
30bc8c46
ILT
2343 PR 10980
2344 * options.h (class General_options): Add
2345 --allow-multiple-definition and -z muldefs.
2346 * resolve.cc (Symbol_table::should_override): Don't warn about a
2347 multiple symbol definition if --allow-multiple-definition or -z
2348 muldefs.
2349
7eaea549
ILT
2350 PR 10980
2351 * options.h (class General_options): Add --add-needed and
2352 --copy-dt-needed-entries. Tweak --as-needed help entry.
2353 * object.cc (Input_objects::check_dynamic_dependencies): Give an
2354 error if --copy-dt-needed-entries aka --add-needed is used and
2355 would cause a change in behaviour.
2356
fe35d28d
ILT
2357 PR 10980
2358 * options.h (class General_options): Add -G as a short version of
2359 --shared. Add no-op options -assert, -g, and -i.
2360
55a2bb35
ST
23612010-01-04 Sriraman Tallam <tmsriram@google.com>
2362
2363 * gc.h (gc_process_relocs): Call is_section_foldable_candidate to
2364 check for .text or .gnu.linkonce.t sections.
2365 * icf.cc (Icf::find_identical_sections): Ditto.
2366 Change the detection for mangled function name within the section
2367 name.
2368 * icf.h (is_section_foldable_candidate): New function.
2369
719328e1
ILT
23702009-12-30 Ian Lance Taylor <iant@google.com>
2371
2372 PR 10980
2373 * options.h (class General_options): Permit two dashes with
2374 --retain-symbols-file.
2375
d7bb5745
ILT
23762009-12-30 Ian Lance Taylor <iant@google.com>
2377
403a15dd
ILT
2378 PR 10979
2379 * layout.cc (Layout::relaxation_loop_body): If -Ttext was used,
2380 don't put the file header and segment headers in the text
2381 segment.
2382
eda294df
ILT
2383 PR 10979
2384 * common.cc (Sort_commons::operator()): Stabilize sort when both
2385 entries are NULL.
2386 (Symbol_table::do_allocate_commons_list): When allocating common
2387 symbols, skip a symbol which is no longer common.
2388 * symtab.h (Symbol::is_common): Test whether the symbol comes from
2389 an object before checking its type.
2390 * testsuite/common_test_2.c: New file.
2391 * testsuite/common_test_3.c: New file.
2392 * testsuite/Makefile.am (check_PROGRAMS): Add common_test_2.
2393 (common_test_2_SOURCES, common_test_2_DEPENDENCIES): Define.
2394 (common_test_2_LDFLAGS, common_test_2_LDADD): Define.
2395 (common_test_2_pic.o, common_test_2.so): New targets.
2396 (common_test_3_pic.o, common_test_3.so): New targets.
2397 * testsuite/Makefile.in: Rebuild.
2398
d7bb5745
ILT
2399 PR 10979
2400 * script.cc (read_input_script): If we see a new SECTIONS clause,
2401 and we have added an input section, give an error.
2402 * layout.h (class Layout): Add have_added_input_section function.
2403 Add have_added_input_section_ field.
2404 * layout.cc (Layout::Layout): Initialize
2405 have_added_input_section_.
2406 (Layout::layout): Set have_added_input_section_.
2407 (Layout::layout_eh_frame): Likewise.
2408
fc59c572
ILT
24092009-12-30 Ian Lance Taylor <iant@google.com>
2410
2411 PR 10931
2412 * options.h (class General_options): Add --sort-common option.
2413 * symtab.h (class Symbol_table): Define Sort_commons_order enum.
2414 * common.cc (Sort_common): Add sort_order parameter to
2415 constructor. Add sort_order_ field.
2416 (Sort_commons::operator): Check sort_order_.
2417 (Symbol_table::allocate_commons): Determine the sort order.
2418 (Symbol_table::do_allocate_commons): Add sort_order parameter.
2419 Change all callers.
2420 (Symbol_table::do_allocate_commons_list): Likewise.
2421
1c74fab0
ILT
24222009-12-30 Ian Lance Taylor <iant@google.com>
2423
2424 PR 10916
2425 * symtab.cc (Symbol_table::add_from_relobj): When not exporting
2426 symbols from this object, don't change the visibility of an
2427 undefined symbol.
2428 * testsuite/exclude_libs_test_1.c (lib1_ref): New function.
2429
6affe781
ILT
24302009-12-30 Ian Lance Taylor <iant@google.com>
2431
2432 PR 10861
2433 * script.h (class Version_script_info): Define Language enum.
2434 Update declarations. Define Glob, Exact, and Lookup types. Add
2435 new fields globals_, locals_, and is_finalized_.
2436 * script.cc: Various formatting fixes.
2437 (class Parser_closure): Change language_stack_ from a vector of
2438 std::string to one of Version_script_info::Language. Adjust all
2439 uses accordingly.
2440 (class Lazy_demangler): Remove.
2441 (struct Version_expression): Change language from std::string to
2442 Version_script_info::Language.
2443 (Version_script_info::Version_script_info): New function.
2444 (Version_script_info::~Version_script_info): Don't call clear.
2445 (Version_script_info::finalize): New function.
2446 (Version_script_info::build_lookup_tables): New function.
2447 (Version_script_info::build_expression_list_lookup): New
2448 function.
2449 (Version_script_info::get_symbol_version_helper): Rewrite to use
2450 lookup tables.
2451 (Version_script_info::print_expression_list): Adjust to use
2452 Version_script_info::Language.
2453 (script_push_lex_into_version_mode): Check that the version script
2454 has not been finalized.
2455 (version_script_push_lang): Change language string to
2456 Version_script_info::Language.
2457 * options.cc (Command_line::version_script): New function.
2458 * options.h (class General_options): Add finalize_dynamic_list
2459 function. Change version_script from declaration to definition.
2460 * testsuite/ver_test_4.script: Remove duplicate def of t2_2.
2461 * testsuite/version_script.map: Remove duplicate def of foo.
2462 * testsuite/Makefile.am (ver_matching_def.so): Depend upon
2463 version_script.map.
2464 * testsuite/Makefile.in: Rebuild.
2465
818bf354
ILT
24662009-12-30 Ian Lance Taylor <iant@google.com>
2467
2468 PR 10843
2469 * target-reloc.h (relocate_for_relocatable): When copying a reloc,
2470 if the input symbol index is 0, make the output symbol index 0.
2471
ebcc8304
ILT
24722009-12-30 Ian Lance Taylor <iant@google.com>
2473
2474 PR 10670
2475 * options.h (class General_options): Add -x/--discard-all.
2476 * object.cc (Sized_relobj::do_count_local_symbols): Handle
2477 --discard-all. If the local symbol needs a dynamic entry, check
2478 that before handling --discard-locals.
2479
176fe33f
ILT
24802009-12-30 Ian Lance Taylor <iant@google.com>
2481
bb321bb1
ILT
2482 PR 10450
2483 * output.cc (Output_segment::Output_segment): If PT_TLS, set the
2484 flags to PF_R.
2485 (Output_segment::add_output_section): Don't change the flags if
2486 the type is PT_TLS.
2487
176fe33f
ILT
2488 PR 10450
2489 * dynobj.cc (Dynobj::create_gnu_hash_table): Add symbols to the
2490 GNU hash table if they need a dynamic value. Otherwise, don't add
2491 them if they are defined in a dynamic object or are forced local.
2492
e8cd95c7
ILT
24932009-12-29 Ian Lance Taylor <iant@google.com>
2494
1b81fb71
ILT
2495 PR 10450
2496 * layout.cc (Layout::create_dynamic_symtab): Only set entsize of
2497 .gnu.hash table for a 32-bit target.
2498
8d6d383d
ILT
2499 PR 10450
2500 * symtab.h (Symbol::needs_dynsym_entry): A symbol in both a
2501 regular and a dynamic object only needs a dynamic symbol table
2502 entry if it is externally visible.
2503
e785ec03
ILT
2504 PR 10450
2505 * i386.cc (class Target_i386): Initialize global_offset_table_ in
2506 constructor. Add global_offset_table_ field.
2507 (Target_i386::got_section): Set global_offset_table_.
2508 (Target_i386::do_finalize_sections): Set global_offset_table_
2509 size.
2510 * x86_64.cc (class Target_x86_64): Initialize global_offset_table_
2511 in constructor. Add global_offset_table_ field.
2512 (Target_x86_64::got_section): Set global_offset_table_.
2513 (Target_x86_64::do_finalize_sections): Set global_offset_table_
2514 size.
2515
1a2dff53
ILT
2516 * layout.cc (Layout::Layout): Initialize increase_relro_.
2517 (Layout::get_output_section): Add is_relro, is_last_relro, and
2518 is_first_non_relro parameters. Change all callers.
2519 (Layout::choose_output_section): Likewise.
2520 (Layout::add_output_section_data): Likewise.
2521 (Layout::make_output_section): Likewise.
2522 (Layout::set_segment_offsets): Clear increase_relro when using a
2523 linker script.
2524 * layout.h (class Layout): Add increase_relro method. Add
2525 increase_relro_ field. Update declarations.
2526 * output.cc (Output_section::Output_section): Initialize
2527 is_last_relro_ and is_first_non_relro_.
2528 (Output_segment::add_output_section): Group relro sections is
2529 do_sort is true. Handle is_last_relro and is_first_non_relro.
2530 (Output_segment::maximum_alignment): Remove relro handling.
2531 (Output_segment::set_section_addresses): Add increase_relro
2532 parameter. Change all callers. Add initial alignment to align
2533 relro sections on separate page. Remove old relro handling.
2534 (Output_segment::set_section_list_addresses): Remove in_relro
2535 parameter. Change all callers.
2536 (Output_segment::set_offset): Add increase parameter. Change all
2537 callers. Remove old relro handling.
2538 * output.h (class Output_section): Add new methods: is_last_relro,
2539 set_is_last_relro, is_first_non_relro, set_is_first_non_relro.
2540 Add is_last_relro_ and is_first_non_relro_ fields.
2541 * i386.cc (Target_i386::got_section): Don't call set_is_relro.
2542 Create separate .got.plt section. Call increase_relro.
2543 * x86_64.cc (Target_x86_64::got_section): Likewise.
2544 * testsuite/relro_script_test.t: Add .got.plt.
2545
f0ba79e2
ILT
2546 PR 10450
2547 * layout.cc (Layout::Layout): Initialize dynamic_symbol_ field.
2548 (Layout::create_initial_dynamic_sections): Set dynamic_symbol_.
2549 (Layout::finalize): Call set_dynamic_symbol_size.
2550 (Layout::set_dynamic_symbol_size): New function.
2551 * layout.h (class Layout): Add dynamic_symbol_ field. Declare
2552 set_dynamic_symbol_size.
2553
e8cd95c7
ILT
2554 PR 10450
2555 * output.h (class Output_section): Add is_entsize_zero_ field.
2556 * output.cc (Output_section::Output_section): Initialize
2557 is_entsize_zero_.
2558 (Output_section::set_entsize): If two different entsizes are
2559 requested, force it to zero.
2560 (Output_section::add_input_section): Set flags for .debug_str
2561 before updating section flags. Set entsize.
2562 (Output_section::update_flags_for_input_section): Set SHF_MERGE
2563 and SHF_STRING if all input sections have those flags.
2564
3e1b9a8a
RÁE
25652009-12-29 Rafael Espindola <espindola@google.com>
2566
2567 * main.cc (main): Fix the sys time reporting.
e8cd95c7
ILT
2568 * workqueue.cc (Workqueue::find_and_run_task): Fix the sys time
2569 reporting.
3e1b9a8a 2570
3dcad376
ST
25712009-12-29 Sriraman Tallam <tmsriram@google.com>
2572
2573 * options.cc (General_options::parse_version): Allow -v to exit
2574 without an error if there is nothing to link.
2575
084e2665
ILT
25762009-12-29 Ian Lance Taylor <iant@google.com>
2577
2578 * configure.ac: Set the MCMODEL_MEDIUM conditional to false if
2579 using a version of gcc before 4.1.
2580 * configure: Rebuild.
2581
250acde3
CD
25822009-12-28 Chris Demetriou <cgd@google.com>
2583
2584 * attributes.cc (Output_attributes_section_data::do_write): Use
2585 std::vector::front rather than std::vector::data.
2586
99fff23b
ILT
25872009-12-28 Ian Lance Taylor <iant@google.com>
2588
2589 * symtab.h (class Symbol_table): Add enum Defined.
2590 * resolve.cc (Symbol_table::should_override): Add defined
2591 parameter. Change all callers. Test whether object is NULL
2592 before calling a method on it.
2593 (Symbol_table::report_resolve_problem): Add defined parameter.
2594 Change all callers.
2595 (Symbol_table::should_override_with_special): Likewise.
2596 * symtab.cc (Symbol_table::define_in_output_data): Add defined
2597 parameter. Change all callers.
2598 (Symbol_table::do_define_in_output_data): Likewise.
2599 (Symbol_table::define_in_output_segment): Likewise.
2600 (Symbol_table::do_define_in_output_segment): Likewise.
2601 (Symbol_table::define_as_constant): Likewise.
2602 (Symbol_table::do_define_as_constant): Likewise.
2603 * script.h (class Symbol_assignment): Add is_defsym parameter to
2604 constructor; change all callers.
2605 * script.cc (Script_options::add_symbol_assignment): Add is_defsym
2606 parameter. Change all callers. Add is_defsym_ field.
2607 (class Parser_closure): Add parsing_defsym parameter to
2608 constructor; change all callers. Add parsing_defsym accessor
2609 function. Add parsing_defsym_ field.
2610
556bd683
ILT
26112009-12-28 Ian Lance Taylor <iant@google.com>
2612
2613 * gold.cc (queue_middle_tasks): Fix formatting.
fa618ee4 2614 * object.cc (Relobj::is_section_name_included): Likewise.
556bd683 2615
1782c879
ILT
26162009-12-23 Ian Lance Taylor <iant@google.com>
2617
2618 * i386.cc (Target_i386::do_calls_non_split): Recognize
2619 -fsplit-stack prologue for a function with a static chain.
cbc999b9
ILT
2620 * x86_64.cc (Target_x86_64::do_calls_non_split): Recognize
2621 -fsplit-stack prologue when using %r11.
1782c879 2622
329ca2b1
ST
26232009-12-21 Sriraman Tallam <tmsriram@google.com>
2624
2625 * options.cc (General_options::parse_version): Make -v continue and do
2626 the link like GNU ld does.
2627
d675ff46
RÁE
26282009-12-17 Rafael Avila de Espindola <espindola@google.com>
2629
2630 * Makefile.am (CCFILES): Add timer.cc.
2631 (HFILES): Add timer.h.
2632 * configure.ac: Check for sysconf and times.
2633 * main.cc: include timer.h.
2634 (main): Use Timer instead of get_run_time.
2635 * timer.cc: New.
2636 * timer.h: New.
2637 * workqueue.cc: include timer.h.
2638 (Workqueue::find_and_run_task):
2639 Report user, sys and wall time.
2640 * Makefile.in: Regenerate.
2641 * config.in: Regenerate.
2642 * configure: Regenerate.
2643
d6344fb5
DK
26442009-12-16 Doug Kwan <dougkwan@google.com>
2645
2646 * arm.cc (Arm_relobj::scan_sections_for_stubs): Exclude ICF-eliminated
2647 sections.
2648 * object.cc (Sized_relobj::do_finalize_local_symbols): Handle
2649 relaxed input sections.
2650 * output.cc (Output_section::find_relaxed_input_section): Change
2651 return type to Output_relaxed_input_section pointer. Adjust code
2652 for new type of relaxed_input_section_map_.
2653 * output.h (Output_section::find_relaxed_input_section): Change
2654 return type to Output_relaxed_input_section pointer.
2655 (Output_section::Output_relaxed_input_section_by_input_section_map):
2656 New type.
2657 (Output_section::relaxed_input_section_map_): Change type to
2658 Output_section::Output_relaxed_input_section_by_input_section_map.
2659 * symtab.cc (Symbol_table::compute_final_value): Handle relaxed
2660 input section.
2661
0e0d5469
ILT
26622009-12-15 Ian Lance Taylor <iant@google.com>
2663
2664 * layout.cc (Layout::create_shstrtab): Only write out after input
2665 sections if we are compressing debug sections.
2666
0649a889
ILT
26672009-12-15 Ian Lance Taylor <iant@google.com>
2668
2669 * archive.cc (Archive::add_symbols): Only look up a symbol without
2670 a version if there is, in fact, a version.
2671
2ea97941
ILT
26722009-12-14 Ian Lance Taylor <iant@google.com>
2673
2674 Revert -Wshadow changes, all changes from:
2675 2009-12-11 Doug Kwan <dougkwan@google.com>
2676 2009-12-11 Nick Clifton <nickc@redhat.com>
2677 * configure.ac: Remove -Wshadow when setting WARN_CXXFLAGS.
2678
b0eec2cc
DK
26792009-12-11 Doug Kwan <dougkwan@google.com>
2680
2681 * arm.cc (Target_arm::do_finalize_sections): Fix build breakage
2682 due to -Wshadow.
2683 * attributes.cc (Object_attribute::size): Ditto.
2684 (Attributes_section_data::size): Ditto.
2685 (Attributes_section_data::Attributes_section_data): Ditto.
2686 (Output_attributes_section_data::do_write): Ditto.
2687 * attributes.h (Object_attribute::set_type): Ditto.
2688 * testsuite/tls_test_main.cc (safe_lock, safe_unlock): Ditto.
2689
91d6fa6a
NC
26902009-12-11 Nick Clifton <nickc@redhat.com>
2691
2692 * archive.cc: Fix shadowed variable warnings.
2693 * arm.cc: Likewise.
2694 * compressed_output.cc: Likewise.
2695 * compressed_output.h: Likewise.
2696 * configure: Likewise.
2697 * dwarf_reader.cc: Likewise.
2698 * dynobj.cc: Likewise.
2699 * dynobj.h: Likewise.
2700 * ehframe.cc: Likewise.
2701 * ehframe.h: Likewise.
2702 * errors.cc: Likewise.
2703 * expression.cc: Likewise.
2704 * fileread.cc: Likewise.
2705 * fileread.h: Likewise.
2706 * freebsd.h: Likewise.
2707 * i386.cc: Likewise.
2708 * icf.cc: Likewise.
2709 * incremental.h: Likewise.
2710 * layout.cc: Likewise.
2711 * layout.h: Likewise.
2712 * mapfile.cc: Likewise.
2713 * merge.cc: Likewise.
2714 * merge.h: Likewise.
2715 * object.cc: Likewise.
2716 * object.h: Likewise.
2717 * options.h: Likewise.
2718 * output.cc: Likewise.
2719 * output.h: Likewise.
2720 * parameters.cc: Likewise.
2721 * plugin.cc: Likewise.
2722 * powerpc.cc: Likewise.
2723 * reduced_debug_output.cc: Likewise.
2724 * reduced_debug_output.h: Likewise.
2725 * reloc.cc: Likewise.
2726 * reloc.h: Likewise.
2727 * resolve.cc: Likewise.
2728 * script-sections.cc: Likewise.
2729 * script.cc: Likewise.
2730 * script.h: Likewise.
2731 * sparc.cc: Likewise.
2732 * symtab.cc: Likewise.
2733 * symtab.h: Likewise.
2734 * target-select.cc: Likewise.
2735 * target-select.h: Likewise.
2736 * token.h: Likewise.
2737 * workqueue.cc: Likewise.
2738 * workqueue.h: Likewise.
2739 * x86_64.cc: Likewise.
2740
a0351a69
DK
27412009-12-10 Doug Kwan <dougkwan@google.com>
2742
2743 * arm.cc (attributes.h): New include.
2744 (Arm_relobj::Arm_relobj): Initialize attributes_section_data_.
2745 (Arm_relobj::~Arm_relobj): Delete object pointed by
2746 attributes_section_data_.
2747 (Arm_relobj::attributes_section_data): New method definition.
2748 (Arm_relobj::attributes_section_data_): New data member declaration.
2749 (Arm_dynobj::Arm_dynobj): Initialize attributes_section_data_.
2750 (Arm_dynobj::~Arm_dynobj): Delete object pointed by
2751 attributes_section_data_.
2752 (Arm_dynobj::attributes_section_data): New method definition.
2753 (Arm_dynobj::attributes_section_data_): New data member declaration.
2754 (Target_arm::Target_arm): Initialize attributes_section_data_. Change
2755 initialization value of may_use_blx_ to false.
2756 (Target_arm::using_thumb2, Target_arm::using_thumb_only,
2757 Target_arm::may_use_arm_nop, Target_arm::may_use_thumb2_nop): Use
2758 object attributes to compute results instead of hard-coding.
2759 (Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order,
2760 Target_arm::get_secondary_compatible_arch,
2761 Target_arm::set_secondary_compatible_arch
2762 Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name,
2763 Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes):
2764 New method declarations.
2765 (Target_arm::get_aeabi_object_attribute): New method definition.
2766 (Target_arm::attributes_section_data_): New data member declaration.
2767 (read_arm_attributes_section): New template definition.
2768 (Arm_relobj::do_read_symbols): Read attributes section if it exists.
2769 (Arm_dynobj::do_read_symbols): Ditto.
2770 (Target_arm::do_finalize_sections): Merge attributes sections from
2771 input. Check for BLX use after attributes section merging.
2772 Fix __exidx_start and __exidx_end visibility. Create an
2773 .ARM.attributes section if necessary.
2774 (Target_arm::get_secondary_compatible_arch,
2775 Target_arm::set_secondary_compatible_arch,
2776 Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name,
2777 Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes,
e1df38aa 2778 Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order):
a0351a69
DK
2779 New method definitions.
2780
b59befec
ILT
27812009-12-09 Ian Lance Taylor <iant@google.com>
2782
2783 * plugin.cc (Plugin::load): Don't cast from void* to a function
2784 pointer.
2785
1276bc89
ILT
27862009-12-09 Ian Lance Taylor <iant@google.com>
2787
2788 * dynobj.cc (Sized_dynobj::do_read_symbols): Clear version
2789 information fields.
2790
2f2de248
L
27912009-12-09 H.J. Lu <hongjiu.lu@intel.com>
2792
2793 * testsuite/Makefile.am (two_file_shared_1_pic_2_test_DEPENDENCIES):
2794 Replace two_file_shared_1.so with two_file_shared_2.so.
2795 * testsuite/Makefile.in: Regenerated.
2796
4f787271
DK
27972009-12-08 Doug Kwan <dougkwan@google.com>
2798
2799 * Makefile.am (CCFILES): Add attributes.cc and int_encoding.cc.
2800 (HFILES): Add attributes.h and int_encoding.h.
2801 * Makefile.in: Regenerate.
2802 * dwarf_reader.cc (read_unsigned_LEB_128, read_signed_LEB_128): Move
2803 function definitions to int_encoding.cc
2804 * dwarf_reader.h (read_unsigned_LEB_128, read_signed_LEB_128): Move
2805 prototypes to int_encoding.h
2806 * reduced_debug_output.cc (int_encoding.h): New include.
2807 (write_unsigned_LEB_128, get_length_as_unsigned_LEB_128): Move
2808 function definitions to int_encoding.cc
2809 (insert_into_vector, read_from_pointer): Move template definitions to
2810 int_encoding.h
2811 * attributes.cc: New file.
2812 * attributes.h: New file.
2813 * int_encoding.cc: New file.
2814 * int_encoding.h: New file.
2815
20b52f1a
RÁE
28162009-12-07 Rafael Avila de Espindola <espindola@google.com>
2817
2818 PR gold/11055
2819 * incremental-dump.cc (dump_incremental_inputs): New.
2820 (main): Use dump_incremental_inputs.
2821
53d7974c
L
28222009-12-07 H.J. Lu <hongjiu.lu@intel.com>
2823
2824 PR gold/10893
2825 * i386.cc (Target_i386::Scan::globa): Use is_func instead of
2826 checking elfcpp::STT_FUNC.
2827 (Target_i386::Relocate::relocate): Likewise.
2828 * x86_64.cc (Target_x86_64::Scan::global): Likewise.
2829
2830 * symtab.cc (Symbol_table::sized_write_symbol): Turn IFUNC
2831 symbols from shared libraries into normal FUNC symbols.
2832
2833 * symtab.h (Symbol): Add is_func and use it.
2834
05a352e6
DK
28352009-12-05 Doug Kwan <dougkwan@google.com>
2836
2837 * arm.cc (Target_arm::arm_info): Initialize new fields
2838 attributes_section and attributes_vendor.
2839 * i386.cc (Target_i386::i386_info): Same.
2840 * object.cc (Sized_relobj::do_layout): Skip attribute section.
2841 * gold/powerpc.cc (Target_powerpc::powerpc_info): Initialize new
2842 fields attributes_section and attributes_vendor.
53d7974c 2843 * sparc.cc (Target_sparc::sparc_info): Same.
05a352e6
DK
2844 * target.h (Target::attributes_section, Target::attributes_vendor,
2845 Target::is_attributes_section, Target::attribute_arg_type,
2846 Target::attributes_order): New method definitions.
2847 (Target::Target_info::attributes_section,
2848 Target::Target_info::attributes_vendor): New fields.
2849 (Target::do_attribute_arg_type, Target::do_attributes_order): New
2850 virtual method definitions.
2851 * x86_64.cc (Target_x86_64::x86_64_info): Initialize new fields
2852 attributes_section and attributes_vendor.
2853 * testsuite/testfile.cc (Target_test::test_target_info): Same.
2854
f4e5969c
DK
28552009-12-05 Doug Kwan <dougkwan@google.com>
2856
2857 * arm.cc: Update comments about interworking and stub generation.
2858 (Target_arm::Relocate::reloc_is_non_pic): Update list of relocations
2859 considered as non-PIC.
2860 (Arm_relocate_functions::base_abs): Fix formatting.
2861 (Arm_relocate_functions::got_prel): Fix comment. Change interface
2862 of function to use GOT entry address instead of offset.
2863 (Target_arm::Scan::global): Issue an error if a symbol would need a
2864 PLT does not get one because it is untyped. Remove code to create
2865 dynamic symbols for relative branches.
2866 (Target_arm::Relocate::relocate: Use 0 instead of false since function
2867 takes unsigned integer instead of boolean.
2868
1abce4a6
L
28692009-12-05 H.J. Lu <hongjiu.lu@intel.com>
2870
2871 * testsuite/Makefile.am (constructor_test_LDADD): New. Empty.
2872 (two_file_test_LDADD): Likewise.
2873 (common_test_1_LDADD): Likewise.
2874 (exception_test_LDADD) Likewise.
2875 (weak_test_LDADD): Likewise.
2876 (many_sections_test_LDADD): Likewise.
2877 (initpri1_LDADD): Likewise.
2878 (script_test_1_LDADD): Likewise.
2879 (script_test_2_LDADD): Likewise.
2880 (justsyms_LDADD): Likewise.
2881 (binary_test_LDADD): Likewise.
2882 (large_LDADD): Likewise.
2883 * testsuite/Makefile.in: Regenerated.
2884
adcf2816 28852009-12-04 H.J. Lu <hongjiu.lu@intel.com>
1abce4a6 2886
adcf2816
L
2887 * resolve.cc (symbol_to_bits): Treat STB_GNU_UNIQUE as STB_GLOBAL.
2888 (Symbol_table::override_with_special): Likewise.
2889 (Symbol_table::add_from_object): Likewise.
2890
28e67f5d
RÁE
28912009-12-04 Rafael Avila de Espindola <espindola@google.com>
2892
2893 * incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
2894 Don't set the data_offset twice.
2895
ae10a101
RÁE
28962009-12-04 Rafael Avila de Espindola <espindola@google.com>
2897
2898 * testsuite/Makefile.in: Regenerate.
2899
f59f41f3
DK
29002009-12-03 Doug Kwan <dougkwan@google.com>
2901
2902 * arm.cc: Remove comment about missing .ARM.exidx section symbols.
2903 (Target_arm::do_finalize_sections): Add parameter for symbol table
2904 pointer. Add __exidx_start and __exidx_end symbols as appropriate.
2905 * i386.cc (Target_i386::do_finalize_sections): Add an additional
2906 parameter for symbol table pointer.
2907 * layout.cc (Layout::finalize): Call Target::finalize_sections with
2908 an additional parameter for a pointer to symbol table.
2909 * powerpc.cc (Target_powerpc::do_finalize_sections): Add an additional
2910 parameter for a symbol table pointer.
2911 * sparc.cc (Target_sparc::do_finalize_sections): Ditto.
2912 * target.h (Target::finalize_sections, Target::do_finalize_sections):
2913 Ditto.
2914 * x86_64.cc (Target_x86_64::do_finalize_sections): Add an additional
2915 parameter for a symbol table pointer.
2916
ca55d848
RÁE
29172009-12-03 Rafael Avila de Espindola <espindola@google.com>
2918
2919 * incremental.cc (Incremental_inputs_header)
2920 (Incremental_inputs_header_write, Incremental_inputs_entry)
2921 (Incremental_inputs_entry_write): Move ...
2922 * incremental.h (Incremental_inputs_header)
2923 (Incremental_inputs_header_write, Incremental_inputs_entry)
2924 (Incremental_inputs_entry_write): here.
2925
3aec4f9c
RÁE
29262009-12-02 Rafael Avila de Espindola <espindola@google.com>
2927
2928 * incremental.cc (make_sized_incremental_binary): Set the target.
2929 Error if it is incompatible.
2930 * output.h (Output_file): Add filename method.
2931
9c0ae74d
RÁE
29322009-12-02 Rafael Avila de Espindola <espindola@google.com>
2933
2934 * incremental.cc (Incremental_inputs_entry): Remove unused argument
2935 from the get_* methods.
2936
a45500ae
RÁE
29372009-12-02 Rafael Avila de Espindola <espindola@google.com>
2938
2939 * incremental-dump.cc (main): Check that the offeset of a script is 0.
2940 * incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
2941 Write 0 for the data_offset of scripts.
2942
325e6408
RÁE
29432009-12-02 Rafael Avila de Espindola <espindola@google.com>
2944
2945 * testsuite/Makefile.am: Add the incremental_test.sh test.
2946 * testsuite/incremental_test.sh: New.
2947 * testsuite/incremental_test_1.c: New.
2948 * testsuite/incremental_test_2.c: New.
2949
954c3e2e
RÁE
29502009-12-01 Rafael Avila de Espindola <espindola@google.com>
2951
2952 * incremental-dump.cc (main): Fix typos.
2953
f8086623
RÁE
29542009-11-27 Rafael Avila de Espindola <espindola@google.com>
2955
2956 PR gold/11025
2957 * incremental-dump.cc (main): Use llu to print 64 bit values.
2958
3b0dd6ac
L
29592009-11-26 Per Øyvind Karlsen <peroyvind@mandriva.org>
2960 H.J. Lu <hongjiu.lu@intel.com>
2961
2962 * Makefile.am (incremental_dump_DEPENDENCIES): Add $(THREADSLIB)
2963 $(LIBDL).
2964 (incremental_dump_LDADD): Likewise.
2965 * Makefile.in: Regenerated.
2966
a6d1ef57 29672009-11-25 Doug Kwan <dougkwan@google.com>
e1df38aa 2968
a6d1ef57
DK
2969 Revert:
2970
2971 2009-11-25 Doug Kwan <dougkwan@google.com>
2972
2973 * arm.cc (Target_arm::Target_arm): Move method definition
2974 outside of class definition. Add code to handle
2975 --target1-rel, --target1-abs and --target2= options.
2976 (Target_arm::get_reloc_reloc_type): Change method to be
2977 non-static and const.
2978 (Target_arm::target1_is_rel_, Target_arm::target2_reloc_):
2979 New data member declaration.
2980 (Target_arm::Scan::local, Target_arm::Scan::global,
2981 Target_arm::Relocate::relocate,
2982 Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
2983 Adjust call to Target_arm::get_real_reloc_type.
2984 (Target_arm::get_real_reloc_type): Use command line options
2985 to determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
2986 * options.h (--target1-rel, --target1-abs, --target2): New
2987 ARM-only options.
2988
50aeb7d4
DK
29892009-11-25 Doug Kwan <dougkwan@google.com>
2990
2991 * arm.cc (Target_arm::Target_arm): Move method definition outside of
2992 class definition. Add code to handle --target1-rel, --target1-abs
2993 and --target2= options.
2994 (Target_arm::get_reloc_reloc_type): Change method to be non-static
2995 and const.
2996 (Target_arm::target1_is_rel_, Target_arm::target2_reloc_): New data
2997 member declaration.
2998 (Target_arm::Scan::local, Target_arm::Scan::global,
2999 Target_arm::Relocate::relocate,
3000 Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Adjust
3001 call to Target_arm::get_real_reloc_type.
3002 (Target_arm::get_real_reloc_type): Use command line options to
3003 determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
3004 * options.h (--target1-rel, --target1-abs, --target2): New ARM-only
3005 options.
3006
51938283
DK
30072009-11-25 Doug Kwan <dougkwan@google.com>
3008
3009 * arm.cc (Target_arm::may_use_thumb2_nop): New method definition.
3010 (Arm_relocate_functions::thumb_branch_common): New metod declaration.
3011 (Arm_relocate_functions::abs12, Arm_relocate_functions::abs16): Fix
3012 formatting.
3013 (Arm_relocate_functions::thm_call): Replace body with a call to
3014 Arm_relocate_functions::thumb_branch_common.
3015 (Arm_relocate_functions::thm_jump24,
3016 Arm_relocate_functions::thm_xpc22): New method definitions.
3017 (Arm_relocate_functions::thumb_branch_common): New method definition.
3018 (Reloc_stub::stbu_type_for_reloc): Fix incorrect uses of bit-wise-or
3019 operator.
3020 (Target_arm::Relocate::relocate): Adjust call to thm_call.
3021 Add code to handle R_ARM_THM_XPC22 and R_ARM_THM_JUMP24.
3022
e2b8f3c4
RÁE
30232009-11-24 Rafael Avila de Espindola <espindola@google.com>
3024
3025 * Makefile.am: Build incremental-dump
3026 * Makefile.in: Regenerate.
3027 * incremental-dump.cc: New.
3028 * incremental.cc (Incremental_inputs_header_data,
3029 Incremental_inputs_entry_data): Move to incremental.h
3030 * incremental.h: (Incremental_inputs_header_data,
3031 Incremental_inputs_entry_data): Move from incremental.cc
3032
bcba9aec
RÁE
30332009-11-24 Rafael Avila de Espindola <espindola@google.com>
3034
3035 * incremental.cc (Incremental_inputs_header,
3036 Incremental_inputs_header_write, Incremental_inputs_entry,
3037 Incremental_inputs_entry_write): Add a typedef with the data type.
3038
7c3afe08
RÁE
30392009-11-24 Rafael Avila de Espindola <espindola@google.com>
3040
3041 * incremental.cc (Incremental_inputs_header,
3042 Incremental_inputs_header_write, Incremental_inputs_entry,
3043 Incremental_inputs_entry_write): Update comment about which
3044 type has the filed descriptions.
3045
d204b6e9
DK
30462009-11-15 Doug Kwan <dougkwan@google.com>
3047
3048 * arm.cc (Target_arm::may_use_arm_nop): New method definition.
3049 (Arm_relocate_functions::arm_branch_common): Change method defintion
3050 in class definition to a method declaration and update list of formal
3051 parameters.
3052 (Arm_relocate_functions::plt32, Arm_relocate_functions::call,
3053 Arm_relocation_functions::jump24): Adjust call to
3054 Arm_relocate_functions::arm_branch_common. Update list of formal
3055 parameters.
3056 (Arm_relocate_functions::xpc25): New method definition.
3057 (Arm_relocate_functions::arm_branch_common): Move method defintion
3058 out from class definition. Use stubs for mode-switching and extending
3059 branch ranges.
3060 (Target_arm::Relocate::relocate): Handle weakly-undefined symbols
3061 specially. Change code to enable use of stubs in ARM branches.
3062
43d12afe
DK
30632009-11-10 Doug Kwan <dougkwan@google.com>
3064
3065 * arm.cc (Arm_relobj::do_relocate_sections): Remove options parameter
3066 in method declaration.
3067 (Target_arm::relocate_stub): New method declaration.
3068 (Target_arm::default_target): Change to return a pointer instead of
3069 a const reference.
3070 (Reloc_stub::stub_type_for_reloc): Adjust for the change in
3071 Target_arm::default_target.
3072 (Arm_Relobj::do_relocate_sections): Remove options paramater in
3073 method definition.
3074 (Target_arm::relocate_section): Adjust view.
3075 (Target_arm::relocate_stub): New method definition.
3076
ac33a407
DK
30772009-11-10 Doug Kwan <dougkwan@google.com>
3078
3079 * i386.cc (Target_i386::do_calls_non_split): Add a cast to avoid
3080 a format warning.
3081 * incremental.cc (open_incremental_binary): Initialized local
3082 variables to avoid warnings.
3083 * object.cc (make_elf_object): Ditto.
3084 * x86_64.cc (Target_x86_64::do_calls_non_split): Add a cast to avoid
3085 a format warning.
e1df38aa 3086
88ee28e9
L
3087009-11-09 H.J. Lu <hongjiu.lu@intel.com>
3088
3089 PR gold/10930
3090 * testsuite/plugin_test.c: Include "config.h".
3091
2daedcd6
DK
30922009-11-09 Doug Kwan <dougkwan@google.com>
3093
3094 * arm.cc (Target_arm::fake_relnum_for_stubs): New constant.
3095 (arm_symbol_value): Remove.
3096 (Arm_relocate_functions::arm_branch_common,
3097 Arm_relocate_functions::abs8, Arm_relocate_functions::thm_abs5,
3098 Arm_relocate_functions::abs12, Arm_relocate_functions::abs16,
3099 Arm_relocate_functions::abs32, Arm_relocate_functions::rel32,
3100 Arm_relocate_functions::thm_call, Arm_relocate_functions::plt32,
3101 Arm_relocate_functions::call, Arm_relocate_functions::jump24,
3102 Arm_relocate_functions::prel31, Arm_relocate_functions::mov_abs_nc,
3103 Arm_relocate_functions::movt_abs, Arm_relocate_functions::movw_abs_nc,
3104 Arm_relocate_functions::thm_mobw_abs_nc,
3105 Arm_relocate_functions::thm_mov_abs,
3106 Arm_relocate_functions::movw_prel_nc,
3107 Arm_relocate_functions::thm_movt_abs,
3108 Arm_relocate_functions::movt_prel,
3109 Arm_relocate_functions::thm_movw_prel_nc,
3110 Arm_relocate_functions::thm_movt_prel): Adjust callers of the above.
3111 (Target_arm::Relocate::relocate): Only decompose address into two
3112 parts if relocation type uses the thumb-bit and pass the actual
3113 bit instead of a flag indicating that the thumb-bit is used. Adjust
3114 calls to methods in Arm_relocate_functions for this change.
3115
1276bc89 31162009-11-08 Ian Lance Taylor <iant@google.com>
3e4afc80
ILT
3117
3118 PR 10925
3119 * reloc.cc: Instantiate
3120 Sized_relobj::initialize_input_to_output_maps and
3121 Sized_relobj:free_input_to_output_maps.
3122
e53ad1b5
ILT
31232009-11-06 Ian Lance Taylor <iant@google.com>
3124
3125 PR 10876
3126 * defstd.cc (in_segment): Set only_if_ref true for "end".
3127
eb44217c
DK
31282009-11-06 Doug Kwan <dougkwan@google.com>
3129
3130 * arm.cc (class Reloc_stub): Correct a comment.
3131 (Target_arm::Target_arm): Initialize arm_input_section_map_.
3132 (Target_arm::scan_section_for_stubs): New method declaration.
3133 (Target_arm::do_make_elf_object, Target_arm::do_make_output_section):
3134 Change methods from private to protected.
3135 (Target_arm::do_may_relax): New method definition.
3136 (Target_arm::do_relax, Target_arm::group_sections,
3137 Target_arm::scan_reloc_for_stub,
3138 Target_arm::scan_reloc_section_for_stubs): New method declarations.
3139 (Target_arm::arm_input_section_map_): New data member declaration.
3140 (Target_arm::scan_reloc_for_stub,
3141 Target_arm::scan_reloc_section_for_stubs,
3142 Target_arm::scan_section_for_stubs, Target_arm::group_sections,
3143 Target_arm::do_relax): New method definitions.
3144
5d329b7d
ILT
31452009-11-06 Mikolaj Zalewski <mikolaj@google.com>
3146
3147 * configure.ac: Check for (struct stat)::st_mtim
3148 * fileread.cc (File_read::get_mtime): Use st_mtim if available.
3149 * config.in: Regenerate.
3150 * configure: Regenerate.
3151
96a0d71b
ILT
31522009-11-05 Ian Lance Taylor <iant@google.com>
3153
3154 PR 10910
3155 * output.cc (Output_segment::add_output_section): Add missing
3156 return statement.
3157
594c8e5e
ILT
31582009-11-04 Ian Lance Taylor <iant@google.com>
3159
3160 PR 10880
3161 * object.h (class Object): Add is_needed and set_is_needed
3162 methods. Add is_needed_ field. Make bool fields into bitfields.
3163 * symtab.cc (Symbol_table::set_dynsym_indexes): If a symbol is
3164 defined in a dynamic object and referenced by a regular object,
3165 set is_needed for the dynamic object.
3166 * layout.cc (Layout::finish_dynamic_section): Don't add DT_NEEDED
3167 if the file is marked with as_needed and it is not needed.
3168
22b127cc
ILT
31692009-11-04 Ian Lance Taylor <iant@google.com>
3170
3171 PR 10887
3172 * arm.cc (Target_arm::do_finalize_sections): Don't add dynamic
3173 tags if data is discarded by linker script.
3174 * i386.cc (Target_i386::do_finalize_sections): Likewise.
3175 * powerpc.cc (Target_powerpc::do_finalize_sections): Likewise.
3176 * sparc.cc (Target_sparc::do_finalize_sections): Likewise.
3177 * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
3178
f5c870d2
ILT
31792009-11-04 Ian Lance Taylor <iant@google.com>
3180
3181 * layout.cc (Layout::get_output_section): Add is_interp and
3182 is_dynamic_linker_section parameters. Change all callers.
3183 (Layout::choose_output_section): Likewise.
3184 (Layout::make_output_section): Likewise.
3185 (Layout::add_output_section_data): Add is_dynamic_linker_section
3186 parameter. Change all callers.
3187 * layout.h (class Layout): Update declarations.
3188 * output.h (class Output_section): Add is_interp, set_is_interp,
3189 is_dynamic_linker_section, set_is_dynamic_linker_section methods.
3190 Add is_interp_, is_dynamic_linker_section_ fields. Change
3191 generate_code_fills_at_write_ to a bitfield.
3192 * output.cc (Output_section::Output_sections): Initialize new
3193 fields.
3194 (Output_segment::add_output_section): Add do_sort parameter.
3195 Change all callers.
3196
1ae4d23b
ILT
31972009-11-03 Ian Lance Taylor <iant@google.com>
3198
3199 PR 10860
3200 * options.h (class General_options): Add --warn-common.
3201 * resolve.cc (Symbol_table::resolve): Handle --warn-common when
3202 merging two common symbols.
3203 (Symbol_table::should_override): Handle --warn-common when merging
3204 a common symbol with a defined symbol. Use report_resolve_problem
3205 for multiple definitions.
3206 (Symbol_table::report_resolve_problem): New function.
3207 * symtab.h (class Symbol_table): Declare report_resolve_problem.
3208
55da9579
DK
32092009-11-03 Doug Kwan <dougkwan@google.com>
3210
3211 * arm.cc (Target_arm::Target_arm): Initialize stub_tables_ and
3212 stub_factory_.
3213 (Target_arm::stub_factory): New method definition.
3214 (Target_arm::new_arm_input_section,
3215 Target_arm::find_arm_input_section, Target_arm::new_stub_table,
3216 Target_arm::reloc_uses_thumb_bit): New method declarations.
e1df38aa 3217 (Target_arm::Stub_table_list, Target_arm::Arm_input_section_map):
55da9579
DK
3218 New type definitions.
3219 (Target_arm::stub_tables_, Target_arm::stub_factory_): New data
3220 member declarations.
3221 (Target_arm::reloc_uses_thumb_bit, Target_arm::new_arm_input_section,
3222 Target_arm::find_arm_input_section, Target_arm::new_stub_table):
3223 New method definitions.
3224
37a9ac43
ILT
32252009-11-03 Ian Lance Taylor <iant@google.com>
3226
3227 * options.h (class General_options): Add --warn_constructors.
3228
b3d6a3d4
ILT
32292009-11-03 Ian Lance Taylor <iant@google.com>
3230
3231 PR 10893
3232 * defstd.cc (in_section): Add entries for __rel_iplt_start,
3233 __rel_iplt_end, __rela_iplt_start, __rela_iplt_end, and __stack.
3234
934b01dd
ILT
32352009-11-03 Ian Lance Taylor <iant@google.com>
3236
3237 PR 10895
3238 * po/Make-in ($(srcdir)/$(PACKAGE).pot): Pass -C and
3239 --msgid-bugs-address.
3240 (install-pdf): New target.
3241 (install-data_yes): Look up one directory to find mkinstalldirs.
3242
03c1939b
L
32432009-11-03 H.J. Lu <hongjiu.lu@intel.com>
3244
3245 * po/Make-in (.po.gmo): Don't generate .gmo files in source
3246 tree.
3247
ebd95253
DK
32482009-10-30 Doug Kwan <dougkwan@google.com>
3249
3250 * arm.cc (Stub_addend_reader): Fix bug in previouls check-in.
3251
e9bbb538
DK
32522009-10-30 Doug Kwan <dougkwan@google.com>
3253
3254 * arm.cc (Stub_addend_reader): New struct template definition
3255 and partial specializations.
3256 (Stub_addend_reader::operator()): New method definition for a
3257 partially specialized template.
3258
d5b40221
DK
32592009-10-30 Doug Kwan <dougkwan@google.com>
3260
3261 * arm.cc (Arm_relobj::processor_specific_flags): New method
3262 definition.
3263 (Arm_relobj::do_read_symbols): New method declaration.
3264 (Arm_relobj::processor_specific_flags_): New data member declaration.
3265 (Arm_dynobj): New class definition.
3266 (Target_arm::do_finalize_sections): Add input_objects parameter.
3267 (Target_arm::do_adjust_elf_header): New method declaration.
3268 (Target_arm::are_eabi_versions_compatible,
3269 (Target_arm::merge_processor_specific_flags): New method declaration.
3270 (Target_arm::do_make_elf_object): New overloaded method definitions
3271 and declaration.
3272 (Arm_relobj::do_read_symbols): New method definition.
3273 (Arm_dynobj::do_read_symbols): Ditto.
3274 (Target_arm::do_finalize_sections): Add input_objects parameters.
3275 Merge processor-specific flags from all input objects.
3276 (Target_arm::are_eabi_versions_compatible,
3277 Target_arm::merge_processor_specific_flags,
3278 Target_arm::do_adjust_elf_header, Target_arm::do_make_elf_object):
3279 New method definitions.
3280 * i386.cc (Target_i386::do_finalize_sections): Add unnamed
3281 Input_objects pointer type parameter.
3282 * layout.cc (Layout::finalize): Pass input objects to target's.
3283 finalize_sections function.
3284 * output.cc (Output_file_header::do_sized_write): Set ELF file
3285 header's processor-specific flags.
3286 * powerpc.cc (Target_powerpc::do_finalize_sections): Add unnamed
3287 Input_objects pointer type parameter.
3288 * sparc.cc (Target_sparc::do_finalize_sections): Same.
3289 * target.h (Input_objects): New forward class declaration.
3290 (Target::processor_specific_flags,
3291 Target::are_processor_specific_flags_sect): New method definitions.
3292 (Target::finalize_sections): Add input_objects parameter.
3293 (Target::Target): Initialize processor_specific_flags_ and
3294 are_processor_specific_flags_set_.
3295 (Target::do_finalize_sections): Add unnamed Input_objects pointer type
3296 parameter.
3297 (Target::set_processor_specific_flags): New method definition.
3298 (Target::processor_specific_flags_,
3299 Target::are_processor_specific_flags_set_): New data member
3300 declarations.
3301 * x86_64.cc (Target_x86_64::do_finalize_sections): Add unnamed
3302 Input_objects pointer type parameter.
3303
ebabffbd
DK
33042009-10-30 Doug Kwan <dougkwan@google.com>
3305
3306 * arm.cc: Use Arm_address instead of elfcpp::Elf_types<32>::Elf_Addr.
3307
ad0f2072
ILT
33082009-10-28 Ian Lance Taylor <iant@google.com>
3309
3310 * object.h (class Relobj): Drop options parameter from
3311 gc_process_relocs, scan_relocs, relocate, do_gc_process_relocs,
3312 do_scan_relocs, do_relocate. Change all callers.
3313 (class Sized_relobj): Drop options parameters from
3314 do_gc_process_relocs, do_scan_relocs, do_relocate,
3315 do_relocate_sections, relocate_sections, emit_relocs_scan,
3316 emit_relocs_scan_reltype. Change all callers.
3317 (struct Relocate_info): Remove options field and all references to
3318 it.
3319 * reloc.h (class Read_relocs): Remove options constructor
3320 parameter and options_ field. Change all callers.
3321 (class Gc_process_relocs, class Scan_relocs): Likewise.
3322 (class Relocate_task): Likewise.
3323 * target-reloc.h (scan_relocs): Remove options parameter. Change
3324 all callers.
3325 (scan_relocatable_relocs): Likewise.
3326 * target.h (class Sized_target): Remove options parameter from
3327 gc_process_relocs, scan_relocs, scan_relocatable_relocs. Change
3328 all callers.
3329 * gc.h (gc_process_relocs): Remove options parameter. Change all
3330 callers.
3331 * arm.cc: Update functions to remove options parameters.
3332 * i386.cc: Likewise.
3333 * powerpc.cc: Likewise.
3334 * sparc.cc: Likewise.
3335 * x86_64.cc: Likewise.
3336 * testsuite/testfile.cc: Likewise.
3337
8ffa3667
DK
33382009-10-28 Doug Kwan <dougkwan@google.com>
3339
3340 * arm.cc (Arm_relobj): New class definition.
e1df38aa 3341 (Arm_relobj::scan_sections_for_stubs,
8ffa3667
DK
3342 Arm_relobj::do_count_local_symbols, Arm_relobj::do_relocate_sections):
3343 New method definitions.
3344
40f36857
CC
33452009-10-28 Cary Coutant <ccoutant@google.com>
3346
3347 * plugin.h (Plugin::Plugin): Initialize cleanup_done_.
3348 (Plugin::cleanup_done_): New member.
3349 (Plugin_manager::Plugin_manager): Remove cleanup_done_.
3350 (Plugin_manager::cleanup_done_): Remove.
3351 (Plugin_manager::add_input_file): Edit error message.
3352 * plugin.cc (Plugin::cleanup): Test and set cleanup_done_.
3353 (Plugin_manager::cleanup): Remove use of cleanup_done_.
3354
2c849493
ILT
33552009-10-27 Mikolaj Zalewski <mikolajz@google.com>
3356
3357 * fileread.cc: (File_read::View::~View): Use the new
3358 data_ownership_ filed.
3359 (File_read::~File_read): Dispose the new whole_file_view_.
3360 (File_read::open): Mmap the whole file if needed.
3361 (File_read::open): Use whole_file_view_ instead of contents_.
3362 (File_read::find_view): Use whole_file_view_ if applicable.
3363 (File_read::do_read): Use whole_file_view_ instead of contents_.
3364 (File_read::make_view): Use whole_file_view_ instead of contents_,
3365 update File_read::View::View call.
3366 (File_read::find_or_make_view): Update File_read::View::View
3367 call.
3368 * fileread.h: (File_read::File_read): Initialize whole_file_view_,
3369 remove contents_
3370 (File_read::View::Data_ownership): New enum.
3371 (File_read::View::View): Replace bool mapped_ with Data_ownership
3372 argument.
3373 (File_read::View::mapped_): Remove (replaced by data_ownership_).
3374 (File_read::View::data_ownership_): New field.
3375 (File_read::contents_): Remove (replaced by whole_file_view_).
3376 (File_read::whole_file_view_): New field.
3377 * options.h (class General_options): Add --keep-files-mapped.
3378
24998053
CC
33792009-10-27 Cary Coutant <ccoutant@google.com>
3380
3381 * symtab.cc (add_from_pluginobj): Pass correct value for is_ordinary.
3382 * testsuite/Makefile.am (plugin_test_5): New test case.
3383 * testsuite/Makefile.in: Regenerate.
3384
72adc4fa
DK
33852009-10-25 Doug Kwan <dougkwan@google.com>
3386
3387 * object.h (Sized_relobj::View_size, Sized_relobj::Views): Change
3388 from private to protected to allow access by child class.
3389 (Sized_relobj::do_relocate_sections): New method declaration.
3390 (Sized_relobj::relocate_sections): Virtualize.
e1df38aa 3391 * reloc.cc (Sized_relobj::do_relocate_sections): Rename from
72adc4fa
DK
3392 Sized_relobj::relocate_sections. Instantiate template explicitly
3393 for different target sizes and endianity.
3394
07f508a2
DK
33952009-10-24 Doug Kwan <dougkwan@google.com>
3396
3397 * arm.cc (Arm_output_section, Arm_relobj): Forward class declarations.
3398 (Arm_input_section::as_arm_input_section): New method.
3399 (Arm_output_section): New class definition.
3400 (Arm_output_section::create_stub_group,
3401 Arm_output_section::group_sections): New method definitions.
3402
10ad9fe5
DK
34032009-10-22 Doug Kwan <dougkwan@google.com>
3404
3405 * arm.cc (Arm_input_section): New class definition.
3406 (Arm_input_section::init, Arm_input_section:do_write,
3407 Arm_input_section::set_final_data_size,
3408 Arm_input_section::do_reset_address_and_file_offset): New method
3409 definitions.
3410
56ee5e00
DK
34112009-10-21 Doug Kwan <dougkwan@google.com>
3412
3413 * arm.cc (Stub_table, Arm_input_section): New forward class
3414 declarations.
3415 (Stub_table): New class defintion.
3416 (Stub_table::add_reloc_stub, Stub_table::relocate_stubs
3417 Stub_table::do_reset_address_and_file_offset, Stub_table::do_write):
3418 New method definition.
3419
b569affa
DK
34202009-10-21 Doug Kwan <dougkwan@google.com>
3421
3422 * arm.cc: Update copyright comments.
3423 (Target_arm): New forward class template declaration.
3424 (Arm_address): New type.
3425 (ARM_MAX_FWD_BRANCH_OFFSET, ARM_MAX_BWD_BRANCH_OFFSET,
3426 THM_MAX_FWD_BRANCH_OFFSET, THM_MAX_BWD_BRANCH_OFFSET,
3427 THM2_MAX_FWD_BRANCH_OFFSET, THM2_MAX_BWD_BRANCH_OFFSET): New
3428 constants.
3429 (Insn_template): Same.
3430 (DEF_STUBS): New macro.
3431 (Stub_type): New enum type.
3432 (Stub_template): New class definition.
3433 (Stub): Same.
3434 (Reloc_stub): Same.
3435 (Stub_factory): Same.
3436 (Target_arm::Target_arm): Initialize may_use_blx_ and
3437 should_force_pic_veneer_.
3438 (Target_arm::may_use_blx, Target_arm::set_may_use_blx,
3439 Target_arm::should_force_pic_veneer,
3440 Target_arm::set_should_force_pic_veneer, Target_arm::using_thumb2,
3441 Target_arm::using_thumb_only, Target_arm:;default_target): New
3442 method defintions.
3443 (Target_arm::may_use_blx_, Target_arm::should_force_pic_veneer_):
3444 New data member declarations.
3445 (Insn_template::size, Insn_template::alignment): New method defintions.
3446 (Stub_template::Stub_template): New method definition.
3447 (Reloc_stub::Key::name, Reloc_stub::stub_type_for_reloc,
3448 Reloc_stub::do_fixed_endian_write, Reloc_stub::do_write): Same.
3449 (Stub_factory::Stub_factory): New method definition.
3450 * gold.h (string_hash): New template.
3451 * output.h (Input_section_specifier::hash_value): Use
3452 gold::string_hash.
3453 (Input_section_specifier::string_hash): Remove.
3454 * stringpool.cc (Stringpool_template::string_hash): Use
3455 gold::string_hash.
3456
6c172549
DK
34572009-10-20 Doug Kwan <dougkwan@google.com>
3458
3459 * object.cc (Sized_relobj::do_finalize_local_symbols): Handle section
3460 symbols of relaxed input sections.
3461 * output.h (Output_section::find_relaxed_input_section): Make
3462 method public.
3463
c5617f2f
DK
34642009-10-16 Doug Kwan <dougkwan@google.com>
3465
3466 * dynobj.cc (Versions::Versions): Initialize version_script_.
3467 Only insert base version symbol definition for a shared object
3468 if version script defines any version versions.
3469 (Versions::define_base_version): New method definition.
3470 (Versions::add_def): Check that base version is not needed.
3471 (Versions::add_need): Define base version lazily.
3472 * dynobj.h (Versions::define_base_version): New method declaration.
3473 (Versions::needs_base_version_): New data member declaration.
3474 * testsuite/Makefile.am (check_SCRIPTS): Add no_version_test.sh
3475 (check_DATA): Add no_version_test.stdout.
3476 (libno_version_test.so, no_version_test.o no_version_test.stdout):
3477 New make rules.
3478 * testsuite/Makefile.in: Regenerate.
3479 * testsuite/no_version_test.c: New file.
3480 * testsuite/no_version_test.sh: Ditto.
3481
3c12dcdb
DK
34822009-10-16 Doug Kwan <dougkwan@google.com>
3483
3484 * expression.cc (class Segment_start_expression): New class definition.
3485 (Segment_start_expression::value): New method definition.
3486 (script_exp_function_segment_start): Return a new
3487 Segment_start_expression.
3488 * gold/script-c.h (script_saw_segment_start_expression): New function
3489 prototype.
3490 * script-sections.cc (Script_sections::Script_sections): Initialize
3491 SAW_SEGMENT_START_EXPRESSION_ to false.
3492 (Script_sections::set_section_addresses): Use -Ttext, -Tdata
3493 and -Tbbs options to specify section addresses if given in
3494 command line and no SEGMENT_START expression is seen in a script.
3495 * script-sections.h (Script_sections::saw_segment_start_expression,
3496 Script_sections::set_saw_segment_start_expression): New method
3497 definition.
3498 (Script_sections::saw_segment_start_expression_): New data member
3499 declaration.
3500 * script.cc (script_saw_segment_start_expression): New function.
3501 * yyscript.y (SEGMENT_START): Call script_saw_segment_start_expression.
3502 * testsuite/Makefile.am (check_SCRIPTS): Add script_test_6.sh,
3503 script_test_7.sh and script_test_8.sh.
3504 (check_DATA): Add script_test_6.stdout, script_test_7.stdout and
3505 script_test_8.stdout.
3506 (MOSTLYCLEANFILES): Add script_test_6, script_test_7 and script_test_8.
3507 (script_test_6, script_test_6.stdout, script_test_7,
3508 script_test_7.stdout, script_test_8, script_test_8.stdout): New rules.
3509 * Makefile.in: Regenerate.
3510 * testsuite/script_test_6.sh: New file.
3511 * testsuite/script_test_6.t: Same.
3512 * testsuite/script_test_7.sh: Same.
3513 * testsuite/script_test_7.t: Same.
3514 * testsuite/script_test_8.sh: Same.
3515
64b1ae37
DK
35162009-10-16 Doug Kwan <dougkwan@google.com>
3517
3518 * output.cc (Output_segment::set_section_list_address): Cast
3519 expressions to unsigned long long type to avoid format warnings.
3520
661be1e2
ILT
35212009-10-15 Ian Lance Taylor <iant@google.com>
3522
12edd763 3523 * script.cc (Script_options::add_symbol_assignment): Always add a
b3d6a3d4 3524 dot assignment to script_sections_.
12edd763
ILT
3525 * script-sections.cc (Script_sections::add_dot_assignment):
3526 Initialize if necessary.
3527
68b6574b
ILT
3528 * layout.cc (Layout::relaxation_loop_body): Don't crash if we see
3529 program headers with no load segment if there is a linker script.
3530
661be1e2
ILT
3531 * layout.cc (Layout::set_segment_offsets): Align the file offset
3532 to the segment aligment for -N or -n with no load segment.
3533 * output.cc (Output_segment::add_output_section): Don't crash if
3534 the first section is a TLS section.
3535 (Output_segment::set_section_list_addresses): Print an error
3536 message if the address moves backward in a linker script.
3537 * script-sections.cc
3538 (Output_section_element_input::set_section_addresses): Don't
3539 increase *dot_value for a SHF_TLS/SHT_NOBITS section.
3540 (Orphan_output_section::set_section_addresses): Likewise.
3541
f15f61a7
DK
35422009-10-15 Doug Kwan <dougkwan@google.com>
3543
3544 * layout.cc (Layout::finish_dynamic_section): Generate tags
3545 DT_FINI_ARRAY, DT_FINI_ARRAYSZ, DT_INIT_ARRAY, DT_INIT_ARRAYSZ,
3546 DT_PREINIT_ARRAY, DT_PREINIT_ARRAYSZ as needed. If -Bsymbolic is
3547 used, add DT_SYMBOLIC and set DF_SYMBOLIC in DT_FLAGS.
3548
82bb573a
ILT
35492009-10-14 Ian Lance Taylor <iant@google.com>
3550
3551 * object.h (class Relocate_info): Add reloc_shdr and data_shdr
3552 fields.
3553 * object.cc (Sized_relobj::relocate_sections): Set reloc_shdr and
3554 data_shdr fields of relinfo.
3555 * i386.cc (class Target_i386::Relocate): Remove ldo_addrs_ field.
3556 (Target_i386::Relocate::relocate_tls): Don't call fix_up_ldo. For
3557 R_386_TLS_LDO_32, adjust based on section flags.
3558 (Target_i386::Relocate::fix_up_ldo): Remove.
3559
374ad285
ILT
35602009-10-13 Ian Lance Taylor <iant@google.com>
3561
3562 Add support for -pie.
3563 * options.h (class General_options): Add -pie and
3564 --pic-executable.
3565 (General_options::output_is_position_independent): Test -pie.
3566 (General_options::output_is_executable): Return true if not shared
3567 and not relocatable.
3568 (General_options::output_is_pie): Remove.
3569 * options.cc (General_options::finalize): Reject incompatible uses
3570 of -pie.
3571 * gold.cc (queue_middle_tasks): A -pie link is not static.
3572 * symtab.h (Symbol::needs_plt_entry): Return false if -pie.
3573 * symtab.cc (Symbol::final_value_is_known): Return false if
3574 output_is_position_independent.
3575 * layout.cc (Layout::set_segment_offsets): Start at address 0 if
3576 output_is_position_independent.
3577 * output.cc (Output_file_header::do_sized_write): Use ET_DYN if
3578 output_is_position_independent.
3579 * i386.cc (Output_data_plt_i386::do_write): Use the PIC PLT if
3580 output_is_position_independent.
3581 * testsuite/Makefile.am (check_PROGRAMS): Add basic_pie_test and
3582 two_file_pie_test.
3583 (basic_pie_test.o, basic_pie_test): New targets.
3584 (two_file_test_1_pie.o, two_file_test_1b_pie.o): New targets.
3585 (two_file_test_2_pie.o, two_file_test_main_pie.o): New targets.
3586 (two_file_pie_test): New target.
3587 * testsuite/Makefile.in: Rebuild.
3588 * README: Remove note saying that -pie is not supported.
3589
c6585162
ILT
35902009-10-13 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
3591
3592 * options.h (class General_options): Add -init and -fini.
3593 * layout.cc (Layout::finish_dynamic_section): Emit
3594 given init and fini functions.
3595
032ce4e9
ST
35962009-10-13 Sriraman Tallam <tmsriram@google.com>
3597
3598 * gc.h (gc_process_relocs): Check if icf is enabled using new
3599 function.
3600 * gold.cc (queue_initial_tasks): Likewise.
3601 (queue_middle_tasks): Likewise.
3602 * object.cc (do_layout): Likewise.
3603 * symtab.cc (is_section_folded): Likewise.
3604 * main.cc (main): Likewise.
3605 * reloc.cc (Read_relocs::run): Likewise.
3606 (Sized_relobj::do_scan_relocs): Likewise.
3607 * icf.cc (is_function_ctor_or_dtor): New function.
3608 (Icf::find_identical_sections): Check if function is ctor or dtor when
3609 safe icf is chosen.
3610 * options.h (General_options::icf): Change option to be an enum.
3611 (Icf_status): New enum.
3612 (icf_enabled): New method.
3613 (icf_safe_folding): New method.
3614 (set_icf_status): New method.
3615 (icf_status_): New variable.
3616 * (options.cc) (General_options::finalize): Set icf_status_.
3617 * testsuite/Makefile.am: Add commands to build icf_safe_test. Modify
3618 icf_test and icf_keep_unique_test to use the --icf enum flag.
3619 * testsuite/icf_safe_test.sh: New file.
e1df38aa 3620 * testsuite/icf_safe_test.cc: New file.
032ce4e9 3621
f345227a
ST
36222009-10-12 Sriraman Tallam <tmsriram@google.com>
3623
3624 * symtab.h: Check for GOLD_SYMTAB_H before header includes. Remove
3625 includes to gc.h and icf.h.
3626 * arm.cc: Include gc.h.
3627 * gold.cc: Likewise.
3628 * i386.cc: Likewise.
3629 * powerpc.cc: Likewise.
3630 * sparc.cc: Likewise.
3631 * x86_64.cc: Likewise.
3632 * gc.h: Include icf.h.
3633
1c7814ed
ILT
36342009-10-11 Ian Lance Taylor <iant@google.com>
3635
3636 * plugin.cc: Include "gold.h" before other header files.
3637
ae3b5189
CD
36382009-10-10 Chris Demetriou <cgd@google.com>
3639
3640 * options.h (Input_file_argument::Input_file_type): New enum.
3641 (Input_file_argument::is_lib_): Replace with...
3642 (Input_file_argument::type_): New member.
3643 (Input_file_argument::Input_file_argument): Take Input_file_type
3644 'type' rather than boolean 'is_lib' as second argument.
3645 (Input_file_argument::is_lib): Use type_.
3646 (Input_file_argument::is_searched_file): New function.
3647 (Input_file_argument::may_need_search): Handle is_searched_file.
3648 * options.cc (General_options::parse_library): Support -l:filename.
3649 (General_options::parse_just_symbols): Update for Input_file_argument
3650 changes.
3651 (Command_line::process): Likewise.
3652 * archive.cc (Archive::get_file_and_offset): Likewise.
3653 * plugin.cc (Plugin_manager::release_input_file): Likewise.
3654 * script.cc (read_script_file, script_add_file): Likewise.
3655 * fileread.cc (Input_file::Input_file): Likewise.
3656 (Input_file::will_search_for): Handle is_searched_file.
3657 (Input_file::open): Likewise.
3658 * readsyms.cc (Read_symbols::get_name): Likewise.
3659 * testsuite/Makefile.am (searched_file_test): New test.
3660 * testsuite/Makefile.in: Regenerate.
3661 * testsuite/searched_file_test.cc: New file.
3662 * testsuite/searched_file_test_lib.cc: New file.
3663
f3048a1d
ILT
36642009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
3665 Ian Lance Taylor <iant@google.com>
3666
3667 * descriptor.cc: Include <cstdio> and "binary-io.h".
3668 (Descriptors::open): Open the files in binary mode always.
3669 * script.cc (Lex::get_token): Treat \r as whitespace.
3670
d4780e57
ILT
36712009-10-09 Ian Lance Taylor <iant@google.com>
3672
3673 * testsuite/retain_symbols_file_test.sh: Don't test for __tcf_0.
3674
d9a893b8
ILT
36752009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
3676 Ian Lance Taylor <iant@google.com>
3677
3678 * configure.ac: Check for readv function also.
3679 * fileread.cc (readv): Define if not HAVE_READV.
3680 * fileread.h (File_read:: max_readv_entries): Set to 1 if readv
3681 does not exist.
3682 * config.in: Regenerate.
3683 * configure: Regenerate.
3684
c0a62865
DK
36852009-10-09 Doug Kwan <dougkwan@google.com>
3686
3687 * layout.cc (Layout::make_output_section): Call target hook to make
3688 ordinary output section.
3689 (Layout::finalize): Adjust parameter list of call the
3690 Target::may_relax().
3691 * layout.h (class Layout::section_list): New method.
3692 * merge.h (Output_merge_base::entsize): Change visibility to public.
3693 (Output_merge_base::is_string, Output_merge_base::do_is_string):
3694 New methods.
3695 (Output_merge_string::do_is_string): New method.
3696 * object.cc (Sized_relobj::do_setup): renamed from
3697 Sized_relobj::set_up.
3698 * object.h (Sized_relobj::adjust_shndx,
3699 Sized_relobj::initializ_input_to_output_maps,
3700 Sized_relobj::free_input_to_output_maps): Change visibilities to
3701 protected.
3702 (Sized_relobj::setup): Virtualize.
3703 (Sized_relobj::do_setup): New method declaration.
3704 (Sized_relobj::invalidate_section_offset,
3705 Sized_relobj::do_invalidate_section_offset): New method decfinitions.
3706 (Sized_relobj::elf_file, Sized_relobj::local_values): New methods.
3707 * options.cc (parse_int): New function.
3708 * options.h (parse_int): New declaration.
3709 (DEFINE_int): New macro.
3710 (stub_group_size): New option.
3711 * output.cc (Output_section::Output_section): Initialize memebers
3712 merge_section_map_, merge_section_by_properties_map_,
3713 relaxed_input_section_map_, is_relaxed_input_section_map_valid_.
3714 (Output_section::add_input_section): Handled deferred code-fill
3715 generation and remove an old comment.
3716 (Output_section::add_relaxed_input_section): New method definition.
3717 (Output_section::add_merge_input_section): Use merge section by
3718 properties map to speed to search. Update merge section maps
3719 as appropriate.
3720 (Output_section::build_relaxation_map): New method definition.
3721 (Output_section::convert_input_sections_in_list_to_relaxed_sections):
3722 Same.
3723 (Output_section::relax_input_section): Renamed to
3724 Output_section::convert_input_sections_to_relaxed_sections and change
3725 interface to take a vector of pointers to relaxed sections.
3726 (Output_section::find_merge_section,
3727 Output_section::find_relaxed_input_section): New method definitions.
3728 (Output_section::is_input_address_mapped,
3729 Output_section::output_offset, Output_section::output_address):
3730 Use output section data maps to speed up searching.
3731 (Output_section::find_starting_output_address): Add comments.
3732 (Output_section::do_write,
3733 Output_section::write_to_postprocessing_buffer): Do code-fill
3734 generation as appropriate.
3735 (Output_section::get_input_sections): Invalidate relaxed input section
3736 map.
3737 (Output_section::restore_states): Adjust type of checkpoint .
3738 Invalidate relaxed input section map.
3739 * output.h (Output_merge_base): New class declaration.
3740 (Input_section_specifier): New class defintion.
3741 (class Output_relaxed_input_section) Change base class to
3742 Output_section_data_build.
3743 (Output_relaxed_input_section::Output_relaxed_input_section): Adjust
3744 base class initializer.
3745 (Output_section::add_relaxed_input_section): New method declaration.
3746 (Output_section::Input_section): Change visibility to protected.
3747 (Output_section::Input_section::relobj,
3748 Output_section::Input_section::shndx): Handle relaxed input sections.
3749 Output_section::input_sections) Change visibility to protected. Also
3750 define overload to return a non-const pointer.
3751 (Output_section::Merge_section_properties): New class defintion.
3752 (Output_section::Merge_section_by_properties_map,
3753 Output_section::Output_section_data_by_input_section_map,
3754 Output_section::Relaxation_map): New types.
3755 (Output_section::relax_input_section): Rename method to
3756 Output_section::convert_input_sections_to_relaxed_sections and change
3757 interface to take a vector of relaxed section pointers.
3758 (Output_section::find_merge_section,
3759 Output_section::find_relaxed_input_section,
3760 Output_section::build_relaxation_map,
3761 Output_section::convert_input_sections_in_list_to_relaxed_sections):
3762 New method declarations.
3763 (Output_section::merge_section_map_
3764 Output_section::merge_section_by_properties_map_,
3765 Output_section::relaxed_input_section_map_,
3766 Output_section::is_relaxed_input_section_map_valid_,
3767 Output_section::generate_code_fills_at_write_): New data members.
3768 * script-sections.cc
3769 (Output_section_element_input::set_section_addresses): Call
3770 current_data_size and addralign methods of relaxed input sections.
3771 (Orphan_output_section::set_section_addresses): Call current_data_size
3772 and addralign methods of relaxed input sections.
3773 * symtab.cc (Symbol_table::compute_final_value): Extract template
3774 from the body of Symbol_table::sized_finalize_symbol.
3775 (Symbol_table::sized_finalized_symbol): Call
3776 Symbol_table::compute_final_value.
3777 * symtab.h (Symbol_table::Compute_final_value_status): New enum type.
3778 (Symbol_table::compute_final_value): New templated method declaration.
3779 * target.cc (Target::do_make_output_section): New method defintion.
3780 * target.h (Target::make_output_section): New method declaration.
3781 (Target::relax): Add more parameters for input objects, symbol table
3782 and layout. Adjust call to do_relax.
3783 (Target::do_make_output_section): New method declaration.
3784 (Target::do_relax): Add parameters for input objects, symbol table
3785 and layout.
3786
d446d6c4
ILT
37872009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
3788
3789 * pread.c: Include stdio.h.
3790
bc06c745
ILT
37912009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
3792
3793 * plugin.cc: Don't include dlfcn.h when ENABLE_PLUGINS is not
3794 defined.
3795
75aea3d0
ILT
37962009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
3797
3798 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
3799 Change read_shndx type to unsigned int.
3800 (Sized_dwarf_line_info::read_lines): Change shndx type to unsigned
3801 int.
3802 (Sized_dwarf_line_info::read_line_mappings): Likewise.
3803 * dwarf_reader.h (Sized_dwarf_line_info::Sized_dwarf_line_info):
3804 Change read_shndx type to unsigned int.
3805 (Sized_dwarf_line_info::read_lines): Change shndx type to unsigned
3806 int.
3807 (Sized_dwarf_line_info::read_line_mappings): Likewise.
3808 * layout.cc (Layout::create_symtab_sections): Cast the result of
3809 local_symcount * symsize to off_t in the gold_assert.
3810
be8fcb75
ILT
38112009-10-09 Viktor Kutuzov <vkutuzov@accesssoftek.com>
3812
3813 * arm.cc (Target_arm::relocate::reloc_is_non_pic): Return true for
3814 R_ARM_THM_ABS5, R_ARM_ABS8, R_ARM_ABS12, R_ARM_ABS16,
3815 R_ARM_BASE_ABS.
3816 (Arm_relocate_functions::abs8): Remove has_thumb_bit parameter.
3817 (Arm_relocate_functions::thm_abs5): New function.
3818 (Arm_relocate_functions::abs12): New function.
3819 (Arm_relocate_functions::abs16): New function.
3820 (Arm_relocate_functions::base_abs): New function.
3821 (Scan::check_non_pic): Handle R_ARM_ABS32_NOI.
3822 (Scan::local): Remove special handling of R_ARM_ABS8. Handle
3823 R_ARM_ABS32_NOI, R_ARM_THM_ABS5, R_ARM_ABS12, R_ARM_ABS16, and
3824 R_ARM_BASE_ABS.
3825 (Scan::global): Likewise.
3826 (Relocate::relocate): Handle R_ARM_ABS12, R_ARM_ABS16,
3827 R_ARM_ABS32_NOI, R_ARM_THM_ABS5, and R_ARM_BASE_ABS.
3828 (Relocatable_size_for_reloc::get_size_for_reloc): Handle
3829 R_ARM_ABS16, R_ARM_THM_ABS5, R_ARM_ABS32_NOI, R_ARM_ABS12, and
3830 R_ARM_BASE_ABS.
3831
c2a122b6
ILT
38322009-10-09 Viktor Kutuzov <vkutuzov@accesssoftek.com>
3833
3834 * arm.cc (Arm_relocate_functions::movw_prel_nc): New function.
3835 (Arm_relocate_functions::movt_prel): New function.
3836 (Arm_relocate_functions::thm_movw_prel_nc): New function.
3837 (Arm_relocate_functions::thm_movt_prel): New function.
3838 (Scan::local): Handle R_ARM_MOVW_PREL_NC, R_ARM_MOVT_PREL,
3839 R_ARM_THM_MOVW_PREL_NC, and R_ARM_THM_MOVT_PREL.
3840 (Scan::global, Relocate::relocate): Likewise.
3841 (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
3842
c4aa1e2d
ILT
38432009-10-09 Mikolaj Zalewski <mikolajz@google.com>
3844
3845 * gold.cc: (queue_initial_tasks): Pass incremental_inputs to
3846 Incremental_checker.
3847 * incremental.cc: (INCREMENTAL_LINK_VERSION): Change type to
3848 unsigned int.
3849 (class Incremental_inputs_header): New class.
3850 (Incremental_inputs_header_writer): Edit comment.
3851 (Incremental_inputs_entry): New class.
3852 (Incremental_inputs_entry_writer): Edit comment.
3853 (Sized_incremental_binary::do_find_incremental_inputs_section):
3854 Add *strtab_shndx parameter, fill it.
3855 (Sized_incremental_binary::do_check_inputs): New method.
3856 (Incremental_checker::can_incrementally_link_output_file): Use
3857 Sized_incremental_binary::check_inputs.
3858 (Incremental_inputs::report_command_line): Save command line in
3859 command_line_.
3860 * incremental.h:
3861 (Incremental_binary::find_incremental_inputs_section): New
3862 method.
3863 (Incremental_binary::do_find_incremental_inputs_section): Add
3864 strtab_shndx parameter.
3865 (Incremental_binary::do_check_inputs): New pure virtual method.
3866 (Sized_incremental_binary::do_check_inputs): Declare.
3867 (Incremental_checker::Incremental_checker): Add incremental_inputs
3868 parameter, use it to initialize incremental_inputs_.
3869 (Incremental_checker::incremental_inputs_): New field.
3870 (Incremental_checker::command_line): New method.
3871 (Incremental_checker::inputs): New method.
3872 (Incremental_checker::command_line_): New field.
3873
c549a694
ILT
38742009-10-09 Mikolaj Zalewski <mikolajz@google.com>
3875
3876 * incremental.cc: Include <cstdarg> and "target-select.h".
3877 (vexplain_no_incremental): New function.
3878 (explain_no_incremental): New function.
3879 (Incremental_binary::error): New method.
3880 (Sized_incremental_binary::do_find_incremental_inputs_section): New
3881 method.
3882 (make_sized_incremental_binary): New function.
3883 (open_incremental_binary): New function.
3884 (can_incrementally_link_file): Add checks if output is ELF and has
3885 inputs section.
3886 * incremental.h: Include "elfcpp_file.h" and "output.h".
3887 (Incremental_binary): New class.
3888 (Sized_incremental_binary): New class.
3889 (open_incremental_binary): Declare.
3890 * object.cc (is_elf_object): Use
3891 elfcpp::Elf_recognizer::is_elf_file.
3892 (make_elf_object): Use elfcpp::Elf_recognizer::is_valid_header.
3893 * output.h (Output_file::filesize): New method.
3894
fd3c5f0b
ILT
38952009-10-07 Viktor Kutuzov <vkutuzov@accesssoftek.com>
3896
3897 * arm.cc (Arm_relocate_functions::extract_arm_movw_movt_addend):
3898 New function.
3899 (Arm_relocate_functions::insert_val_arm_movw_movt): New function.
3900 (Arm_relocate_functions::extract_thumb_movw_movt_addend): New
3901 function.
3902 (Arm_relocate_functions::insert_val_thumb_movw_movt): New
3903 function.
3904 (Arm_relocate_functions::movw_abs_nc): New function.
3905 (Arm_relocate_functions::movt_abs): New function.
3906 (Arm_relocate_functions::thm_movw_abs_nc): New function.
3907 (Arm_relocate_functions::thm_movt_abs): New function.
3908 (Scan::local): Handle R_ARM_MOVW_ABS_NC, R_ARM_MOVT_ABS,
3909 R_ARM_THM_MOVW_ABS_NC, R_ARM_THM_MOVT_ABS.
3910 (Scan::global): Likewise.
3911 (Relocate::relocate): Likewise.
3912 (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
3913
7f5309a5
ILT
39142009-10-07 Viktor Kutuzov <vkutuzov@accesssoftek.com>
3915
3916 * arm.cc (Arm_relocate_functions::got_prel) New function.
3917 (Scan::local, Scan::global): Handle R_ARM_GOT_PREL.
3918 (Relocate::relocate): Likewise.
3919 (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
3920
364c7fa5
ILT
39212009-10-06 Ian Lance Taylor <iant@google.com>
3922
3923 * options.h (class General_options): Define
3924 split_stack_adjust_size parameter.
3925 * object.h (class Object): Add uses_split_stack_ and
3926 has_no_split_stack_ fields. Add uses_split_stack and
3927 has_no_split_stack accessor functions. Declare
3928 handle_split_stack_section.
3929 (class Reloc_symbol_changes): Define.
3930 (class Sized_relobj): Define Function_offsets. Declare
3931 split_stack_adjust, split_stack_adjust_reltype, and
3932 find_functions.
3933 * object.cc (Object::handle_split_stack_section): New function.
3934 (Sized_relobj::do_layout): Call handle_split_stack_section.
3935 * dynobj.cc (Sized_dynobj::do_layout): Call
3936 handle_split_stack_section.
3937 * reloc.cc (Sized_relobj::relocate_sections): Call
3938 split_stack_adjust for executable sections in split_stack
3939 objects. Pass reloc_map to relocate_section.
3940 (Sized_relobj::split_stack_adjust): New function.
3941 (Sized_relobj::split_stack_adjust_reltype): New function.
3942 (Sized_relobj::find_functions): New function.
3943 * target-reloc.h: Include "object.h".
3944 (relocate_section): Add reloc_symbol_changes parameter. Change
3945 all callers.
3946 * target.h (class Target): Add calls_non_split method. Declare
3947 do_calls_non_split virtual method. Declare match_view and
3948 set_view_to_nop.
3949 * target.cc: Include "elfcpp.h".
3950 (Target::do_calls_non_split): New function.
3951 (Target::match_view): New function.
3952 (Target::set_view_to_nop): New function.
3953 * gold.cc (queue_middle_tasks): Give an error if mixing
3954 split-stack and non-split-stack objects with -r.
3955 * i386.cc (Target_i386::relocate_section): Add
3956 reloc_symbol_changes parameter.
3957 (Target_i386::do_calls_non_split): New function.
3958 * x86_64.cc (Target_x86_64::relocate_section): Add
3959 reloc_symbol_changes parameter.
3960 (Target_x86_64::do_calls_non_split): New function.
3961 * arm.cc (Target_arm::relocate_section): Add reloc_symbol_changes
3962 parameter.
3963 * powerpc.cc (Target_powerpc::relocate_section): Add
3964 reloc_symbol_changes parameter.
3965 * sparc.cc (Target_sparc::relocate_section): Add
3966 reloc_symbol_changes parameter.
3967 * configure.ac: Call AM_CONDITIONAL for the default target.
3968 * configure: Rebuild.
3969 * testsuite/Makefile.am (TEST_AS): New variable.
3970 (check_SCRIPTS): Add split_i386.sh and split_x86_64.sh.
3971 (check_DATA): Add split_i386 and split_x86_64 files.
3972 (SPLIT_DEFSYMS): Define.
3973 (split_i386_[1234n].o): New targets.
3974 (split_i386_[124]): New targets.
3975 (split_i386_[1234r].stdout): New targets.
3976 (split_x86_64_[1234n].o): New targets.
3977 (split_x86_64_[124]): New targets.
3978 (split_x86_64_[1234r].stdout): New targets.
3979 (MOSTLYCLEANFILES): Add new executables.
3980 * testsuite/split_i386.sh: New file.
3981 * testsuite/split_x86_64.sh: New file.
3982 * testsuite/split_i386_1.s: New file.
3983 * testsuite/split_i386_2.s: New file.
3984 * testsuite/split_i386_3.s: New file.
3985 * testsuite/split_i386_4.s: New file.
3986 * testsuite/split_i386_n.s: New file.
3987 * testsuite/split_x86_64_1.s: New file.
3988 * testsuite/split_x86_64_2.s: New file.
3989 * testsuite/split_x86_64_3.s: New file.
3990 * testsuite/split_x86_64_4.s: New file.
3991 * testsuite/split_x86_64_n.s: New file.
3992 * testsuite/testfile.cc (Target_test): Update relocation_section
3993 function.
3994 * testsuite/Makefile.in: Rebuild.
3995
e8a9fcda
ILT
39962009-10-06 Ian Lance Taylor <iant@google.com>
3997
3998 * i386.cc (class Target_i386::Relocate): Add ldo_addrs_ field.
3999 (Target_i386::Relocate::relocate_tls): Call fix_up_ldo before
4000 changing local_dynamic_type_ from LOCAL_DYNAMIC_NONE. When
4001 handling R_386_TLS_LDO_32, if local_dynamic_type_ is NONE, push
4002 the address on ldo_addrs_.
4003 (Target_i386::Relocate::fix_up_ldo): New function.
4004
e99daf92
ILT
40052009-10-06 Rafael Espindola <espindola@google.com>
4006
4007 * plugin.cc (add_input_library): New.
4008 (Plugin::load): Add add_input_library to tv.
4009 (Plugin_manager::add_input_file): Add the is_lib argument.
4010 (add_input_file): Update call to Plugin_manager::add_input_file.
4011 (add_input_library): New.
4012 * plugin.h (Plugin_manager::add_input_file): Add the is_lib argument.
4013
966d4097
DK
40142009-09-30 Doug Kwan <dougkwan@google.com>
4015
4016 * arm.cc (Target_arm::may_need_copy_reloc): Check for THUMB function
4017 symbol and call Symbol::may_need_copy_reloc to determine if
4018 a copy reloc is needed.
4019 * copy-relocs.cc (Copy_relocs::need_copy_reloc): Return false if -z
4020 nocopyreloc is given in command line.
4021 (Copy_relocs::emit_copy_reloc): Assert that -z nocopyreloc is not
4022 given in command line.
4023 * i386.cc (Target_i386::may_need_copy_reloc): Remove.
4024 (Target_i386::Scan::global): Use Symbol::may_need_copy_reloc instead
4025 of the removed Target_i386::may_need_copy_reloc.
4026 * options.h (copyreloc): New option with default value false.
4027 * powerpc.cc (Target_powerpc::may_need_copy_reloc): Remove.
4028 (Target_powerpc::Scan::global): Use Symbol::may_need_copy_reloc
4029 instead of the removed Target_powerpc::may_need_copy_reloc.
4030 * sparc.cc (Target_powerpc::may_need_copy_reloc): Remove.
4031 (Target_sparc::Scan::global): Use Symbol::may_need_copy_reloc
4032 instead of the removed Target_sparc::may_need_copy_reloc.
4033 * symtab.h (Symbol::may_need_copy_reloc): New method definition.
4034 * x86_64.cc (Target_powerpc::may_need_copy_reloc): Remove.
4035 (Target_x86_64::Scan::global): Use Symbol::may_need_copy_reloc
4036 instead of the removed Target_x86_64::may_need_copy_reloc.
4037
029ba973
ILT
40382009-09-30 Ian Lance Taylor <iant@google.com>
4039
4040 * object.h (class Object): Remove target_ field, and target,
4041 sized_target, and set_target methods.
4042 (Object::sized_target): Remove.
4043 (class Sized_relobj): Update declarations. Remove sized_target.
4044 * object.cc (Sized_relobj::setup): Remove target parameter.
4045 Change all callers.
4046 (Input_objects::add_object): Don't do anything with the target.
4047 (make_elf_sized_object): Add punconfigured parameter. Change all
4048 callers. Set or test parameter target.
4049 * dynobj.cc (Sized_dynobj::target): Remove target parameter.
4050 Change all callers.
4051 * parameters.cc (Parameters::set_target): Change parameter type to
4052 be non-const.
4053 (Parameters::default_target): Remove.
4054 (set_parameters_target): Change parameter type to be non-const.
4055 (parameters_force_valid_target): New function.
4056 (parameters_clear_target): New function.
4057 * parameters.h (class Parameters): Update declarations. Remove
4058 default_target method. Add sized_target and clear_target
4059 methods. Change target_ to be non-const.
4060 (set_parameters_target): Update declaration.
4061 (parameters_force_valid_target): Declare.
4062 (parameters_clear_target): Declare.
4063 * readsyms.cc (Read_symbols::do_read_symbols): Pass punconfigured
4064 as NULL if we aren't searching.
4065 (Add_symbols::run): Don't check for compatible target.
4066 * fileread.cc (Input_file::open_binary): Call
4067 parameters_force_valid_target.
4068 * gold.cc (queue_middle_tasks): Likewise.
4069 * plugin.cc (make_sized_plugin_object): Likewise. Don't call
4070 set_target on object.
4071 * dynobj.h (class Sized_dynobj): Update declarations.
4072 * archive.cc (Archive::get_elf_object_for_member): Return NULL if
4073 make_elf_object returns NULL.
4074 (Archive::include_member): Don't check whether object target is
4075 compatible.
4076 * output.cc (Output_section::add_input_section): Get target from
4077 parameters.
4078 (Output_section::relax_input_section): Likewise.
4079 * reloc.cc (Sized_relobj::do_gc_process_relocs): Get target from
4080 parameters.
4081 (Sized_relobj::do_scan_relocs): Likewise.
4082 (Sized_relobj::relocate_sections): Likewise.
4083 * resolve.cc (Symbol_table::resolve): Likewise.
4084 * symtab.cc (Symbol_table::wrap_symbol): Likewise. Remove object
4085 parameter. Change all callers.
4086 (Symbol_table::add_from_object): Get target from parameters.
4087 (Symbol_table::add_from_relobj): Don't check object target.
4088 (Symbol_table::add_from_dynobj): Likewise.
4089 (Symbol_table::define_special_symbol): Get target from
4090 parameters.
4091 * symtab.h (class Symbol_table): Update declaration.
4092 * testsuite/binary_unittest.cc (gold_testsuite): Remove target
4093 parameter. Change all callers. Clear parameter target.
4094 (Binary_test): Test target here.
4095 * testsuite/object_unittest.cc (gold_testsuite): Remove
4096 target_test_pointer parameter. Change all callers.
4097 (Object_test): Test target here.
4098
a6a22b83
ILT
40992009-09-26 Ian Lance Taylor <iant@google.com>
4100
4101 * testsuite/initpri1.c: Don't try to use constructor priorities if
4102 compiling with gcc before 4.3.
4103
6a8f49fe
ILT
41042009-09-22 Mikolaj Zalewski <mikolajz@google.com>
4105
4106 * testsuite/retain_symbols_file_test.sh (check_present): Change
4107 output file name to retain_symbols_file_test.stdout.
4108 (check_absent): Likewise.
4109
8c604651
CS
41102009-09-18 Craig Silverstein <csilvers@google.com>
4111
4112 * object.cc (Sized_relobj::do_count): Test should_retain_symbol map.
4113 * options.cc: Include <cerrno> and <fstream>.
4114 (General_options::finalize): Parse -retain-symbols-file tag.
4115 * options.h: New flag.
4116 (General_options): New method should_retain_symbol, new
4117 variable symbols_to_retain.
4118 * symtab.cc (Symbol_table::sized_finalize_symbol): Test
4119 should_retain_symbol map.
4120 * testsuite/Makefile.am (retain_symbols_file_test): New test.
4121 * testsuite/Makefile.in: Regenerate.
4122 * testsuite/retain_symbols_file_test.sh: New file.
4123
ca58b19f
NC
41242009-09-18 Nick Clifton <nickc@redhat.com>
4125
4126 * po/es.po: Updated Spanish translation.
4127
20e6d0d6
DK
41282009-09-17 Doug Kwan <dougkwan@google.com>
4129
4130 * debug.h (DEBUG_RELAXATION): New constant.
4131 (DEBUG_ALL): Add DEBUG_RELAXATION.
4132 (debug_string_to_enum): Add relaxation debug option.
4133 * layout.cc
4134 (Layout::Relaxation_debug_check::check_output_data_for_reset_values,
4135 Layout::Relaxation_debug_check::read_sections,
4136 Layout::Relaxation_debug_check::read_sections): New method definitions.
4137 (Layout::Layout): Initialize data members
4138 record_output_section_data_from_scrips_,
4139 script_output_section_data_list_ and relaxation_debug_check_.
4140 (Layout::save_segments, Layout::restore_segments,
4141 Layout::clean_up_after_relaxation, Layout::prepare_for_relaxation,
4142 Layout::relaxation_loop_body): New method definitions.
4143 (Layout::finalize): Support relaxation. Move section layout code to
4144 Layout::relaxation_loop_body.
4145 (Layout::set_asection_address_from_script): Move code for orphan
4146 section placement out.
4147 (Layout::place_orphan_sections_in_script): New method definition.
4148 * layout.h (Output_segment_headers, Output_file_header):
4149 New forward class declarations.
4150 (Layout::~Layout): Define.
4151 (Layout::new_output_section_data_from_script): New method definition.
4152 (Layout::place_orphan_sections_in_script): New method declaration.
4153 (Layout::Segment_states): New type declaration.
4154 (Layout::save_segments, Layout::restore_segments,
4155 Layout::clean_up_after_relaxation, Layout::prepare_for_relaxation,
4156 Layout::relaxation_loop_body): New method declarations.
4157 (Layout::Output_section_data_list): New type declaration.
4158 (Layout::Relaxation_debug_check): New class definition.
4159 (Layout::record_output_section_data_from_script_,
4160 Layout::script_output_section_data_list_, Layout::segment_states_,
4161 Layout::relaxation_debug_check_): New data members.
4162 * output.cc: (Output_section_headers::do_size): New method definition.
4163 (Output_section_headers::Output_section_headers): Move size
4164 computation to Output_section_headers::do_size.
4165 (Output_segment_headers::do_size): New method definition.
e1df38aa 4166 (Output_file_header::Output_file_header): Move size computation to
20e6d0d6
DK
4167 Output_file_header::do_size and call it.
4168 (Output_file_header::do_size): New method definition.
4169 (Output_data_group::Output_data_group): Adjust call to
4170 Output_section_data.
4171 (Output_data_dynamic::set_final_data_size): Add DT_NULL tag only once.
4172 (Output_symtab_xindex::do_write): Add array bound check.
4173 (Output_section::Input_section::print_to_mapfile): Handle
4174 RELAXED_INPUT_SECTION_CODE.
4175 (Output_section::Output_section): Initialize data member checkpoint_.
4176 (Output_section::~Output_section): Delete checkpoint object pointed
4177 by checkpoint_.
4178 (Output_section::add_input_section): Always add an Input_section if
4179 relaxing.
4180 (Output_section::add_merge_input_section): Add assert.
4181 (Output_section::relax_input_section): New method definition.
4182 (Output_section::set_final_data_size): Set load address to zero for
4183 an unallocated section.
4184 (Output_section::do_address_and_file_offset_have_reset_values):
4185 New method definition.
4186 (Output_section::Input_section_sort_enty::Input_section_sort_enty):
4187 Handle relaxed input section.
4188 (Output_section::sort_attached_input_sections): Checkpoint input
4189 section list lazily.
4190 (Output_section::get_input_sections): Change type of input_sections to
4191 list of Simple_input_section pointers. Checkpoint input section list
4192 lazily. Also handle relaxed input sections.
4193 (Output_section::add_input_section_for_script): Take a reference to
4194 a Simple_input_section object instead of Relobj pointer and section
4195 index as parameter. Handle relaxed input sections.
4196 (Output_section::save_states, Output_section::restore_states): New
4197 method definitions.
4198 * output.h (Output_data::Output_data): Initialize is_data_size_fixed_.
4199 (Output_data::is_data_size_fixed): New method definition.
4200 (Output_data::reset_addresss_and_file_offset): Do not reset data size
4201 if it is fixed.
4202 (Output_data::address_and_file_offset_have_reset_values): New method
4203 definition.
4204 (Output_data::do_address_and_file_offset_have_reset_values): New method
4205 definition.
4206 (Output_data::set_data_size): Check that data size is not fixed.
4207 (Output_data::fix_data_size): New method definition.
4208 (Output_data::is_data_size_fixed_): New data member.
4209 (Output_section_headers::set_final_data_size): New method definition.
4210 (Output_section_headers::do_size): New method declaration.
4211 (Output_segment_headers::set_final_data_size): New method definition.
4212 (Output_segment_headers::do_size): New method declaration.
4213 (Output_file_header::set_final_data_size)::New method definition.
4214 (Output_file_header::do_size)::New method declaration.
4215 (Output_section_data::Output_section_data): Add new parameter
4216 is_data_size_fixed and use it to fix data size.
4217 (Output_data_const::Output_data_const): Adjust call to base class
4218 constructor and fix data size.
4219 (Output_data_const_buffer::Output_data_const_buffer): Adjust call to
4220 base class constructor and fix data size.
4221 (Output_data_fixed_space::Output_data_fixed_space): Adjust call to
4222 base class constructor and fix data size.
4223 (Output_data_zero_fill::Output_data_zero_fill): Adjust call to base
4224 class constructor and fix data size.
4225 (Output_data_group::set_final_data_size): New method definition.
4226 (Output_data_dynamic::Dynamic_entry::tag): New method definition.
4227 (Output_symtab_xindex::Output_symtab_xindex): Adjust call to base
4228 class constructor and fix data size.
4229 (Output_relaxed_input_section): New class definition.
4230 (Output_section::Simple_input_section): New class definition.
4231 (Output_section::get_input_sections): Adjust parameter list.
4232 (Output_section::add_input_section_for_script): Same.
4233 (Output_section::save_states, Output_section::restore_states,
4234 Output_section::do_address_and_file_offset_have_reset_values,
4235 (Output_section::Input_section::Input_section): Handle
4236 RELAXED_INPUT_SECTION_CODE. Add new overload for
4237 Output_relaxed_input_section.
4238 (Output_section::Input_section::is_input_section,
4239 Output_section::Input_section::set_output_section): Handle relaxed
4240 input section.
4241 (Output_section::Input_section::is_relaxed_input_section,
4242 Output_section::Input_section::output_section_data,
4243 Output_section::Input_section::relaxed_input_section): New method
4244 definitions.
4245 (Output_section::Input_section::RELAXED_INPUT_SECTION_CODE): New enum
4246 value.
4247 (Output_section::Input_section::u1_): Update comments.
4248 (Output_section::Input_section::u2_): Add new union member poris.
4249 (Output_section::Checkpoint_output_section): New classs definition.
4250 (Output_section::relax_input_section): New method declaration.
4251 (Output_section::checkpoint_): New data member.
4252 (Output_segment): Update comments.
4253 (Output_segment::Output_segment): Un-privatize copy constructor.
4254 (Output_segment::operator=): Un-privatize.
4255 * script-sections.cc (Output_section_element::Input_section_list):
4256 Change element type to Output_section::Simple_input_section.
4257 (Output_section_element_dot_assignment::set_section_addresses):
4258 Register output section data for relaxation clean up.
4259 (Output_data_exression::Output_data_expression): Adjust call to base
4260 constructor to fix data size.
4261 (Output_section_element_data::set_section_addresses): Register
4262 Output_data_expression object for relaxation clean up.
4263 (struct Input_section_info): Replace Relobj pointer and section index
4264 pair with Output_section::Simple_input_section and Convert struct to a
4265 class.
4266 (Input_section_sorter::operator()): Adjust access to
e1df38aa 4267 Input_section_info data member to use accessors.
20e6d0d6
DK
4268 (Output_section_element_input::set_section_addresses): Use layout
4269 parameter. Adjust code to use Output_section::Simple_input_section
4270 and Input_secction_info classes. Register filler for relaxation
4271 clean up.
4272 (Orphan_output_section::set_section_addresses): Replace Relobj pointer
4273 and section index pair with Output_section::Simple_input_section
4274 class. Adjust code accordingly.
4275 (Phdrs_element::release_segment): New method definition.
4276 (Script_sections::attach_sections_using_phdrs_clause): Do not modify
4277 segment list.
4278 (Script_sections::release_segments): New method definition.
4279 * gold/script-sections.h (Script_sections::release_segments): New
4280 method declaration.
4281 * gold/target.h (Target::may_relax, Target::relax,
4282 Target::do_may_relax, Target::do_relax): New method definitions.
4283
5e445df6
ILT
42842009-09-17 Viktor Kutuzov <vkutuzov@accesssoftek.com>
4285
4286 * arm.cc (has_signed_unsigned_overflow): New function.
4287 (Arm_relocate_functions::abs8): New function.
4288 (Target_arm::Scan::local): Handle R_ARM_ABS8.
4289 (Target_arm::Scan::global): Likewise.
4290 (Target_arm::relocate::relocate): Likewise.
4291 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
4292 Likewise.
4293
8c604651 42942009-09-16 Cary Coutant <ccoutant@google.com>
72fef11a
CC
4295
4296 * testsuite/Makefile.am (MOSTLYCLEANFILES): Add more generated files.
4297 * testsuite/Makefile.in: Regenerate.
4298
1e9cc1c2
NC
42992009-09-11 Nick Clifton <nickc@redhat.com>
4300
4301 * po/gold.pot: Updated by the Translation project.
4302
6a89f575
CC
43032009-09-08 Cary Coutant <ccoutant@google.com>
4304
4305 * output.cc (Output_file::open): Add execute permission to empty file.
4306 * testsuite/Makefile.am (permission_test): New test.
4307 * testsuite/Makefile.in: Regenerate.
4308
fdcac5af
ILT
43092009-09-02 Ian Lance Taylor <iant@google.com>
4310
4311 * output.cc (Output_file::resize): Call map_no_anonymous rather
4312 than map.
4313
44453f85
ILT
43142009-09-01 Mikolaj Zalewski <mikolajz@google.com>
4315
4316 * gold.cc: Include "incremental.h".
4317 (queue_initial_tasks): Call Incremental_checker methods.
4318 * incremental.cc: Include "output.h".
4319 (Incremental_checker::can_incrementally_link_output_file): New
4320 method.
4321 * incremental.h (Incremental_checker): New class.
4322
4323 * output.cc (Output_file::open_for_modification): New method.
4324 (Output_file::map_anonymous): Changed return type to bool. Record
4325 map in base_ field.
4326 (Output_file::map_no_anonymous): New method, broken out of map.
4327 (Output_file::map): Use map_no_anonymous and map_anonymous.
4328 * output.h (class Output_file): Update declarations.
4329
293c1386
CC
43302009-08-24 Cary Coutant <ccoutant@google.com>
4331
4332 * options.h (Command_line::Pre_options): New class.
4333 (Command_line::pre_options): New member.
4334 * options.cc (gold::options::ready_to_register): New variable.
4335 (One_option::register_option): Do nothing if not registering options.
4336 Assert if same short option registered twice.
4337 (General_options::General_options): Turn off option registration when
4338 done constructing.
4339 (Command_line::Pre_options::Pre_options): New constructor.
4340
f773f3d2
CC
43412009-08-24 Cary Coutant <ccoutant@google.com>
4342
06a73cfe
CC
4343 * options.h (General_options::no_keep_memory): Remove incorrect
4344 short option.
f773f3d2 4345
a15af8e2
RW
43462009-08-24 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
4347
4348 * Makefile.am (am__skiplex, am__skipyacc): New.
4349 * Makefile.in: Regenerate.
4350
c462b41b
RW
43512009-08-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
4352
14ec8efd
RW
4353 * Makefile.am (AM_CPPFLAGS): Renamed from ...
4354 (INCLUDES): ... this.
4355 * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add -Wno-portability.
4356 (AM_CPPFLAGS): Renamed from ...
4357 (INCLUDE): ... this.
4358 * Makefile.in, testsuite/Makefile.in: Regenerate.
4359
81ecdfbb
RW
4360 * Makefile.in: Regenerate.
4361 * aclocal.m4: Likewise.
4362 * config.in: Likewise.
4363 * configure: Likewise.
4364 * testsuite/Makefile.in: Likewise.
4365
c462b41b
RW
4366 * Makefile.am (AUTOMAKE_OPTIONS): Add foreign.
4367 * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add foreign.
4368 * Makefile.in: Regenerate.
4369 * testsuite/Makefile.in: Regenerate.
4370
2da73f13
CC
43712009-08-19 Cary Coutant <ccoutant@google.com>
4372
4373 * resolve.cc (Symbol_table::resolve): Don't complain about defined
4374 symbols in shared libraries overridden by hidden or internal symbols
4375 in the main program.
4376
2db70501
CD
43772009-08-19 Chris Demetriou <cgd@google.com>
4378
4379 * testsuite/debug_msg.sh: Match .* rather than ${srcdir} when
4380 checking source file names in error messages.
4381
f733487b
DK
43822009-08-18 Doug Kwan <dougkwan@google.com>
4383
4384 * dynobj.cc (Sized_dynobj::setup): Take a Target object instead of
4385 an elcpp::Ehdr as parameter. Adjust call to set_target.
4386 * dynobj.h (Sized_dynobj::setup): Take a Target object instead of
4387 an elfcpp::Ehdr as parameter.
4388 * object.cc (Object::set_target): Remove the version that looks up
4389 a target and sets it.
4390 (Sized_relobj::setup): Take a Target object instead of
4391 an elfcpp::Ehdr as parameter. Adjust call to set_target.
4392 (make_elf_sized_object): Find target and ask target to
4393 make an ELF object.
4394 * object.h: (Object::set_target): Remove the version that looks up
4395 a target and sets it.
4396 (Sized_relobj::setup): Take a Target object instead of
4397 an elfcpp:Ehdr as parameter.
4398 * target.cc: Include dynobj.h.
4399 (Target::do_make_elf_object_implementation): New.
4400 (Target::do_make_elf_object): New.
4401 * target.h (Target::make_elf_object): New template declaration.
4402 (Target::do_make_elf_object): New method declarations.
4403 (Target::do_make_elf_object_implementation): New template declaration.
4404
cc70f101
ILT
44052009-08-14 Ian Lance Taylor <iant@google.com>
4406
4407 * gold.h (FUNCTION_NAME): Define.
4408 (gold_unreachable): Use FUNCTION_NAME.
4409
ef5e0cb1
ST
44102009-08-12 Sriraman Tallam <tmsriram@google.com>
4411
4412 * icf.cc (Icf::find_identical_sections): Issue a warning when a
4413 symbol in the --keep-unique list is not found.
4414
48c187ce
ST
44152009-08-12 Sriraman Tallam <tmsriram@google.com>
4416
4417 * icf.cc (Icf::find_identical_sections): Unfold symbols that have
4418 been maked as --keep-unique.
4419 (Icf::unfold_section): New function.
4420 * icf.h (Icf::unfold_section): New function.
4421 * options.h (General_options::keep_unique): New option.
4422 * testsuite/Makefile.am: Add commands to build icf_keep_unique_test.
4423 * testsuite/Makefile.in: Regenerate.
4424 * testsuite/icf_keep_unique_test.sh: New file.
4425 * testsuite/icf_keep_unique_test.cc: New file.
4426
645afe0c
CC
44272009-08-12 Cary Coutant <ccoutant@google.com>
4428
4429 PR 10471
4430 * resolve.cc (Symbol_table::resolve): Check for references from
4431 dynamic objects to hidden and internal symbols.
4432 * testsuite/Makefile.am (hidden_test.sh): New test.
4433 * testsuite/Makefile.in: Regenerate.
4434 * testsuite/hidden_test.sh: New script.
4435 * testsuite/hidden_test_1.c: New test source.
4436 * testsuite/hidden_test_main.c: New test source.
4437
11af873f
DK
44382009-08-11 Doug Kwan <dougkwan@google.com>
4439
4440 * arm.cc: Update comments.
4441 (Target_arm::do_finalize_sections): Add a special PT_ARM_EXIDX
4442 segment to locate the .ARM.exidx section if present.
4443
b9f7d72d
DK
44442009-08-09 Doug Kwan <dougkwan@google.com>
4445
4446 * dynobj.h (Sized_dynobj::do_section_entsize): Revert the previous
4447 patch.
4448
ddd3c53c
ST
44492009-08-07 Sriraman Tallam <tmsriram@google.com>
4450 * dynobj.h (Sized_dynobj::do_section_entsize): Add return to avoid
4451 compiler warnings.
4452
27721062
ST
44532009-08-06 Sriraman Tallam <tmsriram@google.com>
4454
4455 * x86_64.cc (Target_x86_64::Relocate::relocate_tls): Check for a
4456 valid tls_segment only for non-debug-section relocations.
4457 * testsuite/Makefile.am: Add gc_tls_test.
4458 * testsuite/Makefile.in: Regenerate.
4459 * testsuite/gc_tls_test.cc: New file.
4460 * testsuite/gc_tls_test.sh: New file.
4461
ef15dade 44622009-08-05 Sriraman Tallam <tmsriram@google.com>
e1df38aa 4463
ef15dade
ST
4464 * icf.cc: New file.
4465 * icf.h: New file.
4466 * Makefile.am (CCFILES): Add icf.cc.
4467 (HFILES): Add icf.h
4468 * Makefile.in: Regenerate.
4469 * dynobj.h (Sized_dynobj::do_section_entsize): New function.
4470 * gc.h (gc_process_relocs): Populate lists used by icf to contain
4471 section, symbol and addend information for the relocs.
4472 * gold.cc (queue_middle_tasks): Call identical code folding.
4473 * gold.h: Add defines for multimap.
4474 * layout.cc (Layout::create_symtab_sections): Add symtab as parameter
4475 to the call of finalize_local_symbols.
4476 * main.cc (main): Create object of class Icf.
4477 * object.cc (Sized_relobj::do_layout): Allow this function to be
4478 called twice during icf.
4479 (Sized_relobj::do_finalize_local_symbols): Fold symbols corresponding
4480 to sections marked as identical by icf.
4481 (Sized_relobj::do_section_flags): Get section_flags from Symbols_data
4482 when available.
4483 (Sized_relobj::do_section_entsize): New function.
4484 * object.h (Object::section_entsize): New function.
4485 (Object::do_section_entsize): New pure virtual function.
4486 (Relobj::finalize_local_symbols): Add new parameter.
4487 (Relobj::do_section_entsize): New function.
4488 * options.h (General_options::icf): New option.
4489 (General_options::icf_iterations): New option.
4490 (General_options::print_icf_sections): New option.
4491 * plugin.cc (Sized_pluginobj::do_section_entsize): New function.
4492 * plugin.h (Sized_pluginobj::do_section_entsize): New function.
4493 * reloc.cc (Read_relocs::run): Delay scanning relocs when doing
4494 icf.
4495 * symtab.cc (Symbol_table::is_section_folded): New function.
4496 (Symbol_table::sized_finalize_symbol): Fold symbols corresponding
4497 to sections marked as identical by icf.
4498 * symtab.h (Symbol_table::set_icf): New function.
4499 (Symbol_table::icf): New function.
4500 (Symbol_table::is_section_folded): New function.
4501 (Symbol_table::icf_): New data member.
4502 * target-reloc.h (relocate_section): Ignore sections folded by icf.
4503 * testsuite/Makefile.am: Add commands to build icf_test.
4504 * testsuite/Makefile.in: Regenerate.
4505 * testsuite/icf_test.sh: New file.
4506 * testsuite/icf_test.cc: New file.
4507
c3b65ac4
CD
45082009-07-24 Chris Demetriou <cgd@google.com>
4509
4510 * layout.cc (is_compressible_debug_section): Fix incorrect
4511 comment about compressed section names.
4512
1caf2c51
ILT
45132009-07-20 Ian Lance Taylor <ian@airs.com>
4514
4515 PR 10419
4516 * x86_64.cc (Target_x86_64::do_code_fill): Correct nop sequences.
4517
1ef4d87f
ILT
45182009-07-16 Ian Lance Taylor <iant@google.com>
4519
4520 PR 10400
4521 * layout.h: #include <map>.
4522 (class Kept_section): Change from struct to class. Add accessors
4523 and setters. Add section size to Comdat_group mapping. Change
4524 Comdat_group to std::map. Add is_comdat_ field. Add
4525 linkonce_size field in union.
4526 (class Layout): Update declaration of find_or_add_kept_section.
4527 Don't declare find_kept_object.
4528 * layout.cc (Layout::find_or_add_kept_section): Remove candidate
4529 parameter. Add object, shndx, is_comdat, and is_group_name
4530 parameters. Change all callers. Adjust for new Kept_section.
4531 (Layout::find_kept_object): Remove.
4532 * object.cc (Sized_relobj::include_section_group): Update use of
4533 Kept_section. Rename secnum to shndx. Only record
4534 Kept_comdat_section if sections are the same size.
4535 (Sized_relobj::include_linkonce_section): Update use of
4536 Kept_section. Only record Kept_comdat_section if sections are the
4537 same size. Set size of linkonce section.
4538 (Sized_relobj::map_to_kept_section): Update call to
4539 get_kept_comdat_section.
4540 * object.h (class Sized_relobj): Rename fields in
4541 Kept_comdat_section to drop trailing underscores; change object
4542 field to Relobj*. Change Kept_comdat_section_table to store
4543 struct rather than pointer.
4544 (Sized_relobj::set_kept_comdat_section): Remove kept parameter.
4545 Add kept_object and kept_shndx parameters. Change all callers.
4546 (Sized_relobj::get_kept_comdat_section): Change return type to
4547 bool. Add kept_object and kept_shndx parameters. Change all
4548 callers.
4549 * plugin.cc (Pluginobj::include_comdat_group): Update call to
4550 Layout::find_or_add_kept_section.
4551
37c3b7b0
ILT
45522009-07-09 Ian Lance Taylor <iant@google.com>
4553
4554 * merge.cc (Object_merge_map::initialize_input_to_output_map):
4555 Reserve space in the hash table.
4556
98fa85cb
ILT
45572009-07-06 Mikolaj Zalewski <mikolajz@google.com>
4558
4559 * fileread.cc (File_read::get_mtime): New method.
4560 * fileread.h (Timespec): New structure.
4561 (File_read::get_mtime): New method.
4562 * incremental.cc (Incremental_inputs_entry_data::timestamp_usec):
4563 Renamed from timestamp_nsec.
4564 (Incremental_inputs_entry_write::timestamp_sec): Fix argument to
4565 Elf_Xword.
e1df38aa 4566 (Incremental_inputs_entry_write::timestamp_usec): Renamed from
98fa85cb 4567 timestamp_nsec.
e1df38aa 4568 (Incremental_inputs::report_archive): Save mtime; style fix.
98fa85cb
ILT
4569 (Incremental_inputs::report_obejct): Save mtime; style fix.
4570 (Incremental_inputs::report_script): Save mtime; style fix.
4571 (Incremental_inputs::finalize_inputs): Style fix.
4572 (Incremental_inputs::finalize): Style fix.
4573 (Incremental_inputs::create_input_section_data): Store inputs
4574 mtime.
4575 * incremental.h (Incremental_inputs::report_script): Add mtime
4576 argument.
4577 (Incremental_inputs::Input_info::Input_info): Intialize only one
4578 union member.
4579 (Incremental_inputs::Input_info::archive): Move to nameless
4580 union.
4581 (Incremental_inputs::Input_info::obejct): Move to nameless union.
4582 (Incremental_inputs::Input_info::script): Move to nameless union.
4583 (Incremental_inputs::mtime): New field.
4584 * script.cc (read_input_script): Pass file mtime to
4585 Incremental_input.
4586 * script.h (Script_info::inputs): Style fix.
4587
c9d70757
ILT
45882009-07-01 Ian Lance Taylor <ian@airs.com>
4589
4590 * freebsd.h (Target_freebsd::do_adjust_elf_header): Use size
4591 instead of 32.
4592
9c547ec3
ILT
45932009-06-24 Ian Lance Taylor <iant@google.com>
4594
4595 PR 10156
4596 * layout.cc (Layout::choose_output_section): If we find an
4597 existing section, update the flags.
4598 (Layout::create_notes): New function, broken out of
4599 Layout::finalize.
4600 (Layout::finalize): Don't create note sections.
4601 (Layout::create_note): Don't crash if linker script discards
4602 section.
4603 (Layout::create_gold_note): Likewise.
4604 (Layout::create_build_id): Likewise. Don't set
4605 after_input_sections on the section.
4606 (Layout::create_executable_stack_info): Remove target parameter.
4607 Change caller.
4608 * layout.h (class Layout): Declare create_notes. Update
4609 declaration of create_executable_stack_info.
4610 * gold.cc (queue_middle_tasks): Call create_notes.
4611 * output.cc (Output_section::update_flags_for_input_section): Move
4612 here from output.h. If SHF_ALLOC flag is newly set, mark address
4613 invalid.
4614 * output.h (Output_data::mark_address_invalid): New function.
4615 (class Output_section): Only declare, not define,
4616 update_flags_for_input_section. Remove set_flags.
4617
55458500
ILT
46182009-06-24 Ian Lance Taylor <iant@google.com>
4619
4620 * script-sections.cc (Output_section_definition::
4621 set_section_addresses): Rename shadowing local load_address to
4622 laddr.
4623
1307d6cd
ILT
46242009-06-24 Ian Lance Taylor <iant@google.com>
4625
4626 PR 10244
4627 * reloc.cc (relocate_sections): Skip empty relocation sections.
4628
ec3f783e
ILT
46292009-06-23 Ian Lance Taylor <iant@google.com>
4630
4631 PR 10156
4632 * layout.cc (Layout::create_note): Use choose_output_section
4633 rather than make_output_section.
4634
459c9f1c
ILT
46352009-06-23 Ian Lance Taylor <iant@google.com>
4636
4637 PR 10237
4638 * options.cc (General_options::parse_V): Set printed_version_.
4639 (General_options::General_options): Initialize printed_version_.
4640 * options.h (class General_options): Add printed_version_ field.
4641 * gold.cc (queue_initial_tasks): If there are no input files,
4642 don't give a fatal error if we printed the version information.
4643 (queue_middle_tasks): If using -r with a shared object, give a
4644 fatal error rather than an ordinary error.
4645
1518dc8f
ILT
46462009-06-23 Ian Lance Taylor <iant@google.com>
4647
4648 PR 10219
4649 * layout.cc (Layout::Layout): Initialize have_stabstr_section_.
4650 (Layout::make_output_section): Set have_stabstr_section_ if we see
4651 a .stab*str section.
4652 (Layout::finalize): Call link_stabs_sections.
4653 (Layout::link_stabs_sections): New file.
4654 * layout.h (class Layout): Add have_stabstr_section_ field.
4655 Declare link_stabs_sections.
4656
3d857b98
DK
46572009-06-23 Doug Kwan <dougkwan@google.com>
4658
4659 * Makefile.am (libgold_a_LIBADD): New.
4660 (ld_new_DEPENDENCIES, ld_new_LDADD): Remove LIBOBJS
4661 * Makefile.in: Regenerate.
4662 * config.in (HAVE_DECL_MEMMEM, HAVE_DECL_STRNDUP): New.
4663 * configure: Regenerate.
4664 * configure.ac (AC_CHECK_DECLS): Add strndup and memmem.
4665 * fileread.cc: Include sys/state.h
4666 * gold.h: Declare memmem and strndup if found missing.
4667 * gold_reloc.h: Include byteswap.h if HAVE_BYTESWAP_H is defined.
4668
0639a6f6
ILT
46692009-06-23 Ian Lance Taylor <iant@google.com>
4670
4671 * configure.ac: Call AC_CHECK_DECLS using C, not C++.
4672 * configure: Rebuild.
4673
8d63875c
ILT
46742009-06-23 Ian Lance Taylor <iant@google.com>
4675
4676 PR 10147
4677 * object.cc (Object::section_contents): Don't try to get a view if
4678 the section has length zero.
4679 (Object::handle_gnu_warning_section): If the section is empty, use
4680 the name of the section as the warning.
4681
f7c8a183
ILT
46822009-06-23 Ian Lance Taylor <iant@google.com>
4683
4684 PR 10133
4685 * stringpool.h (class Stringpool_template): Add optimize_ field.
4686 (Stringpool_template::set_optimize): New function.
4687 * stringpool.cc (Stringpool_template::Stringpool_template):
4688 Initialize optimize_ field.
4689 (Stringpool_template::set_string_offsets): Test local optimize
4690 fild rather than parameter.
4691 * layout.cc (Layout::Layout): Call set_optimize on the section
4692 name stringpool.
4693
e6a307ba
ILT
46942009-06-22 Ian Lance Taylor <iant@google.com>
4695
4696 PR 10030
4697 * yyscript.y: Parse TARGET.
4698 * script.cc (script_set_target): New function.
4699 * script-c.h (script_set_target): Declare.
4700 * options.cc (General_options::string_to_object_format): Rename
4701 from string_to_object_format in anonymous namespace. Change
4702 callers.
4703 * options.h (class General_options): Declare
4704 string_to_object_format.
4705
3ee173de
ILT
47062009-06-22 Ian Lance Taylor <iant@google.com>
4707
4708 * script-sections.cc (Script_sections::create_segments): Don't put
4709 program headers in a PT_LOAD segment if -n or -N.
4710
47112009-06-22 Ian Lance Taylor <iant@google.com>
e1c74d60
ILT
4712
4713 PR 10141
4714 * options.h (class General_options): Add -z lazy and -z now. Sort
4715 -z options into alphabetical order.
4716 * layout.cc (Layout::finish_dynamic_section): Handle -z now.
4717
cd6739a1 47182009-06-21 Ian Lance Taylor <iant@google.com>
8a5e3e08
ILT
4719
4720 * layout.cc (Layout::make_output_section): Call
4721 Target::new_output_section.
4722 (Layout::attach_allocated_section_to_segment): Put large section
4723 sections in a separate load segment with the large segment flag
4724 set.
4725 (Layout::segment_precedes): Sort large data segments after other
4726 load segments.
4727 (align_file_offset): New static function.
4728 (Layout::set_segment_offsets): Use align_file_offset.
4729 * output.h (class Output_section): Add is_small_section_ and
4730 is_large_section_ fields.
4731 (Output_section::is_small_section): New function.
4732 (Output_section::set_is_small_section): New function.
4733 (Output_section::is_large_section): New function.
4734 (Output_section::set_is_large_section): New function.
4735 (Output_section::is_large_data_section): New function.
4736 (class Output_segment): Add is_large_data_segment_ field.
4737 (Output_segment::is_large_data_segment): New function.
4738 (Output_segment::set_is_large_data_segment): New function.
4739 * output.cc (Output_section::Output_section): Initialize new
4740 fields.
4741 (Output_segment::Output_segment): Likewise.
4742 (Output_segment::add_output_section): Add assertion that large
4743 data sections always go in large data segments. Force small data
4744 sections to the end of the list of data sections. Force small BSS
4745 sections to the start of the list of BSS sections. For large BSS
4746 sections to the end of the list of BSS sections.
4747 * symtab.h (class Symbol): Declare is_common_shndx.
4748 (Symbol::is_defined): Check Symbol::is_common_shndx.
4749 (Symbol::is_common): Likewise.
4750 (class Symbol_table): Define enum Commons_section_type. Update
4751 declarations. Add small_commons_ and large_commons_ fields.
4752 * symtab.cc (Symbol::is_common_shndx): New function.
4753 (Symbol_table::Symbol_table): Initialize new fields.
4754 (Symbol_table::add_from_object): Put small and large common
4755 symbols in the right list.
4756 (Symbol_table::sized_finalized_symbol): Check
4757 Symbol::is_common_shndx.
4758 (Symbol_table::sized_write_globals): Likewise.
4759 * common.cc (Symbol_table::do_allocate_commons): Allocate new
4760 common symbol lists. Don't call do_allocate_commons_list if the
4761 list is empty.
4762 (Symbol_table::do_allocate_commons_list): Remove is_tls
4763 parameter. Add comons_section_type parameter. Change all
4764 callers. Handle small and large common symbols.
4765 * object.cc (Sized_relobj::do_finalize_local_symbols): Check
4766 Symbol::is_common_shndx.
4767 * resolve.cc (symbol_to_bits): Likewise.
4768 * target.h (Target::small_common_shndx): New function.
4769 (Target::small_common_section_flags): New function.
4770 (Target::large_common_shndx): New function.
4771 (Target::large_common_section_flags): New function.
4772 (Target::new_output_section): New function.
4773 (Target::Target_info): Add small_common_shndx, large_common_shndx,
4774 small_common_section_flags, and large_common_section_flags
4775 fields.
4776 (Target::do_new_output_section): New virtual function.
4777 * arm.cc (Target_arm::arm_info): Initialize new fields.
4778 * i386.cc (Target_i386::i386_info): Likewise.
4779 * powerpc.cc (Target_powerpc::powerpc_info) [all versions]:
4780 Likewise.
4781 * sparc.c (Target_sparc::sparc_info) [all versions]: Likewise.
4782 * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
4783 (Target_x86_64::do_new_output_section): New function.
4784 * configure.ac: Define conditional MCMODEL_MEDIUM.
4785 * testsuite/Makefile.am (check_PROGRAMS): Add large.
4786 (large_SOURCES, large_CFLAGS, large_DEPENDENCIES): Define.
4787 (large_LDFLAGS): Define.
4788 * testsuite/large.c: New file.
4789 * testsuite/testfile.cc (Target_test::test_target_info):
4790 Initialize new fields.
4791 * configure, testsuite/Makefile.in: Rebuild.
4792
bb04269c
DK
47932009-06-05 Doug Kwan <dougkwan@google.com>
4794
4795 * Makefile.am (CCFILES): Add target.cc.
e1df38aa 4796 * Makefile.in: Regenerate.
bb04269c
DK
4797 * i386.cc (class Target_i386): Define new virtual method to
4798 override do_is_local_label_name in parent.
4799 * object.cc (Sized_relobj::do_count_local_symbols): Discard
4800 local symbols if --discard-locals or -X is given.
4801 * options.h (class General_options): Declare new options
4802 '--discard-locals' and '-X' for discarding locals.
4803 * target.h (class Target): Define new methods is_local_label_name.
4804 Declare new virtual method do_is_local_label_name.
4805 * target.cc: New file.
4806 * testsuite/Makefile.am (check_PROGRAMS): Add discard_locals_test.
4807 (check_SCRIPTS): Add discard_locals_test.sh.
4808 (check_DATA): Add discard_local_tests.syms.
4809 (discard_locals_test_SOURCES, discard_locals_test_LDFLAGS): Define.
4810 (discard_local_tests.syms, discard_locals_test.o): New make rules.
4811 * testsuite/Makefile.in: Regenerate.
4812 * testsuite/discard_locals_test.c: New file.
4813 * testsuite/discard_locals_test.sh: Same.
4814
805bb01c
DK
48152009-06-05 Doug Kwan <dougkwan@google.com>
4816
4817 * object.cc (Sized_relobj::Sized_relobj): Initialize
4818 discarded_eh_frame_shndx_ to -1U.
4819 (Sized_relobj::do_layout): Record index of a discard .eh_frame
4820 section.
4821 (Sized_relobj::do_count_local_symbols): Skip local symbols in
4822 a discarded .eh_frame section.
4823 (Sized_relobj::do_finalize_local_symbols): Ditto.
4824 * object.h (class Sized_relobj): Declare new member
4825 discarded_eh_frame_shndx_.
4826 * testsuite/Makefile.am (check_PROGRAMS): Add local_labels_test.
4827 (local_labels_test.o, local_labels_test): New rules.
4828 * testsuite/Makefile.in: Regenerate.
4829
1dcd334d
DK
48302009-06-04 Doug Kwan <dougkwan@google.com>
4831
4832 * layout.cc (Layout::section_name_mapping): Add mapping for
4833 special ARM sections.
4834
96d49306
DK
48352009-06-03 Doug Kwan <dougkwan@google.com>
4836
4837 * arm.cc (utils::sign_extend): Reverse test in gold_assert.
4838 (utils::has_overflow): Same.
4839
dff16297
ILT
48402009-06-03 Ian Lance Taylor <iant@google.com>
4841
4842 * layout.cc (Layout::section_name_mapping): New array, replacing
4843 Layout::linkonce_mapping.
4844 (Layout::section_name_mapping_count): New variable, replacing
4845 Layout::linkonce_mapping_count.
4846 (Layout::linkonce_output_name): Remove.
4847 (Layout::output_section_name): Rewrite.
4848 * layout.h (class Layout): Rename Linkonce_mapping to
4849 Section_name_mapping, linkonce_mapping to section_name_mapping,
4850 linkonce_mapping_count to section_name_mapping_count. Don't
4851 declare linkonce_output_name.
4852
c121c671
DK
48532009-06-03 Doug Kwan <dougkwan@google.com>
4854
4855 * gold/arm.cc (namespace utils): New.
4856 (Target_arm::reloc_is_non_pic): Define new method.
4857 (class Arm_relocate_functions): New.
4858 (Target_arm::Relocate::relocate): Handle relocation types used by
4859 Android.
4860
07800fab
ILT
48612009-06-03 Ian Lance Taylor <iant@google.com>
4862
4863 * arm.cc (Target_arm::scan::global): Use || instead of |.
4864
c121c671
DK
48652009-06-02 Doug Kwan <dougkwan@google.com>
4866
4867 * gold/arm.cc (Target_arm::Scan::Scan): Initialize
4868 issued_non_pic_error_.
4869 (class Target_arm::Scan): Declare new method check_non_pic.
4870 Define new method symbol_needs_plt_entry.
4871 Declare new data member issued_non_pic_error_.
4872 (class Target_arm::Relocate): Declare new method
4873 should_apply_static_reloc.
4874 (Target_arm::may_need_copy_reloc): Handle STT_ARM_TFUNC.
4875 (Target_arm::Scan::check_non_pic): Define new method.
4876 (Target_arm::Scan::local): Handle a small subset of reloc types used
4877 by Android.
4878 (Target_arm::Scan::local): Same.
4879 (Target_arm::Relocate::should_apply_statci_reloc): Define new method.
4880
b19b0c6d
ILT
48812009-05-31 Mikolaj Zalewski <mikolajz@google.com>
4882
4883 * incremental.cc (Incremental_inputs::report_command_line): Filter
4884 out --incremental-* options.
4885
94cdfcff
DK
48862009-05-29 Doug Kwan <dougkwan@google.com>
4887
4888 * gold/arm.cc (Output_data_plt_arm): Forward declaration for new
4889 template class.
4890 (class Target_arm): Update comment.
4891 (Target_arm::Target_arm): Initialize new data members GOT_,
4892 PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_ and DYNBSS_.
4893 Declare new methods Target_arm::got_section, Target_arm::make_plt_entry
4894 and Target_arm::rel_dyn_section.
4895 Declare new_enum Target_arm::Got_type.
4896 Declare new data members GOT_, PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_
4897 and DYNBSS_.
4898 Update commments for member do_dynsym_value.
4899 (Target_arm::got_size, Target_arm::plt_section,
4900 Target_arm::may_need_copy_reloc and Target_arm::copy_reloc): Define
4901 new methods inside class defintion.
4902 (Target_arm::got_section): Define new method.
4903 (Target_arm::rel_dyn_section): Same.
4904 (Output_data_plt_arm): New template class.
4905 (Output_data_plt_arm::Output_data_plt_arm): Define constructor.
4906 (Output_data_plt_arm:do_adjust_output_section): Define new method.
4907 (Output_data_plt_arm::add_entry): Same.
4908 (Output_data_plt_arm::first_plt_entry): Define new
4909 static data member for PLT instruction template.
4910 (Output_data_plt_arm::plt_entry): Same.
4911 (Output_data_plt_arm::do_write): Define new method.
4912 (Target_arm::make_plt_entry): Same.
4913 (Target_arm::do_finalize_sections): Same.
4914 (Target_arm::do_dynsym_value): Same.
4915
4a657b0d
DK
49162009-05-28 Doug Kwan <dougkwan@google.com>
4917
4918 * Makefile.am (TARGETSOURCES): Add arm.cc.
4919 (ALL_TARGETOBJECTS): Add arm.$(OBJEXT)
4920 * Makefile.in: Regenerate.
4921 * arm.cc: New file.
4922 * configure.tgt: Add armbe*-*-*, armeb*-*-* and arm*-*-* targets.
4923
e7ae8c36
DK
49242009-05-26 Doug Kwan <dougkwan@google.com>
4925
4926 * options.cc (General_options::parse_exclude_libs). Fix a comment.
4927 (General_options::check_excluded_libs): Strip off directories in
4928 archive name before matching like GNU ld does.
4929 * testsuite/Makefile.am (MOSTLYCLEANFILES,
4930 exclude_libs_test_DEPENDENCIES): Add alt/libexclude_libs_test_3.a
4931 (exclude_libs_test_LDFLAGS): Add linker option
4932 -Wl,--exclude-libs,libexclude_libs_test_3
4933 (exclude_libs_test_LADD): Add alt/libexclude_libs_test_3.a as
4934 an explicit archive without using -l.
4935 (alt/libexclude_libs_test_3.a): New make rule.
4936 * testsuite/Makefile.in: Regenerate.
4937 * testsuite/exclude_libs_test.c : Declare lib3_default().
4938 (main): Call it.
4939 * exclude_libs_test.sh: Add tests for alt/exclude_libs_test_3.a.
4940 * exclude_libs_test_3.c: New file.
4941
f12e7348
NC
49422009-05-26 Nick Clifton <nickc@redhat.com>
4943
4944 * po/id.po: New Indonesian translation.
4945 * po/gold.pot: Updated template file.
4946
4daadc0d
ST
49472009-05-22 Sriraman Tallam <tmsriram@google.com>
4948
e1df38aa 4949 * testsuite/Makefile.am: Add -ffunction-sections to compile
4daadc0d
ST
4950 gc_comdat_test files. Add -Wl,--gc-sections to build
4951 gc_comdat_test.
4952 * testsuite/Makefile.in: Regenerate.
4953 * testsuite/gc_comdat_test.sh: Fix the condition around grep.
4954
531813ad
ST
49552009-05-21 Sriraman Tallam <tmsriram@google.com>
4956
4957 * object.cc (Sized_relobj::map_to_kept_section): Return NULL if the
4958 kept comdat section was garbage collected.
4959 * testsuite/Makefile.am: Add test gc_comdat_test.sh.
4960 * testsuite/Makefile.in: Regenerate.
4961 * testsuite/gc_comdat_test.sh: New file.
4962 * testsuite/gc_comdat_test_1.cc: New file.
4963 * testsuite/gc_comdat_test_2.cc: New file.
4964
65514900
CC
49652009-05-19 Doug Kwan <dougkwan@google.com>
4966
4967 * archive.cc (Archive::Archive): Move constructor from archive.h
4968 to here. Initialize no_export_.
4969 (Archive::get_elf_object_for_member): Set no_export flag of object.
4970 * archive.h (Archive::Archive): Move constructor body to
4971 archive.cc.
4972 (Archive::no_export): New method.
4973 (Archive::no_export_): New field.
4974 * object.h (Object::Object): Initialize no_export_ to false.
4975 (Object::no_export, Object::set_no_export): New methods.
4976 (Object::no_export_): New field.
4977 * options.cc (General_options::parse_exclude_libs): New method.
4978 (General_options::check_excluded_libs) Same.
4979 * options.h (exclude_libs): New option.
4980 (General_options::check_excluded_libs): New method declaration.
4981 (General_options::excluded_libs_): New field.
4982 * symtab.cc (Symbol_table::add_from_relobj): Hide symbols with
4983 default or protected visibility if an object has no-export flag set.
4984 testsuite/Makefile.am (check_PROGRAMS): Add exclude_libs_test.
4985 (check_SCRIPTS): Add exclude_libs_test.sh.
4986 (check_DATA): Add exclude_libs_test.syms.
4987 (MOSTLYCLEANFILES): Add exclude_libs_test.syms,
4988 libexclude_libs_test_1.a and libexclude_libs_test_2.a.
4989 (exclude_libs_test_SOURCES, exclude_libs_test_DEPENDENCIES,
4990 exclude_libs_test_LDFLAGS and exclude_libs_test_LDADD): Define.
4991 (exclude_libs_test.syms, libexclude_libs_test_1.a,
4992 libexclude_libs_test_2.a): New rules.
4993 * testsuite/Makefile.in: Regenerate.
4994 * testsuite/exclude_libs_test.c: New file.
4995 * testsuite/exclude_libs_test.sh: Ditto.
4996 * testsuite/exclude_libs_test_1.c: Ditto.
4997 * testsuite/exclude_libs_test_2.c: Ditto.
4998
1b77ea50
ILT
49992009-05-15 Ian Lance Taylor <iant@google.com>
5000
5001 * configure.ac: Check for declarations for cases where libiberty.h
5002 checks HAVE_DECL_xxx.
5003 * configure, config.in: Rebuild.
5004
072fe7ce
ILT
50052009-05-15 Mikolaj Zalewski <mikolajz@google.com>
5006
5007 * gold.h (Incremental_argument_list): Remove (invalid) forward
5008 declaration.
5009 * incremental.cc (Incremental_inputs::report_achive): New method.
5010 (Incremental_inputs::report_object): New method.
5011 (Incremental_inputs::report_script): New method.
5012 (Incremental_inputs::finalize_inputs): New method.
5013 (Incremental_inputs::finalize): Call finalize_inputs().
5014 (Incremental_inputs::sized_create_incremental_inputs_section_data):
5015 Create inputs entries.
5016 * incremental.h (Incremental_input_type): New enum.
5017 (Incremental_inputs::Incremental_input): Initialize new fields.
5018 (Incremental_inputs::report_inputs): New method.
5019 (Incremental_inputs::report_achive): New method.
5020 (Incremental_inputs::report_object): New method.
5021 (Incremental_inputs::report_script): New method.
5022 (Incremental_inputs::finalize_inputs): New method.
5023 (Incremental_inputs::Input_info): New struct.
5024 (Incremental_inputs::Input_info_map): New typedef.
5025 (Incremental_inputs::lock_): New field.
5026 (Incremental_inputs::Inputs_): New field.
5027 (Incremental_inputs::Inputs_map): New field.
5028 * main.cc (main): Call Incremental_input::report_inputs.
5029 * options.h (Input_argument_list): Typedef moved from
5030 Input_arguments.
5031 (Input_file_group::Files): Remove, use ::Input_argument_list.
5032 (Input_file_group::Input_argument_list): Remove, use
5033 ::Input_argument_list.
5034 * plugin.cc (Plugin_manager::add_input_file): Add error in
5035 incremental build.
5036 * read_syms.cc (do_read_syms): Call Incremental_input::report_*
5037 functions.
5038 * script.cc (read_input_script): Call
5039 Incremental_input::report_script.
5040 * script.h (Script_info): New class.
5041
b0481b0b
ILT
50422009-04-27 Ian Lance Taylor <iant@google.com>
5043
5044 * x86_64.cc (do_adjust_output_section): Set entsize to
5045 plt_entry_size.
5046
b22a5a41 50472009-04-23 Elliott Hughes <enh@google.com>
6d1e3092
CD
5048
5049 * output.cc (Output_file::close): After short writes, continue
5050 writing from the correct offset in the buffer being written.
5051
40fde488
CD
50522009-04-23 Chris Demetriou <cgd@google.com>
5053
5054 * configure.ac (HAVE_TR1_UNORDERED_MAP_REHASH): New define.
5055 * configure: Regenerate.
5056 * config.in: Regenerate.
5057 * gold.h: Avoid std::tr1::unordered_map and std::tr1::unordered_set
5058 if HAVE_TR1_UNORDERED_MAP_REHASH is not defined.
5059
3ce2c28e
ILT
50602009-04-21 Mikolaj Zalewski <mikolajz@google.com>
5061
5062 * incremental.cc (Incremental_inputs_header_data): Renamed from
5063 Incremental_input_header_data.
5064 (Incremental_inputs_header_data::data_size): New field.
5065 (Incremental_inputs_header_data::put_input_file_count): Renamed
5066 from input_file_count.
5067 (Incremental_inputs_header_data::put_command_line_offset): Renamed
5068 from command_line_offset.
5069 (Incremental_inputs_header_data::put_reserved): Renamed from
5070 put_reserved.
5071 (Incremental_inputs_entry_data): Renamed from
5072 Incremental_input_entry_data.
5073 (Incremental_inputs_entry_data::data_size): New field.
5074 (Incremental_inputs::report_command_line): New method.
5075 (Incremental_inputs::finalize): New method.
5076 (Incremental_inputs::create_incremental_inputs_data): New method.
5077 (Incremental_inputs::sized_create_incremental_inputs_data): New method.
5078 * incremental.h: New file.
5079 * layout.cc (Layout::Layout): Handle new incremental_inputs_.
5080 (Layout::finalize): Create incremental inputs section in
5081 incremental builds.
5082 (Layout::create_incremental_info_sections): New method.
5083 * layout.h (Layout::incremental_inputs): New method.
5084 (Layout::create_incremental_info_sections): New method.
5085 (Layout::incremental_inputs_): New field.
5086 * main.cc (main): Notify Incremental_input of the command line.
5087
e55bde5e
ILT
50882009-04-01 Ian Lance Taylor <iant@google.com>
5089 Mikolaj Zalewski <mikolajz@google.com>
5090
5091 * gold.h (reserve_unordered_map): Define, three versions, one for
5092 each version of Unordered_map.
5093 * layout.cc (Layout::Layout): Remove options parameter. Add
5094 number_of_input_files parameter. Don't initialize options_.
5095 Initialize number_of_input_files_ and resized_signatures_. Move
5096 sections_are_attached_.
5097 (Layout::layout_group): Reserve space for group_signatures_.
5098 (Layout::find_or_add_kept_section): Change name parameter to be a
5099 reference. Resize signatures_ map when it gets large enough.
5100 (Layout::layout_eh_frame): Use parameters->options() instead of
5101 this->options_.
5102 (Layout::make_output_section): Likewise.
5103 (Layout::attach_allocated_section_to_segment): Likewise.
5104 (Layout::finalize, Layout::create_executable_stack): Likewise.
5105 (Layout::set_segment_offsets, Layout::create_interp): Likewise.
5106 (Layout::finish_dynamic_section, Layout::write_binary): Likewise.
5107 * layout.h (class Layout): Update declarations. Remove options_
5108 field. Add number_of_input_files_ and resized_signatures_
5109 fields. Move sections_are_attached_ field.
5110 * main.cc (main): Pass number of input files to Layout
5111 constructor. Don't pass options.
5112
154b857c
ILT
51132009-03-30 Ian Lance Taylor <iant@google.com>
5114
5115 * ffsll.c (ffsll): Correct implementation.
5116
2f35ab9b
ILT
51172009-03-27 Ian Lance Taylor <iant@google.com>
5118
fd03461a
ILT
5119 * ffsll.c: New file.
5120 * configure.ac: Call AC_REPLACE_FUNCS on ffsll.
5121 * gold.h (ffsll): Declare if HAVE_FFSLL is not defined.
5122 * ftruncate.c (ftruncate): Declare before definition.
5123 * mremap.c (mremap): Likewise.
5124 * pread.c (pread): Likewise.
5125 * configure, Makefile.in, config.in: Rebuild.
5126
2f35ab9b
ILT
5127 * mremap.c: New file.
5128 * configure.ac: Call AC_REPLACE_FUNCS on mremap.
5129 * gold.h (MREMAP_MAYMOVE): Define if HAVE_MREMAP is not defined.
5130 (mremap): Declare if HAVE_MREMAP is not defined.
5131 * configure, Makefile.in, config.in: Rebuild.
5132
33aea2fd
CC
51332009-03-27 Cary Coutant <ccoutant@google.com>
5134
5135 * powerpc.cc (Target_powerpc::check_non_pic): Assert that output is
5136 position independent.
5137 * sparc.cc (Target_sparc::check_non_pic): Likewise.
5138 * x86_64.cc (Target_x86_64::check_non_pic): Likewise.
5139
6d479619
CC
51402009-03-24 Cary Coutant <ccoutant@google.com>
5141
5142 * symtab.h (needs_plt_entry): Check for unsatisfied reference from
5143 an executable.
5144 (needs_dynamic_reloc): Likewise.
5145
afc06bb8
ILT
51462009-03-24 Ian Lance Taylor <iant@google.com>
5147
5148 * yyscript.y (file_cmd): Recognize EXTERN.
5149 (extern_name_list, extern_name_list_body): New nonterminals.
5150 * script.cc (script_add_extern): Define.
5151 * script-c.h (script_add_extern): Declare.
5152
f6060a4d
ILT
51532009-03-24 Rafael Avila de Espindola <espindola@google.com>
5154
5155 * object.cc (is_elf_object): Define.
5156 * object.h (is_elf_object): Declare.
5157 * archive.cc (Archive::get_elf_object_for_member): Call
5158 is_elf_object.
33aea2fd 5159 * readsyms.cc (Read_symbols::do_read_symbols): Likewise.
f6060a4d 5160
26736d8e
ILT
51612009-03-24 Elliott Hughes <enh@google.com>
5162
5163 * output.cc (Output_file::map_anonymous): Define.
5164 (Output_file::map): Use map_anonymous. If the regular mmap fails,
5165 try an anonymous one. Report the size if the mmap fails.
5166 * output.h (class Output_file): Declare map_anonymous.
5167
22fd9730
ILT
51682009-03-24 Ian Lance Taylor <iant@google.com>
5169
5170 * target-select.cc (instantiate_target): Don't acquire the lock if
5171 the instantiated_target_ field has already been set.
5172
cb010894
ILT
51732009-03-23 Ian Lance Taylor <iant@google.com>
5174
7f055c20
ILT
5175 * gold-threads.h (class Initialize_lock): Define.
5176 * gold-threads.cc (class Initialize_lock_once): Define.
5177 (initialize_lock_control): New static variable.
5178 (initialize_lock_pointer): New static variable.
5179 (initialize_lock_once): New static function.
5180 (Initialize_lock::Initialize_lock): Define.
5181 (Initialize_lock::initialize): Define.
5182 * target-select.h: Include "gold-threads.h".
5183 (class Target_selector): Add lock_ and initialize_lock_ fields.
5184 Don't define instantiate_target, just declare it.
5185 * target-select.cc (Target_selector::Target_selector): Initialize
5186 new fields.
5187 (Target_selector::instantiate_target): Define.
5188 * descriptors.h: Include "gold-threads.h".
5189 (class Descriptors): Add initialize_lock_ field.
5190 * descriptors.cc (Descriptors::Descriptors): Initialize new
5191 field.
5192 (Descriptors::open): Use initialize_lock_ field
5193 * errors.h (class Errors): Add initialize_lock_ field.
5194 * errors.cc (Errors::Errors): Initialize new field.
5195 (Errors::initialize_lock): Use initialize_lock_ field.
5196 * powerpc.cc (class Target_selector_powerpc): Remove
5197 instantiated_target_ field. In do_recognize call
5198 instantiate_target rather than do_instantiate_target. In
5199 do_instantiate_target just allocate a new target.
5200 * sparc.cc (class Target_selector_sparc): Likewise.
5201
36959681
ILT
5202 * freebsd.h: New file.
5203 * i386.cc: Include "freebsd.h".
5204 (Target_i386): Derive from Target_freebsd rather than
5205 Sized_target.
5206 (Target_selector_i386): Derive from Target_selector_freebsd rather
5207 than Target_selector.
5208 * x86_64.cc: Include "freebsd.h".
5209 (Target_x86_64): Derive from Target_freebsd rather than
5210 Sized_target.
5211 (Target_selector_x86_64): Derive from Target_selector_freebsd
5212 rather than Target_selector.
5213 * target.h (class Target): Add adjust_elf_header and
5214 do_adjust_elf_header.
5215 * output.cc (Output_file_header:: do_sized_write): Call target
5216 adjust_elf_header routine.
5217 * configure.tgt: Set targ_osabi.
5218 * configure.ac: Define GOLD_DEFAULT_OSABI.
5219 * parameters.cc (Parameters::default_target): Pass
5220 GOLD_DEFAULT_OSABI to select_target.
5221 * target-select.h (class Target_selector): Make instantiate_target
5222 protected rather than private.
5223 * Makefile.am (HFILES): Add freebsd.h.
5224 * configure, Makefile.in, config.in: Rebuild.
5225
cb010894
ILT
5226 * merge.cc (do_add_input_section): Correct pend value. Change
5227 message about last entry not being null terminated from error to
5228 warning.
5229
0e879927
ILT
52302009-03-20 Mikolaj Zalewski <mikolajz@google.com>
5231
5232 * incremental.cc: New file.
5233 * Makefile.am (CCFILES): Add incremental.cc.
5234 * Makefile.in: Rebuild.
5235
41105937
PP
52362009-03-19 Paul Pluzhnikov <ppluzhnikov@google.com>
5237
5238 * layout.cc (Layout::output_section_name): Preserve names
5239 of '.note.' sections.
e1df38aa 5240
60439920
ILT
52412009-03-19 Ian Lance Taylor <iant@google.com>
5242
5243 * descriptors.cc (Descriptors::open): Check that the options are
5244 valid before using them.
5245
0d371ad3
ILT
52462009-03-18 Ian Lance Taylor <iant@google.com>
5247
5248 * script-sections.h: Include <list>.
5249 (class Script_sections): Change Sections_elements from std::vector
5250 to std::list. Typedef public Elements_iterator. Add
5251 orphan_section_placement_, data_segment_align_start_, and
5252 saw_data_segment_align_ fields. Remove data_segment_align_index_
5253 field.
5254 * script-sections.cc (class Orphan_section_placement): New class.
5255 (class Sections_element): Add virtual functions is_relro and
5256 orphan_section_init. Remove virtual function place_orphan_here.
5257 (class Output_section_definition): Add is_relro and
5258 orphan_section_init. Remove place_orphan_here.
5259 (class Orphan_output_section): Likewise.
5260 (Script_sections::Script_sections): Update for field changes.
5261 (Script_sections::data_segment_align): Set saw_data_segment_align_
5262 and data_segment_align_start_, not data_segment_align_index.
5263 (Script_sections::data_segment_relro_end): Check
5264 saw_data_segment_align_. Use data_segment_align_start_ rather
5265 than data_segment_align_index_.
5266 (Script_sections::place_orphan): Rewrite to use
5267 Orphan_section_placement.
5268
9201d894
ILT
52692009-03-17 Ian Lance Taylor <iant@google.com>
5270
9c5b8369
ILT
5271 * archive.cc (Archive::add_symbols): Check for a version attached
5272 to the symbol name in the archive map.
5273 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_11.
5274 (ver_test_11_SOURCES, ver_test_11_DEPENDENCIES): Define.
5275 (ver_test_11_LDFLAGS, ver_test_11_LDADD): Define.
5276 (ver_test_11.a): New target.
5277 * testsuite/Makefile.in: Rebuild.
5278
9201d894
ILT
5279 * configure.ac: Check for chsize and posix_fallocate. Replace
5280 ftruncate.
5281 * ftruncate.c: New file, from gnulib.
5282 * output.cc (posix_fallocate): Define dummy version if not
5283 HAVE_POSIX_FALLOCATE.
5284 (Output_file::map): Call posix_fallocate rather than lseek and
5285 write.
5286 * gold.h (ftruncate): Declare if not HAVE_FTRUNCATE.
5287 * configure, Makefile.in, config.in: Rebuild.
5288
ef4ab7a8 52892009-03-17 Paul Pluzhnikov <ppluzhnikov@google.com>
e1df38aa 5290
ef4ab7a8
PP
5291 * layout.h (Layout::create_note): Add section_name parameter.
5292 * layout.cc (Layout::create_note): Likewise.
5293 (Layout::create_build_id, Layout::create_gold_note): Fix callers.
e1df38aa 5294
8c500701
ILT
52952009-03-17 Ian Lance Taylor <iant@google.com>
5296
e85b18e1
ILT
5297 * descriptors.cc: Include "options.h".
5298 (FD_CLOEXEC, O_CLOEXEC): Define if not defined.
5299 (Descriptors::open): Always use O_CLOEXEC when opening a new
5300 descriptor. If we have a plugin, and O_CLOEXEC was not defined,
5301 then set FD_CLOEXEC.
5302
9efe6174
ILT
5303 * sparc.cc (class Target_sparc): Add has_got_section.
5304 (Target_sparc::Scan::global): If we see _GLOBAL_OFFSET_TABLE_,
5305 make sure we have a GOT section.
5306
5307 * sparc.cc (optimize_tls_reloc): Recognize R_SPARC_TLS_IE_ADD.
5308 (Target_sparc::Scan::local): Likewise.
5309 (Target_sparc::Scan::global): Likewise.
5310 (Target_sparc::Relocate::relocate): Likewise.
5311 (Target_sparc::Relocate::relocate_tls): Likewise.
5312
8c500701
ILT
5313 * symtab.cc (Symbol_table::define_default_version): New function,
5314 broken out of add_from_object.
5315 (Symbol_table::add_from_object): Call define_default_version.
5316 (Symbol_table::define_special_symbol): Add resolve_oldsym
5317 parameter. Change all callers. If the version for a symbol comes
5318 from a version script, resolve it with the symbol with the same
5319 name with no version. Also add the symbol without a version if
5320 appropriate.
5321 (do_define_in_output_data): If resolving with oldsym, don't delete
5322 sym.
5323 (do_define_in_output_segment): Likewise.
5324 (do_define_as_constant): Likewise.
5325 * symtab.h (class Symbol_table): Update declarations.
5326
f1ed28fb
ILT
53272009-03-13 Ian Lance Taylor <iant@google.com>
5328
15f8229b
ILT
5329 * readsyms.cc (Read_symbols::incompatible_warning): New function.
5330 (Read_symbols::requeue): New function.
5331 (Read_symbols::do_read_symbols): If make_elf_object fails because
5332 the target type is not configured, and the file was searched for,
5333 issue a warning and retry with the next directory.
5334 (Add_symbols::run): If the file has an incompatible format, and
5335 it was searched for, requeue the Read_symbols task. On error,
5336 release the object.
5337 * readsyms.h (class Read_symbols): Add dirindex_ field. Add
5338 dirindex parameter to constructor. Change all callers. Declare
5339 incompatible_warning and requeue.
5340 (class Add_symbols): Add dirpath_, dirindex_, mapfile_,
5341 input_argument_ and input_group_ fields. Add them to
5342 constructor. Change all callers.
5343 (class Read_script): Add dirindex_ field. Add it to constructor.
5344 Change all callers.
5345 * archive.cc (Archive::setup): Remove input_objects parameter.
5346 Change all callers.
5347 (Archive::get_file_and_offset): Likewise.
5348 (Archive::read_all_symbols): Likewise.
5349 (Archive::read_symbols): Likewise.
5350 (Archive::get_elf_object_for_member): Remove input_objects
5351 parameter. Add punconfigured parameter. Change all callers.
5352 (Archive::add_symbols): Change return type to bool. Check return
5353 value of include_member.
5354 (Archive::include_all_members): Likewise.
5355 (Archive::include_member): Change return type to bool. Return
5356 false if first included object has incompatible target. Set
5357 included_member_ field.
5358 (Add_archive_symbols::run): If add_symbols returns false, requeue
5359 Read_symbols task.
5360 * archive.h (class Archive): Add included_member_ field.
5361 Initialize it in constructor. Add input_file and searched_for
5362 methods. Update declarations.
5363 (class Add_archive_symbols): Add dirpath_, dirindex_, and
5364 input_argument_ fields. Add them to constructor. Change all
5365 callers.
5366 * script.cc: Include "target-select.h".
5367 (class Parser_closure): Add skip_on_incompatible_target_ and
5368 found_incompatible_target_ fields. Add
5369 skip_on_incompatible_target parameter to constructor. Change all
5370 callers. Add methods skip_on_incompatible_target,
5371 clear_skip_on_incompatible_target, found_incompatible_target, and
5372 set_found_incompatible_target.
5373 (read_input_script): Add dirindex parameter. Change all callers.
5374 If parser finds an incompatible target, requeue Read_symbols
5375 task.
5376 (script_set_symbol): Clear skip_on_incompatible_target in
5377 closure.
5378 (script_add_assertion, script_parse_option): Likewise.
5379 (script_start_sections, script_add_phdr): Likewise.
5380 (script_check_output_format): New function.
5381 * script.h (read_input_script): Update declaration.
5382 * script-c.h (script_check_output_format): Declare.
5383 * yyscript.y (file_cmd): Handle OUTPUT_FORMAT.
5384 (ignore_cmd): Remove OUTPUT_FORMAT.
5385 * fileread.cc (Input_file::Input_file): Add explicit this.
5386 (Input_file::will_search_for): New function.
5387 (Input_file::open): Add pindex parameter. Change all callers.
5388 * fileread.h (class Input_file): Add input_file_argument method.
5389 Declare will_search_for. Update declarations.
5390 * object.cc (make_elf_object): Add punconfigured parameter.
5391 Change all callers.
5392 * object.h (class Object): Make input_file public. Add
5393 searched_for method.
5394 (make_elf_object): Update declaration.
5395 * dirsearch.cc (Dirsearch::find): Add pindex parameter. Use it to
5396 restart search.
5397 * dirsearch.h (class Dirsearch): Update declaration.
5398 * options.h (class General_options): Add --warn-search-mismatch.
5399 * parameters.cc (Parameters::is_compatible_target): New function.
5400 * parameters.h (class Parameters): Declare is_compatible_target.
5401 * workqueue.cc (Workqueue::add_blocker): New function.
5402 * workqueue.h (class Workqueue): Declare add_blocker.
5403
f1ed28fb
ILT
5404 * fileread.cc (Input_file::open): Remove options parameter.
5405 Change all callers.
5406 (Input_file::open_binary): Likewise.
5407 * script.cc (read_input_script): Likewise.
5408 * readsyms.h (class Read_symbols): Remove options_ field. Remove
5409 options parameter from constructor. Change all callers.
5410 (class Read_script): Likewise.
5411 * fileread.h (class Input_file): Update declarations.
5412 * script.h (read_input_script): Update declaration.
5413
34dd024a
NC
54142009-03-10 Nick Clifton <nickc@redhat.com>
5415
5416 * po/es.po: New Spanish translation.
5417
6d71b17c
CC
54182009-03-06 Cary Coutant <ccoutant@google.com>
5419
5420 * options.cc (parse_short_option): Keep dash_z from registering itself.
5421
031cdbed
ILT
54222009-03-03 Ian Lance Taylor <iant@google.com>
5423
5424 PR 9918
5425 * target-reloc.h (relocate_section): Pass output_section to
5426 relocate.
5427 * i386.cc (Target_i386::should_apply_static_reloc): Add
5428 output_section parameter. Change all callers.
5429 (Target_i386::Relocate::relocate): Add output_section parameter.
5430 * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
5431 * sparc.cc (Target_sparc::Relocate::relocate): Likewise.
5432 * powerpc.cc (Target_powerpc::Relocate::relocate): Likewise.
5433 * testsuite/two_file_shared.sh: New script.
5434 * testsuite/Makefile.am (check_SCRIPTS): Add two_file_shared.sh.
5435 (check_DATA): Add two_file_shared.dbg.
5436 (two_file_shared.dbg): New target.
5437 * testsuite/Makefile.in: Rebuild.
5438
15d5fa16
ILT
54392009-03-01 Ian Lance Taylor <iant@google.com>
5440
5441 * configure.ac: Check for byteswap.h.
5442 * configure: Rebuild.
5443 * config.in: Rebuild.
5444
8a4c0b0d
ILT
54452009-03-01 Mikolaj Zalewski <mikolajz@google.com>
5446
5447 * layout.cc (Layout::find_or_add_kept_section): New function.
5448 (Layout::add_comdat): Removed.
5449 * layout.h (struct Kept_section): Move out of class Layout.
5450 Remove trailing underscores from field names. Add group_sections
5451 field. Rename group_ field to is_group. Change all uses.
5452 (class Layout): Declare find_or_add_kept_section, not add_comdat.
5453 * object.cc (Sized_relobj::Sized_relobj): Don't initialize
5454 comdat_groups_ field.
5455 (Sized_relobj::include_section_group): Use
5456 find_or_add_kept_section and Kept_section::group_sections.
5457 (Sized_relobj::include_linkonce_section): Likewise.
5458 * object.cc (class Sized_relobj): Don't define Comdat_group or
5459 Comdat_group_table. Remove find_comdat_group and
5460 add_comdat_group. Remove comdat_groups_ field.
5461 * plugin.cc (include_comdat_group): Use
5462 Layout::find_or_add_kept_section.
5463
b4ecf66b
ILT
54642009-02-28 Ian Lance Taylor <iant@google.com>
5465
14359ca0
ILT
5466 * README: --gc-sections and map files are now supported. Document
5467 some build requirements.
5468
b4ecf66b
ILT
5469 PR 6992
5470 * symtab.cc (Symbol_table::sized_write_section_symbol): In a
5471 relocatable link set the value of the section symbol to zero.
5472 * object.cc (Sized_relobj::do_finalize_local_symbols): In a
5473 relocatable link don't include the section address in the local
5474 symbol value.
5475
0602e05a
ILT
54762009-02-27 Ian Lance Taylor <iant@google.com>
5477
fd9d194f
ILT
5478 PR 6811
5479 * options.h (class Search_directory): Add is_system_directory.
5480 (class General_options): Declare is_in_system_directory.
5481 * options.cc (get_relative_sysroot): Make static.
5482 (get_default_sysroot): Make static.
5483 (General_optoins::is_in_system_directory): New function.
5484 * fileread.cc (Input_file::is_in_system_directory): New function.
5485 * fileread.h (class Input_file): Declare is_in_system_directory.
5486 * object.h (class Object): Add is_in_system_directory.
5487 (class Input_objects): Remove system_library_directory_ field.
5488 * object.cc (Input_objects::add_object): Don't set
5489 system_library_directory_.
5490 (input_objects::found_in_system_library_directory): Remove.
5491 * symtab.cc (Symbol_table::write_globals): Remove input_objects
5492 parameter. Change all callers.
5493 (Symbol_table::sized_write_globals): Likewise.
5494 (Symbol_table::warn_about_undefined_dynobj_symbol): Likewise.
5495 Call Object::is_in_system_directory.
5496 * symtab.h (class Symbol_table): Update declarations.
5497
61edd21f
ILT
5498 PR 5990
5499 * descriptors.h (Open_descriptor): Add is_on_stack field.
5500 * descriptors.cc (Descriptors::open): If the descriptor is on the
5501 top of the stack, remove it. Initialize is_on_stack field.
5502 (Descriptors::release): Only add pod to stack if it is not on the
5503 stack already.
5504 (Descriptors::close_some_descriptor): Clear stack_next and
5505 is_on_stack fields.
5506
e29e076a
ILT
5507 PR 7091
5508 * output.cc (Output_section::find_starting_output_address): Rename
5509 from starting_output_address; add PADDR parameter; change return
5510 type.
5511 * output.h (class Output_section): Declare
5512 find_starting_output_address instead of starting_output_address.
5513 * object.cc (Sized_relobj::do_finalize_local_symbols): Handle a
5514 section symbol for which we can't find a merge section.
5515
0602e05a
ILT
5516 PR 9836
5517 * symtab.cc (Symbol_table::add_from_object): If the visibility is
5518 hidden or internal, force the symbol to be local.
5519 * resolve.cc (Symbol::override_visibility): Define.
5520 (Symbol::override_base): Use override_visibility.
5521 (Symbol_table::resolve): Likewise.
5522 (Symbol::override_base_with_special): Likewise.
5523 (Symbol_table::override_with_special): If the visibility is hidden
5524 or internal, force the symbol to be local.
5525 * symtab.h (class Symbol): Add set_visibility and
5526 override_visibility.
5527 * testsuite/ver_test_1.sh: New file.
5528 * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_1.sh.
5529 (check_DATA): Add ver_test_1.syms.
5530 (ver_test_1.syms): New target.
5531 * testsuite/Makefile.in: Rebuild.
5532
401a9a73
CC
55332009-02-25 Cary Coutant <ccoutant@google.com>
5534
5535 * layout.cc (Layout::choose_output_section): Don't rename sections
5536 when using a linker script that has a SECTIONS clause.
5537 * Makefile.in: Regenerate.
5538
5539 * testsuite/Makefile.am (script_test_5.sh): New test case.
5540 * testsuite/Makefile.in: Regenerate.
5541 * testsuite/script_test_5.cc: New file.
5542 * testsuite/script_test_5.sh: New file.
5543 * testsuite/script_test_5.t: New file.
5544
f488e4b0
CC
55452009-02-13 Rafael Avila de Espindola <espindola@google.com>
5546
5547 * archive.cc (Archive::include_member): Update calls to add_symbols.
5548 * dynobj.cc (Sized_dynobj<size, big_endian>::make_version_map): Add
5549 the Layout argument.
5550 * dynobj.h (do_add_symbols): Add the Layout argument.
5551 * object.cc (Sized_relobj<size, big_endian>::do_add_symbols): Add the
5552 Layout argument.
5553 * object.h (Object::add_symbols): Add the Layout argument.
5554 (Object::do_add_symbols): Add the Layout argument.
5555 (Sized_relobj::do_add_symbols): Add the Layout argument.
5556 * plugin.cc (Sized_pluginobj<size, big_endian>::do_add_symbols):
5557 Unify the two versions.
5558 (Add_plugin_symbols): Remove.
5559 * plugin.h (Pluginobj::add_symbols, Pluginobj::do_add_symbols): Remove.
5560 (Sized_pluginobj::do_add_symbols): Unify the two versions.
5561 (Add_plugin_symbols): Remove.
5562 * readsyms.cc (Read_symbols::do_read_symbols): Update call to
5563 Add_symbols. Use Add_symbols instead of Add_plugin_symbols.
5564 (Add_symbols::run): Make it work with Pulginobj.
5565
89dd1680
ILT
55662009-02-06 Ian Lance Taylor <iant@google.com>
5567
5568 * object.cc (Sized_relobj::do_layout): Make info message start
5569 with lower case letter.
5570
266d0a74
ILT
55712009-02-06 Mikolaj Zalewski <mikolajz@google.com>
5572
602b464e
ILT
5573 * binary.cc: Fix file comment.
5574
266d0a74
ILT
5575 * options.h (enum Incremental_disposition): Define.
5576 (class General_options): Add new options: --incremental,
5577 --incremental_changed, --incremental_unchanged,
5578 --incremental_unknown. Add incremental_disposition_ and
5579 implicit_incremental_ fields.
5580 (General_options::incremental_disposition): New function.
5581 (class Position_dependent_options): Add incremental_disposition
5582 option.
5583 (Position_dependent_options::copy_from_options): Set incremental
5584 dispositions.
5585 * options.cc (General_options::parse_incremental_changed): New
5586 function.
5587 (General_options::parse_incremental_unchanged): New function.
5588 (General_options::parse_incremental_unknown): New function.
5589 (General_options::General_options): Initialize new fields
5590 incremental_disposition_ and implicit_incremental_.
5591 (General_options::finalize): Check for uasge of --incremental-*
5592 without --incremental.
5593
f073bbf7
CD
55942009-02-06 Chris Demetriou <cgd@google.com>
5595
5596 * gold.h (gold_undefined_symbol): Change to take only a Symbol
5597 pointer and to report location as the file name associated with
5598 the symbol.
5599 (gold_undefined_symbol_at_location): New function to replace the
5600 old gold_undefined_symbol functionality.
5601 * target-reloc.h (relocate_section): Update to use
5602 gold_undefined_symbol_at_location.
5603 * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
5604 Call gold_undefined_symbol function rather than gold_error.
5605 * errors.h (Errors::undefined_symbol): Take location as a
5606 string, rather than calculating it from a relocation.
5607 * errors.cc (Errors::fatal): Print "fatal error:" before the
5608 formatted message.
5609 (Errors::error, Errors::error_at_location): Print "error: "
5610 before the formatted message.
5611 (Errors::undefined_symbol): Take location as a string, rather
5612 than calculating it from a relocation.
5613 (gold_undefined_symbol_at_location): New function akin to
5614 old gold_undefined_symbol, calculates location from relocation.
5615 (gold_undefined_symbol): Change to take only a Symbol pointer
5616 and to report location as the file name associated with the symbol.
5617 * testsuite/debug_msg.sh: Update for changed error messages.
5618 * testsuite/undef_symbol.sh: Likewise.
5619
8e94a90c
ILT
56202009-02-04 Duncan Sands <baldrick@free.fr>
5621
5622 PR 9812
5623 * reduced_debug_output.h
5624 (Output_reduced_debug_abbrev_section::failed): Use format for
5625 gold_warning.
5626 (Output_reduced_debug_info_section::faild): Likewise.
5627
88a0e15b
ILT
56282009-01-31 Mikolaj Zalewski <mikolajz@google.com>
5629
5630 * script.cc (Lazy_demangler): New class.
5631 (Version_script_info::get_symbol_version_helper): Demangle a
5632 symbol only once.
5633
5efc7cd2
CC
56342009-01-29 Cary Coutant <ccoutant@google.com>
5635
5636 * i386.cc (Target_i386::Relocate::relocate): Recognize non-PIC calls
5637 to __tls_get_addr.
5638 * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
5639
e0ebcf42
ILT
56402009-01-28 Ian Lance Taylor <iant@google.com>
5641
5efc7cd2 5642 * version.cc (version_string): Bump to 1.9.
75fe7426 5643
e0ebcf42
ILT
5644 * gold.h: Include <cstring> and <stdint.h>.
5645 * version.cc: Include <cstdio>.
5646 * object.cc (Sized_relobj::do_layout): Initialize gc_sd to avoid a
5647 warning.
5648 * reduced_debug_output.cc (insert_into_vector): Rename from
5649 Insert_into_vector; change all callers. Use Swap_unaligned to
5650 avoid aliasing issue; remove union since it is unnecessary.
5651
8e2813be 56522009-01-27 Sriraman Tallam <tmsriram@google.com>
6d03d481
ST
5653
5654 * Makefile.am (CCFILES): Add gc.cc.
5655 (HFILES): Add gc.h.
5656 * Makefile.in: Regenerate.
5657 * gold.cc (Gc_runner): New class.
5658 (queue_initial_tasks): Call garbage collection related tasks
5659 when corresponding options are invoked.
5660 (queue_middle_gc_tasks): New function.
5661 (queue_middle_tasks): Reorder tasks to allow relocs to be read and
5662 processed early before laying out sections during garbage collection.
5663 * gold.h (queue_middle_gc_tasks): New function.
5664 (is_prefix_of): Move from "layout.cc".
5665 * i386.cc (Target_i386::gc_process_relocs): New function.
5666 * layout.cc (is_prefix_of): Remove. Move to "gold.h"
5667 * main.cc (main): Create object of class "Garbage_collection".
5668 * object.cc (Relobj::copy_symbols_data): New function.
5669 (Relobj::is_section_name_included): New function.
e1df38aa
NC
5670 (Sized_relobj::do_layout): Allow this function to be called twice
5671 during garbage collection and defer layout of section during the
6d03d481
ST
5672 first call.
5673 * object.h (Relobj::get_symbols_data): New function.
5674 (Relobj::is_section_name_included): New function.
5675 (Relobj::copy_symbols_data): New function.
5676 (Relobj::set_symbols_data): New function.
5677 (Relobj::get_relocs_data): New function.
5678 (Relobj::set_relocs_data): New function.
5679 (Relobj::is_output_section_offset_invalid): New pure virtual function.
5680 (Relobj::gc_process_relocs): New function.
5681 (Relobj::do_gc_process_relocs): New pure virtual function.
5682 (Relobj::sd_): New data member.
5683 (Sized_relobj::is_output_section_offset_invalid): New function.
5684 (Sized_relobj::do_gc_process_relocs): New function.
5685 * options.h (General_options::gc_sections): Modify to not be a no-op.
5686 (General_options::print_gc_sections): New option.
5687 * plugin.cc (Plugin_finish::run): Remove function call to
5688 Plugin_manager::layout_deferred_objects. Move it to "gold.cc".
5689 * powerpc.cc (Target_powerpc::gc_process_relocs): New function.
5690 * reloc.cc (Read_relocs::run): Add task to process relocs and
5691 determine unreferenced sections when doing garbage collection.
5692 (Gc_process_relocs): New class.
5693 (Sized_relobj::do_gc_process_relocs): New function.
5694 (Sized_relobj::do_scan_relocs): Don't try to scan the relocs for
5695 sections that are garbage collected.
5696 * reloc.h (Gc_process_relocs): New class.
5697 * sparc.cc (Target_sparc::gc_process_relocs): New function.
5698 * symtab.cc (Symbol::should_add_dynsym_entry): Do not add entries for
5699 symbols whose corresponding sections are garbage collected.
5700 (Symbol_table::Symbol_table): Add new parameter for the garbage
5701 collection object.
5702 (Symbol_table::gc_mark_undef_symbols): New function.
5703 (Symbol_table::gc_mark_symbol_for_shlib): New function.
5704 (Symbol_table::gc_mark_dyn_syms): New function.
5705 (Symbol_table::resolve): Do not treat symbols seen in dynamic objects
5706 as garbage.
5707 (Symbol_table::add_from_object): Likewise.
5708 (Symbol_table::add_from_relobj): When building shared objects, do not
5709 treat externally visible symbols as garbage.
5710 (Symbol_table::sized_finalize_symbol): Do not check dynamic symbol
5711 table information for static and relocatable links.
5712 * symtab.h (Symbol_table::set_gc): New function.
5713 (Symbol_table::gc): New function.
5714 (Symbol_table::gc_mark_undef_symbols): New function.
5715 (Symbol_table::gc_mark_symbol_for_shlib): New function.
5716 (Symbol_table::gc_mark_dyn_syms): New function.
5717 (Symbol_table::gc_): New data member.
e1df38aa 5718 * target.h (Sized_target::gc_process_relocs): New pure virtual
6d03d481
ST
5719 function.
5720 * x86_64.cc (Target_x86_64::gc_process_relocs): New function.
5721 * testsuite/testfile.cc (Target_test::gc_process_relocs): New function.
5722
3b293544
CF
57232009-01-20 Chris Faylor <me.sourceware@sourceware.org>
5724
5725 * options.h (General_options::gc_sections): Define as a no-op for now.
5726 (General_options::no_keep_memory): Ditto.
5727 (General_options::Bshareable): Define.
5728 * options.cc (General_options::finalize): Honor -Bshareable.
5729
83d22aa8
AS
57302009-01-20 Andreas Schwab <schwab@suse.de>
5731
5732 * powerpc.cc (Powerpc_relocate_functions::rel16_ha): Don't try to
5733 read the value in the contents, since we don't use it. Use the
5734 template endianness when writing.
5735 (Relocate::relocate): Use it for R_PPC_REL16_HA.
5736
cd536b21
AS
57372009-01-19 Andreas Schwab <schwab@suse.de>
5738
5739 * configure.tgt (powerpc64-*): Fix targ_obj.
5740
99e9a495
ILT
57412009-01-15 Ian Lance Taylor <iant@google.com>
5742
5743 * object.cc (Sized_relobj::write_local_symbols): Don't write out
5744 local symbols when stripping all symbols.
5745
bbbfea06
CC
57462009-01-14 Cary Coutant <ccoutant@google.com>
5747
99e9a495 5748 * output.cc (Output_reloc): Add explicit instantiations.
bbbfea06 5749
0f7c0701
CC
57502009-01-14 Cary Coutant <ccoutant@google.com>
5751
5752 * archive.cc (Archive::get_elf_object_for_member): Remove call
5753 to File_read::claim_for_plugin.
5754 * descriptors.cc (Descriptors::open): Remove reference to
5755 is_claimed.
5756 (Descriptors::claim_for_plugin): Remove.
5757 * descriptors.h (Descriptors::claim_for_plugin): Remove.
5758 (Descriptors::is_claimed): Remove.
5759 (claim_descriptor_for_plugin): Remove.
5760 * fileread.cc (File_read::claim_for_plugin): Remove.
5761 * fileread.h (File_read::claim_for_plugin): Remove.
5762 (File_read::descriptor): Reopen descriptor if necessary.
5763 * plugin.cc (Plugin::load): Add two new APIs to transfer vector.
5764 (Plugin_manager::all_symbols_read): Add task parameter. Change
5765 all callers.
5766 (Plugin_manager::get_input_file): New function.
5767 (Plugin_manager::release_input_file): New function.
5768 (Pluginobj::Pluginobj): Add filesize parameter and initialize
5769 corresponding data member.
5770 (Sized_pluginobj::Sized_pluginobj): Add filesize parameter
5771 and pass to base constructor. Change all callers.
5772 (get_input_file, release_input_file): New functions.
5773 (make_sized_plugin_object): Add filesize parameter. Change all callers.
5774 * plugin.h (Plugin_manager::Plugin_manager): Initialize task_ member.
5775 (Plugin_manager::all_symbols_read): Add task parameter.
5776 (Plugin_manager::get_input_file): New function.
5777 (Plugin_manager::release_input_file): New function.
5778 (Plugin_manager::task_): New data member.
5779 (Pluginobj::Pluginobj): Add filesize parameter.
5780 (Pluginobj::filename): New function.
5781 (Pluginobj::descriptor): New function.
5782 (Pluginobj::filesize): New function.
5783 (Pluginobj::filesize_): New data member.
5784 (Sized_pluginobj::Sized_pluginobj): Add filesize parameter.
5785 * readsyms.cc (Read_symbols::do_read_symbols): Remove call to
5786 File_read::claim_for_plugin; use Object::unlock to unlock the file.
5787
5788 * testsuite/Makefile.am (plugin_test_4): New test case for plugins
5789 with archive libraries.
5790 * testsuite/Makefile.in: Regenerate.
5791 * testsuite/plugin_test.c (struct sym_info): New type.
5792 (get_input_file, release_input_file): New static variables.
5793 (onload): Capture new transfer vector entries.
5794 (claim_file_hook): Stop reading at end of file according to filesize.
5795 Factor out parsing of readelf output into separate function.
5796 (all_symbols_read_hook): Exercise get_input_file and release_input_file
5797 APIs and get the source file name from the symbol table. Convert
5798 source file name to corresponding object file name. Print info
5799 message when adding new input files.
5800 (parse_readelf_line): New function.
5801 * testsuite/plugin_test_1.sh: Add checks for new info messages.
5802 * testsuite/plugin_test_2.sh: Likewise.
5803 * testsuite/plugin_test_3.sh: Likewise.
5804 * testsuite/plugin_test_4.sh: New test case.
5805
62a6d109
ILT
58062009-01-07 Ian Lance Taylor <iant@google.com>
5807
5808 * version.cc (version_string): Bump to 1.8.
5809
483620e8
CC
58102008-12-23 Cary Coutant <ccoutant@google.com>
5811
5812 * gold.cc (gold_exit): Call plugin cleanup handlers on exit.
5813 * plugin.cc (Plugin_manager::finish): Rename as
5814 layout_deferred_objects. Move cleanup to separate function.
5815 (Plugin_manager::cleanup): New function.
5816 (Plugin_finish::run): Call layout_deferred_objects and cleanup
5817 separately.
5818 * plugin.h (Plugin_manager::finish): Rename as
5819 layout_deferred_objects.
5820 (Plugin_manager::cleanup): New function.
5821 (Plugin_manager::cleanup_done): New field.
5822
d66a9eb3
CC
58232008-12-23 Cary Coutant <ccoutant@google.com>
5824
5825 * plugin.cc (is_visible_from_outside): New function.
5826 (Pluginobj::get_symbol_resolution_info): Call is_visible_from_outside
5827 so we don't return "IR only" status for exported symbols or -r links.
5828
5829 * testsuite/Makefile.am (plugin_test_3): New test case.
5830 * testsuite/Makefile.in: Regenerate.
5831 * testsuite/plugin_test_3.sh: New file.
5832
5995b570
CC
58332008-12-22 Cary Coutant <ccoutant@google.com>
5834
5835 * object.cc (Sized_relobj::layout_section): New function.
5836 (Sized_relobj::do_layout): Defer layout of input sections until after
5837 plugin has provided replacement files.
5838 (Sized_relobj::do_layout_deferred_sections): New function.
5839 * object.h (Relobj::set_section_offset): Remove virtual keyword.
5840 (Relobj::layout_deferred_sections): New function.
5841 (Relobj::do_layout_deferred_sections): New function.
5842 (Sized_relobj::do_layout_deferred_sections): New function.
5843 (Sized_relobj::layout_section): New function.
5844 (Sized_relobj::Deferred_layout): New structure.
5845 (Sized_relobj::deferred_layout_): New field.
5846 * plugin.cc (Plugin_manager::finish): Renamed, was cleanup.
5847 Change all callers. Layout deferred sections.
5848 (class Plugin_finish): Renamed, was Plugin_cleanup. Change all
5849 references.
5850 (Plugin_hook::run): Move code from do_plugin_hook inline.
5851 (Plugin_hook::do_plugin_hook): Remove.
5852 * plugin.h (Plugin_manager::Plugin_manager): Add missing initializers.
5853 (Plugin_manager::finish): Renamed, was cleanup.
5854 (Plugin_manager::should_defer_layout): New function.
5855 (Plugin_manager::add_deferred_layout_object): New function.
5856 (Plugin_manager::Deferred_layout_list): New type.
5857 (Plugin_manager::deferred_layout_objects_): New field.
5858 (Plugin_hook::do_plugin_hook): Remove.
5859
ee769c88
ILT
58602008-12-17 Ian Lance Taylor <iant@google.com>
5861
5862 * options.h (class General_options): Add --no case for
5863 --export-dynamic.
5864
abc8dcba
CC
58652008-12-16 Cary Coutant <ccoutant@google.com>
5866
5867 * plugin.cc (Plugin::load): Move LDPT_MESSAGE to front of transfer
5868 vector.
5869 (Plugin_manager::claim_file): Create plugin object even if
5870 plugin did not call the add_symbols callback.
5871 (Plugin_obj::get_symbol_resolution_info): Guard against plugin
5872 asking for more symbols than were added.
5873 * testsuite/Makefile.am (plugin_test_1): Add test case with
5874 no global symbols.
5875 (empty.syms): New target.
5876 * testsuite/Makefile.in: Regenerate.
5877 * testsuite/plugin_test.c (claim_file_hook): Add new debug
5878 message. Don't call add_symbols if no globals.
5879 (all_symbols_read_hook): Don't provide replacement for empty
5880 claimed file.
5881
b0074644
ILT
58822008-12-12 Ian Lance Taylor <iant@google.com>
5883
68943102
ILT
5884 * target-reloc.h (Default_scan_relocatable_relocs): Only discard
5885 r_type == 0 for a local symbol with r_sym == 0.
5886 (scan_relocatable_relocs): Pass r_sym to
5887 local_non_section_strategy.
5888 * reloc.cc (Emit_relocs_strategy::local_non_section_strategy): Add
5889 r_sym parameter.
5890
b0074644
ILT
5891 * configure.ac: Update test for TLS descriptors: they are
5892 supported as of glibc 2.9.
5893 * configure: Rebuild.
5894
c2508178
ILT
58952008-12-11 Ian Lance Taylor <iant@google.com>
5896
5897 PR 7091
5898 * target-reloc.h (Default_scan_relocatable_relocs): For each
5899 function, map r_type == 0 to RELOC_DISCARD.
5900
2756a258
CC
59012008-12-10 Cary Coutant <ccoutant@google.com>
5902
5903 * layout.cc (Layout::add_comdat): Allow COMDAT group from a replacement
5904 object to override a kept COMDAT group from a plugin object.
5905
bb6f53d3
ILT
59062008-12-09 Ian Lance Taylor <iant@google.com>
5907
fbc558e1
ILT
5908 PR 7088
5909 * yyscript.y (file_cmd): Handle INPUT.
5910
bb6f53d3
ILT
5911 * testsuite/initpri1.c: Change all declarations to be full
5912 prototypes by adding void, to avoid compiler warnings.
5913
4674ecfc
CC
59142008-12-05 Rafael Avila de Espindola <espindola@google.com>
5915
5916 * options.cc (General_options::parse_plugin_opt): New.
5917 (General_options::add_plugin): The argument now is just the filename.
5918 (General_options::add_plugin_option): New.
5919 * options.h (plugin_opt): New.
5920 (add_plugin): Change argument name.
5921 (add_plugin_option): New.
5922 * plugin.cc (Plugin::load): Don't parse the plugin option.
5923 * plugin.h (Plugin::Plugin): Rename argument. Init filename_.
5924 (Plugin::add_option): New.
5925 (Plugin::args_): Change type.
5926 (Plugin::filename_): New.
5927 (Plugin_manager::add_plugin_option): New.
5928 * testsuite/Makefile.am (plugin_test_1): Use new syntax.
5929 * testsuite/Makefile.in: Regenerate.
5930
fd06b4aa
CC
59312008-12-05 Cary Coutant <ccoutant@google.com>
5932
5933 * layout.cc (Layout::include_section): Check for SHF_EXCLUDE.
5934 Handle --strip-lto-sections option.
5935 * options.h (strip_lto_sections): New option.
5936
6c52134c
CC
59372008-12-01 Cary Coutant <ccoutant@google.com>
5938
5939 * plugin.cc (ld_plugin_message): Change format parameter to const.
5940 Fix mismatch between new[] and delete.
5941
a45248e0
CC
59422008-11-14 Cary Coutant <ccoutant@google.com>
5943
5944 * reloc.cc (Sized_relobj::do_read_relocs): Use constant invalid_address
5945 instead of -1U.
5946
c82fbeee
CS
59472008-11-05 Craig Silverstein <csilvers@google.com>
5948
5949 * options.cc (General_options::parse_dynamic_list): New function.
5950 * options.h (General_options): New flags dynamic_list,
5951 dynamic_list_data, dynamic_list_cpp_new, and
5952 dynamic_list_cpp_typeinfo. New variable dynamic_list_.
5953 (General_options::in_dynamic_list): New function.
5954 * script.cc (Lex::Mode): New enum DYNAMIC_LIST.
5955 (Lex::can_start_name): Add support for DYNAMIC_LIST mode.
5956 (Lex::can_continue_name): Likewise.
5957 (yylex): Likewise.
5958 (read_script_file): New parameter script_options.
5959 (read_dynamic_list): New function.
5960 (Script_options::define_dynamic_list): New function.
5961 (dynamic_list_keyword_parsecodes): New variable.
5962 (dynamic_list_keywords): New variable.
5963 * script.h (Script_options::define_dynamic_list): New function
5964 prototype.
5965 (read_dynamic_list): New function prototype.
5966 * symtab.cc (strprefix): New macro.
5967 (Symbol::should_add_dynsym_entry): Support dynamic_list,
5968 dynamic_list_data, dynamic_list_cpp_new, and
5969 dynamic_list_cpp_typeinfo.
5970 * yyscript.y (PARSING_DYNAMIC_LIST): New token.
5971 (dynamic_list_expr): New rule.
5972 (dynamic_list_nodes): Likewise.
5973 (dynamic_list_node): Likewise.
5974 * testsuite/Makefile.am (dynamic_list): New test.
5975 * testsuite/Makefile.in: Regenerated.
5976 * testsuite/dynamic_list.t: New file.
5977 * testsuite/dynamic_list.sh: New file.
5978
e0bb29a5
CS
59792008-11-05 Craig Silverstein <csilvers@google.com>
5980
5981 * testsuite/tls_test_c.c: Add prototype for t11 and t11_last.
5982 * testsuite/tls_test_c.c (t11): Add explicit "void" to prototype.
5983 (t11_last): Likewise.
5984 * testsuite/ver_test_6.c (main): Likewise.
5985
4e1e25e0
CC
59862008-10-07 Cary Coutant <ccoutant@google.com>
5987
5988 * options.c (General_options::finalize): Add check for -static and
5989 -shared.
5990 * gold.cc (queue_middle_tasks): Assert that list of dynamic objects
5991 is not empty.
5992
92f03fcb
CC
59932008-10-02 Cary Coutant <ccoutant@google.com>
5994
5995 * plugin.cc (make_sized_plugin_object): Fix conditional
5996 compilation to work when not all targets are enabled.
5997
fbd8a257
CC
59982008-09-29 Cary Coutant <ccoutant@google.com>
5999
6000 * archive.cc (Archive::get_file_and_offset): Use filename instead
6001 of name to get library path.
6002 (Archive::include_member): Unlock external member of a thin archive.
6003
6004 * testsuite/Makefile.am (TEST_AR): New variable.
6005 (thin_archive_test_1): New test.
6006 (thin_archive_test_2): New test.
81636b3f
CC
6007 * testsuite/Makefile.in: Regenerate.
6008 * testsuite/thin_archive_main.cc: New file.
6009 * testsuite/thin_archive_test_1.cc: New file.
6010 * testsuite/thin_archive_test_2.cc: New file.
6011 * testsuite/thin_archive_test_3.cc: New file.
6012 * testsuite/thin_archive_test_4.cc: New file.
fbd8a257 6013
eff45813
CC
60142008-09-29 Cary Coutant <ccoutant@google.com>
6015
6016 * mapfile.cc (Mapfile::print_input_section): Change -1U to -1ULL.
6017 * object.cc (Sized_relobj::do_layout): Use constant invalid_address
6018 instead of -1U.
6019 (Sized_relobj::do_finalize_local_symbols): Likewise.
6020 (Sized_relobj::map_to_kept_section): Likewise.
6021 * object.h (Sized_relobj::invalid_address): New constant.
6022 (Sized_relobj::do_output_section_offset): Check for invalid_address
6023 and return -1ULL.
6024 * output.cc (Output_reloc::local_section_offset): Use constant
6025 invalid_address instead of -1U.
6026 (Output_reloc::get_address): Likewise.
6027 (Output_section::output_address): Change -1U to -1ULL.
6028 * output.h (Output_reloc::invalid_address): New constant.
6029 * reloc.cc (Sized_relobj::write_sections): Use constant
6030 invalid_address instead of -1U.
6031 (Sized_relobj::relocate_sections): Likewise.
6032 * symtab.cc (Symbol_table::sized_finalize_symbol): Handle symbol
6033 values for merge sections.
6034 * target-reloc.h (relocate_for_relocatable): Use constant
6035 invalid_address instead of -1U.
6036
89fc3421
CC
60372008-09-19 Cary Coutant <ccoutant@google.com>
6038
6039 Add plugin functionality for link-time optimization (LTO).
6040 * configure.ac (plugins): Add --enable-plugins option.
6041 * configure: Regenerate.
6042 * config.in: Regenerate.
6043 * Makefile.am (LIBDL): New variable.
6044 (CCFILES): Add plugin.cc.
6045 (HFILES): Add plugin.h.
6046 (ldadd_var): Add LIBDL.
6047 * Makefile.in: Regenerate.
6048
6049 * archive.cc: Include "plugin.h".
6050 (Archive::setup): Don't preread archive symbols when using a plugin.
6051 (Archive::get_file_and_offset): Add memsize parameter. Change callers.
6052 (Archive::get_elf_object_for_member): Call plugin hooks for claiming
6053 files.
6054 (Archive::include_member): Add symbols from plugin objects.
6055 * archive.h (Archive::get_file_and_offset): Add memsize parameter.
6056 * descriptors.cc (Descriptors::open): Check for file descriptors
6057 abandoned by plugins.
6058 (Descriptors::claim_for_plugin): New function.
6059 * descriptors.h (Descriptors::claim_for_plugin): New function.
6060 (Open_descriptor::is_claimed): New field.
6061 (claim_descriptor_for_plugin): New function.
6062 * fileread.cc (File_read::claim_for_plugin): New function.
6063 * fileread.h (File_read::claim_for_plugin): New function.
6064 (File_read::descriptor): New function.
6065 * gold.cc: Include "plugin.h".
6066 (queue_initial_tasks): Add task to call plugin hooks for generating
6067 new object files.
6068 * main.cc: Include "plugin.h".
6069 (main): Load plugin libraries.
6070 * object.h (Pluginobj): Declare.
6071 (Object::pluginobj): New function.
6072 (Object::do_pluginobj): New function.
6073 (Object::set_target): New function.
6074 * options.cc: Include "plugin.h".
6075 (General_options::parse_plugin): New function.
6076 (General_options::General_options): Initialize plugins_ field.
6077 (General_options::add_plugin): New function.
6078 * options.h (Plugin_manager): Declare.
6079 (General_options): Add --plugin option.
6080 (General_options::has_plugins): New function.
6081 (General_options::plugins): New function.
6082 (General_options::add_plugin): New function.
6083 (General_options::plugins_): New field.
6084 * plugin.cc: New file.
6085 * plugin.h: New file.
6086 * readsyms.cc: Include "plugin.h".
6087 (Read_symbols::do_read_symbols): Check for archive before checking
6088 for ELF file. Call plugin hooks to claim files.
6089 * resolve.cc (Symbol_table::resolve): Record when symbol is referenced
6090 from a real object file; force override when processing replacement
6091 files.
6092 * symtab.cc (Symbol::init_fields): Initialize in_real_elf_ field.
6093 (Symbol::init_base_object): Likewise.
6094 (Symbol::init_base_output_data): Likewise.
6095 (Symbol::init_base_output_segment): Likewise.
6096 (Symbol::init_base_constant): Likewise.
6097 (Symbol::init_base_undefined): Likewise.
6098 (Symbol::output_section): Assert that object is not a plugin.
6099 (Symbol_table::add_from_pluginobj): New function.
6100 (Symbol_table::sized_finalize_symbol): Treat symbols from plugins as
6101 undefined.
6102 (Symbol_table::sized_write_globals): Likewise.
6103 (Symbol_table::add_from_pluginobj): Instantiate template.
6104 * symtab.h (Sized_pluginobj): Declare.
6105 (Symbol::in_real_elf): New function.
6106 (Symbol::set_in_real_elf): New function.
6107 (Symbol::in_real_elf_): New field.
6108 (Symbol_table::add_from_pluginobj): New function.
6109
6110 * testsuite/Makefile.am (AM_CFLAGS): New variable.
6111 (LIBDL): New variable.
6112 (LDADD): Add LIBDL.
6113 (check_PROGRAMS): Add plugin_test_1 and plugin_test_2.
6114 (check_SCRIPTS): Add plugin_test_1.sh and plugin_test_2.sh.
6115 (check_DATA): Add plugin_test_1.err and plugin_test_2.err.
6116 (MOSTLYCLEANFILES): Likewise.
6117 * testsuite/Makefile.in: Regenerate.
6118 * testsuite/plugin_test.c: New file.
6119 * testsuite/plugin_test_1.sh: New file.
6120 * testsuite/plugin_test_2.sh: New file.
6121
de31bda5
ILT
61222008-09-16 Ian Lance Taylor <iant@google.com>
6123
9c2d0ef9
ILT
6124 * target-reloc.h (relocate_section): Check whether a symbol is
6125 defined by the ABI before reporting an undefined symbol error.
6126 * target.h (Target::is_defined_by_abi): Make parameter const.
6127 (Target::do_is_defined_by_abi): Likewise.
6128 * i386.cc (Target_i386::do_is_defined_by_abi): Likewise.
6129 * powerpc.cc (Target_powerpc::do_is_defined_by_abi): Likewise.
6130 * sparc.cc (Target_sparc::do_is_defined_by_abi): Likewise.
6131 * x86_64.cc (Target_x86_64::do_is_defined_by_abi): Likewise.
6132 * testsuite/Makefile.am (tls_test_shared.so): Add -Wl,-z,defs.
6133 * testsuite/Makefile.in: Rebuild.
6134
de31bda5
ILT
6135 * fileread.cc (make_view): Add casts to avoid warning.
6136
9fa33bee
AO
61372008-09-16 Alexandre Oliva <aoliva@redhat.com>
6138
6139 * i386.cc (Target_i386::define_tls_base_symbol): Update comments.
6140 * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
6141
183fd0e3
AO
61422008-09-16 Alexandre Oliva <aoliva@redhat.com>
6143
6144 * options.h (General_options::output_is_executable): New.
6145 (General_options::output_is_pie): New.
6146 * i386.cc (Target_i386::define_tls_base_symbol): Use SEGMENT_START
6147 for shared libraries.
6148 * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
6149
7be8330a
CD
61502008-09-11 Chris Demetriou <cgd@google.com>
6151
6152 * options.h (origin): New -z option.
6153 * layout.cc (Layout:finish_dynamic_section): If "-z origin"
6154 is specified, set DF_ORIGIN in DT_FLAGS and set DF_1_ORIGIN
6155 in DT_FLAGS_1.
6156
a9caad02
CC
61572008-09-05 Cary Coutant <ccoutant@google.com>
6158
6159 * fileread.cc (File_read::make_view): Add check for attempt to map
6160 beyond end of file.
6161
ae6dce4d
CC
61622008-09-05 Cary Coutant <ccoutant@google.com>
6163
6164 * symtab.cc (Symbol_table::add_from_dynobj): Fix typos in
6165 explicit instantiations.
6166
d7ab2a47
KVH
61672008-08-28 Kris Van Hees <kris.van.hees@oracle.com>
6168
6169 PR gold/6858
6170 * options.cc (General_options::finalize): Allow undefined symbols
6171 in shlibs if linking -shared.
6172
6173 PR gold/6859
6174 * symtab.cc (Symbol::init_base_undefined): Mark explicitly undefined
6175 symbols as not needing a dynsym entry.
6176
1e52a9c1
CS
61772008-08-20 Craig Silverstein <csilvers@google.com>
6178
6179 * fileread.cc (File_read::open): Do not lock the file unless it
6180 was successfully opened.
6181
d85c80a3
CC
61822008-08-14 Cary Coutant <ccoutant@google.com>
6183
6184 * x86_64.cc (Target_x86_64::Relocate::relocat_tls):
6185 Use addend for DTPOFF32, DTPOFF64, and TPOFF32 relocs.
6186 * testsuite/tls_test.cc (struct int128): 128-bit struct
6187 for testing TLS relocs with non-zero addend.
6188 (v12): New TLS variable.
6189 (t12): New test.
6190 (t_last): Add check for v12.
6191 * testsuite/tls_test.h (t12): New function.
6192 * testsuite/tls_test_main.cc (thread_routine): Call new test.
6193
2d924fd9
ILT
61942008-08-13 Ian Lance Taylor <iant@google.com>
6195
6196 * layout.cc (Layout::attach_allocated_section_to_segment): Don't
6197 set tls_segment_ or relro_segment_.
6198 (Layout::make_output_segment): Set tls_segment_ and relro_segment_
6199 when appropriate.
6200 * output.h (Output_section::clear_is_relro): New function.
6201 * output.cc (Output_segment::add_output_section): Handle SHF_TLS
6202 sections specially even when output_data_ is empty.
6203 (Output_segment::maximum_alignment): When first section is relro,
6204 only force alignment for PT_LOAD segments.
6205 * script.cc (script_data_segment_align): New function.
6206 (script_data_segment_relro_end): New function.
6207 * script-c.h (script_data_segment_align): Declare.
6208 (script_data_segment_relro_end): Declare.
6209 * script-sections.h (class Script_sections): Declare
6210 data_segment_align and data_segment_relro_end. Add fields
6211 segment_align_index_ and saw_relro_end_.
6212 * script-sections.cc (class Sections_element): Add set_is_relro
6213 virtual function. Add new bool* parameter to place_orphan_here.
6214 Add get_output_section virtual function.
6215 (class Output_section_definition): Add set_is_relro. Add new
6216 bool* parameter to place_orphan_here. Add get_output_section.
6217 Add is_relro_ field.
6218 (Output_section_definition::Output_section_definition): Initialize
6219 evaluated_address_, evaluated_load_address, evaluated_addralign_,
6220 and is_relro_ fields.
6221 (Output_section_definition::place_orphan_here): Add is_relro
6222 parameter.
6223 (Output_section_definition::set_section_addresses): Set relro for
6224 output section.
6225 (Output_section_definition::alternate_constraint): Likewise.
6226 (class Orphan_output_section): Add new bool* parameter to
6227 place_orphan_here. Add get_output_section.
6228 (Orphan_output_section::place_orphan_here): Add is_relro
6229 parameter.
6230 (Script_sections::Script_sections): Initialize
6231 data_segment_align_index_ and saw_relro_end_.
6232 (Script_sections::data_segment_align): New function.
6233 (Script_sections::data_segment_relro_end): New function.
6234 (Script_sections::place_orphan): Set or clear is_relro.
6235 (Script_sections::set_section_addresses): Force alignment of first
6236 TLS section.
6237 * yyscript.y (exp): Call script_data_segment_align and
6238 script_data_segment_relro_end.
6239 * testsuite/relro_script_test.t: New file.
6240 * testsuite/relro_test.cc (using_script): Declare.
6241 (t1, t2): Test using_script.
6242 * testsuite/Makefile.am (check_PROGRAMS): Add relro_script_test.
6243 (relro_script_test_SOURCES): Define.
6244 (relro_script_test_DEPENDENCIES): Define.
6245 (relro_script_test_LDFLAGS): Define.
6246 (relro_script_test_LDADD): Define.
6247 (relro_script_test.so): New target.
6248 * testsuite/Makefile.in: Rebuild.
6249
f827c9a9
CC
62502008-08-06 Cary Coutant <ccoutant@google.com>
6251
6252 * archive.cc (Archive::total_archives, Archive::total_members)
6253 (Archive::total_members_loaded): New variables.
6254 (Archive::setup): Add parameter. Add option to preread
6255 archive symbols.
6256 (Archive::read_armap): Add counter.
6257 (Archive::get_file_and_offset): New function.
6258 (Archive::get_elf_object_for_member): New function.
6259 (Archive::read_all_symbols): New function.
6260 (Archive::read_symbols): New function.
6261 (Archive::add_symbols): Add counters.
6262 (Archive::include_all_members): Use armap to find members if it's
6263 already built.
6264 (Archive::include_member): Skip reading symbols if already read.
6265 Factored code into Archive::get_file_and_offset and
6266 Archive::get_elf_object_for_member. Changed call to
6267 Mapfile::report_include_archive_member.
6268 (Archive::print_stats): New function.
6269 * archive.h: Declare Object and Read_symbols_data classes.
6270 (Archive::Archive): Add initializers for new members.
6271 (Archive::setup): Add parameter.
6272 (Archive::print_stats): New function.
6273 (Archive::total_archives, Archive::total_members)
6274 (Archive::total_members_loaded): New variables.
6275 (Archive::get_file_and_offset): New function.
6276 (Archive::get_elf_object_for_member): New function.
6277 (Archive::read_all_symbols): New function.
6278 (Archive::read_symbols): New function.
6279 (Archive::Archive_member): New class.
6280 (Archive::members_): New member.
6281 (Archive::num_members_): New member.
6282 * main.cc: Include archive.h.
6283 (main): Call Archive::print_stats.
6284 * mapfile.cc (Mapfile::report_include_archive_member): Delete
6285 archive parameter; member_name is now the fully-decorated name.
6286 * mapfile.h (Mapfile::report_include_archive_member): Likewise.
6287 * options.h: (General_options): Add --preread-archive-symbols option.
6288 * readsyms.cc (Read_symbols::do_read_symbols): Change call to
6289 Archive::setup.
6290
de4c45bd
ILT
62912008-08-04 Ian Lance Taylor <iant@google.com>
6292
6293 * symtab.h (Symbol::use_plt_offset): New function.
6294 * i386.cc (Relocate::relocate): Call Symbol::use_plt_offset.
6295 * powerpc.cc (Relocate::relocate): Likewise.
6296 * sparc.cc (Relocate::relocate): Likewise.
6297 * x86_64.cc (Relocate::relocate): Likewise.
6298 * testsuite/weak_plt.sh: New test.
6299 * testsuite/weak_plt_main.cc: New test.
6300 * testsuite/weak_plt_shared.cc: New test.
6301 * testsuite/Makefile.am (check_SCRIPTS): Add weak_plt.sh.
6302 (check_PROGRAMS): Add weak_plt.
6303 (check_DATA): Add weak_plt_shared.so.
6304 (weak_plt_main_pic.o, weak_plt): New targets.
6305 (weak_plt_shared_pic.o, weak_plt_shared.so): New targets.
6306 * testsuite/Makefile.in: Rebuild.
6307
6308 * testsuite/Makefile.am (weak_alias_test_1.so): Depend upon
6309 gcctestdir/ld.
6310 (weak_alias_test_2.so, weak_alias_test_4.so): Likewise.
6311 * testsuite/Makefile.in: Rebuild.
6312
323ee3f4
AM
63132008-08-04 Alan Modra <amodra@bigpond.net.au>
6314
6315 * Makefile.am (POTFILES.in): Set LC_ALL=C.
6316 * Makefile.in: Regenerate.
6317 * po/POTFILES.in: Regenerate.
6318
7c07ecec
ILT
63192008-07-29 Ian Lance Taylor <iant@google.com>
6320
6321 * script.cc (Script_options::finalize_symbols): Finalize SECTIONS
6322 symbols before other symbols.
6323 * testsuite/script_test_2.cc (test_addr): Declare.
6324 (test_addr_alias): Declare.
6325 (main): Check that test_addr and test_addr_alias have the right
cd536b21 6326 values.
7c07ecec
ILT
6327 * testsuite/script_test_2.t: Define test_addr_alias and
6328 test_addr.
6329
5778530e
ILT
63302008-07-24 Ian Lance Taylor <iant@google.com>
6331
2a00e4fb
ILT
6332 PR 5990
6333 * descriptors.cc: New file.
6334 * descriptors.h: New file.
6335 * gold-threads.h (class Hold_optional_lock): New class.
6336 * fileread.cc: Include "descriptors.h".
6337 (File_read::~File_read): Release descriptor rather than closing
6338 it.
6339 (File_read::open) [file]: Call open_descriptor rather than open.
6340 Set is_descriptor_opened_.
6341 (File_read::open) [memory]: Assert that descriptor is not open.
6342 (File_read::reopen_descriptor): New function.
6343 (File_read::release): Release descriptor.
6344 (File_read::do_read): Make non-const. Reopen descriptor.
6345 (File_read::read): Make non-const.
6346 (File_read::make_view): Reopen descriptor.
6347 (File_read::do_readv): Likewise.
6348 * fileread.h (class File_read): Add is_descriptor_opened_ field.
6349 Update declarations.
6350 * layout.cc: Include "descriptors.h".
6351 (Layout::create_build_id): Use open_descriptor rather than open.
6352 * output.cc: Include "descriptors.h".
6353 (Output_file::open): Use open_descriptor rather than open.
6354 * archive.cc (Archive::const_iterator): Change Archive to be
6355 non-const.
6356 (Archive::begin, Archive::end): Make non-const.
6357 (Archive::count_members): Likewise.
6358 * archive.h (class Archive): Update declarations.
6359 * object.h (Object::read): Make non-const.
6360 * Makefile.am (CCFILES): Add descriptors.cc.
6361 (HFILES): Add descriptors.h.
6362 * Makefile.in: Rebuild.
6363
801647d1
ILT
6364 PR 6716
6365 * gold.h: Always include <clocale>. Add Solaris workarounds
6366 following code in binutils/sysdep.h.
6367
5edd166e
ILT
6368 PR 6048
6369 * ehframe.cc (Eh_frame::add_ehframe_input_section): Check whether
6370 this->eh_frame_hdr_ is NULL before using it.
6371
c89ad728
ILT
6372 * dynobj.cc (Versions::Versions): Update comment.
6373
aa86f06b
ILT
6374 * dynobj.cc (Versions::Versions): If there is an soname, use it as
6375 the base version name.
6376
5778530e
ILT
6377 * stringpool.cc (Stringpool_template::add_with_length): Set key to
6378 array size plus one.
6379 (Stringpool_template::set_string_offsets): Subtract one from key
6380 before using it as an array index.
6381 (Stringpool_template::get_offset_with_length): Likewise.
6382 (Stringpool_template::write_to_buffer): Likewise.
6383 * stringpool.h (Stringpool_template::get_offset_from_key):
6384 Likewise.
6385
057ead22
ILT
63862008-07-23 Ian Lance Taylor <iant@google.com>
6387
7f649c59
ILT
6388 PR 6658
6389 * object.h (Merged_symbol_value::value): Do our best to handle a
6390 negative addend.
6391
057ead22
ILT
6392 PR 6647
6393 * script.cc (Version_script_info::get_versions): Don't add empty
6394 version tag to return value.
6395 (Version_script_info::get_symbol_version_helper): Change return
6396 type to bool. Add pversion parameter. Change all callers.
6397 (script_register_vers_node): Don't require a non-NULL tag.
6398 * script.h (class Version_script_info): Update declarations.
6399 (Version_script_info::get_symbol_version): Change return type to
6400 bool. Add version parameter. Change all callers.
6401 * symtab.cc (Sized_symbol::add_from_relobj): Rework version
6402 handling. Handle an empty version from a version script.
6403 (Symbol_table::define_special_symbol): Likewise.
6404 * testsuite/ver_test_10.script: New file.
6405 * testsuite/ver_test_10.sh: New file.
6406 * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_10.sh.
6407 (check_DATA): Add ver_test_10.syms.
6408 (ver_test_10.syms, ver_test_10.so): New target.
6409 * testsuite/Makefile.in: Rebuild.
6410
58e54ac2
CD
64112008-07-23 Simon Baldwin <simonb@google.com>
6412
6413 * symtab.cc (Symbol_table::sized_write_symbol): Only set st_size
6414 to zero for undefined symbols from dynamic libraries.
6415
95d14cd3
ILT
64162008-07-23 Ian Lance Taylor <iant@google.com>
6417
6418 * symtab.cc (Symbol_table::resolve): Remove version parameter.
6419 Change all callers.
6420 * symtab.h (class Symbol_table): Update declaration.
6421 * testsuite/ver_test_9.cc: New file.
6422 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_9.
6423 (ver_test_9_SOURCES, ver_test_9_DEPENDENCIES): Define.
6424 (ver_test_9_LDFLAGS, ver_test_9_LDADD): Define.
6425 (ver_test_9.so, ver_test_9.o): New targets.
6426 * testsuite/Makefile.in: Rebuild.
6427
92de84a6
ILT
64282008-07-22 Ian Lance Taylor <iant@google.com>
6429
34810851
ILT
6430 * options.h (class General_options): Define --check-sections.
6431 * layout.cc (Layout::set_segment_offsets): Handle
6432 --check-sections.
6433
af6156ef
ILT
6434 * options.h (class General_options): Define -n/--nmagic and
6435 -N/--omagic.
6436 * options.cc (General_options::finalize): For -n/--nmagic or
6437 -N/--omagic, set -static.
6438 * layout.cc (Layout::attach_allocated_section_to_segment): If
6439 -N/--omagic, don't put read-only and read-write sections in
6440 different segments.
6441 (Layout::find_first_load_seg): If -N/--omagic, don't insist on
6442 finding a read-only segment.
6443 (Layout::set_segment_offsets): If -N/--omagic or -n/--nmagic,
6444 don't set the minimum segment alignment to the common page size,
6445 and don't set the file offset to the address modulo the page size.
6446 * script-sections.cc (Script_sections::create_segments): If
6447 -n/--omagic, don't put read-only and read-write sections in
6448 different segments.
6449
92de84a6
ILT
6450 * cref.cc: New file.
6451 * cref.h: New file.
6452 * options.h (class General_options): Add --print-symbol-counts.
6453 * main.cc (main): Issue defined symbol report if requested.
6454 * archive.cc (Archive::interpret_header): Make into a const member
6455 function.
6456 (Archive::add_symbols): Call Input_objects::archive_start and
6457 archive_stop.
6458 (Archive::const_iterator): Define new class.
6459 (Archive::begin, Archive::end): New functions.
6460 (Archive::include_all_members): Rewrite to use iterator.
6461 (Archive::count_members): New function.
6462 * archive.h (class Archive): Update declarations.
6463 (Archive::filename): New function.
6464 * object.cc: Include "cref.h".
6465 (Sized_relobj::Sized_relobj): Initialize defined_count_.
6466 (Sized_relobj::do_get_global_symbol_counts): New function.
6467 (Input_objects::add_object): Add object to cross-referencer.
6468 (Input_objects::archive_start): New function.
6469 (Input_objects::archive_stop): New function.
6470 (Input_objects::print_symbol_counts): New function.
6471 * object.h: Declare Cref and Archive.
6472 (Object::get_global_symbol_counts): New function.
6473 (Object::do_get_global_symbol_counts): New pure virtual function.
6474 (class Sized_relobj): Add defined_count_ field. Update
6475 declarations.
6476 (class Input_objects): Add cref_ field. Update constructor.
6477 Update declarations.
6478 * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize symbols_ and
6479 defined_count_.
6480 (Sized_dynobj::do_add_symbols): Allocate symbols_ if printing
6481 symbol counts.
6482 (Sized_dynobj::do_get_global_symbol_counts): New function.
6483 * dynobj.h (class Sized_dynobj): Add fields symbols_ and
6484 defined_count_. Update declarations. Define Symbols typedef.
6485 * symtab.cc (Symbol_table::add_from_relobj): Add defined
6486 parameter. Change all callers.
6487 (Symbol_table::add_from_dynobj): Add sympointers and defined
6488 parameters. Change all callers.
6489 * symtab.h (class Symbol_table): Update declarations.
6490 * Makefile.am (CCFILES): Add cref.cc.
6491 (HFILES): Add cref.h.
6492 * Makefile.in: Rebuild.
6493
3f7c5e1d
CD
64942008-07-22 Simon Baldwin <simonb@google.com>
6495
6496 * symtab.cc (Symbol_table::sized_write_symbol): Set symbol size
6497 to zero when writing undefined symbols.
6498
e0b64032
ILT
64992008-07-22 Ian Lance Taylor <iant@google.com>
6500
6501 * output.cc (Output_section::add_input_section): Don't try to
6502 merge empty merge sections.
6503
096b02cf
CS
65042008-07-21 Craig Silverstein <csilvers@google.com>
6505
6506 * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
6507 Include symbol version in error message.
cd536b21 6508
1d1f116d
CD
65092008-07-20 Chris Demetriou <cgd@google.com>
6510
cd536b21 6511 * configure.ac (gold_cv_c_random_seed): New configured variable.
1d1f116d
CD
6512 (RANDOM_SEED_CFLAGS): New substituted variable.
6513 * Makefile.am (AM_CFLAGS, AM_CXXFLAGS): Add $(RANDOM_SEED_CFLAGS).
6514 * configure: Rebuild.
6515 * Makefile.in: Likewise.
6516 * testsuite/Makefile.in: Likewise.
6517
a18f591e
ILT
65182008-07-18 Ian Lance Taylor <iant@google.com>
6519
6520 * symtab.cc (Symbol_table::add_from_object): Rewrite the case
6521 where we see NAME/NULL and NAME/VERSION as separate symbols.
6522 * testsuite/ver_test_main.cc (main): Call t4.
6523 (t4, t4_2a): Define.
6524 * testsuite/ver_test_2.cc (t4_2): Define.
6525 * testsuite/ver_test_2.script: Put t4_2a in VER2.
6526 * testsuite/ver_test_4.cc (t4_2a): Define.
6527 * testsuite/ver_test_4.script: Put t4_2a in VER2.
6528 * testsuite/ver_test.h (t4, t4_2, t4_2a): Declare.
6529
c6e3f6ed
ILT
65302008-07-17 Ian Lance Taylor <iant@google.com>
6531
6532 * dynobj.cc (Versions::add_def): If we give an error about a
6533 missing version, go ahead and create the version anyhow.
6534
ef9beddf
ILT
65352008-07-10 Ian Lance Taylor <iant@google.com>
6536
6537 Handle output sections with more than 0x7fffffff bytes.
6538 * object.h (class Relobj): Change map_to_output_ to
6539 output_sections_, and just keep a section pointer. Change all
6540 uses. Move comdat group support to Sized_relobj.
6541 (Relobj::is_section_specially_mapped): Remove.
6542 (Relobj::output_section): Remove poff parameter. Change all
6543 callers.
6544 (Relobj::output_section_offset): New function.
6545 (Relobj::set_section_offset): Rewrite.
6546 (Relobj::map_to_output): Remove.
6547 (Relobj::output_sections): New function.
6548 (Relobj::do_output_section_offset): New pure virtual function.
6549 (Relobj::do_set_section_offset): Likewise.
6550 (class Sized_relobj): Add section_offsets_ field. Add comdat
6551 group support from Relobj. Update declarations.
6552 (Sized_relobj::get_output_section_offset): New function.
6553 (Sized_relobj::do_output_section_offset): New function.
6554 (Sized_relobj::do_set_section_offset): New function.
6555 * object.cc (Relobj::output_section_address): Remove.
6556 (Sized_relobj::Sized_relobj): Initialize new fields.
6557 (Sized_relobj::include_section_group): Cast find_kept_object to
6558 Sized_relobj.
6559 (Sized_relobj::include_linkonce_section): Likewise.
6560 (Sized_relobj::do_layout): Use separate arrays for output section
6561 and output offset.
6562 (Sized_relobj::do_count_local_symbols): Change map_to_output to
6563 output_sections.
6564 (Sized_relobj::do_finalize_local_symbols): Change map_to_output to
6565 output_sections and section_offsets.
6566 (Sized_relobj::write_local_symbols): Likewise.
6567 (map_to_kept_section): Compute output address directly.
6568 * reloc.cc (Sized_relobj::do_read_relocs): Change map_to_output to
6569 output_sections and section_offsets.
6570 (Sized_relobj::write_sections): Likewise.
6571 (Sized_relobj::relocate_sections): Likewise.
6572 * symtab.cc (sized_finalize_symbol): Use output_section_offset.
6573 * output.h (class Output_reloc): Update declarations. Change
6574 u2_.relobj to Sized_relobj*.
6575 (class Output_data_reloc): Change add functions to use
6576 Sized_relobj*.
6577 * output.cc (Output_reloc::Output_reloc): Change relobj to
6578 Sized_relobj*.
6579 (Output_reloc::local_section_offset): Change return type to
6580 Elf_Addr. Use get_output_section_offset.
6581 (Output_reloc::get_address): Likewise.
6582 (Output_section::is_input_address_mapped): Don't call
6583 is_section_specially_mapped.
6584 (Output_section::output_offset): Likewise.
6585 (Output_section::output_address): Likewise.
6586 (Output_section::starting_output_address): Likewise.
6587 * copy-relocs.cc (Copy_relocs::copy_reloc): Change object
6588 parameter to Sized_relobj*.
6589 (Copy_relocs::need_copy_reloc): Likewise.
6590 (Copy_relocs::save): Likewise.
6591 * copy-relocs.h (class Copy_relocs): Update declarations.
6592 (class Copy_relocs::Copy_reloc_entry): Change constructor to use
6593 Sized_relobj*. Change relobj_ field to Sized_relobj*.
6594 * target-reloc.h (relocate_for_relocatable): Change
6595 offset_in_output_section type to Elf_Addr. Change code that uses
6596 it as well.
6597 * layout.cc (Layout::layout): Always set *off.
6598 * mapfile.cc (Mapfile::print_input_section): Use
6599 output_section_offset.
6600 * i386.cc (Target_i386::copy_reloc): Change object parameter to
6601 Sized_relobj*.
6602 * powerpc.cc (Target_powerpc::copy_reloc): Likewise.
6603 * sparc.cc (Target_sparc::copy_reloc): Likewise.
6604 * x86_64.cc (Target_x86_64::copy_reloc): Likewise.
6605
5cb66f97
ILT
66062008-07-03 Ian Lance Taylor <iant@google.com>
6607
6608 * layout.cc (Layout::include_section): Do not discard unrecognized
6609 SHT_STRTAB sections.
6610
afe47622
CS
66112008-06-30 Craig Silverstein <csilvers@cs.stanford.edu>
6612
6613 * script.cc (Lex::can_continue_name): Make '?' allowable in
6614 version-script names.
6615 * testsuite/version_script.map: Change glob pattern to use '?'
6616
5adf9721
ILT
66172008-06-30 Manish Singh <yosh@gimp.org>
6618
6619 PR 6585
6620 * symtab.cc (Symbol_table::add_undefined_symbols_from_command_line):
6621 Correct typo.
6622
e6fde208
ILT
66232008-06-30 Ian Lance Taylor <iant@google.com>
6624
6625 PR 6660
6626 PR 6682
6627 * powerpc.cc (Powerpc_relocate_functions::addr16_ha) [both
6628 versions]: Don't try to read the value in the contents, since we
6629 don't use it. Use the template endianness when writing.
6630
3f2e6a2d
CC
66312008-06-25 Cary Coutant <ccoutant@google.com>
6632
6633 * fileread.cc (File_read::make_view): Assert on zero-length view.
6634 * object.cc (Sized_relobj::do_read_symbols): Don't try to read
6635 symbol table when there are no symbols to read.
6636
c43d3a48
CS
66372008-06-23 Craig Silverstein <csilvers@google.com>
6638
6639 * version.cc (version_string): Bump to 1.7
6640
5f494ea0
CS
66412008-06-18 Craig Silverstein <csilvers@google.com>
6642
6643 * powerpc.cc (Powerpc_relocate_functions::addr16_ha): cast
6644 constant 0xFFFF to type Valtype.
6645 (Powerpc_relocate_functions::rel16_ha): Likewise.
6646
c42e122e
ILT
66472008-06-17 Ian Lance Taylor <iant@google.com>
6648
f34787f8
ILT
6649 * output.h (Output_section::Input_section): Initialize p2align_ to
6650 zero for Output_section_data constructors.
6651 (Output_section::Input_section::addralign): If not an input
6652 section, return the alignment of the Output_section_data.
6653 * testsuite/copy_test.cc: New file.
6654 * testsuite/copy_test_1.cc: New file.
6655 * testsuite/copy_test_2.cc: New file.
6656 * testsuite/Makefile.am (check_PROGRAMS): Add copy_test.
6657 (copy_test_SOURCES, copy_test_DEPENDENCIES): New variables.
6658 (copy_test_LDFLAGS, copy_test_LDADD): New variables.
6659 (copy_test_1_pic.o, copy_test_1.so): New targets.
6660 (copy_test_2_pic.o, copy_test_2.so): New targets.
6661 * testsuite/Makefile.in: Rebuild.
6662
c42e122e
ILT
6663 * script-sections.cc (Script_sections::place_orphan): Initialize
6664 local variable exact.
6665
ce3ac18a
DE
66662008-06-13 David Edelsohn <edelsohn@gnu.org>
6667
6668 * powerpc.cc (Output_data_plt_powerpc::do_write): 8 + 4 = 0xC.
6669
42cacb20
DE
66702008-06-12 David Edelsohn <edelsohn@gnu.org>
6671 David S. Miller <davem@davemloft.net>
6672
6673 * powerpc.cc: New file.
6674 * Makefile.am (TARGETSOURCES): Add powerpc.cc
6675 (ALL_TARGETOBJS): Add powerpc.$(OBJEXT)
6676 * configure.tgt: Add entries for powerpc-* and powerpc64-*.
6677 * Makefile.in: Rebuild.
6678
7b308235
ILT
66792008-06-09 Ian Lance Taylor <iant@google.com>
6680
6681 * testsuite/relro_test.cc: Include <cstdio>, <cstdlib>, and
6682 <exception>.
6683 (throwing, orig_terminate): New static variables.
6684 (terminate_handler): New static function.
6685 (t2): Set terminate handler.
6686
f0b886e3
ILT
66872008-06-05 Kris Van Hees <kris.van.hees@oracle.com>
6688
6689 PR 6584
cd536b21 6690 * binary.cc (Binary_to_elf::sized_convert): Fix .data
f0b886e3
ILT
6691 alignment.
6692
3e90f135
CC
66932008-05-30 Cary Coutant <ccoutant@google.com>
6694
6695 * archive.cc (Archive::include_all_members) Correct to step
6696 over symbol table and extended name table in thin archives.
6697
e09ad04a
ILT
66982008-05-29 Kris Van Hees <kris.van.hees@oracle.com>
6699
6700 PR 6407
6701 * target-reloc.h (relocate_for_relocatable): Fix new_offset
6702 calculation.
6703
62b01cb5
ILT
67042008-05-28 Caleb Howe <cshowe@google.com>
6705
6706 * reduced_debug_output.cc: New file.
6707 * reduced_debug_output.h: New file.
92de84a6 6708 * options.h (class General_options): Add --strip-debug-non-line.
62b01cb5
ILT
6709 * options.cc (General_options::finalize): Add strip_debug_non_line
6710 to the strip heirarchy.
6711 * layout.h (class Layout): Add debug_abbrev_ and debug_info_
6712 fields.
6713 * layout.cc: Include "reduced_debug_output.h".
6714 (Layout::Layout): Initialize new fields.
6715 (line_only_debug_sections): New static array.
6716 (is_lines_only_debug_sections): New static inline function.
6717 (Layout::include_section): Handle --strip-debug-non-line.
6718 (Layout::make_output_section): If --strip-debug-non-line, build
6719 new output sections for .debug_abbrev and .debug_info.
6720 * dwarf_reader.cc (read_unsigned_LEB_128): Move to namespace
6721 gold. Warn about possible overflow.
6722 (read_signed_LEB_128): Likewise.
6723 * dwarf_reader.h: (read_unsigned_LEB_128): Declare.
6724 (read_signed_LEB_128): Declare.
6725 * Makefile.am (CCFILES): Add reduced_debug_output.cc.
6726 (HFILES): Add reduced_debug_output.h.
6727 * Makefile.in: Rebuild.
6728
7d9e3d98
ILT
67292008-05-21 Ian Lance Taylor <iant@google.com>
6730
6731 * mapfile.cc: New file.
6732 * mapfile.h: New file.
6733 * options.h (class General_options): Add -M/--print-map and -Map.
6734 * options.cc (General_options::finalize): Make -M equivalent to
6735 -Map -.
6736 * main.cc: Include <cstdio> and "mapfile.h".
6737 (main): Open mapfile if requested.
6738 * gold.cc (class Middle_runner): Add mapfile_ field. Update
6739 constructor. Change caller.
6740 (queue_initial_tasks): Add mapfile parameter. Change caller.
6741 (queue_middle_tasks): Likewise.
6742 * gold.h (queue_initial_tasks, queue_middle_tasks): Update
6743 declarations.
6744 * archive.cc: Include "mapfile.h".
6745 (Archive::add_symbols): Add mapfile parameter. Change all
6746 callers. Pass mapfile, symbol, and reason to include_member.
6747 (Archive::include_all_members): Add mapfile parameter. Change all
6748 callers.
6749 (Archive::include_member): Add mapfile, sym, and why parameters.
6750 Change all callers. Report inclusion to map file.
6751 * archive.h: Include "fileread.h".
6752 (class Archive): Update declarations.
6753 (Archive::file): New const method.
6754 (class Add_archive_symbols): Add mapfile_ field. Update
6755 constructor. Change all callers.
6756 * readsyms.h (class Read_symbols): Likewise.
6757 (class Finish_group): Likewise.
6758 (class Read_script): Likewise.
6759 * common.cc: Include "mapfile.h".
6760 (Symbol_table::allocate_commons): Add mapfile parameter. Change
6761 all callers.
6762 (Symbol_table::do_allocate_commons): Likewise.
6763 (Symbol_table::do_allocate_commons_list): Likewise. Report common
6764 symbol allocation to mapfile.
6765 * common.h (class Allocate_commons_task): Add mapfile_ field.
6766 Update constructor. Change all callers.
6767 * symtab.h (class Symbol_table): Update declarations.
6768 * layout.cc: Include "mapfile.h".
6769 (Layout_task_runner::run): Print information to mapfile.
6770 (Layout::create_gold_note): Change Output_data_fixed_space to
6771 Output_data_zero_fill.
6772 (Layout::create_build_id): Likewise.
6773 (Layout::print_to_mapfile): New function.
6774 * layout.h (class Layout_task_runner): Add mapfile_ field. Update
6775 constructor. Change caller.
6776 (class Layout): Declare print_to_mapfile.
6777 * output.cc (Output_section::Input_section::print_to_mapfile): New
6778 function.
6779 (Output_section::add_input_section): If producing a map, always
6780 add to input_sections_ list.
6781 (Output_section::do_print_to_mapfile): New function.
6782 (Output_segment::print_sections_to_mapfile): New function.
6783 (Output_segment::print_section_list_to_mapfile): New function.
6784 * output.h: Include "mapfile.h".
6785 (Output_data::print_to_mapfile): New function.
6786 (Output_data::do_print_to_mapfile): New virtual function.
6787 (Output_segment_headers::do_print_to_mapfile): New function.
6788 (Output_file_header::do_print_to_mapfile): New function.
6789 (Output_data_const::do_print_to_mapfile): New function.
6790 (class Output_data_const_buffer): Add map_name_ field. Update
6791 constructor. Change all callers. Add do_print_to_mapfile
6792 function.
6793 (class Output_data_fixed_space): Likewise.
6794 (class Output_data_space): Likewise.
6795 (class Output_data_zero_fill): New class.
6796 (Output_data_strtab::do_print_to_mapfile): New function.
6797 (Output_data_reloc_base::do_print_to_mapfile): New function.
6798 (Output_relocatable_relocs::do_print_to_mapfile): New function.
6799 (Output_data_group::do_print_to_mapfile): New function.
6800 (Output_data_got::do_print_to_mapfile): New function.
6801 (Output_data_dynamic::do_print_to_mapfile): New function.
6802 (Output_symtab_xindex::do_print_to_mapfile): New function.
6803 (class Output_section): Declare do_print_to_mapflie. Declare
6804 print_to_mapfile in Input_section.
6805 (class Output_segment): Declare new functions.
6806 * object.h (Sized_relobj::symbol_count): New function.
6807 * script-sections.cc
6808 (Output_section_element_dot_assignment::set_section_addresses):
6809 Change Output_data_fixed_space to Output_data_zero_fill.
6810 (Output_data_expression::do_print_to_mapfile): New function.
6811 * script.cc (read_input_script): Add mapfile parameter. Change
6812 all callers.
6813 * script.h (read_input_script): Update declaration.
6814 * ehframe.h (Eh_frame_hdr::do_print_to_mapfile): New function.
6815 (Eh_frame::do_print_to_mapfile): New function.
6816 * merge.h (Output_merge_data::do_print_to_mapfile): New function.
6817 (Output_merge_string::do_print_to_mapfile): New function.
6818 * i386.cc (Output_data_plt_i386::do_print_to_mapfile): New
6819 function.
6820 * sparc.cc (Output_data_plt_sparc::do_print_to_mapfile): New
6821 function.
6822 * x86_64.cc (Output_data_plt_x86_64::do_print_to_mapfile): New
6823 function.
6824 * Makefile.am (CCFILES): Add mapfile.cc.
6825 (HFILES): Add mapfile.h.
6826 * Makefile.in: Rebuild.
6827
9f1d377b
ILT
68282008-05-19 Ian Lance Taylor <iant@google.com>
6829
6830 * options.h (class General_options): Add -z relro.
6831 * layout.cc (Layout::Layout): Initialize relro_segment_.
6832 (Layout::add_output_section_data): Return the output section.
6833 (Layout::make_output_section): Rcognize relro sections and mark
6834 them appropriately.
6835 (Layout::attach_allocated_section_to_segment): Put relro sections
6836 in a PT_GNU_RELRO segment.
6837 (Layout::create_initial_dynamic_sections): Mark the .dynamic
6838 section as relro.
6839 (Layout::segment_precedes): Sort PT_GNU_RELRO segments after
6840 PT_TLS segments.
6841 (Layout::linkonce_mapping): Map d.rel.ro.local to
6842 .data.rel.ro.local.
6843 (Layout::output_section_name): Us .data.rel.ro.local for any
6844 section which begins with that.
6845 * layout.h (class Layout): Update add_output_section_data
6846 declaration. Add relro_segment_ field.
6847 * output.cc (Output_section::Output_section): Initialize is_relro_
6848 and is_relro_local_ fields.
6849 (Output_segment::add_output_section): Group relro sections.
6850 (Output_segment::is_first_section_relro): New function.
6851 (Output_segment::maximum_alignment): If there is a relro section,
6852 align the segment to the common page size.
6853 (Output_segment::set_section_addresses): Track whether we are
6854 looking at relro sections. If the last section is a relro
6855 section, align to the common page size.
6856 (Output_segment::set_section_list_addresses): Add in_relro
6857 parameter. Change all callers. Align to the page size when
6858 moving from relro to non-relro section.
6859 (Output_segment::set_offset): Align memsz of a PT_GNU_RELRO
6860 segment.
6861 * output.h (class Output_section): Add is_relro_ and
6862 is_relro_local_ fields.
6863 (Output_section::is_relro): New function.
6864 (Output_section::set_is_relro): New function.
6865 (Output_section::is_relro_local): New function.
6866 (Output_section::set_is_relro_local): New function.
6867 (class Output_segment): Update declarations.
6868 * i386.cc (Target_i386::got_section): Mark .got section as relro.
6869 * sparc.cc (Target_sparc::got_section): Likewise.
6870 * x86_64.cc (Target_x86_64::got_section): Likewise.
6871 * testsuite/relro_test_main.cc: New file.
6872 * testsuite/relro_test.cc: New file.
6873 * testsuite/Makefile.am (check_PROGRAMS): Add relro_test.
6874 (relro_test_SOURCES, relro_test_DEPENDENCIES): New variables.
6875 (relro_test_LDFLAGS, relro_test_LDADD): New variables.
6876 (relro_test.so, relro_test_pic.o): New targets.
6877 * testsuite/Makefile.in: Rebuild.
6878
a984ee1d
ILT
68792008-05-16 Ian Lance Taylor <iant@google.com>
6880
01676dcd
ILT
6881 * output.cc (Output_segment::add_output_section): Remove front
6882 parameter.
6883 * output.h (class Output_segment): Remove
6884 add_initial_output_section and overloaded add_output_section.
6885 Update declaration of remaining add_output_section.
6886 * layout.cc (Layout::create_interp): Call add_output_section
6887 rather than add_initial_output_section.
6888 (Layout::finish_dynamic_section): Likewise.
6889
497897f9
ILT
6890 * i386.cc (Target_i386::Relocate::relocate_tls): Set dynamic type
6891 for TLS_GOTDESC and TLS_DESC_CALL. Only optimize TLS_LDO_32 if we
6892 know the dynamic type.
6893 * x86_64.cc (Target_x86_64::Relocate): Add saw_tls_block_reloc_
6894 field. Initialize it in constructor.
6895 (Target_x86_64::Relocate::relocate_tls): Record that we saw a TLS
6896 block reloc for TLSGD, GOTPC32_TLSDESC, TLSDESC_CALL, and TLSLD.
6897 Only optimize DTPOFF32 and DTPOFF64 if we have seen a TLS block
6898 reloc.
6899
a984ee1d
ILT
6900 * output.cc (Output_reloc::get_address): Change return type to
6901 Elf_Addr.
6902 * output.h (class Output_reloc): Update get_address declaration.
6903 * x86_64.cc (Output_data_plt_x86_64::do_write): Use 64-bit types
6904 for section addresses.
6905
55ba0940
ILT
69062008-05-09 Ian Lance Taylor <iant@google.com>
6907
6908 PR 6493
6909 * gold.cc (gold_nomem): Use return value of write.
6910
75517b77
ILT
69112008-05-08 Ian Lance Taylor <iant@google.com>
6912
6913 * symtab.c (Symbol::init_base_output_data): Add version
6914 parameter. Change all callers.
6915 (Symbol::init_base_output_segment): Likewise.
6916 (Symbol::init_base_constant): Likewise.
6917 (Symbol::init_base_undefined): Likewise.
6918 (Sized_symbol::init_output_data): Likewise.
6919 (Sized_symbol::init_output_segment): Likewise.
6920 (Sized_symbol::init_constant): Likewise.
6921 (Sized_symbol::init_undefined): Likewise.
6922 (Symbol_table::do_define_in_output_data): If the new symbol has a
6923 version, mark it as the default.
6924 (Symbol_table::do_define_in_output_segment): Likewise.
6925 (Symbol_table::do_define_as_constant): Likewise.
6926 * symtab.h (class Symbol): Update declarations.
6927 (class Sized_symbol): Likewise.
6928 * resolve.cc (Symbol::override_version): New function.
c42e122e 6929 (Symbol::override_base): Call override_version.
75517b77
ILT
6930 (Symbol::override_base_with_special): Likewise.
6931 * testsuite/ver_script_8.script: New file.
6932 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_8.
6933 (ver_test_8_SOURCES, ver_test_8_DEPENDENCIES): Define.
6934 (ver_test_8_LDFLAGS, ver_test_8_LDADD): Define.
6935 (ver_test_8_1.so, ver_test_8_2.so): New targets.
6936
f1f70eae
ILT
69372008-05-06 Ian Lance Taylor <iant@google.com>
6938
f3e9c5c5
ILT
6939 PR 6049
6940 * options.h (DEFINE_set): Add VARNAME_begin and VARNAME_end
6941 functions.
6942 (class General_options): Remove existing --undefined, and add
6943 --no-undefined instead. Add new --undefined as synonym for -u.
6944 * archive.cc (Archive::add_symbols): Check whether symbol was
6945 named with -u.
6946 * gold.cc (queue_middle_tasks): Add -u symbols to symbol table.
6947 * symtab.h (class Symbol): Rename CONSTANT to IS_CONSTANT; change
6948 all uses. Add IS_UNDEFINED. Update declarations to split
6949 different versions of init_base. Declare init_base_undefined.
6950 (Symbol::is_defined): Handle IS_UNDEFINED.
6951 (Symbol::is_undefined): Likewise.
6952 (Symbol::is_weak_undefined): Call is_undefined.
6953 (Symbol::is_absolute): Handle IS_CONSTANT.
6954 (class Sized_symbol): Update declarations to split different
6955 versions of init. Declare init_undefined.
6956 (class Symbol_table): Declare new functions.
6957 * symtab.cc (Symbol::init_base_object): Rename from init_base.
6958 Change all callers.
6959 (Symbol::init_base_output_data): Likewise.
6960 (Symbol::init_base_output_segment): Likewise.
6961 (Symbol::init_base_constant): Likewise.
6962 (Symbol::init_base_undefined): New function.
6963 (Sized_symbol::init_object): Rename from init. Change all
6964 callers.
6965 (Sized_symbol::init_output_data): Likewise.
6966 (Sized_symbol::init_output_segment): Likewise.
6967 (Sized_symbol::init_constant): Likewise.
6968 (Sized_symbol::init_undefined): New function.
6969 (Symbol_table::add_undefined_symbols_from_command_line): New
6970 function.
6971 (Symbol_table::do_add_undefined_symbols_from_command_line): New
6972 function.
6973 (Symbol::final_value_is_known): Handle IS_UNDEFINED.
6974 (Symbol::output_section): Likewise.
6975 (Symbol::set_output_section): Likewise.
6976 (Symbol_table::sized_finalize_symbol): Likewise.
6977 (Symbol_table::sized_write_globals): Likewise.
6978 * resolve.cc (Symbol_table::should_override): Likewise.
6979 (Symbol::override_base_with_special): Likewise.
6980
8bdcdf2c
ILT
6981 * symtab.cc (Symbol_table::add_from_dynobj): If we see a protected
6982 symbol, change it to have default visibility.
6983 * testsuite/protected_1.cc: New file.
6984 * testsuite/protected_2.cc: New file.
6985 * testsuite/protected_3.cc: New file.
6986 * testsuite/protected_main_1.cc: New file.
6987 * testsuite/protected_main_2.cc: New file.
6988 * testsuite/protected_main_3.cc: New file.
6989 * testsuite/Makefile.am (check_PROGRAMS): Add protected_1.
6990 (protected_1_SOURCES, protected_1_DEPENDENCIES): Define.
6991 (protected_1_LDFLAGS, protected_1_LDADD): Define.
6992 (protected_1.so): New target.
6993 (protected_1_pic.o, protected_2_pic.o): New targets.
6994 (protected_3_pic.o): New target.
6995 (check_PROGRAMS): Add protected_2.
6996 (protected_2_SOURCES, protected_2_DEPENDENCIES): Define.
6997 (protected_2_LDFLAGS, protected_2_LDADD): Define.
6998 * testsuite/Makefile.in: Rebuild.
6999
2b706932
ILT
7000 * options.h (DEFINE_var): Add set_user_set_##varname__.
7001 (DEFINE_bool_alias): New macro.
7002 (class General_options): Define -Bstatic using DEFINE_bool_alias
7003 rather than DEFINE_special. Add --undefined as an alias for -z
7004 defs.
7005 * options.cc (General_options::parse_Bstatic): Remove.
7006
d82a5bcc
ILT
7007 * options.h (class General_options): Add --fatal-warnings.
7008 * main.cc (main): Implement --fatal-warnings.
7009 * errors.h (Errors::warning_count): New function.
7010
f1f70eae
ILT
7011 * options.h (class General_options): Add -Bsymbolic-functions.
7012 * symtab.h (Symbol::is_preemptible): Check for
7013 -Bsymbolic-functions.
7014
8825ac63
ILT
70152008-05-05 Ian Lance Taylor <iant@google.com>
7016
d98bc257
ILT
7017 * options.h (DEFINE_bool): For DASH_Z, create the negative option
7018 as noVARNAME rather than no-VARNAME.
7019 (class General_options): Add option -z combreloc.
7020 * output.h (class Output_reloc) [SHT_REL]: Declare compare and
7021 get_address.
7022 (Output_reloc::sort_before) [SHT_REL]: New function.
7023 (Output_reloc::sort_before) [SHT_RELA]: New function.
7024 (class Output_data_reloc_base): Add sort_relocs_ field. Define
7025 Sort_relocs_comparison.
7026 (Output_data_reloc_base::Output_data_reloc_base): Add sort_relocs
7027 parameter. Change all callers.
7028 (Output_data_reloc::Output_data_reloc) [both versions]: Add
7029 sort_relocs parameter. Change all callers.
7030 * output.cc (Output_reloc::get_address): New function, broken out
7031 of write_rel.
7032 (Output_reloc::write_rel): Call it.
7033 (Output_reloc::compare): New function.
7034 (Output_data_reloc_base::do_write): Optionally sort relocs.
7035
60b2b4e7
ILT
7036 * configure.ac: If targ_extra_obj is set, link it in.
7037 * configure.tgt: Initialize all variables.
7038 (x86_64*): Set targ_extra_obj and targ_extra_size.
7039 * configure: Rebuild.
7040
8825ac63
ILT
7041 * object.cc (Sized_relobj::include_section_group): Adjust section
7042 indexes read from group data. Build vector to pass to
7043 layout_group.
7044 * layout.cc (Layout::layout_group): Add flags and shndxes
7045 parameters. Remove contents parameter. Change caller. Update
7046 explicit instantiations.
7047 * layout.h (class Layout): Update layout_group declaration.
7048 * output.cc (Output_data_group::Output_data_group): Add flags and
7049 input_shndxes parameters. Remove contents parameter. Change
7050 caller.
7051 (Output_data_group::do_write): Change input_sections_ to
7052 input_shndxes_.
7053 * output.h (class Output_data_group): Update constructor
7054 declaration. Rename input_sections_ to input_shndxes_.
7055 * testsuite/many_sections_test.cc: Add template.
7056
e94cf127
CC
70572008-04-30 Cary Coutant <ccoutant@google.com>
7058
4418b2d5
CC
7059 * target-reloc.h (relocate_section): Fix dead-pointer bug.
7060
e94cf127
CC
7061 * layout.cc (Layout::include_section): Refactored check for debug
7062 info section.
7063 (Layout::add_comdat): Add new parameters. Change type
7064 of signature parameter. Add object and shndx to signatures table.
7065 (Layout::find_kept_object): New function.
7066 * layout.h: Include <cstring>.
7067 (Layout::is_debug_info_section): New function.
7068 (Layout::add_comdat): Add new parameters.
7069 (Layout::find_kept_object): New function.
7070 (Layout::Kept_section): New struct.
7071 (Layout::Signatures): Change type of map range.
7072 * object.cc (Relobj::output_section_address): New function.
7073 (Sized_relobj::include_section_group): Add new parameters. Change
7074 calls to Layout::add_comdat. Change to build table of kept comdat
7075 groups and table mapping discarded sections to kept sections.
7076 (Sized_relobj::include_linkonce_section): Likewise. Add new parameter.
7077 (Sized_relobj::do_layout): Change calls to include_section_group and
7078 include_linkonce_section.
7079 (Sized_relobj::do_finalize_local_symbols): Do not set local symbol
7080 value to zero when section is discarded.
7081 (Sized_relobj::map_to_kept_section): New function.
7082 * object.h (Relobj::output_section_address): New function.
7083 (Relobj::Comdat_group): New type.
7084 (Relobj::find_comdat_group): New function.
7085 (Relobj::Comdat_group_table): New type.
7086 (Relobj::Kept_comdat_section): New type.
7087 (Relobj::Kept_comdat_section_table): New type.
7088 (Relobj::add_comdat_group): New function.
7089 (Relobj::set_kept_comdat_section): New function.
7090 (Relobj::get_kept_comdat_section): New function.
7091 (Relobj::comdat_groups_): New field.
7092 (Relobj::kept_comdat_sections_): New field.
7093 (Symbol_value::input_value): Update comment.
7094 (Sized_relobj::map_to_kept_section) New function.
7095 (Sized_relobj::include_linkonce_section): Add new parameter.
7096 * target-reloc.h (Comdat_behavior): New type.
7097 (get_comdat_behavior): New function.
7098 (relocate_section): Add code to map a discarded section to the
7099 corresponding kept section when applying a relocation.
7100
e4e5049b
CS
71012008-04-30 Craig Silverstein <csilvers@google.com>
7102
7103 * dwarf_reader.cc (next_generation_count): New static var.
7104 (Addr2line_cache_entry): New struct.
7105 (addr2line_cache): New static var.
7106 (Dwarf_line_info::one_addr2line): Added caching.
7107 (Dwarf_line_info::clear_addr2line_cache): New function.
7108 * dwarf_reader.h (Dwarf_line_info::one_addr2line): Add
7109 cache-size parameter.
7110 (Dwarf_line_info::one_addr2line_cache): New function.
7111 * symtab.cc (Symbol_table::detect_odr_violations): Pass
7112 new cache-size argument to one_addr2line(), and clear cache.
7113
d09e9154
CC
71142008-04-28 Cary Coutant <ccoutant@google.com>
7115
7116 * i386.cc (Relocate::relocate): Fix typos for R_386_PC16 and
7117 R_386_PC8 relocations.
7118
7ef73768
ILT
71192008-04-23 Ian Lance Taylor <iant@google.com>
7120
55438702
ILT
7121 * object.cc (Sized_relobj::include_section_group): Check for
7122 invalid section group.
7123
c165fb93
ILT
7124 * object.cc (make_elf_object): Correct test for 64-bit ELF file
7125 header size.
7126
7ef73768
ILT
7127 * readsyms.cc (Read_symbols::do_read_symbols): Use get_view rather
7128 than read for file header.
7129 * archive.cc (Archive::include_member): Likewise.
7130
6194aaab
L
71312008-04-23 Paolo Bonzini <bonzini@gnu.org>
7132
7133 * aclocal.m4: Regenerate.
7134 * configure: Regenerate.
7135
d491d34e
ILT
71362008-04-19 Ian Lance Taylor <iant@google.com>
7137
5ea2bac6
ILT
7138 * version.cc (version_string): Bump to 1.6.
7139
7bc3e21a
ILT
7140 * testsuite/Makefile.am (many_sections_r_test): New target.
7141 (many_sections_r_test_SOURCES): Remove.
7142 (many_sections_r_test_DEPENDENCIES): Remove.
7143 (many_sections_r_test_LDFLAGS): Remove.
7144 (many_sections_r_test_LDADD): Remove.
7145
7fcd3aa9
ILT
7146 * object.cc (Sized_relobj::do_add_symbols): Always pass
7147 local_symbol_count_ to add_from_relobj.
7148
4c94d6ae
ILT
7149 * testsuite/Makefile.am (many_sections_check.h): Only check one in
7150 every thousand variables.
7151 * testsuite/Makefile.in: Rebuild.
7152
d491d34e
ILT
7153 * object.cc (Xindex::initialize_symtab_xindex): New function.
7154 (Xindex::read_symtab_xindex): New function.
7155 (Xindex::sym_xindex_to_shndx): New function.
7156 (Sized_relobj::find_symtab): Pick up SHT_SYMTAB_SHNDX section if
7157 available.
7158 (Sized_relobj::do_initialize_xindex): New function.
7159 (Sized_relobj::do_read_symbols): Adjust section links.
7160 (Sized_relobj::symbol_section_and_value): Add is_ordinary
7161 parameter. Change all callers.
7162 (Sized_relobj::include_section_group): Adjust section links and
7163 symbol section indexes.
7164 (Sized_relobj::do_layout): Adjust section links.
7165 (Sized_relobj::do_count_local_symbols): Adjust section links and
7166 symbol section indexes.
7167 (Sized_relobj::do_finalize_local_symbols): Distinguish between
7168 ordinary and special symbols.
7169 (Sized_relobj::write_local_symbols): Add symtab_xindex and
7170 dynsym_xindex parameters. Change all callers. Adjust section
7171 links. Use SHN_XINDEX when needed.
7172 (Sized_relobj::get_symbol_location_info): Adjust section links.
7173 Don't get fooled by special symbols.
7174 * object.h (class Xindex): Define.
7175 (class Object): Add xindex_ parameter. Declare virtual functoin
7176 do_initialize_xindex.
7177 (Object::adjust_sym_shndx): New function.
7178 (Object::set_xindex): New protected function.
7179 (class Symbol_value): Add is_ordinary_shndx_ field.
7180 (Symbol_value::Symbol_value): Initialize is_ordinary_shndx_.
7181 (Symbol_value::value): Assert ordinary section.
7182 (Symbol_value::initialize_input_to_output_map): Likewise.
7183 (Symbol_value::set_input_shndx): Add is_ordinary parameter.
7184 Change all callers.
7185 (Symbol_value::input_shndx): Add is_ordinary parameter. Change
7186 all callers.
7187 (class Sized_relobj): Update declarations.
7188 (Sized_relobj::local_symbol_input_shndx): Add is_ordinary
7189 parameter. Change all callers.
7190 (Sized_relobj::adjust_shndx): New function.
7191 * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize dynsym_shndx_
7192 field.
7193 (Sized_dynobj::find_dynsym_sections): Remove pdynsym_shndx
7194 parameter. Change all callers. Pick up SHT_DYNSYM_SHNDX section
7195 for SHT_DYNSYM section if available. Set dynsym_shndx_ field.
7196 (Sized_dynobj::read_dynsym_section): Adjust section links.
7197 (Sized_dynobj::read_dynamic): Likewise.
7198 (Sized_dynobj::do_read_symbols): Use dynsym_shndx_ field. Adjust
7199 section links.
7200 (Sized_dynobj::do_initialize_xindex): New function.
7201 * dynobj.h (class Sized_dynobj): Add dynsym_shndx_ field. Declare
7202 do_initialize_xindex.
7203 (Sized_dynobj::adjust_shndx): New function.
7204 * layout.cc (Layout::Layout): Initialize symtab_xindex_ and
7205 dynsym_xindex_ fields.
7206 (Layout::finalize): Add a call to set_section_indexes before
7207 creating the symtab sections.
7208 (Layout::set_section_indexes): Don't do anything if the section
7209 already has a section index.
7210 (Layout::create_symtab_sections): Add shnum parameter. Change
7211 caller. Create .symtab_shndx section if needed.
7212 (Layout::create_shdrs): Add shstrtab_section parameter. Change
7213 caller.
7214 (Layout::allocated_output_section_count): New function.
7215 (Layout::create_dynamic_symtab): Create .dynsym_shndx section if
7216 needed.
7217 * layout.h (class Layout): Add symtab_xindex_ and dynsym_xindex_
7218 fields. Update declarations.
7219 (Layout::symtab_xindex): New function.
7220 (Layout::dynsym_xindex): New function.
7221 (class Write_symbols_task): Add layout_ field.
7222 (Write_symbols_task::Write_symbols_task): Add layout parameter.
7223 Change caller.
7224 * output.cc (Output_section_headers::Output_section_headers): Add
7225 shstrtab_section parameter. Change all callers.
7226 (Output_section_headers::do_sized_write): Store overflow values
7227 for section count and section string table section index in
7228 section header zero.
7229 (Output_file_header::do_sized_write): Check for overflow of
7230 section count and section string table section index.
7231 (Output_symtab_xindex::do_write): New function.
7232 (Output_symtab_xindex::endian_do_write): New function.
7233 * output.h (class Output_section_headers): Add shstrtab_section_.
7234 Update declarations.
7235 (class Output_symtab_xindex): Define.
7236 (Output_section::has_out_shndx): New function.
7237 * symtab.cc (Symbol::init_fields): Initialize is_ordinary_shndx_
7238 field.
7239 (Symbol::init_base): Add st_shndx and is_ordinary parameters.
7240 Change all callers.
7241 (Sized_symbol::init): Likewise.
7242 (Symbol::output_section): Check for ordinary symbol.
7243 (Symbol_table::add_from_object): Remove orig_sym parameter. Add
7244 st_shndx, is_ordinary, and orig_st_shndx parameters. Change all
7245 callers.
7246 (Symbol_table::add_from_relobj): Add symndx_offset parameter.
7247 Change all callers. Simplify handling of symbols from sections
7248 not included in the link.
7249 (Symbol_table::add_from_dynobj): Handle ordinary symbol
7250 distinction.
7251 (Weak_alias_sorter::operator()): Assert that symbols are
7252 ordinary.
7253 (Symbol_table::sized_finalize_symbol): Handle ordinary symbol
7254 distinction.
7255 (Symbol_table::write_globals): Add symtab_xindex and dynsym_xindex
7256 parameters. Change all callers.
7257 (Symbol_table::sized_write_globals): Likewise. Handle ordinary
7258 symbol distinction. Use SHN_XINDEX when needed.
7259 (Symbol_table::write_section_symbol): Add symtab_xindex
7260 parameter. Change all callers.
7261 (Symbol_table::sized_write_section_symbol): Likewise. Use
7262 SHN_XINDEX when needed.
7263 * symtab.h (class Symbol): Add is_ordinary_shndx_ field. Update
7264 declarations.
7265 (Symbol::shndx): Add is_ordinary parameter. Change all callers.
7266 (Symbol::is_defined): Check is_ordinary.
7267 (Symbol::is_undefined, Symbol::is_weak_undefined): Likewise.
7268 (Symbol::is_absolute, Symbol::is_common): Likewise.
7269 (class Sized_symbol): Update declarations.
7270 (class Symbol_table): Update declarations.
7271 * resolve.cc (Symbol::override_base): Add st_shndx and is_ordinary
7272 parameters. Change all callers.
7273 (Sized_symbol::override): Likewise.
7274 (Symbol_table::override): Likewise.
7275 (symbol_to_bits): Add is_ordinary parameter. Change all callers.
7276 (Symbol_table::resolve): Remove orig_sym parameter. Add st_shndx,
7277 is_ordinary, and orig_st_shndx parameters. Change all callers.
7278 * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Require symbol
7279 to be in an ordinary section.
7280 * dwarf_reader.cc (Sized_dwarf_line_info::symbol_section): Add
7281 object and is_ordinary parameters. Change all callers.
7282 (Sized_dwarf_line_info::read_relocs): Add object parameter.
7283 Change all callers. Don't add undefined or non-ordinary symbols
7284 to reloc_map_.
7285 (Sized_dwarf_line_info::read_line_mappings): Add object parameter.
7286 Change all callers.
7287 * dwarf_reader.h (class Sized_dwarf_line_info): Update
7288 declarations.
7289 * ehframe.cc (Eh_frame::read_fde): Check for ordinary symbol.
7290 * reloc.cc (Sized_relobj::do_read_relocs): Adjust section links.
7291 (Sized_relobj::relocate_sections): Likewise.
7292 * target-reloc.h (scan_relocs): Adjust section symbol index.
7293 (scan_relocatable_relocs): Likewise.
7294 * i386.cc (Scan::local): Check for ordinary symbols.
7295 * sparc.cc (Scan::local): Likewise.
7296 * x86_64.cc (Scan::local): Likewise.
7297 * testsuite/binary_unittest.cc (Sized_binary_test): Update calls
7298 to symbol_section_and_value.
7299 * testsuite/many_sections_test.cc: New file.
7300 * testsuite/Makefile.am (BUILT_SOURCES): Define.
7301 (check_PROGRAMS): Add many_sections_test.
7302 (many_sections_test_SOURCES): Define.
7303 (many_sections_test_DEPENDENCIES): Define.
7304 (many_sections_test_LDFLAGS): Define.
7305 (BUILT_SOURCES): Add many_sections_define.h.
7306 (many_sections_define.h): New target.
7307 (BUILT_SOURCES): Add many_sections_check.h.
7308 (many_sections_check.h): New target.
7309 (check_PROGRAMS): Add many_sections_r_test.
7310 (many_sections_r_test_SOURCES): Define.
7311 (many_sections_r_test_DEPENDENCIES): Define.
7312 (many_sections_r_test_LDFLAGS): Define.
7313 (many_sections_r_test_LDADD): Define.
7314 (many_sections_r_test.o): New target.
7315 * testsuite/Makefile.in: Rebuild.
7316
c5818ff1
CC
73172008-04-17 Cary Coutant <ccoutant@google.com>
7318
7319 * errors.cc (Errors::info): New function.
7320 (gold_info): New function.
7321 * errors.h (Errors::info): New function.
7322 * gold.h (gold_info): New function.
7323 * object.cc (Input_objects::add_object): Print trace output.
7324 * options.cc (options::parse_set): New function.
7325 (General_options::parse_wrap): Deleted.
7326 (General_options::General_options): Deleted initializer.
7327 * options.h (options::String_set): New typedef.
7328 (options::parse_set): New function.
7329 (DEFINE_set): New macro.
7330 (General_options::wrap): Changed to use DEFINE_set. Changed
7331 callers of any_wrap_symbols and is_wrap_symbol.
7332 (General_options::trace, General_options::trace_symbol):
7333 New options.
7334 (General_options::any_wrap_symbols, General_options::is_wrap_symbol)
7335 (General_options::wrap_symbols_): Deleted.
7336 * symtab.cc (Symbol_table::add_from_object): Print trace output.
7337
b5be4a7c
DM
73382008-04-17 David S. Miller <davem@davemloft.net>
7339
7340 * options.cc (General_options::parse_V): New function.
7341 * options.h: Add entries for -V and -Qy.
7342
155a0dd7
ILT
73432008-04-17 Ian Lance Taylor <iant@google.com>
7344
7345 * common.cc (Symbol_table::allocate_commons): Remove options
7346 parameter. Change caller.
7347 (Symbol_table::do_allocate_commons): Remove options parameter.
7348 Change caller. Just call do_allocate_commons_list twice.
7349 (Symbol_table::do_allocate_commons_list): New function, broken out
7350 of do_allocate_commons.
7351 * common.h (class Allocate_commons_task): Remove options_ field.
7352 Update constructor.
7353 * symtab.cc (Symbol_table::Symbol_table): Initialize
7354 tls_commons_.
7355 (Symbol_table::add_from_object): Put TLS common symbols on
7356 tls_commons_ list.
7357 (Symbol_table::sized_finalize_symbol): Handle STT_TLS symbols
7358 which are IN_OUTPUT_DATA.
7359 * symtab.h (class Symbol_table): Add tls_commons_ field. Update
7360 allocate_commons and do_allocate_commons declarations. Declare
7361 do_allocate_commons_list.
7362 * gold.cc (queue_middle_tasks): Update creation of
7363 Allocate_commons_task to not pass options.
7364 * testsuite/Makefile.am (INCLUDES): Add -I.. .
7365 (TLS_TEST_C_FLAGS): New variable.
7366 (tls_test_c_pic.o): New target.
7367 (tls_test_shared.so): Link in tls_test_c_pic.o.
7368 (tls_test_c_pic_ie.o): New target.
7369 (tls_test_ie_shared.so): Link in tls_test_c_pic_ie.o.
7370 (tls_test_DEPENDENCIES, tls_test_LDADD): Add tls_test_c.o.
7371 (tls_test_c.o): New target.
7372 (tls_pic_test_DEPENDENCIES): Add tls_test_c_pic.o.
7373 (tls_pic_test_LDADD): Likewise.
7374 (tls_shared_gd_to_ie_test_DEPENDENCIES): Add tls_test_c_pic.o.
7375 (tls_shared_gd_to_ie_test_LDADD): Likewise.
7376 (tls_test_c_gnu2.o): New target.
7377 (tls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): Add
7378 tls_test_c_gnu2.o.
7379 (tls_shared_gnu2_gd_to_ie_test_LDADD): Likewise.
7380 (tls_test_gnu2_shared.so): Link in tls_test_c_gnu2.o.
7381 (tls_test_shared_nonpic.so): Link in tls_test_c.o.
7382 * testsuite/tls_test.cc: Include "config.h".
7383 (t_last): Call t11_last.
7384 * testsuite/tls_test.h (t11, t11_last): Declare.
7385 * testsuite/tls_test_c.c: New file.
7386 * testsuite/tls_test_main.cc (thread_routine): Call t11.
7387 * configure.ac: Check for OpenMP support.
7388 * configure, config.in, Makefile.in: Rebuild.
7389 * testsuite/Makefile.in: Rebuild.
7390
edfbb029
CC
73912008-04-16 Cary Coutant <ccoutant@google.com>
7392
7393 * i386.cc (Target_i386::define_tls_base_symbol): New function.
7394 (Target_i386::tls_base_symbol_defined_): New field.
7395 (Target_i386::Scan::local): Define _TLS_MODULE_BASE_ symbol.
7396 (Target_i386::Scan::global): Likewise.
7397 * symtab.cc (sized_finalize_symbol): Add check for TLS symbol.
7398 * x86_64.cc (Target_x86_64::define_tls_base_symbol): New function.
7399 (Target_x86_64::tls_base_symbol_defined_): New field.
7400 (Target_x86_64::Scan::local): Define _TLS_MODULE_BASE_ symbol.
7401 (Target_x86_64::Scan::global): Likewise.
7402
f3c69fca
CC
74032008-04-16 Cary Coutant <ccoutant@google.com>
7404
7405 * symtab.h (Symbol::is_strong_undefined): Removed unused function.
7406 (Symbol::needs_plt_entry): Allow weak undefined symbols.
7407 (Symbol::needs_dynamic_reloc): Allow weak undefined symbols when
7408 building shared libraries.
7409 * testsuite/Makefile.am (weak_undef_nonpic_test): New target.
7410 (weak_undef_file1_nonpic.o, weak_undef_file2_nonpic.o)
7411 (weak_undef_lib_nonpic.so, alt/weak_undef_lib_nonpic.so): New targets.
7412 * testsuite/Makefile.in: Rebuild.
7413 * testsuite/weak_undef.h: New file.
7414 * testsuite/weak_undef_file1.cc: Add extra test cases.
7415 * testsuite/weak_undef_file2.cc: Likewise.
7416 * testsuite/weak_undef_test.cc: Likewise.
7417
7c414435
DM
74182008-04-16 David S. Miller <davem@davemloft.net>
7419
32b769e1
DM
7420 * sparc.cc (Target_sparc::Scan): Change from struct to class.
7421 Add issued_non_pic_error_ field. Declare check_non_pic.
7422 (Target_sparc::Scan::check_non_pic): New function.
7423 (Target_sparc::Scan::local): Call check_non_pic as appropriate.
7424 (Target_sparc::Scan::global): Likewise.
7425
11936fb1
DM
7426 * configure.ac (FN_PTRS_IN_SO_WITHOUT_PIC): Add sparc64.
7427 * configure: Rebuild.
7428
7c414435
DM
7429 * options.h (DEFINE_enable): New macro.
7430 (new_dtags): New enable option.
7431 (initfirst, interpose, loadfltr, nodefaultlib,
7432 nodelete, nodlopen, nodump): New -z options.
7433 * layout.cc (Layout:finish_dynamic_section): If new
7434 dtags enabled, emit DT_RUNPATH. Also, emit a
7435 DT_FLAGS_1 containing any specified -z flags.
7436
85c7bf8b
ILT
74372008-04-16 Ian Lance Taylor <iant@google.com>
7438
12c0daef
ILT
7439 * copy-relocs.cc: New file.
7440 * copy-relocs.h: New file.
7441 * reloc.cc: Remove Copy_relocs code.
7442 * reloc.h: Likewise.
7443 * reloc-types.h (struct Reloc_types) [both versions]: Add
7444 get_reloc_addend_noerror.
7445 * output.h (class Output_data_reloc<elfcpp::SHT_REL>): Add
7446 variants of add_global which take an addend which must be zero.
7447 * i386.cc: Include "copy-relocs.h".
7448 (class Target_i386): Change type of copy_relocs_ to variable,
7449 update initializer.
7450 (Target_i386::copy_reloc): Rewrite to pass to Copy_relocs class.
7451 Change all callers.
7452 (Target_i386::do_finalize_sections): Change handling of
7453 copy_relocs_.
7454 * sparc.cc: Include "copy-relocs.h".
7455 (class Target_sparc): Change type of copy_relocs_ to variable,
7456 update initializer.
7457 (Target_sparc::copy_reloc): Rewrite to pass to Copy_relocs class.
7458 Change all callers.
7459 (Target_sparc::do_finalize_sections): Change handling of
7460 copy_relocs_.
7461 * x86_64.cc: Include "copy-relocs.h".
7462 (class Target_x86_64): Change type of copy_relocs_ to variable,
7463 update initializer.
7464 (Target_x86_64::copy_reloc): Rewrite to pass to Copy_relocs
7465 class. Change all callers.
7466 (Target_x86_64::do_finalize_sections): Change handling of
7467 copy_relocs_.
7468 * Makefile.am (CCFILES): Add copy-relocs.cc.
7469 (HFILES): Add copy-relocs.h.
7470
4f4995b6
ILT
7471 * Makefile.in, aclocal.m4, testsuite/Makefile.in: Rebuild.
7472
85c7bf8b
ILT
7473 * testsuite/script_test_4.sh: Permit leading zeroes.
7474
4f2a9edd
ILT
74752008-04-15 Ian Lance Taylor <iant@google.com>
7476
e6188289
ILT
7477 * script-sections.cc (Script_sections::create_segments): Use
7478 header_size_adjustment even when there is enough room for the
7479 headers.
7480 * testsuite/script_test_4.sh: New file.
7481 * testsuite/script_test_4.t: New file.
7482 * testsuite/Makefile.am (check_SCRIPTS): Add script_test_4.sh.
7483 (check_DATA): Add script_test_4.stdout.
7484 (MOSTLYCLEANFILES): Likewise.
7485 (script_test_4): New target.
7486 (script_test_4.stdout): New target.
7487 * testsuite/Makefile.in: Rebuild.
7488
4f2a9edd
ILT
7489 * sparc.cc: Add definitions for Output_data_plt_sparc class
7490 constants.
7491
f5314dd5
DM
74922008-04-14 David S. Miller <davem@davemloft.net>
7493
7494 * sparc.cc: New file.
7495 * Makefile.am (TARGETSOURCES): Add sparc.cc
7496 (ALL_TARGETOBJS): Add sparc.$(OBJEXT)
7497 * configure.tgt: Document targ_extra_size and
7498 targ_extra_big_endian. Add entries for sparc-* and
7499 sparc64-*.
7500 * configure.ac: Handle targ_extra_size and
7501 targ_extra_big_endian.
7502 * Makefile.in: Rebuild.
7503 * configure: Likewise.
7504 * po/POTFILES.in: Likewise.
7505 * po/gold.pot: Likewise.
7506
154e0e9a
ILT
75072008-04-14 Ian Lance Taylor <iant@google.com>
7508
7509 * layout.cc (Layout::Layout): Initialize sections_are_attached_.
7510 (Layout::get_output_section): Ignore SHF_WRITE and SHF_EXECINSTR
7511 in the name/type/flags to section mapping. Don't call
7512 allocate_output_section.
7513 (Layout::choose_output_section): Change parameter from adjust_name
7514 to is_input_section. Don't permit input sections after sections
7515 are attached to segments. Don't call allocate_output_section.
7516 (Layout::layout_eh_frame): Call update_flags_for_input_section,
7517 not write_enable_output_section.
7518 (Layout::make_output_section): Don't push to
7519 unattached_section_list_ nor call attach_to_segment. Call
7520 attach_section_to_segment if sections are attached.
7521 (Layout::attach_sections_to_segments): New function.
7522 (Layout::attach_section_to_segment): New function.
7523 (Layout::attach_allocated_section_to_segment): Rename from
7524 attach_to_segment. Remove flags parameter.
7525 (Layout::allocate_output_section): Remove function.
7526 (Layout::write_enable_output_section): Remove function.
7527 * layout.h (class Layout): Update for above changes. Add new
7528 field sections_are_attached_.
7529 * output.h (Output_section::update_flags_for_input_section): New
7530 function.
7531 * output.cc (Output_section::add_input_section): Call
7532 update_flags_for_input_section.
7533 * gold.cc (queue_middle_tasks): Call attach_sections_to_segments.
7534
009a67a2
CC
75352008-04-11 Cary Coutant <ccoutant@google.com>
7536
7537 * i386.cc (Target_i386::got_mod_index_entry): Restore code previously
7538 thought unnecessary.
7539 * x86_64.cc (Target_x86_64::got_mod_index_entry): Likewise.
7540
759b1a24
ILT
75412008-04-11 Ian Lance Taylor <iant@google.com>
7542
7543 * output.h (class Output_section_data): Remove inline definition
7544 of set_addralign.
7545 * output.cc (Output_section_data::set_addralign): New function.
7546
c2b45e22
CC
75472008-04-11 Cary Coutant <ccoutant@google.com>
7548
7549 Add support for TLS descriptors for i386 and x86_64.
7550 * i386.cc (Target_i386::Relocate::tls_desc_gd_to_ie): New function.
7551 (Target_i386::Relocate::tls_desc_gd_to_le): New function.
7552 (Target_i386::Got_type): Add GOT_TYPE_TLS_NOFFSET and
7553 GOT_TYPE_TLS_DESC.
7554 (Target_i386::got_mod_index_entry): Remove unnecessary code.
7555 (Target_i386::Scan::local): Implement R_386_TLS_GOTDESC and
7556 R_386_TLS_DESC_CALL relocations. Fix problem with initial-exec
7557 relocations.
7558 (Target_i386::Scan::global): Fix problem with GD-to-IE relaxation.
7559 Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations;
7560 Fix problem with initial-exec relocations.
7561 (Target_i386::Relocate::relocate_tls): Likewise.
7562 (Target_i386::Relocate::tls_gd_to_ie): Fix problem with GD-to-IE
7563 relaxation.
7564 * output.cc (Output_data_dynamic::Dynamic_entry::write): Add
7565 support for section-plus-offset dynamic table entries.
7566 * output.h (Output_data_dynamic::add_section_plus_offset): New function.
7567 (Output_data_dynamic::Dynamic_entry): Add support for
7568 section-plus-offset dynamic table entries.
7569 (Output_data_dynamic::Classification): Likewise.
7570 (Output_data_dynamic::classification_): Renamed offset_.
7571 * x86_64.cc (Target_x86_64::Relocate::tls_desc_gd_to_ie): New function.
7572 (Target_x86_64::Relocate::tls_desc_gd_to_le): New function.
7573 (Target_x86_64::make_plt_section): New function.
7574 (Target_x86_64::reserve_tlsdesc_entries): New function.
7575 (Output_data_plt_x86_64::Output_data_plt_x86_64): Add new parameter.
7576 (Output_data_plt_x86_64::reserve_tlsdesc_entry): New function.
7577 (Output_data_plt_x86_64::has_tlsdesc_entry): New function.
7578 (Output_data_plt_x86_64::get_tlsdesc_got_offset): New function.
7579 (Output_data_plt_x86_64::get_tlsdesc_plt_offset): New function.
7580 (Output_data_plt_x86_64::tlsdesc_plt_entry): New field.
7581 (Output_data_plt_x86_64::set_final_data_size): Move out of line;
7582 add extra PLT entry for TLS descriptors.
7583 (Output_data_plt_x86_64::got_): New field.
7584 (Output_data_plt_x86_64::tlsdesc_got_offset_): New field.
7585 (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize new
7586 fields.
7587 (Output_data_plt_x86_64::do_write): Write extra PLT entry for TLS
7588 descriptors.
7589 (Target_x86_64::make_plt_entry): Factor out make_plt_section.
7590 (Target_x86_64::got_mod_index_entry): Remove unnecessary code.
7591 (Target_x86_64::Scan::local): Implement R_386_TLS_GOTDESC and
7592 R_386_TLS_DESC_CALL relocations.
7593 (Target_x86_64::Scan::global): Likewise.
7594 (Target_x86_64::do_finalize_sections): Add dynamic table entries
7595 for TLS descriptors.
7596 (Relocate::relocate_tls): Fix problem with GD-to-IE relaxation.
7597 Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations.
7598 (Target_x86_64::Relocate::tls_gd_to_ie): Fix problem with
7599 GD-to-IE relaxation.
7600 * configure.ac: Export new conditional variables TLS_GNU2_DIALECT
7601 and TLS_DESCRIPTORS.
7602 * Makefile.in: Rebuild.
7603 * configure: Rebuild.
7604 * testsuite/Makefile.am (tls_shared_gd_to_ie_test): New target.
7605 (tls_test_shared2.so): New target.
7606 (tls_shared_gd_to_ie_test_SOURCES): New variable.
7607 (tls_shared_gd_to_ie_test_DEPENDENCIES): New variable.
7608 (tls_shared_gd_to_ie_test_LDFLAGS): New variable.
7609 (tls_shared_gd_to_ie_test_LDADD): New variable.
7610 (tls_shared_gnu2_gd_to_ie_test): New target.
7611 (tls_test_gnu2.o, tls_test_file2_gnu2.o, tls_test_gnu2_shared2.so):
7612 New targets.
7613 (tls_shared_gnu2_gd_to_ie_test_SOURCES): New variable.
7614 (ls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): New variable.
7615 (tls_shared_gnu2_gd_to_ie_test_LDFLAGS): New variable.
7616 (tls_shared_gnu2_gd_to_ie_test_LDADD): New variable.
7617 (tls_shared_gnu2_test): New target.
7618 (tls_test_gnu2_shared.so): New target.
7619 (tls_shared_gnu2_test_SOURCES): New variable.
7620 (tls_shared_gnu2_test_DEPENDENCIES): New variable.
7621 (tls_shared_gnu2_test_LDFLAGS): New variable.
7622 (tls_shared_gnu2_test_LDADD): New variable.
7623 * testsuite/Makefile.in: Rebuild.
7624 * testsuite/Makefile.
7625
83bfb6b7
ILT
76262008-04-11 Ian Lance Taylor <iant@google.com>
7627
7628 * testsuite/Makefile.am (justsyms_2r.o): Add dependency on
7629 justsyms.t.
7630 * testsuite/Makefile.in: Rebuild.
7631
7632 * testsuite/script_test_2a.cc (script_test_string_a): Make 8 bytes
7633 long.
7634 * testsuite/script_test_2.cc (main): Adjust test.
7635
706e1f5e
ILT
76362008-04-11 David S. Miller <davem@davemloft.net>
7637 Ian Lance Taylor <iant@google.com>
7638
7639 * options.h (General_options): Add entries for '-Y' and
7640 '-relax'.
7641 * options.cc (General_options:finalize): If -Y was used, add those
7642 entries to the library path instead of the default "/lib" and
7643 "/usr/lib".
7644
7c98e6bb
DM
76452008-04-11 David S. Miller <davem@davemloft.net>
7646
7647 * testsuite/justsyms.t: Start at 0x100.
7648 * testsuite/justsyms_1.cc: Adjust justsyms_string assertion.
83bfb6b7
ILT
7649 * testsuite/script_test_2b.cc (script_test_string_b): Make 8 bytes
7650 long.
7651 * testsuite/script_test_2.cc: Adjust string and section length
7652 checks.
7c98e6bb 7653
99a37bfd
ILT
76542008-04-09 Ian Lance Taylor <iant@google.com>
7655
2cefc357
ILT
7656 PR gold/5996
7657 * script-sections.cc (Sections_element::allocate_to_segment): Add
7658 orphan parameter.
7659 (Output_section_definition::allocate_to_segment): Likewise.
7660 (Orphan_output_section::allocate_to_segment): Likewise.
7661 (Script_sections::attach_sections_using_phdrs_clause): Don't
7662 propagate non-PT_LOAD segments to orphan sections.
7663 * testsuite/Makefile.am (script_test_3.stdout): Generate using
7664 readelf rather than objdump.
7665 * testsuite/script_test_3.sh: Adjust accordingly. Test that
7666 .interp section and PT_INTERP segment are the same size.
7667 * testsuite/Makefile.in: Rebuild.
7668
99a37bfd
ILT
7669 * symtab.cc (Symbol_table::add_from_dynobj): Only look for weak
7670 aliases for symbols defined in the same object.
7671 * testsuite/Makefile.am (check_PROGRAMS): Add weak_alias_test.
7672 (weak_alias_test_SOURCES): New variable.
7673 (weak_alias_test_DEPENDENCIES): New variable.
7674 (weak_alias_test_LDFLAGS): New variable.
7675 (weak_alias_test_LDADD): New variable.
7676 (weak_alias_test_1_pic.o, weak_alias_test_1.so): New targets.
7677 (weak_alias_test_2_pic.o, weak_alias_test_2.so): New targets.
7678 (weak_alias_test_3.o): New target.
7679 (weak_alias_test_4_pic.o, weak_alias_test_4.so): New targets.
7680 * testsuite/weak_alias_test_main.cc: New file.
7681 * testsuite/weak_alias_test_1.cc: New file.
7682 * testsuite/weak_alias_test_2.cc: New file.
7683 * testsuite/weak_alias_test_3.cc: New file.
7684
780e49c5
ILT
76852008-04-08 Ian Lance Taylor <iant@google.com>
7686
cdb0b8f5
ILT
7687 * options.h (class General_options): Add --noinhibit-exec option.
7688 * main.cc (main): Check --noinhibit-exec.
7689
0864d551
ILT
7690 * options.h (class General_options): Define --wrap as a special
7691 option. Add wrap_symbols_ field.
7692 (General_options::any_wrap_symbols): New function.
7693 (General_options::is_wrap_symbol): New function.
7694 * options.cc (General_options::parse_wrap): New function.
7695 (General_options::General_options): Initialize wrap_symbols_.
7696 * symtab.cc (Symbol_table::wrap_symbol): New function.
7697 (Symbol_table::add_from_object): Handle --wrap.
7698 * symtab.h (class Symbol_table): Declare wrap_symbol.
7699 * target.h (Target::wrap_char): New function.
7700 (Target::Target_info): Add wrap_char field.
7701 * i386.cc (Target_i386::i386_info): Initialize wrap_char.
7702 * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
7703 * testsuite/testfile.cc (Target_test::test_target_info):
7704 Likewise.
7705
789aa6de
ILT
7706 * errors.cc (Errors::undefined_symbol): Mention symbol version if
7707 there is one.
7708
2c38906f
ILT
7709 * layout.h (class Layout): Add added_eh_frame_data_ field.
7710 * layout.cc (Layout::Layout): Initialize new field.
7711 (Layout::layout_eh_frame): Don't add eh_frame_data_ to .eh_frame
7712 output section until we find a section we merged successfully.
7713 * object.cc (Sized_relobj::check_eh_frame_flags): Don't require
7714 that the size be non-zero.
7715
780e49c5
ILT
7716 * merge.cc (Object_merge_map::get_output_offset): Remove inline
7717 qualifier.
7718
7fcd0256
ILT
77192008-04-08 Craig Silverstein <csilvers@google.com>
7720
7721 * configure.ac: Export new conditional variable HAVE_ZLIB.
7722 * testsuite/Makefile.am (flagstest_o_specialfile): Condition
7723 on HAVE_ZLIB.
7724 (flagstest_o_specialfile_and_compress_debug_sections): Likewise.
7725 * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
7726
6835af53
ILT
77272008-04-07 Ian Lance Taylor <iant@google.com>
7728
e24f324c
ILT
7729 * version.cc (version_string): Set to "1.5".
7730
a036edd8
ILT
7731 * x86_64.cc (Target_x86_64::Scan): Change from struct to class.
7732 Add issued_non_pic_error_ field. Declare check_non_pic.
7733 (Target_x86_64::Scan::check_non_pic): New function.
7734 (Target_x86_64::Scan::local): Call check_non_pic as appropriate.
7735 (Target_x86_64::Scan::global): Likewise.
7736
624f8810
ILT
7737 * output.cc (Output_reloc<SHT_REL>::local_section_offset): Add
7738 addend parameter. Change caller. Handle merge sections.
7739 (Output_reloc<SHT_REL>::symbol_value): Change parameter type from
7740 Address to Addend. Don't add in the result of
7741 local_section_offset, pass down the addend and use the returned
7742 value.
7743 * output.h (class Output_reloc<SHT_REL>): Add Addend typedef.
7744 Update declarations of local_section_offset and symbol_value.
7745 * testsuite/two_file_test_1.cc (t18): New function.
7746 * testsuite/two_file_test_2.cc (f18): New function.
7747 * testsuite/two_file_test_main.cc (main): Call t18.
7748 * testsuite/two_file_test.h (t18, f18): Declare.
7749
6835af53
ILT
7750 * configure.ac: Don't test for objdump, c++filt, or readelf.
7751 * testsuite/Makefile.am: Remove READELF and OBJDUMP_AND_CPPFILT
7752 conditionals.
7753 (TEST_READELF): New variable.
7754 (TEST_OBJDUMP, TEST_CXXFILT, TEST_STRIP): New variables.
7755 (check_PROGRAMS): Add two_file_strip_test.
7756 (two_file_strip_test): New target.
7757 (check_PROGRAMS): Add two_file_same_shared_strip_test.
7758 (two_file_same_shared_strip_test_SOURCES): New variable.
7759 (two_file_same_shared_strip_test_DEPENDENCIES): New variable.
7760 (two_file_same_shared_strip_test_LDFLAGS): New variable.
7761 (two_file_same_shared_strip_test_LDADD): New variable.
7762 (two_file_shared_strip.so): New target.
7763 (ver_test_2.syms, ver_test_4.syms): Use TEST_READELF.
7764 (ver_test_5.syms, ver_test_7.syms): Likewise.
7765 (ver_matching_test.stdout): Use TEST_OBJDUMP and TEST_CXXFILT.
7766 (strip_test_3.stdout): Use TEST_OBJDUMP.
7767 * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
7768
86925eef
CC
77692008-04-04 Cary Coutant <ccoutant@google.com>
7770
7771 * symtab.h (Symbol::is_weak_undefined): New function.
7772 (Symbol::is_strong_undefined): New function.
7773 (Symbol::is_absolute): New function.
7774 (Symbol::needs_plt_entry): Exclude weak undefined symbols.
7775 (Symbol::needs_dynamic_reloc): Exclude weak undefined and
7776 absolute symbols.
7777 * testsuite/Makefile.am (check_PROGRAMS): Add weak_undef_test.
7778 (weak_undef_test): New target.
7779 * testsuite/Makefile.in: Rebuild.
7780 * testsuite/weak_undef_file1.cc: New file.
7781 * testsuite/weak_undef_file2.cc: New file.
7782 * testsuite/weak_undef_test.cc: New file.
7783
126f3ece
ILT
77842008-04-03 Craig Silverstein <csilvers@google.com>
7785
7786 * compressed_output.h (class Output_compressed_section): Use
7787 unsigned buffer.
7788 * compressed_output.cc (zlib_compress): Use unsigned buffers,
7789 add zlib header.
7790 (zlib_compressed_suffix): Removed.
7791 (Output_compressed_section::set_final_data_size): Use unsigned
7792 buffers.
7793 * testsuite/Makefile.am (flagstest_compress_debug_sections):
7794 Fix linker invocation.
7795 (flagstest_o_specialfile_and_compress_debug_sections):
7796 Likewise.
7797 * testsuite/Makefile.in: Regenerated.
7798
deae2a14
DM
77992008-04-02 David S. Miller <davem@davemloft.net>
7800
7801 * dwarf_reader.cc (Sized_dwarf_line_info::read_header_prolog,
7802 Sized_dwarf_line_info::process_one_opcode): Use Swap_unaligned.
7803
70752818
ILT
78042008-04-02 Craig Silverstein <csilvers@google.com>
7805
7806 * TODO: New file.
7807
39d0cb0e
ILT
78082008-04-02 Ian Lance Taylor <iant@google.com>
7809
7810 * fileread.cc (File_read::find_view): Add byteshift and vshifted
7811 parameters. Update for new key type to views_. Change all
7812 callers.
7813 (File_read::read): Adjust for byteshift in returned view.
7814 (File_read::add_view): New function, broken out of
7815 find_and_make_view.
7816 (File_read::make_view): New function, broken out of
7817 find_and_make_view.
7818 (File_read::find_or_make_view): Add offset and aligned
7819 parameters. Rewrite accordingly. Change all callers.
7820 (File_read::get_view): Add offset and aligned parameters. Adjust
7821 for byteshift in return value.
7822 (File_read::get_lasting_view): Likewise.
7823 * fileread.h (class File_read): Update declarations.
7824 (class File_read::View): Add byteshift_ field. Add byteshift to
7825 constructor. Add byteshift method.
7826 * archive.h (Archive::clear_uncached_views): New function.
7827 (Archive::get_view): Add aligned parameter. Change all callers.
7828 * object.h (Object::get_view): Add aligned parameter. Change all
7829 callers.
7830 (Object::get_lasting_view): Likewise.
7831
7832 * fileread.cc (File_read::release): Don't call clear_views if
7833 there are multiple objects.
7834 * fileread.h (File_read::clear_uncached_views): New function.
7835 * archive.cc (Add_archive_symbols::run): Call clear_uncached_views
7836 on the archive.
7837
a1207466
CC
78382008-03-31 Cary Coutant <ccoutant@google.com>
7839
7840 Add thin archive support.
7841 * archive.cc (Archive::armagt): New const.
7842 (Archive::setup): Remove task parameter and calls to unlock.
7843 (Archive::unlock_nested_archives): New function.
7844 (Archive::read_header): Add nested_off parameter. Change
7845 all callers.
7846 (Archive::interpret_header): Likewise.
7847 (Archive::include_all_members): Change to handle thin
7848 archives.
7849 (Archive::include_member): Likewise.
7850 * archive.h (Archive::Archive): Add new parameters and
7851 initializers.
7852 (Archive::armagt): New const.
7853 (Archive::setup): Remove task parameter.
7854 (Archive::unlock_nested_archives): New function.
7855 (Archive::read_header): Add nested_off parameter.
7856 (Archive::interpret_header): Likewise.
7857 (Archive::Nested_archive_table): New typedef.
7858 (Archive::is_thin_archive_): New field.
7859 (Archive::nested_archives_): New field.
7860 (Archive::options_): New field.
7861 (Archive::dirpath_): New field.
7862 (Archive::task_): New field.
7863 * readsyms.cc (Read_symbols::do_read_symbols): Add check
7864 for thin archives. Pass additional parameters to
7865 Archive::Archive. Unlock the archive file after calling
7866 Archive::setup.
cd536b21 7867
479f6503
ILT
78682008-03-29 Ian Lance Taylor <iant@google.com>
7869
686c8caf
ILT
7870 * symtab.cc (Symbol_table::do_define_as_constant): Don't force a
7871 version symbol to be local.
7872 * testsuite/ver_test_4.sh: New file.
7873 * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_4.sh.
7874 (check_DATA): Add ver_test_4.syms.
7875 (ver_test_4.syms): New target.
7876 * testsuite/Makefile.in: Rebuild.
7877
ab794b6b
ILT
7878 * output.cc
7879 (Output_section::Input_section_sort_entry::has_priority): New
7880 function.
7881 (Output_section::Input_section_sort_entry::match_file_name): New
7882 function.
7883 (Output_section::Input_section_sort_entry::match_section_name):
7884 Remove.
7885 (Output_section::Input_section_sort_entry::match_section_name_prefix):
7886 Remove.
7887 (Output_section::Input_section_sort_entry::match_section_file):
7888 Remove.
7889 (Output_section::Input_section_sort_compare::operator()): Rewrite
7890 using new Input_section_sort_entry functions. Sort crtbegin and
7891 crtend first. Sort sections with no priority before sections with
7892 a priority.
7893 * testsuite/initpri1.c (d3): Check j != 4.
7894 (cd5): New constructor/destructor function.
7895 (main): Check j != 2.
7896
479f6503
ILT
7897 * symtab.cc (Symbol_table::add_from_object): If we don't use the
7898 new symbol when resolving, don't call set_is_default.
7899 * testsuite/ver_test_7.cc: New file.
7900 * testsuite/ver_test_7.sh: New file.
7901 * testsuite/Makefile.am (ver_test_7.so): New target.
7902 (ver_test_7.o): New target.
7903 (check_SCRIPTS): Add ver_test_7.sh.
7904 (check_DATA): Add ver_test_7.syms.
7905 (ver_test_7.syms): New target.
7906
2fd32231
ILT
79072008-03-28 Ian Lance Taylor <iant@google.com>
7908
7909 * layout.cc (Layout::layout): If we see an input section with a
7910 name that needs sorting, set the must_sort flag for the output
7911 section.
7912 (Layout::make_output_section): If the name of the output section
7913 indicates that it might require sorting, set the may_sort flag.
7914 * output.h (Output_section::may_sort_attached_input_sections): New
7915 function.
7916 (Output_section::set_may_sort_attached_input_sections): New
7917 function.
7918 (Output_section::must_sort_attached_input_sections): New
7919 function.
7920 (Output_section::set_must_sort_attached_input_sections): New
7921 function.
7922 (class Output_section): Declare Input_section_sort_entry. Define
7923 Input_section_sort_compare. Declare
7924 sort_attached_input_sections. Add new fields:
7925 may_sort_attached_input_sections_,
7926 must_sort_attached_input_sections_,
7927 attached_input_sections_are_sorted_.
7928 * output.cc (Output_section::Output_section): Initialize new
7929 fields.
7930 (Output_section::add_input_section): Add an entry to
7931 input_sections_ if may_sort or must_sort are true.
7932 (Output_section::set_final_data_size): Call
7933 sort_attached_input_sections if necessary.
7934 (Output_section::Input_section_sort_entry): Define new class.
7935 (Output_section::Input_section_sort_compare::operator()): New
7936 function.
7937 (Output_section::sort_attached_input_sections): New function.
7938 * configure.ac: Check whether the compiler supports constructor
7939 priorities. Define a CONSTRUCTOR_PRIORITY automake conditional.
7940 * testsuite/initpri1.c: New file.
7941 * testsuite/Makefile.am (check_PROGRAMS): Add initpri1 if
7942 CONSTRUCTOR_PRIORITY.
7943 (initpri1_SOURCES, initpri1_DEPENDENCIES): New variables.
7944 (initpri1_LDFLAGS): New variable.
7945 * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
7946
18e6b24e
ILT
79472008-03-27 Ian Lance Taylor <iant@google.com>
7948
49bdd526
ILT
7949 * common.cc (Sort_commons::operator): Correct sorting algorithm.
7950 * testsuite/common_test_1.c: New file.
7951 * testsuite/Makefile.am (check_PROGRAMS): Add common_test_1.
7952 (common_test_1_SOURCES): New variable.
7953 (common_test_1_DEPENDENCIES): New variable.
7954 (common_test_1_LDFLAGS): New variable.
7955
18e6b24e
ILT
7956 * symtab.cc (Symbol_table::add_from_object): Handle saw_undefined_
7957 and commons_ correctly when NAME/VERSION does not override
7958 NAME/NULL.
7959 * testsuite/ver_test_6.c: New file.
7960 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_6
7961 (ver_test_6_SOURCES, ver_test_6_DEPENDENCIES): New variables.
7962 (ver_test_6_LDFLAGS, ver_test_6_LDADD): New variables.
7963
04bf7072
ILT
79642008-03-26 Ian Lance Taylor <iant@google.com>
7965
5871526f
ILT
7966 * symtab.cc (Symbol_table::add_from_relobj): Don't set the version
7967 of an undefined symbol from a version script.
7968 * testsuite/Makefile.am (ver_test_5.so): New target.
7969 (ver_test_5.o): New target.
7970 (check_SCRIPTS): Add ver_test_5.sh.
7971 (check_DATA): Add ver_test_5.syms.
7972 (ver_test_5.syms): New target.
7973 * testsuite/ver_test_5.cc: New file.
7974 * testsuite/ver_test_5.script: New file.
7975 * testsuite/ver_test_5.sh: New file.
7976 * Makefile.in, testsuite/Makefile.in: Rebuild.
7977
04bf7072
ILT
7978 PR gold/5986
7979 Fix problems building gold with gcc 4.3.0.
7980 * gold.h (TEMPLATE_ATTRIBUTE_PRINTF_4): Define.
7981 (gold_error_at_location, gold_warning_at_location): Use it.
7982 * configure.ac: Check whether we can compile and use a template
7983 function with a printf attribute.
7984 * x86_64.cc (Target_x86_64::do_code_fill): Swap out a 32-bit value
7985 when jumping over bytes.
7986 * object.cc: Instantiate Object::read_section_data.
7987 * debug.h: Include <cstring>
7988 * dwarf_reader.cc: Include <algorithm>
7989 * main.cc: Include <cstring>.
7990 * options.cc: Include <cstring>.
7991 * output.cc: Include <cstring>.
7992 * script.cc: Include <cstring>.
7993 * script.h: Include <string>.
7994 * symtab.cc: Include <cstring> and <algorithm>.
7995 * target-select.cc: Include <cstring>.
7996 * version.cc: Include <string>.
7997 * testsuite/testmain.cc: Include <cstdlib>.
7998 * configure, config.in: Rebuild.
7999
874c5b28
ILT
80002008-03-25 Ian Lance Taylor <iant@google.com>
8001
819d6c3a
ILT
8002 * options.cc: Include "../bfd/bfdver.h".
8003 (options::help): Print bug reporting address.
8004
f4b2c6f5
ILT
8005 * version.cc (print_version): Adjust output for current value of
8006 BFD_VERSION_STRING.
8007
8008 * NEWS: New file.
8009
e96caa79
ILT
8010 * options.cc (options::help): Print list of supported targets.
8011 * target-select.h: Include <vector>.
8012 (class Target_selector): Make machine_, size_, and is_big_endian_
8013 fields const. Add bfd_name_ and instantiated_target_ fields.
8014 (Target_selector::Target_selector): Add bfd_name parameter.
8015 (Target_selector::recognize): Make non-virtual, call
8016 do_recognize.
8017 (Target_selector::recognize_by_name): Make non-virtual, call
8018 do_recognize_by_name.
8019 (Target_selector::supported_names): New function.
8020 (Target_selector::bfd_name): New function.
8021 (Target_selector::do_instantiate_target): New pure virtual
8022 function.
8023 (Target_selector::do_recognize): New virtual function.
8024 (Target_selector::do_recognize_by_name): New virtual function.
8025 (Target_selector::instantiate_target): New private function.
8026 (supported_target_names): Declare.
8027 * target-select.cc (Target_selector::Target_selector): Update for
8028 new parameter and fields.
8029 (select_target_by_name): Check that the name matches before
8030 calling recognize_by_name.
8031 (supported_target_names): New function.
8032 * i386.cc (class Target_selector_i386): Update Target_selector
8033 constructor call. Remove recognize and recognize_by_name. Add
8034 do_instantiate_target.
8035 * x86_64.cc (class Target_selector_x86_64): Likewise.
8036 * testsuite/testfile.cc (class Target_selector_test): Update for
8037 changes to Target_selector.
8038
874c5b28
ILT
8039 * README: Rewrite, with some notes on unsupported features.
8040
0a65a3a7
CC
80412008-03-24 Cary Coutant <ccoutant@google.com>
8042
8043 * i386.cc (Target_i386::Got_type): New enum declaration.
8044 (Target_i386::Scan::local): Updated callers of Output_data_got
8045 member functions.
8046 (Target_i386::Scan::global): Likewise.
8047 (Target_i386::Relocate::relocate): Likewise.
8048 (Target_i386::Relocate::relocate_tls): Likewise.
8049 * object.h (Got_offset_list): New class.
8050 (Sized_relobj::local_has_got_offset): Added got_type parameter.
8051 (Sized_relobj::local_got_offset): Likewise.
8052 (Sized_relobj::set_local_got_offset): Likewise.
8053 (Sized_relobj::local_has_tls_got_offset): Removed.
8054 (Sized_relobj::local_tls_got_offset): Removed.
8055 (Sized_relobj::set_local_tls_got_offset): Removed.
8056 (Sized_relobj::Local_got_offsets): Changed to store a list of offsets.
8057 * output.cc (Output_data_got::add_global): Added got_type parameter.
8058 (Output_data_got::add_global_with_rel): Likewise.
8059 (Output_data_got::add_global_with_rela): Likewise.
8060 (Output_data_got::add_global_pair_with_rel): New function.
8061 (Output_data_got::add_global_pair_with_rela): New function.
8062 (Output_data_got::add_local): Added got_type parameter.
8063 (Output_data_got::add_local_with_rel): Likewise.
8064 (Output_data_got::add_local_with_rela): Likewise.
8065 (Output_data_got::add_local_pair_with_rel): New function.
8066 (Output_data_got::add_local_pair_with_rela): New function.
8067 (Output_data_got::add_global_tls): Removed.
8068 (Output_data_got::add_global_tls_with_rel): Removed.
8069 (Output_data_got::add_global_tls_with_rela): Removed.
8070 (Output_data_got::add_local_tls): Removed.
8071 (Output_data_got::add_local_tls_with_rel): Removed.
8072 (Output_data_got::add_local_tls_with_rela): Removed.
8073 * output.h (Output_data_got::add_global): Added got_type parameter.
8074 (Output_data_got::add_global_with_rel): Likewise.
8075 (Output_data_got::add_global_with_rela): Likewise.
8076 (Output_data_got::add_global_pair_with_rel): New function.
8077 (Output_data_got::add_global_pair_with_rela): New function.
8078 (Output_data_got::add_local): Added got_type parameter.
8079 (Output_data_got::add_local_with_rel): Likewise.
8080 (Output_data_got::add_local_with_rela): Likewise.
8081 (Output_data_got::add_local_pair_with_rel): New function.
8082 (Output_data_got::add_local_pair_with_rela): New function.
8083 (Output_data_got::add_global_tls): Removed.
8084 (Output_data_got::add_global_tls_with_rel): Removed.
8085 (Output_data_got::add_global_tls_with_rela): Removed.
8086 (Output_data_got::add_local_tls): Removed.
8087 (Output_data_got::add_local_tls_with_rel): Removed.
8088 (Output_data_got::add_local_tls_with_rela): Removed.
8089 * resolve.cc (Symbol::override_base_with_special): Removed
8090 reference to has_got_offset_ field.
8091 * symtab.cc (Symbol::init_fields): Replaced initialization
8092 of got_offset_ with got_offsets_. Removed initialization
8093 of has_got_offset_
53fcba31 8094 * symtab.h (Symbol::has_got_offset): Aded got_type parameter.
0a65a3a7
CC
8095 (Symbol::got_offset): Likewise.
8096 (Symbol::set_got_offset): Likewise.
8097 (Symbol::has_tls_got_offset): Removed.
8098 (Symbol::tls_got_offset): Removed.
8099 (Symbol::set_tls_got_offset): Removed.
8100 (Symbol::got_offset_): Removed.
8101 (Symbol::tls_mod_got_offset_): Removed.
8102 (Symbol::tls_pair_got_offset_): Removed.
8103 (Symbol::got_offsets_): New field.
8104 (Symbol::has_got_offset): Removed.
8105 (Symbol::has_tls_mod_got_offset): Removed.
8106 (Symbol::has_tls_pair_got_offset): Removed.
8107 * x86_64.cc (Target_x86_64::Got_type): New enum declaration.
8108 (Target_x86_64::Scan::local): Updated callers of Output_data_got
8109 member functions.
8110 (Target_x86_64::Scan::global): Likewise.
8111 (Target_x86_64::Relocate::relocate): Likewise.
8112 (Target_x86_64::Relocate::relocate_tls): Likewise.
8113
bd52eafb
BE
81142008-03-25 Ben Elliston <bje@au.ibm.com>
8115
8116 * yyscript.y: Fix spelling error in comment.
8117
8b105e34
ILT
81182008-03-24 Ian Lance Taylor <iant@google.com>
8119
8ed814a9
ILT
8120 * options.h (class General_options): Define build_id option.
8121 * layout.h (class Layout): Declare write_build_id, create_note,
8122 create_build_id. Add build_id_note_ member.
8123 * layout.cc: Include <cerrno>, <fcntl.h>, <unistd.h>,
8124 "libiberty.h", "md5.h", "sha1.h".
8125 (Layout::Layout): Initialize eh_frame_data_,
8126 eh_frame_hdr_section_, and build_id_note_.
8127 (Layout::finalize): Call create_build_id.
8128 (Layout::create_note): New function, broken out of
8129 Layout::create_gold_note.
8130 (Layout::create_gold_note): Call create_note.
8131 (Layout::create_build_id): New function.
8132 (Layout::write_build_id): New function.
8133 (Close_task_runner::run): Call write_build_id.
8134
8b105e34
ILT
8135 * x86_64.cc: Correct license to GPLv3.
8136
086a1841
ILT
81372008-03-23 Ian Lance Taylor <iant@google.com>
8138
8139 * options.cc: Include "demangle.h".
8140 (parse_optional_string): New function.
8141 (parse_long_option): Handle takes_optional_argument.
8142 (parse_short_option): Update dash_z initializer. Handle
8143 takes_optional_argument.
8144 (General_options::General_options): Initialize do_demangle_.
8145 (General_options::finalize): Set do_demangle_. Handle demangling
8146 style.
8147 * options.h (parse_optional_string): Declare.
8148 (struct One_option): Add optional_arg field. Update constructor.
8149 Update call constructor calls. Add takes_optional_argument
8150 function.
8151 (DEFINE_var): Add optional_arg__ parameter. Change all callers.
8152 (DEFINE_optional_string): Define.
8153 (General_options::demangle): Change from DEFINE_bool to
8154 DEFINE_optional_string.
8155 (General_options::no_demangle): New function.
8156 (General_options::do_demangle): New function.
8157 (General_options::set_do_demangle): New function.
8158 (General_options::execstack_status_): Move definition to end of
8159 class definition.
8160 (General_options::static_): Likewise.
8161 (General_options::do_demangle_): New field.
8162 * object.cc (big_endian>::get_symbol_location_info): Call
8163 Options::do_demangle, not Options::demangle.
8164 * symtab.cc (demangle): Likewise.
8165
cbb93e63
ILT
81662008-03-22 Ian Lance Taylor <iant@google.com>
8167
8168 * gold.h: Include <cstddef> and <sys/types.h>
8169 * options.h: Include <cstring>.
8170
ec531623
ILT
81712008-03-21 Ian Lance Taylor <iant@google.com>
8172
8173 * Added source code to GNU binutils.
This page took 0.46731 seconds and 4 git commands to generate.