*** empty log message ***
[deliverable/binutils-gdb.git] / gold / ChangeLog
CommitLineData
5b7b7d6e
ILT
12011-05-06 Ian Lance Taylor <iant@google.com>
2
3 * layout.cc (Layout::layout): If the output section flags change,
4 update the ordering.
5
f0f9babf
CC
62011-04-25 Cary Coutant <ccoutant@google.com>
7
8 * incremental-dump.cc (dump_incremental_inputs): Print local
9 symbol info for each input file.
10 * incremental.cc
11 (Output_section_incremental_inputs::set_final_data_size): Add local
12 symbol info to input file entries in incremental info.
13 (Output_section_incremental_inputs::write_info_blocks): Likewise.
14 (Sized_incr_relobj::Sized_incr_relobj): Initialize new data members.
15 (Sized_incr_relobj::do_add_symbols): Cosmetic change.
16 (Sized_incr_relobj::do_count_local_symbols): Replace stub with
17 implementation.
18 (Sized_incr_relobj::do_finalize_local_symbols): Likewise.
19 (Sized_incr_relobj::do_relocate): Write the local symbols.
20 (Sized_incr_dynobj::do_add_symbols): Cosmetic change.
21 * incremental.h (Incremental_inputs_reader::get_symbol_offset):
22 Adjust size of input file header.
23 (Incremental_inputs_reader::get_local_symbol_offset): New function.
24 (Incremental_inputs_reader::get_local_symbol_count): New function.
25 (Incremental_inputs_reader::get_input_section): Adjust size of input
26 file header.
27 (Incremental_inputs_reader::get_global_symbol_reader): Likewise.
28 (Sized_incr_relobj::This): New typedef.
29 (Sized_incr_relobj::sym_size): New const data member.
30 (Sized_incr_relobj::Local_symbol): New struct.
31 (Sized_incr_relobj::do_output_local_symbol_count): New function.
32 (Sized_incr_relobj::do_local_symbol_offset): New function.
33 (Sized_incr_relobj::local_symbol_count_): New data member.
34 (Sized_incr_relobj::output_local_dynsym_count_): New data member.
35 (Sized_incr_relobj::local_symbol_index_): New data member.
36 (Sized_incr_relobj::local_symbol_offset_): New data member.
37 (Sized_incr_relobj::local_dynsym_offset_): New data member.
38 (Sized_incr_relobj::local_symbols_): New data member.
39 * object.h (Relobj::output_local_symbol_count): New function.
40 (Relobj::local_symbol_offset): New function.
41 (Relobj::do_output_local_symbol_count): New function.
42 (Relobj::do_local_symbol_offset): New function.
43 (Sized_relobj::do_output_local_symbol_count): New function.
44 (Sized_relobj::do_local_symbol_offset): New function.
45
d0a9ace3
ILT
462011-04-22 Vladimir Simonov <sv@sw.ru>
47
48 * descriptors.cc (set_close_on_exec): New function.
49 (Descriptors::open): Use set_close_on_exec.
50 * output.cc (S_ISLNK): Define if not defined.
51
94a3fc8b
CC
522011-04-22 Cary Coutant <ccoutant@google.com>
53
54 * incremental.cc (Sized_incremental_binary::setup_readers): Allocate
55 global symbol map.
56 (Sized_incremental_binary::do_apply_incremental_relocs): New function.
57 (Sized_incr_relobj::do_add_symbols): Add symbols to global symbol map.
58 (Sized_incr_relobj::do_relocate): Remap section indices in incremental
59 relocations.
60 (Sized_incr_dynobj::do_add_symbols): Add symbols to global symbol map.
61 (Sized_incr_dynobj::do_for_all_global_symbols): Remove FIXME.
62 (Sized_incr_dynobj::do_for_all_local_got_entries): Likewise.
63 * incremental.h
64 (Incremental_inputs_reader::global_symbol_reader_at_offset): New
65 function.
66 (Incremental_binary::apply_incremental_relocs): New function.
67 (Incremental_binary::do_apply_incremental_relocs): New function.
68 (Sized_incremental_binary::Sized_incremental_binary): Initialize new
69 data member.
70 (Sized_incremental_binary::add_global_symbol): New function.
71 (Sized_incremental_binary::global_symbol): New function.
72 (Sized_incremental_binary::do_apply_incremental_relocs): New function.
73 (Sized_incremental_binary::symbol_map_): New data member.
74 * layout.cc (Layout_task_runner::run): Apply incremental relocations.
75 * target.h (Sized_target::apply_relocation): New function.
76 * target-reloc.h (apply_relocation): New function.
77 * x86_64.cc (Target_x86_64::apply_relocation): New function.
78
c87e4302
DK
792011-04-22 Doug Kwan <dougkwan@google.com>
80
81 * arm.cc (Arm_output_section::Arm_output_section): Set SHF_LINK_ORDER
82 flag of a SHT_ARM_EXIDX section.
83 * testsuite/Makefile.am (arm_exidx_test): New test rules.
84 * testsuite/Makefile.in: Regenerate.
85 * testsuite/arm_exidx_test.s: New file.
86 * testsuite/arm_exidx_test.sh: Same.
87
e7782cf6
CC
882011-04-20 Cary Coutant <ccoutant@google.com>
89
90 PR gold/12689
91 * archive.h (Incremental_archive_entry::Archive_member):
92 Initialize arg_serial_ (second constructor).
93
308ecdc7
ILT
942011-04-17 Ian Lance Taylor <iant@google.com>
95
96 * object.cc (Relocate_info::location): Simplify location string.
97 * errors.cc (Errors::error_at_location): Don't print program
98 name.
99 (Errors::warning_at_location): Likewise.
100 (Errors::undefined_symbol): Likewise.
101 * testsuite/debug_msg.sh: Update accordingly.
102
bec5b579
CC
1032011-04-14 Cary Coutant <ccoutant@google.com>
104
105 * gold/layout.cc (Layout::symtab_section_offset): New function.
106 * gold/layout.h (Layout::symtab_section_offset): New function.
107 * gold/reloc.cc (Sized_relobj::do_relocate): Call it.
108
88597d34
ILT
1092011-04-12 Ian Lance Taylor <iant@google.com>
110
111 * configure.ac: Check for sys/mman.h and mmap. Check for mremap
112 with MREMAP_MAYMOVE.
113 * output.h (class Output_file): Add map_is_allocated_ field.
114 * output.cc: Only #include <sys/mman.h> if it exists. If mmap is
115 not available, provide stubs. If mremap is not available, #define
116 it to gold_mremap.
117 (MREMAP_MAYMOVE): Define if not defined.
118 (Output_file::Output_file): Initialize map_is_allocated_.
119 (Output_file::resize): Check map_is_allocated_.
120 (Output_file::map_anonymous): If mmap fails, use malloc.
121 (Output_file::unmap): Don't do anything for an anonymous map.
122 * fileread.cc: Only #include <sys/mman.h> if it exists. If mmap
123 is not available, provide stubs.
124 (File_read::View::~View): Use free rather than delete[].
125 (File_read::make_view): Use malloc rather than new[]. If mmap
126 fails, use malloc.
127 (File_read::find_or_make_view): Use malloc rather than new[].
128 * gold.h: Remove HAVE_REMAP code.
129 * mremap.c: #include <errno.h>. Only #include <sys/mman.h> if it
130 exists. Rename mremap to gold_mremap. If mmap is not available
131 don't do anything.
132 * configure, config.in: Rebuild.
133
11e361bc
ILT
1342011-04-11 Ian Lance Taylor <iant@google.com>
135
136 * incremental.cc (Sized_incr_relobj::do_add_symbols): Always
137 initialize local variable v.
138
cdc29364
CC
1392011-04-11 Cary Coutant <ccoutant@google.com>
140
141 * archive.cc (Archive::include_member): Adjust call to
142 report_object.
143 (Add_archive_symbols::run): Track argument serial numbers.
144 (Lib_group::include_member): Likewise.
145 (Add_lib_group_symbols::run): Adjust call to report_archive_begin.
146 * archive.h (Incremental_archive_entry::Archive_member):
147 Initialize arg_serial_.
148 (Archive_member::arg_serial_): New data member.
149 * dynobj.cc (Dynobj::Dynobj): Allow input_file_ to be NULL.
150 (Sized_dynobj::do_add_symbols): Track symbols when doing an
151 incremental link.
152 (Sized_dynobj::do_for_all_local_got_entries): New function.
153 * dynobj.h: (Sized_dynobj::do_for_all_local_got_entries): New
154 function.
155 * fileread.cc (get_mtime): New function.
156 * fileread.h (get_mtime): New function.
157 * gold.cc (queue_initial_tasks): Check for incremental update.
158 (process_incremental_input): New function.
159 (queue_middle_tasks): Don't force valid target for incremental
160 update.
161 * incremental-dump.cc (find_input_containing_global): Adjust
162 size of symbol info entry.
163 (dump_incremental_inputs): Dump argument serial number and
164 in_system_directory flag; bias shndx by 1; print symbol names
165 when dumping per-file symbol lists; use new symbol info readers.
166 * incremental.cc
167 (Output_section_incremental_inputs:update_data_size): New function.
168 (Sized_incremental_binary::setup_readers): Setup input readers
169 for each input file; build maps for files added from libraries
170 and scripts.
171 (Sized_incremental_binary::check_input_args): New function.
172 (Sized_incremental_binary::do_check_inputs): Build map of argument
173 serial numbers to input arguments.
174 (Sized_incremental_binary::do_file_has_changed): Rename
175 do_file_is_unchanged to this; compare file modification times.
176 (Sized_incremental_binary::do_init_layout): New function.
177 (Sized_incremental_binary::do_reserve_layout): New function.
178 (Sized_incremental_binary::do_get_input_reader): Remove.
179 (Sized_incremental_binary::get_symtab_view): New function.
180 (Incremental_checker::can_incrementally_link_output_file): Remove.
181 (Incremental_inputs::report_command_line): Exclude --debug options.
182 (Incremental_inputs::report_archive_begin): Add parameter; track
183 argument serial numbers; don't put input file entry for archive
184 before archive members.
185 (Incremental_inputs::report_archive_end): Put input file entry
186 for archive after archive members.
187 (Incremental_inputs::report_object): Add parameter; track argument
188 serial numbers and in_system_directory flag.
189 (Incremental_inputs::report_script): Add parameter; track argument
190 serial numbers.
191 (Output_section_incremental_inputs::set_final_data_size): Adjust
192 size of symbol info entry; check for forwarding symbols.
193 (Output_section_incremental_inputs::write_input_files): Write
194 in_system_directory flag and argument serial number.
195 (Output_section_incremental_inputs::write_info_blocks): Map section
196 indices between incremental info and original input file; store
197 input section index for each symbol.
198 (class Local_got_offset_visitor): Derive from Got_offset_list::Visitor;
199 change operator() to visit().
200 (class Global_got_offset_visitor): Likewise.
201 (class Global_symbol_visitor_got_plt):
202 (Output_section_incremental_inputs::write_got_plt): Use new visitor
203 classes.
204 (Sized_incr_relobj::Sized_incr_relobj): New constructor.
205 (Sized_incr_relobj::do_read_symbols): New function.
206 (Sized_incr_relobj::do_layout): New function.
207 (Sized_incr_relobj::do_layout_deferred_sections): New function.
208 (Sized_incr_relobj::do_add_symbols): New function.
209 (Sized_incr_relobj::do_should_include_member): New function.
210 (Sized_incr_relobj::do_for_all_global_symbols): New function.
211 (Sized_incr_relobj::do_for_all_local_got_entries): New function.
212 (Sized_incr_relobj::do_section_size): New function.
213 (Sized_incr_relobj::do_section_name): New function.
214 (Sized_incr_relobj::do_section_contents): New function.
215 (Sized_incr_relobj::do_section_flags): New function.
216 (Sized_incr_relobj::do_section_entsize): New function.
217 (Sized_incr_relobj::do_section_address): New function.
218 (Sized_incr_relobj::do_section_type): New function.
219 (Sized_incr_relobj::do_section_link): New function.
220 (Sized_incr_relobj::do_section_info): New function.
221 (Sized_incr_relobj::do_section_addralign): New function.
222 (Sized_incr_relobj::do_initialize_xindex): New function.
223 (Sized_incr_relobj::do_get_global_symbol_counts): New function.
224 (Sized_incr_relobj::do_read_relocs): New function.
225 (Sized_incr_relobj::do_gc_process_relocs): New function.
226 (Sized_incr_relobj::do_scan_relocs): New function.
227 (Sized_incr_relobj::do_count_local_symbols): New function.
228 (Sized_incr_relobj::do_finalize_local_symbols): New function.
229 (Sized_incr_relobj::do_set_local_dynsym_indexes): New function.
230 (Sized_incr_relobj::do_set_local_dynsym_offset): New function.
231 (Sized_incr_relobj::do_relocate): New function.
232 (Sized_incr_relobj::do_set_section_offset): New function.
233 (Sized_incr_dynobj::Sized_incr_dynobj): New function.
234 (Sized_incr_dynobj::do_read_symbols): New function.
235 (Sized_incr_dynobj::do_layout): New function.
236 (Sized_incr_dynobj::do_add_symbols): New function.
237 (Sized_incr_dynobj::do_should_include_member): New function.
238 (Sized_incr_dynobj::do_for_all_global_symbols): New function.
239 (Sized_incr_dynobj::do_for_all_local_got_entries): New function.
240 (Sized_incr_dynobj::do_section_size): New function.
241 (Sized_incr_dynobj::do_section_name): New function.
242 (Sized_incr_dynobj::do_section_contents): New function.
243 (Sized_incr_dynobj::do_section_flags): New function.
244 (Sized_incr_dynobj::do_section_entsize): New function.
245 (Sized_incr_dynobj::do_section_address): New function.
246 (Sized_incr_dynobj::do_section_type): New function.
247 (Sized_incr_dynobj::do_section_link): New function.
248 (Sized_incr_dynobj::do_section_info): New function.
249 (Sized_incr_dynobj::do_section_addralign): New function.
250 (Sized_incr_dynobj::do_initialize_xindex): New function.
251 (Sized_incr_dynobj::do_get_global_symbol_counts): New function.
252 (make_sized_incremental_object): New function.
253 (Incremental_library::copy_unused_symbols): New function.
254 (Incremental_library::do_for_all_unused_symbols): New function.
255 * incremental.h (enum Incremental_input_flags): New type.
256 (class Incremental_checker): Remove.
257 (Incremental_input_entry::Incremental_input_entry): Add argument
258 serial number.
259 (Incremental_input_entry::arg_serial): New function.
260 (Incremental_input_entry::set_is_in_system_directory): New function.
261 (Incremental_input_entry::is_in_system_directory): New function.
262 (Incremental_input_entry::arg_serial_): New data member.
263 (Incremental_input_entry::is_in_system_directory_): New data member.
264 (class Script_info): Move here from script.h.
265 (Script_info::Script_info): Add filename parameter.
266 (Script_info::filename): New function.
267 (Script_info::filename_): New data member.
268 (Incremental_script_entry::Incremental_script_entry): Add argument
269 serial number.
270 (Incremental_object_entry::Incremental_object_entry): Likewise.
271 (Incremental_object_entry::add_input_section): Build list of input
272 sections with map to original shndx.
273 (Incremental_object_entry::get_input_section_index): New function.
274 (Incremental_object_entry::shndx_): New data member.
275 (Incremental_object_entry::name_key_): Rename; adjust all refs.
276 (Incremental_object_entry::sh_size_): Rename; adjust all refs.
277 (Incremental_archive_entry::Incremental_archive_entry): Add argument
278 serial number.
279 (Incremental_inputs::report_archive_begin): Likewise.
280 (Incremental_inputs::report_object): Likewise.
281 (Incremental_inputs::report_script): Likewise.
282 (class Incremental_global_symbol_reader): New class.
283 (Incremental_input_entry_reader::Incremental_input_entry_reader): Read
284 and store flags and input file type.
285 (Incremental_input_entry_reader::arg_serial): New function.
286 (Incremental_input_entry_reader::type): Extract type from flags.
287 (Incremental_input_entry_reader::is_in_system_directory): New function.
288 (Incremental_input_entry_reader::get_input_section_count): Call
289 accessor function for type.
290 (Incremental_input_entry_reader::get_symbol_offset): Call accessor
291 function for type; adjust size of global symbol entry.
292 (Incremental_input_entry_reader::get_global_symbol_count): Call
293 accessor function for type.
294 (Incremental_input_entry_reader::get_object_count): Likewise.
295 (Incremental_input_entry_reader::get_object_offset): Likewise.
296 (Incremental_input_entry_reader::get_member_count): Likewise.
297 (Incremental_input_entry_reader::get_unused_symbol_count): Likewise.
298 (Incremental_input_entry_reader::get_member_offset): Likewise.
299 (Incremental_input_entry_reader::get_unused_symbol): Likewise.
300 (Incremental_input_entry_reader::Global_symbol_info): Remove.
301 (Incremental_input_entry_reader::get_global_symbol_info): Remove.
302 (Incremental_input_entry_reader::get_global_symbol_reader): New
303 function.
304 (Incremental_input_entry_reader::get_output_symbol_index): New
305 function.
306 (Incremental_input_entry_reader::type_): Remove.
307 (Incremental_input_entry_reader::flags_): New data member.
308 (Incremental_inputs_reader::input_file_offset): New function.
309 (Incremental_inputs_reader::input_file_index): New function.
310 (Incremental_inputs_reader::input_file): Call input_file_offset.
311 (Incremental_inputs_reader::input_file_at_offset): New function.
312 (Incremental_relocs_reader::get_r_type): Reformat.
313 (Incremental_relocs_reader::get_r_shndx): Reformat.
314 (Incremental_relocs_reader::get_r_offset): Reformat.
315 (Incremental_relocs_reader::data): New function.
316 (Incremental_binary::Incremental_binary): Initialize new data members.
317 (Incremental_binary::check_inputs): Add cmdline parameter.
318 (Incremental_binary::file_is_unchanged): Remove.
319 (Input_reader::arg_serial): New function.
320 (Input_reader::get_unused_symbol_count): New function.
321 (Input_reader::get_unused_symbol): New function.
322 (Input_reader::do_arg_serial): New function.
323 (Input_reader::do_get_unused_symbol_count): New function.
324 (Input_reader::do_get_unused_symbol): New function.
325 (Incremental_binary::input_file_count): New function.
326 (Incremental_binary::get_input_reader): Change signature to use
327 index instead of filename.
328 (Incremental_binary::file_has_changed): New function.
329 (Incremental_binary::get_input_argument): New function.
330 (Incremental_binary::get_library): New function.
331 (Incremental_binary::get_script_info): New function.
332 (Incremental_binary::init_layout): New function.
333 (Incremental_binary::reserve_layout): New function.
334 (Incremental_binary::output_file): New function.
335 (Incremental_binary::do_check_inputs): New function.
336 (Incremental_binary::do_file_is_unchanged): Remove.
337 (Incremental_binary::do_file_has_changed): New function.
338 (Incremental_binary::do_init_layout): New function.
339 (Incremental_binary::do_reserve_layout): New function.
340 (Incremental_binary::do_input_file_count): New function.
341 (Incremental_binary::do_get_input_reader): Change signature.
342 (Incremental_binary::input_args_map_): New data member.
343 (Incremental_binary::library_map_): New data member.
344 (Incremental_binary::script_map_): New data member.
345 (Sized_incremental_binary::Sized_incremental_binary): Initialize
346 new data members.
347 (Sized_incremental_binary::output_section): New function.
348 (Sized_incremental_binary::inputs_reader): Add const.
349 (Sized_incremental_binary::symtab_reader): Add const.
350 (Sized_incremental_binary::relocs_reader): Add const.
351 (Sized_incremental_binary::got_plt_reader): Add const.
352 (Sized_incremental_binary::get_symtab_view): New function.
353 (Sized_incremental_binary::Inputs_reader): New typedef.
354 (Sized_incremental_binary::Input_entry_reader): New typedef.
355 (Sized_incremental_binary::do_check_inputs): Add cmdline parameter.
356 (Sized_incremental_binary::do_file_is_unchanged): Remove.
357 (Sized_incremental_binary::do_file_has_changed): New function.
358 (Sized_incremental_binary::do_init_layout): New function.
359 (Sized_incremental_binary::do_reserve_layout): New function.
360 (Sized_input_reader::Inputs_reader): Remove.
361 (Sized_input_reader::Input_entry_reader): Remove.
362 (Sized_input_reader::do_arg_serial): New function.
363 (Sized_input_reader::do_get_unused_symbol_count): New function.
364 (Sized_input_reader::do_get_unused_symbol): New function.
365 (Sized_incremental_binary::do_input_file_count): New function.
366 (Sized_incremental_binary::do_get_input_reader): Change signature;
367 use index instead of filename.
368 (Sized_incremental_binary::section_map_): New data member.
369 (Sized_incremental_binary::input_entry_readers_): New data member.
370 (class Sized_incr_relobj): New class.
371 (class Sized_incr_dynobj): New class.
372 (make_sized_incremental_object): New function.
373 (class Incremental_library): New class.
374 * layout.cc (Free_list::num_lists): New static data member.
375 (Free_list::num_nodes): New static data member.
376 (Free_list::num_removes): New static data member.
377 (Free_list::num_remove_visits): New static data member.
378 (Free_list::num_allocates): New static data member.
379 (Free_list::num_allocate_visits): New static data member.
380 (Free_list::init): New function.
381 (Free_list::remove): New function.
382 (Free_list::allocate): New function.
383 (Free_list::dump): New function.
384 (Free_list::print_stats): New function.
385 (Layout_task_runner::run): Resize output file for incremental updates.
386 (Layout::Layout): Initialize new data members.
387 (Layout::set_incremental_base): New function.
388 (Layout::init_fixed_output_section): New function.
389 (Layout::layout_eh_frame): Do not build .eh_frame_hdr section for
390 incremental updates.
391 (Layout::create_gold_note): Do not create gold note section for
392 incremental updates.
393 (Layout::set_segment_offsets): Do not recalculate RELRO alignment
394 for incremental updates.
395 (Layout::set_section_offsets): For incremental updates, allocate space
396 from free list.
397 (Layout::create_symtab_sections): Layout with offsets relative to
398 start of section; for incremental updates, allocate space from free
399 list.
400 (Layout::create_shdrs): For incremental updates, allocate space from
401 free list.
402 (Layout::finish_dynamic_section): For incremental updates, do not
403 check --as-needed (fixed in subsequent patch).
404 * layout.h (class Free_list): New class.
405 (Layout::set_incremental_base): New function.
406 (Layout::incremental_base): New function.
407 (Layout::init_fixed_output_section): New function.
408 (Layout::allocate): New function.
409 (Layout::incremental_base_): New data member.
410 (Layout::free_list_): New data member.
411 * main.cc (main): Print Free_list statistics.
412 * object.cc (Relobj::finalize_incremental_relocs): Add
413 clear_counts parameter; clear counts only when clear_counts is set.
414 (Sized_relobj::Sized_relobj): Initialize new base class.
415 (Sized_relobj::do_layout): Don't report special sections.
416 (Sized_relobj::do_for_all_local_got_entries): New function.
417 (Sized_relobj::write_local_symbols): Add symtab_off parameter; add
418 symtab_off to all symbol table offsets.
419 (Sized_relobj::do_get_global_symbol_counts): Add typename keyword.
420 * object.h (class Got_offset_list): Move to top of file.
421 (Object::Object): Allow case where input_file == NULL.
422 (Object::~Object): Likewise.
423 (Object::input_file): Assert that input_file != NULL.
424 (Object::lock): Allow case where input_file == NULL.
425 (Object::unlock): Likewise.
426 (Object::is_locked): Likewise.
427 (Object::token): Likewise.
428 (Object::release): Likewise.
429 (Object::is_incremental): New function.
430 (Object::get_mtime): New function.
431 (Object::for_all_local_got_entries): New function.
432 (Object::clear_view_cache_marks): Allow case where input_file == NULL.
433 (Object::set_is_in_system_directory): New function.
434 (Object::is_in_system_directory): New function.
435 (Object::do_is_incremental): New function.
436 (Object::do_get_mtime): New function.
437 (Object::do_for_all_local_got_entries): New function.
438 (Object::is_in_system_directory_): New data member.
439 (Relobj::finalize_incremental_relocs): Add clear_counts parameter.
440 (class Sized_relobj_base): New class.
441 (class Sized_relobj): Derive from Sized_relobj_base.
442 (class Sized_relobj::Symbols): Redeclare from base class.
443 (class Sized_relobj::local_got_offset_list): Remove.
444 (class Sized_relobj::Output_sections): Redeclare from base class.
445 (class Sized_relobj::do_for_all_local_got_entries): New function.
446 (class Sized_relobj::write_local_symbols): Add offset parameter.
447 (class Sized_relobj::local_symbol_offset_): Update comment.
448 (class Sized_relobj::local_dynsym_offset_): Update comment.
449 * options.cc (Input_arguments::add_file): Remove const.
450 * options.h (Input_file_argument::Input_file_argument):
451 Initialize arg_serial_ (all constructors).
452 (Input_file_argument::set_arg_serial): New function.
453 (Input_file_argument::arg_serial): New function.
454 (Input_file_argument::arg_serial_): New data member.
455 (Input_arguments::Input_arguments): Initialize file_count_.
456 (Input_arguments::add_file): Remove const.
457 (Input_arguments::number_of_input_files): New function.
458 (Input_arguments::file_count_): New data member.
459 (Command_line::number_of_input_files): Call
460 Input_arguments::number_of_input_files.
461 * output.cc (Output_segment_headers::Output_segment_headers):
462 Set current size.
463 (Output_section::Input_section::current_data_size): New function.
464 (Output_section::Output_section): Initialize new data members.
465 (Output_section::add_input_section): Don't do merge sections for
466 an incremental link; allocate space from free list for an
467 incremental update.
468 (Output_section::add_output_section_data): Allocate space from
469 free list for an incremental update.
470 (Output_section::update_data_size): New function.
471 (Output_section::set_fixed_layout): New function.
472 (Output_section::reserve): New function.
473 (Output_segment::set_section_addresses): Remove const.
474 (Output_segment::set_section_list_addresses): Remove const; allocate
475 space from free list for an incremental update.
476 (Output_segment::set_offset): Adjust size of RELRO segment for an
477 incremental update.
478 * output.h (Output_data::current_data_size): Move here from
479 child classes.
480 (Output_data::pre_finalize_data_size): New function.
481 (Output_data::update_data_size): New function.
482 (Output_section_headers::update_data_size): new function.
483 (Output_section_data_build::current_data_size): Move to Output_data.
484 (Output_data_strtab::update_data_size): New function.
485 (Output_section::current_data_size): Move to Output_data.
486 (Output_section::set_fixed_layout): New function.
487 (Output_section::has_fixed_layout): New function.
488 (Output_section::reserve): New function.
489 (Output_section::update_data_size): New function.
490 (Output_section::has_fixed_layout_): New data member.
491 (Output_section::free_list_): New data member.
492 (Output_segment::set_section_addresses): Remove const.
493 (Output_segment::set_section_list_addresses): Remove const.
494 * plugin.cc (Sized_pluginobj::do_for_all_local_got_entries):
495 New function.
496 * plugin.h (Sized_pluginobj::do_for_all_local_got_entries):
497 New function.
498 * readsyms.cc (Read_symbols::do_read_symbols): Add library
499 parameter when calling Add_symbols constructor; store argument
500 serial number for members of a lib group.
501 (Add_symbols::locks): Allow case where token == NULL.
502 (Add_symbols::run): Report libraries denoted by --start-lib/--end-lib.
503 (Read_member::~Read_member): New function.
504 (Read_member::is_runnable): New function.
505 (Read_member::locks): New function.
506 (Read_member::run): New function.
507 (Check_script::~Check_script): New function.
508 (Check_script::is_runnable): New function.
509 (Check_script::locks): New function.
510 (Check_script::run): New function.
511 (Check_library::~Check_library): New function.
512 (Check_library::is_runnable): New function.
513 (Check_library::locks): New function.
514 (Check_library::run): New function.
515 * readsyms.h (Add_symbols::Add_symbols): Add library parameter.
516 (Add_symbols::library_): New data member.
517 (class Read_member): New class.
518 (class Check_script): New class.
519 (class Check_library): New class.
520 * reloc.cc (Read_relocs::is_runnable): Allow case where
521 token == NULL.
522 (Read_relocs::locks): Likewise.
523 (Scan_relocs::locks): Likewise.
524 (Relocate_task::locks): Likewise.
525 (Sized_relobj::do_scan_relocs): Tell finalize_incremental_relocs
526 to clear counters.
527 (Sized_relobj::incremental_relocs_scan): Fix comment.
528 (Sized_relobj::do_relocate): Pass output file offset to
529 write_local_symbols.
530 (Sized_relobj::incremental_relocs_write_reltype): Use reloc_size
531 from class declaration.
532 * script.cc (read_input_script): Allocate Script_info; pass
533 argument serial number to report_script.
534 * script.h (class Script_info): Move to incremental.h.
535 * symtab.cc (Symbol_table::add_from_incrobj): New function.
536 * symtab.h (Symbol_table::add_from_incrobj): New function.
537 (Symbol_table::set_file_offset): New function.
538
b961d0d7
CC
5392011-04-05 Cary Coutant <ccoutant@google.com>
540
541 * incremental-dump.cc (dump_incremental_inputs): Change signature
542 to take a Sized_incremental_binary; change caller. Use readers
543 in Sized_incremental_binary.
544 * incremental.cc
545 (Sized_incremental_binary::find_incremental_inputs_sections):
546 Rename do_find_incremental_inputs_sections to this.
547 (Sized_incremental_binary::setup_readers): New function.
548 (Sized_incremental_binary::do_check_inputs): Check
549 has_incremental_info_ flag; move setup code to setup_readers;
550 use input readers.
551 (Sized_incremental_binary::do_file_is_unchanged): New function.
552 (Sized_incremental_binary::do_get_input_reader): New function.
553 * incremental.h (class Incremental_binary): Move to end of file.
554 (Incremental_binary::file_is_unchanged): New function.
555 (Incremental_binary::do_file_is_unchanged): New function.
556 (Incremental_binary::Input_reader): New class.
557 (Incremental_binary::get_input_reader): New function.
558 (class Sized_incremental_binary): Move to end of file.
559 (Sized_incremental_binary::Sized_incremental_binary): Setup the
560 input section reader classes.
561 (Sized_incremental_binary::has_incremental_info): New function.
562 (Sized_incremental_binary::inputs_reader): New function.
563 (Sized_incremental_binary::symtab_reader): New function.
564 (Sized_incremental_binary::relocs_reader): New function.
565 (Sized_incremental_binary::got_plt_reader): New function.
566 (Sized_incremental_binary::do_file_is_unchanged): New function.
567 (Sized_incremental_binary::Sized_input_reader): New class.
568 (Sized_incremental_binary::get_input_reader): New function.
569 (Sized_incremental_binary::find_incremental_inputs_sections):
570 Rename do_find_incremental_inputs_sections to this.
571 (Sized_incremental_binary::setup_readers): New function.
572 (Sized_incremental_binary::has_incremental_info_): New data member.
573 (Sized_incremental_binary::inputs_reader_): New data member.
574 (Sized_incremental_binary::symtab_reader_): New data member.
575 (Sized_incremental_binary::relocs_reader_): New data member.
576 (Sized_incremental_binary::got_plt_reader_): New data member.
577 (Sized_incremental_binary::current_input_file_): New data member.
578
a869183f
PP
5792011-04-05 Paul Pluzhnikov <ppluzhnikov@google.com>
580
581 PR gold/12640
582 * dwarf_reader.cc (Sized_dwarf_line_info): Fix vector bounds
583 violation.
584
5852011-03-30 Cary Coutant <ccoutant@google.com>
c7975edd
CC
586
587 * archive.cc (Archive::include_member): Adjust call to report_object.
588 (Add_archive_symbols::run): Add script_info to call to
589 report_archive_begin.
590 (Lib_group::include_member): Adjust call to report_object.
591 (Add_lib_group_symbols::run): Adjust call to report_object.
592 * incremental-dump.cc (dump_incremental_inputs): Remove unnecessary
593 blocks. Add object count for script input files.
594 * incremental.cc (Incremental_inputs::report_archive_begin): Add
595 script_info parameter; change all callers.
596 (Incremental_inputs::report_object): Add script_info parameter;
597 change all callers.
598 (Incremental_inputs::report_script): Store backpointer to
599 incremental info entry.
600 (Output_section_incremental_inputs::set_final_data_size): Record
601 additional information for scripts.
602 (Output_section_incremental_inputs::write_info_blocks): Likewise.
603 * incremental.h (Incremental_script_entry::add_object): New function.
604 (Incremental_script_entry::get_object_count): New function.
605 (Incremental_script_entry::get_object): New function.
606 (Incremental_script_entry::objects_): New data member; adjust
607 constructor.
608 (Incremental_inputs::report_archive_begin): Add script_info parameter.
609 (Incremental_inputs::report_object): Add script_info parameter.
610 (Incremental_inputs_reader::get_object_count): New function.
611 (Incremental_inputs_reader::get_object_offset): New function.
612 * options.cc (Input_arguments::add_file): Return reference to
613 new input argument.
614 * options.h (Input_argument::set_script_info): New function.
615 (Input_argument::script_info): New function.
616 (Input_argument::script_info_): New data member; adjust all
617 constructors.
618 (Input_file_group::add_file): Return reference to new input argument.
619 (Input_file_lib::add_file): Likewise.
620 (Input_arguments::add_file): Likewise.
621 * readsyms.cc (Add_symbols::run): Adjust call to report_object.
622 * script.cc (Parser_closure::Parser_closure): Add script_info
623 parameter; adjust all callers.
624 (Parser_closure::script_info): New function.
625 (Parser_closure::script_info_): New data member.
626 (read_input_script): Report scripts earlier to incremental info.
627 (script_add_file): Set script_info in Input_argument.
628 (script_add_library): Likewise.
629 * script.h (Script_options::Script_info): Rewrite class.
630
a869183f 6312011-03-29 Cary Coutant <ccoutant@google.com>
e0c52780
CC
632
633 * archive.cc (Library_base::should_include_member): Move
634 method here from class Archive.
635 (Archive::Archive): Initialize base class.
636 (Archive::should_include_member): Move to base class.
637 (Archive::do_for_all_unused_symbols): New function.
638 (Add_archive_symbols::run): Remove redundant access to
639 incremental_inputs.
640 (Lib_group::Lib_group): Initialize base class.
641 (Lib_group::do_filename): New function.
642 (Lib_group::include_member): Pass pointer to Lib_group to
643 report_object.
644 (Lib_group::do_for_all_unused_symbols): New function.
645 (Add_lib_group_symbols::run): Report archive information for
646 incremental links.
647 * archive.h (class Library_base): New base class.
648 (class Archive): Derive from Library_base.
649 (Archive::filename): Move to base class.
650 (Archive::set_incremental_info): Likewise.
651 (Archive::incremental_info): Likewise.
652 (Archive::Should_include): Likewise.
653 (Archive::should_include_member): Likewise.
654 (Archive::Armap_entry): Remove.
655 (Archive::Unused_symbol_iterator): Remove.
656 (Archive::unused_symbols_begin): Remove.
657 (Archive::unused_symbols_end): Remove.
658 (Archive::do_filename): New function.
659 (Archive::do_get_mtime): New function.
660 (Archive::do_for_all_unused_symbols): New function.
661 (Archive::task_): Move to base class.
662 (Archive::incremental_info_): Likewise.
663 (class Lib_group): Derive from Library_base.
664 (Lib_group::do_filename): New function.
665 (Lib_group::do_get_mtime): New function.
666 (Lib_group::do_for_all_unused_symbols): New function.
667 (Lib_group::task_): Move to base class.
668 * dynobj.cc (Sized_dynobj::do_for_all_global_symbols): New
669 function.
670 * dynobj.h (Sized_dynobj::do_for_all_global_symbols): New
671 function.
672 * incremental.cc (Incremental_inputs::report_archive_begin):
673 Use Library_base; call library's get_mtime; add incremental inputs
674 entry before members.
675 (class Unused_symbol_visitor): New class.
676 (Incremental_inputs::report_archive_end): Use Library_base; use
677 visitor class to record unused symbols; don't add incremental inputs
678 entry after members.
679 (Incremental_inputs::report_object): Use Library_base.
680 * incremental.h
681 (Incremental_archive_entry::Incremental_archive_entry): Remove
682 unused Archive parameter.
683 (Incremental_inputs::report_archive_begin): Use Library_base.
684 (Incremental_inputs::report_archive_end): Likewise.
685 (Incremental_inputs::report_object): Likewise.
686 * object.cc (Sized_relobj::do_for_all_global_symbols): New
687 function.
688 * object.h (Object::for_all_global_symbols): New function.
689 (Object::do_for_all_global_symbols): New function.
690 (Sized_relobj::do_for_all_global_symbols): New function.
691 * plugin.cc (Sized_pluginobj::do_for_all_global_symbols): New
692 function.
693 * plugin.h (Sized_pluginobj::do_for_all_global_symbols): New
694 function.
695
61ab3e40
ILT
6962011-03-27 Ian Lance Taylor <iant@google.com>
697
698 * archive.cc (Archive::interpret_header): Return -1 if something
699 goes wrong. Change callers accordingly.
700
30e1f9e6
CC
7012011-03-25 Cary Coutant <ccoutant@google.com>
702
703 * testsuite/Makefile.am (final_layout.stdout): Use -n option with nm.
704 * testsuite/Makefile.in: Regenerate.
705
9c793f14
RÁE
7062010-03-23 Rafael Ávila de Espíndola <respindola@mozilla.com>
707
708 * plugin.cc (get_view): New.
709 (Plugin::load): Pass get_view to the plugin.
710 (Plugin_manager::get_view): New.
711
9312bb0a
ILT
7122011-03-21 Ian Lance Taylor <iant@google.com>
713
714 * testsuite/final_layout.sh: Rewrite to not use dc.
07aead7b 715 * testsuite/relro_test.sh: Fail if dc is not present.
9312bb0a 716
7e12ba9e
ST
7172011-03-21 Sriraman Tallam <tmsriram@google.com>
718
719 * testsuite/icf_safe_so_test.sh: Add #!/bin/sh to start.
720 Change == to -eq.
721 * testsuite/icf_string_merge_test.sh: Add #!/bin/sh to start.
722 * testsuite/icf_safe_test.sh: Add #!/bin/sh to start.
723 Change == to -eq.
724 * testsuite/icf_sht_rel_addend_test.sh: Add #!/bin/sh to start.
725 * testsuite/icf_preemptible_functions_test.sh: Add #!/bin/sh to start.
726
fd7a005d
ILT
7272011-03-14 Ian Lance Taylor <iant@google.com>
728
729 * script-sections.cc (Sort_output_sections::script_compare):
730 Rename from is_before, change return type.
731 (Sort_output_sections::operator()): Adjust accordingly.
732
ed16fd1b
ILT
7332011-03-11 Jeffrey Yasskin <jyasskin@google.com>
734
735 PR gold/12572
736 * testsuite/odr_violation2.cc: Add comment to make all error line
737 numbers double digits.
738 * testsuite/debug_msg.sh: Adjust expected errors.
739
71ff8986
ILT
7402011-03-09 Jeffrey Yasskin <jyasskin@google.com>
741
742 * dwarf_reader.cc (Sized_dwarf_line_info): Include all lines,
743 but mark earlier ones as non-canonical
744 (offset_to_iterator): Update search target and example
745 (do_addr2line): Return extra lines in a vector*
746 (format_file_lineno): Extract from do_addr2line
747 (one_addr2line): Add vector* out-param
748 * dwarf_reader.h (Offset_to_lineno_entry): New field recording
749 when a lineno entry appeared last for its instruction
750 (Dwarf_line_info): Add vector* out-param
751 * object.cc (Relocate_info): Pass NULL for the vector* out-param
752 * symtab.cc (Odr_violation_compare): Include the lineno in the
753 comparison again.
754 (linenos_from_loc): New. Combine the canonical line for an
755 address with its other lines.
756 (True_if_intersect): New. Helper functor to make
757 std::set_intersection a query.
758 (detect_odr_violations): Compare sets of lines instead of just
759 one line for each function. This became less deterministic, but
760 has fewer false positives.
761 * symtab.h: Declarations.
762 * testsuite/Makefile.am (odr_violation2.o): Compile with -O2 to
763 mix an optimized and non-optimized object in the same binary
764 (odr_violation2.so): Same.
765 * testsuite/Makefile.in: Regenerate from Makefile.am.
766 * testsuite/debug_msg.cc (main): Make OdrDerived classes.
767 * testsuite/debug_msg.sh: Update line numbers and add
768 assertions.
769 * testsuite/odr_violation1.cc: Use OdrDerived, in a
770 non-optimized context.
771 * testsuite/odr_violation2.cc: Make sure Ordering::operator()
772 isn't inlined, and use OdrDerived in an optimized context.
773 * testsuite/odr_header1.h: Defines OdrDerived, where
774 optimization will change the
775 first-instruction-in-the-destructor's file and line number.
776 * testsuite/odr_header2.h: Defines OdrBase.
777
a19fefdc
ILT
7782011-03-09 Ian Lance Taylor <iant@google.com>
779
780 * fileread.cc (File_read::clear_views): Don't delete the whole
781 file view.
782
ecb351e9
ILT
7832011-03-08 Ian Lance Taylor <iant@google.com>
784
785 PR gold/12525
786 * fileread.cc: #include <climits>.
787 (GOLD_IOV_MAX): Define.
788 (File_read::read_multiple): Limit number of entries by iov_max.
789 * fileread.h (class File_read): Always set max_readv_entries to
790 128.
791
b821d13c
ILT
7922011-03-07 Ian Lance Taylor <iant@google.com>
793
794 PR gold/12525
795 * options.h (class General_options): Add -dy and -dn.
796
89243142
CC
7972011-03-02 Cary Coutant <ccoutant@google.com>
798
799 * testsuite/script_test_9.t: Add TLS segment.
800
d0773f31
ILT
8012011-03-02 Simon Baldwin <simonb@google.com>
802
803 * configure.ac: Add check for gnu_indirect_function support in
804 the toolchain building binutils.
805 * configure: Rebuild.
806
badc8139
RÁE
8072010-02-18 Rafael Ávila de Espíndola <respindola@mozilla.com>
808
809 * symtab.cc (Symbol::should_add_dynsym_entry) Return false for
810 plugin only symbols.
811 (Symbol_table::sized_finalize_symbol) Mark symbol only present
812 in plugin files as not needed in the symbol table.
813
4cf7a849
ST
8142011-02-11 Sriraman Tallam <tmsriram@google.com>
815
816 * output.cc (Output_section::add_input_section): Delay fill
817 generation for section ordering.
818
b578bd7d
ILT
8192011-02-09 Ian Lance Taylor <iant@google.com>
820
821 PR gold/12316
822 * object.h (class Sized_relobj): Remove clear_local_symbols.
823 * reloc.cc (Sized_relobj::do_relocate): Don't call
824 clear_local_symbols.
825
84ced98a
RÁE
8262010-02-08 Rafael Ávila de Espíndola <respindola@mozilla.com>
827
828 * plugin.cc (is_visible_from_outside): Return true for symbols
829 in the -u option.
830
55382fb7
ILT
8312011-02-04 Jeffrey Yasskin <jyasskin@google.com>
832
833 * symtab.cc (Odr_violation_compare::operator()): Sort by just the
834 filename.
835
4e271fff
ST
8362011-02-02 Sriraman Tallam <tmsriram@google.com>
837
838 * icf.h (is_section_foldable_candidate): Change type of parameter
839 to std::string.
840 * icf.cc (Icf::find_identical_sections): Change type of local variable
841 section_name to be std::string.
842 (is_function_ctor_or_dtor): Change type of parameter to std::string.
843
d433c3ac
ILT
8442011-01-25 Ian Lance Taylor <iant@google.com>
845
846 * script.cc (script_add_extern): Rewrite to use
847 add_symbol_reference.
848
880473a6
DK
8492011-01-25 Doug Kwan <dougkwan@google.com>
850
d433c3ac 851 * icf.cc (get_section_contents): Always lock section's object.
880473a6 852
f30f86fa
ILT
8532011-01-24 Ian Lance Taylor <iant@google.com>
854
855 * options.h (class General_options): Accept
856 --no-detect-odr-violations.
857
8e51a0b9
ILT
8582011-01-24 Ian Lance Taylor <iant@google.com>
859
860 * version.cc (version_string): Bump to 1.11.
861
0f3b89d8
ILT
8622011-01-24 Ian Lance Taylor <iant@google.com>
863
864 * plugin.cc (class Plugin_rescan): Define new class.
865 (Plugin_manager::claim_file): Set any_claimed_.
866 (Plugin_manager::save_archive): New function.
867 (Plugin_manager::save_input_group): New function.
868 (Plugin_manager::all_symbols_read): Create Plugin_rescan task if
869 necessary.
870 (Plugin_manager::new_undefined_symbol): New function.
871 (Plugin_manager::rescan): New function.
872 (Plugin_manager::rescannable_defines): New function.
873 (Plugin_manager::add_input_file): Set any_added_.
874 * plugin.h (class Plugin_manager): define new fields rescannable_,
875 undefined_symbols_, any_claimed_, and any_added_. Declare
876 Plugin_rescan as friend. Declare new functions.
877 (Plugin_manager::Rescannable): Define type.
878 (Plugin_manager::Rescannable_list): Define type.
879 (Plugin_manager::Undefined_symbol_list): Define type.
880 (Plugin_manager::Plugin_manager): Initialize new fields.
881 * archive.cc (Archive::defines_symbol): New function.
882 (Add_archive_symbols::run): Pass archive to plugins if any.
883 * archive.h (class Archive): Declare defines_symbol.
884 * readsyms.cc (Input_group::~Input_group): New function.
885 (Finish_group::run): Pass input_group to plugins if any.
886 * readsyms.h (class Input_group): Declare destructor.
887 * symtab.cc (add_from_object): Pass undefined symbol to plugins if
888 any.
889
3bb951e5
ILT
8902011-01-10 Ian Lance Taylor <iant@google.com>
891
892 * layout.cc (Layout::layout_eh_frame): Mark a writable .eh_frame
893 section as relro.
894 (Layout::set_segment_offsets): Reset increase_relro before calling
895 set_section_addresses a second time.
896
0aa45fac
CC
8972011-01-04 Cary Coutant <ccoutant@google.com>
898
899 * script-sections.cc (Sort_output_sections::operator()): Sort TLS
900 sections before NOBITS sections.
901
0db46eb4
L
9022011-01-01 H.J. Lu <hongjiu.lu@intel.com>
903
904 * version.cc (print_version): Update copyright to 2011.
905
829c9745
CC
9062010-12-23 Cary Coutant <ccoutant@google.com>
907
908 * output.h (Output_data_reloc::add_output_section): Pass OD instead
909 of OS to this->add. Add OD parameter to second form of the function.
910
7500420b
ILT
9112010-12-20 Ian Lance Taylor <iant@google.com>
912
913 * dwarf_reader.cc (Sized_dwarf_line_info::read_lines): Only keep
914 second of two consecutive entries with same offset.
915
f8e9a930
RW
9162010-12-16 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
917
918 * testsuite/Makefile.am (ifuncmain2static_LDADD)
919 (ifuncmain2_LDADD, ifuncmain4static_LDADD, ifuncmain4_LDADD)
920 (ifuncmain7static_LDADD, ifuncmain7_LDADD): New empty variables,
921 to avoid unneeded links against $(LDADD).
922 * testsuite/Makefile.in: Regenerate.
923
2fbb4320
ILT
9242010-12-15 Ian Lance Taylor <iant@google.com>
925
926 PR gold/12324
927 * x86_64.cc (Target_x86_64::Scan::check_non_pic): Give an error
928 for R_X86_64_32 and R_X86_64_PC32.
929 * testsuite/Makefile.am (ver_matching_def.so): Depend on and use
930 ver_matching_def_pic.o.
931 (ver_matching_def_pic.o): New target.
932
fedb228d
RW
9332010-12-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
934
935 * fileread.cc (file_counts_lock, file_counts_initialize_lock)
936 (total_mapped_bytes, current_mapped_bytes, maximum_mapped_bytes):
937 Move definition before File_read::View member definitions.
938 (File_read::View::~View): Initialize and hold lock before
939 updating current_mapped_bytes.
940
9b547ce6
RW
9412010-12-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
942
943 * dwarf_reader.cc: Remove outdated comment.
944 * gold-threads.cc: Fix typo in error message.
945 * archive.cc: Fix typos in comments.
946 * archive.h: Likewise.
947 * arm-reloc-property.cc: Likewise.
948 * arm-reloc-property.h: Likewise.
949 * arm-reloc.def: Likewise.
950 * arm.cc: Likewise.
951 * attributes.h: Likewise.
952 * cref.cc: Likewise.
953 * ehframe.cc: Likewise.
954 * fileread.h: Likewise.
955 * gold.h: Likewise.
956 * i386.cc: Likewise.
957 * icf.cc: Likewise.
958 * incremental.h: Likewise.
959 * int_encoding.cc: Likewise.
960 * layout.h: Likewise.
961 * main.cc: Likewise.
962 * merge.h: Likewise.
963 * object.cc: Likewise.
964 * object.h: Likewise.
965 * options.cc: Likewise.
966 * readsyms.cc: Likewise.
967 * reduced_debug_output.cc: Likewise.
968 * reloc.cc: Likewise.
969 * script-sections.cc: Likewise.
970 * sparc.cc: Likewise.
971 * symtab.h: Likewise.
972 * target-reloc.h: Likewise.
973 * target.cc: Likewise.
974 * target.h: Likewise.
975 * timer.cc: Likewise.
976 * timer.h: Likewise.
977 * x86_64.cc: Likewise.
978
83e17bd5
CC
9792010-12-09 Cary Coutant <ccoutant@google.com>
980
981 * layout.cc (Layout::layout_gnu_stack): Add warnings for executable
982 stack.
983 * layout.h (Layout::layout_gnu_stack): Add pointer to Object
984 parameter; change all callers.
985 * object.cc (Sized_relobj::do_layout): Adjust call to layout_gnu_stack.
986 * options.h (warn_execstack): New option.
987
017257f8
DK
9882010-12-07 Doug Kwan <dougkwan@google.com>
989
990 * arm.cc (Target_arm::Scan::get_reference_flags): Treat R_ARM_PREL31
991 like function call relocations.
992
c20cbc06
ILT
9932010-12-07 Ian Lance Taylor <iant@google.com>
994
995 * archive.cc (Archive::get_elf_object_for_member): Permit
996 punconfigured to be NULL.
997 (Archive::read_symbols): Pass NULL to get_elf_object_for_member.
998 (Archive::include_member): Pass NULL to get_elf_object_for_member
999 if we searched for the archive and this is the first included
1000 object.
1001
4dbfafcc
ILT
10022010-12-01 Ian Lance Taylor <iant@google.com>
1003
1004 * dwarf_reader.h (class Sized_dwarf_line_info): Add
1005 track_relocs_type_ field.
1006 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
1007 Set track_relocs_type_.
1008 (Sized_dwarf_line_info::process_one_opcode): Ignore the section
1009 contents when using RELA relocs.
1010 (Sized_dwarf_line_info::read_relocs): Add the reloc addend to
1011 reloc_map_.
1012 * reloc.cc (Track_relocs::next_addend): New function.
1013 * reloc.h (class Track_relocs): Declare next_addend.
1014
e5e19edd
ILT
10152010-12-01 Ian Lance Taylor <iant@google.com>
1016
1017 * testsuite/icf_virtual_function_folding_test.cc (class Bar): Add
1018 virtual destructor.
1019
9a5ce24c
ILT
10202010-12-01 Ian Lance Taylor <iant@google.com>
1021
1022 * README: Update compilers known to work and fail.
1023
c7791212
NC
10242010-11-23 Matthias Klose <doko@ubuntu.com>
1025
1026 * configure.in: For --enable-gold, handle value `default' instead of
1027 `both*'. Always install ld as ld.bfd, install as ld if gold is
1028 not the default.
1029 * configure: Regenerate.
1030
0ad220c9
DK
10312010-11-18 Doug Kwan <dougkwan@google.com>
1032
1033 * expression.cc (BINARY_EXPRESSION): Initialize left_alignment
1034 and right_alignment to be zero. Store result alignment only if it is
1035 greater than existing alignment.
1036
ab8056e0
CC
10372010-11-16 Cary Coutant <ccoutant@google.com>
1038
1039 PR gold/12220
1040 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
1041 Check for ".zdebug_line".
1042
fd064a5b
CC
10432010-11-16 Doug Kwan <dougkwan@google.com>
1044 Cary Coutant <ccoutant@google.com>
1045
1046 * output.h (Output_segment::set_section_addresses): Pass increase_relro
1047 by reference; adjust all callers.
1048 * output.cc (Output_segment::set_section_addresses): Adjust references
1049 to increase_relro. Add padding to *increase_relro when ORDER_RELRO_LAST
1050 list is empty.
1051 (Output_segment::set_offset): Assert if PT_GNU_RELRO segment does not
1052 end at page boundary.
1053
6fc6ea19
CC
10542010-11-16 Cary Coutant <ccoutant@google.com>
1055
1056 PR gold/12220
1057 * layout.cc (Layout::choose_output_section): Transform names of
1058 compressed sections even when using a script with a SECTIONS clause.
1059 (Layout::output_section_name): Remove code to transform
1060 compressed debug section names.
1061 * output.cc (Output_section::add_input_section): Use uncompressed
1062 section size when tracking input sections.
1063
95a2c8d6
RS
10642010-11-11 Richard Sandiford <richard.sandiford@linaro.org>
1065
1066 * symtab.h (Symbol::NON_PIC_REF): Remove.
1067 (Symbol::RELATIVE_REF, Symbol::TLS_REF): New Reference_flags.
1068 (Symbol::FUNCTION_CALL): Renumber. Reword comment.
1069 (Symbol::needs_dynamic_reloc): Don't check NON_PIC_REF.
1070 (Symbol::use_plt_offset): Take a flags argument and pass it
1071 directly to needs_dynamic_reloc. Restrict check for undefined
1072 weak symbols to function calls.
1073 * arm.cc (Target_arm::Scan::get_reference_flags): New function.
1074 (Target_arm::Scan::global): Use it.
1075 (Target_arm::Scan::scan_reloc_for_stub): Likewise.
1076 (Target_arm::Relocate::relocate): Likewise.
1077 (Target_arm::Relocate::should_apply_static_reloc): Replace flags
1078 parameter with an r_type parameter. Use get_reference_flags
1079 to get the flags.
1080 (Target_arm::Relocate::relocate): Update accordingly.
1081 * i386.cc (Target_i386::Scan::get_reference_flags): New function.
1082 (Target_i386::Scan::reloc_needs_plt_for_ifunc): Use it.
1083 (Target_i386::Scan::global): Likewise.
1084 (Target_i386::Relocate::relocate): Likewise.
1085 (Target_i386::Relocate::should_apply_static_reloc): Replace flags
1086 parameter with an r_type parameter. Use get_reference_flags
1087 to get the flags.
1088 (Target_i386::Relocate::relocate): Update accordingly.
1089 * powerpc.cc (Target_powerpc::Scan::get_reference_flags): New function.
1090 (Target_powerpc::Scan::global): Use it.
1091 (Target_powerpc::Scan::scan_reloc_for_stub): Likewise.
1092 (Target_powerpc::Relocate::relocate): Likewise.
1093 * sparc.cc (Target_sparc::Scan::get_reference_flags): New function.
1094 (Target_sparc::Scan::global): Use it.
1095 (Target_sparc::Scan::scan_reloc_for_stub): Likewise.
1096 (Target_sparc::Relocate::relocate): Likewise.
1097 * x86_64.cc (Target_x86_64::Scan::get_reference_flags): New function.
1098 (Target_x86_64::Scan::reloc_needs_plt_for_ifunc): Use it.
1099 (Target_x86_64::Scan::global): Likewise.
1100 (Target_x86_64::Relocate::relocate): Likewise.
1101
f625ae50
DK
11022010-11-08 Doug Kwan <dougkwan@google.com>
1103 Cary Coutant <ccoutant@google.com>
1104
1105 * arm.cc (Arm_exidx_merge_section::build_contents): New method.
1106 (Arm_exidx_merge_section::section_contents_): New data member.
1107 (Arm_input_section::Arm_input_section): Initialize original_contents_.
1108 (Arm_input_section::~Arm_input_section): De-allocate memory.
1109 (Arm_input_section::original_contents_): New data member.
1110 (Arm_exidx_fixup::process_exidx_section): Pass EXIDX section contents
1111 in parameters instead of calling Object::section_contents without
1112 locking.
1113 (Arm_output_section::group_section): New parameter TASK. Pass it
1114 to callees that need locking objects.
1115 (Arm_output_section::fix_exidx_coverage): New parameter TASK. Use it
1116 to lock EXIDX input sections. Fix a formatting issue. Call
1117 Arm_exidx_merged_section::build_contents to create merged section
1118 contents.
1119 (Arm_output_section::create_stub_group): New parameter TASK. Use it
1120 to lock object of stub table owner.
1121 (Arm_exidx_input_section::Arm_exidx_input_section): Add new parameter
1122 TEXT_SIZE to initialize data member TEXT_SIZE_.
1123 (Arm_exidx_input_section::addralign): Fix typo in comment.
1124 (Arm_exidx_input_section::text_size): New method.
1125 (Target_arm::do_relax): New parameter TASK. Pass it to callees
1126 that require locking objects. Lock objects before scanning for stubs
1127 and updating local symbols.
1128 (Arm_input_section<big_endian>::init): Copy contents of original
1129 input section.
1130 (Arm_input_section<big_endian>::do_write): Use saved contents of
1131 original input section instead of calling Object::section_contents
1132 without locking.
1133 (Arm_exidx_cantunwind::do_fixed_endian_write): Find out text section
1134 size without calling Object::section_size().
1135 (Arm_exidx_merged_section::Arm_exidx_merged_section): Add sanity check
1136 for size. Allocate a buffer for merged EXIDX entries.
1137 (Arm_exidx_merged_section::build_contents): New method.
1138 (Arm_exidx_merged_section::do_write): Move merge section contents
1139 building code to Arm_exidx_merged_section::build_contetns. Write
1140 out contetns in buffer instead of building it on the fly.
1141 (Arm_relobj::make_exidx_input_section): Also pass text section size
1142 to Arm_exidx_input_section constructor.
1143 (Arm_relobj::do_read_symbols): Fix memory leak. Fix a formatting issue.
1144 (Arm_dynobj::do_read_symbols): Fix memory leak.
1145 * layout.cc (Layout::finalize): Pass TASK to Target::relax().
1146 * target.h: (class Task): Add forward declaration.
1147 (Target::relax): Add new parameter TASK and pass it to
1148 Target::do_relax().
1149 (Target::do_relax):: New parameter TASK. Fix a formatting issue.
1150
5f9bcf58
CC
11512010-11-05 Cary Coutant <ccoutant@google.com>
1152
1153 PR gold/10708
1154 * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Hold a lock on the
1155 object when reading from the file.
1156 * gold.cc (queue_middle_tasks): Hold a lock on the object when doing
1157 second layout pass.
1158 * icf.cc (preprocess_for_unique_sections): Hold a lock on the object
1159 when reading section contents.
1160 (get_section_contents): Likewise.
1161 (icf::find_identical_sections): Likewise.
1162 * mapfile.cc (Mapfile::print_discarded_sections): Hold a lock on the
1163 object when reading from the file.
1164 * plugin.cc (Plugin_manager::layout_deferred_objects): Hold a lock on
1165 the object when doing deferred section layout.
1166
e597fa08
NC
11672010-11-03 Nick Clifton <nickc@redhat.com>
1168
1169 PR gold/12001
1170 * script.h (class Symbol_assignment: name): New member. Returns
1171 the name of the symbol.
1172 * scrfipt.cc (Script_options::is_pending_assignment): New member.
1173 Returns true if the given symbol name is on the list of
1174 assignments wating to be processed.
1175 * archive.cc (should_incldue_member): If the symbol is undefined,
1176 check to see if it is on the list of symbols pending assignment.
1177
3f9a3278
ILT
11782010-11-03 Ryan Mansfield <rmansfield@qnx.com>
1179
1180 * script-sections.cc (Script_sections::find_memory_region): Check
1181 for a NULL output section pointer.
1182
d06fb4d1
DK
11832010-10-29 Doug Kwan <dougkwan@google.com>
1184
1185 * arm.cc (Arm_outout_section::fix_exidx_coverage): Adjust call to
1186 Output_section::add_relaxed_input_section.
1187 * output.cc (Output_section::add_relaxed_input_section): Add new
1188 arguments LAYOUT and NAME. Set section order index.
1189 (Output_section::convert_input_sections_in_list_to_relaxed_sections):
1190 Copy section order index.
1191 * output.h (Output_section::add_relaxed_input_section): Add new
1192 arguments LAYOUT and NAME.
1193
90e24de5
ILT
11942010-10-29 Viktor Kutuzov <vkutuzov@accesssoftek.com>
1195
1196 * testsuite/Makefile.am: Move gcctestdir/ld rule to
1197 NATIVE_OR_CROSS_LINKER.
1198 * testsuite/Makefile.in: Regenerate.
1199
c9484ea5
DK
12002010-10-20 Doug Kwan <dougkwan@google.com>
1201
1202 * arm.cc (Arm_relobj::do_read_symbols): Warn about ARM EXIDX sections
1203 without SHF_LINK_ORDER flags.
1204 * layout.cc (Layout::choose_output_section): Do not filter
1205 SHF_LINK_ORDER flag in a relocatable link.
1206
5bc2f5be
CC
12072010-10-17 Cary Coutant <ccoutant@google.com>
1208
1209 * output.h (Output_segment::set_section_addresses): Change function
1210 signature. Update all callers.
1211 * output.cc (Output_segment::is_first_section_relro): Ignore TLS
1212 sections.
1213 (Output_segment::set_section_addresses): Align after last TLS
1214 section. Add padding before last relro section instead of after.
1215
0c91cf04
DK
12162010-10-17 Doug Kwan <dougkwan@google.com>
1217
1218 * gold/arm.cc (Target_arm::got_section): Use correct order and set
1219 GOT output section to be writable.
1220
8c21d9d3
CC
12212010-10-14 Cary Coutant <ccoutant@google.com>
1222
1223 * debug.h (DEBUG_INCREMENTAL): New flag.
1224 (debug_string_to_enum): Add DEBUG_INCREMENTAL).
1225 * gold.cc (queue_initial_tasks): Check parameters for incremental link
1226 mode.
1227 * incremental.cc (report_command_line): Ignore all forms of
1228 --incremental.
1229 * layout.cc (Layout::Layout): Check parameters for incremental link
1230 mode.
1231 * options.cc (General_options::parse_incremental): New function.
1232 (General_options::parse_no_incremental): New function.
1233 (General_options::parse_incremental_full): New function.
1234 (General_options::parse_incremental_update): New function.
1235 (General_options::incremental_mode_): New data member.
1236 (General_options::finalize): Check incremental_mode_.
1237 * options.h (General_options): Update help text for --incremental.
1238 Add --no-incremental, --incremental-full, --incremental-update.
1239 (General_options::Incremental_mode): New enum type.
1240 (General_options::incremental_mode): New function.
1241 (General_options::incremental_mode_): New data member.
1242 * parameters.cc (Parameters::incremental_mode_): New data member.
1243 (Parameters::set_options): Set incremental_mode_.
1244 (Parameters::set_incremental_full): New function.
1245 (Parameters::incremental): New function.
1246 (Parameters::incremental_update): New function.
1247 (set_parameters_incremental_full): New function.
1248 * parameters.h (Parameters::set_incremental_full): New function.
1249 (Parameters::incremental): New function.
1250 (Parameters::incremental_update): New function.
1251 (Parameters::incremental_mode_): New data member.
1252 (set_parameters_incremental_full): New function.
1253 * plugin.cc (Plugin_manager::add_input_file): Check parameters for
1254 incremental link mode.
1255 * reloc.cc (Sized_relobj::do_read_relocs): Likewise.
1256 (Sized_relobj::do_relocate_sections): Likewise.
1257 * testsuite/Makefile.am (incremental_test): Use --incremental-full
1258 option.
1259 * testsuite/Makefile.in: Regenerate.
1260 * testsuite/incremental_test.sh: Filter all forms of --incremental.
1261
bb32aa18 12622010-10-12 Viktor Kutuzov <vkutuzov@accesssoftek.com>
eb373049
ILT
1263
1264 * script-sections.h (class Script_sections): Make
1265 Sections_elements typedef public.
1266 * script-sections.cc (class Sort_output_sections): Add elements_
1267 field. Add constructor which sets it; change all callers.
1268 (Sort_output_sections::is_before): New function.
1269 (Sort_output_sections::operator()): Call is_before.
1270 * configure.ac (NATIVE_OR_CROSS_LINKER): New automake
1271 conditional.
1272 * testsuite/script_test_10.sh: New test. Test script section
1273 order.
1274 * testsuite/script_test_10.t: Likewise.
1275 * testsuite/script_test_10.s: Likewise.
1276 * testsuite/Makefile.am: Wrap the cross linker tests and the
1277 common tests into NATIVE_OR_CROSS_LINKER.
1278 (check_SCRIPTS): Add script_test_10.sh.
1279 (check_DATA): Add script_test_10.stdout.
1280 (script_test_10.o, script_test_10): New targets.
1281 (script_test_10.stdout): New target.
1282 * configure, testsuite/Makefile.in: Regenerate.
1283
3cef7179
ILT
12842010-10-12 Viktor Kutuzov <vkutuzov@accesssoftek.com>
1285
1286 * arm.cc (Target_arm::Scan::local): Report the unsupported reloc
1287 error for the deprecated relocations.
1288 (Target_arm::Scan::global): Likewise.
1289 (Target_arm::Relocate::relocate): Likewise.
1290
7411e9a8
RS
12912010-10-12 Richard Sandiford <richard.sandiford@linaro.org>
1292
1293 * fileread.cc (Input_file::find_file): Initialize *found_name
1294 and *namep when using the fallback search for case 4.
1295
6a9da32a
CC
12962010-10-11 Cary Coutant <ccoutant@google.com>
1297
1298 * options.h (class General_options): Redefine -z lazy as an alias for
1299 the negation of -z now.
1300
ac897c20
ILT
13012010-10-11 Ian Lance Taylor <iant@google.com>
1302
1303 * resolve.cc (symbol_to_bits): Report the value of the unsupported
1304 binding.
1305
ea5cae92
NC
13062010-10-06 Nick Clifton <nickc@redhat.com>
1307
1308 * script-sections.cc(class Memory_region): Remove
1309 current_lma_offset_ field. Rename current_vma_offset_ to
1310 current_offset_. Add last_section_ field.
1311 (Memory_region::get_current_vma_address): Rename to
1312 get_current_address.
1313 (Memory_region::get_current_lma_address): Delete.
1314 (Memory_region::increment_vma_offset): Rename to
1315 increment_offset.
1316 (Memory_region::increment_lma_offset): Delete.
1317 (Memory_region::attributes_compatible): New method. Returns
1318 true if the provided section is compatible with the region.
1319 (Memory_region::get_last_section): New method. Returns the last
1320 section to use the region.
1321 (Memory_region::set_last_section): New method. Stores the last
1322 section to use the region.
1323 (Script_sections::block_in_region): New method. Returns true if
1324 a block of memory is contained within a region.
1325 (Script_sections::find_memory_region): New method. Locates a
1326 memory region to be used to set a VMA or LMA address.
1327 (Output_section_definition::set_section_addresses): Add code to
1328 check for addresses set by memory regions.
1329 (Output_segment::set_section_addresses): Remove memory region
1330 walking code.
1331 (Script_sections::create_segment): Add a warning if a header
1332 segment is created outside of any region.
1333 * script-sections.h (class Script_sections): Add prototypes for
1334 find_memory_region and block_in_region methods.
1335 * testsuite/memory_test.s: Use .long instead of .word.
1336 * testsuite/memory_test.t: Add some more output sections.
1337 * testsuite/memory_test.sh: Update expected output.
1338
a9bfd952
DK
13392010-10-02 Doug Kwan <dougkwan@google.com>
1340
1341 * symtab.cc (Symbol_table::Symbol_table_hash::operator()): Move
1342 defintion to symtab.h
1343 * symtab.h (Symbol_table::Symbol_table_hash::operator()): Change
1344 declaration to defintion.
1345
bacff3ab
NC
13462010-10-01 Nick Clifton <nickc@redhat.com>
1347
1348 * expression.cc (eval): Replace dummy argument with NULL.
1349 (eval_maybe_dot): Check for a NULL result section pointer.
1350 (Symbol_expression::value): Likewise.
1351 (Dot_expression::value): Likewise.
1352 (BINARY_EXPRESSION): Likewise.
1353 (Max_expression::value): Likewise.
1354 (Min_expression::value): Likewise.
1355 (Absolute_expression::value): Likewise.
1356 (Addr_expression::value_from_output_section): Likewise.
1357 (Loaddddr_expression::value_from_output_section): Likewise.
1358 (Segment_start_expression::value): Likewise.
1359 * script-sections.cc
1360 (Sections_elememt_dot_assignment::finalize_symbols): Replace dummy
1361 argument with NULL.
1362 (Sections_elememt_dot_assignment::set_section_addresses):
1363 Likewise.
1364 (Output_data_expression::do_write_to_buffer): Likewise.
1365 (Output_section_definition::finalize_symbols): Likewise.
1366 (Output_section_definition::set_section_addresses): Likewise.
1367
f81bc8b5
DK
13682010-09-30 Doug Kwan <dougkwan@google.com>
1369
1370 * gold/testsuite/arm_branch_out_of_range.sh: Fix broken tests.
1371
c95e9f27
ST
13722010-09-28 Sriraman Tallam <tmsriram@google.com>
1373
1374 * target.h (Target::can_icf_inline_merge_sections): New virtual
bacff3ab 1375 function.
c95e9f27
ST
1376 * x86_64.cc (Target__x86_64::can_icf_inline_merge_sections): New
1377 virtual function.
1378 * i386.cc (Target_i386::can_icf_inline_merge_sections): New
1379 virtual function.
1380 * icf.cc (get_section_contents): Inline merge sections only when
1381 target allows it.
1382
3cac54d2
RW
13832010-09-27 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
1384
1385 * configure: Regenerate.
1386
2904037a
ILT
13872010-09-17 Ian Lance Taylor <iant@google.com>
1388
1389 * testsuite/memory_test.sh: Adjust for change of 2010-09-10.
d4d91489
ILT
1390 * testsuite/Makefile.am (memory_test.o): New target.
1391 (memory_test): Depend on memory_test.o, gcctestdir/ld, and
1392 memory_test.t.
1393 * testsuite/Makefile.in: Rebuild.
2904037a 1394
bca7fb63
DK
13952010-09-17 Doug Kwan <dougkwan@google.com>
1396
1397 * arm.cc (Target_arm::Relocate::relocate): Ignore symbol type and
1398 defintion if relocation uses GOT entries of the symbol.
1399 * testsuite/icf_safe_test.sh: Fix test.
1400 * testsuite/icf_safe_so_test.sh: Fix test.
1401
4ef28648
CC
14022010-09-16 Cary Coutant <ccoutant@google.com>
1403
1404 * script_sections.cc (class Memory_region): Remove "NULL" from
1405 vector initializations.
1406
793990de
CC
14072010-09-15 Cary Coutant <ccoutant@google.com>
1408
1409 * incremental.cc (Output_section_incremental_inputs::write_info_blocks):
1410 Resolve forwarding symbols.
1411
81e015e2
DK
14122010-09-15 Doug Kwan <dougkwan@google.com>
1413
1414 * gold/testsuite/script_test_3.t: Add ARM special sections.
1415 * gold/testsuite/script_test_4.t: Same.
1416 * gold/testsuite/script_test_5.t: Same.
1417 * gold/testsuite/script_test_6.t: Same.
1418 * gold/testsuite/script_test_7.t: Same.
1419 * gold/testsuite/script_test_7.t: Same.
1420 * gold/testsuite/thumb_blx_out_of_range.s: Fix instruction alignment.
1421
36171d64
CC
14222010-09-14 Cary Coutant <ccoutant@google.com>
1423
1424 * x86_64.cc (Target_x86_64::saw_tls_block_reloc_): Remove member.
1425 (Target_x86_64::Relocate::relocate_tls): Replace check for
1426 saw_tls_block_reloc_ with test for executable section.
1427
d89051bd
CC
14282010-09-12 Cary Coutant <ccoutant@google.com>
1429
1430 * symtab.h (Symbol::needs_dynamic_reloc): Non-PIC calls from
1431 position-independent executables to shared libraries need dynamic
1432 relocations.
1433 (Symbol::may_need_copy_reloc): Do not generate COPY relocs in
1434 position-independent executables.
1435 * testsuite/Makefile.am (two_file_mixed_pie_test): New test.
1436 * testsuite/Makefile.in: Regenerate.
1437
fca41f0f
NC
14382010-09-10 Nick Clifton <nickc@redhat.com>
1439
1440 PR gold/11997
1441 * testsuite/memory_test.t: Discard any sections that are not
1442 needed.
1443
6695e4b3
L
14442010-09-09 H.J. Lu <hongjiu.lu@intel.com>
1445
1446 PR gold/11996
1447 * object.cc (Sized_relobj::do_finalize_local_symbols): Remove
1448 "This::" to work around a bug in gcc 4.2.
1449
1450 * testsuite/ifuncmain7.c (foo_ifunc): Add __attribute__ ((used)).
1451
0f72bf6f
RÁE
14522010-09-09 Rafael Espindola <espindola@google.com>
1453
1454 * layout.cc (Layout::attach_allocated_section_to_segment): Don't put
1455 sections with different PF_X flags in the same segment.
1456 (Layout::find_first_load_seg): Search all segments to find the first
1457 one.
1458 * options.h (rosegment): New.
1459
14602010-09-08 Rafael Espindola <espindola@google.com>
a6577478 1461
05a79166 1462 * layout.cc (Layout::set_segment_offsets): Always advance to a new page.
a6577478 1463
aa98ff75
DK
14642010-09-08 Doug Kwan <dougkwan@google.com>
1465
1466 * arm.cc (Arm_exidx_cantunwind::do_print_to_mapfile): New method.
1467 (Arm_relobj::do_relocate_sections): Add new parameter for output
1468 file to match the parent.
1469 (Target_arm::scan_reloc_section_for_stubs): Use would-be final values
1470 of local symbols instead of input values. Update code to track
1471 changes in gold::relocate_section.
1472 * object.cc (Sized_relobj::compute_final_local_value): New methods.
1473 (Sized_relobj::compute_final_local_value_internal): New methods.
1474 (Sized_relobj::do_finalize_local_symbols): Move code from loop
1475 body into private version of Sized_relobj::compute_final_local_value.
1476 Call the inline method.
1477 * object.h (Symbol_value::Symbol_value): Define destructor. Free
1478 merged symbol value if there is one.
1479 (Symbol_value::has_output_value): New method defintiion.
1480 (Sized_relobj::Compute_final_local_value_status): New enum type.
1481 (Sized_relobj::compute_final_local_value): New methods.
1482 (Sized_relobj::compute_final_local_value_internal): New methods.
1483 * Makefile.am (check_SCRIPTS): Add arm_branch_out_of_range.sh
1484 and arm_cortex_a8.sh.
1485 (thumb_bl_out_of_range_local, arm_cortex_a8_b_cond, arm_cortex_a8_bl,
1486 arm_cortex_a8_blx, arm_cortex_a8_local, arm_corte_a8_local_reloc):
1487 New tests.
1488 * Makefile.in: Regenerate.
1489 * testsuite/arm_bl_out_of_range.s: Update test.
1490 * testsuite/thumb_bl_out_of_range.s: Ditto.
1491 * testsuite/thumb_blx_out_of_range.s: Ditto.
1492 * testsuite/arm_branch_out_of_range.sh: New file.
1493 * testsuite/arm_cortex_a8.sh: Ditto.
1494 * testsuite/arm_cortex_a8_b.s: Ditto.
1495 * testsuite/arm_cortex_a8_b_cond.s: Ditto.
1496 * testsuite/arm_cortex_a8_b_local.s: Ditto.
1497 * testsuite/arm_cortex_a8_bl.s: Ditto.
1498 * testsuite/arm_cortex_a8_blx.s: Ditto.
1499 * testsuite/arm_cortex_a8_local.s: Ditto.
1500 * testsuite/arm_cortex_a8_local_reloc.s: Ditto.
1501 * testsuite/thumb_bl_out_of_range_local.s: Ditto.
1502
05a79166
L
15032010-09-08 Rafael Espindola <espindola@google.com>
1504
1505 * Makefile.am (memory_test.stdout): Run readelf with -W.
1506 * Makefile.in: Regenerate.
1507 * testsuite/memory_test.sh: Make the regexps accept both 32 and
1508 64 bit output.
1509
33dbc701
RÁE
15102010-09-08 Rafael Espindola <espindola@google.com>
1511
1512 * script-sections.cc (Script_sections::add_memory_region): Convert
1513 field precision to int.
1514 * script.cc (script_set_section_region, script_set_section_region):
1515 Convert field precision to int.
1516
731ca54a
RÁE
15172010-09-08 Rafael Espindola <espindola@google.com>
1518
1519 * arm.cc (do_finalize_sections): Create the __exidx_start and
1520 __exdix_end symbols even when the section is missing.
1521
7f8cd844
NC
15222010-09-08 Nick Clifton <nickc@redhat.com>
1523
1524 * README: Remove claim that MEMORY is not supported.
1525 * expression.cc (script_exp_function_origin)
1526 (script_exp_function_length): Move from here to ...
1527 * script.cc: ... here.
1528 (script_set_section_region, script_add_memory)
1529 (script_parse_memory_attr, script_include_directive): New
1530 functions.
1531 * script-sections.cc
1532 (class Memory_region): New class.
1533 (class Output_section_definition): Add set_memory_region,
1534 set_section_vma, set_section_lma and get_section_name methods.
1535 (class Script_Sections): Add add_memory_region,
1536 find_memory_region, find_memory_region_origin,
1537 find_memory_region_length and set_memory_region methods.
1538 Have set_section_addresses method walk the list of set memory
1539 regions.
1540 Extend the print methos to display memory regions.
1541 * script-sections.h: Add prototypes for new methods.
1542 Add enum for MEMORY region attributes.
1543 * yyscript.y: Add support for parsing MEMORY regions.
1544 * script-c.h: Add prototypes for new functions.
1545 * testsuite/Makefile.am: Add test of MEMORY region functionality.
1546 * testsuite/Makefile.in: Regenerate.
1547 * testsuite/memory_test.sh: New script.
1548 * testsuite/memory_test.s: New assembler source file.
1549 * testsuite/memory_test.t: New linker script.
1550
a4649286
DK
15512010-08-27 Doug Kwan <dougkwan@google.com>
1552
1553 * gold/resolve.cc (Symbol_table::should_override): Let a weak
1554 reference override an existing dynamic weak reference.
1555 * testsuite/Makefile.am: Add new test dyn_weak_ref.
1556 * testsuite/Makefile.in: Regenerate.
1557 * testsuite/dyn_weak_ref.sh: New file.
1558 * testsuite/dyn_weak_ref_1.c: Ditto.
1559 * testsuite/dyn_weak_ref_2.c: Ditto.
1560
b56648ad
ILT
15612010-08-27 Ian Lance Taylor <iant@google.com>
1562
1563 * incremental.h (class Incremental_input_entry): Add virtual
1564 destructor.
1565
809313cb
ILT
15662010-08-27 Ian Lance Taylor <iant@google.com>
1567
1568 * testsuite/start_lib_test_3.c: Mark t3 as used.
1569
11e32464
NC
15702010-08-27 Nick Clifton <nickc@redhat.com>
1571
1572 * options.cc (version_script): Fix small typo in previous
1573 whitespace tidyup.
1574
ca09d69a
NC
15752010-08-25 Nick Clifton <nickc@redhat.com>
1576
1577 * archive.cc: Formatting fixes: Remove whitespace between
1578 typename and following asterisk. Remove whitespace between
1579 function name and opening parenthesis.
1580 * archive.h: Likewise.
1581 * arm.cc: Likewise.
1582 * attributes.cc: Likewise.
1583 * attributes.h: Likewise.
1584 * common.cc: Likewise.
1585 * copy-relocs.cc: Likewise.
1586 * dirsearch.h: Likewise.
1587 * dynobj.cc: Likewise.
1588 * ehframe.cc: Likewise.
1589 * ehframe.h: Likewise.
1590 * expression.cc: Likewise.
1591 * fileread.cc: Likewise.
1592 * fileread.h: Likewise.
1593 * gc.h: Likewise.
1594 * gold-threads.cc: Likewise.
1595 * gold.cc: Likewise.
1596 * i386.cc: Likewise.
1597 * icf.h: Likewise.
1598 * incremental-dump.cc: Likewise.
1599 * incremental.cc: Likewise.
1600 * layout.cc: Likewise.
1601 * layout.h: Likewise.
1602 * main.cc: Likewise.
1603 * merge.cc: Likewise.
1604 * merge.h: Likewise.
1605 * object.cc: Likewise.
1606 * object.h: Likewise.
1607 * options.cc: Likewise.
1608 * options.h: Likewise.
1609 * output.cc: Likewise.
1610 * output.h: Likewise.
1611 * plugin.cc: Likewise.
1612 * plugin.h: Likewise.
1613 * powerpc.cc: Likewise.
1614 * reloc.cc: Likewise.
1615 * script-c.h: Likewise.
1616 * script-sections.cc: Likewise.
1617 * script.cc: Likewise.
1618 * stringpool.cc: Likewise.
1619 * symtab.cc: Likewise.
1620 * symtab.h: Likewise.
1621 * target.cc: Likewise.
1622 * timer.cc: Likewise.
1623 * timer.h: Likewise.
1624 * version.cc: Likewise.
1625 * x86_64.cc: Likewise.
1626
b8fa8750
NC
16272010-08-24 Nick Clifton <nickc@redhat.com>
1628
1629 PR 11899
1630 * layout.cc (segment_precedes): Sort segments by their physical
1631 addresses, if they have been set.
1632
9919d93b
CC
16332010-08-23 Cary Coutant <ccoutant@google.com>
1634
1635 * archive.cc (Lib_group::add_symbols): Lock object before deleting its
1636 symbols data.
1637 (Lib_group::include_member): Unlock object after deleting its
1638 symbols data.
1639 * testsuite/start_lib_test_3.c: Remove all global symbols to trigger
1640 the bug fixed here.
1641
97b4be1c
CC
16422010-08-19 Neil Vachharajani <nvachhar@google.com>
1643 Cary Coutant <ccoutant@google.com>
1644
1645 * gold/archive.h (Add_lib_group_symbols): Add readsyms_blocker_, adjust
1646 constructor, and set_blocker.
1647 * gold/archive.cc (Add_lib_group_symbols::is_runnable): Also check
1648 readsyms_blocker_.
1649 * gold/readsyms.cc (Read_symbols::do_lib_group): Also pass
1650 this->this_blocker_ to Add_lib_group_symbols::set_blocker.
1651 * testsuite/Makefile.am (start_lib_test): New test case.
1652 * testsuite/Makefile.in: Regenerate.
1653 * testsuite/start_lib_test_main.c: New file.
1654 * testsuite/start_lib_test_1.c: New file.
1655 * testsuite/start_lib_test_2.c: New file.
1656 * testsuite/start_lib_test_3.c: New file.
1657
dd0b1884
ILT
16582010-08-19 Ian Lance Taylor <iant@google.com>
1659
1660 * Makefile.in: Rebuild with automake 1.11.1.
1661 * aclocal.m4: Likewise.
1662 * testsuite/Makefile.in: Likewise.
1663
7223e9ca
ILT
16642010-08-19 Ian Lance Taylor <iant@google.com>
1665
1666 PR 10893
1667 * i386.cc (class Output_data_plt_i386): Update declarations.
1668 Define Global_ifunc and Local_ifunc types. Add global_ifuncs_ and
1669 local_ifuncs_ fields.
1670 (Target_i386::do_plt_section_for_global): New function.
1671 (Target_i386::do_plt_section_for_local): New function.
1672 (Output_data_plt_i386::Output_data_plt_i386): Add symtab
1673 parameter; change all callers. Initialize global_ifuncs_ and
1674 local_ifuncs_. If doing a static link define __rel_iplt_start and
1675 __rel_iplt_end.
1676 (Output_data_plt_i386::add_entry): Handle IFUNC symbols.
1677 (Output_data_plt_i386::add_local_ifunc_entry): New function.
1678 (Output_data_plt_i386::do_write): Fix GOT entries for IFUNC
1679 symbols.
1680 (Target_i386::make_plt_section): New function, broken out of
1681 make_plt_entry. Set sh_info field of .rel.plt to point to .plt.
1682 (Target_i386::make_plt_entry): Call make_plt_section.
1683 (Target_i386::make_local_ifunc_plt_entry): New function.
1684 (Target_i386::Scan::reloc_needs_iplt_for_ifunc): New function.
1685 (Target_i386::Scan::local): Handle IFUNC symbols. Add
1686 R_386_IRELATIVE to switch.
1687 (Target_i386::Scan::global): Likewise.
1688 (Target_i386::Relocate::relocate): Likewise.
1689 (Target_i386::Relocatable_size_for_reloc): Add R_386_IRELATIVE to
1690 switch.
1691 * x86_64.cc (class Output_data_plt_x86_64): Update declarations.
1692 (Target_x86_64::do_plt_section_for_global): New function.
1693 (Target_x86_64::do_plt_section_for_local): New function.
1694 (Output_data_plt_x86_64::Output_data_plt_x86_64): Add symtab
1695 parameter; change all callers. If doing a static link define
1696 __rela_iplt_start and __rela_iplt_end.
1697 (Output_data_plt_x86_64::add_entry): Handle IFUNC symbols.
1698 (Output_data_plt_x86_64::add_local_ifunc_entry): New function.
1699 (Target_x86_64::make_plt_section): Set sh_info field of .rel.plt
1700 to point to .plt.
1701 (Target_x86_64::make_local_ifunc_plt_entry): New function.
1702 (Target_x86_64::Scan::check_non_pic): Add R_X86_64_IRELATIVE to
1703 switch.
1704 (Target_x86_64::Scan::reloc_needs_iplt_for_ifunc): New function.
1705 (Target_x86_64::Scan::local): Handle IFUNC symbols. Add
1706 R_X86_64_IRELATIVE to switch.
1707 (Target_x86_64::Scan::global): Likewise.
1708 (Target_x86_64::Relocate::relocate): Likewise.
1709 (Target_x86_64::Relocatable_size_for_reloc): Add R_X86_64_IRELATIVE to
1710 switch.
1711 * target.h (class Target): Add plt_section_for_global and
1712 plt_section_for_local functions. Add do_plt_section_for_global
1713 and do_plt_section_for_local virtual functions.
1714 * symtab.h (Symbol::needs_plt_entry): Handle IFUNC symbol. Add
1715 clarifying comments.
1716 (Symbol::use_plt_offset): Handle IFUNC symbol.
1717 * object.cc (Sized_relobj::Sized_relobj): Initialize
1718 local_plt_offsets_.
1719 (Sized_relobj::local_has_plt_offset): New function.
1720 (Sized_relobj::local_plt_offset): New function.
1721 (Sized_relobj::set_local_plt_offset): New function.
1722 (Sized_relobj::do_count): Handle IFUNC symbol.
1723 * object.h (class Symbol_value): Add is_ifunc_symbol_ field. Take
1724 a bit away from input_shndx_ field. Add set_is_func_symbol and
1725 is_ifunc_symbol functions.
1726 (class Sized_relobj): Update declarations. Remove Tls_got_entry
1727 and Local_tls_got_offsets. Define Local_plt_offsets. Add
1728 local_plt_offsets_ field.
1729 (Sized_relobj::clear_local_symbols): Clear local_plt_offsets_.
1730 * output.h (class Output_section_data): Add non-const
1731 output_section function.
1732 (class Output_data_got): Update declarations.
1733 (class Output_data_got::Got_entry): Add use_plt_offset_ field.
1734 Add use_plt_offset parameter to global and local constructors.
1735 Change all callers. Change local_sym_index_ field to 31 bits.
1736 Change GSYM_CODE and CONSTANT_CODE accordingly.
1737 * output.cc (Output_data_reloc_base::do_adjust_output_section): If
1738 doing a static link don't set sh_link field.
1739 (Output_data_got::Got_entry::write): Use PLT offset if
1740 appropriate.
1741 (Output_data_got::add_global_plt): New function.
1742 (Output_data_got::add_local_plt): New function.
1743 * target-reloc.h (relocate_section): Handle IFUNC symbol.
1744 * defstd.cc (in_section): Remove entries for __rel_iplt_start,
1745 __rel_iplt_end, __rela_iplt_start, and __rela_iplt_end.
1746 * configure.ac: Set IFUNC automake conditional for glibc >= 2.11.
1747 * testsuite/Makefile.am: Add a bunch of IFUNC tests, all within
1748 IFUNC conditional.
1749 * testsuite/ifunc-sel.h: New file.
1750 * testsuite/ifuncmain1.c: New file.
1751 * testsuite/ifuncmain1vis.c: New file.
1752 * testsuite/ifuncmod1.c: New file.
1753 * testsuite/ifuncdep2.c: New file.
1754 * testsuite/ifuncmain2.c: New file.
1755 * testsuite/ifuncmain3.c: New file.
1756 * testsuite/ifuncmod3.c: New file.
1757 * testsuite/ifuncmain4.c: New file.
1758 * testsuite/ifuncmain5.c: New file.
1759 * testsuite/ifuncmod5.c: New file.
1760 * testsuite/ifuncmain6pie.c: New file.
1761 * testsuite/ifuncmod6.c: New file.
1762 * testsuite/ifuncmain7.c: New file.
1763 * configure, testsuite/Makefile.in: Rebuild.
1764
56f75c03
ILT
17652010-08-18 Ian Lance Taylor <iant@google.com>
1766
1767 * incremental.cc
1768 (Output_section_incremental_inputs::write_input_files): Add cast
1769 to avoid signed/unsigned comparison warning.
1770 (Output_section_incremental_inputs::write_info_blocks): Likewise.
1771
55455f89
CC
17722010-08-12 Cary Coutant <ccoutant@google.com>
1773
1774 * common.cc (Sort_commons::operator()): Remove unnecessary code.
1775
e2054bcb
ILT
17762010-08-13 Ian Lance Taylor <iant@google.com>
1777
1778 * testsuite/incremental_test_1.c: Add prototype to avoid warning.
1779
74f67560
DK
17802010-08-12 Cary Coutant <ccoutant@google.com>
1781 Doug Kwan <dougkwan@google.com>
1782
1783 * resolve.cc (Symbol_table::should_override): When a weak dynamic
1784 defintion overrides non-weak undef, remember that the original undef
1785 is not weak.
1786 * symtab.cc (Symbol_table::sized_write_global): For undef without
1787 an original weak binding, set binding to global in output.
1788 * testsuite/Makefile.am: Add new test strong_ref_weak_def.
1789 * testsuite/Makefile.in: Regenerate.
1790 * testsuite/strong_ref_weak_def.sh: New file.
1791 * testsuite/strong_ref_weak_def_1.c: Ditto.
1792 * testsuite/strong_ref_weak_def_2.c: Ditto.
1793
d1238d12
CC
17942010-08-12 Cary Coutant <ccoutant@google.com>
1795
1796 * testsuite/incremental_test.sh: Rewrite.
1797 * testsuite/incremental_test_1.c: Rewrite.
1798 * testsuite/incremental_test_2.c: Rewrite.
1799
0e70b911
CC
18002010-08-12 Cary Coutant <ccoutant@google.com>
1801
1802 * arm.cc (Target_arm::got_size): Add const.
1803 (Target_arm::got_entry_count): New function.
1804 (Target_arm::plt_entry_count): New function.
1805 (Target_arm::first_plt_entry_offset): New function.
1806 (Target_arm::plt_entry_size): New function.
1807 (Output_data_plt_arm::entry_count): New function.
1808 (Output_data_plt_arm::first_plt_entry_offset): New function.
1809 (Output_data_plt_arm::get_plt_entry_size): New function.
1810 * i386.cc (Target_i386::got_size): Add const.
1811 (Target_i386::got_entry_count): New function.
1812 (Target_i386::plt_entry_count): New function.
1813 (Target_i386::first_plt_entry_offset): New function.
1814 (Target_i386::plt_entry_size): New function.
1815 (Output_data_plt_i386::entry_count): New function.
1816 (Output_data_plt_i386::first_plt_entry_offset): New function.
1817 (Output_data_plt_i386::get_plt_entry_size): New function.
1818 * incremental-dump.cc (dump_incremental_inputs): Adjust call to
1819 find_incremental_inputs_sections. Dump incremental_got_plt section.
1820 * incremental.cc: Include target.h.
1821 (Sized_incremental_binary::do_find_incremental_inputs_sections): Add
1822 parameter. Adjust all callers. Find incremental_got_plt section.
1823 (Incremental_inputs::create_data_sections): Create incremental_got_plt
1824 section.
1825 (Output_section_incremental_inputs::set_final_data_size): Calculate
1826 size of incremental_got_plt section.
1827 (Output_section_incremental_inputs::do_write): Write the
1828 incremental_got_plt section.
1829 (Got_plt_view_info): New struct.
1830 (Local_got_offset_visitor): New class.
1831 (Global_got_offset_visitor): New class.
1832 (Global_symbol_visitor_got_plt): New class.
1833 (Output_section_incremental_inputs::write_got_plt): New function.
1834 * incremental.h (Incremental_binary::find_incremental_inputs_sections):
1835 Add parameter. Adjust all callers.
1836 (Incremental_binary::do_find_incremental_inputs_sections): Likewise.
1837 (Incremental_inputs::got_plt_section): New function.
1838 (Incremental_inputs::got_plt_section_): New data member.
1839 (Incremental_got_plt_reader): New class.
1840 * layout.cc (Layout::create_incremental_info_sections): Add the
1841 incremental_got_plt section.
1842 * object.h (Got_offset_list::get_list): New function.
1843 (Got offset_list::for_all_got_offsets): New function.
1844 (Sized_relobj::local_got_offset_list): New function.
1845 * powerpc.cc (Target_powerpc::got_size): Add const.
1846 (Target_powerpc::got_entry_count): New function.
1847 (Target_powerpc::plt_entry_count): New function.
1848 (Target_powerpc::first_plt_entry_offset): New function.
1849 (Target_powerpc::plt_entry_size): New function.
1850 (Output_data_plt_powerpc::entry_count): New function.
1851 (Output_data_plt_powerpc::first_plt_entry_offset): New function.
1852 (Output_data_plt_powerpc::get_plt_entry_size): New function.
1853 * sparc.cc (Target_sparc::got_size): Add const.
1854 (Target_sparc::got_entry_count): New function.
1855 (Target_sparc::plt_entry_count): New function.
1856 (Target_sparc::first_plt_entry_offset): New function.
1857 (Target_sparc::plt_entry_size): New function.
1858 (Output_data_plt_sparc::entry_count): New function.
1859 (Output_data_plt_sparc::first_plt_entry_offset): New function.
1860 (Output_data_plt_sparc::get_plt_entry_size): New function.
1861 * symtab.h (Symbol::got_offset_list): New function.
1862 (Symbol_table::for_all_symbols): New function.
1863 * target.h (Sized_target::got_entry_count): New function.
1864 (Sized_target::plt_entry_count): New function.
1865 (Sized_target::plt_entry_size): New function.
1866 * x86_64.cc (Target_x86_64::got_size): Add const.
1867 (Target_x86_64::got_entry_count): New function.
1868 (Target_x86_64::plt_entry_count): New function.
1869 (Target_x86_64::first_plt_entry_offset): New function.
1870 (Target_x86_64::plt_entry_size): New function.
1871 (Output_data_plt_x86_64::entry_count): New function.
1872 (Output_data_plt_x86_64::first_plt_entry_offset): New function.
1873 (Output_data_plt_x86_64::get_plt_entry_size): New function.
1874
09ec0418
CC
18752010-08-12 Cary Coutant <ccoutant@google.com>
1876
1877 * archive.cc: Include incremental.h.
1878 (Archive::Archive): Initialize incremental_info_.
1879 (Archive::include_member): Record archive members in incremental info.
1880 (Add_archive_symbols::run): Record begin and end of an archive in
1881 incremental info.
1882 (Lib_group::include_member): Record objects in incremental info.
1883 * archive.h (Incremental_archive_entry): Forward declaration.
1884 (Archive::set_incremental_info): New member function.
1885 (Archive::incremental_info): New member function.
1886 (Archive::Unused_symbol_iterator): New class.
1887 (Archive::unused_symbols_begin): New member function.
1888 (Archive::unused_symbols_end): New member function.
1889 (Archive::incremental_info_): New data member.
1890 * incremental-dump.cc (find_input_containing_global): New function.
1891 (dump_incremental_inputs): Dump new incremental info sections.
1892 * incremental.cc: Include symtab.h.
1893 (Output_section_incremental_inputs): New class.
1894 (Sized_incremental_binary::do_find_incremental_inputs_sections): Support
1895 new incremental info sections.
1896 (Sized_incremental_binary::do_check_inputs): Likewise.
1897 (Incremental_inputs::report_archive): Remove.
1898 (Incremental_inputs::report_archive_begin): New function.
1899 (Incremental_inputs::report_archive_end): New function.
1900 (Incremental_inputs::report_object): New function.
1901 (Incremental_inputs::finalize_inputs): Remove.
1902 (Incremental_inputs::report_input_section): New function.
1903 (Incremental_inputs::report_script): Rewrite.
1904 (Incremental_inputs::finalize): Do nothing but finalize string table.
1905 (Incremental_inputs::create_incremental_inputs_section_data): Remove.
1906 (Incremental_inputs::sized_create_inputs_section_data): Remove.
1907 (Incremental_inputs::create_data_sections): New function.
1908 (Incremental_inputs::relocs_entsize): New function.
1909 (Output_section_incremental_inputs::set_final_data_size): New function.
1910 (Output_section_incremental_inputs::do_write): New function.
1911 (Output_section_incremental_inputs::write_header): New function.
1912 (Output_section_incremental_inputs::write_input_files): New function.
1913 (Output_section_incremental_inputs::write_info_blocks): New function.
1914 (Output_section_incremental_inputs::write_symtab): New function.
1915 * incremental.h (Incremental_script_entry): Forward declaration.
1916 (Incremental_object_entry): Forward declaration.
1917 (Incremental_archive_entry): Forward declaration.
1918 (Incremental_inputs): Forward declaration.
1919 (Incremental_inputs_header_data): Remove.
1920 (Incremental_inputs_header): Remove.
1921 (Incremental_inputs_header_write): Remove.
1922 (Incremental_inputs_entry_data): Remove.
1923 (Incremental_inputs_entry): Remove.
1924 (Incremental_inputs_entry_write): Remove.
1925 (enum Incremental_input_type): Add INCREMENTAL_INPUT_ARCHIVE_MEMBER.
1926 (Incremental_binary::find_incremental_inputs_sections): Add parameters.
1927 (Incremental_binary::do_find_incremental_inputs_sections): Likewise.
1928 (Sized_ncremental_binary::do_find_incremental_inputs_sections):
1929 Likewise.
1930 (Incremental_input_entry): New class.
1931 (Incremental_script_entry): New class.
1932 (Incremental_object_entry): New class.
1933 (Incremental_archive_entry): New class.
1934 (Incremental_inputs::Incremental_inputs): Initialize new data members.
1935 (Incremental_inputs::report_inputs): Remove.
1936 (Incremental_inputs::report_archive): Remove.
1937 (Incremental_inputs::report_archive_begin): New function.
1938 (Incremental_inputs::report_archive_end): New function.
1939 (Incremental_inputs::report_object): Change prototype.
1940 (Incremental_inputs::report_input_section): New function.
1941 (Incremental_inputs::report_script): Change prototype.
1942 (Incremental_inputs::get_reloc_count): New function.
1943 (Incremental_inputs::set_reloc_count): New function.
1944 (Incremental_inputs::create_data_sections): New function.
1945 (Incremental_inputs::create_incremental_inputs_section_data): Remove.
1946 (Incremental_inputs::inputs_section): New function.
1947 (Incremental_inputs::symtab_section): New function.
1948 (Incremental_inputs::relocs_section): New function.
1949 (Incremental_inputs::get_stringpool): Add const.
1950 (Incremental_inputs::command_line): Add const.
1951 (Incremental_inputs::inputs): Remove.
1952 (Incremental_inputs::command_line_key): New function.
1953 (Incremental_inputs::input_file_count): New function.
1954 (Incremental_inputs::input_files): New function.
1955 (Incremental_inputs::relocs_entsize): New function.
1956 (Incremental_inputs::sized_create_inputs_section_data): Remove.
1957 (Incremental_inputs::finalize_inputs): Remove.
1958 (Incremental_inputs::Input_info): Remove.
1959 (Incremental_inputs::lock_): Remove.
1960 (Incremental_inputs::inputs_): Change type.
1961 (Incremental_inputs::inputs_map_): Remove.
1962 (Incremental_inputs::current_object_entry_): New data member.
1963 (Incremental_inputs::inputs_section_): New data member.
1964 (Incremental_inputs::symtab_section_): New data member.
1965 (Incremental_inputs::relocs_section_): New data member.
1966 (Incremental_inputs::reloc_count_): New data member.
1967 (Incremental_inputs_reader): New class.
1968 (Incremental_symtab_reader): New class.
1969 (Incremental_relocs_reader): New class.
1970 * layout.cc (Layout::finalize): Move finalization of incremental info
1971 and creation of incremental info sections to follow finalization of
1972 symbol table. Set offsets for postprocessing sections.
1973 (Layout::create_incremental_info_sections): Call
1974 Incremental_inputs::create_data_sections. Add incremental symtab
1975 and relocs sections. Set sh_entsize and sh_link fields. Arrange for
1976 sections to layout after input sections.
1977 * layout.h (struct Timespec): Forward declaration.
1978 (Layout::incremental_inputs): Add const.
1979 (Layout::create_incremental_info_sections): Add parameter.
1980 * main.cc (main): Remove call to Incremental_inputs::report_inputs.
1981 * object.cc: Include incremental.h.
1982 (Relobj::finalize_incremental_relocs): New function.
1983 (Sized_relobj::do_layout): Record input sections in incremental info.
1984 * object.h (Object::output_section): New function.
1985 (Object::output_section_offset): Moved from Relobj.
1986 (Object::get_incremental_reloc_base): New function.
1987 (Object::get_incremental_reloc_count): New function.
1988 (Object::do_output_section): New function.
1989 (Object::do_output_section_offset): Moved from Relobj.
1990 (Object::do_get_incremental_reloc_base): New function.
1991 (Object::do_get_incremental_reloc_count): New function.
1992 (Object::Object): Initialize new data members.
1993 (Relobj::output_section): Renamed do_output_section and moved to
1994 protected.
1995 (Relobj::output_section_offset): Moved to Object.
1996 (Relobj::do_get_incremental_reloc_base): New function.
1997 (Relobj::do_get_incremental_reloc_count): New function.
1998 (Relobj::allocate_incremental_reloc_counts): New function.
1999 (Relobj::count_incremental_reloc): New function.
2000 (Relobj::finalize_incremental_relocs): New function.
2001 (Relobj::next_incremental_reloc_index): New function.
2002 (Relobj::reloc_counts_): New data member.
2003 (Relobj::reloc_bases_): New data member.
2004 (Sized_relobj::do_relocate_sections): Add parameter. Change caller.
2005 (Sized_relobj::relocate_sections): Add parameter. Change all callers.
2006 (Sized_relobj::incremental_relocs_scan): New function.
2007 (Sized_relobj::incremental_relocs_scan_reltype): New function.
2008 (Sized_relobj::incremental_relocs_write): New function.
2009 (Sized_relobj::incremental_relocs_write_reltype): New function.
2010 * plugin.cc (Plugin_manager::add_input_file): Rewrite test for
2011 incremental link.
2012 * readsyms.cc (Read_symbols::do_read_symbols): Move reporting of
2013 archives and object files elsewhere.
2014 (Add_symbols::run): Report object files here.
2015 (Finish_group::run): Report end of archive at end of group.
2016 * reloc.cc: Include layout.h, incremental.h.
2017 (Sized_relobj::do_read_relocs): Need relocations for incremental link.
2018 (Sized_relobj::do_scan_relocs): Record relocations for incremental link.
2019 (Sized_relobj::incremental_relocs_scan): New function.
2020 (Sized_relobj::incremental_relocs_scan_reltype): New function.
2021 (Sized_relobj::do_relocate_sections): Write incremental relocations.
2022 (Sized_relobj::incremental_relocs_write): New function.
2023 (Sized_relobj::incremental_relocs_write_reltype): New function.
2024 * script.cc (read_input_script): Rewrite test for incremental link.
2025 Change call to Incremental_inputs::report_script.
2026 * symtab.h (Symbol_table::first_global_index): New function.
2027 (Symbol_table::output_count): New function.
2028
ce0d1972
DK
20292010-08-12 Doug Kwan <dougkwan@google.com>
2030
2031 * arm.cc (Target_arm::merge_object_attributes): Check command line
2032 options --no-wchar-size-warning and --no-enum-size-warning.
2033 * options.h (General_options): Add ld-compatible options
2034 --no-enum-size-warning and --no-wchar-size-warning.
2035
6e5710ce
ILT
20362010-08-04 Ian Lance Taylor <iant@google.com>
2037
2038 * x86_64.cc (Target_x86_64::Scan::local): Use
2039 R_X86_64_GNU_VTINHERIT instead of R_386_GNU_VTINHERIT and
2040 R_X86_64_GNU_VTENTRY instead of R_386_GNU_VTENTRY.
2041 (Target_x86_64::Scan::global): Likewise.
2042 (Target_x86_64::Relocate::relocate): Likewise.
2043 (Target_x86_64::Relocatable_size_for_reloc::get_size_for_reloc):
2044 Likewise.
2045
fef830db
CC
20462010-08-03 Cary Coutant <ccoutant@google.com>
2047
2048 * merge.cc (Output_merge_string::do_add_input_section): Count strings
2049 to reserve space in merged_strings vector. Keep total input size
2050 for stats.
2051 (Output_merge_string::do_print_merge_stats): Print total input size.
2052 * merge.h (Output_merge_string): Add input_size_ field.
2053 * stringpool.cc (Stringpool_template::string_length): Move
2054 implementations out of Stringpool_template class and place in
2055 stringpool.h.
2056 * stringpool.h (string_length): Move out of Stringpool_template.
2057
1e3811b0
ILT
20582010-08-03 Ian Lance Taylor <iant@google.com>
2059
2060 PR 11712
2061 * layout.cc (relaxation_loop_body): If address of load segment is
2062 set, adjust address to include headers if possible.
2063
7af0c620
ILT
20642010-08-03 Ian Lance Taylor <iant@google.com>
2065
2066 * version.cc (version_string): Bump to 1.10.
2067
22f0da72
ILT
20682010-08-03 Ian Lance Taylor <iant@google.com>
2069
2070 PR 11805
2071 * layout.h (enum Output_section_order): Define.
2072 (class Layout): Update declarations.
2073 * layout.cc (Layout::get_output_section): Add order parameter.
2074 Remove is_interp, is_dynamic_linker_section, is_last_relro, and
2075 is_first_non_relro parameters. Change all callers.
2076 (Layout::choose_output_section): Likewise.
2077 (Layout::add_output_section_data): Likewise.
2078 (Layout::make_output_section): Likewise. Set order.
2079 (Layout::default_section_order): New function.
2080 (Layout::layout_eh_frame): Call add_output_section_to_nonload.
2081 * output.cc (Output_section::Output_section): Initialize order_.
2082 Don't initialize deleted fields.
2083 (Output_segment::Output_segment): Don't initialize deleted
2084 fields.
2085 (Output_segment::add_output_section_to_load): New function
2086 replacing add_output_section. Change all callers to call this or
2087 add_output_section_to_nonload.
2088 (Output_segment::add_output_section_to_nonload): New function.
2089 (Output_segment::remove_output_section): Rewrite.
2090 (Output_segment::add_initial_output_data): Likewise.
2091 (Output_segment::has_any_data_sections): Likewise.
2092 (Output_segment::is_first_section_relro): Likewise.
2093 (Output_segment::maximum_alignment): Likewise.
2094 (Output_segment::has_dynamic_reloc): New function replacing
2095 dynamic_reloc_count. Change all callers.
2096 (Output_segment::has_dynamic_reloc_list): New function replacing
2097 dynamic_reloc_count_list. Change all callers.
2098 (Output_segment::set_section_addresses): Rewrite.
2099 (Output_segment::set_offset): Rewrite.
2100 (Output_segment::find_first_and_last_list): Remove.
2101 (Output_segment::set_tls_offsets): Rewrite.
2102 (Output_segment::first_section_load_address): Likewise.
2103 (Output_segment::output_section_count): Likewise.
2104 (Output_segment::section_with_lowest_load_address): Likewise.
2105 (Output_segment::write_section_headers): Likewise.
2106 (Output_segment::print_sections_to_map): Likewise.
2107 * output.h (class Output_data): Remove dynamic_reloc_count_
2108 field. Add has_dynamic_reloc_ field. Make bools into bitfields.
2109 (Output_data::add_dynamic_reloc): Rewrite.
2110 (Output_data::has_dynamic_reloc): New function.
2111 (Output_data::dynamic_reloc_count): Remove.
2112 (class Output_section): Add order_ field. Remvoe is_relro_local_,
2113 is_last_relro_, is_first_non_relro_, is_interp_,
2114 is_dynamic_linker_section_ fields. Add order and set_order
2115 functions. Remove is_relro_local, set_is_relro_local,
2116 is_last_relro, set_is_last_relro, is_first_non_relro,
2117 set_is_first_non_relro functions, is_interp, set_is_interp,
2118 is_dynamic_linker_section, and set_is_dynamic_linker_section
2119 functions.
2120 (class Output_segment): Change Output_data_list from std::list to
2121 std:;vector. Add output_lists_ field. Remove output_data_ and
2122 output_bss_ fields. Update declarations.
2123
3ff2ccb0
ILT
21242010-08-02 Ian Lance Taylor <iant@google.com>
2125
2126 * arm.cc (Target_arm::gc_process_relocs): Use typename.
2127 * powerpc.cc (Target_powerpc::gc_process_relocs): Likewise.
2128 * sparc.cc (Target_sparc::gc_process_relocs): Likewise.
2129
88a4108b
ILT
21302010-08-02 Ian Lance Taylor <iant@google.com>
2131
2132 PR 11855
2133 * script.cc (Script_options::Script_options): Initialize
2134 symbol_definitions_ and symbol_references_.
2135 (Script_options::add_symbol_assignment): Update
2136 symbol_definitions_ and symbol_references_.
2137 (Script_options::add_symbol_reference): New function.
2138 (script_symbol): New function.
2139 * script.h (class Script_options): Add symbol_definitions_ and
2140 symbol_references_ fields.
2141 (Script_options::referenced_const_iterator): New type.
2142 (Script_options::referenced_begin): New function.
2143 (Script_options::referenced_end): New function.
2144 (Script_options::is_referenced): New function.
2145 (Script_options::any_unreferenced): New function.
2146 * script-c.h (script_symbol): Declare.
2147 * yyscript.y (exp): Call script_symbol.
2148 * symtab.cc: Include "script.h".
2149 (Symbol_table::gc_mark_undef_symbols): Add layout parameter.
2150 Change all callers. Check symbols referenced by scripts.
2151 (Symbol_table::add_undefined_symbols_from_command_line): Add
2152 layout parameter. Change all callers.
2153 (Symbol_table::do_add_undefined_symbols_from_command_line):
2154 Likewise. Break out loop body. Check symbols referenced by
2155 scripts.
2156 (Symbol_table::add_undefined_symbol_from_command_line): New
2157 function broken out of
2158 do_add_undefined_symbols_from_command_line.
2159 * symtab.h (class Symbol_table): Update declarations.
2160 * archive.cc: Include "layout.h".
2161 (Archive::should_include_member): Add layout parameter. Change
2162 all callers. Check for symbol mentioned in expression.
2163 * archive.h (class Archive): Update declaration.
2164 * object.cc (Sized_relobj::do_should_include_member): Add layout
2165 parameter.
2166 * object.h (Object::should_include_member): Add layout parameter.
2167 Change all callers.
2168 (Object::do_should_include_member): Add layout parameter.
2169 (class Sized_relobj): Update declaration.
2170 * dynobj.cc (Sized_dynobj::do_should_include_member): Add layout
2171 parameter.
2172 * dynobj.h (class Sized_dynobj): Update declaration.
2173 * plugin.cc (Sized_pluginobj::do_should_include_member): Add
2174 layout parameter.
2175 * plugin.h (class Sized_pluginobj): Update declaration.
2176
5f1ab67a
ILT
21772010-08-02 Ian Lance Taylor <iant@google.com>
2178
2179 PR 11866
2180 * output.cc (Output_segment::set_offset): Search for the first and
2181 last sections rather than assuming that the list is in order.
2182 (Output_segment::find_first_and_last_list): New function.
2183 * output.h (class Output_segment): Update declarations.
2184 * testsuite/Makefile.am (check_PROGRAMS): Add relro_strip_test.
2185 (relro_strip_test_SOURCES): New variable.
2186 (relro_strip_test_DEPENDENCIES): New variable.
2187 (relro_strip_test_LDFLAGS): New variable.
2188 (relro_strip_test_LDADD): New variable.
2189 (relro_strip_test.so): New target.
2190
a8df5856
ILT
21912010-08-02 Ian Lance Taylor <iant@google.com>
2192
2193 * i386.cc (class Target_i386): Add got_tlsdesc_ field.
2194 (Target_i386::Target_i386):: Initialize got_tlsdesc_.
2195 (Target_i386::got_tlsdesc_section): New function.
2196 (Target_i386::got_section): Create space for GOT entries for
2197 TLSDESC relocations.
2198 (Target_i386::Scan::local): Use TLSDESC GOT for unoptimized
2199 R_386_TLS_GOTDESC.
2200 (Target_i386::Scan::global): Likewise.
2201 (Target_i386::Relocate::relocate_tls): Adjust GOT offset when
2202 using TLSDESC GOT.
2203 * x86_64.cc (class Target_x86_64): Add got_tlsdesc_ field.
2204 (Target_x86_64::Target_x86_64):: Initialize got_tlsdesc_.
2205 (Target_x86_64::got_tlsdesc_section): New function.
2206 (Target_x86_64::got_section): Create space for GOT entries for
2207 TLSDESC relocations.
2208 (Target_x86_64::Scan::local): Use TLSDESC GOT for unoptimized
2209 R_386_TLS_GOTDESC.
2210 (Target_x86_64::Scan::global): Likewise.
2211 (Target_x86_64::Relocate::relocate_tls): Adjust GOT offset when
2212 using TLSDESC GOT.
2213
0c10a0a6
ILT
22142010-08-02 Ian Lance Taylor <iant@google.com>
2215
2216 * testsuite/final_layout.sh: Use dc to convert from hex to
2217 decimal.
2218
41cbeecc
ST
22192010-07-29 Sriraman Tallam <tmsriram@google.com>
2220
2221 * arm.cc (Target_arm<big_endian>::gc_process_relocs): Add template
2222 paramter to the call to gold::gc_process_relocs.
2223 * i386.cc (Target_i386<big_endian>::gc_process_relocs): Add template
2224 paramter to the call to gold::gc_process_relocs.
2225 * x86_64.cc (Target_x86_64<big_endian>::gc_process_relocs): Add template
2226 parameter to the call to gold::gc_process_relocs.
2227 * powerpc.cc (Target_powerpc<big_endian>::gc_process_relocs): Add
2228 template parameter to the call to gold::gc_process_relocs.
2229 * sparc.cc (Target_sparc<big_endian>::gc_process_relocs): Add template
2230 paramter to the call to gold::gc_process_relocs.
2231 * gc.h (get_embedded_addend_size): New function.
2232 (gc_process_relocs): Save the size of the reloc for use by ICF.
2233 * icf.cc (get_section_contents): Get the addend from the text section
2234 for SHT_REL relocation sections.
2235 * icf.h (Icf::Reloc_addend_size_info): New typedef.
2236 (Icf::Reloc_info): Add new member reloc_addend_size_info.
2237 * int_encoding.h (read_from_pointer): New overloaded function.
2238 * testsuite/Makefile.am (icf_sht_rel_addend_test): New test.
2239 * testsuite/icf_sht_rel_addend_test.sh: New file.
2240 * testsuite/icf_sht_rel_addend_test_1.cc: New file.
2241 * testsuite/icf_sht_rel_addend_test_2.cc: New file.
2242
6ea55b82
RW
22432010-07-28 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
2244
2245 * configure.ac (AM_INIT_AUTOMAKE): Use parallel-tests option.
2246 * Makefile.in: Regenerate.
2247 * testsuite/Makefile.in: Regenerate.
2248
9691462b
ILT
22492010-07-27 Jeffrey Yasskin <jyasskin@google.com>
2250
2251 * testsuite/debug_msg.sh: Test mixed weak/strong symbol behavior.
2252 * gold/testsuite/debug_msg.cc: Likewise.
2253 * gold/testsuite/odr_violation1.cc
2254 * gold/testsuite/odr_violation2.cc
2255
76897331
CC
22562010-07-21 Cary Coutant <ccoutant@google.com>
2257
2258 * merge.h (Output_merge_string::Merged_string): Remove object, shndx,
2259 string, and length fields.
2260 (Output_merge_string::Merged_strings_list): New type.
2261 (Output_merge_string::Merged_strings_lists): New typedef.
2262 (Output_merge_string): Replace merged_strings_ with
2263 merged_strings_lists_.
2264 * merge.cc (Output_merge_string::do_add_input_section): Allocate new
2265 Merged_strings_list per input object and section. Don't store pointer
2266 to the string. Don't store length with each merged string entry.
2267 (Output_merge_string::finalize_merged_data): Loop over list of merged
2268 strings lists. Recompute length of each merged string.
2269
78384e8f
CC
22702010-07-15 Cary Coutant <ccoutant@google.com>
2271
2272 * plugin.cc (Plugin_finish::run): Don't call cleanup handlers from
2273 here.
2274
783659f9
ILT
22752010-07-14 Ian Lance Taylor <iant@google.com>
2276
2277 * descriptors.cc (Descriptors::open): Report correct name in error
2278 message.
2279
131687b4
DK
22802010-07-13 Doug Kwan <dougkwan@google.com>
2281
2282 * arm.cc (Arm_input_section::Arm_input_section): For a
2283 SHT_ARM_EXIDX section, always keeps the input sections.
2284 (Arm_input_section::set_exidx_section_link): New method.
2285 (Arm_exidx_input_section::Arm_exidx_input_section): Initialize
2286 has_errors_ to false.
2287 (Arm_exidx_input_section::has_errors,
2288 Arm_exidx_input_section::set_has_errors): New methods.
2289 (Arm_exidx_input_section::has_errors_): New data member.
2290 (Arm_relobj::get_exidx_shndx_list): New method.
2291 (Arm_output_section::append_text_sections_to_list): Do not skip
2292 section without SHF_EXECINSTR.
2293 (Arm_output_section::fix_exidx_coverage): Skip input sections with
2294 errors.
2295 (Arm_relobj::make_exidx_input_section): Add new parameter for text
2296 section header. Make error messages more verbose. Check for
2297 a non-executable section linked to an EXIDX section.
2298 (Arm_relobj::do_read_symbols): Remove error checking, which has been
2299 moved to Arm_relobj::make_exidx_input_section. Add an assertion to
2300 check that there is no deferred EXIDX section if we exit early.
2301 Instead of not making an EXIDX section in case of an error, make one
2302 and set the has_errors flag of it.
2303 (Target_arm::do_finalize_sections): Fix up links of EXIDX sections
2304 in a relocatable link.
2305 (Target_arm::do_relax): Look for the EXIDX output section instead of
2306 assuming that it is called .ARM.exidx.
2307 (Target_arm::fix_exidx_coverage): Add a new parameter for input
2308 section list. Do not check for SHF_EXECINSTR section flags but
2309 skip any input section with errors.
2310 * output.cc (Output_section::Output_section): Initialize
2311 always_keeps_input_sections_ to false.
2312 (Output_section::add_input_section): Check for
2313 always_keeps_input_sections_.
2314 * output.h (Output_section::always_keeps_input_sections,
2315 Output_section::set_always_keeps_input_sections): New methods.
2316 (Output_section::always_keeps_input_sections): New data member.
2317
69517287
RÁE
23182010-07-13 Rafael Espindola <espindola@google.com>
2319
2320 * fileread.cc (try_extra_search_path, find_file): Move to Input_file.
2321 * fileread.h (Input_file): Add try_extra_search_path and find_file.
2322
82742395
ILT
23232010-07-13 Philip Herron <herron.philip@googlemail.com>
2324 Ian Lance Taylor <iant@google.com>
2325
2326 * output.h (Output_section_lookup_maps::add_merge_section):
2327 Correct check of whether value was inserted.
2328 (Output_section_lookup_maps::add_merge_input_section): Likewise.
2329 (Output_section_lookup_maps::add_relaxed_input_section):
2330 Likewise.
2331 * arm.cc (Target_arm::got_section): Remove used local os.
2332 * i386.cc (Target_i386::got_section): Likewise.
2333 * x86_64.cc (Target_x86_64::got_section): Likewise.
2334 * sparc.cc (Target_sparc::got_section): Likewise.
2335 (Target_sparc::relocate): Remove unused local have_got_offset.
2336 * powerpc.cc (Target_powerpc::relocate): Likewise.
2337
f2d707b5
ILT
23382010-07-13 Ian Lance Taylor <iant@google.com>
2339
241531d6
ILT
2340 * compressed_output.cc (zlib_decompress): Fix signature in
2341 !HAVE_ZLIB_H case.
2342
f2d707b5
ILT
2343 * archive.cc (Archive::include_member): Unlock an external member
2344 of a thin archive. Don't bother to delete an object we know is
2345 NULL.
2346
a2e47362
CC
23472010-07-12 Cary Coutant <ccoutant@google.com>
2348
2349 * compressed_output.cc (zlib_decompress): New function.
2350 (get_uncompressed_size): New function.
2351 (decompress_input_section): New function.
2352 * compressed_output.h (get_uncompressed_size): New function.
2353 (decompress_input_section): New function.
2354 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info)
2355 Handle compressed debug sections.
2356 * layout.cc (is_compressed_debug_section): New function.
2357 (Layout::output_section_name): Map compressed section names to
2358 canonical names.
2359 * layout.h (is_compressed_debug_section): New function.
2360 (is_debug_info_section): Recognize compressed debug sections.
2361 * merge.cc: Include compressed_output.h.
2362 (Output_merge_data::do_add_input_section): Handle compressed
2363 debug sections.
2364 (Output_merge_string::do_add_input_section): Handle compressed
2365 debug sections.
2366 * object.cc: Include compressed_output.h.
2367 (Sized_relobj::Sized_relobj): Initialize new data members.
2368 (build_compressed_section_map): New function.
2369 (Sized_relobj::do_read_symbols): Handle compressed debug sections.
2370 * object.h (Object::section_is_compressed): New method.
2371 (Object::do_section_is_compressed): New method.
2372 (Sized_relobj::Compressed_section_map): New type.
2373 (Sized_relobj::do_section_is_compressed): New method.
2374 (Sized_relobj::compressed_sections_): New data member.
2375 * output.cc (Output_section::add_input_section): Handle compressed
2376 debug sections.
2377 * reloc.cc: Include compressed_output.h.
2378 (Sized_relobj::write_sections): Handle compressed debug sections.
2379
ce279a62
CC
23802010-07-08 Cary Coutant <ccoutant@google.com>
2381
2382 * resolve.cc (Symbol_table::resolve): Remember whether undef was
2383 weak when resolving to a dynamic def.
2384 (Symbol_table::should_override): Add adjust_dyndef flag; set it
2385 for weak undef/dynamic def cases. Adjust callers.
2386 * symtab.cc (Symbol::init_fields): Initialize undef_binding_set_ and
2387 undef_binding_weak_.
2388 (Symbol_table::sized_write_globals): Adjust symbol binding.
2389 (Symbol_table::sized_write_symbol): Add binding parameter.
2390 * symtab.h (Symbol::set_undef_binding): New method.
2391 (Symbol::is_undef_binding_weak): New method.
2392 (Symbol::undef_binding_set_, Symbol::undef_binding_weak_): New members.
2393 (Symbol_table::should_override): Add new parameter.
2394 (Symbol_table::sized_write_symbol): Add new parameter.
2395
2396 * testsuite/weak_undef_file1.cc: Add new test case.
2397 * testsuite/weak_undef_file2.cc: Fix header comment.
2398 * testsuite/weak_undef_test.cc: Add new test case.
2399
b2286c10
DK
24002010-06-29 Doug Kwan <dougkwan@google.com>
2401
2402 * arm-reloc-property.cc (Arm_reloc_property::Arm_reloc_property):
2403 Initialize USE_SYMBOL_.
2404 * arm-reloc-property.h (Arm_reloc_property::uses_symbol): New method
2405 definition.
2406 (Arm_reloc_property::uses_symbol_): New data member declaration.
2407 * arm.cc (Target_arm::Relocate::relocate): Exit early if relocation
2408 uses symbol value and symbol is undefined but not weakly undefined.
2409
4802450a
RÁE
24102010-06-28 Rafael Espindola <espindola@google.com>
2411
2412 * plugin.cc (Plugin::load): Use dlerror.
2413
e5ca47ba
ILT
24142010-06-26 Jeffrey Yaskin <jyasskin@google.com>
2415
2416 * symtab.cc (detect_odr_violations): When reporting an ODR
2417 violation, report an object where the symbol is defined.
2418
8a75a161
DK
24192010-06-25 Doug Kwan <dougkwan@google.com>
2420
2421 * arm.cc (Target_arm::can_check_for_functions_pointers): Return true.
2422 (Target_arm::section_may_have_icf_unsafe_pointers): New method
2423 definition.
2424 (Target_arm::Scan::local_reloc_may_be_function_pointer,
2425 Target_arm::Scan::global_reloc_may_be_function_pointer): Implement
2426 target hook to detect function points.
2427 (Target_arm::Scan::possible_function_pointer_reloc): New method.
2428 * icf.h (Icf::check_section_for_function_pointers): Change type of
2429 parameter SECTION_NAME to const reference to std::string. Use
2430 target hook to determine if section may have unsafe pointers.
2431 * target.h (Target::section_may_have_icf_unsafe_pointers): New
2432 method definition.
2433
42218b9f
RÁE
24342010-06-21 Rafael Espindola <espindola@google.com>
2435
2436 * fileread.cc (Input_file::find_fie): New
2437 (Input_file::open): Use Input_file::find_fie.
2438 * fileread.h (Input_file::find_fie): New
2439 * plugin.cc (set_extra_library_path): New.
2440 (Plugin::load): Add set_extra_library_path to the transfer vector.
2441 (Plugin_manager::set_extra_library_path): New.
2442 (Plugin_manager::add_input_file): Use the extra search path if set.
2443 (set_extra_library_path(): New.
2444 * plugin.h (Plugin_manager): Add set_extra_library_path and
2445 extra_search_path_.
2446
a0506cca
CC
24472010-06-19 Cary Coutant <ccoutant@google.com>
2448
2449 * layout.cc (gdb_sections): Add .debug_types.
2450 (lines_only_debug_sections): Likewise.
2451
6508b958
RÁE
24522010-06-18 Rafael Espindola <espindola@google.com>
2453
2454 * plugin.cc (add_input_file,add_input_library)
2455 (Plugin_manager::add_input_file): Make filename arguments const.
2456 * plugin.h (Plugin_manager::add_input_file): Make filename arguments
2457 const.
2458
3e235302
DK
24592010-06-16 Doug Kwan <dougkwan@google.com>
2460
2461 * arm.cc (Target_arm::do_finalize_sections): Do not emit an
2462 .ARM.attributes section if we have not merged any input
2463 attributes sections.
2464
106e8a6c
DK
24652010-06-15 Viktor Kutuzov <vkutuzov@accesssoftek.com>
2466
2467 * arm.cc: Allow combining objects with no EABI version
2468 information.
2469
91ff43fe
RÁE
24702010-06-15 Rafael Espindola <espindola@google.com>
2471
2472 * plugin.cc (Plugin_hook::run): Set in_real_elf for the start symbol.
2473
68ed838c
ILT
24742010-06-15 Viktor Kutuzov <vkutuzov@accesssoftek.com>
2475
2476 * fileread.cc: Only #include <sys/uio.h> if HAVE_READV.
2477 (struct iovec): Correct !HAVE_READV definition.
2478
f3a2388f
CC
24792010-06-10 Cary Coutant <ccoutant@google.com>
2480
2481 * object.cc (Sized_relobj::do_layout): Defer layout for reloc sections.
2482 (Sized_relobj::do_layout_deferred_sections): Do layout for deferred
2483 reloc sections.
2484 * object.h (Sized_relobj::deferred_layout_relocs_): New data member.
2485
2486 PR 11683
2487 * symtab.h (Symbol::is_placeholder): New member function.
2488 * target-reloc.h (relocate_section): Check for placeholder symbols.
2489
2490 * testsuite/Makefile.am (plugin_test_8): New test.
2491 (plugin_test_9): New test.
2492 * testsuite/Makefile.in: Regenerate.
2493
e1df38aa
NC
24942010-06-09 Nick Clifton <nickc@redhat.com>
2495
2496 * yyscript.y (input_list_element): Allow strings prefixed with
2497 the '-' character. Treat these as libraries.
2498 * script.cc (script_add_library): New function. Adds a library
2499 specified by "-l<name>" found in an input script.
2500 * script-c.h: Add prototype for script_add_library.
2501
25bbe950
DK
25022010-06-07 Doug Kwan <dougkwan@google.com>
2503
2504 * arm.cc (Target_arm::do_relax): Reserve more space for stubs.
2505 Restrict stub-group size to be within long conditional branch
2506 range when working around cortex-A8 erratum.
2507
0f32ea4c
ILT
25082010-06-07 Damien Diederen <dd@crosstwine.com>
2509
2510 * gold-threads.cc (Lock_impl_threads::Lock_impl_threads): Correct
2511 #ifdef typo.
2512
8fe2a369
ST
25132010-06-03 Sriraman Tallam <tmsriram@google.com>
2514
2515 PR gold/11658
2516 * output.cc
2517 (Output_section::Input_section_sort_entry::compare_section_ordering):
2518 Change to return non-zero correctly.
2519 (Output_section::Input_section_sort_section_order_index_compare
2520 ::operator()): Change to fix ambiguity in comparisons.
2521
6e9ba2ca
ST
25222010-06-01 Sriraman Tallam <tmsriram@google.com>
2523
2524 * gold.h (is_wildcard_string): New function.
2525 * layout.cc (Layout::layout): Pass this pointer to add_input_section.
2526 (Layout::layout_eh_frame): Ditto.
2527 (Layout::find_section_order_index): New method.
2528 (Layout::read_layout_from_file): New method.
2529 * layout.h (Layout::find_section_order_index): New method.
2530 (Layout::read_layout_from_file): New method.
2531 (Layout::input_section_position_): New private member.
2532 (Layout::input_section_glob_): New private member.
2533 * main.cc (main): Call read_layout_from_file here.
2534 * options.h (--section-ordering-file): New option.
2535 * output.cc (Output_section::input_section_order_specified_): New
2536 member.
2537 (Output_section::Output_section): Initialize new member.
2538 (Output_section::add_input_section): Add new parameter.
2539 Keep input sections when --section-ordering-file is used.
2540 (Output_section::set_final_data_size): Sort input sections when
2541 section ordering file is specified.
2542 (Output_section::Input_section_sort_entry): Add new parameter.
2543 Check sorting type.
2544 (Output_section::Input_section_sort_entry::compare_section_ordering):
2545 New method.
2546 (Output_section::Input_section_sort_compare::operator()): Change to
2547 consider section_order_index.
2548 (Output_section::Input_section_sort_init_fini_compare::operator()):
2549 Change to consider section_order_index.
2550 (Output_section::Input_section_sort_section_order_index_compare
2551 ::operator()): New method.
2552 (Output_section::sort_attached_input_sections): Change to sort
2553 according to section order when specified.
e1df38aa
NC
2554 (Output_section::add_input_section<32, true>): Add new parameter.
2555 (Output_section::add_input_section<64, true>): Add new parameter.
2556 (Output_section::add_input_section<32, false>): Add new parameter.
2557 (Output_section::add_input_section<64, false>): Add new parameter.
6e9ba2ca
ST
2558 * output.h (Output_section::add_input_section): Add new parameter.
2559 (Output_section::input_section_order_specified): New
2560 method.
2561 (Output_section::set_input_section_order_specified): New method.
2562 (Input_section::Input_section): Initialize section_order_index_.
2563 (Input_section::section_order_index): New method.
2564 (Input_section::set_section_order_index): New method.
2565 (Input_section::section_order_index_): New member.
2566 (Input_section::Input_section_sort_section_order_index_compare): New
2567 struct.
2568 (Output_section::input_section_order_specified_): New member.
2569 * script-sections.cc (is_wildcard_string): Delete and move modified
2570 method to gold.h.
2571 (Output_section_element_input::Output_section_element_input): Modify
2572 call to is_wildcard_string.
2573 (Output_section_element_input::Input_section_pattern
2574 ::Input_section_pattern): Ditto.
2575 (Output_section_element_input::Output_section_element_input): Ditto.
2576 * testsuite/Makefile.am (final_layout): New test case.
2577 * testsuite/Makefile.in: Regenerate.
2578 * testsuite/final_layout.cc: New file.
2579 * testsuite/final_layout.sh: New file.
2580
3537c84b
RÁE
25812010-06-01 Rafael Espindola <espindola@google.com>
2582
2583 * plugin.cc (Plugin::load): Pass the output name to the plugin.
2584
105b6afd
RÁE
25852010-06-01 Rafael Espindola <espindola@google.com>
2586
2587 * plugin.cc (Sized_pluginobj::::do_add_symbols): Correctly set the
2588 visibility of symbols.
2589
29e11421
DK
25902010-05-27 Doug Kwan <dougkwan@google.com>
2591
2592 * object.cc (Sized_relobj::do_finalize_local_symbols): Use offset
2593 from start of output section instead of address for a local symbol
2594 in a merged or relaxed section when doing a relocatable link.
2595
5e0f337e
RÁE
25962010-05-26 Rafael Espindola <espindola@google.com>
2597
2598 PR 11604
2599 * gold/object.cc(Sized_relobj::do_layout_deferred_sections): Avoid
2600 adding sections the garbage collector removed.
2601 * gold/testsuite/Makefile.am: Add test.
2602 * gold/testsuite/Makefile.in: Regenerate.
2603 * gold/testsuite/plugin_test_7.sh: New.
2604 * gold/testsuite/plugin_test_7_1.c: New.
2605 * gold/testsuite/plugin_test_7_2.c: New.
2606
f4187277
RÁE
26072010-05-26 Rafael Espindola <espindola@google.com>
2608
2609 * script-sections.cc (Output_section_definition::set_section_addresses):
2610 Check for --section-start.
2611
5c388529
DK
26122010-05-26 Doug Kwan <dougkwan@google.com>
2613
2614 * arm.cc (Arm_scan_relocatable_relocs): New class.
2615 (Target_arm::relocate_special_relocatable): New method.
2616 (Arm_relocate_functions::arm_branch_common): Handle relocatable link.
2617 (Arm_relocate_functions::thumb_branch_common): Same.
2618 (Target_arm::scan_relocatable_relocs): Use Arm_scan_relocatable_relocs
2619 instead of Default_scan_relocatable_relocs.
2620 * target-reloc.h (relocate_for_relocatable): Let target handle
2621 relocation strategy Relocatable_relocs::RELOC_SPECIAL.
2622 * target.h (Sized_target::relocate_special_relocatable): New method.
2623
bca1c3ae
ILT
26242010-05-25 Viktor Kutuzov <vkutuzov@accesssoftek.com>
2625
2626 * timer.cc: Only #include <sys/times.h> if HAVE_TIMES is defined.
2627
0439c796
DK
26282010-05-23 Doug Kwan <dougkwan@google.com>
2629
2630 * arm.cc (Arm_input_section::do_output_offset): Use convert_types
2631 instead of a cast.
2632 (Target_arm::apply_cortex_a8_workaround): Rewrite a conditional branch
2633 with a direct branch, not a conditional branch, to a stub.
2634 * merge.cc (Output_merge_base::record_input_section): New method
2635 defintion.
2636 (Output_merge_data::do_add_input_section): Record input section if
2637 keeps-input-sections flag is set.
2638 (Output_merge_string::do_add_input_section): Ditto.
2639 * merge.h (Output_merge_base::Output_merge_base): Initialize new data
2640 members KEEPS_INPUT_SECTIONS_, FIRST_RELOBJ_, FIRST_SHNDX_ and
2641 INPUT_SECTIONS_.
2642 (Output_merge_base::keeps_input_sections,
2643 Output_merge_base::set_keeps_input_sections,
2644 Output_merge_base::first_relobj, Output_merge_base::first_shndx): New
2645 method definitions.
2646 (Output_merge_base::Input_sections): New type declaration.
2647 (Output_merge_base::input_sections_begin,
2648 Output_merge_base::input_sections_end,
2649 Output_merge_base::do_set_keeps_input_sections): New method definitions.
2650 (Output_merge_base::bool keeps_input_sections_,
2651 Output_merge_base::first_relobj_, Output_merge_base::first_shndx_,
2652 Output_merge_base::input_sections_): New data members.
2653 (Output_merge_data::do_set_keeps_input_sections): New method
2654 defintion.
2655 (Output_merge_string::do_set_keeps_input_sections): Ditto.
2656 * output.cc (Output_section::Input_section::relobj): Move method
2657 defintion from class declaration to here and handle merge sections.
2658 (Output_section::Input_section::shndx): Ditto.
2659 (Output_section::Output_section): Remove initializations of removed
2660 data members and initialize new data member LOOKUP_MAPS_.
2661 (Output_section::add_input_section): Set keeps-input-sections flag
2662 for a newly created merge output section as appropriate. Adjust code
2663 to use Output_section_lookup_maps class.
2664 (Output_section::add_relaxed_input_section): Adjst code for lookup
2665 maps code refactoring.
2666 (Output_section::add_merge_input_section): Add a new parameter
2667 KEEPS_INPUT_SECTION. Adjust code to use Output_section_lookup_maps
2668 class. If adding input section to a newly created merge output
2669 section fails, remove the new merge section.
2670 (Output_section::convert_input_sections_in_list_to_relaxed_input_sections):
e1df38aa 2671 Adjust code for use of the Output_section_lookup_maps class.
0439c796
DK
2672 (Output_section::find_merge_section): Ditto.
2673 (Output_section::build_lookup_maps): New method defintion.
2674 (Output_section::find_relaxed_input_section): Adjust code to use
2675 Output_section_lookup_maps class.
2676 (Output_section::get_input_sections): Export merge sections. Adjust
2677 code to use Output_section_lookup_maps class.
2678 (Output_section:::add_script_input_section): Adjust code to use
2679 Output_section_lookup_maps class. Update lookup maps for merge
2680 sections also.
2681 (Output_section::discard_states): Use Output_section_lookup_maps.
2682 (Output_section::restore_states): Same.
2683 * output.h (Merge_section_properties): Move class defintion out of
2684 Output_section.
2685 (Output_section_lookup_maps): New class.
2686 (Output_section::Input_section::is_merge_section): New method
2687 defintion.
2688 (Output_section::Input_section::relobj): Move defintion out of class
2689 defintion. Declare method only.
2690 (Output_section::Input_section::shndx): Ditto.
2691 (Output_section::Input_section::output_merge_base): New method defintion.
2692 (Output_section::Input_section::u2_.pomb): New union field.
2693 (Output_section::Merge_section_by_properties_map,
2694 Output_section::Output_section_data_by_input_section_map,
2695 Output_section::Ouptut_relaxed_input_section_by_input_section_map):
2696 Remove types.
2697 (Output_section::add_merge_input_section): Add new parameter
2698 KEEPS_INPUT_SECTIONS.
2699 (Output_section::build_lookup_maps): New method declaration.
2700 (Output_section::merge_section_map_,
2701 Output_section::merge_section_by_properties_map_,
2702 Output_section::relaxed_input_section_map_,
2703 Output_section::is_relaxed_input_section_map_valid_): Remove data
2704 members.
2705 (Output_section::lookup_maps_): New data member.
2706
76295588
L
27072010-05-21 Doug Kwan <dougkwan@google.com>
2708
2709 PR gold/11619
2710 * arm.cc (Arm_input_section::do_output_offset): Add a cast to
2711 avoid a compilation error.
2712
d103a984
RÁE
27132010-05-19 Rafael Espindola <espindola@google.com>
2714
2715 * script-sections.cc (Output_section_definition::allocate_to_segment):
2716 Update the phdrs_list even when the output section is NULL.
2717 * testsuite/Makefile.am: Add test.
2718 * testsuite/Makefile.in: Regenerate.
2719 * testsuite/script_test_9.cc: New.
2720 * testsuite/script_test_9.sh: New.
2721 * testsuite/script_test_9.t: New.
2722
6625d24e
DK
27232010-05-19 Doug Kwan <dougkwan@google.com>
2724
2725 * arm.cc (Arm_input_section::original_size): New method.
2726 (Arm_input_section::do_addralign): Add a cast.
2727 (Arm_input_section::do_output_offset): Remove static cast.
2728 (Arm_input_section::original_addralign,
2729 Arm_input_section::original_size_): Change type to uint32_t.
2730 (Arm_input_section::init): Add safe casts for section alignment
2731 and size.
2732 (Arm_input_section::set_final_data_size): Do not set address and
2733 offset of stub table.
2734 (Arm_output_section::fix_exidx_coverage): Change use of of
2735 Output_section::Simple_input_section to that of
2736 Output_section::Input_section.
2737 (Target_arm::do_relax): Set addresses and file offsets of Stub_tables
2738 except for the first pass.
2739 * output.cc (Output_section::get_input_sections): Change type of
2740 input_sections to std::list<Input_section>.
2741 (Output_section::add_script_input_section): Rename from
2742 Output_section::add_simple_input_section. Change type of SIS
2743 parameter from Simple_input_section to Input_section.
2744 * output.h (Output_section::Simple_input_section): Remove class.
2745 (Output_section::Input_section): Change class visibility to public.
2746 (Output_section::Input_section::addralign): Use stored alignments
2747 for special input sections if set.
2748 (Output_section::Input_section::set_addralign): New method.
2749 (Output_section::get_input_sections): Change parameter type from
2750 list of Simple_input_section to list of Input_section.
2751 (Output_section::add_script_input_section): Rename from
2752 Output_section::add_simple_input_section. Change first parameter's
2753 type from Simple_input_section to Input_section and remove the
2754 second and third parameters.
2755 * script-sections.cc (Input_section::Input_section_list): Change
2756 type to list of Output_section::Input_section/
2757 (Input_section_info::Input_section_info): Change parameter type of
2758 INPUT_SECTION to Output_section::Input_section.
2759 (Input_section_info::input_section): Change return type.
2760 (Input_section_info::input_section_): Change type to
2761 Output_section::Input_section.
2762 (Output_section_element_input::set_section_addresses): Adjust code
2763 to use Output_section::Input_section instead of
2764 Output_section::Simple_input_section. Adjust code for renaming
2765 of Output_section::add_simple_input_section.
2766 (Orphan_output_section::set_section_addresses): Ditto.
2767
e1e82ea4
RW
27682010-05-18 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
2769
2770 * gold.h (Unordered_multimap, Unordered_map): Fix defines for
2771 when neither HAVE_TR1_UNORDERED_MAP nor HAVE_EXT_HASH_MAP are set.
2772
91e75c8a
RÁE
27732010-05-18 Rafael Espindola <espindola@google.com>
2774
2775 * options.cc (General_options::finalize): Handle -nostdlib.
2776 * options.h (nostdlib): New option.
2777 * script.cc (script_add_search_dir): Handle -nostdlib.
2778
da59ad79
DK
27792010-05-12 Doug Kwan <dougkwan@google.com>
2780
2781 * arm.cc (Target_arm::do_finalize_sections): Create an empty
2782 attributes section only if there no attributes section after merging.
2783 (Target_arm::merge_object_attributes): Move value of
e1df38aa 2784 Tag_MPextension_use_legacy to that of Tag_MPextension_use.
da59ad79
DK
2785 Handle Tag_DIV_use and Tag_MPextension_use_legacy.
2786 * testsuite/Makefile.am (check_SCRIPTS): Add arm_attr_merge.sh
2787 (check_DATA): Add arm_attr_merge_6.stdout, arm_attr_merge_6r_stdout
2788 and arm_attr_merge_7.stdout.
2789 (arm_attr_merge_6.stdout, arm_attr_merge_6 arm_attr_merge_6a.o
2790 arm_attr_merge_6b.o, arm_attr_merge_6r.stdout, arm_attr_merge_6r,
2791 arm_attr_merge_7.stdout, arm_attr_merge_7, arm_attr_merge_7a.o,
2792 arm_attr_merge_7b.o): New rules.
2793 (MOSTLYCLEANFILES): Add arm_attr_merge_6, arm_attr_merge_6r and
2794 arm_attr_merge_7
2795 * testsuite/Makefile.in: Regenerate.
2796 * testsuite/arm_attr_merge.sh: New file.
2797 * testsuite/arm_attr_merge_[67][ab].s: Same.
2798
3e01a7fd
NC
27992010-05-05 Nick Clifton <nickc@redhat.com>
2800
2801 * po/es.po: Updated Spanish translation.
2802
7ad2014a
L
28032010-04-27 H.J. Lu <hongjiu.lu@intel.com>
2804
2805 * Makefile.am (install-exec-local): Properly install gold as
2806 default cross linker.
2807 * Makefile.in: Regenerated.
2808
4fda8867
NC
28092010-04-27 H.J. Lu <hongjiu.lu@intel.com>
2810 Nick Clifton <nickc@redhat.com>
2811
2812 * configure.ac (install_as_default): Define and set to false
2813 unless --enable-gold or --enable-gold=both/gold has been
2814 specified.
2815 * configure: Regenerate.
2816
2817 * Makefile.am (install-exec-local): Install the executable as
2818 'ld.gold'. If install_as_default is true then also install it as
2819 'ld'.
2820 * Makefile.in: Regenerated.
2821
bd288ea2
ILT
28222010-04-24 Ian Lance Taylor <iant@google.com>
2823
2824 * layout.cc (Layout::layout_reloc): In relocatable link don't
2825 combine reloc sections for grouped sections.
2826
ef38fd8a
ST
28272010-04-23 Sriraman Tallam <tmsriram@google.com>
2828
2829 * gc.h (gc_process_relocs): Pass information on relocs pointing to
2830 sections that are not ordinary to icf.
2831 * icf.cc (get_section_contents): Handle relocation pointing to section
2832 with no object or shndx information.
2833 * testsuite/Makefile.am: Remove icf_virtual_function_folding_test.sh
2834 * testsuite/Makefile.in: Regenerate.
2835 * testsuite/icf_virtual_function_folding_test.cc: Remove printf.
2836 * testsuite/icf_virtual_function_folding_test.sh: Delete file.
2837
f6973bdc
ILT
28382010-04-22 Ian Lance Taylor <iant@google.com>
2839
2840 * expression.cc (Expression::Expression_eval_info): Add
2841 result_alignment_pointer field.
2842 (Expression::eval_with_dot): Add result_alignment_pointer
2843 parameter. Change all callers.
2844 (Expression::eval_maybe_dot): Likewise.
2845 (class Binary_expression): Add alignment_pointer parameter to
2846 left_value and right_value. Change all callers.
2847 (BINARY_EXPRESSION): Set result alignment.
2848 (class Trinary_expression): Add alignment_pointer parameter to
2849 arg2_value and arg3_value. Change all callers.
2850 (Trinary_cond::value): Set result alignment.
2851 (Max_expression::value, Min_expression::value): Likewise.
2852 (Align_expression::value): Likewise.
2853 * script-sections.cc (class Sections_element): Add dot_alignment
2854 parameter to set_section_addresses virtual function. Update
2855 instantiations.
2856 (class Output_section_element): Likewise.
2857 (Script_sections::create_segments): Add dot_alignment parameter.
2858 Change all callers.
2859 (Script_sections::create_segments_from_phdrs_clause): Likewise.
2860 (Script_sections::set_phdrs_clause_addresses): Likewise.
2861 * script-sections.h: Update declarations.
2862 * script.h: Update declarations.
2863 * output.h (Output_segment::set_minimum_p_align): Don't decrease
2864 min_p_align.
2865 * testsuite/script_test_3.t: Set large alignment.
2866 * testsuite/script_test_3.sh: Make sure that at least one LOAD
2867 segment has expected alignment.
2868
9c9c98a5
NC
28692010-04-22 Nick Clifton <nickc@redhat.com>
2870
2871 * po/gold.pot: Updated by the Translation project.
2872 * po/vi.po: Updated Vietnamese translation.
2873
2253bfba
L
28742010-04-22 H.J. Lu <hongjiu.lu@intel.com>
2875
2876 * testsuite/Makefile.am (check_PROGRAMS): Add
2877 icf_virtual_function_folding_test.
2878 * testsuite/Makefile.in: Regenerated.
2879
85fdf906
AH
28802010-04-15 Andrew Haley <aph@redhat.com>
2881
2882 * options.h (merge_exidx_entries): New option.
2883 * arm.cc (class Arm_exidx_fixup): Add new arg, merge_exidx_entries.
2884 (class Arm_exidx_fixup::merge_exidx_entries_): New member.
2885 (Output_section::fix_exidx_coverage): Add new arg, merge_exidx_entries.
2886 (Target_arm::merge_exidx_entries): New function.
2887 (process_exidx_entry): Don't merge if merge_exidx_entries_ is false.
2888 (Arm_output_section::fix_exidx_coverage): Pass merge_exidx_entries
2889 to Arm_exidx_fixup constructor.
2890 Add new arg, merge_exidx_entries.
2891 (Target_arm::fix_exidx_coverage): pass merge_exidx_entries to
2892 Arm_output_section::fix_exidx_coverage.
2893
ce97fa81
ST
28942010-04-18 Sriraman Tallam <tmsriram@google.com>
2895
2896 * icf.cc (get_section_contents): Check for preemptible functions.
2897 Ignore addend when appropriate.
2898 * symtab.cc (should_add_dynsym_entry): Add new parameter. Check for
2899 section folded.
2900 (add_from_relobj): Check for section folded.
2901 (set_dynsym_indexes): Fix call to should_add_dynsym_entry.
2902 * symtab.h (should_add_dynsym_entry): Add new parameter.
2903 * target-reloc.h (scan_relocs): Check for section folded.
2904 * x86_64.cc (Target_x86_64::Scan::possible_function_pointer_reloc):
2905 Check reloc types for function pointers in shared objects.
2906 * testsuite/Makefile.am (icf_virtual_function_folding_test): New test
2907 case.
2908 (icf_preemptible_functions_test): New test case.
2909 (icf_string_merge_test): New test case.
2910 * testsuite.Makefile.in: Regenerate.
2911 * testsuite/icf_safe_so_test.sh: Change to not fold foo_glob and
2912 bar_glob. Refactor code.
2913 * testsuite/icf_preemptible_functions_test.cc: New file.
2914 * testsuite/icf_preemptible_functions_test.sh: New file.
2915 * testsuite/icf_string_merge_test.cc: New file.
2916 * testsuite/icf_string_merge_test.sh: New file.
2917 * testsuite/icf_virtual_function_folding_test.cc: New file.
2918 * testsuite/icf_virtual_function_folding_test.sh: New file.
2919
04ceb17c
DK
29202010-04-14 Doug Kwan <dougkwan@google.com>
2921
2922 * arm.cc (Arm_output_section::fix_exidx_coverage): Mark object
2923 for local symbol recounting if we remove a section due to ICF.
2924 * gold.cc (queue_middle_gc_tasks): Create a dummy blocker if
2925 there are no regular objects in input.
2926
153e7da4
DK
29272010-04-13 Doug Kwan <dougkwan@google.com>
2928
2929 * arm.cc (Arm_input_section::set_final_data_size): Compute
2930 accurate final data size instead of using current data size.
2931
4dbd9faf
DK
29322010-04-09 Doug Kwan <dougkwan@google.com>
2933
2934 * layout.cc (Layout::choose_output_section): Handle script section
2935 types.
2936 (Layout::make_output_section_for_script): Add section type parameter.
2937 Handle script section types.
2938 * layout.h (Layout::make_output_section_for_script): Add section
2939 type parameter.
2940 * output.cc (Output_section::Output_section): Initialize data member
2941 is_noload_.
2942 (Output_section::do_reset_address_and_file_offset): Do not set address
2943 to 0 if section is a NOLOAD section.
2944 * output.h (Output_section::is_noload): New method.
2945 (Output_section::set_is_noload): Ditto.
2946 (Output_section::is_noload_): New data member.
2947 * script-c.h (Script_section_type): New enum type.
2948 (struct Parser_output_section_header): Add new file section_type.
2949 * script-sections.cc (Sections_element::output_section_name): Add
2950 parameter for returning script section type.
2951 (Output_section_definition::output_section_name): Ditto.
2952 (Output_section_definition::section_type)P; New method.
2953 (Output_section_definiton::script_section_type_name): Ditto.
2954 (Output_section_definition::script_section_type_): New data member.
2955 (Output_section_definition::Output_section_definition): Initialize
2956 data member Output_section_definition::script_section_type_.
2957 (Output_section_definition::create_sections): Pass script section type
2958 to Layout::make_output_section_for_script.
2959 (Output_section_definition::output_section_name): Return script
2960 section type to caller.
2961 (Output_section_definition::set_section_address): Do not advance
2962 dot value and load address if section type is NOLOAD. Set address
2963 of NOLOAD sections regardless of section flags.
2964 (Output_section_definition::print): Print section type if it is
2965 not SCRIPT_SECTION_TYPE_NONE.
2966 (Output_section_definition::section_type): New method.
2967 (Output_section_definition::script_section_type_name): Ditto.
2968 (Script_sections::output_section_name): Add new parameter
2969 PSECTION_TYPE for returning script section type. Pass it to
2970 section elements. Handle discard sections.
2971 (Sort_output_sections::operator()): Handle NOLOAD sections.
2972 * script-sections.h (Script_sections::Section_type): New enum type.
2973 (Script_sections::output_section_name): Add a new parameter for
2974 returning script section type.
2975 * script.cc (script_keyword_parsecodes): Add keywords COPY, DSECT,
2976 INFO and NOLOAD.
2977 * yyscript.y (union): Add new field SECTION_TYPE.
2978 (COPY, DSECT, INFO, NOLOAD): New tokens.
2979 (opt_address_and_section_type): Change type to output_section_header.
2980 (section_type): New non-terminal
2981 (section_header): Handle section type.
2253bfba 2982 (opt_address_and_section_type): Return section type value.
4dbd9faf 2983
721ea635
L
29842010-04-09 H.J. Lu <hongjiu.lu@intel.com>
2985
2986 * testsuite/plugin_common_test_1.c (foo): Add prototype.
2987 * testsuite/plugin_common_test_2.c (foo): Likewise.
2988
6bf924b0
DK
29892010-04-08 Doug Kwan <dougkwan@google.com>
2990
2991 * merge.cc (Output_merge_data::set_final_data_size): Handle empty
2992 Output_merge_data.
2993 * output.cc (Output_section::add_merge_input_section): Simplify
2994 code and return status of Output_merge_base::add_input_section.
e1df38aa 2995 Update merge section map only if Output_merge_base::add_input_section
6bf924b0
DK
2996 returns true.
2997
24af6f92
DK
29982010-04-07 Doug Kwan <dougkwan@google.com>
2999
3000 * arm.cc (Arm_relobj::scan_section_for_cortex_a8_erratum): Warn
3001 if section is marked as containing instructions but has no mapping
3002 symbols.
3003 (Arm_relobj::do_count_local_symbols): Call adjust_sym_shndx to get
3004 correct section index.
3005 (Arm_relobj::find_linked_text_section): Ditto.
3006
00698fc5
CC
30072010-04-07 Cary Coutant <ccoutant@google.com>
3008
3009 * archive.cc (include_member): Destroy Read_symbols_data object before
3010 releasing file.
3011 * object.cc (Read_symbols_data::~Read_symbols_data) New destructor.
3012 * object.h (Read_symbols_data::Read_symbols_data) New constructor.
3013 (Read_symbols_data::~Read_symbols_data) New destructor.
3014 (Section_relocs::Section_relocs) New constructor.
3015 (Section_relocs::~Section_relocs) New destructor.
3016 (Read_relocs_data::Read_relocs_data) New constructor.
3017 (Read_relocs_data::~Read_relocs_data) New destructor.
3018 * testsuite/binary_unittest.cc (Sized_binary_test): Set sd member
3019 pointers to NULL after deleting.
3020
7296d933
DK
30212010-04-07 Doug Kwan <dougkwan@google.com>
3022
3023 * arm.cc: Replace "endianity" with "endianness" in comments.
3024 (Arm_exidx_cantunwind): Ditto.
3025 (Arm_relobj::Arm_relobj): Initialize merge_flags_and_attribures.
3026 (Arm_relobj::merge_flags_and_attributes): New method.
3027 (Arm_relobj::merge_flags_and_attributes_): New data member.
3028 (Arm_exidx_cantunwind::do_fixed_endian_write): Fix formatting.
3029 (Arm_relobj::scan_sections_for_stubs): Ditto.
3030 (Arm_relobj::do_read_symbols): Check to see if we really want to
3031 merge processor-specific flags and attributes. Exit early if
3032 an object is empty except for section names and the undefined symbol.
3033 (Target_arm::do_finalize_sections): Move check for ELF format to
3034 Arm_relobj::do_read_symbols. Merge processor specific flags and
3035 attributes from a regular object only when we have determined that
3036 it is aapropriate. Do not create an .ARM.attributes section in
3037 output if there is no regular input object.
3038 (Target_arm::merge_processor_specific_flags): Check
3039 --warn-mismatch before printing any error.
3040 (Target_arm::merge_object_attributes): Ditto.
3041 * gold.cc (queue_middle_tasks): Handle the case in which there is
3042 no regular object in input.
3043 * options.cc (General_options::parse_EB): New method.
3044 (General_options::parse_EL): Same.
3045 (General_options::General_options): Initialize endianness_.
3046 * options.h (-EB, -EL, -no-pipeline-knowledge, -p, --warn-mismatch):
3047 New options.
3048 (General_options::Endianness): New enum.
3049 (General_options::endianness): New method.
3050 (General_options::endianness_): New data member.
3051 * parameters.cc (Parameters::set_options): Check target endianness.
3052 (Parameters::set_target_once): Ditto.
3053 (Parameters::check_target_endianness): New method.
3054 (parameters_force_valid_target): If either -EL or -EB is specified,
3055 use it to define endianness of default target.
3056 * parameters.h (Parameters::check_target_endianness): New method
3057 declaration.
3058 * target.h (class Target): Change "endianity" to "endianness"
3059 in comments.
3060
efc8d4f2
RW
30612010-04-07 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
3062
3063 * configure.ac (AM_INIT_AUTOMAKE): Add option no-dist.
3064 * configure: Regenerate.
3065 * Makefile.in: Regenerate.
3066 * testsuite/Makefile.in: Regenerate.
3067
be234d88
CC
30682010-04-06 Cary Coutant <ccoutant@google.com>
3069
3070 gcc PR lto/42757
3071 * plugin.cc (Pluginobj::get_symbol_resolution_info): Check for
3072 prevailing definitions of common symbols.
3073 * testsuite/plugin_test_6.sh: New test case.
3074 * testsuite/plugin_common_test_1.c: New test case.
3075 * testsuite/plugin_common_test_2.c: New test case.
3076 * testsuite/Makefile.am (plugin_test_6): New test case.
3077 * testsuite/Makefile.in: Regenerate.
3078
bd32c6bd
NC
30792010-04-06 Nick Clifton <nickc@redhat.com>
3080
3081 * po/vi.po: New Vietnamese translation.
3082
323c532f
DK
30832010-03-30 Doug Kwan <dougkwan@google.com>
3084
3085 * arm.cc (Target_arm::using_thumb_only): Handle v6-M
3086
4fcd97eb
DK
30872010-03-25 Doug Kwan <dougkwan@google.com>
3088
3089 * gold/arm.cc (Arm_exidx_fixup::update_offset_map): Rearrange code
3090 to avoid a conversion warning on a 32-bit host.
3091
4ebf39db
ILT
30922010-03-24 Ian Lance Taylor <iant@google.com>
3093
3094 * testsuite/script_test_3.t: Add a TLS segment.
3095 * testsuite/Makefile.am (check_PROGRAMS): Add
3096 tls_phdrs_script_test.
3097 (tls_phdrs_script_test_SOURCES): Define.
3098 (tls_phdrs_script_test_DEPENDENCIES): Define.
3099 (tls_phdrs_script_test_LDFLAGS): Define.
3100 (tls_phdrs_script_test_LDADD): Define.
3101 * testsuite/Makefile.in: Rebuild.
3102
4a599bdd
CC
31032010-03-23 Cary Coutant <ccoutant@google.com>
3104
3105 * fileread.cc (find_or_make_view): Fix comment.
3106
6c93b22c
ILT
31072010-03-23 Ian Lance Taylor <iant@google.com>
3108
3109 * script-sections.cc (class Orphan_section_placement): Define
3110 PLACE_TLS and PLACE_TLS_BSS.
3111 (Orphan_section_placement::Orphan_section_placement): Initialize
3112 new places.
3113 (Orphan_section_placement::find_place): Handle SHF_TLS sections.
3114 * testsuite/Makefile.am (check_PROGRAMS): Add tls_script_test.
3115 (tls_script_test_SOURCES): Define.
3116 (tls_script_test_DEPENDENCIES): Define.
3117 (tls_script_test_LDFLAGS): Define.
3118 (tls_script_test_LDADD): Define.
3119 * testsuite/Makefile.in: Rebuild.
3120
a2c7281b
DK
31212010-03-22 Doug Kwan <dougkwan@google.com>
3122
3123 * arm.cc (Arm_relocate_functions::abs8,
3124 Arm_relocate_functions::abs16): Use correct check for overflow
3125 specified in the ARM ELF specs.
3126 (Arm_relocate_functions): thumb_branch_common. Handle bit 1 of branch
3127 target of a BLX instruction specially.
3128 (Reloc_stub::stub_type_for_reloc): Ditto.
3129 (Relocate::relocate): Use symbolic names instead of numeric relocation
3130 codes to report error.
3131 (Target_arm::do_relox): Reduce default stub-group size for Cortex-A8
3132 workaround.
3133 * testsuite/Makefile.am (check_DATA): add thumb_blx_in_range.stdout,
3134 thumb_blx_out_of_range.stdout, thumb2_blx_in_range.stdout and
3135 thumb2_blx_out_of_range.stdout
3136 (thumb_bl_out_of_range, thumb_bl_out_of_range.o,
3137 thumb2_bl_out_of_range, thumb2_bl_out_of_range.o): Fix dependenices.
3138 (thumb_blx_in_range.stdout, thumb_blx_in_range, thumb_blx_in_range.o,
3139 thumb_blx_out_of_range.stdout, thumb_blx_out_of_range,
3140 thumb_blx_out_of_range.o, thumb2_blx_in_range.stdout,
3141 thumb2_blx_in_range, thumb2_blx_in_range.o,
3142 thumb2_blx_out_of_range.stdout, thumb2_blx_out_of_range,
3143 thumb2_blx_out_of_range.o): New rules.
3144 (MOSTLYCLEANFILES): Add thumb_blx_in_range, thumb_blx_out_of_range,
3145 thumb2_blx_in_range and thumb2_blx_out_of_range.
3146 * testsuite/Makefile.in: Regenerate.
3147 * arm_branch_in_range.sh: Add tests for THUMB BLX.
3148 * testsuite/thumb_blx_in_range.s: New file.
3149 * testsuite/thumb_blx_out_of_range.s: New file.
3150
b0193076
RÁE
31512010-03-22 Rafael Espindola <espindola@google.com>
3152
3153 * archive.cc (Should_include): Move to archive.h.
3154 (should_include_member): Make it a member of Archive.
3155 (Lib_group): New.
3156 (Add_lib_group_symbols): New.
3157 * archive.h: Include options.h.
3158 (Archive_member): Moved from Archive.
3159 (Should_include): Moved from archive.cc.
3160 (Lib_group): New.
3161 (Add_lib_group_symbols): New.
3162 * dynobj.cc (do_should_include_member): New.
3163 * dynobj.h (do_should_include_member): New.
3164 * gold.cc (queue_initial_tasks): Update call to queue.
3165 * main.cc (main): Print lib group stats.
3166 * object.cc (do_should_include_member): New.
3167 * object.h: Include archive.h.
3168 (Object::should_include_member): New.
3169 (Object::do_should_include_member): New.
3170 (Sized_relobj::do_should_include_member): New.
3171 * options.cc (General_options::parse_start_lib): New.
3172 (General_options::parse_end_lib): New.
3173 (Input_arguments::add_file): Handle lib groups.
3174 (Input_arguments::start_group): Check we are not in a lib.
3175 (Input_arguments::start_lib): New.
3176 (Input_arguments::end_lib): New.
3177 * options.h (General_options): Add start_lib and end_lib.
3178 (Input_argument::lib_): New.
3179 (Input_argument::lib): New.
3180 (Input_argument::is_lib): New.
3181 (Input_file_lib): New.
3182 (Input_arguments::in_lib_): New.
3183 (Input_arguments::in_lib): New.
3184 (Input_arguments::start_lib): New.
3185 (Input_arguments::end_lib_): New.
3186 * plugin.cc (Pluginobj::get_symbol_resolution_info): Mark symbols
3187 in unused members as preempted.
3188 (Sized_pluginobj::do_should_include_member): New.
3189 * plugin.h (Sized_pluginobj::do_should_include_member): New.
3190 * readsyms.cc (Read_symbols::locks): If we are just reading a member,
3191 return the blocker.
3192 (Read_symbols::do_whole_lib_group): New.
3193 (Read_symbols::do_lib_group): New.
3194 (Read_symbols::do_read_symbols): Handle lib groups.
3195 (Read_symbols::get_name): Handle lib groups.
3196 * readsyms.h (Read_symbols): Add an archive member pointer.
3197 (Read_symbols::do_whole_lib_group): New.
3198 (Read_symbols::do_lib_group): New.
3199 (Read_symbols::member_): New.
3200 * script.cc (read_input_script): Update call to queue_soon.
3201
d099120c
DK
32022010-03-19 Doug Kwan <dougkwan@google.com>
3203
3204 * arm.cc (Stub_table::Stub_table): Initialize new data members
3205 Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_.
3206 (Stub_table::add_reloc_stub): Assign stub offset and update
3207 Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_.
3208 (Stub_table::reloc_stubs_size_, Stub_table::reloc_stubs_addralign_):
3209 New data members.
3210 (Stub_table::update_data_size_and_addralign): Use
3211 Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_
3212 instead of going over all reloc stubs.
3213 (Stub_table::finalize_stubs): Do not assign reloc stub offsets.
3214 * stringpool.cc (Stringpool_template::Stringpool_template): Initialize
3215 Stringpool_template::offset_ to size of Stringpool_char.
3216 (Stringpool_template::new_key_offset): Remove code to initialize
3217 Stringpool_template::offset_.
3218 * stringpool.h (Stringpool_template::set_no_zero_null): Set
3219 Stringpool_template::offset_ to zero.
3220
1aa37384
DK
32212010-03-15 Doug Kwan <dougkwan@google.com>
3222
3223 * stringpool.cc (Stringpool_template::Stringpool_template): Initialize
3224 offset_.
3225 (Stringpool_template::new_key_offset): New method.
3226 (Stringpool_template::add_string): Assign offsets when adding new
3227 strings.
3228 (Stringpool_template::set_string_offsets): Do not set string offsets
3229 when not optimizing.
3230 * stringpool.h (Chunked_vector::Chunked_vector): Initialize data
3231 member size_.
3232 (Chunked_vector::clear): Clear size_.
3233 (Chunked_vector::reserve): Call reserve method of all Element_vectors.
3234 (Chunked_vector::size): Return size_.
3235 (Chunked_vector::push_back): Use size_ to find insert position.
e1df38aa 3236 (Chunked_vector::size_): New data member.
1aa37384
DK
3237 (Stringpool_template::set_no_zero_null): Assert string set is empty.
3238 (Stringpool_template::new_key_offset): New method declaration.
3239 (Stringpool_template::offset_): New data member.
3240
b672b057
RÁE
32412010-03-15 Rafael Espindola <espindola@google.com>
3242
3243 * readsyms.cc (Read_symbols::do_read_symbols): Update calls to
3244 Add_symbols' constructor.
3245 * readsyms.h (Add_symbols): Remove the input_group member.
3246
b6848d3c
ILT
32472010-03-10 Ian Lance Taylor <iant@google.com>
3248
3249 * reloc.cc (Sized_relobj::split_stack_adjust_reltype): Call the
3250 target to ask whether a reference to a symbol requires a stack
3251 split.
3252 * target.h (Target::is_call_to_non_split): New function.
3253 (Target::do_is_call_to_non_split): Declare virtual function.
3254 * target.cc: Include "symtab.h".
3255 (Target::do_is_call_to_non_split): New function.
3256 * i386.cc (Target_i386::do_is_call_to_non_split): New function.
3257
a2a5469e
CC
32582010-03-10 Cary Coutant <ccoutant@google.com>
3259
3260 * fileread.cc (File_read::~File_read): Don't delete whole_file_view_.
3261 (File_read::open[1]): Remove initial mapping of whole_file_view_.
3262 (File_read::open[2]): Add whole_file_view_ to list of views.
3263 (File_read::make_view): Remove test of whole_file_view_.
3264 (File_read::find_or_make_view): Create whole_file_view_ if
3265 necessary.
3266 (File_read::clear_views): Replace bool parameter with enum;
3267 adjust all callers. Don't delete views with permanent data;
3268 do delete cached views and views from archives if
3269 --no-keep-files-mapped is set. Set whole_file_view_ to NULL
3270 if clearing the corresponding view.
3271 * fileread.h (File_read::Clear_views_mode): New enum.
3272 (File_read::View::is_permanent_view): New method.
3273 (File_read::clear_views): Replace bool parameter
3274 with enum; adjust all callers.
3275 * options.h (General_options): Change keep_files_mapped option;
3276 add map_whole_files.
3277 * readsyms.cc (Add_symbols::run): Delete sd_ object before
3278 releasing the file.
3279 * reloc.cc (Scan_relocs::run): Delete rd_ object before releasing
3280 the file.
3281
8861f32b
DM
32822010-03-10 David S. Miller <davem@davemloft.net>
3283
3284 * sparc.cc (Target_sparc::Scan::local): Accept R_SPARC_WPLT30.
3285
d62d0f5f
ST
32862010-03-09 Sriraman Tallam <tmsriram@google.com>
3287
3288 * icf.cc (get_section_contents): Add '@' marker after processing the
3289 merge reloc.
3290
9177756d
DK
32912010-03-08 Doug Kwan <dougkwan@google.com>
3292
3293 * gold/arm.cc (Arm_exidx_fixup::update_offset_map): Fix build breakage
3294 due to a conversion warning.
3295 (Arm_relobj::update_output_local_symbol_count): Check for local
3296 symbol with unset output index.
3297
9e9e071b
ILT
32982010-03-05 Ian Lance Taylor <iant@google.com>
3299
3300 * options.h (class General_options): Add --spare-dynamic-tags.
3301 * output.cc (Output_data_dynamic::set_final_data_size): Implement
3302 --spare-dynamic-tags.
3303
a81ee015
ILT
33042010-03-05 Ian Lance Taylor <iant@google.com>
3305
3306 * incremental.cc: Include "libiberty.h".
3307
44ec90b9
RO
33082010-03-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
3309
3310 * dynobj.h (Verdef::Verdef): Add is_info arg, is_info member
3311 function, is_info_ member.
3312 * dynobj.cc (Verdef::write): Set VER_FLG_INFO if this->is_info_.
3313 (Versions::Versions): Update caller.
3314 (Versions::define_base_version): Likewise.
3315 (Versions::add_def): Likewise.
3316
0897ed3b
ST
33172010-03-03 Sriraman Tallam <tmsriram@google.com>
3318
3319 * i386.cc (Target_i386::can_check_for_function_pointers): New function.
3320 (Scan::possible_function_pointer_reloc): New function.
3321 (Scan::local_reloc_may_be_function_pointer): Change to call
3322 possible_function_pointer_reloc.
3323 (Scan::global_reloc_may_be_function_pointer): Ditto.
3324 * icf.h (Icf::check_section_for_function_pointers): Change to reject
3325 relocations in ".data.rel.ro._ZTV" section.
3326 * testsuite/icf_safe_so_test.sh: Change to pass i386.
3327 * testsuite/icf_safe_so_test.cc: Ditto.
3328 * testsuite/icf_safe_test.cc: Ditto.
3329 * testsuite/icf_safe_test.sh: Ditto.
3330
d3bbad62
ILT
33312010-03-03 Viktor Kutuzov <vkutuzov@accesssoftek.com>
3332 Ian Lance Taylor <iant@google.com>
3333
3334 * target-reloc.h (relocate_section): Check the symbol table index
3335 for -1U before setting the local symbol index.
3336 (scan_relocatable_relocs): If copying the relocation, record that
3337 the local symbol is required.
3338 * object.h (Symbol_value::is_output_symtab_index_set): New
3339 function.
3340 (Symbol_value::may_be_discarded_from_output_symtab): New
3341 function.
3342 (Symbol_value::has_output_symtab_entry): New function.
3343 (Symbol_value::needs_output_symtab_entry): Remove.
3344 (Symbol_value::output_symtab_index): Make sure the symbol index is
3345 set.
3346 (Symbol_value::set_output_symtab_index): Make sure the symbol
3347 index is not set. Make sure the new index is valid.
3348 (Symbol_value::set_must_have_output_symtab_entry): New function.
3349 (Symbol_value::has_output_dynsym_entry): New function.
3350 (Symbol_value::set_output_dynsym_index): Make sure the new index
3351 is valid.
3352 (Sized_relobj::set_must_have_output_symtab_entry): New function.
3353 * object.cc (Sized_relobj::do_count_local_symbols): Only discard a
3354 local symbol if permitted.
3355 (Sized_relobj::do_finalize_local_symbols): Call
3356 is_output_symtab_index_set rather than needs_output_symtab_entry.
3357 (Sized_relobj::write_local_symbols): Call has_output_symtab_entry
3358 rather than needs_output_symtab_entry. Call
3359 has_output_dynsym_entry rather than needs_output_dynsym_entry.
3360 * arm.cc (Arm_relobj::update_output_local_symbol_count): Call
3361 is_output_symtab_index_set rather than needs_output_symtab_entry.
3362 * testsuite/discard_locals_relocatable_test.c: New file.
3363 * testsuite/discard_locals_test.sh: Test -r.
3364 * testsuite/Makefile.am (check_DATA): Add
3365 discard_locals_relocatable_test1.syms,
3366 discard_local_relocatable_test2.syms.
3367 (MOSTLYCLEANFILES): Likewise. Also add
3368 discard_locals_relocatable_test1.lout and
3369 discard_locals_relocatable_test2.out.
3370 (discard_locals_relocatable_test1.syms): New target.
3371 (discard_locals_relocatable_test.o): New target.
3372 (discard_locals_relocatable_test1.out): New target.
3373 (discard_locals_relocatable_test2.syms): New target.
3374 (discard_locals_relocatable_test2.out): New target.
3375 (various): Add missing ../ld-new dependencies.
3376 * testsuite/Makefile.in: Rebuild.
3377
7e8ccf26
NC
33782010-03-03 Nick Clifton <nickc@redhat.com>
3379
3380 * po/fi.po: New Finnish translation.
3381
2a0ff005
DK
33822010-03-01 Doug Kwan <dougkwan@google.com>
3383
3384 * layout.cc (Layout::Layout): Force section types of .init_array*,
3385 .preinit_array* and .fini_array* sections.
3386 * output.cc (Output_section::Input_section_sort_entry::has_priority):
3387 Fix check of return value of std::string::find.().
3388 (Output_section::Input_section_sort_compare::operator()): Remove
3389 comment about .init_array.
3390 (Output_section::Input_section_sort_init_fini_compare::operator()):
3391 New method.
3392 (Output_section::sort_attached_input_sections): Handle .init_array
3393 and .fini_array specially.
3394 * output.h (Output_section::Inut_section_sort_compare): Update
3395 comment.
3396 (Output_section::Input_section_sort_init_fini_compare): New struct.
3397
c3e4ae29
DK
33982010-02-26 Doug Kwan <dougkwan@google.com>
3399
3400 * arm.cc (Target_arm::Relocate::reloc_is_non_pic): Treat
3401 R_ARM_PREL31 and R_ARM_SBREL31 as position independent.
3402 * testsuite/debug_msg.sh: Avoid matching source line number for
3403 use of global variable undef_int.
3404
2fd9ae7a
DK
34052010-02-26 Doug Kwan <dougkwan@google.com>
3406
3407 * arm.cc (Target_arm::scan_reloc_for_stub): Move code handling
3408 R_ARM_V4BX to Target_arm::scan_reloc_section_for_stubs.
3409 (Target_arm::scan_reloc_section_for_stubs): Instead of calling
3410 scan_reloc_for_stub, do all processing of R_ARM_V4BX here.
3411 * options.cc (General_options::General_options): Initialize member
3412 fix_v4bx_.
3413 * testsuite/Makefile.am (check_SCRIPTS): Add arm_fix_v4bx.sh
3414 (check_DATA): Add arm_fix_v4bx.stdout, arm_fix_v4bx_interworking.stdout
3415 and rm_no_fix_v4bx.stdout
3416 (arm_fix_v4bx.stdout, arm_fix_v4bx, arm_fix_v4bx.o,
3417 arm_fix_v4bx_interworking.stdout, arm_fix_v4bx_interworking,
3418 arm_no_fix_v4bx.stdout, arm_no_fix_v4bx): New make rules.
3419 (MOSTLYCLEANFILES): Add arm_fix_v4bx, arm_fix_v4bx_interworking
3420 and arm_no_fix_v4bx.
3421 * Makefile.in: Regenerate.
3422 * testsuite/arm_fix_v4bx.s: New file.
3423 * testsuite/arm_fix_v4bx.sh: Ditto.
3424
67ec7d0b
DK
34252010-02-24 Doug Kwan <dougkwan@google.com>
3426
3427 * arm.cc (Target_arm::got_section): Make the .got section the first
3428 non RELRO section in the data segment.
3429 * testsuite/script_test_5.sh: Fix match patterns to avoid matching
3430 suffixes of section names.
3431
10165461
DK
34322010-02-24 Doug Kwan <dougkwan@google.com>
3433
3434 * arm.cc (Target_arm::do_finalize_sections): Skip processor specific
3435 flags and attributes merging if an input file is a binary file.
3436 * fileread.cc (Input_file::open): Record format of original file.
3437 * fileread.h (Input_file::Format): New enum type.
3438 (Input_file::Input_file): Initialize data member format_.
3439 (Input_file::format): New method definition.
3440 (Input_file::format_):: New data member.
3441
4a54abbb
DK
34422010-02-24 Doug Kwan <dougkwan@google.com>
3443
3444 * arm.cc (Arm_output_data_got): New class.
3445 (ARM_TCB_SIZE): New constant
3446 (Target_arm): Use Arm_output_data_got instead of Output_data_got.
3447 (Arm_output_section::fix_exidx_coverage): Add a parameter for layout.
3448 If user uses a script with a SECTIONS clause, issue only a warning
3449 for a misplaced EXIDX input section. Otherwise, issue an error.
3450 (Arm_relobj::do_gc_process_relocs): Exit early if we are not doing
3451 garbage collection.
3452 (Target_arm::got_mode_index_entry): Handle static linking.
3453 (Target_arm::Scan::local): Ditto.
3454 (Target_arm::Scan::global): Ditto.
3455 (Target_arm::Relocate::relocate_tls): Handle static linking. Fix
3456 all incorrectly implemented relocations.
e1df38aa 3457 (Target_arm::fix_exidx_coverage): Pass layout to
4a54abbb
DK
3458 Arm_output_section::fix_exidx_coverage.
3459 * layout.cc (Layout::section_name_mapping): Remove trailing dots
3460 from ".ARM.exidx." and ".ARM.extab.".
3461
ca419a6f
ILT
34622010-02-23 Viktor Kutuzov <vkutuzov@accesssoftek.com>
3463
3464 * arm.cc (Target_arm::do_finalize_sections): Create attribute
3465 section if it does not already exist.
3466 * attributes.cc (Attributes_section_data::Attributes_section_data):
3467 Don't crash if size is zero.
3468
135b9c78
ILT
34692010-02-23 Viktor Kutuzov <vkutuzov@accesssoftek.com>
3470 Ian Lance Taylor <iant@google.com>
3471
3472 * gold.cc (queue_middle_tasks): If no input files were opened,
3473 exit.
3474 * workqueue.h (Task_function::Task_function): Assert that there is
3475 a blocker.
3476
bb0bfe4f
DK
34772010-02-22 Doug Kwan <dougkwan@google.com>
3478
3479 * gold-threads.h (Once::~Once): Explicitly define virtual destructor.
3480 * icf.cc (get_section_contents): Cast snprintf arguments to long long
3481 types to avoid warnings due to different uint64_t implementations
3482 on different hosts.
3483
2a2b6d42
DK
34842010-02-21 Doug Kwan <dougkwan@google.com>
3485
3486 * arm.cc (Arm_relocate_functions::arm_branch_common): Fix bug in
3487 handling of the maximum backward branch offset.
3488 (Arm_relocate_functions::thumb_branch_common): Ditto.
3489 * testsuite/Makefile.am (check_SCRIPTS): Add arm_branch_in_range.sh.
3490 (check_DATA): Add arm_bl_in_range.stdout, arm_bl_out_of_range.stdout
e1df38aa 3491 thumb_bl_in_range.stdout, thumb_bl_out_of_range.stdout,
2a2b6d42
DK
3492 thumb2_bl_in_range.stdout and thumb2_bl_out_of_range.stdout.
3493 (arm_bl_in_range.stdout, arm_bl_in_range, arm_bl_in_range.o,
3494 arm_bl_out_of_range.stdout, arm_bl_out_of_range,
3495 arm_bl_out_of_range.o, thumb_bl_in_range.stdout, thumb_bl_in_range,
3496 thumb_bl_in_range.o, thumb_bl_out_of_range.stdout,
3497 thumb_bl_out_of_range thumb_bl_out_of_range.o,
3498 thumb2_bl_in_range.stdout, thumb2_bl_in_range, thumb2_bl_in_range.o
3499 thumb2_bl_out_of_range.stdout, thumb2_bl_out_of_range,
3500 thumb2_bl_out_of_range.o): New rules.
3501 (MOSTLYCLEANFILES): Add arm_bl_in_range, arm_bl_out_of_range,
3502 thumb_bl_in_range, thumb_bl_out_of_range, thumb2_bl_in_range and
3503 thumb2_bl_out_of_range
3504 * testsuite/Makefile.in: Regenerate.
3505 * testsuite/arm_bl_in_range.s: New file.
3506 * testsuite/arm_bl_out_of_range.s: Ditto.
3507 * testsuite/arm_branch_in_range.sh: Ditto.
3508 * testsuite/arm_branch_range.t: Ditto.
3509 * testsuite/thumb2_branch_range.t: Ditto.
3510 * testsuite/thumb_bl_in_range.s: Ditto.
3511 * testsuite/thumb_bl_out_of_range.s: Ditto.
3512 * testsuite/thumb_branch_range.t: Ditto.
3513
b487ad64
ST
35142010-02-20 Sriraman Tallam <tmsriram@google.com>
3515
3516 * gc.h (gc_process_relocs): Change vectors to point to the new list.
3517 Add reloc offset information.
3518 * icf.cc (get_section_contents): Change iterators to point to the new
3519 vectors. Add reloc offset information to the contents.
3520 * icf.h (Icf::Sections_reachable_info): New typedef.
3521 (Icf::Sections_reachable_list): New typedef.
3522 (Icf::Offset_info): New typedef.
3523 (Icf::Reloc_info): New struct typedef.
3524 (Icf::Reloc_info_list): New typedef.
3525 (Icf::symbol_reloc_list): Delete method.
3526 (Icf::addend_reloc_list): Delete method.
3527 (Icf::section_reloc_list): Delete method.
3528 (Icf::reloc_info_list): New method.
3529 (Icf::reloc_info_list_): New member.
3530
f96accdf
DK
35312010-02-19 Doug Kwan <dougkwan@google.com>
3532
3533 * arm-reloc.def: Mark R_ARM_TLS_GD32, R_ARM_TLS_LDM32,
3534 R_ARM_TLS_LDO32, R_ARM_TLS_IE32 and R_ARM_TLS_LE32 are implemented.
3535 * arm.cc (Arm_relocation_functions): New forward declaration.
3536 (Target_arm::Target_arm): Initialize new data members
3537 got_mod_index_offset_ and tls_base_symbol_defined_.
3538 (Target_arm::Relocate::relocate_tls): New method.
3539 (Target_arm::optimize_tls_reloc, Target_arm::define_tls_base_symbol,
3540 Target_arm::got_mod_index_entry, Target_arm::rel_tls_desc_section):
3541 New methods.
3542 (Target_arm::Got_type): Add GOT_TYPE_TLS_NOFFSET, GOT_TYPE_OFFSET,
3543 GOT_TYPE_TLS_PAIR and GOT_TYPE_TLS_DESC.
3544 (Target_arm::got_mod_index_offset_,
3545 Target_arm::tls_base_symbol_defined_): New data members.
3546 (Target_arm::Scan::local, Target::Scan::global,
3547 Target_arm::Relocate::relocate): Handle 32-bit initial TLS
3548 relocations.
3549
c8761b9a
DK
35502010-02-18 Doug Kwan <dougkwan@google.com>
3551
3552 * arm.cc (Arm_relobj::find_linked_text_section): New method.
3553 (Arm_relobj::make_exidx_input_section): Pass section index of linked
3554 text section as a parameter becuase some broken tools may not set
3555 the link in section header.
3556 (Target_arm::has_got_section): New method.
3557 (Target_arm::scan_section_for_cortex_a8_stubs): Treat an input section
3558 without any mapping symbol as data only. Remove warning.
3559 (Arm_relobj::do_read_synbols): If an EXIDX input section has no
3560 link in its section header, try to discover the link by inspecting the
3561 REL31 relocation at the beginning of the section.
3562 (Target_arm::Scan::check_non_pic): Report name of offending relocation
3563 in error message.
3564 (Target_arm::Scan::global): Treat any reference to the symbol
3565 _GLOBAL_OFFSET_TABLE_ as a GOT access.
3566
21bb3914
ST
35672010-02-12 Sriraman Tallam <tmsriram@google.com>
3568
3569 * arm.cc (Scan::local_reloc_may_be_function_pointer): New function.
3570 (Scan::global_reloc_may_be_function_pointer): New function.
3571 * sparc.cc (Scan::local_reloc_may_be_function_pointer): New function.
3572 (Scan::global_reloc_may_be_function_pointer): New function.
3573 * powerpc.cc (Scan::local_reloc_may_be_function_pointer): New function.
3574 (Scan::global_reloc_may_be_function_pointer): New function.
3575 * i386.cc (Scan::local_reloc_may_be_function_pointer): New function.
3576 (Scan::global_reloc_may_be_function_pointer): New function.
3577 * x86_64.cc (Scan::local_reloc_may_be_function_pointer): New function.
3578 (Scan::global_reloc_may_be_function_pointer): New function.
3579 (Scan::possible_function_pointer_reloc): New function.
3580 (Target_x86_64::can_check_for_function_pointers): New function.
3581 * gc.h (gc_process_relocs): Scan relocation types to determine if
3582 function pointers were taken for targets that support it.
3583 * icf.cc (Icf::find_identical_sections): Include functions for
3584 folding in safe ICF whose pointer is not taken.
3585 * icf.h (Secn_fptr_taken_set): New typedef.
3586 (fptr_section_id_): New member.
3587 (section_has_function_pointers): New function.
3588 (set_section_has_function_pointers): New function.
3589 (check_section_for_function_pointers): New function.
3590 * options.h: Fix comment for safe ICF option.
3591 * target.h (can_check_for_function_pointers): New function.
3592 * testsuite/Makefile.am: Add icf_safe_so_test test case.
3593 Modify icf_safe_test for X86-64.
3594 * testsuite/Makefile.in: Regenerate.
3595 * testsuite/icf_safe_so_test.cc: New file.
3596 * testsuite/icf_safe_so_test.sh: New file.
3597 * testsuite/icf_safe_test.cc (kept_func_3): New function.
3598 (main): Change to take pointer to function kept_func_3.
3599 * testsuite/icf_safe_test.sh (arch_specific_safe_fold): Check if safe
3600 folding is done correctly for X86-64.
3601
0da6fa6c
DM
36022010-02-12 David S. Miller <davem@davemloft.net>
3603
3604 * output.h (Output_reloc<SHT_REL>::Output_reloc): Add
3605 is_symbolless parameter.
3606 (Output_reloc<SHT_REL>::is_symbolless): New.
3607 (Output_reloc<SHT_REL>::is_symbolless_): New.
3608 (Output_reloc<SHT_REL>::type_): Decrease to 29 bits.
3609 (Output_reloc<SHT_RELA>::Output_reloc): Add is_symbolless parameter.
3610 (Output_reloc<SHT_RELA>::is_symbolless): New.
3611 (Output_data_reloc::add_global): Handle is_symbolless.
3612 (Output_data_reloc::add_global_relative): Likewise.
3613 (Output_data_reloc::add_local): Likewise.
3614 (Output_data_reloc::add_local_relative): Likewise.
3615 (Output_data_reloc::add_symbolless_global_addend): New.
3616 (Output_data_reloc::add_symbolless_local_addend): New.
3617 * output.cc (Output_reloc<SHT_REL>::Output_reloc): Handle
3618 is_symbolless.
3619 (Output_reloc::set_needs_dynsym_index): Test ->is_symbolless_
3620 instead of ->is_relative_
3621 (Output_reloc::write): Likewise.
3622 (Output_reloc::get_symbol_index): Return 0 when ->is_symbolless_
3623 (Output_reloc::write_rel): Simplify.
3624
3625 * sparc.cc (Target_sparc::Scan::local): Use
3626 ->add_symbolless_local_addend as needed.
3627 (Target_sparc::Scan::global): Use ->add_symbolless_global_addend as
3628 needed. Also, emit appropriate unaligned vs. aligned dynamic reloc
3629 based upon relocation offset.
3630
e4782e83
DK
36312010-02-11 Doug Kwan <dougkwan@google.com>
3632
3633 * arm.cc (Target_arm::Scan::local): Fix bugs in relocation handling.
3634 (Target_arm::Scan::global): Ditto. Also remove a comment before the
3635 beginning of function.
3636 (Target_arm::Relocate::relocate): Remove error messages for MOVW_ABS
3637 and MOVT_ABS relocations. Those are non issued in scanning. Fix
3638 parameter is_32bit in calls to should_apply_static_reloc.
3639 * testsuite/Makefile.am (check_SCRIPTS): Add arm_abs_global.sh.
3640 (check_DATA): Add arm_abs_global.stdout.
3641 (arm_abs_lib.o, libarm_abs.so, arm_abs_global.o, arm_abs_global,
3642 arm_abs_global.stdout): New rules.
3643 (MOSTLLYCLEANFILES): Add arm_abs_global
3644 * Makefile.in: Regenerate.
3645 * testsuite/arm_abs_global.s: New file.
3646 * testsuite/arm_abs_global.sh: Ditto.
3647 * testsuite/arm_abs_lib.s: Ditto.
3648
93ceb764
ILT
36492010-02-11 Ian Lance Taylor <iant@google.com>
3650
3651 * gold.cc (queue_middle_gc_tasks): Use a separate blocker for each
3652 Read_relocs task.
3653 (queue_middle_tasks): Likewise, and also for Scan_relocs. Run
3654 Allocate_commons_task first.
3655 * reloc.cc (Read_relocs::run): Pass next_blocker_ down to next
3656 task, rather than symtab_lock_.
3657 (Gc_process_relocs::~Gc_process_relocs): New function.
3658 (Gc_process_relocs::is_runnable): Check this_blocker_.
3659 (Gc_process_relocs::locks): Use next_blocker_ rather than
3660 blocker_.
3661 (Scan_relocs::~Scan_relocs): New function.
3662 (Scan_relocs::is_runnable): Check this_blocker_ rather than
3663 symtab_lock_.
3664 (Scan_relocs::locks): Drop symtab_lock_ and blocker_. Add
3665 next_blocker_.
3666 * reloc.h (class Read_relocs): Drop symtab_lock_ and blocker_
3667 fields. Add this_blocker_ and next_blocker_ fields. Adjust
3668 constructor accordingly.
3669 (class Gc_process_relocs): Likewise.
3670 (class Scan_relocs): Likewise.
3671 * common.h (class Allocate_commons_task): Remove symtab_lock_
3672 field, and corresponding constructor parameter.
3673 * common.cc (Allocate_commons_tasK::is_runnable): Remove use of
3674 symtab_lock_.
3675 (Allocate_commons_task::locks): Likewise.
3676
114dfbe1
ILT
36772010-02-11 Ian Lance Taylor <iant@google.com>
3678
3679 * gold-threads.h (class Once): Define.
3680 (class Initialize_lock): Rewrite as child of Once.
3681 * gold-threads.cc (class Once_initialize): Define.
3682 (once_pointer_control): New static variable.
3683 (once_pointer, once_arg): New static variables.
3684 (c_run_once): New static function.
3685 (Once::Once, Once::run_once, Once::internal_run): New functions.
3686 (class Initialize_lock_once): Remove.
3687 (initialize_lock_control): Remove.
3688 (initialize_lock_pointer): Remove.
3689 (initialize_lock_once): Remove.
3690 (Initialize_lock::Initialize_lock): Move to gold-threads.h.
3691 (Initialize_lock::initialize): Rewrite.
3692 (Initialize_lock::do_run_once): New function.
3693 * archive.cc (Archive::interpret_header): Only clear name if it is
3694 not already empty.
3695 * fileread.cc: Include "gold-threads.h"
3696 (file_counts_lock): New static variable.
3697 (file_counts_initialize_lock): Likewise.
3698 (File_read::release): Only increment counts when using --stats.
3699 Use a lock around the increment.
3700 * parameters.cc (class Set_parameters_target_once): Define.
3701 (set_parameters_target_once): New static variable.
3702 (Parameters::Parameters): Move here from parameters.h.
3703 (Parameters::set_target): Rewrite.
3704 (Parameters::set_target_once): New function.
3705 (Parameters::clear_target): Move here and rewrite.
3706 * parameters.h (class Parameters): Update declarations. Add
3707 set_parameters_target_once_ field.
3708 (Parameters::Parameters): Move to parameters.cc.
3709 (Parameters::clear_target): Likewise.
3710 * readsyms.cc (Read_symbols::do_group): Create a Start_group
3711 task.
3712 (Start_group::~Start_group): New function.
3713 (Start_group::is_runnable): New function.
3714 (Start_group::locks, Start_group::run): New functions.
3715 (Finish_group::run): Change saw_undefined to size_t.
3716 * readsyms.h (class Start_group): Define.
3717 (class Finish_group): Change saw_undefined_ field to size_t.
3718 (Finish_group::Finish_group): Remove saw_undefined and
3719 this_blocker parameters. Change all callers.
3720 (Finish_group::set_saw_undefined): New function.
3721 (Finish_group::set_blocker): New function.
3722 * symtab.h (class Symbol_table): Change saw_undefined to return
3723 size_t. Change saw_undefined_ field to size_t.
3724 * target-select.cc (Set_target_once::do_run_once): New function.
3725 (Target_selector::Target_selector): Initialize set_target_once_
3726 field. Don't initialize lock_ and initialize_lock_ fields.
3727 (Target_selector::instantiate_target): Rewrite.
3728 (Target_selector::set_target): New function.
3729 * target-select.h (class Set_target_once): Define.
3730 (class Target_selector): Update declarations. Make
3731 Set_target_once a friend. Remove lock_ and initialize_lock_
3732 fields. Add set_target_once_ field.
3733
fa17a3f4
ILT
37342010-02-10 Ian Lance Taylor <iant@google.com>
3735
3736 * dirsearch.cc (Dirsearch::initialize): Add all blockers before
3737 queueing any tasks.
3738 * gold.cc (queue_middle_gc_tasks): Likewise. Fix final blocker.
3739 (queue_middle_tasks): Add all blockers before queueing any tasks.
3740 (queue_final_tasks): Likewise.
3741 * token.h (Task_token::add_blockers): New function.
3742 * object.h (Input_objects::number_of_relobjs): New function.
3743
c7177d31
ILT
37442010-02-10 Ian Lance Taylor <iant@google.com>
3745
5de0e392
ILT
3746 * i386.cc (Relocate::relocate_tls): A local symbol is final if not
3747 shared, not if not position independent.
3748 * x86_64.cc (Relocate::relocate_tls): Likewise.
3749 * testsuite/Makefile.am (check_PROGRAMS): Add tls_pie_pic_test.
3750 (tls_pie_pic_test): New target.
3751 * testsuite/Makefile.in: Rebuild.
3752
c7177d31
ILT
3753 * testsuite/Makefile.am (check_PROGRAMS): Add tls_pie_test.
3754 (tls_test_main_pie.o, tls_test_pie.o): New targets.
3755 (tls_test_file2_pie.o, tls_test_c_pie.o, tls_pie_test): Likewise.
3756 * testsuite/Makefile.in: Rebuild.
3757
684b268a
DM
37582010-02-09 David S. Miller <davem@davemloft.net>
3759
3760 * sparc.cc (Target_sparc::Scan::local): Do not emit relocs other than
3761 R_SPARC_RELATIVE using ->add_local_relative().
3762 (Target_sparc::Scan::global): Likewise for ->add_global_relative().
3763
612a8d3d
DM
3764 * output.h (Output_data_dynamic::add_section_size): New method
3765 that takes two Output_data objects.
3766 (Output_data_dynamic::Dynamic_entry): Create storage for secondary
3767 entry param. Handle it in initializers.
3768 * output.cc (Output_data_dynamic::Dynamic_entry::write): For
3769 DYNAMIC_SECTION_SIZE, add in second object size if non-NULL.
3770 * layout.h (Layout::add_target_dynamic_tags): Add dynrel_includes_plt
3771 arg.
3772 * layout.cc (Layout::add_target_dynamic_tags): If dynrel_includes_plt,
3773 and .rela.plt exists, set DT_REL{,A}SZ to sum of .rela.dyn and .rela.plt
3774 * arm.cc (Target_arm::do_finalize_sections): Update to pass false
3775 for dynrel_includes_plt.
3776 * i386.cc (Target_i386::do_finalize_sections): Likewise.
3777 * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
3778 * sparc.cc (Target_sparc::make_plt_entry): Force .rela.dyn to be output
3779 before .rela.plt
3780 (Target_sparc::do_finalize_sections): Update to pass true for
3781 dynrel_includes_plt.
3782 * powerpc.cc (Target_powerpc::make_plt_entry): Force .rela.dyn to be
3783 output before .rela.plt
3784 (Target_powerpc::do_finalize_sections): Update to pass true for
3785 dynrel_includes_plt when 32-bit.
3786
cb1be87e
DK
37872010-02-08 Doug Kwan <dougkwan@google.com>
3788
3789 * arm.cc (Arm_relobj::simple_input_section_output_address): New
3790 method.
3791 (Arm_relobj::section_needs_cortex_a8_stub_scanning,
3792 Arm_relobj::scan_section_for_cortex_a8_stubs,
3793 Arm_relobj::do_relocation_section): Instead of calling
3794 Output_section::output_address, use faster
3795 Arm_relobj::simple_input_section_output_address.
3796
705b5121
DM
37972010-02-08 David S. Miller <davem@davemloft.net>
3798
3799 * sparc.cc (Target_sparc::Relocate::relocate): If relocation offset is
3800 unaligned for R_SPARC_16, R_SPARC_32, or R_SPARC_64, use the unaligned
3801 relocation helper function.
3802
024c4466
DM
3803 * sparc.cc (Target_sparc::Scan::local): Handle R_SPARC_GOTDATA_OP*
3804 just like R_SPARC_GOT{10,13,22}.
3805 (Target_sparc::Scan::local): Likewise.
3806 (Target_sparc::Relocate:relocate): Likewise.
3807
9109c078
ILT
38082010-02-06 Ian Lance Taylor <iant@google.com>
3809
3810 * configure.ac: Rewrite targetobjs duplicate removal code to use
3811 only shell constructs.
3812 * configure: Rebuild.
3813
cf846138
DK
38142010-02-05 Doug Kwan <dougkwan@google.com>
3815
3816 PR 11247
3817 * arm.cc (Arm_relobj::section_is_scannable): New method.
3818 (Arm_relobj::section_needs_reloc_stub_scanning): Use it.
3819 (Arm_relobj::section_needs_cortex_a8_stub_scanning): Same.
3820
6cfaf60b
DK
38212010-02-04 Doug Kwan <dougkwan@google.com>
3822
3823 PR 11247
3824 * arm-reloc-property.cc (cstdio): Include.
3825 * configure.ac (targetobjs): Remove duplicates.
3826 * configure: Regenerate.
3827 * resolve.cc (Symbol_table::resolve): Explicit instantiate both
3828 big and little endian version for a given address size.
3829
5c57f1be
DK
38302010-02-03 Doug Kwan <dougkwan@google.com>
3831
3832 * arm-reloc-property.cc
3833 (Arm_reloc_property_table::reloc_name_in_error_message): New method
3834 definition.
3835 * arm-reloc-property.h
3836 (Arm_reloc_property_table::get_implemented_static_reloc_property):
3837 New method definition.
3838 (Arm_reloc_property_table::reloc_name_in_error_message): New method
3839 declaration.
3840 * arm-reloc.def (THM_MOVT_ABS, THM_MOVT_PREL, THM_MOVT_BREL): Change
3841 overflow to N.
3842 (GOT_PREL): Change implemented to Y.
3843 * arm.cc (Target_arm::reloc_uses_thumb_bit): Remove method.
3844 (Target_arm::Relocate::reloc_needs_sym_origin): Remove method.
3845 (Arm_relocate_functions::movw_abs_nc): Remove method.
3846 (Arm_relocate_functions::movt_abs): Ditto.
3847 (Arm_relocate_functions::thm_movw_abs_nc): Ditto.
3848 (Arm_relocate_functions::thm_movt_abs): Ditto.
3849 (Arm_relocate_functions::movw_rel_nc): Ditto.
3850 (Arm_relocate_functions::movw_rel): Ditto.
3851 (Arm_relocate_functions::movt_rel): Ditto.
3852 (Arm_relocate_functions:thm_movw_rel_nc): Ditto.
3853 (Arm_relocate_functions:thm_movw_rel): Ditto.
3854 (Arm_relocate_functions:thm_movt_rel): Ditto.
3855 (Arm_relocate_functions::movw, Arm_relocate_functions::movt,
3856 (Arm_relocate_functions::thm_movw, Arm_relocate_functions::thm_movt):
3857 New method definitions.
3858 (Arm_relocation_functions::arm_grp_alu): Add assertion for group index.
3859 (Arm_relocation_functions::arm_grp_ldr): Ditto.
3860 (Arm_relocation_functions::arm_grp_ldrs): Ditto.
3861 (Arm_relocation_functions::arm_grp_ldc): Ditto.
3862 (Target_arm::Relocate::relocate): Check for non-static or
3863 unimplemented relocation code and exit early. Change calls to
3864 Target_arm::reloc_uses_thumb_bit and
3865 Target_arm::Reloc::reloc_needs_sym_origin to use relocation property
3866 instead. Refactor code to handle similar relocations to increase
3867 code sharing. Remove check for unsupported relocation code in switch
3868 statement.
3869 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Use
3870 relocation property table to find out size. Change error message to
3871 print out the name of a relocation code instead of the numeric value.
3872 (Target_arm::scan_reloc_for_stub): Use relocation property table
3873 instead of calling Target_arm::reloc_uses_thumb_bit().
3874
218c5831
DK
38752010-02-02 Doug Kwan <dougkwan@google.com>
3876
3877 * arm.cc (Target_arm::relocate_section): Do view adjustment for all
3878 types of relaxed input section.
3879
0d31c79d
DK
38802010-02-02 Doug Kwan <dougkwan@google.com>
3881
3882 * Makefile.am (HFILES): Add arm-reloc-property.h.
3883 (DEFFILES): New.
3884 (TARGETSOURCES): Add arm-reloc-property.cc
3885 (ALL_TARGETOBJS): Add arm-reloc-property.$(OBJEXT)
3886 (libgold_a_SOURCES): $(DEFFILES)
3887 * Makefile.in: Regenerate.
3888 * arm-reloc-property.cc: New file.
3889 * arm-reloc-property.h: New file.
3890 * arm-reloc.def: New file.
3891 * arm.cc: Update comments.
3892 (arm-reloc-property.h): New included header.
3893 (arm_reloc_property_table): New global variable.
3894 (Target_arm::do_select_as_default_target): New method definition.
3895 * configure.tgt (armeb*-*-*,armbe*-*-*,arm*-*-*): Add
3896 arm-reloc-property to targ_extra_obj.
3897 * parameters.cc (set_parameters_target): Call
3898 Target::select_as_default_target().
3899 * target.h (Target::select_as_default_target): New method definition.
3900 (Target::do_select_as_default_target): Same.
3901
546c7457
DK
39022010-02-01 Doug Kwan <dougkwan@google.com>
3903
3904 * arm.cc (Arm_exidx_fixup::Arm_exidx_fixup): Initialize
3905 first_output_text_section_.
3906 (Arm_exidx_fixup::first_output_text_section): New method definition.
3907 (Arm_exidx_fixup::first_output_text_section_): New data member.
3908 (Arm_exidx_fixup::process_exidx_section): Record the first text
3909 output section seen.
3910 (Arm_output_section::fix_exidx_coverage): Set correct linked section
3911 and entsize in output section header.
3912
11b861d5
DK
39132010-01-29 Viktor Kutuzov <vkutuzov@accesssoftek.com>
3914
3915 * gold/arm.cc: Added support for the ARM relocations: R_ARM_THM_PC8,
3916 R_ARM_THM_PC12, R_ARM_THM_ALU_PREL_11_0.
3917 (Arm_relocate_functions::thm_alu11): New Method.
3918 (Arm_relocate_functions::thm_pc8): New Method.
3919 (Arm_relocate_functions::thm_pc12): New Method.
3920 (Target_arm::Scan::local): Handle the relocations.
3921 (Target_arm::Scan::global): Likewise.
3922 (Target_arm::Relocate::relocate): Likewise.
3923 (Target_arm:Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
3924
c9a2c125
DK
39252010-01-29 Doug Kwan <dougkwan@google.com>
3926
3927 * arm.cc (Target_arm::Scan::global): General PLTs for the same set
3928 of relocation types as ld.
3929
1521477a
DK
39302010-01-29 Doug Kwan <dougkwan@google.com>
3931
3932 * arm.cc (Arm_relocate_functions::arm_branch_common) Change visibility
3933 to public.
3934 (Arm_relocate_functions::thumb_branch_common): Ditto.
3935 (Arm_relocate_functions::thm_call, Arm_relocate_functions::thm_jump24,
3936 Arm_relocate_functions::thm_xpc22, Arm_relocate_functions::plt32,
3937 Arm_relocate_functions::xpc25, Arm_relocate_functions::call,
3938 Arm_relocate_functions::jump24): Remove.
3939 (Target_arm::Relocate::relocate): Adjust code to call
3940 Arm_relocation_functions::arm_branch_common and
3941 Arm_relocation_functions::thumb_branch_common instead of their removed
e1df38aa 3942 wrappers. Merge switch-cases together to reduce source code size.
1521477a 3943
e7eca48c
DK
39442010-01-29 Doug Kwan <dougkwan@google.com>
3945
3946 * arm.cc (Arm_relobj::Arm_relobj): Initialize new data member
3947 output_local_symbol_count_needs_update_.
3948 (Arm_relobj::output_local_symbol_count_needs_update,
3949 Arm_relobj::set_output_local_symbol_count_needs_update,
3950 Arm_relobj::update_output_local_symbol_count): New methods.
3951 (Arm_relobj::output_local_symbol_count_needs_update_): New data
3952 member.
3953 (Arm_exidx_cantunwind::do_fixed_endian_write): Write address
3954 of pointed function as in a R_ARM_PREL31 relocation.
3955 (Arm_output_section<big_endian>::fix_exidx_coverage): Mark objects
3956 for output local symbol count updating.
3957 (Target_arm::do_relax): Update output local symbol counts in objects
3958 if necessary.
3959 * object.h (Sized_relobj::set_output_local_symbol_count): New method.
3960
02961d7e
ILT
39612010-01-29 Viktor Kutuzov <vkutuzov@accesssoftek.com>
3962
3963 * arm.cc: Added support for the ARM relocations:
3964 R_ARM_MOVW_BREL_NC, R_ARM_MOVT_BREL, R_ARM_MOVW_BREL,
3965 R_ARM_THM_MOVW_BREL_NC, R_ARM_THM_MOVT_BREL, R_ARM_THM_MOVW_BREL.
3966 (Arm_relocate_functions::movw_rel_nc): Renamed (was
3967 movw_prel_nc).
3968 (Arm_relocate_functions::movw_rel): New method.
3969 (Arm_relocate_functions::movt_rel): Renamed (was movt_prel).
3970 (Arm_relocate_functions::thm_movw_rel_nc): Renamed (was
3971 thm_movw_prel_nc).
3972 (Arm_relocate_functions::thm_movw_rel): New method.
3973 (Arm_relocate_functions::thm_movt_rel): Renamed (was
3974 thm_movt_prel).
3975 (Target_arm::Scan::local): Handle MOVW_BREL/MOVT_BREL
3976 relocations.
3977 (Target_arm::Scan::global): Likewise.
3978 (Target_arm::Relocate::relocate): Likewise.
3979 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
3980 Likewise.
3981
b10d2873
ILT
39822010-01-27 Viktor Kutuzov <vkutuzov@accesssoftek.com>
3983
3984 * arm.cc: Added support for ARM group relocations.
3985 (Target_arm::reloc_needs_sym_origin): New method.
3986 (Arm_relocate_functions::calc_grp_kn): New method.
3987 (Arm_relocate_functions::calc_grp_residual): New method.
3988 (Arm_relocate_functions::calc_grp_gn): New method.
3989 (Arm_relocate_functions::arm_grp_alu): New Method.
3990 (Arm_relocate_functions::arm_grp_ldr): New Method.
3991 (Arm_relocate_functions::arm_grp_ldrs): New Method.
3992 (Arm_relocate_functions::arm_grp_ldc): New Method.
3993 (Target_arm::Scan::local): Handle the ARM group relocations.
3994 (Target_arm::Scan::global): Likewise.
3995 (Target_arm::Relocate::relocate): Likewise.
3996 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
3997 Likewise.
3998
2b328d4e
DK
39992010-01-26 Doug Kwan <dougkwan@google.com>
4000
4001 * arm.cc (set): Include.
4002 (class Arm_exidx_fixup): Change type of last_input_section_ to const
4003 pointer type.
4004 (Arm_output_section::Text_section_list): New type.
4005 (Arm_output_section::append_text_sections_to_list): New method.
4006 (Arm_output_section::fix_exidx_coverage): Ditto.
4007 (Arm_relobj::Arm_relobj): Initialize exidx_section_map_.
4008 (Arm_relobj::convert_input_section_to_relaxed_section): Use
4009 Relobj::set_section_offset() instead of
4010 Sized_relobj::invalidate_section_offset().
4011 (Arm_relobj::section_needs_reloc_stub_scanning): Add an extra
4012 parameter for section headers. Ignore relocation sections for
4013 unallocated sections and EXIDX sections.
4014 (Target_arm::fix_exidx_coverage): New method.
4015 (Target_arm::output_section_address_less_than): New type.
4016 (Arm_exidx_fixup::add_exidx_cantunwind_as_needed): Use index of the
4017 linked text section instead of the EXIDX section.
4018 (Arm_output_section::create_stub_group): Add an assertion to check
4019 that this is not an EXIDX output section.
4020 (Arm_output_section::append_text_sections_to_list): New method.
4021 (Arm_output_section::fix_exidx_coverage): Ditto.
4022 (Arm_relobj::scan_sections_for_stubs): Adjust call to
4023 Arm_relobj::section_needs_reloc_stub_scanning.
4024 (Target_arm::do_relax): Fix EXIDX output section coverage in the
4025 first pass.
4026 (Target_arm::fix_exidx_coverage): New method.
4027 * object.h (Relobj::set_output_section): New method.
4028 (Sized_relobj::invalidate_section_offset): Remove method.
4029 (Sized_relobj::do_invalidate_section_offset): Remove method.
4030 (Sized_relobj::do_set_section_offset): Handle offset value -1.
4031
c7f3c371
DK
40322010-01-25 Doug Kwan <dougkwan@google.com>
4033
4034 * arm.cc (Arm_exidx_merged_section::do_output_offset):
4035 Fix warning due to signed and unsigned comparison on a 32-bit host.
4036
8923b24c
DK
40372010-01-22 Doug Kwan <dougkwan@google.com>
4038
4039 * arm.cc (Target_arm::do_relax): Record an output section for section
4040 offset adjustment it contains any stub table that has changed.
4041 * layout.cc (Layout::clean_up_after_relaxation): Adjust section
4042 offsets in an output section if necessary.
4043 * output.cc (Output_section::Output_section): Initialize
4044 section_offsets_need_adjustments_.
4045 (Output_section::add_input_section_for_script): Renamed to
4046 Output_section::add_simple_input_section.
4047 (Output_section::save_states): Add a comment.
4048 (Output_section::discard_states): New method defintion.
4049 (Output_section::adjust_section_offsets): Same.
4050 * output.h (Output_section::add_input_section_for_script): Renamed to
4051 Output_section::add_simple_input_section.
4052 (Output_section::discard_states): New method declaration.
4053 (Output_section::adjust_section_offsets): Same.
4054 (Output_section::section_offsets_need_adjustment,
4055 Output_section::set_section_offsets_need_adjustment): New method
4056 definitions.
4057 (Output_section::section_offsets_need_adjustment_): New data member.
4058 * script-sections.cc
4059 (Output_section_element_input::set_section_address): Adjust code for
4060 renaming of Output_section::add_input_section_for_script.
4061 (Orphan_output_section::set_section_address): Same.
4062
9b2fd367
DK
40632010-01-22 Viktor Kutuzov <vkutuzov@accesssoftek.com>
4064
4065 * gold/arm.cc (Target_arm): Updated fix_v4bx method and usage of
4066 Fix_v4bx enum values .
4067 * gold/options.h (General_options): New option definitions.
4068 (General_options::fix_v4bx): New method.
4069 (General_options::Fix_v4bx): New enum.
4070 * gold/options.cc (General_options::parse_fix_v4bx): New method.
4071 (General_options::parse_fix_v4bx_interworking): New method.
4072
80d0d023
DK
40732010-01-22 Doug Kwan <dougkwan@google.com>
4074
4075 * arm.cc (Arm_exidx_fixup): New class.
4076
af2cdeae
DK
40772010-01-21 Doug Kwan <dougkwan@google.com>
4078
4079 * arm.cc (Arm_exidx_cantunwind, Arm_exidx_merged_section): New
4080 classes.
4081 (Arm_exidx_section_offset_map): New type.
4082
993d07c1
DK
40832010-01-21 Doug Kwan <dougkwan@google.com>
4084
4085 * arm.cc (Arm_exidx_input_section): New class.
4086 (Arm_relobj::exidx_input_section_by_link,
4087 Arm_relobj::exidx_input_section_by_shndx,
4088 Arm_relobj::make_exidx_input_section): New methods.
4089 (read_arm_attributes_section): Remove.
4090 (Arm_relobj::do_read_symbols): Look for ARM.exidx sections and record
4091 information about them.
4092 (Arm_dynobj::do_read_symbols): Move code in read_arm_attributes_section
4093 to here.
4094
5ac169d4
DK
40952010-01-20 Doug Kwan <dougkwan@google.com>
4096
4097 * arm.cc (Target_arm::Arm_input_section_map): Change key type from
4098 Input_section_specifier to Section_id.
4099 (Target_arm::new_arm_input_section: Adjust code for change of key
4100 type.
4101 (Target_arm::find_arm_input_section): Ditto.
4102 * gc.h (object.h): Include for Section_id nand Section_id_hash.
4103 (Section_id): Remove.
4104 (Garbage_collection::Section_id_hash): Remove.
4105 * icf.h (object.h): Include for Section_id nand Section_id_hash.
4106 (Section_id): Remove.
4107 (Icf::Section_id_hash): Remove.
4108 * object.h (Section_id, Const_section_id, Section_id_hash,
4109 Const_section_id_hash): New type definitions.
4110 * output.cc (Output_section::add_relaxed_input_section): Change to
4111 use Const_section_id instead of Input_section_specifier as key type.
4112 (Output_section::add_merge_input_section): Ditto.
4113 (Output_section::build_relaxation_map): Change to use Section_id
4114 instead of Input_section_specifier as key type.
4115 (Output_section::convert_input_sections_in_list_to_relaxed_sections):
4116 Ditto.
4117 (Output_section::convert_input_sections_to_relaxed_sections): Change
4118 to use Const_section_id instead of Input_section_specifier as key type.
4119 (Output_section::find_merge_section): Ditto.
4120 (Output_section::find_relaxed_input_section): Ditto.
4121 * output.h (Input_section_specifier): Remove class.
4122 (Output_section::Output_section_data_by_input_section_map): Change
4123 key type to Const_section_id.
4124 (Output_section::Output_relaxed_input_section_by_input_section_map):
4125 Ditto.
4126 (Output_section::Relaxation_map): Change key type to Section_id.
4127
a2162063
ILT
41282010-01-20 Viktor Kutuzov <vkutuzov@accesssoftek.com>
4129
4130 * gold/arm.cc: Added support for R_ARM_V4BX relocation
4131 (class Arm_v4bx_stub): New class.
4132 (DEF_STUBS): Updated definition to support v4_veneer_bx.
4133 (Stub_factory::make_arm_v4bx_stub): New method.
4134 (Stub_factory::elf32_arm_stub_v4_veneer_bx): New veneer template.
4135 (Stub_table::empty): Handle v4bx stubs.
4136 (Stub_table::add_arm_v4bx_stub): New method.
4137 (Stub_table::find_arm_v4bx_stub): New method.
4138 (Arm_relocate_functions::v4bx): New method.
4139 (Target_arm::fix_v4bx): New method.
4140 (Target_arm::Target_arm): Handle R_ARM_V4BX.
4141 (Stub_table::relocate_stubs): Likewise.
4142 (Stub_table::do_write): Likewise.
4143 (Stub_table::update_data_size_and_addralign): Likewise.
4144 (Stub_table::finalize_stubs): Likewise.
4145 (Target_arm::Scan::local): Likewise.
4146 (Target_arm::Scan::global): Likewise.
4147 (Target_arm::do_finalize_sections): Likewise.
4148 (Target_arm::Relocate::relocate): Likewise.
4149 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
4150 Likewise.
4151 (Target_arm::scan_reloc_for_stub): Likewise.
4152 (Target_arm::scan_reloc_section_for_stubs): Likewise.
4153
5696ab0b
ILT
41542010-01-19 Ian Lance Taylor <iant@google.com>
4155
4156 * output.cc (Output_section_headers::do_sized_write): Write large
4157 segment count to sh_info field.
4158 (Output_file_header::do_sized_write): For large segment count,
4159 write PN_XNUM to e_phnum field.
4160
800d0f56
ILT
41612010-01-15 Viktor Kutuzov <vkutuzov@accesssoftek.com>
4162
4163 * arm.cc (Arm_relocate_functions::thm_jump6): New function.
4164 (Arm_relocate_functions::thm_jump8): New function.
4165 (Arm_relocate_functions::thm_jump11): New function.
4166 (Target_arm::Scan::local): Handle R_ARM_THM_JUMP6, R_ARM_THM_JUMP8,
4167 R_ARM_THM_JUMP11.
4168 (Target_arm::Scan::global): Likewise.
4169 (Target_arm::Relocate::relocate): Likewise.
4170 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
4171 Likewise.
4172
41263c05
DK
41732010-01-14 Doug Kwan <dougkwan@google.com>
4174
4175 * arm.cc (map, utility): Include headers.
4176 (Target_arm::apply_cortex_a8_workaround): New method.
4177 (Arm_relobj::do_relocate_sections): Apply any Cortex-A8 workaround.
4178 (Target_arm::Scan::local): Handle R_ARM_THM_JUMP24, R_ARM_THM_JUMP19.
4179 (Target_arm::Scan::global): R_ARM_THM_JUMP19.
4180 (Target_arm::do_finalize_sections): Set fix_cortex_a8_ according to
4181 the --[no-]fix-cortex-a8 command line options.
4182 (Target_arm::Relocate::relocate): Handle R_ARM_JUMP19.
4183 (Target_arm::relocate_stub): Use addend in instruction template.
4184 * options.h (DEFINE_bool): Set the user-set flag.
4185 (General_options): Add --[no-]-fix-cortex options.
4186 * output.cc (Output_section::convert_input_sections_to_relaxed_sections)
e1df38aa 4187 : Update fast look-up map after conversion.
41263c05 4188
459e9b03
ST
41892010-01-14 Sriraman Tallam <tmsriram@google.com>
4190
4191 * object.cc (Sized_relobj::do_layout): Change to call layout_gnu_stack
4192 in the first pass of do_layout.
4193
b521dfe4
DK
41942010-01-13 Doug Kwan <dougkwan@google.com>
4195
4196 * arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
4197 Arm_relobj::scan_sections_for_stubs): Rearrange code to avoid an
4198 apparent compiler problem of not folding static constant integral
4199 data members of elfcpp::Elf_sizes<32>.
4200
44272192
DK
42012010-01-13 Doug Kwan <dougkwan@google.com>
4202
4203 * arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
4204 Arm_relobj::section_needs_cortex_a8_stub_scanning,
4205 Arm_relobj::scan_section_for_cortex_a8_erratum,
4206 Arm_relobj::scan_span_for_cortex_a8_erratum): New methods.
4207 (Arm_relobj::scan_sections_for_stubs): Move code deciding what
4208 sections to scan for relocation stubs into a new method
4209 Arm_relobj::section_needs_reloc_stub_scanning. Handle both
4210 relocation and Cortex-A8 stub scanning.
4211 (Target_arm::do_relax): Force stubs to be after stubbed sections
4212 if fixing the Cortex-A8 erratum. Remove all Cortex-A8 stubs at
e1df38aa 4213 the beginning of a new relaxation pass. Update a comment.
44272192
DK
4214 (Target_arm::scan_span_for_cortex_a8_erratum): New method definition.
4215
44b71ece
ILT
42162010-01-12 Ian Lance Taylor <iant@google.com>
4217
4218 * target-reloc.h (visibility_error): New inline function.
4219 (relocate_section): Call visibility_error.
4220 * testsuite/Makefile.am (check_DATA): Add protected_3.err.
4221 (MOSTLYCLEANFILES): Likewise.
4222 (protected_4_pic.o, protected_3.err): New targets.
4223 * testsuite/protected_4.cc: New file.
4224
a120bc7f
DK
42252010-01-12 Doug Kwan <dougkwan@google.com>
4226
4227 * arm.cc (Cortex_a8_reloc): New class.
4228 (Target_arm::Target_arm): Initialize new data members fix_cortex_a8_
4229 and cortex_a8_relocs_info_.
4230 (Target_arm::fix_cortex_a8): New method definition.
4231 (Target_arm::Cortex_a8_relocs_info): New type.
4232 (Target_arm::fix_cortex_a8_, Target_arm::cortex_a8_relocs_info_):
4233 New data member declarations.
4234 (Target_arm::scan_reloc_for_stub): Record information about
4235 relocations for THUMB branches that might be exempted from the
4236 Cortex-A8 workaround.
4237 (Target_arm::do_relax): Clear all Cortex-A8 relocation information
4238 at the beginning of a relaxation pass.
4239
20138696
DK
42402010-01-12 Doug Kwan <dougkwan@google.com>
4241
4242 * arm.cc (Arm_relobj::mapping_symbols_info_): New data member.
4243 (Arm_relobj::Mapping_symbol_position,
4244 Arm_reloj::Mapping_symbol_position_less,
4245 Arm_relobj::Mapping_symbols_info): New types.
4246 (Target_arm::is_mapping_symbol_name): New method definition.
4247 (Arm_relobj::do_count_local_symbols): Save information about mapping
4248 symbols.
4249
089d69dc
DK
42502010-01-11 Doug Kwan <dougkwan@google.com>
4251
4252 * arm.cc (Arm_relocate_functions::thumb32_branch_offset,
4253 Arm_relocate_functions::thumb32_branch_upper,
4254 Arm_relocate_functions::thumb32_branch_lower,
4255 Arm_relocate_functions::thumb32_cond_branch_offset,
4256 Arm_relocate_functions::thumb32_cond_branch_upper,
4257 Arm_relocate_functions::thumb32_cond_branch_lower,
4258 Arm_relocate_functions::thm_jump19): New methods to handle THUMB
4259 branch offset encoding.
4260 (Arm_relocate_functions::thumb_branch_common): Use new branch
4261 offset encoding methods to avoid code duplication.
4262 (Stub_template::Stub_template) Handle THUMB16_SPECIAL_TYPE.
4263 (Stub_addend_reader::operator()): Use new branch encoding method
4264 to avoid code duplication.
4265
99e5bff2
DK
42662010-01-11 Doug Kwan <dougkwan@google.com>
4267
4268 * arm.cc (Arm_relobj::do_gc_process_relocs): New method.
4269 (Target_arm::do_finalize_sections): Define special EXIDX section
4270 symbols only if referenced.
4271 * gc.h (Garbage_collection::add_reference): New method.
4272 (gc_process_relocs): Use Garbage_collection::add_reference to avoid
4273 code duplication.
4274
98e090bd
ILT
42752010-01-11 Ian Lance Taylor <iant@google.com>
4276
d0a91bd8
ILT
4277 * script.cc (Version_script_info::build_expression_list_lookup):
4278 Change complaing about duplicate wildcard match from error to
4279 warning.
4280
98e090bd
ILT
4281 * script.cc (class Lazy_demangler): Recreate--revert part of patch
4282 of 2009-12-30.
4283 (Version_script_info::Version_script_info): Initialize globs_,
4284 default_version_, default_is_global_, and exact_. Don't
4285 initialize globals_ or locals_.
4286 (Version_script_info::build_lookup_tables): Build local symbols
4287 first.
4288 (Version_script_info::unquote): New function.
4289 (Version_script_info::add_exact_match): New function.
4290 (Version_script_info::build_expression_list_lookup): Remove lookup
4291 parameter. Add is_global parameter. Change all callers. Handle
4292 wildcard pattern specially. Unquote pattern. Call
4293 add_exact_match.
4294 (Version_script_info::get_name_to_match): New function.
4295 (Version_script_info::get_symbol_version): New function.
4296 (Version_script_info::get_symbol_version_helper): Remove.
4297 (Version_script_info::check_unmatched_names): Call unquote.
4298 * script.h (class Version_script_info): Change get_symbol_version
4299 to be non-inline and add is_global parameter; change all callers.
4300 Rewrite symbol_is_local. Update declarations. Define struct
4301 Version_tree_match, Exact, Globs. Don't define struct Lookup.
4302 Remove globals_ and locals_ members. Add exact_, globs_,
4303 default_version_, is_global_.
4304 (Version_script_info::Glob): Remove pattern, add expression and
4305 is_global. Update constructor. Change all callers.
4306 * dynobj.cc (Versions::finalize): Mark the version symbol as the
4307 default version.
4308 (Versions::symbol_section_contents): If a symbol is undefined, or
4309 defined in a dynamic object, set the version index to
4310 VER_NDX_LOCAL.
4311 * symtab.cc (Symbol_table::add_from_relobj): Don't call
4312 symbol_is_local.
4313 (Symbol_table::add_from_pluginobj): Likewise.
4314 * testsuite/ver_matching_test.sh: blaza1 and blaza go into V2.
4315
d56962d3
DK
43162010-01-11 Doug Kwan <dougkwan@google.com>
4317
4318 * Makefile.am (incremental_dump_DEPENDENCIES): Add libintl dependency.
4319 (incremental_dump_LDADD): Add linking option for libintl.
4320 * Makefile.in: Regenerate.
4321
94e6ee91
L
43222010-01-11 H.J. Lu <hongjiu.lu@intel.com>
4323
4324 PR gold/11144
4325 * testsuite/Makefile.am (dynamic_list.stdout): Use --dyn-syms
4326 instead of -Ds.
4327 * testsuite/Makefile.in: Regenerated.
4328
e96c574b
DK
43292010-01-10 Doug Kwan <dougkwan@google.com>
4330
4331 * options.h (DEFINE_var): Use parentheses around argument varname__
4332 in macro body to avoid any unintended subsequent substitutions.
4333
7198066b
ILT
43342010-01-10 Ian Lance Taylor <iant@google.com>
4335
ba4d53bf
ILT
4336 * resolve.cc (Symbol_table::resolve): Add symbols to list of ODR
4337 candidates before doing symbol resolution.
4338
7198066b
ILT
4339 * resolve.cc (Symbol_table::resolve): Add symbols to the list of
4340 ODR candidates if only one is weak.
4341
a2beed37
ILT
43422010-01-08 Ian Lance Taylor <iant@google.com>
4343
4344 * script.cc (Version_script_info::build_expression_list_lookup):
4345 Don't warn about ambiguous version, just record the ambiguity.
4346 (Version_script_info::get_symbol_version_helper): Give error if
4347 version is ambiguous.
4348
2fb7225c
DK
43492010-01-08 Doug Kwan <dougkwan@google.com>
4350
4351 * arm.cc (Stub_table::Stub_table): Initalize cortex_a8_stubs_,
4352 prev_data_size_ and prev_addralign_. Remove initializer for
4353 deleted data member has_been_changed_.
4354 (Stub_table::empty): Look at both reloc_stubs_ and cortex_a8_stubs_
4355 to determine if the table is empty.
4356 (Stub_table::has_been_changed, Stub_table_set_has_been_changed):
4357 Remove.
4358 (Stub_table::add_reloc_stub): Define method in class definition
4359 instead of just declaring it there.
4360 (Stub_table::add_cortex_a8_stub): New method definition.
4361 (Stub_table::update_data_size_and_addralign): Ditto.
4362 (Stub_table::finalize_stubs): Ditto.
4363 (Stub_table::apply_cortex_a8_workaround_to_address_range): Ditto.
4364 (Stub_table::do_addralign_): Return address alignment in the
4365 (Stub_table::do_reset_address_and_file_offset): Define method in
4366 class definition instead of declaring it there. Set current data
4367 size to be the data size of the previous pass.
4368 (Stub_table::set_final_data_size): Use current data size as the
4369 final data size.
4370 (Stub_table::relocate_stub): Change parameter type of stub from
4371 Reloc_stub pointer to Stub pointer.
4372 (Stub_table::addralign_, Stub_table::has_been_changed_): Remove.
4373 (Stub_table::Cortex_a8_stub_list): New typedef.
4374 (Stub_table::cortex_a8_stubs_, Stub_table::prev_data_size_,
4375 Stub_table::prev_addralign_): New data member.
4376 (Arm_relobj::Arm_relobj): Initialize data member
4377 section_has_cortex_a8_workaround_.
4378 (Arm_relobj::section_has_cortex_a8_workaround,
4379 Arm_relobj::mark_section_for_cortex_a8_workaround): New method
4380 definitions.
4381 (Arm_relobj::section_has_cortex_a8_workaround_): New data member
4382 declarations.
4383 (Target_arm::relocate_stub): Change parameter type of stub from
4384 Reloc_stub pointer to Stub pointer.
4385 (Insn_template::size, Insn_template::alignment): Handle
4386 THUMB16_SPECIAL_TYPE.
4387 (Stub_table::remove_all_cortex_a8_stubs, Stub_table::finalize_stubs,
4388 Stub_table::update_data_size_and_addralign,
4389 Stub_table::apply_cortex_a8_workaround_to_address_range): New method
4390 definitions.
4391 (Stub_table::relocate_stubs): Handle Cortex-A8 stubs.
4392 (Stub_table::do_write): Ditto.
4393 (Target_arm::do_relax): Adjust code for changes in Stub_table.
4394
880cd20d
ILT
43952010-01-08 Ian Lance Taylor <iant@google.com>
4396
4397 PR 11108
4398 * symtab.h (class Symbol): Remove fields is_target_special_ and
4399 has_plt_offset_. Add field is_defined_in_discarded_section_.
4400 (Symbol::is_defined_in_discarded_section): New function.
4401 (Symbol::set_is_defined_in_discarded_section): New function.
4402 (Symbol::has_plt_offset): Rewrite.
4403 (Symbol::set_plt_offset): Verify that new offset is not -1U.
4404 * symtab.cc (Symbol::init_fields): Initialize plt_offset_ to -1U.
4405 Don't initialize is_target_special_ or has_plt_offset_.
4406 Initialize is_defined_in_discarded_section_.
4407 (Symbol_table::add_from_relobj): If appropriate, set
4408 is_defined_in_discarded_section.
4409 * resolve.cc (Symbol::override_base_with_special): Don't test
4410 is_target_special_. Change has_plt_offset_ to has_plt_offset().
4411 * target-reloc.h (relocate_section): Do special handling for
4412 symbols defined in discarded sections for global symbols as well
4413 as local symbols.
4414
2703e3eb
ILT
44152010-01-08 Ian Lance Taylor <iant@google.com>
4416
4417 * dynobj.cc (big_endian>::find_dynsym_sections): Set pi to NULL in
4418 the SHT_SYMTAB case.
4419
339d40a3
ILT
44202010-01-08 Ian Lance Taylor <iant@google.com>
4421
4422 * object.cc (Sized_relobj::do_layout): Don't get confused if
4423 layout_eh_frame returns NULL.
4424
abecea76
ILT
44252010-01-08 Ian Lance Taylor <iant@google.com>
4426
4427 PR 11084
4428 * dynobj.cc (Sized_dynobj::find_dynsym_sections): If there is no
4429 dynamic symbol table, use the normal symbol table.
4430 (Sized_dynobj::do_read_symbols): Remove assertion about type of
4431 symbol table.
4432
6b7dd3f3
ILT
44332010-01-08 Ian Lance Taylor <iant@google.com>
4434
4435 PR 11072
4436 * layout.cc (Layout::include_section): Remove .gnu_debuglink
4437 sections.
4438
36c50e63
L
44392010-01-08 H.J. Lu <hongjiu.lu@intel.com>
4440
4441 * version.cc (print_version): Change to "Copyright 2010".
4442
e291e7b9
ILT
44432010-01-08 Ian Lance Taylor <iant@google.com>
4444
4445 PR 10287
4446 PR 11063
4447 * i386.cc (class Target_i386): Change return type of plt_section
4448 to be non-const.
4449 (class Output_data_plt_i386): Add tls_desc_rel_ field.
4450 (Output_data_plt_i386::Output_data_plt_i386): Initialize
4451 tls_desc_rel_ field.
4452 (Output_data_plt_i386::rel_tls_desc): New function.
4453 (Target_i386::rel_tls_desc_section): New function.
4454 (Target_i386::Scan::local): Rewrite R_386_TLS_GOTDESC handling.
4455 (Target_i386::Scan::global): For R_386_TLS_GOTDESC put
4456 R_386_TLS_DESC reloc in rel_tls_desc_section.
4457 * x86_64.cc (class Target_x86_64): Add tlsdesc_reloc_info_ field.
4458 Define struct Tlsdesc_info.
4459 (Target_x86_64::Target_x86_64): Initialize tlsdesc_reloc_info_.
4460 (Target_x86_64::do_reloc_symbol_index): New function.
4461 (Target_x86_64::add_tlsdesc_info): New function.
4462 (class Output_data_plt_x86_64): Add tlsdesc_rel_ field.
4463 (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize
4464 tlsdesc_rel_ field.
4465 (Output_data_plt_x86_64::rela_plt): Rename from rel_plt. Change
4466 all callers.
4467 (Output_data_plt_x86_64::rela_tlsdesc): New function.
4468 (Target_x86_64::rela_tlsdesc_section): New function.
4469 (Target_x86_64::Scan::local): Rewrite R_X86_64_GOTPC32_TLSDESC
4470 handling.
4471 (Target_x86_64::Scan::global): For R_X86_64_GOTPC32_TLSDESC put
4472 (Target_x86_64::do_reloc_addend): New function.
4473 R_X86_64_TLSDESC reloc in rela_tlsdesc_section.
4474 * output.h (class Output_reloc) [SHT_REL]: Add new constructor
4475 declarations. Define TARGET_CODE. Add arg field to u1_ union.
4476 (Output_reloc::type): New function.
4477 (Output_reloc::is_local_section_symbol): Check for TARGET_CODE.
4478 (Output_reloc::is_target_specific): New function.
4479 (Output_reloc::target_arg): New function.
4480 (class Output_reloc) [SHT_RELA]: Add four new constructors for
4481 absolute relocs and target specific relocs.
4482 (class Output_data_reloc) [SHT_REL]: Add add_absolute and
4483 add_target_specific.
4484 (class Output_data_reloc) [SHT_RELA]: Likewise.
4485 * output.cc (Output_reloc::Output_reloc): Add four new versions
4486 for absolute relocs and target specific relocs.
4487 (Output_reloc::set_needs_dynsym_index): Add TARGET_CODE case.
4488 (Output_reloc::get_symbol_index): Likewise.
4489 (Output_reloc::local_section_offset): Check that local_sym_index_
4490 is not TARGET_CODE or 0.
4491 (Output_reloc::symbol_value): Likewise.
4492 (Output_reloc::write) [SHT_RELA]: Call target for target specific
4493 reloc.
4494 * target.h (class Target): Add reloc_symbol_index and reloc_addend
4495 functions. Add do_reloc_symbol_index and do_reloc_addend virtual
4496 functions.
4497 * layout.cc (add_target_dynamic_tags): Use output section for
4498 DT_PLTRELSZ and DT_JMPREL.
4499
3a44184e
ILT
45002010-01-07 Ian Lance Taylor <iant@google.com>
4501
4502 PR 11061
4503 * output.h (class Output_reloc) [SHT_RELA]: Add is_relative
4504 function.
4505 (class Output_data_reloc_generic): Define.
4506 (class Output_data_reloc_base): Change base class to
4507 Output_data_reloc_generic. Change add() method to call
4508 bump_relative_reloc_count for a relative reloc. Remove
4509 sort_relocs_ field.
4510 * output.cc (Output_data_reloc_base::do_write): Change sort_reloc_
4511 to sort_relocs().
4512 * layout.cc (Layout::add_target_dynamic_tags): Change dyn_rel to
4513 Output_data_reloc_generic*. Add DT_RELCOUNT/DT_RELACOUNT tag if
4514 appropriate.
4515 * layout.h (class Layout): Update declaration.
4516
ea715a34
ILT
45172010-01-07 Ian Lance Taylor <iant@google.com>
4518
4519 * output.h (class Output_data): Add const version of
4520 output_section and do_output_section.
4521 (class Output_section_data): Add const version of
4522 do_output_section.
4523 (class Output_section): Likewise.
4524 * layout.cc (Layout::add_target_dynamic_tags): New function.
4525 * layout.h (class Layout): Update declarations.
4526 * arm.cc (Target_arm::do_finalize_sections): Use
4527 add_target_dynamic_tags.
4528 * i386.cc (Target_i386::do_finalize_sections): Likewise.
4529 * powerpc.cc (Target_powerpc::do_finalize_sections): Likewise.
4530 * sparc.cc (Target_sparc::do_finalize_sections): Likewise.
4531 * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
4532
659948a4
ILT
45332010-01-07 Ian Lance Taylor <iant@google.com>
4534
4535 PR 11042
4536 * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Mark the dynamic
4537 object as needed.
4538
9d3b86f6
ILT
45392010-01-07 Dmitry Gorbachev <d.g.gorbachev@gmail.com>
4540 Ian Lance Taylor <iant@google.com>
4541
4542 PR 11019
4543 * object.cc: Instantiate Xindex::initialize_symtab_xindex and
4544 Xindex::read_symtab_xindex.
4545
bb0d3eb0
DK
45462010-01-07 Doug Kwan <dougkwan@google.com>
4547
4548 * arm.cc (Insn_template::Type): New enum value THUMB16_SPECIAL_TYPE.
4549 (Insn_template::thumb16_bcond_insn): New method declaration.
4550 (Insn_template): Fix spelling.
4551 (Stub::thumb16_special): New method declaration.
4552 (Stub::do_write): Define virtual method which was previously pure
4553 virtual.
4554 (Stub::do_thumb16_special): New method declaration.
4555 (Stub::do_fixed_endian_write): New template member.
4556 (Reloc_stub::do_write): Remove.
4557 (Reloc_stub::do_fixed_endian_write): Remove.
4558 (Cortex_a8_stub): New class definition.
4559 (Stub_factory::make_cortex_a8_stub): New method definition.
4560 (Stub_factory::Stub_factory): Add missing static storage class
4561 qualifier for elf32_arm_stub_a8_veneer_blx.
4562
ffeef7df
ILT
45632010-01-07 Ian Lance Taylor <iant@google.com>
4564
dc3f80fe
ILT
4565 PR 10980
4566 * options.h (class General_options): Add --warn-unresolved-symbols
4567 and --error-unresolved-symbols.
4568 * errors.cc (Errors::undefined_symbol): Implement
4569 --warn-unresolved-symbols.
4570
ffeef7df
ILT
4571 * options.h (class General_options): Add -z text and -z textoff.
4572 * layout.cc (Layout::finish_dynamic_section): Implement -z text.
4573
f1ec9ded
ST
45742010-01-06 Sriraman Tallam <tmsriram@google.com>
4575
4576 * gc.h (Garbage_collection::Cident_section_map): New typedef.
4577 (Garbage_collection::cident_sections): New function.
4578 (Garbage_collection::add_cident_section): New function.
4579 (Garbage_collection::cident_sections_): New member.
4580 (gc_process_relocs): Add references to sections whose names are C
4581 identifiers.
4582 * gold.h (cident_section_start_prefix): New constant.
4583 (cident_section_stop_prefix): New constant.
4584 (is_cident): New function.
4585 * layout.cc (Layout::define_section_symbols): Replace string constants
4586 with the newly defined constants.
4587 * object.cc (Sized_relobj::do_layout): Track sections whose names are
4588 C identifiers.
4589 * testsuite/Makefile.am: Add gc_orphan_section_test.
4590 * testsuite/Makefile.in: Regenerate.
4591 * testsuite/gc_orphan_section_test.cc: New file.
4592 * testsuite/gc_orphan_section_test.sh: New file.
4593
6eda8c29
ILT
45942010-01-06 Ian Lance Taylor <iant@google.com>
4595
b9674e17
ILT
4596 PR 10980
4597 * options.h (class General_options): Add --warn-shared-textrel.
4598 * layout.cc (Layout::finish_dynamic_section): Implement
4599 --warn-shared-textrel.
4600
6eda8c29
ILT
4601 PR 10980
4602 * options.h (class General_options): Add --warn-multiple-gp.
4603
32dcd44e
ILT
46042010-01-06 Viktor Kutuzov <vkutuzov@accesssoftek.com>
4605
4606 * Makefile.am (incremental_dump_DEPENDENCIES): Remove
4607 $(THREADSLIB) and $(LIBDL).
4608 * Makefile.in: Rebuild.
4609
a192ba05
ILT
46102010-01-06 Ian Lance Taylor <iant@google.com>
4611
4612 PR 10980
4613 * options.cc (General_options::parse_section_start): New function.
4614 (General_options::section_start): New function.
4615 (General_options::General_options): Initialize all members.
4616 * options.h: Include <map>
4617 (class General_options): Add --section-start. Add section_starts_
4618 member.
4619 * layout.cc (Layout::attach_allocated_section_to_segment): If
4620 --section-start was used, set the address of the segment. Remove
4621 local sort_sections.
4622 (Layout::relaxation_loop_body): If the address of the load segment
4623 has been set by --section-start, don't use it.
4624 * output.h (Output_segment::update_flags_for_output_section): New
4625 function.
4626 * output.cc (Output_segment::add_output_section): Call
4627 update_flags_for_output_section.
4628
dde3f402
ILT
46292010-01-05 Ian Lance Taylor <iant@google.com>
4630
62dfdd4d
ILT
4631 PR 10980
4632 * options.h (class General_options): Add --undefined-version.
4633 * script.cc (struct Version_expression): Add was_matched_by_symbol
4634 field.
4635 (Version_script_info::matched_symbol): New function.
4636 (Version_script_info::get_symbol_version_helper): Call
4637 matched_symbol.
4638 (Version_script_info::check_unmatched_names): New function.
4639 * script.h (class Version_script_info): Update declarations.
4640 * gold.cc (queue_middle_tasks): Handle --no-undefined-version.
4641
9c4ae156
ILT
4642 * options.h (class General_options): Use DEFINE_bool_alias for
4643 allow_multiple_definition.
4644 * resolve.cc (Symbol_table::should_override): Don't test
4645 allow_multiple_definition.
4646
dde3f402
ILT
4647 PR 10980
4648 * options.h (class General_options): Add --cref.
4649 * main.cc (main): Print cref table if --cref. Don't close mapfile
4650 until after printing cref table.
4651 * cref.cc: Include "symtab.h".
4652 (class Cref_inputs): Define Cref_table_compare and Cref_table.
4653 (Cref_table_compare::operator()): New function.
4654 (Cref_inputs::gather_cref): New function.
4655 (filecol): New static const.
4656 (Cref_inputs::print_cref): New function.
4657 (Cref::print_cref): New function.
4658 * cref.h: Include <cstdio>.
4659 (class Cref): Update declarations.
4660 * mapfile.h (Mapfile::file): New function.
4661 * object.h (class Object): Define Symbols. Declare virtual
4662 do_get_global_symbols.
4663 (Object::get_global_symbols): New function.
4664 * object.cc (Input_objects::add_object): Pass object to cref_ if
4665 --cref.
4666 (Input_objects::archive_start): Likewise.
4667 (Input_objects::archive_stop): Likewise.
4668 (Input_objects::print_cref): New function.
4669 * dynobj.h (Sized_dynobj::do_get_global_symbols): New function.
4670 * dynobj.cc (big_endian>::do_add_symbols): Create symbols_ if
4671 --cref.
4672 * plugin.cc (Sized_pluginobj::do_get_global_symbols): New
4673 function.
4674 * plugin.h (class Sized_pluginobj): Update declarations.
4675
8781f709
ILT
46762010-01-05 Ian Lance Taylor <iant@google.com>
4677
4678 * symtab.cc (Symbol_table::add_from_object): Rename def parameter
4679 to is_default_version. Rename insdef to insdefault.
4680 (Symbol_table::add_from_relobj): Rename def to is_default_version
4681 and local to is_forced_local.
4682 (Symbol_table::add_from_pluginobj): Likewise.
4683 (Symbol_table::add_from_dynobj): Likewise.
4684 (Symbol_table::define_special_symbol): Rename insdef to
4685 insdefault.
4686
fe35d28d
ILT
46872010-01-04 Ian Lance Taylor <iant@google.com>
4688
30bc8c46
ILT
4689 PR 10980
4690 * options.h (class General_options): Add
4691 --allow-multiple-definition and -z muldefs.
4692 * resolve.cc (Symbol_table::should_override): Don't warn about a
4693 multiple symbol definition if --allow-multiple-definition or -z
4694 muldefs.
4695
7eaea549
ILT
4696 PR 10980
4697 * options.h (class General_options): Add --add-needed and
4698 --copy-dt-needed-entries. Tweak --as-needed help entry.
4699 * object.cc (Input_objects::check_dynamic_dependencies): Give an
4700 error if --copy-dt-needed-entries aka --add-needed is used and
4701 would cause a change in behaviour.
4702
fe35d28d
ILT
4703 PR 10980
4704 * options.h (class General_options): Add -G as a short version of
4705 --shared. Add no-op options -assert, -g, and -i.
4706
55a2bb35
ST
47072010-01-04 Sriraman Tallam <tmsriram@google.com>
4708
4709 * gc.h (gc_process_relocs): Call is_section_foldable_candidate to
4710 check for .text or .gnu.linkonce.t sections.
4711 * icf.cc (Icf::find_identical_sections): Ditto.
4712 Change the detection for mangled function name within the section
4713 name.
4714 * icf.h (is_section_foldable_candidate): New function.
4715
719328e1
ILT
47162009-12-30 Ian Lance Taylor <iant@google.com>
4717
4718 PR 10980
4719 * options.h (class General_options): Permit two dashes with
4720 --retain-symbols-file.
4721
d7bb5745
ILT
47222009-12-30 Ian Lance Taylor <iant@google.com>
4723
403a15dd
ILT
4724 PR 10979
4725 * layout.cc (Layout::relaxation_loop_body): If -Ttext was used,
4726 don't put the file header and segment headers in the text
4727 segment.
4728
eda294df
ILT
4729 PR 10979
4730 * common.cc (Sort_commons::operator()): Stabilize sort when both
4731 entries are NULL.
4732 (Symbol_table::do_allocate_commons_list): When allocating common
4733 symbols, skip a symbol which is no longer common.
4734 * symtab.h (Symbol::is_common): Test whether the symbol comes from
4735 an object before checking its type.
4736 * testsuite/common_test_2.c: New file.
4737 * testsuite/common_test_3.c: New file.
4738 * testsuite/Makefile.am (check_PROGRAMS): Add common_test_2.
4739 (common_test_2_SOURCES, common_test_2_DEPENDENCIES): Define.
4740 (common_test_2_LDFLAGS, common_test_2_LDADD): Define.
4741 (common_test_2_pic.o, common_test_2.so): New targets.
4742 (common_test_3_pic.o, common_test_3.so): New targets.
4743 * testsuite/Makefile.in: Rebuild.
4744
d7bb5745
ILT
4745 PR 10979
4746 * script.cc (read_input_script): If we see a new SECTIONS clause,
4747 and we have added an input section, give an error.
4748 * layout.h (class Layout): Add have_added_input_section function.
4749 Add have_added_input_section_ field.
4750 * layout.cc (Layout::Layout): Initialize
4751 have_added_input_section_.
4752 (Layout::layout): Set have_added_input_section_.
4753 (Layout::layout_eh_frame): Likewise.
4754
fc59c572
ILT
47552009-12-30 Ian Lance Taylor <iant@google.com>
4756
4757 PR 10931
4758 * options.h (class General_options): Add --sort-common option.
4759 * symtab.h (class Symbol_table): Define Sort_commons_order enum.
4760 * common.cc (Sort_common): Add sort_order parameter to
4761 constructor. Add sort_order_ field.
4762 (Sort_commons::operator): Check sort_order_.
4763 (Symbol_table::allocate_commons): Determine the sort order.
4764 (Symbol_table::do_allocate_commons): Add sort_order parameter.
4765 Change all callers.
4766 (Symbol_table::do_allocate_commons_list): Likewise.
4767
1c74fab0
ILT
47682009-12-30 Ian Lance Taylor <iant@google.com>
4769
4770 PR 10916
4771 * symtab.cc (Symbol_table::add_from_relobj): When not exporting
4772 symbols from this object, don't change the visibility of an
4773 undefined symbol.
4774 * testsuite/exclude_libs_test_1.c (lib1_ref): New function.
4775
6affe781
ILT
47762009-12-30 Ian Lance Taylor <iant@google.com>
4777
4778 PR 10861
4779 * script.h (class Version_script_info): Define Language enum.
4780 Update declarations. Define Glob, Exact, and Lookup types. Add
4781 new fields globals_, locals_, and is_finalized_.
4782 * script.cc: Various formatting fixes.
4783 (class Parser_closure): Change language_stack_ from a vector of
4784 std::string to one of Version_script_info::Language. Adjust all
4785 uses accordingly.
4786 (class Lazy_demangler): Remove.
4787 (struct Version_expression): Change language from std::string to
4788 Version_script_info::Language.
4789 (Version_script_info::Version_script_info): New function.
4790 (Version_script_info::~Version_script_info): Don't call clear.
4791 (Version_script_info::finalize): New function.
4792 (Version_script_info::build_lookup_tables): New function.
4793 (Version_script_info::build_expression_list_lookup): New
4794 function.
4795 (Version_script_info::get_symbol_version_helper): Rewrite to use
4796 lookup tables.
4797 (Version_script_info::print_expression_list): Adjust to use
4798 Version_script_info::Language.
4799 (script_push_lex_into_version_mode): Check that the version script
4800 has not been finalized.
4801 (version_script_push_lang): Change language string to
4802 Version_script_info::Language.
4803 * options.cc (Command_line::version_script): New function.
4804 * options.h (class General_options): Add finalize_dynamic_list
4805 function. Change version_script from declaration to definition.
4806 * testsuite/ver_test_4.script: Remove duplicate def of t2_2.
4807 * testsuite/version_script.map: Remove duplicate def of foo.
4808 * testsuite/Makefile.am (ver_matching_def.so): Depend upon
4809 version_script.map.
4810 * testsuite/Makefile.in: Rebuild.
4811
818bf354
ILT
48122009-12-30 Ian Lance Taylor <iant@google.com>
4813
4814 PR 10843
4815 * target-reloc.h (relocate_for_relocatable): When copying a reloc,
4816 if the input symbol index is 0, make the output symbol index 0.
4817
ebcc8304
ILT
48182009-12-30 Ian Lance Taylor <iant@google.com>
4819
4820 PR 10670
4821 * options.h (class General_options): Add -x/--discard-all.
4822 * object.cc (Sized_relobj::do_count_local_symbols): Handle
4823 --discard-all. If the local symbol needs a dynamic entry, check
4824 that before handling --discard-locals.
4825
176fe33f
ILT
48262009-12-30 Ian Lance Taylor <iant@google.com>
4827
bb321bb1
ILT
4828 PR 10450
4829 * output.cc (Output_segment::Output_segment): If PT_TLS, set the
4830 flags to PF_R.
4831 (Output_segment::add_output_section): Don't change the flags if
4832 the type is PT_TLS.
4833
176fe33f
ILT
4834 PR 10450
4835 * dynobj.cc (Dynobj::create_gnu_hash_table): Add symbols to the
4836 GNU hash table if they need a dynamic value. Otherwise, don't add
4837 them if they are defined in a dynamic object or are forced local.
4838
e8cd95c7
ILT
48392009-12-29 Ian Lance Taylor <iant@google.com>
4840
1b81fb71
ILT
4841 PR 10450
4842 * layout.cc (Layout::create_dynamic_symtab): Only set entsize of
4843 .gnu.hash table for a 32-bit target.
4844
8d6d383d
ILT
4845 PR 10450
4846 * symtab.h (Symbol::needs_dynsym_entry): A symbol in both a
4847 regular and a dynamic object only needs a dynamic symbol table
4848 entry if it is externally visible.
4849
e785ec03
ILT
4850 PR 10450
4851 * i386.cc (class Target_i386): Initialize global_offset_table_ in
4852 constructor. Add global_offset_table_ field.
4853 (Target_i386::got_section): Set global_offset_table_.
4854 (Target_i386::do_finalize_sections): Set global_offset_table_
4855 size.
4856 * x86_64.cc (class Target_x86_64): Initialize global_offset_table_
4857 in constructor. Add global_offset_table_ field.
4858 (Target_x86_64::got_section): Set global_offset_table_.
4859 (Target_x86_64::do_finalize_sections): Set global_offset_table_
4860 size.
4861
1a2dff53
ILT
4862 * layout.cc (Layout::Layout): Initialize increase_relro_.
4863 (Layout::get_output_section): Add is_relro, is_last_relro, and
4864 is_first_non_relro parameters. Change all callers.
4865 (Layout::choose_output_section): Likewise.
4866 (Layout::add_output_section_data): Likewise.
4867 (Layout::make_output_section): Likewise.
4868 (Layout::set_segment_offsets): Clear increase_relro when using a
4869 linker script.
4870 * layout.h (class Layout): Add increase_relro method. Add
4871 increase_relro_ field. Update declarations.
4872 * output.cc (Output_section::Output_section): Initialize
4873 is_last_relro_ and is_first_non_relro_.
4874 (Output_segment::add_output_section): Group relro sections is
4875 do_sort is true. Handle is_last_relro and is_first_non_relro.
4876 (Output_segment::maximum_alignment): Remove relro handling.
4877 (Output_segment::set_section_addresses): Add increase_relro
4878 parameter. Change all callers. Add initial alignment to align
4879 relro sections on separate page. Remove old relro handling.
4880 (Output_segment::set_section_list_addresses): Remove in_relro
4881 parameter. Change all callers.
4882 (Output_segment::set_offset): Add increase parameter. Change all
4883 callers. Remove old relro handling.
4884 * output.h (class Output_section): Add new methods: is_last_relro,
4885 set_is_last_relro, is_first_non_relro, set_is_first_non_relro.
4886 Add is_last_relro_ and is_first_non_relro_ fields.
4887 * i386.cc (Target_i386::got_section): Don't call set_is_relro.
4888 Create separate .got.plt section. Call increase_relro.
4889 * x86_64.cc (Target_x86_64::got_section): Likewise.
4890 * testsuite/relro_script_test.t: Add .got.plt.
4891
f0ba79e2
ILT
4892 PR 10450
4893 * layout.cc (Layout::Layout): Initialize dynamic_symbol_ field.
4894 (Layout::create_initial_dynamic_sections): Set dynamic_symbol_.
4895 (Layout::finalize): Call set_dynamic_symbol_size.
4896 (Layout::set_dynamic_symbol_size): New function.
4897 * layout.h (class Layout): Add dynamic_symbol_ field. Declare
4898 set_dynamic_symbol_size.
4899
e8cd95c7
ILT
4900 PR 10450
4901 * output.h (class Output_section): Add is_entsize_zero_ field.
4902 * output.cc (Output_section::Output_section): Initialize
4903 is_entsize_zero_.
4904 (Output_section::set_entsize): If two different entsizes are
4905 requested, force it to zero.
4906 (Output_section::add_input_section): Set flags for .debug_str
4907 before updating section flags. Set entsize.
4908 (Output_section::update_flags_for_input_section): Set SHF_MERGE
4909 and SHF_STRING if all input sections have those flags.
4910
3e1b9a8a
RÁE
49112009-12-29 Rafael Espindola <espindola@google.com>
4912
4913 * main.cc (main): Fix the sys time reporting.
e8cd95c7
ILT
4914 * workqueue.cc (Workqueue::find_and_run_task): Fix the sys time
4915 reporting.
3e1b9a8a 4916
3dcad376
ST
49172009-12-29 Sriraman Tallam <tmsriram@google.com>
4918
4919 * options.cc (General_options::parse_version): Allow -v to exit
4920 without an error if there is nothing to link.
4921
084e2665
ILT
49222009-12-29 Ian Lance Taylor <iant@google.com>
4923
4924 * configure.ac: Set the MCMODEL_MEDIUM conditional to false if
4925 using a version of gcc before 4.1.
4926 * configure: Rebuild.
4927
250acde3
CD
49282009-12-28 Chris Demetriou <cgd@google.com>
4929
4930 * attributes.cc (Output_attributes_section_data::do_write): Use
4931 std::vector::front rather than std::vector::data.
4932
99fff23b
ILT
49332009-12-28 Ian Lance Taylor <iant@google.com>
4934
4935 * symtab.h (class Symbol_table): Add enum Defined.
4936 * resolve.cc (Symbol_table::should_override): Add defined
4937 parameter. Change all callers. Test whether object is NULL
4938 before calling a method on it.
4939 (Symbol_table::report_resolve_problem): Add defined parameter.
4940 Change all callers.
4941 (Symbol_table::should_override_with_special): Likewise.
4942 * symtab.cc (Symbol_table::define_in_output_data): Add defined
4943 parameter. Change all callers.
4944 (Symbol_table::do_define_in_output_data): Likewise.
4945 (Symbol_table::define_in_output_segment): Likewise.
4946 (Symbol_table::do_define_in_output_segment): Likewise.
4947 (Symbol_table::define_as_constant): Likewise.
4948 (Symbol_table::do_define_as_constant): Likewise.
4949 * script.h (class Symbol_assignment): Add is_defsym parameter to
4950 constructor; change all callers.
4951 * script.cc (Script_options::add_symbol_assignment): Add is_defsym
4952 parameter. Change all callers. Add is_defsym_ field.
4953 (class Parser_closure): Add parsing_defsym parameter to
4954 constructor; change all callers. Add parsing_defsym accessor
4955 function. Add parsing_defsym_ field.
4956
556bd683
ILT
49572009-12-28 Ian Lance Taylor <iant@google.com>
4958
4959 * gold.cc (queue_middle_tasks): Fix formatting.
fa618ee4 4960 * object.cc (Relobj::is_section_name_included): Likewise.
556bd683 4961
1782c879
ILT
49622009-12-23 Ian Lance Taylor <iant@google.com>
4963
4964 * i386.cc (Target_i386::do_calls_non_split): Recognize
4965 -fsplit-stack prologue for a function with a static chain.
cbc999b9
ILT
4966 * x86_64.cc (Target_x86_64::do_calls_non_split): Recognize
4967 -fsplit-stack prologue when using %r11.
1782c879 4968
329ca2b1
ST
49692009-12-21 Sriraman Tallam <tmsriram@google.com>
4970
4971 * options.cc (General_options::parse_version): Make -v continue and do
4972 the link like GNU ld does.
4973
d675ff46
RÁE
49742009-12-17 Rafael Avila de Espindola <espindola@google.com>
4975
4976 * Makefile.am (CCFILES): Add timer.cc.
4977 (HFILES): Add timer.h.
4978 * configure.ac: Check for sysconf and times.
4979 * main.cc: include timer.h.
4980 (main): Use Timer instead of get_run_time.
4981 * timer.cc: New.
4982 * timer.h: New.
4983 * workqueue.cc: include timer.h.
4984 (Workqueue::find_and_run_task):
4985 Report user, sys and wall time.
4986 * Makefile.in: Regenerate.
4987 * config.in: Regenerate.
4988 * configure: Regenerate.
4989
d6344fb5
DK
49902009-12-16 Doug Kwan <dougkwan@google.com>
4991
4992 * arm.cc (Arm_relobj::scan_sections_for_stubs): Exclude ICF-eliminated
4993 sections.
4994 * object.cc (Sized_relobj::do_finalize_local_symbols): Handle
4995 relaxed input sections.
4996 * output.cc (Output_section::find_relaxed_input_section): Change
4997 return type to Output_relaxed_input_section pointer. Adjust code
4998 for new type of relaxed_input_section_map_.
4999 * output.h (Output_section::find_relaxed_input_section): Change
5000 return type to Output_relaxed_input_section pointer.
5001 (Output_section::Output_relaxed_input_section_by_input_section_map):
5002 New type.
5003 (Output_section::relaxed_input_section_map_): Change type to
5004 Output_section::Output_relaxed_input_section_by_input_section_map.
5005 * symtab.cc (Symbol_table::compute_final_value): Handle relaxed
5006 input section.
5007
0e0d5469
ILT
50082009-12-15 Ian Lance Taylor <iant@google.com>
5009
5010 * layout.cc (Layout::create_shstrtab): Only write out after input
5011 sections if we are compressing debug sections.
5012
0649a889
ILT
50132009-12-15 Ian Lance Taylor <iant@google.com>
5014
5015 * archive.cc (Archive::add_symbols): Only look up a symbol without
5016 a version if there is, in fact, a version.
5017
2ea97941
ILT
50182009-12-14 Ian Lance Taylor <iant@google.com>
5019
5020 Revert -Wshadow changes, all changes from:
5021 2009-12-11 Doug Kwan <dougkwan@google.com>
5022 2009-12-11 Nick Clifton <nickc@redhat.com>
5023 * configure.ac: Remove -Wshadow when setting WARN_CXXFLAGS.
5024
b0eec2cc
DK
50252009-12-11 Doug Kwan <dougkwan@google.com>
5026
5027 * arm.cc (Target_arm::do_finalize_sections): Fix build breakage
5028 due to -Wshadow.
5029 * attributes.cc (Object_attribute::size): Ditto.
5030 (Attributes_section_data::size): Ditto.
5031 (Attributes_section_data::Attributes_section_data): Ditto.
5032 (Output_attributes_section_data::do_write): Ditto.
5033 * attributes.h (Object_attribute::set_type): Ditto.
5034 * testsuite/tls_test_main.cc (safe_lock, safe_unlock): Ditto.
5035
91d6fa6a
NC
50362009-12-11 Nick Clifton <nickc@redhat.com>
5037
5038 * archive.cc: Fix shadowed variable warnings.
5039 * arm.cc: Likewise.
5040 * compressed_output.cc: Likewise.
5041 * compressed_output.h: Likewise.
5042 * configure: Likewise.
5043 * dwarf_reader.cc: Likewise.
5044 * dynobj.cc: Likewise.
5045 * dynobj.h: Likewise.
5046 * ehframe.cc: Likewise.
5047 * ehframe.h: Likewise.
5048 * errors.cc: Likewise.
5049 * expression.cc: Likewise.
5050 * fileread.cc: Likewise.
5051 * fileread.h: Likewise.
5052 * freebsd.h: Likewise.
5053 * i386.cc: Likewise.
5054 * icf.cc: Likewise.
5055 * incremental.h: Likewise.
5056 * layout.cc: Likewise.
5057 * layout.h: Likewise.
5058 * mapfile.cc: Likewise.
5059 * merge.cc: Likewise.
5060 * merge.h: Likewise.
5061 * object.cc: Likewise.
5062 * object.h: Likewise.
5063 * options.h: Likewise.
5064 * output.cc: Likewise.
5065 * output.h: Likewise.
5066 * parameters.cc: Likewise.
5067 * plugin.cc: Likewise.
5068 * powerpc.cc: Likewise.
5069 * reduced_debug_output.cc: Likewise.
5070 * reduced_debug_output.h: Likewise.
5071 * reloc.cc: Likewise.
5072 * reloc.h: Likewise.
5073 * resolve.cc: Likewise.
5074 * script-sections.cc: Likewise.
5075 * script.cc: Likewise.
5076 * script.h: Likewise.
5077 * sparc.cc: Likewise.
5078 * symtab.cc: Likewise.
5079 * symtab.h: Likewise.
5080 * target-select.cc: Likewise.
5081 * target-select.h: Likewise.
5082 * token.h: Likewise.
5083 * workqueue.cc: Likewise.
5084 * workqueue.h: Likewise.
5085 * x86_64.cc: Likewise.
5086
a0351a69
DK
50872009-12-10 Doug Kwan <dougkwan@google.com>
5088
5089 * arm.cc (attributes.h): New include.
5090 (Arm_relobj::Arm_relobj): Initialize attributes_section_data_.
5091 (Arm_relobj::~Arm_relobj): Delete object pointed by
5092 attributes_section_data_.
5093 (Arm_relobj::attributes_section_data): New method definition.
5094 (Arm_relobj::attributes_section_data_): New data member declaration.
5095 (Arm_dynobj::Arm_dynobj): Initialize attributes_section_data_.
5096 (Arm_dynobj::~Arm_dynobj): Delete object pointed by
5097 attributes_section_data_.
5098 (Arm_dynobj::attributes_section_data): New method definition.
5099 (Arm_dynobj::attributes_section_data_): New data member declaration.
5100 (Target_arm::Target_arm): Initialize attributes_section_data_. Change
5101 initialization value of may_use_blx_ to false.
5102 (Target_arm::using_thumb2, Target_arm::using_thumb_only,
5103 Target_arm::may_use_arm_nop, Target_arm::may_use_thumb2_nop): Use
5104 object attributes to compute results instead of hard-coding.
5105 (Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order,
5106 Target_arm::get_secondary_compatible_arch,
5107 Target_arm::set_secondary_compatible_arch
5108 Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name,
5109 Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes):
5110 New method declarations.
5111 (Target_arm::get_aeabi_object_attribute): New method definition.
5112 (Target_arm::attributes_section_data_): New data member declaration.
5113 (read_arm_attributes_section): New template definition.
5114 (Arm_relobj::do_read_symbols): Read attributes section if it exists.
5115 (Arm_dynobj::do_read_symbols): Ditto.
5116 (Target_arm::do_finalize_sections): Merge attributes sections from
5117 input. Check for BLX use after attributes section merging.
5118 Fix __exidx_start and __exidx_end visibility. Create an
5119 .ARM.attributes section if necessary.
5120 (Target_arm::get_secondary_compatible_arch,
5121 Target_arm::set_secondary_compatible_arch,
5122 Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name,
5123 Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes,
e1df38aa 5124 Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order):
a0351a69
DK
5125 New method definitions.
5126
b59befec
ILT
51272009-12-09 Ian Lance Taylor <iant@google.com>
5128
5129 * plugin.cc (Plugin::load): Don't cast from void* to a function
5130 pointer.
5131
1276bc89
ILT
51322009-12-09 Ian Lance Taylor <iant@google.com>
5133
5134 * dynobj.cc (Sized_dynobj::do_read_symbols): Clear version
5135 information fields.
5136
2f2de248
L
51372009-12-09 H.J. Lu <hongjiu.lu@intel.com>
5138
5139 * testsuite/Makefile.am (two_file_shared_1_pic_2_test_DEPENDENCIES):
5140 Replace two_file_shared_1.so with two_file_shared_2.so.
5141 * testsuite/Makefile.in: Regenerated.
5142
4f787271
DK
51432009-12-08 Doug Kwan <dougkwan@google.com>
5144
5145 * Makefile.am (CCFILES): Add attributes.cc and int_encoding.cc.
5146 (HFILES): Add attributes.h and int_encoding.h.
5147 * Makefile.in: Regenerate.
5148 * dwarf_reader.cc (read_unsigned_LEB_128, read_signed_LEB_128): Move
5149 function definitions to int_encoding.cc
5150 * dwarf_reader.h (read_unsigned_LEB_128, read_signed_LEB_128): Move
5151 prototypes to int_encoding.h
5152 * reduced_debug_output.cc (int_encoding.h): New include.
5153 (write_unsigned_LEB_128, get_length_as_unsigned_LEB_128): Move
5154 function definitions to int_encoding.cc
5155 (insert_into_vector, read_from_pointer): Move template definitions to
5156 int_encoding.h
5157 * attributes.cc: New file.
5158 * attributes.h: New file.
5159 * int_encoding.cc: New file.
5160 * int_encoding.h: New file.
5161
20b52f1a
RÁE
51622009-12-07 Rafael Avila de Espindola <espindola@google.com>
5163
5164 PR gold/11055
5165 * incremental-dump.cc (dump_incremental_inputs): New.
5166 (main): Use dump_incremental_inputs.
5167
53d7974c
L
51682009-12-07 H.J. Lu <hongjiu.lu@intel.com>
5169
5170 PR gold/10893
5171 * i386.cc (Target_i386::Scan::globa): Use is_func instead of
5172 checking elfcpp::STT_FUNC.
5173 (Target_i386::Relocate::relocate): Likewise.
5174 * x86_64.cc (Target_x86_64::Scan::global): Likewise.
5175
5176 * symtab.cc (Symbol_table::sized_write_symbol): Turn IFUNC
5177 symbols from shared libraries into normal FUNC symbols.
5178
5179 * symtab.h (Symbol): Add is_func and use it.
5180
05a352e6
DK
51812009-12-05 Doug Kwan <dougkwan@google.com>
5182
5183 * arm.cc (Target_arm::arm_info): Initialize new fields
5184 attributes_section and attributes_vendor.
5185 * i386.cc (Target_i386::i386_info): Same.
5186 * object.cc (Sized_relobj::do_layout): Skip attribute section.
5187 * gold/powerpc.cc (Target_powerpc::powerpc_info): Initialize new
5188 fields attributes_section and attributes_vendor.
53d7974c 5189 * sparc.cc (Target_sparc::sparc_info): Same.
05a352e6
DK
5190 * target.h (Target::attributes_section, Target::attributes_vendor,
5191 Target::is_attributes_section, Target::attribute_arg_type,
5192 Target::attributes_order): New method definitions.
5193 (Target::Target_info::attributes_section,
5194 Target::Target_info::attributes_vendor): New fields.
5195 (Target::do_attribute_arg_type, Target::do_attributes_order): New
5196 virtual method definitions.
5197 * x86_64.cc (Target_x86_64::x86_64_info): Initialize new fields
5198 attributes_section and attributes_vendor.
5199 * testsuite/testfile.cc (Target_test::test_target_info): Same.
5200
f4e5969c
DK
52012009-12-05 Doug Kwan <dougkwan@google.com>
5202
5203 * arm.cc: Update comments about interworking and stub generation.
5204 (Target_arm::Relocate::reloc_is_non_pic): Update list of relocations
5205 considered as non-PIC.
5206 (Arm_relocate_functions::base_abs): Fix formatting.
5207 (Arm_relocate_functions::got_prel): Fix comment. Change interface
5208 of function to use GOT entry address instead of offset.
5209 (Target_arm::Scan::global): Issue an error if a symbol would need a
5210 PLT does not get one because it is untyped. Remove code to create
5211 dynamic symbols for relative branches.
5212 (Target_arm::Relocate::relocate: Use 0 instead of false since function
5213 takes unsigned integer instead of boolean.
5214
1abce4a6
L
52152009-12-05 H.J. Lu <hongjiu.lu@intel.com>
5216
5217 * testsuite/Makefile.am (constructor_test_LDADD): New. Empty.
5218 (two_file_test_LDADD): Likewise.
5219 (common_test_1_LDADD): Likewise.
5220 (exception_test_LDADD) Likewise.
5221 (weak_test_LDADD): Likewise.
5222 (many_sections_test_LDADD): Likewise.
5223 (initpri1_LDADD): Likewise.
5224 (script_test_1_LDADD): Likewise.
5225 (script_test_2_LDADD): Likewise.
5226 (justsyms_LDADD): Likewise.
5227 (binary_test_LDADD): Likewise.
5228 (large_LDADD): Likewise.
5229 * testsuite/Makefile.in: Regenerated.
5230
adcf2816 52312009-12-04 H.J. Lu <hongjiu.lu@intel.com>
1abce4a6 5232
adcf2816
L
5233 * resolve.cc (symbol_to_bits): Treat STB_GNU_UNIQUE as STB_GLOBAL.
5234 (Symbol_table::override_with_special): Likewise.
5235 (Symbol_table::add_from_object): Likewise.
5236
28e67f5d
RÁE
52372009-12-04 Rafael Avila de Espindola <espindola@google.com>
5238
5239 * incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
5240 Don't set the data_offset twice.
5241
ae10a101
RÁE
52422009-12-04 Rafael Avila de Espindola <espindola@google.com>
5243
5244 * testsuite/Makefile.in: Regenerate.
5245
f59f41f3
DK
52462009-12-03 Doug Kwan <dougkwan@google.com>
5247
5248 * arm.cc: Remove comment about missing .ARM.exidx section symbols.
5249 (Target_arm::do_finalize_sections): Add parameter for symbol table
5250 pointer. Add __exidx_start and __exidx_end symbols as appropriate.
5251 * i386.cc (Target_i386::do_finalize_sections): Add an additional
5252 parameter for symbol table pointer.
5253 * layout.cc (Layout::finalize): Call Target::finalize_sections with
5254 an additional parameter for a pointer to symbol table.
5255 * powerpc.cc (Target_powerpc::do_finalize_sections): Add an additional
5256 parameter for a symbol table pointer.
5257 * sparc.cc (Target_sparc::do_finalize_sections): Ditto.
5258 * target.h (Target::finalize_sections, Target::do_finalize_sections):
5259 Ditto.
5260 * x86_64.cc (Target_x86_64::do_finalize_sections): Add an additional
5261 parameter for a symbol table pointer.
5262
ca55d848
RÁE
52632009-12-03 Rafael Avila de Espindola <espindola@google.com>
5264
5265 * incremental.cc (Incremental_inputs_header)
5266 (Incremental_inputs_header_write, Incremental_inputs_entry)
5267 (Incremental_inputs_entry_write): Move ...
5268 * incremental.h (Incremental_inputs_header)
5269 (Incremental_inputs_header_write, Incremental_inputs_entry)
5270 (Incremental_inputs_entry_write): here.
5271
3aec4f9c
RÁE
52722009-12-02 Rafael Avila de Espindola <espindola@google.com>
5273
5274 * incremental.cc (make_sized_incremental_binary): Set the target.
5275 Error if it is incompatible.
5276 * output.h (Output_file): Add filename method.
5277
9c0ae74d
RÁE
52782009-12-02 Rafael Avila de Espindola <espindola@google.com>
5279
5280 * incremental.cc (Incremental_inputs_entry): Remove unused argument
5281 from the get_* methods.
5282
a45500ae
RÁE
52832009-12-02 Rafael Avila de Espindola <espindola@google.com>
5284
5285 * incremental-dump.cc (main): Check that the offeset of a script is 0.
5286 * incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
5287 Write 0 for the data_offset of scripts.
5288
325e6408
RÁE
52892009-12-02 Rafael Avila de Espindola <espindola@google.com>
5290
5291 * testsuite/Makefile.am: Add the incremental_test.sh test.
5292 * testsuite/incremental_test.sh: New.
5293 * testsuite/incremental_test_1.c: New.
5294 * testsuite/incremental_test_2.c: New.
5295
954c3e2e
RÁE
52962009-12-01 Rafael Avila de Espindola <espindola@google.com>
5297
5298 * incremental-dump.cc (main): Fix typos.
5299
f8086623
RÁE
53002009-11-27 Rafael Avila de Espindola <espindola@google.com>
5301
5302 PR gold/11025
5303 * incremental-dump.cc (main): Use llu to print 64 bit values.
5304
3b0dd6ac
L
53052009-11-26 Per Øyvind Karlsen <peroyvind@mandriva.org>
5306 H.J. Lu <hongjiu.lu@intel.com>
5307
5308 * Makefile.am (incremental_dump_DEPENDENCIES): Add $(THREADSLIB)
5309 $(LIBDL).
5310 (incremental_dump_LDADD): Likewise.
5311 * Makefile.in: Regenerated.
5312
a6d1ef57 53132009-11-25 Doug Kwan <dougkwan@google.com>
e1df38aa 5314
a6d1ef57
DK
5315 Revert:
5316
5317 2009-11-25 Doug Kwan <dougkwan@google.com>
5318
5319 * arm.cc (Target_arm::Target_arm): Move method definition
5320 outside of class definition. Add code to handle
5321 --target1-rel, --target1-abs and --target2= options.
5322 (Target_arm::get_reloc_reloc_type): Change method to be
5323 non-static and const.
5324 (Target_arm::target1_is_rel_, Target_arm::target2_reloc_):
5325 New data member declaration.
5326 (Target_arm::Scan::local, Target_arm::Scan::global,
5327 Target_arm::Relocate::relocate,
5328 Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
5329 Adjust call to Target_arm::get_real_reloc_type.
5330 (Target_arm::get_real_reloc_type): Use command line options
5331 to determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
5332 * options.h (--target1-rel, --target1-abs, --target2): New
5333 ARM-only options.
5334
50aeb7d4
DK
53352009-11-25 Doug Kwan <dougkwan@google.com>
5336
5337 * arm.cc (Target_arm::Target_arm): Move method definition outside of
5338 class definition. Add code to handle --target1-rel, --target1-abs
5339 and --target2= options.
5340 (Target_arm::get_reloc_reloc_type): Change method to be non-static
5341 and const.
5342 (Target_arm::target1_is_rel_, Target_arm::target2_reloc_): New data
5343 member declaration.
5344 (Target_arm::Scan::local, Target_arm::Scan::global,
5345 Target_arm::Relocate::relocate,
5346 Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Adjust
5347 call to Target_arm::get_real_reloc_type.
5348 (Target_arm::get_real_reloc_type): Use command line options to
5349 determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
5350 * options.h (--target1-rel, --target1-abs, --target2): New ARM-only
5351 options.
5352
51938283
DK
53532009-11-25 Doug Kwan <dougkwan@google.com>
5354
5355 * arm.cc (Target_arm::may_use_thumb2_nop): New method definition.
5356 (Arm_relocate_functions::thumb_branch_common): New metod declaration.
5357 (Arm_relocate_functions::abs12, Arm_relocate_functions::abs16): Fix
5358 formatting.
5359 (Arm_relocate_functions::thm_call): Replace body with a call to
5360 Arm_relocate_functions::thumb_branch_common.
5361 (Arm_relocate_functions::thm_jump24,
5362 Arm_relocate_functions::thm_xpc22): New method definitions.
5363 (Arm_relocate_functions::thumb_branch_common): New method definition.
5364 (Reloc_stub::stbu_type_for_reloc): Fix incorrect uses of bit-wise-or
5365 operator.
5366 (Target_arm::Relocate::relocate): Adjust call to thm_call.
5367 Add code to handle R_ARM_THM_XPC22 and R_ARM_THM_JUMP24.
5368
e2b8f3c4
RÁE
53692009-11-24 Rafael Avila de Espindola <espindola@google.com>
5370
5371 * Makefile.am: Build incremental-dump
5372 * Makefile.in: Regenerate.
5373 * incremental-dump.cc: New.
5374 * incremental.cc (Incremental_inputs_header_data,
5375 Incremental_inputs_entry_data): Move to incremental.h
5376 * incremental.h: (Incremental_inputs_header_data,
5377 Incremental_inputs_entry_data): Move from incremental.cc
5378
bcba9aec
RÁE
53792009-11-24 Rafael Avila de Espindola <espindola@google.com>
5380
5381 * incremental.cc (Incremental_inputs_header,
5382 Incremental_inputs_header_write, Incremental_inputs_entry,
5383 Incremental_inputs_entry_write): Add a typedef with the data type.
5384
7c3afe08
RÁE
53852009-11-24 Rafael Avila de Espindola <espindola@google.com>
5386
5387 * incremental.cc (Incremental_inputs_header,
5388 Incremental_inputs_header_write, Incremental_inputs_entry,
5389 Incremental_inputs_entry_write): Update comment about which
5390 type has the filed descriptions.
5391
d204b6e9
DK
53922009-11-15 Doug Kwan <dougkwan@google.com>
5393
5394 * arm.cc (Target_arm::may_use_arm_nop): New method definition.
5395 (Arm_relocate_functions::arm_branch_common): Change method defintion
5396 in class definition to a method declaration and update list of formal
5397 parameters.
5398 (Arm_relocate_functions::plt32, Arm_relocate_functions::call,
5399 Arm_relocation_functions::jump24): Adjust call to
5400 Arm_relocate_functions::arm_branch_common. Update list of formal
5401 parameters.
5402 (Arm_relocate_functions::xpc25): New method definition.
5403 (Arm_relocate_functions::arm_branch_common): Move method defintion
5404 out from class definition. Use stubs for mode-switching and extending
5405 branch ranges.
5406 (Target_arm::Relocate::relocate): Handle weakly-undefined symbols
5407 specially. Change code to enable use of stubs in ARM branches.
5408
43d12afe
DK
54092009-11-10 Doug Kwan <dougkwan@google.com>
5410
5411 * arm.cc (Arm_relobj::do_relocate_sections): Remove options parameter
5412 in method declaration.
5413 (Target_arm::relocate_stub): New method declaration.
5414 (Target_arm::default_target): Change to return a pointer instead of
5415 a const reference.
5416 (Reloc_stub::stub_type_for_reloc): Adjust for the change in
5417 Target_arm::default_target.
5418 (Arm_Relobj::do_relocate_sections): Remove options paramater in
5419 method definition.
5420 (Target_arm::relocate_section): Adjust view.
5421 (Target_arm::relocate_stub): New method definition.
5422
ac33a407
DK
54232009-11-10 Doug Kwan <dougkwan@google.com>
5424
5425 * i386.cc (Target_i386::do_calls_non_split): Add a cast to avoid
5426 a format warning.
5427 * incremental.cc (open_incremental_binary): Initialized local
5428 variables to avoid warnings.
5429 * object.cc (make_elf_object): Ditto.
5430 * x86_64.cc (Target_x86_64::do_calls_non_split): Add a cast to avoid
5431 a format warning.
e1df38aa 5432
88ee28e9
L
5433009-11-09 H.J. Lu <hongjiu.lu@intel.com>
5434
5435 PR gold/10930
5436 * testsuite/plugin_test.c: Include "config.h".
5437
2daedcd6
DK
54382009-11-09 Doug Kwan <dougkwan@google.com>
5439
5440 * arm.cc (Target_arm::fake_relnum_for_stubs): New constant.
5441 (arm_symbol_value): Remove.
5442 (Arm_relocate_functions::arm_branch_common,
5443 Arm_relocate_functions::abs8, Arm_relocate_functions::thm_abs5,
5444 Arm_relocate_functions::abs12, Arm_relocate_functions::abs16,
5445 Arm_relocate_functions::abs32, Arm_relocate_functions::rel32,
5446 Arm_relocate_functions::thm_call, Arm_relocate_functions::plt32,
5447 Arm_relocate_functions::call, Arm_relocate_functions::jump24,
5448 Arm_relocate_functions::prel31, Arm_relocate_functions::mov_abs_nc,
5449 Arm_relocate_functions::movt_abs, Arm_relocate_functions::movw_abs_nc,
5450 Arm_relocate_functions::thm_mobw_abs_nc,
5451 Arm_relocate_functions::thm_mov_abs,
5452 Arm_relocate_functions::movw_prel_nc,
5453 Arm_relocate_functions::thm_movt_abs,
5454 Arm_relocate_functions::movt_prel,
5455 Arm_relocate_functions::thm_movw_prel_nc,
5456 Arm_relocate_functions::thm_movt_prel): Adjust callers of the above.
5457 (Target_arm::Relocate::relocate): Only decompose address into two
5458 parts if relocation type uses the thumb-bit and pass the actual
5459 bit instead of a flag indicating that the thumb-bit is used. Adjust
5460 calls to methods in Arm_relocate_functions for this change.
5461
1276bc89 54622009-11-08 Ian Lance Taylor <iant@google.com>
3e4afc80
ILT
5463
5464 PR 10925
5465 * reloc.cc: Instantiate
5466 Sized_relobj::initialize_input_to_output_maps and
5467 Sized_relobj:free_input_to_output_maps.
5468
e53ad1b5
ILT
54692009-11-06 Ian Lance Taylor <iant@google.com>
5470
5471 PR 10876
5472 * defstd.cc (in_segment): Set only_if_ref true for "end".
5473
eb44217c
DK
54742009-11-06 Doug Kwan <dougkwan@google.com>
5475
5476 * arm.cc (class Reloc_stub): Correct a comment.
5477 (Target_arm::Target_arm): Initialize arm_input_section_map_.
5478 (Target_arm::scan_section_for_stubs): New method declaration.
5479 (Target_arm::do_make_elf_object, Target_arm::do_make_output_section):
5480 Change methods from private to protected.
5481 (Target_arm::do_may_relax): New method definition.
5482 (Target_arm::do_relax, Target_arm::group_sections,
5483 Target_arm::scan_reloc_for_stub,
5484 Target_arm::scan_reloc_section_for_stubs): New method declarations.
5485 (Target_arm::arm_input_section_map_): New data member declaration.
5486 (Target_arm::scan_reloc_for_stub,
5487 Target_arm::scan_reloc_section_for_stubs,
5488 Target_arm::scan_section_for_stubs, Target_arm::group_sections,
5489 Target_arm::do_relax): New method definitions.
5490
5d329b7d
ILT
54912009-11-06 Mikolaj Zalewski <mikolaj@google.com>
5492
5493 * configure.ac: Check for (struct stat)::st_mtim
5494 * fileread.cc (File_read::get_mtime): Use st_mtim if available.
5495 * config.in: Regenerate.
5496 * configure: Regenerate.
5497
96a0d71b
ILT
54982009-11-05 Ian Lance Taylor <iant@google.com>
5499
5500 PR 10910
5501 * output.cc (Output_segment::add_output_section): Add missing
5502 return statement.
5503
594c8e5e
ILT
55042009-11-04 Ian Lance Taylor <iant@google.com>
5505
5506 PR 10880
5507 * object.h (class Object): Add is_needed and set_is_needed
5508 methods. Add is_needed_ field. Make bool fields into bitfields.
5509 * symtab.cc (Symbol_table::set_dynsym_indexes): If a symbol is
5510 defined in a dynamic object and referenced by a regular object,
5511 set is_needed for the dynamic object.
5512 * layout.cc (Layout::finish_dynamic_section): Don't add DT_NEEDED
5513 if the file is marked with as_needed and it is not needed.
5514
22b127cc
ILT
55152009-11-04 Ian Lance Taylor <iant@google.com>
5516
5517 PR 10887
5518 * arm.cc (Target_arm::do_finalize_sections): Don't add dynamic
5519 tags if data is discarded by linker script.
5520 * i386.cc (Target_i386::do_finalize_sections): Likewise.
5521 * powerpc.cc (Target_powerpc::do_finalize_sections): Likewise.
5522 * sparc.cc (Target_sparc::do_finalize_sections): Likewise.
5523 * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
5524
f5c870d2
ILT
55252009-11-04 Ian Lance Taylor <iant@google.com>
5526
5527 * layout.cc (Layout::get_output_section): Add is_interp and
5528 is_dynamic_linker_section parameters. Change all callers.
5529 (Layout::choose_output_section): Likewise.
5530 (Layout::make_output_section): Likewise.
5531 (Layout::add_output_section_data): Add is_dynamic_linker_section
5532 parameter. Change all callers.
5533 * layout.h (class Layout): Update declarations.
5534 * output.h (class Output_section): Add is_interp, set_is_interp,
5535 is_dynamic_linker_section, set_is_dynamic_linker_section methods.
5536 Add is_interp_, is_dynamic_linker_section_ fields. Change
5537 generate_code_fills_at_write_ to a bitfield.
5538 * output.cc (Output_section::Output_sections): Initialize new
5539 fields.
5540 (Output_segment::add_output_section): Add do_sort parameter.
5541 Change all callers.
5542
1ae4d23b
ILT
55432009-11-03 Ian Lance Taylor <iant@google.com>
5544
5545 PR 10860
5546 * options.h (class General_options): Add --warn-common.
5547 * resolve.cc (Symbol_table::resolve): Handle --warn-common when
5548 merging two common symbols.
5549 (Symbol_table::should_override): Handle --warn-common when merging
5550 a common symbol with a defined symbol. Use report_resolve_problem
5551 for multiple definitions.
5552 (Symbol_table::report_resolve_problem): New function.
5553 * symtab.h (class Symbol_table): Declare report_resolve_problem.
5554
55da9579
DK
55552009-11-03 Doug Kwan <dougkwan@google.com>
5556
5557 * arm.cc (Target_arm::Target_arm): Initialize stub_tables_ and
5558 stub_factory_.
5559 (Target_arm::stub_factory): New method definition.
5560 (Target_arm::new_arm_input_section,
5561 Target_arm::find_arm_input_section, Target_arm::new_stub_table,
5562 Target_arm::reloc_uses_thumb_bit): New method declarations.
e1df38aa 5563 (Target_arm::Stub_table_list, Target_arm::Arm_input_section_map):
55da9579
DK
5564 New type definitions.
5565 (Target_arm::stub_tables_, Target_arm::stub_factory_): New data
5566 member declarations.
5567 (Target_arm::reloc_uses_thumb_bit, Target_arm::new_arm_input_section,
5568 Target_arm::find_arm_input_section, Target_arm::new_stub_table):
5569 New method definitions.
5570
37a9ac43
ILT
55712009-11-03 Ian Lance Taylor <iant@google.com>
5572
5573 * options.h (class General_options): Add --warn_constructors.
5574
b3d6a3d4
ILT
55752009-11-03 Ian Lance Taylor <iant@google.com>
5576
5577 PR 10893
5578 * defstd.cc (in_section): Add entries for __rel_iplt_start,
5579 __rel_iplt_end, __rela_iplt_start, __rela_iplt_end, and __stack.
5580
934b01dd
ILT
55812009-11-03 Ian Lance Taylor <iant@google.com>
5582
5583 PR 10895
5584 * po/Make-in ($(srcdir)/$(PACKAGE).pot): Pass -C and
5585 --msgid-bugs-address.
5586 (install-pdf): New target.
5587 (install-data_yes): Look up one directory to find mkinstalldirs.
5588
03c1939b
L
55892009-11-03 H.J. Lu <hongjiu.lu@intel.com>
5590
5591 * po/Make-in (.po.gmo): Don't generate .gmo files in source
5592 tree.
5593
ebd95253
DK
55942009-10-30 Doug Kwan <dougkwan@google.com>
5595
5596 * arm.cc (Stub_addend_reader): Fix bug in previouls check-in.
5597
e9bbb538
DK
55982009-10-30 Doug Kwan <dougkwan@google.com>
5599
5600 * arm.cc (Stub_addend_reader): New struct template definition
5601 and partial specializations.
5602 (Stub_addend_reader::operator()): New method definition for a
5603 partially specialized template.
5604
d5b40221
DK
56052009-10-30 Doug Kwan <dougkwan@google.com>
5606
5607 * arm.cc (Arm_relobj::processor_specific_flags): New method
5608 definition.
5609 (Arm_relobj::do_read_symbols): New method declaration.
5610 (Arm_relobj::processor_specific_flags_): New data member declaration.
5611 (Arm_dynobj): New class definition.
5612 (Target_arm::do_finalize_sections): Add input_objects parameter.
5613 (Target_arm::do_adjust_elf_header): New method declaration.
5614 (Target_arm::are_eabi_versions_compatible,
5615 (Target_arm::merge_processor_specific_flags): New method declaration.
5616 (Target_arm::do_make_elf_object): New overloaded method definitions
5617 and declaration.
5618 (Arm_relobj::do_read_symbols): New method definition.
5619 (Arm_dynobj::do_read_symbols): Ditto.
5620 (Target_arm::do_finalize_sections): Add input_objects parameters.
5621 Merge processor-specific flags from all input objects.
5622 (Target_arm::are_eabi_versions_compatible,
5623 Target_arm::merge_processor_specific_flags,
5624 Target_arm::do_adjust_elf_header, Target_arm::do_make_elf_object):
5625 New method definitions.
5626 * i386.cc (Target_i386::do_finalize_sections): Add unnamed
5627 Input_objects pointer type parameter.
5628 * layout.cc (Layout::finalize): Pass input objects to target's.
5629 finalize_sections function.
5630 * output.cc (Output_file_header::do_sized_write): Set ELF file
5631 header's processor-specific flags.
5632 * powerpc.cc (Target_powerpc::do_finalize_sections): Add unnamed
5633 Input_objects pointer type parameter.
5634 * sparc.cc (Target_sparc::do_finalize_sections): Same.
5635 * target.h (Input_objects): New forward class declaration.
5636 (Target::processor_specific_flags,
5637 Target::are_processor_specific_flags_sect): New method definitions.
5638 (Target::finalize_sections): Add input_objects parameter.
5639 (Target::Target): Initialize processor_specific_flags_ and
5640 are_processor_specific_flags_set_.
5641 (Target::do_finalize_sections): Add unnamed Input_objects pointer type
5642 parameter.
5643 (Target::set_processor_specific_flags): New method definition.
5644 (Target::processor_specific_flags_,
5645 Target::are_processor_specific_flags_set_): New data member
5646 declarations.
5647 * x86_64.cc (Target_x86_64::do_finalize_sections): Add unnamed
5648 Input_objects pointer type parameter.
5649
ebabffbd
DK
56502009-10-30 Doug Kwan <dougkwan@google.com>
5651
5652 * arm.cc: Use Arm_address instead of elfcpp::Elf_types<32>::Elf_Addr.
5653
ad0f2072
ILT
56542009-10-28 Ian Lance Taylor <iant@google.com>
5655
5656 * object.h (class Relobj): Drop options parameter from
5657 gc_process_relocs, scan_relocs, relocate, do_gc_process_relocs,
5658 do_scan_relocs, do_relocate. Change all callers.
5659 (class Sized_relobj): Drop options parameters from
5660 do_gc_process_relocs, do_scan_relocs, do_relocate,
5661 do_relocate_sections, relocate_sections, emit_relocs_scan,
5662 emit_relocs_scan_reltype. Change all callers.
5663 (struct Relocate_info): Remove options field and all references to
5664 it.
5665 * reloc.h (class Read_relocs): Remove options constructor
5666 parameter and options_ field. Change all callers.
5667 (class Gc_process_relocs, class Scan_relocs): Likewise.
5668 (class Relocate_task): Likewise.
5669 * target-reloc.h (scan_relocs): Remove options parameter. Change
5670 all callers.
5671 (scan_relocatable_relocs): Likewise.
5672 * target.h (class Sized_target): Remove options parameter from
5673 gc_process_relocs, scan_relocs, scan_relocatable_relocs. Change
5674 all callers.
5675 * gc.h (gc_process_relocs): Remove options parameter. Change all
5676 callers.
5677 * arm.cc: Update functions to remove options parameters.
5678 * i386.cc: Likewise.
5679 * powerpc.cc: Likewise.
5680 * sparc.cc: Likewise.
5681 * x86_64.cc: Likewise.
5682 * testsuite/testfile.cc: Likewise.
5683
8ffa3667
DK
56842009-10-28 Doug Kwan <dougkwan@google.com>
5685
5686 * arm.cc (Arm_relobj): New class definition.
e1df38aa 5687 (Arm_relobj::scan_sections_for_stubs,
8ffa3667
DK
5688 Arm_relobj::do_count_local_symbols, Arm_relobj::do_relocate_sections):
5689 New method definitions.
5690
40f36857
CC
56912009-10-28 Cary Coutant <ccoutant@google.com>
5692
5693 * plugin.h (Plugin::Plugin): Initialize cleanup_done_.
5694 (Plugin::cleanup_done_): New member.
5695 (Plugin_manager::Plugin_manager): Remove cleanup_done_.
5696 (Plugin_manager::cleanup_done_): Remove.
5697 (Plugin_manager::add_input_file): Edit error message.
5698 * plugin.cc (Plugin::cleanup): Test and set cleanup_done_.
5699 (Plugin_manager::cleanup): Remove use of cleanup_done_.
5700
2c849493
ILT
57012009-10-27 Mikolaj Zalewski <mikolajz@google.com>
5702
5703 * fileread.cc: (File_read::View::~View): Use the new
5704 data_ownership_ filed.
5705 (File_read::~File_read): Dispose the new whole_file_view_.
5706 (File_read::open): Mmap the whole file if needed.
5707 (File_read::open): Use whole_file_view_ instead of contents_.
5708 (File_read::find_view): Use whole_file_view_ if applicable.
5709 (File_read::do_read): Use whole_file_view_ instead of contents_.
5710 (File_read::make_view): Use whole_file_view_ instead of contents_,
5711 update File_read::View::View call.
5712 (File_read::find_or_make_view): Update File_read::View::View
5713 call.
5714 * fileread.h: (File_read::File_read): Initialize whole_file_view_,
5715 remove contents_
5716 (File_read::View::Data_ownership): New enum.
5717 (File_read::View::View): Replace bool mapped_ with Data_ownership
5718 argument.
5719 (File_read::View::mapped_): Remove (replaced by data_ownership_).
5720 (File_read::View::data_ownership_): New field.
5721 (File_read::contents_): Remove (replaced by whole_file_view_).
5722 (File_read::whole_file_view_): New field.
5723 * options.h (class General_options): Add --keep-files-mapped.
5724
24998053
CC
57252009-10-27 Cary Coutant <ccoutant@google.com>
5726
5727 * symtab.cc (add_from_pluginobj): Pass correct value for is_ordinary.
5728 * testsuite/Makefile.am (plugin_test_5): New test case.
5729 * testsuite/Makefile.in: Regenerate.
5730
72adc4fa
DK
57312009-10-25 Doug Kwan <dougkwan@google.com>
5732
5733 * object.h (Sized_relobj::View_size, Sized_relobj::Views): Change
5734 from private to protected to allow access by child class.
5735 (Sized_relobj::do_relocate_sections): New method declaration.
5736 (Sized_relobj::relocate_sections): Virtualize.
e1df38aa 5737 * reloc.cc (Sized_relobj::do_relocate_sections): Rename from
72adc4fa
DK
5738 Sized_relobj::relocate_sections. Instantiate template explicitly
5739 for different target sizes and endianity.
5740
07f508a2
DK
57412009-10-24 Doug Kwan <dougkwan@google.com>
5742
5743 * arm.cc (Arm_output_section, Arm_relobj): Forward class declarations.
5744 (Arm_input_section::as_arm_input_section): New method.
5745 (Arm_output_section): New class definition.
5746 (Arm_output_section::create_stub_group,
5747 Arm_output_section::group_sections): New method definitions.
5748
10ad9fe5
DK
57492009-10-22 Doug Kwan <dougkwan@google.com>
5750
5751 * arm.cc (Arm_input_section): New class definition.
5752 (Arm_input_section::init, Arm_input_section:do_write,
5753 Arm_input_section::set_final_data_size,
5754 Arm_input_section::do_reset_address_and_file_offset): New method
5755 definitions.
5756
56ee5e00
DK
57572009-10-21 Doug Kwan <dougkwan@google.com>
5758
5759 * arm.cc (Stub_table, Arm_input_section): New forward class
5760 declarations.
5761 (Stub_table): New class defintion.
5762 (Stub_table::add_reloc_stub, Stub_table::relocate_stubs
5763 Stub_table::do_reset_address_and_file_offset, Stub_table::do_write):
5764 New method definition.
5765
b569affa
DK
57662009-10-21 Doug Kwan <dougkwan@google.com>
5767
5768 * arm.cc: Update copyright comments.
5769 (Target_arm): New forward class template declaration.
5770 (Arm_address): New type.
5771 (ARM_MAX_FWD_BRANCH_OFFSET, ARM_MAX_BWD_BRANCH_OFFSET,
5772 THM_MAX_FWD_BRANCH_OFFSET, THM_MAX_BWD_BRANCH_OFFSET,
5773 THM2_MAX_FWD_BRANCH_OFFSET, THM2_MAX_BWD_BRANCH_OFFSET): New
5774 constants.
5775 (Insn_template): Same.
5776 (DEF_STUBS): New macro.
5777 (Stub_type): New enum type.
5778 (Stub_template): New class definition.
5779 (Stub): Same.
5780 (Reloc_stub): Same.
5781 (Stub_factory): Same.
5782 (Target_arm::Target_arm): Initialize may_use_blx_ and
5783 should_force_pic_veneer_.
5784 (Target_arm::may_use_blx, Target_arm::set_may_use_blx,
5785 Target_arm::should_force_pic_veneer,
5786 Target_arm::set_should_force_pic_veneer, Target_arm::using_thumb2,
5787 Target_arm::using_thumb_only, Target_arm:;default_target): New
5788 method defintions.
5789 (Target_arm::may_use_blx_, Target_arm::should_force_pic_veneer_):
5790 New data member declarations.
5791 (Insn_template::size, Insn_template::alignment): New method defintions.
5792 (Stub_template::Stub_template): New method definition.
5793 (Reloc_stub::Key::name, Reloc_stub::stub_type_for_reloc,
5794 Reloc_stub::do_fixed_endian_write, Reloc_stub::do_write): Same.
5795 (Stub_factory::Stub_factory): New method definition.
5796 * gold.h (string_hash): New template.
5797 * output.h (Input_section_specifier::hash_value): Use
5798 gold::string_hash.
5799 (Input_section_specifier::string_hash): Remove.
5800 * stringpool.cc (Stringpool_template::string_hash): Use
5801 gold::string_hash.
5802
6c172549
DK
58032009-10-20 Doug Kwan <dougkwan@google.com>
5804
5805 * object.cc (Sized_relobj::do_finalize_local_symbols): Handle section
5806 symbols of relaxed input sections.
5807 * output.h (Output_section::find_relaxed_input_section): Make
5808 method public.
5809
c5617f2f
DK
58102009-10-16 Doug Kwan <dougkwan@google.com>
5811
5812 * dynobj.cc (Versions::Versions): Initialize version_script_.
5813 Only insert base version symbol definition for a shared object
5814 if version script defines any version versions.
5815 (Versions::define_base_version): New method definition.
5816 (Versions::add_def): Check that base version is not needed.
5817 (Versions::add_need): Define base version lazily.
5818 * dynobj.h (Versions::define_base_version): New method declaration.
5819 (Versions::needs_base_version_): New data member declaration.
5820 * testsuite/Makefile.am (check_SCRIPTS): Add no_version_test.sh
5821 (check_DATA): Add no_version_test.stdout.
5822 (libno_version_test.so, no_version_test.o no_version_test.stdout):
5823 New make rules.
5824 * testsuite/Makefile.in: Regenerate.
5825 * testsuite/no_version_test.c: New file.
5826 * testsuite/no_version_test.sh: Ditto.
5827
3c12dcdb
DK
58282009-10-16 Doug Kwan <dougkwan@google.com>
5829
5830 * expression.cc (class Segment_start_expression): New class definition.
5831 (Segment_start_expression::value): New method definition.
5832 (script_exp_function_segment_start): Return a new
5833 Segment_start_expression.
5834 * gold/script-c.h (script_saw_segment_start_expression): New function
5835 prototype.
5836 * script-sections.cc (Script_sections::Script_sections): Initialize
5837 SAW_SEGMENT_START_EXPRESSION_ to false.
5838 (Script_sections::set_section_addresses): Use -Ttext, -Tdata
5839 and -Tbbs options to specify section addresses if given in
5840 command line and no SEGMENT_START expression is seen in a script.
5841 * script-sections.h (Script_sections::saw_segment_start_expression,
5842 Script_sections::set_saw_segment_start_expression): New method
5843 definition.
5844 (Script_sections::saw_segment_start_expression_): New data member
5845 declaration.
5846 * script.cc (script_saw_segment_start_expression): New function.
5847 * yyscript.y (SEGMENT_START): Call script_saw_segment_start_expression.
5848 * testsuite/Makefile.am (check_SCRIPTS): Add script_test_6.sh,
5849 script_test_7.sh and script_test_8.sh.
5850 (check_DATA): Add script_test_6.stdout, script_test_7.stdout and
5851 script_test_8.stdout.
5852 (MOSTLYCLEANFILES): Add script_test_6, script_test_7 and script_test_8.
5853 (script_test_6, script_test_6.stdout, script_test_7,
5854 script_test_7.stdout, script_test_8, script_test_8.stdout): New rules.
5855 * Makefile.in: Regenerate.
5856 * testsuite/script_test_6.sh: New file.
5857 * testsuite/script_test_6.t: Same.
5858 * testsuite/script_test_7.sh: Same.
5859 * testsuite/script_test_7.t: Same.
5860 * testsuite/script_test_8.sh: Same.
5861
64b1ae37
DK
58622009-10-16 Doug Kwan <dougkwan@google.com>
5863
5864 * output.cc (Output_segment::set_section_list_address): Cast
5865 expressions to unsigned long long type to avoid format warnings.
5866
661be1e2
ILT
58672009-10-15 Ian Lance Taylor <iant@google.com>
5868
12edd763 5869 * script.cc (Script_options::add_symbol_assignment): Always add a
b3d6a3d4 5870 dot assignment to script_sections_.
12edd763
ILT
5871 * script-sections.cc (Script_sections::add_dot_assignment):
5872 Initialize if necessary.
5873
68b6574b
ILT
5874 * layout.cc (Layout::relaxation_loop_body): Don't crash if we see
5875 program headers with no load segment if there is a linker script.
5876
661be1e2
ILT
5877 * layout.cc (Layout::set_segment_offsets): Align the file offset
5878 to the segment aligment for -N or -n with no load segment.
5879 * output.cc (Output_segment::add_output_section): Don't crash if
5880 the first section is a TLS section.
5881 (Output_segment::set_section_list_addresses): Print an error
5882 message if the address moves backward in a linker script.
5883 * script-sections.cc
5884 (Output_section_element_input::set_section_addresses): Don't
5885 increase *dot_value for a SHF_TLS/SHT_NOBITS section.
5886 (Orphan_output_section::set_section_addresses): Likewise.
5887
f15f61a7
DK
58882009-10-15 Doug Kwan <dougkwan@google.com>
5889
5890 * layout.cc (Layout::finish_dynamic_section): Generate tags
5891 DT_FINI_ARRAY, DT_FINI_ARRAYSZ, DT_INIT_ARRAY, DT_INIT_ARRAYSZ,
5892 DT_PREINIT_ARRAY, DT_PREINIT_ARRAYSZ as needed. If -Bsymbolic is
5893 used, add DT_SYMBOLIC and set DF_SYMBOLIC in DT_FLAGS.
5894
82bb573a
ILT
58952009-10-14 Ian Lance Taylor <iant@google.com>
5896
5897 * object.h (class Relocate_info): Add reloc_shdr and data_shdr
5898 fields.
5899 * object.cc (Sized_relobj::relocate_sections): Set reloc_shdr and
5900 data_shdr fields of relinfo.
5901 * i386.cc (class Target_i386::Relocate): Remove ldo_addrs_ field.
5902 (Target_i386::Relocate::relocate_tls): Don't call fix_up_ldo. For
5903 R_386_TLS_LDO_32, adjust based on section flags.
5904 (Target_i386::Relocate::fix_up_ldo): Remove.
5905
374ad285
ILT
59062009-10-13 Ian Lance Taylor <iant@google.com>
5907
5908 Add support for -pie.
5909 * options.h (class General_options): Add -pie and
5910 --pic-executable.
5911 (General_options::output_is_position_independent): Test -pie.
5912 (General_options::output_is_executable): Return true if not shared
5913 and not relocatable.
5914 (General_options::output_is_pie): Remove.
5915 * options.cc (General_options::finalize): Reject incompatible uses
5916 of -pie.
5917 * gold.cc (queue_middle_tasks): A -pie link is not static.
5918 * symtab.h (Symbol::needs_plt_entry): Return false if -pie.
5919 * symtab.cc (Symbol::final_value_is_known): Return false if
5920 output_is_position_independent.
5921 * layout.cc (Layout::set_segment_offsets): Start at address 0 if
5922 output_is_position_independent.
5923 * output.cc (Output_file_header::do_sized_write): Use ET_DYN if
5924 output_is_position_independent.
5925 * i386.cc (Output_data_plt_i386::do_write): Use the PIC PLT if
5926 output_is_position_independent.
5927 * testsuite/Makefile.am (check_PROGRAMS): Add basic_pie_test and
5928 two_file_pie_test.
5929 (basic_pie_test.o, basic_pie_test): New targets.
5930 (two_file_test_1_pie.o, two_file_test_1b_pie.o): New targets.
5931 (two_file_test_2_pie.o, two_file_test_main_pie.o): New targets.
5932 (two_file_pie_test): New target.
5933 * testsuite/Makefile.in: Rebuild.
5934 * README: Remove note saying that -pie is not supported.
5935
c6585162
ILT
59362009-10-13 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
5937
5938 * options.h (class General_options): Add -init and -fini.
5939 * layout.cc (Layout::finish_dynamic_section): Emit
5940 given init and fini functions.
5941
032ce4e9
ST
59422009-10-13 Sriraman Tallam <tmsriram@google.com>
5943
5944 * gc.h (gc_process_relocs): Check if icf is enabled using new
5945 function.
5946 * gold.cc (queue_initial_tasks): Likewise.
5947 (queue_middle_tasks): Likewise.
5948 * object.cc (do_layout): Likewise.
5949 * symtab.cc (is_section_folded): Likewise.
5950 * main.cc (main): Likewise.
5951 * reloc.cc (Read_relocs::run): Likewise.
5952 (Sized_relobj::do_scan_relocs): Likewise.
5953 * icf.cc (is_function_ctor_or_dtor): New function.
5954 (Icf::find_identical_sections): Check if function is ctor or dtor when
5955 safe icf is chosen.
5956 * options.h (General_options::icf): Change option to be an enum.
5957 (Icf_status): New enum.
5958 (icf_enabled): New method.
5959 (icf_safe_folding): New method.
5960 (set_icf_status): New method.
5961 (icf_status_): New variable.
5962 * (options.cc) (General_options::finalize): Set icf_status_.
5963 * testsuite/Makefile.am: Add commands to build icf_safe_test. Modify
5964 icf_test and icf_keep_unique_test to use the --icf enum flag.
5965 * testsuite/icf_safe_test.sh: New file.
e1df38aa 5966 * testsuite/icf_safe_test.cc: New file.
032ce4e9 5967
f345227a
ST
59682009-10-12 Sriraman Tallam <tmsriram@google.com>
5969
5970 * symtab.h: Check for GOLD_SYMTAB_H before header includes. Remove
5971 includes to gc.h and icf.h.
5972 * arm.cc: Include gc.h.
5973 * gold.cc: Likewise.
5974 * i386.cc: Likewise.
5975 * powerpc.cc: Likewise.
5976 * sparc.cc: Likewise.
5977 * x86_64.cc: Likewise.
5978 * gc.h: Include icf.h.
5979
1c7814ed
ILT
59802009-10-11 Ian Lance Taylor <iant@google.com>
5981
5982 * plugin.cc: Include "gold.h" before other header files.
5983
ae3b5189
CD
59842009-10-10 Chris Demetriou <cgd@google.com>
5985
5986 * options.h (Input_file_argument::Input_file_type): New enum.
5987 (Input_file_argument::is_lib_): Replace with...
5988 (Input_file_argument::type_): New member.
5989 (Input_file_argument::Input_file_argument): Take Input_file_type
5990 'type' rather than boolean 'is_lib' as second argument.
5991 (Input_file_argument::is_lib): Use type_.
5992 (Input_file_argument::is_searched_file): New function.
5993 (Input_file_argument::may_need_search): Handle is_searched_file.
5994 * options.cc (General_options::parse_library): Support -l:filename.
5995 (General_options::parse_just_symbols): Update for Input_file_argument
5996 changes.
5997 (Command_line::process): Likewise.
5998 * archive.cc (Archive::get_file_and_offset): Likewise.
5999 * plugin.cc (Plugin_manager::release_input_file): Likewise.
6000 * script.cc (read_script_file, script_add_file): Likewise.
6001 * fileread.cc (Input_file::Input_file): Likewise.
6002 (Input_file::will_search_for): Handle is_searched_file.
6003 (Input_file::open): Likewise.
6004 * readsyms.cc (Read_symbols::get_name): Likewise.
6005 * testsuite/Makefile.am (searched_file_test): New test.
6006 * testsuite/Makefile.in: Regenerate.
6007 * testsuite/searched_file_test.cc: New file.
6008 * testsuite/searched_file_test_lib.cc: New file.
6009
f3048a1d
ILT
60102009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
6011 Ian Lance Taylor <iant@google.com>
6012
6013 * descriptor.cc: Include <cstdio> and "binary-io.h".
6014 (Descriptors::open): Open the files in binary mode always.
6015 * script.cc (Lex::get_token): Treat \r as whitespace.
6016
d4780e57
ILT
60172009-10-09 Ian Lance Taylor <iant@google.com>
6018
6019 * testsuite/retain_symbols_file_test.sh: Don't test for __tcf_0.
6020
d9a893b8
ILT
60212009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
6022 Ian Lance Taylor <iant@google.com>
6023
6024 * configure.ac: Check for readv function also.
6025 * fileread.cc (readv): Define if not HAVE_READV.
6026 * fileread.h (File_read:: max_readv_entries): Set to 1 if readv
6027 does not exist.
6028 * config.in: Regenerate.
6029 * configure: Regenerate.
6030
c0a62865
DK
60312009-10-09 Doug Kwan <dougkwan@google.com>
6032
6033 * layout.cc (Layout::make_output_section): Call target hook to make
6034 ordinary output section.
6035 (Layout::finalize): Adjust parameter list of call the
6036 Target::may_relax().
6037 * layout.h (class Layout::section_list): New method.
6038 * merge.h (Output_merge_base::entsize): Change visibility to public.
6039 (Output_merge_base::is_string, Output_merge_base::do_is_string):
6040 New methods.
6041 (Output_merge_string::do_is_string): New method.
6042 * object.cc (Sized_relobj::do_setup): renamed from
6043 Sized_relobj::set_up.
6044 * object.h (Sized_relobj::adjust_shndx,
6045 Sized_relobj::initializ_input_to_output_maps,
6046 Sized_relobj::free_input_to_output_maps): Change visibilities to
6047 protected.
6048 (Sized_relobj::setup): Virtualize.
6049 (Sized_relobj::do_setup): New method declaration.
6050 (Sized_relobj::invalidate_section_offset,
6051 Sized_relobj::do_invalidate_section_offset): New method decfinitions.
6052 (Sized_relobj::elf_file, Sized_relobj::local_values): New methods.
6053 * options.cc (parse_int): New function.
6054 * options.h (parse_int): New declaration.
6055 (DEFINE_int): New macro.
6056 (stub_group_size): New option.
6057 * output.cc (Output_section::Output_section): Initialize memebers
6058 merge_section_map_, merge_section_by_properties_map_,
6059 relaxed_input_section_map_, is_relaxed_input_section_map_valid_.
6060 (Output_section::add_input_section): Handled deferred code-fill
6061 generation and remove an old comment.
6062 (Output_section::add_relaxed_input_section): New method definition.
6063 (Output_section::add_merge_input_section): Use merge section by
6064 properties map to speed to search. Update merge section maps
6065 as appropriate.
6066 (Output_section::build_relaxation_map): New method definition.
6067 (Output_section::convert_input_sections_in_list_to_relaxed_sections):
6068 Same.
6069 (Output_section::relax_input_section): Renamed to
6070 Output_section::convert_input_sections_to_relaxed_sections and change
6071 interface to take a vector of pointers to relaxed sections.
6072 (Output_section::find_merge_section,
6073 Output_section::find_relaxed_input_section): New method definitions.
6074 (Output_section::is_input_address_mapped,
6075 Output_section::output_offset, Output_section::output_address):
6076 Use output section data maps to speed up searching.
6077 (Output_section::find_starting_output_address): Add comments.
6078 (Output_section::do_write,
6079 Output_section::write_to_postprocessing_buffer): Do code-fill
6080 generation as appropriate.
6081 (Output_section::get_input_sections): Invalidate relaxed input section
6082 map.
6083 (Output_section::restore_states): Adjust type of checkpoint .
6084 Invalidate relaxed input section map.
6085 * output.h (Output_merge_base): New class declaration.
6086 (Input_section_specifier): New class defintion.
6087 (class Output_relaxed_input_section) Change base class to
6088 Output_section_data_build.
6089 (Output_relaxed_input_section::Output_relaxed_input_section): Adjust
6090 base class initializer.
6091 (Output_section::add_relaxed_input_section): New method declaration.
6092 (Output_section::Input_section): Change visibility to protected.
6093 (Output_section::Input_section::relobj,
6094 Output_section::Input_section::shndx): Handle relaxed input sections.
6095 Output_section::input_sections) Change visibility to protected. Also
6096 define overload to return a non-const pointer.
6097 (Output_section::Merge_section_properties): New class defintion.
6098 (Output_section::Merge_section_by_properties_map,
6099 Output_section::Output_section_data_by_input_section_map,
6100 Output_section::Relaxation_map): New types.
6101 (Output_section::relax_input_section): Rename method to
6102 Output_section::convert_input_sections_to_relaxed_sections and change
6103 interface to take a vector of relaxed section pointers.
6104 (Output_section::find_merge_section,
6105 Output_section::find_relaxed_input_section,
6106 Output_section::build_relaxation_map,
6107 Output_section::convert_input_sections_in_list_to_relaxed_sections):
6108 New method declarations.
6109 (Output_section::merge_section_map_
6110 Output_section::merge_section_by_properties_map_,
6111 Output_section::relaxed_input_section_map_,
6112 Output_section::is_relaxed_input_section_map_valid_,
6113 Output_section::generate_code_fills_at_write_): New data members.
6114 * script-sections.cc
6115 (Output_section_element_input::set_section_addresses): Call
6116 current_data_size and addralign methods of relaxed input sections.
6117 (Orphan_output_section::set_section_addresses): Call current_data_size
6118 and addralign methods of relaxed input sections.
6119 * symtab.cc (Symbol_table::compute_final_value): Extract template
6120 from the body of Symbol_table::sized_finalize_symbol.
6121 (Symbol_table::sized_finalized_symbol): Call
6122 Symbol_table::compute_final_value.
6123 * symtab.h (Symbol_table::Compute_final_value_status): New enum type.
6124 (Symbol_table::compute_final_value): New templated method declaration.
6125 * target.cc (Target::do_make_output_section): New method defintion.
6126 * target.h (Target::make_output_section): New method declaration.
6127 (Target::relax): Add more parameters for input objects, symbol table
6128 and layout. Adjust call to do_relax.
6129 (Target::do_make_output_section): New method declaration.
6130 (Target::do_relax): Add parameters for input objects, symbol table
6131 and layout.
6132
d446d6c4
ILT
61332009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
6134
6135 * pread.c: Include stdio.h.
6136
bc06c745
ILT
61372009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
6138
6139 * plugin.cc: Don't include dlfcn.h when ENABLE_PLUGINS is not
6140 defined.
6141
75aea3d0
ILT
61422009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
6143
6144 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
6145 Change read_shndx type to unsigned int.
6146 (Sized_dwarf_line_info::read_lines): Change shndx type to unsigned
6147 int.
6148 (Sized_dwarf_line_info::read_line_mappings): Likewise.
6149 * dwarf_reader.h (Sized_dwarf_line_info::Sized_dwarf_line_info):
6150 Change read_shndx type to unsigned int.
6151 (Sized_dwarf_line_info::read_lines): Change shndx type to unsigned
6152 int.
6153 (Sized_dwarf_line_info::read_line_mappings): Likewise.
6154 * layout.cc (Layout::create_symtab_sections): Cast the result of
6155 local_symcount * symsize to off_t in the gold_assert.
6156
be8fcb75
ILT
61572009-10-09 Viktor Kutuzov <vkutuzov@accesssoftek.com>
6158
6159 * arm.cc (Target_arm::relocate::reloc_is_non_pic): Return true for
6160 R_ARM_THM_ABS5, R_ARM_ABS8, R_ARM_ABS12, R_ARM_ABS16,
6161 R_ARM_BASE_ABS.
6162 (Arm_relocate_functions::abs8): Remove has_thumb_bit parameter.
6163 (Arm_relocate_functions::thm_abs5): New function.
6164 (Arm_relocate_functions::abs12): New function.
6165 (Arm_relocate_functions::abs16): New function.
6166 (Arm_relocate_functions::base_abs): New function.
6167 (Scan::check_non_pic): Handle R_ARM_ABS32_NOI.
6168 (Scan::local): Remove special handling of R_ARM_ABS8. Handle
6169 R_ARM_ABS32_NOI, R_ARM_THM_ABS5, R_ARM_ABS12, R_ARM_ABS16, and
6170 R_ARM_BASE_ABS.
6171 (Scan::global): Likewise.
6172 (Relocate::relocate): Handle R_ARM_ABS12, R_ARM_ABS16,
6173 R_ARM_ABS32_NOI, R_ARM_THM_ABS5, and R_ARM_BASE_ABS.
6174 (Relocatable_size_for_reloc::get_size_for_reloc): Handle
6175 R_ARM_ABS16, R_ARM_THM_ABS5, R_ARM_ABS32_NOI, R_ARM_ABS12, and
6176 R_ARM_BASE_ABS.
6177
c2a122b6
ILT
61782009-10-09 Viktor Kutuzov <vkutuzov@accesssoftek.com>
6179
6180 * arm.cc (Arm_relocate_functions::movw_prel_nc): New function.
6181 (Arm_relocate_functions::movt_prel): New function.
6182 (Arm_relocate_functions::thm_movw_prel_nc): New function.
6183 (Arm_relocate_functions::thm_movt_prel): New function.
6184 (Scan::local): Handle R_ARM_MOVW_PREL_NC, R_ARM_MOVT_PREL,
6185 R_ARM_THM_MOVW_PREL_NC, and R_ARM_THM_MOVT_PREL.
6186 (Scan::global, Relocate::relocate): Likewise.
6187 (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
6188
c4aa1e2d
ILT
61892009-10-09 Mikolaj Zalewski <mikolajz@google.com>
6190
6191 * gold.cc: (queue_initial_tasks): Pass incremental_inputs to
6192 Incremental_checker.
6193 * incremental.cc: (INCREMENTAL_LINK_VERSION): Change type to
6194 unsigned int.
6195 (class Incremental_inputs_header): New class.
6196 (Incremental_inputs_header_writer): Edit comment.
6197 (Incremental_inputs_entry): New class.
6198 (Incremental_inputs_entry_writer): Edit comment.
6199 (Sized_incremental_binary::do_find_incremental_inputs_section):
6200 Add *strtab_shndx parameter, fill it.
6201 (Sized_incremental_binary::do_check_inputs): New method.
6202 (Incremental_checker::can_incrementally_link_output_file): Use
6203 Sized_incremental_binary::check_inputs.
6204 (Incremental_inputs::report_command_line): Save command line in
6205 command_line_.
6206 * incremental.h:
6207 (Incremental_binary::find_incremental_inputs_section): New
6208 method.
6209 (Incremental_binary::do_find_incremental_inputs_section): Add
6210 strtab_shndx parameter.
6211 (Incremental_binary::do_check_inputs): New pure virtual method.
6212 (Sized_incremental_binary::do_check_inputs): Declare.
6213 (Incremental_checker::Incremental_checker): Add incremental_inputs
6214 parameter, use it to initialize incremental_inputs_.
6215 (Incremental_checker::incremental_inputs_): New field.
6216 (Incremental_checker::command_line): New method.
6217 (Incremental_checker::inputs): New method.
6218 (Incremental_checker::command_line_): New field.
6219
c549a694
ILT
62202009-10-09 Mikolaj Zalewski <mikolajz@google.com>
6221
6222 * incremental.cc: Include <cstdarg> and "target-select.h".
6223 (vexplain_no_incremental): New function.
6224 (explain_no_incremental): New function.
6225 (Incremental_binary::error): New method.
6226 (Sized_incremental_binary::do_find_incremental_inputs_section): New
6227 method.
6228 (make_sized_incremental_binary): New function.
6229 (open_incremental_binary): New function.
6230 (can_incrementally_link_file): Add checks if output is ELF and has
6231 inputs section.
6232 * incremental.h: Include "elfcpp_file.h" and "output.h".
6233 (Incremental_binary): New class.
6234 (Sized_incremental_binary): New class.
6235 (open_incremental_binary): Declare.
6236 * object.cc (is_elf_object): Use
6237 elfcpp::Elf_recognizer::is_elf_file.
6238 (make_elf_object): Use elfcpp::Elf_recognizer::is_valid_header.
6239 * output.h (Output_file::filesize): New method.
6240
fd3c5f0b
ILT
62412009-10-07 Viktor Kutuzov <vkutuzov@accesssoftek.com>
6242
6243 * arm.cc (Arm_relocate_functions::extract_arm_movw_movt_addend):
6244 New function.
6245 (Arm_relocate_functions::insert_val_arm_movw_movt): New function.
6246 (Arm_relocate_functions::extract_thumb_movw_movt_addend): New
6247 function.
6248 (Arm_relocate_functions::insert_val_thumb_movw_movt): New
6249 function.
6250 (Arm_relocate_functions::movw_abs_nc): New function.
6251 (Arm_relocate_functions::movt_abs): New function.
6252 (Arm_relocate_functions::thm_movw_abs_nc): New function.
6253 (Arm_relocate_functions::thm_movt_abs): New function.
6254 (Scan::local): Handle R_ARM_MOVW_ABS_NC, R_ARM_MOVT_ABS,
6255 R_ARM_THM_MOVW_ABS_NC, R_ARM_THM_MOVT_ABS.
6256 (Scan::global): Likewise.
6257 (Relocate::relocate): Likewise.
6258 (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
6259
7f5309a5
ILT
62602009-10-07 Viktor Kutuzov <vkutuzov@accesssoftek.com>
6261
6262 * arm.cc (Arm_relocate_functions::got_prel) New function.
6263 (Scan::local, Scan::global): Handle R_ARM_GOT_PREL.
6264 (Relocate::relocate): Likewise.
6265 (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
6266
364c7fa5
ILT
62672009-10-06 Ian Lance Taylor <iant@google.com>
6268
6269 * options.h (class General_options): Define
6270 split_stack_adjust_size parameter.
6271 * object.h (class Object): Add uses_split_stack_ and
6272 has_no_split_stack_ fields. Add uses_split_stack and
6273 has_no_split_stack accessor functions. Declare
6274 handle_split_stack_section.
6275 (class Reloc_symbol_changes): Define.
6276 (class Sized_relobj): Define Function_offsets. Declare
6277 split_stack_adjust, split_stack_adjust_reltype, and
6278 find_functions.
6279 * object.cc (Object::handle_split_stack_section): New function.
6280 (Sized_relobj::do_layout): Call handle_split_stack_section.
6281 * dynobj.cc (Sized_dynobj::do_layout): Call
6282 handle_split_stack_section.
6283 * reloc.cc (Sized_relobj::relocate_sections): Call
6284 split_stack_adjust for executable sections in split_stack
6285 objects. Pass reloc_map to relocate_section.
6286 (Sized_relobj::split_stack_adjust): New function.
6287 (Sized_relobj::split_stack_adjust_reltype): New function.
6288 (Sized_relobj::find_functions): New function.
6289 * target-reloc.h: Include "object.h".
6290 (relocate_section): Add reloc_symbol_changes parameter. Change
6291 all callers.
6292 * target.h (class Target): Add calls_non_split method. Declare
6293 do_calls_non_split virtual method. Declare match_view and
6294 set_view_to_nop.
6295 * target.cc: Include "elfcpp.h".
6296 (Target::do_calls_non_split): New function.
6297 (Target::match_view): New function.
6298 (Target::set_view_to_nop): New function.
6299 * gold.cc (queue_middle_tasks): Give an error if mixing
6300 split-stack and non-split-stack objects with -r.
6301 * i386.cc (Target_i386::relocate_section): Add
6302 reloc_symbol_changes parameter.
6303 (Target_i386::do_calls_non_split): New function.
6304 * x86_64.cc (Target_x86_64::relocate_section): Add
6305 reloc_symbol_changes parameter.
6306 (Target_x86_64::do_calls_non_split): New function.
6307 * arm.cc (Target_arm::relocate_section): Add reloc_symbol_changes
6308 parameter.
6309 * powerpc.cc (Target_powerpc::relocate_section): Add
6310 reloc_symbol_changes parameter.
6311 * sparc.cc (Target_sparc::relocate_section): Add
6312 reloc_symbol_changes parameter.
6313 * configure.ac: Call AM_CONDITIONAL for the default target.
6314 * configure: Rebuild.
6315 * testsuite/Makefile.am (TEST_AS): New variable.
6316 (check_SCRIPTS): Add split_i386.sh and split_x86_64.sh.
6317 (check_DATA): Add split_i386 and split_x86_64 files.
6318 (SPLIT_DEFSYMS): Define.
6319 (split_i386_[1234n].o): New targets.
6320 (split_i386_[124]): New targets.
6321 (split_i386_[1234r].stdout): New targets.
6322 (split_x86_64_[1234n].o): New targets.
6323 (split_x86_64_[124]): New targets.
6324 (split_x86_64_[1234r].stdout): New targets.
6325 (MOSTLYCLEANFILES): Add new executables.
6326 * testsuite/split_i386.sh: New file.
6327 * testsuite/split_x86_64.sh: New file.
6328 * testsuite/split_i386_1.s: New file.
6329 * testsuite/split_i386_2.s: New file.
6330 * testsuite/split_i386_3.s: New file.
6331 * testsuite/split_i386_4.s: New file.
6332 * testsuite/split_i386_n.s: New file.
6333 * testsuite/split_x86_64_1.s: New file.
6334 * testsuite/split_x86_64_2.s: New file.
6335 * testsuite/split_x86_64_3.s: New file.
6336 * testsuite/split_x86_64_4.s: New file.
6337 * testsuite/split_x86_64_n.s: New file.
6338 * testsuite/testfile.cc (Target_test): Update relocation_section
6339 function.
6340 * testsuite/Makefile.in: Rebuild.
6341
e8a9fcda
ILT
63422009-10-06 Ian Lance Taylor <iant@google.com>
6343
6344 * i386.cc (class Target_i386::Relocate): Add ldo_addrs_ field.
6345 (Target_i386::Relocate::relocate_tls): Call fix_up_ldo before
6346 changing local_dynamic_type_ from LOCAL_DYNAMIC_NONE. When
6347 handling R_386_TLS_LDO_32, if local_dynamic_type_ is NONE, push
6348 the address on ldo_addrs_.
6349 (Target_i386::Relocate::fix_up_ldo): New function.
6350
e99daf92
ILT
63512009-10-06 Rafael Espindola <espindola@google.com>
6352
6353 * plugin.cc (add_input_library): New.
6354 (Plugin::load): Add add_input_library to tv.
6355 (Plugin_manager::add_input_file): Add the is_lib argument.
6356 (add_input_file): Update call to Plugin_manager::add_input_file.
6357 (add_input_library): New.
6358 * plugin.h (Plugin_manager::add_input_file): Add the is_lib argument.
6359
966d4097
DK
63602009-09-30 Doug Kwan <dougkwan@google.com>
6361
6362 * arm.cc (Target_arm::may_need_copy_reloc): Check for THUMB function
6363 symbol and call Symbol::may_need_copy_reloc to determine if
6364 a copy reloc is needed.
6365 * copy-relocs.cc (Copy_relocs::need_copy_reloc): Return false if -z
6366 nocopyreloc is given in command line.
6367 (Copy_relocs::emit_copy_reloc): Assert that -z nocopyreloc is not
6368 given in command line.
6369 * i386.cc (Target_i386::may_need_copy_reloc): Remove.
6370 (Target_i386::Scan::global): Use Symbol::may_need_copy_reloc instead
6371 of the removed Target_i386::may_need_copy_reloc.
6372 * options.h (copyreloc): New option with default value false.
6373 * powerpc.cc (Target_powerpc::may_need_copy_reloc): Remove.
6374 (Target_powerpc::Scan::global): Use Symbol::may_need_copy_reloc
6375 instead of the removed Target_powerpc::may_need_copy_reloc.
6376 * sparc.cc (Target_powerpc::may_need_copy_reloc): Remove.
6377 (Target_sparc::Scan::global): Use Symbol::may_need_copy_reloc
6378 instead of the removed Target_sparc::may_need_copy_reloc.
6379 * symtab.h (Symbol::may_need_copy_reloc): New method definition.
6380 * x86_64.cc (Target_powerpc::may_need_copy_reloc): Remove.
6381 (Target_x86_64::Scan::global): Use Symbol::may_need_copy_reloc
6382 instead of the removed Target_x86_64::may_need_copy_reloc.
6383
029ba973
ILT
63842009-09-30 Ian Lance Taylor <iant@google.com>
6385
6386 * object.h (class Object): Remove target_ field, and target,
6387 sized_target, and set_target methods.
6388 (Object::sized_target): Remove.
6389 (class Sized_relobj): Update declarations. Remove sized_target.
6390 * object.cc (Sized_relobj::setup): Remove target parameter.
6391 Change all callers.
6392 (Input_objects::add_object): Don't do anything with the target.
6393 (make_elf_sized_object): Add punconfigured parameter. Change all
6394 callers. Set or test parameter target.
6395 * dynobj.cc (Sized_dynobj::target): Remove target parameter.
6396 Change all callers.
6397 * parameters.cc (Parameters::set_target): Change parameter type to
6398 be non-const.
6399 (Parameters::default_target): Remove.
6400 (set_parameters_target): Change parameter type to be non-const.
6401 (parameters_force_valid_target): New function.
6402 (parameters_clear_target): New function.
6403 * parameters.h (class Parameters): Update declarations. Remove
6404 default_target method. Add sized_target and clear_target
6405 methods. Change target_ to be non-const.
6406 (set_parameters_target): Update declaration.
6407 (parameters_force_valid_target): Declare.
6408 (parameters_clear_target): Declare.
6409 * readsyms.cc (Read_symbols::do_read_symbols): Pass punconfigured
6410 as NULL if we aren't searching.
6411 (Add_symbols::run): Don't check for compatible target.
6412 * fileread.cc (Input_file::open_binary): Call
6413 parameters_force_valid_target.
6414 * gold.cc (queue_middle_tasks): Likewise.
6415 * plugin.cc (make_sized_plugin_object): Likewise. Don't call
6416 set_target on object.
6417 * dynobj.h (class Sized_dynobj): Update declarations.
6418 * archive.cc (Archive::get_elf_object_for_member): Return NULL if
6419 make_elf_object returns NULL.
6420 (Archive::include_member): Don't check whether object target is
6421 compatible.
6422 * output.cc (Output_section::add_input_section): Get target from
6423 parameters.
6424 (Output_section::relax_input_section): Likewise.
6425 * reloc.cc (Sized_relobj::do_gc_process_relocs): Get target from
6426 parameters.
6427 (Sized_relobj::do_scan_relocs): Likewise.
6428 (Sized_relobj::relocate_sections): Likewise.
6429 * resolve.cc (Symbol_table::resolve): Likewise.
6430 * symtab.cc (Symbol_table::wrap_symbol): Likewise. Remove object
6431 parameter. Change all callers.
6432 (Symbol_table::add_from_object): Get target from parameters.
6433 (Symbol_table::add_from_relobj): Don't check object target.
6434 (Symbol_table::add_from_dynobj): Likewise.
6435 (Symbol_table::define_special_symbol): Get target from
6436 parameters.
6437 * symtab.h (class Symbol_table): Update declaration.
6438 * testsuite/binary_unittest.cc (gold_testsuite): Remove target
6439 parameter. Change all callers. Clear parameter target.
6440 (Binary_test): Test target here.
6441 * testsuite/object_unittest.cc (gold_testsuite): Remove
6442 target_test_pointer parameter. Change all callers.
6443 (Object_test): Test target here.
6444
a6a22b83
ILT
64452009-09-26 Ian Lance Taylor <iant@google.com>
6446
6447 * testsuite/initpri1.c: Don't try to use constructor priorities if
6448 compiling with gcc before 4.3.
6449
6a8f49fe
ILT
64502009-09-22 Mikolaj Zalewski <mikolajz@google.com>
6451
6452 * testsuite/retain_symbols_file_test.sh (check_present): Change
6453 output file name to retain_symbols_file_test.stdout.
6454 (check_absent): Likewise.
6455
8c604651
CS
64562009-09-18 Craig Silverstein <csilvers@google.com>
6457
6458 * object.cc (Sized_relobj::do_count): Test should_retain_symbol map.
6459 * options.cc: Include <cerrno> and <fstream>.
6460 (General_options::finalize): Parse -retain-symbols-file tag.
6461 * options.h: New flag.
6462 (General_options): New method should_retain_symbol, new
6463 variable symbols_to_retain.
6464 * symtab.cc (Symbol_table::sized_finalize_symbol): Test
6465 should_retain_symbol map.
6466 * testsuite/Makefile.am (retain_symbols_file_test): New test.
6467 * testsuite/Makefile.in: Regenerate.
6468 * testsuite/retain_symbols_file_test.sh: New file.
6469
ca58b19f
NC
64702009-09-18 Nick Clifton <nickc@redhat.com>
6471
6472 * po/es.po: Updated Spanish translation.
6473
20e6d0d6
DK
64742009-09-17 Doug Kwan <dougkwan@google.com>
6475
6476 * debug.h (DEBUG_RELAXATION): New constant.
6477 (DEBUG_ALL): Add DEBUG_RELAXATION.
6478 (debug_string_to_enum): Add relaxation debug option.
6479 * layout.cc
6480 (Layout::Relaxation_debug_check::check_output_data_for_reset_values,
6481 Layout::Relaxation_debug_check::read_sections,
6482 Layout::Relaxation_debug_check::read_sections): New method definitions.
6483 (Layout::Layout): Initialize data members
6484 record_output_section_data_from_scrips_,
6485 script_output_section_data_list_ and relaxation_debug_check_.
6486 (Layout::save_segments, Layout::restore_segments,
6487 Layout::clean_up_after_relaxation, Layout::prepare_for_relaxation,
6488 Layout::relaxation_loop_body): New method definitions.
6489 (Layout::finalize): Support relaxation. Move section layout code to
6490 Layout::relaxation_loop_body.
6491 (Layout::set_asection_address_from_script): Move code for orphan
6492 section placement out.
6493 (Layout::place_orphan_sections_in_script): New method definition.
6494 * layout.h (Output_segment_headers, Output_file_header):
6495 New forward class declarations.
6496 (Layout::~Layout): Define.
6497 (Layout::new_output_section_data_from_script): New method definition.
6498 (Layout::place_orphan_sections_in_script): New method declaration.
6499 (Layout::Segment_states): New type declaration.
6500 (Layout::save_segments, Layout::restore_segments,
6501 Layout::clean_up_after_relaxation, Layout::prepare_for_relaxation,
6502 Layout::relaxation_loop_body): New method declarations.
6503 (Layout::Output_section_data_list): New type declaration.
6504 (Layout::Relaxation_debug_check): New class definition.
6505 (Layout::record_output_section_data_from_script_,
6506 Layout::script_output_section_data_list_, Layout::segment_states_,
6507 Layout::relaxation_debug_check_): New data members.
6508 * output.cc: (Output_section_headers::do_size): New method definition.
6509 (Output_section_headers::Output_section_headers): Move size
6510 computation to Output_section_headers::do_size.
6511 (Output_segment_headers::do_size): New method definition.
e1df38aa 6512 (Output_file_header::Output_file_header): Move size computation to
20e6d0d6
DK
6513 Output_file_header::do_size and call it.
6514 (Output_file_header::do_size): New method definition.
6515 (Output_data_group::Output_data_group): Adjust call to
6516 Output_section_data.
6517 (Output_data_dynamic::set_final_data_size): Add DT_NULL tag only once.
6518 (Output_symtab_xindex::do_write): Add array bound check.
6519 (Output_section::Input_section::print_to_mapfile): Handle
6520 RELAXED_INPUT_SECTION_CODE.
6521 (Output_section::Output_section): Initialize data member checkpoint_.
6522 (Output_section::~Output_section): Delete checkpoint object pointed
6523 by checkpoint_.
6524 (Output_section::add_input_section): Always add an Input_section if
6525 relaxing.
6526 (Output_section::add_merge_input_section): Add assert.
6527 (Output_section::relax_input_section): New method definition.
6528 (Output_section::set_final_data_size): Set load address to zero for
6529 an unallocated section.
6530 (Output_section::do_address_and_file_offset_have_reset_values):
6531 New method definition.
6532 (Output_section::Input_section_sort_enty::Input_section_sort_enty):
6533 Handle relaxed input section.
6534 (Output_section::sort_attached_input_sections): Checkpoint input
6535 section list lazily.
6536 (Output_section::get_input_sections): Change type of input_sections to
6537 list of Simple_input_section pointers. Checkpoint input section list
6538 lazily. Also handle relaxed input sections.
6539 (Output_section::add_input_section_for_script): Take a reference to
6540 a Simple_input_section object instead of Relobj pointer and section
6541 index as parameter. Handle relaxed input sections.
6542 (Output_section::save_states, Output_section::restore_states): New
6543 method definitions.
6544 * output.h (Output_data::Output_data): Initialize is_data_size_fixed_.
6545 (Output_data::is_data_size_fixed): New method definition.
6546 (Output_data::reset_addresss_and_file_offset): Do not reset data size
6547 if it is fixed.
6548 (Output_data::address_and_file_offset_have_reset_values): New method
6549 definition.
6550 (Output_data::do_address_and_file_offset_have_reset_values): New method
6551 definition.
6552 (Output_data::set_data_size): Check that data size is not fixed.
6553 (Output_data::fix_data_size): New method definition.
6554 (Output_data::is_data_size_fixed_): New data member.
6555 (Output_section_headers::set_final_data_size): New method definition.
6556 (Output_section_headers::do_size): New method declaration.
6557 (Output_segment_headers::set_final_data_size): New method definition.
6558 (Output_segment_headers::do_size): New method declaration.
6559 (Output_file_header::set_final_data_size)::New method definition.
6560 (Output_file_header::do_size)::New method declaration.
6561 (Output_section_data::Output_section_data): Add new parameter
6562 is_data_size_fixed and use it to fix data size.
6563 (Output_data_const::Output_data_const): Adjust call to base class
6564 constructor and fix data size.
6565 (Output_data_const_buffer::Output_data_const_buffer): Adjust call to
6566 base class constructor and fix data size.
6567 (Output_data_fixed_space::Output_data_fixed_space): Adjust call to
6568 base class constructor and fix data size.
6569 (Output_data_zero_fill::Output_data_zero_fill): Adjust call to base
6570 class constructor and fix data size.
6571 (Output_data_group::set_final_data_size): New method definition.
6572 (Output_data_dynamic::Dynamic_entry::tag): New method definition.
6573 (Output_symtab_xindex::Output_symtab_xindex): Adjust call to base
6574 class constructor and fix data size.
6575 (Output_relaxed_input_section): New class definition.
6576 (Output_section::Simple_input_section): New class definition.
6577 (Output_section::get_input_sections): Adjust parameter list.
6578 (Output_section::add_input_section_for_script): Same.
6579 (Output_section::save_states, Output_section::restore_states,
6580 Output_section::do_address_and_file_offset_have_reset_values,
6581 (Output_section::Input_section::Input_section): Handle
6582 RELAXED_INPUT_SECTION_CODE. Add new overload for
6583 Output_relaxed_input_section.
6584 (Output_section::Input_section::is_input_section,
6585 Output_section::Input_section::set_output_section): Handle relaxed
6586 input section.
6587 (Output_section::Input_section::is_relaxed_input_section,
6588 Output_section::Input_section::output_section_data,
6589 Output_section::Input_section::relaxed_input_section): New method
6590 definitions.
6591 (Output_section::Input_section::RELAXED_INPUT_SECTION_CODE): New enum
6592 value.
6593 (Output_section::Input_section::u1_): Update comments.
6594 (Output_section::Input_section::u2_): Add new union member poris.
6595 (Output_section::Checkpoint_output_section): New classs definition.
6596 (Output_section::relax_input_section): New method declaration.
6597 (Output_section::checkpoint_): New data member.
6598 (Output_segment): Update comments.
6599 (Output_segment::Output_segment): Un-privatize copy constructor.
6600 (Output_segment::operator=): Un-privatize.
6601 * script-sections.cc (Output_section_element::Input_section_list):
6602 Change element type to Output_section::Simple_input_section.
6603 (Output_section_element_dot_assignment::set_section_addresses):
6604 Register output section data for relaxation clean up.
6605 (Output_data_exression::Output_data_expression): Adjust call to base
6606 constructor to fix data size.
6607 (Output_section_element_data::set_section_addresses): Register
6608 Output_data_expression object for relaxation clean up.
6609 (struct Input_section_info): Replace Relobj pointer and section index
6610 pair with Output_section::Simple_input_section and Convert struct to a
6611 class.
6612 (Input_section_sorter::operator()): Adjust access to
e1df38aa 6613 Input_section_info data member to use accessors.
20e6d0d6
DK
6614 (Output_section_element_input::set_section_addresses): Use layout
6615 parameter. Adjust code to use Output_section::Simple_input_section
6616 and Input_secction_info classes. Register filler for relaxation
6617 clean up.
6618 (Orphan_output_section::set_section_addresses): Replace Relobj pointer
6619 and section index pair with Output_section::Simple_input_section
6620 class. Adjust code accordingly.
6621 (Phdrs_element::release_segment): New method definition.
6622 (Script_sections::attach_sections_using_phdrs_clause): Do not modify
6623 segment list.
6624 (Script_sections::release_segments): New method definition.
6625 * gold/script-sections.h (Script_sections::release_segments): New
6626 method declaration.
6627 * gold/target.h (Target::may_relax, Target::relax,
6628 Target::do_may_relax, Target::do_relax): New method definitions.
6629
5e445df6
ILT
66302009-09-17 Viktor Kutuzov <vkutuzov@accesssoftek.com>
6631
6632 * arm.cc (has_signed_unsigned_overflow): New function.
6633 (Arm_relocate_functions::abs8): New function.
6634 (Target_arm::Scan::local): Handle R_ARM_ABS8.
6635 (Target_arm::Scan::global): Likewise.
6636 (Target_arm::relocate::relocate): Likewise.
6637 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
6638 Likewise.
6639
8c604651 66402009-09-16 Cary Coutant <ccoutant@google.com>
72fef11a
CC
6641
6642 * testsuite/Makefile.am (MOSTLYCLEANFILES): Add more generated files.
6643 * testsuite/Makefile.in: Regenerate.
6644
1e9cc1c2
NC
66452009-09-11 Nick Clifton <nickc@redhat.com>
6646
6647 * po/gold.pot: Updated by the Translation project.
6648
6a89f575
CC
66492009-09-08 Cary Coutant <ccoutant@google.com>
6650
6651 * output.cc (Output_file::open): Add execute permission to empty file.
6652 * testsuite/Makefile.am (permission_test): New test.
6653 * testsuite/Makefile.in: Regenerate.
6654
fdcac5af
ILT
66552009-09-02 Ian Lance Taylor <iant@google.com>
6656
6657 * output.cc (Output_file::resize): Call map_no_anonymous rather
6658 than map.
6659
44453f85
ILT
66602009-09-01 Mikolaj Zalewski <mikolajz@google.com>
6661
6662 * gold.cc: Include "incremental.h".
6663 (queue_initial_tasks): Call Incremental_checker methods.
6664 * incremental.cc: Include "output.h".
6665 (Incremental_checker::can_incrementally_link_output_file): New
6666 method.
6667 * incremental.h (Incremental_checker): New class.
6668
6669 * output.cc (Output_file::open_for_modification): New method.
6670 (Output_file::map_anonymous): Changed return type to bool. Record
6671 map in base_ field.
6672 (Output_file::map_no_anonymous): New method, broken out of map.
6673 (Output_file::map): Use map_no_anonymous and map_anonymous.
6674 * output.h (class Output_file): Update declarations.
6675
293c1386
CC
66762009-08-24 Cary Coutant <ccoutant@google.com>
6677
6678 * options.h (Command_line::Pre_options): New class.
6679 (Command_line::pre_options): New member.
6680 * options.cc (gold::options::ready_to_register): New variable.
6681 (One_option::register_option): Do nothing if not registering options.
6682 Assert if same short option registered twice.
6683 (General_options::General_options): Turn off option registration when
6684 done constructing.
6685 (Command_line::Pre_options::Pre_options): New constructor.
6686
f773f3d2
CC
66872009-08-24 Cary Coutant <ccoutant@google.com>
6688
06a73cfe
CC
6689 * options.h (General_options::no_keep_memory): Remove incorrect
6690 short option.
f773f3d2 6691
a15af8e2
RW
66922009-08-24 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
6693
6694 * Makefile.am (am__skiplex, am__skipyacc): New.
6695 * Makefile.in: Regenerate.
6696
c462b41b
RW
66972009-08-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
6698
14ec8efd
RW
6699 * Makefile.am (AM_CPPFLAGS): Renamed from ...
6700 (INCLUDES): ... this.
6701 * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add -Wno-portability.
6702 (AM_CPPFLAGS): Renamed from ...
6703 (INCLUDE): ... this.
6704 * Makefile.in, testsuite/Makefile.in: Regenerate.
6705
81ecdfbb
RW
6706 * Makefile.in: Regenerate.
6707 * aclocal.m4: Likewise.
6708 * config.in: Likewise.
6709 * configure: Likewise.
6710 * testsuite/Makefile.in: Likewise.
6711
c462b41b
RW
6712 * Makefile.am (AUTOMAKE_OPTIONS): Add foreign.
6713 * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add foreign.
6714 * Makefile.in: Regenerate.
6715 * testsuite/Makefile.in: Regenerate.
6716
2da73f13
CC
67172009-08-19 Cary Coutant <ccoutant@google.com>
6718
6719 * resolve.cc (Symbol_table::resolve): Don't complain about defined
6720 symbols in shared libraries overridden by hidden or internal symbols
6721 in the main program.
6722
2db70501
CD
67232009-08-19 Chris Demetriou <cgd@google.com>
6724
6725 * testsuite/debug_msg.sh: Match .* rather than ${srcdir} when
6726 checking source file names in error messages.
6727
f733487b
DK
67282009-08-18 Doug Kwan <dougkwan@google.com>
6729
6730 * dynobj.cc (Sized_dynobj::setup): Take a Target object instead of
6731 an elcpp::Ehdr as parameter. Adjust call to set_target.
6732 * dynobj.h (Sized_dynobj::setup): Take a Target object instead of
6733 an elfcpp::Ehdr as parameter.
6734 * object.cc (Object::set_target): Remove the version that looks up
6735 a target and sets it.
6736 (Sized_relobj::setup): Take a Target object instead of
6737 an elfcpp::Ehdr as parameter. Adjust call to set_target.
6738 (make_elf_sized_object): Find target and ask target to
6739 make an ELF object.
6740 * object.h: (Object::set_target): Remove the version that looks up
6741 a target and sets it.
6742 (Sized_relobj::setup): Take a Target object instead of
6743 an elfcpp:Ehdr as parameter.
6744 * target.cc: Include dynobj.h.
6745 (Target::do_make_elf_object_implementation): New.
6746 (Target::do_make_elf_object): New.
6747 * target.h (Target::make_elf_object): New template declaration.
6748 (Target::do_make_elf_object): New method declarations.
6749 (Target::do_make_elf_object_implementation): New template declaration.
6750
cc70f101
ILT
67512009-08-14 Ian Lance Taylor <iant@google.com>
6752
6753 * gold.h (FUNCTION_NAME): Define.
6754 (gold_unreachable): Use FUNCTION_NAME.
6755
ef5e0cb1
ST
67562009-08-12 Sriraman Tallam <tmsriram@google.com>
6757
6758 * icf.cc (Icf::find_identical_sections): Issue a warning when a
6759 symbol in the --keep-unique list is not found.
6760
48c187ce
ST
67612009-08-12 Sriraman Tallam <tmsriram@google.com>
6762
6763 * icf.cc (Icf::find_identical_sections): Unfold symbols that have
6764 been maked as --keep-unique.
6765 (Icf::unfold_section): New function.
6766 * icf.h (Icf::unfold_section): New function.
6767 * options.h (General_options::keep_unique): New option.
6768 * testsuite/Makefile.am: Add commands to build icf_keep_unique_test.
6769 * testsuite/Makefile.in: Regenerate.
6770 * testsuite/icf_keep_unique_test.sh: New file.
6771 * testsuite/icf_keep_unique_test.cc: New file.
6772
645afe0c
CC
67732009-08-12 Cary Coutant <ccoutant@google.com>
6774
6775 PR 10471
6776 * resolve.cc (Symbol_table::resolve): Check for references from
6777 dynamic objects to hidden and internal symbols.
6778 * testsuite/Makefile.am (hidden_test.sh): New test.
6779 * testsuite/Makefile.in: Regenerate.
6780 * testsuite/hidden_test.sh: New script.
6781 * testsuite/hidden_test_1.c: New test source.
6782 * testsuite/hidden_test_main.c: New test source.
6783
11af873f
DK
67842009-08-11 Doug Kwan <dougkwan@google.com>
6785
6786 * arm.cc: Update comments.
6787 (Target_arm::do_finalize_sections): Add a special PT_ARM_EXIDX
6788 segment to locate the .ARM.exidx section if present.
6789
b9f7d72d
DK
67902009-08-09 Doug Kwan <dougkwan@google.com>
6791
6792 * dynobj.h (Sized_dynobj::do_section_entsize): Revert the previous
6793 patch.
6794
ddd3c53c
ST
67952009-08-07 Sriraman Tallam <tmsriram@google.com>
6796 * dynobj.h (Sized_dynobj::do_section_entsize): Add return to avoid
6797 compiler warnings.
6798
27721062
ST
67992009-08-06 Sriraman Tallam <tmsriram@google.com>
6800
6801 * x86_64.cc (Target_x86_64::Relocate::relocate_tls): Check for a
6802 valid tls_segment only for non-debug-section relocations.
6803 * testsuite/Makefile.am: Add gc_tls_test.
6804 * testsuite/Makefile.in: Regenerate.
6805 * testsuite/gc_tls_test.cc: New file.
6806 * testsuite/gc_tls_test.sh: New file.
6807
ef15dade 68082009-08-05 Sriraman Tallam <tmsriram@google.com>
e1df38aa 6809
ef15dade
ST
6810 * icf.cc: New file.
6811 * icf.h: New file.
6812 * Makefile.am (CCFILES): Add icf.cc.
6813 (HFILES): Add icf.h
6814 * Makefile.in: Regenerate.
6815 * dynobj.h (Sized_dynobj::do_section_entsize): New function.
6816 * gc.h (gc_process_relocs): Populate lists used by icf to contain
6817 section, symbol and addend information for the relocs.
6818 * gold.cc (queue_middle_tasks): Call identical code folding.
6819 * gold.h: Add defines for multimap.
6820 * layout.cc (Layout::create_symtab_sections): Add symtab as parameter
6821 to the call of finalize_local_symbols.
6822 * main.cc (main): Create object of class Icf.
6823 * object.cc (Sized_relobj::do_layout): Allow this function to be
6824 called twice during icf.
6825 (Sized_relobj::do_finalize_local_symbols): Fold symbols corresponding
6826 to sections marked as identical by icf.
6827 (Sized_relobj::do_section_flags): Get section_flags from Symbols_data
6828 when available.
6829 (Sized_relobj::do_section_entsize): New function.
6830 * object.h (Object::section_entsize): New function.
6831 (Object::do_section_entsize): New pure virtual function.
6832 (Relobj::finalize_local_symbols): Add new parameter.
6833 (Relobj::do_section_entsize): New function.
6834 * options.h (General_options::icf): New option.
6835 (General_options::icf_iterations): New option.
6836 (General_options::print_icf_sections): New option.
6837 * plugin.cc (Sized_pluginobj::do_section_entsize): New function.
6838 * plugin.h (Sized_pluginobj::do_section_entsize): New function.
6839 * reloc.cc (Read_relocs::run): Delay scanning relocs when doing
6840 icf.
6841 * symtab.cc (Symbol_table::is_section_folded): New function.
6842 (Symbol_table::sized_finalize_symbol): Fold symbols corresponding
6843 to sections marked as identical by icf.
6844 * symtab.h (Symbol_table::set_icf): New function.
6845 (Symbol_table::icf): New function.
6846 (Symbol_table::is_section_folded): New function.
6847 (Symbol_table::icf_): New data member.
6848 * target-reloc.h (relocate_section): Ignore sections folded by icf.
6849 * testsuite/Makefile.am: Add commands to build icf_test.
6850 * testsuite/Makefile.in: Regenerate.
6851 * testsuite/icf_test.sh: New file.
6852 * testsuite/icf_test.cc: New file.
6853
c3b65ac4
CD
68542009-07-24 Chris Demetriou <cgd@google.com>
6855
6856 * layout.cc (is_compressible_debug_section): Fix incorrect
6857 comment about compressed section names.
6858
1caf2c51
ILT
68592009-07-20 Ian Lance Taylor <ian@airs.com>
6860
6861 PR 10419
6862 * x86_64.cc (Target_x86_64::do_code_fill): Correct nop sequences.
6863
1ef4d87f
ILT
68642009-07-16 Ian Lance Taylor <iant@google.com>
6865
6866 PR 10400
6867 * layout.h: #include <map>.
6868 (class Kept_section): Change from struct to class. Add accessors
6869 and setters. Add section size to Comdat_group mapping. Change
6870 Comdat_group to std::map. Add is_comdat_ field. Add
6871 linkonce_size field in union.
6872 (class Layout): Update declaration of find_or_add_kept_section.
6873 Don't declare find_kept_object.
6874 * layout.cc (Layout::find_or_add_kept_section): Remove candidate
6875 parameter. Add object, shndx, is_comdat, and is_group_name
6876 parameters. Change all callers. Adjust for new Kept_section.
6877 (Layout::find_kept_object): Remove.
6878 * object.cc (Sized_relobj::include_section_group): Update use of
6879 Kept_section. Rename secnum to shndx. Only record
6880 Kept_comdat_section if sections are the same size.
6881 (Sized_relobj::include_linkonce_section): Update use of
6882 Kept_section. Only record Kept_comdat_section if sections are the
6883 same size. Set size of linkonce section.
6884 (Sized_relobj::map_to_kept_section): Update call to
6885 get_kept_comdat_section.
6886 * object.h (class Sized_relobj): Rename fields in
6887 Kept_comdat_section to drop trailing underscores; change object
6888 field to Relobj*. Change Kept_comdat_section_table to store
6889 struct rather than pointer.
6890 (Sized_relobj::set_kept_comdat_section): Remove kept parameter.
6891 Add kept_object and kept_shndx parameters. Change all callers.
6892 (Sized_relobj::get_kept_comdat_section): Change return type to
6893 bool. Add kept_object and kept_shndx parameters. Change all
6894 callers.
6895 * plugin.cc (Pluginobj::include_comdat_group): Update call to
6896 Layout::find_or_add_kept_section.
6897
37c3b7b0
ILT
68982009-07-09 Ian Lance Taylor <iant@google.com>
6899
6900 * merge.cc (Object_merge_map::initialize_input_to_output_map):
6901 Reserve space in the hash table.
6902
98fa85cb
ILT
69032009-07-06 Mikolaj Zalewski <mikolajz@google.com>
6904
6905 * fileread.cc (File_read::get_mtime): New method.
6906 * fileread.h (Timespec): New structure.
6907 (File_read::get_mtime): New method.
6908 * incremental.cc (Incremental_inputs_entry_data::timestamp_usec):
6909 Renamed from timestamp_nsec.
6910 (Incremental_inputs_entry_write::timestamp_sec): Fix argument to
6911 Elf_Xword.
e1df38aa 6912 (Incremental_inputs_entry_write::timestamp_usec): Renamed from
98fa85cb 6913 timestamp_nsec.
e1df38aa 6914 (Incremental_inputs::report_archive): Save mtime; style fix.
98fa85cb
ILT
6915 (Incremental_inputs::report_obejct): Save mtime; style fix.
6916 (Incremental_inputs::report_script): Save mtime; style fix.
6917 (Incremental_inputs::finalize_inputs): Style fix.
6918 (Incremental_inputs::finalize): Style fix.
6919 (Incremental_inputs::create_input_section_data): Store inputs
6920 mtime.
6921 * incremental.h (Incremental_inputs::report_script): Add mtime
6922 argument.
6923 (Incremental_inputs::Input_info::Input_info): Intialize only one
6924 union member.
6925 (Incremental_inputs::Input_info::archive): Move to nameless
6926 union.
6927 (Incremental_inputs::Input_info::obejct): Move to nameless union.
6928 (Incremental_inputs::Input_info::script): Move to nameless union.
6929 (Incremental_inputs::mtime): New field.
6930 * script.cc (read_input_script): Pass file mtime to
6931 Incremental_input.
6932 * script.h (Script_info::inputs): Style fix.
6933
c9d70757
ILT
69342009-07-01 Ian Lance Taylor <ian@airs.com>
6935
6936 * freebsd.h (Target_freebsd::do_adjust_elf_header): Use size
6937 instead of 32.
6938
9c547ec3
ILT
69392009-06-24 Ian Lance Taylor <iant@google.com>
6940
6941 PR 10156
6942 * layout.cc (Layout::choose_output_section): If we find an
6943 existing section, update the flags.
6944 (Layout::create_notes): New function, broken out of
6945 Layout::finalize.
6946 (Layout::finalize): Don't create note sections.
6947 (Layout::create_note): Don't crash if linker script discards
6948 section.
6949 (Layout::create_gold_note): Likewise.
6950 (Layout::create_build_id): Likewise. Don't set
6951 after_input_sections on the section.
6952 (Layout::create_executable_stack_info): Remove target parameter.
6953 Change caller.
6954 * layout.h (class Layout): Declare create_notes. Update
6955 declaration of create_executable_stack_info.
6956 * gold.cc (queue_middle_tasks): Call create_notes.
6957 * output.cc (Output_section::update_flags_for_input_section): Move
6958 here from output.h. If SHF_ALLOC flag is newly set, mark address
6959 invalid.
6960 * output.h (Output_data::mark_address_invalid): New function.
6961 (class Output_section): Only declare, not define,
6962 update_flags_for_input_section. Remove set_flags.
6963
55458500
ILT
69642009-06-24 Ian Lance Taylor <iant@google.com>
6965
6966 * script-sections.cc (Output_section_definition::
6967 set_section_addresses): Rename shadowing local load_address to
6968 laddr.
6969
1307d6cd
ILT
69702009-06-24 Ian Lance Taylor <iant@google.com>
6971
6972 PR 10244
6973 * reloc.cc (relocate_sections): Skip empty relocation sections.
6974
ec3f783e
ILT
69752009-06-23 Ian Lance Taylor <iant@google.com>
6976
6977 PR 10156
6978 * layout.cc (Layout::create_note): Use choose_output_section
6979 rather than make_output_section.
6980
459c9f1c
ILT
69812009-06-23 Ian Lance Taylor <iant@google.com>
6982
6983 PR 10237
6984 * options.cc (General_options::parse_V): Set printed_version_.
6985 (General_options::General_options): Initialize printed_version_.
6986 * options.h (class General_options): Add printed_version_ field.
6987 * gold.cc (queue_initial_tasks): If there are no input files,
6988 don't give a fatal error if we printed the version information.
6989 (queue_middle_tasks): If using -r with a shared object, give a
6990 fatal error rather than an ordinary error.
6991
1518dc8f
ILT
69922009-06-23 Ian Lance Taylor <iant@google.com>
6993
6994 PR 10219
6995 * layout.cc (Layout::Layout): Initialize have_stabstr_section_.
6996 (Layout::make_output_section): Set have_stabstr_section_ if we see
6997 a .stab*str section.
6998 (Layout::finalize): Call link_stabs_sections.
6999 (Layout::link_stabs_sections): New file.
7000 * layout.h (class Layout): Add have_stabstr_section_ field.
7001 Declare link_stabs_sections.
7002
3d857b98
DK
70032009-06-23 Doug Kwan <dougkwan@google.com>
7004
7005 * Makefile.am (libgold_a_LIBADD): New.
7006 (ld_new_DEPENDENCIES, ld_new_LDADD): Remove LIBOBJS
7007 * Makefile.in: Regenerate.
7008 * config.in (HAVE_DECL_MEMMEM, HAVE_DECL_STRNDUP): New.
7009 * configure: Regenerate.
7010 * configure.ac (AC_CHECK_DECLS): Add strndup and memmem.
7011 * fileread.cc: Include sys/state.h
7012 * gold.h: Declare memmem and strndup if found missing.
7013 * gold_reloc.h: Include byteswap.h if HAVE_BYTESWAP_H is defined.
7014
0639a6f6
ILT
70152009-06-23 Ian Lance Taylor <iant@google.com>
7016
7017 * configure.ac: Call AC_CHECK_DECLS using C, not C++.
7018 * configure: Rebuild.
7019
8d63875c
ILT
70202009-06-23 Ian Lance Taylor <iant@google.com>
7021
7022 PR 10147
7023 * object.cc (Object::section_contents): Don't try to get a view if
7024 the section has length zero.
7025 (Object::handle_gnu_warning_section): If the section is empty, use
7026 the name of the section as the warning.
7027
f7c8a183
ILT
70282009-06-23 Ian Lance Taylor <iant@google.com>
7029
7030 PR 10133
7031 * stringpool.h (class Stringpool_template): Add optimize_ field.
7032 (Stringpool_template::set_optimize): New function.
7033 * stringpool.cc (Stringpool_template::Stringpool_template):
7034 Initialize optimize_ field.
7035 (Stringpool_template::set_string_offsets): Test local optimize
7036 fild rather than parameter.
7037 * layout.cc (Layout::Layout): Call set_optimize on the section
7038 name stringpool.
7039
e6a307ba
ILT
70402009-06-22 Ian Lance Taylor <iant@google.com>
7041
7042 PR 10030
7043 * yyscript.y: Parse TARGET.
7044 * script.cc (script_set_target): New function.
7045 * script-c.h (script_set_target): Declare.
7046 * options.cc (General_options::string_to_object_format): Rename
7047 from string_to_object_format in anonymous namespace. Change
7048 callers.
7049 * options.h (class General_options): Declare
7050 string_to_object_format.
7051
3ee173de
ILT
70522009-06-22 Ian Lance Taylor <iant@google.com>
7053
7054 * script-sections.cc (Script_sections::create_segments): Don't put
7055 program headers in a PT_LOAD segment if -n or -N.
7056
70572009-06-22 Ian Lance Taylor <iant@google.com>
e1c74d60
ILT
7058
7059 PR 10141
7060 * options.h (class General_options): Add -z lazy and -z now. Sort
7061 -z options into alphabetical order.
7062 * layout.cc (Layout::finish_dynamic_section): Handle -z now.
7063
cd6739a1 70642009-06-21 Ian Lance Taylor <iant@google.com>
8a5e3e08
ILT
7065
7066 * layout.cc (Layout::make_output_section): Call
7067 Target::new_output_section.
7068 (Layout::attach_allocated_section_to_segment): Put large section
7069 sections in a separate load segment with the large segment flag
7070 set.
7071 (Layout::segment_precedes): Sort large data segments after other
7072 load segments.
7073 (align_file_offset): New static function.
7074 (Layout::set_segment_offsets): Use align_file_offset.
7075 * output.h (class Output_section): Add is_small_section_ and
7076 is_large_section_ fields.
7077 (Output_section::is_small_section): New function.
7078 (Output_section::set_is_small_section): New function.
7079 (Output_section::is_large_section): New function.
7080 (Output_section::set_is_large_section): New function.
7081 (Output_section::is_large_data_section): New function.
7082 (class Output_segment): Add is_large_data_segment_ field.
7083 (Output_segment::is_large_data_segment): New function.
7084 (Output_segment::set_is_large_data_segment): New function.
7085 * output.cc (Output_section::Output_section): Initialize new
7086 fields.
7087 (Output_segment::Output_segment): Likewise.
7088 (Output_segment::add_output_section): Add assertion that large
7089 data sections always go in large data segments. Force small data
7090 sections to the end of the list of data sections. Force small BSS
7091 sections to the start of the list of BSS sections. For large BSS
7092 sections to the end of the list of BSS sections.
7093 * symtab.h (class Symbol): Declare is_common_shndx.
7094 (Symbol::is_defined): Check Symbol::is_common_shndx.
7095 (Symbol::is_common): Likewise.
7096 (class Symbol_table): Define enum Commons_section_type. Update
7097 declarations. Add small_commons_ and large_commons_ fields.
7098 * symtab.cc (Symbol::is_common_shndx): New function.
7099 (Symbol_table::Symbol_table): Initialize new fields.
7100 (Symbol_table::add_from_object): Put small and large common
7101 symbols in the right list.
7102 (Symbol_table::sized_finalized_symbol): Check
7103 Symbol::is_common_shndx.
7104 (Symbol_table::sized_write_globals): Likewise.
7105 * common.cc (Symbol_table::do_allocate_commons): Allocate new
7106 common symbol lists. Don't call do_allocate_commons_list if the
7107 list is empty.
7108 (Symbol_table::do_allocate_commons_list): Remove is_tls
7109 parameter. Add comons_section_type parameter. Change all
7110 callers. Handle small and large common symbols.
7111 * object.cc (Sized_relobj::do_finalize_local_symbols): Check
7112 Symbol::is_common_shndx.
7113 * resolve.cc (symbol_to_bits): Likewise.
7114 * target.h (Target::small_common_shndx): New function.
7115 (Target::small_common_section_flags): New function.
7116 (Target::large_common_shndx): New function.
7117 (Target::large_common_section_flags): New function.
7118 (Target::new_output_section): New function.
7119 (Target::Target_info): Add small_common_shndx, large_common_shndx,
7120 small_common_section_flags, and large_common_section_flags
7121 fields.
7122 (Target::do_new_output_section): New virtual function.
7123 * arm.cc (Target_arm::arm_info): Initialize new fields.
7124 * i386.cc (Target_i386::i386_info): Likewise.
7125 * powerpc.cc (Target_powerpc::powerpc_info) [all versions]:
7126 Likewise.
7127 * sparc.c (Target_sparc::sparc_info) [all versions]: Likewise.
7128 * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
7129 (Target_x86_64::do_new_output_section): New function.
7130 * configure.ac: Define conditional MCMODEL_MEDIUM.
7131 * testsuite/Makefile.am (check_PROGRAMS): Add large.
7132 (large_SOURCES, large_CFLAGS, large_DEPENDENCIES): Define.
7133 (large_LDFLAGS): Define.
7134 * testsuite/large.c: New file.
7135 * testsuite/testfile.cc (Target_test::test_target_info):
7136 Initialize new fields.
7137 * configure, testsuite/Makefile.in: Rebuild.
7138
bb04269c
DK
71392009-06-05 Doug Kwan <dougkwan@google.com>
7140
7141 * Makefile.am (CCFILES): Add target.cc.
e1df38aa 7142 * Makefile.in: Regenerate.
bb04269c
DK
7143 * i386.cc (class Target_i386): Define new virtual method to
7144 override do_is_local_label_name in parent.
7145 * object.cc (Sized_relobj::do_count_local_symbols): Discard
7146 local symbols if --discard-locals or -X is given.
7147 * options.h (class General_options): Declare new options
7148 '--discard-locals' and '-X' for discarding locals.
7149 * target.h (class Target): Define new methods is_local_label_name.
7150 Declare new virtual method do_is_local_label_name.
7151 * target.cc: New file.
7152 * testsuite/Makefile.am (check_PROGRAMS): Add discard_locals_test.
7153 (check_SCRIPTS): Add discard_locals_test.sh.
7154 (check_DATA): Add discard_local_tests.syms.
7155 (discard_locals_test_SOURCES, discard_locals_test_LDFLAGS): Define.
7156 (discard_local_tests.syms, discard_locals_test.o): New make rules.
7157 * testsuite/Makefile.in: Regenerate.
7158 * testsuite/discard_locals_test.c: New file.
7159 * testsuite/discard_locals_test.sh: Same.
7160
805bb01c
DK
71612009-06-05 Doug Kwan <dougkwan@google.com>
7162
7163 * object.cc (Sized_relobj::Sized_relobj): Initialize
7164 discarded_eh_frame_shndx_ to -1U.
7165 (Sized_relobj::do_layout): Record index of a discard .eh_frame
7166 section.
7167 (Sized_relobj::do_count_local_symbols): Skip local symbols in
7168 a discarded .eh_frame section.
7169 (Sized_relobj::do_finalize_local_symbols): Ditto.
7170 * object.h (class Sized_relobj): Declare new member
7171 discarded_eh_frame_shndx_.
7172 * testsuite/Makefile.am (check_PROGRAMS): Add local_labels_test.
7173 (local_labels_test.o, local_labels_test): New rules.
7174 * testsuite/Makefile.in: Regenerate.
7175
1dcd334d
DK
71762009-06-04 Doug Kwan <dougkwan@google.com>
7177
7178 * layout.cc (Layout::section_name_mapping): Add mapping for
7179 special ARM sections.
7180
96d49306
DK
71812009-06-03 Doug Kwan <dougkwan@google.com>
7182
7183 * arm.cc (utils::sign_extend): Reverse test in gold_assert.
7184 (utils::has_overflow): Same.
7185
dff16297
ILT
71862009-06-03 Ian Lance Taylor <iant@google.com>
7187
7188 * layout.cc (Layout::section_name_mapping): New array, replacing
7189 Layout::linkonce_mapping.
7190 (Layout::section_name_mapping_count): New variable, replacing
7191 Layout::linkonce_mapping_count.
7192 (Layout::linkonce_output_name): Remove.
7193 (Layout::output_section_name): Rewrite.
7194 * layout.h (class Layout): Rename Linkonce_mapping to
7195 Section_name_mapping, linkonce_mapping to section_name_mapping,
7196 linkonce_mapping_count to section_name_mapping_count. Don't
7197 declare linkonce_output_name.
7198
c121c671
DK
71992009-06-03 Doug Kwan <dougkwan@google.com>
7200
7201 * gold/arm.cc (namespace utils): New.
7202 (Target_arm::reloc_is_non_pic): Define new method.
7203 (class Arm_relocate_functions): New.
7204 (Target_arm::Relocate::relocate): Handle relocation types used by
7205 Android.
7206
07800fab
ILT
72072009-06-03 Ian Lance Taylor <iant@google.com>
7208
7209 * arm.cc (Target_arm::scan::global): Use || instead of |.
7210
c121c671
DK
72112009-06-02 Doug Kwan <dougkwan@google.com>
7212
7213 * gold/arm.cc (Target_arm::Scan::Scan): Initialize
7214 issued_non_pic_error_.
7215 (class Target_arm::Scan): Declare new method check_non_pic.
7216 Define new method symbol_needs_plt_entry.
7217 Declare new data member issued_non_pic_error_.
7218 (class Target_arm::Relocate): Declare new method
7219 should_apply_static_reloc.
7220 (Target_arm::may_need_copy_reloc): Handle STT_ARM_TFUNC.
7221 (Target_arm::Scan::check_non_pic): Define new method.
7222 (Target_arm::Scan::local): Handle a small subset of reloc types used
7223 by Android.
7224 (Target_arm::Scan::local): Same.
7225 (Target_arm::Relocate::should_apply_statci_reloc): Define new method.
7226
b19b0c6d
ILT
72272009-05-31 Mikolaj Zalewski <mikolajz@google.com>
7228
7229 * incremental.cc (Incremental_inputs::report_command_line): Filter
7230 out --incremental-* options.
7231
94cdfcff
DK
72322009-05-29 Doug Kwan <dougkwan@google.com>
7233
7234 * gold/arm.cc (Output_data_plt_arm): Forward declaration for new
7235 template class.
7236 (class Target_arm): Update comment.
7237 (Target_arm::Target_arm): Initialize new data members GOT_,
7238 PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_ and DYNBSS_.
7239 Declare new methods Target_arm::got_section, Target_arm::make_plt_entry
7240 and Target_arm::rel_dyn_section.
7241 Declare new_enum Target_arm::Got_type.
7242 Declare new data members GOT_, PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_
7243 and DYNBSS_.
7244 Update commments for member do_dynsym_value.
7245 (Target_arm::got_size, Target_arm::plt_section,
7246 Target_arm::may_need_copy_reloc and Target_arm::copy_reloc): Define
7247 new methods inside class defintion.
7248 (Target_arm::got_section): Define new method.
7249 (Target_arm::rel_dyn_section): Same.
7250 (Output_data_plt_arm): New template class.
7251 (Output_data_plt_arm::Output_data_plt_arm): Define constructor.
7252 (Output_data_plt_arm:do_adjust_output_section): Define new method.
7253 (Output_data_plt_arm::add_entry): Same.
7254 (Output_data_plt_arm::first_plt_entry): Define new
7255 static data member for PLT instruction template.
7256 (Output_data_plt_arm::plt_entry): Same.
7257 (Output_data_plt_arm::do_write): Define new method.
7258 (Target_arm::make_plt_entry): Same.
7259 (Target_arm::do_finalize_sections): Same.
7260 (Target_arm::do_dynsym_value): Same.
7261
4a657b0d
DK
72622009-05-28 Doug Kwan <dougkwan@google.com>
7263
7264 * Makefile.am (TARGETSOURCES): Add arm.cc.
7265 (ALL_TARGETOBJECTS): Add arm.$(OBJEXT)
7266 * Makefile.in: Regenerate.
7267 * arm.cc: New file.
7268 * configure.tgt: Add armbe*-*-*, armeb*-*-* and arm*-*-* targets.
7269
e7ae8c36
DK
72702009-05-26 Doug Kwan <dougkwan@google.com>
7271
7272 * options.cc (General_options::parse_exclude_libs). Fix a comment.
7273 (General_options::check_excluded_libs): Strip off directories in
7274 archive name before matching like GNU ld does.
7275 * testsuite/Makefile.am (MOSTLYCLEANFILES,
7276 exclude_libs_test_DEPENDENCIES): Add alt/libexclude_libs_test_3.a
7277 (exclude_libs_test_LDFLAGS): Add linker option
7278 -Wl,--exclude-libs,libexclude_libs_test_3
7279 (exclude_libs_test_LADD): Add alt/libexclude_libs_test_3.a as
7280 an explicit archive without using -l.
7281 (alt/libexclude_libs_test_3.a): New make rule.
7282 * testsuite/Makefile.in: Regenerate.
7283 * testsuite/exclude_libs_test.c : Declare lib3_default().
7284 (main): Call it.
7285 * exclude_libs_test.sh: Add tests for alt/exclude_libs_test_3.a.
7286 * exclude_libs_test_3.c: New file.
7287
f12e7348
NC
72882009-05-26 Nick Clifton <nickc@redhat.com>
7289
7290 * po/id.po: New Indonesian translation.
7291 * po/gold.pot: Updated template file.
7292
4daadc0d
ST
72932009-05-22 Sriraman Tallam <tmsriram@google.com>
7294
e1df38aa 7295 * testsuite/Makefile.am: Add -ffunction-sections to compile
4daadc0d
ST
7296 gc_comdat_test files. Add -Wl,--gc-sections to build
7297 gc_comdat_test.
7298 * testsuite/Makefile.in: Regenerate.
7299 * testsuite/gc_comdat_test.sh: Fix the condition around grep.
7300
531813ad
ST
73012009-05-21 Sriraman Tallam <tmsriram@google.com>
7302
7303 * object.cc (Sized_relobj::map_to_kept_section): Return NULL if the
7304 kept comdat section was garbage collected.
7305 * testsuite/Makefile.am: Add test gc_comdat_test.sh.
7306 * testsuite/Makefile.in: Regenerate.
7307 * testsuite/gc_comdat_test.sh: New file.
7308 * testsuite/gc_comdat_test_1.cc: New file.
7309 * testsuite/gc_comdat_test_2.cc: New file.
7310
65514900
CC
73112009-05-19 Doug Kwan <dougkwan@google.com>
7312
7313 * archive.cc (Archive::Archive): Move constructor from archive.h
7314 to here. Initialize no_export_.
7315 (Archive::get_elf_object_for_member): Set no_export flag of object.
7316 * archive.h (Archive::Archive): Move constructor body to
7317 archive.cc.
7318 (Archive::no_export): New method.
7319 (Archive::no_export_): New field.
7320 * object.h (Object::Object): Initialize no_export_ to false.
7321 (Object::no_export, Object::set_no_export): New methods.
7322 (Object::no_export_): New field.
7323 * options.cc (General_options::parse_exclude_libs): New method.
7324 (General_options::check_excluded_libs) Same.
7325 * options.h (exclude_libs): New option.
7326 (General_options::check_excluded_libs): New method declaration.
7327 (General_options::excluded_libs_): New field.
7328 * symtab.cc (Symbol_table::add_from_relobj): Hide symbols with
7329 default or protected visibility if an object has no-export flag set.
7330 testsuite/Makefile.am (check_PROGRAMS): Add exclude_libs_test.
7331 (check_SCRIPTS): Add exclude_libs_test.sh.
7332 (check_DATA): Add exclude_libs_test.syms.
7333 (MOSTLYCLEANFILES): Add exclude_libs_test.syms,
7334 libexclude_libs_test_1.a and libexclude_libs_test_2.a.
7335 (exclude_libs_test_SOURCES, exclude_libs_test_DEPENDENCIES,
7336 exclude_libs_test_LDFLAGS and exclude_libs_test_LDADD): Define.
7337 (exclude_libs_test.syms, libexclude_libs_test_1.a,
7338 libexclude_libs_test_2.a): New rules.
7339 * testsuite/Makefile.in: Regenerate.
7340 * testsuite/exclude_libs_test.c: New file.
7341 * testsuite/exclude_libs_test.sh: Ditto.
7342 * testsuite/exclude_libs_test_1.c: Ditto.
7343 * testsuite/exclude_libs_test_2.c: Ditto.
7344
1b77ea50
ILT
73452009-05-15 Ian Lance Taylor <iant@google.com>
7346
7347 * configure.ac: Check for declarations for cases where libiberty.h
7348 checks HAVE_DECL_xxx.
7349 * configure, config.in: Rebuild.
7350
072fe7ce
ILT
73512009-05-15 Mikolaj Zalewski <mikolajz@google.com>
7352
7353 * gold.h (Incremental_argument_list): Remove (invalid) forward
7354 declaration.
7355 * incremental.cc (Incremental_inputs::report_achive): New method.
7356 (Incremental_inputs::report_object): New method.
7357 (Incremental_inputs::report_script): New method.
7358 (Incremental_inputs::finalize_inputs): New method.
7359 (Incremental_inputs::finalize): Call finalize_inputs().
7360 (Incremental_inputs::sized_create_incremental_inputs_section_data):
7361 Create inputs entries.
7362 * incremental.h (Incremental_input_type): New enum.
7363 (Incremental_inputs::Incremental_input): Initialize new fields.
7364 (Incremental_inputs::report_inputs): New method.
7365 (Incremental_inputs::report_achive): New method.
7366 (Incremental_inputs::report_object): New method.
7367 (Incremental_inputs::report_script): New method.
7368 (Incremental_inputs::finalize_inputs): New method.
7369 (Incremental_inputs::Input_info): New struct.
7370 (Incremental_inputs::Input_info_map): New typedef.
7371 (Incremental_inputs::lock_): New field.
7372 (Incremental_inputs::Inputs_): New field.
7373 (Incremental_inputs::Inputs_map): New field.
7374 * main.cc (main): Call Incremental_input::report_inputs.
7375 * options.h (Input_argument_list): Typedef moved from
7376 Input_arguments.
7377 (Input_file_group::Files): Remove, use ::Input_argument_list.
7378 (Input_file_group::Input_argument_list): Remove, use
7379 ::Input_argument_list.
7380 * plugin.cc (Plugin_manager::add_input_file): Add error in
7381 incremental build.
7382 * read_syms.cc (do_read_syms): Call Incremental_input::report_*
7383 functions.
7384 * script.cc (read_input_script): Call
7385 Incremental_input::report_script.
7386 * script.h (Script_info): New class.
7387
b0481b0b
ILT
73882009-04-27 Ian Lance Taylor <iant@google.com>
7389
7390 * x86_64.cc (do_adjust_output_section): Set entsize to
7391 plt_entry_size.
7392
b22a5a41 73932009-04-23 Elliott Hughes <enh@google.com>
6d1e3092
CD
7394
7395 * output.cc (Output_file::close): After short writes, continue
7396 writing from the correct offset in the buffer being written.
7397
40fde488
CD
73982009-04-23 Chris Demetriou <cgd@google.com>
7399
7400 * configure.ac (HAVE_TR1_UNORDERED_MAP_REHASH): New define.
7401 * configure: Regenerate.
7402 * config.in: Regenerate.
7403 * gold.h: Avoid std::tr1::unordered_map and std::tr1::unordered_set
7404 if HAVE_TR1_UNORDERED_MAP_REHASH is not defined.
7405
3ce2c28e
ILT
74062009-04-21 Mikolaj Zalewski <mikolajz@google.com>
7407
7408 * incremental.cc (Incremental_inputs_header_data): Renamed from
7409 Incremental_input_header_data.
7410 (Incremental_inputs_header_data::data_size): New field.
7411 (Incremental_inputs_header_data::put_input_file_count): Renamed
7412 from input_file_count.
7413 (Incremental_inputs_header_data::put_command_line_offset): Renamed
7414 from command_line_offset.
7415 (Incremental_inputs_header_data::put_reserved): Renamed from
7416 put_reserved.
7417 (Incremental_inputs_entry_data): Renamed from
7418 Incremental_input_entry_data.
7419 (Incremental_inputs_entry_data::data_size): New field.
7420 (Incremental_inputs::report_command_line): New method.
7421 (Incremental_inputs::finalize): New method.
7422 (Incremental_inputs::create_incremental_inputs_data): New method.
7423 (Incremental_inputs::sized_create_incremental_inputs_data): New method.
7424 * incremental.h: New file.
7425 * layout.cc (Layout::Layout): Handle new incremental_inputs_.
7426 (Layout::finalize): Create incremental inputs section in
7427 incremental builds.
7428 (Layout::create_incremental_info_sections): New method.
7429 * layout.h (Layout::incremental_inputs): New method.
7430 (Layout::create_incremental_info_sections): New method.
7431 (Layout::incremental_inputs_): New field.
7432 * main.cc (main): Notify Incremental_input of the command line.
7433
e55bde5e
ILT
74342009-04-01 Ian Lance Taylor <iant@google.com>
7435 Mikolaj Zalewski <mikolajz@google.com>
7436
7437 * gold.h (reserve_unordered_map): Define, three versions, one for
7438 each version of Unordered_map.
7439 * layout.cc (Layout::Layout): Remove options parameter. Add
7440 number_of_input_files parameter. Don't initialize options_.
7441 Initialize number_of_input_files_ and resized_signatures_. Move
7442 sections_are_attached_.
7443 (Layout::layout_group): Reserve space for group_signatures_.
7444 (Layout::find_or_add_kept_section): Change name parameter to be a
7445 reference. Resize signatures_ map when it gets large enough.
7446 (Layout::layout_eh_frame): Use parameters->options() instead of
7447 this->options_.
7448 (Layout::make_output_section): Likewise.
7449 (Layout::attach_allocated_section_to_segment): Likewise.
7450 (Layout::finalize, Layout::create_executable_stack): Likewise.
7451 (Layout::set_segment_offsets, Layout::create_interp): Likewise.
7452 (Layout::finish_dynamic_section, Layout::write_binary): Likewise.
7453 * layout.h (class Layout): Update declarations. Remove options_
7454 field. Add number_of_input_files_ and resized_signatures_
7455 fields. Move sections_are_attached_ field.
7456 * main.cc (main): Pass number of input files to Layout
7457 constructor. Don't pass options.
7458
154b857c
ILT
74592009-03-30 Ian Lance Taylor <iant@google.com>
7460
7461 * ffsll.c (ffsll): Correct implementation.
7462
2f35ab9b
ILT
74632009-03-27 Ian Lance Taylor <iant@google.com>
7464
fd03461a
ILT
7465 * ffsll.c: New file.
7466 * configure.ac: Call AC_REPLACE_FUNCS on ffsll.
7467 * gold.h (ffsll): Declare if HAVE_FFSLL is not defined.
7468 * ftruncate.c (ftruncate): Declare before definition.
7469 * mremap.c (mremap): Likewise.
7470 * pread.c (pread): Likewise.
7471 * configure, Makefile.in, config.in: Rebuild.
7472
2f35ab9b
ILT
7473 * mremap.c: New file.
7474 * configure.ac: Call AC_REPLACE_FUNCS on mremap.
7475 * gold.h (MREMAP_MAYMOVE): Define if HAVE_MREMAP is not defined.
7476 (mremap): Declare if HAVE_MREMAP is not defined.
7477 * configure, Makefile.in, config.in: Rebuild.
7478
33aea2fd
CC
74792009-03-27 Cary Coutant <ccoutant@google.com>
7480
7481 * powerpc.cc (Target_powerpc::check_non_pic): Assert that output is
7482 position independent.
7483 * sparc.cc (Target_sparc::check_non_pic): Likewise.
7484 * x86_64.cc (Target_x86_64::check_non_pic): Likewise.
7485
6d479619
CC
74862009-03-24 Cary Coutant <ccoutant@google.com>
7487
7488 * symtab.h (needs_plt_entry): Check for unsatisfied reference from
7489 an executable.
7490 (needs_dynamic_reloc): Likewise.
7491
afc06bb8
ILT
74922009-03-24 Ian Lance Taylor <iant@google.com>
7493
7494 * yyscript.y (file_cmd): Recognize EXTERN.
7495 (extern_name_list, extern_name_list_body): New nonterminals.
7496 * script.cc (script_add_extern): Define.
7497 * script-c.h (script_add_extern): Declare.
7498
f6060a4d
ILT
74992009-03-24 Rafael Avila de Espindola <espindola@google.com>
7500
7501 * object.cc (is_elf_object): Define.
7502 * object.h (is_elf_object): Declare.
7503 * archive.cc (Archive::get_elf_object_for_member): Call
7504 is_elf_object.
33aea2fd 7505 * readsyms.cc (Read_symbols::do_read_symbols): Likewise.
f6060a4d 7506
26736d8e
ILT
75072009-03-24 Elliott Hughes <enh@google.com>
7508
7509 * output.cc (Output_file::map_anonymous): Define.
7510 (Output_file::map): Use map_anonymous. If the regular mmap fails,
7511 try an anonymous one. Report the size if the mmap fails.
7512 * output.h (class Output_file): Declare map_anonymous.
7513
22fd9730
ILT
75142009-03-24 Ian Lance Taylor <iant@google.com>
7515
7516 * target-select.cc (instantiate_target): Don't acquire the lock if
7517 the instantiated_target_ field has already been set.
7518
cb010894
ILT
75192009-03-23 Ian Lance Taylor <iant@google.com>
7520
7f055c20
ILT
7521 * gold-threads.h (class Initialize_lock): Define.
7522 * gold-threads.cc (class Initialize_lock_once): Define.
7523 (initialize_lock_control): New static variable.
7524 (initialize_lock_pointer): New static variable.
7525 (initialize_lock_once): New static function.
7526 (Initialize_lock::Initialize_lock): Define.
7527 (Initialize_lock::initialize): Define.
7528 * target-select.h: Include "gold-threads.h".
7529 (class Target_selector): Add lock_ and initialize_lock_ fields.
7530 Don't define instantiate_target, just declare it.
7531 * target-select.cc (Target_selector::Target_selector): Initialize
7532 new fields.
7533 (Target_selector::instantiate_target): Define.
7534 * descriptors.h: Include "gold-threads.h".
7535 (class Descriptors): Add initialize_lock_ field.
7536 * descriptors.cc (Descriptors::Descriptors): Initialize new
7537 field.
7538 (Descriptors::open): Use initialize_lock_ field
7539 * errors.h (class Errors): Add initialize_lock_ field.
7540 * errors.cc (Errors::Errors): Initialize new field.
7541 (Errors::initialize_lock): Use initialize_lock_ field.
7542 * powerpc.cc (class Target_selector_powerpc): Remove
7543 instantiated_target_ field. In do_recognize call
7544 instantiate_target rather than do_instantiate_target. In
7545 do_instantiate_target just allocate a new target.
7546 * sparc.cc (class Target_selector_sparc): Likewise.
7547
36959681
ILT
7548 * freebsd.h: New file.
7549 * i386.cc: Include "freebsd.h".
7550 (Target_i386): Derive from Target_freebsd rather than
7551 Sized_target.
7552 (Target_selector_i386): Derive from Target_selector_freebsd rather
7553 than Target_selector.
7554 * x86_64.cc: Include "freebsd.h".
7555 (Target_x86_64): Derive from Target_freebsd rather than
7556 Sized_target.
7557 (Target_selector_x86_64): Derive from Target_selector_freebsd
7558 rather than Target_selector.
7559 * target.h (class Target): Add adjust_elf_header and
7560 do_adjust_elf_header.
7561 * output.cc (Output_file_header:: do_sized_write): Call target
7562 adjust_elf_header routine.
7563 * configure.tgt: Set targ_osabi.
7564 * configure.ac: Define GOLD_DEFAULT_OSABI.
7565 * parameters.cc (Parameters::default_target): Pass
7566 GOLD_DEFAULT_OSABI to select_target.
7567 * target-select.h (class Target_selector): Make instantiate_target
7568 protected rather than private.
7569 * Makefile.am (HFILES): Add freebsd.h.
7570 * configure, Makefile.in, config.in: Rebuild.
7571
cb010894
ILT
7572 * merge.cc (do_add_input_section): Correct pend value. Change
7573 message about last entry not being null terminated from error to
7574 warning.
7575
0e879927
ILT
75762009-03-20 Mikolaj Zalewski <mikolajz@google.com>
7577
7578 * incremental.cc: New file.
7579 * Makefile.am (CCFILES): Add incremental.cc.
7580 * Makefile.in: Rebuild.
7581
41105937
PP
75822009-03-19 Paul Pluzhnikov <ppluzhnikov@google.com>
7583
7584 * layout.cc (Layout::output_section_name): Preserve names
7585 of '.note.' sections.
e1df38aa 7586
60439920
ILT
75872009-03-19 Ian Lance Taylor <iant@google.com>
7588
7589 * descriptors.cc (Descriptors::open): Check that the options are
7590 valid before using them.
7591
0d371ad3
ILT
75922009-03-18 Ian Lance Taylor <iant@google.com>
7593
7594 * script-sections.h: Include <list>.
7595 (class Script_sections): Change Sections_elements from std::vector
7596 to std::list. Typedef public Elements_iterator. Add
7597 orphan_section_placement_, data_segment_align_start_, and
7598 saw_data_segment_align_ fields. Remove data_segment_align_index_
7599 field.
7600 * script-sections.cc (class Orphan_section_placement): New class.
7601 (class Sections_element): Add virtual functions is_relro and
7602 orphan_section_init. Remove virtual function place_orphan_here.
7603 (class Output_section_definition): Add is_relro and
7604 orphan_section_init. Remove place_orphan_here.
7605 (class Orphan_output_section): Likewise.
7606 (Script_sections::Script_sections): Update for field changes.
7607 (Script_sections::data_segment_align): Set saw_data_segment_align_
7608 and data_segment_align_start_, not data_segment_align_index.
7609 (Script_sections::data_segment_relro_end): Check
7610 saw_data_segment_align_. Use data_segment_align_start_ rather
7611 than data_segment_align_index_.
7612 (Script_sections::place_orphan): Rewrite to use
7613 Orphan_section_placement.
7614
9201d894
ILT
76152009-03-17 Ian Lance Taylor <iant@google.com>
7616
9c5b8369
ILT
7617 * archive.cc (Archive::add_symbols): Check for a version attached
7618 to the symbol name in the archive map.
7619 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_11.
7620 (ver_test_11_SOURCES, ver_test_11_DEPENDENCIES): Define.
7621 (ver_test_11_LDFLAGS, ver_test_11_LDADD): Define.
7622 (ver_test_11.a): New target.
7623 * testsuite/Makefile.in: Rebuild.
7624
9201d894
ILT
7625 * configure.ac: Check for chsize and posix_fallocate. Replace
7626 ftruncate.
7627 * ftruncate.c: New file, from gnulib.
7628 * output.cc (posix_fallocate): Define dummy version if not
7629 HAVE_POSIX_FALLOCATE.
7630 (Output_file::map): Call posix_fallocate rather than lseek and
7631 write.
7632 * gold.h (ftruncate): Declare if not HAVE_FTRUNCATE.
7633 * configure, Makefile.in, config.in: Rebuild.
7634
ef4ab7a8 76352009-03-17 Paul Pluzhnikov <ppluzhnikov@google.com>
e1df38aa 7636
ef4ab7a8
PP
7637 * layout.h (Layout::create_note): Add section_name parameter.
7638 * layout.cc (Layout::create_note): Likewise.
7639 (Layout::create_build_id, Layout::create_gold_note): Fix callers.
e1df38aa 7640
8c500701
ILT
76412009-03-17 Ian Lance Taylor <iant@google.com>
7642
e85b18e1
ILT
7643 * descriptors.cc: Include "options.h".
7644 (FD_CLOEXEC, O_CLOEXEC): Define if not defined.
7645 (Descriptors::open): Always use O_CLOEXEC when opening a new
7646 descriptor. If we have a plugin, and O_CLOEXEC was not defined,
7647 then set FD_CLOEXEC.
7648
9efe6174
ILT
7649 * sparc.cc (class Target_sparc): Add has_got_section.
7650 (Target_sparc::Scan::global): If we see _GLOBAL_OFFSET_TABLE_,
7651 make sure we have a GOT section.
7652
7653 * sparc.cc (optimize_tls_reloc): Recognize R_SPARC_TLS_IE_ADD.
7654 (Target_sparc::Scan::local): Likewise.
7655 (Target_sparc::Scan::global): Likewise.
7656 (Target_sparc::Relocate::relocate): Likewise.
7657 (Target_sparc::Relocate::relocate_tls): Likewise.
7658
8c500701
ILT
7659 * symtab.cc (Symbol_table::define_default_version): New function,
7660 broken out of add_from_object.
7661 (Symbol_table::add_from_object): Call define_default_version.
7662 (Symbol_table::define_special_symbol): Add resolve_oldsym
7663 parameter. Change all callers. If the version for a symbol comes
7664 from a version script, resolve it with the symbol with the same
7665 name with no version. Also add the symbol without a version if
7666 appropriate.
7667 (do_define_in_output_data): If resolving with oldsym, don't delete
7668 sym.
7669 (do_define_in_output_segment): Likewise.
7670 (do_define_as_constant): Likewise.
7671 * symtab.h (class Symbol_table): Update declarations.
7672
f1ed28fb
ILT
76732009-03-13 Ian Lance Taylor <iant@google.com>
7674
15f8229b
ILT
7675 * readsyms.cc (Read_symbols::incompatible_warning): New function.
7676 (Read_symbols::requeue): New function.
7677 (Read_symbols::do_read_symbols): If make_elf_object fails because
7678 the target type is not configured, and the file was searched for,
7679 issue a warning and retry with the next directory.
7680 (Add_symbols::run): If the file has an incompatible format, and
7681 it was searched for, requeue the Read_symbols task. On error,
7682 release the object.
7683 * readsyms.h (class Read_symbols): Add dirindex_ field. Add
7684 dirindex parameter to constructor. Change all callers. Declare
7685 incompatible_warning and requeue.
7686 (class Add_symbols): Add dirpath_, dirindex_, mapfile_,
7687 input_argument_ and input_group_ fields. Add them to
7688 constructor. Change all callers.
7689 (class Read_script): Add dirindex_ field. Add it to constructor.
7690 Change all callers.
7691 * archive.cc (Archive::setup): Remove input_objects parameter.
7692 Change all callers.
7693 (Archive::get_file_and_offset): Likewise.
7694 (Archive::read_all_symbols): Likewise.
7695 (Archive::read_symbols): Likewise.
7696 (Archive::get_elf_object_for_member): Remove input_objects
7697 parameter. Add punconfigured parameter. Change all callers.
7698 (Archive::add_symbols): Change return type to bool. Check return
7699 value of include_member.
7700 (Archive::include_all_members): Likewise.
7701 (Archive::include_member): Change return type to bool. Return
7702 false if first included object has incompatible target. Set
7703 included_member_ field.
7704 (Add_archive_symbols::run): If add_symbols returns false, requeue
7705 Read_symbols task.
7706 * archive.h (class Archive): Add included_member_ field.
7707 Initialize it in constructor. Add input_file and searched_for
7708 methods. Update declarations.
7709 (class Add_archive_symbols): Add dirpath_, dirindex_, and
7710 input_argument_ fields. Add them to constructor. Change all
7711 callers.
7712 * script.cc: Include "target-select.h".
7713 (class Parser_closure): Add skip_on_incompatible_target_ and
7714 found_incompatible_target_ fields. Add
7715 skip_on_incompatible_target parameter to constructor. Change all
7716 callers. Add methods skip_on_incompatible_target,
7717 clear_skip_on_incompatible_target, found_incompatible_target, and
7718 set_found_incompatible_target.
7719 (read_input_script): Add dirindex parameter. Change all callers.
7720 If parser finds an incompatible target, requeue Read_symbols
7721 task.
7722 (script_set_symbol): Clear skip_on_incompatible_target in
7723 closure.
7724 (script_add_assertion, script_parse_option): Likewise.
7725 (script_start_sections, script_add_phdr): Likewise.
7726 (script_check_output_format): New function.
7727 * script.h (read_input_script): Update declaration.
7728 * script-c.h (script_check_output_format): Declare.
7729 * yyscript.y (file_cmd): Handle OUTPUT_FORMAT.
7730 (ignore_cmd): Remove OUTPUT_FORMAT.
7731 * fileread.cc (Input_file::Input_file): Add explicit this.
7732 (Input_file::will_search_for): New function.
7733 (Input_file::open): Add pindex parameter. Change all callers.
7734 * fileread.h (class Input_file): Add input_file_argument method.
7735 Declare will_search_for. Update declarations.
7736 * object.cc (make_elf_object): Add punconfigured parameter.
7737 Change all callers.
7738 * object.h (class Object): Make input_file public. Add
7739 searched_for method.
7740 (make_elf_object): Update declaration.
7741 * dirsearch.cc (Dirsearch::find): Add pindex parameter. Use it to
7742 restart search.
7743 * dirsearch.h (class Dirsearch): Update declaration.
7744 * options.h (class General_options): Add --warn-search-mismatch.
7745 * parameters.cc (Parameters::is_compatible_target): New function.
7746 * parameters.h (class Parameters): Declare is_compatible_target.
7747 * workqueue.cc (Workqueue::add_blocker): New function.
7748 * workqueue.h (class Workqueue): Declare add_blocker.
7749
f1ed28fb
ILT
7750 * fileread.cc (Input_file::open): Remove options parameter.
7751 Change all callers.
7752 (Input_file::open_binary): Likewise.
7753 * script.cc (read_input_script): Likewise.
7754 * readsyms.h (class Read_symbols): Remove options_ field. Remove
7755 options parameter from constructor. Change all callers.
7756 (class Read_script): Likewise.
7757 * fileread.h (class Input_file): Update declarations.
7758 * script.h (read_input_script): Update declaration.
7759
34dd024a
NC
77602009-03-10 Nick Clifton <nickc@redhat.com>
7761
7762 * po/es.po: New Spanish translation.
7763
6d71b17c
CC
77642009-03-06 Cary Coutant <ccoutant@google.com>
7765
7766 * options.cc (parse_short_option): Keep dash_z from registering itself.
7767
031cdbed
ILT
77682009-03-03 Ian Lance Taylor <iant@google.com>
7769
7770 PR 9918
7771 * target-reloc.h (relocate_section): Pass output_section to
7772 relocate.
7773 * i386.cc (Target_i386::should_apply_static_reloc): Add
7774 output_section parameter. Change all callers.
7775 (Target_i386::Relocate::relocate): Add output_section parameter.
7776 * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
7777 * sparc.cc (Target_sparc::Relocate::relocate): Likewise.
7778 * powerpc.cc (Target_powerpc::Relocate::relocate): Likewise.
7779 * testsuite/two_file_shared.sh: New script.
7780 * testsuite/Makefile.am (check_SCRIPTS): Add two_file_shared.sh.
7781 (check_DATA): Add two_file_shared.dbg.
7782 (two_file_shared.dbg): New target.
7783 * testsuite/Makefile.in: Rebuild.
7784
15d5fa16
ILT
77852009-03-01 Ian Lance Taylor <iant@google.com>
7786
7787 * configure.ac: Check for byteswap.h.
7788 * configure: Rebuild.
7789 * config.in: Rebuild.
7790
8a4c0b0d
ILT
77912009-03-01 Mikolaj Zalewski <mikolajz@google.com>
7792
7793 * layout.cc (Layout::find_or_add_kept_section): New function.
7794 (Layout::add_comdat): Removed.
7795 * layout.h (struct Kept_section): Move out of class Layout.
7796 Remove trailing underscores from field names. Add group_sections
7797 field. Rename group_ field to is_group. Change all uses.
7798 (class Layout): Declare find_or_add_kept_section, not add_comdat.
7799 * object.cc (Sized_relobj::Sized_relobj): Don't initialize
7800 comdat_groups_ field.
7801 (Sized_relobj::include_section_group): Use
7802 find_or_add_kept_section and Kept_section::group_sections.
7803 (Sized_relobj::include_linkonce_section): Likewise.
7804 * object.cc (class Sized_relobj): Don't define Comdat_group or
7805 Comdat_group_table. Remove find_comdat_group and
7806 add_comdat_group. Remove comdat_groups_ field.
7807 * plugin.cc (include_comdat_group): Use
7808 Layout::find_or_add_kept_section.
7809
b4ecf66b
ILT
78102009-02-28 Ian Lance Taylor <iant@google.com>
7811
14359ca0
ILT
7812 * README: --gc-sections and map files are now supported. Document
7813 some build requirements.
7814
b4ecf66b
ILT
7815 PR 6992
7816 * symtab.cc (Symbol_table::sized_write_section_symbol): In a
7817 relocatable link set the value of the section symbol to zero.
7818 * object.cc (Sized_relobj::do_finalize_local_symbols): In a
7819 relocatable link don't include the section address in the local
7820 symbol value.
7821
0602e05a
ILT
78222009-02-27 Ian Lance Taylor <iant@google.com>
7823
fd9d194f
ILT
7824 PR 6811
7825 * options.h (class Search_directory): Add is_system_directory.
7826 (class General_options): Declare is_in_system_directory.
7827 * options.cc (get_relative_sysroot): Make static.
7828 (get_default_sysroot): Make static.
7829 (General_optoins::is_in_system_directory): New function.
7830 * fileread.cc (Input_file::is_in_system_directory): New function.
7831 * fileread.h (class Input_file): Declare is_in_system_directory.
7832 * object.h (class Object): Add is_in_system_directory.
7833 (class Input_objects): Remove system_library_directory_ field.
7834 * object.cc (Input_objects::add_object): Don't set
7835 system_library_directory_.
7836 (input_objects::found_in_system_library_directory): Remove.
7837 * symtab.cc (Symbol_table::write_globals): Remove input_objects
7838 parameter. Change all callers.
7839 (Symbol_table::sized_write_globals): Likewise.
7840 (Symbol_table::warn_about_undefined_dynobj_symbol): Likewise.
7841 Call Object::is_in_system_directory.
7842 * symtab.h (class Symbol_table): Update declarations.
7843
61edd21f
ILT
7844 PR 5990
7845 * descriptors.h (Open_descriptor): Add is_on_stack field.
7846 * descriptors.cc (Descriptors::open): If the descriptor is on the
7847 top of the stack, remove it. Initialize is_on_stack field.
7848 (Descriptors::release): Only add pod to stack if it is not on the
7849 stack already.
7850 (Descriptors::close_some_descriptor): Clear stack_next and
7851 is_on_stack fields.
7852
e29e076a
ILT
7853 PR 7091
7854 * output.cc (Output_section::find_starting_output_address): Rename
7855 from starting_output_address; add PADDR parameter; change return
7856 type.
7857 * output.h (class Output_section): Declare
7858 find_starting_output_address instead of starting_output_address.
7859 * object.cc (Sized_relobj::do_finalize_local_symbols): Handle a
7860 section symbol for which we can't find a merge section.
7861
0602e05a
ILT
7862 PR 9836
7863 * symtab.cc (Symbol_table::add_from_object): If the visibility is
7864 hidden or internal, force the symbol to be local.
7865 * resolve.cc (Symbol::override_visibility): Define.
7866 (Symbol::override_base): Use override_visibility.
7867 (Symbol_table::resolve): Likewise.
7868 (Symbol::override_base_with_special): Likewise.
7869 (Symbol_table::override_with_special): If the visibility is hidden
7870 or internal, force the symbol to be local.
7871 * symtab.h (class Symbol): Add set_visibility and
7872 override_visibility.
7873 * testsuite/ver_test_1.sh: New file.
7874 * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_1.sh.
7875 (check_DATA): Add ver_test_1.syms.
7876 (ver_test_1.syms): New target.
7877 * testsuite/Makefile.in: Rebuild.
7878
401a9a73
CC
78792009-02-25 Cary Coutant <ccoutant@google.com>
7880
7881 * layout.cc (Layout::choose_output_section): Don't rename sections
7882 when using a linker script that has a SECTIONS clause.
7883 * Makefile.in: Regenerate.
7884
7885 * testsuite/Makefile.am (script_test_5.sh): New test case.
7886 * testsuite/Makefile.in: Regenerate.
7887 * testsuite/script_test_5.cc: New file.
7888 * testsuite/script_test_5.sh: New file.
7889 * testsuite/script_test_5.t: New file.
7890
f488e4b0
CC
78912009-02-13 Rafael Avila de Espindola <espindola@google.com>
7892
7893 * archive.cc (Archive::include_member): Update calls to add_symbols.
7894 * dynobj.cc (Sized_dynobj<size, big_endian>::make_version_map): Add
7895 the Layout argument.
7896 * dynobj.h (do_add_symbols): Add the Layout argument.
7897 * object.cc (Sized_relobj<size, big_endian>::do_add_symbols): Add the
7898 Layout argument.
7899 * object.h (Object::add_symbols): Add the Layout argument.
7900 (Object::do_add_symbols): Add the Layout argument.
7901 (Sized_relobj::do_add_symbols): Add the Layout argument.
7902 * plugin.cc (Sized_pluginobj<size, big_endian>::do_add_symbols):
7903 Unify the two versions.
7904 (Add_plugin_symbols): Remove.
7905 * plugin.h (Pluginobj::add_symbols, Pluginobj::do_add_symbols): Remove.
7906 (Sized_pluginobj::do_add_symbols): Unify the two versions.
7907 (Add_plugin_symbols): Remove.
7908 * readsyms.cc (Read_symbols::do_read_symbols): Update call to
7909 Add_symbols. Use Add_symbols instead of Add_plugin_symbols.
7910 (Add_symbols::run): Make it work with Pulginobj.
7911
89dd1680
ILT
79122009-02-06 Ian Lance Taylor <iant@google.com>
7913
7914 * object.cc (Sized_relobj::do_layout): Make info message start
7915 with lower case letter.
7916
266d0a74
ILT
79172009-02-06 Mikolaj Zalewski <mikolajz@google.com>
7918
602b464e
ILT
7919 * binary.cc: Fix file comment.
7920
266d0a74
ILT
7921 * options.h (enum Incremental_disposition): Define.
7922 (class General_options): Add new options: --incremental,
7923 --incremental_changed, --incremental_unchanged,
7924 --incremental_unknown. Add incremental_disposition_ and
7925 implicit_incremental_ fields.
7926 (General_options::incremental_disposition): New function.
7927 (class Position_dependent_options): Add incremental_disposition
7928 option.
7929 (Position_dependent_options::copy_from_options): Set incremental
7930 dispositions.
7931 * options.cc (General_options::parse_incremental_changed): New
7932 function.
7933 (General_options::parse_incremental_unchanged): New function.
7934 (General_options::parse_incremental_unknown): New function.
7935 (General_options::General_options): Initialize new fields
7936 incremental_disposition_ and implicit_incremental_.
7937 (General_options::finalize): Check for uasge of --incremental-*
7938 without --incremental.
7939
f073bbf7
CD
79402009-02-06 Chris Demetriou <cgd@google.com>
7941
7942 * gold.h (gold_undefined_symbol): Change to take only a Symbol
7943 pointer and to report location as the file name associated with
7944 the symbol.
7945 (gold_undefined_symbol_at_location): New function to replace the
7946 old gold_undefined_symbol functionality.
7947 * target-reloc.h (relocate_section): Update to use
7948 gold_undefined_symbol_at_location.
7949 * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
7950 Call gold_undefined_symbol function rather than gold_error.
7951 * errors.h (Errors::undefined_symbol): Take location as a
7952 string, rather than calculating it from a relocation.
7953 * errors.cc (Errors::fatal): Print "fatal error:" before the
7954 formatted message.
7955 (Errors::error, Errors::error_at_location): Print "error: "
7956 before the formatted message.
7957 (Errors::undefined_symbol): Take location as a string, rather
7958 than calculating it from a relocation.
7959 (gold_undefined_symbol_at_location): New function akin to
7960 old gold_undefined_symbol, calculates location from relocation.
7961 (gold_undefined_symbol): Change to take only a Symbol pointer
7962 and to report location as the file name associated with the symbol.
7963 * testsuite/debug_msg.sh: Update for changed error messages.
7964 * testsuite/undef_symbol.sh: Likewise.
7965
8e94a90c
ILT
79662009-02-04 Duncan Sands <baldrick@free.fr>
7967
7968 PR 9812
7969 * reduced_debug_output.h
7970 (Output_reduced_debug_abbrev_section::failed): Use format for
7971 gold_warning.
7972 (Output_reduced_debug_info_section::faild): Likewise.
7973
88a0e15b
ILT
79742009-01-31 Mikolaj Zalewski <mikolajz@google.com>
7975
7976 * script.cc (Lazy_demangler): New class.
7977 (Version_script_info::get_symbol_version_helper): Demangle a
7978 symbol only once.
7979
5efc7cd2
CC
79802009-01-29 Cary Coutant <ccoutant@google.com>
7981
7982 * i386.cc (Target_i386::Relocate::relocate): Recognize non-PIC calls
7983 to __tls_get_addr.
7984 * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
7985
e0ebcf42
ILT
79862009-01-28 Ian Lance Taylor <iant@google.com>
7987
5efc7cd2 7988 * version.cc (version_string): Bump to 1.9.
75fe7426 7989
e0ebcf42
ILT
7990 * gold.h: Include <cstring> and <stdint.h>.
7991 * version.cc: Include <cstdio>.
7992 * object.cc (Sized_relobj::do_layout): Initialize gc_sd to avoid a
7993 warning.
7994 * reduced_debug_output.cc (insert_into_vector): Rename from
7995 Insert_into_vector; change all callers. Use Swap_unaligned to
7996 avoid aliasing issue; remove union since it is unnecessary.
7997
8e2813be 79982009-01-27 Sriraman Tallam <tmsriram@google.com>
6d03d481
ST
7999
8000 * Makefile.am (CCFILES): Add gc.cc.
8001 (HFILES): Add gc.h.
8002 * Makefile.in: Regenerate.
8003 * gold.cc (Gc_runner): New class.
8004 (queue_initial_tasks): Call garbage collection related tasks
8005 when corresponding options are invoked.
8006 (queue_middle_gc_tasks): New function.
8007 (queue_middle_tasks): Reorder tasks to allow relocs to be read and
8008 processed early before laying out sections during garbage collection.
8009 * gold.h (queue_middle_gc_tasks): New function.
8010 (is_prefix_of): Move from "layout.cc".
8011 * i386.cc (Target_i386::gc_process_relocs): New function.
8012 * layout.cc (is_prefix_of): Remove. Move to "gold.h"
8013 * main.cc (main): Create object of class "Garbage_collection".
8014 * object.cc (Relobj::copy_symbols_data): New function.
8015 (Relobj::is_section_name_included): New function.
e1df38aa
NC
8016 (Sized_relobj::do_layout): Allow this function to be called twice
8017 during garbage collection and defer layout of section during the
6d03d481
ST
8018 first call.
8019 * object.h (Relobj::get_symbols_data): New function.
8020 (Relobj::is_section_name_included): New function.
8021 (Relobj::copy_symbols_data): New function.
8022 (Relobj::set_symbols_data): New function.
8023 (Relobj::get_relocs_data): New function.
8024 (Relobj::set_relocs_data): New function.
8025 (Relobj::is_output_section_offset_invalid): New pure virtual function.
8026 (Relobj::gc_process_relocs): New function.
8027 (Relobj::do_gc_process_relocs): New pure virtual function.
8028 (Relobj::sd_): New data member.
8029 (Sized_relobj::is_output_section_offset_invalid): New function.
8030 (Sized_relobj::do_gc_process_relocs): New function.
8031 * options.h (General_options::gc_sections): Modify to not be a no-op.
8032 (General_options::print_gc_sections): New option.
8033 * plugin.cc (Plugin_finish::run): Remove function call to
8034 Plugin_manager::layout_deferred_objects. Move it to "gold.cc".
8035 * powerpc.cc (Target_powerpc::gc_process_relocs): New function.
8036 * reloc.cc (Read_relocs::run): Add task to process relocs and
8037 determine unreferenced sections when doing garbage collection.
8038 (Gc_process_relocs): New class.
8039 (Sized_relobj::do_gc_process_relocs): New function.
8040 (Sized_relobj::do_scan_relocs): Don't try to scan the relocs for
8041 sections that are garbage collected.
8042 * reloc.h (Gc_process_relocs): New class.
8043 * sparc.cc (Target_sparc::gc_process_relocs): New function.
8044 * symtab.cc (Symbol::should_add_dynsym_entry): Do not add entries for
8045 symbols whose corresponding sections are garbage collected.
8046 (Symbol_table::Symbol_table): Add new parameter for the garbage
8047 collection object.
8048 (Symbol_table::gc_mark_undef_symbols): New function.
8049 (Symbol_table::gc_mark_symbol_for_shlib): New function.
8050 (Symbol_table::gc_mark_dyn_syms): New function.
8051 (Symbol_table::resolve): Do not treat symbols seen in dynamic objects
8052 as garbage.
8053 (Symbol_table::add_from_object): Likewise.
8054 (Symbol_table::add_from_relobj): When building shared objects, do not
8055 treat externally visible symbols as garbage.
8056 (Symbol_table::sized_finalize_symbol): Do not check dynamic symbol
8057 table information for static and relocatable links.
8058 * symtab.h (Symbol_table::set_gc): New function.
8059 (Symbol_table::gc): New function.
8060 (Symbol_table::gc_mark_undef_symbols): New function.
8061 (Symbol_table::gc_mark_symbol_for_shlib): New function.
8062 (Symbol_table::gc_mark_dyn_syms): New function.
8063 (Symbol_table::gc_): New data member.
e1df38aa 8064 * target.h (Sized_target::gc_process_relocs): New pure virtual
6d03d481
ST
8065 function.
8066 * x86_64.cc (Target_x86_64::gc_process_relocs): New function.
8067 * testsuite/testfile.cc (Target_test::gc_process_relocs): New function.
8068
3b293544
CF
80692009-01-20 Chris Faylor <me.sourceware@sourceware.org>
8070
8071 * options.h (General_options::gc_sections): Define as a no-op for now.
8072 (General_options::no_keep_memory): Ditto.
8073 (General_options::Bshareable): Define.
8074 * options.cc (General_options::finalize): Honor -Bshareable.
8075
83d22aa8
AS
80762009-01-20 Andreas Schwab <schwab@suse.de>
8077
8078 * powerpc.cc (Powerpc_relocate_functions::rel16_ha): Don't try to
8079 read the value in the contents, since we don't use it. Use the
8080 template endianness when writing.
8081 (Relocate::relocate): Use it for R_PPC_REL16_HA.
8082
cd536b21
AS
80832009-01-19 Andreas Schwab <schwab@suse.de>
8084
8085 * configure.tgt (powerpc64-*): Fix targ_obj.
8086
99e9a495
ILT
80872009-01-15 Ian Lance Taylor <iant@google.com>
8088
8089 * object.cc (Sized_relobj::write_local_symbols): Don't write out
8090 local symbols when stripping all symbols.
8091
bbbfea06
CC
80922009-01-14 Cary Coutant <ccoutant@google.com>
8093
99e9a495 8094 * output.cc (Output_reloc): Add explicit instantiations.
bbbfea06 8095
0f7c0701
CC
80962009-01-14 Cary Coutant <ccoutant@google.com>
8097
8098 * archive.cc (Archive::get_elf_object_for_member): Remove call
8099 to File_read::claim_for_plugin.
8100 * descriptors.cc (Descriptors::open): Remove reference to
8101 is_claimed.
8102 (Descriptors::claim_for_plugin): Remove.
8103 * descriptors.h (Descriptors::claim_for_plugin): Remove.
8104 (Descriptors::is_claimed): Remove.
8105 (claim_descriptor_for_plugin): Remove.
8106 * fileread.cc (File_read::claim_for_plugin): Remove.
8107 * fileread.h (File_read::claim_for_plugin): Remove.
8108 (File_read::descriptor): Reopen descriptor if necessary.
8109 * plugin.cc (Plugin::load): Add two new APIs to transfer vector.
8110 (Plugin_manager::all_symbols_read): Add task parameter. Change
8111 all callers.
8112 (Plugin_manager::get_input_file): New function.
8113 (Plugin_manager::release_input_file): New function.
8114 (Pluginobj::Pluginobj): Add filesize parameter and initialize
8115 corresponding data member.
8116 (Sized_pluginobj::Sized_pluginobj): Add filesize parameter
8117 and pass to base constructor. Change all callers.
8118 (get_input_file, release_input_file): New functions.
8119 (make_sized_plugin_object): Add filesize parameter. Change all callers.
8120 * plugin.h (Plugin_manager::Plugin_manager): Initialize task_ member.
8121 (Plugin_manager::all_symbols_read): Add task parameter.
8122 (Plugin_manager::get_input_file): New function.
8123 (Plugin_manager::release_input_file): New function.
8124 (Plugin_manager::task_): New data member.
8125 (Pluginobj::Pluginobj): Add filesize parameter.
8126 (Pluginobj::filename): New function.
8127 (Pluginobj::descriptor): New function.
8128 (Pluginobj::filesize): New function.
8129 (Pluginobj::filesize_): New data member.
8130 (Sized_pluginobj::Sized_pluginobj): Add filesize parameter.
8131 * readsyms.cc (Read_symbols::do_read_symbols): Remove call to
8132 File_read::claim_for_plugin; use Object::unlock to unlock the file.
8133
8134 * testsuite/Makefile.am (plugin_test_4): New test case for plugins
8135 with archive libraries.
8136 * testsuite/Makefile.in: Regenerate.
8137 * testsuite/plugin_test.c (struct sym_info): New type.
8138 (get_input_file, release_input_file): New static variables.
8139 (onload): Capture new transfer vector entries.
8140 (claim_file_hook): Stop reading at end of file according to filesize.
8141 Factor out parsing of readelf output into separate function.
8142 (all_symbols_read_hook): Exercise get_input_file and release_input_file
8143 APIs and get the source file name from the symbol table. Convert
8144 source file name to corresponding object file name. Print info
8145 message when adding new input files.
8146 (parse_readelf_line): New function.
8147 * testsuite/plugin_test_1.sh: Add checks for new info messages.
8148 * testsuite/plugin_test_2.sh: Likewise.
8149 * testsuite/plugin_test_3.sh: Likewise.
8150 * testsuite/plugin_test_4.sh: New test case.
8151
62a6d109
ILT
81522009-01-07 Ian Lance Taylor <iant@google.com>
8153
8154 * version.cc (version_string): Bump to 1.8.
8155
483620e8
CC
81562008-12-23 Cary Coutant <ccoutant@google.com>
8157
8158 * gold.cc (gold_exit): Call plugin cleanup handlers on exit.
8159 * plugin.cc (Plugin_manager::finish): Rename as
8160 layout_deferred_objects. Move cleanup to separate function.
8161 (Plugin_manager::cleanup): New function.
8162 (Plugin_finish::run): Call layout_deferred_objects and cleanup
8163 separately.
8164 * plugin.h (Plugin_manager::finish): Rename as
8165 layout_deferred_objects.
8166 (Plugin_manager::cleanup): New function.
8167 (Plugin_manager::cleanup_done): New field.
8168
d66a9eb3
CC
81692008-12-23 Cary Coutant <ccoutant@google.com>
8170
8171 * plugin.cc (is_visible_from_outside): New function.
8172 (Pluginobj::get_symbol_resolution_info): Call is_visible_from_outside
8173 so we don't return "IR only" status for exported symbols or -r links.
8174
8175 * testsuite/Makefile.am (plugin_test_3): New test case.
8176 * testsuite/Makefile.in: Regenerate.
8177 * testsuite/plugin_test_3.sh: New file.
8178
5995b570
CC
81792008-12-22 Cary Coutant <ccoutant@google.com>
8180
8181 * object.cc (Sized_relobj::layout_section): New function.
8182 (Sized_relobj::do_layout): Defer layout of input sections until after
8183 plugin has provided replacement files.
8184 (Sized_relobj::do_layout_deferred_sections): New function.
8185 * object.h (Relobj::set_section_offset): Remove virtual keyword.
8186 (Relobj::layout_deferred_sections): New function.
8187 (Relobj::do_layout_deferred_sections): New function.
8188 (Sized_relobj::do_layout_deferred_sections): New function.
8189 (Sized_relobj::layout_section): New function.
8190 (Sized_relobj::Deferred_layout): New structure.
8191 (Sized_relobj::deferred_layout_): New field.
8192 * plugin.cc (Plugin_manager::finish): Renamed, was cleanup.
8193 Change all callers. Layout deferred sections.
8194 (class Plugin_finish): Renamed, was Plugin_cleanup. Change all
8195 references.
8196 (Plugin_hook::run): Move code from do_plugin_hook inline.
8197 (Plugin_hook::do_plugin_hook): Remove.
8198 * plugin.h (Plugin_manager::Plugin_manager): Add missing initializers.
8199 (Plugin_manager::finish): Renamed, was cleanup.
8200 (Plugin_manager::should_defer_layout): New function.
8201 (Plugin_manager::add_deferred_layout_object): New function.
8202 (Plugin_manager::Deferred_layout_list): New type.
8203 (Plugin_manager::deferred_layout_objects_): New field.
8204 (Plugin_hook::do_plugin_hook): Remove.
8205
ee769c88
ILT
82062008-12-17 Ian Lance Taylor <iant@google.com>
8207
8208 * options.h (class General_options): Add --no case for
8209 --export-dynamic.
8210
abc8dcba
CC
82112008-12-16 Cary Coutant <ccoutant@google.com>
8212
8213 * plugin.cc (Plugin::load): Move LDPT_MESSAGE to front of transfer
8214 vector.
8215 (Plugin_manager::claim_file): Create plugin object even if
8216 plugin did not call the add_symbols callback.
8217 (Plugin_obj::get_symbol_resolution_info): Guard against plugin
8218 asking for more symbols than were added.
8219 * testsuite/Makefile.am (plugin_test_1): Add test case with
8220 no global symbols.
8221 (empty.syms): New target.
8222 * testsuite/Makefile.in: Regenerate.
8223 * testsuite/plugin_test.c (claim_file_hook): Add new debug
8224 message. Don't call add_symbols if no globals.
8225 (all_symbols_read_hook): Don't provide replacement for empty
8226 claimed file.
8227
b0074644
ILT
82282008-12-12 Ian Lance Taylor <iant@google.com>
8229
68943102
ILT
8230 * target-reloc.h (Default_scan_relocatable_relocs): Only discard
8231 r_type == 0 for a local symbol with r_sym == 0.
8232 (scan_relocatable_relocs): Pass r_sym to
8233 local_non_section_strategy.
8234 * reloc.cc (Emit_relocs_strategy::local_non_section_strategy): Add
8235 r_sym parameter.
8236
b0074644
ILT
8237 * configure.ac: Update test for TLS descriptors: they are
8238 supported as of glibc 2.9.
8239 * configure: Rebuild.
8240
c2508178
ILT
82412008-12-11 Ian Lance Taylor <iant@google.com>
8242
8243 PR 7091
8244 * target-reloc.h (Default_scan_relocatable_relocs): For each
8245 function, map r_type == 0 to RELOC_DISCARD.
8246
2756a258
CC
82472008-12-10 Cary Coutant <ccoutant@google.com>
8248
8249 * layout.cc (Layout::add_comdat): Allow COMDAT group from a replacement
8250 object to override a kept COMDAT group from a plugin object.
8251
bb6f53d3
ILT
82522008-12-09 Ian Lance Taylor <iant@google.com>
8253
fbc558e1
ILT
8254 PR 7088
8255 * yyscript.y (file_cmd): Handle INPUT.
8256
bb6f53d3
ILT
8257 * testsuite/initpri1.c: Change all declarations to be full
8258 prototypes by adding void, to avoid compiler warnings.
8259
4674ecfc
CC
82602008-12-05 Rafael Avila de Espindola <espindola@google.com>
8261
8262 * options.cc (General_options::parse_plugin_opt): New.
8263 (General_options::add_plugin): The argument now is just the filename.
8264 (General_options::add_plugin_option): New.
8265 * options.h (plugin_opt): New.
8266 (add_plugin): Change argument name.
8267 (add_plugin_option): New.
8268 * plugin.cc (Plugin::load): Don't parse the plugin option.
8269 * plugin.h (Plugin::Plugin): Rename argument. Init filename_.
8270 (Plugin::add_option): New.
8271 (Plugin::args_): Change type.
8272 (Plugin::filename_): New.
8273 (Plugin_manager::add_plugin_option): New.
8274 * testsuite/Makefile.am (plugin_test_1): Use new syntax.
8275 * testsuite/Makefile.in: Regenerate.
8276
fd06b4aa
CC
82772008-12-05 Cary Coutant <ccoutant@google.com>
8278
8279 * layout.cc (Layout::include_section): Check for SHF_EXCLUDE.
8280 Handle --strip-lto-sections option.
8281 * options.h (strip_lto_sections): New option.
8282
6c52134c
CC
82832008-12-01 Cary Coutant <ccoutant@google.com>
8284
8285 * plugin.cc (ld_plugin_message): Change format parameter to const.
8286 Fix mismatch between new[] and delete.
8287
a45248e0
CC
82882008-11-14 Cary Coutant <ccoutant@google.com>
8289
8290 * reloc.cc (Sized_relobj::do_read_relocs): Use constant invalid_address
8291 instead of -1U.
8292
c82fbeee
CS
82932008-11-05 Craig Silverstein <csilvers@google.com>
8294
8295 * options.cc (General_options::parse_dynamic_list): New function.
8296 * options.h (General_options): New flags dynamic_list,
8297 dynamic_list_data, dynamic_list_cpp_new, and
8298 dynamic_list_cpp_typeinfo. New variable dynamic_list_.
8299 (General_options::in_dynamic_list): New function.
8300 * script.cc (Lex::Mode): New enum DYNAMIC_LIST.
8301 (Lex::can_start_name): Add support for DYNAMIC_LIST mode.
8302 (Lex::can_continue_name): Likewise.
8303 (yylex): Likewise.
8304 (read_script_file): New parameter script_options.
8305 (read_dynamic_list): New function.
8306 (Script_options::define_dynamic_list): New function.
8307 (dynamic_list_keyword_parsecodes): New variable.
8308 (dynamic_list_keywords): New variable.
8309 * script.h (Script_options::define_dynamic_list): New function
8310 prototype.
8311 (read_dynamic_list): New function prototype.
8312 * symtab.cc (strprefix): New macro.
8313 (Symbol::should_add_dynsym_entry): Support dynamic_list,
8314 dynamic_list_data, dynamic_list_cpp_new, and
8315 dynamic_list_cpp_typeinfo.
8316 * yyscript.y (PARSING_DYNAMIC_LIST): New token.
8317 (dynamic_list_expr): New rule.
8318 (dynamic_list_nodes): Likewise.
8319 (dynamic_list_node): Likewise.
8320 * testsuite/Makefile.am (dynamic_list): New test.
8321 * testsuite/Makefile.in: Regenerated.
8322 * testsuite/dynamic_list.t: New file.
8323 * testsuite/dynamic_list.sh: New file.
8324
e0bb29a5
CS
83252008-11-05 Craig Silverstein <csilvers@google.com>
8326
8327 * testsuite/tls_test_c.c: Add prototype for t11 and t11_last.
8328 * testsuite/tls_test_c.c (t11): Add explicit "void" to prototype.
8329 (t11_last): Likewise.
8330 * testsuite/ver_test_6.c (main): Likewise.
8331
4e1e25e0
CC
83322008-10-07 Cary Coutant <ccoutant@google.com>
8333
8334 * options.c (General_options::finalize): Add check for -static and
8335 -shared.
8336 * gold.cc (queue_middle_tasks): Assert that list of dynamic objects
8337 is not empty.
8338
92f03fcb
CC
83392008-10-02 Cary Coutant <ccoutant@google.com>
8340
8341 * plugin.cc (make_sized_plugin_object): Fix conditional
8342 compilation to work when not all targets are enabled.
8343
fbd8a257
CC
83442008-09-29 Cary Coutant <ccoutant@google.com>
8345
8346 * archive.cc (Archive::get_file_and_offset): Use filename instead
8347 of name to get library path.
8348 (Archive::include_member): Unlock external member of a thin archive.
8349
8350 * testsuite/Makefile.am (TEST_AR): New variable.
8351 (thin_archive_test_1): New test.
8352 (thin_archive_test_2): New test.
81636b3f
CC
8353 * testsuite/Makefile.in: Regenerate.
8354 * testsuite/thin_archive_main.cc: New file.
8355 * testsuite/thin_archive_test_1.cc: New file.
8356 * testsuite/thin_archive_test_2.cc: New file.
8357 * testsuite/thin_archive_test_3.cc: New file.
8358 * testsuite/thin_archive_test_4.cc: New file.
fbd8a257 8359
eff45813
CC
83602008-09-29 Cary Coutant <ccoutant@google.com>
8361
8362 * mapfile.cc (Mapfile::print_input_section): Change -1U to -1ULL.
8363 * object.cc (Sized_relobj::do_layout): Use constant invalid_address
8364 instead of -1U.
8365 (Sized_relobj::do_finalize_local_symbols): Likewise.
8366 (Sized_relobj::map_to_kept_section): Likewise.
8367 * object.h (Sized_relobj::invalid_address): New constant.
8368 (Sized_relobj::do_output_section_offset): Check for invalid_address
8369 and return -1ULL.
8370 * output.cc (Output_reloc::local_section_offset): Use constant
8371 invalid_address instead of -1U.
8372 (Output_reloc::get_address): Likewise.
8373 (Output_section::output_address): Change -1U to -1ULL.
8374 * output.h (Output_reloc::invalid_address): New constant.
8375 * reloc.cc (Sized_relobj::write_sections): Use constant
8376 invalid_address instead of -1U.
8377 (Sized_relobj::relocate_sections): Likewise.
8378 * symtab.cc (Symbol_table::sized_finalize_symbol): Handle symbol
8379 values for merge sections.
8380 * target-reloc.h (relocate_for_relocatable): Use constant
8381 invalid_address instead of -1U.
8382
89fc3421
CC
83832008-09-19 Cary Coutant <ccoutant@google.com>
8384
8385 Add plugin functionality for link-time optimization (LTO).
8386 * configure.ac (plugins): Add --enable-plugins option.
8387 * configure: Regenerate.
8388 * config.in: Regenerate.
8389 * Makefile.am (LIBDL): New variable.
8390 (CCFILES): Add plugin.cc.
8391 (HFILES): Add plugin.h.
8392 (ldadd_var): Add LIBDL.
8393 * Makefile.in: Regenerate.
8394
8395 * archive.cc: Include "plugin.h".
8396 (Archive::setup): Don't preread archive symbols when using a plugin.
8397 (Archive::get_file_and_offset): Add memsize parameter. Change callers.
8398 (Archive::get_elf_object_for_member): Call plugin hooks for claiming
8399 files.
8400 (Archive::include_member): Add symbols from plugin objects.
8401 * archive.h (Archive::get_file_and_offset): Add memsize parameter.
8402 * descriptors.cc (Descriptors::open): Check for file descriptors
8403 abandoned by plugins.
8404 (Descriptors::claim_for_plugin): New function.
8405 * descriptors.h (Descriptors::claim_for_plugin): New function.
8406 (Open_descriptor::is_claimed): New field.
8407 (claim_descriptor_for_plugin): New function.
8408 * fileread.cc (File_read::claim_for_plugin): New function.
8409 * fileread.h (File_read::claim_for_plugin): New function.
8410 (File_read::descriptor): New function.
8411 * gold.cc: Include "plugin.h".
8412 (queue_initial_tasks): Add task to call plugin hooks for generating
8413 new object files.
8414 * main.cc: Include "plugin.h".
8415 (main): Load plugin libraries.
8416 * object.h (Pluginobj): Declare.
8417 (Object::pluginobj): New function.
8418 (Object::do_pluginobj): New function.
8419 (Object::set_target): New function.
8420 * options.cc: Include "plugin.h".
8421 (General_options::parse_plugin): New function.
8422 (General_options::General_options): Initialize plugins_ field.
8423 (General_options::add_plugin): New function.
8424 * options.h (Plugin_manager): Declare.
8425 (General_options): Add --plugin option.
8426 (General_options::has_plugins): New function.
8427 (General_options::plugins): New function.
8428 (General_options::add_plugin): New function.
8429 (General_options::plugins_): New field.
8430 * plugin.cc: New file.
8431 * plugin.h: New file.
8432 * readsyms.cc: Include "plugin.h".
8433 (Read_symbols::do_read_symbols): Check for archive before checking
8434 for ELF file. Call plugin hooks to claim files.
8435 * resolve.cc (Symbol_table::resolve): Record when symbol is referenced
8436 from a real object file; force override when processing replacement
8437 files.
8438 * symtab.cc (Symbol::init_fields): Initialize in_real_elf_ field.
8439 (Symbol::init_base_object): Likewise.
8440 (Symbol::init_base_output_data): Likewise.
8441 (Symbol::init_base_output_segment): Likewise.
8442 (Symbol::init_base_constant): Likewise.
8443 (Symbol::init_base_undefined): Likewise.
8444 (Symbol::output_section): Assert that object is not a plugin.
8445 (Symbol_table::add_from_pluginobj): New function.
8446 (Symbol_table::sized_finalize_symbol): Treat symbols from plugins as
8447 undefined.
8448 (Symbol_table::sized_write_globals): Likewise.
8449 (Symbol_table::add_from_pluginobj): Instantiate template.
8450 * symtab.h (Sized_pluginobj): Declare.
8451 (Symbol::in_real_elf): New function.
8452 (Symbol::set_in_real_elf): New function.
8453 (Symbol::in_real_elf_): New field.
8454 (Symbol_table::add_from_pluginobj): New function.
8455
8456 * testsuite/Makefile.am (AM_CFLAGS): New variable.
8457 (LIBDL): New variable.
8458 (LDADD): Add LIBDL.
8459 (check_PROGRAMS): Add plugin_test_1 and plugin_test_2.
8460 (check_SCRIPTS): Add plugin_test_1.sh and plugin_test_2.sh.
8461 (check_DATA): Add plugin_test_1.err and plugin_test_2.err.
8462 (MOSTLYCLEANFILES): Likewise.
8463 * testsuite/Makefile.in: Regenerate.
8464 * testsuite/plugin_test.c: New file.
8465 * testsuite/plugin_test_1.sh: New file.
8466 * testsuite/plugin_test_2.sh: New file.
8467
de31bda5
ILT
84682008-09-16 Ian Lance Taylor <iant@google.com>
8469
9c2d0ef9
ILT
8470 * target-reloc.h (relocate_section): Check whether a symbol is
8471 defined by the ABI before reporting an undefined symbol error.
8472 * target.h (Target::is_defined_by_abi): Make parameter const.
8473 (Target::do_is_defined_by_abi): Likewise.
8474 * i386.cc (Target_i386::do_is_defined_by_abi): Likewise.
8475 * powerpc.cc (Target_powerpc::do_is_defined_by_abi): Likewise.
8476 * sparc.cc (Target_sparc::do_is_defined_by_abi): Likewise.
8477 * x86_64.cc (Target_x86_64::do_is_defined_by_abi): Likewise.
8478 * testsuite/Makefile.am (tls_test_shared.so): Add -Wl,-z,defs.
8479 * testsuite/Makefile.in: Rebuild.
8480
de31bda5
ILT
8481 * fileread.cc (make_view): Add casts to avoid warning.
8482
9fa33bee
AO
84832008-09-16 Alexandre Oliva <aoliva@redhat.com>
8484
8485 * i386.cc (Target_i386::define_tls_base_symbol): Update comments.
8486 * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
8487
183fd0e3
AO
84882008-09-16 Alexandre Oliva <aoliva@redhat.com>
8489
8490 * options.h (General_options::output_is_executable): New.
8491 (General_options::output_is_pie): New.
8492 * i386.cc (Target_i386::define_tls_base_symbol): Use SEGMENT_START
8493 for shared libraries.
8494 * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
8495
7be8330a
CD
84962008-09-11 Chris Demetriou <cgd@google.com>
8497
8498 * options.h (origin): New -z option.
8499 * layout.cc (Layout:finish_dynamic_section): If "-z origin"
8500 is specified, set DF_ORIGIN in DT_FLAGS and set DF_1_ORIGIN
8501 in DT_FLAGS_1.
8502
a9caad02
CC
85032008-09-05 Cary Coutant <ccoutant@google.com>
8504
8505 * fileread.cc (File_read::make_view): Add check for attempt to map
8506 beyond end of file.
8507
ae6dce4d
CC
85082008-09-05 Cary Coutant <ccoutant@google.com>
8509
8510 * symtab.cc (Symbol_table::add_from_dynobj): Fix typos in
8511 explicit instantiations.
8512
d7ab2a47
KVH
85132008-08-28 Kris Van Hees <kris.van.hees@oracle.com>
8514
8515 PR gold/6858
8516 * options.cc (General_options::finalize): Allow undefined symbols
8517 in shlibs if linking -shared.
8518
8519 PR gold/6859
8520 * symtab.cc (Symbol::init_base_undefined): Mark explicitly undefined
8521 symbols as not needing a dynsym entry.
8522
1e52a9c1
CS
85232008-08-20 Craig Silverstein <csilvers@google.com>
8524
8525 * fileread.cc (File_read::open): Do not lock the file unless it
8526 was successfully opened.
8527
d85c80a3
CC
85282008-08-14 Cary Coutant <ccoutant@google.com>
8529
8530 * x86_64.cc (Target_x86_64::Relocate::relocat_tls):
8531 Use addend for DTPOFF32, DTPOFF64, and TPOFF32 relocs.
8532 * testsuite/tls_test.cc (struct int128): 128-bit struct
8533 for testing TLS relocs with non-zero addend.
8534 (v12): New TLS variable.
8535 (t12): New test.
8536 (t_last): Add check for v12.
8537 * testsuite/tls_test.h (t12): New function.
8538 * testsuite/tls_test_main.cc (thread_routine): Call new test.
8539
2d924fd9
ILT
85402008-08-13 Ian Lance Taylor <iant@google.com>
8541
8542 * layout.cc (Layout::attach_allocated_section_to_segment): Don't
8543 set tls_segment_ or relro_segment_.
8544 (Layout::make_output_segment): Set tls_segment_ and relro_segment_
8545 when appropriate.
8546 * output.h (Output_section::clear_is_relro): New function.
8547 * output.cc (Output_segment::add_output_section): Handle SHF_TLS
8548 sections specially even when output_data_ is empty.
8549 (Output_segment::maximum_alignment): When first section is relro,
8550 only force alignment for PT_LOAD segments.
8551 * script.cc (script_data_segment_align): New function.
8552 (script_data_segment_relro_end): New function.
8553 * script-c.h (script_data_segment_align): Declare.
8554 (script_data_segment_relro_end): Declare.
8555 * script-sections.h (class Script_sections): Declare
8556 data_segment_align and data_segment_relro_end. Add fields
8557 segment_align_index_ and saw_relro_end_.
8558 * script-sections.cc (class Sections_element): Add set_is_relro
8559 virtual function. Add new bool* parameter to place_orphan_here.
8560 Add get_output_section virtual function.
8561 (class Output_section_definition): Add set_is_relro. Add new
8562 bool* parameter to place_orphan_here. Add get_output_section.
8563 Add is_relro_ field.
8564 (Output_section_definition::Output_section_definition): Initialize
8565 evaluated_address_, evaluated_load_address, evaluated_addralign_,
8566 and is_relro_ fields.
8567 (Output_section_definition::place_orphan_here): Add is_relro
8568 parameter.
8569 (Output_section_definition::set_section_addresses): Set relro for
8570 output section.
8571 (Output_section_definition::alternate_constraint): Likewise.
8572 (class Orphan_output_section): Add new bool* parameter to
8573 place_orphan_here. Add get_output_section.
8574 (Orphan_output_section::place_orphan_here): Add is_relro
8575 parameter.
8576 (Script_sections::Script_sections): Initialize
8577 data_segment_align_index_ and saw_relro_end_.
8578 (Script_sections::data_segment_align): New function.
8579 (Script_sections::data_segment_relro_end): New function.
8580 (Script_sections::place_orphan): Set or clear is_relro.
8581 (Script_sections::set_section_addresses): Force alignment of first
8582 TLS section.
8583 * yyscript.y (exp): Call script_data_segment_align and
8584 script_data_segment_relro_end.
8585 * testsuite/relro_script_test.t: New file.
8586 * testsuite/relro_test.cc (using_script): Declare.
8587 (t1, t2): Test using_script.
8588 * testsuite/Makefile.am (check_PROGRAMS): Add relro_script_test.
8589 (relro_script_test_SOURCES): Define.
8590 (relro_script_test_DEPENDENCIES): Define.
8591 (relro_script_test_LDFLAGS): Define.
8592 (relro_script_test_LDADD): Define.
8593 (relro_script_test.so): New target.
8594 * testsuite/Makefile.in: Rebuild.
8595
f827c9a9
CC
85962008-08-06 Cary Coutant <ccoutant@google.com>
8597
8598 * archive.cc (Archive::total_archives, Archive::total_members)
8599 (Archive::total_members_loaded): New variables.
8600 (Archive::setup): Add parameter. Add option to preread
8601 archive symbols.
8602 (Archive::read_armap): Add counter.
8603 (Archive::get_file_and_offset): New function.
8604 (Archive::get_elf_object_for_member): New function.
8605 (Archive::read_all_symbols): New function.
8606 (Archive::read_symbols): New function.
8607 (Archive::add_symbols): Add counters.
8608 (Archive::include_all_members): Use armap to find members if it's
8609 already built.
8610 (Archive::include_member): Skip reading symbols if already read.
8611 Factored code into Archive::get_file_and_offset and
8612 Archive::get_elf_object_for_member. Changed call to
8613 Mapfile::report_include_archive_member.
8614 (Archive::print_stats): New function.
8615 * archive.h: Declare Object and Read_symbols_data classes.
8616 (Archive::Archive): Add initializers for new members.
8617 (Archive::setup): Add parameter.
8618 (Archive::print_stats): New function.
8619 (Archive::total_archives, Archive::total_members)
8620 (Archive::total_members_loaded): New variables.
8621 (Archive::get_file_and_offset): New function.
8622 (Archive::get_elf_object_for_member): New function.
8623 (Archive::read_all_symbols): New function.
8624 (Archive::read_symbols): New function.
8625 (Archive::Archive_member): New class.
8626 (Archive::members_): New member.
8627 (Archive::num_members_): New member.
8628 * main.cc: Include archive.h.
8629 (main): Call Archive::print_stats.
8630 * mapfile.cc (Mapfile::report_include_archive_member): Delete
8631 archive parameter; member_name is now the fully-decorated name.
8632 * mapfile.h (Mapfile::report_include_archive_member): Likewise.
8633 * options.h: (General_options): Add --preread-archive-symbols option.
8634 * readsyms.cc (Read_symbols::do_read_symbols): Change call to
8635 Archive::setup.
8636
de4c45bd
ILT
86372008-08-04 Ian Lance Taylor <iant@google.com>
8638
8639 * symtab.h (Symbol::use_plt_offset): New function.
8640 * i386.cc (Relocate::relocate): Call Symbol::use_plt_offset.
8641 * powerpc.cc (Relocate::relocate): Likewise.
8642 * sparc.cc (Relocate::relocate): Likewise.
8643 * x86_64.cc (Relocate::relocate): Likewise.
8644 * testsuite/weak_plt.sh: New test.
8645 * testsuite/weak_plt_main.cc: New test.
8646 * testsuite/weak_plt_shared.cc: New test.
8647 * testsuite/Makefile.am (check_SCRIPTS): Add weak_plt.sh.
8648 (check_PROGRAMS): Add weak_plt.
8649 (check_DATA): Add weak_plt_shared.so.
8650 (weak_plt_main_pic.o, weak_plt): New targets.
8651 (weak_plt_shared_pic.o, weak_plt_shared.so): New targets.
8652 * testsuite/Makefile.in: Rebuild.
8653
8654 * testsuite/Makefile.am (weak_alias_test_1.so): Depend upon
8655 gcctestdir/ld.
8656 (weak_alias_test_2.so, weak_alias_test_4.so): Likewise.
8657 * testsuite/Makefile.in: Rebuild.
8658
323ee3f4
AM
86592008-08-04 Alan Modra <amodra@bigpond.net.au>
8660
8661 * Makefile.am (POTFILES.in): Set LC_ALL=C.
8662 * Makefile.in: Regenerate.
8663 * po/POTFILES.in: Regenerate.
8664
7c07ecec
ILT
86652008-07-29 Ian Lance Taylor <iant@google.com>
8666
8667 * script.cc (Script_options::finalize_symbols): Finalize SECTIONS
8668 symbols before other symbols.
8669 * testsuite/script_test_2.cc (test_addr): Declare.
8670 (test_addr_alias): Declare.
8671 (main): Check that test_addr and test_addr_alias have the right
cd536b21 8672 values.
7c07ecec
ILT
8673 * testsuite/script_test_2.t: Define test_addr_alias and
8674 test_addr.
8675
5778530e
ILT
86762008-07-24 Ian Lance Taylor <iant@google.com>
8677
2a00e4fb
ILT
8678 PR 5990
8679 * descriptors.cc: New file.
8680 * descriptors.h: New file.
8681 * gold-threads.h (class Hold_optional_lock): New class.
8682 * fileread.cc: Include "descriptors.h".
8683 (File_read::~File_read): Release descriptor rather than closing
8684 it.
8685 (File_read::open) [file]: Call open_descriptor rather than open.
8686 Set is_descriptor_opened_.
8687 (File_read::open) [memory]: Assert that descriptor is not open.
8688 (File_read::reopen_descriptor): New function.
8689 (File_read::release): Release descriptor.
8690 (File_read::do_read): Make non-const. Reopen descriptor.
8691 (File_read::read): Make non-const.
8692 (File_read::make_view): Reopen descriptor.
8693 (File_read::do_readv): Likewise.
8694 * fileread.h (class File_read): Add is_descriptor_opened_ field.
8695 Update declarations.
8696 * layout.cc: Include "descriptors.h".
8697 (Layout::create_build_id): Use open_descriptor rather than open.
8698 * output.cc: Include "descriptors.h".
8699 (Output_file::open): Use open_descriptor rather than open.
8700 * archive.cc (Archive::const_iterator): Change Archive to be
8701 non-const.
8702 (Archive::begin, Archive::end): Make non-const.
8703 (Archive::count_members): Likewise.
8704 * archive.h (class Archive): Update declarations.
8705 * object.h (Object::read): Make non-const.
8706 * Makefile.am (CCFILES): Add descriptors.cc.
8707 (HFILES): Add descriptors.h.
8708 * Makefile.in: Rebuild.
8709
801647d1
ILT
8710 PR 6716
8711 * gold.h: Always include <clocale>. Add Solaris workarounds
8712 following code in binutils/sysdep.h.
8713
5edd166e
ILT
8714 PR 6048
8715 * ehframe.cc (Eh_frame::add_ehframe_input_section): Check whether
8716 this->eh_frame_hdr_ is NULL before using it.
8717
c89ad728
ILT
8718 * dynobj.cc (Versions::Versions): Update comment.
8719
aa86f06b
ILT
8720 * dynobj.cc (Versions::Versions): If there is an soname, use it as
8721 the base version name.
8722
5778530e
ILT
8723 * stringpool.cc (Stringpool_template::add_with_length): Set key to
8724 array size plus one.
8725 (Stringpool_template::set_string_offsets): Subtract one from key
8726 before using it as an array index.
8727 (Stringpool_template::get_offset_with_length): Likewise.
8728 (Stringpool_template::write_to_buffer): Likewise.
8729 * stringpool.h (Stringpool_template::get_offset_from_key):
8730 Likewise.
8731
057ead22
ILT
87322008-07-23 Ian Lance Taylor <iant@google.com>
8733
7f649c59
ILT
8734 PR 6658
8735 * object.h (Merged_symbol_value::value): Do our best to handle a
8736 negative addend.
8737
057ead22
ILT
8738 PR 6647
8739 * script.cc (Version_script_info::get_versions): Don't add empty
8740 version tag to return value.
8741 (Version_script_info::get_symbol_version_helper): Change return
8742 type to bool. Add pversion parameter. Change all callers.
8743 (script_register_vers_node): Don't require a non-NULL tag.
8744 * script.h (class Version_script_info): Update declarations.
8745 (Version_script_info::get_symbol_version): Change return type to
8746 bool. Add version parameter. Change all callers.
8747 * symtab.cc (Sized_symbol::add_from_relobj): Rework version
8748 handling. Handle an empty version from a version script.
8749 (Symbol_table::define_special_symbol): Likewise.
8750 * testsuite/ver_test_10.script: New file.
8751 * testsuite/ver_test_10.sh: New file.
8752 * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_10.sh.
8753 (check_DATA): Add ver_test_10.syms.
8754 (ver_test_10.syms, ver_test_10.so): New target.
8755 * testsuite/Makefile.in: Rebuild.
8756
58e54ac2
CD
87572008-07-23 Simon Baldwin <simonb@google.com>
8758
8759 * symtab.cc (Symbol_table::sized_write_symbol): Only set st_size
8760 to zero for undefined symbols from dynamic libraries.
8761
95d14cd3
ILT
87622008-07-23 Ian Lance Taylor <iant@google.com>
8763
8764 * symtab.cc (Symbol_table::resolve): Remove version parameter.
8765 Change all callers.
8766 * symtab.h (class Symbol_table): Update declaration.
8767 * testsuite/ver_test_9.cc: New file.
8768 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_9.
8769 (ver_test_9_SOURCES, ver_test_9_DEPENDENCIES): Define.
8770 (ver_test_9_LDFLAGS, ver_test_9_LDADD): Define.
8771 (ver_test_9.so, ver_test_9.o): New targets.
8772 * testsuite/Makefile.in: Rebuild.
8773
92de84a6
ILT
87742008-07-22 Ian Lance Taylor <iant@google.com>
8775
34810851
ILT
8776 * options.h (class General_options): Define --check-sections.
8777 * layout.cc (Layout::set_segment_offsets): Handle
8778 --check-sections.
8779
af6156ef
ILT
8780 * options.h (class General_options): Define -n/--nmagic and
8781 -N/--omagic.
8782 * options.cc (General_options::finalize): For -n/--nmagic or
8783 -N/--omagic, set -static.
8784 * layout.cc (Layout::attach_allocated_section_to_segment): If
8785 -N/--omagic, don't put read-only and read-write sections in
8786 different segments.
8787 (Layout::find_first_load_seg): If -N/--omagic, don't insist on
8788 finding a read-only segment.
8789 (Layout::set_segment_offsets): If -N/--omagic or -n/--nmagic,
8790 don't set the minimum segment alignment to the common page size,
8791 and don't set the file offset to the address modulo the page size.
8792 * script-sections.cc (Script_sections::create_segments): If
8793 -n/--omagic, don't put read-only and read-write sections in
8794 different segments.
8795
92de84a6
ILT
8796 * cref.cc: New file.
8797 * cref.h: New file.
8798 * options.h (class General_options): Add --print-symbol-counts.
8799 * main.cc (main): Issue defined symbol report if requested.
8800 * archive.cc (Archive::interpret_header): Make into a const member
8801 function.
8802 (Archive::add_symbols): Call Input_objects::archive_start and
8803 archive_stop.
8804 (Archive::const_iterator): Define new class.
8805 (Archive::begin, Archive::end): New functions.
8806 (Archive::include_all_members): Rewrite to use iterator.
8807 (Archive::count_members): New function.
8808 * archive.h (class Archive): Update declarations.
8809 (Archive::filename): New function.
8810 * object.cc: Include "cref.h".
8811 (Sized_relobj::Sized_relobj): Initialize defined_count_.
8812 (Sized_relobj::do_get_global_symbol_counts): New function.
8813 (Input_objects::add_object): Add object to cross-referencer.
8814 (Input_objects::archive_start): New function.
8815 (Input_objects::archive_stop): New function.
8816 (Input_objects::print_symbol_counts): New function.
8817 * object.h: Declare Cref and Archive.
8818 (Object::get_global_symbol_counts): New function.
8819 (Object::do_get_global_symbol_counts): New pure virtual function.
8820 (class Sized_relobj): Add defined_count_ field. Update
8821 declarations.
8822 (class Input_objects): Add cref_ field. Update constructor.
8823 Update declarations.
8824 * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize symbols_ and
8825 defined_count_.
8826 (Sized_dynobj::do_add_symbols): Allocate symbols_ if printing
8827 symbol counts.
8828 (Sized_dynobj::do_get_global_symbol_counts): New function.
8829 * dynobj.h (class Sized_dynobj): Add fields symbols_ and
8830 defined_count_. Update declarations. Define Symbols typedef.
8831 * symtab.cc (Symbol_table::add_from_relobj): Add defined
8832 parameter. Change all callers.
8833 (Symbol_table::add_from_dynobj): Add sympointers and defined
8834 parameters. Change all callers.
8835 * symtab.h (class Symbol_table): Update declarations.
8836 * Makefile.am (CCFILES): Add cref.cc.
8837 (HFILES): Add cref.h.
8838 * Makefile.in: Rebuild.
8839
3f7c5e1d
CD
88402008-07-22 Simon Baldwin <simonb@google.com>
8841
8842 * symtab.cc (Symbol_table::sized_write_symbol): Set symbol size
8843 to zero when writing undefined symbols.
8844
e0b64032
ILT
88452008-07-22 Ian Lance Taylor <iant@google.com>
8846
8847 * output.cc (Output_section::add_input_section): Don't try to
8848 merge empty merge sections.
8849
096b02cf
CS
88502008-07-21 Craig Silverstein <csilvers@google.com>
8851
8852 * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
8853 Include symbol version in error message.
cd536b21 8854
1d1f116d
CD
88552008-07-20 Chris Demetriou <cgd@google.com>
8856
cd536b21 8857 * configure.ac (gold_cv_c_random_seed): New configured variable.
1d1f116d
CD
8858 (RANDOM_SEED_CFLAGS): New substituted variable.
8859 * Makefile.am (AM_CFLAGS, AM_CXXFLAGS): Add $(RANDOM_SEED_CFLAGS).
8860 * configure: Rebuild.
8861 * Makefile.in: Likewise.
8862 * testsuite/Makefile.in: Likewise.
8863
a18f591e
ILT
88642008-07-18 Ian Lance Taylor <iant@google.com>
8865
8866 * symtab.cc (Symbol_table::add_from_object): Rewrite the case
8867 where we see NAME/NULL and NAME/VERSION as separate symbols.
8868 * testsuite/ver_test_main.cc (main): Call t4.
8869 (t4, t4_2a): Define.
8870 * testsuite/ver_test_2.cc (t4_2): Define.
8871 * testsuite/ver_test_2.script: Put t4_2a in VER2.
8872 * testsuite/ver_test_4.cc (t4_2a): Define.
8873 * testsuite/ver_test_4.script: Put t4_2a in VER2.
8874 * testsuite/ver_test.h (t4, t4_2, t4_2a): Declare.
8875
c6e3f6ed
ILT
88762008-07-17 Ian Lance Taylor <iant@google.com>
8877
8878 * dynobj.cc (Versions::add_def): If we give an error about a
8879 missing version, go ahead and create the version anyhow.
8880
ef9beddf
ILT
88812008-07-10 Ian Lance Taylor <iant@google.com>
8882
8883 Handle output sections with more than 0x7fffffff bytes.
8884 * object.h (class Relobj): Change map_to_output_ to
8885 output_sections_, and just keep a section pointer. Change all
8886 uses. Move comdat group support to Sized_relobj.
8887 (Relobj::is_section_specially_mapped): Remove.
8888 (Relobj::output_section): Remove poff parameter. Change all
8889 callers.
8890 (Relobj::output_section_offset): New function.
8891 (Relobj::set_section_offset): Rewrite.
8892 (Relobj::map_to_output): Remove.
8893 (Relobj::output_sections): New function.
8894 (Relobj::do_output_section_offset): New pure virtual function.
8895 (Relobj::do_set_section_offset): Likewise.
8896 (class Sized_relobj): Add section_offsets_ field. Add comdat
8897 group support from Relobj. Update declarations.
8898 (Sized_relobj::get_output_section_offset): New function.
8899 (Sized_relobj::do_output_section_offset): New function.
8900 (Sized_relobj::do_set_section_offset): New function.
8901 * object.cc (Relobj::output_section_address): Remove.
8902 (Sized_relobj::Sized_relobj): Initialize new fields.
8903 (Sized_relobj::include_section_group): Cast find_kept_object to
8904 Sized_relobj.
8905 (Sized_relobj::include_linkonce_section): Likewise.
8906 (Sized_relobj::do_layout): Use separate arrays for output section
8907 and output offset.
8908 (Sized_relobj::do_count_local_symbols): Change map_to_output to
8909 output_sections.
8910 (Sized_relobj::do_finalize_local_symbols): Change map_to_output to
8911 output_sections and section_offsets.
8912 (Sized_relobj::write_local_symbols): Likewise.
8913 (map_to_kept_section): Compute output address directly.
8914 * reloc.cc (Sized_relobj::do_read_relocs): Change map_to_output to
8915 output_sections and section_offsets.
8916 (Sized_relobj::write_sections): Likewise.
8917 (Sized_relobj::relocate_sections): Likewise.
8918 * symtab.cc (sized_finalize_symbol): Use output_section_offset.
8919 * output.h (class Output_reloc): Update declarations. Change
8920 u2_.relobj to Sized_relobj*.
8921 (class Output_data_reloc): Change add functions to use
8922 Sized_relobj*.
8923 * output.cc (Output_reloc::Output_reloc): Change relobj to
8924 Sized_relobj*.
8925 (Output_reloc::local_section_offset): Change return type to
8926 Elf_Addr. Use get_output_section_offset.
8927 (Output_reloc::get_address): Likewise.
8928 (Output_section::is_input_address_mapped): Don't call
8929 is_section_specially_mapped.
8930 (Output_section::output_offset): Likewise.
8931 (Output_section::output_address): Likewise.
8932 (Output_section::starting_output_address): Likewise.
8933 * copy-relocs.cc (Copy_relocs::copy_reloc): Change object
8934 parameter to Sized_relobj*.
8935 (Copy_relocs::need_copy_reloc): Likewise.
8936 (Copy_relocs::save): Likewise.
8937 * copy-relocs.h (class Copy_relocs): Update declarations.
8938 (class Copy_relocs::Copy_reloc_entry): Change constructor to use
8939 Sized_relobj*. Change relobj_ field to Sized_relobj*.
8940 * target-reloc.h (relocate_for_relocatable): Change
8941 offset_in_output_section type to Elf_Addr. Change code that uses
8942 it as well.
8943 * layout.cc (Layout::layout): Always set *off.
8944 * mapfile.cc (Mapfile::print_input_section): Use
8945 output_section_offset.
8946 * i386.cc (Target_i386::copy_reloc): Change object parameter to
8947 Sized_relobj*.
8948 * powerpc.cc (Target_powerpc::copy_reloc): Likewise.
8949 * sparc.cc (Target_sparc::copy_reloc): Likewise.
8950 * x86_64.cc (Target_x86_64::copy_reloc): Likewise.
8951
5cb66f97
ILT
89522008-07-03 Ian Lance Taylor <iant@google.com>
8953
8954 * layout.cc (Layout::include_section): Do not discard unrecognized
8955 SHT_STRTAB sections.
8956
afe47622
CS
89572008-06-30 Craig Silverstein <csilvers@cs.stanford.edu>
8958
8959 * script.cc (Lex::can_continue_name): Make '?' allowable in
8960 version-script names.
8961 * testsuite/version_script.map: Change glob pattern to use '?'
8962
5adf9721
ILT
89632008-06-30 Manish Singh <yosh@gimp.org>
8964
8965 PR 6585
8966 * symtab.cc (Symbol_table::add_undefined_symbols_from_command_line):
8967 Correct typo.
8968
e6fde208
ILT
89692008-06-30 Ian Lance Taylor <iant@google.com>
8970
8971 PR 6660
8972 PR 6682
8973 * powerpc.cc (Powerpc_relocate_functions::addr16_ha) [both
8974 versions]: Don't try to read the value in the contents, since we
8975 don't use it. Use the template endianness when writing.
8976
3f2e6a2d
CC
89772008-06-25 Cary Coutant <ccoutant@google.com>
8978
8979 * fileread.cc (File_read::make_view): Assert on zero-length view.
8980 * object.cc (Sized_relobj::do_read_symbols): Don't try to read
8981 symbol table when there are no symbols to read.
8982
c43d3a48
CS
89832008-06-23 Craig Silverstein <csilvers@google.com>
8984
8985 * version.cc (version_string): Bump to 1.7
8986
5f494ea0
CS
89872008-06-18 Craig Silverstein <csilvers@google.com>
8988
8989 * powerpc.cc (Powerpc_relocate_functions::addr16_ha): cast
8990 constant 0xFFFF to type Valtype.
8991 (Powerpc_relocate_functions::rel16_ha): Likewise.
8992
c42e122e
ILT
89932008-06-17 Ian Lance Taylor <iant@google.com>
8994
f34787f8
ILT
8995 * output.h (Output_section::Input_section): Initialize p2align_ to
8996 zero for Output_section_data constructors.
8997 (Output_section::Input_section::addralign): If not an input
8998 section, return the alignment of the Output_section_data.
8999 * testsuite/copy_test.cc: New file.
9000 * testsuite/copy_test_1.cc: New file.
9001 * testsuite/copy_test_2.cc: New file.
9002 * testsuite/Makefile.am (check_PROGRAMS): Add copy_test.
9003 (copy_test_SOURCES, copy_test_DEPENDENCIES): New variables.
9004 (copy_test_LDFLAGS, copy_test_LDADD): New variables.
9005 (copy_test_1_pic.o, copy_test_1.so): New targets.
9006 (copy_test_2_pic.o, copy_test_2.so): New targets.
9007 * testsuite/Makefile.in: Rebuild.
9008
c42e122e
ILT
9009 * script-sections.cc (Script_sections::place_orphan): Initialize
9010 local variable exact.
9011
ce3ac18a
DE
90122008-06-13 David Edelsohn <edelsohn@gnu.org>
9013
9014 * powerpc.cc (Output_data_plt_powerpc::do_write): 8 + 4 = 0xC.
9015
42cacb20
DE
90162008-06-12 David Edelsohn <edelsohn@gnu.org>
9017 David S. Miller <davem@davemloft.net>
9018
9019 * powerpc.cc: New file.
9020 * Makefile.am (TARGETSOURCES): Add powerpc.cc
9021 (ALL_TARGETOBJS): Add powerpc.$(OBJEXT)
9022 * configure.tgt: Add entries for powerpc-* and powerpc64-*.
9023 * Makefile.in: Rebuild.
9024
7b308235
ILT
90252008-06-09 Ian Lance Taylor <iant@google.com>
9026
9027 * testsuite/relro_test.cc: Include <cstdio>, <cstdlib>, and
9028 <exception>.
9029 (throwing, orig_terminate): New static variables.
9030 (terminate_handler): New static function.
9031 (t2): Set terminate handler.
9032
f0b886e3
ILT
90332008-06-05 Kris Van Hees <kris.van.hees@oracle.com>
9034
9035 PR 6584
cd536b21 9036 * binary.cc (Binary_to_elf::sized_convert): Fix .data
f0b886e3
ILT
9037 alignment.
9038
3e90f135
CC
90392008-05-30 Cary Coutant <ccoutant@google.com>
9040
9041 * archive.cc (Archive::include_all_members) Correct to step
9042 over symbol table and extended name table in thin archives.
9043
e09ad04a
ILT
90442008-05-29 Kris Van Hees <kris.van.hees@oracle.com>
9045
9046 PR 6407
9047 * target-reloc.h (relocate_for_relocatable): Fix new_offset
9048 calculation.
9049
62b01cb5
ILT
90502008-05-28 Caleb Howe <cshowe@google.com>
9051
9052 * reduced_debug_output.cc: New file.
9053 * reduced_debug_output.h: New file.
92de84a6 9054 * options.h (class General_options): Add --strip-debug-non-line.
62b01cb5
ILT
9055 * options.cc (General_options::finalize): Add strip_debug_non_line
9056 to the strip heirarchy.
9057 * layout.h (class Layout): Add debug_abbrev_ and debug_info_
9058 fields.
9059 * layout.cc: Include "reduced_debug_output.h".
9060 (Layout::Layout): Initialize new fields.
9061 (line_only_debug_sections): New static array.
9062 (is_lines_only_debug_sections): New static inline function.
9063 (Layout::include_section): Handle --strip-debug-non-line.
9064 (Layout::make_output_section): If --strip-debug-non-line, build
9065 new output sections for .debug_abbrev and .debug_info.
9066 * dwarf_reader.cc (read_unsigned_LEB_128): Move to namespace
9067 gold. Warn about possible overflow.
9068 (read_signed_LEB_128): Likewise.
9069 * dwarf_reader.h: (read_unsigned_LEB_128): Declare.
9070 (read_signed_LEB_128): Declare.
9071 * Makefile.am (CCFILES): Add reduced_debug_output.cc.
9072 (HFILES): Add reduced_debug_output.h.
9073 * Makefile.in: Rebuild.
9074
7d9e3d98
ILT
90752008-05-21 Ian Lance Taylor <iant@google.com>
9076
9077 * mapfile.cc: New file.
9078 * mapfile.h: New file.
9079 * options.h (class General_options): Add -M/--print-map and -Map.
9080 * options.cc (General_options::finalize): Make -M equivalent to
9081 -Map -.
9082 * main.cc: Include <cstdio> and "mapfile.h".
9083 (main): Open mapfile if requested.
9084 * gold.cc (class Middle_runner): Add mapfile_ field. Update
9085 constructor. Change caller.
9086 (queue_initial_tasks): Add mapfile parameter. Change caller.
9087 (queue_middle_tasks): Likewise.
9088 * gold.h (queue_initial_tasks, queue_middle_tasks): Update
9089 declarations.
9090 * archive.cc: Include "mapfile.h".
9091 (Archive::add_symbols): Add mapfile parameter. Change all
9092 callers. Pass mapfile, symbol, and reason to include_member.
9093 (Archive::include_all_members): Add mapfile parameter. Change all
9094 callers.
9095 (Archive::include_member): Add mapfile, sym, and why parameters.
9096 Change all callers. Report inclusion to map file.
9097 * archive.h: Include "fileread.h".
9098 (class Archive): Update declarations.
9099 (Archive::file): New const method.
9100 (class Add_archive_symbols): Add mapfile_ field. Update
9101 constructor. Change all callers.
9102 * readsyms.h (class Read_symbols): Likewise.
9103 (class Finish_group): Likewise.
9104 (class Read_script): Likewise.
9105 * common.cc: Include "mapfile.h".
9106 (Symbol_table::allocate_commons): Add mapfile parameter. Change
9107 all callers.
9108 (Symbol_table::do_allocate_commons): Likewise.
9109 (Symbol_table::do_allocate_commons_list): Likewise. Report common
9110 symbol allocation to mapfile.
9111 * common.h (class Allocate_commons_task): Add mapfile_ field.
9112 Update constructor. Change all callers.
9113 * symtab.h (class Symbol_table): Update declarations.
9114 * layout.cc: Include "mapfile.h".
9115 (Layout_task_runner::run): Print information to mapfile.
9116 (Layout::create_gold_note): Change Output_data_fixed_space to
9117 Output_data_zero_fill.
9118 (Layout::create_build_id): Likewise.
9119 (Layout::print_to_mapfile): New function.
9120 * layout.h (class Layout_task_runner): Add mapfile_ field. Update
9121 constructor. Change caller.
9122 (class Layout): Declare print_to_mapfile.
9123 * output.cc (Output_section::Input_section::print_to_mapfile): New
9124 function.
9125 (Output_section::add_input_section): If producing a map, always
9126 add to input_sections_ list.
9127 (Output_section::do_print_to_mapfile): New function.
9128 (Output_segment::print_sections_to_mapfile): New function.
9129 (Output_segment::print_section_list_to_mapfile): New function.
9130 * output.h: Include "mapfile.h".
9131 (Output_data::print_to_mapfile): New function.
9132 (Output_data::do_print_to_mapfile): New virtual function.
9133 (Output_segment_headers::do_print_to_mapfile): New function.
9134 (Output_file_header::do_print_to_mapfile): New function.
9135 (Output_data_const::do_print_to_mapfile): New function.
9136 (class Output_data_const_buffer): Add map_name_ field. Update
9137 constructor. Change all callers. Add do_print_to_mapfile
9138 function.
9139 (class Output_data_fixed_space): Likewise.
9140 (class Output_data_space): Likewise.
9141 (class Output_data_zero_fill): New class.
9142 (Output_data_strtab::do_print_to_mapfile): New function.
9143 (Output_data_reloc_base::do_print_to_mapfile): New function.
9144 (Output_relocatable_relocs::do_print_to_mapfile): New function.
9145 (Output_data_group::do_print_to_mapfile): New function.
9146 (Output_data_got::do_print_to_mapfile): New function.
9147 (Output_data_dynamic::do_print_to_mapfile): New function.
9148 (Output_symtab_xindex::do_print_to_mapfile): New function.
9149 (class Output_section): Declare do_print_to_mapflie. Declare
9150 print_to_mapfile in Input_section.
9151 (class Output_segment): Declare new functions.
9152 * object.h (Sized_relobj::symbol_count): New function.
9153 * script-sections.cc
9154 (Output_section_element_dot_assignment::set_section_addresses):
9155 Change Output_data_fixed_space to Output_data_zero_fill.
9156 (Output_data_expression::do_print_to_mapfile): New function.
9157 * script.cc (read_input_script): Add mapfile parameter. Change
9158 all callers.
9159 * script.h (read_input_script): Update declaration.
9160 * ehframe.h (Eh_frame_hdr::do_print_to_mapfile): New function.
9161 (Eh_frame::do_print_to_mapfile): New function.
9162 * merge.h (Output_merge_data::do_print_to_mapfile): New function.
9163 (Output_merge_string::do_print_to_mapfile): New function.
9164 * i386.cc (Output_data_plt_i386::do_print_to_mapfile): New
9165 function.
9166 * sparc.cc (Output_data_plt_sparc::do_print_to_mapfile): New
9167 function.
9168 * x86_64.cc (Output_data_plt_x86_64::do_print_to_mapfile): New
9169 function.
9170 * Makefile.am (CCFILES): Add mapfile.cc.
9171 (HFILES): Add mapfile.h.
9172 * Makefile.in: Rebuild.
9173
9f1d377b
ILT
91742008-05-19 Ian Lance Taylor <iant@google.com>
9175
9176 * options.h (class General_options): Add -z relro.
9177 * layout.cc (Layout::Layout): Initialize relro_segment_.
9178 (Layout::add_output_section_data): Return the output section.
9179 (Layout::make_output_section): Rcognize relro sections and mark
9180 them appropriately.
9181 (Layout::attach_allocated_section_to_segment): Put relro sections
9182 in a PT_GNU_RELRO segment.
9183 (Layout::create_initial_dynamic_sections): Mark the .dynamic
9184 section as relro.
9185 (Layout::segment_precedes): Sort PT_GNU_RELRO segments after
9186 PT_TLS segments.
9187 (Layout::linkonce_mapping): Map d.rel.ro.local to
9188 .data.rel.ro.local.
9189 (Layout::output_section_name): Us .data.rel.ro.local for any
9190 section which begins with that.
9191 * layout.h (class Layout): Update add_output_section_data
9192 declaration. Add relro_segment_ field.
9193 * output.cc (Output_section::Output_section): Initialize is_relro_
9194 and is_relro_local_ fields.
9195 (Output_segment::add_output_section): Group relro sections.
9196 (Output_segment::is_first_section_relro): New function.
9197 (Output_segment::maximum_alignment): If there is a relro section,
9198 align the segment to the common page size.
9199 (Output_segment::set_section_addresses): Track whether we are
9200 looking at relro sections. If the last section is a relro
9201 section, align to the common page size.
9202 (Output_segment::set_section_list_addresses): Add in_relro
9203 parameter. Change all callers. Align to the page size when
9204 moving from relro to non-relro section.
9205 (Output_segment::set_offset): Align memsz of a PT_GNU_RELRO
9206 segment.
9207 * output.h (class Output_section): Add is_relro_ and
9208 is_relro_local_ fields.
9209 (Output_section::is_relro): New function.
9210 (Output_section::set_is_relro): New function.
9211 (Output_section::is_relro_local): New function.
9212 (Output_section::set_is_relro_local): New function.
9213 (class Output_segment): Update declarations.
9214 * i386.cc (Target_i386::got_section): Mark .got section as relro.
9215 * sparc.cc (Target_sparc::got_section): Likewise.
9216 * x86_64.cc (Target_x86_64::got_section): Likewise.
9217 * testsuite/relro_test_main.cc: New file.
9218 * testsuite/relro_test.cc: New file.
9219 * testsuite/Makefile.am (check_PROGRAMS): Add relro_test.
9220 (relro_test_SOURCES, relro_test_DEPENDENCIES): New variables.
9221 (relro_test_LDFLAGS, relro_test_LDADD): New variables.
9222 (relro_test.so, relro_test_pic.o): New targets.
9223 * testsuite/Makefile.in: Rebuild.
9224
a984ee1d
ILT
92252008-05-16 Ian Lance Taylor <iant@google.com>
9226
01676dcd
ILT
9227 * output.cc (Output_segment::add_output_section): Remove front
9228 parameter.
9229 * output.h (class Output_segment): Remove
9230 add_initial_output_section and overloaded add_output_section.
9231 Update declaration of remaining add_output_section.
9232 * layout.cc (Layout::create_interp): Call add_output_section
9233 rather than add_initial_output_section.
9234 (Layout::finish_dynamic_section): Likewise.
9235
497897f9
ILT
9236 * i386.cc (Target_i386::Relocate::relocate_tls): Set dynamic type
9237 for TLS_GOTDESC and TLS_DESC_CALL. Only optimize TLS_LDO_32 if we
9238 know the dynamic type.
9239 * x86_64.cc (Target_x86_64::Relocate): Add saw_tls_block_reloc_
9240 field. Initialize it in constructor.
9241 (Target_x86_64::Relocate::relocate_tls): Record that we saw a TLS
9242 block reloc for TLSGD, GOTPC32_TLSDESC, TLSDESC_CALL, and TLSLD.
9243 Only optimize DTPOFF32 and DTPOFF64 if we have seen a TLS block
9244 reloc.
9245
a984ee1d
ILT
9246 * output.cc (Output_reloc::get_address): Change return type to
9247 Elf_Addr.
9248 * output.h (class Output_reloc): Update get_address declaration.
9249 * x86_64.cc (Output_data_plt_x86_64::do_write): Use 64-bit types
9250 for section addresses.
9251
55ba0940
ILT
92522008-05-09 Ian Lance Taylor <iant@google.com>
9253
9254 PR 6493
9255 * gold.cc (gold_nomem): Use return value of write.
9256
75517b77
ILT
92572008-05-08 Ian Lance Taylor <iant@google.com>
9258
9259 * symtab.c (Symbol::init_base_output_data): Add version
9260 parameter. Change all callers.
9261 (Symbol::init_base_output_segment): Likewise.
9262 (Symbol::init_base_constant): Likewise.
9263 (Symbol::init_base_undefined): Likewise.
9264 (Sized_symbol::init_output_data): Likewise.
9265 (Sized_symbol::init_output_segment): Likewise.
9266 (Sized_symbol::init_constant): Likewise.
9267 (Sized_symbol::init_undefined): Likewise.
9268 (Symbol_table::do_define_in_output_data): If the new symbol has a
9269 version, mark it as the default.
9270 (Symbol_table::do_define_in_output_segment): Likewise.
9271 (Symbol_table::do_define_as_constant): Likewise.
9272 * symtab.h (class Symbol): Update declarations.
9273 (class Sized_symbol): Likewise.
9274 * resolve.cc (Symbol::override_version): New function.
c42e122e 9275 (Symbol::override_base): Call override_version.
75517b77
ILT
9276 (Symbol::override_base_with_special): Likewise.
9277 * testsuite/ver_script_8.script: New file.
9278 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_8.
9279 (ver_test_8_SOURCES, ver_test_8_DEPENDENCIES): Define.
9280 (ver_test_8_LDFLAGS, ver_test_8_LDADD): Define.
9281 (ver_test_8_1.so, ver_test_8_2.so): New targets.
9282
f1f70eae
ILT
92832008-05-06 Ian Lance Taylor <iant@google.com>
9284
f3e9c5c5
ILT
9285 PR 6049
9286 * options.h (DEFINE_set): Add VARNAME_begin and VARNAME_end
9287 functions.
9288 (class General_options): Remove existing --undefined, and add
9289 --no-undefined instead. Add new --undefined as synonym for -u.
9290 * archive.cc (Archive::add_symbols): Check whether symbol was
9291 named with -u.
9292 * gold.cc (queue_middle_tasks): Add -u symbols to symbol table.
9293 * symtab.h (class Symbol): Rename CONSTANT to IS_CONSTANT; change
9294 all uses. Add IS_UNDEFINED. Update declarations to split
9295 different versions of init_base. Declare init_base_undefined.
9296 (Symbol::is_defined): Handle IS_UNDEFINED.
9297 (Symbol::is_undefined): Likewise.
9298 (Symbol::is_weak_undefined): Call is_undefined.
9299 (Symbol::is_absolute): Handle IS_CONSTANT.
9300 (class Sized_symbol): Update declarations to split different
9301 versions of init. Declare init_undefined.
9302 (class Symbol_table): Declare new functions.
9303 * symtab.cc (Symbol::init_base_object): Rename from init_base.
9304 Change all callers.
9305 (Symbol::init_base_output_data): Likewise.
9306 (Symbol::init_base_output_segment): Likewise.
9307 (Symbol::init_base_constant): Likewise.
9308 (Symbol::init_base_undefined): New function.
9309 (Sized_symbol::init_object): Rename from init. Change all
9310 callers.
9311 (Sized_symbol::init_output_data): Likewise.
9312 (Sized_symbol::init_output_segment): Likewise.
9313 (Sized_symbol::init_constant): Likewise.
9314 (Sized_symbol::init_undefined): New function.
9315 (Symbol_table::add_undefined_symbols_from_command_line): New
9316 function.
9317 (Symbol_table::do_add_undefined_symbols_from_command_line): New
9318 function.
9319 (Symbol::final_value_is_known): Handle IS_UNDEFINED.
9320 (Symbol::output_section): Likewise.
9321 (Symbol::set_output_section): Likewise.
9322 (Symbol_table::sized_finalize_symbol): Likewise.
9323 (Symbol_table::sized_write_globals): Likewise.
9324 * resolve.cc (Symbol_table::should_override): Likewise.
9325 (Symbol::override_base_with_special): Likewise.
9326
8bdcdf2c
ILT
9327 * symtab.cc (Symbol_table::add_from_dynobj): If we see a protected
9328 symbol, change it to have default visibility.
9329 * testsuite/protected_1.cc: New file.
9330 * testsuite/protected_2.cc: New file.
9331 * testsuite/protected_3.cc: New file.
9332 * testsuite/protected_main_1.cc: New file.
9333 * testsuite/protected_main_2.cc: New file.
9334 * testsuite/protected_main_3.cc: New file.
9335 * testsuite/Makefile.am (check_PROGRAMS): Add protected_1.
9336 (protected_1_SOURCES, protected_1_DEPENDENCIES): Define.
9337 (protected_1_LDFLAGS, protected_1_LDADD): Define.
9338 (protected_1.so): New target.
9339 (protected_1_pic.o, protected_2_pic.o): New targets.
9340 (protected_3_pic.o): New target.
9341 (check_PROGRAMS): Add protected_2.
9342 (protected_2_SOURCES, protected_2_DEPENDENCIES): Define.
9343 (protected_2_LDFLAGS, protected_2_LDADD): Define.
9344 * testsuite/Makefile.in: Rebuild.
9345
2b706932
ILT
9346 * options.h (DEFINE_var): Add set_user_set_##varname__.
9347 (DEFINE_bool_alias): New macro.
9348 (class General_options): Define -Bstatic using DEFINE_bool_alias
9349 rather than DEFINE_special. Add --undefined as an alias for -z
9350 defs.
9351 * options.cc (General_options::parse_Bstatic): Remove.
9352
d82a5bcc
ILT
9353 * options.h (class General_options): Add --fatal-warnings.
9354 * main.cc (main): Implement --fatal-warnings.
9355 * errors.h (Errors::warning_count): New function.
9356
f1f70eae
ILT
9357 * options.h (class General_options): Add -Bsymbolic-functions.
9358 * symtab.h (Symbol::is_preemptible): Check for
9359 -Bsymbolic-functions.
9360
8825ac63
ILT
93612008-05-05 Ian Lance Taylor <iant@google.com>
9362
d98bc257
ILT
9363 * options.h (DEFINE_bool): For DASH_Z, create the negative option
9364 as noVARNAME rather than no-VARNAME.
9365 (class General_options): Add option -z combreloc.
9366 * output.h (class Output_reloc) [SHT_REL]: Declare compare and
9367 get_address.
9368 (Output_reloc::sort_before) [SHT_REL]: New function.
9369 (Output_reloc::sort_before) [SHT_RELA]: New function.
9370 (class Output_data_reloc_base): Add sort_relocs_ field. Define
9371 Sort_relocs_comparison.
9372 (Output_data_reloc_base::Output_data_reloc_base): Add sort_relocs
9373 parameter. Change all callers.
9374 (Output_data_reloc::Output_data_reloc) [both versions]: Add
9375 sort_relocs parameter. Change all callers.
9376 * output.cc (Output_reloc::get_address): New function, broken out
9377 of write_rel.
9378 (Output_reloc::write_rel): Call it.
9379 (Output_reloc::compare): New function.
9380 (Output_data_reloc_base::do_write): Optionally sort relocs.
9381
60b2b4e7
ILT
9382 * configure.ac: If targ_extra_obj is set, link it in.
9383 * configure.tgt: Initialize all variables.
9384 (x86_64*): Set targ_extra_obj and targ_extra_size.
9385 * configure: Rebuild.
9386
8825ac63
ILT
9387 * object.cc (Sized_relobj::include_section_group): Adjust section
9388 indexes read from group data. Build vector to pass to
9389 layout_group.
9390 * layout.cc (Layout::layout_group): Add flags and shndxes
9391 parameters. Remove contents parameter. Change caller. Update
9392 explicit instantiations.
9393 * layout.h (class Layout): Update layout_group declaration.
9394 * output.cc (Output_data_group::Output_data_group): Add flags and
9395 input_shndxes parameters. Remove contents parameter. Change
9396 caller.
9397 (Output_data_group::do_write): Change input_sections_ to
9398 input_shndxes_.
9399 * output.h (class Output_data_group): Update constructor
9400 declaration. Rename input_sections_ to input_shndxes_.
9401 * testsuite/many_sections_test.cc: Add template.
9402
e94cf127
CC
94032008-04-30 Cary Coutant <ccoutant@google.com>
9404
4418b2d5
CC
9405 * target-reloc.h (relocate_section): Fix dead-pointer bug.
9406
e94cf127
CC
9407 * layout.cc (Layout::include_section): Refactored check for debug
9408 info section.
9409 (Layout::add_comdat): Add new parameters. Change type
9410 of signature parameter. Add object and shndx to signatures table.
9411 (Layout::find_kept_object): New function.
9412 * layout.h: Include <cstring>.
9413 (Layout::is_debug_info_section): New function.
9414 (Layout::add_comdat): Add new parameters.
9415 (Layout::find_kept_object): New function.
9416 (Layout::Kept_section): New struct.
9417 (Layout::Signatures): Change type of map range.
9418 * object.cc (Relobj::output_section_address): New function.
9419 (Sized_relobj::include_section_group): Add new parameters. Change
9420 calls to Layout::add_comdat. Change to build table of kept comdat
9421 groups and table mapping discarded sections to kept sections.
9422 (Sized_relobj::include_linkonce_section): Likewise. Add new parameter.
9423 (Sized_relobj::do_layout): Change calls to include_section_group and
9424 include_linkonce_section.
9425 (Sized_relobj::do_finalize_local_symbols): Do not set local symbol
9426 value to zero when section is discarded.
9427 (Sized_relobj::map_to_kept_section): New function.
9428 * object.h (Relobj::output_section_address): New function.
9429 (Relobj::Comdat_group): New type.
9430 (Relobj::find_comdat_group): New function.
9431 (Relobj::Comdat_group_table): New type.
9432 (Relobj::Kept_comdat_section): New type.
9433 (Relobj::Kept_comdat_section_table): New type.
9434 (Relobj::add_comdat_group): New function.
9435 (Relobj::set_kept_comdat_section): New function.
9436 (Relobj::get_kept_comdat_section): New function.
9437 (Relobj::comdat_groups_): New field.
9438 (Relobj::kept_comdat_sections_): New field.
9439 (Symbol_value::input_value): Update comment.
9440 (Sized_relobj::map_to_kept_section) New function.
9441 (Sized_relobj::include_linkonce_section): Add new parameter.
9442 * target-reloc.h (Comdat_behavior): New type.
9443 (get_comdat_behavior): New function.
9444 (relocate_section): Add code to map a discarded section to the
9445 corresponding kept section when applying a relocation.
9446
e4e5049b
CS
94472008-04-30 Craig Silverstein <csilvers@google.com>
9448
9449 * dwarf_reader.cc (next_generation_count): New static var.
9450 (Addr2line_cache_entry): New struct.
9451 (addr2line_cache): New static var.
9452 (Dwarf_line_info::one_addr2line): Added caching.
9453 (Dwarf_line_info::clear_addr2line_cache): New function.
9454 * dwarf_reader.h (Dwarf_line_info::one_addr2line): Add
9455 cache-size parameter.
9456 (Dwarf_line_info::one_addr2line_cache): New function.
9457 * symtab.cc (Symbol_table::detect_odr_violations): Pass
9458 new cache-size argument to one_addr2line(), and clear cache.
9459
d09e9154
CC
94602008-04-28 Cary Coutant <ccoutant@google.com>
9461
9462 * i386.cc (Relocate::relocate): Fix typos for R_386_PC16 and
9463 R_386_PC8 relocations.
9464
7ef73768
ILT
94652008-04-23 Ian Lance Taylor <iant@google.com>
9466
55438702
ILT
9467 * object.cc (Sized_relobj::include_section_group): Check for
9468 invalid section group.
9469
c165fb93
ILT
9470 * object.cc (make_elf_object): Correct test for 64-bit ELF file
9471 header size.
9472
7ef73768
ILT
9473 * readsyms.cc (Read_symbols::do_read_symbols): Use get_view rather
9474 than read for file header.
9475 * archive.cc (Archive::include_member): Likewise.
9476
6194aaab
L
94772008-04-23 Paolo Bonzini <bonzini@gnu.org>
9478
9479 * aclocal.m4: Regenerate.
9480 * configure: Regenerate.
9481
d491d34e
ILT
94822008-04-19 Ian Lance Taylor <iant@google.com>
9483
5ea2bac6
ILT
9484 * version.cc (version_string): Bump to 1.6.
9485
7bc3e21a
ILT
9486 * testsuite/Makefile.am (many_sections_r_test): New target.
9487 (many_sections_r_test_SOURCES): Remove.
9488 (many_sections_r_test_DEPENDENCIES): Remove.
9489 (many_sections_r_test_LDFLAGS): Remove.
9490 (many_sections_r_test_LDADD): Remove.
9491
7fcd3aa9
ILT
9492 * object.cc (Sized_relobj::do_add_symbols): Always pass
9493 local_symbol_count_ to add_from_relobj.
9494
4c94d6ae
ILT
9495 * testsuite/Makefile.am (many_sections_check.h): Only check one in
9496 every thousand variables.
9497 * testsuite/Makefile.in: Rebuild.
9498
d491d34e
ILT
9499 * object.cc (Xindex::initialize_symtab_xindex): New function.
9500 (Xindex::read_symtab_xindex): New function.
9501 (Xindex::sym_xindex_to_shndx): New function.
9502 (Sized_relobj::find_symtab): Pick up SHT_SYMTAB_SHNDX section if
9503 available.
9504 (Sized_relobj::do_initialize_xindex): New function.
9505 (Sized_relobj::do_read_symbols): Adjust section links.
9506 (Sized_relobj::symbol_section_and_value): Add is_ordinary
9507 parameter. Change all callers.
9508 (Sized_relobj::include_section_group): Adjust section links and
9509 symbol section indexes.
9510 (Sized_relobj::do_layout): Adjust section links.
9511 (Sized_relobj::do_count_local_symbols): Adjust section links and
9512 symbol section indexes.
9513 (Sized_relobj::do_finalize_local_symbols): Distinguish between
9514 ordinary and special symbols.
9515 (Sized_relobj::write_local_symbols): Add symtab_xindex and
9516 dynsym_xindex parameters. Change all callers. Adjust section
9517 links. Use SHN_XINDEX when needed.
9518 (Sized_relobj::get_symbol_location_info): Adjust section links.
9519 Don't get fooled by special symbols.
9520 * object.h (class Xindex): Define.
9521 (class Object): Add xindex_ parameter. Declare virtual functoin
9522 do_initialize_xindex.
9523 (Object::adjust_sym_shndx): New function.
9524 (Object::set_xindex): New protected function.
9525 (class Symbol_value): Add is_ordinary_shndx_ field.
9526 (Symbol_value::Symbol_value): Initialize is_ordinary_shndx_.
9527 (Symbol_value::value): Assert ordinary section.
9528 (Symbol_value::initialize_input_to_output_map): Likewise.
9529 (Symbol_value::set_input_shndx): Add is_ordinary parameter.
9530 Change all callers.
9531 (Symbol_value::input_shndx): Add is_ordinary parameter. Change
9532 all callers.
9533 (class Sized_relobj): Update declarations.
9534 (Sized_relobj::local_symbol_input_shndx): Add is_ordinary
9535 parameter. Change all callers.
9536 (Sized_relobj::adjust_shndx): New function.
9537 * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize dynsym_shndx_
9538 field.
9539 (Sized_dynobj::find_dynsym_sections): Remove pdynsym_shndx
9540 parameter. Change all callers. Pick up SHT_DYNSYM_SHNDX section
9541 for SHT_DYNSYM section if available. Set dynsym_shndx_ field.
9542 (Sized_dynobj::read_dynsym_section): Adjust section links.
9543 (Sized_dynobj::read_dynamic): Likewise.
9544 (Sized_dynobj::do_read_symbols): Use dynsym_shndx_ field. Adjust
9545 section links.
9546 (Sized_dynobj::do_initialize_xindex): New function.
9547 * dynobj.h (class Sized_dynobj): Add dynsym_shndx_ field. Declare
9548 do_initialize_xindex.
9549 (Sized_dynobj::adjust_shndx): New function.
9550 * layout.cc (Layout::Layout): Initialize symtab_xindex_ and
9551 dynsym_xindex_ fields.
9552 (Layout::finalize): Add a call to set_section_indexes before
9553 creating the symtab sections.
9554 (Layout::set_section_indexes): Don't do anything if the section
9555 already has a section index.
9556 (Layout::create_symtab_sections): Add shnum parameter. Change
9557 caller. Create .symtab_shndx section if needed.
9558 (Layout::create_shdrs): Add shstrtab_section parameter. Change
9559 caller.
9560 (Layout::allocated_output_section_count): New function.
9561 (Layout::create_dynamic_symtab): Create .dynsym_shndx section if
9562 needed.
9563 * layout.h (class Layout): Add symtab_xindex_ and dynsym_xindex_
9564 fields. Update declarations.
9565 (Layout::symtab_xindex): New function.
9566 (Layout::dynsym_xindex): New function.
9567 (class Write_symbols_task): Add layout_ field.
9568 (Write_symbols_task::Write_symbols_task): Add layout parameter.
9569 Change caller.
9570 * output.cc (Output_section_headers::Output_section_headers): Add
9571 shstrtab_section parameter. Change all callers.
9572 (Output_section_headers::do_sized_write): Store overflow values
9573 for section count and section string table section index in
9574 section header zero.
9575 (Output_file_header::do_sized_write): Check for overflow of
9576 section count and section string table section index.
9577 (Output_symtab_xindex::do_write): New function.
9578 (Output_symtab_xindex::endian_do_write): New function.
9579 * output.h (class Output_section_headers): Add shstrtab_section_.
9580 Update declarations.
9581 (class Output_symtab_xindex): Define.
9582 (Output_section::has_out_shndx): New function.
9583 * symtab.cc (Symbol::init_fields): Initialize is_ordinary_shndx_
9584 field.
9585 (Symbol::init_base): Add st_shndx and is_ordinary parameters.
9586 Change all callers.
9587 (Sized_symbol::init): Likewise.
9588 (Symbol::output_section): Check for ordinary symbol.
9589 (Symbol_table::add_from_object): Remove orig_sym parameter. Add
9590 st_shndx, is_ordinary, and orig_st_shndx parameters. Change all
9591 callers.
9592 (Symbol_table::add_from_relobj): Add symndx_offset parameter.
9593 Change all callers. Simplify handling of symbols from sections
9594 not included in the link.
9595 (Symbol_table::add_from_dynobj): Handle ordinary symbol
9596 distinction.
9597 (Weak_alias_sorter::operator()): Assert that symbols are
9598 ordinary.
9599 (Symbol_table::sized_finalize_symbol): Handle ordinary symbol
9600 distinction.
9601 (Symbol_table::write_globals): Add symtab_xindex and dynsym_xindex
9602 parameters. Change all callers.
9603 (Symbol_table::sized_write_globals): Likewise. Handle ordinary
9604 symbol distinction. Use SHN_XINDEX when needed.
9605 (Symbol_table::write_section_symbol): Add symtab_xindex
9606 parameter. Change all callers.
9607 (Symbol_table::sized_write_section_symbol): Likewise. Use
9608 SHN_XINDEX when needed.
9609 * symtab.h (class Symbol): Add is_ordinary_shndx_ field. Update
9610 declarations.
9611 (Symbol::shndx): Add is_ordinary parameter. Change all callers.
9612 (Symbol::is_defined): Check is_ordinary.
9613 (Symbol::is_undefined, Symbol::is_weak_undefined): Likewise.
9614 (Symbol::is_absolute, Symbol::is_common): Likewise.
9615 (class Sized_symbol): Update declarations.
9616 (class Symbol_table): Update declarations.
9617 * resolve.cc (Symbol::override_base): Add st_shndx and is_ordinary
9618 parameters. Change all callers.
9619 (Sized_symbol::override): Likewise.
9620 (Symbol_table::override): Likewise.
9621 (symbol_to_bits): Add is_ordinary parameter. Change all callers.
9622 (Symbol_table::resolve): Remove orig_sym parameter. Add st_shndx,
9623 is_ordinary, and orig_st_shndx parameters. Change all callers.
9624 * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Require symbol
9625 to be in an ordinary section.
9626 * dwarf_reader.cc (Sized_dwarf_line_info::symbol_section): Add
9627 object and is_ordinary parameters. Change all callers.
9628 (Sized_dwarf_line_info::read_relocs): Add object parameter.
9629 Change all callers. Don't add undefined or non-ordinary symbols
9630 to reloc_map_.
9631 (Sized_dwarf_line_info::read_line_mappings): Add object parameter.
9632 Change all callers.
9633 * dwarf_reader.h (class Sized_dwarf_line_info): Update
9634 declarations.
9635 * ehframe.cc (Eh_frame::read_fde): Check for ordinary symbol.
9636 * reloc.cc (Sized_relobj::do_read_relocs): Adjust section links.
9637 (Sized_relobj::relocate_sections): Likewise.
9638 * target-reloc.h (scan_relocs): Adjust section symbol index.
9639 (scan_relocatable_relocs): Likewise.
9640 * i386.cc (Scan::local): Check for ordinary symbols.
9641 * sparc.cc (Scan::local): Likewise.
9642 * x86_64.cc (Scan::local): Likewise.
9643 * testsuite/binary_unittest.cc (Sized_binary_test): Update calls
9644 to symbol_section_and_value.
9645 * testsuite/many_sections_test.cc: New file.
9646 * testsuite/Makefile.am (BUILT_SOURCES): Define.
9647 (check_PROGRAMS): Add many_sections_test.
9648 (many_sections_test_SOURCES): Define.
9649 (many_sections_test_DEPENDENCIES): Define.
9650 (many_sections_test_LDFLAGS): Define.
9651 (BUILT_SOURCES): Add many_sections_define.h.
9652 (many_sections_define.h): New target.
9653 (BUILT_SOURCES): Add many_sections_check.h.
9654 (many_sections_check.h): New target.
9655 (check_PROGRAMS): Add many_sections_r_test.
9656 (many_sections_r_test_SOURCES): Define.
9657 (many_sections_r_test_DEPENDENCIES): Define.
9658 (many_sections_r_test_LDFLAGS): Define.
9659 (many_sections_r_test_LDADD): Define.
9660 (many_sections_r_test.o): New target.
9661 * testsuite/Makefile.in: Rebuild.
9662
c5818ff1
CC
96632008-04-17 Cary Coutant <ccoutant@google.com>
9664
9665 * errors.cc (Errors::info): New function.
9666 (gold_info): New function.
9667 * errors.h (Errors::info): New function.
9668 * gold.h (gold_info): New function.
9669 * object.cc (Input_objects::add_object): Print trace output.
9670 * options.cc (options::parse_set): New function.
9671 (General_options::parse_wrap): Deleted.
9672 (General_options::General_options): Deleted initializer.
9673 * options.h (options::String_set): New typedef.
9674 (options::parse_set): New function.
9675 (DEFINE_set): New macro.
9676 (General_options::wrap): Changed to use DEFINE_set. Changed
9677 callers of any_wrap_symbols and is_wrap_symbol.
9678 (General_options::trace, General_options::trace_symbol):
9679 New options.
9680 (General_options::any_wrap_symbols, General_options::is_wrap_symbol)
9681 (General_options::wrap_symbols_): Deleted.
9682 * symtab.cc (Symbol_table::add_from_object): Print trace output.
9683
b5be4a7c
DM
96842008-04-17 David S. Miller <davem@davemloft.net>
9685
9686 * options.cc (General_options::parse_V): New function.
9687 * options.h: Add entries for -V and -Qy.
9688
155a0dd7
ILT
96892008-04-17 Ian Lance Taylor <iant@google.com>
9690
9691 * common.cc (Symbol_table::allocate_commons): Remove options
9692 parameter. Change caller.
9693 (Symbol_table::do_allocate_commons): Remove options parameter.
9694 Change caller. Just call do_allocate_commons_list twice.
9695 (Symbol_table::do_allocate_commons_list): New function, broken out
9696 of do_allocate_commons.
9697 * common.h (class Allocate_commons_task): Remove options_ field.
9698 Update constructor.
9699 * symtab.cc (Symbol_table::Symbol_table): Initialize
9700 tls_commons_.
9701 (Symbol_table::add_from_object): Put TLS common symbols on
9702 tls_commons_ list.
9703 (Symbol_table::sized_finalize_symbol): Handle STT_TLS symbols
9704 which are IN_OUTPUT_DATA.
9705 * symtab.h (class Symbol_table): Add tls_commons_ field. Update
9706 allocate_commons and do_allocate_commons declarations. Declare
9707 do_allocate_commons_list.
9708 * gold.cc (queue_middle_tasks): Update creation of
9709 Allocate_commons_task to not pass options.
9710 * testsuite/Makefile.am (INCLUDES): Add -I.. .
9711 (TLS_TEST_C_FLAGS): New variable.
9712 (tls_test_c_pic.o): New target.
9713 (tls_test_shared.so): Link in tls_test_c_pic.o.
9714 (tls_test_c_pic_ie.o): New target.
9715 (tls_test_ie_shared.so): Link in tls_test_c_pic_ie.o.
9716 (tls_test_DEPENDENCIES, tls_test_LDADD): Add tls_test_c.o.
9717 (tls_test_c.o): New target.
9718 (tls_pic_test_DEPENDENCIES): Add tls_test_c_pic.o.
9719 (tls_pic_test_LDADD): Likewise.
9720 (tls_shared_gd_to_ie_test_DEPENDENCIES): Add tls_test_c_pic.o.
9721 (tls_shared_gd_to_ie_test_LDADD): Likewise.
9722 (tls_test_c_gnu2.o): New target.
9723 (tls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): Add
9724 tls_test_c_gnu2.o.
9725 (tls_shared_gnu2_gd_to_ie_test_LDADD): Likewise.
9726 (tls_test_gnu2_shared.so): Link in tls_test_c_gnu2.o.
9727 (tls_test_shared_nonpic.so): Link in tls_test_c.o.
9728 * testsuite/tls_test.cc: Include "config.h".
9729 (t_last): Call t11_last.
9730 * testsuite/tls_test.h (t11, t11_last): Declare.
9731 * testsuite/tls_test_c.c: New file.
9732 * testsuite/tls_test_main.cc (thread_routine): Call t11.
9733 * configure.ac: Check for OpenMP support.
9734 * configure, config.in, Makefile.in: Rebuild.
9735 * testsuite/Makefile.in: Rebuild.
9736
edfbb029
CC
97372008-04-16 Cary Coutant <ccoutant@google.com>
9738
9739 * i386.cc (Target_i386::define_tls_base_symbol): New function.
9740 (Target_i386::tls_base_symbol_defined_): New field.
9741 (Target_i386::Scan::local): Define _TLS_MODULE_BASE_ symbol.
9742 (Target_i386::Scan::global): Likewise.
9743 * symtab.cc (sized_finalize_symbol): Add check for TLS symbol.
9744 * x86_64.cc (Target_x86_64::define_tls_base_symbol): New function.
9745 (Target_x86_64::tls_base_symbol_defined_): New field.
9746 (Target_x86_64::Scan::local): Define _TLS_MODULE_BASE_ symbol.
9747 (Target_x86_64::Scan::global): Likewise.
9748
f3c69fca
CC
97492008-04-16 Cary Coutant <ccoutant@google.com>
9750
9751 * symtab.h (Symbol::is_strong_undefined): Removed unused function.
9752 (Symbol::needs_plt_entry): Allow weak undefined symbols.
9753 (Symbol::needs_dynamic_reloc): Allow weak undefined symbols when
9754 building shared libraries.
9755 * testsuite/Makefile.am (weak_undef_nonpic_test): New target.
9756 (weak_undef_file1_nonpic.o, weak_undef_file2_nonpic.o)
9757 (weak_undef_lib_nonpic.so, alt/weak_undef_lib_nonpic.so): New targets.
9758 * testsuite/Makefile.in: Rebuild.
9759 * testsuite/weak_undef.h: New file.
9760 * testsuite/weak_undef_file1.cc: Add extra test cases.
9761 * testsuite/weak_undef_file2.cc: Likewise.
9762 * testsuite/weak_undef_test.cc: Likewise.
9763
7c414435
DM
97642008-04-16 David S. Miller <davem@davemloft.net>
9765
32b769e1
DM
9766 * sparc.cc (Target_sparc::Scan): Change from struct to class.
9767 Add issued_non_pic_error_ field. Declare check_non_pic.
9768 (Target_sparc::Scan::check_non_pic): New function.
9769 (Target_sparc::Scan::local): Call check_non_pic as appropriate.
9770 (Target_sparc::Scan::global): Likewise.
9771
11936fb1
DM
9772 * configure.ac (FN_PTRS_IN_SO_WITHOUT_PIC): Add sparc64.
9773 * configure: Rebuild.
9774
7c414435
DM
9775 * options.h (DEFINE_enable): New macro.
9776 (new_dtags): New enable option.
9777 (initfirst, interpose, loadfltr, nodefaultlib,
9778 nodelete, nodlopen, nodump): New -z options.
9779 * layout.cc (Layout:finish_dynamic_section): If new
9780 dtags enabled, emit DT_RUNPATH. Also, emit a
9781 DT_FLAGS_1 containing any specified -z flags.
9782
85c7bf8b
ILT
97832008-04-16 Ian Lance Taylor <iant@google.com>
9784
12c0daef
ILT
9785 * copy-relocs.cc: New file.
9786 * copy-relocs.h: New file.
9787 * reloc.cc: Remove Copy_relocs code.
9788 * reloc.h: Likewise.
9789 * reloc-types.h (struct Reloc_types) [both versions]: Add
9790 get_reloc_addend_noerror.
9791 * output.h (class Output_data_reloc<elfcpp::SHT_REL>): Add
9792 variants of add_global which take an addend which must be zero.
9793 * i386.cc: Include "copy-relocs.h".
9794 (class Target_i386): Change type of copy_relocs_ to variable,
9795 update initializer.
9796 (Target_i386::copy_reloc): Rewrite to pass to Copy_relocs class.
9797 Change all callers.
9798 (Target_i386::do_finalize_sections): Change handling of
9799 copy_relocs_.
9800 * sparc.cc: Include "copy-relocs.h".
9801 (class Target_sparc): Change type of copy_relocs_ to variable,
9802 update initializer.
9803 (Target_sparc::copy_reloc): Rewrite to pass to Copy_relocs class.
9804 Change all callers.
9805 (Target_sparc::do_finalize_sections): Change handling of
9806 copy_relocs_.
9807 * x86_64.cc: Include "copy-relocs.h".
9808 (class Target_x86_64): Change type of copy_relocs_ to variable,
9809 update initializer.
9810 (Target_x86_64::copy_reloc): Rewrite to pass to Copy_relocs
9811 class. Change all callers.
9812 (Target_x86_64::do_finalize_sections): Change handling of
9813 copy_relocs_.
9814 * Makefile.am (CCFILES): Add copy-relocs.cc.
9815 (HFILES): Add copy-relocs.h.
9816
4f4995b6
ILT
9817 * Makefile.in, aclocal.m4, testsuite/Makefile.in: Rebuild.
9818
85c7bf8b
ILT
9819 * testsuite/script_test_4.sh: Permit leading zeroes.
9820
4f2a9edd
ILT
98212008-04-15 Ian Lance Taylor <iant@google.com>
9822
e6188289
ILT
9823 * script-sections.cc (Script_sections::create_segments): Use
9824 header_size_adjustment even when there is enough room for the
9825 headers.
9826 * testsuite/script_test_4.sh: New file.
9827 * testsuite/script_test_4.t: New file.
9828 * testsuite/Makefile.am (check_SCRIPTS): Add script_test_4.sh.
9829 (check_DATA): Add script_test_4.stdout.
9830 (MOSTLYCLEANFILES): Likewise.
9831 (script_test_4): New target.
9832 (script_test_4.stdout): New target.
9833 * testsuite/Makefile.in: Rebuild.
9834
4f2a9edd
ILT
9835 * sparc.cc: Add definitions for Output_data_plt_sparc class
9836 constants.
9837
f5314dd5
DM
98382008-04-14 David S. Miller <davem@davemloft.net>
9839
9840 * sparc.cc: New file.
9841 * Makefile.am (TARGETSOURCES): Add sparc.cc
9842 (ALL_TARGETOBJS): Add sparc.$(OBJEXT)
9843 * configure.tgt: Document targ_extra_size and
9844 targ_extra_big_endian. Add entries for sparc-* and
9845 sparc64-*.
9846 * configure.ac: Handle targ_extra_size and
9847 targ_extra_big_endian.
9848 * Makefile.in: Rebuild.
9849 * configure: Likewise.
9850 * po/POTFILES.in: Likewise.
9851 * po/gold.pot: Likewise.
9852
154e0e9a
ILT
98532008-04-14 Ian Lance Taylor <iant@google.com>
9854
9855 * layout.cc (Layout::Layout): Initialize sections_are_attached_.
9856 (Layout::get_output_section): Ignore SHF_WRITE and SHF_EXECINSTR
9857 in the name/type/flags to section mapping. Don't call
9858 allocate_output_section.
9859 (Layout::choose_output_section): Change parameter from adjust_name
9860 to is_input_section. Don't permit input sections after sections
9861 are attached to segments. Don't call allocate_output_section.
9862 (Layout::layout_eh_frame): Call update_flags_for_input_section,
9863 not write_enable_output_section.
9864 (Layout::make_output_section): Don't push to
9865 unattached_section_list_ nor call attach_to_segment. Call
9866 attach_section_to_segment if sections are attached.
9867 (Layout::attach_sections_to_segments): New function.
9868 (Layout::attach_section_to_segment): New function.
9869 (Layout::attach_allocated_section_to_segment): Rename from
9870 attach_to_segment. Remove flags parameter.
9871 (Layout::allocate_output_section): Remove function.
9872 (Layout::write_enable_output_section): Remove function.
9873 * layout.h (class Layout): Update for above changes. Add new
9874 field sections_are_attached_.
9875 * output.h (Output_section::update_flags_for_input_section): New
9876 function.
9877 * output.cc (Output_section::add_input_section): Call
9878 update_flags_for_input_section.
9879 * gold.cc (queue_middle_tasks): Call attach_sections_to_segments.
9880
009a67a2
CC
98812008-04-11 Cary Coutant <ccoutant@google.com>
9882
9883 * i386.cc (Target_i386::got_mod_index_entry): Restore code previously
9884 thought unnecessary.
9885 * x86_64.cc (Target_x86_64::got_mod_index_entry): Likewise.
9886
759b1a24
ILT
98872008-04-11 Ian Lance Taylor <iant@google.com>
9888
9889 * output.h (class Output_section_data): Remove inline definition
9890 of set_addralign.
9891 * output.cc (Output_section_data::set_addralign): New function.
9892
c2b45e22
CC
98932008-04-11 Cary Coutant <ccoutant@google.com>
9894
9895 Add support for TLS descriptors for i386 and x86_64.
9896 * i386.cc (Target_i386::Relocate::tls_desc_gd_to_ie): New function.
9897 (Target_i386::Relocate::tls_desc_gd_to_le): New function.
9898 (Target_i386::Got_type): Add GOT_TYPE_TLS_NOFFSET and
9899 GOT_TYPE_TLS_DESC.
9900 (Target_i386::got_mod_index_entry): Remove unnecessary code.
9901 (Target_i386::Scan::local): Implement R_386_TLS_GOTDESC and
9902 R_386_TLS_DESC_CALL relocations. Fix problem with initial-exec
9903 relocations.
9904 (Target_i386::Scan::global): Fix problem with GD-to-IE relaxation.
9905 Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations;
9906 Fix problem with initial-exec relocations.
9907 (Target_i386::Relocate::relocate_tls): Likewise.
9908 (Target_i386::Relocate::tls_gd_to_ie): Fix problem with GD-to-IE
9909 relaxation.
9910 * output.cc (Output_data_dynamic::Dynamic_entry::write): Add
9911 support for section-plus-offset dynamic table entries.
9912 * output.h (Output_data_dynamic::add_section_plus_offset): New function.
9913 (Output_data_dynamic::Dynamic_entry): Add support for
9914 section-plus-offset dynamic table entries.
9915 (Output_data_dynamic::Classification): Likewise.
9916 (Output_data_dynamic::classification_): Renamed offset_.
9917 * x86_64.cc (Target_x86_64::Relocate::tls_desc_gd_to_ie): New function.
9918 (Target_x86_64::Relocate::tls_desc_gd_to_le): New function.
9919 (Target_x86_64::make_plt_section): New function.
9920 (Target_x86_64::reserve_tlsdesc_entries): New function.
9921 (Output_data_plt_x86_64::Output_data_plt_x86_64): Add new parameter.
9922 (Output_data_plt_x86_64::reserve_tlsdesc_entry): New function.
9923 (Output_data_plt_x86_64::has_tlsdesc_entry): New function.
9924 (Output_data_plt_x86_64::get_tlsdesc_got_offset): New function.
9925 (Output_data_plt_x86_64::get_tlsdesc_plt_offset): New function.
9926 (Output_data_plt_x86_64::tlsdesc_plt_entry): New field.
9927 (Output_data_plt_x86_64::set_final_data_size): Move out of line;
9928 add extra PLT entry for TLS descriptors.
9929 (Output_data_plt_x86_64::got_): New field.
9930 (Output_data_plt_x86_64::tlsdesc_got_offset_): New field.
9931 (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize new
9932 fields.
9933 (Output_data_plt_x86_64::do_write): Write extra PLT entry for TLS
9934 descriptors.
9935 (Target_x86_64::make_plt_entry): Factor out make_plt_section.
9936 (Target_x86_64::got_mod_index_entry): Remove unnecessary code.
9937 (Target_x86_64::Scan::local): Implement R_386_TLS_GOTDESC and
9938 R_386_TLS_DESC_CALL relocations.
9939 (Target_x86_64::Scan::global): Likewise.
9940 (Target_x86_64::do_finalize_sections): Add dynamic table entries
9941 for TLS descriptors.
9942 (Relocate::relocate_tls): Fix problem with GD-to-IE relaxation.
9943 Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations.
9944 (Target_x86_64::Relocate::tls_gd_to_ie): Fix problem with
9945 GD-to-IE relaxation.
9946 * configure.ac: Export new conditional variables TLS_GNU2_DIALECT
9947 and TLS_DESCRIPTORS.
9948 * Makefile.in: Rebuild.
9949 * configure: Rebuild.
9950 * testsuite/Makefile.am (tls_shared_gd_to_ie_test): New target.
9951 (tls_test_shared2.so): New target.
9952 (tls_shared_gd_to_ie_test_SOURCES): New variable.
9953 (tls_shared_gd_to_ie_test_DEPENDENCIES): New variable.
9954 (tls_shared_gd_to_ie_test_LDFLAGS): New variable.
9955 (tls_shared_gd_to_ie_test_LDADD): New variable.
9956 (tls_shared_gnu2_gd_to_ie_test): New target.
9957 (tls_test_gnu2.o, tls_test_file2_gnu2.o, tls_test_gnu2_shared2.so):
9958 New targets.
9959 (tls_shared_gnu2_gd_to_ie_test_SOURCES): New variable.
9960 (ls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): New variable.
9961 (tls_shared_gnu2_gd_to_ie_test_LDFLAGS): New variable.
9962 (tls_shared_gnu2_gd_to_ie_test_LDADD): New variable.
9963 (tls_shared_gnu2_test): New target.
9964 (tls_test_gnu2_shared.so): New target.
9965 (tls_shared_gnu2_test_SOURCES): New variable.
9966 (tls_shared_gnu2_test_DEPENDENCIES): New variable.
9967 (tls_shared_gnu2_test_LDFLAGS): New variable.
9968 (tls_shared_gnu2_test_LDADD): New variable.
9969 * testsuite/Makefile.in: Rebuild.
9970 * testsuite/Makefile.
9971
83bfb6b7
ILT
99722008-04-11 Ian Lance Taylor <iant@google.com>
9973
9974 * testsuite/Makefile.am (justsyms_2r.o): Add dependency on
9975 justsyms.t.
9976 * testsuite/Makefile.in: Rebuild.
9977
9978 * testsuite/script_test_2a.cc (script_test_string_a): Make 8 bytes
9979 long.
9980 * testsuite/script_test_2.cc (main): Adjust test.
9981
706e1f5e
ILT
99822008-04-11 David S. Miller <davem@davemloft.net>
9983 Ian Lance Taylor <iant@google.com>
9984
9985 * options.h (General_options): Add entries for '-Y' and
9986 '-relax'.
9987 * options.cc (General_options:finalize): If -Y was used, add those
9988 entries to the library path instead of the default "/lib" and
9989 "/usr/lib".
9990
7c98e6bb
DM
99912008-04-11 David S. Miller <davem@davemloft.net>
9992
9993 * testsuite/justsyms.t: Start at 0x100.
9994 * testsuite/justsyms_1.cc: Adjust justsyms_string assertion.
83bfb6b7
ILT
9995 * testsuite/script_test_2b.cc (script_test_string_b): Make 8 bytes
9996 long.
9997 * testsuite/script_test_2.cc: Adjust string and section length
9998 checks.
7c98e6bb 9999
99a37bfd
ILT
100002008-04-09 Ian Lance Taylor <iant@google.com>
10001
2cefc357
ILT
10002 PR gold/5996
10003 * script-sections.cc (Sections_element::allocate_to_segment): Add
10004 orphan parameter.
10005 (Output_section_definition::allocate_to_segment): Likewise.
10006 (Orphan_output_section::allocate_to_segment): Likewise.
10007 (Script_sections::attach_sections_using_phdrs_clause): Don't
10008 propagate non-PT_LOAD segments to orphan sections.
10009 * testsuite/Makefile.am (script_test_3.stdout): Generate using
10010 readelf rather than objdump.
10011 * testsuite/script_test_3.sh: Adjust accordingly. Test that
10012 .interp section and PT_INTERP segment are the same size.
10013 * testsuite/Makefile.in: Rebuild.
10014
99a37bfd
ILT
10015 * symtab.cc (Symbol_table::add_from_dynobj): Only look for weak
10016 aliases for symbols defined in the same object.
10017 * testsuite/Makefile.am (check_PROGRAMS): Add weak_alias_test.
10018 (weak_alias_test_SOURCES): New variable.
10019 (weak_alias_test_DEPENDENCIES): New variable.
10020 (weak_alias_test_LDFLAGS): New variable.
10021 (weak_alias_test_LDADD): New variable.
10022 (weak_alias_test_1_pic.o, weak_alias_test_1.so): New targets.
10023 (weak_alias_test_2_pic.o, weak_alias_test_2.so): New targets.
10024 (weak_alias_test_3.o): New target.
10025 (weak_alias_test_4_pic.o, weak_alias_test_4.so): New targets.
10026 * testsuite/weak_alias_test_main.cc: New file.
10027 * testsuite/weak_alias_test_1.cc: New file.
10028 * testsuite/weak_alias_test_2.cc: New file.
10029 * testsuite/weak_alias_test_3.cc: New file.
10030
780e49c5
ILT
100312008-04-08 Ian Lance Taylor <iant@google.com>
10032
cdb0b8f5
ILT
10033 * options.h (class General_options): Add --noinhibit-exec option.
10034 * main.cc (main): Check --noinhibit-exec.
10035
0864d551
ILT
10036 * options.h (class General_options): Define --wrap as a special
10037 option. Add wrap_symbols_ field.
10038 (General_options::any_wrap_symbols): New function.
10039 (General_options::is_wrap_symbol): New function.
10040 * options.cc (General_options::parse_wrap): New function.
10041 (General_options::General_options): Initialize wrap_symbols_.
10042 * symtab.cc (Symbol_table::wrap_symbol): New function.
10043 (Symbol_table::add_from_object): Handle --wrap.
10044 * symtab.h (class Symbol_table): Declare wrap_symbol.
10045 * target.h (Target::wrap_char): New function.
10046 (Target::Target_info): Add wrap_char field.
10047 * i386.cc (Target_i386::i386_info): Initialize wrap_char.
10048 * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
10049 * testsuite/testfile.cc (Target_test::test_target_info):
10050 Likewise.
10051
789aa6de
ILT
10052 * errors.cc (Errors::undefined_symbol): Mention symbol version if
10053 there is one.
10054
2c38906f
ILT
10055 * layout.h (class Layout): Add added_eh_frame_data_ field.
10056 * layout.cc (Layout::Layout): Initialize new field.
10057 (Layout::layout_eh_frame): Don't add eh_frame_data_ to .eh_frame
10058 output section until we find a section we merged successfully.
10059 * object.cc (Sized_relobj::check_eh_frame_flags): Don't require
10060 that the size be non-zero.
10061
780e49c5
ILT
10062 * merge.cc (Object_merge_map::get_output_offset): Remove inline
10063 qualifier.
10064
7fcd0256
ILT
100652008-04-08 Craig Silverstein <csilvers@google.com>
10066
10067 * configure.ac: Export new conditional variable HAVE_ZLIB.
10068 * testsuite/Makefile.am (flagstest_o_specialfile): Condition
10069 on HAVE_ZLIB.
10070 (flagstest_o_specialfile_and_compress_debug_sections): Likewise.
10071 * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
10072
6835af53
ILT
100732008-04-07 Ian Lance Taylor <iant@google.com>
10074
e24f324c
ILT
10075 * version.cc (version_string): Set to "1.5".
10076
a036edd8
ILT
10077 * x86_64.cc (Target_x86_64::Scan): Change from struct to class.
10078 Add issued_non_pic_error_ field. Declare check_non_pic.
10079 (Target_x86_64::Scan::check_non_pic): New function.
10080 (Target_x86_64::Scan::local): Call check_non_pic as appropriate.
10081 (Target_x86_64::Scan::global): Likewise.
10082
624f8810
ILT
10083 * output.cc (Output_reloc<SHT_REL>::local_section_offset): Add
10084 addend parameter. Change caller. Handle merge sections.
10085 (Output_reloc<SHT_REL>::symbol_value): Change parameter type from
10086 Address to Addend. Don't add in the result of
10087 local_section_offset, pass down the addend and use the returned
10088 value.
10089 * output.h (class Output_reloc<SHT_REL>): Add Addend typedef.
10090 Update declarations of local_section_offset and symbol_value.
10091 * testsuite/two_file_test_1.cc (t18): New function.
10092 * testsuite/two_file_test_2.cc (f18): New function.
10093 * testsuite/two_file_test_main.cc (main): Call t18.
10094 * testsuite/two_file_test.h (t18, f18): Declare.
10095
6835af53
ILT
10096 * configure.ac: Don't test for objdump, c++filt, or readelf.
10097 * testsuite/Makefile.am: Remove READELF and OBJDUMP_AND_CPPFILT
10098 conditionals.
10099 (TEST_READELF): New variable.
10100 (TEST_OBJDUMP, TEST_CXXFILT, TEST_STRIP): New variables.
10101 (check_PROGRAMS): Add two_file_strip_test.
10102 (two_file_strip_test): New target.
10103 (check_PROGRAMS): Add two_file_same_shared_strip_test.
10104 (two_file_same_shared_strip_test_SOURCES): New variable.
10105 (two_file_same_shared_strip_test_DEPENDENCIES): New variable.
10106 (two_file_same_shared_strip_test_LDFLAGS): New variable.
10107 (two_file_same_shared_strip_test_LDADD): New variable.
10108 (two_file_shared_strip.so): New target.
10109 (ver_test_2.syms, ver_test_4.syms): Use TEST_READELF.
10110 (ver_test_5.syms, ver_test_7.syms): Likewise.
10111 (ver_matching_test.stdout): Use TEST_OBJDUMP and TEST_CXXFILT.
10112 (strip_test_3.stdout): Use TEST_OBJDUMP.
10113 * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
10114
86925eef
CC
101152008-04-04 Cary Coutant <ccoutant@google.com>
10116
10117 * symtab.h (Symbol::is_weak_undefined): New function.
10118 (Symbol::is_strong_undefined): New function.
10119 (Symbol::is_absolute): New function.
10120 (Symbol::needs_plt_entry): Exclude weak undefined symbols.
10121 (Symbol::needs_dynamic_reloc): Exclude weak undefined and
10122 absolute symbols.
10123 * testsuite/Makefile.am (check_PROGRAMS): Add weak_undef_test.
10124 (weak_undef_test): New target.
10125 * testsuite/Makefile.in: Rebuild.
10126 * testsuite/weak_undef_file1.cc: New file.
10127 * testsuite/weak_undef_file2.cc: New file.
10128 * testsuite/weak_undef_test.cc: New file.
10129
126f3ece
ILT
101302008-04-03 Craig Silverstein <csilvers@google.com>
10131
10132 * compressed_output.h (class Output_compressed_section): Use
10133 unsigned buffer.
10134 * compressed_output.cc (zlib_compress): Use unsigned buffers,
10135 add zlib header.
10136 (zlib_compressed_suffix): Removed.
10137 (Output_compressed_section::set_final_data_size): Use unsigned
10138 buffers.
10139 * testsuite/Makefile.am (flagstest_compress_debug_sections):
10140 Fix linker invocation.
10141 (flagstest_o_specialfile_and_compress_debug_sections):
10142 Likewise.
10143 * testsuite/Makefile.in: Regenerated.
10144
deae2a14
DM
101452008-04-02 David S. Miller <davem@davemloft.net>
10146
10147 * dwarf_reader.cc (Sized_dwarf_line_info::read_header_prolog,
10148 Sized_dwarf_line_info::process_one_opcode): Use Swap_unaligned.
10149
70752818
ILT
101502008-04-02 Craig Silverstein <csilvers@google.com>
10151
10152 * TODO: New file.
10153
39d0cb0e
ILT
101542008-04-02 Ian Lance Taylor <iant@google.com>
10155
10156 * fileread.cc (File_read::find_view): Add byteshift and vshifted
10157 parameters. Update for new key type to views_. Change all
10158 callers.
10159 (File_read::read): Adjust for byteshift in returned view.
10160 (File_read::add_view): New function, broken out of
10161 find_and_make_view.
10162 (File_read::make_view): New function, broken out of
10163 find_and_make_view.
10164 (File_read::find_or_make_view): Add offset and aligned
10165 parameters. Rewrite accordingly. Change all callers.
10166 (File_read::get_view): Add offset and aligned parameters. Adjust
10167 for byteshift in return value.
10168 (File_read::get_lasting_view): Likewise.
10169 * fileread.h (class File_read): Update declarations.
10170 (class File_read::View): Add byteshift_ field. Add byteshift to
10171 constructor. Add byteshift method.
10172 * archive.h (Archive::clear_uncached_views): New function.
10173 (Archive::get_view): Add aligned parameter. Change all callers.
10174 * object.h (Object::get_view): Add aligned parameter. Change all
10175 callers.
10176 (Object::get_lasting_view): Likewise.
10177
10178 * fileread.cc (File_read::release): Don't call clear_views if
10179 there are multiple objects.
10180 * fileread.h (File_read::clear_uncached_views): New function.
10181 * archive.cc (Add_archive_symbols::run): Call clear_uncached_views
10182 on the archive.
10183
a1207466
CC
101842008-03-31 Cary Coutant <ccoutant@google.com>
10185
10186 Add thin archive support.
10187 * archive.cc (Archive::armagt): New const.
10188 (Archive::setup): Remove task parameter and calls to unlock.
10189 (Archive::unlock_nested_archives): New function.
10190 (Archive::read_header): Add nested_off parameter. Change
10191 all callers.
10192 (Archive::interpret_header): Likewise.
10193 (Archive::include_all_members): Change to handle thin
10194 archives.
10195 (Archive::include_member): Likewise.
10196 * archive.h (Archive::Archive): Add new parameters and
10197 initializers.
10198 (Archive::armagt): New const.
10199 (Archive::setup): Remove task parameter.
10200 (Archive::unlock_nested_archives): New function.
10201 (Archive::read_header): Add nested_off parameter.
10202 (Archive::interpret_header): Likewise.
10203 (Archive::Nested_archive_table): New typedef.
10204 (Archive::is_thin_archive_): New field.
10205 (Archive::nested_archives_): New field.
10206 (Archive::options_): New field.
10207 (Archive::dirpath_): New field.
10208 (Archive::task_): New field.
10209 * readsyms.cc (Read_symbols::do_read_symbols): Add check
10210 for thin archives. Pass additional parameters to
10211 Archive::Archive. Unlock the archive file after calling
10212 Archive::setup.
cd536b21 10213
479f6503
ILT
102142008-03-29 Ian Lance Taylor <iant@google.com>
10215
686c8caf
ILT
10216 * symtab.cc (Symbol_table::do_define_as_constant): Don't force a
10217 version symbol to be local.
10218 * testsuite/ver_test_4.sh: New file.
10219 * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_4.sh.
10220 (check_DATA): Add ver_test_4.syms.
10221 (ver_test_4.syms): New target.
10222 * testsuite/Makefile.in: Rebuild.
10223
ab794b6b
ILT
10224 * output.cc
10225 (Output_section::Input_section_sort_entry::has_priority): New
10226 function.
10227 (Output_section::Input_section_sort_entry::match_file_name): New
10228 function.
10229 (Output_section::Input_section_sort_entry::match_section_name):
10230 Remove.
10231 (Output_section::Input_section_sort_entry::match_section_name_prefix):
10232 Remove.
10233 (Output_section::Input_section_sort_entry::match_section_file):
10234 Remove.
10235 (Output_section::Input_section_sort_compare::operator()): Rewrite
10236 using new Input_section_sort_entry functions. Sort crtbegin and
10237 crtend first. Sort sections with no priority before sections with
10238 a priority.
10239 * testsuite/initpri1.c (d3): Check j != 4.
10240 (cd5): New constructor/destructor function.
10241 (main): Check j != 2.
10242
479f6503
ILT
10243 * symtab.cc (Symbol_table::add_from_object): If we don't use the
10244 new symbol when resolving, don't call set_is_default.
10245 * testsuite/ver_test_7.cc: New file.
10246 * testsuite/ver_test_7.sh: New file.
10247 * testsuite/Makefile.am (ver_test_7.so): New target.
10248 (ver_test_7.o): New target.
10249 (check_SCRIPTS): Add ver_test_7.sh.
10250 (check_DATA): Add ver_test_7.syms.
10251 (ver_test_7.syms): New target.
10252
2fd32231
ILT
102532008-03-28 Ian Lance Taylor <iant@google.com>
10254
10255 * layout.cc (Layout::layout): If we see an input section with a
10256 name that needs sorting, set the must_sort flag for the output
10257 section.
10258 (Layout::make_output_section): If the name of the output section
10259 indicates that it might require sorting, set the may_sort flag.
10260 * output.h (Output_section::may_sort_attached_input_sections): New
10261 function.
10262 (Output_section::set_may_sort_attached_input_sections): New
10263 function.
10264 (Output_section::must_sort_attached_input_sections): New
10265 function.
10266 (Output_section::set_must_sort_attached_input_sections): New
10267 function.
10268 (class Output_section): Declare Input_section_sort_entry. Define
10269 Input_section_sort_compare. Declare
10270 sort_attached_input_sections. Add new fields:
10271 may_sort_attached_input_sections_,
10272 must_sort_attached_input_sections_,
10273 attached_input_sections_are_sorted_.
10274 * output.cc (Output_section::Output_section): Initialize new
10275 fields.
10276 (Output_section::add_input_section): Add an entry to
10277 input_sections_ if may_sort or must_sort are true.
10278 (Output_section::set_final_data_size): Call
10279 sort_attached_input_sections if necessary.
10280 (Output_section::Input_section_sort_entry): Define new class.
10281 (Output_section::Input_section_sort_compare::operator()): New
10282 function.
10283 (Output_section::sort_attached_input_sections): New function.
10284 * configure.ac: Check whether the compiler supports constructor
10285 priorities. Define a CONSTRUCTOR_PRIORITY automake conditional.
10286 * testsuite/initpri1.c: New file.
10287 * testsuite/Makefile.am (check_PROGRAMS): Add initpri1 if
10288 CONSTRUCTOR_PRIORITY.
10289 (initpri1_SOURCES, initpri1_DEPENDENCIES): New variables.
10290 (initpri1_LDFLAGS): New variable.
10291 * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
10292
18e6b24e
ILT
102932008-03-27 Ian Lance Taylor <iant@google.com>
10294
49bdd526
ILT
10295 * common.cc (Sort_commons::operator): Correct sorting algorithm.
10296 * testsuite/common_test_1.c: New file.
10297 * testsuite/Makefile.am (check_PROGRAMS): Add common_test_1.
10298 (common_test_1_SOURCES): New variable.
10299 (common_test_1_DEPENDENCIES): New variable.
10300 (common_test_1_LDFLAGS): New variable.
10301
18e6b24e
ILT
10302 * symtab.cc (Symbol_table::add_from_object): Handle saw_undefined_
10303 and commons_ correctly when NAME/VERSION does not override
10304 NAME/NULL.
10305 * testsuite/ver_test_6.c: New file.
10306 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_6
10307 (ver_test_6_SOURCES, ver_test_6_DEPENDENCIES): New variables.
10308 (ver_test_6_LDFLAGS, ver_test_6_LDADD): New variables.
10309
04bf7072
ILT
103102008-03-26 Ian Lance Taylor <iant@google.com>
10311
5871526f
ILT
10312 * symtab.cc (Symbol_table::add_from_relobj): Don't set the version
10313 of an undefined symbol from a version script.
10314 * testsuite/Makefile.am (ver_test_5.so): New target.
10315 (ver_test_5.o): New target.
10316 (check_SCRIPTS): Add ver_test_5.sh.
10317 (check_DATA): Add ver_test_5.syms.
10318 (ver_test_5.syms): New target.
10319 * testsuite/ver_test_5.cc: New file.
10320 * testsuite/ver_test_5.script: New file.
10321 * testsuite/ver_test_5.sh: New file.
10322 * Makefile.in, testsuite/Makefile.in: Rebuild.
10323
04bf7072
ILT
10324 PR gold/5986
10325 Fix problems building gold with gcc 4.3.0.
10326 * gold.h (TEMPLATE_ATTRIBUTE_PRINTF_4): Define.
10327 (gold_error_at_location, gold_warning_at_location): Use it.
10328 * configure.ac: Check whether we can compile and use a template
10329 function with a printf attribute.
10330 * x86_64.cc (Target_x86_64::do_code_fill): Swap out a 32-bit value
10331 when jumping over bytes.
10332 * object.cc: Instantiate Object::read_section_data.
10333 * debug.h: Include <cstring>
10334 * dwarf_reader.cc: Include <algorithm>
10335 * main.cc: Include <cstring>.
10336 * options.cc: Include <cstring>.
10337 * output.cc: Include <cstring>.
10338 * script.cc: Include <cstring>.
10339 * script.h: Include <string>.
10340 * symtab.cc: Include <cstring> and <algorithm>.
10341 * target-select.cc: Include <cstring>.
10342 * version.cc: Include <string>.
10343 * testsuite/testmain.cc: Include <cstdlib>.
10344 * configure, config.in: Rebuild.
10345
874c5b28
ILT
103462008-03-25 Ian Lance Taylor <iant@google.com>
10347
819d6c3a
ILT
10348 * options.cc: Include "../bfd/bfdver.h".
10349 (options::help): Print bug reporting address.
10350
f4b2c6f5
ILT
10351 * version.cc (print_version): Adjust output for current value of
10352 BFD_VERSION_STRING.
10353
10354 * NEWS: New file.
10355
e96caa79
ILT
10356 * options.cc (options::help): Print list of supported targets.
10357 * target-select.h: Include <vector>.
10358 (class Target_selector): Make machine_, size_, and is_big_endian_
10359 fields const. Add bfd_name_ and instantiated_target_ fields.
10360 (Target_selector::Target_selector): Add bfd_name parameter.
10361 (Target_selector::recognize): Make non-virtual, call
10362 do_recognize.
10363 (Target_selector::recognize_by_name): Make non-virtual, call
10364 do_recognize_by_name.
10365 (Target_selector::supported_names): New function.
10366 (Target_selector::bfd_name): New function.
10367 (Target_selector::do_instantiate_target): New pure virtual
10368 function.
10369 (Target_selector::do_recognize): New virtual function.
10370 (Target_selector::do_recognize_by_name): New virtual function.
10371 (Target_selector::instantiate_target): New private function.
10372 (supported_target_names): Declare.
10373 * target-select.cc (Target_selector::Target_selector): Update for
10374 new parameter and fields.
10375 (select_target_by_name): Check that the name matches before
10376 calling recognize_by_name.
10377 (supported_target_names): New function.
10378 * i386.cc (class Target_selector_i386): Update Target_selector
10379 constructor call. Remove recognize and recognize_by_name. Add
10380 do_instantiate_target.
10381 * x86_64.cc (class Target_selector_x86_64): Likewise.
10382 * testsuite/testfile.cc (class Target_selector_test): Update for
10383 changes to Target_selector.
10384
874c5b28
ILT
10385 * README: Rewrite, with some notes on unsupported features.
10386
0a65a3a7
CC
103872008-03-24 Cary Coutant <ccoutant@google.com>
10388
10389 * i386.cc (Target_i386::Got_type): New enum declaration.
10390 (Target_i386::Scan::local): Updated callers of Output_data_got
10391 member functions.
10392 (Target_i386::Scan::global): Likewise.
10393 (Target_i386::Relocate::relocate): Likewise.
10394 (Target_i386::Relocate::relocate_tls): Likewise.
10395 * object.h (Got_offset_list): New class.
10396 (Sized_relobj::local_has_got_offset): Added got_type parameter.
10397 (Sized_relobj::local_got_offset): Likewise.
10398 (Sized_relobj::set_local_got_offset): Likewise.
10399 (Sized_relobj::local_has_tls_got_offset): Removed.
10400 (Sized_relobj::local_tls_got_offset): Removed.
10401 (Sized_relobj::set_local_tls_got_offset): Removed.
10402 (Sized_relobj::Local_got_offsets): Changed to store a list of offsets.
10403 * output.cc (Output_data_got::add_global): Added got_type parameter.
10404 (Output_data_got::add_global_with_rel): Likewise.
10405 (Output_data_got::add_global_with_rela): Likewise.
10406 (Output_data_got::add_global_pair_with_rel): New function.
10407 (Output_data_got::add_global_pair_with_rela): New function.
10408 (Output_data_got::add_local): Added got_type parameter.
10409 (Output_data_got::add_local_with_rel): Likewise.
10410 (Output_data_got::add_local_with_rela): Likewise.
10411 (Output_data_got::add_local_pair_with_rel): New function.
10412 (Output_data_got::add_local_pair_with_rela): New function.
10413 (Output_data_got::add_global_tls): Removed.
10414 (Output_data_got::add_global_tls_with_rel): Removed.
10415 (Output_data_got::add_global_tls_with_rela): Removed.
10416 (Output_data_got::add_local_tls): Removed.
10417 (Output_data_got::add_local_tls_with_rel): Removed.
10418 (Output_data_got::add_local_tls_with_rela): Removed.
10419 * output.h (Output_data_got::add_global): Added got_type parameter.
10420 (Output_data_got::add_global_with_rel): Likewise.
10421 (Output_data_got::add_global_with_rela): Likewise.
10422 (Output_data_got::add_global_pair_with_rel): New function.
10423 (Output_data_got::add_global_pair_with_rela): New function.
10424 (Output_data_got::add_local): Added got_type parameter.
10425 (Output_data_got::add_local_with_rel): Likewise.
10426 (Output_data_got::add_local_with_rela): Likewise.
10427 (Output_data_got::add_local_pair_with_rel): New function.
10428 (Output_data_got::add_local_pair_with_rela): New function.
10429 (Output_data_got::add_global_tls): Removed.
10430 (Output_data_got::add_global_tls_with_rel): Removed.
10431 (Output_data_got::add_global_tls_with_rela): Removed.
10432 (Output_data_got::add_local_tls): Removed.
10433 (Output_data_got::add_local_tls_with_rel): Removed.
10434 (Output_data_got::add_local_tls_with_rela): Removed.
10435 * resolve.cc (Symbol::override_base_with_special): Removed
10436 reference to has_got_offset_ field.
10437 * symtab.cc (Symbol::init_fields): Replaced initialization
10438 of got_offset_ with got_offsets_. Removed initialization
10439 of has_got_offset_
53fcba31 10440 * symtab.h (Symbol::has_got_offset): Aded got_type parameter.
0a65a3a7
CC
10441 (Symbol::got_offset): Likewise.
10442 (Symbol::set_got_offset): Likewise.
10443 (Symbol::has_tls_got_offset): Removed.
10444 (Symbol::tls_got_offset): Removed.
10445 (Symbol::set_tls_got_offset): Removed.
10446 (Symbol::got_offset_): Removed.
10447 (Symbol::tls_mod_got_offset_): Removed.
10448 (Symbol::tls_pair_got_offset_): Removed.
10449 (Symbol::got_offsets_): New field.
10450 (Symbol::has_got_offset): Removed.
10451 (Symbol::has_tls_mod_got_offset): Removed.
10452 (Symbol::has_tls_pair_got_offset): Removed.
10453 * x86_64.cc (Target_x86_64::Got_type): New enum declaration.
10454 (Target_x86_64::Scan::local): Updated callers of Output_data_got
10455 member functions.
10456 (Target_x86_64::Scan::global): Likewise.
10457 (Target_x86_64::Relocate::relocate): Likewise.
10458 (Target_x86_64::Relocate::relocate_tls): Likewise.
10459
bd52eafb
BE
104602008-03-25 Ben Elliston <bje@au.ibm.com>
10461
10462 * yyscript.y: Fix spelling error in comment.
10463
8b105e34
ILT
104642008-03-24 Ian Lance Taylor <iant@google.com>
10465
8ed814a9
ILT
10466 * options.h (class General_options): Define build_id option.
10467 * layout.h (class Layout): Declare write_build_id, create_note,
10468 create_build_id. Add build_id_note_ member.
10469 * layout.cc: Include <cerrno>, <fcntl.h>, <unistd.h>,
10470 "libiberty.h", "md5.h", "sha1.h".
10471 (Layout::Layout): Initialize eh_frame_data_,
10472 eh_frame_hdr_section_, and build_id_note_.
10473 (Layout::finalize): Call create_build_id.
10474 (Layout::create_note): New function, broken out of
10475 Layout::create_gold_note.
10476 (Layout::create_gold_note): Call create_note.
10477 (Layout::create_build_id): New function.
10478 (Layout::write_build_id): New function.
10479 (Close_task_runner::run): Call write_build_id.
10480
8b105e34
ILT
10481 * x86_64.cc: Correct license to GPLv3.
10482
086a1841
ILT
104832008-03-23 Ian Lance Taylor <iant@google.com>
10484
10485 * options.cc: Include "demangle.h".
10486 (parse_optional_string): New function.
10487 (parse_long_option): Handle takes_optional_argument.
10488 (parse_short_option): Update dash_z initializer. Handle
10489 takes_optional_argument.
10490 (General_options::General_options): Initialize do_demangle_.
10491 (General_options::finalize): Set do_demangle_. Handle demangling
10492 style.
10493 * options.h (parse_optional_string): Declare.
10494 (struct One_option): Add optional_arg field. Update constructor.
10495 Update call constructor calls. Add takes_optional_argument
10496 function.
10497 (DEFINE_var): Add optional_arg__ parameter. Change all callers.
10498 (DEFINE_optional_string): Define.
10499 (General_options::demangle): Change from DEFINE_bool to
10500 DEFINE_optional_string.
10501 (General_options::no_demangle): New function.
10502 (General_options::do_demangle): New function.
10503 (General_options::set_do_demangle): New function.
10504 (General_options::execstack_status_): Move definition to end of
10505 class definition.
10506 (General_options::static_): Likewise.
10507 (General_options::do_demangle_): New field.
10508 * object.cc (big_endian>::get_symbol_location_info): Call
10509 Options::do_demangle, not Options::demangle.
10510 * symtab.cc (demangle): Likewise.
10511
cbb93e63
ILT
105122008-03-22 Ian Lance Taylor <iant@google.com>
10513
10514 * gold.h: Include <cstddef> and <sys/types.h>
10515 * options.h: Include <cstring>.
10516
ec531623
ILT
105172008-03-21 Ian Lance Taylor <iant@google.com>
10518
10519 * Added source code to GNU binutils.
This page took 0.606743 seconds and 4 git commands to generate.