* configure.ac: Add --with-lib-path option. Define LIB_PATH and
[deliverable/binutils-gdb.git] / gold / ChangeLog
CommitLineData
3f3cddf1
ILT
12011-11-02 Ian Lance Taylor <iant@google.com>
2
3 * configure.ac: Add --with-lib-path option. Define LIB_PATH and
4 NATIVE_LINKER.
5 * Makefile.am (AM_CPPFLAGS): Define TOOLLIBDIR.
6 * options.cc (General_options::finalize): Use library search path
7 from configure script if specified. If not native and no sysroot,
8 only search TOOLLIBDIR.
9 * options.h (Search_directory::Search_directory): Change name to
10 const std::string&.
11 (General_options::add_to_library_path_with_sysroot): Change arg to
12 const std::string&.
13 * configure, Makefile.in, config.in: Rebuild.
14
a8e2273b
ILT
152011-11-02 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
16
17 * arm.cc (Target_arm::may_use_v5t_interworking): Check whether
18 we are working around the ARM1176 Erratum.
19 * options.h (General_options::fix_arm1176): Add option.
20 * testsuite/Makefile.am: Add testcases, and keep current ones
21 working.
22 * testsuite/Makefile.in: Regenerate.
23 * testsuite/arm_fix_1176.s: New file.
24 * testsuite/arm_fix_1176.sh: Likewise.
25
cd6eab1c
ILT
262011-11-02 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
27
28 * arm.cc (Target_arm::Target_arm): Remove initialisation of
29 may_use_blx_.
30 (Target_arm::may_use_blx): Remove method.
31 (Target_arm::set_may_use_blx): Likewise.
32 (Target_arm::may_use_v4t_interworking): New method.
33 (Target_arm::may_use_v5t_interworking): Likewise.
34 (Target_arm::may_use_blx_): Remove member variable.
35 (Arm_relocate_functions::arm_branch_common): Check for v5T
36 interworking.
37 (Arm_relocate_functions::thumb_branch_common): Likewise.
38 (Reloc_stub::stub_type_for_reloc): Likewise.
39 (Target_arm::do_finalize_sections): Correct interworking checks.
40 * testsuite/Makefile.am: Add new tests.
41 * testsuite/Makefile.in: Regenerate.
42 * testsuite/arm_farcall_arm_arm.s: New test.
43 * testsuite/arm_farcall_arm_arm.sh: Likewise.
44 * testsuite/arm_farcall_arm_thumb.s: Likewise.
45 * testsuite/arm_farcall_arm_thumb.sh: Likewise.
46 * testsuite/arm_farcall_thumb_arm.s: Likewise.
47 * testsuite/arm_farcall_thumb_arm.sh: Likewise.
48 * testsuite/arm_farcall_thumb_thumb.s: Likewise.
49 * testsuite/arm_farcall_thumb_thumb.sh: Likewise.
50
286adcf4
CC
512011-10-31 Cary Coutant <ccoutant@google.com>
52
53 PR gold/13023
54 * expression.cc (Expression::eval_with_dot): Add
55 is_section_dot_assignment parameter.
56 (Expression::eval_maybe_dot): Likewise. Adjust value when rhs is
57 absolute and assigning to dot within a section.
58 * script-sections.cc
59 (Output_section_element_assignment::set_section_addresses): Pass
60 dot_section to set_if_absolute.
61 (Output_section_element_dot_assignment::finalize_symbols): Pass TRUE
62 as is_section_dot_assignment flag to eval_with_dot.
63 (Output_section_element_dot_assignment::set_section_addresses):
64 Likewise.
65 * script.cc (Symbol_assignment::set_if_absolute): Add dot_section
66 parameter. Also set value if relative to dot_section; set the
67 symbol's output_section.
68 * script.h (Expression::eval_with_dot): Add is_section_dot_assignment
69 parameter. Adjust all callers.
70 (Expression::eval_maybe_dot): Likewise.
71 (Symbol_assignment::set_if_absolute): Add dot_section parameter.
72 Adjust all callers.
73 * testsuite/script_test_2.t: Test assignment of an absolute value
74 to dot within an output section element.
75
9634ed06
CC
762011-10-31 Cary Coutant <ccoutant@google.com>
77
78 * options.h (class General_options): Add --[no-]gnu-unique options.
79 * symtab.cc (Symbol_table::sized_write_globals): Convert
80 STB_GNU_UNIQUE to STB_GLOBAL if --no-gnu-unique.
81
de4101c7
CC
822011-10-31 Cary Coutant <ccoutant@google.com>
83
84 PR gold/13359
85 * i386.cc (Target_i386::Relocate::relocate_tls): Remove
86 unnecessary assertion.
87 * x86_64.cc (Target_x86_64::Relocate::relocate_tls): Likewise.
88
7257cc92
ST
892011-10-31 Sriraman Tallam <tmsriram@google.com>
90
91 * symtab.h (Symbol_table::gc_mark_symbol_for_shlib): Rename to
92 gc_mark_symbol.
93 * symtab.cc (Symbol_table::gc_mark_symbol_for_shlib): Rename to
94 gc_mark_symbol.
95 Change to just keep the section associated with symbol.
96 (Symbol_table::add_from_relobj): Mark symbols as not garbage when
97 they are externally visible and --export-dynamic is turned on.
98 (Symbol_table::gc_mark_dyn_syms): Call gc_mark_symbol.
99
bfc34b3f
ILT
1002011-10-19 Ian Lance Taylor <iant@google.com>
101
102 PR gold/13163
103 * script-sections.cc
104 (Output_section_element_dot_assignment::needs_output_section): New
105 function.
106
ea0d8c47
ILT
1072011-10-19 Ian Lance Taylor <iant@google.com>
108
109 PR gold/13204
110 * layout.cc (Layout::segment_precedes): Don't assert failure if a
111 --section-start option was seen.
112 * options.h (General_options::any_section_start): New function.
113
abd242a9
DM
1142011-10-18 David S. Miller <davem@davemloft.net>
115
116 PR binutils/13301
117 * sparc.cc (Target_sparc::Relocate::reloc_adjust_addr_): New
118 member to track relocation locations that have moved during TLS
119 reloc optimizations.
120 (Target_sparc::Relocate::Relocate): Initialize to NULL.
121 (Target_sparc::Relocate::relocate): Adjust view down by 4
122 bytes if it matches reloc_adjust_addr_.
123 (Target_sparc::Relocate::relocate_tls): Always move the
124 __tls_get_addr call delay slot instruction forward 4 bytes when
125 performing relaxation.
126
bab9090f
CC
1272011-10-18 Cary Coutant <ccoutant@google.com>
128
129 * output.cc (posix_fallocate): Return 0 on success, errno on failure.
130 (Output_file::map_no_anonymous): Check for non-zero
131 return code from posix_fallocate.
132
f7c5b166
CC
1332011-10-17 Cary Coutant <ccoutant@google.com>
134
135 PR gold/13245
136 * plugin.cc (is_visible_from_outside): Check for symbols
137 referenced from dynamic objects.
138 * resolve.cc (Symbol_table::resolve): Don't count references
139 from dynamic objects as references from real ELF files.
140 * testsuite/plugin_test_2.sh: Adjust expected result.
141
b490c0bb
CC
1422011-10-17 Cary Coutant <ccoutant@google.com>
143
144 * gold.cc: Include timer.h.
145 (queue_middle_tasks): Stamp time.
146 (queue_final_tasks): Likewise.
147 * main.cc (main): Store timer in parameters. Print timers
148 for each pass.
149 * parameters.cc (Parameters::Parameters): Initialize timer_.
150 (Parameters::set_timer): New function.
151 (set_parameters_timer): New function.
152 * parameters.h (Parameters::set_timer): New function.
153 (Parameters::timer): New function.
154 (Parameters::timer_): New data member.
155 (set_parameters_timer): New function.
156 * timer.cc (Timer::stamp): New function.
157 (Timer::get_pass_time): New function.
158 * timer.h (Timer::stamp): New function.
159 (Timer::get_pass_time): New function.
160 (Timer::pass_times_): New data member.
161
f475cf7b
CC
1622011-10-17 Cary Coutant <ccoutant@google.com>
163
164 * readsyms.cc (Read_symbols::run): Don't queue an unblocker
165 task for members of lib groups.
166
cdd7e244
CC
1672011-10-17 Cary Coutant <ccoutant@google.com>
168
169 PR gold/13288
4f95c8b4 170 * fileread.cc (File_read::find_view): Add assert.
cdd7e244
CC
171 (File_read::make_view): Move bounds check (replace with assert)...
172 (File_read::find_or_make_view): ... to here.
173
dfb45471
CC
1742011-10-12 Cary Coutant <ccoutant@google.com>
175
4f95c8b4 176 * output.cc (Output_file::open_base_file): Handle case where
dfb45471
CC
177 ::read returns less than requested size.
178
53bbcc1b
CC
1792011-10-10 Cary Coutant <ccoutant@google.com>
180
4f95c8b4 181 * incremental.cc (Sized_relobj_incr::Sized_relobj_incr):
53bbcc1b
CC
182 Initialize defined_count_.
183 (Sized_relobj_incr::do_add_symbols): Count defined symbols.
184 (Sized_relobj_incr::do_get_global_symbol_counts): Rewrite.
185 (Sized_incr_dynobj::Sized_incr_dynobj): Initialize defined_count_.
186 (Sized_incr_dynobj::do_add_symbols): Count defined symbols.
187 (Sized_incr_dynobj::do_get_global_symbol_counts): Rewrite.
4f95c8b4 188 * incremental.h (Sized_relobj_incr::defined_count_): New data
53bbcc1b
CC
189 member.
190 (Sized_incr_dynobj::defined_count_): New data member.
4f95c8b4 191 * plugin.cc (Sized_pluginobj::do_get_global_symbol_counts):
53bbcc1b
CC
192 Return zeroes instead of internal error.
193
397b129b
CC
1942011-10-10 Cary Coutant <ccoutant@google.com>
195
196 PR gold/13249
4f95c8b4 197 * output.cc (Output_reloc::Output_reloc): Add use_plt_offset flag.
397b129b 198 (Output_reloc::symbol_value): Return PLT offset if flag is set.
4f95c8b4 199 * output.h (class Output_reloc): Add use_plt_offset flag.
397b129b
CC
200 (Output_reloc::type_): Adjust size of bit field.
201 (Output_reloc::use_plt_offset_): New bit field.
202 (class Output_data_reloc): Adjust all calls to Output_reloc_type.
203 (Output_data_reloc::add_local_relative): (RELA only) Add use_plt_offset
204 flag. Adjust all callers.
4f95c8b4 205 * x86_64.cc (Target_x86_64::Scan::local): Check for IFUNC when
397b129b
CC
206 creating RELATIVE relocations.
207
d5698657
NC
2082011-10-10 Nick Clifton <nickc@redhat.com>
209
210 * po/es.po: Updated Spanish translation.
211 * po/fi.po: Updated Finnish translation.
212
6a59a5c2
DN
2132011-10-03 Diego Novillo <dnovillo@google.com>
214
215 * options.cc (parse_uint): Fix dereference of RETVAL.
216
f0558624
ST
2172011-09-29 Sriraman Tallam <tmsriram@google.com>
218
219 * layout.h (section_order_map_): New member.
220 (get_section_order_map): New member function.
221 * output.cc (Output_section::add_input_section): Check for patterns
222 only when --section-ordering-file is specified.
223 * gold.cc (queue_middle_tasks): Delay updating order of sections till
224 output_sections have been formed.
225 * layout.cc (Layout_Layout): Initialize section_order_map_.
226 * plugin.cc (update_section_order): Store order in order_map. Do not
227 update the order.
228 * testsuite/Makefile.am: Add test case for plugin_final_layout.
229 * testsuite/Makefile.in: Regenerate.
230 * testsuite/plugin_section_order.c: New file.
231 * testsuite/plugin_final_layout.cc: New file.
232 * testsuite/plugin_final_layout.sh: New file.
233
a7dac153
CC
2342011-09-29 Cary Coutant <ccoutant@google.com>
235
4f95c8b4 236 * incremental.cc (Sized_incremental_binary::do_process_got_plt):
a7dac153 237 Check for NULL.
4f95c8b4 238 * symtab.cc (Symbol_table::add_from_relobj): Ignore version
a7dac153
CC
239 symbols during incremental update.
240 (Symbol_table::add_from_dynobj): Likewise.
241
eebd87a5
ILT
2422011-09-27 Viktor Kutuzov <vkutuzov@accesssoftek.com>
243 Ian Lance Taylor <iant@google.com>
244
245 * symtab.cc (Symbol_table::define_special_symbol): Always
246 canonicalize version string.
247
403a3331
CC
2482011-09-26 Cary Coutant <ccoutant@google.com>
249
4f95c8b4
CC
250 * gold.cc (queue_initial_tasks): Move option checks ...
251 * options.cc (General_options::finalize): ... to here. Disable
403a3331
CC
252 some options; make others fatal.
253
235061c2
CC
2542011-09-26 Cary Coutant <ccoutant@google.com>
255
256 gcc PR lto/47247
257 * plugin.cc (get_symbols_v2): New function.
258 (Plugin::load): Add LDPT_GET_SYMBOLS_V2.
259 (is_referenced_from_outside): New function.
260 (Pluginobj::get_symbol_resolution_info): Add version parameter, return
261 LDPR_PREVAILING_DEF_IRONLY_EXP when using new version.
262 (get_symbols): Pass version parameter.
263 (get_symbols_v2): New function.
264 * plugin.h (Pluginobj::get_symbol_resolution_info): Add version
265 parameter.
266 * testsuite/plugin_test.c (get_symbols_v2): New static variable.
267 (onload): Add LDPT_GET_SYMBOLS_V2.
268 (all_symbols_read_hook): Use get_symbols_v2; check for
269 LDPR_PREVAILING_DEF_IRONLY_EXP.
270 * testsuite/plugin_test_3.sh: Update expected results.
271
dc87f620
ILT
2722011-09-23 Simon Baldwin <simonb@google.com>
273
274 * configure.ac: Add new --with-gold-ldadd and --with-gold-ldflags
275 configuration options.
276 * configure: Regenerate.
277 * Makefile.am: Handle GOLD_LDADD and GOLD_LDFLAGS.
278 * Makefile.in: Regenerate.
279 * testsuite/Makefile.in: Regenerate.
280
a8279f82
ST
2812011-09-19 Sriraman Tallam <tmsriram@google.com>
282
283 * plugin.h (should_defer_layout): Modify to check for any_claimed_.
284
0c9350c8
CC
2852011-09-19 Cary Coutant <ccoutant@google.com>
286
287 * incremental.cc (can_incremental_update): Fix typo in comment.
288 * incremental.h (can_incremental_update): Likewise.
289
aa06ae28
CC
2902011-09-18 Cary Coutant <ccoutant@google.com>
291
292 * incremental.cc (can_incremental_update): New function.
293 * incremental.h (can_incremental_update): New function.
294 * layout.cc (Layout::init_fixed_output_section): Call it.
295 (Layout::make_output_section): Don't allow patch space in .eh_frame.
296 * object.cc (Sized_relobj_file::do_layout): Call
297 can_incremental_update.
298
ebb300b2
CC
2992011-09-13 Cary Coutant <ccoutant@google.com>
300
301 * configure.ac: Check for glibc support for gnu_indirect_function
302 support with static linking, setting automake conditional
303 IFUNC_STATIC.
304 * Makefile.in: Regenerate.
305 * configure: Regenerate.
306
307 * testsuite/Makefile.am (ifuncmain1static, ifuncmain2static)
308 (ifuncmain4static, ifuncmain5static, ifuncmain7static): Add check
309 for IFUNC_STATIC.
310 * testsuite/Makefile.in: Regenerate.
311
1206d0d5
CC
3122011-09-13 Cary Coutant <ccoutant@google.com>
313
314 * incremental.cc (Sized_relobj_incr::do_layout): Call
315 report_comdat_group for kept comdat sections.
316 * testsuite/Makefile.am (incremental_comdat_test_1): New test.
317 * testsuite/Makefile.in: Regenerate.
318 * testsuite/incr_comdat_test_1.cc: New source file.
319 * testsuite/incr_comdat_test_2_v1.cc: New source file.
320 * testsuite/incr_comdat_test_2_v2.cc: New source file.
321 * testsuite/incr_comdat_test_2_v3.cc: New source file.
322
40b29874
ILT
3232011-09-13 Ian Lance Taylor <iant@google.com>
324
325 * object.cc (Sized_relobj_file::do_layout): Remove unused local
326 variable external_symbols_offset.
327
1b045aac
ILT
3282011-09-12 Ian Lance Taylor <iant@google.com>
329
330 * object.cc (Sized_relobj_file::do_layout): Remove assertion which
331 triggered if object has no symbols.
332
24c6c55a
DM
3332011-09-09 David S. Miller <davem@davemloft.net>
334
335 * output.cc (Output_fill_debug_info::do_write): Use Swap_unaligned.
336 (Output_fill_debug_line::do_write): Likewise.
337
66570254
CC
3382011-08-29 Cary Coutant <ccoutant@google.com>
339
340 * output.cc: (Output_fill_debug_info::do_minimum_hole_size): Add
341 casts to match formatting specs.
342 (Output_fill_debug_line::do_minimum_hole_size): Likewise.
343
8ea8cd50
CC
3442011-08-26 Cary Coutant <ccoutant@google.com>
345
346 * layout.cc (Free_list::allocate): Provide guarantee of minimum
347 remaining hole size when allocating.
348 (Layout::make_output_section): Set fill methods for debug sections.
349 * layout.h (Free_list::Free_list_node): Move from private to
350 public.
351 (Free_list::set_min_hole_size): New function.
352 (Free_list::begin, Free_list::end): New functions.
353 (Free_list::min_hole_): New data member.
354 * output.cc: Include dwarf.h.
355 (Output_fill_debug_info::do_minimum_hole_size): New function.
356 (Output_fill_debug_info::do_write): New function.
357 (Output_fill_debug_line::do_minimum_hole_size): New function.
358 (Output_fill_debug_line::do_write): New function.
359 (Output_section::Output_section): Initialize new data member.
360 (Output_section::set_final_data_size): Ensure patch space is larger
361 than minimum hole size.
362 (Output_section::do_write): Fill holes in debug sections.
363 * output.h (Output_fill): New class.
364 (Output_fill_debug_info): New class.
365 (Output_fill_debug_line): New class.
366 (Output_section::set_free_space_fill): New function.
367 (Output_section::free_space_fill_): New data member.
368 * testsuite/Makefile.am (incremental_test_3): Add
369 --incremental-patch option.
370 (incremental_test_4): Likewise.
371 (incremental_test_5): Likewise.
372 (incremental_test_6): Likewise.
373 (incremental_copy_test): Likewise.
374 (incremental_common_test_1): Likewise.
375 * testsuite/Makefile.in: Regenerate.
376
7cf80422
NC
3772011-08-26 Nick Clifton <nickc@redhat.com>
378
379 * po/es.po: Updated Spanish translation.
380
c3f7b0e5
CC
3812011-08-01 Cary Coutant <ccoutant@google.com>
382
383 * gold/testsuite/Makefile.am (justsyms_exec): New testcase.
384 * gold/testsuite/Makefile.in: Regenerate.
385 * gold/testsuite/justsyms_exec.c: New source file.
386 * gold/testsuite/justsyms_lib.c: New source file.
387
9590bf25
CC
3882011-08-01 Cary Coutant <ccoutant@google.com>
389
390 * layout.cc (Layout::set_segment_offsets): Don't realign text
391 segment if -Ttext was specified.
392 * object.cc (Sized_relobj_file::Sized_relobj_file): Store the ELF
393 file type.
394 * object.h (Sized_relobj_file::e_type): New function.
395 (Sized_relobj_file::e_type_): New data member.
396 * symtab.cc (Symbol_table::add_from_relobj): Don't add section
397 base address for ET_EXEC files.
398 * target.cc (Target::do_make_elf_object_implementation): Allow
399 ET_EXEC files with --just-symbols option.
400
dcd8d12e
CC
4012011-07-28 Cary Coutant <ccoutant@google.com>
402
403 * workqueue-internal.h (Workqueue_threader::should_cancel_thread):
404 Add thread_number parameter.
405 (Workqueue_threader_threadpool::should_cancel_thread): Likewise.
406 * workqueue-threads.cc
407 (Workqueue_threader_threadpool::should_cancel_thread): Cancel
408 current thread if its thread number is greater than desired thread
409 count.
410 * workqueue.cc (Workqueue_threader_single::should_cancel_thread):
411 Add thread_number parameter.
412 (Workqueue::should_cancel_thread): Likewise.
413 (Workqueue::find_runnable_or_wait): Pass thread_number to
414 should_cancel_thread.
415 * workqueue.h (Workqueue::should_cancel_thread): Add thread_number
416 parameter.
417
804eb480
ST
4182011-07-22 Sriraman Tallam <tmsriram@google.com>
419
420 * symtab.cc (Symbol_table::add_from_relobj): Mark symbol as referenced
421 only after checking if it cannot be forced local.
422 * symtab.h (is_externally_visible): Check if the symbol is not forced
423 local.
424
f1ddb600
ILT
4252011-07-15 Ian Lance Taylor <iant@google.com>
426
427 * options.h (class General_options): Add --print-output-format.
428 Move -EL next to -EB, for better --help output.
429 * target-select.cc: Include <cstdio>, "options.h", and
430 "parameters.h".
431 (Target_selector::do_target_bfd_name): New function.
432 (print_output_format): New function.
433 * target-select.h (class Target_selector): Update declarations.
434 (Target_selector::target_bfd_name): New function.
435 (print_output_format): Declare.
436 * main.cc: Include "target-select.h".
437 (main): Handle --print-output-format.
438 * gold.cc: Include "target-select.h".
439 (queue_initial_tasks): Handle --print-output-format when there are
440 no input files.
441 * parameters.cc (parameters_force_valid_target): Give a better
442 error message if -EB/-EL does not match target.
443 * freebsd.h (Target_selector_freebsd::do_target_bfd_name): New
444 function.
445
7d172687
ILT
4462011-07-15 Ian Lance Taylor <iant@google.com>
447
448 * i386.cc (class Output_data_plt_i386): Add layout_ field.
449 (Output_data_plt_i386::Output_data_plt_i386): Initialize layout_.
450 (Output_data_plt_i386::do_write): Write address of .dynamic
451 section to first entry in .got.plt section.
452 * x86_64.cc (class Output_data_plt_x86_64): Add layout_ field.
453 (Output_data_plt_x86_64::Output_data_plt_x86_64) [both versions]:
454 Initialize layout_.
455 (Output_data_plt_x86_64::do_write): Write address of .dynamic
456 section to first entry in .got.plt section.
457 * layout.h (Layout::dynamic_section): New function.
458
e9552f7e
ST
4592011-07-13 Sriraman Tallam <tmsriram@google.com>
460
461 * archive.cc (Archive::get_elf_object_for_member): Add extra parameter
462 to claim_file call.
463 * layout.cc (Layout::Layout): Initialize section_ordering_specified_,
464 input_section_position_, and input_section_glob_.
465 (read_layout_from_file): Call function section_ordering_specified.
466 * layout.h (is_section_ordering_specified): New function.
467 (section_ordering_specified): New function.
468 (section_ordering_specified_): New boolean member.
469 * main.cc(main): Call load_plugins after layout object is defined.
470 * output.cc (Output_section::add_input_section): Use
471 function section_ordering_specified to check if section ordering is
472 needed.
473 * output.cc (Output_section::add_relaxed_input_section): Use
474 function section_ordering_specified to check if section ordering is
475 needed.
476 (Output_section::update_section_layout): New function.
477 (Output_section::sort_attached_input_sections): Check if input section
478 must be reordered.
479 * output.h (Output_section::update_section_layout): New function.
480 * plugin.cc (get_section_count): New function.
481 (get_section_type): New function.
482 (get_section_name): New function.
483 (get_section_contents): New function.
484 (update_section_order): New function.
485 (allow_section_ordering): New function.
486 (Plugin::load): Add the new interfaces to the transfer vector.
487 (Plugin_manager::load_plugins): New parameter.
488 (Plugin_manager::all_symbols_read): New parameter.
489 (Plugin_manager::claim_file): New parameter. Save the elf object for
490 unclaimed objects.
491 (Plugin_manager::get_elf_object): New function.
492 (Plugin_manager::get_view): Change to directly use the bool to check
493 if get_view is called from claim_file_hook.
494 * plugin.h (input_objects): New function
495 (Plugin__manager::load_plugins): New parameter.
496 (Plugin_manager::claim_file): New parameter.
497 (Plugin_manager::get_elf_object): New function.
498 (Plugin_manager::in_claim_file_handler): New function.
499 (Plugin_manager::in_claim_file_handler_): New member.
500 (layout): New function.
501 * readsyms.cc (Read_symbols::do_read_symbols): Call the claim_file
502 handler with an extra parameter. Make the elf object before calling
503 claim_file handler.
504 * testsuite/plugin_test.c (get_section_count): New function pointer.
505 (get_section_type): New function pointer.
506 (get_section_name): New function pointer.
507 (get_section_contents): New function pointer.
508 (update_section_order): New function pointer.
509 (allow_section_ordering): New function pointer.
510 (onload): Check if the new interfaces exist.
511
9446efde
ILT
5122011-07-13 Ian Lance Taylor <iant@google.com>
513
514 * i386.cc (Target_i386::got_section): If -z now, make .got.plt a
515 relro section.
516 * x86_64.cc (Target_x86_64::got_section): Likewise.
517 * testsuite/Makefile.am (check_PROGRAMS): Add relro_now_test.
518 (relro_now_test_SOURCES): New variable.
519 (relro_now_test_DEPENDENCIES): New variable.
520 (relro_now_test_LDFLAGS): New variable.
521 (relro_now_test_LDADD): New variable.
522 (relro_now_test.so): New target.
523 * testsuite/Makefile.in: Rebuild.
524
07aa62f2
ILT
5252011-07-12 Ian Lance Taylor <iant@google.com>
526
527 PR gold/12980
528 * i386.cc (Target_i386::Scan::global): For a GOT reloc, use a
529 GLOB_DAT relocation rather than a RELATIVE relocation for a
530 protected symbol when creating a shared library.
531 * x86_64.cc (Target_x86_64::Scan::global): Likewise.
532 * testsuite/protected_1.cc (f2, get_f2_addr): New functions.
533 * testsuite/protected_main_1.cc (main): Test that protected
534 function has same address.
535
e2153196
ILT
5362011-07-11 Ian Lance Taylor <iant@google.com>
537
538 PR gold/12979
539 * options.h (class General_options): Add -Bgroup.
540 * options.cc (General_options::finalize): If -Bgroup is set,
541 default to --unresolved-symbols=report-all.
542 * layout.cc (Layout::finish_dynamic_section): Implement -Bgroup.
543 * target-reloc.h (issue_undefined_symbol_error): Handle
544 --unresolved-symbols=report-all.
545
6daf5215
ILT
5462011-07-08 Ian Lance Taylor <iant@google.com>
547
548 PR gold/11985
549 * layout.cc (Layout::create_initial_dynamic_sections): Don't crash
550 if linker script discards key sections.
551 (Layout::create_dynamic_symtab): Likewise.
552 (Layout::assign_local_dynsym_offsets): Likewise.
553 (Layout::sized_create_version_sections): Likewise.
554 (Layout::create_interp): Likewise.
555 (Layout::finish_dynamic_section): Likewise.
556 (Layout::set_dynamic_symbol_size): Likewise.
557
beabb2c6
ILT
5582011-07-08 Ian Lance Taylor <iant@google.com>
559
560 PR gold/12386
561 * options.h (class General_options): Add --unresolved-symbols.
562 * target-reloc.h (issue_undefined_symbol_error): Check
563 --unresolved-symbols. Add comments.
564
9c16daf1
ILT
5652011-07-08 Ian Lance Taylor <iant@google.com>
566
567 * testsuite/odr_violation2.cc (Ordering::operator()): Make
568 expression more complex.
569
191f1a2d
ILT
5702011-07-08 Ian Lance Taylor <iant@google.com>
571
572 PR gold/11317
573 * target-reloc.h (issue_undefined_symbol_error): New inline
574 function, broken out of relocate_section.
575 (relocate_section): Call issue_undefined_symbol_error.
576 * i386.cc (Target_i386::Relocate::relocate_tls): Don't crash if
577 there is no TLS segment if we are about to issue an undefined
578 symbol error.
579 * x86_64.cc (Target_x86_64::relocate_tls): Likewise.
580
62855347
ILT
5812011-07-08 Ian Lance Taylor <iant@google.com>
582
583 PR gold/12279
584 * resolve.cc (Symbol_table::should_override): Add fromtype
585 parameter. Change all callers. Give error when linking together
586 TLS and non-TLS symbol.
587 (Symbol_table::should_override_with_special): Add fromtype
588 parameter. Change all callers.
589 * i386.cc (Target_i386::Relocate::relocate_tls): Don't crash if
590 there is no TLS segment if we have reported some errors.
591 * x86_64.cc (Target_x86_64::relocate_tls): Likewise.
592
67181c72
ILT
5932011-07-08 Ian Lance Taylor <iant@google.com>
594
595 PR gold/12372
596 * target.h (Target::plt_address_for_global): New function.
597 (Target::plt_address_for_local): New function.
598 (Target::plt_section_for_global): Remove.
599 (Target::plt_section_for_local): Remove.
600 (Target::do_plt_address_for_global): New virtual function.
601 (Target::do_plt_address_for_local): New virtual function.
602 (Target::do_plt_section_for_global): Remove.
603 (Target::do_plt_section_for_local): Remove.
604 (Target::register_global_plt_entry): Add Symbol_table and Layout
605 parameters.
606 * output.cc (Output_data_got::Got_entry::write): Use
607 plt_address_for_global and plt_address_for_local.
608 * layout.cc (Layout::add_target_dynamic_tags): Use size and
609 address of output section.
610 * i386.cc (class Output_data_plt_i386): Add irelative_rel_,
611 got_irelative_, and irelative_count_ fields. Update
612 declarations.
613 (Output_data_plt_i386::has_irelative_section): New function.
614 (Output_data_plt_i386::entry_count): Add irelative_count_.
615 (Output_data_plt_i386::set_final_data_size): Likewise.
616 (class Target_i386): Add got_irelative_ and rel_irelative_
617 fields. Update declarations.
618 (Target_i386::Target_i386): Initialize new fields.
619 (Target_i386::do_plt_address_for_global): New function replacing
620 do_plt_section_for_global.
621 (Target_i386::do_plt_address_for_local): New function replacing
622 do_plt_section_for_local.
623 (Target_i386::got_section): Create got_irelative_.
624 (Target_i386::rel_irelative_section): New function.
625 (Output_data_plt_i386::Output_data_plt_i386): Initialize new
626 fields. Don't define __rel_iplt_{start,end}.
627 (Output_data_plt_i386::add_entry): Add symtab and layout
628 parameters. Change all callers. Use different PLT and GOT for
629 IFUNC symbols.
630 (Output_data_plt_i386::add_local_ifunc_entry): Add symtab and
631 layout parameters. Change all callers. Use different PLT and
632 GOT.
633 (Output_data_plt_i386::rel_tls_desc): Fix formatting.
634 (Output_data_plt_i386::rel_irelative): New function.
635 (Output_data_plt_i386::address_for_global): New function.
636 (Output_data_plt_i386::address_for_local): New function.
637 (Output_data_plt_i386::do_write): Write out IRELATIVE area. Use
638 IRELATIVE GOT when changing IFUNC GOT entries.
639 (Target_i386::Scan::global): Use IRELATIVE GOT for IRELATIVE
640 reloc.
641 (Target_i386::do_finalize_sections): Create the __rel_iplt symbols
642 if we didn't create an IRELATIVE GOT.
643 (Target_i386::Relocate::relocate): Use plt_address_for_global and
644 plt_address_for_local.
645 (Target_i386::do_dynsym_value): Use plt_address_for_global.
646 * x86_64.cc (class Output_data_plt_x86_64): Add irelative_rel_,
647 got_irelative_, and irelative_count_ fields. Update
648 declarations.
649 (Output_data_plt_x86_64::Output_data_plt_x86_64) [both versions]:
650 Initialize new fields. Remove symtab parameter. Change all
651 callers.
652 (Output_data_plt_x86_64::get_tlsdesc_plt_offset): Add
653 irelative_count_.
654 (Output_data_plt_x86_64::has_irelative_section): New function.
655 (Output_data_plt_x86_64::entry_count): Add irelative_count_.
656 (class Target_x86_64): Add got_irelative_ and rel_irelative_
657 fields. Update declarations.
658 (Target_x86_64::Target_x86_64): Initialize new fields.
659 (Target_x86_64::do_plt_address_for_global): New function replacing
660 do_plt_section_for_global.
661 (Target_x86_64::do_plt_address_for_local): New function replacing
662 do_plt_section_for_local.
663 (Target_x86_64::got_section): Create got_irelative_.
664 (Target_x86_64::rela_irelative_section): New function.
665 (Output_data_plt_x86_64::init): Remove symtab parameter. Change
666 all callers. Don't create __rel_iplt_{start,end}.
667 (Output_data_plt_x86_64::add_entry): Add symtab and layout
668 parameters. Change all callers. Use different PLT and GOT for
669 IFUNC symbols.
670 (Output_data_plt_x86_64::add_local_ifunc_entry): Add symtab and
671 layout parameters. Change all callers. Use different PLT and
672 GOT.
673 (Output_data_plt_x86_64::add_relocation): Add symtab and layout
674 parameters. Change all callers. Use different PLT and GOT for
675 IFUNC symbols.
676 (Output_data_plt_x86_64::rela_tlsdesc): Fix formatting.
677 (Output_data_plt_x86_64::rela_irelative): New function.
678 (Output_data_plt_x86_64::address_for_global): New function.
679 (Output_data_plt_x86_64::address_for_local): New function.
680 (Output_data_plt_x86_64::set_final_data_size): Likewise.
681 (Output_data_plt_x86_64::do_write): Write out IRELATIVE area.
682 (Target_x86_64::init_got_plt_for_update): Create got_irelative_.
683 (Target_x86_64::register_global_plt_entry): Add symtab and layout
684 parameters.
685 (Target_x86_64::Scan::global): Use IRELATIVE GOT for IRELATIVE
686 reloc.
687 (Target_x86_64::do_finalize_sections): Create the __rela_iplt
688 symbols if we didn't create an IRELATIVE GOT.
689 (Target_x86_64::Relocate::relocate): Use plt_address_for_global and
690 plt_address_for_local.
691 (Target_x86_64::do_dynsym_value): Use plt_address_for_global.
692 * testsuite/ifuncvar1.c: New test file.
693 * testsuite/ifuncvar2.c: New test file.
694 * testsuite/ifuncvar3.c: New test file.
695 * testsuite/Makefile.am (check_PROGRAMS): Add ifuncvar.
696 (ifuncvar1_pic.o, ifuncvar2_pic.o, ifuncvar.so): New targets.
697 (ifuncvar_SOURCES, ifuncvar_DEPENDENCIES): New variables.
698 (ifuncvar_LDFLAGS, ifuncvar_LDADD): New variables.
699 * testsuite/Makefile.in: Rebuild.
700
33c15b45
CC
7012011-07-07 Cary Coutant <ccoutant@google.com>
702
703 * testsuite/Makefile.am (two_file_test_1_v1_ndebug.o): New target.
704 (two_file_test_1_ndebug.o): Likewise.
705 (two_file_test_1b_ndebug.o): Likewise.
706 (two_file_test_2_ndebug.o): Likewise.
707 (two_file_test_main_ndebug.o): Likewise.
708 (incremental_test_2): Link with no-debug versions.
709
f48b5fb7
CC
7102011-07-06 Cary Coutant <ccoutant@google.com>
711
712 * gold/incremental.cc
713 (Output_section_incremental_inputs::write_info_blocks): Check for
714 hidden and internal symbols.
715
221597a5
CC
7162011-07-06 Cary Coutant <ccoutant@google.com>
717
718 * incremental.cc (Sized_incremental_binary::do_file_has_changed):
719 Check disposition for startup file.
720 (Incremental_inputs::report_command_line): Ignore
721 --incremental-startup-unchanged option.
722 * options.cc (General_options::parse_incremental_startup_unchanged):
723 New function.
724 (General_options::General_options): Initialize new data member.
725 * options.h (Incremental_disposition): Add INCREMENTAL_STARTUP.
726 (General_options): Add --incremental-startup-unchanged option.
727 (General_options::incremental_startup_disposition): New function.
728 (General_options::incremental_startup_disposition_): New data member.
729
e24719f6
CC
7302011-07-06 Cary Coutant <ccoutant@google.com>
731
732 * incremental.cc (Sized_incremental_binary::setup_readers): Pass
733 input file index to Script_info ctor.
734 (Sized_incremental_binary::do_file_has_changed): Find the
735 command-line argument for files named in scripts.
736 * incremental.h (Script_info::Script_info): New ctor
737 with input file index.
738 (Script_info::input_file_index): New function.
739 (Script_info::input_file_index_): New data member.
740 (Incremental_binary::get_library): Add const.
741 (Incremental_binary::get_script_info): Add const.
742 * readsyms.cc (Read_member::is_runnable): Check for this_blocker_.
743 * testsuite/Makefile.am (incremental_test_5): New test case.
744 (incremental_test_6): New test case.
745 * testsuite/Makefile.in: Regenerate.
746
8f7c81e8
CC
7472011-07-06 Cary Coutant <ccoutant@google.com>
748
749 * incremental.cc (Sized_incremental_binary::do_check_inputs): Add
750 debug output when command lines differ.
751
9fbd3822
CC
7522011-07-06 Cary Coutant <ccoutant@google.com>
753
754 * incremental.cc (Incremental_inputs::report_command_line): Ignore
755 --incremental-patch option.
756 * layout.cc (Free_list::allocate): Extend allocation beyond original
757 end if enabled.
758 (Layout::make_output_section): Mark sections that should get
759 patch space.
760 * options.cc (parse_percent): New function.
761 * options.h (parse_percent): New function.
762 (DEFINE_percent): New macro.
763 (General_options): Add --incremental-patch option.
764 * output.cc (Output_section::Output_section): Initialize new data
765 members.
766 (Output_section::add_input_section): Print section name when out
767 of patch space.
768 (Output_section::add_output_section_data): Likewise.
769 (Output_section::set_final_data_size): Add patch space when
770 doing --incremental-full.
771 (Output_section::do_reset_address_and_file_offset): Remove patch
772 space.
773 (Output_segment::set_section_list_addresses): Print debug output
774 only if --incremental-update.
775 * output.h (Output_section::set_is_patch_space_allowed): New function.
776 (Output_section::is_patch_space_allowed_): New data member.
777 (Output_section::patch_space_): New data member.
778 * parameters.cc (Parameters::incremental_full): New function.
779 * parameters.h (Parameters::incremental_full): New function
780 * testsuite/Makefile.am (incremental_test_2): Add test for
781 --incremental-patch option.
782 * testsuite/Makefile.in: Regenerate.
783 * testsuite/two_file_test_1_v1.cc (t1, t2, t3): Add comments.
784 (t18): Remove function body.
785
f6cccc2c
DK
7862011-07-05 Doug Kwan <dougkwan@google.com>
787
788 PR gold/12771
789 * arm.cc (Arm_relocate_functions::abs8): Use int32_t for addend and
790 Arm_Address type for relocation result.
791 (Arm_relocate_functions::abs16): Use unaligned access. Also fix
792 overflow check.
793 (Arm_relocate_functions::abs32): Use unaligned access.
794 (Arm_relocate_functions::rel32): Ditto.
795 (Arm_relocate_functions::prel31): Ditto.
796 (Arm_exidix_cantunwind::do_fixed_endian_write): Ditto.
797 * testsuite/Makefile.am: Add new test arm_unaligned_reloc for unaligned
798 static data relocations.
799 * testsuite/Makefile.in: Regnerate.
800 * testsuite/arm_unaligned_reloc.{s,sh}: New files.
801
28a13fec
ILT
8022011-07-05 Ian Lance Taylor <iant@google.com>
803
804 PR gold/12392
805 * i386.cc (Target_i386::do_finalize_sections): Define __rel_iplt
806 symbols if necessary.
807 * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
808
24d47b34
ILT
8092011-07-05 Ian Lance Taylor <iant@google.com>
810
811 PR gold/12952
812 * resolve.cc (Symbol::override_base_with_special): Simply override
813 version with special symbol version, ignoring previous version.
814
41f9cbbe
ILT
8152011-07-05 Ian Lance Taylor <iant@google.com>
816
817 * object.cc (Sized_relobj_file::include_section_group): Add
818 information to comment about signature location.
819
886288f1
ILT
8202011-07-02 Ian Lance Taylor <iant@google.com>
821
822 PR gold/12957
823 * options.h (class General_options): Add -f and -F.
824 * options.cc (General_options::finalize): Fatal error if -f/-F
825 are used without -shared.
826 * layout.cc (Layout::finish_dynamic_section): Implement -f/-F.
827
ae3a6d4f
ILT
8282011-07-02 Ian Lance Taylor <iant@google.com>
829
830 * dirsearch.cc (Dir_cache::read_files): Ignore ENOTDIR errors.
831
21131061
ILT
8322011-07-01 Ian Lance Taylor <iant@google.com>
833
834 PR gold/12525
835 PR gold/12952
836 * resolve.cc (Symbol::override_base_with_special): Don't override
837 the version if the overriding symbol has a different name.
838 * dynobj.cc (Versions::add_def): Add dynpool parameter. Change
839 all callers. If we give an error about an undefined version,
840 define the base version if necessary.
841 * dynobj.h (class Versions): Update declaration.
842 * testsuite/weak_alias_test_5.cc: New file.
843 * testsuite/weak_alias_test.script: New file.
844 * testsuite/weak_alias_test_main.cc: Check that versioned_symbol
845 and versioned_alias have the right value, and call t2.
846 * testsuite/Makefile.am (weak_alias_test_DEPENDENCIES): Add
847 weak_alias_test_5.so.
848 (weak_alias_test_LDADD): Likewise.
849 (weak_alias_test_5_pic.o, weak_alias_test_5.so): New targets.
850 * testsuite/Makefile.in: Rebuild.
851
611062c0
ILT
8522011-07-01 Ian Lance Taylor <iant@google.com>
853
854 PR gold/12525
855 * options.h (class General_options): Support -z notext.
856 * testsuite/Makefile.am (two_file_shared_1_nonpic.so): Use
857 -Wl,-z,notext.
858 (two_file_shared_nonpic.so): Likewise.
859 (two_file_shared_mixed.so): Likewise.
860 (two_file_shared_mixed_1.so): Likewise.
861 (weak_undef_lib_nonpic.so): Likewise.
862 (alt/weak_undef_lib_nonpic.so): Likewise.
863 (tls_test_shared_nonpic.so): Likewise.
864 * testsuite/Makefile.in: Rebuild.
865
328c7c2f
ILT
8662011-07-01 Ian Lance Taylor <iant@google.com>
867
868 PR gold/12525
869 * configure.ac: Test whether static linking works, setting
870 the automake conditional HAVE_STATIC.
871 * testsuite/Makefile.am: Disable tests using -static if
872 HAVE_STATIC is not true.
873 * configure, testsuite/Makefile.in: Rebuild.
874
02d7cd44
ILT
8752011-07-01 Ian Lance Taylor <iant@google.com>
876
877 PR gold/12525
878 * ehframe.cc (Eh_frame_hdr::get_fde_pc): Handle DW_EH_PE_datarel.
879 Assert if we see DW_EH_PE_indirect.
880 * target.h (Target::ehframe_datarel_base): New function.
881 (Target::do_ehframe_datarel_base): New target function.
882 * i386.cc (Target_i386::do_ehframe_datarel_base): New function.
883 * x86_64.cc (Target_x86_64::do_ehframe_datarel_base): New
884 function.
885
07a60597
ILT
8862011-07-01 Ian Lance Taylor <iant@google.com>
887
888 PR gold/12571
889 * options.h (class General_options): Add
890 --ld-generated-unwind-info.
891 * ehframe.cc (Fde::write): Add address parameter. Change all
892 callers. If associated with PLT, fill in address and size.
893 (Cie::set_output_offset): Only add merge mapping if there is an
894 object.
895 (Cie::write): Add address parameter. Change all callers.
896 (Eh_frame::add_ehframe_for_plt): New function.
897 * ehframe.h (class Fde): Update declarations. Move shndx_ and
898 input_offset_ fields into union u_, with new plt field.
899 (Fde::Fde): Adjust for new union field.
900 (Fde::Fde) [Output_data version]: New constructor.
901 (Fde::add_mapping): Only add merge mapping if there is an object.
902 (class Cie): Update declarations.
903 (class Eh_frame): Declare add_ehframe_for_plt.
904 * layout.cc (Layout::layout_eh_frame): Break out code into
905 make_eh_frame_section, and call it.
906 (Layout::make_eh_frame_section): New function.
907 (Layout::add_eh_frame_for_plt): New function.
908 * layout.h (class Layout): Update declarations.
909 * merge.cc (Merge_map::add_mapping): Add assertion.
910 * i386.cc: Include "dwarf.h".
911 (class Output_data_plt_i386): Make first_plt_entry,
912 dyn_first_plt_entry, exec_plt_entry, and dyn_plt_entry const. Add
913 plt_eh_frame_cie_size, plt_eh_frame_fde_size, plt_eh_frame_cie,
914 and plt_eh_frame_fde.
915 (Output_data_plt_i386::Output_data_plt_i386): Align to 16-byte
916 boundary. Call add_eh_frame_for_plt if appropriate.
917 * x86_64.cc: Include "dwarf.h".
918 (class Output_data_plt_x86_64): Align to 16-byte boundary. Make
919 first_plt_entry, plt_entry and tlsdesc_plt_entry const. Add
920 plt_eh_frame_cie_size, plt_eh_frame_fde_size, plt_eh_frame_cie,
921 and plt_eh_frame_fde.
922 (Output_data_plt_x86_64::init): Call add_eh_frame_for_plt if
923 appropriate.
924
14788a3f
ILT
9252011-06-29 Ian Lance Taylor <iant@google.com>
926
927 PR gold/12629
928 * object.cc (Sized_relobj_file::layout_section): Change shdr
929 parameter to be const.
930 (Sized_relobj_file::layout_eh_frame_section): New function, broken
931 out of do_layout.
932 (Sized_relobj_file::do_layout): Defer .eh_frame sections if
933 appropriate. Call layout_eh_frame_section.
934 (Sized_relobj_file::do_layout_deferred_sections): Handle .eh_frame
935 sections.
936 * object.h (class Sized_relobj_file): Update declarations.
937
6c21fce1
ILT
9382011-06-29 Ian Lance Taylor <iant@google.com>
939
37e41b03 940 PR gold/12652
6c21fce1
ILT
941 * script.cc (Token::integer_value): Accept trailing M/m/K/k
942 modifier.
943 (Lex::gather_token): Accept trailing M/m/K/k for integers.
944
4d5e4e62
ILT
9452011-06-29 Ian Lance Taylor <iant@google.com>
946
947 PR gold/12675
948 * object.cc (Sized_relobj_file::check_eh_frame_flags): Check for
949 SHT_X86_64_UNWIND.
950 * layout.cc (Layout::layout_eh_frame): Likewise.
951
886f533a
ILT
9522011-06-29 Ian Lance Taylor <iant@google.com>
953
954 PR gold/12695
955 * layout.cc (Layout::symtab_section_shndx): New function.
956 * layout.h (class Layout): Declare symtab_section_shndx.
957 * output.cc (Output_section::write_header): Call it.
958
f3ae1b28
ILT
9592011-06-29 Ian Lance Taylor <iant@google.com>
960
961 PR gold/12818
962 * symtab.cc (Symbol::should_add_dynsym_entry): Don't add undefined
963 symbols which are not used in a relocation.
964
aecf301f
ILT
9652011-06-28 Ian Lance Taylor <iant@google.com>
966
967 PR gold/12898
968 * layout.cc (Layout::segment_precedes): Don't crash if a linker
969 script create indistinguishable segments.
970 (Layout::set_segment_offsets): Use stable_sort when sorting
971 segments. Pass this to Compare_segments constructor.
972 * layout.h (class Layout): Make segment_precedes non-static.
973 (class Compare_segments): Change from struct to class. Add
974 layout_ field. Add constructor.
975 * script-sections.cc
976 (Script_sections::attach_sections_using_phdrs_clause): Rename
977 local orphan to is_orphan. Don't report failure to put empty
978 section in segment. On attachment failure, report name of
979 section, and attach to first PT_LOAD segment.
980
03ef7571
ILT
9812011-06-28 Ian Lance Taylor <iant@google.com>
982
983 PR gold/12934
984 * target-select.cc (Target_selector::Target_selector): Add
985 emulation parameter. Change all callers.
986 (select_target_by_bfd_name): Rename from select_target_by_name.
987 Change all callers.
988 (select_target_by_emulation): New function.
989 (supported_emulation_names): New function.
990 * target-select.h (class Target_selector): Add emulation_ field.
991 Update declarations.
992 (Target_selector::recognize_by_bfd_name): Rename from
993 recognize_by_name. Change all callers.
994 (Target_selector::supported_bfd_names): Rename from
995 supported_names. Change all callers.
996 (Target_selector::recognize_by_emulation): New function.
997 (Target_selector::supported_emulations): New function.
998 (Target_selector::emulation): New function.
999 (Target_selector::do_recognize_by_bfd_name): Rename from
1000 do_recognize_by_name. Change all callers.
1001 (Target_selector::do_supported_bfd_names): Rename from
1002 do_supported_names. Change all callers.
1003 (Target_selector::do_recognize_by_emulation): New function.
1004 (Target_selector::do_supported_emulations): New function.
1005 (select_target_by_bfd_name): Change name in declaration.
1006 (select_target_by_emulation): Declare.
1007 (supported_emulation_names): Declare.
1008 * parameters.cc (parameters_force_valid_target): Try to find
1009 target based on emulation from -m option.
1010 * options.h (class General_options): Change doc string for -m.
1011 * options.cc (help): Print emulations.
1012 (General_options::parse_V): Likewise.
1013 * freebsd.h (Target_selector_freebsd::Target_selector_freebsd):
1014 Add emulation parameter. Change all callers.
1015
200b2bb9
ILT
10162011-06-28 Ian Lance Taylor <iant@google.com>
1017
1018 * target.h (class Target): Add osabi_ field.
1019 (Target::osabi): New function.
1020 (Target::set_osabi): New function.
1021 (Target::Target): Initialize osabi_.
1022 (Target::do_adjust_elf_header): Make pure virtual.
1023 (Sized_target::do_adjust_elf_header): Declare.
1024 * target.cc (Sized_target::do_adjust_elf_header): New function.
1025 (class Sized_target): Instantiate all versions.
1026 * freebsd.h (class Target_freebsd): Remove.
1027 (Target_selector_freebsd::do_recognize): Call set_osabi on
1028 Target.
1029 (Target_selector_freebsd::do_recognize_by_name): Likewise.
1030 (Target_selector_freebsd::set_osabi): Remove.
1031 * i386.cc (class Target_i386): Inherit from Sized_target rather
1032 than Target_freebsd.
1033 * x86_64.cc (class Target_x86_64): Likewise.
1034
b3ce541e
ILT
10352011-06-28 Ian Lance Taylor <iant@google.com>
1036
1037 * target.h (Target::can_check_for_function_pointers): Rewrite.
1038 Make non-virtual.
1039 (Target::can_icf_inline_merge_sections): Likewise.
1040 (Target::section_may_have_icf_unsafe_poineters): Likewise.
1041 (Target::Target_info): Add can_icf_inline_merge_sections field.
1042 (Target::do_can_check_for_function_pointers): New virtual
1043 function.
1044 (Target::do_section_may_have_icf_unsafe_pointers): Likewise.
1045 * arm.cc (Target_arm::do_can_check_for_function_pointers): Rename
1046 from can_check_for_function_pointers, move in file.
1047 (Target_arm::do_section_may_have_icf_unsafe_pointers): Rename from
1048 section_may_have_icf_unsafe_poineters, move in file.
1049 (Target_arm::arm_info): Initialize can_icf_inline_merge_sections.
1050 * i386.cc (Target_i386::do_can_check_for_function_pointers):
1051 Rename from can_check_for_function_pointers, move in file.
1052 (Target_i386::can_icf_inline_merge_sections): Remove.
1053 (Target_i386::i386_info): Initialize
1054 can_icf_inline_merge_sections.
1055 * powerpc.cc (Target_powerpc::powerpc_info) [all versions]:
1056 Initialize can_icf_inline_merge_sections.
1057 * sparc.cc (Target_sparc::sparc_info) [both version]: Likewise.
1058 * x86_64.cc (Target_x86_64::do_can_check_for_function_pointers):
1059 Rename from can_check_for_function_pointers, move in file.
1060 (Target_x86_64::can_icf_inline_merge_sections): Remove.
1061 (Target_x86_64::x86_64_info): Initialize
1062 can_icf_inline_merge_sections.
1063 * testsuite/testfile.cc (Target_test::test_target_info):
1064 Likewise.
1065 * icf.cc (get_section_contents): Correct formatting.
1066
6d1c4efb
ILT
10672011-06-27 Ian Lance Taylor <iant@google.com>
1068
1069 * symtab.cc (Symbol::versioned_name): New function.
1070 (Symbol_table::add_to_final_symtab): Use versioned_name when
1071 appropriate.
1072 (Symbol_table::sized_write_symbol): Likewise.
1073 * symtab.h (class Symbol): Declare versioned_name.
1074 * stringpool.h (class Stringpool_template): Add variant of add
1075 which takes a std::basic_string.
1076 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_12.
1077 (ver_test_12_SOURCES, ver_test_12_DEPENDENCIES): New variables.
1078 (ver_test_12_LDFLAGS, ver_test_12_LDADD): New variables.
1079 (ver_test_12.o): New target.
1080 * testsuite/Makefile.in: Rebuild.
1081
57eb9b50
DK
10822011-06-27 Doug Kwan <dougkwan@google.com>
1083
1084 * arm.cc (Arm_relocate_functions::thm_jump8,
1085 Arm_relocate_functions::thm_jump11): Use a wider signed
1086 type to compute offset.
1087 * testsuite/Makefile.am: Add new tests arm_thm_jump11 and
1088 arm_thm_jump8.
1089 * testsuite/Makefile.in: Regenerate.
1090 * testsuite/arm_branch_in_range.sh: Check test results of
1091 arm_thm_jump11 and arm_thm_jump8.
1092 * testsuite/arm_thm_jump11.s: New test source file.
1093 * testsuite/arm_thm_jump11.t: New linker script.
1094 * testsuite/arm_thm_jump8.s: New test source file.
1095 * testsuite/arm_thm_jump8.t: New linker script.
1096
487b39df
ILT
10972011-06-24 Ian Lance Taylor <iant@google.com>
1098
1099 * layout.cc: Include "object.h".
1100 (ctors_sections_in_init_array): New static variable.
1101 (Layout::is_ctors_in_init_array): New function.
1102 (Layout::layout): Add entry to ctors_sections_in_init_array if
1103 appropriate.
1104 * layout.h (class Layout): Declare is_ctors_in_init_array.
1105 * reloc.cc (Sized_relobj_file::do_relocate): Call reverse_words if
1106 is_ctors_reverse_view is set.
1107 (Sized_relobj_file::write_sections): Add layout parameter. Change
1108 all callers. Set is_ctors_reverse_view field of View_size.
1109 (Sized_relobj_file::reverse_words): New function.
1110 * object.h (Sized_relobj_file::View_size): Add
1111 is_ctors_reverse_view field.
1112 (class Sized_relobj_file): Update declarations.
1113 * testsuite/initpri3.c: New test.
1114 * testsuite/Makefile.am: (check_PROGRAMS): Add initpri3a and
1115 initpri3b.
1116 (initpri3a_SOURCES, initpri3a_DEPENDENCIES): New variables.
1117 (initpri3a_LDFLAGS, initpri3a_LDADD): New variables.
1118 (initpri3b_SOURCES, initpri3b_DEPENDENCIES): New variables.
1119 (initpri3b_LDFLAGS, initpri3b_LDADD): New variables.
1120 * testsuite/Makefile.in: Rebuild.
1121
472076e4
CC
11222011-06-24 Cary Coutant <ccoutant@google.com>
1123
1124 * testsuite/Makefile.am: Add in-tree assembler to gcctestdir.
1125 (debug_msg_cdebug.o, odr_violation1_cdebug.o, odr_violation2_cdebug.o)
1126 (debug_msg_cdebug.err): New targets.
1127 * testsuite/Makefile.in: Regenerate.
1128 * testsuite/debug_msg.sh: Check output of link with compressed debug.
1129 Fix checks for link with shared library.
1130
a60af0db
DK
11312011-06-24 Doug Kwan <dougkwan@google.com>
1132
1133 * arm.cc (Arm_output_section::append_text_sections_to_list): Do not
1134 skip empty text sections.
1135 * testsuite/arm_exidx_test.s: Test handling of an empty text section.
1136
5393d741
ILT
11372011-06-22 Ian Lance Taylor <iant@google.com>
1138
1139 PR gold/12910
1140 * options.h (class General_options): Add --ctors-in-init-array.
1141 * layout.cc (Layout::get_output_section): Treat SHT_INIT_ARRAY and
1142 friends as SHT_PROGBITS for merging sections.
1143 (Layout::layout): Remove special handling of .init_array and
1144 friends. Don't sort if doing relocatable link. Sort for .ctors
1145 and .dtors if ctors_in_init_array.
1146 (Layout::make_output_section): Force correct section types for
1147 .init_array and friends. Don't sort if doing relocatable link,
1148 Don't sort .ctors and .dtors if ctors_in_init_array.
1149 (Layout::section_name_mapping): Remove .ctors. and .dtorso.
1150 (Layout::output_section_name): Add relobj parameter. Change all
1151 callers. Handle .ctors. and .dtors. in code rather than table.
1152 Handle .ctors and .dtors if ctors_in_init_array.
1153 (Layout::match_file_name): New function, moved from output.cc.
1154 * layout.h (class Layout): Update declarations.
1155 * output.cc: Include "layout.h".
1156 (Input_section_sort_entry::get_priority): New function.
1157 (Input_section_sort_entry::match_file_name): Just call
1158 Layout::match_file_name.
1159 (Output_section::Input_section_sort_init_fini_compare::operator()):
1160 Handle .ctors and .dtors. Sort by explicit priority rather than
1161 by name.
1162 * configure.ac: Remove CONSTRUCTOR_PRIORITY test and conditional.
1163 * testsuite/initpri2.c: New test.
1164 * testsuite/Makefile.am: Don't test CONSTRUCTOR_PRIORITY.
1165 (check_PROGRAMS): Add initpri2.
1166 (initpri2_SOURCES, initpri2_DEPENDENCIES): New variables.
1167 (initpri2_LDFLAGS, initpri2_LDADD): New variables.
1168 * configure, testsuite/Makefile.in: Rebuild.
1169
e1f74f98
ILT
11702011-06-19 Ian Lance Taylor <iant@google.com>
1171
1172 PR gold/12880
1173 * layout.cc (Layout::attach_allocated_section_to_segment): Add a
1174 .interp section to a PT_INTERP segment even if we have seen a
1175 --dynamic-linker option. Don't do it if we have seen a PHDRS
1176 clause in a linker script.
1177 (Layout::finalize): Don't create a .interp section if we've
1178 already create a PT_INTERP segment.
1179 (Layout::create_interp): Always call choose_output_section (revert
1180 patch of 2011-06-17). Don't create PT_INTERP segment.
1181 * script-sections.cc
1182 (Script_sections::create_note_and_tls_segments): Add a .interp
1183 section to a PT_INTERP segment even if we have seen a
1184 --dynamic-linker option.
1185
766f91bb
ILT
11862011-06-18 Ian Lance Taylor <iant@google.com>
1187
1188 * layout.cc (Layout::finish_dynamic_section): Don't set DT_TEXTREL
1189 merely because a non-PT_LOAD segment has a dynamic reloc.
1190
0d212c3a
ILT
11912011-06-18 Ian Lance Taylor <iant@google.com>
1192
1193 * layout.cc (Layout::finish_dynamic_section): Don't create
1194 DT_FLAGS entry if not needed.
1195
911a5072
ILT
11962011-06-18 Ian Lance Taylor <iant@google.com>
1197
1198 PR gold/12745
1199 * layout.cc (Layout::layout_eh_frame): Correct handling of
1200 writable .eh_frame section.
1201
534b4e5f
ILT
12022011-06-17 Ian Lance Taylor <iant@google.com>
1203
1204 PR gold/12893
1205 * resolve.cc (Symbol_table::resolve): Don't give an error if a
1206 symbol is redefined with the exact same object and value.
1207
10b4f102
ILT
12082011-06-17 Ian Lance Taylor <iant@google.com>
1209
1210 PR gold/12880
1211 * layout.h (class Layout): Add interp_segment_ field.
1212 * layout.cc (Layout::Layout): Initialize interp_segment_ field.
1213 (Layout::attach_allocated_section_to_segment): If making shared
1214 library, put .interp section in PT_INTERP segment.
1215 (Layout::finalize): Also call create_interp if -dynamic-linker
1216 option was used.
1217 (Layout::create_interp): Assert that there is no PT_INTERP
1218 segment. If not using a SECTIONS clause, use make_output_section.
1219 (Layout::make_output_segment): Set interp_segment_ if PT_INTERP.
1220 * script-sections.cc
1221 (Script_sections::create_note_and_tls_segments): If making shared
1222 library, put .interp section in PT_INTERP segment.
1223
a29b0dad
ILT
12242011-06-17 Ian Lance Taylor <iant@google.com>
1225
e588ea8d
ILT
1226 * object.cc (Sized_relobj_file::do_layout): Keep warning sections
1227 when making a shared library.
1228
12292011-06-17 Ian Lance Taylor <iant@google.com>
1230
1231 * x86_64.cc (Target_x86_64::Scan::check_non_pic): Add gsym
1232 parameter. Change all callers. Don't issue warning about PC32
1233 against locally defined symbol.
a29b0dad 1234
9d3b0698
ILT
12352011-06-16 Ian Lance Taylor <iant@google.com>
1236
1237 * symtab.cc (Warnings::issue_warning): Don't warn if relocation
1238 occurs in same object.
1239
85b0f90c
AM
12402011-06-14 Alan Modra <amodra@gmail.com>
1241
1242 * po/POTFILES.in: Regenerate.
1243
a94907d9
ILT
12442011-06-09 Ian Lance Taylor <iant@google.com>
1245
1246 * script-sections.cc
1247 (Orphan_output_section::set_section_addresses): For a relocatable
1248 link set address to 0.
1249
4fb3a1c3
CC
12502011-06-09 Cary Coutant <ccoutant@google.com>
1251
1252 PR gold/12804
1253 * gold/gold.cc (queue_initial_tasks): Warn if --incremental is
1254 used with --compress-debug-sections.
1255 * gold/object.cc (Sized_relobj_file::do_layout): Report
1256 uncompressed size of compressed input sections.
1257
61220854
CC
12582011-06-08 Cary Coutant <ccoutant@google.com>
1259
1260 PR gold/12804
1261 * testsuite/two_file_test_2_v1.cc: Change initialization of
1262 v2 to keep it in .data.
1263
e6455dfb
CC
12642011-06-07 Cary Coutant <ccoutant@google.com>
1265
1266 * common.cc (Symbol_table::do_allocate_commons_list): Call
1267 gold_fallback.
1268 * errors.cc (Errors::fatal): Adjust call to gold_exit.
1269 (Errors::fallback): New function.
1270 (gold_fallback): New function.
1271 * errors.h (Errors::fallback): New function.
1272 * gold.cc (gold_exit): Change status parameter to enum; adjust
1273 all callers.
1274 (queue_initial_tasks): Call gold_fallback.
1275 * gold.h: Include cstdlib.
1276 (Exit_status): New enum type.
1277 (gold_exit): Change status parameter to enum.
1278 (gold_fallback): New function.
1279 * layout.cc (Layout::set_section_offsets): Call gold_fallback.
1280 (Layout::create_symtab_sections): Likewise.
1281 (Layout::create_shdrs): Likewise.
1282 * main.cc (main): Adjust call to gold_exit.
1283 * output.cc (Output_data_got::add_got_entry): Call gold_fallback.
1284 (Output_data_got::add_got_entry_pair): Likewise.
1285 (Output_section::add_input_section): Likewise.
1286 (Output_section::add_output_section_data): Likewise.
1287 (Output_segment::set_section_list_addresses): Likewise.
1288 * x86_64.cc (Output_data_plt_x86_64::add_entry): Likewise.
1289
fb0e076f
CC
12902011-06-07 Cary Coutant <ccoutant@google.com>
1291
1292 * layout.cc (Layout::set_segment_offsets): Don't adjust layout
1293 for incremental links.
1294 * output.cc (Output_segment::set_section_list_addresses): Remove
1295 FIXME and test for TLS or BSS.
1296
a5ee4d5d
CC
12972011-06-07 Cary Coutant <ccoutant@google.com>
1298
1299 * testsuite/Makefile.am: Add incremental_copy_test,
1300 incremental_common_test_1.
1301 * testsuite/Makefile.in: Regenerate.
1302 * testsuite/common_test_1_v1.c: New source file.
1303 * testsuite/common_test_1_v2.c: New source file.
1304 * testsuite/copy_test_v1.cc: New source file.
1305
5146f448
CC
13062011-06-07 Cary Coutant <ccoutant@google.com>
1307
1308 * common.cc (Symbol_table::do_allocate_commons_list): For incremental
1309 update, allocate common from bss section's free list.
1310 * incremental-dump.cc (dump_incremental_inputs): Print flag for
1311 linker-defined symbols.
1312 * incremental.cc (Sized_incremental_binary::do_process_got_plt):
1313 Skip GOT and PLT entries that are no longer referenced.
1314 (Output_section_incremental_inputs::write_info_blocks): Mark
1315 linker-defined symbols.
1316 (Sized_incr_relobj::do_add_symbols): Process linker-defined symbols.
1317 * output.cc (Output_section::allocate): New function.
1318 * output.h (Output_section::allocate): New function.
1319 * resolve.cc (Symbol_table::report_resolve_problem): Add case for
1320 linker-defined symbols.
1321 (Symbol::override_base_with_special): Copy is_predefined_ flag.
1322 * symtab.cc (Symbol::init_fields): Initialize is_predefined_ flag.
1323 (Symbol::init_base_output_data): Likewise.
1324 (Symbol::init_base_output_segment): Likewise.
1325 (Symbol::init_base_constant): Likewise.
1326 (Sized_symbol::init_output_data): Likewise.
1327 (Sized_symbol::init_output_segment): Likewise.
1328 (Sized_symbol::init_constant): Likewise.
1329 (Symbol_table::do_define_in_output_data): Likewise.
1330 (Symbol_table::do_define_in_output_segment): Likewise.
1331 (Symbol_table::do_define_as_constant): Likewise.
1332 * symtab.h (Symbol::is_predefined): New function.
1333 (Symbol::init_base_output_data): Add is_predefined parameter.
1334 (Symbol::init_base_output_segment): Likewise.
1335 (Symbol::init_base_constant): Likewise.
1336 (Symbol::is_predefined_): New data member.
1337 (Sized_symbol::init_output_data): Add is_predefined parameter.
1338 (Sized_symbol::init_output_segment): Likewise.
1339 (Sized_symbol::init_constant): Likewise.
1340 (enum Symbol_table::Defined): Add INCREMENTAL_BASE.
1341
26d3c67d
CC
13422011-06-07 Cary Coutant <ccoutant@google.com>
1343
1344 * copy-relocs.cc (Copy_relocs::copy_reloc): Call make_copy_reloc
1345 instead of emit_copy_reloc.
1346 (Copy_relocs::emit_copy_reloc): Refactor.
1347 (Copy_relocs::make_copy_reloc): New function.
1348 (Copy_relocs::add_copy_reloc): Remove.
1349 * copy-relocs.h (Copy_relocs::emit_copy_reloc): Move to public
1350 section.
1351 (Copy_relocs::make_copy_reloc): New function.
1352 (Copy_relocs::add_copy_reloc): Remove.
1353 * gold.cc (queue_middle_tasks): Emit old COPY relocations from
1354 unchanged input files.
1355 * incremental-dump.cc (dump_incremental_inputs): Print "COPY" flag.
1356 * incremental.cc (Sized_incremental_binary::do_reserve_layout):
1357 Reserve BSS space for COPY relocations.
1358 (Sized_incremental_binary::do_emit_copy_relocs): New function.
1359 (Output_section_incremental_inputs::write_info_blocks): Record
1360 whether a symbol is copied from a shared object.
1361 (Sized_incr_dynobj::do_add_symbols): Record COPY relocations.
1362 * incremental.h (enum Incremental_shlib_symbol_flags): New type.
1363 (INCREMENTAL_SHLIB_SYM_FLAGS_SHIFT): New constant.
1364 (Incremental_input_entry_reader::get_output_symbol_index): Add
1365 is_copy parameter.
1366 (Incremental_binary::emit_copy_relocs): New function.
1367 (Incremental_binary::do_emit_copy_relocs): New function.
1368 (Sized_incremental_binary::Sized_incremental_binary): Initialize
1369 new data member.
1370 (Sized_incremental_binary::add_copy_reloc): New function.
1371 (Sized_incremental_binary::do_emit_copy_relocs): New function.
1372 (Sized_incremental_binary::Copy_reloc): New struct.
1373 (Sized_incremental_binary::Copy_relocs): New typedef.
1374 (Sized_incremental_binary::copy_relocs_): New data member.
1375 * symtab.cc (Symbol_table::add_from_incrobj): Change return type.
1376 * symtab.h (Symbol_table::add_from_incrobj): Change return type.
1377 * target.h (Sized_target::emit_copy_reloc): New function.
1378 * x86_64.cc (Target_x86_64::emit_copy_reloc): New function.
1379
7cdb37d9
CC
13802011-06-02 Cary Coutant <ccoutant@google.com>
1381
1382 PR gold/12163
1383 * gold/archive.cc (Archive::Archive): Initialize new data member.
1384 (Archive::include_all_members): Return if archive has already been
1385 included.
1386 * gold/archive.h (Archive::include_all_members_): New data member.
1387
cc643b88
NC
13882011-06-02 Nick Clifton <nickc@redhat.com>
1389
1390 * dynobj.h: Fix spelling mistake in comment.
1391 * output.cc: Likewise.
1392
f62a3ca7
DK
13932011-05-31 Doug Kwan <dougkwan@google.com>
1394 Asier Llano
1395
1396 PR gold/12826
cc643b88 1397 * arm.cc (Target_arm::tag_cpu_arch_combine): Fix handling of
f62a3ca7
DK
1398 arch value that equals to elfcpp::MAX_TAG_CPU_ARCH.
1399 * testsuite/Makefile.am: (MOSTLYCLEANFILES): Clean up. Remove
1400 redundant arm_exidx_test.so.
1401 * testsuite/Makefile.in: Regenerate.
1402 (check_SCRIPTS): Add pr12826.sh
1403 (check_DATA): Add pr12826.stdout
1404 (pr12826.stdout, pr12826.so, pr12826_1.o, pr12826_2.o): New rules.
1405 * testsuite/pr12826.sh: New file.
1406 * testsuite/pr12826_1.s: Ditto.
1407 * testsuite/pr12826_1.s: Ditto.
1408
8dbe1edc
ILT
14092011-05-30 Ian Lance Taylor <iant@google.com>
1410
1411 * reloc.cc (Sized_relobj_file::do_read_relocs): Ignore empty reloc
1412 sections.
1413
c49875be
ILT
14142011-05-29 Ian Lance Taylor <iant@google.com>
1415
1416 PR gold/12804
1417 * testsuite/Makefile.am: Use different file name for two_file_test
1418 temporary file for each incremental test.
1419 * testsuite/Makefile.in: Rebuild.
1420
69d53f7a
ILT
14212011-05-29 Ian Lance Taylor <iant@google.com>
1422
1423 * binary.cc (Binary_to_elf::sized_convert): Don't crash if the
1424 binary input file is empty.
1425
41d0ab5f
ILT
14262011-05-27 Ian Lance Taylor <iant@google.com>
1427
1428 * testsuite/Makefile.am (ver_test_2.so): Use -Wl,-R,.
1429 (ver_test_9.so): Likewise.
1430 * testsuite/Makefile.in: Rebuild.
1431
89d8a36b
CC
14322011-05-26 Cary Coutant <ccoutant@google.com>
1433
1434 * incremental-dump.cc (dump_incremental_inputs): Print COMDAT groups.
1435 * incremental.cc (Incremental_inputs::report_input_section): Fix
1436 comment, indentation.
1437 (Incremental_inputs::report_comdat_group): New function.
1438 (Output_section_incremental_inputs::set_final_data_size): Adjust size
1439 of data for incremental input file entry.
1440 (Output_section_incremental_inputs::write_info_blocks): Write COMDAT
1441 group count, COMDAT group signatures.
1442 (Sized_incr_relobj::do_layout): Record kept COMDAT group info from
1443 an unchanged input file.
1444 * incremental.h (Incremental_object_entry::Incremental_object_entry):
1445 Initialize new data member.
1446 (Incremental_object_entry::add_comdat_group): New function.
1447 (Incremental_object_entry::get_comdat_group_count): New function.
1448 (Incremental_object_entry::get_comdat_signature_key): New function.
1449 (Incremental_object_entry::groups_): New data member.
1450 (Incremental_inputs::report_comdat_group): New function.
1451 (Incremental_input_entry_reader::get_symbol_offset): Adjust size of
1452 data for incremental input file entry.
1453 (Incremental_input_entry_reader::get_comdat_group_count): New function.
1454 (Incremental_input_entry_reader::get_input_section): Adjust size of
1455 data for incremental input file entry.
1456 (Incremental_input_entry_reader::get_global_symbol_reader): Likewise.
1457 (Incremental_input_entry_reader::get_comdat_group_signature): New
1458 function.
1459 * object.cc (Sized_relobj::include_section_group): Report kept
1460 COMDAT groups for incremental links.
1461
1706a06f
ILT
14622011-05-24 David Meyer <pdox@google.com>
1463
1464 * dirsearch.cc (Dirsearch::find): Replace n1 and n2 parameters
1465 with name parameter. Add found_name parameter.
1466 * fileread.cc (Input_file::find_file): Adjust code accordingly.
1467 * dirsearch.h (class Dirsearch): Update declaration.
1468
a10ae760
ILT
14692011-05-24 Ian Lance Taylor <iant@google.com>
1470
1471 * archive.cc (Library_base::should_include_member): Pull in object
1472 from archive if it defines the entry symbol.
1473 * parameters.cc (Parameters::entry): New function.
1474 * parameters.h (class Parameters): Declare entry.
1475 * output.h (class Output_file_header): Remove entry_ field.
1476 * output.cc (Output_file_header::Output_file_header): Remove entry
1477 parameter. Change all callers.
1478 (Output_file_header::entry): Use parameters->entry.
1479 * gold.cc (queue_middle_tasks): Likewise.
1480 * plugin.cc (Plugin_hook::run): Likewise.
1481
aa92d6ed
CC
14822011-05-24 Cary Coutant <ccoutant@google.com>
1483
1484 * gold.cc (queue_initial_tasks): Pass incremental base filename
1485 to Output_file::open_base_file; don't print error message.
1486 * incremental-dump.cc (main): Adjust call to
1487 Output_file::open_for_modification.
1488 * incremental-dump.cc (main): Likewise.
1489 * incremental.cc (Incremental_inputs::report_command_line):
1490 Ignore --incremental-base option when comparing command lines.
1491 Ignore parameter when given as separate argument.
1492 * options.h (class General_options): Add --incremental-base.
1493 * output.cc (Output_file::Output_file):
1494 (Output_file::open_base_file): Add base_name and writable parameters;
1495 read base file into new file; print error message here.
1496 (Output_file::map_no_anonymous): Add writable parameter; adjust all
1497 callers.
1498 * output.h (Output_file::open_for_modification): Rename to...
1499 (Output_file::open_base_file): ...this; add base_name and
1500 writable parameters; adjust all callers.
1501 (Output_file::map_no_anonymous): Add writable parameter; adjust all
1502 callers.
1503 * testsuite/Makefile.am (incremental_test_4): Test
1504 --incremental-base.
1505 * testsuite/Makefile.in: Regenerate.
1506
2eedd706
CC
15072011-05-24 Cary Coutant <ccoutant@google.com>
1508
1509 * testsuite/Makefile.am: Add incremental_test_2, incremental_test_3,
1510 incremental_test_4.
1511 * testsuite/Makefile.in: Regenerate.
1512 * testsuite/two_file_test_1_v1.cc: New test source file.
1513 * testsuite/two_file_test_1b_v1.cc: New test source file.
1514 * testsuite/two_file_test_2_v1.cc: New test source file.
1515
0f1c85a6
CC
15162011-05-24 Cary Coutant <ccoutant@google.com>
1517
1518 * dynobj.h (Dynobj::do_dynobj): New function.
1519 * incremental-dump.cc (dump_incremental_inputs): Print as_needed
1520 flag and soname for shared objects.
1521 * incremental.cc (Incremental_inputs::report_object): Make
1522 either Incremental_object_entry or Incremental_dynobj_entry; add
1523 soname to string table.
1524 (Incremental_inputs::report_input_section): Add assertion.
1525 (Output_section_incremental_inputs::set_final_data_size): Adjust
1526 type of input file entry for shared libraries; adjust size of
1527 shared library info entry.
1528 (Output_section_incremental_inputs::write_input_files): Write
1529 as_needed flag for shared libraries.
1530 (Output_section_incremental_inputs::write_info_blocks): Adjust type
1531 of input file entry for shared libraries; write soname.
1532 (Sized_incr_dynobj::Sized_incr_dynobj): Read as_needed flag and
1533 soname from incremental info.
1534 * incremental.h (enum Incremental_input_flags): Add
1535 INCREMENTAL_INPUT_AS_NEEDED.
1536 (Incremental_input_entry::Incremental_input_entry): Initialize new
1537 data member.
1538 (Incremental_input_entry::set_as_needed): New function.
1539 (Incremental_input_entry::as_needed): New function.
1540 (Incremental_input_entry::do_dynobj_entry): New function.
1541 (Incremental_input_entry::as_needed_): New data member.
1542 (Incremental_object_entry::Incremental_object_entry): Don't check
1543 for shared library.
1544 (Incremental_object_entry::do_type): Likewise.
1545 (class Incremental_dynobj_entry): New class.
1546 (Incremental_input_entry_reader::as_needed): New function.
1547 (Incremental_input_entry_reader::get_soname): New function.
1548 (Incremental_input_entry_reader::get_global_symbol_count): Rewrite.
1549 (Incremental_input_entry_reader::get_output_symbol_index): Adjust
1550 size of shared library info entry.
1551 * layout.cc (Layout::finish_dynamic_section): Don't test for
1552 incremental link when adding DT_NEEDED entries.
1553 * object.h (Object::Object): Initialize new data member.
1554 (Object::dynobj): New function.
1555 (Object::set_as_needed): New function.
1556 (Object::as_needed): New function.
1557 (Object::do_dynobj): New function.
1558 (Object::as_needed_): New data member.
1559
6fa2a40b
CC
15602011-05-24 Cary Coutant <ccoutant@google.com>
1561
1562 * incremental-dump.cc (dump_incremental_inputs): Print dynamic reloc
1563 info; adjust display of GOT entries.
1564 * incremental.cc (Sized_incremental_binary::setup_readers): Allocate
1565 vector of input objects; remove file_status_.
1566 (Sized_incremental_binary::do_reserve_layout): Remove file_status_.
1567 (Sized_incremental_binary::do_process_got_plt): Adjust calls to
1568 got_plt reader; call target hooks to reserve GOT entries.
1569 (Output_section_incremental_inputs::set_final_data_size): Adjust size
1570 of input file info header and GOT info entry.
1571 (Output_section_incremental_inputs::write_info_blocks): Write dynamic
1572 relocation info.
1573 (Got_plt_view_info::got_descriptor): Remove.
1574 (Got_plt_view_info::sym_index): New data member.
1575 (Got_plt_view_info::input_index): New data member.
1576 (Local_got_offset_visitor::visit): Write input file index.
1577 (Global_got_offset_visitor::visit): Write 0 for input file index.
1578 (Global_symbol_visitor_got_plt::operator()): Replace got_descriptor
1579 with sym_index and input_index.
1580 (Output_section_incremental_inputs::write_got_plt): Adjust size of
1581 incremental info GOT entry; replace got_descriptor with input_index.
1582 (Sized_relobj_incr::Sized_relobj_incr): Adjust initializers; record
1583 map from input file index to object.
1584 (Sized_relobj_incr::do_layout): Replace direct data member reference
1585 with accessor function.
1586 (Sized_relobj_incr::do_for_all_local_got_entries): Move to base class.
1587 * incremental.h (Incremental_input_entry_reader::get_symbol_offset):
1588 Adjust size of input file info header.
1589 (Incremental_input_entry_reader::get_first_dyn_reloc): New function.
1590 (Incremental_input_entry_reader::get_dyn_reloc_count): New function.
1591 (Incremental_input_entry_reader::get_input_section): Adjust size of
1592 input file info header.
1593 (Incremental_got_plt_reader::Incremental_got_plt_reader): Adjust size
1594 of incremental info GOT entry.
1595 (Incremental_got_plt_reader::get_got_desc): Remove.
1596 (Incremental_got_plt_reader::get_got_symndx): New function.
1597 (Incremental_got_plt_reader::get_got_input_index): New function.
1598 (Sized_incremental_binary::Sized_incremental_binary): Remove
1599 file_status_; add input_objects_.
1600 (Sized_incremental_binary::~Sized_incremental_binary): Remove.
1601 (Sized_incremental_binary::set_file_is_unchanged): Remove.
1602 (Sized_incremental_binary::file_is_unchanged): Remove.
1603 (Sized_incremental_binary::set_input_object): New function.
1604 (Sized_incremental_binary::input_object): New function.
1605 (Sized_incremental_binary::file_status_): Remove.
1606 (Sized_incremental_binary::input_objects_): New data member.
1607 (Sized_relobj_incr): Rename Sized_incr_relobj to this; adjust all
1608 references.
1609 (Sized_relobj_incr::invalid_address): Move to base class.
1610 (Sized_relobj_incr::is_output_section_offset_invalid): Move to base
1611 class.
1612 (Sized_relobj_incr::do_output_section_offset): Likewise.
1613 (Sized_relobj_incr::do_for_all_local_got_entries): Likewise.
1614 (Sized_relobj_incr::section_offsets_): Likewise.
1615 * object.cc (Sized_relobj::do_for_all_local_got_entries): New
1616 function.
1617 (Sized_relobj_file::Sized_relobj_file): Remove local_got_offsets_.
1618 (Sized_relobj_file::layout_section): Replace refs to section_offsets_
1619 with accessor function.
1620 (Sized_relobj_file::do_layout): Likewise.
1621 (Sized_relobj_file::do_layout_deferred_sections): Likewise.
1622 (Sized_relobj_file::do_for_all_local_got_entries): Move to base class.
1623 (Sized_relobj_file::compute_final_local_value): Replace refs to
1624 section_offsets_ with accessor function.
1625 (Sized_relobj_file::do_finalize_local_symbols): Likewise.
1626 * object.h (Relobj::Relobj): Initialize new data members.
1627 (Relobj::add_dyn_reloc): New function.
1628 (Relobj::first_dyn_reloc): New function.
1629 (Relobj::dyn_reloc_count): New function.
1630 (Relobj::first_dyn_reloc_): New data member.
1631 (Relobj::dyn_reloc_count_): New data member.
1632 (Sized_relobj): Rename Sized_relobj_base to this; adjust all
1633 references.
1634 (Sized_relobj::Address): New typedef.
1635 (Sized_relobj::invalid_address): Move here from child class.
1636 (Sized_relobj::Sized_relobj): Initialize new data members.
1637 (Sized_relobj::sized_relobj): New function.
1638 (Sized_relobj::is_output_section_offset_invalid): Move here from
1639 child class.
1640 (Sized_relobj::get_output_section_offset): Likewise.
1641 (Sized_relobj::local_has_got_offset): Likewise.
1642 (Sized_relobj::local_got_offset): Likewise.
1643 (Sized_relobj::set_local_got_offset): Likewise.
1644 (Sized_relobj::do_for_all_local_got_entries): Likewise.
1645 (Sized_relobj::clear_got_offsets): New function.
1646 (Sized_relobj::section_offsets): Move here from child class.
1647 (Sized_relobj::do_output_section_offset): Likewise.
1648 (Sized_relobj::do_set_section_offset): Likewise.
1649 (Sized_relobj::Local_got_offsets): Likewise.
1650 (Sized_relobj::local_got_offsets_): Likewise.
1651 (Sized_relobj::section_offsets_): Likewise.
1652 (Sized_relobj_file): Rename Sized_relobj to this; adjust all
1653 references.
1654 (Sized_relobj_file::is_output_section_offset_invalid): Move to base
1655 class.
1656 (Sized_relobj_file::sized_relobj): New function
1657 (Sized_relobj_file::local_has_got_offset): Move to base class.
1658 (Sized_relobj_file::local_got_offset): Likewise.
1659 (Sized_relobj_file::set_local_got_offset): Likewise.
1660 (Sized_relobj_file::get_output_section_offset): Likewise.
1661 (Sized_relobj_file::do_for_all_local_got_entries): Likewise.
1662 (Sized_relobj_file::do_output_section_offset): Likewise.
1663 (Sized_relobj_file::do_set_section_offset): Likewise.
1664 (Sized_relobj_file::Local_got_offsets): Likewise.
1665 (Sized_relobj_file::local_got_offsets_): Likewise.
1666 (Sized_relobj_file::section_offsets_): Likewise.
1667 * output.cc (Output_reloc::Output_reloc): Adjust type of relobj
1668 (all constructors).
1669 (set_needs_dynsym_index): Convert relobj to derived class pointer.
1670 (Output_reloc::get_symbol_index): Likewise.
1671 (Output_reloc::local_section_offset): Likewise.
1672 (Output_reloc::get_address): Likewise.
1673 (Output_reloc::symbol_value): Likewise.
1674 (Output_data_got::reserve_slot): Move to class definition.
1675 (Output_data_got::reserve_local): New function.
1676 (Output_data_got::reserve_slot_for_global): Remove.
1677 (Output_data_got::reserve_global): New function.
1678 * output.h (Output_reloc::Output_reloc): Adjust type of relobj
1679 (all constructors, two instantiations).
1680 (Output_reloc::get_relobj): New function (two instantiations).
1681 (Output_reloc::u1_.relobj, Output_reloc::u2_.relobj): Adjust type.
1682 (Output_data_reloc_base::add): Convert relobj to derived class pointer.
1683 (Output_data_reloc::add_global): Adjust type of relobj.
1684 (Output_data_reloc::add_global_relative): Likewise.
1685 (Output_data_reloc::add_symbolless_global_addend): Likewise.
1686 (Output_data_reloc::add_local): Likewise.
1687 (Output_data_reloc::add_local_relative): Likewise.
1688 (Output_data_reloc::add_symbolless_local_addend): Likewise.
1689 (Output_data_reloc::add_local_section): Likewise.
1690 (Output_data_reloc::add_output_section): Likewise.
1691 (Output_data_reloc::add_absolute): Likewise.
1692 (Output_data_reloc::add_target_specific): Likewise.
1693 (Output_data_got::reserve_slot): Move definition here.
1694 (Output_data_got::reserve_local): New function.
1695 (Output_data_got::reserve_global): New function.
1696 * reloc.cc (Sized_relobj_file::do_read_relocs): Replace refs to
1697 section_offsets_ with accessor function.
1698 (Sized_relobj_file::write_sections): Likewise.
1699 (Sized_relobj_file::do_relocate_sections): Likewise.
1700 * target.h (Sized_target::reserve_local_got_entry): New function.
1701 (Sized_target::reserve_global_got_entry): New function.
1702 * x86_64.cc (Target_x86_64::reserve_local_got_entry): New function.
1703 (Target_x86_64::reserve_global_got_entry): New function.
1704 (Target_x86_64::init_got_plt_for_update): Create rela_dyn section.
1705
4829d394
CC
17062011-05-23 Cary Coutant <ccoutant@google.com>
1707
1708 * gold.cc (queue_middle_tasks): Process existing GOT/PLT entries.
1709 * incremental-dump.cc (dump_incremental_inputs): Mask high-order
1710 bit when checking got_type.
1711 * incremental.cc (Sized_incremental_binary::setup_readers):
1712 Store symbol table and string table locations; initialize bit vector
1713 of file status flags.
1714 (Sized_incremental_binary::do_reserve_layout): Set bit flag for
1715 unchanged files.
1716 (Sized_incremental_binary::do_process_got_plt): New function.
1717 (Sized_incremental_binary::get_symtab_view): Use stored locations.
1718 (Output_section_incremental_inputs::set_final_data_size): Record
1719 file index for each input file.
1720 (Output_section_incremental_inputs::write_got_plt): Store file index
1721 instead of input entry offset for each GOT entry.
1722 * incremental.h
1723 (Incremental_input_entry::Incremental_input_entry): Initialize new
1724 data member.
1725 (Incremental_input_entry::set_offset): Store file index.
1726 (Incremental_input_entry::get_file_index): New function.
1727 (Incremental_input_entry::file_index_): New data member.
1728 (Incremental_binary::process_got_plt): New function.
1729 (Incremental_binary::do_process_got_plt): New function.
1730 (Sized_incremental_binary::Sized_incremental_binary): Initialize new
1731 data members.
1732 (Sized_incremental_binary::~Sized_incremental_binary): New destructor.
1733 (Sized_incremental_binary::set_file_is_unchanged): New function.
1734 (Sized_incremental_binary::file_is_unchanged): New function.
1735 (Sized_incremental_binary::do_process_got_plt): New function.
1736 (Sized_incremental_binary::file_status_): New data member.
1737 (Sized_incremental_binary::main_symtab_loc_): New data member.
1738 (Sized_incremental_binary::main_strtab_loc_): New data member.
1739 * output.cc (Output_data_got::Got_entry::write): Add case
1740 RESERVED_CODE.
1741 (Output_data_got::add_global): Call add_got_entry.
1742 (Output_data_got::add_global_plt): Likewise.
1743 (Output_data_got::add_global_with_rel): Likewise.
1744 (Output_data_got::add_global_with_rela): Likewise.
1745 (Output_data_got::add_global_pair_with_rel): Call add_got_entry_pair.
1746 (Output_data_got::add_global_pair_with_rela): Likewise.
1747 (Output_data_got::add_local): Call add_got_entry.
1748 (Output_data_got::add_local_plt): Likewise.
1749 (Output_data_got::add_local_with_rel): Likewise.
1750 (Output_data_got::add_local_with_rela): Likewise.
1751 (Output_data_got::add_local_pair_with_rel): Call add_got_entry_pair.
1752 (Output_data_got::add_local_pair_with_rela): Likewise.
1753 (Output_data_got::reserve_slot): New function.
1754 (Output_data_got::reserve_slot_for_global): New function.
1755 (Output_data_got::add_got_entry): New function.
1756 (Output_data_got::add_got_entry_pair): New function.
1757 (Output_section::add_output_section_data): Edit FIXME.
1758 * output.h
1759 (Output_section_data_build::Output_section_data_build): New
1760 constructor with size parameter.
1761 (Output_data_space::Output_data_space): Likewise.
1762 (Output_data_got::Output_data_got): Initialize new data member; new
1763 constructor with size parameter.
1764 (Output_data_got::add_constant): Call add_got_entry.
1765 (Output_data_got::reserve_slot): New function.
1766 (Output_data_got::reserve_slot_for_global): New function.
1767 (class Output_data_got::Got_entry): Add RESERVED_CODE.
1768 (Output_data_got::add_got_entry): New function.
1769 (Output_data_got::add_got_entry_pair): New function.
1770 (Output_data_got::free_list_): New data member.
1771 * target.h (Sized_target::init_got_plt_for_update): New function.
1772 (Sized_target::register_global_plt_entry): New function.
1773 * x86_64.cc (Output_data_plt_x86_64::Output_data_plt_x86_64):
1774 Initialize new data member; call init; add constructor with PLT count.
1775 (Output_data_plt_x86_64::init): New function.
1776 (Output_data_plt_x86_64::add_relocation): New function.
1777 (Output_data_plt_x86_64::reserve_slot): New function.
1778 (Output_data_plt_x86_64::free_list_): New data member.
1779 (Target_x86_64::init_got_plt_for_update): New function.
1780 (Target_x86_64::register_global_plt_entry): New function.
1781 (Output_data_plt_x86_64::add_entry): Allocate from free list for
1782 incremental updates.
1783 (Output_data_plt_x86_64::add_relocation): New function.
1784 * testsuite/object_unittest.cc (Object_test): Set default options.
1785
ec69d6da
ILT
17862011-05-16 Ian Lance Taylor <iant@google.com>
1787
1788 * options.h (class General_options): Make -i a synonym for -r.
1789
732e31de
ILT
17902011-05-16 Ian Lance Taylor <iant@google.com>
1791
1792 * testsuite/tls_test_main.cc: Use semaphores instead of mutexes.
1793
403676b5
CC
17942011-05-10 Cary Coutant <ccoutant@google.com>
1795
1796 * object.cc (Sized_relobj::do_count_local_symbols): Check for
1797 strip_all (-s).
1798
5b7b7d6e
ILT
17992011-05-06 Ian Lance Taylor <iant@google.com>
1800
1801 * layout.cc (Layout::layout): If the output section flags change,
1802 update the ordering.
1803
f0f9babf
CC
18042011-04-25 Cary Coutant <ccoutant@google.com>
1805
1806 * incremental-dump.cc (dump_incremental_inputs): Print local
1807 symbol info for each input file.
1808 * incremental.cc
1809 (Output_section_incremental_inputs::set_final_data_size): Add local
1810 symbol info to input file entries in incremental info.
1811 (Output_section_incremental_inputs::write_info_blocks): Likewise.
1812 (Sized_incr_relobj::Sized_incr_relobj): Initialize new data members.
1813 (Sized_incr_relobj::do_add_symbols): Cosmetic change.
1814 (Sized_incr_relobj::do_count_local_symbols): Replace stub with
1815 implementation.
1816 (Sized_incr_relobj::do_finalize_local_symbols): Likewise.
1817 (Sized_incr_relobj::do_relocate): Write the local symbols.
1818 (Sized_incr_dynobj::do_add_symbols): Cosmetic change.
1819 * incremental.h (Incremental_inputs_reader::get_symbol_offset):
1820 Adjust size of input file header.
1821 (Incremental_inputs_reader::get_local_symbol_offset): New function.
1822 (Incremental_inputs_reader::get_local_symbol_count): New function.
1823 (Incremental_inputs_reader::get_input_section): Adjust size of input
1824 file header.
1825 (Incremental_inputs_reader::get_global_symbol_reader): Likewise.
1826 (Sized_incr_relobj::This): New typedef.
1827 (Sized_incr_relobj::sym_size): New const data member.
1828 (Sized_incr_relobj::Local_symbol): New struct.
1829 (Sized_incr_relobj::do_output_local_symbol_count): New function.
1830 (Sized_incr_relobj::do_local_symbol_offset): New function.
1831 (Sized_incr_relobj::local_symbol_count_): New data member.
1832 (Sized_incr_relobj::output_local_dynsym_count_): New data member.
1833 (Sized_incr_relobj::local_symbol_index_): New data member.
1834 (Sized_incr_relobj::local_symbol_offset_): New data member.
1835 (Sized_incr_relobj::local_dynsym_offset_): New data member.
1836 (Sized_incr_relobj::local_symbols_): New data member.
1837 * object.h (Relobj::output_local_symbol_count): New function.
1838 (Relobj::local_symbol_offset): New function.
1839 (Relobj::do_output_local_symbol_count): New function.
1840 (Relobj::do_local_symbol_offset): New function.
1841 (Sized_relobj::do_output_local_symbol_count): New function.
1842 (Sized_relobj::do_local_symbol_offset): New function.
1843
d0a9ace3
ILT
18442011-04-22 Vladimir Simonov <sv@sw.ru>
1845
1846 * descriptors.cc (set_close_on_exec): New function.
1847 (Descriptors::open): Use set_close_on_exec.
1848 * output.cc (S_ISLNK): Define if not defined.
1849
94a3fc8b
CC
18502011-04-22 Cary Coutant <ccoutant@google.com>
1851
1852 * incremental.cc (Sized_incremental_binary::setup_readers): Allocate
1853 global symbol map.
1854 (Sized_incremental_binary::do_apply_incremental_relocs): New function.
1855 (Sized_incr_relobj::do_add_symbols): Add symbols to global symbol map.
1856 (Sized_incr_relobj::do_relocate): Remap section indices in incremental
1857 relocations.
1858 (Sized_incr_dynobj::do_add_symbols): Add symbols to global symbol map.
1859 (Sized_incr_dynobj::do_for_all_global_symbols): Remove FIXME.
1860 (Sized_incr_dynobj::do_for_all_local_got_entries): Likewise.
1861 * incremental.h
1862 (Incremental_inputs_reader::global_symbol_reader_at_offset): New
1863 function.
1864 (Incremental_binary::apply_incremental_relocs): New function.
1865 (Incremental_binary::do_apply_incremental_relocs): New function.
1866 (Sized_incremental_binary::Sized_incremental_binary): Initialize new
1867 data member.
1868 (Sized_incremental_binary::add_global_symbol): New function.
1869 (Sized_incremental_binary::global_symbol): New function.
1870 (Sized_incremental_binary::do_apply_incremental_relocs): New function.
1871 (Sized_incremental_binary::symbol_map_): New data member.
1872 * layout.cc (Layout_task_runner::run): Apply incremental relocations.
1873 * target.h (Sized_target::apply_relocation): New function.
1874 * target-reloc.h (apply_relocation): New function.
1875 * x86_64.cc (Target_x86_64::apply_relocation): New function.
1876
c87e4302
DK
18772011-04-22 Doug Kwan <dougkwan@google.com>
1878
1879 * arm.cc (Arm_output_section::Arm_output_section): Set SHF_LINK_ORDER
1880 flag of a SHT_ARM_EXIDX section.
1881 * testsuite/Makefile.am (arm_exidx_test): New test rules.
1882 * testsuite/Makefile.in: Regenerate.
1883 * testsuite/arm_exidx_test.s: New file.
1884 * testsuite/arm_exidx_test.sh: Same.
1885
e7782cf6
CC
18862011-04-20 Cary Coutant <ccoutant@google.com>
1887
1888 PR gold/12689
1889 * archive.h (Incremental_archive_entry::Archive_member):
1890 Initialize arg_serial_ (second constructor).
1891
308ecdc7
ILT
18922011-04-17 Ian Lance Taylor <iant@google.com>
1893
1894 * object.cc (Relocate_info::location): Simplify location string.
1895 * errors.cc (Errors::error_at_location): Don't print program
1896 name.
1897 (Errors::warning_at_location): Likewise.
1898 (Errors::undefined_symbol): Likewise.
1899 * testsuite/debug_msg.sh: Update accordingly.
1900
bec5b579
CC
19012011-04-14 Cary Coutant <ccoutant@google.com>
1902
1903 * gold/layout.cc (Layout::symtab_section_offset): New function.
1904 * gold/layout.h (Layout::symtab_section_offset): New function.
1905 * gold/reloc.cc (Sized_relobj::do_relocate): Call it.
1906
88597d34
ILT
19072011-04-12 Ian Lance Taylor <iant@google.com>
1908
1909 * configure.ac: Check for sys/mman.h and mmap. Check for mremap
1910 with MREMAP_MAYMOVE.
1911 * output.h (class Output_file): Add map_is_allocated_ field.
1912 * output.cc: Only #include <sys/mman.h> if it exists. If mmap is
1913 not available, provide stubs. If mremap is not available, #define
1914 it to gold_mremap.
1915 (MREMAP_MAYMOVE): Define if not defined.
1916 (Output_file::Output_file): Initialize map_is_allocated_.
1917 (Output_file::resize): Check map_is_allocated_.
1918 (Output_file::map_anonymous): If mmap fails, use malloc.
1919 (Output_file::unmap): Don't do anything for an anonymous map.
1920 * fileread.cc: Only #include <sys/mman.h> if it exists. If mmap
1921 is not available, provide stubs.
1922 (File_read::View::~View): Use free rather than delete[].
1923 (File_read::make_view): Use malloc rather than new[]. If mmap
1924 fails, use malloc.
1925 (File_read::find_or_make_view): Use malloc rather than new[].
1926 * gold.h: Remove HAVE_REMAP code.
1927 * mremap.c: #include <errno.h>. Only #include <sys/mman.h> if it
1928 exists. Rename mremap to gold_mremap. If mmap is not available
1929 don't do anything.
1930 * configure, config.in: Rebuild.
1931
11e361bc
ILT
19322011-04-11 Ian Lance Taylor <iant@google.com>
1933
1934 * incremental.cc (Sized_incr_relobj::do_add_symbols): Always
1935 initialize local variable v.
1936
cdc29364
CC
19372011-04-11 Cary Coutant <ccoutant@google.com>
1938
1939 * archive.cc (Archive::include_member): Adjust call to
1940 report_object.
1941 (Add_archive_symbols::run): Track argument serial numbers.
1942 (Lib_group::include_member): Likewise.
1943 (Add_lib_group_symbols::run): Adjust call to report_archive_begin.
1944 * archive.h (Incremental_archive_entry::Archive_member):
1945 Initialize arg_serial_.
1946 (Archive_member::arg_serial_): New data member.
1947 * dynobj.cc (Dynobj::Dynobj): Allow input_file_ to be NULL.
1948 (Sized_dynobj::do_add_symbols): Track symbols when doing an
1949 incremental link.
1950 (Sized_dynobj::do_for_all_local_got_entries): New function.
1951 * dynobj.h: (Sized_dynobj::do_for_all_local_got_entries): New
1952 function.
1953 * fileread.cc (get_mtime): New function.
1954 * fileread.h (get_mtime): New function.
1955 * gold.cc (queue_initial_tasks): Check for incremental update.
1956 (process_incremental_input): New function.
1957 (queue_middle_tasks): Don't force valid target for incremental
1958 update.
1959 * incremental-dump.cc (find_input_containing_global): Adjust
1960 size of symbol info entry.
1961 (dump_incremental_inputs): Dump argument serial number and
1962 in_system_directory flag; bias shndx by 1; print symbol names
1963 when dumping per-file symbol lists; use new symbol info readers.
1964 * incremental.cc
1965 (Output_section_incremental_inputs:update_data_size): New function.
1966 (Sized_incremental_binary::setup_readers): Setup input readers
1967 for each input file; build maps for files added from libraries
1968 and scripts.
1969 (Sized_incremental_binary::check_input_args): New function.
1970 (Sized_incremental_binary::do_check_inputs): Build map of argument
1971 serial numbers to input arguments.
1972 (Sized_incremental_binary::do_file_has_changed): Rename
1973 do_file_is_unchanged to this; compare file modification times.
1974 (Sized_incremental_binary::do_init_layout): New function.
1975 (Sized_incremental_binary::do_reserve_layout): New function.
1976 (Sized_incremental_binary::do_get_input_reader): Remove.
1977 (Sized_incremental_binary::get_symtab_view): New function.
1978 (Incremental_checker::can_incrementally_link_output_file): Remove.
1979 (Incremental_inputs::report_command_line): Exclude --debug options.
1980 (Incremental_inputs::report_archive_begin): Add parameter; track
1981 argument serial numbers; don't put input file entry for archive
1982 before archive members.
1983 (Incremental_inputs::report_archive_end): Put input file entry
1984 for archive after archive members.
1985 (Incremental_inputs::report_object): Add parameter; track argument
1986 serial numbers and in_system_directory flag.
1987 (Incremental_inputs::report_script): Add parameter; track argument
1988 serial numbers.
1989 (Output_section_incremental_inputs::set_final_data_size): Adjust
1990 size of symbol info entry; check for forwarding symbols.
1991 (Output_section_incremental_inputs::write_input_files): Write
1992 in_system_directory flag and argument serial number.
1993 (Output_section_incremental_inputs::write_info_blocks): Map section
1994 indices between incremental info and original input file; store
1995 input section index for each symbol.
1996 (class Local_got_offset_visitor): Derive from Got_offset_list::Visitor;
1997 change operator() to visit().
1998 (class Global_got_offset_visitor): Likewise.
1999 (class Global_symbol_visitor_got_plt):
2000 (Output_section_incremental_inputs::write_got_plt): Use new visitor
2001 classes.
2002 (Sized_incr_relobj::Sized_incr_relobj): New constructor.
2003 (Sized_incr_relobj::do_read_symbols): New function.
2004 (Sized_incr_relobj::do_layout): New function.
2005 (Sized_incr_relobj::do_layout_deferred_sections): New function.
2006 (Sized_incr_relobj::do_add_symbols): New function.
2007 (Sized_incr_relobj::do_should_include_member): New function.
2008 (Sized_incr_relobj::do_for_all_global_symbols): New function.
2009 (Sized_incr_relobj::do_for_all_local_got_entries): New function.
2010 (Sized_incr_relobj::do_section_size): New function.
2011 (Sized_incr_relobj::do_section_name): New function.
2012 (Sized_incr_relobj::do_section_contents): New function.
2013 (Sized_incr_relobj::do_section_flags): New function.
2014 (Sized_incr_relobj::do_section_entsize): New function.
2015 (Sized_incr_relobj::do_section_address): New function.
2016 (Sized_incr_relobj::do_section_type): New function.
2017 (Sized_incr_relobj::do_section_link): New function.
2018 (Sized_incr_relobj::do_section_info): New function.
2019 (Sized_incr_relobj::do_section_addralign): New function.
2020 (Sized_incr_relobj::do_initialize_xindex): New function.
2021 (Sized_incr_relobj::do_get_global_symbol_counts): New function.
2022 (Sized_incr_relobj::do_read_relocs): New function.
2023 (Sized_incr_relobj::do_gc_process_relocs): New function.
2024 (Sized_incr_relobj::do_scan_relocs): New function.
2025 (Sized_incr_relobj::do_count_local_symbols): New function.
2026 (Sized_incr_relobj::do_finalize_local_symbols): New function.
2027 (Sized_incr_relobj::do_set_local_dynsym_indexes): New function.
2028 (Sized_incr_relobj::do_set_local_dynsym_offset): New function.
2029 (Sized_incr_relobj::do_relocate): New function.
2030 (Sized_incr_relobj::do_set_section_offset): New function.
2031 (Sized_incr_dynobj::Sized_incr_dynobj): New function.
2032 (Sized_incr_dynobj::do_read_symbols): New function.
2033 (Sized_incr_dynobj::do_layout): New function.
2034 (Sized_incr_dynobj::do_add_symbols): New function.
2035 (Sized_incr_dynobj::do_should_include_member): New function.
2036 (Sized_incr_dynobj::do_for_all_global_symbols): New function.
2037 (Sized_incr_dynobj::do_for_all_local_got_entries): New function.
2038 (Sized_incr_dynobj::do_section_size): New function.
2039 (Sized_incr_dynobj::do_section_name): New function.
2040 (Sized_incr_dynobj::do_section_contents): New function.
2041 (Sized_incr_dynobj::do_section_flags): New function.
2042 (Sized_incr_dynobj::do_section_entsize): New function.
2043 (Sized_incr_dynobj::do_section_address): New function.
2044 (Sized_incr_dynobj::do_section_type): New function.
2045 (Sized_incr_dynobj::do_section_link): New function.
2046 (Sized_incr_dynobj::do_section_info): New function.
2047 (Sized_incr_dynobj::do_section_addralign): New function.
2048 (Sized_incr_dynobj::do_initialize_xindex): New function.
2049 (Sized_incr_dynobj::do_get_global_symbol_counts): New function.
2050 (make_sized_incremental_object): New function.
2051 (Incremental_library::copy_unused_symbols): New function.
2052 (Incremental_library::do_for_all_unused_symbols): New function.
2053 * incremental.h (enum Incremental_input_flags): New type.
2054 (class Incremental_checker): Remove.
2055 (Incremental_input_entry::Incremental_input_entry): Add argument
2056 serial number.
2057 (Incremental_input_entry::arg_serial): New function.
2058 (Incremental_input_entry::set_is_in_system_directory): New function.
2059 (Incremental_input_entry::is_in_system_directory): New function.
2060 (Incremental_input_entry::arg_serial_): New data member.
2061 (Incremental_input_entry::is_in_system_directory_): New data member.
2062 (class Script_info): Move here from script.h.
2063 (Script_info::Script_info): Add filename parameter.
2064 (Script_info::filename): New function.
2065 (Script_info::filename_): New data member.
2066 (Incremental_script_entry::Incremental_script_entry): Add argument
2067 serial number.
2068 (Incremental_object_entry::Incremental_object_entry): Likewise.
2069 (Incremental_object_entry::add_input_section): Build list of input
2070 sections with map to original shndx.
2071 (Incremental_object_entry::get_input_section_index): New function.
2072 (Incremental_object_entry::shndx_): New data member.
2073 (Incremental_object_entry::name_key_): Rename; adjust all refs.
2074 (Incremental_object_entry::sh_size_): Rename; adjust all refs.
2075 (Incremental_archive_entry::Incremental_archive_entry): Add argument
2076 serial number.
2077 (Incremental_inputs::report_archive_begin): Likewise.
2078 (Incremental_inputs::report_object): Likewise.
2079 (Incremental_inputs::report_script): Likewise.
2080 (class Incremental_global_symbol_reader): New class.
2081 (Incremental_input_entry_reader::Incremental_input_entry_reader): Read
2082 and store flags and input file type.
2083 (Incremental_input_entry_reader::arg_serial): New function.
2084 (Incremental_input_entry_reader::type): Extract type from flags.
2085 (Incremental_input_entry_reader::is_in_system_directory): New function.
2086 (Incremental_input_entry_reader::get_input_section_count): Call
2087 accessor function for type.
2088 (Incremental_input_entry_reader::get_symbol_offset): Call accessor
2089 function for type; adjust size of global symbol entry.
2090 (Incremental_input_entry_reader::get_global_symbol_count): Call
2091 accessor function for type.
2092 (Incremental_input_entry_reader::get_object_count): Likewise.
2093 (Incremental_input_entry_reader::get_object_offset): Likewise.
2094 (Incremental_input_entry_reader::get_member_count): Likewise.
2095 (Incremental_input_entry_reader::get_unused_symbol_count): Likewise.
2096 (Incremental_input_entry_reader::get_member_offset): Likewise.
2097 (Incremental_input_entry_reader::get_unused_symbol): Likewise.
2098 (Incremental_input_entry_reader::Global_symbol_info): Remove.
2099 (Incremental_input_entry_reader::get_global_symbol_info): Remove.
2100 (Incremental_input_entry_reader::get_global_symbol_reader): New
2101 function.
2102 (Incremental_input_entry_reader::get_output_symbol_index): New
2103 function.
2104 (Incremental_input_entry_reader::type_): Remove.
2105 (Incremental_input_entry_reader::flags_): New data member.
2106 (Incremental_inputs_reader::input_file_offset): New function.
2107 (Incremental_inputs_reader::input_file_index): New function.
2108 (Incremental_inputs_reader::input_file): Call input_file_offset.
2109 (Incremental_inputs_reader::input_file_at_offset): New function.
2110 (Incremental_relocs_reader::get_r_type): Reformat.
2111 (Incremental_relocs_reader::get_r_shndx): Reformat.
2112 (Incremental_relocs_reader::get_r_offset): Reformat.
2113 (Incremental_relocs_reader::data): New function.
2114 (Incremental_binary::Incremental_binary): Initialize new data members.
2115 (Incremental_binary::check_inputs): Add cmdline parameter.
2116 (Incremental_binary::file_is_unchanged): Remove.
2117 (Input_reader::arg_serial): New function.
2118 (Input_reader::get_unused_symbol_count): New function.
2119 (Input_reader::get_unused_symbol): New function.
2120 (Input_reader::do_arg_serial): New function.
2121 (Input_reader::do_get_unused_symbol_count): New function.
2122 (Input_reader::do_get_unused_symbol): New function.
2123 (Incremental_binary::input_file_count): New function.
2124 (Incremental_binary::get_input_reader): Change signature to use
2125 index instead of filename.
2126 (Incremental_binary::file_has_changed): New function.
2127 (Incremental_binary::get_input_argument): New function.
2128 (Incremental_binary::get_library): New function.
2129 (Incremental_binary::get_script_info): New function.
2130 (Incremental_binary::init_layout): New function.
2131 (Incremental_binary::reserve_layout): New function.
2132 (Incremental_binary::output_file): New function.
2133 (Incremental_binary::do_check_inputs): New function.
2134 (Incremental_binary::do_file_is_unchanged): Remove.
2135 (Incremental_binary::do_file_has_changed): New function.
2136 (Incremental_binary::do_init_layout): New function.
2137 (Incremental_binary::do_reserve_layout): New function.
2138 (Incremental_binary::do_input_file_count): New function.
2139 (Incremental_binary::do_get_input_reader): Change signature.
2140 (Incremental_binary::input_args_map_): New data member.
2141 (Incremental_binary::library_map_): New data member.
2142 (Incremental_binary::script_map_): New data member.
2143 (Sized_incremental_binary::Sized_incremental_binary): Initialize
2144 new data members.
2145 (Sized_incremental_binary::output_section): New function.
2146 (Sized_incremental_binary::inputs_reader): Add const.
2147 (Sized_incremental_binary::symtab_reader): Add const.
2148 (Sized_incremental_binary::relocs_reader): Add const.
2149 (Sized_incremental_binary::got_plt_reader): Add const.
2150 (Sized_incremental_binary::get_symtab_view): New function.
2151 (Sized_incremental_binary::Inputs_reader): New typedef.
2152 (Sized_incremental_binary::Input_entry_reader): New typedef.
2153 (Sized_incremental_binary::do_check_inputs): Add cmdline parameter.
2154 (Sized_incremental_binary::do_file_is_unchanged): Remove.
2155 (Sized_incremental_binary::do_file_has_changed): New function.
2156 (Sized_incremental_binary::do_init_layout): New function.
2157 (Sized_incremental_binary::do_reserve_layout): New function.
2158 (Sized_input_reader::Inputs_reader): Remove.
2159 (Sized_input_reader::Input_entry_reader): Remove.
2160 (Sized_input_reader::do_arg_serial): New function.
2161 (Sized_input_reader::do_get_unused_symbol_count): New function.
2162 (Sized_input_reader::do_get_unused_symbol): New function.
2163 (Sized_incremental_binary::do_input_file_count): New function.
2164 (Sized_incremental_binary::do_get_input_reader): Change signature;
2165 use index instead of filename.
2166 (Sized_incremental_binary::section_map_): New data member.
2167 (Sized_incremental_binary::input_entry_readers_): New data member.
2168 (class Sized_incr_relobj): New class.
2169 (class Sized_incr_dynobj): New class.
2170 (make_sized_incremental_object): New function.
2171 (class Incremental_library): New class.
2172 * layout.cc (Free_list::num_lists): New static data member.
2173 (Free_list::num_nodes): New static data member.
2174 (Free_list::num_removes): New static data member.
2175 (Free_list::num_remove_visits): New static data member.
2176 (Free_list::num_allocates): New static data member.
2177 (Free_list::num_allocate_visits): New static data member.
2178 (Free_list::init): New function.
2179 (Free_list::remove): New function.
2180 (Free_list::allocate): New function.
2181 (Free_list::dump): New function.
2182 (Free_list::print_stats): New function.
2183 (Layout_task_runner::run): Resize output file for incremental updates.
2184 (Layout::Layout): Initialize new data members.
2185 (Layout::set_incremental_base): New function.
2186 (Layout::init_fixed_output_section): New function.
2187 (Layout::layout_eh_frame): Do not build .eh_frame_hdr section for
2188 incremental updates.
2189 (Layout::create_gold_note): Do not create gold note section for
2190 incremental updates.
2191 (Layout::set_segment_offsets): Do not recalculate RELRO alignment
2192 for incremental updates.
2193 (Layout::set_section_offsets): For incremental updates, allocate space
2194 from free list.
2195 (Layout::create_symtab_sections): Layout with offsets relative to
2196 start of section; for incremental updates, allocate space from free
2197 list.
2198 (Layout::create_shdrs): For incremental updates, allocate space from
2199 free list.
2200 (Layout::finish_dynamic_section): For incremental updates, do not
2201 check --as-needed (fixed in subsequent patch).
2202 * layout.h (class Free_list): New class.
2203 (Layout::set_incremental_base): New function.
2204 (Layout::incremental_base): New function.
2205 (Layout::init_fixed_output_section): New function.
2206 (Layout::allocate): New function.
2207 (Layout::incremental_base_): New data member.
2208 (Layout::free_list_): New data member.
2209 * main.cc (main): Print Free_list statistics.
2210 * object.cc (Relobj::finalize_incremental_relocs): Add
2211 clear_counts parameter; clear counts only when clear_counts is set.
2212 (Sized_relobj::Sized_relobj): Initialize new base class.
2213 (Sized_relobj::do_layout): Don't report special sections.
2214 (Sized_relobj::do_for_all_local_got_entries): New function.
2215 (Sized_relobj::write_local_symbols): Add symtab_off parameter; add
2216 symtab_off to all symbol table offsets.
2217 (Sized_relobj::do_get_global_symbol_counts): Add typename keyword.
2218 * object.h (class Got_offset_list): Move to top of file.
2219 (Object::Object): Allow case where input_file == NULL.
2220 (Object::~Object): Likewise.
2221 (Object::input_file): Assert that input_file != NULL.
2222 (Object::lock): Allow case where input_file == NULL.
2223 (Object::unlock): Likewise.
2224 (Object::is_locked): Likewise.
2225 (Object::token): Likewise.
2226 (Object::release): Likewise.
2227 (Object::is_incremental): New function.
2228 (Object::get_mtime): New function.
2229 (Object::for_all_local_got_entries): New function.
2230 (Object::clear_view_cache_marks): Allow case where input_file == NULL.
2231 (Object::set_is_in_system_directory): New function.
2232 (Object::is_in_system_directory): New function.
2233 (Object::do_is_incremental): New function.
2234 (Object::do_get_mtime): New function.
2235 (Object::do_for_all_local_got_entries): New function.
2236 (Object::is_in_system_directory_): New data member.
2237 (Relobj::finalize_incremental_relocs): Add clear_counts parameter.
2238 (class Sized_relobj_base): New class.
2239 (class Sized_relobj): Derive from Sized_relobj_base.
2240 (class Sized_relobj::Symbols): Redeclare from base class.
2241 (class Sized_relobj::local_got_offset_list): Remove.
2242 (class Sized_relobj::Output_sections): Redeclare from base class.
2243 (class Sized_relobj::do_for_all_local_got_entries): New function.
2244 (class Sized_relobj::write_local_symbols): Add offset parameter.
2245 (class Sized_relobj::local_symbol_offset_): Update comment.
2246 (class Sized_relobj::local_dynsym_offset_): Update comment.
2247 * options.cc (Input_arguments::add_file): Remove const.
2248 * options.h (Input_file_argument::Input_file_argument):
2249 Initialize arg_serial_ (all constructors).
2250 (Input_file_argument::set_arg_serial): New function.
2251 (Input_file_argument::arg_serial): New function.
2252 (Input_file_argument::arg_serial_): New data member.
2253 (Input_arguments::Input_arguments): Initialize file_count_.
2254 (Input_arguments::add_file): Remove const.
2255 (Input_arguments::number_of_input_files): New function.
2256 (Input_arguments::file_count_): New data member.
2257 (Command_line::number_of_input_files): Call
2258 Input_arguments::number_of_input_files.
2259 * output.cc (Output_segment_headers::Output_segment_headers):
2260 Set current size.
2261 (Output_section::Input_section::current_data_size): New function.
2262 (Output_section::Output_section): Initialize new data members.
2263 (Output_section::add_input_section): Don't do merge sections for
2264 an incremental link; allocate space from free list for an
2265 incremental update.
2266 (Output_section::add_output_section_data): Allocate space from
2267 free list for an incremental update.
2268 (Output_section::update_data_size): New function.
2269 (Output_section::set_fixed_layout): New function.
2270 (Output_section::reserve): New function.
2271 (Output_segment::set_section_addresses): Remove const.
2272 (Output_segment::set_section_list_addresses): Remove const; allocate
2273 space from free list for an incremental update.
2274 (Output_segment::set_offset): Adjust size of RELRO segment for an
2275 incremental update.
2276 * output.h (Output_data::current_data_size): Move here from
2277 child classes.
2278 (Output_data::pre_finalize_data_size): New function.
2279 (Output_data::update_data_size): New function.
2280 (Output_section_headers::update_data_size): new function.
2281 (Output_section_data_build::current_data_size): Move to Output_data.
2282 (Output_data_strtab::update_data_size): New function.
2283 (Output_section::current_data_size): Move to Output_data.
2284 (Output_section::set_fixed_layout): New function.
2285 (Output_section::has_fixed_layout): New function.
2286 (Output_section::reserve): New function.
2287 (Output_section::update_data_size): New function.
2288 (Output_section::has_fixed_layout_): New data member.
2289 (Output_section::free_list_): New data member.
2290 (Output_segment::set_section_addresses): Remove const.
2291 (Output_segment::set_section_list_addresses): Remove const.
2292 * plugin.cc (Sized_pluginobj::do_for_all_local_got_entries):
2293 New function.
2294 * plugin.h (Sized_pluginobj::do_for_all_local_got_entries):
2295 New function.
2296 * readsyms.cc (Read_symbols::do_read_symbols): Add library
2297 parameter when calling Add_symbols constructor; store argument
2298 serial number for members of a lib group.
2299 (Add_symbols::locks): Allow case where token == NULL.
2300 (Add_symbols::run): Report libraries denoted by --start-lib/--end-lib.
2301 (Read_member::~Read_member): New function.
2302 (Read_member::is_runnable): New function.
2303 (Read_member::locks): New function.
2304 (Read_member::run): New function.
2305 (Check_script::~Check_script): New function.
2306 (Check_script::is_runnable): New function.
2307 (Check_script::locks): New function.
2308 (Check_script::run): New function.
2309 (Check_library::~Check_library): New function.
2310 (Check_library::is_runnable): New function.
2311 (Check_library::locks): New function.
2312 (Check_library::run): New function.
2313 * readsyms.h (Add_symbols::Add_symbols): Add library parameter.
2314 (Add_symbols::library_): New data member.
2315 (class Read_member): New class.
2316 (class Check_script): New class.
2317 (class Check_library): New class.
2318 * reloc.cc (Read_relocs::is_runnable): Allow case where
2319 token == NULL.
2320 (Read_relocs::locks): Likewise.
2321 (Scan_relocs::locks): Likewise.
2322 (Relocate_task::locks): Likewise.
2323 (Sized_relobj::do_scan_relocs): Tell finalize_incremental_relocs
2324 to clear counters.
2325 (Sized_relobj::incremental_relocs_scan): Fix comment.
2326 (Sized_relobj::do_relocate): Pass output file offset to
2327 write_local_symbols.
2328 (Sized_relobj::incremental_relocs_write_reltype): Use reloc_size
2329 from class declaration.
2330 * script.cc (read_input_script): Allocate Script_info; pass
2331 argument serial number to report_script.
2332 * script.h (class Script_info): Move to incremental.h.
2333 * symtab.cc (Symbol_table::add_from_incrobj): New function.
2334 * symtab.h (Symbol_table::add_from_incrobj): New function.
2335 (Symbol_table::set_file_offset): New function.
2336
b961d0d7
CC
23372011-04-05 Cary Coutant <ccoutant@google.com>
2338
2339 * incremental-dump.cc (dump_incremental_inputs): Change signature
2340 to take a Sized_incremental_binary; change caller. Use readers
2341 in Sized_incremental_binary.
2342 * incremental.cc
2343 (Sized_incremental_binary::find_incremental_inputs_sections):
2344 Rename do_find_incremental_inputs_sections to this.
2345 (Sized_incremental_binary::setup_readers): New function.
2346 (Sized_incremental_binary::do_check_inputs): Check
2347 has_incremental_info_ flag; move setup code to setup_readers;
2348 use input readers.
2349 (Sized_incremental_binary::do_file_is_unchanged): New function.
2350 (Sized_incremental_binary::do_get_input_reader): New function.
2351 * incremental.h (class Incremental_binary): Move to end of file.
2352 (Incremental_binary::file_is_unchanged): New function.
2353 (Incremental_binary::do_file_is_unchanged): New function.
2354 (Incremental_binary::Input_reader): New class.
2355 (Incremental_binary::get_input_reader): New function.
2356 (class Sized_incremental_binary): Move to end of file.
2357 (Sized_incremental_binary::Sized_incremental_binary): Setup the
2358 input section reader classes.
2359 (Sized_incremental_binary::has_incremental_info): New function.
2360 (Sized_incremental_binary::inputs_reader): New function.
2361 (Sized_incremental_binary::symtab_reader): New function.
2362 (Sized_incremental_binary::relocs_reader): New function.
2363 (Sized_incremental_binary::got_plt_reader): New function.
2364 (Sized_incremental_binary::do_file_is_unchanged): New function.
2365 (Sized_incremental_binary::Sized_input_reader): New class.
2366 (Sized_incremental_binary::get_input_reader): New function.
2367 (Sized_incremental_binary::find_incremental_inputs_sections):
2368 Rename do_find_incremental_inputs_sections to this.
2369 (Sized_incremental_binary::setup_readers): New function.
2370 (Sized_incremental_binary::has_incremental_info_): New data member.
2371 (Sized_incremental_binary::inputs_reader_): New data member.
2372 (Sized_incremental_binary::symtab_reader_): New data member.
2373 (Sized_incremental_binary::relocs_reader_): New data member.
2374 (Sized_incremental_binary::got_plt_reader_): New data member.
2375 (Sized_incremental_binary::current_input_file_): New data member.
2376
a869183f
PP
23772011-04-05 Paul Pluzhnikov <ppluzhnikov@google.com>
2378
2379 PR gold/12640
2380 * dwarf_reader.cc (Sized_dwarf_line_info): Fix vector bounds
2381 violation.
2382
23832011-03-30 Cary Coutant <ccoutant@google.com>
c7975edd
CC
2384
2385 * archive.cc (Archive::include_member): Adjust call to report_object.
2386 (Add_archive_symbols::run): Add script_info to call to
2387 report_archive_begin.
2388 (Lib_group::include_member): Adjust call to report_object.
2389 (Add_lib_group_symbols::run): Adjust call to report_object.
2390 * incremental-dump.cc (dump_incremental_inputs): Remove unnecessary
2391 blocks. Add object count for script input files.
2392 * incremental.cc (Incremental_inputs::report_archive_begin): Add
2393 script_info parameter; change all callers.
2394 (Incremental_inputs::report_object): Add script_info parameter;
2395 change all callers.
2396 (Incremental_inputs::report_script): Store backpointer to
2397 incremental info entry.
2398 (Output_section_incremental_inputs::set_final_data_size): Record
2399 additional information for scripts.
2400 (Output_section_incremental_inputs::write_info_blocks): Likewise.
2401 * incremental.h (Incremental_script_entry::add_object): New function.
2402 (Incremental_script_entry::get_object_count): New function.
2403 (Incremental_script_entry::get_object): New function.
2404 (Incremental_script_entry::objects_): New data member; adjust
2405 constructor.
2406 (Incremental_inputs::report_archive_begin): Add script_info parameter.
2407 (Incremental_inputs::report_object): Add script_info parameter.
2408 (Incremental_inputs_reader::get_object_count): New function.
2409 (Incremental_inputs_reader::get_object_offset): New function.
2410 * options.cc (Input_arguments::add_file): Return reference to
2411 new input argument.
2412 * options.h (Input_argument::set_script_info): New function.
2413 (Input_argument::script_info): New function.
2414 (Input_argument::script_info_): New data member; adjust all
2415 constructors.
2416 (Input_file_group::add_file): Return reference to new input argument.
2417 (Input_file_lib::add_file): Likewise.
2418 (Input_arguments::add_file): Likewise.
2419 * readsyms.cc (Add_symbols::run): Adjust call to report_object.
2420 * script.cc (Parser_closure::Parser_closure): Add script_info
2421 parameter; adjust all callers.
2422 (Parser_closure::script_info): New function.
2423 (Parser_closure::script_info_): New data member.
2424 (read_input_script): Report scripts earlier to incremental info.
2425 (script_add_file): Set script_info in Input_argument.
2426 (script_add_library): Likewise.
2427 * script.h (Script_options::Script_info): Rewrite class.
2428
a869183f 24292011-03-29 Cary Coutant <ccoutant@google.com>
e0c52780
CC
2430
2431 * archive.cc (Library_base::should_include_member): Move
2432 method here from class Archive.
2433 (Archive::Archive): Initialize base class.
2434 (Archive::should_include_member): Move to base class.
2435 (Archive::do_for_all_unused_symbols): New function.
2436 (Add_archive_symbols::run): Remove redundant access to
2437 incremental_inputs.
2438 (Lib_group::Lib_group): Initialize base class.
2439 (Lib_group::do_filename): New function.
2440 (Lib_group::include_member): Pass pointer to Lib_group to
2441 report_object.
2442 (Lib_group::do_for_all_unused_symbols): New function.
2443 (Add_lib_group_symbols::run): Report archive information for
2444 incremental links.
2445 * archive.h (class Library_base): New base class.
2446 (class Archive): Derive from Library_base.
2447 (Archive::filename): Move to base class.
2448 (Archive::set_incremental_info): Likewise.
2449 (Archive::incremental_info): Likewise.
2450 (Archive::Should_include): Likewise.
2451 (Archive::should_include_member): Likewise.
2452 (Archive::Armap_entry): Remove.
2453 (Archive::Unused_symbol_iterator): Remove.
2454 (Archive::unused_symbols_begin): Remove.
2455 (Archive::unused_symbols_end): Remove.
2456 (Archive::do_filename): New function.
2457 (Archive::do_get_mtime): New function.
2458 (Archive::do_for_all_unused_symbols): New function.
2459 (Archive::task_): Move to base class.
2460 (Archive::incremental_info_): Likewise.
2461 (class Lib_group): Derive from Library_base.
2462 (Lib_group::do_filename): New function.
2463 (Lib_group::do_get_mtime): New function.
2464 (Lib_group::do_for_all_unused_symbols): New function.
2465 (Lib_group::task_): Move to base class.
2466 * dynobj.cc (Sized_dynobj::do_for_all_global_symbols): New
2467 function.
2468 * dynobj.h (Sized_dynobj::do_for_all_global_symbols): New
2469 function.
2470 * incremental.cc (Incremental_inputs::report_archive_begin):
2471 Use Library_base; call library's get_mtime; add incremental inputs
2472 entry before members.
2473 (class Unused_symbol_visitor): New class.
2474 (Incremental_inputs::report_archive_end): Use Library_base; use
2475 visitor class to record unused symbols; don't add incremental inputs
2476 entry after members.
2477 (Incremental_inputs::report_object): Use Library_base.
2478 * incremental.h
2479 (Incremental_archive_entry::Incremental_archive_entry): Remove
2480 unused Archive parameter.
2481 (Incremental_inputs::report_archive_begin): Use Library_base.
2482 (Incremental_inputs::report_archive_end): Likewise.
2483 (Incremental_inputs::report_object): Likewise.
2484 * object.cc (Sized_relobj::do_for_all_global_symbols): New
2485 function.
2486 * object.h (Object::for_all_global_symbols): New function.
2487 (Object::do_for_all_global_symbols): New function.
2488 (Sized_relobj::do_for_all_global_symbols): New function.
2489 * plugin.cc (Sized_pluginobj::do_for_all_global_symbols): New
2490 function.
2491 * plugin.h (Sized_pluginobj::do_for_all_global_symbols): New
2492 function.
2493
61ab3e40
ILT
24942011-03-27 Ian Lance Taylor <iant@google.com>
2495
2496 * archive.cc (Archive::interpret_header): Return -1 if something
2497 goes wrong. Change callers accordingly.
2498
30e1f9e6
CC
24992011-03-25 Cary Coutant <ccoutant@google.com>
2500
2501 * testsuite/Makefile.am (final_layout.stdout): Use -n option with nm.
2502 * testsuite/Makefile.in: Regenerate.
2503
9370ce59 25042011-03-23 Rafael Ávila de Espíndola <respindola@mozilla.com>
9c793f14
RÁE
2505
2506 * plugin.cc (get_view): New.
2507 (Plugin::load): Pass get_view to the plugin.
2508 (Plugin_manager::get_view): New.
2509
9312bb0a
ILT
25102011-03-21 Ian Lance Taylor <iant@google.com>
2511
2512 * testsuite/final_layout.sh: Rewrite to not use dc.
07aead7b 2513 * testsuite/relro_test.sh: Fail if dc is not present.
9312bb0a 2514
7e12ba9e
ST
25152011-03-21 Sriraman Tallam <tmsriram@google.com>
2516
2517 * testsuite/icf_safe_so_test.sh: Add #!/bin/sh to start.
2518 Change == to -eq.
2519 * testsuite/icf_string_merge_test.sh: Add #!/bin/sh to start.
2520 * testsuite/icf_safe_test.sh: Add #!/bin/sh to start.
2521 Change == to -eq.
2522 * testsuite/icf_sht_rel_addend_test.sh: Add #!/bin/sh to start.
2523 * testsuite/icf_preemptible_functions_test.sh: Add #!/bin/sh to start.
2524
fd7a005d
ILT
25252011-03-14 Ian Lance Taylor <iant@google.com>
2526
2527 * script-sections.cc (Sort_output_sections::script_compare):
2528 Rename from is_before, change return type.
2529 (Sort_output_sections::operator()): Adjust accordingly.
2530
ed16fd1b
ILT
25312011-03-11 Jeffrey Yasskin <jyasskin@google.com>
2532
2533 PR gold/12572
2534 * testsuite/odr_violation2.cc: Add comment to make all error line
2535 numbers double digits.
2536 * testsuite/debug_msg.sh: Adjust expected errors.
2537
71ff8986
ILT
25382011-03-09 Jeffrey Yasskin <jyasskin@google.com>
2539
2540 * dwarf_reader.cc (Sized_dwarf_line_info): Include all lines,
2541 but mark earlier ones as non-canonical
2542 (offset_to_iterator): Update search target and example
2543 (do_addr2line): Return extra lines in a vector*
2544 (format_file_lineno): Extract from do_addr2line
2545 (one_addr2line): Add vector* out-param
2546 * dwarf_reader.h (Offset_to_lineno_entry): New field recording
2547 when a lineno entry appeared last for its instruction
2548 (Dwarf_line_info): Add vector* out-param
2549 * object.cc (Relocate_info): Pass NULL for the vector* out-param
2550 * symtab.cc (Odr_violation_compare): Include the lineno in the
2551 comparison again.
2552 (linenos_from_loc): New. Combine the canonical line for an
2553 address with its other lines.
2554 (True_if_intersect): New. Helper functor to make
2555 std::set_intersection a query.
2556 (detect_odr_violations): Compare sets of lines instead of just
2557 one line for each function. This became less deterministic, but
2558 has fewer false positives.
2559 * symtab.h: Declarations.
2560 * testsuite/Makefile.am (odr_violation2.o): Compile with -O2 to
2561 mix an optimized and non-optimized object in the same binary
2562 (odr_violation2.so): Same.
2563 * testsuite/Makefile.in: Regenerate from Makefile.am.
2564 * testsuite/debug_msg.cc (main): Make OdrDerived classes.
2565 * testsuite/debug_msg.sh: Update line numbers and add
2566 assertions.
2567 * testsuite/odr_violation1.cc: Use OdrDerived, in a
2568 non-optimized context.
2569 * testsuite/odr_violation2.cc: Make sure Ordering::operator()
2570 isn't inlined, and use OdrDerived in an optimized context.
2571 * testsuite/odr_header1.h: Defines OdrDerived, where
2572 optimization will change the
2573 first-instruction-in-the-destructor's file and line number.
2574 * testsuite/odr_header2.h: Defines OdrBase.
2575
a19fefdc
ILT
25762011-03-09 Ian Lance Taylor <iant@google.com>
2577
2578 * fileread.cc (File_read::clear_views): Don't delete the whole
2579 file view.
2580
ecb351e9
ILT
25812011-03-08 Ian Lance Taylor <iant@google.com>
2582
2583 PR gold/12525
2584 * fileread.cc: #include <climits>.
2585 (GOLD_IOV_MAX): Define.
2586 (File_read::read_multiple): Limit number of entries by iov_max.
2587 * fileread.h (class File_read): Always set max_readv_entries to
2588 128.
2589
b821d13c
ILT
25902011-03-07 Ian Lance Taylor <iant@google.com>
2591
2592 PR gold/12525
2593 * options.h (class General_options): Add -dy and -dn.
2594
89243142
CC
25952011-03-02 Cary Coutant <ccoutant@google.com>
2596
2597 * testsuite/script_test_9.t: Add TLS segment.
2598
d0773f31
ILT
25992011-03-02 Simon Baldwin <simonb@google.com>
2600
2601 * configure.ac: Add check for gnu_indirect_function support in
2602 the toolchain building binutils.
2603 * configure: Rebuild.
2604
9370ce59 26052011-02-18 Rafael Ávila de Espíndola <respindola@mozilla.com>
badc8139
RÁE
2606
2607 * symtab.cc (Symbol::should_add_dynsym_entry) Return false for
2608 plugin only symbols.
2609 (Symbol_table::sized_finalize_symbol) Mark symbol only present
2610 in plugin files as not needed in the symbol table.
2611
4cf7a849
ST
26122011-02-11 Sriraman Tallam <tmsriram@google.com>
2613
2614 * output.cc (Output_section::add_input_section): Delay fill
2615 generation for section ordering.
2616
b578bd7d
ILT
26172011-02-09 Ian Lance Taylor <iant@google.com>
2618
2619 PR gold/12316
2620 * object.h (class Sized_relobj): Remove clear_local_symbols.
2621 * reloc.cc (Sized_relobj::do_relocate): Don't call
2622 clear_local_symbols.
2623
9370ce59 26242011-02-08 Rafael Ávila de Espíndola <respindola@mozilla.com>
84ced98a
RÁE
2625
2626 * plugin.cc (is_visible_from_outside): Return true for symbols
2627 in the -u option.
2628
55382fb7
ILT
26292011-02-04 Jeffrey Yasskin <jyasskin@google.com>
2630
2631 * symtab.cc (Odr_violation_compare::operator()): Sort by just the
2632 filename.
2633
4e271fff
ST
26342011-02-02 Sriraman Tallam <tmsriram@google.com>
2635
2636 * icf.h (is_section_foldable_candidate): Change type of parameter
2637 to std::string.
2638 * icf.cc (Icf::find_identical_sections): Change type of local variable
2639 section_name to be std::string.
2640 (is_function_ctor_or_dtor): Change type of parameter to std::string.
2641
d433c3ac
ILT
26422011-01-25 Ian Lance Taylor <iant@google.com>
2643
2644 * script.cc (script_add_extern): Rewrite to use
2645 add_symbol_reference.
2646
880473a6
DK
26472011-01-25 Doug Kwan <dougkwan@google.com>
2648
d433c3ac 2649 * icf.cc (get_section_contents): Always lock section's object.
880473a6 2650
f30f86fa
ILT
26512011-01-24 Ian Lance Taylor <iant@google.com>
2652
2653 * options.h (class General_options): Accept
2654 --no-detect-odr-violations.
2655
8e51a0b9
ILT
26562011-01-24 Ian Lance Taylor <iant@google.com>
2657
2658 * version.cc (version_string): Bump to 1.11.
2659
0f3b89d8
ILT
26602011-01-24 Ian Lance Taylor <iant@google.com>
2661
2662 * plugin.cc (class Plugin_rescan): Define new class.
2663 (Plugin_manager::claim_file): Set any_claimed_.
2664 (Plugin_manager::save_archive): New function.
2665 (Plugin_manager::save_input_group): New function.
2666 (Plugin_manager::all_symbols_read): Create Plugin_rescan task if
2667 necessary.
2668 (Plugin_manager::new_undefined_symbol): New function.
2669 (Plugin_manager::rescan): New function.
2670 (Plugin_manager::rescannable_defines): New function.
2671 (Plugin_manager::add_input_file): Set any_added_.
2672 * plugin.h (class Plugin_manager): define new fields rescannable_,
2673 undefined_symbols_, any_claimed_, and any_added_. Declare
2674 Plugin_rescan as friend. Declare new functions.
2675 (Plugin_manager::Rescannable): Define type.
2676 (Plugin_manager::Rescannable_list): Define type.
2677 (Plugin_manager::Undefined_symbol_list): Define type.
2678 (Plugin_manager::Plugin_manager): Initialize new fields.
2679 * archive.cc (Archive::defines_symbol): New function.
2680 (Add_archive_symbols::run): Pass archive to plugins if any.
2681 * archive.h (class Archive): Declare defines_symbol.
2682 * readsyms.cc (Input_group::~Input_group): New function.
2683 (Finish_group::run): Pass input_group to plugins if any.
2684 * readsyms.h (class Input_group): Declare destructor.
2685 * symtab.cc (add_from_object): Pass undefined symbol to plugins if
2686 any.
2687
3bb951e5
ILT
26882011-01-10 Ian Lance Taylor <iant@google.com>
2689
2690 * layout.cc (Layout::layout_eh_frame): Mark a writable .eh_frame
2691 section as relro.
2692 (Layout::set_segment_offsets): Reset increase_relro before calling
2693 set_section_addresses a second time.
2694
0aa45fac
CC
26952011-01-04 Cary Coutant <ccoutant@google.com>
2696
2697 * script-sections.cc (Sort_output_sections::operator()): Sort TLS
2698 sections before NOBITS sections.
2699
0db46eb4
L
27002011-01-01 H.J. Lu <hongjiu.lu@intel.com>
2701
2702 * version.cc (print_version): Update copyright to 2011.
2703
829c9745
CC
27042010-12-23 Cary Coutant <ccoutant@google.com>
2705
2706 * output.h (Output_data_reloc::add_output_section): Pass OD instead
2707 of OS to this->add. Add OD parameter to second form of the function.
2708
7500420b
ILT
27092010-12-20 Ian Lance Taylor <iant@google.com>
2710
2711 * dwarf_reader.cc (Sized_dwarf_line_info::read_lines): Only keep
2712 second of two consecutive entries with same offset.
2713
f8e9a930
RW
27142010-12-16 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
2715
2716 * testsuite/Makefile.am (ifuncmain2static_LDADD)
2717 (ifuncmain2_LDADD, ifuncmain4static_LDADD, ifuncmain4_LDADD)
2718 (ifuncmain7static_LDADD, ifuncmain7_LDADD): New empty variables,
2719 to avoid unneeded links against $(LDADD).
2720 * testsuite/Makefile.in: Regenerate.
2721
2fbb4320
ILT
27222010-12-15 Ian Lance Taylor <iant@google.com>
2723
2724 PR gold/12324
2725 * x86_64.cc (Target_x86_64::Scan::check_non_pic): Give an error
2726 for R_X86_64_32 and R_X86_64_PC32.
2727 * testsuite/Makefile.am (ver_matching_def.so): Depend on and use
2728 ver_matching_def_pic.o.
2729 (ver_matching_def_pic.o): New target.
2730
fedb228d
RW
27312010-12-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
2732
2733 * fileread.cc (file_counts_lock, file_counts_initialize_lock)
2734 (total_mapped_bytes, current_mapped_bytes, maximum_mapped_bytes):
2735 Move definition before File_read::View member definitions.
2736 (File_read::View::~View): Initialize and hold lock before
2737 updating current_mapped_bytes.
2738
9b547ce6
RW
27392010-12-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
2740
2741 * dwarf_reader.cc: Remove outdated comment.
2742 * gold-threads.cc: Fix typo in error message.
2743 * archive.cc: Fix typos in comments.
2744 * archive.h: Likewise.
2745 * arm-reloc-property.cc: Likewise.
2746 * arm-reloc-property.h: Likewise.
2747 * arm-reloc.def: Likewise.
2748 * arm.cc: Likewise.
2749 * attributes.h: Likewise.
2750 * cref.cc: Likewise.
2751 * ehframe.cc: Likewise.
2752 * fileread.h: Likewise.
2753 * gold.h: Likewise.
2754 * i386.cc: Likewise.
2755 * icf.cc: Likewise.
2756 * incremental.h: Likewise.
2757 * int_encoding.cc: Likewise.
2758 * layout.h: Likewise.
2759 * main.cc: Likewise.
2760 * merge.h: Likewise.
2761 * object.cc: Likewise.
2762 * object.h: Likewise.
2763 * options.cc: Likewise.
2764 * readsyms.cc: Likewise.
2765 * reduced_debug_output.cc: Likewise.
2766 * reloc.cc: Likewise.
2767 * script-sections.cc: Likewise.
2768 * sparc.cc: Likewise.
2769 * symtab.h: Likewise.
2770 * target-reloc.h: Likewise.
2771 * target.cc: Likewise.
2772 * target.h: Likewise.
2773 * timer.cc: Likewise.
2774 * timer.h: Likewise.
2775 * x86_64.cc: Likewise.
2776
83e17bd5
CC
27772010-12-09 Cary Coutant <ccoutant@google.com>
2778
2779 * layout.cc (Layout::layout_gnu_stack): Add warnings for executable
2780 stack.
2781 * layout.h (Layout::layout_gnu_stack): Add pointer to Object
2782 parameter; change all callers.
2783 * object.cc (Sized_relobj::do_layout): Adjust call to layout_gnu_stack.
2784 * options.h (warn_execstack): New option.
2785
017257f8
DK
27862010-12-07 Doug Kwan <dougkwan@google.com>
2787
2788 * arm.cc (Target_arm::Scan::get_reference_flags): Treat R_ARM_PREL31
2789 like function call relocations.
2790
c20cbc06
ILT
27912010-12-07 Ian Lance Taylor <iant@google.com>
2792
2793 * archive.cc (Archive::get_elf_object_for_member): Permit
2794 punconfigured to be NULL.
2795 (Archive::read_symbols): Pass NULL to get_elf_object_for_member.
2796 (Archive::include_member): Pass NULL to get_elf_object_for_member
2797 if we searched for the archive and this is the first included
2798 object.
2799
4dbfafcc
ILT
28002010-12-01 Ian Lance Taylor <iant@google.com>
2801
2802 * dwarf_reader.h (class Sized_dwarf_line_info): Add
2803 track_relocs_type_ field.
2804 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
2805 Set track_relocs_type_.
2806 (Sized_dwarf_line_info::process_one_opcode): Ignore the section
2807 contents when using RELA relocs.
2808 (Sized_dwarf_line_info::read_relocs): Add the reloc addend to
2809 reloc_map_.
2810 * reloc.cc (Track_relocs::next_addend): New function.
2811 * reloc.h (class Track_relocs): Declare next_addend.
2812
e5e19edd
ILT
28132010-12-01 Ian Lance Taylor <iant@google.com>
2814
2815 * testsuite/icf_virtual_function_folding_test.cc (class Bar): Add
2816 virtual destructor.
2817
9a5ce24c
ILT
28182010-12-01 Ian Lance Taylor <iant@google.com>
2819
2820 * README: Update compilers known to work and fail.
2821
c7791212
NC
28222010-11-23 Matthias Klose <doko@ubuntu.com>
2823
2824 * configure.in: For --enable-gold, handle value `default' instead of
2825 `both*'. Always install ld as ld.bfd, install as ld if gold is
2826 not the default.
2827 * configure: Regenerate.
2828
0ad220c9
DK
28292010-11-18 Doug Kwan <dougkwan@google.com>
2830
2831 * expression.cc (BINARY_EXPRESSION): Initialize left_alignment
2832 and right_alignment to be zero. Store result alignment only if it is
2833 greater than existing alignment.
2834
ab8056e0
CC
28352010-11-16 Cary Coutant <ccoutant@google.com>
2836
2837 PR gold/12220
2838 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
2839 Check for ".zdebug_line".
2840
fd064a5b
CC
28412010-11-16 Doug Kwan <dougkwan@google.com>
2842 Cary Coutant <ccoutant@google.com>
2843
2844 * output.h (Output_segment::set_section_addresses): Pass increase_relro
2845 by reference; adjust all callers.
2846 * output.cc (Output_segment::set_section_addresses): Adjust references
2847 to increase_relro. Add padding to *increase_relro when ORDER_RELRO_LAST
2848 list is empty.
2849 (Output_segment::set_offset): Assert if PT_GNU_RELRO segment does not
2850 end at page boundary.
2851
6fc6ea19
CC
28522010-11-16 Cary Coutant <ccoutant@google.com>
2853
2854 PR gold/12220
2855 * layout.cc (Layout::choose_output_section): Transform names of
2856 compressed sections even when using a script with a SECTIONS clause.
2857 (Layout::output_section_name): Remove code to transform
2858 compressed debug section names.
2859 * output.cc (Output_section::add_input_section): Use uncompressed
2860 section size when tracking input sections.
2861
95a2c8d6
RS
28622010-11-11 Richard Sandiford <richard.sandiford@linaro.org>
2863
2864 * symtab.h (Symbol::NON_PIC_REF): Remove.
2865 (Symbol::RELATIVE_REF, Symbol::TLS_REF): New Reference_flags.
2866 (Symbol::FUNCTION_CALL): Renumber. Reword comment.
2867 (Symbol::needs_dynamic_reloc): Don't check NON_PIC_REF.
2868 (Symbol::use_plt_offset): Take a flags argument and pass it
2869 directly to needs_dynamic_reloc. Restrict check for undefined
2870 weak symbols to function calls.
2871 * arm.cc (Target_arm::Scan::get_reference_flags): New function.
2872 (Target_arm::Scan::global): Use it.
2873 (Target_arm::Scan::scan_reloc_for_stub): Likewise.
2874 (Target_arm::Relocate::relocate): Likewise.
2875 (Target_arm::Relocate::should_apply_static_reloc): Replace flags
2876 parameter with an r_type parameter. Use get_reference_flags
2877 to get the flags.
2878 (Target_arm::Relocate::relocate): Update accordingly.
2879 * i386.cc (Target_i386::Scan::get_reference_flags): New function.
2880 (Target_i386::Scan::reloc_needs_plt_for_ifunc): Use it.
2881 (Target_i386::Scan::global): Likewise.
2882 (Target_i386::Relocate::relocate): Likewise.
2883 (Target_i386::Relocate::should_apply_static_reloc): Replace flags
2884 parameter with an r_type parameter. Use get_reference_flags
2885 to get the flags.
2886 (Target_i386::Relocate::relocate): Update accordingly.
2887 * powerpc.cc (Target_powerpc::Scan::get_reference_flags): New function.
2888 (Target_powerpc::Scan::global): Use it.
2889 (Target_powerpc::Scan::scan_reloc_for_stub): Likewise.
2890 (Target_powerpc::Relocate::relocate): Likewise.
2891 * sparc.cc (Target_sparc::Scan::get_reference_flags): New function.
2892 (Target_sparc::Scan::global): Use it.
2893 (Target_sparc::Scan::scan_reloc_for_stub): Likewise.
2894 (Target_sparc::Relocate::relocate): Likewise.
2895 * x86_64.cc (Target_x86_64::Scan::get_reference_flags): New function.
2896 (Target_x86_64::Scan::reloc_needs_plt_for_ifunc): Use it.
2897 (Target_x86_64::Scan::global): Likewise.
2898 (Target_x86_64::Relocate::relocate): Likewise.
2899
f625ae50
DK
29002010-11-08 Doug Kwan <dougkwan@google.com>
2901 Cary Coutant <ccoutant@google.com>
2902
2903 * arm.cc (Arm_exidx_merge_section::build_contents): New method.
2904 (Arm_exidx_merge_section::section_contents_): New data member.
2905 (Arm_input_section::Arm_input_section): Initialize original_contents_.
2906 (Arm_input_section::~Arm_input_section): De-allocate memory.
2907 (Arm_input_section::original_contents_): New data member.
2908 (Arm_exidx_fixup::process_exidx_section): Pass EXIDX section contents
2909 in parameters instead of calling Object::section_contents without
2910 locking.
2911 (Arm_output_section::group_section): New parameter TASK. Pass it
2912 to callees that need locking objects.
2913 (Arm_output_section::fix_exidx_coverage): New parameter TASK. Use it
2914 to lock EXIDX input sections. Fix a formatting issue. Call
2915 Arm_exidx_merged_section::build_contents to create merged section
2916 contents.
2917 (Arm_output_section::create_stub_group): New parameter TASK. Use it
2918 to lock object of stub table owner.
2919 (Arm_exidx_input_section::Arm_exidx_input_section): Add new parameter
2920 TEXT_SIZE to initialize data member TEXT_SIZE_.
2921 (Arm_exidx_input_section::addralign): Fix typo in comment.
2922 (Arm_exidx_input_section::text_size): New method.
2923 (Target_arm::do_relax): New parameter TASK. Pass it to callees
2924 that require locking objects. Lock objects before scanning for stubs
2925 and updating local symbols.
2926 (Arm_input_section<big_endian>::init): Copy contents of original
2927 input section.
2928 (Arm_input_section<big_endian>::do_write): Use saved contents of
2929 original input section instead of calling Object::section_contents
2930 without locking.
2931 (Arm_exidx_cantunwind::do_fixed_endian_write): Find out text section
2932 size without calling Object::section_size().
2933 (Arm_exidx_merged_section::Arm_exidx_merged_section): Add sanity check
2934 for size. Allocate a buffer for merged EXIDX entries.
2935 (Arm_exidx_merged_section::build_contents): New method.
2936 (Arm_exidx_merged_section::do_write): Move merge section contents
2937 building code to Arm_exidx_merged_section::build_contetns. Write
2938 out contetns in buffer instead of building it on the fly.
2939 (Arm_relobj::make_exidx_input_section): Also pass text section size
2940 to Arm_exidx_input_section constructor.
2941 (Arm_relobj::do_read_symbols): Fix memory leak. Fix a formatting issue.
2942 (Arm_dynobj::do_read_symbols): Fix memory leak.
2943 * layout.cc (Layout::finalize): Pass TASK to Target::relax().
2944 * target.h: (class Task): Add forward declaration.
2945 (Target::relax): Add new parameter TASK and pass it to
2946 Target::do_relax().
2947 (Target::do_relax):: New parameter TASK. Fix a formatting issue.
2948
5f9bcf58
CC
29492010-11-05 Cary Coutant <ccoutant@google.com>
2950
2951 PR gold/10708
2952 * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Hold a lock on the
2953 object when reading from the file.
2954 * gold.cc (queue_middle_tasks): Hold a lock on the object when doing
2955 second layout pass.
2956 * icf.cc (preprocess_for_unique_sections): Hold a lock on the object
2957 when reading section contents.
2958 (get_section_contents): Likewise.
2959 (icf::find_identical_sections): Likewise.
2960 * mapfile.cc (Mapfile::print_discarded_sections): Hold a lock on the
2961 object when reading from the file.
2962 * plugin.cc (Plugin_manager::layout_deferred_objects): Hold a lock on
2963 the object when doing deferred section layout.
2964
e597fa08
NC
29652010-11-03 Nick Clifton <nickc@redhat.com>
2966
2967 PR gold/12001
2968 * script.h (class Symbol_assignment: name): New member. Returns
2969 the name of the symbol.
2970 * scrfipt.cc (Script_options::is_pending_assignment): New member.
2971 Returns true if the given symbol name is on the list of
2972 assignments wating to be processed.
2973 * archive.cc (should_incldue_member): If the symbol is undefined,
2974 check to see if it is on the list of symbols pending assignment.
2975
3f9a3278
ILT
29762010-11-03 Ryan Mansfield <rmansfield@qnx.com>
2977
2978 * script-sections.cc (Script_sections::find_memory_region): Check
2979 for a NULL output section pointer.
2980
d06fb4d1
DK
29812010-10-29 Doug Kwan <dougkwan@google.com>
2982
2983 * arm.cc (Arm_outout_section::fix_exidx_coverage): Adjust call to
2984 Output_section::add_relaxed_input_section.
2985 * output.cc (Output_section::add_relaxed_input_section): Add new
2986 arguments LAYOUT and NAME. Set section order index.
2987 (Output_section::convert_input_sections_in_list_to_relaxed_sections):
2988 Copy section order index.
2989 * output.h (Output_section::add_relaxed_input_section): Add new
2990 arguments LAYOUT and NAME.
2991
90e24de5
ILT
29922010-10-29 Viktor Kutuzov <vkutuzov@accesssoftek.com>
2993
2994 * testsuite/Makefile.am: Move gcctestdir/ld rule to
2995 NATIVE_OR_CROSS_LINKER.
2996 * testsuite/Makefile.in: Regenerate.
2997
c9484ea5
DK
29982010-10-20 Doug Kwan <dougkwan@google.com>
2999
3000 * arm.cc (Arm_relobj::do_read_symbols): Warn about ARM EXIDX sections
3001 without SHF_LINK_ORDER flags.
3002 * layout.cc (Layout::choose_output_section): Do not filter
3003 SHF_LINK_ORDER flag in a relocatable link.
3004
5bc2f5be
CC
30052010-10-17 Cary Coutant <ccoutant@google.com>
3006
3007 * output.h (Output_segment::set_section_addresses): Change function
3008 signature. Update all callers.
3009 * output.cc (Output_segment::is_first_section_relro): Ignore TLS
3010 sections.
3011 (Output_segment::set_section_addresses): Align after last TLS
3012 section. Add padding before last relro section instead of after.
3013
0c91cf04
DK
30142010-10-17 Doug Kwan <dougkwan@google.com>
3015
3016 * gold/arm.cc (Target_arm::got_section): Use correct order and set
3017 GOT output section to be writable.
3018
8c21d9d3
CC
30192010-10-14 Cary Coutant <ccoutant@google.com>
3020
3021 * debug.h (DEBUG_INCREMENTAL): New flag.
3022 (debug_string_to_enum): Add DEBUG_INCREMENTAL).
3023 * gold.cc (queue_initial_tasks): Check parameters for incremental link
3024 mode.
3025 * incremental.cc (report_command_line): Ignore all forms of
3026 --incremental.
3027 * layout.cc (Layout::Layout): Check parameters for incremental link
3028 mode.
3029 * options.cc (General_options::parse_incremental): New function.
3030 (General_options::parse_no_incremental): New function.
3031 (General_options::parse_incremental_full): New function.
3032 (General_options::parse_incremental_update): New function.
3033 (General_options::incremental_mode_): New data member.
3034 (General_options::finalize): Check incremental_mode_.
3035 * options.h (General_options): Update help text for --incremental.
3036 Add --no-incremental, --incremental-full, --incremental-update.
3037 (General_options::Incremental_mode): New enum type.
3038 (General_options::incremental_mode): New function.
3039 (General_options::incremental_mode_): New data member.
3040 * parameters.cc (Parameters::incremental_mode_): New data member.
3041 (Parameters::set_options): Set incremental_mode_.
3042 (Parameters::set_incremental_full): New function.
3043 (Parameters::incremental): New function.
3044 (Parameters::incremental_update): New function.
3045 (set_parameters_incremental_full): New function.
3046 * parameters.h (Parameters::set_incremental_full): New function.
3047 (Parameters::incremental): New function.
3048 (Parameters::incremental_update): New function.
3049 (Parameters::incremental_mode_): New data member.
3050 (set_parameters_incremental_full): New function.
3051 * plugin.cc (Plugin_manager::add_input_file): Check parameters for
3052 incremental link mode.
3053 * reloc.cc (Sized_relobj::do_read_relocs): Likewise.
3054 (Sized_relobj::do_relocate_sections): Likewise.
3055 * testsuite/Makefile.am (incremental_test): Use --incremental-full
3056 option.
3057 * testsuite/Makefile.in: Regenerate.
3058 * testsuite/incremental_test.sh: Filter all forms of --incremental.
3059
bb32aa18 30602010-10-12 Viktor Kutuzov <vkutuzov@accesssoftek.com>
eb373049
ILT
3061
3062 * script-sections.h (class Script_sections): Make
3063 Sections_elements typedef public.
3064 * script-sections.cc (class Sort_output_sections): Add elements_
3065 field. Add constructor which sets it; change all callers.
3066 (Sort_output_sections::is_before): New function.
3067 (Sort_output_sections::operator()): Call is_before.
3068 * configure.ac (NATIVE_OR_CROSS_LINKER): New automake
3069 conditional.
3070 * testsuite/script_test_10.sh: New test. Test script section
3071 order.
3072 * testsuite/script_test_10.t: Likewise.
3073 * testsuite/script_test_10.s: Likewise.
3074 * testsuite/Makefile.am: Wrap the cross linker tests and the
3075 common tests into NATIVE_OR_CROSS_LINKER.
3076 (check_SCRIPTS): Add script_test_10.sh.
3077 (check_DATA): Add script_test_10.stdout.
3078 (script_test_10.o, script_test_10): New targets.
3079 (script_test_10.stdout): New target.
3080 * configure, testsuite/Makefile.in: Regenerate.
3081
3cef7179
ILT
30822010-10-12 Viktor Kutuzov <vkutuzov@accesssoftek.com>
3083
3084 * arm.cc (Target_arm::Scan::local): Report the unsupported reloc
3085 error for the deprecated relocations.
3086 (Target_arm::Scan::global): Likewise.
3087 (Target_arm::Relocate::relocate): Likewise.
3088
7411e9a8
RS
30892010-10-12 Richard Sandiford <richard.sandiford@linaro.org>
3090
3091 * fileread.cc (Input_file::find_file): Initialize *found_name
3092 and *namep when using the fallback search for case 4.
3093
6a9da32a
CC
30942010-10-11 Cary Coutant <ccoutant@google.com>
3095
3096 * options.h (class General_options): Redefine -z lazy as an alias for
3097 the negation of -z now.
3098
ac897c20
ILT
30992010-10-11 Ian Lance Taylor <iant@google.com>
3100
3101 * resolve.cc (symbol_to_bits): Report the value of the unsupported
3102 binding.
3103
ea5cae92
NC
31042010-10-06 Nick Clifton <nickc@redhat.com>
3105
3106 * script-sections.cc(class Memory_region): Remove
3107 current_lma_offset_ field. Rename current_vma_offset_ to
3108 current_offset_. Add last_section_ field.
3109 (Memory_region::get_current_vma_address): Rename to
3110 get_current_address.
3111 (Memory_region::get_current_lma_address): Delete.
3112 (Memory_region::increment_vma_offset): Rename to
3113 increment_offset.
3114 (Memory_region::increment_lma_offset): Delete.
3115 (Memory_region::attributes_compatible): New method. Returns
3116 true if the provided section is compatible with the region.
3117 (Memory_region::get_last_section): New method. Returns the last
3118 section to use the region.
3119 (Memory_region::set_last_section): New method. Stores the last
3120 section to use the region.
3121 (Script_sections::block_in_region): New method. Returns true if
3122 a block of memory is contained within a region.
3123 (Script_sections::find_memory_region): New method. Locates a
3124 memory region to be used to set a VMA or LMA address.
3125 (Output_section_definition::set_section_addresses): Add code to
3126 check for addresses set by memory regions.
3127 (Output_segment::set_section_addresses): Remove memory region
3128 walking code.
3129 (Script_sections::create_segment): Add a warning if a header
3130 segment is created outside of any region.
3131 * script-sections.h (class Script_sections): Add prototypes for
3132 find_memory_region and block_in_region methods.
3133 * testsuite/memory_test.s: Use .long instead of .word.
3134 * testsuite/memory_test.t: Add some more output sections.
3135 * testsuite/memory_test.sh: Update expected output.
3136
a9bfd952
DK
31372010-10-02 Doug Kwan <dougkwan@google.com>
3138
3139 * symtab.cc (Symbol_table::Symbol_table_hash::operator()): Move
3140 defintion to symtab.h
3141 * symtab.h (Symbol_table::Symbol_table_hash::operator()): Change
3142 declaration to defintion.
3143
bacff3ab
NC
31442010-10-01 Nick Clifton <nickc@redhat.com>
3145
3146 * expression.cc (eval): Replace dummy argument with NULL.
3147 (eval_maybe_dot): Check for a NULL result section pointer.
3148 (Symbol_expression::value): Likewise.
3149 (Dot_expression::value): Likewise.
3150 (BINARY_EXPRESSION): Likewise.
3151 (Max_expression::value): Likewise.
3152 (Min_expression::value): Likewise.
3153 (Absolute_expression::value): Likewise.
3154 (Addr_expression::value_from_output_section): Likewise.
3155 (Loaddddr_expression::value_from_output_section): Likewise.
3156 (Segment_start_expression::value): Likewise.
3157 * script-sections.cc
3158 (Sections_elememt_dot_assignment::finalize_symbols): Replace dummy
3159 argument with NULL.
3160 (Sections_elememt_dot_assignment::set_section_addresses):
3161 Likewise.
3162 (Output_data_expression::do_write_to_buffer): Likewise.
3163 (Output_section_definition::finalize_symbols): Likewise.
3164 (Output_section_definition::set_section_addresses): Likewise.
3165
f81bc8b5
DK
31662010-09-30 Doug Kwan <dougkwan@google.com>
3167
3168 * gold/testsuite/arm_branch_out_of_range.sh: Fix broken tests.
3169
c95e9f27
ST
31702010-09-28 Sriraman Tallam <tmsriram@google.com>
3171
3172 * target.h (Target::can_icf_inline_merge_sections): New virtual
bacff3ab 3173 function.
c95e9f27
ST
3174 * x86_64.cc (Target__x86_64::can_icf_inline_merge_sections): New
3175 virtual function.
3176 * i386.cc (Target_i386::can_icf_inline_merge_sections): New
3177 virtual function.
3178 * icf.cc (get_section_contents): Inline merge sections only when
3179 target allows it.
3180
3cac54d2
RW
31812010-09-27 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
3182
3183 * configure: Regenerate.
3184
2904037a
ILT
31852010-09-17 Ian Lance Taylor <iant@google.com>
3186
3187 * testsuite/memory_test.sh: Adjust for change of 2010-09-10.
d4d91489
ILT
3188 * testsuite/Makefile.am (memory_test.o): New target.
3189 (memory_test): Depend on memory_test.o, gcctestdir/ld, and
3190 memory_test.t.
3191 * testsuite/Makefile.in: Rebuild.
2904037a 3192
bca7fb63
DK
31932010-09-17 Doug Kwan <dougkwan@google.com>
3194
3195 * arm.cc (Target_arm::Relocate::relocate): Ignore symbol type and
3196 defintion if relocation uses GOT entries of the symbol.
3197 * testsuite/icf_safe_test.sh: Fix test.
3198 * testsuite/icf_safe_so_test.sh: Fix test.
3199
4ef28648
CC
32002010-09-16 Cary Coutant <ccoutant@google.com>
3201
3202 * script_sections.cc (class Memory_region): Remove "NULL" from
3203 vector initializations.
3204
793990de
CC
32052010-09-15 Cary Coutant <ccoutant@google.com>
3206
3207 * incremental.cc (Output_section_incremental_inputs::write_info_blocks):
3208 Resolve forwarding symbols.
3209
81e015e2
DK
32102010-09-15 Doug Kwan <dougkwan@google.com>
3211
3212 * gold/testsuite/script_test_3.t: Add ARM special sections.
3213 * gold/testsuite/script_test_4.t: Same.
3214 * gold/testsuite/script_test_5.t: Same.
3215 * gold/testsuite/script_test_6.t: Same.
3216 * gold/testsuite/script_test_7.t: Same.
3217 * gold/testsuite/script_test_7.t: Same.
3218 * gold/testsuite/thumb_blx_out_of_range.s: Fix instruction alignment.
3219
36171d64
CC
32202010-09-14 Cary Coutant <ccoutant@google.com>
3221
3222 * x86_64.cc (Target_x86_64::saw_tls_block_reloc_): Remove member.
3223 (Target_x86_64::Relocate::relocate_tls): Replace check for
3224 saw_tls_block_reloc_ with test for executable section.
3225
d89051bd
CC
32262010-09-12 Cary Coutant <ccoutant@google.com>
3227
3228 * symtab.h (Symbol::needs_dynamic_reloc): Non-PIC calls from
3229 position-independent executables to shared libraries need dynamic
3230 relocations.
3231 (Symbol::may_need_copy_reloc): Do not generate COPY relocs in
3232 position-independent executables.
3233 * testsuite/Makefile.am (two_file_mixed_pie_test): New test.
3234 * testsuite/Makefile.in: Regenerate.
3235
fca41f0f
NC
32362010-09-10 Nick Clifton <nickc@redhat.com>
3237
3238 PR gold/11997
3239 * testsuite/memory_test.t: Discard any sections that are not
3240 needed.
3241
6695e4b3
L
32422010-09-09 H.J. Lu <hongjiu.lu@intel.com>
3243
3244 PR gold/11996
3245 * object.cc (Sized_relobj::do_finalize_local_symbols): Remove
3246 "This::" to work around a bug in gcc 4.2.
3247
3248 * testsuite/ifuncmain7.c (foo_ifunc): Add __attribute__ ((used)).
3249
0f72bf6f
RÁE
32502010-09-09 Rafael Espindola <espindola@google.com>
3251
3252 * layout.cc (Layout::attach_allocated_section_to_segment): Don't put
3253 sections with different PF_X flags in the same segment.
3254 (Layout::find_first_load_seg): Search all segments to find the first
3255 one.
3256 * options.h (rosegment): New.
3257
32582010-09-08 Rafael Espindola <espindola@google.com>
a6577478 3259
05a79166 3260 * layout.cc (Layout::set_segment_offsets): Always advance to a new page.
a6577478 3261
aa98ff75
DK
32622010-09-08 Doug Kwan <dougkwan@google.com>
3263
3264 * arm.cc (Arm_exidx_cantunwind::do_print_to_mapfile): New method.
3265 (Arm_relobj::do_relocate_sections): Add new parameter for output
3266 file to match the parent.
3267 (Target_arm::scan_reloc_section_for_stubs): Use would-be final values
3268 of local symbols instead of input values. Update code to track
3269 changes in gold::relocate_section.
3270 * object.cc (Sized_relobj::compute_final_local_value): New methods.
3271 (Sized_relobj::compute_final_local_value_internal): New methods.
3272 (Sized_relobj::do_finalize_local_symbols): Move code from loop
3273 body into private version of Sized_relobj::compute_final_local_value.
3274 Call the inline method.
3275 * object.h (Symbol_value::Symbol_value): Define destructor. Free
3276 merged symbol value if there is one.
3277 (Symbol_value::has_output_value): New method defintiion.
3278 (Sized_relobj::Compute_final_local_value_status): New enum type.
3279 (Sized_relobj::compute_final_local_value): New methods.
3280 (Sized_relobj::compute_final_local_value_internal): New methods.
3281 * Makefile.am (check_SCRIPTS): Add arm_branch_out_of_range.sh
3282 and arm_cortex_a8.sh.
3283 (thumb_bl_out_of_range_local, arm_cortex_a8_b_cond, arm_cortex_a8_bl,
3284 arm_cortex_a8_blx, arm_cortex_a8_local, arm_corte_a8_local_reloc):
3285 New tests.
3286 * Makefile.in: Regenerate.
3287 * testsuite/arm_bl_out_of_range.s: Update test.
3288 * testsuite/thumb_bl_out_of_range.s: Ditto.
3289 * testsuite/thumb_blx_out_of_range.s: Ditto.
3290 * testsuite/arm_branch_out_of_range.sh: New file.
3291 * testsuite/arm_cortex_a8.sh: Ditto.
3292 * testsuite/arm_cortex_a8_b.s: Ditto.
3293 * testsuite/arm_cortex_a8_b_cond.s: Ditto.
3294 * testsuite/arm_cortex_a8_b_local.s: Ditto.
3295 * testsuite/arm_cortex_a8_bl.s: Ditto.
3296 * testsuite/arm_cortex_a8_blx.s: Ditto.
3297 * testsuite/arm_cortex_a8_local.s: Ditto.
3298 * testsuite/arm_cortex_a8_local_reloc.s: Ditto.
3299 * testsuite/thumb_bl_out_of_range_local.s: Ditto.
3300
05a79166
L
33012010-09-08 Rafael Espindola <espindola@google.com>
3302
3303 * Makefile.am (memory_test.stdout): Run readelf with -W.
3304 * Makefile.in: Regenerate.
3305 * testsuite/memory_test.sh: Make the regexps accept both 32 and
3306 64 bit output.
3307
33dbc701
RÁE
33082010-09-08 Rafael Espindola <espindola@google.com>
3309
3310 * script-sections.cc (Script_sections::add_memory_region): Convert
3311 field precision to int.
3312 * script.cc (script_set_section_region, script_set_section_region):
3313 Convert field precision to int.
3314
731ca54a
RÁE
33152010-09-08 Rafael Espindola <espindola@google.com>
3316
3317 * arm.cc (do_finalize_sections): Create the __exidx_start and
3318 __exdix_end symbols even when the section is missing.
3319
7f8cd844
NC
33202010-09-08 Nick Clifton <nickc@redhat.com>
3321
3322 * README: Remove claim that MEMORY is not supported.
3323 * expression.cc (script_exp_function_origin)
3324 (script_exp_function_length): Move from here to ...
3325 * script.cc: ... here.
3326 (script_set_section_region, script_add_memory)
3327 (script_parse_memory_attr, script_include_directive): New
3328 functions.
3329 * script-sections.cc
3330 (class Memory_region): New class.
3331 (class Output_section_definition): Add set_memory_region,
3332 set_section_vma, set_section_lma and get_section_name methods.
3333 (class Script_Sections): Add add_memory_region,
3334 find_memory_region, find_memory_region_origin,
3335 find_memory_region_length and set_memory_region methods.
3336 Have set_section_addresses method walk the list of set memory
3337 regions.
3338 Extend the print methos to display memory regions.
3339 * script-sections.h: Add prototypes for new methods.
3340 Add enum for MEMORY region attributes.
3341 * yyscript.y: Add support for parsing MEMORY regions.
3342 * script-c.h: Add prototypes for new functions.
3343 * testsuite/Makefile.am: Add test of MEMORY region functionality.
3344 * testsuite/Makefile.in: Regenerate.
3345 * testsuite/memory_test.sh: New script.
3346 * testsuite/memory_test.s: New assembler source file.
3347 * testsuite/memory_test.t: New linker script.
3348
a4649286
DK
33492010-08-27 Doug Kwan <dougkwan@google.com>
3350
3351 * gold/resolve.cc (Symbol_table::should_override): Let a weak
3352 reference override an existing dynamic weak reference.
3353 * testsuite/Makefile.am: Add new test dyn_weak_ref.
3354 * testsuite/Makefile.in: Regenerate.
3355 * testsuite/dyn_weak_ref.sh: New file.
3356 * testsuite/dyn_weak_ref_1.c: Ditto.
3357 * testsuite/dyn_weak_ref_2.c: Ditto.
3358
b56648ad
ILT
33592010-08-27 Ian Lance Taylor <iant@google.com>
3360
3361 * incremental.h (class Incremental_input_entry): Add virtual
3362 destructor.
3363
809313cb
ILT
33642010-08-27 Ian Lance Taylor <iant@google.com>
3365
3366 * testsuite/start_lib_test_3.c: Mark t3 as used.
3367
11e32464
NC
33682010-08-27 Nick Clifton <nickc@redhat.com>
3369
3370 * options.cc (version_script): Fix small typo in previous
3371 whitespace tidyup.
3372
ca09d69a
NC
33732010-08-25 Nick Clifton <nickc@redhat.com>
3374
3375 * archive.cc: Formatting fixes: Remove whitespace between
3376 typename and following asterisk. Remove whitespace between
3377 function name and opening parenthesis.
3378 * archive.h: Likewise.
3379 * arm.cc: Likewise.
3380 * attributes.cc: Likewise.
3381 * attributes.h: Likewise.
3382 * common.cc: Likewise.
3383 * copy-relocs.cc: Likewise.
3384 * dirsearch.h: Likewise.
3385 * dynobj.cc: Likewise.
3386 * ehframe.cc: Likewise.
3387 * ehframe.h: Likewise.
3388 * expression.cc: Likewise.
3389 * fileread.cc: Likewise.
3390 * fileread.h: Likewise.
3391 * gc.h: Likewise.
3392 * gold-threads.cc: Likewise.
3393 * gold.cc: Likewise.
3394 * i386.cc: Likewise.
3395 * icf.h: Likewise.
3396 * incremental-dump.cc: Likewise.
3397 * incremental.cc: Likewise.
3398 * layout.cc: Likewise.
3399 * layout.h: Likewise.
3400 * main.cc: Likewise.
3401 * merge.cc: Likewise.
3402 * merge.h: Likewise.
3403 * object.cc: Likewise.
3404 * object.h: Likewise.
3405 * options.cc: Likewise.
3406 * options.h: Likewise.
3407 * output.cc: Likewise.
3408 * output.h: Likewise.
3409 * plugin.cc: Likewise.
3410 * plugin.h: Likewise.
3411 * powerpc.cc: Likewise.
3412 * reloc.cc: Likewise.
3413 * script-c.h: Likewise.
3414 * script-sections.cc: Likewise.
3415 * script.cc: Likewise.
3416 * stringpool.cc: Likewise.
3417 * symtab.cc: Likewise.
3418 * symtab.h: Likewise.
3419 * target.cc: Likewise.
3420 * timer.cc: Likewise.
3421 * timer.h: Likewise.
3422 * version.cc: Likewise.
3423 * x86_64.cc: Likewise.
3424
b8fa8750
NC
34252010-08-24 Nick Clifton <nickc@redhat.com>
3426
3427 PR 11899
3428 * layout.cc (segment_precedes): Sort segments by their physical
3429 addresses, if they have been set.
3430
9919d93b
CC
34312010-08-23 Cary Coutant <ccoutant@google.com>
3432
3433 * archive.cc (Lib_group::add_symbols): Lock object before deleting its
3434 symbols data.
3435 (Lib_group::include_member): Unlock object after deleting its
3436 symbols data.
3437 * testsuite/start_lib_test_3.c: Remove all global symbols to trigger
3438 the bug fixed here.
3439
97b4be1c
CC
34402010-08-19 Neil Vachharajani <nvachhar@google.com>
3441 Cary Coutant <ccoutant@google.com>
3442
3443 * gold/archive.h (Add_lib_group_symbols): Add readsyms_blocker_, adjust
3444 constructor, and set_blocker.
3445 * gold/archive.cc (Add_lib_group_symbols::is_runnable): Also check
3446 readsyms_blocker_.
3447 * gold/readsyms.cc (Read_symbols::do_lib_group): Also pass
3448 this->this_blocker_ to Add_lib_group_symbols::set_blocker.
3449 * testsuite/Makefile.am (start_lib_test): New test case.
3450 * testsuite/Makefile.in: Regenerate.
3451 * testsuite/start_lib_test_main.c: New file.
3452 * testsuite/start_lib_test_1.c: New file.
3453 * testsuite/start_lib_test_2.c: New file.
3454 * testsuite/start_lib_test_3.c: New file.
3455
dd0b1884
ILT
34562010-08-19 Ian Lance Taylor <iant@google.com>
3457
3458 * Makefile.in: Rebuild with automake 1.11.1.
3459 * aclocal.m4: Likewise.
3460 * testsuite/Makefile.in: Likewise.
3461
7223e9ca
ILT
34622010-08-19 Ian Lance Taylor <iant@google.com>
3463
3464 PR 10893
3465 * i386.cc (class Output_data_plt_i386): Update declarations.
3466 Define Global_ifunc and Local_ifunc types. Add global_ifuncs_ and
3467 local_ifuncs_ fields.
3468 (Target_i386::do_plt_section_for_global): New function.
3469 (Target_i386::do_plt_section_for_local): New function.
3470 (Output_data_plt_i386::Output_data_plt_i386): Add symtab
3471 parameter; change all callers. Initialize global_ifuncs_ and
3472 local_ifuncs_. If doing a static link define __rel_iplt_start and
3473 __rel_iplt_end.
3474 (Output_data_plt_i386::add_entry): Handle IFUNC symbols.
3475 (Output_data_plt_i386::add_local_ifunc_entry): New function.
3476 (Output_data_plt_i386::do_write): Fix GOT entries for IFUNC
3477 symbols.
3478 (Target_i386::make_plt_section): New function, broken out of
3479 make_plt_entry. Set sh_info field of .rel.plt to point to .plt.
3480 (Target_i386::make_plt_entry): Call make_plt_section.
3481 (Target_i386::make_local_ifunc_plt_entry): New function.
3482 (Target_i386::Scan::reloc_needs_iplt_for_ifunc): New function.
3483 (Target_i386::Scan::local): Handle IFUNC symbols. Add
3484 R_386_IRELATIVE to switch.
3485 (Target_i386::Scan::global): Likewise.
3486 (Target_i386::Relocate::relocate): Likewise.
3487 (Target_i386::Relocatable_size_for_reloc): Add R_386_IRELATIVE to
3488 switch.
3489 * x86_64.cc (class Output_data_plt_x86_64): Update declarations.
3490 (Target_x86_64::do_plt_section_for_global): New function.
3491 (Target_x86_64::do_plt_section_for_local): New function.
3492 (Output_data_plt_x86_64::Output_data_plt_x86_64): Add symtab
3493 parameter; change all callers. If doing a static link define
3494 __rela_iplt_start and __rela_iplt_end.
3495 (Output_data_plt_x86_64::add_entry): Handle IFUNC symbols.
3496 (Output_data_plt_x86_64::add_local_ifunc_entry): New function.
3497 (Target_x86_64::make_plt_section): Set sh_info field of .rel.plt
3498 to point to .plt.
3499 (Target_x86_64::make_local_ifunc_plt_entry): New function.
3500 (Target_x86_64::Scan::check_non_pic): Add R_X86_64_IRELATIVE to
3501 switch.
3502 (Target_x86_64::Scan::reloc_needs_iplt_for_ifunc): New function.
3503 (Target_x86_64::Scan::local): Handle IFUNC symbols. Add
3504 R_X86_64_IRELATIVE to switch.
3505 (Target_x86_64::Scan::global): Likewise.
3506 (Target_x86_64::Relocate::relocate): Likewise.
3507 (Target_x86_64::Relocatable_size_for_reloc): Add R_X86_64_IRELATIVE to
3508 switch.
3509 * target.h (class Target): Add plt_section_for_global and
3510 plt_section_for_local functions. Add do_plt_section_for_global
3511 and do_plt_section_for_local virtual functions.
3512 * symtab.h (Symbol::needs_plt_entry): Handle IFUNC symbol. Add
3513 clarifying comments.
3514 (Symbol::use_plt_offset): Handle IFUNC symbol.
3515 * object.cc (Sized_relobj::Sized_relobj): Initialize
3516 local_plt_offsets_.
3517 (Sized_relobj::local_has_plt_offset): New function.
3518 (Sized_relobj::local_plt_offset): New function.
3519 (Sized_relobj::set_local_plt_offset): New function.
3520 (Sized_relobj::do_count): Handle IFUNC symbol.
3521 * object.h (class Symbol_value): Add is_ifunc_symbol_ field. Take
3522 a bit away from input_shndx_ field. Add set_is_func_symbol and
3523 is_ifunc_symbol functions.
3524 (class Sized_relobj): Update declarations. Remove Tls_got_entry
3525 and Local_tls_got_offsets. Define Local_plt_offsets. Add
3526 local_plt_offsets_ field.
3527 (Sized_relobj::clear_local_symbols): Clear local_plt_offsets_.
3528 * output.h (class Output_section_data): Add non-const
3529 output_section function.
3530 (class Output_data_got): Update declarations.
3531 (class Output_data_got::Got_entry): Add use_plt_offset_ field.
3532 Add use_plt_offset parameter to global and local constructors.
3533 Change all callers. Change local_sym_index_ field to 31 bits.
3534 Change GSYM_CODE and CONSTANT_CODE accordingly.
3535 * output.cc (Output_data_reloc_base::do_adjust_output_section): If
3536 doing a static link don't set sh_link field.
3537 (Output_data_got::Got_entry::write): Use PLT offset if
3538 appropriate.
3539 (Output_data_got::add_global_plt): New function.
3540 (Output_data_got::add_local_plt): New function.
3541 * target-reloc.h (relocate_section): Handle IFUNC symbol.
3542 * defstd.cc (in_section): Remove entries for __rel_iplt_start,
3543 __rel_iplt_end, __rela_iplt_start, and __rela_iplt_end.
3544 * configure.ac: Set IFUNC automake conditional for glibc >= 2.11.
3545 * testsuite/Makefile.am: Add a bunch of IFUNC tests, all within
3546 IFUNC conditional.
3547 * testsuite/ifunc-sel.h: New file.
3548 * testsuite/ifuncmain1.c: New file.
3549 * testsuite/ifuncmain1vis.c: New file.
3550 * testsuite/ifuncmod1.c: New file.
3551 * testsuite/ifuncdep2.c: New file.
3552 * testsuite/ifuncmain2.c: New file.
3553 * testsuite/ifuncmain3.c: New file.
3554 * testsuite/ifuncmod3.c: New file.
3555 * testsuite/ifuncmain4.c: New file.
3556 * testsuite/ifuncmain5.c: New file.
3557 * testsuite/ifuncmod5.c: New file.
3558 * testsuite/ifuncmain6pie.c: New file.
3559 * testsuite/ifuncmod6.c: New file.
3560 * testsuite/ifuncmain7.c: New file.
3561 * configure, testsuite/Makefile.in: Rebuild.
3562
56f75c03
ILT
35632010-08-18 Ian Lance Taylor <iant@google.com>
3564
3565 * incremental.cc
3566 (Output_section_incremental_inputs::write_input_files): Add cast
3567 to avoid signed/unsigned comparison warning.
3568 (Output_section_incremental_inputs::write_info_blocks): Likewise.
3569
55455f89
CC
35702010-08-12 Cary Coutant <ccoutant@google.com>
3571
3572 * common.cc (Sort_commons::operator()): Remove unnecessary code.
3573
e2054bcb
ILT
35742010-08-13 Ian Lance Taylor <iant@google.com>
3575
3576 * testsuite/incremental_test_1.c: Add prototype to avoid warning.
3577
74f67560
DK
35782010-08-12 Cary Coutant <ccoutant@google.com>
3579 Doug Kwan <dougkwan@google.com>
3580
3581 * resolve.cc (Symbol_table::should_override): When a weak dynamic
3582 defintion overrides non-weak undef, remember that the original undef
3583 is not weak.
3584 * symtab.cc (Symbol_table::sized_write_global): For undef without
3585 an original weak binding, set binding to global in output.
3586 * testsuite/Makefile.am: Add new test strong_ref_weak_def.
3587 * testsuite/Makefile.in: Regenerate.
3588 * testsuite/strong_ref_weak_def.sh: New file.
3589 * testsuite/strong_ref_weak_def_1.c: Ditto.
3590 * testsuite/strong_ref_weak_def_2.c: Ditto.
3591
d1238d12
CC
35922010-08-12 Cary Coutant <ccoutant@google.com>
3593
3594 * testsuite/incremental_test.sh: Rewrite.
3595 * testsuite/incremental_test_1.c: Rewrite.
3596 * testsuite/incremental_test_2.c: Rewrite.
3597
0e70b911
CC
35982010-08-12 Cary Coutant <ccoutant@google.com>
3599
3600 * arm.cc (Target_arm::got_size): Add const.
3601 (Target_arm::got_entry_count): New function.
3602 (Target_arm::plt_entry_count): New function.
3603 (Target_arm::first_plt_entry_offset): New function.
3604 (Target_arm::plt_entry_size): New function.
3605 (Output_data_plt_arm::entry_count): New function.
3606 (Output_data_plt_arm::first_plt_entry_offset): New function.
3607 (Output_data_plt_arm::get_plt_entry_size): New function.
3608 * i386.cc (Target_i386::got_size): Add const.
3609 (Target_i386::got_entry_count): New function.
3610 (Target_i386::plt_entry_count): New function.
3611 (Target_i386::first_plt_entry_offset): New function.
3612 (Target_i386::plt_entry_size): New function.
3613 (Output_data_plt_i386::entry_count): New function.
3614 (Output_data_plt_i386::first_plt_entry_offset): New function.
3615 (Output_data_plt_i386::get_plt_entry_size): New function.
3616 * incremental-dump.cc (dump_incremental_inputs): Adjust call to
3617 find_incremental_inputs_sections. Dump incremental_got_plt section.
3618 * incremental.cc: Include target.h.
3619 (Sized_incremental_binary::do_find_incremental_inputs_sections): Add
3620 parameter. Adjust all callers. Find incremental_got_plt section.
3621 (Incremental_inputs::create_data_sections): Create incremental_got_plt
3622 section.
3623 (Output_section_incremental_inputs::set_final_data_size): Calculate
3624 size of incremental_got_plt section.
3625 (Output_section_incremental_inputs::do_write): Write the
3626 incremental_got_plt section.
3627 (Got_plt_view_info): New struct.
3628 (Local_got_offset_visitor): New class.
3629 (Global_got_offset_visitor): New class.
3630 (Global_symbol_visitor_got_plt): New class.
3631 (Output_section_incremental_inputs::write_got_plt): New function.
3632 * incremental.h (Incremental_binary::find_incremental_inputs_sections):
3633 Add parameter. Adjust all callers.
3634 (Incremental_binary::do_find_incremental_inputs_sections): Likewise.
3635 (Incremental_inputs::got_plt_section): New function.
3636 (Incremental_inputs::got_plt_section_): New data member.
3637 (Incremental_got_plt_reader): New class.
3638 * layout.cc (Layout::create_incremental_info_sections): Add the
3639 incremental_got_plt section.
3640 * object.h (Got_offset_list::get_list): New function.
3641 (Got offset_list::for_all_got_offsets): New function.
3642 (Sized_relobj::local_got_offset_list): New function.
3643 * powerpc.cc (Target_powerpc::got_size): Add const.
3644 (Target_powerpc::got_entry_count): New function.
3645 (Target_powerpc::plt_entry_count): New function.
3646 (Target_powerpc::first_plt_entry_offset): New function.
3647 (Target_powerpc::plt_entry_size): New function.
3648 (Output_data_plt_powerpc::entry_count): New function.
3649 (Output_data_plt_powerpc::first_plt_entry_offset): New function.
3650 (Output_data_plt_powerpc::get_plt_entry_size): New function.
3651 * sparc.cc (Target_sparc::got_size): Add const.
3652 (Target_sparc::got_entry_count): New function.
3653 (Target_sparc::plt_entry_count): New function.
3654 (Target_sparc::first_plt_entry_offset): New function.
3655 (Target_sparc::plt_entry_size): New function.
3656 (Output_data_plt_sparc::entry_count): New function.
3657 (Output_data_plt_sparc::first_plt_entry_offset): New function.
3658 (Output_data_plt_sparc::get_plt_entry_size): New function.
3659 * symtab.h (Symbol::got_offset_list): New function.
3660 (Symbol_table::for_all_symbols): New function.
3661 * target.h (Sized_target::got_entry_count): New function.
3662 (Sized_target::plt_entry_count): New function.
3663 (Sized_target::plt_entry_size): New function.
3664 * x86_64.cc (Target_x86_64::got_size): Add const.
3665 (Target_x86_64::got_entry_count): New function.
3666 (Target_x86_64::plt_entry_count): New function.
3667 (Target_x86_64::first_plt_entry_offset): New function.
3668 (Target_x86_64::plt_entry_size): New function.
3669 (Output_data_plt_x86_64::entry_count): New function.
3670 (Output_data_plt_x86_64::first_plt_entry_offset): New function.
3671 (Output_data_plt_x86_64::get_plt_entry_size): New function.
3672
09ec0418
CC
36732010-08-12 Cary Coutant <ccoutant@google.com>
3674
3675 * archive.cc: Include incremental.h.
3676 (Archive::Archive): Initialize incremental_info_.
3677 (Archive::include_member): Record archive members in incremental info.
3678 (Add_archive_symbols::run): Record begin and end of an archive in
3679 incremental info.
3680 (Lib_group::include_member): Record objects in incremental info.
3681 * archive.h (Incremental_archive_entry): Forward declaration.
3682 (Archive::set_incremental_info): New member function.
3683 (Archive::incremental_info): New member function.
3684 (Archive::Unused_symbol_iterator): New class.
3685 (Archive::unused_symbols_begin): New member function.
3686 (Archive::unused_symbols_end): New member function.
3687 (Archive::incremental_info_): New data member.
3688 * incremental-dump.cc (find_input_containing_global): New function.
3689 (dump_incremental_inputs): Dump new incremental info sections.
3690 * incremental.cc: Include symtab.h.
3691 (Output_section_incremental_inputs): New class.
3692 (Sized_incremental_binary::do_find_incremental_inputs_sections): Support
3693 new incremental info sections.
3694 (Sized_incremental_binary::do_check_inputs): Likewise.
3695 (Incremental_inputs::report_archive): Remove.
3696 (Incremental_inputs::report_archive_begin): New function.
3697 (Incremental_inputs::report_archive_end): New function.
3698 (Incremental_inputs::report_object): New function.
3699 (Incremental_inputs::finalize_inputs): Remove.
3700 (Incremental_inputs::report_input_section): New function.
3701 (Incremental_inputs::report_script): Rewrite.
3702 (Incremental_inputs::finalize): Do nothing but finalize string table.
3703 (Incremental_inputs::create_incremental_inputs_section_data): Remove.
3704 (Incremental_inputs::sized_create_inputs_section_data): Remove.
3705 (Incremental_inputs::create_data_sections): New function.
3706 (Incremental_inputs::relocs_entsize): New function.
3707 (Output_section_incremental_inputs::set_final_data_size): New function.
3708 (Output_section_incremental_inputs::do_write): New function.
3709 (Output_section_incremental_inputs::write_header): New function.
3710 (Output_section_incremental_inputs::write_input_files): New function.
3711 (Output_section_incremental_inputs::write_info_blocks): New function.
3712 (Output_section_incremental_inputs::write_symtab): New function.
3713 * incremental.h (Incremental_script_entry): Forward declaration.
3714 (Incremental_object_entry): Forward declaration.
3715 (Incremental_archive_entry): Forward declaration.
3716 (Incremental_inputs): Forward declaration.
3717 (Incremental_inputs_header_data): Remove.
3718 (Incremental_inputs_header): Remove.
3719 (Incremental_inputs_header_write): Remove.
3720 (Incremental_inputs_entry_data): Remove.
3721 (Incremental_inputs_entry): Remove.
3722 (Incremental_inputs_entry_write): Remove.
3723 (enum Incremental_input_type): Add INCREMENTAL_INPUT_ARCHIVE_MEMBER.
3724 (Incremental_binary::find_incremental_inputs_sections): Add parameters.
3725 (Incremental_binary::do_find_incremental_inputs_sections): Likewise.
3726 (Sized_ncremental_binary::do_find_incremental_inputs_sections):
3727 Likewise.
3728 (Incremental_input_entry): New class.
3729 (Incremental_script_entry): New class.
3730 (Incremental_object_entry): New class.
3731 (Incremental_archive_entry): New class.
3732 (Incremental_inputs::Incremental_inputs): Initialize new data members.
3733 (Incremental_inputs::report_inputs): Remove.
3734 (Incremental_inputs::report_archive): Remove.
3735 (Incremental_inputs::report_archive_begin): New function.
3736 (Incremental_inputs::report_archive_end): New function.
3737 (Incremental_inputs::report_object): Change prototype.
3738 (Incremental_inputs::report_input_section): New function.
3739 (Incremental_inputs::report_script): Change prototype.
3740 (Incremental_inputs::get_reloc_count): New function.
3741 (Incremental_inputs::set_reloc_count): New function.
3742 (Incremental_inputs::create_data_sections): New function.
3743 (Incremental_inputs::create_incremental_inputs_section_data): Remove.
3744 (Incremental_inputs::inputs_section): New function.
3745 (Incremental_inputs::symtab_section): New function.
3746 (Incremental_inputs::relocs_section): New function.
3747 (Incremental_inputs::get_stringpool): Add const.
3748 (Incremental_inputs::command_line): Add const.
3749 (Incremental_inputs::inputs): Remove.
3750 (Incremental_inputs::command_line_key): New function.
3751 (Incremental_inputs::input_file_count): New function.
3752 (Incremental_inputs::input_files): New function.
3753 (Incremental_inputs::relocs_entsize): New function.
3754 (Incremental_inputs::sized_create_inputs_section_data): Remove.
3755 (Incremental_inputs::finalize_inputs): Remove.
3756 (Incremental_inputs::Input_info): Remove.
3757 (Incremental_inputs::lock_): Remove.
3758 (Incremental_inputs::inputs_): Change type.
3759 (Incremental_inputs::inputs_map_): Remove.
3760 (Incremental_inputs::current_object_entry_): New data member.
3761 (Incremental_inputs::inputs_section_): New data member.
3762 (Incremental_inputs::symtab_section_): New data member.
3763 (Incremental_inputs::relocs_section_): New data member.
3764 (Incremental_inputs::reloc_count_): New data member.
3765 (Incremental_inputs_reader): New class.
3766 (Incremental_symtab_reader): New class.
3767 (Incremental_relocs_reader): New class.
3768 * layout.cc (Layout::finalize): Move finalization of incremental info
3769 and creation of incremental info sections to follow finalization of
3770 symbol table. Set offsets for postprocessing sections.
3771 (Layout::create_incremental_info_sections): Call
3772 Incremental_inputs::create_data_sections. Add incremental symtab
3773 and relocs sections. Set sh_entsize and sh_link fields. Arrange for
3774 sections to layout after input sections.
3775 * layout.h (struct Timespec): Forward declaration.
3776 (Layout::incremental_inputs): Add const.
3777 (Layout::create_incremental_info_sections): Add parameter.
3778 * main.cc (main): Remove call to Incremental_inputs::report_inputs.
3779 * object.cc: Include incremental.h.
3780 (Relobj::finalize_incremental_relocs): New function.
3781 (Sized_relobj::do_layout): Record input sections in incremental info.
3782 * object.h (Object::output_section): New function.
3783 (Object::output_section_offset): Moved from Relobj.
3784 (Object::get_incremental_reloc_base): New function.
3785 (Object::get_incremental_reloc_count): New function.
3786 (Object::do_output_section): New function.
3787 (Object::do_output_section_offset): Moved from Relobj.
3788 (Object::do_get_incremental_reloc_base): New function.
3789 (Object::do_get_incremental_reloc_count): New function.
3790 (Object::Object): Initialize new data members.
3791 (Relobj::output_section): Renamed do_output_section and moved to
3792 protected.
3793 (Relobj::output_section_offset): Moved to Object.
3794 (Relobj::do_get_incremental_reloc_base): New function.
3795 (Relobj::do_get_incremental_reloc_count): New function.
3796 (Relobj::allocate_incremental_reloc_counts): New function.
3797 (Relobj::count_incremental_reloc): New function.
3798 (Relobj::finalize_incremental_relocs): New function.
3799 (Relobj::next_incremental_reloc_index): New function.
3800 (Relobj::reloc_counts_): New data member.
3801 (Relobj::reloc_bases_): New data member.
3802 (Sized_relobj::do_relocate_sections): Add parameter. Change caller.
3803 (Sized_relobj::relocate_sections): Add parameter. Change all callers.
3804 (Sized_relobj::incremental_relocs_scan): New function.
3805 (Sized_relobj::incremental_relocs_scan_reltype): New function.
3806 (Sized_relobj::incremental_relocs_write): New function.
3807 (Sized_relobj::incremental_relocs_write_reltype): New function.
3808 * plugin.cc (Plugin_manager::add_input_file): Rewrite test for
3809 incremental link.
3810 * readsyms.cc (Read_symbols::do_read_symbols): Move reporting of
3811 archives and object files elsewhere.
3812 (Add_symbols::run): Report object files here.
3813 (Finish_group::run): Report end of archive at end of group.
3814 * reloc.cc: Include layout.h, incremental.h.
3815 (Sized_relobj::do_read_relocs): Need relocations for incremental link.
3816 (Sized_relobj::do_scan_relocs): Record relocations for incremental link.
3817 (Sized_relobj::incremental_relocs_scan): New function.
3818 (Sized_relobj::incremental_relocs_scan_reltype): New function.
3819 (Sized_relobj::do_relocate_sections): Write incremental relocations.
3820 (Sized_relobj::incremental_relocs_write): New function.
3821 (Sized_relobj::incremental_relocs_write_reltype): New function.
3822 * script.cc (read_input_script): Rewrite test for incremental link.
3823 Change call to Incremental_inputs::report_script.
3824 * symtab.h (Symbol_table::first_global_index): New function.
3825 (Symbol_table::output_count): New function.
3826
ce0d1972
DK
38272010-08-12 Doug Kwan <dougkwan@google.com>
3828
3829 * arm.cc (Target_arm::merge_object_attributes): Check command line
3830 options --no-wchar-size-warning and --no-enum-size-warning.
3831 * options.h (General_options): Add ld-compatible options
3832 --no-enum-size-warning and --no-wchar-size-warning.
3833
6e5710ce
ILT
38342010-08-04 Ian Lance Taylor <iant@google.com>
3835
3836 * x86_64.cc (Target_x86_64::Scan::local): Use
3837 R_X86_64_GNU_VTINHERIT instead of R_386_GNU_VTINHERIT and
3838 R_X86_64_GNU_VTENTRY instead of R_386_GNU_VTENTRY.
3839 (Target_x86_64::Scan::global): Likewise.
3840 (Target_x86_64::Relocate::relocate): Likewise.
3841 (Target_x86_64::Relocatable_size_for_reloc::get_size_for_reloc):
3842 Likewise.
3843
fef830db
CC
38442010-08-03 Cary Coutant <ccoutant@google.com>
3845
3846 * merge.cc (Output_merge_string::do_add_input_section): Count strings
3847 to reserve space in merged_strings vector. Keep total input size
3848 for stats.
3849 (Output_merge_string::do_print_merge_stats): Print total input size.
3850 * merge.h (Output_merge_string): Add input_size_ field.
3851 * stringpool.cc (Stringpool_template::string_length): Move
3852 implementations out of Stringpool_template class and place in
3853 stringpool.h.
3854 * stringpool.h (string_length): Move out of Stringpool_template.
3855
1e3811b0
ILT
38562010-08-03 Ian Lance Taylor <iant@google.com>
3857
3858 PR 11712
3859 * layout.cc (relaxation_loop_body): If address of load segment is
3860 set, adjust address to include headers if possible.
3861
7af0c620
ILT
38622010-08-03 Ian Lance Taylor <iant@google.com>
3863
3864 * version.cc (version_string): Bump to 1.10.
3865
22f0da72
ILT
38662010-08-03 Ian Lance Taylor <iant@google.com>
3867
3868 PR 11805
3869 * layout.h (enum Output_section_order): Define.
3870 (class Layout): Update declarations.
3871 * layout.cc (Layout::get_output_section): Add order parameter.
3872 Remove is_interp, is_dynamic_linker_section, is_last_relro, and
3873 is_first_non_relro parameters. Change all callers.
3874 (Layout::choose_output_section): Likewise.
3875 (Layout::add_output_section_data): Likewise.
3876 (Layout::make_output_section): Likewise. Set order.
3877 (Layout::default_section_order): New function.
3878 (Layout::layout_eh_frame): Call add_output_section_to_nonload.
3879 * output.cc (Output_section::Output_section): Initialize order_.
3880 Don't initialize deleted fields.
3881 (Output_segment::Output_segment): Don't initialize deleted
3882 fields.
3883 (Output_segment::add_output_section_to_load): New function
3884 replacing add_output_section. Change all callers to call this or
3885 add_output_section_to_nonload.
3886 (Output_segment::add_output_section_to_nonload): New function.
3887 (Output_segment::remove_output_section): Rewrite.
3888 (Output_segment::add_initial_output_data): Likewise.
3889 (Output_segment::has_any_data_sections): Likewise.
3890 (Output_segment::is_first_section_relro): Likewise.
3891 (Output_segment::maximum_alignment): Likewise.
3892 (Output_segment::has_dynamic_reloc): New function replacing
3893 dynamic_reloc_count. Change all callers.
3894 (Output_segment::has_dynamic_reloc_list): New function replacing
3895 dynamic_reloc_count_list. Change all callers.
3896 (Output_segment::set_section_addresses): Rewrite.
3897 (Output_segment::set_offset): Rewrite.
3898 (Output_segment::find_first_and_last_list): Remove.
3899 (Output_segment::set_tls_offsets): Rewrite.
3900 (Output_segment::first_section_load_address): Likewise.
3901 (Output_segment::output_section_count): Likewise.
3902 (Output_segment::section_with_lowest_load_address): Likewise.
3903 (Output_segment::write_section_headers): Likewise.
3904 (Output_segment::print_sections_to_map): Likewise.
3905 * output.h (class Output_data): Remove dynamic_reloc_count_
3906 field. Add has_dynamic_reloc_ field. Make bools into bitfields.
3907 (Output_data::add_dynamic_reloc): Rewrite.
3908 (Output_data::has_dynamic_reloc): New function.
3909 (Output_data::dynamic_reloc_count): Remove.
3910 (class Output_section): Add order_ field. Remvoe is_relro_local_,
3911 is_last_relro_, is_first_non_relro_, is_interp_,
3912 is_dynamic_linker_section_ fields. Add order and set_order
3913 functions. Remove is_relro_local, set_is_relro_local,
3914 is_last_relro, set_is_last_relro, is_first_non_relro,
3915 set_is_first_non_relro functions, is_interp, set_is_interp,
3916 is_dynamic_linker_section, and set_is_dynamic_linker_section
3917 functions.
3918 (class Output_segment): Change Output_data_list from std::list to
3919 std:;vector. Add output_lists_ field. Remove output_data_ and
3920 output_bss_ fields. Update declarations.
3921
3ff2ccb0
ILT
39222010-08-02 Ian Lance Taylor <iant@google.com>
3923
3924 * arm.cc (Target_arm::gc_process_relocs): Use typename.
3925 * powerpc.cc (Target_powerpc::gc_process_relocs): Likewise.
3926 * sparc.cc (Target_sparc::gc_process_relocs): Likewise.
3927
88a4108b
ILT
39282010-08-02 Ian Lance Taylor <iant@google.com>
3929
3930 PR 11855
3931 * script.cc (Script_options::Script_options): Initialize
3932 symbol_definitions_ and symbol_references_.
3933 (Script_options::add_symbol_assignment): Update
3934 symbol_definitions_ and symbol_references_.
3935 (Script_options::add_symbol_reference): New function.
3936 (script_symbol): New function.
3937 * script.h (class Script_options): Add symbol_definitions_ and
3938 symbol_references_ fields.
3939 (Script_options::referenced_const_iterator): New type.
3940 (Script_options::referenced_begin): New function.
3941 (Script_options::referenced_end): New function.
3942 (Script_options::is_referenced): New function.
3943 (Script_options::any_unreferenced): New function.
3944 * script-c.h (script_symbol): Declare.
3945 * yyscript.y (exp): Call script_symbol.
3946 * symtab.cc: Include "script.h".
3947 (Symbol_table::gc_mark_undef_symbols): Add layout parameter.
3948 Change all callers. Check symbols referenced by scripts.
3949 (Symbol_table::add_undefined_symbols_from_command_line): Add
3950 layout parameter. Change all callers.
3951 (Symbol_table::do_add_undefined_symbols_from_command_line):
3952 Likewise. Break out loop body. Check symbols referenced by
3953 scripts.
3954 (Symbol_table::add_undefined_symbol_from_command_line): New
3955 function broken out of
3956 do_add_undefined_symbols_from_command_line.
3957 * symtab.h (class Symbol_table): Update declarations.
3958 * archive.cc: Include "layout.h".
3959 (Archive::should_include_member): Add layout parameter. Change
3960 all callers. Check for symbol mentioned in expression.
3961 * archive.h (class Archive): Update declaration.
3962 * object.cc (Sized_relobj::do_should_include_member): Add layout
3963 parameter.
3964 * object.h (Object::should_include_member): Add layout parameter.
3965 Change all callers.
3966 (Object::do_should_include_member): Add layout parameter.
3967 (class Sized_relobj): Update declaration.
3968 * dynobj.cc (Sized_dynobj::do_should_include_member): Add layout
3969 parameter.
3970 * dynobj.h (class Sized_dynobj): Update declaration.
3971 * plugin.cc (Sized_pluginobj::do_should_include_member): Add
3972 layout parameter.
3973 * plugin.h (class Sized_pluginobj): Update declaration.
3974
5f1ab67a
ILT
39752010-08-02 Ian Lance Taylor <iant@google.com>
3976
3977 PR 11866
3978 * output.cc (Output_segment::set_offset): Search for the first and
3979 last sections rather than assuming that the list is in order.
3980 (Output_segment::find_first_and_last_list): New function.
3981 * output.h (class Output_segment): Update declarations.
3982 * testsuite/Makefile.am (check_PROGRAMS): Add relro_strip_test.
3983 (relro_strip_test_SOURCES): New variable.
3984 (relro_strip_test_DEPENDENCIES): New variable.
3985 (relro_strip_test_LDFLAGS): New variable.
3986 (relro_strip_test_LDADD): New variable.
3987 (relro_strip_test.so): New target.
3988
a8df5856
ILT
39892010-08-02 Ian Lance Taylor <iant@google.com>
3990
3991 * i386.cc (class Target_i386): Add got_tlsdesc_ field.
3992 (Target_i386::Target_i386):: Initialize got_tlsdesc_.
3993 (Target_i386::got_tlsdesc_section): New function.
3994 (Target_i386::got_section): Create space for GOT entries for
3995 TLSDESC relocations.
3996 (Target_i386::Scan::local): Use TLSDESC GOT for unoptimized
3997 R_386_TLS_GOTDESC.
3998 (Target_i386::Scan::global): Likewise.
3999 (Target_i386::Relocate::relocate_tls): Adjust GOT offset when
4000 using TLSDESC GOT.
4001 * x86_64.cc (class Target_x86_64): Add got_tlsdesc_ field.
4002 (Target_x86_64::Target_x86_64):: Initialize got_tlsdesc_.
4003 (Target_x86_64::got_tlsdesc_section): New function.
4004 (Target_x86_64::got_section): Create space for GOT entries for
4005 TLSDESC relocations.
4006 (Target_x86_64::Scan::local): Use TLSDESC GOT for unoptimized
4007 R_386_TLS_GOTDESC.
4008 (Target_x86_64::Scan::global): Likewise.
4009 (Target_x86_64::Relocate::relocate_tls): Adjust GOT offset when
4010 using TLSDESC GOT.
4011
0c10a0a6
ILT
40122010-08-02 Ian Lance Taylor <iant@google.com>
4013
4014 * testsuite/final_layout.sh: Use dc to convert from hex to
4015 decimal.
4016
41cbeecc
ST
40172010-07-29 Sriraman Tallam <tmsriram@google.com>
4018
4019 * arm.cc (Target_arm<big_endian>::gc_process_relocs): Add template
4020 paramter to the call to gold::gc_process_relocs.
4021 * i386.cc (Target_i386<big_endian>::gc_process_relocs): Add template
4022 paramter to the call to gold::gc_process_relocs.
4023 * x86_64.cc (Target_x86_64<big_endian>::gc_process_relocs): Add template
4024 parameter to the call to gold::gc_process_relocs.
4025 * powerpc.cc (Target_powerpc<big_endian>::gc_process_relocs): Add
4026 template parameter to the call to gold::gc_process_relocs.
4027 * sparc.cc (Target_sparc<big_endian>::gc_process_relocs): Add template
4028 paramter to the call to gold::gc_process_relocs.
4029 * gc.h (get_embedded_addend_size): New function.
4030 (gc_process_relocs): Save the size of the reloc for use by ICF.
4031 * icf.cc (get_section_contents): Get the addend from the text section
4032 for SHT_REL relocation sections.
4033 * icf.h (Icf::Reloc_addend_size_info): New typedef.
4034 (Icf::Reloc_info): Add new member reloc_addend_size_info.
4035 * int_encoding.h (read_from_pointer): New overloaded function.
4036 * testsuite/Makefile.am (icf_sht_rel_addend_test): New test.
4037 * testsuite/icf_sht_rel_addend_test.sh: New file.
4038 * testsuite/icf_sht_rel_addend_test_1.cc: New file.
4039 * testsuite/icf_sht_rel_addend_test_2.cc: New file.
4040
6ea55b82
RW
40412010-07-28 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
4042
4043 * configure.ac (AM_INIT_AUTOMAKE): Use parallel-tests option.
4044 * Makefile.in: Regenerate.
4045 * testsuite/Makefile.in: Regenerate.
4046
9691462b
ILT
40472010-07-27 Jeffrey Yasskin <jyasskin@google.com>
4048
4049 * testsuite/debug_msg.sh: Test mixed weak/strong symbol behavior.
4050 * gold/testsuite/debug_msg.cc: Likewise.
4051 * gold/testsuite/odr_violation1.cc
4052 * gold/testsuite/odr_violation2.cc
4053
76897331
CC
40542010-07-21 Cary Coutant <ccoutant@google.com>
4055
4056 * merge.h (Output_merge_string::Merged_string): Remove object, shndx,
4057 string, and length fields.
4058 (Output_merge_string::Merged_strings_list): New type.
4059 (Output_merge_string::Merged_strings_lists): New typedef.
4060 (Output_merge_string): Replace merged_strings_ with
4061 merged_strings_lists_.
4062 * merge.cc (Output_merge_string::do_add_input_section): Allocate new
4063 Merged_strings_list per input object and section. Don't store pointer
4064 to the string. Don't store length with each merged string entry.
4065 (Output_merge_string::finalize_merged_data): Loop over list of merged
4066 strings lists. Recompute length of each merged string.
4067
78384e8f
CC
40682010-07-15 Cary Coutant <ccoutant@google.com>
4069
4070 * plugin.cc (Plugin_finish::run): Don't call cleanup handlers from
4071 here.
4072
783659f9
ILT
40732010-07-14 Ian Lance Taylor <iant@google.com>
4074
4075 * descriptors.cc (Descriptors::open): Report correct name in error
4076 message.
4077
131687b4
DK
40782010-07-13 Doug Kwan <dougkwan@google.com>
4079
4080 * arm.cc (Arm_input_section::Arm_input_section): For a
4081 SHT_ARM_EXIDX section, always keeps the input sections.
4082 (Arm_input_section::set_exidx_section_link): New method.
4083 (Arm_exidx_input_section::Arm_exidx_input_section): Initialize
4084 has_errors_ to false.
4085 (Arm_exidx_input_section::has_errors,
4086 Arm_exidx_input_section::set_has_errors): New methods.
4087 (Arm_exidx_input_section::has_errors_): New data member.
4088 (Arm_relobj::get_exidx_shndx_list): New method.
4089 (Arm_output_section::append_text_sections_to_list): Do not skip
4090 section without SHF_EXECINSTR.
4091 (Arm_output_section::fix_exidx_coverage): Skip input sections with
4092 errors.
4093 (Arm_relobj::make_exidx_input_section): Add new parameter for text
4094 section header. Make error messages more verbose. Check for
4095 a non-executable section linked to an EXIDX section.
4096 (Arm_relobj::do_read_symbols): Remove error checking, which has been
4097 moved to Arm_relobj::make_exidx_input_section. Add an assertion to
4098 check that there is no deferred EXIDX section if we exit early.
4099 Instead of not making an EXIDX section in case of an error, make one
4100 and set the has_errors flag of it.
4101 (Target_arm::do_finalize_sections): Fix up links of EXIDX sections
4102 in a relocatable link.
4103 (Target_arm::do_relax): Look for the EXIDX output section instead of
4104 assuming that it is called .ARM.exidx.
4105 (Target_arm::fix_exidx_coverage): Add a new parameter for input
4106 section list. Do not check for SHF_EXECINSTR section flags but
4107 skip any input section with errors.
4108 * output.cc (Output_section::Output_section): Initialize
4109 always_keeps_input_sections_ to false.
4110 (Output_section::add_input_section): Check for
4111 always_keeps_input_sections_.
4112 * output.h (Output_section::always_keeps_input_sections,
4113 Output_section::set_always_keeps_input_sections): New methods.
4114 (Output_section::always_keeps_input_sections): New data member.
4115
69517287
RÁE
41162010-07-13 Rafael Espindola <espindola@google.com>
4117
4118 * fileread.cc (try_extra_search_path, find_file): Move to Input_file.
4119 * fileread.h (Input_file): Add try_extra_search_path and find_file.
4120
82742395
ILT
41212010-07-13 Philip Herron <herron.philip@googlemail.com>
4122 Ian Lance Taylor <iant@google.com>
4123
4124 * output.h (Output_section_lookup_maps::add_merge_section):
4125 Correct check of whether value was inserted.
4126 (Output_section_lookup_maps::add_merge_input_section): Likewise.
4127 (Output_section_lookup_maps::add_relaxed_input_section):
4128 Likewise.
4129 * arm.cc (Target_arm::got_section): Remove used local os.
4130 * i386.cc (Target_i386::got_section): Likewise.
4131 * x86_64.cc (Target_x86_64::got_section): Likewise.
4132 * sparc.cc (Target_sparc::got_section): Likewise.
4133 (Target_sparc::relocate): Remove unused local have_got_offset.
4134 * powerpc.cc (Target_powerpc::relocate): Likewise.
4135
f2d707b5
ILT
41362010-07-13 Ian Lance Taylor <iant@google.com>
4137
241531d6
ILT
4138 * compressed_output.cc (zlib_decompress): Fix signature in
4139 !HAVE_ZLIB_H case.
4140
f2d707b5
ILT
4141 * archive.cc (Archive::include_member): Unlock an external member
4142 of a thin archive. Don't bother to delete an object we know is
4143 NULL.
4144
a2e47362
CC
41452010-07-12 Cary Coutant <ccoutant@google.com>
4146
4147 * compressed_output.cc (zlib_decompress): New function.
4148 (get_uncompressed_size): New function.
4149 (decompress_input_section): New function.
4150 * compressed_output.h (get_uncompressed_size): New function.
4151 (decompress_input_section): New function.
4152 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info)
4153 Handle compressed debug sections.
4154 * layout.cc (is_compressed_debug_section): New function.
4155 (Layout::output_section_name): Map compressed section names to
4156 canonical names.
4157 * layout.h (is_compressed_debug_section): New function.
4158 (is_debug_info_section): Recognize compressed debug sections.
4159 * merge.cc: Include compressed_output.h.
4160 (Output_merge_data::do_add_input_section): Handle compressed
4161 debug sections.
4162 (Output_merge_string::do_add_input_section): Handle compressed
4163 debug sections.
4164 * object.cc: Include compressed_output.h.
4165 (Sized_relobj::Sized_relobj): Initialize new data members.
4166 (build_compressed_section_map): New function.
4167 (Sized_relobj::do_read_symbols): Handle compressed debug sections.
4168 * object.h (Object::section_is_compressed): New method.
4169 (Object::do_section_is_compressed): New method.
4170 (Sized_relobj::Compressed_section_map): New type.
4171 (Sized_relobj::do_section_is_compressed): New method.
4172 (Sized_relobj::compressed_sections_): New data member.
4173 * output.cc (Output_section::add_input_section): Handle compressed
4174 debug sections.
4175 * reloc.cc: Include compressed_output.h.
4176 (Sized_relobj::write_sections): Handle compressed debug sections.
4177
ce279a62
CC
41782010-07-08 Cary Coutant <ccoutant@google.com>
4179
4180 * resolve.cc (Symbol_table::resolve): Remember whether undef was
4181 weak when resolving to a dynamic def.
4182 (Symbol_table::should_override): Add adjust_dyndef flag; set it
4183 for weak undef/dynamic def cases. Adjust callers.
4184 * symtab.cc (Symbol::init_fields): Initialize undef_binding_set_ and
4185 undef_binding_weak_.
4186 (Symbol_table::sized_write_globals): Adjust symbol binding.
4187 (Symbol_table::sized_write_symbol): Add binding parameter.
4188 * symtab.h (Symbol::set_undef_binding): New method.
4189 (Symbol::is_undef_binding_weak): New method.
4190 (Symbol::undef_binding_set_, Symbol::undef_binding_weak_): New members.
4191 (Symbol_table::should_override): Add new parameter.
4192 (Symbol_table::sized_write_symbol): Add new parameter.
4193
4194 * testsuite/weak_undef_file1.cc: Add new test case.
4195 * testsuite/weak_undef_file2.cc: Fix header comment.
4196 * testsuite/weak_undef_test.cc: Add new test case.
4197
b2286c10
DK
41982010-06-29 Doug Kwan <dougkwan@google.com>
4199
4200 * arm-reloc-property.cc (Arm_reloc_property::Arm_reloc_property):
4201 Initialize USE_SYMBOL_.
4202 * arm-reloc-property.h (Arm_reloc_property::uses_symbol): New method
4203 definition.
4204 (Arm_reloc_property::uses_symbol_): New data member declaration.
4205 * arm.cc (Target_arm::Relocate::relocate): Exit early if relocation
4206 uses symbol value and symbol is undefined but not weakly undefined.
4207
4802450a
RÁE
42082010-06-28 Rafael Espindola <espindola@google.com>
4209
4210 * plugin.cc (Plugin::load): Use dlerror.
4211
e5ca47ba
ILT
42122010-06-26 Jeffrey Yaskin <jyasskin@google.com>
4213
4214 * symtab.cc (detect_odr_violations): When reporting an ODR
4215 violation, report an object where the symbol is defined.
4216
8a75a161
DK
42172010-06-25 Doug Kwan <dougkwan@google.com>
4218
4219 * arm.cc (Target_arm::can_check_for_functions_pointers): Return true.
4220 (Target_arm::section_may_have_icf_unsafe_pointers): New method
4221 definition.
4222 (Target_arm::Scan::local_reloc_may_be_function_pointer,
4223 Target_arm::Scan::global_reloc_may_be_function_pointer): Implement
4224 target hook to detect function points.
4225 (Target_arm::Scan::possible_function_pointer_reloc): New method.
4226 * icf.h (Icf::check_section_for_function_pointers): Change type of
4227 parameter SECTION_NAME to const reference to std::string. Use
4228 target hook to determine if section may have unsafe pointers.
4229 * target.h (Target::section_may_have_icf_unsafe_pointers): New
4230 method definition.
4231
42218b9f
RÁE
42322010-06-21 Rafael Espindola <espindola@google.com>
4233
4234 * fileread.cc (Input_file::find_fie): New
4235 (Input_file::open): Use Input_file::find_fie.
4236 * fileread.h (Input_file::find_fie): New
4237 * plugin.cc (set_extra_library_path): New.
4238 (Plugin::load): Add set_extra_library_path to the transfer vector.
4239 (Plugin_manager::set_extra_library_path): New.
4240 (Plugin_manager::add_input_file): Use the extra search path if set.
4241 (set_extra_library_path(): New.
4242 * plugin.h (Plugin_manager): Add set_extra_library_path and
4243 extra_search_path_.
4244
a0506cca
CC
42452010-06-19 Cary Coutant <ccoutant@google.com>
4246
4247 * layout.cc (gdb_sections): Add .debug_types.
4248 (lines_only_debug_sections): Likewise.
4249
6508b958
RÁE
42502010-06-18 Rafael Espindola <espindola@google.com>
4251
4252 * plugin.cc (add_input_file,add_input_library)
4253 (Plugin_manager::add_input_file): Make filename arguments const.
4254 * plugin.h (Plugin_manager::add_input_file): Make filename arguments
4255 const.
4256
3e235302
DK
42572010-06-16 Doug Kwan <dougkwan@google.com>
4258
4259 * arm.cc (Target_arm::do_finalize_sections): Do not emit an
4260 .ARM.attributes section if we have not merged any input
4261 attributes sections.
4262
106e8a6c
DK
42632010-06-15 Viktor Kutuzov <vkutuzov@accesssoftek.com>
4264
4265 * arm.cc: Allow combining objects with no EABI version
4266 information.
4267
91ff43fe
RÁE
42682010-06-15 Rafael Espindola <espindola@google.com>
4269
4270 * plugin.cc (Plugin_hook::run): Set in_real_elf for the start symbol.
4271
68ed838c
ILT
42722010-06-15 Viktor Kutuzov <vkutuzov@accesssoftek.com>
4273
4274 * fileread.cc: Only #include <sys/uio.h> if HAVE_READV.
4275 (struct iovec): Correct !HAVE_READV definition.
4276
f3a2388f
CC
42772010-06-10 Cary Coutant <ccoutant@google.com>
4278
4279 * object.cc (Sized_relobj::do_layout): Defer layout for reloc sections.
4280 (Sized_relobj::do_layout_deferred_sections): Do layout for deferred
4281 reloc sections.
4282 * object.h (Sized_relobj::deferred_layout_relocs_): New data member.
4283
4284 PR 11683
4285 * symtab.h (Symbol::is_placeholder): New member function.
4286 * target-reloc.h (relocate_section): Check for placeholder symbols.
4287
4288 * testsuite/Makefile.am (plugin_test_8): New test.
4289 (plugin_test_9): New test.
4290 * testsuite/Makefile.in: Regenerate.
4291
e1df38aa
NC
42922010-06-09 Nick Clifton <nickc@redhat.com>
4293
4294 * yyscript.y (input_list_element): Allow strings prefixed with
4295 the '-' character. Treat these as libraries.
4296 * script.cc (script_add_library): New function. Adds a library
4297 specified by "-l<name>" found in an input script.
4298 * script-c.h: Add prototype for script_add_library.
4299
25bbe950
DK
43002010-06-07 Doug Kwan <dougkwan@google.com>
4301
4302 * arm.cc (Target_arm::do_relax): Reserve more space for stubs.
4303 Restrict stub-group size to be within long conditional branch
4304 range when working around cortex-A8 erratum.
4305
0f32ea4c
ILT
43062010-06-07 Damien Diederen <dd@crosstwine.com>
4307
4308 * gold-threads.cc (Lock_impl_threads::Lock_impl_threads): Correct
4309 #ifdef typo.
4310
8fe2a369
ST
43112010-06-03 Sriraman Tallam <tmsriram@google.com>
4312
4313 PR gold/11658
4314 * output.cc
4315 (Output_section::Input_section_sort_entry::compare_section_ordering):
4316 Change to return non-zero correctly.
4317 (Output_section::Input_section_sort_section_order_index_compare
4318 ::operator()): Change to fix ambiguity in comparisons.
4319
6e9ba2ca
ST
43202010-06-01 Sriraman Tallam <tmsriram@google.com>
4321
4322 * gold.h (is_wildcard_string): New function.
4323 * layout.cc (Layout::layout): Pass this pointer to add_input_section.
4324 (Layout::layout_eh_frame): Ditto.
4325 (Layout::find_section_order_index): New method.
4326 (Layout::read_layout_from_file): New method.
4327 * layout.h (Layout::find_section_order_index): New method.
4328 (Layout::read_layout_from_file): New method.
4329 (Layout::input_section_position_): New private member.
4330 (Layout::input_section_glob_): New private member.
4331 * main.cc (main): Call read_layout_from_file here.
4332 * options.h (--section-ordering-file): New option.
4333 * output.cc (Output_section::input_section_order_specified_): New
4334 member.
4335 (Output_section::Output_section): Initialize new member.
4336 (Output_section::add_input_section): Add new parameter.
4337 Keep input sections when --section-ordering-file is used.
4338 (Output_section::set_final_data_size): Sort input sections when
4339 section ordering file is specified.
4340 (Output_section::Input_section_sort_entry): Add new parameter.
4341 Check sorting type.
4342 (Output_section::Input_section_sort_entry::compare_section_ordering):
4343 New method.
4344 (Output_section::Input_section_sort_compare::operator()): Change to
4345 consider section_order_index.
4346 (Output_section::Input_section_sort_init_fini_compare::operator()):
4347 Change to consider section_order_index.
4348 (Output_section::Input_section_sort_section_order_index_compare
4349 ::operator()): New method.
4350 (Output_section::sort_attached_input_sections): Change to sort
4351 according to section order when specified.
e1df38aa
NC
4352 (Output_section::add_input_section<32, true>): Add new parameter.
4353 (Output_section::add_input_section<64, true>): Add new parameter.
4354 (Output_section::add_input_section<32, false>): Add new parameter.
4355 (Output_section::add_input_section<64, false>): Add new parameter.
6e9ba2ca
ST
4356 * output.h (Output_section::add_input_section): Add new parameter.
4357 (Output_section::input_section_order_specified): New
4358 method.
4359 (Output_section::set_input_section_order_specified): New method.
4360 (Input_section::Input_section): Initialize section_order_index_.
4361 (Input_section::section_order_index): New method.
4362 (Input_section::set_section_order_index): New method.
4363 (Input_section::section_order_index_): New member.
4364 (Input_section::Input_section_sort_section_order_index_compare): New
4365 struct.
4366 (Output_section::input_section_order_specified_): New member.
4367 * script-sections.cc (is_wildcard_string): Delete and move modified
4368 method to gold.h.
4369 (Output_section_element_input::Output_section_element_input): Modify
4370 call to is_wildcard_string.
4371 (Output_section_element_input::Input_section_pattern
4372 ::Input_section_pattern): Ditto.
4373 (Output_section_element_input::Output_section_element_input): Ditto.
4374 * testsuite/Makefile.am (final_layout): New test case.
4375 * testsuite/Makefile.in: Regenerate.
4376 * testsuite/final_layout.cc: New file.
4377 * testsuite/final_layout.sh: New file.
4378
3537c84b
RÁE
43792010-06-01 Rafael Espindola <espindola@google.com>
4380
4381 * plugin.cc (Plugin::load): Pass the output name to the plugin.
4382
105b6afd
RÁE
43832010-06-01 Rafael Espindola <espindola@google.com>
4384
4385 * plugin.cc (Sized_pluginobj::::do_add_symbols): Correctly set the
4386 visibility of symbols.
4387
29e11421
DK
43882010-05-27 Doug Kwan <dougkwan@google.com>
4389
4390 * object.cc (Sized_relobj::do_finalize_local_symbols): Use offset
4391 from start of output section instead of address for a local symbol
4392 in a merged or relaxed section when doing a relocatable link.
4393
5e0f337e
RÁE
43942010-05-26 Rafael Espindola <espindola@google.com>
4395
4396 PR 11604
4397 * gold/object.cc(Sized_relobj::do_layout_deferred_sections): Avoid
4398 adding sections the garbage collector removed.
4399 * gold/testsuite/Makefile.am: Add test.
4400 * gold/testsuite/Makefile.in: Regenerate.
4401 * gold/testsuite/plugin_test_7.sh: New.
4402 * gold/testsuite/plugin_test_7_1.c: New.
4403 * gold/testsuite/plugin_test_7_2.c: New.
4404
f4187277
RÁE
44052010-05-26 Rafael Espindola <espindola@google.com>
4406
4407 * script-sections.cc (Output_section_definition::set_section_addresses):
4408 Check for --section-start.
4409
5c388529
DK
44102010-05-26 Doug Kwan <dougkwan@google.com>
4411
4412 * arm.cc (Arm_scan_relocatable_relocs): New class.
4413 (Target_arm::relocate_special_relocatable): New method.
4414 (Arm_relocate_functions::arm_branch_common): Handle relocatable link.
4415 (Arm_relocate_functions::thumb_branch_common): Same.
4416 (Target_arm::scan_relocatable_relocs): Use Arm_scan_relocatable_relocs
4417 instead of Default_scan_relocatable_relocs.
4418 * target-reloc.h (relocate_for_relocatable): Let target handle
4419 relocation strategy Relocatable_relocs::RELOC_SPECIAL.
4420 * target.h (Sized_target::relocate_special_relocatable): New method.
4421
bca1c3ae
ILT
44222010-05-25 Viktor Kutuzov <vkutuzov@accesssoftek.com>
4423
4424 * timer.cc: Only #include <sys/times.h> if HAVE_TIMES is defined.
4425
0439c796
DK
44262010-05-23 Doug Kwan <dougkwan@google.com>
4427
4428 * arm.cc (Arm_input_section::do_output_offset): Use convert_types
4429 instead of a cast.
4430 (Target_arm::apply_cortex_a8_workaround): Rewrite a conditional branch
4431 with a direct branch, not a conditional branch, to a stub.
4432 * merge.cc (Output_merge_base::record_input_section): New method
4433 defintion.
4434 (Output_merge_data::do_add_input_section): Record input section if
4435 keeps-input-sections flag is set.
4436 (Output_merge_string::do_add_input_section): Ditto.
4437 * merge.h (Output_merge_base::Output_merge_base): Initialize new data
4438 members KEEPS_INPUT_SECTIONS_, FIRST_RELOBJ_, FIRST_SHNDX_ and
4439 INPUT_SECTIONS_.
4440 (Output_merge_base::keeps_input_sections,
4441 Output_merge_base::set_keeps_input_sections,
4442 Output_merge_base::first_relobj, Output_merge_base::first_shndx): New
4443 method definitions.
4444 (Output_merge_base::Input_sections): New type declaration.
4445 (Output_merge_base::input_sections_begin,
4446 Output_merge_base::input_sections_end,
4447 Output_merge_base::do_set_keeps_input_sections): New method definitions.
4448 (Output_merge_base::bool keeps_input_sections_,
4449 Output_merge_base::first_relobj_, Output_merge_base::first_shndx_,
4450 Output_merge_base::input_sections_): New data members.
4451 (Output_merge_data::do_set_keeps_input_sections): New method
4452 defintion.
4453 (Output_merge_string::do_set_keeps_input_sections): Ditto.
4454 * output.cc (Output_section::Input_section::relobj): Move method
4455 defintion from class declaration to here and handle merge sections.
4456 (Output_section::Input_section::shndx): Ditto.
4457 (Output_section::Output_section): Remove initializations of removed
4458 data members and initialize new data member LOOKUP_MAPS_.
4459 (Output_section::add_input_section): Set keeps-input-sections flag
4460 for a newly created merge output section as appropriate. Adjust code
4461 to use Output_section_lookup_maps class.
4462 (Output_section::add_relaxed_input_section): Adjst code for lookup
4463 maps code refactoring.
4464 (Output_section::add_merge_input_section): Add a new parameter
4465 KEEPS_INPUT_SECTION. Adjust code to use Output_section_lookup_maps
4466 class. If adding input section to a newly created merge output
4467 section fails, remove the new merge section.
4468 (Output_section::convert_input_sections_in_list_to_relaxed_input_sections):
e1df38aa 4469 Adjust code for use of the Output_section_lookup_maps class.
0439c796
DK
4470 (Output_section::find_merge_section): Ditto.
4471 (Output_section::build_lookup_maps): New method defintion.
4472 (Output_section::find_relaxed_input_section): Adjust code to use
4473 Output_section_lookup_maps class.
4474 (Output_section::get_input_sections): Export merge sections. Adjust
4475 code to use Output_section_lookup_maps class.
4476 (Output_section:::add_script_input_section): Adjust code to use
4477 Output_section_lookup_maps class. Update lookup maps for merge
4478 sections also.
4479 (Output_section::discard_states): Use Output_section_lookup_maps.
4480 (Output_section::restore_states): Same.
4481 * output.h (Merge_section_properties): Move class defintion out of
4482 Output_section.
4483 (Output_section_lookup_maps): New class.
4484 (Output_section::Input_section::is_merge_section): New method
4485 defintion.
4486 (Output_section::Input_section::relobj): Move defintion out of class
4487 defintion. Declare method only.
4488 (Output_section::Input_section::shndx): Ditto.
4489 (Output_section::Input_section::output_merge_base): New method defintion.
4490 (Output_section::Input_section::u2_.pomb): New union field.
4491 (Output_section::Merge_section_by_properties_map,
4492 Output_section::Output_section_data_by_input_section_map,
4493 Output_section::Ouptut_relaxed_input_section_by_input_section_map):
4494 Remove types.
4495 (Output_section::add_merge_input_section): Add new parameter
4496 KEEPS_INPUT_SECTIONS.
4497 (Output_section::build_lookup_maps): New method declaration.
4498 (Output_section::merge_section_map_,
4499 Output_section::merge_section_by_properties_map_,
4500 Output_section::relaxed_input_section_map_,
4501 Output_section::is_relaxed_input_section_map_valid_): Remove data
4502 members.
4503 (Output_section::lookup_maps_): New data member.
4504
76295588
L
45052010-05-21 Doug Kwan <dougkwan@google.com>
4506
4507 PR gold/11619
4508 * arm.cc (Arm_input_section::do_output_offset): Add a cast to
4509 avoid a compilation error.
4510
d103a984
RÁE
45112010-05-19 Rafael Espindola <espindola@google.com>
4512
4513 * script-sections.cc (Output_section_definition::allocate_to_segment):
4514 Update the phdrs_list even when the output section is NULL.
4515 * testsuite/Makefile.am: Add test.
4516 * testsuite/Makefile.in: Regenerate.
4517 * testsuite/script_test_9.cc: New.
4518 * testsuite/script_test_9.sh: New.
4519 * testsuite/script_test_9.t: New.
4520
6625d24e
DK
45212010-05-19 Doug Kwan <dougkwan@google.com>
4522
4523 * arm.cc (Arm_input_section::original_size): New method.
4524 (Arm_input_section::do_addralign): Add a cast.
4525 (Arm_input_section::do_output_offset): Remove static cast.
4526 (Arm_input_section::original_addralign,
4527 Arm_input_section::original_size_): Change type to uint32_t.
4528 (Arm_input_section::init): Add safe casts for section alignment
4529 and size.
4530 (Arm_input_section::set_final_data_size): Do not set address and
4531 offset of stub table.
4532 (Arm_output_section::fix_exidx_coverage): Change use of of
4533 Output_section::Simple_input_section to that of
4534 Output_section::Input_section.
4535 (Target_arm::do_relax): Set addresses and file offsets of Stub_tables
4536 except for the first pass.
4537 * output.cc (Output_section::get_input_sections): Change type of
4538 input_sections to std::list<Input_section>.
4539 (Output_section::add_script_input_section): Rename from
4540 Output_section::add_simple_input_section. Change type of SIS
4541 parameter from Simple_input_section to Input_section.
4542 * output.h (Output_section::Simple_input_section): Remove class.
4543 (Output_section::Input_section): Change class visibility to public.
4544 (Output_section::Input_section::addralign): Use stored alignments
4545 for special input sections if set.
4546 (Output_section::Input_section::set_addralign): New method.
4547 (Output_section::get_input_sections): Change parameter type from
4548 list of Simple_input_section to list of Input_section.
4549 (Output_section::add_script_input_section): Rename from
4550 Output_section::add_simple_input_section. Change first parameter's
4551 type from Simple_input_section to Input_section and remove the
4552 second and third parameters.
4553 * script-sections.cc (Input_section::Input_section_list): Change
4554 type to list of Output_section::Input_section/
4555 (Input_section_info::Input_section_info): Change parameter type of
4556 INPUT_SECTION to Output_section::Input_section.
4557 (Input_section_info::input_section): Change return type.
4558 (Input_section_info::input_section_): Change type to
4559 Output_section::Input_section.
4560 (Output_section_element_input::set_section_addresses): Adjust code
4561 to use Output_section::Input_section instead of
4562 Output_section::Simple_input_section. Adjust code for renaming
4563 of Output_section::add_simple_input_section.
4564 (Orphan_output_section::set_section_addresses): Ditto.
4565
e1e82ea4
RW
45662010-05-18 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
4567
4568 * gold.h (Unordered_multimap, Unordered_map): Fix defines for
4569 when neither HAVE_TR1_UNORDERED_MAP nor HAVE_EXT_HASH_MAP are set.
4570
91e75c8a
RÁE
45712010-05-18 Rafael Espindola <espindola@google.com>
4572
4573 * options.cc (General_options::finalize): Handle -nostdlib.
4574 * options.h (nostdlib): New option.
4575 * script.cc (script_add_search_dir): Handle -nostdlib.
4576
da59ad79
DK
45772010-05-12 Doug Kwan <dougkwan@google.com>
4578
4579 * arm.cc (Target_arm::do_finalize_sections): Create an empty
4580 attributes section only if there no attributes section after merging.
4581 (Target_arm::merge_object_attributes): Move value of
e1df38aa 4582 Tag_MPextension_use_legacy to that of Tag_MPextension_use.
da59ad79
DK
4583 Handle Tag_DIV_use and Tag_MPextension_use_legacy.
4584 * testsuite/Makefile.am (check_SCRIPTS): Add arm_attr_merge.sh
4585 (check_DATA): Add arm_attr_merge_6.stdout, arm_attr_merge_6r_stdout
4586 and arm_attr_merge_7.stdout.
4587 (arm_attr_merge_6.stdout, arm_attr_merge_6 arm_attr_merge_6a.o
4588 arm_attr_merge_6b.o, arm_attr_merge_6r.stdout, arm_attr_merge_6r,
4589 arm_attr_merge_7.stdout, arm_attr_merge_7, arm_attr_merge_7a.o,
4590 arm_attr_merge_7b.o): New rules.
4591 (MOSTLYCLEANFILES): Add arm_attr_merge_6, arm_attr_merge_6r and
4592 arm_attr_merge_7
4593 * testsuite/Makefile.in: Regenerate.
4594 * testsuite/arm_attr_merge.sh: New file.
4595 * testsuite/arm_attr_merge_[67][ab].s: Same.
4596
3e01a7fd
NC
45972010-05-05 Nick Clifton <nickc@redhat.com>
4598
4599 * po/es.po: Updated Spanish translation.
4600
7ad2014a
L
46012010-04-27 H.J. Lu <hongjiu.lu@intel.com>
4602
4603 * Makefile.am (install-exec-local): Properly install gold as
4604 default cross linker.
4605 * Makefile.in: Regenerated.
4606
4fda8867
NC
46072010-04-27 H.J. Lu <hongjiu.lu@intel.com>
4608 Nick Clifton <nickc@redhat.com>
4609
4610 * configure.ac (install_as_default): Define and set to false
4611 unless --enable-gold or --enable-gold=both/gold has been
4612 specified.
4613 * configure: Regenerate.
4614
4615 * Makefile.am (install-exec-local): Install the executable as
4616 'ld.gold'. If install_as_default is true then also install it as
4617 'ld'.
4618 * Makefile.in: Regenerated.
4619
bd288ea2
ILT
46202010-04-24 Ian Lance Taylor <iant@google.com>
4621
4622 * layout.cc (Layout::layout_reloc): In relocatable link don't
4623 combine reloc sections for grouped sections.
4624
ef38fd8a
ST
46252010-04-23 Sriraman Tallam <tmsriram@google.com>
4626
4627 * gc.h (gc_process_relocs): Pass information on relocs pointing to
4628 sections that are not ordinary to icf.
4629 * icf.cc (get_section_contents): Handle relocation pointing to section
4630 with no object or shndx information.
4631 * testsuite/Makefile.am: Remove icf_virtual_function_folding_test.sh
4632 * testsuite/Makefile.in: Regenerate.
4633 * testsuite/icf_virtual_function_folding_test.cc: Remove printf.
4634 * testsuite/icf_virtual_function_folding_test.sh: Delete file.
4635
f6973bdc
ILT
46362010-04-22 Ian Lance Taylor <iant@google.com>
4637
4638 * expression.cc (Expression::Expression_eval_info): Add
4639 result_alignment_pointer field.
4640 (Expression::eval_with_dot): Add result_alignment_pointer
4641 parameter. Change all callers.
4642 (Expression::eval_maybe_dot): Likewise.
4643 (class Binary_expression): Add alignment_pointer parameter to
4644 left_value and right_value. Change all callers.
4645 (BINARY_EXPRESSION): Set result alignment.
4646 (class Trinary_expression): Add alignment_pointer parameter to
4647 arg2_value and arg3_value. Change all callers.
4648 (Trinary_cond::value): Set result alignment.
4649 (Max_expression::value, Min_expression::value): Likewise.
4650 (Align_expression::value): Likewise.
4651 * script-sections.cc (class Sections_element): Add dot_alignment
4652 parameter to set_section_addresses virtual function. Update
4653 instantiations.
4654 (class Output_section_element): Likewise.
4655 (Script_sections::create_segments): Add dot_alignment parameter.
4656 Change all callers.
4657 (Script_sections::create_segments_from_phdrs_clause): Likewise.
4658 (Script_sections::set_phdrs_clause_addresses): Likewise.
4659 * script-sections.h: Update declarations.
4660 * script.h: Update declarations.
4661 * output.h (Output_segment::set_minimum_p_align): Don't decrease
4662 min_p_align.
4663 * testsuite/script_test_3.t: Set large alignment.
4664 * testsuite/script_test_3.sh: Make sure that at least one LOAD
4665 segment has expected alignment.
4666
9c9c98a5
NC
46672010-04-22 Nick Clifton <nickc@redhat.com>
4668
4669 * po/gold.pot: Updated by the Translation project.
4670 * po/vi.po: Updated Vietnamese translation.
4671
2253bfba
L
46722010-04-22 H.J. Lu <hongjiu.lu@intel.com>
4673
4674 * testsuite/Makefile.am (check_PROGRAMS): Add
4675 icf_virtual_function_folding_test.
4676 * testsuite/Makefile.in: Regenerated.
4677
85fdf906
AH
46782010-04-15 Andrew Haley <aph@redhat.com>
4679
4680 * options.h (merge_exidx_entries): New option.
4681 * arm.cc (class Arm_exidx_fixup): Add new arg, merge_exidx_entries.
4682 (class Arm_exidx_fixup::merge_exidx_entries_): New member.
4683 (Output_section::fix_exidx_coverage): Add new arg, merge_exidx_entries.
4684 (Target_arm::merge_exidx_entries): New function.
4685 (process_exidx_entry): Don't merge if merge_exidx_entries_ is false.
4686 (Arm_output_section::fix_exidx_coverage): Pass merge_exidx_entries
4687 to Arm_exidx_fixup constructor.
4688 Add new arg, merge_exidx_entries.
4689 (Target_arm::fix_exidx_coverage): pass merge_exidx_entries to
4690 Arm_output_section::fix_exidx_coverage.
4691
ce97fa81
ST
46922010-04-18 Sriraman Tallam <tmsriram@google.com>
4693
4694 * icf.cc (get_section_contents): Check for preemptible functions.
4695 Ignore addend when appropriate.
4696 * symtab.cc (should_add_dynsym_entry): Add new parameter. Check for
4697 section folded.
4698 (add_from_relobj): Check for section folded.
4699 (set_dynsym_indexes): Fix call to should_add_dynsym_entry.
4700 * symtab.h (should_add_dynsym_entry): Add new parameter.
4701 * target-reloc.h (scan_relocs): Check for section folded.
4702 * x86_64.cc (Target_x86_64::Scan::possible_function_pointer_reloc):
4703 Check reloc types for function pointers in shared objects.
4704 * testsuite/Makefile.am (icf_virtual_function_folding_test): New test
4705 case.
4706 (icf_preemptible_functions_test): New test case.
4707 (icf_string_merge_test): New test case.
4708 * testsuite.Makefile.in: Regenerate.
4709 * testsuite/icf_safe_so_test.sh: Change to not fold foo_glob and
4710 bar_glob. Refactor code.
4711 * testsuite/icf_preemptible_functions_test.cc: New file.
4712 * testsuite/icf_preemptible_functions_test.sh: New file.
4713 * testsuite/icf_string_merge_test.cc: New file.
4714 * testsuite/icf_string_merge_test.sh: New file.
4715 * testsuite/icf_virtual_function_folding_test.cc: New file.
4716 * testsuite/icf_virtual_function_folding_test.sh: New file.
4717
04ceb17c
DK
47182010-04-14 Doug Kwan <dougkwan@google.com>
4719
4720 * arm.cc (Arm_output_section::fix_exidx_coverage): Mark object
4721 for local symbol recounting if we remove a section due to ICF.
4722 * gold.cc (queue_middle_gc_tasks): Create a dummy blocker if
4723 there are no regular objects in input.
4724
153e7da4
DK
47252010-04-13 Doug Kwan <dougkwan@google.com>
4726
4727 * arm.cc (Arm_input_section::set_final_data_size): Compute
4728 accurate final data size instead of using current data size.
4729
4dbd9faf
DK
47302010-04-09 Doug Kwan <dougkwan@google.com>
4731
4732 * layout.cc (Layout::choose_output_section): Handle script section
4733 types.
4734 (Layout::make_output_section_for_script): Add section type parameter.
4735 Handle script section types.
4736 * layout.h (Layout::make_output_section_for_script): Add section
4737 type parameter.
4738 * output.cc (Output_section::Output_section): Initialize data member
4739 is_noload_.
4740 (Output_section::do_reset_address_and_file_offset): Do not set address
4741 to 0 if section is a NOLOAD section.
4742 * output.h (Output_section::is_noload): New method.
4743 (Output_section::set_is_noload): Ditto.
4744 (Output_section::is_noload_): New data member.
4745 * script-c.h (Script_section_type): New enum type.
4746 (struct Parser_output_section_header): Add new file section_type.
4747 * script-sections.cc (Sections_element::output_section_name): Add
4748 parameter for returning script section type.
4749 (Output_section_definition::output_section_name): Ditto.
4750 (Output_section_definition::section_type)P; New method.
4751 (Output_section_definiton::script_section_type_name): Ditto.
4752 (Output_section_definition::script_section_type_): New data member.
4753 (Output_section_definition::Output_section_definition): Initialize
4754 data member Output_section_definition::script_section_type_.
4755 (Output_section_definition::create_sections): Pass script section type
4756 to Layout::make_output_section_for_script.
4757 (Output_section_definition::output_section_name): Return script
4758 section type to caller.
4759 (Output_section_definition::set_section_address): Do not advance
4760 dot value and load address if section type is NOLOAD. Set address
4761 of NOLOAD sections regardless of section flags.
4762 (Output_section_definition::print): Print section type if it is
4763 not SCRIPT_SECTION_TYPE_NONE.
4764 (Output_section_definition::section_type): New method.
4765 (Output_section_definition::script_section_type_name): Ditto.
4766 (Script_sections::output_section_name): Add new parameter
4767 PSECTION_TYPE for returning script section type. Pass it to
4768 section elements. Handle discard sections.
4769 (Sort_output_sections::operator()): Handle NOLOAD sections.
4770 * script-sections.h (Script_sections::Section_type): New enum type.
4771 (Script_sections::output_section_name): Add a new parameter for
4772 returning script section type.
4773 * script.cc (script_keyword_parsecodes): Add keywords COPY, DSECT,
4774 INFO and NOLOAD.
4775 * yyscript.y (union): Add new field SECTION_TYPE.
4776 (COPY, DSECT, INFO, NOLOAD): New tokens.
4777 (opt_address_and_section_type): Change type to output_section_header.
4778 (section_type): New non-terminal
4779 (section_header): Handle section type.
2253bfba 4780 (opt_address_and_section_type): Return section type value.
4dbd9faf 4781
721ea635
L
47822010-04-09 H.J. Lu <hongjiu.lu@intel.com>
4783
4784 * testsuite/plugin_common_test_1.c (foo): Add prototype.
4785 * testsuite/plugin_common_test_2.c (foo): Likewise.
4786
6bf924b0
DK
47872010-04-08 Doug Kwan <dougkwan@google.com>
4788
4789 * merge.cc (Output_merge_data::set_final_data_size): Handle empty
4790 Output_merge_data.
4791 * output.cc (Output_section::add_merge_input_section): Simplify
4792 code and return status of Output_merge_base::add_input_section.
e1df38aa 4793 Update merge section map only if Output_merge_base::add_input_section
6bf924b0
DK
4794 returns true.
4795
24af6f92
DK
47962010-04-07 Doug Kwan <dougkwan@google.com>
4797
4798 * arm.cc (Arm_relobj::scan_section_for_cortex_a8_erratum): Warn
4799 if section is marked as containing instructions but has no mapping
4800 symbols.
4801 (Arm_relobj::do_count_local_symbols): Call adjust_sym_shndx to get
4802 correct section index.
4803 (Arm_relobj::find_linked_text_section): Ditto.
4804
00698fc5
CC
48052010-04-07 Cary Coutant <ccoutant@google.com>
4806
4807 * archive.cc (include_member): Destroy Read_symbols_data object before
4808 releasing file.
4809 * object.cc (Read_symbols_data::~Read_symbols_data) New destructor.
4810 * object.h (Read_symbols_data::Read_symbols_data) New constructor.
4811 (Read_symbols_data::~Read_symbols_data) New destructor.
4812 (Section_relocs::Section_relocs) New constructor.
4813 (Section_relocs::~Section_relocs) New destructor.
4814 (Read_relocs_data::Read_relocs_data) New constructor.
4815 (Read_relocs_data::~Read_relocs_data) New destructor.
4816 * testsuite/binary_unittest.cc (Sized_binary_test): Set sd member
4817 pointers to NULL after deleting.
4818
7296d933
DK
48192010-04-07 Doug Kwan <dougkwan@google.com>
4820
4821 * arm.cc: Replace "endianity" with "endianness" in comments.
4822 (Arm_exidx_cantunwind): Ditto.
4823 (Arm_relobj::Arm_relobj): Initialize merge_flags_and_attribures.
4824 (Arm_relobj::merge_flags_and_attributes): New method.
4825 (Arm_relobj::merge_flags_and_attributes_): New data member.
4826 (Arm_exidx_cantunwind::do_fixed_endian_write): Fix formatting.
4827 (Arm_relobj::scan_sections_for_stubs): Ditto.
4828 (Arm_relobj::do_read_symbols): Check to see if we really want to
4829 merge processor-specific flags and attributes. Exit early if
4830 an object is empty except for section names and the undefined symbol.
4831 (Target_arm::do_finalize_sections): Move check for ELF format to
4832 Arm_relobj::do_read_symbols. Merge processor specific flags and
4833 attributes from a regular object only when we have determined that
4834 it is aapropriate. Do not create an .ARM.attributes section in
4835 output if there is no regular input object.
4836 (Target_arm::merge_processor_specific_flags): Check
4837 --warn-mismatch before printing any error.
4838 (Target_arm::merge_object_attributes): Ditto.
4839 * gold.cc (queue_middle_tasks): Handle the case in which there is
4840 no regular object in input.
4841 * options.cc (General_options::parse_EB): New method.
4842 (General_options::parse_EL): Same.
4843 (General_options::General_options): Initialize endianness_.
4844 * options.h (-EB, -EL, -no-pipeline-knowledge, -p, --warn-mismatch):
4845 New options.
4846 (General_options::Endianness): New enum.
4847 (General_options::endianness): New method.
4848 (General_options::endianness_): New data member.
4849 * parameters.cc (Parameters::set_options): Check target endianness.
4850 (Parameters::set_target_once): Ditto.
4851 (Parameters::check_target_endianness): New method.
4852 (parameters_force_valid_target): If either -EL or -EB is specified,
4853 use it to define endianness of default target.
4854 * parameters.h (Parameters::check_target_endianness): New method
4855 declaration.
4856 * target.h (class Target): Change "endianity" to "endianness"
4857 in comments.
4858
efc8d4f2
RW
48592010-04-07 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
4860
4861 * configure.ac (AM_INIT_AUTOMAKE): Add option no-dist.
4862 * configure: Regenerate.
4863 * Makefile.in: Regenerate.
4864 * testsuite/Makefile.in: Regenerate.
4865
be234d88
CC
48662010-04-06 Cary Coutant <ccoutant@google.com>
4867
4868 gcc PR lto/42757
4869 * plugin.cc (Pluginobj::get_symbol_resolution_info): Check for
4870 prevailing definitions of common symbols.
4871 * testsuite/plugin_test_6.sh: New test case.
4872 * testsuite/plugin_common_test_1.c: New test case.
4873 * testsuite/plugin_common_test_2.c: New test case.
4874 * testsuite/Makefile.am (plugin_test_6): New test case.
4875 * testsuite/Makefile.in: Regenerate.
4876
bd32c6bd
NC
48772010-04-06 Nick Clifton <nickc@redhat.com>
4878
4879 * po/vi.po: New Vietnamese translation.
4880
323c532f
DK
48812010-03-30 Doug Kwan <dougkwan@google.com>
4882
4883 * arm.cc (Target_arm::using_thumb_only): Handle v6-M
4884
4fcd97eb
DK
48852010-03-25 Doug Kwan <dougkwan@google.com>
4886
4887 * gold/arm.cc (Arm_exidx_fixup::update_offset_map): Rearrange code
4888 to avoid a conversion warning on a 32-bit host.
4889
4ebf39db
ILT
48902010-03-24 Ian Lance Taylor <iant@google.com>
4891
4892 * testsuite/script_test_3.t: Add a TLS segment.
4893 * testsuite/Makefile.am (check_PROGRAMS): Add
4894 tls_phdrs_script_test.
4895 (tls_phdrs_script_test_SOURCES): Define.
4896 (tls_phdrs_script_test_DEPENDENCIES): Define.
4897 (tls_phdrs_script_test_LDFLAGS): Define.
4898 (tls_phdrs_script_test_LDADD): Define.
4899 * testsuite/Makefile.in: Rebuild.
4900
4a599bdd
CC
49012010-03-23 Cary Coutant <ccoutant@google.com>
4902
4903 * fileread.cc (find_or_make_view): Fix comment.
4904
6c93b22c
ILT
49052010-03-23 Ian Lance Taylor <iant@google.com>
4906
4907 * script-sections.cc (class Orphan_section_placement): Define
4908 PLACE_TLS and PLACE_TLS_BSS.
4909 (Orphan_section_placement::Orphan_section_placement): Initialize
4910 new places.
4911 (Orphan_section_placement::find_place): Handle SHF_TLS sections.
4912 * testsuite/Makefile.am (check_PROGRAMS): Add tls_script_test.
4913 (tls_script_test_SOURCES): Define.
4914 (tls_script_test_DEPENDENCIES): Define.
4915 (tls_script_test_LDFLAGS): Define.
4916 (tls_script_test_LDADD): Define.
4917 * testsuite/Makefile.in: Rebuild.
4918
a2c7281b
DK
49192010-03-22 Doug Kwan <dougkwan@google.com>
4920
4921 * arm.cc (Arm_relocate_functions::abs8,
4922 Arm_relocate_functions::abs16): Use correct check for overflow
4923 specified in the ARM ELF specs.
4924 (Arm_relocate_functions): thumb_branch_common. Handle bit 1 of branch
4925 target of a BLX instruction specially.
4926 (Reloc_stub::stub_type_for_reloc): Ditto.
4927 (Relocate::relocate): Use symbolic names instead of numeric relocation
4928 codes to report error.
4929 (Target_arm::do_relox): Reduce default stub-group size for Cortex-A8
4930 workaround.
4931 * testsuite/Makefile.am (check_DATA): add thumb_blx_in_range.stdout,
4932 thumb_blx_out_of_range.stdout, thumb2_blx_in_range.stdout and
4933 thumb2_blx_out_of_range.stdout
4934 (thumb_bl_out_of_range, thumb_bl_out_of_range.o,
4935 thumb2_bl_out_of_range, thumb2_bl_out_of_range.o): Fix dependenices.
4936 (thumb_blx_in_range.stdout, thumb_blx_in_range, thumb_blx_in_range.o,
4937 thumb_blx_out_of_range.stdout, thumb_blx_out_of_range,
4938 thumb_blx_out_of_range.o, thumb2_blx_in_range.stdout,
4939 thumb2_blx_in_range, thumb2_blx_in_range.o,
4940 thumb2_blx_out_of_range.stdout, thumb2_blx_out_of_range,
4941 thumb2_blx_out_of_range.o): New rules.
4942 (MOSTLYCLEANFILES): Add thumb_blx_in_range, thumb_blx_out_of_range,
4943 thumb2_blx_in_range and thumb2_blx_out_of_range.
4944 * testsuite/Makefile.in: Regenerate.
4945 * arm_branch_in_range.sh: Add tests for THUMB BLX.
4946 * testsuite/thumb_blx_in_range.s: New file.
4947 * testsuite/thumb_blx_out_of_range.s: New file.
4948
b0193076
RÁE
49492010-03-22 Rafael Espindola <espindola@google.com>
4950
4951 * archive.cc (Should_include): Move to archive.h.
4952 (should_include_member): Make it a member of Archive.
4953 (Lib_group): New.
4954 (Add_lib_group_symbols): New.
4955 * archive.h: Include options.h.
4956 (Archive_member): Moved from Archive.
4957 (Should_include): Moved from archive.cc.
4958 (Lib_group): New.
4959 (Add_lib_group_symbols): New.
4960 * dynobj.cc (do_should_include_member): New.
4961 * dynobj.h (do_should_include_member): New.
4962 * gold.cc (queue_initial_tasks): Update call to queue.
4963 * main.cc (main): Print lib group stats.
4964 * object.cc (do_should_include_member): New.
4965 * object.h: Include archive.h.
4966 (Object::should_include_member): New.
4967 (Object::do_should_include_member): New.
4968 (Sized_relobj::do_should_include_member): New.
4969 * options.cc (General_options::parse_start_lib): New.
4970 (General_options::parse_end_lib): New.
4971 (Input_arguments::add_file): Handle lib groups.
4972 (Input_arguments::start_group): Check we are not in a lib.
4973 (Input_arguments::start_lib): New.
4974 (Input_arguments::end_lib): New.
4975 * options.h (General_options): Add start_lib and end_lib.
4976 (Input_argument::lib_): New.
4977 (Input_argument::lib): New.
4978 (Input_argument::is_lib): New.
4979 (Input_file_lib): New.
4980 (Input_arguments::in_lib_): New.
4981 (Input_arguments::in_lib): New.
4982 (Input_arguments::start_lib): New.
4983 (Input_arguments::end_lib_): New.
4984 * plugin.cc (Pluginobj::get_symbol_resolution_info): Mark symbols
4985 in unused members as preempted.
4986 (Sized_pluginobj::do_should_include_member): New.
4987 * plugin.h (Sized_pluginobj::do_should_include_member): New.
4988 * readsyms.cc (Read_symbols::locks): If we are just reading a member,
4989 return the blocker.
4990 (Read_symbols::do_whole_lib_group): New.
4991 (Read_symbols::do_lib_group): New.
4992 (Read_symbols::do_read_symbols): Handle lib groups.
4993 (Read_symbols::get_name): Handle lib groups.
4994 * readsyms.h (Read_symbols): Add an archive member pointer.
4995 (Read_symbols::do_whole_lib_group): New.
4996 (Read_symbols::do_lib_group): New.
4997 (Read_symbols::member_): New.
4998 * script.cc (read_input_script): Update call to queue_soon.
4999
d099120c
DK
50002010-03-19 Doug Kwan <dougkwan@google.com>
5001
5002 * arm.cc (Stub_table::Stub_table): Initialize new data members
5003 Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_.
5004 (Stub_table::add_reloc_stub): Assign stub offset and update
5005 Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_.
5006 (Stub_table::reloc_stubs_size_, Stub_table::reloc_stubs_addralign_):
5007 New data members.
5008 (Stub_table::update_data_size_and_addralign): Use
5009 Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_
5010 instead of going over all reloc stubs.
5011 (Stub_table::finalize_stubs): Do not assign reloc stub offsets.
5012 * stringpool.cc (Stringpool_template::Stringpool_template): Initialize
5013 Stringpool_template::offset_ to size of Stringpool_char.
5014 (Stringpool_template::new_key_offset): Remove code to initialize
5015 Stringpool_template::offset_.
5016 * stringpool.h (Stringpool_template::set_no_zero_null): Set
5017 Stringpool_template::offset_ to zero.
5018
1aa37384
DK
50192010-03-15 Doug Kwan <dougkwan@google.com>
5020
5021 * stringpool.cc (Stringpool_template::Stringpool_template): Initialize
5022 offset_.
5023 (Stringpool_template::new_key_offset): New method.
5024 (Stringpool_template::add_string): Assign offsets when adding new
5025 strings.
5026 (Stringpool_template::set_string_offsets): Do not set string offsets
5027 when not optimizing.
5028 * stringpool.h (Chunked_vector::Chunked_vector): Initialize data
5029 member size_.
5030 (Chunked_vector::clear): Clear size_.
5031 (Chunked_vector::reserve): Call reserve method of all Element_vectors.
5032 (Chunked_vector::size): Return size_.
5033 (Chunked_vector::push_back): Use size_ to find insert position.
e1df38aa 5034 (Chunked_vector::size_): New data member.
1aa37384
DK
5035 (Stringpool_template::set_no_zero_null): Assert string set is empty.
5036 (Stringpool_template::new_key_offset): New method declaration.
5037 (Stringpool_template::offset_): New data member.
5038
b672b057
RÁE
50392010-03-15 Rafael Espindola <espindola@google.com>
5040
5041 * readsyms.cc (Read_symbols::do_read_symbols): Update calls to
5042 Add_symbols' constructor.
5043 * readsyms.h (Add_symbols): Remove the input_group member.
5044
b6848d3c
ILT
50452010-03-10 Ian Lance Taylor <iant@google.com>
5046
5047 * reloc.cc (Sized_relobj::split_stack_adjust_reltype): Call the
5048 target to ask whether a reference to a symbol requires a stack
5049 split.
5050 * target.h (Target::is_call_to_non_split): New function.
5051 (Target::do_is_call_to_non_split): Declare virtual function.
5052 * target.cc: Include "symtab.h".
5053 (Target::do_is_call_to_non_split): New function.
5054 * i386.cc (Target_i386::do_is_call_to_non_split): New function.
5055
a2a5469e
CC
50562010-03-10 Cary Coutant <ccoutant@google.com>
5057
5058 * fileread.cc (File_read::~File_read): Don't delete whole_file_view_.
5059 (File_read::open[1]): Remove initial mapping of whole_file_view_.
5060 (File_read::open[2]): Add whole_file_view_ to list of views.
5061 (File_read::make_view): Remove test of whole_file_view_.
5062 (File_read::find_or_make_view): Create whole_file_view_ if
5063 necessary.
5064 (File_read::clear_views): Replace bool parameter with enum;
5065 adjust all callers. Don't delete views with permanent data;
5066 do delete cached views and views from archives if
5067 --no-keep-files-mapped is set. Set whole_file_view_ to NULL
5068 if clearing the corresponding view.
5069 * fileread.h (File_read::Clear_views_mode): New enum.
5070 (File_read::View::is_permanent_view): New method.
5071 (File_read::clear_views): Replace bool parameter
5072 with enum; adjust all callers.
5073 * options.h (General_options): Change keep_files_mapped option;
5074 add map_whole_files.
5075 * readsyms.cc (Add_symbols::run): Delete sd_ object before
5076 releasing the file.
5077 * reloc.cc (Scan_relocs::run): Delete rd_ object before releasing
5078 the file.
5079
8861f32b
DM
50802010-03-10 David S. Miller <davem@davemloft.net>
5081
5082 * sparc.cc (Target_sparc::Scan::local): Accept R_SPARC_WPLT30.
5083
d62d0f5f
ST
50842010-03-09 Sriraman Tallam <tmsriram@google.com>
5085
5086 * icf.cc (get_section_contents): Add '@' marker after processing the
5087 merge reloc.
5088
9177756d
DK
50892010-03-08 Doug Kwan <dougkwan@google.com>
5090
5091 * gold/arm.cc (Arm_exidx_fixup::update_offset_map): Fix build breakage
5092 due to a conversion warning.
5093 (Arm_relobj::update_output_local_symbol_count): Check for local
5094 symbol with unset output index.
5095
9e9e071b
ILT
50962010-03-05 Ian Lance Taylor <iant@google.com>
5097
5098 * options.h (class General_options): Add --spare-dynamic-tags.
5099 * output.cc (Output_data_dynamic::set_final_data_size): Implement
5100 --spare-dynamic-tags.
5101
a81ee015
ILT
51022010-03-05 Ian Lance Taylor <iant@google.com>
5103
5104 * incremental.cc: Include "libiberty.h".
5105
44ec90b9
RO
51062010-03-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
5107
5108 * dynobj.h (Verdef::Verdef): Add is_info arg, is_info member
5109 function, is_info_ member.
5110 * dynobj.cc (Verdef::write): Set VER_FLG_INFO if this->is_info_.
5111 (Versions::Versions): Update caller.
5112 (Versions::define_base_version): Likewise.
5113 (Versions::add_def): Likewise.
5114
0897ed3b
ST
51152010-03-03 Sriraman Tallam <tmsriram@google.com>
5116
5117 * i386.cc (Target_i386::can_check_for_function_pointers): New function.
5118 (Scan::possible_function_pointer_reloc): New function.
5119 (Scan::local_reloc_may_be_function_pointer): Change to call
5120 possible_function_pointer_reloc.
5121 (Scan::global_reloc_may_be_function_pointer): Ditto.
5122 * icf.h (Icf::check_section_for_function_pointers): Change to reject
5123 relocations in ".data.rel.ro._ZTV" section.
5124 * testsuite/icf_safe_so_test.sh: Change to pass i386.
5125 * testsuite/icf_safe_so_test.cc: Ditto.
5126 * testsuite/icf_safe_test.cc: Ditto.
5127 * testsuite/icf_safe_test.sh: Ditto.
5128
d3bbad62
ILT
51292010-03-03 Viktor Kutuzov <vkutuzov@accesssoftek.com>
5130 Ian Lance Taylor <iant@google.com>
5131
5132 * target-reloc.h (relocate_section): Check the symbol table index
5133 for -1U before setting the local symbol index.
5134 (scan_relocatable_relocs): If copying the relocation, record that
5135 the local symbol is required.
5136 * object.h (Symbol_value::is_output_symtab_index_set): New
5137 function.
5138 (Symbol_value::may_be_discarded_from_output_symtab): New
5139 function.
5140 (Symbol_value::has_output_symtab_entry): New function.
5141 (Symbol_value::needs_output_symtab_entry): Remove.
5142 (Symbol_value::output_symtab_index): Make sure the symbol index is
5143 set.
5144 (Symbol_value::set_output_symtab_index): Make sure the symbol
5145 index is not set. Make sure the new index is valid.
5146 (Symbol_value::set_must_have_output_symtab_entry): New function.
5147 (Symbol_value::has_output_dynsym_entry): New function.
5148 (Symbol_value::set_output_dynsym_index): Make sure the new index
5149 is valid.
5150 (Sized_relobj::set_must_have_output_symtab_entry): New function.
5151 * object.cc (Sized_relobj::do_count_local_symbols): Only discard a
5152 local symbol if permitted.
5153 (Sized_relobj::do_finalize_local_symbols): Call
5154 is_output_symtab_index_set rather than needs_output_symtab_entry.
5155 (Sized_relobj::write_local_symbols): Call has_output_symtab_entry
5156 rather than needs_output_symtab_entry. Call
5157 has_output_dynsym_entry rather than needs_output_dynsym_entry.
5158 * arm.cc (Arm_relobj::update_output_local_symbol_count): Call
5159 is_output_symtab_index_set rather than needs_output_symtab_entry.
5160 * testsuite/discard_locals_relocatable_test.c: New file.
5161 * testsuite/discard_locals_test.sh: Test -r.
5162 * testsuite/Makefile.am (check_DATA): Add
5163 discard_locals_relocatable_test1.syms,
5164 discard_local_relocatable_test2.syms.
5165 (MOSTLYCLEANFILES): Likewise. Also add
5166 discard_locals_relocatable_test1.lout and
5167 discard_locals_relocatable_test2.out.
5168 (discard_locals_relocatable_test1.syms): New target.
5169 (discard_locals_relocatable_test.o): New target.
5170 (discard_locals_relocatable_test1.out): New target.
5171 (discard_locals_relocatable_test2.syms): New target.
5172 (discard_locals_relocatable_test2.out): New target.
5173 (various): Add missing ../ld-new dependencies.
5174 * testsuite/Makefile.in: Rebuild.
5175
7e8ccf26
NC
51762010-03-03 Nick Clifton <nickc@redhat.com>
5177
5178 * po/fi.po: New Finnish translation.
5179
2a0ff005
DK
51802010-03-01 Doug Kwan <dougkwan@google.com>
5181
5182 * layout.cc (Layout::Layout): Force section types of .init_array*,
5183 .preinit_array* and .fini_array* sections.
5184 * output.cc (Output_section::Input_section_sort_entry::has_priority):
5185 Fix check of return value of std::string::find.().
5186 (Output_section::Input_section_sort_compare::operator()): Remove
5187 comment about .init_array.
5188 (Output_section::Input_section_sort_init_fini_compare::operator()):
5189 New method.
5190 (Output_section::sort_attached_input_sections): Handle .init_array
5191 and .fini_array specially.
5192 * output.h (Output_section::Inut_section_sort_compare): Update
5193 comment.
5194 (Output_section::Input_section_sort_init_fini_compare): New struct.
5195
c3e4ae29
DK
51962010-02-26 Doug Kwan <dougkwan@google.com>
5197
5198 * arm.cc (Target_arm::Relocate::reloc_is_non_pic): Treat
5199 R_ARM_PREL31 and R_ARM_SBREL31 as position independent.
5200 * testsuite/debug_msg.sh: Avoid matching source line number for
5201 use of global variable undef_int.
5202
2fd9ae7a
DK
52032010-02-26 Doug Kwan <dougkwan@google.com>
5204
5205 * arm.cc (Target_arm::scan_reloc_for_stub): Move code handling
5206 R_ARM_V4BX to Target_arm::scan_reloc_section_for_stubs.
5207 (Target_arm::scan_reloc_section_for_stubs): Instead of calling
5208 scan_reloc_for_stub, do all processing of R_ARM_V4BX here.
5209 * options.cc (General_options::General_options): Initialize member
5210 fix_v4bx_.
5211 * testsuite/Makefile.am (check_SCRIPTS): Add arm_fix_v4bx.sh
5212 (check_DATA): Add arm_fix_v4bx.stdout, arm_fix_v4bx_interworking.stdout
5213 and rm_no_fix_v4bx.stdout
5214 (arm_fix_v4bx.stdout, arm_fix_v4bx, arm_fix_v4bx.o,
5215 arm_fix_v4bx_interworking.stdout, arm_fix_v4bx_interworking,
5216 arm_no_fix_v4bx.stdout, arm_no_fix_v4bx): New make rules.
5217 (MOSTLYCLEANFILES): Add arm_fix_v4bx, arm_fix_v4bx_interworking
5218 and arm_no_fix_v4bx.
5219 * Makefile.in: Regenerate.
5220 * testsuite/arm_fix_v4bx.s: New file.
5221 * testsuite/arm_fix_v4bx.sh: Ditto.
5222
67ec7d0b
DK
52232010-02-24 Doug Kwan <dougkwan@google.com>
5224
5225 * arm.cc (Target_arm::got_section): Make the .got section the first
5226 non RELRO section in the data segment.
5227 * testsuite/script_test_5.sh: Fix match patterns to avoid matching
5228 suffixes of section names.
5229
10165461
DK
52302010-02-24 Doug Kwan <dougkwan@google.com>
5231
5232 * arm.cc (Target_arm::do_finalize_sections): Skip processor specific
5233 flags and attributes merging if an input file is a binary file.
5234 * fileread.cc (Input_file::open): Record format of original file.
5235 * fileread.h (Input_file::Format): New enum type.
5236 (Input_file::Input_file): Initialize data member format_.
5237 (Input_file::format): New method definition.
5238 (Input_file::format_):: New data member.
5239
4a54abbb
DK
52402010-02-24 Doug Kwan <dougkwan@google.com>
5241
5242 * arm.cc (Arm_output_data_got): New class.
5243 (ARM_TCB_SIZE): New constant
5244 (Target_arm): Use Arm_output_data_got instead of Output_data_got.
5245 (Arm_output_section::fix_exidx_coverage): Add a parameter for layout.
5246 If user uses a script with a SECTIONS clause, issue only a warning
5247 for a misplaced EXIDX input section. Otherwise, issue an error.
5248 (Arm_relobj::do_gc_process_relocs): Exit early if we are not doing
5249 garbage collection.
5250 (Target_arm::got_mode_index_entry): Handle static linking.
5251 (Target_arm::Scan::local): Ditto.
5252 (Target_arm::Scan::global): Ditto.
5253 (Target_arm::Relocate::relocate_tls): Handle static linking. Fix
5254 all incorrectly implemented relocations.
e1df38aa 5255 (Target_arm::fix_exidx_coverage): Pass layout to
4a54abbb
DK
5256 Arm_output_section::fix_exidx_coverage.
5257 * layout.cc (Layout::section_name_mapping): Remove trailing dots
5258 from ".ARM.exidx." and ".ARM.extab.".
5259
ca419a6f
ILT
52602010-02-23 Viktor Kutuzov <vkutuzov@accesssoftek.com>
5261
5262 * arm.cc (Target_arm::do_finalize_sections): Create attribute
5263 section if it does not already exist.
5264 * attributes.cc (Attributes_section_data::Attributes_section_data):
5265 Don't crash if size is zero.
5266
135b9c78
ILT
52672010-02-23 Viktor Kutuzov <vkutuzov@accesssoftek.com>
5268 Ian Lance Taylor <iant@google.com>
5269
5270 * gold.cc (queue_middle_tasks): If no input files were opened,
5271 exit.
5272 * workqueue.h (Task_function::Task_function): Assert that there is
5273 a blocker.
5274
bb0bfe4f
DK
52752010-02-22 Doug Kwan <dougkwan@google.com>
5276
5277 * gold-threads.h (Once::~Once): Explicitly define virtual destructor.
5278 * icf.cc (get_section_contents): Cast snprintf arguments to long long
5279 types to avoid warnings due to different uint64_t implementations
5280 on different hosts.
5281
2a2b6d42
DK
52822010-02-21 Doug Kwan <dougkwan@google.com>
5283
5284 * arm.cc (Arm_relocate_functions::arm_branch_common): Fix bug in
5285 handling of the maximum backward branch offset.
5286 (Arm_relocate_functions::thumb_branch_common): Ditto.
5287 * testsuite/Makefile.am (check_SCRIPTS): Add arm_branch_in_range.sh.
5288 (check_DATA): Add arm_bl_in_range.stdout, arm_bl_out_of_range.stdout
e1df38aa 5289 thumb_bl_in_range.stdout, thumb_bl_out_of_range.stdout,
2a2b6d42
DK
5290 thumb2_bl_in_range.stdout and thumb2_bl_out_of_range.stdout.
5291 (arm_bl_in_range.stdout, arm_bl_in_range, arm_bl_in_range.o,
5292 arm_bl_out_of_range.stdout, arm_bl_out_of_range,
5293 arm_bl_out_of_range.o, thumb_bl_in_range.stdout, thumb_bl_in_range,
5294 thumb_bl_in_range.o, thumb_bl_out_of_range.stdout,
5295 thumb_bl_out_of_range thumb_bl_out_of_range.o,
5296 thumb2_bl_in_range.stdout, thumb2_bl_in_range, thumb2_bl_in_range.o
5297 thumb2_bl_out_of_range.stdout, thumb2_bl_out_of_range,
5298 thumb2_bl_out_of_range.o): New rules.
5299 (MOSTLYCLEANFILES): Add arm_bl_in_range, arm_bl_out_of_range,
5300 thumb_bl_in_range, thumb_bl_out_of_range, thumb2_bl_in_range and
5301 thumb2_bl_out_of_range
5302 * testsuite/Makefile.in: Regenerate.
5303 * testsuite/arm_bl_in_range.s: New file.
5304 * testsuite/arm_bl_out_of_range.s: Ditto.
5305 * testsuite/arm_branch_in_range.sh: Ditto.
5306 * testsuite/arm_branch_range.t: Ditto.
5307 * testsuite/thumb2_branch_range.t: Ditto.
5308 * testsuite/thumb_bl_in_range.s: Ditto.
5309 * testsuite/thumb_bl_out_of_range.s: Ditto.
5310 * testsuite/thumb_branch_range.t: Ditto.
5311
b487ad64
ST
53122010-02-20 Sriraman Tallam <tmsriram@google.com>
5313
5314 * gc.h (gc_process_relocs): Change vectors to point to the new list.
5315 Add reloc offset information.
5316 * icf.cc (get_section_contents): Change iterators to point to the new
5317 vectors. Add reloc offset information to the contents.
5318 * icf.h (Icf::Sections_reachable_info): New typedef.
5319 (Icf::Sections_reachable_list): New typedef.
5320 (Icf::Offset_info): New typedef.
5321 (Icf::Reloc_info): New struct typedef.
5322 (Icf::Reloc_info_list): New typedef.
5323 (Icf::symbol_reloc_list): Delete method.
5324 (Icf::addend_reloc_list): Delete method.
5325 (Icf::section_reloc_list): Delete method.
5326 (Icf::reloc_info_list): New method.
5327 (Icf::reloc_info_list_): New member.
5328
f96accdf
DK
53292010-02-19 Doug Kwan <dougkwan@google.com>
5330
5331 * arm-reloc.def: Mark R_ARM_TLS_GD32, R_ARM_TLS_LDM32,
5332 R_ARM_TLS_LDO32, R_ARM_TLS_IE32 and R_ARM_TLS_LE32 are implemented.
5333 * arm.cc (Arm_relocation_functions): New forward declaration.
5334 (Target_arm::Target_arm): Initialize new data members
5335 got_mod_index_offset_ and tls_base_symbol_defined_.
5336 (Target_arm::Relocate::relocate_tls): New method.
5337 (Target_arm::optimize_tls_reloc, Target_arm::define_tls_base_symbol,
5338 Target_arm::got_mod_index_entry, Target_arm::rel_tls_desc_section):
5339 New methods.
5340 (Target_arm::Got_type): Add GOT_TYPE_TLS_NOFFSET, GOT_TYPE_OFFSET,
5341 GOT_TYPE_TLS_PAIR and GOT_TYPE_TLS_DESC.
5342 (Target_arm::got_mod_index_offset_,
5343 Target_arm::tls_base_symbol_defined_): New data members.
5344 (Target_arm::Scan::local, Target::Scan::global,
5345 Target_arm::Relocate::relocate): Handle 32-bit initial TLS
5346 relocations.
5347
c8761b9a
DK
53482010-02-18 Doug Kwan <dougkwan@google.com>
5349
5350 * arm.cc (Arm_relobj::find_linked_text_section): New method.
5351 (Arm_relobj::make_exidx_input_section): Pass section index of linked
5352 text section as a parameter becuase some broken tools may not set
5353 the link in section header.
5354 (Target_arm::has_got_section): New method.
5355 (Target_arm::scan_section_for_cortex_a8_stubs): Treat an input section
5356 without any mapping symbol as data only. Remove warning.
5357 (Arm_relobj::do_read_synbols): If an EXIDX input section has no
5358 link in its section header, try to discover the link by inspecting the
5359 REL31 relocation at the beginning of the section.
5360 (Target_arm::Scan::check_non_pic): Report name of offending relocation
5361 in error message.
5362 (Target_arm::Scan::global): Treat any reference to the symbol
5363 _GLOBAL_OFFSET_TABLE_ as a GOT access.
5364
21bb3914
ST
53652010-02-12 Sriraman Tallam <tmsriram@google.com>
5366
5367 * arm.cc (Scan::local_reloc_may_be_function_pointer): New function.
5368 (Scan::global_reloc_may_be_function_pointer): New function.
5369 * sparc.cc (Scan::local_reloc_may_be_function_pointer): New function.
5370 (Scan::global_reloc_may_be_function_pointer): New function.
5371 * powerpc.cc (Scan::local_reloc_may_be_function_pointer): New function.
5372 (Scan::global_reloc_may_be_function_pointer): New function.
5373 * i386.cc (Scan::local_reloc_may_be_function_pointer): New function.
5374 (Scan::global_reloc_may_be_function_pointer): New function.
5375 * x86_64.cc (Scan::local_reloc_may_be_function_pointer): New function.
5376 (Scan::global_reloc_may_be_function_pointer): New function.
5377 (Scan::possible_function_pointer_reloc): New function.
5378 (Target_x86_64::can_check_for_function_pointers): New function.
5379 * gc.h (gc_process_relocs): Scan relocation types to determine if
5380 function pointers were taken for targets that support it.
5381 * icf.cc (Icf::find_identical_sections): Include functions for
5382 folding in safe ICF whose pointer is not taken.
5383 * icf.h (Secn_fptr_taken_set): New typedef.
5384 (fptr_section_id_): New member.
5385 (section_has_function_pointers): New function.
5386 (set_section_has_function_pointers): New function.
5387 (check_section_for_function_pointers): New function.
5388 * options.h: Fix comment for safe ICF option.
5389 * target.h (can_check_for_function_pointers): New function.
5390 * testsuite/Makefile.am: Add icf_safe_so_test test case.
5391 Modify icf_safe_test for X86-64.
5392 * testsuite/Makefile.in: Regenerate.
5393 * testsuite/icf_safe_so_test.cc: New file.
5394 * testsuite/icf_safe_so_test.sh: New file.
5395 * testsuite/icf_safe_test.cc (kept_func_3): New function.
5396 (main): Change to take pointer to function kept_func_3.
5397 * testsuite/icf_safe_test.sh (arch_specific_safe_fold): Check if safe
5398 folding is done correctly for X86-64.
5399
0da6fa6c
DM
54002010-02-12 David S. Miller <davem@davemloft.net>
5401
5402 * output.h (Output_reloc<SHT_REL>::Output_reloc): Add
5403 is_symbolless parameter.
5404 (Output_reloc<SHT_REL>::is_symbolless): New.
5405 (Output_reloc<SHT_REL>::is_symbolless_): New.
5406 (Output_reloc<SHT_REL>::type_): Decrease to 29 bits.
5407 (Output_reloc<SHT_RELA>::Output_reloc): Add is_symbolless parameter.
5408 (Output_reloc<SHT_RELA>::is_symbolless): New.
5409 (Output_data_reloc::add_global): Handle is_symbolless.
5410 (Output_data_reloc::add_global_relative): Likewise.
5411 (Output_data_reloc::add_local): Likewise.
5412 (Output_data_reloc::add_local_relative): Likewise.
5413 (Output_data_reloc::add_symbolless_global_addend): New.
5414 (Output_data_reloc::add_symbolless_local_addend): New.
5415 * output.cc (Output_reloc<SHT_REL>::Output_reloc): Handle
5416 is_symbolless.
5417 (Output_reloc::set_needs_dynsym_index): Test ->is_symbolless_
5418 instead of ->is_relative_
5419 (Output_reloc::write): Likewise.
5420 (Output_reloc::get_symbol_index): Return 0 when ->is_symbolless_
5421 (Output_reloc::write_rel): Simplify.
5422
5423 * sparc.cc (Target_sparc::Scan::local): Use
5424 ->add_symbolless_local_addend as needed.
5425 (Target_sparc::Scan::global): Use ->add_symbolless_global_addend as
5426 needed. Also, emit appropriate unaligned vs. aligned dynamic reloc
5427 based upon relocation offset.
5428
e4782e83
DK
54292010-02-11 Doug Kwan <dougkwan@google.com>
5430
5431 * arm.cc (Target_arm::Scan::local): Fix bugs in relocation handling.
5432 (Target_arm::Scan::global): Ditto. Also remove a comment before the
5433 beginning of function.
5434 (Target_arm::Relocate::relocate): Remove error messages for MOVW_ABS
5435 and MOVT_ABS relocations. Those are non issued in scanning. Fix
5436 parameter is_32bit in calls to should_apply_static_reloc.
5437 * testsuite/Makefile.am (check_SCRIPTS): Add arm_abs_global.sh.
5438 (check_DATA): Add arm_abs_global.stdout.
5439 (arm_abs_lib.o, libarm_abs.so, arm_abs_global.o, arm_abs_global,
5440 arm_abs_global.stdout): New rules.
5441 (MOSTLLYCLEANFILES): Add arm_abs_global
5442 * Makefile.in: Regenerate.
5443 * testsuite/arm_abs_global.s: New file.
5444 * testsuite/arm_abs_global.sh: Ditto.
5445 * testsuite/arm_abs_lib.s: Ditto.
5446
93ceb764
ILT
54472010-02-11 Ian Lance Taylor <iant@google.com>
5448
5449 * gold.cc (queue_middle_gc_tasks): Use a separate blocker for each
5450 Read_relocs task.
5451 (queue_middle_tasks): Likewise, and also for Scan_relocs. Run
5452 Allocate_commons_task first.
5453 * reloc.cc (Read_relocs::run): Pass next_blocker_ down to next
5454 task, rather than symtab_lock_.
5455 (Gc_process_relocs::~Gc_process_relocs): New function.
5456 (Gc_process_relocs::is_runnable): Check this_blocker_.
5457 (Gc_process_relocs::locks): Use next_blocker_ rather than
5458 blocker_.
5459 (Scan_relocs::~Scan_relocs): New function.
5460 (Scan_relocs::is_runnable): Check this_blocker_ rather than
5461 symtab_lock_.
5462 (Scan_relocs::locks): Drop symtab_lock_ and blocker_. Add
5463 next_blocker_.
5464 * reloc.h (class Read_relocs): Drop symtab_lock_ and blocker_
5465 fields. Add this_blocker_ and next_blocker_ fields. Adjust
5466 constructor accordingly.
5467 (class Gc_process_relocs): Likewise.
5468 (class Scan_relocs): Likewise.
5469 * common.h (class Allocate_commons_task): Remove symtab_lock_
5470 field, and corresponding constructor parameter.
5471 * common.cc (Allocate_commons_tasK::is_runnable): Remove use of
5472 symtab_lock_.
5473 (Allocate_commons_task::locks): Likewise.
5474
114dfbe1
ILT
54752010-02-11 Ian Lance Taylor <iant@google.com>
5476
5477 * gold-threads.h (class Once): Define.
5478 (class Initialize_lock): Rewrite as child of Once.
5479 * gold-threads.cc (class Once_initialize): Define.
5480 (once_pointer_control): New static variable.
5481 (once_pointer, once_arg): New static variables.
5482 (c_run_once): New static function.
5483 (Once::Once, Once::run_once, Once::internal_run): New functions.
5484 (class Initialize_lock_once): Remove.
5485 (initialize_lock_control): Remove.
5486 (initialize_lock_pointer): Remove.
5487 (initialize_lock_once): Remove.
5488 (Initialize_lock::Initialize_lock): Move to gold-threads.h.
5489 (Initialize_lock::initialize): Rewrite.
5490 (Initialize_lock::do_run_once): New function.
5491 * archive.cc (Archive::interpret_header): Only clear name if it is
5492 not already empty.
5493 * fileread.cc: Include "gold-threads.h"
5494 (file_counts_lock): New static variable.
5495 (file_counts_initialize_lock): Likewise.
5496 (File_read::release): Only increment counts when using --stats.
5497 Use a lock around the increment.
5498 * parameters.cc (class Set_parameters_target_once): Define.
5499 (set_parameters_target_once): New static variable.
5500 (Parameters::Parameters): Move here from parameters.h.
5501 (Parameters::set_target): Rewrite.
5502 (Parameters::set_target_once): New function.
5503 (Parameters::clear_target): Move here and rewrite.
5504 * parameters.h (class Parameters): Update declarations. Add
5505 set_parameters_target_once_ field.
5506 (Parameters::Parameters): Move to parameters.cc.
5507 (Parameters::clear_target): Likewise.
5508 * readsyms.cc (Read_symbols::do_group): Create a Start_group
5509 task.
5510 (Start_group::~Start_group): New function.
5511 (Start_group::is_runnable): New function.
5512 (Start_group::locks, Start_group::run): New functions.
5513 (Finish_group::run): Change saw_undefined to size_t.
5514 * readsyms.h (class Start_group): Define.
5515 (class Finish_group): Change saw_undefined_ field to size_t.
5516 (Finish_group::Finish_group): Remove saw_undefined and
5517 this_blocker parameters. Change all callers.
5518 (Finish_group::set_saw_undefined): New function.
5519 (Finish_group::set_blocker): New function.
5520 * symtab.h (class Symbol_table): Change saw_undefined to return
5521 size_t. Change saw_undefined_ field to size_t.
5522 * target-select.cc (Set_target_once::do_run_once): New function.
5523 (Target_selector::Target_selector): Initialize set_target_once_
5524 field. Don't initialize lock_ and initialize_lock_ fields.
5525 (Target_selector::instantiate_target): Rewrite.
5526 (Target_selector::set_target): New function.
5527 * target-select.h (class Set_target_once): Define.
5528 (class Target_selector): Update declarations. Make
5529 Set_target_once a friend. Remove lock_ and initialize_lock_
5530 fields. Add set_target_once_ field.
5531
fa17a3f4
ILT
55322010-02-10 Ian Lance Taylor <iant@google.com>
5533
5534 * dirsearch.cc (Dirsearch::initialize): Add all blockers before
5535 queueing any tasks.
5536 * gold.cc (queue_middle_gc_tasks): Likewise. Fix final blocker.
5537 (queue_middle_tasks): Add all blockers before queueing any tasks.
5538 (queue_final_tasks): Likewise.
5539 * token.h (Task_token::add_blockers): New function.
5540 * object.h (Input_objects::number_of_relobjs): New function.
5541
c7177d31
ILT
55422010-02-10 Ian Lance Taylor <iant@google.com>
5543
5de0e392
ILT
5544 * i386.cc (Relocate::relocate_tls): A local symbol is final if not
5545 shared, not if not position independent.
5546 * x86_64.cc (Relocate::relocate_tls): Likewise.
5547 * testsuite/Makefile.am (check_PROGRAMS): Add tls_pie_pic_test.
5548 (tls_pie_pic_test): New target.
5549 * testsuite/Makefile.in: Rebuild.
5550
c7177d31
ILT
5551 * testsuite/Makefile.am (check_PROGRAMS): Add tls_pie_test.
5552 (tls_test_main_pie.o, tls_test_pie.o): New targets.
5553 (tls_test_file2_pie.o, tls_test_c_pie.o, tls_pie_test): Likewise.
5554 * testsuite/Makefile.in: Rebuild.
5555
684b268a
DM
55562010-02-09 David S. Miller <davem@davemloft.net>
5557
5558 * sparc.cc (Target_sparc::Scan::local): Do not emit relocs other than
5559 R_SPARC_RELATIVE using ->add_local_relative().
5560 (Target_sparc::Scan::global): Likewise for ->add_global_relative().
5561
612a8d3d
DM
5562 * output.h (Output_data_dynamic::add_section_size): New method
5563 that takes two Output_data objects.
5564 (Output_data_dynamic::Dynamic_entry): Create storage for secondary
5565 entry param. Handle it in initializers.
5566 * output.cc (Output_data_dynamic::Dynamic_entry::write): For
5567 DYNAMIC_SECTION_SIZE, add in second object size if non-NULL.
5568 * layout.h (Layout::add_target_dynamic_tags): Add dynrel_includes_plt
5569 arg.
5570 * layout.cc (Layout::add_target_dynamic_tags): If dynrel_includes_plt,
5571 and .rela.plt exists, set DT_REL{,A}SZ to sum of .rela.dyn and .rela.plt
5572 * arm.cc (Target_arm::do_finalize_sections): Update to pass false
5573 for dynrel_includes_plt.
5574 * i386.cc (Target_i386::do_finalize_sections): Likewise.
5575 * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
5576 * sparc.cc (Target_sparc::make_plt_entry): Force .rela.dyn to be output
5577 before .rela.plt
5578 (Target_sparc::do_finalize_sections): Update to pass true for
5579 dynrel_includes_plt.
5580 * powerpc.cc (Target_powerpc::make_plt_entry): Force .rela.dyn to be
5581 output before .rela.plt
5582 (Target_powerpc::do_finalize_sections): Update to pass true for
5583 dynrel_includes_plt when 32-bit.
5584
cb1be87e
DK
55852010-02-08 Doug Kwan <dougkwan@google.com>
5586
5587 * arm.cc (Arm_relobj::simple_input_section_output_address): New
5588 method.
5589 (Arm_relobj::section_needs_cortex_a8_stub_scanning,
5590 Arm_relobj::scan_section_for_cortex_a8_stubs,
5591 Arm_relobj::do_relocation_section): Instead of calling
5592 Output_section::output_address, use faster
5593 Arm_relobj::simple_input_section_output_address.
5594
705b5121
DM
55952010-02-08 David S. Miller <davem@davemloft.net>
5596
5597 * sparc.cc (Target_sparc::Relocate::relocate): If relocation offset is
5598 unaligned for R_SPARC_16, R_SPARC_32, or R_SPARC_64, use the unaligned
5599 relocation helper function.
5600
024c4466
DM
5601 * sparc.cc (Target_sparc::Scan::local): Handle R_SPARC_GOTDATA_OP*
5602 just like R_SPARC_GOT{10,13,22}.
5603 (Target_sparc::Scan::local): Likewise.
5604 (Target_sparc::Relocate:relocate): Likewise.
5605
9109c078
ILT
56062010-02-06 Ian Lance Taylor <iant@google.com>
5607
5608 * configure.ac: Rewrite targetobjs duplicate removal code to use
5609 only shell constructs.
5610 * configure: Rebuild.
5611
cf846138
DK
56122010-02-05 Doug Kwan <dougkwan@google.com>
5613
5614 PR 11247
5615 * arm.cc (Arm_relobj::section_is_scannable): New method.
5616 (Arm_relobj::section_needs_reloc_stub_scanning): Use it.
5617 (Arm_relobj::section_needs_cortex_a8_stub_scanning): Same.
5618
6cfaf60b
DK
56192010-02-04 Doug Kwan <dougkwan@google.com>
5620
5621 PR 11247
5622 * arm-reloc-property.cc (cstdio): Include.
5623 * configure.ac (targetobjs): Remove duplicates.
5624 * configure: Regenerate.
5625 * resolve.cc (Symbol_table::resolve): Explicit instantiate both
5626 big and little endian version for a given address size.
5627
5c57f1be
DK
56282010-02-03 Doug Kwan <dougkwan@google.com>
5629
5630 * arm-reloc-property.cc
5631 (Arm_reloc_property_table::reloc_name_in_error_message): New method
5632 definition.
5633 * arm-reloc-property.h
5634 (Arm_reloc_property_table::get_implemented_static_reloc_property):
5635 New method definition.
5636 (Arm_reloc_property_table::reloc_name_in_error_message): New method
5637 declaration.
5638 * arm-reloc.def (THM_MOVT_ABS, THM_MOVT_PREL, THM_MOVT_BREL): Change
5639 overflow to N.
5640 (GOT_PREL): Change implemented to Y.
5641 * arm.cc (Target_arm::reloc_uses_thumb_bit): Remove method.
5642 (Target_arm::Relocate::reloc_needs_sym_origin): Remove method.
5643 (Arm_relocate_functions::movw_abs_nc): Remove method.
5644 (Arm_relocate_functions::movt_abs): Ditto.
5645 (Arm_relocate_functions::thm_movw_abs_nc): Ditto.
5646 (Arm_relocate_functions::thm_movt_abs): Ditto.
5647 (Arm_relocate_functions::movw_rel_nc): Ditto.
5648 (Arm_relocate_functions::movw_rel): Ditto.
5649 (Arm_relocate_functions::movt_rel): Ditto.
5650 (Arm_relocate_functions:thm_movw_rel_nc): Ditto.
5651 (Arm_relocate_functions:thm_movw_rel): Ditto.
5652 (Arm_relocate_functions:thm_movt_rel): Ditto.
5653 (Arm_relocate_functions::movw, Arm_relocate_functions::movt,
5654 (Arm_relocate_functions::thm_movw, Arm_relocate_functions::thm_movt):
5655 New method definitions.
5656 (Arm_relocation_functions::arm_grp_alu): Add assertion for group index.
5657 (Arm_relocation_functions::arm_grp_ldr): Ditto.
5658 (Arm_relocation_functions::arm_grp_ldrs): Ditto.
5659 (Arm_relocation_functions::arm_grp_ldc): Ditto.
5660 (Target_arm::Relocate::relocate): Check for non-static or
5661 unimplemented relocation code and exit early. Change calls to
5662 Target_arm::reloc_uses_thumb_bit and
5663 Target_arm::Reloc::reloc_needs_sym_origin to use relocation property
5664 instead. Refactor code to handle similar relocations to increase
5665 code sharing. Remove check for unsupported relocation code in switch
5666 statement.
5667 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Use
5668 relocation property table to find out size. Change error message to
5669 print out the name of a relocation code instead of the numeric value.
5670 (Target_arm::scan_reloc_for_stub): Use relocation property table
5671 instead of calling Target_arm::reloc_uses_thumb_bit().
5672
218c5831
DK
56732010-02-02 Doug Kwan <dougkwan@google.com>
5674
5675 * arm.cc (Target_arm::relocate_section): Do view adjustment for all
5676 types of relaxed input section.
5677
0d31c79d
DK
56782010-02-02 Doug Kwan <dougkwan@google.com>
5679
5680 * Makefile.am (HFILES): Add arm-reloc-property.h.
5681 (DEFFILES): New.
5682 (TARGETSOURCES): Add arm-reloc-property.cc
5683 (ALL_TARGETOBJS): Add arm-reloc-property.$(OBJEXT)
5684 (libgold_a_SOURCES): $(DEFFILES)
5685 * Makefile.in: Regenerate.
5686 * arm-reloc-property.cc: New file.
5687 * arm-reloc-property.h: New file.
5688 * arm-reloc.def: New file.
5689 * arm.cc: Update comments.
5690 (arm-reloc-property.h): New included header.
5691 (arm_reloc_property_table): New global variable.
5692 (Target_arm::do_select_as_default_target): New method definition.
5693 * configure.tgt (armeb*-*-*,armbe*-*-*,arm*-*-*): Add
5694 arm-reloc-property to targ_extra_obj.
5695 * parameters.cc (set_parameters_target): Call
5696 Target::select_as_default_target().
5697 * target.h (Target::select_as_default_target): New method definition.
5698 (Target::do_select_as_default_target): Same.
5699
546c7457
DK
57002010-02-01 Doug Kwan <dougkwan@google.com>
5701
5702 * arm.cc (Arm_exidx_fixup::Arm_exidx_fixup): Initialize
5703 first_output_text_section_.
5704 (Arm_exidx_fixup::first_output_text_section): New method definition.
5705 (Arm_exidx_fixup::first_output_text_section_): New data member.
5706 (Arm_exidx_fixup::process_exidx_section): Record the first text
5707 output section seen.
5708 (Arm_output_section::fix_exidx_coverage): Set correct linked section
5709 and entsize in output section header.
5710
11b861d5
DK
57112010-01-29 Viktor Kutuzov <vkutuzov@accesssoftek.com>
5712
5713 * gold/arm.cc: Added support for the ARM relocations: R_ARM_THM_PC8,
5714 R_ARM_THM_PC12, R_ARM_THM_ALU_PREL_11_0.
5715 (Arm_relocate_functions::thm_alu11): New Method.
5716 (Arm_relocate_functions::thm_pc8): New Method.
5717 (Arm_relocate_functions::thm_pc12): New Method.
5718 (Target_arm::Scan::local): Handle the relocations.
5719 (Target_arm::Scan::global): Likewise.
5720 (Target_arm::Relocate::relocate): Likewise.
5721 (Target_arm:Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
5722
c9a2c125
DK
57232010-01-29 Doug Kwan <dougkwan@google.com>
5724
5725 * arm.cc (Target_arm::Scan::global): General PLTs for the same set
5726 of relocation types as ld.
5727
1521477a
DK
57282010-01-29 Doug Kwan <dougkwan@google.com>
5729
5730 * arm.cc (Arm_relocate_functions::arm_branch_common) Change visibility
5731 to public.
5732 (Arm_relocate_functions::thumb_branch_common): Ditto.
5733 (Arm_relocate_functions::thm_call, Arm_relocate_functions::thm_jump24,
5734 Arm_relocate_functions::thm_xpc22, Arm_relocate_functions::plt32,
5735 Arm_relocate_functions::xpc25, Arm_relocate_functions::call,
5736 Arm_relocate_functions::jump24): Remove.
5737 (Target_arm::Relocate::relocate): Adjust code to call
5738 Arm_relocation_functions::arm_branch_common and
5739 Arm_relocation_functions::thumb_branch_common instead of their removed
e1df38aa 5740 wrappers. Merge switch-cases together to reduce source code size.
1521477a 5741
e7eca48c
DK
57422010-01-29 Doug Kwan <dougkwan@google.com>
5743
5744 * arm.cc (Arm_relobj::Arm_relobj): Initialize new data member
5745 output_local_symbol_count_needs_update_.
5746 (Arm_relobj::output_local_symbol_count_needs_update,
5747 Arm_relobj::set_output_local_symbol_count_needs_update,
5748 Arm_relobj::update_output_local_symbol_count): New methods.
5749 (Arm_relobj::output_local_symbol_count_needs_update_): New data
5750 member.
5751 (Arm_exidx_cantunwind::do_fixed_endian_write): Write address
5752 of pointed function as in a R_ARM_PREL31 relocation.
5753 (Arm_output_section<big_endian>::fix_exidx_coverage): Mark objects
5754 for output local symbol count updating.
5755 (Target_arm::do_relax): Update output local symbol counts in objects
5756 if necessary.
5757 * object.h (Sized_relobj::set_output_local_symbol_count): New method.
5758
02961d7e
ILT
57592010-01-29 Viktor Kutuzov <vkutuzov@accesssoftek.com>
5760
5761 * arm.cc: Added support for the ARM relocations:
5762 R_ARM_MOVW_BREL_NC, R_ARM_MOVT_BREL, R_ARM_MOVW_BREL,
5763 R_ARM_THM_MOVW_BREL_NC, R_ARM_THM_MOVT_BREL, R_ARM_THM_MOVW_BREL.
5764 (Arm_relocate_functions::movw_rel_nc): Renamed (was
5765 movw_prel_nc).
5766 (Arm_relocate_functions::movw_rel): New method.
5767 (Arm_relocate_functions::movt_rel): Renamed (was movt_prel).
5768 (Arm_relocate_functions::thm_movw_rel_nc): Renamed (was
5769 thm_movw_prel_nc).
5770 (Arm_relocate_functions::thm_movw_rel): New method.
5771 (Arm_relocate_functions::thm_movt_rel): Renamed (was
5772 thm_movt_prel).
5773 (Target_arm::Scan::local): Handle MOVW_BREL/MOVT_BREL
5774 relocations.
5775 (Target_arm::Scan::global): Likewise.
5776 (Target_arm::Relocate::relocate): Likewise.
5777 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
5778 Likewise.
5779
b10d2873
ILT
57802010-01-27 Viktor Kutuzov <vkutuzov@accesssoftek.com>
5781
5782 * arm.cc: Added support for ARM group relocations.
5783 (Target_arm::reloc_needs_sym_origin): New method.
5784 (Arm_relocate_functions::calc_grp_kn): New method.
5785 (Arm_relocate_functions::calc_grp_residual): New method.
5786 (Arm_relocate_functions::calc_grp_gn): New method.
5787 (Arm_relocate_functions::arm_grp_alu): New Method.
5788 (Arm_relocate_functions::arm_grp_ldr): New Method.
5789 (Arm_relocate_functions::arm_grp_ldrs): New Method.
5790 (Arm_relocate_functions::arm_grp_ldc): New Method.
5791 (Target_arm::Scan::local): Handle the ARM group relocations.
5792 (Target_arm::Scan::global): Likewise.
5793 (Target_arm::Relocate::relocate): Likewise.
5794 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
5795 Likewise.
5796
2b328d4e
DK
57972010-01-26 Doug Kwan <dougkwan@google.com>
5798
5799 * arm.cc (set): Include.
5800 (class Arm_exidx_fixup): Change type of last_input_section_ to const
5801 pointer type.
5802 (Arm_output_section::Text_section_list): New type.
5803 (Arm_output_section::append_text_sections_to_list): New method.
5804 (Arm_output_section::fix_exidx_coverage): Ditto.
5805 (Arm_relobj::Arm_relobj): Initialize exidx_section_map_.
5806 (Arm_relobj::convert_input_section_to_relaxed_section): Use
5807 Relobj::set_section_offset() instead of
5808 Sized_relobj::invalidate_section_offset().
5809 (Arm_relobj::section_needs_reloc_stub_scanning): Add an extra
5810 parameter for section headers. Ignore relocation sections for
5811 unallocated sections and EXIDX sections.
5812 (Target_arm::fix_exidx_coverage): New method.
5813 (Target_arm::output_section_address_less_than): New type.
5814 (Arm_exidx_fixup::add_exidx_cantunwind_as_needed): Use index of the
5815 linked text section instead of the EXIDX section.
5816 (Arm_output_section::create_stub_group): Add an assertion to check
5817 that this is not an EXIDX output section.
5818 (Arm_output_section::append_text_sections_to_list): New method.
5819 (Arm_output_section::fix_exidx_coverage): Ditto.
5820 (Arm_relobj::scan_sections_for_stubs): Adjust call to
5821 Arm_relobj::section_needs_reloc_stub_scanning.
5822 (Target_arm::do_relax): Fix EXIDX output section coverage in the
5823 first pass.
5824 (Target_arm::fix_exidx_coverage): New method.
5825 * object.h (Relobj::set_output_section): New method.
5826 (Sized_relobj::invalidate_section_offset): Remove method.
5827 (Sized_relobj::do_invalidate_section_offset): Remove method.
5828 (Sized_relobj::do_set_section_offset): Handle offset value -1.
5829
c7f3c371
DK
58302010-01-25 Doug Kwan <dougkwan@google.com>
5831
5832 * arm.cc (Arm_exidx_merged_section::do_output_offset):
5833 Fix warning due to signed and unsigned comparison on a 32-bit host.
5834
8923b24c
DK
58352010-01-22 Doug Kwan <dougkwan@google.com>
5836
5837 * arm.cc (Target_arm::do_relax): Record an output section for section
5838 offset adjustment it contains any stub table that has changed.
5839 * layout.cc (Layout::clean_up_after_relaxation): Adjust section
5840 offsets in an output section if necessary.
5841 * output.cc (Output_section::Output_section): Initialize
5842 section_offsets_need_adjustments_.
5843 (Output_section::add_input_section_for_script): Renamed to
5844 Output_section::add_simple_input_section.
5845 (Output_section::save_states): Add a comment.
5846 (Output_section::discard_states): New method defintion.
5847 (Output_section::adjust_section_offsets): Same.
5848 * output.h (Output_section::add_input_section_for_script): Renamed to
5849 Output_section::add_simple_input_section.
5850 (Output_section::discard_states): New method declaration.
5851 (Output_section::adjust_section_offsets): Same.
5852 (Output_section::section_offsets_need_adjustment,
5853 Output_section::set_section_offsets_need_adjustment): New method
5854 definitions.
5855 (Output_section::section_offsets_need_adjustment_): New data member.
5856 * script-sections.cc
5857 (Output_section_element_input::set_section_address): Adjust code for
5858 renaming of Output_section::add_input_section_for_script.
5859 (Orphan_output_section::set_section_address): Same.
5860
9b2fd367
DK
58612010-01-22 Viktor Kutuzov <vkutuzov@accesssoftek.com>
5862
5863 * gold/arm.cc (Target_arm): Updated fix_v4bx method and usage of
5864 Fix_v4bx enum values .
5865 * gold/options.h (General_options): New option definitions.
5866 (General_options::fix_v4bx): New method.
5867 (General_options::Fix_v4bx): New enum.
5868 * gold/options.cc (General_options::parse_fix_v4bx): New method.
5869 (General_options::parse_fix_v4bx_interworking): New method.
5870
80d0d023
DK
58712010-01-22 Doug Kwan <dougkwan@google.com>
5872
5873 * arm.cc (Arm_exidx_fixup): New class.
5874
af2cdeae
DK
58752010-01-21 Doug Kwan <dougkwan@google.com>
5876
5877 * arm.cc (Arm_exidx_cantunwind, Arm_exidx_merged_section): New
5878 classes.
5879 (Arm_exidx_section_offset_map): New type.
5880
993d07c1
DK
58812010-01-21 Doug Kwan <dougkwan@google.com>
5882
5883 * arm.cc (Arm_exidx_input_section): New class.
5884 (Arm_relobj::exidx_input_section_by_link,
5885 Arm_relobj::exidx_input_section_by_shndx,
5886 Arm_relobj::make_exidx_input_section): New methods.
5887 (read_arm_attributes_section): Remove.
5888 (Arm_relobj::do_read_symbols): Look for ARM.exidx sections and record
5889 information about them.
5890 (Arm_dynobj::do_read_symbols): Move code in read_arm_attributes_section
5891 to here.
5892
5ac169d4
DK
58932010-01-20 Doug Kwan <dougkwan@google.com>
5894
5895 * arm.cc (Target_arm::Arm_input_section_map): Change key type from
5896 Input_section_specifier to Section_id.
5897 (Target_arm::new_arm_input_section: Adjust code for change of key
5898 type.
5899 (Target_arm::find_arm_input_section): Ditto.
5900 * gc.h (object.h): Include for Section_id nand Section_id_hash.
5901 (Section_id): Remove.
5902 (Garbage_collection::Section_id_hash): Remove.
5903 * icf.h (object.h): Include for Section_id nand Section_id_hash.
5904 (Section_id): Remove.
5905 (Icf::Section_id_hash): Remove.
5906 * object.h (Section_id, Const_section_id, Section_id_hash,
5907 Const_section_id_hash): New type definitions.
5908 * output.cc (Output_section::add_relaxed_input_section): Change to
5909 use Const_section_id instead of Input_section_specifier as key type.
5910 (Output_section::add_merge_input_section): Ditto.
5911 (Output_section::build_relaxation_map): Change to use Section_id
5912 instead of Input_section_specifier as key type.
5913 (Output_section::convert_input_sections_in_list_to_relaxed_sections):
5914 Ditto.
5915 (Output_section::convert_input_sections_to_relaxed_sections): Change
5916 to use Const_section_id instead of Input_section_specifier as key type.
5917 (Output_section::find_merge_section): Ditto.
5918 (Output_section::find_relaxed_input_section): Ditto.
5919 * output.h (Input_section_specifier): Remove class.
5920 (Output_section::Output_section_data_by_input_section_map): Change
5921 key type to Const_section_id.
5922 (Output_section::Output_relaxed_input_section_by_input_section_map):
5923 Ditto.
5924 (Output_section::Relaxation_map): Change key type to Section_id.
5925
a2162063
ILT
59262010-01-20 Viktor Kutuzov <vkutuzov@accesssoftek.com>
5927
5928 * gold/arm.cc: Added support for R_ARM_V4BX relocation
5929 (class Arm_v4bx_stub): New class.
5930 (DEF_STUBS): Updated definition to support v4_veneer_bx.
5931 (Stub_factory::make_arm_v4bx_stub): New method.
5932 (Stub_factory::elf32_arm_stub_v4_veneer_bx): New veneer template.
5933 (Stub_table::empty): Handle v4bx stubs.
5934 (Stub_table::add_arm_v4bx_stub): New method.
5935 (Stub_table::find_arm_v4bx_stub): New method.
5936 (Arm_relocate_functions::v4bx): New method.
5937 (Target_arm::fix_v4bx): New method.
5938 (Target_arm::Target_arm): Handle R_ARM_V4BX.
5939 (Stub_table::relocate_stubs): Likewise.
5940 (Stub_table::do_write): Likewise.
5941 (Stub_table::update_data_size_and_addralign): Likewise.
5942 (Stub_table::finalize_stubs): Likewise.
5943 (Target_arm::Scan::local): Likewise.
5944 (Target_arm::Scan::global): Likewise.
5945 (Target_arm::do_finalize_sections): Likewise.
5946 (Target_arm::Relocate::relocate): Likewise.
5947 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
5948 Likewise.
5949 (Target_arm::scan_reloc_for_stub): Likewise.
5950 (Target_arm::scan_reloc_section_for_stubs): Likewise.
5951
5696ab0b
ILT
59522010-01-19 Ian Lance Taylor <iant@google.com>
5953
5954 * output.cc (Output_section_headers::do_sized_write): Write large
5955 segment count to sh_info field.
5956 (Output_file_header::do_sized_write): For large segment count,
5957 write PN_XNUM to e_phnum field.
5958
800d0f56
ILT
59592010-01-15 Viktor Kutuzov <vkutuzov@accesssoftek.com>
5960
5961 * arm.cc (Arm_relocate_functions::thm_jump6): New function.
5962 (Arm_relocate_functions::thm_jump8): New function.
5963 (Arm_relocate_functions::thm_jump11): New function.
5964 (Target_arm::Scan::local): Handle R_ARM_THM_JUMP6, R_ARM_THM_JUMP8,
5965 R_ARM_THM_JUMP11.
5966 (Target_arm::Scan::global): Likewise.
5967 (Target_arm::Relocate::relocate): Likewise.
5968 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
5969 Likewise.
5970
41263c05
DK
59712010-01-14 Doug Kwan <dougkwan@google.com>
5972
5973 * arm.cc (map, utility): Include headers.
5974 (Target_arm::apply_cortex_a8_workaround): New method.
5975 (Arm_relobj::do_relocate_sections): Apply any Cortex-A8 workaround.
5976 (Target_arm::Scan::local): Handle R_ARM_THM_JUMP24, R_ARM_THM_JUMP19.
5977 (Target_arm::Scan::global): R_ARM_THM_JUMP19.
5978 (Target_arm::do_finalize_sections): Set fix_cortex_a8_ according to
5979 the --[no-]fix-cortex-a8 command line options.
5980 (Target_arm::Relocate::relocate): Handle R_ARM_JUMP19.
5981 (Target_arm::relocate_stub): Use addend in instruction template.
5982 * options.h (DEFINE_bool): Set the user-set flag.
5983 (General_options): Add --[no-]-fix-cortex options.
5984 * output.cc (Output_section::convert_input_sections_to_relaxed_sections)
e1df38aa 5985 : Update fast look-up map after conversion.
41263c05 5986
459e9b03
ST
59872010-01-14 Sriraman Tallam <tmsriram@google.com>
5988
5989 * object.cc (Sized_relobj::do_layout): Change to call layout_gnu_stack
5990 in the first pass of do_layout.
5991
b521dfe4
DK
59922010-01-13 Doug Kwan <dougkwan@google.com>
5993
5994 * arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
5995 Arm_relobj::scan_sections_for_stubs): Rearrange code to avoid an
5996 apparent compiler problem of not folding static constant integral
5997 data members of elfcpp::Elf_sizes<32>.
5998
44272192
DK
59992010-01-13 Doug Kwan <dougkwan@google.com>
6000
6001 * arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
6002 Arm_relobj::section_needs_cortex_a8_stub_scanning,
6003 Arm_relobj::scan_section_for_cortex_a8_erratum,
6004 Arm_relobj::scan_span_for_cortex_a8_erratum): New methods.
6005 (Arm_relobj::scan_sections_for_stubs): Move code deciding what
6006 sections to scan for relocation stubs into a new method
6007 Arm_relobj::section_needs_reloc_stub_scanning. Handle both
6008 relocation and Cortex-A8 stub scanning.
6009 (Target_arm::do_relax): Force stubs to be after stubbed sections
6010 if fixing the Cortex-A8 erratum. Remove all Cortex-A8 stubs at
e1df38aa 6011 the beginning of a new relaxation pass. Update a comment.
44272192
DK
6012 (Target_arm::scan_span_for_cortex_a8_erratum): New method definition.
6013
44b71ece
ILT
60142010-01-12 Ian Lance Taylor <iant@google.com>
6015
6016 * target-reloc.h (visibility_error): New inline function.
6017 (relocate_section): Call visibility_error.
6018 * testsuite/Makefile.am (check_DATA): Add protected_3.err.
6019 (MOSTLYCLEANFILES): Likewise.
6020 (protected_4_pic.o, protected_3.err): New targets.
6021 * testsuite/protected_4.cc: New file.
6022
a120bc7f
DK
60232010-01-12 Doug Kwan <dougkwan@google.com>
6024
6025 * arm.cc (Cortex_a8_reloc): New class.
6026 (Target_arm::Target_arm): Initialize new data members fix_cortex_a8_
6027 and cortex_a8_relocs_info_.
6028 (Target_arm::fix_cortex_a8): New method definition.
6029 (Target_arm::Cortex_a8_relocs_info): New type.
6030 (Target_arm::fix_cortex_a8_, Target_arm::cortex_a8_relocs_info_):
6031 New data member declarations.
6032 (Target_arm::scan_reloc_for_stub): Record information about
6033 relocations for THUMB branches that might be exempted from the
6034 Cortex-A8 workaround.
6035 (Target_arm::do_relax): Clear all Cortex-A8 relocation information
6036 at the beginning of a relaxation pass.
6037
20138696
DK
60382010-01-12 Doug Kwan <dougkwan@google.com>
6039
6040 * arm.cc (Arm_relobj::mapping_symbols_info_): New data member.
6041 (Arm_relobj::Mapping_symbol_position,
6042 Arm_reloj::Mapping_symbol_position_less,
6043 Arm_relobj::Mapping_symbols_info): New types.
6044 (Target_arm::is_mapping_symbol_name): New method definition.
6045 (Arm_relobj::do_count_local_symbols): Save information about mapping
6046 symbols.
6047
089d69dc
DK
60482010-01-11 Doug Kwan <dougkwan@google.com>
6049
6050 * arm.cc (Arm_relocate_functions::thumb32_branch_offset,
6051 Arm_relocate_functions::thumb32_branch_upper,
6052 Arm_relocate_functions::thumb32_branch_lower,
6053 Arm_relocate_functions::thumb32_cond_branch_offset,
6054 Arm_relocate_functions::thumb32_cond_branch_upper,
6055 Arm_relocate_functions::thumb32_cond_branch_lower,
6056 Arm_relocate_functions::thm_jump19): New methods to handle THUMB
6057 branch offset encoding.
6058 (Arm_relocate_functions::thumb_branch_common): Use new branch
6059 offset encoding methods to avoid code duplication.
6060 (Stub_template::Stub_template) Handle THUMB16_SPECIAL_TYPE.
6061 (Stub_addend_reader::operator()): Use new branch encoding method
6062 to avoid code duplication.
6063
99e5bff2
DK
60642010-01-11 Doug Kwan <dougkwan@google.com>
6065
6066 * arm.cc (Arm_relobj::do_gc_process_relocs): New method.
6067 (Target_arm::do_finalize_sections): Define special EXIDX section
6068 symbols only if referenced.
6069 * gc.h (Garbage_collection::add_reference): New method.
6070 (gc_process_relocs): Use Garbage_collection::add_reference to avoid
6071 code duplication.
6072
98e090bd
ILT
60732010-01-11 Ian Lance Taylor <iant@google.com>
6074
d0a91bd8
ILT
6075 * script.cc (Version_script_info::build_expression_list_lookup):
6076 Change complaing about duplicate wildcard match from error to
6077 warning.
6078
98e090bd
ILT
6079 * script.cc (class Lazy_demangler): Recreate--revert part of patch
6080 of 2009-12-30.
6081 (Version_script_info::Version_script_info): Initialize globs_,
6082 default_version_, default_is_global_, and exact_. Don't
6083 initialize globals_ or locals_.
6084 (Version_script_info::build_lookup_tables): Build local symbols
6085 first.
6086 (Version_script_info::unquote): New function.
6087 (Version_script_info::add_exact_match): New function.
6088 (Version_script_info::build_expression_list_lookup): Remove lookup
6089 parameter. Add is_global parameter. Change all callers. Handle
6090 wildcard pattern specially. Unquote pattern. Call
6091 add_exact_match.
6092 (Version_script_info::get_name_to_match): New function.
6093 (Version_script_info::get_symbol_version): New function.
6094 (Version_script_info::get_symbol_version_helper): Remove.
6095 (Version_script_info::check_unmatched_names): Call unquote.
6096 * script.h (class Version_script_info): Change get_symbol_version
6097 to be non-inline and add is_global parameter; change all callers.
6098 Rewrite symbol_is_local. Update declarations. Define struct
6099 Version_tree_match, Exact, Globs. Don't define struct Lookup.
6100 Remove globals_ and locals_ members. Add exact_, globs_,
6101 default_version_, is_global_.
6102 (Version_script_info::Glob): Remove pattern, add expression and
6103 is_global. Update constructor. Change all callers.
6104 * dynobj.cc (Versions::finalize): Mark the version symbol as the
6105 default version.
6106 (Versions::symbol_section_contents): If a symbol is undefined, or
6107 defined in a dynamic object, set the version index to
6108 VER_NDX_LOCAL.
6109 * symtab.cc (Symbol_table::add_from_relobj): Don't call
6110 symbol_is_local.
6111 (Symbol_table::add_from_pluginobj): Likewise.
6112 * testsuite/ver_matching_test.sh: blaza1 and blaza go into V2.
6113
d56962d3
DK
61142010-01-11 Doug Kwan <dougkwan@google.com>
6115
6116 * Makefile.am (incremental_dump_DEPENDENCIES): Add libintl dependency.
6117 (incremental_dump_LDADD): Add linking option for libintl.
6118 * Makefile.in: Regenerate.
6119
94e6ee91
L
61202010-01-11 H.J. Lu <hongjiu.lu@intel.com>
6121
6122 PR gold/11144
6123 * testsuite/Makefile.am (dynamic_list.stdout): Use --dyn-syms
6124 instead of -Ds.
6125 * testsuite/Makefile.in: Regenerated.
6126
e96c574b
DK
61272010-01-10 Doug Kwan <dougkwan@google.com>
6128
6129 * options.h (DEFINE_var): Use parentheses around argument varname__
6130 in macro body to avoid any unintended subsequent substitutions.
6131
7198066b
ILT
61322010-01-10 Ian Lance Taylor <iant@google.com>
6133
ba4d53bf
ILT
6134 * resolve.cc (Symbol_table::resolve): Add symbols to list of ODR
6135 candidates before doing symbol resolution.
6136
7198066b
ILT
6137 * resolve.cc (Symbol_table::resolve): Add symbols to the list of
6138 ODR candidates if only one is weak.
6139
a2beed37
ILT
61402010-01-08 Ian Lance Taylor <iant@google.com>
6141
6142 * script.cc (Version_script_info::build_expression_list_lookup):
6143 Don't warn about ambiguous version, just record the ambiguity.
6144 (Version_script_info::get_symbol_version_helper): Give error if
6145 version is ambiguous.
6146
2fb7225c
DK
61472010-01-08 Doug Kwan <dougkwan@google.com>
6148
6149 * arm.cc (Stub_table::Stub_table): Initalize cortex_a8_stubs_,
6150 prev_data_size_ and prev_addralign_. Remove initializer for
6151 deleted data member has_been_changed_.
6152 (Stub_table::empty): Look at both reloc_stubs_ and cortex_a8_stubs_
6153 to determine if the table is empty.
6154 (Stub_table::has_been_changed, Stub_table_set_has_been_changed):
6155 Remove.
6156 (Stub_table::add_reloc_stub): Define method in class definition
6157 instead of just declaring it there.
6158 (Stub_table::add_cortex_a8_stub): New method definition.
6159 (Stub_table::update_data_size_and_addralign): Ditto.
6160 (Stub_table::finalize_stubs): Ditto.
6161 (Stub_table::apply_cortex_a8_workaround_to_address_range): Ditto.
6162 (Stub_table::do_addralign_): Return address alignment in the
6163 (Stub_table::do_reset_address_and_file_offset): Define method in
6164 class definition instead of declaring it there. Set current data
6165 size to be the data size of the previous pass.
6166 (Stub_table::set_final_data_size): Use current data size as the
6167 final data size.
6168 (Stub_table::relocate_stub): Change parameter type of stub from
6169 Reloc_stub pointer to Stub pointer.
6170 (Stub_table::addralign_, Stub_table::has_been_changed_): Remove.
6171 (Stub_table::Cortex_a8_stub_list): New typedef.
6172 (Stub_table::cortex_a8_stubs_, Stub_table::prev_data_size_,
6173 Stub_table::prev_addralign_): New data member.
6174 (Arm_relobj::Arm_relobj): Initialize data member
6175 section_has_cortex_a8_workaround_.
6176 (Arm_relobj::section_has_cortex_a8_workaround,
6177 Arm_relobj::mark_section_for_cortex_a8_workaround): New method
6178 definitions.
6179 (Arm_relobj::section_has_cortex_a8_workaround_): New data member
6180 declarations.
6181 (Target_arm::relocate_stub): Change parameter type of stub from
6182 Reloc_stub pointer to Stub pointer.
6183 (Insn_template::size, Insn_template::alignment): Handle
6184 THUMB16_SPECIAL_TYPE.
6185 (Stub_table::remove_all_cortex_a8_stubs, Stub_table::finalize_stubs,
6186 Stub_table::update_data_size_and_addralign,
6187 Stub_table::apply_cortex_a8_workaround_to_address_range): New method
6188 definitions.
6189 (Stub_table::relocate_stubs): Handle Cortex-A8 stubs.
6190 (Stub_table::do_write): Ditto.
6191 (Target_arm::do_relax): Adjust code for changes in Stub_table.
6192
880cd20d
ILT
61932010-01-08 Ian Lance Taylor <iant@google.com>
6194
6195 PR 11108
6196 * symtab.h (class Symbol): Remove fields is_target_special_ and
6197 has_plt_offset_. Add field is_defined_in_discarded_section_.
6198 (Symbol::is_defined_in_discarded_section): New function.
6199 (Symbol::set_is_defined_in_discarded_section): New function.
6200 (Symbol::has_plt_offset): Rewrite.
6201 (Symbol::set_plt_offset): Verify that new offset is not -1U.
6202 * symtab.cc (Symbol::init_fields): Initialize plt_offset_ to -1U.
6203 Don't initialize is_target_special_ or has_plt_offset_.
6204 Initialize is_defined_in_discarded_section_.
6205 (Symbol_table::add_from_relobj): If appropriate, set
6206 is_defined_in_discarded_section.
6207 * resolve.cc (Symbol::override_base_with_special): Don't test
6208 is_target_special_. Change has_plt_offset_ to has_plt_offset().
6209 * target-reloc.h (relocate_section): Do special handling for
6210 symbols defined in discarded sections for global symbols as well
6211 as local symbols.
6212
2703e3eb
ILT
62132010-01-08 Ian Lance Taylor <iant@google.com>
6214
6215 * dynobj.cc (big_endian>::find_dynsym_sections): Set pi to NULL in
6216 the SHT_SYMTAB case.
6217
339d40a3
ILT
62182010-01-08 Ian Lance Taylor <iant@google.com>
6219
6220 * object.cc (Sized_relobj::do_layout): Don't get confused if
6221 layout_eh_frame returns NULL.
6222
abecea76
ILT
62232010-01-08 Ian Lance Taylor <iant@google.com>
6224
6225 PR 11084
6226 * dynobj.cc (Sized_dynobj::find_dynsym_sections): If there is no
6227 dynamic symbol table, use the normal symbol table.
6228 (Sized_dynobj::do_read_symbols): Remove assertion about type of
6229 symbol table.
6230
6b7dd3f3
ILT
62312010-01-08 Ian Lance Taylor <iant@google.com>
6232
6233 PR 11072
6234 * layout.cc (Layout::include_section): Remove .gnu_debuglink
6235 sections.
6236
36c50e63
L
62372010-01-08 H.J. Lu <hongjiu.lu@intel.com>
6238
6239 * version.cc (print_version): Change to "Copyright 2010".
6240
e291e7b9
ILT
62412010-01-08 Ian Lance Taylor <iant@google.com>
6242
6243 PR 10287
6244 PR 11063
6245 * i386.cc (class Target_i386): Change return type of plt_section
6246 to be non-const.
6247 (class Output_data_plt_i386): Add tls_desc_rel_ field.
6248 (Output_data_plt_i386::Output_data_plt_i386): Initialize
6249 tls_desc_rel_ field.
6250 (Output_data_plt_i386::rel_tls_desc): New function.
6251 (Target_i386::rel_tls_desc_section): New function.
6252 (Target_i386::Scan::local): Rewrite R_386_TLS_GOTDESC handling.
6253 (Target_i386::Scan::global): For R_386_TLS_GOTDESC put
6254 R_386_TLS_DESC reloc in rel_tls_desc_section.
6255 * x86_64.cc (class Target_x86_64): Add tlsdesc_reloc_info_ field.
6256 Define struct Tlsdesc_info.
6257 (Target_x86_64::Target_x86_64): Initialize tlsdesc_reloc_info_.
6258 (Target_x86_64::do_reloc_symbol_index): New function.
6259 (Target_x86_64::add_tlsdesc_info): New function.
6260 (class Output_data_plt_x86_64): Add tlsdesc_rel_ field.
6261 (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize
6262 tlsdesc_rel_ field.
6263 (Output_data_plt_x86_64::rela_plt): Rename from rel_plt. Change
6264 all callers.
6265 (Output_data_plt_x86_64::rela_tlsdesc): New function.
6266 (Target_x86_64::rela_tlsdesc_section): New function.
6267 (Target_x86_64::Scan::local): Rewrite R_X86_64_GOTPC32_TLSDESC
6268 handling.
6269 (Target_x86_64::Scan::global): For R_X86_64_GOTPC32_TLSDESC put
6270 (Target_x86_64::do_reloc_addend): New function.
6271 R_X86_64_TLSDESC reloc in rela_tlsdesc_section.
6272 * output.h (class Output_reloc) [SHT_REL]: Add new constructor
6273 declarations. Define TARGET_CODE. Add arg field to u1_ union.
6274 (Output_reloc::type): New function.
6275 (Output_reloc::is_local_section_symbol): Check for TARGET_CODE.
6276 (Output_reloc::is_target_specific): New function.
6277 (Output_reloc::target_arg): New function.
6278 (class Output_reloc) [SHT_RELA]: Add four new constructors for
6279 absolute relocs and target specific relocs.
6280 (class Output_data_reloc) [SHT_REL]: Add add_absolute and
6281 add_target_specific.
6282 (class Output_data_reloc) [SHT_RELA]: Likewise.
6283 * output.cc (Output_reloc::Output_reloc): Add four new versions
6284 for absolute relocs and target specific relocs.
6285 (Output_reloc::set_needs_dynsym_index): Add TARGET_CODE case.
6286 (Output_reloc::get_symbol_index): Likewise.
6287 (Output_reloc::local_section_offset): Check that local_sym_index_
6288 is not TARGET_CODE or 0.
6289 (Output_reloc::symbol_value): Likewise.
6290 (Output_reloc::write) [SHT_RELA]: Call target for target specific
6291 reloc.
6292 * target.h (class Target): Add reloc_symbol_index and reloc_addend
6293 functions. Add do_reloc_symbol_index and do_reloc_addend virtual
6294 functions.
6295 * layout.cc (add_target_dynamic_tags): Use output section for
6296 DT_PLTRELSZ and DT_JMPREL.
6297
3a44184e
ILT
62982010-01-07 Ian Lance Taylor <iant@google.com>
6299
6300 PR 11061
6301 * output.h (class Output_reloc) [SHT_RELA]: Add is_relative
6302 function.
6303 (class Output_data_reloc_generic): Define.
6304 (class Output_data_reloc_base): Change base class to
6305 Output_data_reloc_generic. Change add() method to call
6306 bump_relative_reloc_count for a relative reloc. Remove
6307 sort_relocs_ field.
6308 * output.cc (Output_data_reloc_base::do_write): Change sort_reloc_
6309 to sort_relocs().
6310 * layout.cc (Layout::add_target_dynamic_tags): Change dyn_rel to
6311 Output_data_reloc_generic*. Add DT_RELCOUNT/DT_RELACOUNT tag if
6312 appropriate.
6313 * layout.h (class Layout): Update declaration.
6314
ea715a34
ILT
63152010-01-07 Ian Lance Taylor <iant@google.com>
6316
6317 * output.h (class Output_data): Add const version of
6318 output_section and do_output_section.
6319 (class Output_section_data): Add const version of
6320 do_output_section.
6321 (class Output_section): Likewise.
6322 * layout.cc (Layout::add_target_dynamic_tags): New function.
6323 * layout.h (class Layout): Update declarations.
6324 * arm.cc (Target_arm::do_finalize_sections): Use
6325 add_target_dynamic_tags.
6326 * i386.cc (Target_i386::do_finalize_sections): Likewise.
6327 * powerpc.cc (Target_powerpc::do_finalize_sections): Likewise.
6328 * sparc.cc (Target_sparc::do_finalize_sections): Likewise.
6329 * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
6330
659948a4
ILT
63312010-01-07 Ian Lance Taylor <iant@google.com>
6332
6333 PR 11042
6334 * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Mark the dynamic
6335 object as needed.
6336
9d3b86f6
ILT
63372010-01-07 Dmitry Gorbachev <d.g.gorbachev@gmail.com>
6338 Ian Lance Taylor <iant@google.com>
6339
6340 PR 11019
6341 * object.cc: Instantiate Xindex::initialize_symtab_xindex and
6342 Xindex::read_symtab_xindex.
6343
bb0d3eb0
DK
63442010-01-07 Doug Kwan <dougkwan@google.com>
6345
6346 * arm.cc (Insn_template::Type): New enum value THUMB16_SPECIAL_TYPE.
6347 (Insn_template::thumb16_bcond_insn): New method declaration.
6348 (Insn_template): Fix spelling.
6349 (Stub::thumb16_special): New method declaration.
6350 (Stub::do_write): Define virtual method which was previously pure
6351 virtual.
6352 (Stub::do_thumb16_special): New method declaration.
6353 (Stub::do_fixed_endian_write): New template member.
6354 (Reloc_stub::do_write): Remove.
6355 (Reloc_stub::do_fixed_endian_write): Remove.
6356 (Cortex_a8_stub): New class definition.
6357 (Stub_factory::make_cortex_a8_stub): New method definition.
6358 (Stub_factory::Stub_factory): Add missing static storage class
6359 qualifier for elf32_arm_stub_a8_veneer_blx.
6360
ffeef7df
ILT
63612010-01-07 Ian Lance Taylor <iant@google.com>
6362
dc3f80fe
ILT
6363 PR 10980
6364 * options.h (class General_options): Add --warn-unresolved-symbols
6365 and --error-unresolved-symbols.
6366 * errors.cc (Errors::undefined_symbol): Implement
6367 --warn-unresolved-symbols.
6368
ffeef7df
ILT
6369 * options.h (class General_options): Add -z text and -z textoff.
6370 * layout.cc (Layout::finish_dynamic_section): Implement -z text.
6371
f1ec9ded
ST
63722010-01-06 Sriraman Tallam <tmsriram@google.com>
6373
6374 * gc.h (Garbage_collection::Cident_section_map): New typedef.
6375 (Garbage_collection::cident_sections): New function.
6376 (Garbage_collection::add_cident_section): New function.
6377 (Garbage_collection::cident_sections_): New member.
6378 (gc_process_relocs): Add references to sections whose names are C
6379 identifiers.
6380 * gold.h (cident_section_start_prefix): New constant.
6381 (cident_section_stop_prefix): New constant.
6382 (is_cident): New function.
6383 * layout.cc (Layout::define_section_symbols): Replace string constants
6384 with the newly defined constants.
6385 * object.cc (Sized_relobj::do_layout): Track sections whose names are
6386 C identifiers.
6387 * testsuite/Makefile.am: Add gc_orphan_section_test.
6388 * testsuite/Makefile.in: Regenerate.
6389 * testsuite/gc_orphan_section_test.cc: New file.
6390 * testsuite/gc_orphan_section_test.sh: New file.
6391
6eda8c29
ILT
63922010-01-06 Ian Lance Taylor <iant@google.com>
6393
b9674e17
ILT
6394 PR 10980
6395 * options.h (class General_options): Add --warn-shared-textrel.
6396 * layout.cc (Layout::finish_dynamic_section): Implement
6397 --warn-shared-textrel.
6398
6eda8c29
ILT
6399 PR 10980
6400 * options.h (class General_options): Add --warn-multiple-gp.
6401
32dcd44e
ILT
64022010-01-06 Viktor Kutuzov <vkutuzov@accesssoftek.com>
6403
6404 * Makefile.am (incremental_dump_DEPENDENCIES): Remove
6405 $(THREADSLIB) and $(LIBDL).
6406 * Makefile.in: Rebuild.
6407
a192ba05
ILT
64082010-01-06 Ian Lance Taylor <iant@google.com>
6409
6410 PR 10980
6411 * options.cc (General_options::parse_section_start): New function.
6412 (General_options::section_start): New function.
6413 (General_options::General_options): Initialize all members.
6414 * options.h: Include <map>
6415 (class General_options): Add --section-start. Add section_starts_
6416 member.
6417 * layout.cc (Layout::attach_allocated_section_to_segment): If
6418 --section-start was used, set the address of the segment. Remove
6419 local sort_sections.
6420 (Layout::relaxation_loop_body): If the address of the load segment
6421 has been set by --section-start, don't use it.
6422 * output.h (Output_segment::update_flags_for_output_section): New
6423 function.
6424 * output.cc (Output_segment::add_output_section): Call
6425 update_flags_for_output_section.
6426
dde3f402
ILT
64272010-01-05 Ian Lance Taylor <iant@google.com>
6428
62dfdd4d
ILT
6429 PR 10980
6430 * options.h (class General_options): Add --undefined-version.
6431 * script.cc (struct Version_expression): Add was_matched_by_symbol
6432 field.
6433 (Version_script_info::matched_symbol): New function.
6434 (Version_script_info::get_symbol_version_helper): Call
6435 matched_symbol.
6436 (Version_script_info::check_unmatched_names): New function.
6437 * script.h (class Version_script_info): Update declarations.
6438 * gold.cc (queue_middle_tasks): Handle --no-undefined-version.
6439
9c4ae156
ILT
6440 * options.h (class General_options): Use DEFINE_bool_alias for
6441 allow_multiple_definition.
6442 * resolve.cc (Symbol_table::should_override): Don't test
6443 allow_multiple_definition.
6444
dde3f402
ILT
6445 PR 10980
6446 * options.h (class General_options): Add --cref.
6447 * main.cc (main): Print cref table if --cref. Don't close mapfile
6448 until after printing cref table.
6449 * cref.cc: Include "symtab.h".
6450 (class Cref_inputs): Define Cref_table_compare and Cref_table.
6451 (Cref_table_compare::operator()): New function.
6452 (Cref_inputs::gather_cref): New function.
6453 (filecol): New static const.
6454 (Cref_inputs::print_cref): New function.
6455 (Cref::print_cref): New function.
6456 * cref.h: Include <cstdio>.
6457 (class Cref): Update declarations.
6458 * mapfile.h (Mapfile::file): New function.
6459 * object.h (class Object): Define Symbols. Declare virtual
6460 do_get_global_symbols.
6461 (Object::get_global_symbols): New function.
6462 * object.cc (Input_objects::add_object): Pass object to cref_ if
6463 --cref.
6464 (Input_objects::archive_start): Likewise.
6465 (Input_objects::archive_stop): Likewise.
6466 (Input_objects::print_cref): New function.
6467 * dynobj.h (Sized_dynobj::do_get_global_symbols): New function.
6468 * dynobj.cc (big_endian>::do_add_symbols): Create symbols_ if
6469 --cref.
6470 * plugin.cc (Sized_pluginobj::do_get_global_symbols): New
6471 function.
6472 * plugin.h (class Sized_pluginobj): Update declarations.
6473
8781f709
ILT
64742010-01-05 Ian Lance Taylor <iant@google.com>
6475
6476 * symtab.cc (Symbol_table::add_from_object): Rename def parameter
6477 to is_default_version. Rename insdef to insdefault.
6478 (Symbol_table::add_from_relobj): Rename def to is_default_version
6479 and local to is_forced_local.
6480 (Symbol_table::add_from_pluginobj): Likewise.
6481 (Symbol_table::add_from_dynobj): Likewise.
6482 (Symbol_table::define_special_symbol): Rename insdef to
6483 insdefault.
6484
fe35d28d
ILT
64852010-01-04 Ian Lance Taylor <iant@google.com>
6486
30bc8c46
ILT
6487 PR 10980
6488 * options.h (class General_options): Add
6489 --allow-multiple-definition and -z muldefs.
6490 * resolve.cc (Symbol_table::should_override): Don't warn about a
6491 multiple symbol definition if --allow-multiple-definition or -z
6492 muldefs.
6493
7eaea549
ILT
6494 PR 10980
6495 * options.h (class General_options): Add --add-needed and
6496 --copy-dt-needed-entries. Tweak --as-needed help entry.
6497 * object.cc (Input_objects::check_dynamic_dependencies): Give an
6498 error if --copy-dt-needed-entries aka --add-needed is used and
6499 would cause a change in behaviour.
6500
fe35d28d
ILT
6501 PR 10980
6502 * options.h (class General_options): Add -G as a short version of
6503 --shared. Add no-op options -assert, -g, and -i.
6504
55a2bb35
ST
65052010-01-04 Sriraman Tallam <tmsriram@google.com>
6506
6507 * gc.h (gc_process_relocs): Call is_section_foldable_candidate to
6508 check for .text or .gnu.linkonce.t sections.
6509 * icf.cc (Icf::find_identical_sections): Ditto.
6510 Change the detection for mangled function name within the section
6511 name.
6512 * icf.h (is_section_foldable_candidate): New function.
6513
719328e1
ILT
65142009-12-30 Ian Lance Taylor <iant@google.com>
6515
6516 PR 10980
6517 * options.h (class General_options): Permit two dashes with
6518 --retain-symbols-file.
6519
d7bb5745
ILT
65202009-12-30 Ian Lance Taylor <iant@google.com>
6521
403a15dd
ILT
6522 PR 10979
6523 * layout.cc (Layout::relaxation_loop_body): If -Ttext was used,
6524 don't put the file header and segment headers in the text
6525 segment.
6526
eda294df
ILT
6527 PR 10979
6528 * common.cc (Sort_commons::operator()): Stabilize sort when both
6529 entries are NULL.
6530 (Symbol_table::do_allocate_commons_list): When allocating common
6531 symbols, skip a symbol which is no longer common.
6532 * symtab.h (Symbol::is_common): Test whether the symbol comes from
6533 an object before checking its type.
6534 * testsuite/common_test_2.c: New file.
6535 * testsuite/common_test_3.c: New file.
6536 * testsuite/Makefile.am (check_PROGRAMS): Add common_test_2.
6537 (common_test_2_SOURCES, common_test_2_DEPENDENCIES): Define.
6538 (common_test_2_LDFLAGS, common_test_2_LDADD): Define.
6539 (common_test_2_pic.o, common_test_2.so): New targets.
6540 (common_test_3_pic.o, common_test_3.so): New targets.
6541 * testsuite/Makefile.in: Rebuild.
6542
d7bb5745
ILT
6543 PR 10979
6544 * script.cc (read_input_script): If we see a new SECTIONS clause,
6545 and we have added an input section, give an error.
6546 * layout.h (class Layout): Add have_added_input_section function.
6547 Add have_added_input_section_ field.
6548 * layout.cc (Layout::Layout): Initialize
6549 have_added_input_section_.
6550 (Layout::layout): Set have_added_input_section_.
6551 (Layout::layout_eh_frame): Likewise.
6552
fc59c572
ILT
65532009-12-30 Ian Lance Taylor <iant@google.com>
6554
6555 PR 10931
6556 * options.h (class General_options): Add --sort-common option.
6557 * symtab.h (class Symbol_table): Define Sort_commons_order enum.
6558 * common.cc (Sort_common): Add sort_order parameter to
6559 constructor. Add sort_order_ field.
6560 (Sort_commons::operator): Check sort_order_.
6561 (Symbol_table::allocate_commons): Determine the sort order.
6562 (Symbol_table::do_allocate_commons): Add sort_order parameter.
6563 Change all callers.
6564 (Symbol_table::do_allocate_commons_list): Likewise.
6565
1c74fab0
ILT
65662009-12-30 Ian Lance Taylor <iant@google.com>
6567
6568 PR 10916
6569 * symtab.cc (Symbol_table::add_from_relobj): When not exporting
6570 symbols from this object, don't change the visibility of an
6571 undefined symbol.
6572 * testsuite/exclude_libs_test_1.c (lib1_ref): New function.
6573
6affe781
ILT
65742009-12-30 Ian Lance Taylor <iant@google.com>
6575
6576 PR 10861
6577 * script.h (class Version_script_info): Define Language enum.
6578 Update declarations. Define Glob, Exact, and Lookup types. Add
6579 new fields globals_, locals_, and is_finalized_.
6580 * script.cc: Various formatting fixes.
6581 (class Parser_closure): Change language_stack_ from a vector of
6582 std::string to one of Version_script_info::Language. Adjust all
6583 uses accordingly.
6584 (class Lazy_demangler): Remove.
6585 (struct Version_expression): Change language from std::string to
6586 Version_script_info::Language.
6587 (Version_script_info::Version_script_info): New function.
6588 (Version_script_info::~Version_script_info): Don't call clear.
6589 (Version_script_info::finalize): New function.
6590 (Version_script_info::build_lookup_tables): New function.
6591 (Version_script_info::build_expression_list_lookup): New
6592 function.
6593 (Version_script_info::get_symbol_version_helper): Rewrite to use
6594 lookup tables.
6595 (Version_script_info::print_expression_list): Adjust to use
6596 Version_script_info::Language.
6597 (script_push_lex_into_version_mode): Check that the version script
6598 has not been finalized.
6599 (version_script_push_lang): Change language string to
6600 Version_script_info::Language.
6601 * options.cc (Command_line::version_script): New function.
6602 * options.h (class General_options): Add finalize_dynamic_list
6603 function. Change version_script from declaration to definition.
6604 * testsuite/ver_test_4.script: Remove duplicate def of t2_2.
6605 * testsuite/version_script.map: Remove duplicate def of foo.
6606 * testsuite/Makefile.am (ver_matching_def.so): Depend upon
6607 version_script.map.
6608 * testsuite/Makefile.in: Rebuild.
6609
818bf354
ILT
66102009-12-30 Ian Lance Taylor <iant@google.com>
6611
6612 PR 10843
6613 * target-reloc.h (relocate_for_relocatable): When copying a reloc,
6614 if the input symbol index is 0, make the output symbol index 0.
6615
ebcc8304
ILT
66162009-12-30 Ian Lance Taylor <iant@google.com>
6617
6618 PR 10670
6619 * options.h (class General_options): Add -x/--discard-all.
6620 * object.cc (Sized_relobj::do_count_local_symbols): Handle
6621 --discard-all. If the local symbol needs a dynamic entry, check
6622 that before handling --discard-locals.
6623
176fe33f
ILT
66242009-12-30 Ian Lance Taylor <iant@google.com>
6625
bb321bb1
ILT
6626 PR 10450
6627 * output.cc (Output_segment::Output_segment): If PT_TLS, set the
6628 flags to PF_R.
6629 (Output_segment::add_output_section): Don't change the flags if
6630 the type is PT_TLS.
6631
176fe33f
ILT
6632 PR 10450
6633 * dynobj.cc (Dynobj::create_gnu_hash_table): Add symbols to the
6634 GNU hash table if they need a dynamic value. Otherwise, don't add
6635 them if they are defined in a dynamic object or are forced local.
6636
e8cd95c7
ILT
66372009-12-29 Ian Lance Taylor <iant@google.com>
6638
1b81fb71
ILT
6639 PR 10450
6640 * layout.cc (Layout::create_dynamic_symtab): Only set entsize of
6641 .gnu.hash table for a 32-bit target.
6642
8d6d383d
ILT
6643 PR 10450
6644 * symtab.h (Symbol::needs_dynsym_entry): A symbol in both a
6645 regular and a dynamic object only needs a dynamic symbol table
6646 entry if it is externally visible.
6647
e785ec03
ILT
6648 PR 10450
6649 * i386.cc (class Target_i386): Initialize global_offset_table_ in
6650 constructor. Add global_offset_table_ field.
6651 (Target_i386::got_section): Set global_offset_table_.
6652 (Target_i386::do_finalize_sections): Set global_offset_table_
6653 size.
6654 * x86_64.cc (class Target_x86_64): Initialize global_offset_table_
6655 in constructor. Add global_offset_table_ field.
6656 (Target_x86_64::got_section): Set global_offset_table_.
6657 (Target_x86_64::do_finalize_sections): Set global_offset_table_
6658 size.
6659
1a2dff53
ILT
6660 * layout.cc (Layout::Layout): Initialize increase_relro_.
6661 (Layout::get_output_section): Add is_relro, is_last_relro, and
6662 is_first_non_relro parameters. Change all callers.
6663 (Layout::choose_output_section): Likewise.
6664 (Layout::add_output_section_data): Likewise.
6665 (Layout::make_output_section): Likewise.
6666 (Layout::set_segment_offsets): Clear increase_relro when using a
6667 linker script.
6668 * layout.h (class Layout): Add increase_relro method. Add
6669 increase_relro_ field. Update declarations.
6670 * output.cc (Output_section::Output_section): Initialize
6671 is_last_relro_ and is_first_non_relro_.
6672 (Output_segment::add_output_section): Group relro sections is
6673 do_sort is true. Handle is_last_relro and is_first_non_relro.
6674 (Output_segment::maximum_alignment): Remove relro handling.
6675 (Output_segment::set_section_addresses): Add increase_relro
6676 parameter. Change all callers. Add initial alignment to align
6677 relro sections on separate page. Remove old relro handling.
6678 (Output_segment::set_section_list_addresses): Remove in_relro
6679 parameter. Change all callers.
6680 (Output_segment::set_offset): Add increase parameter. Change all
6681 callers. Remove old relro handling.
6682 * output.h (class Output_section): Add new methods: is_last_relro,
6683 set_is_last_relro, is_first_non_relro, set_is_first_non_relro.
6684 Add is_last_relro_ and is_first_non_relro_ fields.
6685 * i386.cc (Target_i386::got_section): Don't call set_is_relro.
6686 Create separate .got.plt section. Call increase_relro.
6687 * x86_64.cc (Target_x86_64::got_section): Likewise.
6688 * testsuite/relro_script_test.t: Add .got.plt.
6689
f0ba79e2
ILT
6690 PR 10450
6691 * layout.cc (Layout::Layout): Initialize dynamic_symbol_ field.
6692 (Layout::create_initial_dynamic_sections): Set dynamic_symbol_.
6693 (Layout::finalize): Call set_dynamic_symbol_size.
6694 (Layout::set_dynamic_symbol_size): New function.
6695 * layout.h (class Layout): Add dynamic_symbol_ field. Declare
6696 set_dynamic_symbol_size.
6697
e8cd95c7
ILT
6698 PR 10450
6699 * output.h (class Output_section): Add is_entsize_zero_ field.
6700 * output.cc (Output_section::Output_section): Initialize
6701 is_entsize_zero_.
6702 (Output_section::set_entsize): If two different entsizes are
6703 requested, force it to zero.
6704 (Output_section::add_input_section): Set flags for .debug_str
6705 before updating section flags. Set entsize.
6706 (Output_section::update_flags_for_input_section): Set SHF_MERGE
6707 and SHF_STRING if all input sections have those flags.
6708
3e1b9a8a
RÁE
67092009-12-29 Rafael Espindola <espindola@google.com>
6710
6711 * main.cc (main): Fix the sys time reporting.
e8cd95c7
ILT
6712 * workqueue.cc (Workqueue::find_and_run_task): Fix the sys time
6713 reporting.
3e1b9a8a 6714
3dcad376
ST
67152009-12-29 Sriraman Tallam <tmsriram@google.com>
6716
6717 * options.cc (General_options::parse_version): Allow -v to exit
6718 without an error if there is nothing to link.
6719
084e2665
ILT
67202009-12-29 Ian Lance Taylor <iant@google.com>
6721
6722 * configure.ac: Set the MCMODEL_MEDIUM conditional to false if
6723 using a version of gcc before 4.1.
6724 * configure: Rebuild.
6725
250acde3
CD
67262009-12-28 Chris Demetriou <cgd@google.com>
6727
6728 * attributes.cc (Output_attributes_section_data::do_write): Use
6729 std::vector::front rather than std::vector::data.
6730
99fff23b
ILT
67312009-12-28 Ian Lance Taylor <iant@google.com>
6732
6733 * symtab.h (class Symbol_table): Add enum Defined.
6734 * resolve.cc (Symbol_table::should_override): Add defined
6735 parameter. Change all callers. Test whether object is NULL
6736 before calling a method on it.
6737 (Symbol_table::report_resolve_problem): Add defined parameter.
6738 Change all callers.
6739 (Symbol_table::should_override_with_special): Likewise.
6740 * symtab.cc (Symbol_table::define_in_output_data): Add defined
6741 parameter. Change all callers.
6742 (Symbol_table::do_define_in_output_data): Likewise.
6743 (Symbol_table::define_in_output_segment): Likewise.
6744 (Symbol_table::do_define_in_output_segment): Likewise.
6745 (Symbol_table::define_as_constant): Likewise.
6746 (Symbol_table::do_define_as_constant): Likewise.
6747 * script.h (class Symbol_assignment): Add is_defsym parameter to
6748 constructor; change all callers.
6749 * script.cc (Script_options::add_symbol_assignment): Add is_defsym
6750 parameter. Change all callers. Add is_defsym_ field.
6751 (class Parser_closure): Add parsing_defsym parameter to
6752 constructor; change all callers. Add parsing_defsym accessor
6753 function. Add parsing_defsym_ field.
6754
556bd683
ILT
67552009-12-28 Ian Lance Taylor <iant@google.com>
6756
6757 * gold.cc (queue_middle_tasks): Fix formatting.
fa618ee4 6758 * object.cc (Relobj::is_section_name_included): Likewise.
556bd683 6759
1782c879
ILT
67602009-12-23 Ian Lance Taylor <iant@google.com>
6761
6762 * i386.cc (Target_i386::do_calls_non_split): Recognize
6763 -fsplit-stack prologue for a function with a static chain.
cbc999b9
ILT
6764 * x86_64.cc (Target_x86_64::do_calls_non_split): Recognize
6765 -fsplit-stack prologue when using %r11.
1782c879 6766
329ca2b1
ST
67672009-12-21 Sriraman Tallam <tmsriram@google.com>
6768
6769 * options.cc (General_options::parse_version): Make -v continue and do
6770 the link like GNU ld does.
6771
d675ff46
RÁE
67722009-12-17 Rafael Avila de Espindola <espindola@google.com>
6773
6774 * Makefile.am (CCFILES): Add timer.cc.
6775 (HFILES): Add timer.h.
6776 * configure.ac: Check for sysconf and times.
6777 * main.cc: include timer.h.
6778 (main): Use Timer instead of get_run_time.
6779 * timer.cc: New.
6780 * timer.h: New.
6781 * workqueue.cc: include timer.h.
6782 (Workqueue::find_and_run_task):
6783 Report user, sys and wall time.
6784 * Makefile.in: Regenerate.
6785 * config.in: Regenerate.
6786 * configure: Regenerate.
6787
d6344fb5
DK
67882009-12-16 Doug Kwan <dougkwan@google.com>
6789
6790 * arm.cc (Arm_relobj::scan_sections_for_stubs): Exclude ICF-eliminated
6791 sections.
6792 * object.cc (Sized_relobj::do_finalize_local_symbols): Handle
6793 relaxed input sections.
6794 * output.cc (Output_section::find_relaxed_input_section): Change
6795 return type to Output_relaxed_input_section pointer. Adjust code
6796 for new type of relaxed_input_section_map_.
6797 * output.h (Output_section::find_relaxed_input_section): Change
6798 return type to Output_relaxed_input_section pointer.
6799 (Output_section::Output_relaxed_input_section_by_input_section_map):
6800 New type.
6801 (Output_section::relaxed_input_section_map_): Change type to
6802 Output_section::Output_relaxed_input_section_by_input_section_map.
6803 * symtab.cc (Symbol_table::compute_final_value): Handle relaxed
6804 input section.
6805
0e0d5469
ILT
68062009-12-15 Ian Lance Taylor <iant@google.com>
6807
6808 * layout.cc (Layout::create_shstrtab): Only write out after input
6809 sections if we are compressing debug sections.
6810
0649a889
ILT
68112009-12-15 Ian Lance Taylor <iant@google.com>
6812
6813 * archive.cc (Archive::add_symbols): Only look up a symbol without
6814 a version if there is, in fact, a version.
6815
2ea97941
ILT
68162009-12-14 Ian Lance Taylor <iant@google.com>
6817
6818 Revert -Wshadow changes, all changes from:
6819 2009-12-11 Doug Kwan <dougkwan@google.com>
6820 2009-12-11 Nick Clifton <nickc@redhat.com>
6821 * configure.ac: Remove -Wshadow when setting WARN_CXXFLAGS.
6822
b0eec2cc
DK
68232009-12-11 Doug Kwan <dougkwan@google.com>
6824
6825 * arm.cc (Target_arm::do_finalize_sections): Fix build breakage
6826 due to -Wshadow.
6827 * attributes.cc (Object_attribute::size): Ditto.
6828 (Attributes_section_data::size): Ditto.
6829 (Attributes_section_data::Attributes_section_data): Ditto.
6830 (Output_attributes_section_data::do_write): Ditto.
6831 * attributes.h (Object_attribute::set_type): Ditto.
6832 * testsuite/tls_test_main.cc (safe_lock, safe_unlock): Ditto.
6833
91d6fa6a
NC
68342009-12-11 Nick Clifton <nickc@redhat.com>
6835
6836 * archive.cc: Fix shadowed variable warnings.
6837 * arm.cc: Likewise.
6838 * compressed_output.cc: Likewise.
6839 * compressed_output.h: Likewise.
6840 * configure: Likewise.
6841 * dwarf_reader.cc: Likewise.
6842 * dynobj.cc: Likewise.
6843 * dynobj.h: Likewise.
6844 * ehframe.cc: Likewise.
6845 * ehframe.h: Likewise.
6846 * errors.cc: Likewise.
6847 * expression.cc: Likewise.
6848 * fileread.cc: Likewise.
6849 * fileread.h: Likewise.
6850 * freebsd.h: Likewise.
6851 * i386.cc: Likewise.
6852 * icf.cc: Likewise.
6853 * incremental.h: Likewise.
6854 * layout.cc: Likewise.
6855 * layout.h: Likewise.
6856 * mapfile.cc: Likewise.
6857 * merge.cc: Likewise.
6858 * merge.h: Likewise.
6859 * object.cc: Likewise.
6860 * object.h: Likewise.
6861 * options.h: Likewise.
6862 * output.cc: Likewise.
6863 * output.h: Likewise.
6864 * parameters.cc: Likewise.
6865 * plugin.cc: Likewise.
6866 * powerpc.cc: Likewise.
6867 * reduced_debug_output.cc: Likewise.
6868 * reduced_debug_output.h: Likewise.
6869 * reloc.cc: Likewise.
6870 * reloc.h: Likewise.
6871 * resolve.cc: Likewise.
6872 * script-sections.cc: Likewise.
6873 * script.cc: Likewise.
6874 * script.h: Likewise.
6875 * sparc.cc: Likewise.
6876 * symtab.cc: Likewise.
6877 * symtab.h: Likewise.
6878 * target-select.cc: Likewise.
6879 * target-select.h: Likewise.
6880 * token.h: Likewise.
6881 * workqueue.cc: Likewise.
6882 * workqueue.h: Likewise.
6883 * x86_64.cc: Likewise.
6884
a0351a69
DK
68852009-12-10 Doug Kwan <dougkwan@google.com>
6886
6887 * arm.cc (attributes.h): New include.
6888 (Arm_relobj::Arm_relobj): Initialize attributes_section_data_.
6889 (Arm_relobj::~Arm_relobj): Delete object pointed by
6890 attributes_section_data_.
6891 (Arm_relobj::attributes_section_data): New method definition.
6892 (Arm_relobj::attributes_section_data_): New data member declaration.
6893 (Arm_dynobj::Arm_dynobj): Initialize attributes_section_data_.
6894 (Arm_dynobj::~Arm_dynobj): Delete object pointed by
6895 attributes_section_data_.
6896 (Arm_dynobj::attributes_section_data): New method definition.
6897 (Arm_dynobj::attributes_section_data_): New data member declaration.
6898 (Target_arm::Target_arm): Initialize attributes_section_data_. Change
6899 initialization value of may_use_blx_ to false.
6900 (Target_arm::using_thumb2, Target_arm::using_thumb_only,
6901 Target_arm::may_use_arm_nop, Target_arm::may_use_thumb2_nop): Use
6902 object attributes to compute results instead of hard-coding.
6903 (Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order,
6904 Target_arm::get_secondary_compatible_arch,
6905 Target_arm::set_secondary_compatible_arch
6906 Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name,
6907 Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes):
6908 New method declarations.
6909 (Target_arm::get_aeabi_object_attribute): New method definition.
6910 (Target_arm::attributes_section_data_): New data member declaration.
6911 (read_arm_attributes_section): New template definition.
6912 (Arm_relobj::do_read_symbols): Read attributes section if it exists.
6913 (Arm_dynobj::do_read_symbols): Ditto.
6914 (Target_arm::do_finalize_sections): Merge attributes sections from
6915 input. Check for BLX use after attributes section merging.
6916 Fix __exidx_start and __exidx_end visibility. Create an
6917 .ARM.attributes section if necessary.
6918 (Target_arm::get_secondary_compatible_arch,
6919 Target_arm::set_secondary_compatible_arch,
6920 Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name,
6921 Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes,
e1df38aa 6922 Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order):
a0351a69
DK
6923 New method definitions.
6924
b59befec
ILT
69252009-12-09 Ian Lance Taylor <iant@google.com>
6926
6927 * plugin.cc (Plugin::load): Don't cast from void* to a function
6928 pointer.
6929
1276bc89
ILT
69302009-12-09 Ian Lance Taylor <iant@google.com>
6931
6932 * dynobj.cc (Sized_dynobj::do_read_symbols): Clear version
6933 information fields.
6934
2f2de248
L
69352009-12-09 H.J. Lu <hongjiu.lu@intel.com>
6936
6937 * testsuite/Makefile.am (two_file_shared_1_pic_2_test_DEPENDENCIES):
6938 Replace two_file_shared_1.so with two_file_shared_2.so.
6939 * testsuite/Makefile.in: Regenerated.
6940
4f787271
DK
69412009-12-08 Doug Kwan <dougkwan@google.com>
6942
6943 * Makefile.am (CCFILES): Add attributes.cc and int_encoding.cc.
6944 (HFILES): Add attributes.h and int_encoding.h.
6945 * Makefile.in: Regenerate.
6946 * dwarf_reader.cc (read_unsigned_LEB_128, read_signed_LEB_128): Move
6947 function definitions to int_encoding.cc
6948 * dwarf_reader.h (read_unsigned_LEB_128, read_signed_LEB_128): Move
6949 prototypes to int_encoding.h
6950 * reduced_debug_output.cc (int_encoding.h): New include.
6951 (write_unsigned_LEB_128, get_length_as_unsigned_LEB_128): Move
6952 function definitions to int_encoding.cc
6953 (insert_into_vector, read_from_pointer): Move template definitions to
6954 int_encoding.h
6955 * attributes.cc: New file.
6956 * attributes.h: New file.
6957 * int_encoding.cc: New file.
6958 * int_encoding.h: New file.
6959
20b52f1a
RÁE
69602009-12-07 Rafael Avila de Espindola <espindola@google.com>
6961
6962 PR gold/11055
6963 * incremental-dump.cc (dump_incremental_inputs): New.
6964 (main): Use dump_incremental_inputs.
6965
53d7974c
L
69662009-12-07 H.J. Lu <hongjiu.lu@intel.com>
6967
6968 PR gold/10893
6969 * i386.cc (Target_i386::Scan::globa): Use is_func instead of
6970 checking elfcpp::STT_FUNC.
6971 (Target_i386::Relocate::relocate): Likewise.
6972 * x86_64.cc (Target_x86_64::Scan::global): Likewise.
6973
6974 * symtab.cc (Symbol_table::sized_write_symbol): Turn IFUNC
6975 symbols from shared libraries into normal FUNC symbols.
6976
6977 * symtab.h (Symbol): Add is_func and use it.
6978
05a352e6
DK
69792009-12-05 Doug Kwan <dougkwan@google.com>
6980
6981 * arm.cc (Target_arm::arm_info): Initialize new fields
6982 attributes_section and attributes_vendor.
6983 * i386.cc (Target_i386::i386_info): Same.
6984 * object.cc (Sized_relobj::do_layout): Skip attribute section.
6985 * gold/powerpc.cc (Target_powerpc::powerpc_info): Initialize new
6986 fields attributes_section and attributes_vendor.
53d7974c 6987 * sparc.cc (Target_sparc::sparc_info): Same.
05a352e6
DK
6988 * target.h (Target::attributes_section, Target::attributes_vendor,
6989 Target::is_attributes_section, Target::attribute_arg_type,
6990 Target::attributes_order): New method definitions.
6991 (Target::Target_info::attributes_section,
6992 Target::Target_info::attributes_vendor): New fields.
6993 (Target::do_attribute_arg_type, Target::do_attributes_order): New
6994 virtual method definitions.
6995 * x86_64.cc (Target_x86_64::x86_64_info): Initialize new fields
6996 attributes_section and attributes_vendor.
6997 * testsuite/testfile.cc (Target_test::test_target_info): Same.
6998
f4e5969c
DK
69992009-12-05 Doug Kwan <dougkwan@google.com>
7000
7001 * arm.cc: Update comments about interworking and stub generation.
7002 (Target_arm::Relocate::reloc_is_non_pic): Update list of relocations
7003 considered as non-PIC.
7004 (Arm_relocate_functions::base_abs): Fix formatting.
7005 (Arm_relocate_functions::got_prel): Fix comment. Change interface
7006 of function to use GOT entry address instead of offset.
7007 (Target_arm::Scan::global): Issue an error if a symbol would need a
7008 PLT does not get one because it is untyped. Remove code to create
7009 dynamic symbols for relative branches.
7010 (Target_arm::Relocate::relocate: Use 0 instead of false since function
7011 takes unsigned integer instead of boolean.
7012
1abce4a6
L
70132009-12-05 H.J. Lu <hongjiu.lu@intel.com>
7014
7015 * testsuite/Makefile.am (constructor_test_LDADD): New. Empty.
7016 (two_file_test_LDADD): Likewise.
7017 (common_test_1_LDADD): Likewise.
7018 (exception_test_LDADD) Likewise.
7019 (weak_test_LDADD): Likewise.
7020 (many_sections_test_LDADD): Likewise.
7021 (initpri1_LDADD): Likewise.
7022 (script_test_1_LDADD): Likewise.
7023 (script_test_2_LDADD): Likewise.
7024 (justsyms_LDADD): Likewise.
7025 (binary_test_LDADD): Likewise.
7026 (large_LDADD): Likewise.
7027 * testsuite/Makefile.in: Regenerated.
7028
adcf2816 70292009-12-04 H.J. Lu <hongjiu.lu@intel.com>
1abce4a6 7030
adcf2816
L
7031 * resolve.cc (symbol_to_bits): Treat STB_GNU_UNIQUE as STB_GLOBAL.
7032 (Symbol_table::override_with_special): Likewise.
7033 (Symbol_table::add_from_object): Likewise.
7034
28e67f5d
RÁE
70352009-12-04 Rafael Avila de Espindola <espindola@google.com>
7036
7037 * incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
7038 Don't set the data_offset twice.
7039
ae10a101
RÁE
70402009-12-04 Rafael Avila de Espindola <espindola@google.com>
7041
7042 * testsuite/Makefile.in: Regenerate.
7043
f59f41f3
DK
70442009-12-03 Doug Kwan <dougkwan@google.com>
7045
7046 * arm.cc: Remove comment about missing .ARM.exidx section symbols.
7047 (Target_arm::do_finalize_sections): Add parameter for symbol table
7048 pointer. Add __exidx_start and __exidx_end symbols as appropriate.
7049 * i386.cc (Target_i386::do_finalize_sections): Add an additional
7050 parameter for symbol table pointer.
7051 * layout.cc (Layout::finalize): Call Target::finalize_sections with
7052 an additional parameter for a pointer to symbol table.
7053 * powerpc.cc (Target_powerpc::do_finalize_sections): Add an additional
7054 parameter for a symbol table pointer.
7055 * sparc.cc (Target_sparc::do_finalize_sections): Ditto.
7056 * target.h (Target::finalize_sections, Target::do_finalize_sections):
7057 Ditto.
7058 * x86_64.cc (Target_x86_64::do_finalize_sections): Add an additional
7059 parameter for a symbol table pointer.
7060
ca55d848
RÁE
70612009-12-03 Rafael Avila de Espindola <espindola@google.com>
7062
7063 * incremental.cc (Incremental_inputs_header)
7064 (Incremental_inputs_header_write, Incremental_inputs_entry)
7065 (Incremental_inputs_entry_write): Move ...
7066 * incremental.h (Incremental_inputs_header)
7067 (Incremental_inputs_header_write, Incremental_inputs_entry)
7068 (Incremental_inputs_entry_write): here.
7069
3aec4f9c
RÁE
70702009-12-02 Rafael Avila de Espindola <espindola@google.com>
7071
7072 * incremental.cc (make_sized_incremental_binary): Set the target.
7073 Error if it is incompatible.
7074 * output.h (Output_file): Add filename method.
7075
9c0ae74d
RÁE
70762009-12-02 Rafael Avila de Espindola <espindola@google.com>
7077
7078 * incremental.cc (Incremental_inputs_entry): Remove unused argument
7079 from the get_* methods.
7080
a45500ae
RÁE
70812009-12-02 Rafael Avila de Espindola <espindola@google.com>
7082
7083 * incremental-dump.cc (main): Check that the offeset of a script is 0.
7084 * incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
7085 Write 0 for the data_offset of scripts.
7086
325e6408
RÁE
70872009-12-02 Rafael Avila de Espindola <espindola@google.com>
7088
7089 * testsuite/Makefile.am: Add the incremental_test.sh test.
7090 * testsuite/incremental_test.sh: New.
7091 * testsuite/incremental_test_1.c: New.
7092 * testsuite/incremental_test_2.c: New.
7093
954c3e2e
RÁE
70942009-12-01 Rafael Avila de Espindola <espindola@google.com>
7095
7096 * incremental-dump.cc (main): Fix typos.
7097
f8086623
RÁE
70982009-11-27 Rafael Avila de Espindola <espindola@google.com>
7099
7100 PR gold/11025
7101 * incremental-dump.cc (main): Use llu to print 64 bit values.
7102
3b0dd6ac
L
71032009-11-26 Per Øyvind Karlsen <peroyvind@mandriva.org>
7104 H.J. Lu <hongjiu.lu@intel.com>
7105
7106 * Makefile.am (incremental_dump_DEPENDENCIES): Add $(THREADSLIB)
7107 $(LIBDL).
7108 (incremental_dump_LDADD): Likewise.
7109 * Makefile.in: Regenerated.
7110
a6d1ef57 71112009-11-25 Doug Kwan <dougkwan@google.com>
e1df38aa 7112
a6d1ef57
DK
7113 Revert:
7114
7115 2009-11-25 Doug Kwan <dougkwan@google.com>
7116
7117 * arm.cc (Target_arm::Target_arm): Move method definition
7118 outside of class definition. Add code to handle
7119 --target1-rel, --target1-abs and --target2= options.
7120 (Target_arm::get_reloc_reloc_type): Change method to be
7121 non-static and const.
7122 (Target_arm::target1_is_rel_, Target_arm::target2_reloc_):
7123 New data member declaration.
7124 (Target_arm::Scan::local, Target_arm::Scan::global,
7125 Target_arm::Relocate::relocate,
7126 Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
7127 Adjust call to Target_arm::get_real_reloc_type.
7128 (Target_arm::get_real_reloc_type): Use command line options
7129 to determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
7130 * options.h (--target1-rel, --target1-abs, --target2): New
7131 ARM-only options.
7132
50aeb7d4
DK
71332009-11-25 Doug Kwan <dougkwan@google.com>
7134
7135 * arm.cc (Target_arm::Target_arm): Move method definition outside of
7136 class definition. Add code to handle --target1-rel, --target1-abs
7137 and --target2= options.
7138 (Target_arm::get_reloc_reloc_type): Change method to be non-static
7139 and const.
7140 (Target_arm::target1_is_rel_, Target_arm::target2_reloc_): New data
7141 member declaration.
7142 (Target_arm::Scan::local, Target_arm::Scan::global,
7143 Target_arm::Relocate::relocate,
7144 Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Adjust
7145 call to Target_arm::get_real_reloc_type.
7146 (Target_arm::get_real_reloc_type): Use command line options to
7147 determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
7148 * options.h (--target1-rel, --target1-abs, --target2): New ARM-only
7149 options.
7150
51938283
DK
71512009-11-25 Doug Kwan <dougkwan@google.com>
7152
7153 * arm.cc (Target_arm::may_use_thumb2_nop): New method definition.
7154 (Arm_relocate_functions::thumb_branch_common): New metod declaration.
7155 (Arm_relocate_functions::abs12, Arm_relocate_functions::abs16): Fix
7156 formatting.
7157 (Arm_relocate_functions::thm_call): Replace body with a call to
7158 Arm_relocate_functions::thumb_branch_common.
7159 (Arm_relocate_functions::thm_jump24,
7160 Arm_relocate_functions::thm_xpc22): New method definitions.
7161 (Arm_relocate_functions::thumb_branch_common): New method definition.
7162 (Reloc_stub::stbu_type_for_reloc): Fix incorrect uses of bit-wise-or
7163 operator.
7164 (Target_arm::Relocate::relocate): Adjust call to thm_call.
7165 Add code to handle R_ARM_THM_XPC22 and R_ARM_THM_JUMP24.
7166
e2b8f3c4
RÁE
71672009-11-24 Rafael Avila de Espindola <espindola@google.com>
7168
7169 * Makefile.am: Build incremental-dump
7170 * Makefile.in: Regenerate.
7171 * incremental-dump.cc: New.
7172 * incremental.cc (Incremental_inputs_header_data,
7173 Incremental_inputs_entry_data): Move to incremental.h
7174 * incremental.h: (Incremental_inputs_header_data,
7175 Incremental_inputs_entry_data): Move from incremental.cc
7176
bcba9aec
RÁE
71772009-11-24 Rafael Avila de Espindola <espindola@google.com>
7178
7179 * incremental.cc (Incremental_inputs_header,
7180 Incremental_inputs_header_write, Incremental_inputs_entry,
7181 Incremental_inputs_entry_write): Add a typedef with the data type.
7182
7c3afe08
RÁE
71832009-11-24 Rafael Avila de Espindola <espindola@google.com>
7184
7185 * incremental.cc (Incremental_inputs_header,
7186 Incremental_inputs_header_write, Incremental_inputs_entry,
7187 Incremental_inputs_entry_write): Update comment about which
7188 type has the filed descriptions.
7189
d204b6e9
DK
71902009-11-15 Doug Kwan <dougkwan@google.com>
7191
7192 * arm.cc (Target_arm::may_use_arm_nop): New method definition.
7193 (Arm_relocate_functions::arm_branch_common): Change method defintion
7194 in class definition to a method declaration and update list of formal
7195 parameters.
7196 (Arm_relocate_functions::plt32, Arm_relocate_functions::call,
7197 Arm_relocation_functions::jump24): Adjust call to
7198 Arm_relocate_functions::arm_branch_common. Update list of formal
7199 parameters.
7200 (Arm_relocate_functions::xpc25): New method definition.
7201 (Arm_relocate_functions::arm_branch_common): Move method defintion
7202 out from class definition. Use stubs for mode-switching and extending
7203 branch ranges.
7204 (Target_arm::Relocate::relocate): Handle weakly-undefined symbols
7205 specially. Change code to enable use of stubs in ARM branches.
7206
43d12afe
DK
72072009-11-10 Doug Kwan <dougkwan@google.com>
7208
7209 * arm.cc (Arm_relobj::do_relocate_sections): Remove options parameter
7210 in method declaration.
7211 (Target_arm::relocate_stub): New method declaration.
7212 (Target_arm::default_target): Change to return a pointer instead of
7213 a const reference.
7214 (Reloc_stub::stub_type_for_reloc): Adjust for the change in
7215 Target_arm::default_target.
7216 (Arm_Relobj::do_relocate_sections): Remove options paramater in
7217 method definition.
7218 (Target_arm::relocate_section): Adjust view.
7219 (Target_arm::relocate_stub): New method definition.
7220
ac33a407
DK
72212009-11-10 Doug Kwan <dougkwan@google.com>
7222
7223 * i386.cc (Target_i386::do_calls_non_split): Add a cast to avoid
7224 a format warning.
7225 * incremental.cc (open_incremental_binary): Initialized local
7226 variables to avoid warnings.
7227 * object.cc (make_elf_object): Ditto.
7228 * x86_64.cc (Target_x86_64::do_calls_non_split): Add a cast to avoid
7229 a format warning.
e1df38aa 7230
88ee28e9
L
7231009-11-09 H.J. Lu <hongjiu.lu@intel.com>
7232
7233 PR gold/10930
7234 * testsuite/plugin_test.c: Include "config.h".
7235
2daedcd6
DK
72362009-11-09 Doug Kwan <dougkwan@google.com>
7237
7238 * arm.cc (Target_arm::fake_relnum_for_stubs): New constant.
7239 (arm_symbol_value): Remove.
7240 (Arm_relocate_functions::arm_branch_common,
7241 Arm_relocate_functions::abs8, Arm_relocate_functions::thm_abs5,
7242 Arm_relocate_functions::abs12, Arm_relocate_functions::abs16,
7243 Arm_relocate_functions::abs32, Arm_relocate_functions::rel32,
7244 Arm_relocate_functions::thm_call, Arm_relocate_functions::plt32,
7245 Arm_relocate_functions::call, Arm_relocate_functions::jump24,
7246 Arm_relocate_functions::prel31, Arm_relocate_functions::mov_abs_nc,
7247 Arm_relocate_functions::movt_abs, Arm_relocate_functions::movw_abs_nc,
7248 Arm_relocate_functions::thm_mobw_abs_nc,
7249 Arm_relocate_functions::thm_mov_abs,
7250 Arm_relocate_functions::movw_prel_nc,
7251 Arm_relocate_functions::thm_movt_abs,
7252 Arm_relocate_functions::movt_prel,
7253 Arm_relocate_functions::thm_movw_prel_nc,
7254 Arm_relocate_functions::thm_movt_prel): Adjust callers of the above.
7255 (Target_arm::Relocate::relocate): Only decompose address into two
7256 parts if relocation type uses the thumb-bit and pass the actual
7257 bit instead of a flag indicating that the thumb-bit is used. Adjust
7258 calls to methods in Arm_relocate_functions for this change.
7259
1276bc89 72602009-11-08 Ian Lance Taylor <iant@google.com>
3e4afc80
ILT
7261
7262 PR 10925
7263 * reloc.cc: Instantiate
7264 Sized_relobj::initialize_input_to_output_maps and
7265 Sized_relobj:free_input_to_output_maps.
7266
e53ad1b5
ILT
72672009-11-06 Ian Lance Taylor <iant@google.com>
7268
7269 PR 10876
7270 * defstd.cc (in_segment): Set only_if_ref true for "end".
7271
eb44217c
DK
72722009-11-06 Doug Kwan <dougkwan@google.com>
7273
7274 * arm.cc (class Reloc_stub): Correct a comment.
7275 (Target_arm::Target_arm): Initialize arm_input_section_map_.
7276 (Target_arm::scan_section_for_stubs): New method declaration.
7277 (Target_arm::do_make_elf_object, Target_arm::do_make_output_section):
7278 Change methods from private to protected.
7279 (Target_arm::do_may_relax): New method definition.
7280 (Target_arm::do_relax, Target_arm::group_sections,
7281 Target_arm::scan_reloc_for_stub,
7282 Target_arm::scan_reloc_section_for_stubs): New method declarations.
7283 (Target_arm::arm_input_section_map_): New data member declaration.
7284 (Target_arm::scan_reloc_for_stub,
7285 Target_arm::scan_reloc_section_for_stubs,
7286 Target_arm::scan_section_for_stubs, Target_arm::group_sections,
7287 Target_arm::do_relax): New method definitions.
7288
5d329b7d
ILT
72892009-11-06 Mikolaj Zalewski <mikolaj@google.com>
7290
7291 * configure.ac: Check for (struct stat)::st_mtim
7292 * fileread.cc (File_read::get_mtime): Use st_mtim if available.
7293 * config.in: Regenerate.
7294 * configure: Regenerate.
7295
96a0d71b
ILT
72962009-11-05 Ian Lance Taylor <iant@google.com>
7297
7298 PR 10910
7299 * output.cc (Output_segment::add_output_section): Add missing
7300 return statement.
7301
594c8e5e
ILT
73022009-11-04 Ian Lance Taylor <iant@google.com>
7303
7304 PR 10880
7305 * object.h (class Object): Add is_needed and set_is_needed
7306 methods. Add is_needed_ field. Make bool fields into bitfields.
7307 * symtab.cc (Symbol_table::set_dynsym_indexes): If a symbol is
7308 defined in a dynamic object and referenced by a regular object,
7309 set is_needed for the dynamic object.
7310 * layout.cc (Layout::finish_dynamic_section): Don't add DT_NEEDED
7311 if the file is marked with as_needed and it is not needed.
7312
22b127cc
ILT
73132009-11-04 Ian Lance Taylor <iant@google.com>
7314
7315 PR 10887
7316 * arm.cc (Target_arm::do_finalize_sections): Don't add dynamic
7317 tags if data is discarded by linker script.
7318 * i386.cc (Target_i386::do_finalize_sections): Likewise.
7319 * powerpc.cc (Target_powerpc::do_finalize_sections): Likewise.
7320 * sparc.cc (Target_sparc::do_finalize_sections): Likewise.
7321 * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
7322
f5c870d2
ILT
73232009-11-04 Ian Lance Taylor <iant@google.com>
7324
7325 * layout.cc (Layout::get_output_section): Add is_interp and
7326 is_dynamic_linker_section parameters. Change all callers.
7327 (Layout::choose_output_section): Likewise.
7328 (Layout::make_output_section): Likewise.
7329 (Layout::add_output_section_data): Add is_dynamic_linker_section
7330 parameter. Change all callers.
7331 * layout.h (class Layout): Update declarations.
7332 * output.h (class Output_section): Add is_interp, set_is_interp,
7333 is_dynamic_linker_section, set_is_dynamic_linker_section methods.
7334 Add is_interp_, is_dynamic_linker_section_ fields. Change
7335 generate_code_fills_at_write_ to a bitfield.
7336 * output.cc (Output_section::Output_sections): Initialize new
7337 fields.
7338 (Output_segment::add_output_section): Add do_sort parameter.
7339 Change all callers.
7340
1ae4d23b
ILT
73412009-11-03 Ian Lance Taylor <iant@google.com>
7342
7343 PR 10860
7344 * options.h (class General_options): Add --warn-common.
7345 * resolve.cc (Symbol_table::resolve): Handle --warn-common when
7346 merging two common symbols.
7347 (Symbol_table::should_override): Handle --warn-common when merging
7348 a common symbol with a defined symbol. Use report_resolve_problem
7349 for multiple definitions.
7350 (Symbol_table::report_resolve_problem): New function.
7351 * symtab.h (class Symbol_table): Declare report_resolve_problem.
7352
55da9579
DK
73532009-11-03 Doug Kwan <dougkwan@google.com>
7354
7355 * arm.cc (Target_arm::Target_arm): Initialize stub_tables_ and
7356 stub_factory_.
7357 (Target_arm::stub_factory): New method definition.
7358 (Target_arm::new_arm_input_section,
7359 Target_arm::find_arm_input_section, Target_arm::new_stub_table,
7360 Target_arm::reloc_uses_thumb_bit): New method declarations.
e1df38aa 7361 (Target_arm::Stub_table_list, Target_arm::Arm_input_section_map):
55da9579
DK
7362 New type definitions.
7363 (Target_arm::stub_tables_, Target_arm::stub_factory_): New data
7364 member declarations.
7365 (Target_arm::reloc_uses_thumb_bit, Target_arm::new_arm_input_section,
7366 Target_arm::find_arm_input_section, Target_arm::new_stub_table):
7367 New method definitions.
7368
37a9ac43
ILT
73692009-11-03 Ian Lance Taylor <iant@google.com>
7370
7371 * options.h (class General_options): Add --warn_constructors.
7372
b3d6a3d4
ILT
73732009-11-03 Ian Lance Taylor <iant@google.com>
7374
7375 PR 10893
7376 * defstd.cc (in_section): Add entries for __rel_iplt_start,
7377 __rel_iplt_end, __rela_iplt_start, __rela_iplt_end, and __stack.
7378
934b01dd
ILT
73792009-11-03 Ian Lance Taylor <iant@google.com>
7380
7381 PR 10895
7382 * po/Make-in ($(srcdir)/$(PACKAGE).pot): Pass -C and
7383 --msgid-bugs-address.
7384 (install-pdf): New target.
7385 (install-data_yes): Look up one directory to find mkinstalldirs.
7386
03c1939b
L
73872009-11-03 H.J. Lu <hongjiu.lu@intel.com>
7388
7389 * po/Make-in (.po.gmo): Don't generate .gmo files in source
7390 tree.
7391
ebd95253
DK
73922009-10-30 Doug Kwan <dougkwan@google.com>
7393
7394 * arm.cc (Stub_addend_reader): Fix bug in previouls check-in.
7395
e9bbb538
DK
73962009-10-30 Doug Kwan <dougkwan@google.com>
7397
7398 * arm.cc (Stub_addend_reader): New struct template definition
7399 and partial specializations.
7400 (Stub_addend_reader::operator()): New method definition for a
7401 partially specialized template.
7402
d5b40221
DK
74032009-10-30 Doug Kwan <dougkwan@google.com>
7404
7405 * arm.cc (Arm_relobj::processor_specific_flags): New method
7406 definition.
7407 (Arm_relobj::do_read_symbols): New method declaration.
7408 (Arm_relobj::processor_specific_flags_): New data member declaration.
7409 (Arm_dynobj): New class definition.
7410 (Target_arm::do_finalize_sections): Add input_objects parameter.
7411 (Target_arm::do_adjust_elf_header): New method declaration.
7412 (Target_arm::are_eabi_versions_compatible,
7413 (Target_arm::merge_processor_specific_flags): New method declaration.
7414 (Target_arm::do_make_elf_object): New overloaded method definitions
7415 and declaration.
7416 (Arm_relobj::do_read_symbols): New method definition.
7417 (Arm_dynobj::do_read_symbols): Ditto.
7418 (Target_arm::do_finalize_sections): Add input_objects parameters.
7419 Merge processor-specific flags from all input objects.
7420 (Target_arm::are_eabi_versions_compatible,
7421 Target_arm::merge_processor_specific_flags,
7422 Target_arm::do_adjust_elf_header, Target_arm::do_make_elf_object):
7423 New method definitions.
7424 * i386.cc (Target_i386::do_finalize_sections): Add unnamed
7425 Input_objects pointer type parameter.
7426 * layout.cc (Layout::finalize): Pass input objects to target's.
7427 finalize_sections function.
7428 * output.cc (Output_file_header::do_sized_write): Set ELF file
7429 header's processor-specific flags.
7430 * powerpc.cc (Target_powerpc::do_finalize_sections): Add unnamed
7431 Input_objects pointer type parameter.
7432 * sparc.cc (Target_sparc::do_finalize_sections): Same.
7433 * target.h (Input_objects): New forward class declaration.
7434 (Target::processor_specific_flags,
7435 Target::are_processor_specific_flags_sect): New method definitions.
7436 (Target::finalize_sections): Add input_objects parameter.
7437 (Target::Target): Initialize processor_specific_flags_ and
7438 are_processor_specific_flags_set_.
7439 (Target::do_finalize_sections): Add unnamed Input_objects pointer type
7440 parameter.
7441 (Target::set_processor_specific_flags): New method definition.
7442 (Target::processor_specific_flags_,
7443 Target::are_processor_specific_flags_set_): New data member
7444 declarations.
7445 * x86_64.cc (Target_x86_64::do_finalize_sections): Add unnamed
7446 Input_objects pointer type parameter.
7447
ebabffbd
DK
74482009-10-30 Doug Kwan <dougkwan@google.com>
7449
7450 * arm.cc: Use Arm_address instead of elfcpp::Elf_types<32>::Elf_Addr.
7451
ad0f2072
ILT
74522009-10-28 Ian Lance Taylor <iant@google.com>
7453
7454 * object.h (class Relobj): Drop options parameter from
7455 gc_process_relocs, scan_relocs, relocate, do_gc_process_relocs,
7456 do_scan_relocs, do_relocate. Change all callers.
7457 (class Sized_relobj): Drop options parameters from
7458 do_gc_process_relocs, do_scan_relocs, do_relocate,
7459 do_relocate_sections, relocate_sections, emit_relocs_scan,
7460 emit_relocs_scan_reltype. Change all callers.
7461 (struct Relocate_info): Remove options field and all references to
7462 it.
7463 * reloc.h (class Read_relocs): Remove options constructor
7464 parameter and options_ field. Change all callers.
7465 (class Gc_process_relocs, class Scan_relocs): Likewise.
7466 (class Relocate_task): Likewise.
7467 * target-reloc.h (scan_relocs): Remove options parameter. Change
7468 all callers.
7469 (scan_relocatable_relocs): Likewise.
7470 * target.h (class Sized_target): Remove options parameter from
7471 gc_process_relocs, scan_relocs, scan_relocatable_relocs. Change
7472 all callers.
7473 * gc.h (gc_process_relocs): Remove options parameter. Change all
7474 callers.
7475 * arm.cc: Update functions to remove options parameters.
7476 * i386.cc: Likewise.
7477 * powerpc.cc: Likewise.
7478 * sparc.cc: Likewise.
7479 * x86_64.cc: Likewise.
7480 * testsuite/testfile.cc: Likewise.
7481
8ffa3667
DK
74822009-10-28 Doug Kwan <dougkwan@google.com>
7483
7484 * arm.cc (Arm_relobj): New class definition.
e1df38aa 7485 (Arm_relobj::scan_sections_for_stubs,
8ffa3667
DK
7486 Arm_relobj::do_count_local_symbols, Arm_relobj::do_relocate_sections):
7487 New method definitions.
7488
40f36857
CC
74892009-10-28 Cary Coutant <ccoutant@google.com>
7490
7491 * plugin.h (Plugin::Plugin): Initialize cleanup_done_.
7492 (Plugin::cleanup_done_): New member.
7493 (Plugin_manager::Plugin_manager): Remove cleanup_done_.
7494 (Plugin_manager::cleanup_done_): Remove.
7495 (Plugin_manager::add_input_file): Edit error message.
7496 * plugin.cc (Plugin::cleanup): Test and set cleanup_done_.
7497 (Plugin_manager::cleanup): Remove use of cleanup_done_.
7498
2c849493
ILT
74992009-10-27 Mikolaj Zalewski <mikolajz@google.com>
7500
7501 * fileread.cc: (File_read::View::~View): Use the new
7502 data_ownership_ filed.
7503 (File_read::~File_read): Dispose the new whole_file_view_.
7504 (File_read::open): Mmap the whole file if needed.
7505 (File_read::open): Use whole_file_view_ instead of contents_.
7506 (File_read::find_view): Use whole_file_view_ if applicable.
7507 (File_read::do_read): Use whole_file_view_ instead of contents_.
7508 (File_read::make_view): Use whole_file_view_ instead of contents_,
7509 update File_read::View::View call.
7510 (File_read::find_or_make_view): Update File_read::View::View
7511 call.
7512 * fileread.h: (File_read::File_read): Initialize whole_file_view_,
7513 remove contents_
7514 (File_read::View::Data_ownership): New enum.
7515 (File_read::View::View): Replace bool mapped_ with Data_ownership
7516 argument.
7517 (File_read::View::mapped_): Remove (replaced by data_ownership_).
7518 (File_read::View::data_ownership_): New field.
7519 (File_read::contents_): Remove (replaced by whole_file_view_).
7520 (File_read::whole_file_view_): New field.
7521 * options.h (class General_options): Add --keep-files-mapped.
7522
24998053
CC
75232009-10-27 Cary Coutant <ccoutant@google.com>
7524
7525 * symtab.cc (add_from_pluginobj): Pass correct value for is_ordinary.
7526 * testsuite/Makefile.am (plugin_test_5): New test case.
7527 * testsuite/Makefile.in: Regenerate.
7528
72adc4fa
DK
75292009-10-25 Doug Kwan <dougkwan@google.com>
7530
7531 * object.h (Sized_relobj::View_size, Sized_relobj::Views): Change
7532 from private to protected to allow access by child class.
7533 (Sized_relobj::do_relocate_sections): New method declaration.
7534 (Sized_relobj::relocate_sections): Virtualize.
e1df38aa 7535 * reloc.cc (Sized_relobj::do_relocate_sections): Rename from
72adc4fa
DK
7536 Sized_relobj::relocate_sections. Instantiate template explicitly
7537 for different target sizes and endianity.
7538
07f508a2
DK
75392009-10-24 Doug Kwan <dougkwan@google.com>
7540
7541 * arm.cc (Arm_output_section, Arm_relobj): Forward class declarations.
7542 (Arm_input_section::as_arm_input_section): New method.
7543 (Arm_output_section): New class definition.
7544 (Arm_output_section::create_stub_group,
7545 Arm_output_section::group_sections): New method definitions.
7546
10ad9fe5
DK
75472009-10-22 Doug Kwan <dougkwan@google.com>
7548
7549 * arm.cc (Arm_input_section): New class definition.
7550 (Arm_input_section::init, Arm_input_section:do_write,
7551 Arm_input_section::set_final_data_size,
7552 Arm_input_section::do_reset_address_and_file_offset): New method
7553 definitions.
7554
56ee5e00
DK
75552009-10-21 Doug Kwan <dougkwan@google.com>
7556
7557 * arm.cc (Stub_table, Arm_input_section): New forward class
7558 declarations.
7559 (Stub_table): New class defintion.
7560 (Stub_table::add_reloc_stub, Stub_table::relocate_stubs
7561 Stub_table::do_reset_address_and_file_offset, Stub_table::do_write):
7562 New method definition.
7563
b569affa
DK
75642009-10-21 Doug Kwan <dougkwan@google.com>
7565
7566 * arm.cc: Update copyright comments.
7567 (Target_arm): New forward class template declaration.
7568 (Arm_address): New type.
7569 (ARM_MAX_FWD_BRANCH_OFFSET, ARM_MAX_BWD_BRANCH_OFFSET,
7570 THM_MAX_FWD_BRANCH_OFFSET, THM_MAX_BWD_BRANCH_OFFSET,
7571 THM2_MAX_FWD_BRANCH_OFFSET, THM2_MAX_BWD_BRANCH_OFFSET): New
7572 constants.
7573 (Insn_template): Same.
7574 (DEF_STUBS): New macro.
7575 (Stub_type): New enum type.
7576 (Stub_template): New class definition.
7577 (Stub): Same.
7578 (Reloc_stub): Same.
7579 (Stub_factory): Same.
7580 (Target_arm::Target_arm): Initialize may_use_blx_ and
7581 should_force_pic_veneer_.
7582 (Target_arm::may_use_blx, Target_arm::set_may_use_blx,
7583 Target_arm::should_force_pic_veneer,
7584 Target_arm::set_should_force_pic_veneer, Target_arm::using_thumb2,
7585 Target_arm::using_thumb_only, Target_arm:;default_target): New
7586 method defintions.
7587 (Target_arm::may_use_blx_, Target_arm::should_force_pic_veneer_):
7588 New data member declarations.
7589 (Insn_template::size, Insn_template::alignment): New method defintions.
7590 (Stub_template::Stub_template): New method definition.
7591 (Reloc_stub::Key::name, Reloc_stub::stub_type_for_reloc,
7592 Reloc_stub::do_fixed_endian_write, Reloc_stub::do_write): Same.
7593 (Stub_factory::Stub_factory): New method definition.
7594 * gold.h (string_hash): New template.
7595 * output.h (Input_section_specifier::hash_value): Use
7596 gold::string_hash.
7597 (Input_section_specifier::string_hash): Remove.
7598 * stringpool.cc (Stringpool_template::string_hash): Use
7599 gold::string_hash.
7600
6c172549
DK
76012009-10-20 Doug Kwan <dougkwan@google.com>
7602
7603 * object.cc (Sized_relobj::do_finalize_local_symbols): Handle section
7604 symbols of relaxed input sections.
7605 * output.h (Output_section::find_relaxed_input_section): Make
7606 method public.
7607
c5617f2f
DK
76082009-10-16 Doug Kwan <dougkwan@google.com>
7609
7610 * dynobj.cc (Versions::Versions): Initialize version_script_.
7611 Only insert base version symbol definition for a shared object
7612 if version script defines any version versions.
7613 (Versions::define_base_version): New method definition.
7614 (Versions::add_def): Check that base version is not needed.
7615 (Versions::add_need): Define base version lazily.
7616 * dynobj.h (Versions::define_base_version): New method declaration.
7617 (Versions::needs_base_version_): New data member declaration.
7618 * testsuite/Makefile.am (check_SCRIPTS): Add no_version_test.sh
7619 (check_DATA): Add no_version_test.stdout.
7620 (libno_version_test.so, no_version_test.o no_version_test.stdout):
7621 New make rules.
7622 * testsuite/Makefile.in: Regenerate.
7623 * testsuite/no_version_test.c: New file.
7624 * testsuite/no_version_test.sh: Ditto.
7625
3c12dcdb
DK
76262009-10-16 Doug Kwan <dougkwan@google.com>
7627
7628 * expression.cc (class Segment_start_expression): New class definition.
7629 (Segment_start_expression::value): New method definition.
7630 (script_exp_function_segment_start): Return a new
7631 Segment_start_expression.
7632 * gold/script-c.h (script_saw_segment_start_expression): New function
7633 prototype.
7634 * script-sections.cc (Script_sections::Script_sections): Initialize
7635 SAW_SEGMENT_START_EXPRESSION_ to false.
7636 (Script_sections::set_section_addresses): Use -Ttext, -Tdata
7637 and -Tbbs options to specify section addresses if given in
7638 command line and no SEGMENT_START expression is seen in a script.
7639 * script-sections.h (Script_sections::saw_segment_start_expression,
7640 Script_sections::set_saw_segment_start_expression): New method
7641 definition.
7642 (Script_sections::saw_segment_start_expression_): New data member
7643 declaration.
7644 * script.cc (script_saw_segment_start_expression): New function.
7645 * yyscript.y (SEGMENT_START): Call script_saw_segment_start_expression.
7646 * testsuite/Makefile.am (check_SCRIPTS): Add script_test_6.sh,
7647 script_test_7.sh and script_test_8.sh.
7648 (check_DATA): Add script_test_6.stdout, script_test_7.stdout and
7649 script_test_8.stdout.
7650 (MOSTLYCLEANFILES): Add script_test_6, script_test_7 and script_test_8.
7651 (script_test_6, script_test_6.stdout, script_test_7,
7652 script_test_7.stdout, script_test_8, script_test_8.stdout): New rules.
7653 * Makefile.in: Regenerate.
7654 * testsuite/script_test_6.sh: New file.
7655 * testsuite/script_test_6.t: Same.
7656 * testsuite/script_test_7.sh: Same.
7657 * testsuite/script_test_7.t: Same.
7658 * testsuite/script_test_8.sh: Same.
7659
64b1ae37
DK
76602009-10-16 Doug Kwan <dougkwan@google.com>
7661
7662 * output.cc (Output_segment::set_section_list_address): Cast
7663 expressions to unsigned long long type to avoid format warnings.
7664
661be1e2
ILT
76652009-10-15 Ian Lance Taylor <iant@google.com>
7666
12edd763 7667 * script.cc (Script_options::add_symbol_assignment): Always add a
b3d6a3d4 7668 dot assignment to script_sections_.
12edd763
ILT
7669 * script-sections.cc (Script_sections::add_dot_assignment):
7670 Initialize if necessary.
7671
68b6574b
ILT
7672 * layout.cc (Layout::relaxation_loop_body): Don't crash if we see
7673 program headers with no load segment if there is a linker script.
7674
661be1e2
ILT
7675 * layout.cc (Layout::set_segment_offsets): Align the file offset
7676 to the segment aligment for -N or -n with no load segment.
7677 * output.cc (Output_segment::add_output_section): Don't crash if
7678 the first section is a TLS section.
7679 (Output_segment::set_section_list_addresses): Print an error
7680 message if the address moves backward in a linker script.
7681 * script-sections.cc
7682 (Output_section_element_input::set_section_addresses): Don't
7683 increase *dot_value for a SHF_TLS/SHT_NOBITS section.
7684 (Orphan_output_section::set_section_addresses): Likewise.
7685
f15f61a7
DK
76862009-10-15 Doug Kwan <dougkwan@google.com>
7687
7688 * layout.cc (Layout::finish_dynamic_section): Generate tags
7689 DT_FINI_ARRAY, DT_FINI_ARRAYSZ, DT_INIT_ARRAY, DT_INIT_ARRAYSZ,
7690 DT_PREINIT_ARRAY, DT_PREINIT_ARRAYSZ as needed. If -Bsymbolic is
7691 used, add DT_SYMBOLIC and set DF_SYMBOLIC in DT_FLAGS.
7692
82bb573a
ILT
76932009-10-14 Ian Lance Taylor <iant@google.com>
7694
7695 * object.h (class Relocate_info): Add reloc_shdr and data_shdr
7696 fields.
7697 * object.cc (Sized_relobj::relocate_sections): Set reloc_shdr and
7698 data_shdr fields of relinfo.
7699 * i386.cc (class Target_i386::Relocate): Remove ldo_addrs_ field.
7700 (Target_i386::Relocate::relocate_tls): Don't call fix_up_ldo. For
7701 R_386_TLS_LDO_32, adjust based on section flags.
7702 (Target_i386::Relocate::fix_up_ldo): Remove.
7703
374ad285
ILT
77042009-10-13 Ian Lance Taylor <iant@google.com>
7705
7706 Add support for -pie.
7707 * options.h (class General_options): Add -pie and
7708 --pic-executable.
7709 (General_options::output_is_position_independent): Test -pie.
7710 (General_options::output_is_executable): Return true if not shared
7711 and not relocatable.
7712 (General_options::output_is_pie): Remove.
7713 * options.cc (General_options::finalize): Reject incompatible uses
7714 of -pie.
7715 * gold.cc (queue_middle_tasks): A -pie link is not static.
7716 * symtab.h (Symbol::needs_plt_entry): Return false if -pie.
7717 * symtab.cc (Symbol::final_value_is_known): Return false if
7718 output_is_position_independent.
7719 * layout.cc (Layout::set_segment_offsets): Start at address 0 if
7720 output_is_position_independent.
7721 * output.cc (Output_file_header::do_sized_write): Use ET_DYN if
7722 output_is_position_independent.
7723 * i386.cc (Output_data_plt_i386::do_write): Use the PIC PLT if
7724 output_is_position_independent.
7725 * testsuite/Makefile.am (check_PROGRAMS): Add basic_pie_test and
7726 two_file_pie_test.
7727 (basic_pie_test.o, basic_pie_test): New targets.
7728 (two_file_test_1_pie.o, two_file_test_1b_pie.o): New targets.
7729 (two_file_test_2_pie.o, two_file_test_main_pie.o): New targets.
7730 (two_file_pie_test): New target.
7731 * testsuite/Makefile.in: Rebuild.
7732 * README: Remove note saying that -pie is not supported.
7733
c6585162
ILT
77342009-10-13 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
7735
7736 * options.h (class General_options): Add -init and -fini.
7737 * layout.cc (Layout::finish_dynamic_section): Emit
7738 given init and fini functions.
7739
032ce4e9
ST
77402009-10-13 Sriraman Tallam <tmsriram@google.com>
7741
7742 * gc.h (gc_process_relocs): Check if icf is enabled using new
7743 function.
7744 * gold.cc (queue_initial_tasks): Likewise.
7745 (queue_middle_tasks): Likewise.
7746 * object.cc (do_layout): Likewise.
7747 * symtab.cc (is_section_folded): Likewise.
7748 * main.cc (main): Likewise.
7749 * reloc.cc (Read_relocs::run): Likewise.
7750 (Sized_relobj::do_scan_relocs): Likewise.
7751 * icf.cc (is_function_ctor_or_dtor): New function.
7752 (Icf::find_identical_sections): Check if function is ctor or dtor when
7753 safe icf is chosen.
7754 * options.h (General_options::icf): Change option to be an enum.
7755 (Icf_status): New enum.
7756 (icf_enabled): New method.
7757 (icf_safe_folding): New method.
7758 (set_icf_status): New method.
7759 (icf_status_): New variable.
7760 * (options.cc) (General_options::finalize): Set icf_status_.
7761 * testsuite/Makefile.am: Add commands to build icf_safe_test. Modify
7762 icf_test and icf_keep_unique_test to use the --icf enum flag.
7763 * testsuite/icf_safe_test.sh: New file.
e1df38aa 7764 * testsuite/icf_safe_test.cc: New file.
032ce4e9 7765
f345227a
ST
77662009-10-12 Sriraman Tallam <tmsriram@google.com>
7767
7768 * symtab.h: Check for GOLD_SYMTAB_H before header includes. Remove
7769 includes to gc.h and icf.h.
7770 * arm.cc: Include gc.h.
7771 * gold.cc: Likewise.
7772 * i386.cc: Likewise.
7773 * powerpc.cc: Likewise.
7774 * sparc.cc: Likewise.
7775 * x86_64.cc: Likewise.
7776 * gc.h: Include icf.h.
7777
1c7814ed
ILT
77782009-10-11 Ian Lance Taylor <iant@google.com>
7779
7780 * plugin.cc: Include "gold.h" before other header files.
7781
ae3b5189
CD
77822009-10-10 Chris Demetriou <cgd@google.com>
7783
7784 * options.h (Input_file_argument::Input_file_type): New enum.
7785 (Input_file_argument::is_lib_): Replace with...
7786 (Input_file_argument::type_): New member.
7787 (Input_file_argument::Input_file_argument): Take Input_file_type
7788 'type' rather than boolean 'is_lib' as second argument.
7789 (Input_file_argument::is_lib): Use type_.
7790 (Input_file_argument::is_searched_file): New function.
7791 (Input_file_argument::may_need_search): Handle is_searched_file.
7792 * options.cc (General_options::parse_library): Support -l:filename.
7793 (General_options::parse_just_symbols): Update for Input_file_argument
7794 changes.
7795 (Command_line::process): Likewise.
7796 * archive.cc (Archive::get_file_and_offset): Likewise.
7797 * plugin.cc (Plugin_manager::release_input_file): Likewise.
7798 * script.cc (read_script_file, script_add_file): Likewise.
7799 * fileread.cc (Input_file::Input_file): Likewise.
7800 (Input_file::will_search_for): Handle is_searched_file.
7801 (Input_file::open): Likewise.
7802 * readsyms.cc (Read_symbols::get_name): Likewise.
7803 * testsuite/Makefile.am (searched_file_test): New test.
7804 * testsuite/Makefile.in: Regenerate.
7805 * testsuite/searched_file_test.cc: New file.
7806 * testsuite/searched_file_test_lib.cc: New file.
7807
f3048a1d
ILT
78082009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
7809 Ian Lance Taylor <iant@google.com>
7810
7811 * descriptor.cc: Include <cstdio> and "binary-io.h".
7812 (Descriptors::open): Open the files in binary mode always.
7813 * script.cc (Lex::get_token): Treat \r as whitespace.
7814
d4780e57
ILT
78152009-10-09 Ian Lance Taylor <iant@google.com>
7816
7817 * testsuite/retain_symbols_file_test.sh: Don't test for __tcf_0.
7818
d9a893b8
ILT
78192009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
7820 Ian Lance Taylor <iant@google.com>
7821
7822 * configure.ac: Check for readv function also.
7823 * fileread.cc (readv): Define if not HAVE_READV.
7824 * fileread.h (File_read:: max_readv_entries): Set to 1 if readv
7825 does not exist.
7826 * config.in: Regenerate.
7827 * configure: Regenerate.
7828
c0a62865
DK
78292009-10-09 Doug Kwan <dougkwan@google.com>
7830
7831 * layout.cc (Layout::make_output_section): Call target hook to make
7832 ordinary output section.
7833 (Layout::finalize): Adjust parameter list of call the
7834 Target::may_relax().
7835 * layout.h (class Layout::section_list): New method.
7836 * merge.h (Output_merge_base::entsize): Change visibility to public.
7837 (Output_merge_base::is_string, Output_merge_base::do_is_string):
7838 New methods.
7839 (Output_merge_string::do_is_string): New method.
7840 * object.cc (Sized_relobj::do_setup): renamed from
7841 Sized_relobj::set_up.
7842 * object.h (Sized_relobj::adjust_shndx,
7843 Sized_relobj::initializ_input_to_output_maps,
7844 Sized_relobj::free_input_to_output_maps): Change visibilities to
7845 protected.
7846 (Sized_relobj::setup): Virtualize.
7847 (Sized_relobj::do_setup): New method declaration.
7848 (Sized_relobj::invalidate_section_offset,
7849 Sized_relobj::do_invalidate_section_offset): New method decfinitions.
7850 (Sized_relobj::elf_file, Sized_relobj::local_values): New methods.
7851 * options.cc (parse_int): New function.
7852 * options.h (parse_int): New declaration.
7853 (DEFINE_int): New macro.
7854 (stub_group_size): New option.
7855 * output.cc (Output_section::Output_section): Initialize memebers
7856 merge_section_map_, merge_section_by_properties_map_,
7857 relaxed_input_section_map_, is_relaxed_input_section_map_valid_.
7858 (Output_section::add_input_section): Handled deferred code-fill
7859 generation and remove an old comment.
7860 (Output_section::add_relaxed_input_section): New method definition.
7861 (Output_section::add_merge_input_section): Use merge section by
7862 properties map to speed to search. Update merge section maps
7863 as appropriate.
7864 (Output_section::build_relaxation_map): New method definition.
7865 (Output_section::convert_input_sections_in_list_to_relaxed_sections):
7866 Same.
7867 (Output_section::relax_input_section): Renamed to
7868 Output_section::convert_input_sections_to_relaxed_sections and change
7869 interface to take a vector of pointers to relaxed sections.
7870 (Output_section::find_merge_section,
7871 Output_section::find_relaxed_input_section): New method definitions.
7872 (Output_section::is_input_address_mapped,
7873 Output_section::output_offset, Output_section::output_address):
7874 Use output section data maps to speed up searching.
7875 (Output_section::find_starting_output_address): Add comments.
7876 (Output_section::do_write,
7877 Output_section::write_to_postprocessing_buffer): Do code-fill
7878 generation as appropriate.
7879 (Output_section::get_input_sections): Invalidate relaxed input section
7880 map.
7881 (Output_section::restore_states): Adjust type of checkpoint .
7882 Invalidate relaxed input section map.
7883 * output.h (Output_merge_base): New class declaration.
7884 (Input_section_specifier): New class defintion.
7885 (class Output_relaxed_input_section) Change base class to
7886 Output_section_data_build.
7887 (Output_relaxed_input_section::Output_relaxed_input_section): Adjust
7888 base class initializer.
7889 (Output_section::add_relaxed_input_section): New method declaration.
7890 (Output_section::Input_section): Change visibility to protected.
7891 (Output_section::Input_section::relobj,
7892 Output_section::Input_section::shndx): Handle relaxed input sections.
7893 Output_section::input_sections) Change visibility to protected. Also
7894 define overload to return a non-const pointer.
7895 (Output_section::Merge_section_properties): New class defintion.
7896 (Output_section::Merge_section_by_properties_map,
7897 Output_section::Output_section_data_by_input_section_map,
7898 Output_section::Relaxation_map): New types.
7899 (Output_section::relax_input_section): Rename method to
7900 Output_section::convert_input_sections_to_relaxed_sections and change
7901 interface to take a vector of relaxed section pointers.
7902 (Output_section::find_merge_section,
7903 Output_section::find_relaxed_input_section,
7904 Output_section::build_relaxation_map,
7905 Output_section::convert_input_sections_in_list_to_relaxed_sections):
7906 New method declarations.
7907 (Output_section::merge_section_map_
7908 Output_section::merge_section_by_properties_map_,
7909 Output_section::relaxed_input_section_map_,
7910 Output_section::is_relaxed_input_section_map_valid_,
7911 Output_section::generate_code_fills_at_write_): New data members.
7912 * script-sections.cc
7913 (Output_section_element_input::set_section_addresses): Call
7914 current_data_size and addralign methods of relaxed input sections.
7915 (Orphan_output_section::set_section_addresses): Call current_data_size
7916 and addralign methods of relaxed input sections.
7917 * symtab.cc (Symbol_table::compute_final_value): Extract template
7918 from the body of Symbol_table::sized_finalize_symbol.
7919 (Symbol_table::sized_finalized_symbol): Call
7920 Symbol_table::compute_final_value.
7921 * symtab.h (Symbol_table::Compute_final_value_status): New enum type.
7922 (Symbol_table::compute_final_value): New templated method declaration.
7923 * target.cc (Target::do_make_output_section): New method defintion.
7924 * target.h (Target::make_output_section): New method declaration.
7925 (Target::relax): Add more parameters for input objects, symbol table
7926 and layout. Adjust call to do_relax.
7927 (Target::do_make_output_section): New method declaration.
7928 (Target::do_relax): Add parameters for input objects, symbol table
7929 and layout.
7930
d446d6c4
ILT
79312009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
7932
7933 * pread.c: Include stdio.h.
7934
bc06c745
ILT
79352009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
7936
7937 * plugin.cc: Don't include dlfcn.h when ENABLE_PLUGINS is not
7938 defined.
7939
75aea3d0
ILT
79402009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
7941
7942 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
7943 Change read_shndx type to unsigned int.
7944 (Sized_dwarf_line_info::read_lines): Change shndx type to unsigned
7945 int.
7946 (Sized_dwarf_line_info::read_line_mappings): Likewise.
7947 * dwarf_reader.h (Sized_dwarf_line_info::Sized_dwarf_line_info):
7948 Change read_shndx type to unsigned int.
7949 (Sized_dwarf_line_info::read_lines): Change shndx type to unsigned
7950 int.
7951 (Sized_dwarf_line_info::read_line_mappings): Likewise.
7952 * layout.cc (Layout::create_symtab_sections): Cast the result of
7953 local_symcount * symsize to off_t in the gold_assert.
7954
be8fcb75
ILT
79552009-10-09 Viktor Kutuzov <vkutuzov@accesssoftek.com>
7956
7957 * arm.cc (Target_arm::relocate::reloc_is_non_pic): Return true for
7958 R_ARM_THM_ABS5, R_ARM_ABS8, R_ARM_ABS12, R_ARM_ABS16,
7959 R_ARM_BASE_ABS.
7960 (Arm_relocate_functions::abs8): Remove has_thumb_bit parameter.
7961 (Arm_relocate_functions::thm_abs5): New function.
7962 (Arm_relocate_functions::abs12): New function.
7963 (Arm_relocate_functions::abs16): New function.
7964 (Arm_relocate_functions::base_abs): New function.
7965 (Scan::check_non_pic): Handle R_ARM_ABS32_NOI.
7966 (Scan::local): Remove special handling of R_ARM_ABS8. Handle
7967 R_ARM_ABS32_NOI, R_ARM_THM_ABS5, R_ARM_ABS12, R_ARM_ABS16, and
7968 R_ARM_BASE_ABS.
7969 (Scan::global): Likewise.
7970 (Relocate::relocate): Handle R_ARM_ABS12, R_ARM_ABS16,
7971 R_ARM_ABS32_NOI, R_ARM_THM_ABS5, and R_ARM_BASE_ABS.
7972 (Relocatable_size_for_reloc::get_size_for_reloc): Handle
7973 R_ARM_ABS16, R_ARM_THM_ABS5, R_ARM_ABS32_NOI, R_ARM_ABS12, and
7974 R_ARM_BASE_ABS.
7975
c2a122b6
ILT
79762009-10-09 Viktor Kutuzov <vkutuzov@accesssoftek.com>
7977
7978 * arm.cc (Arm_relocate_functions::movw_prel_nc): New function.
7979 (Arm_relocate_functions::movt_prel): New function.
7980 (Arm_relocate_functions::thm_movw_prel_nc): New function.
7981 (Arm_relocate_functions::thm_movt_prel): New function.
7982 (Scan::local): Handle R_ARM_MOVW_PREL_NC, R_ARM_MOVT_PREL,
7983 R_ARM_THM_MOVW_PREL_NC, and R_ARM_THM_MOVT_PREL.
7984 (Scan::global, Relocate::relocate): Likewise.
7985 (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
7986
c4aa1e2d
ILT
79872009-10-09 Mikolaj Zalewski <mikolajz@google.com>
7988
7989 * gold.cc: (queue_initial_tasks): Pass incremental_inputs to
7990 Incremental_checker.
7991 * incremental.cc: (INCREMENTAL_LINK_VERSION): Change type to
7992 unsigned int.
7993 (class Incremental_inputs_header): New class.
7994 (Incremental_inputs_header_writer): Edit comment.
7995 (Incremental_inputs_entry): New class.
7996 (Incremental_inputs_entry_writer): Edit comment.
7997 (Sized_incremental_binary::do_find_incremental_inputs_section):
7998 Add *strtab_shndx parameter, fill it.
7999 (Sized_incremental_binary::do_check_inputs): New method.
8000 (Incremental_checker::can_incrementally_link_output_file): Use
8001 Sized_incremental_binary::check_inputs.
8002 (Incremental_inputs::report_command_line): Save command line in
8003 command_line_.
8004 * incremental.h:
8005 (Incremental_binary::find_incremental_inputs_section): New
8006 method.
8007 (Incremental_binary::do_find_incremental_inputs_section): Add
8008 strtab_shndx parameter.
8009 (Incremental_binary::do_check_inputs): New pure virtual method.
8010 (Sized_incremental_binary::do_check_inputs): Declare.
8011 (Incremental_checker::Incremental_checker): Add incremental_inputs
8012 parameter, use it to initialize incremental_inputs_.
8013 (Incremental_checker::incremental_inputs_): New field.
8014 (Incremental_checker::command_line): New method.
8015 (Incremental_checker::inputs): New method.
8016 (Incremental_checker::command_line_): New field.
8017
c549a694
ILT
80182009-10-09 Mikolaj Zalewski <mikolajz@google.com>
8019
8020 * incremental.cc: Include <cstdarg> and "target-select.h".
8021 (vexplain_no_incremental): New function.
8022 (explain_no_incremental): New function.
8023 (Incremental_binary::error): New method.
8024 (Sized_incremental_binary::do_find_incremental_inputs_section): New
8025 method.
8026 (make_sized_incremental_binary): New function.
8027 (open_incremental_binary): New function.
8028 (can_incrementally_link_file): Add checks if output is ELF and has
8029 inputs section.
8030 * incremental.h: Include "elfcpp_file.h" and "output.h".
8031 (Incremental_binary): New class.
8032 (Sized_incremental_binary): New class.
8033 (open_incremental_binary): Declare.
8034 * object.cc (is_elf_object): Use
8035 elfcpp::Elf_recognizer::is_elf_file.
8036 (make_elf_object): Use elfcpp::Elf_recognizer::is_valid_header.
8037 * output.h (Output_file::filesize): New method.
8038
fd3c5f0b
ILT
80392009-10-07 Viktor Kutuzov <vkutuzov@accesssoftek.com>
8040
8041 * arm.cc (Arm_relocate_functions::extract_arm_movw_movt_addend):
8042 New function.
8043 (Arm_relocate_functions::insert_val_arm_movw_movt): New function.
8044 (Arm_relocate_functions::extract_thumb_movw_movt_addend): New
8045 function.
8046 (Arm_relocate_functions::insert_val_thumb_movw_movt): New
8047 function.
8048 (Arm_relocate_functions::movw_abs_nc): New function.
8049 (Arm_relocate_functions::movt_abs): New function.
8050 (Arm_relocate_functions::thm_movw_abs_nc): New function.
8051 (Arm_relocate_functions::thm_movt_abs): New function.
8052 (Scan::local): Handle R_ARM_MOVW_ABS_NC, R_ARM_MOVT_ABS,
8053 R_ARM_THM_MOVW_ABS_NC, R_ARM_THM_MOVT_ABS.
8054 (Scan::global): Likewise.
8055 (Relocate::relocate): Likewise.
8056 (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
8057
7f5309a5
ILT
80582009-10-07 Viktor Kutuzov <vkutuzov@accesssoftek.com>
8059
8060 * arm.cc (Arm_relocate_functions::got_prel) New function.
8061 (Scan::local, Scan::global): Handle R_ARM_GOT_PREL.
8062 (Relocate::relocate): Likewise.
8063 (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
8064
364c7fa5
ILT
80652009-10-06 Ian Lance Taylor <iant@google.com>
8066
8067 * options.h (class General_options): Define
8068 split_stack_adjust_size parameter.
8069 * object.h (class Object): Add uses_split_stack_ and
8070 has_no_split_stack_ fields. Add uses_split_stack and
8071 has_no_split_stack accessor functions. Declare
8072 handle_split_stack_section.
8073 (class Reloc_symbol_changes): Define.
8074 (class Sized_relobj): Define Function_offsets. Declare
8075 split_stack_adjust, split_stack_adjust_reltype, and
8076 find_functions.
8077 * object.cc (Object::handle_split_stack_section): New function.
8078 (Sized_relobj::do_layout): Call handle_split_stack_section.
8079 * dynobj.cc (Sized_dynobj::do_layout): Call
8080 handle_split_stack_section.
8081 * reloc.cc (Sized_relobj::relocate_sections): Call
8082 split_stack_adjust for executable sections in split_stack
8083 objects. Pass reloc_map to relocate_section.
8084 (Sized_relobj::split_stack_adjust): New function.
8085 (Sized_relobj::split_stack_adjust_reltype): New function.
8086 (Sized_relobj::find_functions): New function.
8087 * target-reloc.h: Include "object.h".
8088 (relocate_section): Add reloc_symbol_changes parameter. Change
8089 all callers.
8090 * target.h (class Target): Add calls_non_split method. Declare
8091 do_calls_non_split virtual method. Declare match_view and
8092 set_view_to_nop.
8093 * target.cc: Include "elfcpp.h".
8094 (Target::do_calls_non_split): New function.
8095 (Target::match_view): New function.
8096 (Target::set_view_to_nop): New function.
8097 * gold.cc (queue_middle_tasks): Give an error if mixing
8098 split-stack and non-split-stack objects with -r.
8099 * i386.cc (Target_i386::relocate_section): Add
8100 reloc_symbol_changes parameter.
8101 (Target_i386::do_calls_non_split): New function.
8102 * x86_64.cc (Target_x86_64::relocate_section): Add
8103 reloc_symbol_changes parameter.
8104 (Target_x86_64::do_calls_non_split): New function.
8105 * arm.cc (Target_arm::relocate_section): Add reloc_symbol_changes
8106 parameter.
8107 * powerpc.cc (Target_powerpc::relocate_section): Add
8108 reloc_symbol_changes parameter.
8109 * sparc.cc (Target_sparc::relocate_section): Add
8110 reloc_symbol_changes parameter.
8111 * configure.ac: Call AM_CONDITIONAL for the default target.
8112 * configure: Rebuild.
8113 * testsuite/Makefile.am (TEST_AS): New variable.
8114 (check_SCRIPTS): Add split_i386.sh and split_x86_64.sh.
8115 (check_DATA): Add split_i386 and split_x86_64 files.
8116 (SPLIT_DEFSYMS): Define.
8117 (split_i386_[1234n].o): New targets.
8118 (split_i386_[124]): New targets.
8119 (split_i386_[1234r].stdout): New targets.
8120 (split_x86_64_[1234n].o): New targets.
8121 (split_x86_64_[124]): New targets.
8122 (split_x86_64_[1234r].stdout): New targets.
8123 (MOSTLYCLEANFILES): Add new executables.
8124 * testsuite/split_i386.sh: New file.
8125 * testsuite/split_x86_64.sh: New file.
8126 * testsuite/split_i386_1.s: New file.
8127 * testsuite/split_i386_2.s: New file.
8128 * testsuite/split_i386_3.s: New file.
8129 * testsuite/split_i386_4.s: New file.
8130 * testsuite/split_i386_n.s: New file.
8131 * testsuite/split_x86_64_1.s: New file.
8132 * testsuite/split_x86_64_2.s: New file.
8133 * testsuite/split_x86_64_3.s: New file.
8134 * testsuite/split_x86_64_4.s: New file.
8135 * testsuite/split_x86_64_n.s: New file.
8136 * testsuite/testfile.cc (Target_test): Update relocation_section
8137 function.
8138 * testsuite/Makefile.in: Rebuild.
8139
e8a9fcda
ILT
81402009-10-06 Ian Lance Taylor <iant@google.com>
8141
8142 * i386.cc (class Target_i386::Relocate): Add ldo_addrs_ field.
8143 (Target_i386::Relocate::relocate_tls): Call fix_up_ldo before
8144 changing local_dynamic_type_ from LOCAL_DYNAMIC_NONE. When
8145 handling R_386_TLS_LDO_32, if local_dynamic_type_ is NONE, push
8146 the address on ldo_addrs_.
8147 (Target_i386::Relocate::fix_up_ldo): New function.
8148
e99daf92
ILT
81492009-10-06 Rafael Espindola <espindola@google.com>
8150
8151 * plugin.cc (add_input_library): New.
8152 (Plugin::load): Add add_input_library to tv.
8153 (Plugin_manager::add_input_file): Add the is_lib argument.
8154 (add_input_file): Update call to Plugin_manager::add_input_file.
8155 (add_input_library): New.
8156 * plugin.h (Plugin_manager::add_input_file): Add the is_lib argument.
8157
966d4097
DK
81582009-09-30 Doug Kwan <dougkwan@google.com>
8159
8160 * arm.cc (Target_arm::may_need_copy_reloc): Check for THUMB function
8161 symbol and call Symbol::may_need_copy_reloc to determine if
8162 a copy reloc is needed.
8163 * copy-relocs.cc (Copy_relocs::need_copy_reloc): Return false if -z
8164 nocopyreloc is given in command line.
8165 (Copy_relocs::emit_copy_reloc): Assert that -z nocopyreloc is not
8166 given in command line.
8167 * i386.cc (Target_i386::may_need_copy_reloc): Remove.
8168 (Target_i386::Scan::global): Use Symbol::may_need_copy_reloc instead
8169 of the removed Target_i386::may_need_copy_reloc.
8170 * options.h (copyreloc): New option with default value false.
8171 * powerpc.cc (Target_powerpc::may_need_copy_reloc): Remove.
8172 (Target_powerpc::Scan::global): Use Symbol::may_need_copy_reloc
8173 instead of the removed Target_powerpc::may_need_copy_reloc.
8174 * sparc.cc (Target_powerpc::may_need_copy_reloc): Remove.
8175 (Target_sparc::Scan::global): Use Symbol::may_need_copy_reloc
8176 instead of the removed Target_sparc::may_need_copy_reloc.
8177 * symtab.h (Symbol::may_need_copy_reloc): New method definition.
8178 * x86_64.cc (Target_powerpc::may_need_copy_reloc): Remove.
8179 (Target_x86_64::Scan::global): Use Symbol::may_need_copy_reloc
8180 instead of the removed Target_x86_64::may_need_copy_reloc.
8181
029ba973
ILT
81822009-09-30 Ian Lance Taylor <iant@google.com>
8183
8184 * object.h (class Object): Remove target_ field, and target,
8185 sized_target, and set_target methods.
8186 (Object::sized_target): Remove.
8187 (class Sized_relobj): Update declarations. Remove sized_target.
8188 * object.cc (Sized_relobj::setup): Remove target parameter.
8189 Change all callers.
8190 (Input_objects::add_object): Don't do anything with the target.
8191 (make_elf_sized_object): Add punconfigured parameter. Change all
8192 callers. Set or test parameter target.
8193 * dynobj.cc (Sized_dynobj::target): Remove target parameter.
8194 Change all callers.
8195 * parameters.cc (Parameters::set_target): Change parameter type to
8196 be non-const.
8197 (Parameters::default_target): Remove.
8198 (set_parameters_target): Change parameter type to be non-const.
8199 (parameters_force_valid_target): New function.
8200 (parameters_clear_target): New function.
8201 * parameters.h (class Parameters): Update declarations. Remove
8202 default_target method. Add sized_target and clear_target
8203 methods. Change target_ to be non-const.
8204 (set_parameters_target): Update declaration.
8205 (parameters_force_valid_target): Declare.
8206 (parameters_clear_target): Declare.
8207 * readsyms.cc (Read_symbols::do_read_symbols): Pass punconfigured
8208 as NULL if we aren't searching.
8209 (Add_symbols::run): Don't check for compatible target.
8210 * fileread.cc (Input_file::open_binary): Call
8211 parameters_force_valid_target.
8212 * gold.cc (queue_middle_tasks): Likewise.
8213 * plugin.cc (make_sized_plugin_object): Likewise. Don't call
8214 set_target on object.
8215 * dynobj.h (class Sized_dynobj): Update declarations.
8216 * archive.cc (Archive::get_elf_object_for_member): Return NULL if
8217 make_elf_object returns NULL.
8218 (Archive::include_member): Don't check whether object target is
8219 compatible.
8220 * output.cc (Output_section::add_input_section): Get target from
8221 parameters.
8222 (Output_section::relax_input_section): Likewise.
8223 * reloc.cc (Sized_relobj::do_gc_process_relocs): Get target from
8224 parameters.
8225 (Sized_relobj::do_scan_relocs): Likewise.
8226 (Sized_relobj::relocate_sections): Likewise.
8227 * resolve.cc (Symbol_table::resolve): Likewise.
8228 * symtab.cc (Symbol_table::wrap_symbol): Likewise. Remove object
8229 parameter. Change all callers.
8230 (Symbol_table::add_from_object): Get target from parameters.
8231 (Symbol_table::add_from_relobj): Don't check object target.
8232 (Symbol_table::add_from_dynobj): Likewise.
8233 (Symbol_table::define_special_symbol): Get target from
8234 parameters.
8235 * symtab.h (class Symbol_table): Update declaration.
8236 * testsuite/binary_unittest.cc (gold_testsuite): Remove target
8237 parameter. Change all callers. Clear parameter target.
8238 (Binary_test): Test target here.
8239 * testsuite/object_unittest.cc (gold_testsuite): Remove
8240 target_test_pointer parameter. Change all callers.
8241 (Object_test): Test target here.
8242
a6a22b83
ILT
82432009-09-26 Ian Lance Taylor <iant@google.com>
8244
8245 * testsuite/initpri1.c: Don't try to use constructor priorities if
8246 compiling with gcc before 4.3.
8247
6a8f49fe
ILT
82482009-09-22 Mikolaj Zalewski <mikolajz@google.com>
8249
8250 * testsuite/retain_symbols_file_test.sh (check_present): Change
8251 output file name to retain_symbols_file_test.stdout.
8252 (check_absent): Likewise.
8253
8c604651
CS
82542009-09-18 Craig Silverstein <csilvers@google.com>
8255
8256 * object.cc (Sized_relobj::do_count): Test should_retain_symbol map.
8257 * options.cc: Include <cerrno> and <fstream>.
8258 (General_options::finalize): Parse -retain-symbols-file tag.
8259 * options.h: New flag.
8260 (General_options): New method should_retain_symbol, new
8261 variable symbols_to_retain.
8262 * symtab.cc (Symbol_table::sized_finalize_symbol): Test
8263 should_retain_symbol map.
8264 * testsuite/Makefile.am (retain_symbols_file_test): New test.
8265 * testsuite/Makefile.in: Regenerate.
8266 * testsuite/retain_symbols_file_test.sh: New file.
8267
ca58b19f
NC
82682009-09-18 Nick Clifton <nickc@redhat.com>
8269
8270 * po/es.po: Updated Spanish translation.
8271
20e6d0d6
DK
82722009-09-17 Doug Kwan <dougkwan@google.com>
8273
8274 * debug.h (DEBUG_RELAXATION): New constant.
8275 (DEBUG_ALL): Add DEBUG_RELAXATION.
8276 (debug_string_to_enum): Add relaxation debug option.
8277 * layout.cc
8278 (Layout::Relaxation_debug_check::check_output_data_for_reset_values,
8279 Layout::Relaxation_debug_check::read_sections,
8280 Layout::Relaxation_debug_check::read_sections): New method definitions.
8281 (Layout::Layout): Initialize data members
8282 record_output_section_data_from_scrips_,
8283 script_output_section_data_list_ and relaxation_debug_check_.
8284 (Layout::save_segments, Layout::restore_segments,
8285 Layout::clean_up_after_relaxation, Layout::prepare_for_relaxation,
8286 Layout::relaxation_loop_body): New method definitions.
8287 (Layout::finalize): Support relaxation. Move section layout code to
8288 Layout::relaxation_loop_body.
8289 (Layout::set_asection_address_from_script): Move code for orphan
8290 section placement out.
8291 (Layout::place_orphan_sections_in_script): New method definition.
8292 * layout.h (Output_segment_headers, Output_file_header):
8293 New forward class declarations.
8294 (Layout::~Layout): Define.
8295 (Layout::new_output_section_data_from_script): New method definition.
8296 (Layout::place_orphan_sections_in_script): New method declaration.
8297 (Layout::Segment_states): New type declaration.
8298 (Layout::save_segments, Layout::restore_segments,
8299 Layout::clean_up_after_relaxation, Layout::prepare_for_relaxation,
8300 Layout::relaxation_loop_body): New method declarations.
8301 (Layout::Output_section_data_list): New type declaration.
8302 (Layout::Relaxation_debug_check): New class definition.
8303 (Layout::record_output_section_data_from_script_,
8304 Layout::script_output_section_data_list_, Layout::segment_states_,
8305 Layout::relaxation_debug_check_): New data members.
8306 * output.cc: (Output_section_headers::do_size): New method definition.
8307 (Output_section_headers::Output_section_headers): Move size
8308 computation to Output_section_headers::do_size.
8309 (Output_segment_headers::do_size): New method definition.
e1df38aa 8310 (Output_file_header::Output_file_header): Move size computation to
20e6d0d6
DK
8311 Output_file_header::do_size and call it.
8312 (Output_file_header::do_size): New method definition.
8313 (Output_data_group::Output_data_group): Adjust call to
8314 Output_section_data.
8315 (Output_data_dynamic::set_final_data_size): Add DT_NULL tag only once.
8316 (Output_symtab_xindex::do_write): Add array bound check.
8317 (Output_section::Input_section::print_to_mapfile): Handle
8318 RELAXED_INPUT_SECTION_CODE.
8319 (Output_section::Output_section): Initialize data member checkpoint_.
8320 (Output_section::~Output_section): Delete checkpoint object pointed
8321 by checkpoint_.
8322 (Output_section::add_input_section): Always add an Input_section if
8323 relaxing.
8324 (Output_section::add_merge_input_section): Add assert.
8325 (Output_section::relax_input_section): New method definition.
8326 (Output_section::set_final_data_size): Set load address to zero for
8327 an unallocated section.
8328 (Output_section::do_address_and_file_offset_have_reset_values):
8329 New method definition.
8330 (Output_section::Input_section_sort_enty::Input_section_sort_enty):
8331 Handle relaxed input section.
8332 (Output_section::sort_attached_input_sections): Checkpoint input
8333 section list lazily.
8334 (Output_section::get_input_sections): Change type of input_sections to
8335 list of Simple_input_section pointers. Checkpoint input section list
8336 lazily. Also handle relaxed input sections.
8337 (Output_section::add_input_section_for_script): Take a reference to
8338 a Simple_input_section object instead of Relobj pointer and section
8339 index as parameter. Handle relaxed input sections.
8340 (Output_section::save_states, Output_section::restore_states): New
8341 method definitions.
8342 * output.h (Output_data::Output_data): Initialize is_data_size_fixed_.
8343 (Output_data::is_data_size_fixed): New method definition.
8344 (Output_data::reset_addresss_and_file_offset): Do not reset data size
8345 if it is fixed.
8346 (Output_data::address_and_file_offset_have_reset_values): New method
8347 definition.
8348 (Output_data::do_address_and_file_offset_have_reset_values): New method
8349 definition.
8350 (Output_data::set_data_size): Check that data size is not fixed.
8351 (Output_data::fix_data_size): New method definition.
8352 (Output_data::is_data_size_fixed_): New data member.
8353 (Output_section_headers::set_final_data_size): New method definition.
8354 (Output_section_headers::do_size): New method declaration.
8355 (Output_segment_headers::set_final_data_size): New method definition.
8356 (Output_segment_headers::do_size): New method declaration.
8357 (Output_file_header::set_final_data_size)::New method definition.
8358 (Output_file_header::do_size)::New method declaration.
8359 (Output_section_data::Output_section_data): Add new parameter
8360 is_data_size_fixed and use it to fix data size.
8361 (Output_data_const::Output_data_const): Adjust call to base class
8362 constructor and fix data size.
8363 (Output_data_const_buffer::Output_data_const_buffer): Adjust call to
8364 base class constructor and fix data size.
8365 (Output_data_fixed_space::Output_data_fixed_space): Adjust call to
8366 base class constructor and fix data size.
8367 (Output_data_zero_fill::Output_data_zero_fill): Adjust call to base
8368 class constructor and fix data size.
8369 (Output_data_group::set_final_data_size): New method definition.
8370 (Output_data_dynamic::Dynamic_entry::tag): New method definition.
8371 (Output_symtab_xindex::Output_symtab_xindex): Adjust call to base
8372 class constructor and fix data size.
8373 (Output_relaxed_input_section): New class definition.
8374 (Output_section::Simple_input_section): New class definition.
8375 (Output_section::get_input_sections): Adjust parameter list.
8376 (Output_section::add_input_section_for_script): Same.
8377 (Output_section::save_states, Output_section::restore_states,
8378 Output_section::do_address_and_file_offset_have_reset_values,
8379 (Output_section::Input_section::Input_section): Handle
8380 RELAXED_INPUT_SECTION_CODE. Add new overload for
8381 Output_relaxed_input_section.
8382 (Output_section::Input_section::is_input_section,
8383 Output_section::Input_section::set_output_section): Handle relaxed
8384 input section.
8385 (Output_section::Input_section::is_relaxed_input_section,
8386 Output_section::Input_section::output_section_data,
8387 Output_section::Input_section::relaxed_input_section): New method
8388 definitions.
8389 (Output_section::Input_section::RELAXED_INPUT_SECTION_CODE): New enum
8390 value.
8391 (Output_section::Input_section::u1_): Update comments.
8392 (Output_section::Input_section::u2_): Add new union member poris.
8393 (Output_section::Checkpoint_output_section): New classs definition.
8394 (Output_section::relax_input_section): New method declaration.
8395 (Output_section::checkpoint_): New data member.
8396 (Output_segment): Update comments.
8397 (Output_segment::Output_segment): Un-privatize copy constructor.
8398 (Output_segment::operator=): Un-privatize.
8399 * script-sections.cc (Output_section_element::Input_section_list):
8400 Change element type to Output_section::Simple_input_section.
8401 (Output_section_element_dot_assignment::set_section_addresses):
8402 Register output section data for relaxation clean up.
8403 (Output_data_exression::Output_data_expression): Adjust call to base
8404 constructor to fix data size.
8405 (Output_section_element_data::set_section_addresses): Register
8406 Output_data_expression object for relaxation clean up.
8407 (struct Input_section_info): Replace Relobj pointer and section index
8408 pair with Output_section::Simple_input_section and Convert struct to a
8409 class.
8410 (Input_section_sorter::operator()): Adjust access to
e1df38aa 8411 Input_section_info data member to use accessors.
20e6d0d6
DK
8412 (Output_section_element_input::set_section_addresses): Use layout
8413 parameter. Adjust code to use Output_section::Simple_input_section
8414 and Input_secction_info classes. Register filler for relaxation
8415 clean up.
8416 (Orphan_output_section::set_section_addresses): Replace Relobj pointer
8417 and section index pair with Output_section::Simple_input_section
8418 class. Adjust code accordingly.
8419 (Phdrs_element::release_segment): New method definition.
8420 (Script_sections::attach_sections_using_phdrs_clause): Do not modify
8421 segment list.
8422 (Script_sections::release_segments): New method definition.
8423 * gold/script-sections.h (Script_sections::release_segments): New
8424 method declaration.
8425 * gold/target.h (Target::may_relax, Target::relax,
8426 Target::do_may_relax, Target::do_relax): New method definitions.
8427
5e445df6
ILT
84282009-09-17 Viktor Kutuzov <vkutuzov@accesssoftek.com>
8429
8430 * arm.cc (has_signed_unsigned_overflow): New function.
8431 (Arm_relocate_functions::abs8): New function.
8432 (Target_arm::Scan::local): Handle R_ARM_ABS8.
8433 (Target_arm::Scan::global): Likewise.
8434 (Target_arm::relocate::relocate): Likewise.
8435 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
8436 Likewise.
8437
8c604651 84382009-09-16 Cary Coutant <ccoutant@google.com>
72fef11a
CC
8439
8440 * testsuite/Makefile.am (MOSTLYCLEANFILES): Add more generated files.
8441 * testsuite/Makefile.in: Regenerate.
8442
1e9cc1c2
NC
84432009-09-11 Nick Clifton <nickc@redhat.com>
8444
8445 * po/gold.pot: Updated by the Translation project.
8446
6a89f575
CC
84472009-09-08 Cary Coutant <ccoutant@google.com>
8448
8449 * output.cc (Output_file::open): Add execute permission to empty file.
8450 * testsuite/Makefile.am (permission_test): New test.
8451 * testsuite/Makefile.in: Regenerate.
8452
fdcac5af
ILT
84532009-09-02 Ian Lance Taylor <iant@google.com>
8454
8455 * output.cc (Output_file::resize): Call map_no_anonymous rather
8456 than map.
8457
44453f85
ILT
84582009-09-01 Mikolaj Zalewski <mikolajz@google.com>
8459
8460 * gold.cc: Include "incremental.h".
8461 (queue_initial_tasks): Call Incremental_checker methods.
8462 * incremental.cc: Include "output.h".
8463 (Incremental_checker::can_incrementally_link_output_file): New
8464 method.
8465 * incremental.h (Incremental_checker): New class.
8466
8467 * output.cc (Output_file::open_for_modification): New method.
8468 (Output_file::map_anonymous): Changed return type to bool. Record
8469 map in base_ field.
8470 (Output_file::map_no_anonymous): New method, broken out of map.
8471 (Output_file::map): Use map_no_anonymous and map_anonymous.
8472 * output.h (class Output_file): Update declarations.
8473
293c1386
CC
84742009-08-24 Cary Coutant <ccoutant@google.com>
8475
8476 * options.h (Command_line::Pre_options): New class.
8477 (Command_line::pre_options): New member.
8478 * options.cc (gold::options::ready_to_register): New variable.
8479 (One_option::register_option): Do nothing if not registering options.
8480 Assert if same short option registered twice.
8481 (General_options::General_options): Turn off option registration when
8482 done constructing.
8483 (Command_line::Pre_options::Pre_options): New constructor.
8484
f773f3d2
CC
84852009-08-24 Cary Coutant <ccoutant@google.com>
8486
06a73cfe
CC
8487 * options.h (General_options::no_keep_memory): Remove incorrect
8488 short option.
f773f3d2 8489
a15af8e2
RW
84902009-08-24 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
8491
8492 * Makefile.am (am__skiplex, am__skipyacc): New.
8493 * Makefile.in: Regenerate.
8494
c462b41b
RW
84952009-08-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
8496
14ec8efd
RW
8497 * Makefile.am (AM_CPPFLAGS): Renamed from ...
8498 (INCLUDES): ... this.
8499 * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add -Wno-portability.
8500 (AM_CPPFLAGS): Renamed from ...
8501 (INCLUDE): ... this.
8502 * Makefile.in, testsuite/Makefile.in: Regenerate.
8503
81ecdfbb
RW
8504 * Makefile.in: Regenerate.
8505 * aclocal.m4: Likewise.
8506 * config.in: Likewise.
8507 * configure: Likewise.
8508 * testsuite/Makefile.in: Likewise.
8509
c462b41b
RW
8510 * Makefile.am (AUTOMAKE_OPTIONS): Add foreign.
8511 * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add foreign.
8512 * Makefile.in: Regenerate.
8513 * testsuite/Makefile.in: Regenerate.
8514
2da73f13
CC
85152009-08-19 Cary Coutant <ccoutant@google.com>
8516
8517 * resolve.cc (Symbol_table::resolve): Don't complain about defined
8518 symbols in shared libraries overridden by hidden or internal symbols
8519 in the main program.
8520
2db70501
CD
85212009-08-19 Chris Demetriou <cgd@google.com>
8522
8523 * testsuite/debug_msg.sh: Match .* rather than ${srcdir} when
8524 checking source file names in error messages.
8525
f733487b
DK
85262009-08-18 Doug Kwan <dougkwan@google.com>
8527
8528 * dynobj.cc (Sized_dynobj::setup): Take a Target object instead of
8529 an elcpp::Ehdr as parameter. Adjust call to set_target.
8530 * dynobj.h (Sized_dynobj::setup): Take a Target object instead of
8531 an elfcpp::Ehdr as parameter.
8532 * object.cc (Object::set_target): Remove the version that looks up
8533 a target and sets it.
8534 (Sized_relobj::setup): Take a Target object instead of
8535 an elfcpp::Ehdr as parameter. Adjust call to set_target.
8536 (make_elf_sized_object): Find target and ask target to
8537 make an ELF object.
8538 * object.h: (Object::set_target): Remove the version that looks up
8539 a target and sets it.
8540 (Sized_relobj::setup): Take a Target object instead of
8541 an elfcpp:Ehdr as parameter.
8542 * target.cc: Include dynobj.h.
8543 (Target::do_make_elf_object_implementation): New.
8544 (Target::do_make_elf_object): New.
8545 * target.h (Target::make_elf_object): New template declaration.
8546 (Target::do_make_elf_object): New method declarations.
8547 (Target::do_make_elf_object_implementation): New template declaration.
8548
cc70f101
ILT
85492009-08-14 Ian Lance Taylor <iant@google.com>
8550
8551 * gold.h (FUNCTION_NAME): Define.
8552 (gold_unreachable): Use FUNCTION_NAME.
8553
ef5e0cb1
ST
85542009-08-12 Sriraman Tallam <tmsriram@google.com>
8555
8556 * icf.cc (Icf::find_identical_sections): Issue a warning when a
8557 symbol in the --keep-unique list is not found.
8558
48c187ce
ST
85592009-08-12 Sriraman Tallam <tmsriram@google.com>
8560
8561 * icf.cc (Icf::find_identical_sections): Unfold symbols that have
8562 been maked as --keep-unique.
8563 (Icf::unfold_section): New function.
8564 * icf.h (Icf::unfold_section): New function.
8565 * options.h (General_options::keep_unique): New option.
8566 * testsuite/Makefile.am: Add commands to build icf_keep_unique_test.
8567 * testsuite/Makefile.in: Regenerate.
8568 * testsuite/icf_keep_unique_test.sh: New file.
8569 * testsuite/icf_keep_unique_test.cc: New file.
8570
645afe0c
CC
85712009-08-12 Cary Coutant <ccoutant@google.com>
8572
8573 PR 10471
8574 * resolve.cc (Symbol_table::resolve): Check for references from
8575 dynamic objects to hidden and internal symbols.
8576 * testsuite/Makefile.am (hidden_test.sh): New test.
8577 * testsuite/Makefile.in: Regenerate.
8578 * testsuite/hidden_test.sh: New script.
8579 * testsuite/hidden_test_1.c: New test source.
8580 * testsuite/hidden_test_main.c: New test source.
8581
11af873f
DK
85822009-08-11 Doug Kwan <dougkwan@google.com>
8583
8584 * arm.cc: Update comments.
8585 (Target_arm::do_finalize_sections): Add a special PT_ARM_EXIDX
8586 segment to locate the .ARM.exidx section if present.
8587
b9f7d72d
DK
85882009-08-09 Doug Kwan <dougkwan@google.com>
8589
8590 * dynobj.h (Sized_dynobj::do_section_entsize): Revert the previous
8591 patch.
8592
ddd3c53c
ST
85932009-08-07 Sriraman Tallam <tmsriram@google.com>
8594 * dynobj.h (Sized_dynobj::do_section_entsize): Add return to avoid
8595 compiler warnings.
8596
27721062
ST
85972009-08-06 Sriraman Tallam <tmsriram@google.com>
8598
8599 * x86_64.cc (Target_x86_64::Relocate::relocate_tls): Check for a
8600 valid tls_segment only for non-debug-section relocations.
8601 * testsuite/Makefile.am: Add gc_tls_test.
8602 * testsuite/Makefile.in: Regenerate.
8603 * testsuite/gc_tls_test.cc: New file.
8604 * testsuite/gc_tls_test.sh: New file.
8605
ef15dade 86062009-08-05 Sriraman Tallam <tmsriram@google.com>
e1df38aa 8607
ef15dade
ST
8608 * icf.cc: New file.
8609 * icf.h: New file.
8610 * Makefile.am (CCFILES): Add icf.cc.
8611 (HFILES): Add icf.h
8612 * Makefile.in: Regenerate.
8613 * dynobj.h (Sized_dynobj::do_section_entsize): New function.
8614 * gc.h (gc_process_relocs): Populate lists used by icf to contain
8615 section, symbol and addend information for the relocs.
8616 * gold.cc (queue_middle_tasks): Call identical code folding.
8617 * gold.h: Add defines for multimap.
8618 * layout.cc (Layout::create_symtab_sections): Add symtab as parameter
8619 to the call of finalize_local_symbols.
8620 * main.cc (main): Create object of class Icf.
8621 * object.cc (Sized_relobj::do_layout): Allow this function to be
8622 called twice during icf.
8623 (Sized_relobj::do_finalize_local_symbols): Fold symbols corresponding
8624 to sections marked as identical by icf.
8625 (Sized_relobj::do_section_flags): Get section_flags from Symbols_data
8626 when available.
8627 (Sized_relobj::do_section_entsize): New function.
8628 * object.h (Object::section_entsize): New function.
8629 (Object::do_section_entsize): New pure virtual function.
8630 (Relobj::finalize_local_symbols): Add new parameter.
8631 (Relobj::do_section_entsize): New function.
8632 * options.h (General_options::icf): New option.
8633 (General_options::icf_iterations): New option.
8634 (General_options::print_icf_sections): New option.
8635 * plugin.cc (Sized_pluginobj::do_section_entsize): New function.
8636 * plugin.h (Sized_pluginobj::do_section_entsize): New function.
8637 * reloc.cc (Read_relocs::run): Delay scanning relocs when doing
8638 icf.
8639 * symtab.cc (Symbol_table::is_section_folded): New function.
8640 (Symbol_table::sized_finalize_symbol): Fold symbols corresponding
8641 to sections marked as identical by icf.
8642 * symtab.h (Symbol_table::set_icf): New function.
8643 (Symbol_table::icf): New function.
8644 (Symbol_table::is_section_folded): New function.
8645 (Symbol_table::icf_): New data member.
8646 * target-reloc.h (relocate_section): Ignore sections folded by icf.
8647 * testsuite/Makefile.am: Add commands to build icf_test.
8648 * testsuite/Makefile.in: Regenerate.
8649 * testsuite/icf_test.sh: New file.
8650 * testsuite/icf_test.cc: New file.
8651
c3b65ac4
CD
86522009-07-24 Chris Demetriou <cgd@google.com>
8653
8654 * layout.cc (is_compressible_debug_section): Fix incorrect
8655 comment about compressed section names.
8656
1caf2c51
ILT
86572009-07-20 Ian Lance Taylor <ian@airs.com>
8658
8659 PR 10419
8660 * x86_64.cc (Target_x86_64::do_code_fill): Correct nop sequences.
8661
1ef4d87f
ILT
86622009-07-16 Ian Lance Taylor <iant@google.com>
8663
8664 PR 10400
8665 * layout.h: #include <map>.
8666 (class Kept_section): Change from struct to class. Add accessors
8667 and setters. Add section size to Comdat_group mapping. Change
8668 Comdat_group to std::map. Add is_comdat_ field. Add
8669 linkonce_size field in union.
8670 (class Layout): Update declaration of find_or_add_kept_section.
8671 Don't declare find_kept_object.
8672 * layout.cc (Layout::find_or_add_kept_section): Remove candidate
8673 parameter. Add object, shndx, is_comdat, and is_group_name
8674 parameters. Change all callers. Adjust for new Kept_section.
8675 (Layout::find_kept_object): Remove.
8676 * object.cc (Sized_relobj::include_section_group): Update use of
8677 Kept_section. Rename secnum to shndx. Only record
8678 Kept_comdat_section if sections are the same size.
8679 (Sized_relobj::include_linkonce_section): Update use of
8680 Kept_section. Only record Kept_comdat_section if sections are the
8681 same size. Set size of linkonce section.
8682 (Sized_relobj::map_to_kept_section): Update call to
8683 get_kept_comdat_section.
8684 * object.h (class Sized_relobj): Rename fields in
8685 Kept_comdat_section to drop trailing underscores; change object
8686 field to Relobj*. Change Kept_comdat_section_table to store
8687 struct rather than pointer.
8688 (Sized_relobj::set_kept_comdat_section): Remove kept parameter.
8689 Add kept_object and kept_shndx parameters. Change all callers.
8690 (Sized_relobj::get_kept_comdat_section): Change return type to
8691 bool. Add kept_object and kept_shndx parameters. Change all
8692 callers.
8693 * plugin.cc (Pluginobj::include_comdat_group): Update call to
8694 Layout::find_or_add_kept_section.
8695
37c3b7b0
ILT
86962009-07-09 Ian Lance Taylor <iant@google.com>
8697
8698 * merge.cc (Object_merge_map::initialize_input_to_output_map):
8699 Reserve space in the hash table.
8700
98fa85cb
ILT
87012009-07-06 Mikolaj Zalewski <mikolajz@google.com>
8702
8703 * fileread.cc (File_read::get_mtime): New method.
8704 * fileread.h (Timespec): New structure.
8705 (File_read::get_mtime): New method.
8706 * incremental.cc (Incremental_inputs_entry_data::timestamp_usec):
8707 Renamed from timestamp_nsec.
8708 (Incremental_inputs_entry_write::timestamp_sec): Fix argument to
8709 Elf_Xword.
e1df38aa 8710 (Incremental_inputs_entry_write::timestamp_usec): Renamed from
98fa85cb 8711 timestamp_nsec.
e1df38aa 8712 (Incremental_inputs::report_archive): Save mtime; style fix.
98fa85cb
ILT
8713 (Incremental_inputs::report_obejct): Save mtime; style fix.
8714 (Incremental_inputs::report_script): Save mtime; style fix.
8715 (Incremental_inputs::finalize_inputs): Style fix.
8716 (Incremental_inputs::finalize): Style fix.
8717 (Incremental_inputs::create_input_section_data): Store inputs
8718 mtime.
8719 * incremental.h (Incremental_inputs::report_script): Add mtime
8720 argument.
8721 (Incremental_inputs::Input_info::Input_info): Intialize only one
8722 union member.
8723 (Incremental_inputs::Input_info::archive): Move to nameless
8724 union.
8725 (Incremental_inputs::Input_info::obejct): Move to nameless union.
8726 (Incremental_inputs::Input_info::script): Move to nameless union.
8727 (Incremental_inputs::mtime): New field.
8728 * script.cc (read_input_script): Pass file mtime to
8729 Incremental_input.
8730 * script.h (Script_info::inputs): Style fix.
8731
c9d70757
ILT
87322009-07-01 Ian Lance Taylor <ian@airs.com>
8733
8734 * freebsd.h (Target_freebsd::do_adjust_elf_header): Use size
8735 instead of 32.
8736
9c547ec3
ILT
87372009-06-24 Ian Lance Taylor <iant@google.com>
8738
8739 PR 10156
8740 * layout.cc (Layout::choose_output_section): If we find an
8741 existing section, update the flags.
8742 (Layout::create_notes): New function, broken out of
8743 Layout::finalize.
8744 (Layout::finalize): Don't create note sections.
8745 (Layout::create_note): Don't crash if linker script discards
8746 section.
8747 (Layout::create_gold_note): Likewise.
8748 (Layout::create_build_id): Likewise. Don't set
8749 after_input_sections on the section.
8750 (Layout::create_executable_stack_info): Remove target parameter.
8751 Change caller.
8752 * layout.h (class Layout): Declare create_notes. Update
8753 declaration of create_executable_stack_info.
8754 * gold.cc (queue_middle_tasks): Call create_notes.
8755 * output.cc (Output_section::update_flags_for_input_section): Move
8756 here from output.h. If SHF_ALLOC flag is newly set, mark address
8757 invalid.
8758 * output.h (Output_data::mark_address_invalid): New function.
8759 (class Output_section): Only declare, not define,
8760 update_flags_for_input_section. Remove set_flags.
8761
55458500
ILT
87622009-06-24 Ian Lance Taylor <iant@google.com>
8763
8764 * script-sections.cc (Output_section_definition::
8765 set_section_addresses): Rename shadowing local load_address to
8766 laddr.
8767
1307d6cd
ILT
87682009-06-24 Ian Lance Taylor <iant@google.com>
8769
8770 PR 10244
8771 * reloc.cc (relocate_sections): Skip empty relocation sections.
8772
ec3f783e
ILT
87732009-06-23 Ian Lance Taylor <iant@google.com>
8774
8775 PR 10156
8776 * layout.cc (Layout::create_note): Use choose_output_section
8777 rather than make_output_section.
8778
459c9f1c
ILT
87792009-06-23 Ian Lance Taylor <iant@google.com>
8780
8781 PR 10237
8782 * options.cc (General_options::parse_V): Set printed_version_.
8783 (General_options::General_options): Initialize printed_version_.
8784 * options.h (class General_options): Add printed_version_ field.
8785 * gold.cc (queue_initial_tasks): If there are no input files,
8786 don't give a fatal error if we printed the version information.
8787 (queue_middle_tasks): If using -r with a shared object, give a
8788 fatal error rather than an ordinary error.
8789
1518dc8f
ILT
87902009-06-23 Ian Lance Taylor <iant@google.com>
8791
8792 PR 10219
8793 * layout.cc (Layout::Layout): Initialize have_stabstr_section_.
8794 (Layout::make_output_section): Set have_stabstr_section_ if we see
8795 a .stab*str section.
8796 (Layout::finalize): Call link_stabs_sections.
8797 (Layout::link_stabs_sections): New file.
8798 * layout.h (class Layout): Add have_stabstr_section_ field.
8799 Declare link_stabs_sections.
8800
3d857b98
DK
88012009-06-23 Doug Kwan <dougkwan@google.com>
8802
8803 * Makefile.am (libgold_a_LIBADD): New.
8804 (ld_new_DEPENDENCIES, ld_new_LDADD): Remove LIBOBJS
8805 * Makefile.in: Regenerate.
8806 * config.in (HAVE_DECL_MEMMEM, HAVE_DECL_STRNDUP): New.
8807 * configure: Regenerate.
8808 * configure.ac (AC_CHECK_DECLS): Add strndup and memmem.
8809 * fileread.cc: Include sys/state.h
8810 * gold.h: Declare memmem and strndup if found missing.
8811 * gold_reloc.h: Include byteswap.h if HAVE_BYTESWAP_H is defined.
8812
0639a6f6
ILT
88132009-06-23 Ian Lance Taylor <iant@google.com>
8814
8815 * configure.ac: Call AC_CHECK_DECLS using C, not C++.
8816 * configure: Rebuild.
8817
8d63875c
ILT
88182009-06-23 Ian Lance Taylor <iant@google.com>
8819
8820 PR 10147
8821 * object.cc (Object::section_contents): Don't try to get a view if
8822 the section has length zero.
8823 (Object::handle_gnu_warning_section): If the section is empty, use
8824 the name of the section as the warning.
8825
f7c8a183
ILT
88262009-06-23 Ian Lance Taylor <iant@google.com>
8827
8828 PR 10133
8829 * stringpool.h (class Stringpool_template): Add optimize_ field.
8830 (Stringpool_template::set_optimize): New function.
8831 * stringpool.cc (Stringpool_template::Stringpool_template):
8832 Initialize optimize_ field.
8833 (Stringpool_template::set_string_offsets): Test local optimize
8834 fild rather than parameter.
8835 * layout.cc (Layout::Layout): Call set_optimize on the section
8836 name stringpool.
8837
e6a307ba
ILT
88382009-06-22 Ian Lance Taylor <iant@google.com>
8839
8840 PR 10030
8841 * yyscript.y: Parse TARGET.
8842 * script.cc (script_set_target): New function.
8843 * script-c.h (script_set_target): Declare.
8844 * options.cc (General_options::string_to_object_format): Rename
8845 from string_to_object_format in anonymous namespace. Change
8846 callers.
8847 * options.h (class General_options): Declare
8848 string_to_object_format.
8849
3ee173de
ILT
88502009-06-22 Ian Lance Taylor <iant@google.com>
8851
8852 * script-sections.cc (Script_sections::create_segments): Don't put
8853 program headers in a PT_LOAD segment if -n or -N.
8854
88552009-06-22 Ian Lance Taylor <iant@google.com>
e1c74d60
ILT
8856
8857 PR 10141
8858 * options.h (class General_options): Add -z lazy and -z now. Sort
8859 -z options into alphabetical order.
8860 * layout.cc (Layout::finish_dynamic_section): Handle -z now.
8861
cd6739a1 88622009-06-21 Ian Lance Taylor <iant@google.com>
8a5e3e08
ILT
8863
8864 * layout.cc (Layout::make_output_section): Call
8865 Target::new_output_section.
8866 (Layout::attach_allocated_section_to_segment): Put large section
8867 sections in a separate load segment with the large segment flag
8868 set.
8869 (Layout::segment_precedes): Sort large data segments after other
8870 load segments.
8871 (align_file_offset): New static function.
8872 (Layout::set_segment_offsets): Use align_file_offset.
8873 * output.h (class Output_section): Add is_small_section_ and
8874 is_large_section_ fields.
8875 (Output_section::is_small_section): New function.
8876 (Output_section::set_is_small_section): New function.
8877 (Output_section::is_large_section): New function.
8878 (Output_section::set_is_large_section): New function.
8879 (Output_section::is_large_data_section): New function.
8880 (class Output_segment): Add is_large_data_segment_ field.
8881 (Output_segment::is_large_data_segment): New function.
8882 (Output_segment::set_is_large_data_segment): New function.
8883 * output.cc (Output_section::Output_section): Initialize new
8884 fields.
8885 (Output_segment::Output_segment): Likewise.
8886 (Output_segment::add_output_section): Add assertion that large
8887 data sections always go in large data segments. Force small data
8888 sections to the end of the list of data sections. Force small BSS
8889 sections to the start of the list of BSS sections. For large BSS
8890 sections to the end of the list of BSS sections.
8891 * symtab.h (class Symbol): Declare is_common_shndx.
8892 (Symbol::is_defined): Check Symbol::is_common_shndx.
8893 (Symbol::is_common): Likewise.
8894 (class Symbol_table): Define enum Commons_section_type. Update
8895 declarations. Add small_commons_ and large_commons_ fields.
8896 * symtab.cc (Symbol::is_common_shndx): New function.
8897 (Symbol_table::Symbol_table): Initialize new fields.
8898 (Symbol_table::add_from_object): Put small and large common
8899 symbols in the right list.
8900 (Symbol_table::sized_finalized_symbol): Check
8901 Symbol::is_common_shndx.
8902 (Symbol_table::sized_write_globals): Likewise.
8903 * common.cc (Symbol_table::do_allocate_commons): Allocate new
8904 common symbol lists. Don't call do_allocate_commons_list if the
8905 list is empty.
8906 (Symbol_table::do_allocate_commons_list): Remove is_tls
8907 parameter. Add comons_section_type parameter. Change all
8908 callers. Handle small and large common symbols.
8909 * object.cc (Sized_relobj::do_finalize_local_symbols): Check
8910 Symbol::is_common_shndx.
8911 * resolve.cc (symbol_to_bits): Likewise.
8912 * target.h (Target::small_common_shndx): New function.
8913 (Target::small_common_section_flags): New function.
8914 (Target::large_common_shndx): New function.
8915 (Target::large_common_section_flags): New function.
8916 (Target::new_output_section): New function.
8917 (Target::Target_info): Add small_common_shndx, large_common_shndx,
8918 small_common_section_flags, and large_common_section_flags
8919 fields.
8920 (Target::do_new_output_section): New virtual function.
8921 * arm.cc (Target_arm::arm_info): Initialize new fields.
8922 * i386.cc (Target_i386::i386_info): Likewise.
8923 * powerpc.cc (Target_powerpc::powerpc_info) [all versions]:
8924 Likewise.
8925 * sparc.c (Target_sparc::sparc_info) [all versions]: Likewise.
8926 * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
8927 (Target_x86_64::do_new_output_section): New function.
8928 * configure.ac: Define conditional MCMODEL_MEDIUM.
8929 * testsuite/Makefile.am (check_PROGRAMS): Add large.
8930 (large_SOURCES, large_CFLAGS, large_DEPENDENCIES): Define.
8931 (large_LDFLAGS): Define.
8932 * testsuite/large.c: New file.
8933 * testsuite/testfile.cc (Target_test::test_target_info):
8934 Initialize new fields.
8935 * configure, testsuite/Makefile.in: Rebuild.
8936
bb04269c
DK
89372009-06-05 Doug Kwan <dougkwan@google.com>
8938
8939 * Makefile.am (CCFILES): Add target.cc.
e1df38aa 8940 * Makefile.in: Regenerate.
bb04269c
DK
8941 * i386.cc (class Target_i386): Define new virtual method to
8942 override do_is_local_label_name in parent.
8943 * object.cc (Sized_relobj::do_count_local_symbols): Discard
8944 local symbols if --discard-locals or -X is given.
8945 * options.h (class General_options): Declare new options
8946 '--discard-locals' and '-X' for discarding locals.
8947 * target.h (class Target): Define new methods is_local_label_name.
8948 Declare new virtual method do_is_local_label_name.
8949 * target.cc: New file.
8950 * testsuite/Makefile.am (check_PROGRAMS): Add discard_locals_test.
8951 (check_SCRIPTS): Add discard_locals_test.sh.
8952 (check_DATA): Add discard_local_tests.syms.
8953 (discard_locals_test_SOURCES, discard_locals_test_LDFLAGS): Define.
8954 (discard_local_tests.syms, discard_locals_test.o): New make rules.
8955 * testsuite/Makefile.in: Regenerate.
8956 * testsuite/discard_locals_test.c: New file.
8957 * testsuite/discard_locals_test.sh: Same.
8958
805bb01c
DK
89592009-06-05 Doug Kwan <dougkwan@google.com>
8960
8961 * object.cc (Sized_relobj::Sized_relobj): Initialize
8962 discarded_eh_frame_shndx_ to -1U.
8963 (Sized_relobj::do_layout): Record index of a discard .eh_frame
8964 section.
8965 (Sized_relobj::do_count_local_symbols): Skip local symbols in
8966 a discarded .eh_frame section.
8967 (Sized_relobj::do_finalize_local_symbols): Ditto.
8968 * object.h (class Sized_relobj): Declare new member
8969 discarded_eh_frame_shndx_.
8970 * testsuite/Makefile.am (check_PROGRAMS): Add local_labels_test.
8971 (local_labels_test.o, local_labels_test): New rules.
8972 * testsuite/Makefile.in: Regenerate.
8973
1dcd334d
DK
89742009-06-04 Doug Kwan <dougkwan@google.com>
8975
8976 * layout.cc (Layout::section_name_mapping): Add mapping for
8977 special ARM sections.
8978
96d49306
DK
89792009-06-03 Doug Kwan <dougkwan@google.com>
8980
8981 * arm.cc (utils::sign_extend): Reverse test in gold_assert.
8982 (utils::has_overflow): Same.
8983
dff16297
ILT
89842009-06-03 Ian Lance Taylor <iant@google.com>
8985
8986 * layout.cc (Layout::section_name_mapping): New array, replacing
8987 Layout::linkonce_mapping.
8988 (Layout::section_name_mapping_count): New variable, replacing
8989 Layout::linkonce_mapping_count.
8990 (Layout::linkonce_output_name): Remove.
8991 (Layout::output_section_name): Rewrite.
8992 * layout.h (class Layout): Rename Linkonce_mapping to
8993 Section_name_mapping, linkonce_mapping to section_name_mapping,
8994 linkonce_mapping_count to section_name_mapping_count. Don't
8995 declare linkonce_output_name.
8996
c121c671
DK
89972009-06-03 Doug Kwan <dougkwan@google.com>
8998
8999 * gold/arm.cc (namespace utils): New.
9000 (Target_arm::reloc_is_non_pic): Define new method.
9001 (class Arm_relocate_functions): New.
9002 (Target_arm::Relocate::relocate): Handle relocation types used by
9003 Android.
9004
07800fab
ILT
90052009-06-03 Ian Lance Taylor <iant@google.com>
9006
9007 * arm.cc (Target_arm::scan::global): Use || instead of |.
9008
c121c671
DK
90092009-06-02 Doug Kwan <dougkwan@google.com>
9010
9011 * gold/arm.cc (Target_arm::Scan::Scan): Initialize
9012 issued_non_pic_error_.
9013 (class Target_arm::Scan): Declare new method check_non_pic.
9014 Define new method symbol_needs_plt_entry.
9015 Declare new data member issued_non_pic_error_.
9016 (class Target_arm::Relocate): Declare new method
9017 should_apply_static_reloc.
9018 (Target_arm::may_need_copy_reloc): Handle STT_ARM_TFUNC.
9019 (Target_arm::Scan::check_non_pic): Define new method.
9020 (Target_arm::Scan::local): Handle a small subset of reloc types used
9021 by Android.
9022 (Target_arm::Scan::local): Same.
9023 (Target_arm::Relocate::should_apply_statci_reloc): Define new method.
9024
b19b0c6d
ILT
90252009-05-31 Mikolaj Zalewski <mikolajz@google.com>
9026
9027 * incremental.cc (Incremental_inputs::report_command_line): Filter
9028 out --incremental-* options.
9029
94cdfcff
DK
90302009-05-29 Doug Kwan <dougkwan@google.com>
9031
9032 * gold/arm.cc (Output_data_plt_arm): Forward declaration for new
9033 template class.
9034 (class Target_arm): Update comment.
9035 (Target_arm::Target_arm): Initialize new data members GOT_,
9036 PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_ and DYNBSS_.
9037 Declare new methods Target_arm::got_section, Target_arm::make_plt_entry
9038 and Target_arm::rel_dyn_section.
9039 Declare new_enum Target_arm::Got_type.
9040 Declare new data members GOT_, PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_
9041 and DYNBSS_.
9042 Update commments for member do_dynsym_value.
9043 (Target_arm::got_size, Target_arm::plt_section,
9044 Target_arm::may_need_copy_reloc and Target_arm::copy_reloc): Define
9045 new methods inside class defintion.
9046 (Target_arm::got_section): Define new method.
9047 (Target_arm::rel_dyn_section): Same.
9048 (Output_data_plt_arm): New template class.
9049 (Output_data_plt_arm::Output_data_plt_arm): Define constructor.
9050 (Output_data_plt_arm:do_adjust_output_section): Define new method.
9051 (Output_data_plt_arm::add_entry): Same.
9052 (Output_data_plt_arm::first_plt_entry): Define new
9053 static data member for PLT instruction template.
9054 (Output_data_plt_arm::plt_entry): Same.
9055 (Output_data_plt_arm::do_write): Define new method.
9056 (Target_arm::make_plt_entry): Same.
9057 (Target_arm::do_finalize_sections): Same.
9058 (Target_arm::do_dynsym_value): Same.
9059
4a657b0d
DK
90602009-05-28 Doug Kwan <dougkwan@google.com>
9061
9062 * Makefile.am (TARGETSOURCES): Add arm.cc.
9063 (ALL_TARGETOBJECTS): Add arm.$(OBJEXT)
9064 * Makefile.in: Regenerate.
9065 * arm.cc: New file.
9066 * configure.tgt: Add armbe*-*-*, armeb*-*-* and arm*-*-* targets.
9067
e7ae8c36
DK
90682009-05-26 Doug Kwan <dougkwan@google.com>
9069
9070 * options.cc (General_options::parse_exclude_libs). Fix a comment.
9071 (General_options::check_excluded_libs): Strip off directories in
9072 archive name before matching like GNU ld does.
9073 * testsuite/Makefile.am (MOSTLYCLEANFILES,
9074 exclude_libs_test_DEPENDENCIES): Add alt/libexclude_libs_test_3.a
9075 (exclude_libs_test_LDFLAGS): Add linker option
9076 -Wl,--exclude-libs,libexclude_libs_test_3
9077 (exclude_libs_test_LADD): Add alt/libexclude_libs_test_3.a as
9078 an explicit archive without using -l.
9079 (alt/libexclude_libs_test_3.a): New make rule.
9080 * testsuite/Makefile.in: Regenerate.
9081 * testsuite/exclude_libs_test.c : Declare lib3_default().
9082 (main): Call it.
9083 * exclude_libs_test.sh: Add tests for alt/exclude_libs_test_3.a.
9084 * exclude_libs_test_3.c: New file.
9085
f12e7348
NC
90862009-05-26 Nick Clifton <nickc@redhat.com>
9087
9088 * po/id.po: New Indonesian translation.
9089 * po/gold.pot: Updated template file.
9090
4daadc0d
ST
90912009-05-22 Sriraman Tallam <tmsriram@google.com>
9092
e1df38aa 9093 * testsuite/Makefile.am: Add -ffunction-sections to compile
4daadc0d
ST
9094 gc_comdat_test files. Add -Wl,--gc-sections to build
9095 gc_comdat_test.
9096 * testsuite/Makefile.in: Regenerate.
9097 * testsuite/gc_comdat_test.sh: Fix the condition around grep.
9098
531813ad
ST
90992009-05-21 Sriraman Tallam <tmsriram@google.com>
9100
9101 * object.cc (Sized_relobj::map_to_kept_section): Return NULL if the
9102 kept comdat section was garbage collected.
9103 * testsuite/Makefile.am: Add test gc_comdat_test.sh.
9104 * testsuite/Makefile.in: Regenerate.
9105 * testsuite/gc_comdat_test.sh: New file.
9106 * testsuite/gc_comdat_test_1.cc: New file.
9107 * testsuite/gc_comdat_test_2.cc: New file.
9108
65514900
CC
91092009-05-19 Doug Kwan <dougkwan@google.com>
9110
9111 * archive.cc (Archive::Archive): Move constructor from archive.h
9112 to here. Initialize no_export_.
9113 (Archive::get_elf_object_for_member): Set no_export flag of object.
9114 * archive.h (Archive::Archive): Move constructor body to
9115 archive.cc.
9116 (Archive::no_export): New method.
9117 (Archive::no_export_): New field.
9118 * object.h (Object::Object): Initialize no_export_ to false.
9119 (Object::no_export, Object::set_no_export): New methods.
9120 (Object::no_export_): New field.
9121 * options.cc (General_options::parse_exclude_libs): New method.
9122 (General_options::check_excluded_libs) Same.
9123 * options.h (exclude_libs): New option.
9124 (General_options::check_excluded_libs): New method declaration.
9125 (General_options::excluded_libs_): New field.
9126 * symtab.cc (Symbol_table::add_from_relobj): Hide symbols with
9127 default or protected visibility if an object has no-export flag set.
9128 testsuite/Makefile.am (check_PROGRAMS): Add exclude_libs_test.
9129 (check_SCRIPTS): Add exclude_libs_test.sh.
9130 (check_DATA): Add exclude_libs_test.syms.
9131 (MOSTLYCLEANFILES): Add exclude_libs_test.syms,
9132 libexclude_libs_test_1.a and libexclude_libs_test_2.a.
9133 (exclude_libs_test_SOURCES, exclude_libs_test_DEPENDENCIES,
9134 exclude_libs_test_LDFLAGS and exclude_libs_test_LDADD): Define.
9135 (exclude_libs_test.syms, libexclude_libs_test_1.a,
9136 libexclude_libs_test_2.a): New rules.
9137 * testsuite/Makefile.in: Regenerate.
9138 * testsuite/exclude_libs_test.c: New file.
9139 * testsuite/exclude_libs_test.sh: Ditto.
9140 * testsuite/exclude_libs_test_1.c: Ditto.
9141 * testsuite/exclude_libs_test_2.c: Ditto.
9142
1b77ea50
ILT
91432009-05-15 Ian Lance Taylor <iant@google.com>
9144
9145 * configure.ac: Check for declarations for cases where libiberty.h
9146 checks HAVE_DECL_xxx.
9147 * configure, config.in: Rebuild.
9148
072fe7ce
ILT
91492009-05-15 Mikolaj Zalewski <mikolajz@google.com>
9150
9151 * gold.h (Incremental_argument_list): Remove (invalid) forward
9152 declaration.
9153 * incremental.cc (Incremental_inputs::report_achive): New method.
9154 (Incremental_inputs::report_object): New method.
9155 (Incremental_inputs::report_script): New method.
9156 (Incremental_inputs::finalize_inputs): New method.
9157 (Incremental_inputs::finalize): Call finalize_inputs().
9158 (Incremental_inputs::sized_create_incremental_inputs_section_data):
9159 Create inputs entries.
9160 * incremental.h (Incremental_input_type): New enum.
9161 (Incremental_inputs::Incremental_input): Initialize new fields.
9162 (Incremental_inputs::report_inputs): New method.
9163 (Incremental_inputs::report_achive): New method.
9164 (Incremental_inputs::report_object): New method.
9165 (Incremental_inputs::report_script): New method.
9166 (Incremental_inputs::finalize_inputs): New method.
9167 (Incremental_inputs::Input_info): New struct.
9168 (Incremental_inputs::Input_info_map): New typedef.
9169 (Incremental_inputs::lock_): New field.
9170 (Incremental_inputs::Inputs_): New field.
9171 (Incremental_inputs::Inputs_map): New field.
9172 * main.cc (main): Call Incremental_input::report_inputs.
9173 * options.h (Input_argument_list): Typedef moved from
9174 Input_arguments.
9175 (Input_file_group::Files): Remove, use ::Input_argument_list.
9176 (Input_file_group::Input_argument_list): Remove, use
9177 ::Input_argument_list.
9178 * plugin.cc (Plugin_manager::add_input_file): Add error in
9179 incremental build.
9180 * read_syms.cc (do_read_syms): Call Incremental_input::report_*
9181 functions.
9182 * script.cc (read_input_script): Call
9183 Incremental_input::report_script.
9184 * script.h (Script_info): New class.
9185
b0481b0b
ILT
91862009-04-27 Ian Lance Taylor <iant@google.com>
9187
9188 * x86_64.cc (do_adjust_output_section): Set entsize to
9189 plt_entry_size.
9190
b22a5a41 91912009-04-23 Elliott Hughes <enh@google.com>
6d1e3092
CD
9192
9193 * output.cc (Output_file::close): After short writes, continue
9194 writing from the correct offset in the buffer being written.
9195
40fde488
CD
91962009-04-23 Chris Demetriou <cgd@google.com>
9197
9198 * configure.ac (HAVE_TR1_UNORDERED_MAP_REHASH): New define.
9199 * configure: Regenerate.
9200 * config.in: Regenerate.
9201 * gold.h: Avoid std::tr1::unordered_map and std::tr1::unordered_set
9202 if HAVE_TR1_UNORDERED_MAP_REHASH is not defined.
9203
3ce2c28e
ILT
92042009-04-21 Mikolaj Zalewski <mikolajz@google.com>
9205
9206 * incremental.cc (Incremental_inputs_header_data): Renamed from
9207 Incremental_input_header_data.
9208 (Incremental_inputs_header_data::data_size): New field.
9209 (Incremental_inputs_header_data::put_input_file_count): Renamed
9210 from input_file_count.
9211 (Incremental_inputs_header_data::put_command_line_offset): Renamed
9212 from command_line_offset.
9213 (Incremental_inputs_header_data::put_reserved): Renamed from
9214 put_reserved.
9215 (Incremental_inputs_entry_data): Renamed from
9216 Incremental_input_entry_data.
9217 (Incremental_inputs_entry_data::data_size): New field.
9218 (Incremental_inputs::report_command_line): New method.
9219 (Incremental_inputs::finalize): New method.
9220 (Incremental_inputs::create_incremental_inputs_data): New method.
9221 (Incremental_inputs::sized_create_incremental_inputs_data): New method.
9222 * incremental.h: New file.
9223 * layout.cc (Layout::Layout): Handle new incremental_inputs_.
9224 (Layout::finalize): Create incremental inputs section in
9225 incremental builds.
9226 (Layout::create_incremental_info_sections): New method.
9227 * layout.h (Layout::incremental_inputs): New method.
9228 (Layout::create_incremental_info_sections): New method.
9229 (Layout::incremental_inputs_): New field.
9230 * main.cc (main): Notify Incremental_input of the command line.
9231
e55bde5e
ILT
92322009-04-01 Ian Lance Taylor <iant@google.com>
9233 Mikolaj Zalewski <mikolajz@google.com>
9234
9235 * gold.h (reserve_unordered_map): Define, three versions, one for
9236 each version of Unordered_map.
9237 * layout.cc (Layout::Layout): Remove options parameter. Add
9238 number_of_input_files parameter. Don't initialize options_.
9239 Initialize number_of_input_files_ and resized_signatures_. Move
9240 sections_are_attached_.
9241 (Layout::layout_group): Reserve space for group_signatures_.
9242 (Layout::find_or_add_kept_section): Change name parameter to be a
9243 reference. Resize signatures_ map when it gets large enough.
9244 (Layout::layout_eh_frame): Use parameters->options() instead of
9245 this->options_.
9246 (Layout::make_output_section): Likewise.
9247 (Layout::attach_allocated_section_to_segment): Likewise.
9248 (Layout::finalize, Layout::create_executable_stack): Likewise.
9249 (Layout::set_segment_offsets, Layout::create_interp): Likewise.
9250 (Layout::finish_dynamic_section, Layout::write_binary): Likewise.
9251 * layout.h (class Layout): Update declarations. Remove options_
9252 field. Add number_of_input_files_ and resized_signatures_
9253 fields. Move sections_are_attached_ field.
9254 * main.cc (main): Pass number of input files to Layout
9255 constructor. Don't pass options.
9256
154b857c
ILT
92572009-03-30 Ian Lance Taylor <iant@google.com>
9258
9259 * ffsll.c (ffsll): Correct implementation.
9260
2f35ab9b
ILT
92612009-03-27 Ian Lance Taylor <iant@google.com>
9262
fd03461a
ILT
9263 * ffsll.c: New file.
9264 * configure.ac: Call AC_REPLACE_FUNCS on ffsll.
9265 * gold.h (ffsll): Declare if HAVE_FFSLL is not defined.
9266 * ftruncate.c (ftruncate): Declare before definition.
9267 * mremap.c (mremap): Likewise.
9268 * pread.c (pread): Likewise.
9269 * configure, Makefile.in, config.in: Rebuild.
9270
2f35ab9b
ILT
9271 * mremap.c: New file.
9272 * configure.ac: Call AC_REPLACE_FUNCS on mremap.
9273 * gold.h (MREMAP_MAYMOVE): Define if HAVE_MREMAP is not defined.
9274 (mremap): Declare if HAVE_MREMAP is not defined.
9275 * configure, Makefile.in, config.in: Rebuild.
9276
33aea2fd
CC
92772009-03-27 Cary Coutant <ccoutant@google.com>
9278
9279 * powerpc.cc (Target_powerpc::check_non_pic): Assert that output is
9280 position independent.
9281 * sparc.cc (Target_sparc::check_non_pic): Likewise.
9282 * x86_64.cc (Target_x86_64::check_non_pic): Likewise.
9283
6d479619
CC
92842009-03-24 Cary Coutant <ccoutant@google.com>
9285
9286 * symtab.h (needs_plt_entry): Check for unsatisfied reference from
9287 an executable.
9288 (needs_dynamic_reloc): Likewise.
9289
afc06bb8
ILT
92902009-03-24 Ian Lance Taylor <iant@google.com>
9291
9292 * yyscript.y (file_cmd): Recognize EXTERN.
9293 (extern_name_list, extern_name_list_body): New nonterminals.
9294 * script.cc (script_add_extern): Define.
9295 * script-c.h (script_add_extern): Declare.
9296
f6060a4d
ILT
92972009-03-24 Rafael Avila de Espindola <espindola@google.com>
9298
9299 * object.cc (is_elf_object): Define.
9300 * object.h (is_elf_object): Declare.
9301 * archive.cc (Archive::get_elf_object_for_member): Call
9302 is_elf_object.
33aea2fd 9303 * readsyms.cc (Read_symbols::do_read_symbols): Likewise.
f6060a4d 9304
26736d8e
ILT
93052009-03-24 Elliott Hughes <enh@google.com>
9306
9307 * output.cc (Output_file::map_anonymous): Define.
9308 (Output_file::map): Use map_anonymous. If the regular mmap fails,
9309 try an anonymous one. Report the size if the mmap fails.
9310 * output.h (class Output_file): Declare map_anonymous.
9311
22fd9730
ILT
93122009-03-24 Ian Lance Taylor <iant@google.com>
9313
9314 * target-select.cc (instantiate_target): Don't acquire the lock if
9315 the instantiated_target_ field has already been set.
9316
cb010894
ILT
93172009-03-23 Ian Lance Taylor <iant@google.com>
9318
7f055c20
ILT
9319 * gold-threads.h (class Initialize_lock): Define.
9320 * gold-threads.cc (class Initialize_lock_once): Define.
9321 (initialize_lock_control): New static variable.
9322 (initialize_lock_pointer): New static variable.
9323 (initialize_lock_once): New static function.
9324 (Initialize_lock::Initialize_lock): Define.
9325 (Initialize_lock::initialize): Define.
9326 * target-select.h: Include "gold-threads.h".
9327 (class Target_selector): Add lock_ and initialize_lock_ fields.
9328 Don't define instantiate_target, just declare it.
9329 * target-select.cc (Target_selector::Target_selector): Initialize
9330 new fields.
9331 (Target_selector::instantiate_target): Define.
9332 * descriptors.h: Include "gold-threads.h".
9333 (class Descriptors): Add initialize_lock_ field.
9334 * descriptors.cc (Descriptors::Descriptors): Initialize new
9335 field.
9336 (Descriptors::open): Use initialize_lock_ field
9337 * errors.h (class Errors): Add initialize_lock_ field.
9338 * errors.cc (Errors::Errors): Initialize new field.
9339 (Errors::initialize_lock): Use initialize_lock_ field.
9340 * powerpc.cc (class Target_selector_powerpc): Remove
9341 instantiated_target_ field. In do_recognize call
9342 instantiate_target rather than do_instantiate_target. In
9343 do_instantiate_target just allocate a new target.
9344 * sparc.cc (class Target_selector_sparc): Likewise.
9345
36959681
ILT
9346 * freebsd.h: New file.
9347 * i386.cc: Include "freebsd.h".
9348 (Target_i386): Derive from Target_freebsd rather than
9349 Sized_target.
9350 (Target_selector_i386): Derive from Target_selector_freebsd rather
9351 than Target_selector.
9352 * x86_64.cc: Include "freebsd.h".
9353 (Target_x86_64): Derive from Target_freebsd rather than
9354 Sized_target.
9355 (Target_selector_x86_64): Derive from Target_selector_freebsd
9356 rather than Target_selector.
9357 * target.h (class Target): Add adjust_elf_header and
9358 do_adjust_elf_header.
9359 * output.cc (Output_file_header:: do_sized_write): Call target
9360 adjust_elf_header routine.
9361 * configure.tgt: Set targ_osabi.
9362 * configure.ac: Define GOLD_DEFAULT_OSABI.
9363 * parameters.cc (Parameters::default_target): Pass
9364 GOLD_DEFAULT_OSABI to select_target.
9365 * target-select.h (class Target_selector): Make instantiate_target
9366 protected rather than private.
9367 * Makefile.am (HFILES): Add freebsd.h.
9368 * configure, Makefile.in, config.in: Rebuild.
9369
cb010894
ILT
9370 * merge.cc (do_add_input_section): Correct pend value. Change
9371 message about last entry not being null terminated from error to
9372 warning.
9373
0e879927
ILT
93742009-03-20 Mikolaj Zalewski <mikolajz@google.com>
9375
9376 * incremental.cc: New file.
9377 * Makefile.am (CCFILES): Add incremental.cc.
9378 * Makefile.in: Rebuild.
9379
41105937
PP
93802009-03-19 Paul Pluzhnikov <ppluzhnikov@google.com>
9381
9382 * layout.cc (Layout::output_section_name): Preserve names
9383 of '.note.' sections.
e1df38aa 9384
60439920
ILT
93852009-03-19 Ian Lance Taylor <iant@google.com>
9386
9387 * descriptors.cc (Descriptors::open): Check that the options are
9388 valid before using them.
9389
0d371ad3
ILT
93902009-03-18 Ian Lance Taylor <iant@google.com>
9391
9392 * script-sections.h: Include <list>.
9393 (class Script_sections): Change Sections_elements from std::vector
9394 to std::list. Typedef public Elements_iterator. Add
9395 orphan_section_placement_, data_segment_align_start_, and
9396 saw_data_segment_align_ fields. Remove data_segment_align_index_
9397 field.
9398 * script-sections.cc (class Orphan_section_placement): New class.
9399 (class Sections_element): Add virtual functions is_relro and
9400 orphan_section_init. Remove virtual function place_orphan_here.
9401 (class Output_section_definition): Add is_relro and
9402 orphan_section_init. Remove place_orphan_here.
9403 (class Orphan_output_section): Likewise.
9404 (Script_sections::Script_sections): Update for field changes.
9405 (Script_sections::data_segment_align): Set saw_data_segment_align_
9406 and data_segment_align_start_, not data_segment_align_index.
9407 (Script_sections::data_segment_relro_end): Check
9408 saw_data_segment_align_. Use data_segment_align_start_ rather
9409 than data_segment_align_index_.
9410 (Script_sections::place_orphan): Rewrite to use
9411 Orphan_section_placement.
9412
9201d894
ILT
94132009-03-17 Ian Lance Taylor <iant@google.com>
9414
9c5b8369
ILT
9415 * archive.cc (Archive::add_symbols): Check for a version attached
9416 to the symbol name in the archive map.
9417 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_11.
9418 (ver_test_11_SOURCES, ver_test_11_DEPENDENCIES): Define.
9419 (ver_test_11_LDFLAGS, ver_test_11_LDADD): Define.
9420 (ver_test_11.a): New target.
9421 * testsuite/Makefile.in: Rebuild.
9422
9201d894
ILT
9423 * configure.ac: Check for chsize and posix_fallocate. Replace
9424 ftruncate.
9425 * ftruncate.c: New file, from gnulib.
9426 * output.cc (posix_fallocate): Define dummy version if not
9427 HAVE_POSIX_FALLOCATE.
9428 (Output_file::map): Call posix_fallocate rather than lseek and
9429 write.
9430 * gold.h (ftruncate): Declare if not HAVE_FTRUNCATE.
9431 * configure, Makefile.in, config.in: Rebuild.
9432
ef4ab7a8 94332009-03-17 Paul Pluzhnikov <ppluzhnikov@google.com>
e1df38aa 9434
ef4ab7a8
PP
9435 * layout.h (Layout::create_note): Add section_name parameter.
9436 * layout.cc (Layout::create_note): Likewise.
9437 (Layout::create_build_id, Layout::create_gold_note): Fix callers.
e1df38aa 9438
8c500701
ILT
94392009-03-17 Ian Lance Taylor <iant@google.com>
9440
e85b18e1
ILT
9441 * descriptors.cc: Include "options.h".
9442 (FD_CLOEXEC, O_CLOEXEC): Define if not defined.
9443 (Descriptors::open): Always use O_CLOEXEC when opening a new
9444 descriptor. If we have a plugin, and O_CLOEXEC was not defined,
9445 then set FD_CLOEXEC.
9446
9efe6174
ILT
9447 * sparc.cc (class Target_sparc): Add has_got_section.
9448 (Target_sparc::Scan::global): If we see _GLOBAL_OFFSET_TABLE_,
9449 make sure we have a GOT section.
9450
9451 * sparc.cc (optimize_tls_reloc): Recognize R_SPARC_TLS_IE_ADD.
9452 (Target_sparc::Scan::local): Likewise.
9453 (Target_sparc::Scan::global): Likewise.
9454 (Target_sparc::Relocate::relocate): Likewise.
9455 (Target_sparc::Relocate::relocate_tls): Likewise.
9456
8c500701
ILT
9457 * symtab.cc (Symbol_table::define_default_version): New function,
9458 broken out of add_from_object.
9459 (Symbol_table::add_from_object): Call define_default_version.
9460 (Symbol_table::define_special_symbol): Add resolve_oldsym
9461 parameter. Change all callers. If the version for a symbol comes
9462 from a version script, resolve it with the symbol with the same
9463 name with no version. Also add the symbol without a version if
9464 appropriate.
9465 (do_define_in_output_data): If resolving with oldsym, don't delete
9466 sym.
9467 (do_define_in_output_segment): Likewise.
9468 (do_define_as_constant): Likewise.
9469 * symtab.h (class Symbol_table): Update declarations.
9470
f1ed28fb
ILT
94712009-03-13 Ian Lance Taylor <iant@google.com>
9472
15f8229b
ILT
9473 * readsyms.cc (Read_symbols::incompatible_warning): New function.
9474 (Read_symbols::requeue): New function.
9475 (Read_symbols::do_read_symbols): If make_elf_object fails because
9476 the target type is not configured, and the file was searched for,
9477 issue a warning and retry with the next directory.
9478 (Add_symbols::run): If the file has an incompatible format, and
9479 it was searched for, requeue the Read_symbols task. On error,
9480 release the object.
9481 * readsyms.h (class Read_symbols): Add dirindex_ field. Add
9482 dirindex parameter to constructor. Change all callers. Declare
9483 incompatible_warning and requeue.
9484 (class Add_symbols): Add dirpath_, dirindex_, mapfile_,
9485 input_argument_ and input_group_ fields. Add them to
9486 constructor. Change all callers.
9487 (class Read_script): Add dirindex_ field. Add it to constructor.
9488 Change all callers.
9489 * archive.cc (Archive::setup): Remove input_objects parameter.
9490 Change all callers.
9491 (Archive::get_file_and_offset): Likewise.
9492 (Archive::read_all_symbols): Likewise.
9493 (Archive::read_symbols): Likewise.
9494 (Archive::get_elf_object_for_member): Remove input_objects
9495 parameter. Add punconfigured parameter. Change all callers.
9496 (Archive::add_symbols): Change return type to bool. Check return
9497 value of include_member.
9498 (Archive::include_all_members): Likewise.
9499 (Archive::include_member): Change return type to bool. Return
9500 false if first included object has incompatible target. Set
9501 included_member_ field.
9502 (Add_archive_symbols::run): If add_symbols returns false, requeue
9503 Read_symbols task.
9504 * archive.h (class Archive): Add included_member_ field.
9505 Initialize it in constructor. Add input_file and searched_for
9506 methods. Update declarations.
9507 (class Add_archive_symbols): Add dirpath_, dirindex_, and
9508 input_argument_ fields. Add them to constructor. Change all
9509 callers.
9510 * script.cc: Include "target-select.h".
9511 (class Parser_closure): Add skip_on_incompatible_target_ and
9512 found_incompatible_target_ fields. Add
9513 skip_on_incompatible_target parameter to constructor. Change all
9514 callers. Add methods skip_on_incompatible_target,
9515 clear_skip_on_incompatible_target, found_incompatible_target, and
9516 set_found_incompatible_target.
9517 (read_input_script): Add dirindex parameter. Change all callers.
9518 If parser finds an incompatible target, requeue Read_symbols
9519 task.
9520 (script_set_symbol): Clear skip_on_incompatible_target in
9521 closure.
9522 (script_add_assertion, script_parse_option): Likewise.
9523 (script_start_sections, script_add_phdr): Likewise.
9524 (script_check_output_format): New function.
9525 * script.h (read_input_script): Update declaration.
9526 * script-c.h (script_check_output_format): Declare.
9527 * yyscript.y (file_cmd): Handle OUTPUT_FORMAT.
9528 (ignore_cmd): Remove OUTPUT_FORMAT.
9529 * fileread.cc (Input_file::Input_file): Add explicit this.
9530 (Input_file::will_search_for): New function.
9531 (Input_file::open): Add pindex parameter. Change all callers.
9532 * fileread.h (class Input_file): Add input_file_argument method.
9533 Declare will_search_for. Update declarations.
9534 * object.cc (make_elf_object): Add punconfigured parameter.
9535 Change all callers.
9536 * object.h (class Object): Make input_file public. Add
9537 searched_for method.
9538 (make_elf_object): Update declaration.
9539 * dirsearch.cc (Dirsearch::find): Add pindex parameter. Use it to
9540 restart search.
9541 * dirsearch.h (class Dirsearch): Update declaration.
9542 * options.h (class General_options): Add --warn-search-mismatch.
9543 * parameters.cc (Parameters::is_compatible_target): New function.
9544 * parameters.h (class Parameters): Declare is_compatible_target.
9545 * workqueue.cc (Workqueue::add_blocker): New function.
9546 * workqueue.h (class Workqueue): Declare add_blocker.
9547
f1ed28fb
ILT
9548 * fileread.cc (Input_file::open): Remove options parameter.
9549 Change all callers.
9550 (Input_file::open_binary): Likewise.
9551 * script.cc (read_input_script): Likewise.
9552 * readsyms.h (class Read_symbols): Remove options_ field. Remove
9553 options parameter from constructor. Change all callers.
9554 (class Read_script): Likewise.
9555 * fileread.h (class Input_file): Update declarations.
9556 * script.h (read_input_script): Update declaration.
9557
34dd024a
NC
95582009-03-10 Nick Clifton <nickc@redhat.com>
9559
9560 * po/es.po: New Spanish translation.
9561
6d71b17c
CC
95622009-03-06 Cary Coutant <ccoutant@google.com>
9563
9564 * options.cc (parse_short_option): Keep dash_z from registering itself.
9565
031cdbed
ILT
95662009-03-03 Ian Lance Taylor <iant@google.com>
9567
9568 PR 9918
9569 * target-reloc.h (relocate_section): Pass output_section to
9570 relocate.
9571 * i386.cc (Target_i386::should_apply_static_reloc): Add
9572 output_section parameter. Change all callers.
9573 (Target_i386::Relocate::relocate): Add output_section parameter.
9574 * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
9575 * sparc.cc (Target_sparc::Relocate::relocate): Likewise.
9576 * powerpc.cc (Target_powerpc::Relocate::relocate): Likewise.
9577 * testsuite/two_file_shared.sh: New script.
9578 * testsuite/Makefile.am (check_SCRIPTS): Add two_file_shared.sh.
9579 (check_DATA): Add two_file_shared.dbg.
9580 (two_file_shared.dbg): New target.
9581 * testsuite/Makefile.in: Rebuild.
9582
15d5fa16
ILT
95832009-03-01 Ian Lance Taylor <iant@google.com>
9584
9585 * configure.ac: Check for byteswap.h.
9586 * configure: Rebuild.
9587 * config.in: Rebuild.
9588
8a4c0b0d
ILT
95892009-03-01 Mikolaj Zalewski <mikolajz@google.com>
9590
9591 * layout.cc (Layout::find_or_add_kept_section): New function.
9592 (Layout::add_comdat): Removed.
9593 * layout.h (struct Kept_section): Move out of class Layout.
9594 Remove trailing underscores from field names. Add group_sections
9595 field. Rename group_ field to is_group. Change all uses.
9596 (class Layout): Declare find_or_add_kept_section, not add_comdat.
9597 * object.cc (Sized_relobj::Sized_relobj): Don't initialize
9598 comdat_groups_ field.
9599 (Sized_relobj::include_section_group): Use
9600 find_or_add_kept_section and Kept_section::group_sections.
9601 (Sized_relobj::include_linkonce_section): Likewise.
9602 * object.cc (class Sized_relobj): Don't define Comdat_group or
9603 Comdat_group_table. Remove find_comdat_group and
9604 add_comdat_group. Remove comdat_groups_ field.
9605 * plugin.cc (include_comdat_group): Use
9606 Layout::find_or_add_kept_section.
9607
b4ecf66b
ILT
96082009-02-28 Ian Lance Taylor <iant@google.com>
9609
14359ca0
ILT
9610 * README: --gc-sections and map files are now supported. Document
9611 some build requirements.
9612
b4ecf66b
ILT
9613 PR 6992
9614 * symtab.cc (Symbol_table::sized_write_section_symbol): In a
9615 relocatable link set the value of the section symbol to zero.
9616 * object.cc (Sized_relobj::do_finalize_local_symbols): In a
9617 relocatable link don't include the section address in the local
9618 symbol value.
9619
0602e05a
ILT
96202009-02-27 Ian Lance Taylor <iant@google.com>
9621
fd9d194f
ILT
9622 PR 6811
9623 * options.h (class Search_directory): Add is_system_directory.
9624 (class General_options): Declare is_in_system_directory.
9625 * options.cc (get_relative_sysroot): Make static.
9626 (get_default_sysroot): Make static.
9627 (General_optoins::is_in_system_directory): New function.
9628 * fileread.cc (Input_file::is_in_system_directory): New function.
9629 * fileread.h (class Input_file): Declare is_in_system_directory.
9630 * object.h (class Object): Add is_in_system_directory.
9631 (class Input_objects): Remove system_library_directory_ field.
9632 * object.cc (Input_objects::add_object): Don't set
9633 system_library_directory_.
9634 (input_objects::found_in_system_library_directory): Remove.
9635 * symtab.cc (Symbol_table::write_globals): Remove input_objects
9636 parameter. Change all callers.
9637 (Symbol_table::sized_write_globals): Likewise.
9638 (Symbol_table::warn_about_undefined_dynobj_symbol): Likewise.
9639 Call Object::is_in_system_directory.
9640 * symtab.h (class Symbol_table): Update declarations.
9641
61edd21f
ILT
9642 PR 5990
9643 * descriptors.h (Open_descriptor): Add is_on_stack field.
9644 * descriptors.cc (Descriptors::open): If the descriptor is on the
9645 top of the stack, remove it. Initialize is_on_stack field.
9646 (Descriptors::release): Only add pod to stack if it is not on the
9647 stack already.
9648 (Descriptors::close_some_descriptor): Clear stack_next and
9649 is_on_stack fields.
9650
e29e076a
ILT
9651 PR 7091
9652 * output.cc (Output_section::find_starting_output_address): Rename
9653 from starting_output_address; add PADDR parameter; change return
9654 type.
9655 * output.h (class Output_section): Declare
9656 find_starting_output_address instead of starting_output_address.
9657 * object.cc (Sized_relobj::do_finalize_local_symbols): Handle a
9658 section symbol for which we can't find a merge section.
9659
0602e05a
ILT
9660 PR 9836
9661 * symtab.cc (Symbol_table::add_from_object): If the visibility is
9662 hidden or internal, force the symbol to be local.
9663 * resolve.cc (Symbol::override_visibility): Define.
9664 (Symbol::override_base): Use override_visibility.
9665 (Symbol_table::resolve): Likewise.
9666 (Symbol::override_base_with_special): Likewise.
9667 (Symbol_table::override_with_special): If the visibility is hidden
9668 or internal, force the symbol to be local.
9669 * symtab.h (class Symbol): Add set_visibility and
9670 override_visibility.
9671 * testsuite/ver_test_1.sh: New file.
9672 * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_1.sh.
9673 (check_DATA): Add ver_test_1.syms.
9674 (ver_test_1.syms): New target.
9675 * testsuite/Makefile.in: Rebuild.
9676
401a9a73
CC
96772009-02-25 Cary Coutant <ccoutant@google.com>
9678
9679 * layout.cc (Layout::choose_output_section): Don't rename sections
9680 when using a linker script that has a SECTIONS clause.
9681 * Makefile.in: Regenerate.
9682
9683 * testsuite/Makefile.am (script_test_5.sh): New test case.
9684 * testsuite/Makefile.in: Regenerate.
9685 * testsuite/script_test_5.cc: New file.
9686 * testsuite/script_test_5.sh: New file.
9687 * testsuite/script_test_5.t: New file.
9688
f488e4b0
CC
96892009-02-13 Rafael Avila de Espindola <espindola@google.com>
9690
9691 * archive.cc (Archive::include_member): Update calls to add_symbols.
9692 * dynobj.cc (Sized_dynobj<size, big_endian>::make_version_map): Add
9693 the Layout argument.
9694 * dynobj.h (do_add_symbols): Add the Layout argument.
9695 * object.cc (Sized_relobj<size, big_endian>::do_add_symbols): Add the
9696 Layout argument.
9697 * object.h (Object::add_symbols): Add the Layout argument.
9698 (Object::do_add_symbols): Add the Layout argument.
9699 (Sized_relobj::do_add_symbols): Add the Layout argument.
9700 * plugin.cc (Sized_pluginobj<size, big_endian>::do_add_symbols):
9701 Unify the two versions.
9702 (Add_plugin_symbols): Remove.
9703 * plugin.h (Pluginobj::add_symbols, Pluginobj::do_add_symbols): Remove.
9704 (Sized_pluginobj::do_add_symbols): Unify the two versions.
9705 (Add_plugin_symbols): Remove.
9706 * readsyms.cc (Read_symbols::do_read_symbols): Update call to
9707 Add_symbols. Use Add_symbols instead of Add_plugin_symbols.
9708 (Add_symbols::run): Make it work with Pulginobj.
9709
89dd1680
ILT
97102009-02-06 Ian Lance Taylor <iant@google.com>
9711
9712 * object.cc (Sized_relobj::do_layout): Make info message start
9713 with lower case letter.
9714
266d0a74
ILT
97152009-02-06 Mikolaj Zalewski <mikolajz@google.com>
9716
602b464e
ILT
9717 * binary.cc: Fix file comment.
9718
266d0a74
ILT
9719 * options.h (enum Incremental_disposition): Define.
9720 (class General_options): Add new options: --incremental,
9721 --incremental_changed, --incremental_unchanged,
9722 --incremental_unknown. Add incremental_disposition_ and
9723 implicit_incremental_ fields.
9724 (General_options::incremental_disposition): New function.
9725 (class Position_dependent_options): Add incremental_disposition
9726 option.
9727 (Position_dependent_options::copy_from_options): Set incremental
9728 dispositions.
9729 * options.cc (General_options::parse_incremental_changed): New
9730 function.
9731 (General_options::parse_incremental_unchanged): New function.
9732 (General_options::parse_incremental_unknown): New function.
9733 (General_options::General_options): Initialize new fields
9734 incremental_disposition_ and implicit_incremental_.
9735 (General_options::finalize): Check for uasge of --incremental-*
9736 without --incremental.
9737
f073bbf7
CD
97382009-02-06 Chris Demetriou <cgd@google.com>
9739
9740 * gold.h (gold_undefined_symbol): Change to take only a Symbol
9741 pointer and to report location as the file name associated with
9742 the symbol.
9743 (gold_undefined_symbol_at_location): New function to replace the
9744 old gold_undefined_symbol functionality.
9745 * target-reloc.h (relocate_section): Update to use
9746 gold_undefined_symbol_at_location.
9747 * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
9748 Call gold_undefined_symbol function rather than gold_error.
9749 * errors.h (Errors::undefined_symbol): Take location as a
9750 string, rather than calculating it from a relocation.
9751 * errors.cc (Errors::fatal): Print "fatal error:" before the
9752 formatted message.
9753 (Errors::error, Errors::error_at_location): Print "error: "
9754 before the formatted message.
9755 (Errors::undefined_symbol): Take location as a string, rather
9756 than calculating it from a relocation.
9757 (gold_undefined_symbol_at_location): New function akin to
9758 old gold_undefined_symbol, calculates location from relocation.
9759 (gold_undefined_symbol): Change to take only a Symbol pointer
9760 and to report location as the file name associated with the symbol.
9761 * testsuite/debug_msg.sh: Update for changed error messages.
9762 * testsuite/undef_symbol.sh: Likewise.
9763
8e94a90c
ILT
97642009-02-04 Duncan Sands <baldrick@free.fr>
9765
9766 PR 9812
9767 * reduced_debug_output.h
9768 (Output_reduced_debug_abbrev_section::failed): Use format for
9769 gold_warning.
9770 (Output_reduced_debug_info_section::faild): Likewise.
9771
88a0e15b
ILT
97722009-01-31 Mikolaj Zalewski <mikolajz@google.com>
9773
9774 * script.cc (Lazy_demangler): New class.
9775 (Version_script_info::get_symbol_version_helper): Demangle a
9776 symbol only once.
9777
5efc7cd2
CC
97782009-01-29 Cary Coutant <ccoutant@google.com>
9779
9780 * i386.cc (Target_i386::Relocate::relocate): Recognize non-PIC calls
9781 to __tls_get_addr.
9782 * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
9783
e0ebcf42
ILT
97842009-01-28 Ian Lance Taylor <iant@google.com>
9785
5efc7cd2 9786 * version.cc (version_string): Bump to 1.9.
75fe7426 9787
e0ebcf42
ILT
9788 * gold.h: Include <cstring> and <stdint.h>.
9789 * version.cc: Include <cstdio>.
9790 * object.cc (Sized_relobj::do_layout): Initialize gc_sd to avoid a
9791 warning.
9792 * reduced_debug_output.cc (insert_into_vector): Rename from
9793 Insert_into_vector; change all callers. Use Swap_unaligned to
9794 avoid aliasing issue; remove union since it is unnecessary.
9795
8e2813be 97962009-01-27 Sriraman Tallam <tmsriram@google.com>
6d03d481
ST
9797
9798 * Makefile.am (CCFILES): Add gc.cc.
9799 (HFILES): Add gc.h.
9800 * Makefile.in: Regenerate.
9801 * gold.cc (Gc_runner): New class.
9802 (queue_initial_tasks): Call garbage collection related tasks
9803 when corresponding options are invoked.
9804 (queue_middle_gc_tasks): New function.
9805 (queue_middle_tasks): Reorder tasks to allow relocs to be read and
9806 processed early before laying out sections during garbage collection.
9807 * gold.h (queue_middle_gc_tasks): New function.
9808 (is_prefix_of): Move from "layout.cc".
9809 * i386.cc (Target_i386::gc_process_relocs): New function.
9810 * layout.cc (is_prefix_of): Remove. Move to "gold.h"
9811 * main.cc (main): Create object of class "Garbage_collection".
9812 * object.cc (Relobj::copy_symbols_data): New function.
9813 (Relobj::is_section_name_included): New function.
e1df38aa
NC
9814 (Sized_relobj::do_layout): Allow this function to be called twice
9815 during garbage collection and defer layout of section during the
6d03d481
ST
9816 first call.
9817 * object.h (Relobj::get_symbols_data): New function.
9818 (Relobj::is_section_name_included): New function.
9819 (Relobj::copy_symbols_data): New function.
9820 (Relobj::set_symbols_data): New function.
9821 (Relobj::get_relocs_data): New function.
9822 (Relobj::set_relocs_data): New function.
9823 (Relobj::is_output_section_offset_invalid): New pure virtual function.
9824 (Relobj::gc_process_relocs): New function.
9825 (Relobj::do_gc_process_relocs): New pure virtual function.
9826 (Relobj::sd_): New data member.
9827 (Sized_relobj::is_output_section_offset_invalid): New function.
9828 (Sized_relobj::do_gc_process_relocs): New function.
9829 * options.h (General_options::gc_sections): Modify to not be a no-op.
9830 (General_options::print_gc_sections): New option.
9831 * plugin.cc (Plugin_finish::run): Remove function call to
9832 Plugin_manager::layout_deferred_objects. Move it to "gold.cc".
9833 * powerpc.cc (Target_powerpc::gc_process_relocs): New function.
9834 * reloc.cc (Read_relocs::run): Add task to process relocs and
9835 determine unreferenced sections when doing garbage collection.
9836 (Gc_process_relocs): New class.
9837 (Sized_relobj::do_gc_process_relocs): New function.
9838 (Sized_relobj::do_scan_relocs): Don't try to scan the relocs for
9839 sections that are garbage collected.
9840 * reloc.h (Gc_process_relocs): New class.
9841 * sparc.cc (Target_sparc::gc_process_relocs): New function.
9842 * symtab.cc (Symbol::should_add_dynsym_entry): Do not add entries for
9843 symbols whose corresponding sections are garbage collected.
9844 (Symbol_table::Symbol_table): Add new parameter for the garbage
9845 collection object.
9846 (Symbol_table::gc_mark_undef_symbols): New function.
9847 (Symbol_table::gc_mark_symbol_for_shlib): New function.
9848 (Symbol_table::gc_mark_dyn_syms): New function.
9849 (Symbol_table::resolve): Do not treat symbols seen in dynamic objects
9850 as garbage.
9851 (Symbol_table::add_from_object): Likewise.
9852 (Symbol_table::add_from_relobj): When building shared objects, do not
9853 treat externally visible symbols as garbage.
9854 (Symbol_table::sized_finalize_symbol): Do not check dynamic symbol
9855 table information for static and relocatable links.
9856 * symtab.h (Symbol_table::set_gc): New function.
9857 (Symbol_table::gc): New function.
9858 (Symbol_table::gc_mark_undef_symbols): New function.
9859 (Symbol_table::gc_mark_symbol_for_shlib): New function.
9860 (Symbol_table::gc_mark_dyn_syms): New function.
9861 (Symbol_table::gc_): New data member.
e1df38aa 9862 * target.h (Sized_target::gc_process_relocs): New pure virtual
6d03d481
ST
9863 function.
9864 * x86_64.cc (Target_x86_64::gc_process_relocs): New function.
9865 * testsuite/testfile.cc (Target_test::gc_process_relocs): New function.
9866
3b293544
CF
98672009-01-20 Chris Faylor <me.sourceware@sourceware.org>
9868
9869 * options.h (General_options::gc_sections): Define as a no-op for now.
9870 (General_options::no_keep_memory): Ditto.
9871 (General_options::Bshareable): Define.
9872 * options.cc (General_options::finalize): Honor -Bshareable.
9873
83d22aa8
AS
98742009-01-20 Andreas Schwab <schwab@suse.de>
9875
9876 * powerpc.cc (Powerpc_relocate_functions::rel16_ha): Don't try to
9877 read the value in the contents, since we don't use it. Use the
9878 template endianness when writing.
9879 (Relocate::relocate): Use it for R_PPC_REL16_HA.
9880
cd536b21
AS
98812009-01-19 Andreas Schwab <schwab@suse.de>
9882
9883 * configure.tgt (powerpc64-*): Fix targ_obj.
9884
99e9a495
ILT
98852009-01-15 Ian Lance Taylor <iant@google.com>
9886
9887 * object.cc (Sized_relobj::write_local_symbols): Don't write out
9888 local symbols when stripping all symbols.
9889
bbbfea06
CC
98902009-01-14 Cary Coutant <ccoutant@google.com>
9891
99e9a495 9892 * output.cc (Output_reloc): Add explicit instantiations.
bbbfea06 9893
0f7c0701
CC
98942009-01-14 Cary Coutant <ccoutant@google.com>
9895
9896 * archive.cc (Archive::get_elf_object_for_member): Remove call
9897 to File_read::claim_for_plugin.
9898 * descriptors.cc (Descriptors::open): Remove reference to
9899 is_claimed.
9900 (Descriptors::claim_for_plugin): Remove.
9901 * descriptors.h (Descriptors::claim_for_plugin): Remove.
9902 (Descriptors::is_claimed): Remove.
9903 (claim_descriptor_for_plugin): Remove.
9904 * fileread.cc (File_read::claim_for_plugin): Remove.
9905 * fileread.h (File_read::claim_for_plugin): Remove.
9906 (File_read::descriptor): Reopen descriptor if necessary.
9907 * plugin.cc (Plugin::load): Add two new APIs to transfer vector.
9908 (Plugin_manager::all_symbols_read): Add task parameter. Change
9909 all callers.
9910 (Plugin_manager::get_input_file): New function.
9911 (Plugin_manager::release_input_file): New function.
9912 (Pluginobj::Pluginobj): Add filesize parameter and initialize
9913 corresponding data member.
9914 (Sized_pluginobj::Sized_pluginobj): Add filesize parameter
9915 and pass to base constructor. Change all callers.
9916 (get_input_file, release_input_file): New functions.
9917 (make_sized_plugin_object): Add filesize parameter. Change all callers.
9918 * plugin.h (Plugin_manager::Plugin_manager): Initialize task_ member.
9919 (Plugin_manager::all_symbols_read): Add task parameter.
9920 (Plugin_manager::get_input_file): New function.
9921 (Plugin_manager::release_input_file): New function.
9922 (Plugin_manager::task_): New data member.
9923 (Pluginobj::Pluginobj): Add filesize parameter.
9924 (Pluginobj::filename): New function.
9925 (Pluginobj::descriptor): New function.
9926 (Pluginobj::filesize): New function.
9927 (Pluginobj::filesize_): New data member.
9928 (Sized_pluginobj::Sized_pluginobj): Add filesize parameter.
9929 * readsyms.cc (Read_symbols::do_read_symbols): Remove call to
9930 File_read::claim_for_plugin; use Object::unlock to unlock the file.
9931
9932 * testsuite/Makefile.am (plugin_test_4): New test case for plugins
9933 with archive libraries.
9934 * testsuite/Makefile.in: Regenerate.
9935 * testsuite/plugin_test.c (struct sym_info): New type.
9936 (get_input_file, release_input_file): New static variables.
9937 (onload): Capture new transfer vector entries.
9938 (claim_file_hook): Stop reading at end of file according to filesize.
9939 Factor out parsing of readelf output into separate function.
9940 (all_symbols_read_hook): Exercise get_input_file and release_input_file
9941 APIs and get the source file name from the symbol table. Convert
9942 source file name to corresponding object file name. Print info
9943 message when adding new input files.
9944 (parse_readelf_line): New function.
9945 * testsuite/plugin_test_1.sh: Add checks for new info messages.
9946 * testsuite/plugin_test_2.sh: Likewise.
9947 * testsuite/plugin_test_3.sh: Likewise.
9948 * testsuite/plugin_test_4.sh: New test case.
9949
62a6d109
ILT
99502009-01-07 Ian Lance Taylor <iant@google.com>
9951
9952 * version.cc (version_string): Bump to 1.8.
9953
483620e8
CC
99542008-12-23 Cary Coutant <ccoutant@google.com>
9955
9956 * gold.cc (gold_exit): Call plugin cleanup handlers on exit.
9957 * plugin.cc (Plugin_manager::finish): Rename as
9958 layout_deferred_objects. Move cleanup to separate function.
9959 (Plugin_manager::cleanup): New function.
9960 (Plugin_finish::run): Call layout_deferred_objects and cleanup
9961 separately.
9962 * plugin.h (Plugin_manager::finish): Rename as
9963 layout_deferred_objects.
9964 (Plugin_manager::cleanup): New function.
9965 (Plugin_manager::cleanup_done): New field.
9966
d66a9eb3
CC
99672008-12-23 Cary Coutant <ccoutant@google.com>
9968
9969 * plugin.cc (is_visible_from_outside): New function.
9970 (Pluginobj::get_symbol_resolution_info): Call is_visible_from_outside
9971 so we don't return "IR only" status for exported symbols or -r links.
9972
9973 * testsuite/Makefile.am (plugin_test_3): New test case.
9974 * testsuite/Makefile.in: Regenerate.
9975 * testsuite/plugin_test_3.sh: New file.
9976
5995b570
CC
99772008-12-22 Cary Coutant <ccoutant@google.com>
9978
9979 * object.cc (Sized_relobj::layout_section): New function.
9980 (Sized_relobj::do_layout): Defer layout of input sections until after
9981 plugin has provided replacement files.
9982 (Sized_relobj::do_layout_deferred_sections): New function.
9983 * object.h (Relobj::set_section_offset): Remove virtual keyword.
9984 (Relobj::layout_deferred_sections): New function.
9985 (Relobj::do_layout_deferred_sections): New function.
9986 (Sized_relobj::do_layout_deferred_sections): New function.
9987 (Sized_relobj::layout_section): New function.
9988 (Sized_relobj::Deferred_layout): New structure.
9989 (Sized_relobj::deferred_layout_): New field.
9990 * plugin.cc (Plugin_manager::finish): Renamed, was cleanup.
9991 Change all callers. Layout deferred sections.
9992 (class Plugin_finish): Renamed, was Plugin_cleanup. Change all
9993 references.
9994 (Plugin_hook::run): Move code from do_plugin_hook inline.
9995 (Plugin_hook::do_plugin_hook): Remove.
9996 * plugin.h (Plugin_manager::Plugin_manager): Add missing initializers.
9997 (Plugin_manager::finish): Renamed, was cleanup.
9998 (Plugin_manager::should_defer_layout): New function.
9999 (Plugin_manager::add_deferred_layout_object): New function.
10000 (Plugin_manager::Deferred_layout_list): New type.
10001 (Plugin_manager::deferred_layout_objects_): New field.
10002 (Plugin_hook::do_plugin_hook): Remove.
10003
ee769c88
ILT
100042008-12-17 Ian Lance Taylor <iant@google.com>
10005
10006 * options.h (class General_options): Add --no case for
10007 --export-dynamic.
10008
abc8dcba
CC
100092008-12-16 Cary Coutant <ccoutant@google.com>
10010
10011 * plugin.cc (Plugin::load): Move LDPT_MESSAGE to front of transfer
10012 vector.
10013 (Plugin_manager::claim_file): Create plugin object even if
10014 plugin did not call the add_symbols callback.
10015 (Plugin_obj::get_symbol_resolution_info): Guard against plugin
10016 asking for more symbols than were added.
10017 * testsuite/Makefile.am (plugin_test_1): Add test case with
10018 no global symbols.
10019 (empty.syms): New target.
10020 * testsuite/Makefile.in: Regenerate.
10021 * testsuite/plugin_test.c (claim_file_hook): Add new debug
10022 message. Don't call add_symbols if no globals.
10023 (all_symbols_read_hook): Don't provide replacement for empty
10024 claimed file.
10025
b0074644
ILT
100262008-12-12 Ian Lance Taylor <iant@google.com>
10027
68943102
ILT
10028 * target-reloc.h (Default_scan_relocatable_relocs): Only discard
10029 r_type == 0 for a local symbol with r_sym == 0.
10030 (scan_relocatable_relocs): Pass r_sym to
10031 local_non_section_strategy.
10032 * reloc.cc (Emit_relocs_strategy::local_non_section_strategy): Add
10033 r_sym parameter.
10034
b0074644
ILT
10035 * configure.ac: Update test for TLS descriptors: they are
10036 supported as of glibc 2.9.
10037 * configure: Rebuild.
10038
c2508178
ILT
100392008-12-11 Ian Lance Taylor <iant@google.com>
10040
10041 PR 7091
10042 * target-reloc.h (Default_scan_relocatable_relocs): For each
10043 function, map r_type == 0 to RELOC_DISCARD.
10044
2756a258
CC
100452008-12-10 Cary Coutant <ccoutant@google.com>
10046
10047 * layout.cc (Layout::add_comdat): Allow COMDAT group from a replacement
10048 object to override a kept COMDAT group from a plugin object.
10049
bb6f53d3
ILT
100502008-12-09 Ian Lance Taylor <iant@google.com>
10051
fbc558e1
ILT
10052 PR 7088
10053 * yyscript.y (file_cmd): Handle INPUT.
10054
bb6f53d3
ILT
10055 * testsuite/initpri1.c: Change all declarations to be full
10056 prototypes by adding void, to avoid compiler warnings.
10057
4674ecfc
CC
100582008-12-05 Rafael Avila de Espindola <espindola@google.com>
10059
10060 * options.cc (General_options::parse_plugin_opt): New.
10061 (General_options::add_plugin): The argument now is just the filename.
10062 (General_options::add_plugin_option): New.
10063 * options.h (plugin_opt): New.
10064 (add_plugin): Change argument name.
10065 (add_plugin_option): New.
10066 * plugin.cc (Plugin::load): Don't parse the plugin option.
10067 * plugin.h (Plugin::Plugin): Rename argument. Init filename_.
10068 (Plugin::add_option): New.
10069 (Plugin::args_): Change type.
10070 (Plugin::filename_): New.
10071 (Plugin_manager::add_plugin_option): New.
10072 * testsuite/Makefile.am (plugin_test_1): Use new syntax.
10073 * testsuite/Makefile.in: Regenerate.
10074
fd06b4aa
CC
100752008-12-05 Cary Coutant <ccoutant@google.com>
10076
10077 * layout.cc (Layout::include_section): Check for SHF_EXCLUDE.
10078 Handle --strip-lto-sections option.
10079 * options.h (strip_lto_sections): New option.
10080
6c52134c
CC
100812008-12-01 Cary Coutant <ccoutant@google.com>
10082
10083 * plugin.cc (ld_plugin_message): Change format parameter to const.
10084 Fix mismatch between new[] and delete.
10085
a45248e0
CC
100862008-11-14 Cary Coutant <ccoutant@google.com>
10087
10088 * reloc.cc (Sized_relobj::do_read_relocs): Use constant invalid_address
10089 instead of -1U.
10090
c82fbeee
CS
100912008-11-05 Craig Silverstein <csilvers@google.com>
10092
10093 * options.cc (General_options::parse_dynamic_list): New function.
10094 * options.h (General_options): New flags dynamic_list,
10095 dynamic_list_data, dynamic_list_cpp_new, and
10096 dynamic_list_cpp_typeinfo. New variable dynamic_list_.
10097 (General_options::in_dynamic_list): New function.
10098 * script.cc (Lex::Mode): New enum DYNAMIC_LIST.
10099 (Lex::can_start_name): Add support for DYNAMIC_LIST mode.
10100 (Lex::can_continue_name): Likewise.
10101 (yylex): Likewise.
10102 (read_script_file): New parameter script_options.
10103 (read_dynamic_list): New function.
10104 (Script_options::define_dynamic_list): New function.
10105 (dynamic_list_keyword_parsecodes): New variable.
10106 (dynamic_list_keywords): New variable.
10107 * script.h (Script_options::define_dynamic_list): New function
10108 prototype.
10109 (read_dynamic_list): New function prototype.
10110 * symtab.cc (strprefix): New macro.
10111 (Symbol::should_add_dynsym_entry): Support dynamic_list,
10112 dynamic_list_data, dynamic_list_cpp_new, and
10113 dynamic_list_cpp_typeinfo.
10114 * yyscript.y (PARSING_DYNAMIC_LIST): New token.
10115 (dynamic_list_expr): New rule.
10116 (dynamic_list_nodes): Likewise.
10117 (dynamic_list_node): Likewise.
10118 * testsuite/Makefile.am (dynamic_list): New test.
10119 * testsuite/Makefile.in: Regenerated.
10120 * testsuite/dynamic_list.t: New file.
10121 * testsuite/dynamic_list.sh: New file.
10122
e0bb29a5
CS
101232008-11-05 Craig Silverstein <csilvers@google.com>
10124
10125 * testsuite/tls_test_c.c: Add prototype for t11 and t11_last.
10126 * testsuite/tls_test_c.c (t11): Add explicit "void" to prototype.
10127 (t11_last): Likewise.
10128 * testsuite/ver_test_6.c (main): Likewise.
10129
4e1e25e0
CC
101302008-10-07 Cary Coutant <ccoutant@google.com>
10131
10132 * options.c (General_options::finalize): Add check for -static and
10133 -shared.
10134 * gold.cc (queue_middle_tasks): Assert that list of dynamic objects
10135 is not empty.
10136
92f03fcb
CC
101372008-10-02 Cary Coutant <ccoutant@google.com>
10138
10139 * plugin.cc (make_sized_plugin_object): Fix conditional
10140 compilation to work when not all targets are enabled.
10141
fbd8a257
CC
101422008-09-29 Cary Coutant <ccoutant@google.com>
10143
10144 * archive.cc (Archive::get_file_and_offset): Use filename instead
10145 of name to get library path.
10146 (Archive::include_member): Unlock external member of a thin archive.
10147
10148 * testsuite/Makefile.am (TEST_AR): New variable.
10149 (thin_archive_test_1): New test.
10150 (thin_archive_test_2): New test.
81636b3f
CC
10151 * testsuite/Makefile.in: Regenerate.
10152 * testsuite/thin_archive_main.cc: New file.
10153 * testsuite/thin_archive_test_1.cc: New file.
10154 * testsuite/thin_archive_test_2.cc: New file.
10155 * testsuite/thin_archive_test_3.cc: New file.
10156 * testsuite/thin_archive_test_4.cc: New file.
fbd8a257 10157
eff45813
CC
101582008-09-29 Cary Coutant <ccoutant@google.com>
10159
10160 * mapfile.cc (Mapfile::print_input_section): Change -1U to -1ULL.
10161 * object.cc (Sized_relobj::do_layout): Use constant invalid_address
10162 instead of -1U.
10163 (Sized_relobj::do_finalize_local_symbols): Likewise.
10164 (Sized_relobj::map_to_kept_section): Likewise.
10165 * object.h (Sized_relobj::invalid_address): New constant.
10166 (Sized_relobj::do_output_section_offset): Check for invalid_address
10167 and return -1ULL.
10168 * output.cc (Output_reloc::local_section_offset): Use constant
10169 invalid_address instead of -1U.
10170 (Output_reloc::get_address): Likewise.
10171 (Output_section::output_address): Change -1U to -1ULL.
10172 * output.h (Output_reloc::invalid_address): New constant.
10173 * reloc.cc (Sized_relobj::write_sections): Use constant
10174 invalid_address instead of -1U.
10175 (Sized_relobj::relocate_sections): Likewise.
10176 * symtab.cc (Symbol_table::sized_finalize_symbol): Handle symbol
10177 values for merge sections.
10178 * target-reloc.h (relocate_for_relocatable): Use constant
10179 invalid_address instead of -1U.
10180
89fc3421
CC
101812008-09-19 Cary Coutant <ccoutant@google.com>
10182
10183 Add plugin functionality for link-time optimization (LTO).
10184 * configure.ac (plugins): Add --enable-plugins option.
10185 * configure: Regenerate.
10186 * config.in: Regenerate.
10187 * Makefile.am (LIBDL): New variable.
10188 (CCFILES): Add plugin.cc.
10189 (HFILES): Add plugin.h.
10190 (ldadd_var): Add LIBDL.
10191 * Makefile.in: Regenerate.
10192
10193 * archive.cc: Include "plugin.h".
10194 (Archive::setup): Don't preread archive symbols when using a plugin.
10195 (Archive::get_file_and_offset): Add memsize parameter. Change callers.
10196 (Archive::get_elf_object_for_member): Call plugin hooks for claiming
10197 files.
10198 (Archive::include_member): Add symbols from plugin objects.
10199 * archive.h (Archive::get_file_and_offset): Add memsize parameter.
10200 * descriptors.cc (Descriptors::open): Check for file descriptors
10201 abandoned by plugins.
10202 (Descriptors::claim_for_plugin): New function.
10203 * descriptors.h (Descriptors::claim_for_plugin): New function.
10204 (Open_descriptor::is_claimed): New field.
10205 (claim_descriptor_for_plugin): New function.
10206 * fileread.cc (File_read::claim_for_plugin): New function.
10207 * fileread.h (File_read::claim_for_plugin): New function.
10208 (File_read::descriptor): New function.
10209 * gold.cc: Include "plugin.h".
10210 (queue_initial_tasks): Add task to call plugin hooks for generating
10211 new object files.
10212 * main.cc: Include "plugin.h".
10213 (main): Load plugin libraries.
10214 * object.h (Pluginobj): Declare.
10215 (Object::pluginobj): New function.
10216 (Object::do_pluginobj): New function.
10217 (Object::set_target): New function.
10218 * options.cc: Include "plugin.h".
10219 (General_options::parse_plugin): New function.
10220 (General_options::General_options): Initialize plugins_ field.
10221 (General_options::add_plugin): New function.
10222 * options.h (Plugin_manager): Declare.
10223 (General_options): Add --plugin option.
10224 (General_options::has_plugins): New function.
10225 (General_options::plugins): New function.
10226 (General_options::add_plugin): New function.
10227 (General_options::plugins_): New field.
10228 * plugin.cc: New file.
10229 * plugin.h: New file.
10230 * readsyms.cc: Include "plugin.h".
10231 (Read_symbols::do_read_symbols): Check for archive before checking
10232 for ELF file. Call plugin hooks to claim files.
10233 * resolve.cc (Symbol_table::resolve): Record when symbol is referenced
10234 from a real object file; force override when processing replacement
10235 files.
10236 * symtab.cc (Symbol::init_fields): Initialize in_real_elf_ field.
10237 (Symbol::init_base_object): Likewise.
10238 (Symbol::init_base_output_data): Likewise.
10239 (Symbol::init_base_output_segment): Likewise.
10240 (Symbol::init_base_constant): Likewise.
10241 (Symbol::init_base_undefined): Likewise.
10242 (Symbol::output_section): Assert that object is not a plugin.
10243 (Symbol_table::add_from_pluginobj): New function.
10244 (Symbol_table::sized_finalize_symbol): Treat symbols from plugins as
10245 undefined.
10246 (Symbol_table::sized_write_globals): Likewise.
10247 (Symbol_table::add_from_pluginobj): Instantiate template.
10248 * symtab.h (Sized_pluginobj): Declare.
10249 (Symbol::in_real_elf): New function.
10250 (Symbol::set_in_real_elf): New function.
10251 (Symbol::in_real_elf_): New field.
10252 (Symbol_table::add_from_pluginobj): New function.
10253
10254 * testsuite/Makefile.am (AM_CFLAGS): New variable.
10255 (LIBDL): New variable.
10256 (LDADD): Add LIBDL.
10257 (check_PROGRAMS): Add plugin_test_1 and plugin_test_2.
10258 (check_SCRIPTS): Add plugin_test_1.sh and plugin_test_2.sh.
10259 (check_DATA): Add plugin_test_1.err and plugin_test_2.err.
10260 (MOSTLYCLEANFILES): Likewise.
10261 * testsuite/Makefile.in: Regenerate.
10262 * testsuite/plugin_test.c: New file.
10263 * testsuite/plugin_test_1.sh: New file.
10264 * testsuite/plugin_test_2.sh: New file.
10265
de31bda5
ILT
102662008-09-16 Ian Lance Taylor <iant@google.com>
10267
9c2d0ef9
ILT
10268 * target-reloc.h (relocate_section): Check whether a symbol is
10269 defined by the ABI before reporting an undefined symbol error.
10270 * target.h (Target::is_defined_by_abi): Make parameter const.
10271 (Target::do_is_defined_by_abi): Likewise.
10272 * i386.cc (Target_i386::do_is_defined_by_abi): Likewise.
10273 * powerpc.cc (Target_powerpc::do_is_defined_by_abi): Likewise.
10274 * sparc.cc (Target_sparc::do_is_defined_by_abi): Likewise.
10275 * x86_64.cc (Target_x86_64::do_is_defined_by_abi): Likewise.
10276 * testsuite/Makefile.am (tls_test_shared.so): Add -Wl,-z,defs.
10277 * testsuite/Makefile.in: Rebuild.
10278
de31bda5
ILT
10279 * fileread.cc (make_view): Add casts to avoid warning.
10280
9fa33bee
AO
102812008-09-16 Alexandre Oliva <aoliva@redhat.com>
10282
10283 * i386.cc (Target_i386::define_tls_base_symbol): Update comments.
10284 * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
10285
183fd0e3
AO
102862008-09-16 Alexandre Oliva <aoliva@redhat.com>
10287
10288 * options.h (General_options::output_is_executable): New.
10289 (General_options::output_is_pie): New.
10290 * i386.cc (Target_i386::define_tls_base_symbol): Use SEGMENT_START
10291 for shared libraries.
10292 * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
10293
7be8330a
CD
102942008-09-11 Chris Demetriou <cgd@google.com>
10295
10296 * options.h (origin): New -z option.
10297 * layout.cc (Layout:finish_dynamic_section): If "-z origin"
10298 is specified, set DF_ORIGIN in DT_FLAGS and set DF_1_ORIGIN
10299 in DT_FLAGS_1.
10300
a9caad02
CC
103012008-09-05 Cary Coutant <ccoutant@google.com>
10302
10303 * fileread.cc (File_read::make_view): Add check for attempt to map
10304 beyond end of file.
10305
ae6dce4d
CC
103062008-09-05 Cary Coutant <ccoutant@google.com>
10307
10308 * symtab.cc (Symbol_table::add_from_dynobj): Fix typos in
10309 explicit instantiations.
10310
d7ab2a47
KVH
103112008-08-28 Kris Van Hees <kris.van.hees@oracle.com>
10312
10313 PR gold/6858
10314 * options.cc (General_options::finalize): Allow undefined symbols
10315 in shlibs if linking -shared.
10316
10317 PR gold/6859
10318 * symtab.cc (Symbol::init_base_undefined): Mark explicitly undefined
10319 symbols as not needing a dynsym entry.
10320
1e52a9c1
CS
103212008-08-20 Craig Silverstein <csilvers@google.com>
10322
10323 * fileread.cc (File_read::open): Do not lock the file unless it
10324 was successfully opened.
10325
d85c80a3
CC
103262008-08-14 Cary Coutant <ccoutant@google.com>
10327
10328 * x86_64.cc (Target_x86_64::Relocate::relocat_tls):
10329 Use addend for DTPOFF32, DTPOFF64, and TPOFF32 relocs.
10330 * testsuite/tls_test.cc (struct int128): 128-bit struct
10331 for testing TLS relocs with non-zero addend.
10332 (v12): New TLS variable.
10333 (t12): New test.
10334 (t_last): Add check for v12.
10335 * testsuite/tls_test.h (t12): New function.
10336 * testsuite/tls_test_main.cc (thread_routine): Call new test.
10337
2d924fd9
ILT
103382008-08-13 Ian Lance Taylor <iant@google.com>
10339
10340 * layout.cc (Layout::attach_allocated_section_to_segment): Don't
10341 set tls_segment_ or relro_segment_.
10342 (Layout::make_output_segment): Set tls_segment_ and relro_segment_
10343 when appropriate.
10344 * output.h (Output_section::clear_is_relro): New function.
10345 * output.cc (Output_segment::add_output_section): Handle SHF_TLS
10346 sections specially even when output_data_ is empty.
10347 (Output_segment::maximum_alignment): When first section is relro,
10348 only force alignment for PT_LOAD segments.
10349 * script.cc (script_data_segment_align): New function.
10350 (script_data_segment_relro_end): New function.
10351 * script-c.h (script_data_segment_align): Declare.
10352 (script_data_segment_relro_end): Declare.
10353 * script-sections.h (class Script_sections): Declare
10354 data_segment_align and data_segment_relro_end. Add fields
10355 segment_align_index_ and saw_relro_end_.
10356 * script-sections.cc (class Sections_element): Add set_is_relro
10357 virtual function. Add new bool* parameter to place_orphan_here.
10358 Add get_output_section virtual function.
10359 (class Output_section_definition): Add set_is_relro. Add new
10360 bool* parameter to place_orphan_here. Add get_output_section.
10361 Add is_relro_ field.
10362 (Output_section_definition::Output_section_definition): Initialize
10363 evaluated_address_, evaluated_load_address, evaluated_addralign_,
10364 and is_relro_ fields.
10365 (Output_section_definition::place_orphan_here): Add is_relro
10366 parameter.
10367 (Output_section_definition::set_section_addresses): Set relro for
10368 output section.
10369 (Output_section_definition::alternate_constraint): Likewise.
10370 (class Orphan_output_section): Add new bool* parameter to
10371 place_orphan_here. Add get_output_section.
10372 (Orphan_output_section::place_orphan_here): Add is_relro
10373 parameter.
10374 (Script_sections::Script_sections): Initialize
10375 data_segment_align_index_ and saw_relro_end_.
10376 (Script_sections::data_segment_align): New function.
10377 (Script_sections::data_segment_relro_end): New function.
10378 (Script_sections::place_orphan): Set or clear is_relro.
10379 (Script_sections::set_section_addresses): Force alignment of first
10380 TLS section.
10381 * yyscript.y (exp): Call script_data_segment_align and
10382 script_data_segment_relro_end.
10383 * testsuite/relro_script_test.t: New file.
10384 * testsuite/relro_test.cc (using_script): Declare.
10385 (t1, t2): Test using_script.
10386 * testsuite/Makefile.am (check_PROGRAMS): Add relro_script_test.
10387 (relro_script_test_SOURCES): Define.
10388 (relro_script_test_DEPENDENCIES): Define.
10389 (relro_script_test_LDFLAGS): Define.
10390 (relro_script_test_LDADD): Define.
10391 (relro_script_test.so): New target.
10392 * testsuite/Makefile.in: Rebuild.
10393
f827c9a9
CC
103942008-08-06 Cary Coutant <ccoutant@google.com>
10395
10396 * archive.cc (Archive::total_archives, Archive::total_members)
10397 (Archive::total_members_loaded): New variables.
10398 (Archive::setup): Add parameter. Add option to preread
10399 archive symbols.
10400 (Archive::read_armap): Add counter.
10401 (Archive::get_file_and_offset): New function.
10402 (Archive::get_elf_object_for_member): New function.
10403 (Archive::read_all_symbols): New function.
10404 (Archive::read_symbols): New function.
10405 (Archive::add_symbols): Add counters.
10406 (Archive::include_all_members): Use armap to find members if it's
10407 already built.
10408 (Archive::include_member): Skip reading symbols if already read.
10409 Factored code into Archive::get_file_and_offset and
10410 Archive::get_elf_object_for_member. Changed call to
10411 Mapfile::report_include_archive_member.
10412 (Archive::print_stats): New function.
10413 * archive.h: Declare Object and Read_symbols_data classes.
10414 (Archive::Archive): Add initializers for new members.
10415 (Archive::setup): Add parameter.
10416 (Archive::print_stats): New function.
10417 (Archive::total_archives, Archive::total_members)
10418 (Archive::total_members_loaded): New variables.
10419 (Archive::get_file_and_offset): New function.
10420 (Archive::get_elf_object_for_member): New function.
10421 (Archive::read_all_symbols): New function.
10422 (Archive::read_symbols): New function.
10423 (Archive::Archive_member): New class.
10424 (Archive::members_): New member.
10425 (Archive::num_members_): New member.
10426 * main.cc: Include archive.h.
10427 (main): Call Archive::print_stats.
10428 * mapfile.cc (Mapfile::report_include_archive_member): Delete
10429 archive parameter; member_name is now the fully-decorated name.
10430 * mapfile.h (Mapfile::report_include_archive_member): Likewise.
10431 * options.h: (General_options): Add --preread-archive-symbols option.
10432 * readsyms.cc (Read_symbols::do_read_symbols): Change call to
10433 Archive::setup.
10434
de4c45bd
ILT
104352008-08-04 Ian Lance Taylor <iant@google.com>
10436
10437 * symtab.h (Symbol::use_plt_offset): New function.
10438 * i386.cc (Relocate::relocate): Call Symbol::use_plt_offset.
10439 * powerpc.cc (Relocate::relocate): Likewise.
10440 * sparc.cc (Relocate::relocate): Likewise.
10441 * x86_64.cc (Relocate::relocate): Likewise.
10442 * testsuite/weak_plt.sh: New test.
10443 * testsuite/weak_plt_main.cc: New test.
10444 * testsuite/weak_plt_shared.cc: New test.
10445 * testsuite/Makefile.am (check_SCRIPTS): Add weak_plt.sh.
10446 (check_PROGRAMS): Add weak_plt.
10447 (check_DATA): Add weak_plt_shared.so.
10448 (weak_plt_main_pic.o, weak_plt): New targets.
10449 (weak_plt_shared_pic.o, weak_plt_shared.so): New targets.
10450 * testsuite/Makefile.in: Rebuild.
10451
10452 * testsuite/Makefile.am (weak_alias_test_1.so): Depend upon
10453 gcctestdir/ld.
10454 (weak_alias_test_2.so, weak_alias_test_4.so): Likewise.
10455 * testsuite/Makefile.in: Rebuild.
10456
323ee3f4
AM
104572008-08-04 Alan Modra <amodra@bigpond.net.au>
10458
10459 * Makefile.am (POTFILES.in): Set LC_ALL=C.
10460 * Makefile.in: Regenerate.
10461 * po/POTFILES.in: Regenerate.
10462
7c07ecec
ILT
104632008-07-29 Ian Lance Taylor <iant@google.com>
10464
10465 * script.cc (Script_options::finalize_symbols): Finalize SECTIONS
10466 symbols before other symbols.
10467 * testsuite/script_test_2.cc (test_addr): Declare.
10468 (test_addr_alias): Declare.
10469 (main): Check that test_addr and test_addr_alias have the right
cd536b21 10470 values.
7c07ecec
ILT
10471 * testsuite/script_test_2.t: Define test_addr_alias and
10472 test_addr.
10473
5778530e
ILT
104742008-07-24 Ian Lance Taylor <iant@google.com>
10475
2a00e4fb
ILT
10476 PR 5990
10477 * descriptors.cc: New file.
10478 * descriptors.h: New file.
10479 * gold-threads.h (class Hold_optional_lock): New class.
10480 * fileread.cc: Include "descriptors.h".
10481 (File_read::~File_read): Release descriptor rather than closing
10482 it.
10483 (File_read::open) [file]: Call open_descriptor rather than open.
10484 Set is_descriptor_opened_.
10485 (File_read::open) [memory]: Assert that descriptor is not open.
10486 (File_read::reopen_descriptor): New function.
10487 (File_read::release): Release descriptor.
10488 (File_read::do_read): Make non-const. Reopen descriptor.
10489 (File_read::read): Make non-const.
10490 (File_read::make_view): Reopen descriptor.
10491 (File_read::do_readv): Likewise.
10492 * fileread.h (class File_read): Add is_descriptor_opened_ field.
10493 Update declarations.
10494 * layout.cc: Include "descriptors.h".
10495 (Layout::create_build_id): Use open_descriptor rather than open.
10496 * output.cc: Include "descriptors.h".
10497 (Output_file::open): Use open_descriptor rather than open.
10498 * archive.cc (Archive::const_iterator): Change Archive to be
10499 non-const.
10500 (Archive::begin, Archive::end): Make non-const.
10501 (Archive::count_members): Likewise.
10502 * archive.h (class Archive): Update declarations.
10503 * object.h (Object::read): Make non-const.
10504 * Makefile.am (CCFILES): Add descriptors.cc.
10505 (HFILES): Add descriptors.h.
10506 * Makefile.in: Rebuild.
10507
801647d1
ILT
10508 PR 6716
10509 * gold.h: Always include <clocale>. Add Solaris workarounds
10510 following code in binutils/sysdep.h.
10511
5edd166e
ILT
10512 PR 6048
10513 * ehframe.cc (Eh_frame::add_ehframe_input_section): Check whether
10514 this->eh_frame_hdr_ is NULL before using it.
10515
c89ad728
ILT
10516 * dynobj.cc (Versions::Versions): Update comment.
10517
aa86f06b
ILT
10518 * dynobj.cc (Versions::Versions): If there is an soname, use it as
10519 the base version name.
10520
5778530e
ILT
10521 * stringpool.cc (Stringpool_template::add_with_length): Set key to
10522 array size plus one.
10523 (Stringpool_template::set_string_offsets): Subtract one from key
10524 before using it as an array index.
10525 (Stringpool_template::get_offset_with_length): Likewise.
10526 (Stringpool_template::write_to_buffer): Likewise.
10527 * stringpool.h (Stringpool_template::get_offset_from_key):
10528 Likewise.
10529
057ead22
ILT
105302008-07-23 Ian Lance Taylor <iant@google.com>
10531
7f649c59
ILT
10532 PR 6658
10533 * object.h (Merged_symbol_value::value): Do our best to handle a
10534 negative addend.
10535
057ead22
ILT
10536 PR 6647
10537 * script.cc (Version_script_info::get_versions): Don't add empty
10538 version tag to return value.
10539 (Version_script_info::get_symbol_version_helper): Change return
10540 type to bool. Add pversion parameter. Change all callers.
10541 (script_register_vers_node): Don't require a non-NULL tag.
10542 * script.h (class Version_script_info): Update declarations.
10543 (Version_script_info::get_symbol_version): Change return type to
10544 bool. Add version parameter. Change all callers.
10545 * symtab.cc (Sized_symbol::add_from_relobj): Rework version
10546 handling. Handle an empty version from a version script.
10547 (Symbol_table::define_special_symbol): Likewise.
10548 * testsuite/ver_test_10.script: New file.
10549 * testsuite/ver_test_10.sh: New file.
10550 * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_10.sh.
10551 (check_DATA): Add ver_test_10.syms.
10552 (ver_test_10.syms, ver_test_10.so): New target.
10553 * testsuite/Makefile.in: Rebuild.
10554
58e54ac2
CD
105552008-07-23 Simon Baldwin <simonb@google.com>
10556
10557 * symtab.cc (Symbol_table::sized_write_symbol): Only set st_size
10558 to zero for undefined symbols from dynamic libraries.
10559
95d14cd3
ILT
105602008-07-23 Ian Lance Taylor <iant@google.com>
10561
10562 * symtab.cc (Symbol_table::resolve): Remove version parameter.
10563 Change all callers.
10564 * symtab.h (class Symbol_table): Update declaration.
10565 * testsuite/ver_test_9.cc: New file.
10566 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_9.
10567 (ver_test_9_SOURCES, ver_test_9_DEPENDENCIES): Define.
10568 (ver_test_9_LDFLAGS, ver_test_9_LDADD): Define.
10569 (ver_test_9.so, ver_test_9.o): New targets.
10570 * testsuite/Makefile.in: Rebuild.
10571
92de84a6
ILT
105722008-07-22 Ian Lance Taylor <iant@google.com>
10573
34810851
ILT
10574 * options.h (class General_options): Define --check-sections.
10575 * layout.cc (Layout::set_segment_offsets): Handle
10576 --check-sections.
10577
af6156ef
ILT
10578 * options.h (class General_options): Define -n/--nmagic and
10579 -N/--omagic.
10580 * options.cc (General_options::finalize): For -n/--nmagic or
10581 -N/--omagic, set -static.
10582 * layout.cc (Layout::attach_allocated_section_to_segment): If
10583 -N/--omagic, don't put read-only and read-write sections in
10584 different segments.
10585 (Layout::find_first_load_seg): If -N/--omagic, don't insist on
10586 finding a read-only segment.
10587 (Layout::set_segment_offsets): If -N/--omagic or -n/--nmagic,
10588 don't set the minimum segment alignment to the common page size,
10589 and don't set the file offset to the address modulo the page size.
10590 * script-sections.cc (Script_sections::create_segments): If
10591 -n/--omagic, don't put read-only and read-write sections in
10592 different segments.
10593
92de84a6
ILT
10594 * cref.cc: New file.
10595 * cref.h: New file.
10596 * options.h (class General_options): Add --print-symbol-counts.
10597 * main.cc (main): Issue defined symbol report if requested.
10598 * archive.cc (Archive::interpret_header): Make into a const member
10599 function.
10600 (Archive::add_symbols): Call Input_objects::archive_start and
10601 archive_stop.
10602 (Archive::const_iterator): Define new class.
10603 (Archive::begin, Archive::end): New functions.
10604 (Archive::include_all_members): Rewrite to use iterator.
10605 (Archive::count_members): New function.
10606 * archive.h (class Archive): Update declarations.
10607 (Archive::filename): New function.
10608 * object.cc: Include "cref.h".
10609 (Sized_relobj::Sized_relobj): Initialize defined_count_.
10610 (Sized_relobj::do_get_global_symbol_counts): New function.
10611 (Input_objects::add_object): Add object to cross-referencer.
10612 (Input_objects::archive_start): New function.
10613 (Input_objects::archive_stop): New function.
10614 (Input_objects::print_symbol_counts): New function.
10615 * object.h: Declare Cref and Archive.
10616 (Object::get_global_symbol_counts): New function.
10617 (Object::do_get_global_symbol_counts): New pure virtual function.
10618 (class Sized_relobj): Add defined_count_ field. Update
10619 declarations.
10620 (class Input_objects): Add cref_ field. Update constructor.
10621 Update declarations.
10622 * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize symbols_ and
10623 defined_count_.
10624 (Sized_dynobj::do_add_symbols): Allocate symbols_ if printing
10625 symbol counts.
10626 (Sized_dynobj::do_get_global_symbol_counts): New function.
10627 * dynobj.h (class Sized_dynobj): Add fields symbols_ and
10628 defined_count_. Update declarations. Define Symbols typedef.
10629 * symtab.cc (Symbol_table::add_from_relobj): Add defined
10630 parameter. Change all callers.
10631 (Symbol_table::add_from_dynobj): Add sympointers and defined
10632 parameters. Change all callers.
10633 * symtab.h (class Symbol_table): Update declarations.
10634 * Makefile.am (CCFILES): Add cref.cc.
10635 (HFILES): Add cref.h.
10636 * Makefile.in: Rebuild.
10637
3f7c5e1d
CD
106382008-07-22 Simon Baldwin <simonb@google.com>
10639
10640 * symtab.cc (Symbol_table::sized_write_symbol): Set symbol size
10641 to zero when writing undefined symbols.
10642
e0b64032
ILT
106432008-07-22 Ian Lance Taylor <iant@google.com>
10644
10645 * output.cc (Output_section::add_input_section): Don't try to
10646 merge empty merge sections.
10647
096b02cf
CS
106482008-07-21 Craig Silverstein <csilvers@google.com>
10649
10650 * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
10651 Include symbol version in error message.
cd536b21 10652
1d1f116d
CD
106532008-07-20 Chris Demetriou <cgd@google.com>
10654
cd536b21 10655 * configure.ac (gold_cv_c_random_seed): New configured variable.
1d1f116d
CD
10656 (RANDOM_SEED_CFLAGS): New substituted variable.
10657 * Makefile.am (AM_CFLAGS, AM_CXXFLAGS): Add $(RANDOM_SEED_CFLAGS).
10658 * configure: Rebuild.
10659 * Makefile.in: Likewise.
10660 * testsuite/Makefile.in: Likewise.
10661
a18f591e
ILT
106622008-07-18 Ian Lance Taylor <iant@google.com>
10663
10664 * symtab.cc (Symbol_table::add_from_object): Rewrite the case
10665 where we see NAME/NULL and NAME/VERSION as separate symbols.
10666 * testsuite/ver_test_main.cc (main): Call t4.
10667 (t4, t4_2a): Define.
10668 * testsuite/ver_test_2.cc (t4_2): Define.
10669 * testsuite/ver_test_2.script: Put t4_2a in VER2.
10670 * testsuite/ver_test_4.cc (t4_2a): Define.
10671 * testsuite/ver_test_4.script: Put t4_2a in VER2.
10672 * testsuite/ver_test.h (t4, t4_2, t4_2a): Declare.
10673
c6e3f6ed
ILT
106742008-07-17 Ian Lance Taylor <iant@google.com>
10675
10676 * dynobj.cc (Versions::add_def): If we give an error about a
10677 missing version, go ahead and create the version anyhow.
10678
ef9beddf
ILT
106792008-07-10 Ian Lance Taylor <iant@google.com>
10680
10681 Handle output sections with more than 0x7fffffff bytes.
10682 * object.h (class Relobj): Change map_to_output_ to
10683 output_sections_, and just keep a section pointer. Change all
10684 uses. Move comdat group support to Sized_relobj.
10685 (Relobj::is_section_specially_mapped): Remove.
10686 (Relobj::output_section): Remove poff parameter. Change all
10687 callers.
10688 (Relobj::output_section_offset): New function.
10689 (Relobj::set_section_offset): Rewrite.
10690 (Relobj::map_to_output): Remove.
10691 (Relobj::output_sections): New function.
10692 (Relobj::do_output_section_offset): New pure virtual function.
10693 (Relobj::do_set_section_offset): Likewise.
10694 (class Sized_relobj): Add section_offsets_ field. Add comdat
10695 group support from Relobj. Update declarations.
10696 (Sized_relobj::get_output_section_offset): New function.
10697 (Sized_relobj::do_output_section_offset): New function.
10698 (Sized_relobj::do_set_section_offset): New function.
10699 * object.cc (Relobj::output_section_address): Remove.
10700 (Sized_relobj::Sized_relobj): Initialize new fields.
10701 (Sized_relobj::include_section_group): Cast find_kept_object to
10702 Sized_relobj.
10703 (Sized_relobj::include_linkonce_section): Likewise.
10704 (Sized_relobj::do_layout): Use separate arrays for output section
10705 and output offset.
10706 (Sized_relobj::do_count_local_symbols): Change map_to_output to
10707 output_sections.
10708 (Sized_relobj::do_finalize_local_symbols): Change map_to_output to
10709 output_sections and section_offsets.
10710 (Sized_relobj::write_local_symbols): Likewise.
10711 (map_to_kept_section): Compute output address directly.
10712 * reloc.cc (Sized_relobj::do_read_relocs): Change map_to_output to
10713 output_sections and section_offsets.
10714 (Sized_relobj::write_sections): Likewise.
10715 (Sized_relobj::relocate_sections): Likewise.
10716 * symtab.cc (sized_finalize_symbol): Use output_section_offset.
10717 * output.h (class Output_reloc): Update declarations. Change
10718 u2_.relobj to Sized_relobj*.
10719 (class Output_data_reloc): Change add functions to use
10720 Sized_relobj*.
10721 * output.cc (Output_reloc::Output_reloc): Change relobj to
10722 Sized_relobj*.
10723 (Output_reloc::local_section_offset): Change return type to
10724 Elf_Addr. Use get_output_section_offset.
10725 (Output_reloc::get_address): Likewise.
10726 (Output_section::is_input_address_mapped): Don't call
10727 is_section_specially_mapped.
10728 (Output_section::output_offset): Likewise.
10729 (Output_section::output_address): Likewise.
10730 (Output_section::starting_output_address): Likewise.
10731 * copy-relocs.cc (Copy_relocs::copy_reloc): Change object
10732 parameter to Sized_relobj*.
10733 (Copy_relocs::need_copy_reloc): Likewise.
10734 (Copy_relocs::save): Likewise.
10735 * copy-relocs.h (class Copy_relocs): Update declarations.
10736 (class Copy_relocs::Copy_reloc_entry): Change constructor to use
10737 Sized_relobj*. Change relobj_ field to Sized_relobj*.
10738 * target-reloc.h (relocate_for_relocatable): Change
10739 offset_in_output_section type to Elf_Addr. Change code that uses
10740 it as well.
10741 * layout.cc (Layout::layout): Always set *off.
10742 * mapfile.cc (Mapfile::print_input_section): Use
10743 output_section_offset.
10744 * i386.cc (Target_i386::copy_reloc): Change object parameter to
10745 Sized_relobj*.
10746 * powerpc.cc (Target_powerpc::copy_reloc): Likewise.
10747 * sparc.cc (Target_sparc::copy_reloc): Likewise.
10748 * x86_64.cc (Target_x86_64::copy_reloc): Likewise.
10749
5cb66f97
ILT
107502008-07-03 Ian Lance Taylor <iant@google.com>
10751
10752 * layout.cc (Layout::include_section): Do not discard unrecognized
10753 SHT_STRTAB sections.
10754
afe47622
CS
107552008-06-30 Craig Silverstein <csilvers@cs.stanford.edu>
10756
10757 * script.cc (Lex::can_continue_name): Make '?' allowable in
10758 version-script names.
10759 * testsuite/version_script.map: Change glob pattern to use '?'
10760
5adf9721
ILT
107612008-06-30 Manish Singh <yosh@gimp.org>
10762
10763 PR 6585
10764 * symtab.cc (Symbol_table::add_undefined_symbols_from_command_line):
10765 Correct typo.
10766
e6fde208
ILT
107672008-06-30 Ian Lance Taylor <iant@google.com>
10768
10769 PR 6660
10770 PR 6682
10771 * powerpc.cc (Powerpc_relocate_functions::addr16_ha) [both
10772 versions]: Don't try to read the value in the contents, since we
10773 don't use it. Use the template endianness when writing.
10774
3f2e6a2d
CC
107752008-06-25 Cary Coutant <ccoutant@google.com>
10776
10777 * fileread.cc (File_read::make_view): Assert on zero-length view.
10778 * object.cc (Sized_relobj::do_read_symbols): Don't try to read
10779 symbol table when there are no symbols to read.
10780
c43d3a48
CS
107812008-06-23 Craig Silverstein <csilvers@google.com>
10782
10783 * version.cc (version_string): Bump to 1.7
10784
5f494ea0
CS
107852008-06-18 Craig Silverstein <csilvers@google.com>
10786
10787 * powerpc.cc (Powerpc_relocate_functions::addr16_ha): cast
10788 constant 0xFFFF to type Valtype.
10789 (Powerpc_relocate_functions::rel16_ha): Likewise.
10790
c42e122e
ILT
107912008-06-17 Ian Lance Taylor <iant@google.com>
10792
f34787f8
ILT
10793 * output.h (Output_section::Input_section): Initialize p2align_ to
10794 zero for Output_section_data constructors.
10795 (Output_section::Input_section::addralign): If not an input
10796 section, return the alignment of the Output_section_data.
10797 * testsuite/copy_test.cc: New file.
10798 * testsuite/copy_test_1.cc: New file.
10799 * testsuite/copy_test_2.cc: New file.
10800 * testsuite/Makefile.am (check_PROGRAMS): Add copy_test.
10801 (copy_test_SOURCES, copy_test_DEPENDENCIES): New variables.
10802 (copy_test_LDFLAGS, copy_test_LDADD): New variables.
10803 (copy_test_1_pic.o, copy_test_1.so): New targets.
10804 (copy_test_2_pic.o, copy_test_2.so): New targets.
10805 * testsuite/Makefile.in: Rebuild.
10806
c42e122e
ILT
10807 * script-sections.cc (Script_sections::place_orphan): Initialize
10808 local variable exact.
10809
ce3ac18a
DE
108102008-06-13 David Edelsohn <edelsohn@gnu.org>
10811
10812 * powerpc.cc (Output_data_plt_powerpc::do_write): 8 + 4 = 0xC.
10813
42cacb20
DE
108142008-06-12 David Edelsohn <edelsohn@gnu.org>
10815 David S. Miller <davem@davemloft.net>
10816
10817 * powerpc.cc: New file.
10818 * Makefile.am (TARGETSOURCES): Add powerpc.cc
10819 (ALL_TARGETOBJS): Add powerpc.$(OBJEXT)
10820 * configure.tgt: Add entries for powerpc-* and powerpc64-*.
10821 * Makefile.in: Rebuild.
10822
7b308235
ILT
108232008-06-09 Ian Lance Taylor <iant@google.com>
10824
10825 * testsuite/relro_test.cc: Include <cstdio>, <cstdlib>, and
10826 <exception>.
10827 (throwing, orig_terminate): New static variables.
10828 (terminate_handler): New static function.
10829 (t2): Set terminate handler.
10830
f0b886e3
ILT
108312008-06-05 Kris Van Hees <kris.van.hees@oracle.com>
10832
10833 PR 6584
cd536b21 10834 * binary.cc (Binary_to_elf::sized_convert): Fix .data
f0b886e3
ILT
10835 alignment.
10836
3e90f135
CC
108372008-05-30 Cary Coutant <ccoutant@google.com>
10838
10839 * archive.cc (Archive::include_all_members) Correct to step
10840 over symbol table and extended name table in thin archives.
10841
e09ad04a
ILT
108422008-05-29 Kris Van Hees <kris.van.hees@oracle.com>
10843
10844 PR 6407
10845 * target-reloc.h (relocate_for_relocatable): Fix new_offset
10846 calculation.
10847
62b01cb5
ILT
108482008-05-28 Caleb Howe <cshowe@google.com>
10849
10850 * reduced_debug_output.cc: New file.
10851 * reduced_debug_output.h: New file.
92de84a6 10852 * options.h (class General_options): Add --strip-debug-non-line.
62b01cb5
ILT
10853 * options.cc (General_options::finalize): Add strip_debug_non_line
10854 to the strip heirarchy.
10855 * layout.h (class Layout): Add debug_abbrev_ and debug_info_
10856 fields.
10857 * layout.cc: Include "reduced_debug_output.h".
10858 (Layout::Layout): Initialize new fields.
10859 (line_only_debug_sections): New static array.
10860 (is_lines_only_debug_sections): New static inline function.
10861 (Layout::include_section): Handle --strip-debug-non-line.
10862 (Layout::make_output_section): If --strip-debug-non-line, build
10863 new output sections for .debug_abbrev and .debug_info.
10864 * dwarf_reader.cc (read_unsigned_LEB_128): Move to namespace
10865 gold. Warn about possible overflow.
10866 (read_signed_LEB_128): Likewise.
10867 * dwarf_reader.h: (read_unsigned_LEB_128): Declare.
10868 (read_signed_LEB_128): Declare.
10869 * Makefile.am (CCFILES): Add reduced_debug_output.cc.
10870 (HFILES): Add reduced_debug_output.h.
10871 * Makefile.in: Rebuild.
10872
7d9e3d98
ILT
108732008-05-21 Ian Lance Taylor <iant@google.com>
10874
10875 * mapfile.cc: New file.
10876 * mapfile.h: New file.
10877 * options.h (class General_options): Add -M/--print-map and -Map.
10878 * options.cc (General_options::finalize): Make -M equivalent to
10879 -Map -.
10880 * main.cc: Include <cstdio> and "mapfile.h".
10881 (main): Open mapfile if requested.
10882 * gold.cc (class Middle_runner): Add mapfile_ field. Update
10883 constructor. Change caller.
10884 (queue_initial_tasks): Add mapfile parameter. Change caller.
10885 (queue_middle_tasks): Likewise.
10886 * gold.h (queue_initial_tasks, queue_middle_tasks): Update
10887 declarations.
10888 * archive.cc: Include "mapfile.h".
10889 (Archive::add_symbols): Add mapfile parameter. Change all
10890 callers. Pass mapfile, symbol, and reason to include_member.
10891 (Archive::include_all_members): Add mapfile parameter. Change all
10892 callers.
10893 (Archive::include_member): Add mapfile, sym, and why parameters.
10894 Change all callers. Report inclusion to map file.
10895 * archive.h: Include "fileread.h".
10896 (class Archive): Update declarations.
10897 (Archive::file): New const method.
10898 (class Add_archive_symbols): Add mapfile_ field. Update
10899 constructor. Change all callers.
10900 * readsyms.h (class Read_symbols): Likewise.
10901 (class Finish_group): Likewise.
10902 (class Read_script): Likewise.
10903 * common.cc: Include "mapfile.h".
10904 (Symbol_table::allocate_commons): Add mapfile parameter. Change
10905 all callers.
10906 (Symbol_table::do_allocate_commons): Likewise.
10907 (Symbol_table::do_allocate_commons_list): Likewise. Report common
10908 symbol allocation to mapfile.
10909 * common.h (class Allocate_commons_task): Add mapfile_ field.
10910 Update constructor. Change all callers.
10911 * symtab.h (class Symbol_table): Update declarations.
10912 * layout.cc: Include "mapfile.h".
10913 (Layout_task_runner::run): Print information to mapfile.
10914 (Layout::create_gold_note): Change Output_data_fixed_space to
10915 Output_data_zero_fill.
10916 (Layout::create_build_id): Likewise.
10917 (Layout::print_to_mapfile): New function.
10918 * layout.h (class Layout_task_runner): Add mapfile_ field. Update
10919 constructor. Change caller.
10920 (class Layout): Declare print_to_mapfile.
10921 * output.cc (Output_section::Input_section::print_to_mapfile): New
10922 function.
10923 (Output_section::add_input_section): If producing a map, always
10924 add to input_sections_ list.
10925 (Output_section::do_print_to_mapfile): New function.
10926 (Output_segment::print_sections_to_mapfile): New function.
10927 (Output_segment::print_section_list_to_mapfile): New function.
10928 * output.h: Include "mapfile.h".
10929 (Output_data::print_to_mapfile): New function.
10930 (Output_data::do_print_to_mapfile): New virtual function.
10931 (Output_segment_headers::do_print_to_mapfile): New function.
10932 (Output_file_header::do_print_to_mapfile): New function.
10933 (Output_data_const::do_print_to_mapfile): New function.
10934 (class Output_data_const_buffer): Add map_name_ field. Update
10935 constructor. Change all callers. Add do_print_to_mapfile
10936 function.
10937 (class Output_data_fixed_space): Likewise.
10938 (class Output_data_space): Likewise.
10939 (class Output_data_zero_fill): New class.
10940 (Output_data_strtab::do_print_to_mapfile): New function.
10941 (Output_data_reloc_base::do_print_to_mapfile): New function.
10942 (Output_relocatable_relocs::do_print_to_mapfile): New function.
10943 (Output_data_group::do_print_to_mapfile): New function.
10944 (Output_data_got::do_print_to_mapfile): New function.
10945 (Output_data_dynamic::do_print_to_mapfile): New function.
10946 (Output_symtab_xindex::do_print_to_mapfile): New function.
10947 (class Output_section): Declare do_print_to_mapflie. Declare
10948 print_to_mapfile in Input_section.
10949 (class Output_segment): Declare new functions.
10950 * object.h (Sized_relobj::symbol_count): New function.
10951 * script-sections.cc
10952 (Output_section_element_dot_assignment::set_section_addresses):
10953 Change Output_data_fixed_space to Output_data_zero_fill.
10954 (Output_data_expression::do_print_to_mapfile): New function.
10955 * script.cc (read_input_script): Add mapfile parameter. Change
10956 all callers.
10957 * script.h (read_input_script): Update declaration.
10958 * ehframe.h (Eh_frame_hdr::do_print_to_mapfile): New function.
10959 (Eh_frame::do_print_to_mapfile): New function.
10960 * merge.h (Output_merge_data::do_print_to_mapfile): New function.
10961 (Output_merge_string::do_print_to_mapfile): New function.
10962 * i386.cc (Output_data_plt_i386::do_print_to_mapfile): New
10963 function.
10964 * sparc.cc (Output_data_plt_sparc::do_print_to_mapfile): New
10965 function.
10966 * x86_64.cc (Output_data_plt_x86_64::do_print_to_mapfile): New
10967 function.
10968 * Makefile.am (CCFILES): Add mapfile.cc.
10969 (HFILES): Add mapfile.h.
10970 * Makefile.in: Rebuild.
10971
9f1d377b
ILT
109722008-05-19 Ian Lance Taylor <iant@google.com>
10973
10974 * options.h (class General_options): Add -z relro.
10975 * layout.cc (Layout::Layout): Initialize relro_segment_.
10976 (Layout::add_output_section_data): Return the output section.
10977 (Layout::make_output_section): Rcognize relro sections and mark
10978 them appropriately.
10979 (Layout::attach_allocated_section_to_segment): Put relro sections
10980 in a PT_GNU_RELRO segment.
10981 (Layout::create_initial_dynamic_sections): Mark the .dynamic
10982 section as relro.
10983 (Layout::segment_precedes): Sort PT_GNU_RELRO segments after
10984 PT_TLS segments.
10985 (Layout::linkonce_mapping): Map d.rel.ro.local to
10986 .data.rel.ro.local.
10987 (Layout::output_section_name): Us .data.rel.ro.local for any
10988 section which begins with that.
10989 * layout.h (class Layout): Update add_output_section_data
10990 declaration. Add relro_segment_ field.
10991 * output.cc (Output_section::Output_section): Initialize is_relro_
10992 and is_relro_local_ fields.
10993 (Output_segment::add_output_section): Group relro sections.
10994 (Output_segment::is_first_section_relro): New function.
10995 (Output_segment::maximum_alignment): If there is a relro section,
10996 align the segment to the common page size.
10997 (Output_segment::set_section_addresses): Track whether we are
10998 looking at relro sections. If the last section is a relro
10999 section, align to the common page size.
11000 (Output_segment::set_section_list_addresses): Add in_relro
11001 parameter. Change all callers. Align to the page size when
11002 moving from relro to non-relro section.
11003 (Output_segment::set_offset): Align memsz of a PT_GNU_RELRO
11004 segment.
11005 * output.h (class Output_section): Add is_relro_ and
11006 is_relro_local_ fields.
11007 (Output_section::is_relro): New function.
11008 (Output_section::set_is_relro): New function.
11009 (Output_section::is_relro_local): New function.
11010 (Output_section::set_is_relro_local): New function.
11011 (class Output_segment): Update declarations.
11012 * i386.cc (Target_i386::got_section): Mark .got section as relro.
11013 * sparc.cc (Target_sparc::got_section): Likewise.
11014 * x86_64.cc (Target_x86_64::got_section): Likewise.
11015 * testsuite/relro_test_main.cc: New file.
11016 * testsuite/relro_test.cc: New file.
11017 * testsuite/Makefile.am (check_PROGRAMS): Add relro_test.
11018 (relro_test_SOURCES, relro_test_DEPENDENCIES): New variables.
11019 (relro_test_LDFLAGS, relro_test_LDADD): New variables.
11020 (relro_test.so, relro_test_pic.o): New targets.
11021 * testsuite/Makefile.in: Rebuild.
11022
a984ee1d
ILT
110232008-05-16 Ian Lance Taylor <iant@google.com>
11024
01676dcd
ILT
11025 * output.cc (Output_segment::add_output_section): Remove front
11026 parameter.
11027 * output.h (class Output_segment): Remove
11028 add_initial_output_section and overloaded add_output_section.
11029 Update declaration of remaining add_output_section.
11030 * layout.cc (Layout::create_interp): Call add_output_section
11031 rather than add_initial_output_section.
11032 (Layout::finish_dynamic_section): Likewise.
11033
497897f9
ILT
11034 * i386.cc (Target_i386::Relocate::relocate_tls): Set dynamic type
11035 for TLS_GOTDESC and TLS_DESC_CALL. Only optimize TLS_LDO_32 if we
11036 know the dynamic type.
11037 * x86_64.cc (Target_x86_64::Relocate): Add saw_tls_block_reloc_
11038 field. Initialize it in constructor.
11039 (Target_x86_64::Relocate::relocate_tls): Record that we saw a TLS
11040 block reloc for TLSGD, GOTPC32_TLSDESC, TLSDESC_CALL, and TLSLD.
11041 Only optimize DTPOFF32 and DTPOFF64 if we have seen a TLS block
11042 reloc.
11043
a984ee1d
ILT
11044 * output.cc (Output_reloc::get_address): Change return type to
11045 Elf_Addr.
11046 * output.h (class Output_reloc): Update get_address declaration.
11047 * x86_64.cc (Output_data_plt_x86_64::do_write): Use 64-bit types
11048 for section addresses.
11049
55ba0940
ILT
110502008-05-09 Ian Lance Taylor <iant@google.com>
11051
11052 PR 6493
11053 * gold.cc (gold_nomem): Use return value of write.
11054
75517b77
ILT
110552008-05-08 Ian Lance Taylor <iant@google.com>
11056
11057 * symtab.c (Symbol::init_base_output_data): Add version
11058 parameter. Change all callers.
11059 (Symbol::init_base_output_segment): Likewise.
11060 (Symbol::init_base_constant): Likewise.
11061 (Symbol::init_base_undefined): Likewise.
11062 (Sized_symbol::init_output_data): Likewise.
11063 (Sized_symbol::init_output_segment): Likewise.
11064 (Sized_symbol::init_constant): Likewise.
11065 (Sized_symbol::init_undefined): Likewise.
11066 (Symbol_table::do_define_in_output_data): If the new symbol has a
11067 version, mark it as the default.
11068 (Symbol_table::do_define_in_output_segment): Likewise.
11069 (Symbol_table::do_define_as_constant): Likewise.
11070 * symtab.h (class Symbol): Update declarations.
11071 (class Sized_symbol): Likewise.
11072 * resolve.cc (Symbol::override_version): New function.
c42e122e 11073 (Symbol::override_base): Call override_version.
75517b77
ILT
11074 (Symbol::override_base_with_special): Likewise.
11075 * testsuite/ver_script_8.script: New file.
11076 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_8.
11077 (ver_test_8_SOURCES, ver_test_8_DEPENDENCIES): Define.
11078 (ver_test_8_LDFLAGS, ver_test_8_LDADD): Define.
11079 (ver_test_8_1.so, ver_test_8_2.so): New targets.
11080
f1f70eae
ILT
110812008-05-06 Ian Lance Taylor <iant@google.com>
11082
f3e9c5c5
ILT
11083 PR 6049
11084 * options.h (DEFINE_set): Add VARNAME_begin and VARNAME_end
11085 functions.
11086 (class General_options): Remove existing --undefined, and add
11087 --no-undefined instead. Add new --undefined as synonym for -u.
11088 * archive.cc (Archive::add_symbols): Check whether symbol was
11089 named with -u.
11090 * gold.cc (queue_middle_tasks): Add -u symbols to symbol table.
11091 * symtab.h (class Symbol): Rename CONSTANT to IS_CONSTANT; change
11092 all uses. Add IS_UNDEFINED. Update declarations to split
11093 different versions of init_base. Declare init_base_undefined.
11094 (Symbol::is_defined): Handle IS_UNDEFINED.
11095 (Symbol::is_undefined): Likewise.
11096 (Symbol::is_weak_undefined): Call is_undefined.
11097 (Symbol::is_absolute): Handle IS_CONSTANT.
11098 (class Sized_symbol): Update declarations to split different
11099 versions of init. Declare init_undefined.
11100 (class Symbol_table): Declare new functions.
11101 * symtab.cc (Symbol::init_base_object): Rename from init_base.
11102 Change all callers.
11103 (Symbol::init_base_output_data): Likewise.
11104 (Symbol::init_base_output_segment): Likewise.
11105 (Symbol::init_base_constant): Likewise.
11106 (Symbol::init_base_undefined): New function.
11107 (Sized_symbol::init_object): Rename from init. Change all
11108 callers.
11109 (Sized_symbol::init_output_data): Likewise.
11110 (Sized_symbol::init_output_segment): Likewise.
11111 (Sized_symbol::init_constant): Likewise.
11112 (Sized_symbol::init_undefined): New function.
11113 (Symbol_table::add_undefined_symbols_from_command_line): New
11114 function.
11115 (Symbol_table::do_add_undefined_symbols_from_command_line): New
11116 function.
11117 (Symbol::final_value_is_known): Handle IS_UNDEFINED.
11118 (Symbol::output_section): Likewise.
11119 (Symbol::set_output_section): Likewise.
11120 (Symbol_table::sized_finalize_symbol): Likewise.
11121 (Symbol_table::sized_write_globals): Likewise.
11122 * resolve.cc (Symbol_table::should_override): Likewise.
11123 (Symbol::override_base_with_special): Likewise.
11124
8bdcdf2c
ILT
11125 * symtab.cc (Symbol_table::add_from_dynobj): If we see a protected
11126 symbol, change it to have default visibility.
11127 * testsuite/protected_1.cc: New file.
11128 * testsuite/protected_2.cc: New file.
11129 * testsuite/protected_3.cc: New file.
11130 * testsuite/protected_main_1.cc: New file.
11131 * testsuite/protected_main_2.cc: New file.
11132 * testsuite/protected_main_3.cc: New file.
11133 * testsuite/Makefile.am (check_PROGRAMS): Add protected_1.
11134 (protected_1_SOURCES, protected_1_DEPENDENCIES): Define.
11135 (protected_1_LDFLAGS, protected_1_LDADD): Define.
11136 (protected_1.so): New target.
11137 (protected_1_pic.o, protected_2_pic.o): New targets.
11138 (protected_3_pic.o): New target.
11139 (check_PROGRAMS): Add protected_2.
11140 (protected_2_SOURCES, protected_2_DEPENDENCIES): Define.
11141 (protected_2_LDFLAGS, protected_2_LDADD): Define.
11142 * testsuite/Makefile.in: Rebuild.
11143
2b706932
ILT
11144 * options.h (DEFINE_var): Add set_user_set_##varname__.
11145 (DEFINE_bool_alias): New macro.
11146 (class General_options): Define -Bstatic using DEFINE_bool_alias
11147 rather than DEFINE_special. Add --undefined as an alias for -z
11148 defs.
11149 * options.cc (General_options::parse_Bstatic): Remove.
11150
d82a5bcc
ILT
11151 * options.h (class General_options): Add --fatal-warnings.
11152 * main.cc (main): Implement --fatal-warnings.
11153 * errors.h (Errors::warning_count): New function.
11154
f1f70eae
ILT
11155 * options.h (class General_options): Add -Bsymbolic-functions.
11156 * symtab.h (Symbol::is_preemptible): Check for
11157 -Bsymbolic-functions.
11158
8825ac63
ILT
111592008-05-05 Ian Lance Taylor <iant@google.com>
11160
d98bc257
ILT
11161 * options.h (DEFINE_bool): For DASH_Z, create the negative option
11162 as noVARNAME rather than no-VARNAME.
11163 (class General_options): Add option -z combreloc.
11164 * output.h (class Output_reloc) [SHT_REL]: Declare compare and
11165 get_address.
11166 (Output_reloc::sort_before) [SHT_REL]: New function.
11167 (Output_reloc::sort_before) [SHT_RELA]: New function.
11168 (class Output_data_reloc_base): Add sort_relocs_ field. Define
11169 Sort_relocs_comparison.
11170 (Output_data_reloc_base::Output_data_reloc_base): Add sort_relocs
11171 parameter. Change all callers.
11172 (Output_data_reloc::Output_data_reloc) [both versions]: Add
11173 sort_relocs parameter. Change all callers.
11174 * output.cc (Output_reloc::get_address): New function, broken out
11175 of write_rel.
11176 (Output_reloc::write_rel): Call it.
11177 (Output_reloc::compare): New function.
11178 (Output_data_reloc_base::do_write): Optionally sort relocs.
11179
60b2b4e7
ILT
11180 * configure.ac: If targ_extra_obj is set, link it in.
11181 * configure.tgt: Initialize all variables.
11182 (x86_64*): Set targ_extra_obj and targ_extra_size.
11183 * configure: Rebuild.
11184
8825ac63
ILT
11185 * object.cc (Sized_relobj::include_section_group): Adjust section
11186 indexes read from group data. Build vector to pass to
11187 layout_group.
11188 * layout.cc (Layout::layout_group): Add flags and shndxes
11189 parameters. Remove contents parameter. Change caller. Update
11190 explicit instantiations.
11191 * layout.h (class Layout): Update layout_group declaration.
11192 * output.cc (Output_data_group::Output_data_group): Add flags and
11193 input_shndxes parameters. Remove contents parameter. Change
11194 caller.
11195 (Output_data_group::do_write): Change input_sections_ to
11196 input_shndxes_.
11197 * output.h (class Output_data_group): Update constructor
11198 declaration. Rename input_sections_ to input_shndxes_.
11199 * testsuite/many_sections_test.cc: Add template.
11200
e94cf127
CC
112012008-04-30 Cary Coutant <ccoutant@google.com>
11202
4418b2d5
CC
11203 * target-reloc.h (relocate_section): Fix dead-pointer bug.
11204
e94cf127
CC
11205 * layout.cc (Layout::include_section): Refactored check for debug
11206 info section.
11207 (Layout::add_comdat): Add new parameters. Change type
11208 of signature parameter. Add object and shndx to signatures table.
11209 (Layout::find_kept_object): New function.
11210 * layout.h: Include <cstring>.
11211 (Layout::is_debug_info_section): New function.
11212 (Layout::add_comdat): Add new parameters.
11213 (Layout::find_kept_object): New function.
11214 (Layout::Kept_section): New struct.
11215 (Layout::Signatures): Change type of map range.
11216 * object.cc (Relobj::output_section_address): New function.
11217 (Sized_relobj::include_section_group): Add new parameters. Change
11218 calls to Layout::add_comdat. Change to build table of kept comdat
11219 groups and table mapping discarded sections to kept sections.
11220 (Sized_relobj::include_linkonce_section): Likewise. Add new parameter.
11221 (Sized_relobj::do_layout): Change calls to include_section_group and
11222 include_linkonce_section.
11223 (Sized_relobj::do_finalize_local_symbols): Do not set local symbol
11224 value to zero when section is discarded.
11225 (Sized_relobj::map_to_kept_section): New function.
11226 * object.h (Relobj::output_section_address): New function.
11227 (Relobj::Comdat_group): New type.
11228 (Relobj::find_comdat_group): New function.
11229 (Relobj::Comdat_group_table): New type.
11230 (Relobj::Kept_comdat_section): New type.
11231 (Relobj::Kept_comdat_section_table): New type.
11232 (Relobj::add_comdat_group): New function.
11233 (Relobj::set_kept_comdat_section): New function.
11234 (Relobj::get_kept_comdat_section): New function.
11235 (Relobj::comdat_groups_): New field.
11236 (Relobj::kept_comdat_sections_): New field.
11237 (Symbol_value::input_value): Update comment.
11238 (Sized_relobj::map_to_kept_section) New function.
11239 (Sized_relobj::include_linkonce_section): Add new parameter.
11240 * target-reloc.h (Comdat_behavior): New type.
11241 (get_comdat_behavior): New function.
11242 (relocate_section): Add code to map a discarded section to the
11243 corresponding kept section when applying a relocation.
11244
e4e5049b
CS
112452008-04-30 Craig Silverstein <csilvers@google.com>
11246
11247 * dwarf_reader.cc (next_generation_count): New static var.
11248 (Addr2line_cache_entry): New struct.
11249 (addr2line_cache): New static var.
11250 (Dwarf_line_info::one_addr2line): Added caching.
11251 (Dwarf_line_info::clear_addr2line_cache): New function.
11252 * dwarf_reader.h (Dwarf_line_info::one_addr2line): Add
11253 cache-size parameter.
11254 (Dwarf_line_info::one_addr2line_cache): New function.
11255 * symtab.cc (Symbol_table::detect_odr_violations): Pass
11256 new cache-size argument to one_addr2line(), and clear cache.
11257
d09e9154
CC
112582008-04-28 Cary Coutant <ccoutant@google.com>
11259
11260 * i386.cc (Relocate::relocate): Fix typos for R_386_PC16 and
11261 R_386_PC8 relocations.
11262
7ef73768
ILT
112632008-04-23 Ian Lance Taylor <iant@google.com>
11264
55438702
ILT
11265 * object.cc (Sized_relobj::include_section_group): Check for
11266 invalid section group.
11267
c165fb93
ILT
11268 * object.cc (make_elf_object): Correct test for 64-bit ELF file
11269 header size.
11270
7ef73768
ILT
11271 * readsyms.cc (Read_symbols::do_read_symbols): Use get_view rather
11272 than read for file header.
11273 * archive.cc (Archive::include_member): Likewise.
11274
6194aaab
L
112752008-04-23 Paolo Bonzini <bonzini@gnu.org>
11276
11277 * aclocal.m4: Regenerate.
11278 * configure: Regenerate.
11279
d491d34e
ILT
112802008-04-19 Ian Lance Taylor <iant@google.com>
11281
5ea2bac6
ILT
11282 * version.cc (version_string): Bump to 1.6.
11283
7bc3e21a
ILT
11284 * testsuite/Makefile.am (many_sections_r_test): New target.
11285 (many_sections_r_test_SOURCES): Remove.
11286 (many_sections_r_test_DEPENDENCIES): Remove.
11287 (many_sections_r_test_LDFLAGS): Remove.
11288 (many_sections_r_test_LDADD): Remove.
11289
7fcd3aa9
ILT
11290 * object.cc (Sized_relobj::do_add_symbols): Always pass
11291 local_symbol_count_ to add_from_relobj.
11292
4c94d6ae
ILT
11293 * testsuite/Makefile.am (many_sections_check.h): Only check one in
11294 every thousand variables.
11295 * testsuite/Makefile.in: Rebuild.
11296
d491d34e
ILT
11297 * object.cc (Xindex::initialize_symtab_xindex): New function.
11298 (Xindex::read_symtab_xindex): New function.
11299 (Xindex::sym_xindex_to_shndx): New function.
11300 (Sized_relobj::find_symtab): Pick up SHT_SYMTAB_SHNDX section if
11301 available.
11302 (Sized_relobj::do_initialize_xindex): New function.
11303 (Sized_relobj::do_read_symbols): Adjust section links.
11304 (Sized_relobj::symbol_section_and_value): Add is_ordinary
11305 parameter. Change all callers.
11306 (Sized_relobj::include_section_group): Adjust section links and
11307 symbol section indexes.
11308 (Sized_relobj::do_layout): Adjust section links.
11309 (Sized_relobj::do_count_local_symbols): Adjust section links and
11310 symbol section indexes.
11311 (Sized_relobj::do_finalize_local_symbols): Distinguish between
11312 ordinary and special symbols.
11313 (Sized_relobj::write_local_symbols): Add symtab_xindex and
11314 dynsym_xindex parameters. Change all callers. Adjust section
11315 links. Use SHN_XINDEX when needed.
11316 (Sized_relobj::get_symbol_location_info): Adjust section links.
11317 Don't get fooled by special symbols.
11318 * object.h (class Xindex): Define.
11319 (class Object): Add xindex_ parameter. Declare virtual functoin
11320 do_initialize_xindex.
11321 (Object::adjust_sym_shndx): New function.
11322 (Object::set_xindex): New protected function.
11323 (class Symbol_value): Add is_ordinary_shndx_ field.
11324 (Symbol_value::Symbol_value): Initialize is_ordinary_shndx_.
11325 (Symbol_value::value): Assert ordinary section.
11326 (Symbol_value::initialize_input_to_output_map): Likewise.
11327 (Symbol_value::set_input_shndx): Add is_ordinary parameter.
11328 Change all callers.
11329 (Symbol_value::input_shndx): Add is_ordinary parameter. Change
11330 all callers.
11331 (class Sized_relobj): Update declarations.
11332 (Sized_relobj::local_symbol_input_shndx): Add is_ordinary
11333 parameter. Change all callers.
11334 (Sized_relobj::adjust_shndx): New function.
11335 * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize dynsym_shndx_
11336 field.
11337 (Sized_dynobj::find_dynsym_sections): Remove pdynsym_shndx
11338 parameter. Change all callers. Pick up SHT_DYNSYM_SHNDX section
11339 for SHT_DYNSYM section if available. Set dynsym_shndx_ field.
11340 (Sized_dynobj::read_dynsym_section): Adjust section links.
11341 (Sized_dynobj::read_dynamic): Likewise.
11342 (Sized_dynobj::do_read_symbols): Use dynsym_shndx_ field. Adjust
11343 section links.
11344 (Sized_dynobj::do_initialize_xindex): New function.
11345 * dynobj.h (class Sized_dynobj): Add dynsym_shndx_ field. Declare
11346 do_initialize_xindex.
11347 (Sized_dynobj::adjust_shndx): New function.
11348 * layout.cc (Layout::Layout): Initialize symtab_xindex_ and
11349 dynsym_xindex_ fields.
11350 (Layout::finalize): Add a call to set_section_indexes before
11351 creating the symtab sections.
11352 (Layout::set_section_indexes): Don't do anything if the section
11353 already has a section index.
11354 (Layout::create_symtab_sections): Add shnum parameter. Change
11355 caller. Create .symtab_shndx section if needed.
11356 (Layout::create_shdrs): Add shstrtab_section parameter. Change
11357 caller.
11358 (Layout::allocated_output_section_count): New function.
11359 (Layout::create_dynamic_symtab): Create .dynsym_shndx section if
11360 needed.
11361 * layout.h (class Layout): Add symtab_xindex_ and dynsym_xindex_
11362 fields. Update declarations.
11363 (Layout::symtab_xindex): New function.
11364 (Layout::dynsym_xindex): New function.
11365 (class Write_symbols_task): Add layout_ field.
11366 (Write_symbols_task::Write_symbols_task): Add layout parameter.
11367 Change caller.
11368 * output.cc (Output_section_headers::Output_section_headers): Add
11369 shstrtab_section parameter. Change all callers.
11370 (Output_section_headers::do_sized_write): Store overflow values
11371 for section count and section string table section index in
11372 section header zero.
11373 (Output_file_header::do_sized_write): Check for overflow of
11374 section count and section string table section index.
11375 (Output_symtab_xindex::do_write): New function.
11376 (Output_symtab_xindex::endian_do_write): New function.
11377 * output.h (class Output_section_headers): Add shstrtab_section_.
11378 Update declarations.
11379 (class Output_symtab_xindex): Define.
11380 (Output_section::has_out_shndx): New function.
11381 * symtab.cc (Symbol::init_fields): Initialize is_ordinary_shndx_
11382 field.
11383 (Symbol::init_base): Add st_shndx and is_ordinary parameters.
11384 Change all callers.
11385 (Sized_symbol::init): Likewise.
11386 (Symbol::output_section): Check for ordinary symbol.
11387 (Symbol_table::add_from_object): Remove orig_sym parameter. Add
11388 st_shndx, is_ordinary, and orig_st_shndx parameters. Change all
11389 callers.
11390 (Symbol_table::add_from_relobj): Add symndx_offset parameter.
11391 Change all callers. Simplify handling of symbols from sections
11392 not included in the link.
11393 (Symbol_table::add_from_dynobj): Handle ordinary symbol
11394 distinction.
11395 (Weak_alias_sorter::operator()): Assert that symbols are
11396 ordinary.
11397 (Symbol_table::sized_finalize_symbol): Handle ordinary symbol
11398 distinction.
11399 (Symbol_table::write_globals): Add symtab_xindex and dynsym_xindex
11400 parameters. Change all callers.
11401 (Symbol_table::sized_write_globals): Likewise. Handle ordinary
11402 symbol distinction. Use SHN_XINDEX when needed.
11403 (Symbol_table::write_section_symbol): Add symtab_xindex
11404 parameter. Change all callers.
11405 (Symbol_table::sized_write_section_symbol): Likewise. Use
11406 SHN_XINDEX when needed.
11407 * symtab.h (class Symbol): Add is_ordinary_shndx_ field. Update
11408 declarations.
11409 (Symbol::shndx): Add is_ordinary parameter. Change all callers.
11410 (Symbol::is_defined): Check is_ordinary.
11411 (Symbol::is_undefined, Symbol::is_weak_undefined): Likewise.
11412 (Symbol::is_absolute, Symbol::is_common): Likewise.
11413 (class Sized_symbol): Update declarations.
11414 (class Symbol_table): Update declarations.
11415 * resolve.cc (Symbol::override_base): Add st_shndx and is_ordinary
11416 parameters. Change all callers.
11417 (Sized_symbol::override): Likewise.
11418 (Symbol_table::override): Likewise.
11419 (symbol_to_bits): Add is_ordinary parameter. Change all callers.
11420 (Symbol_table::resolve): Remove orig_sym parameter. Add st_shndx,
11421 is_ordinary, and orig_st_shndx parameters. Change all callers.
11422 * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Require symbol
11423 to be in an ordinary section.
11424 * dwarf_reader.cc (Sized_dwarf_line_info::symbol_section): Add
11425 object and is_ordinary parameters. Change all callers.
11426 (Sized_dwarf_line_info::read_relocs): Add object parameter.
11427 Change all callers. Don't add undefined or non-ordinary symbols
11428 to reloc_map_.
11429 (Sized_dwarf_line_info::read_line_mappings): Add object parameter.
11430 Change all callers.
11431 * dwarf_reader.h (class Sized_dwarf_line_info): Update
11432 declarations.
11433 * ehframe.cc (Eh_frame::read_fde): Check for ordinary symbol.
11434 * reloc.cc (Sized_relobj::do_read_relocs): Adjust section links.
11435 (Sized_relobj::relocate_sections): Likewise.
11436 * target-reloc.h (scan_relocs): Adjust section symbol index.
11437 (scan_relocatable_relocs): Likewise.
11438 * i386.cc (Scan::local): Check for ordinary symbols.
11439 * sparc.cc (Scan::local): Likewise.
11440 * x86_64.cc (Scan::local): Likewise.
11441 * testsuite/binary_unittest.cc (Sized_binary_test): Update calls
11442 to symbol_section_and_value.
11443 * testsuite/many_sections_test.cc: New file.
11444 * testsuite/Makefile.am (BUILT_SOURCES): Define.
11445 (check_PROGRAMS): Add many_sections_test.
11446 (many_sections_test_SOURCES): Define.
11447 (many_sections_test_DEPENDENCIES): Define.
11448 (many_sections_test_LDFLAGS): Define.
11449 (BUILT_SOURCES): Add many_sections_define.h.
11450 (many_sections_define.h): New target.
11451 (BUILT_SOURCES): Add many_sections_check.h.
11452 (many_sections_check.h): New target.
11453 (check_PROGRAMS): Add many_sections_r_test.
11454 (many_sections_r_test_SOURCES): Define.
11455 (many_sections_r_test_DEPENDENCIES): Define.
11456 (many_sections_r_test_LDFLAGS): Define.
11457 (many_sections_r_test_LDADD): Define.
11458 (many_sections_r_test.o): New target.
11459 * testsuite/Makefile.in: Rebuild.
11460
c5818ff1
CC
114612008-04-17 Cary Coutant <ccoutant@google.com>
11462
11463 * errors.cc (Errors::info): New function.
11464 (gold_info): New function.
11465 * errors.h (Errors::info): New function.
11466 * gold.h (gold_info): New function.
11467 * object.cc (Input_objects::add_object): Print trace output.
11468 * options.cc (options::parse_set): New function.
11469 (General_options::parse_wrap): Deleted.
11470 (General_options::General_options): Deleted initializer.
11471 * options.h (options::String_set): New typedef.
11472 (options::parse_set): New function.
11473 (DEFINE_set): New macro.
11474 (General_options::wrap): Changed to use DEFINE_set. Changed
11475 callers of any_wrap_symbols and is_wrap_symbol.
11476 (General_options::trace, General_options::trace_symbol):
11477 New options.
11478 (General_options::any_wrap_symbols, General_options::is_wrap_symbol)
11479 (General_options::wrap_symbols_): Deleted.
11480 * symtab.cc (Symbol_table::add_from_object): Print trace output.
11481
b5be4a7c
DM
114822008-04-17 David S. Miller <davem@davemloft.net>
11483
11484 * options.cc (General_options::parse_V): New function.
11485 * options.h: Add entries for -V and -Qy.
11486
155a0dd7
ILT
114872008-04-17 Ian Lance Taylor <iant@google.com>
11488
11489 * common.cc (Symbol_table::allocate_commons): Remove options
11490 parameter. Change caller.
11491 (Symbol_table::do_allocate_commons): Remove options parameter.
11492 Change caller. Just call do_allocate_commons_list twice.
11493 (Symbol_table::do_allocate_commons_list): New function, broken out
11494 of do_allocate_commons.
11495 * common.h (class Allocate_commons_task): Remove options_ field.
11496 Update constructor.
11497 * symtab.cc (Symbol_table::Symbol_table): Initialize
11498 tls_commons_.
11499 (Symbol_table::add_from_object): Put TLS common symbols on
11500 tls_commons_ list.
11501 (Symbol_table::sized_finalize_symbol): Handle STT_TLS symbols
11502 which are IN_OUTPUT_DATA.
11503 * symtab.h (class Symbol_table): Add tls_commons_ field. Update
11504 allocate_commons and do_allocate_commons declarations. Declare
11505 do_allocate_commons_list.
11506 * gold.cc (queue_middle_tasks): Update creation of
11507 Allocate_commons_task to not pass options.
11508 * testsuite/Makefile.am (INCLUDES): Add -I.. .
11509 (TLS_TEST_C_FLAGS): New variable.
11510 (tls_test_c_pic.o): New target.
11511 (tls_test_shared.so): Link in tls_test_c_pic.o.
11512 (tls_test_c_pic_ie.o): New target.
11513 (tls_test_ie_shared.so): Link in tls_test_c_pic_ie.o.
11514 (tls_test_DEPENDENCIES, tls_test_LDADD): Add tls_test_c.o.
11515 (tls_test_c.o): New target.
11516 (tls_pic_test_DEPENDENCIES): Add tls_test_c_pic.o.
11517 (tls_pic_test_LDADD): Likewise.
11518 (tls_shared_gd_to_ie_test_DEPENDENCIES): Add tls_test_c_pic.o.
11519 (tls_shared_gd_to_ie_test_LDADD): Likewise.
11520 (tls_test_c_gnu2.o): New target.
11521 (tls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): Add
11522 tls_test_c_gnu2.o.
11523 (tls_shared_gnu2_gd_to_ie_test_LDADD): Likewise.
11524 (tls_test_gnu2_shared.so): Link in tls_test_c_gnu2.o.
11525 (tls_test_shared_nonpic.so): Link in tls_test_c.o.
11526 * testsuite/tls_test.cc: Include "config.h".
11527 (t_last): Call t11_last.
11528 * testsuite/tls_test.h (t11, t11_last): Declare.
11529 * testsuite/tls_test_c.c: New file.
11530 * testsuite/tls_test_main.cc (thread_routine): Call t11.
11531 * configure.ac: Check for OpenMP support.
11532 * configure, config.in, Makefile.in: Rebuild.
11533 * testsuite/Makefile.in: Rebuild.
11534
edfbb029
CC
115352008-04-16 Cary Coutant <ccoutant@google.com>
11536
11537 * i386.cc (Target_i386::define_tls_base_symbol): New function.
11538 (Target_i386::tls_base_symbol_defined_): New field.
11539 (Target_i386::Scan::local): Define _TLS_MODULE_BASE_ symbol.
11540 (Target_i386::Scan::global): Likewise.
11541 * symtab.cc (sized_finalize_symbol): Add check for TLS symbol.
11542 * x86_64.cc (Target_x86_64::define_tls_base_symbol): New function.
11543 (Target_x86_64::tls_base_symbol_defined_): New field.
11544 (Target_x86_64::Scan::local): Define _TLS_MODULE_BASE_ symbol.
11545 (Target_x86_64::Scan::global): Likewise.
11546
f3c69fca
CC
115472008-04-16 Cary Coutant <ccoutant@google.com>
11548
11549 * symtab.h (Symbol::is_strong_undefined): Removed unused function.
11550 (Symbol::needs_plt_entry): Allow weak undefined symbols.
11551 (Symbol::needs_dynamic_reloc): Allow weak undefined symbols when
11552 building shared libraries.
11553 * testsuite/Makefile.am (weak_undef_nonpic_test): New target.
11554 (weak_undef_file1_nonpic.o, weak_undef_file2_nonpic.o)
11555 (weak_undef_lib_nonpic.so, alt/weak_undef_lib_nonpic.so): New targets.
11556 * testsuite/Makefile.in: Rebuild.
11557 * testsuite/weak_undef.h: New file.
11558 * testsuite/weak_undef_file1.cc: Add extra test cases.
11559 * testsuite/weak_undef_file2.cc: Likewise.
11560 * testsuite/weak_undef_test.cc: Likewise.
11561
7c414435
DM
115622008-04-16 David S. Miller <davem@davemloft.net>
11563
32b769e1
DM
11564 * sparc.cc (Target_sparc::Scan): Change from struct to class.
11565 Add issued_non_pic_error_ field. Declare check_non_pic.
11566 (Target_sparc::Scan::check_non_pic): New function.
11567 (Target_sparc::Scan::local): Call check_non_pic as appropriate.
11568 (Target_sparc::Scan::global): Likewise.
11569
11936fb1
DM
11570 * configure.ac (FN_PTRS_IN_SO_WITHOUT_PIC): Add sparc64.
11571 * configure: Rebuild.
11572
7c414435
DM
11573 * options.h (DEFINE_enable): New macro.
11574 (new_dtags): New enable option.
11575 (initfirst, interpose, loadfltr, nodefaultlib,
11576 nodelete, nodlopen, nodump): New -z options.
11577 * layout.cc (Layout:finish_dynamic_section): If new
11578 dtags enabled, emit DT_RUNPATH. Also, emit a
11579 DT_FLAGS_1 containing any specified -z flags.
11580
85c7bf8b
ILT
115812008-04-16 Ian Lance Taylor <iant@google.com>
11582
12c0daef
ILT
11583 * copy-relocs.cc: New file.
11584 * copy-relocs.h: New file.
11585 * reloc.cc: Remove Copy_relocs code.
11586 * reloc.h: Likewise.
11587 * reloc-types.h (struct Reloc_types) [both versions]: Add
11588 get_reloc_addend_noerror.
11589 * output.h (class Output_data_reloc<elfcpp::SHT_REL>): Add
11590 variants of add_global which take an addend which must be zero.
11591 * i386.cc: Include "copy-relocs.h".
11592 (class Target_i386): Change type of copy_relocs_ to variable,
11593 update initializer.
11594 (Target_i386::copy_reloc): Rewrite to pass to Copy_relocs class.
11595 Change all callers.
11596 (Target_i386::do_finalize_sections): Change handling of
11597 copy_relocs_.
11598 * sparc.cc: Include "copy-relocs.h".
11599 (class Target_sparc): Change type of copy_relocs_ to variable,
11600 update initializer.
11601 (Target_sparc::copy_reloc): Rewrite to pass to Copy_relocs class.
11602 Change all callers.
11603 (Target_sparc::do_finalize_sections): Change handling of
11604 copy_relocs_.
11605 * x86_64.cc: Include "copy-relocs.h".
11606 (class Target_x86_64): Change type of copy_relocs_ to variable,
11607 update initializer.
11608 (Target_x86_64::copy_reloc): Rewrite to pass to Copy_relocs
11609 class. Change all callers.
11610 (Target_x86_64::do_finalize_sections): Change handling of
11611 copy_relocs_.
11612 * Makefile.am (CCFILES): Add copy-relocs.cc.
11613 (HFILES): Add copy-relocs.h.
11614
4f4995b6
ILT
11615 * Makefile.in, aclocal.m4, testsuite/Makefile.in: Rebuild.
11616
85c7bf8b
ILT
11617 * testsuite/script_test_4.sh: Permit leading zeroes.
11618
4f2a9edd
ILT
116192008-04-15 Ian Lance Taylor <iant@google.com>
11620
e6188289
ILT
11621 * script-sections.cc (Script_sections::create_segments): Use
11622 header_size_adjustment even when there is enough room for the
11623 headers.
11624 * testsuite/script_test_4.sh: New file.
11625 * testsuite/script_test_4.t: New file.
11626 * testsuite/Makefile.am (check_SCRIPTS): Add script_test_4.sh.
11627 (check_DATA): Add script_test_4.stdout.
11628 (MOSTLYCLEANFILES): Likewise.
11629 (script_test_4): New target.
11630 (script_test_4.stdout): New target.
11631 * testsuite/Makefile.in: Rebuild.
11632
4f2a9edd
ILT
11633 * sparc.cc: Add definitions for Output_data_plt_sparc class
11634 constants.
11635
f5314dd5
DM
116362008-04-14 David S. Miller <davem@davemloft.net>
11637
11638 * sparc.cc: New file.
11639 * Makefile.am (TARGETSOURCES): Add sparc.cc
11640 (ALL_TARGETOBJS): Add sparc.$(OBJEXT)
11641 * configure.tgt: Document targ_extra_size and
11642 targ_extra_big_endian. Add entries for sparc-* and
11643 sparc64-*.
11644 * configure.ac: Handle targ_extra_size and
11645 targ_extra_big_endian.
11646 * Makefile.in: Rebuild.
11647 * configure: Likewise.
11648 * po/POTFILES.in: Likewise.
11649 * po/gold.pot: Likewise.
11650
154e0e9a
ILT
116512008-04-14 Ian Lance Taylor <iant@google.com>
11652
11653 * layout.cc (Layout::Layout): Initialize sections_are_attached_.
11654 (Layout::get_output_section): Ignore SHF_WRITE and SHF_EXECINSTR
11655 in the name/type/flags to section mapping. Don't call
11656 allocate_output_section.
11657 (Layout::choose_output_section): Change parameter from adjust_name
11658 to is_input_section. Don't permit input sections after sections
11659 are attached to segments. Don't call allocate_output_section.
11660 (Layout::layout_eh_frame): Call update_flags_for_input_section,
11661 not write_enable_output_section.
11662 (Layout::make_output_section): Don't push to
11663 unattached_section_list_ nor call attach_to_segment. Call
11664 attach_section_to_segment if sections are attached.
11665 (Layout::attach_sections_to_segments): New function.
11666 (Layout::attach_section_to_segment): New function.
11667 (Layout::attach_allocated_section_to_segment): Rename from
11668 attach_to_segment. Remove flags parameter.
11669 (Layout::allocate_output_section): Remove function.
11670 (Layout::write_enable_output_section): Remove function.
11671 * layout.h (class Layout): Update for above changes. Add new
11672 field sections_are_attached_.
11673 * output.h (Output_section::update_flags_for_input_section): New
11674 function.
11675 * output.cc (Output_section::add_input_section): Call
11676 update_flags_for_input_section.
11677 * gold.cc (queue_middle_tasks): Call attach_sections_to_segments.
11678
009a67a2
CC
116792008-04-11 Cary Coutant <ccoutant@google.com>
11680
11681 * i386.cc (Target_i386::got_mod_index_entry): Restore code previously
11682 thought unnecessary.
11683 * x86_64.cc (Target_x86_64::got_mod_index_entry): Likewise.
11684
759b1a24
ILT
116852008-04-11 Ian Lance Taylor <iant@google.com>
11686
11687 * output.h (class Output_section_data): Remove inline definition
11688 of set_addralign.
11689 * output.cc (Output_section_data::set_addralign): New function.
11690
c2b45e22
CC
116912008-04-11 Cary Coutant <ccoutant@google.com>
11692
11693 Add support for TLS descriptors for i386 and x86_64.
11694 * i386.cc (Target_i386::Relocate::tls_desc_gd_to_ie): New function.
11695 (Target_i386::Relocate::tls_desc_gd_to_le): New function.
11696 (Target_i386::Got_type): Add GOT_TYPE_TLS_NOFFSET and
11697 GOT_TYPE_TLS_DESC.
11698 (Target_i386::got_mod_index_entry): Remove unnecessary code.
11699 (Target_i386::Scan::local): Implement R_386_TLS_GOTDESC and
11700 R_386_TLS_DESC_CALL relocations. Fix problem with initial-exec
11701 relocations.
11702 (Target_i386::Scan::global): Fix problem with GD-to-IE relaxation.
11703 Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations;
11704 Fix problem with initial-exec relocations.
11705 (Target_i386::Relocate::relocate_tls): Likewise.
11706 (Target_i386::Relocate::tls_gd_to_ie): Fix problem with GD-to-IE
11707 relaxation.
11708 * output.cc (Output_data_dynamic::Dynamic_entry::write): Add
11709 support for section-plus-offset dynamic table entries.
11710 * output.h (Output_data_dynamic::add_section_plus_offset): New function.
11711 (Output_data_dynamic::Dynamic_entry): Add support for
11712 section-plus-offset dynamic table entries.
11713 (Output_data_dynamic::Classification): Likewise.
11714 (Output_data_dynamic::classification_): Renamed offset_.
11715 * x86_64.cc (Target_x86_64::Relocate::tls_desc_gd_to_ie): New function.
11716 (Target_x86_64::Relocate::tls_desc_gd_to_le): New function.
11717 (Target_x86_64::make_plt_section): New function.
11718 (Target_x86_64::reserve_tlsdesc_entries): New function.
11719 (Output_data_plt_x86_64::Output_data_plt_x86_64): Add new parameter.
11720 (Output_data_plt_x86_64::reserve_tlsdesc_entry): New function.
11721 (Output_data_plt_x86_64::has_tlsdesc_entry): New function.
11722 (Output_data_plt_x86_64::get_tlsdesc_got_offset): New function.
11723 (Output_data_plt_x86_64::get_tlsdesc_plt_offset): New function.
11724 (Output_data_plt_x86_64::tlsdesc_plt_entry): New field.
11725 (Output_data_plt_x86_64::set_final_data_size): Move out of line;
11726 add extra PLT entry for TLS descriptors.
11727 (Output_data_plt_x86_64::got_): New field.
11728 (Output_data_plt_x86_64::tlsdesc_got_offset_): New field.
11729 (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize new
11730 fields.
11731 (Output_data_plt_x86_64::do_write): Write extra PLT entry for TLS
11732 descriptors.
11733 (Target_x86_64::make_plt_entry): Factor out make_plt_section.
11734 (Target_x86_64::got_mod_index_entry): Remove unnecessary code.
11735 (Target_x86_64::Scan::local): Implement R_386_TLS_GOTDESC and
11736 R_386_TLS_DESC_CALL relocations.
11737 (Target_x86_64::Scan::global): Likewise.
11738 (Target_x86_64::do_finalize_sections): Add dynamic table entries
11739 for TLS descriptors.
11740 (Relocate::relocate_tls): Fix problem with GD-to-IE relaxation.
11741 Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations.
11742 (Target_x86_64::Relocate::tls_gd_to_ie): Fix problem with
11743 GD-to-IE relaxation.
11744 * configure.ac: Export new conditional variables TLS_GNU2_DIALECT
11745 and TLS_DESCRIPTORS.
11746 * Makefile.in: Rebuild.
11747 * configure: Rebuild.
11748 * testsuite/Makefile.am (tls_shared_gd_to_ie_test): New target.
11749 (tls_test_shared2.so): New target.
11750 (tls_shared_gd_to_ie_test_SOURCES): New variable.
11751 (tls_shared_gd_to_ie_test_DEPENDENCIES): New variable.
11752 (tls_shared_gd_to_ie_test_LDFLAGS): New variable.
11753 (tls_shared_gd_to_ie_test_LDADD): New variable.
11754 (tls_shared_gnu2_gd_to_ie_test): New target.
11755 (tls_test_gnu2.o, tls_test_file2_gnu2.o, tls_test_gnu2_shared2.so):
11756 New targets.
11757 (tls_shared_gnu2_gd_to_ie_test_SOURCES): New variable.
11758 (ls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): New variable.
11759 (tls_shared_gnu2_gd_to_ie_test_LDFLAGS): New variable.
11760 (tls_shared_gnu2_gd_to_ie_test_LDADD): New variable.
11761 (tls_shared_gnu2_test): New target.
11762 (tls_test_gnu2_shared.so): New target.
11763 (tls_shared_gnu2_test_SOURCES): New variable.
11764 (tls_shared_gnu2_test_DEPENDENCIES): New variable.
11765 (tls_shared_gnu2_test_LDFLAGS): New variable.
11766 (tls_shared_gnu2_test_LDADD): New variable.
11767 * testsuite/Makefile.in: Rebuild.
11768 * testsuite/Makefile.
11769
83bfb6b7
ILT
117702008-04-11 Ian Lance Taylor <iant@google.com>
11771
11772 * testsuite/Makefile.am (justsyms_2r.o): Add dependency on
11773 justsyms.t.
11774 * testsuite/Makefile.in: Rebuild.
11775
11776 * testsuite/script_test_2a.cc (script_test_string_a): Make 8 bytes
11777 long.
11778 * testsuite/script_test_2.cc (main): Adjust test.
11779
706e1f5e
ILT
117802008-04-11 David S. Miller <davem@davemloft.net>
11781 Ian Lance Taylor <iant@google.com>
11782
11783 * options.h (General_options): Add entries for '-Y' and
11784 '-relax'.
11785 * options.cc (General_options:finalize): If -Y was used, add those
11786 entries to the library path instead of the default "/lib" and
11787 "/usr/lib".
11788
7c98e6bb
DM
117892008-04-11 David S. Miller <davem@davemloft.net>
11790
11791 * testsuite/justsyms.t: Start at 0x100.
11792 * testsuite/justsyms_1.cc: Adjust justsyms_string assertion.
83bfb6b7
ILT
11793 * testsuite/script_test_2b.cc (script_test_string_b): Make 8 bytes
11794 long.
11795 * testsuite/script_test_2.cc: Adjust string and section length
11796 checks.
7c98e6bb 11797
99a37bfd
ILT
117982008-04-09 Ian Lance Taylor <iant@google.com>
11799
2cefc357
ILT
11800 PR gold/5996
11801 * script-sections.cc (Sections_element::allocate_to_segment): Add
11802 orphan parameter.
11803 (Output_section_definition::allocate_to_segment): Likewise.
11804 (Orphan_output_section::allocate_to_segment): Likewise.
11805 (Script_sections::attach_sections_using_phdrs_clause): Don't
11806 propagate non-PT_LOAD segments to orphan sections.
11807 * testsuite/Makefile.am (script_test_3.stdout): Generate using
11808 readelf rather than objdump.
11809 * testsuite/script_test_3.sh: Adjust accordingly. Test that
11810 .interp section and PT_INTERP segment are the same size.
11811 * testsuite/Makefile.in: Rebuild.
11812
99a37bfd
ILT
11813 * symtab.cc (Symbol_table::add_from_dynobj): Only look for weak
11814 aliases for symbols defined in the same object.
11815 * testsuite/Makefile.am (check_PROGRAMS): Add weak_alias_test.
11816 (weak_alias_test_SOURCES): New variable.
11817 (weak_alias_test_DEPENDENCIES): New variable.
11818 (weak_alias_test_LDFLAGS): New variable.
11819 (weak_alias_test_LDADD): New variable.
11820 (weak_alias_test_1_pic.o, weak_alias_test_1.so): New targets.
11821 (weak_alias_test_2_pic.o, weak_alias_test_2.so): New targets.
11822 (weak_alias_test_3.o): New target.
11823 (weak_alias_test_4_pic.o, weak_alias_test_4.so): New targets.
11824 * testsuite/weak_alias_test_main.cc: New file.
11825 * testsuite/weak_alias_test_1.cc: New file.
11826 * testsuite/weak_alias_test_2.cc: New file.
11827 * testsuite/weak_alias_test_3.cc: New file.
11828
780e49c5
ILT
118292008-04-08 Ian Lance Taylor <iant@google.com>
11830
cdb0b8f5
ILT
11831 * options.h (class General_options): Add --noinhibit-exec option.
11832 * main.cc (main): Check --noinhibit-exec.
11833
0864d551
ILT
11834 * options.h (class General_options): Define --wrap as a special
11835 option. Add wrap_symbols_ field.
11836 (General_options::any_wrap_symbols): New function.
11837 (General_options::is_wrap_symbol): New function.
11838 * options.cc (General_options::parse_wrap): New function.
11839 (General_options::General_options): Initialize wrap_symbols_.
11840 * symtab.cc (Symbol_table::wrap_symbol): New function.
11841 (Symbol_table::add_from_object): Handle --wrap.
11842 * symtab.h (class Symbol_table): Declare wrap_symbol.
11843 * target.h (Target::wrap_char): New function.
11844 (Target::Target_info): Add wrap_char field.
11845 * i386.cc (Target_i386::i386_info): Initialize wrap_char.
11846 * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
11847 * testsuite/testfile.cc (Target_test::test_target_info):
11848 Likewise.
11849
789aa6de
ILT
11850 * errors.cc (Errors::undefined_symbol): Mention symbol version if
11851 there is one.
11852
2c38906f
ILT
11853 * layout.h (class Layout): Add added_eh_frame_data_ field.
11854 * layout.cc (Layout::Layout): Initialize new field.
11855 (Layout::layout_eh_frame): Don't add eh_frame_data_ to .eh_frame
11856 output section until we find a section we merged successfully.
11857 * object.cc (Sized_relobj::check_eh_frame_flags): Don't require
11858 that the size be non-zero.
11859
780e49c5
ILT
11860 * merge.cc (Object_merge_map::get_output_offset): Remove inline
11861 qualifier.
11862
7fcd0256
ILT
118632008-04-08 Craig Silverstein <csilvers@google.com>
11864
11865 * configure.ac: Export new conditional variable HAVE_ZLIB.
11866 * testsuite/Makefile.am (flagstest_o_specialfile): Condition
11867 on HAVE_ZLIB.
11868 (flagstest_o_specialfile_and_compress_debug_sections): Likewise.
11869 * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
11870
6835af53
ILT
118712008-04-07 Ian Lance Taylor <iant@google.com>
11872
e24f324c
ILT
11873 * version.cc (version_string): Set to "1.5".
11874
a036edd8
ILT
11875 * x86_64.cc (Target_x86_64::Scan): Change from struct to class.
11876 Add issued_non_pic_error_ field. Declare check_non_pic.
11877 (Target_x86_64::Scan::check_non_pic): New function.
11878 (Target_x86_64::Scan::local): Call check_non_pic as appropriate.
11879 (Target_x86_64::Scan::global): Likewise.
11880
624f8810
ILT
11881 * output.cc (Output_reloc<SHT_REL>::local_section_offset): Add
11882 addend parameter. Change caller. Handle merge sections.
11883 (Output_reloc<SHT_REL>::symbol_value): Change parameter type from
11884 Address to Addend. Don't add in the result of
11885 local_section_offset, pass down the addend and use the returned
11886 value.
11887 * output.h (class Output_reloc<SHT_REL>): Add Addend typedef.
11888 Update declarations of local_section_offset and symbol_value.
11889 * testsuite/two_file_test_1.cc (t18): New function.
11890 * testsuite/two_file_test_2.cc (f18): New function.
11891 * testsuite/two_file_test_main.cc (main): Call t18.
11892 * testsuite/two_file_test.h (t18, f18): Declare.
11893
6835af53
ILT
11894 * configure.ac: Don't test for objdump, c++filt, or readelf.
11895 * testsuite/Makefile.am: Remove READELF and OBJDUMP_AND_CPPFILT
11896 conditionals.
11897 (TEST_READELF): New variable.
11898 (TEST_OBJDUMP, TEST_CXXFILT, TEST_STRIP): New variables.
11899 (check_PROGRAMS): Add two_file_strip_test.
11900 (two_file_strip_test): New target.
11901 (check_PROGRAMS): Add two_file_same_shared_strip_test.
11902 (two_file_same_shared_strip_test_SOURCES): New variable.
11903 (two_file_same_shared_strip_test_DEPENDENCIES): New variable.
11904 (two_file_same_shared_strip_test_LDFLAGS): New variable.
11905 (two_file_same_shared_strip_test_LDADD): New variable.
11906 (two_file_shared_strip.so): New target.
11907 (ver_test_2.syms, ver_test_4.syms): Use TEST_READELF.
11908 (ver_test_5.syms, ver_test_7.syms): Likewise.
11909 (ver_matching_test.stdout): Use TEST_OBJDUMP and TEST_CXXFILT.
11910 (strip_test_3.stdout): Use TEST_OBJDUMP.
11911 * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
11912
86925eef
CC
119132008-04-04 Cary Coutant <ccoutant@google.com>
11914
11915 * symtab.h (Symbol::is_weak_undefined): New function.
11916 (Symbol::is_strong_undefined): New function.
11917 (Symbol::is_absolute): New function.
11918 (Symbol::needs_plt_entry): Exclude weak undefined symbols.
11919 (Symbol::needs_dynamic_reloc): Exclude weak undefined and
11920 absolute symbols.
11921 * testsuite/Makefile.am (check_PROGRAMS): Add weak_undef_test.
11922 (weak_undef_test): New target.
11923 * testsuite/Makefile.in: Rebuild.
11924 * testsuite/weak_undef_file1.cc: New file.
11925 * testsuite/weak_undef_file2.cc: New file.
11926 * testsuite/weak_undef_test.cc: New file.
11927
126f3ece
ILT
119282008-04-03 Craig Silverstein <csilvers@google.com>
11929
11930 * compressed_output.h (class Output_compressed_section): Use
11931 unsigned buffer.
11932 * compressed_output.cc (zlib_compress): Use unsigned buffers,
11933 add zlib header.
11934 (zlib_compressed_suffix): Removed.
11935 (Output_compressed_section::set_final_data_size): Use unsigned
11936 buffers.
11937 * testsuite/Makefile.am (flagstest_compress_debug_sections):
11938 Fix linker invocation.
11939 (flagstest_o_specialfile_and_compress_debug_sections):
11940 Likewise.
11941 * testsuite/Makefile.in: Regenerated.
11942
deae2a14
DM
119432008-04-02 David S. Miller <davem@davemloft.net>
11944
11945 * dwarf_reader.cc (Sized_dwarf_line_info::read_header_prolog,
11946 Sized_dwarf_line_info::process_one_opcode): Use Swap_unaligned.
11947
70752818
ILT
119482008-04-02 Craig Silverstein <csilvers@google.com>
11949
11950 * TODO: New file.
11951
39d0cb0e
ILT
119522008-04-02 Ian Lance Taylor <iant@google.com>
11953
11954 * fileread.cc (File_read::find_view): Add byteshift and vshifted
11955 parameters. Update for new key type to views_. Change all
11956 callers.
11957 (File_read::read): Adjust for byteshift in returned view.
11958 (File_read::add_view): New function, broken out of
11959 find_and_make_view.
11960 (File_read::make_view): New function, broken out of
11961 find_and_make_view.
11962 (File_read::find_or_make_view): Add offset and aligned
11963 parameters. Rewrite accordingly. Change all callers.
11964 (File_read::get_view): Add offset and aligned parameters. Adjust
11965 for byteshift in return value.
11966 (File_read::get_lasting_view): Likewise.
11967 * fileread.h (class File_read): Update declarations.
11968 (class File_read::View): Add byteshift_ field. Add byteshift to
11969 constructor. Add byteshift method.
11970 * archive.h (Archive::clear_uncached_views): New function.
11971 (Archive::get_view): Add aligned parameter. Change all callers.
11972 * object.h (Object::get_view): Add aligned parameter. Change all
11973 callers.
11974 (Object::get_lasting_view): Likewise.
11975
11976 * fileread.cc (File_read::release): Don't call clear_views if
11977 there are multiple objects.
11978 * fileread.h (File_read::clear_uncached_views): New function.
11979 * archive.cc (Add_archive_symbols::run): Call clear_uncached_views
11980 on the archive.
11981
a1207466
CC
119822008-03-31 Cary Coutant <ccoutant@google.com>
11983
11984 Add thin archive support.
11985 * archive.cc (Archive::armagt): New const.
11986 (Archive::setup): Remove task parameter and calls to unlock.
11987 (Archive::unlock_nested_archives): New function.
11988 (Archive::read_header): Add nested_off parameter. Change
11989 all callers.
11990 (Archive::interpret_header): Likewise.
11991 (Archive::include_all_members): Change to handle thin
11992 archives.
11993 (Archive::include_member): Likewise.
11994 * archive.h (Archive::Archive): Add new parameters and
11995 initializers.
11996 (Archive::armagt): New const.
11997 (Archive::setup): Remove task parameter.
11998 (Archive::unlock_nested_archives): New function.
11999 (Archive::read_header): Add nested_off parameter.
12000 (Archive::interpret_header): Likewise.
12001 (Archive::Nested_archive_table): New typedef.
12002 (Archive::is_thin_archive_): New field.
12003 (Archive::nested_archives_): New field.
12004 (Archive::options_): New field.
12005 (Archive::dirpath_): New field.
12006 (Archive::task_): New field.
12007 * readsyms.cc (Read_symbols::do_read_symbols): Add check
12008 for thin archives. Pass additional parameters to
12009 Archive::Archive. Unlock the archive file after calling
12010 Archive::setup.
cd536b21 12011
479f6503
ILT
120122008-03-29 Ian Lance Taylor <iant@google.com>
12013
686c8caf
ILT
12014 * symtab.cc (Symbol_table::do_define_as_constant): Don't force a
12015 version symbol to be local.
12016 * testsuite/ver_test_4.sh: New file.
12017 * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_4.sh.
12018 (check_DATA): Add ver_test_4.syms.
12019 (ver_test_4.syms): New target.
12020 * testsuite/Makefile.in: Rebuild.
12021
ab794b6b
ILT
12022 * output.cc
12023 (Output_section::Input_section_sort_entry::has_priority): New
12024 function.
12025 (Output_section::Input_section_sort_entry::match_file_name): New
12026 function.
12027 (Output_section::Input_section_sort_entry::match_section_name):
12028 Remove.
12029 (Output_section::Input_section_sort_entry::match_section_name_prefix):
12030 Remove.
12031 (Output_section::Input_section_sort_entry::match_section_file):
12032 Remove.
12033 (Output_section::Input_section_sort_compare::operator()): Rewrite
12034 using new Input_section_sort_entry functions. Sort crtbegin and
12035 crtend first. Sort sections with no priority before sections with
12036 a priority.
12037 * testsuite/initpri1.c (d3): Check j != 4.
12038 (cd5): New constructor/destructor function.
12039 (main): Check j != 2.
12040
479f6503
ILT
12041 * symtab.cc (Symbol_table::add_from_object): If we don't use the
12042 new symbol when resolving, don't call set_is_default.
12043 * testsuite/ver_test_7.cc: New file.
12044 * testsuite/ver_test_7.sh: New file.
12045 * testsuite/Makefile.am (ver_test_7.so): New target.
12046 (ver_test_7.o): New target.
12047 (check_SCRIPTS): Add ver_test_7.sh.
12048 (check_DATA): Add ver_test_7.syms.
12049 (ver_test_7.syms): New target.
12050
2fd32231
ILT
120512008-03-28 Ian Lance Taylor <iant@google.com>
12052
12053 * layout.cc (Layout::layout): If we see an input section with a
12054 name that needs sorting, set the must_sort flag for the output
12055 section.
12056 (Layout::make_output_section): If the name of the output section
12057 indicates that it might require sorting, set the may_sort flag.
12058 * output.h (Output_section::may_sort_attached_input_sections): New
12059 function.
12060 (Output_section::set_may_sort_attached_input_sections): New
12061 function.
12062 (Output_section::must_sort_attached_input_sections): New
12063 function.
12064 (Output_section::set_must_sort_attached_input_sections): New
12065 function.
12066 (class Output_section): Declare Input_section_sort_entry. Define
12067 Input_section_sort_compare. Declare
12068 sort_attached_input_sections. Add new fields:
12069 may_sort_attached_input_sections_,
12070 must_sort_attached_input_sections_,
12071 attached_input_sections_are_sorted_.
12072 * output.cc (Output_section::Output_section): Initialize new
12073 fields.
12074 (Output_section::add_input_section): Add an entry to
12075 input_sections_ if may_sort or must_sort are true.
12076 (Output_section::set_final_data_size): Call
12077 sort_attached_input_sections if necessary.
12078 (Output_section::Input_section_sort_entry): Define new class.
12079 (Output_section::Input_section_sort_compare::operator()): New
12080 function.
12081 (Output_section::sort_attached_input_sections): New function.
12082 * configure.ac: Check whether the compiler supports constructor
12083 priorities. Define a CONSTRUCTOR_PRIORITY automake conditional.
12084 * testsuite/initpri1.c: New file.
12085 * testsuite/Makefile.am (check_PROGRAMS): Add initpri1 if
12086 CONSTRUCTOR_PRIORITY.
12087 (initpri1_SOURCES, initpri1_DEPENDENCIES): New variables.
12088 (initpri1_LDFLAGS): New variable.
12089 * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
12090
18e6b24e
ILT
120912008-03-27 Ian Lance Taylor <iant@google.com>
12092
49bdd526
ILT
12093 * common.cc (Sort_commons::operator): Correct sorting algorithm.
12094 * testsuite/common_test_1.c: New file.
12095 * testsuite/Makefile.am (check_PROGRAMS): Add common_test_1.
12096 (common_test_1_SOURCES): New variable.
12097 (common_test_1_DEPENDENCIES): New variable.
12098 (common_test_1_LDFLAGS): New variable.
12099
18e6b24e
ILT
12100 * symtab.cc (Symbol_table::add_from_object): Handle saw_undefined_
12101 and commons_ correctly when NAME/VERSION does not override
12102 NAME/NULL.
12103 * testsuite/ver_test_6.c: New file.
12104 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_6
12105 (ver_test_6_SOURCES, ver_test_6_DEPENDENCIES): New variables.
12106 (ver_test_6_LDFLAGS, ver_test_6_LDADD): New variables.
12107
04bf7072
ILT
121082008-03-26 Ian Lance Taylor <iant@google.com>
12109
5871526f
ILT
12110 * symtab.cc (Symbol_table::add_from_relobj): Don't set the version
12111 of an undefined symbol from a version script.
12112 * testsuite/Makefile.am (ver_test_5.so): New target.
12113 (ver_test_5.o): New target.
12114 (check_SCRIPTS): Add ver_test_5.sh.
12115 (check_DATA): Add ver_test_5.syms.
12116 (ver_test_5.syms): New target.
12117 * testsuite/ver_test_5.cc: New file.
12118 * testsuite/ver_test_5.script: New file.
12119 * testsuite/ver_test_5.sh: New file.
12120 * Makefile.in, testsuite/Makefile.in: Rebuild.
12121
04bf7072
ILT
12122 PR gold/5986
12123 Fix problems building gold with gcc 4.3.0.
12124 * gold.h (TEMPLATE_ATTRIBUTE_PRINTF_4): Define.
12125 (gold_error_at_location, gold_warning_at_location): Use it.
12126 * configure.ac: Check whether we can compile and use a template
12127 function with a printf attribute.
12128 * x86_64.cc (Target_x86_64::do_code_fill): Swap out a 32-bit value
12129 when jumping over bytes.
12130 * object.cc: Instantiate Object::read_section_data.
12131 * debug.h: Include <cstring>
12132 * dwarf_reader.cc: Include <algorithm>
12133 * main.cc: Include <cstring>.
12134 * options.cc: Include <cstring>.
12135 * output.cc: Include <cstring>.
12136 * script.cc: Include <cstring>.
12137 * script.h: Include <string>.
12138 * symtab.cc: Include <cstring> and <algorithm>.
12139 * target-select.cc: Include <cstring>.
12140 * version.cc: Include <string>.
12141 * testsuite/testmain.cc: Include <cstdlib>.
12142 * configure, config.in: Rebuild.
12143
874c5b28
ILT
121442008-03-25 Ian Lance Taylor <iant@google.com>
12145
819d6c3a
ILT
12146 * options.cc: Include "../bfd/bfdver.h".
12147 (options::help): Print bug reporting address.
12148
f4b2c6f5
ILT
12149 * version.cc (print_version): Adjust output for current value of
12150 BFD_VERSION_STRING.
12151
12152 * NEWS: New file.
12153
e96caa79
ILT
12154 * options.cc (options::help): Print list of supported targets.
12155 * target-select.h: Include <vector>.
12156 (class Target_selector): Make machine_, size_, and is_big_endian_
12157 fields const. Add bfd_name_ and instantiated_target_ fields.
12158 (Target_selector::Target_selector): Add bfd_name parameter.
12159 (Target_selector::recognize): Make non-virtual, call
12160 do_recognize.
12161 (Target_selector::recognize_by_name): Make non-virtual, call
12162 do_recognize_by_name.
12163 (Target_selector::supported_names): New function.
12164 (Target_selector::bfd_name): New function.
12165 (Target_selector::do_instantiate_target): New pure virtual
12166 function.
12167 (Target_selector::do_recognize): New virtual function.
12168 (Target_selector::do_recognize_by_name): New virtual function.
12169 (Target_selector::instantiate_target): New private function.
12170 (supported_target_names): Declare.
12171 * target-select.cc (Target_selector::Target_selector): Update for
12172 new parameter and fields.
12173 (select_target_by_name): Check that the name matches before
12174 calling recognize_by_name.
12175 (supported_target_names): New function.
12176 * i386.cc (class Target_selector_i386): Update Target_selector
12177 constructor call. Remove recognize and recognize_by_name. Add
12178 do_instantiate_target.
12179 * x86_64.cc (class Target_selector_x86_64): Likewise.
12180 * testsuite/testfile.cc (class Target_selector_test): Update for
12181 changes to Target_selector.
12182
874c5b28
ILT
12183 * README: Rewrite, with some notes on unsupported features.
12184
0a65a3a7
CC
121852008-03-24 Cary Coutant <ccoutant@google.com>
12186
12187 * i386.cc (Target_i386::Got_type): New enum declaration.
12188 (Target_i386::Scan::local): Updated callers of Output_data_got
12189 member functions.
12190 (Target_i386::Scan::global): Likewise.
12191 (Target_i386::Relocate::relocate): Likewise.
12192 (Target_i386::Relocate::relocate_tls): Likewise.
12193 * object.h (Got_offset_list): New class.
12194 (Sized_relobj::local_has_got_offset): Added got_type parameter.
12195 (Sized_relobj::local_got_offset): Likewise.
12196 (Sized_relobj::set_local_got_offset): Likewise.
12197 (Sized_relobj::local_has_tls_got_offset): Removed.
12198 (Sized_relobj::local_tls_got_offset): Removed.
12199 (Sized_relobj::set_local_tls_got_offset): Removed.
12200 (Sized_relobj::Local_got_offsets): Changed to store a list of offsets.
12201 * output.cc (Output_data_got::add_global): Added got_type parameter.
12202 (Output_data_got::add_global_with_rel): Likewise.
12203 (Output_data_got::add_global_with_rela): Likewise.
12204 (Output_data_got::add_global_pair_with_rel): New function.
12205 (Output_data_got::add_global_pair_with_rela): New function.
12206 (Output_data_got::add_local): Added got_type parameter.
12207 (Output_data_got::add_local_with_rel): Likewise.
12208 (Output_data_got::add_local_with_rela): Likewise.
12209 (Output_data_got::add_local_pair_with_rel): New function.
12210 (Output_data_got::add_local_pair_with_rela): New function.
12211 (Output_data_got::add_global_tls): Removed.
12212 (Output_data_got::add_global_tls_with_rel): Removed.
12213 (Output_data_got::add_global_tls_with_rela): Removed.
12214 (Output_data_got::add_local_tls): Removed.
12215 (Output_data_got::add_local_tls_with_rel): Removed.
12216 (Output_data_got::add_local_tls_with_rela): Removed.
12217 * output.h (Output_data_got::add_global): Added got_type parameter.
12218 (Output_data_got::add_global_with_rel): Likewise.
12219 (Output_data_got::add_global_with_rela): Likewise.
12220 (Output_data_got::add_global_pair_with_rel): New function.
12221 (Output_data_got::add_global_pair_with_rela): New function.
12222 (Output_data_got::add_local): Added got_type parameter.
12223 (Output_data_got::add_local_with_rel): Likewise.
12224 (Output_data_got::add_local_with_rela): Likewise.
12225 (Output_data_got::add_local_pair_with_rel): New function.
12226 (Output_data_got::add_local_pair_with_rela): New function.
12227 (Output_data_got::add_global_tls): Removed.
12228 (Output_data_got::add_global_tls_with_rel): Removed.
12229 (Output_data_got::add_global_tls_with_rela): Removed.
12230 (Output_data_got::add_local_tls): Removed.
12231 (Output_data_got::add_local_tls_with_rel): Removed.
12232 (Output_data_got::add_local_tls_with_rela): Removed.
12233 * resolve.cc (Symbol::override_base_with_special): Removed
12234 reference to has_got_offset_ field.
12235 * symtab.cc (Symbol::init_fields): Replaced initialization
12236 of got_offset_ with got_offsets_. Removed initialization
12237 of has_got_offset_
53fcba31 12238 * symtab.h (Symbol::has_got_offset): Aded got_type parameter.
0a65a3a7
CC
12239 (Symbol::got_offset): Likewise.
12240 (Symbol::set_got_offset): Likewise.
12241 (Symbol::has_tls_got_offset): Removed.
12242 (Symbol::tls_got_offset): Removed.
12243 (Symbol::set_tls_got_offset): Removed.
12244 (Symbol::got_offset_): Removed.
12245 (Symbol::tls_mod_got_offset_): Removed.
12246 (Symbol::tls_pair_got_offset_): Removed.
12247 (Symbol::got_offsets_): New field.
12248 (Symbol::has_got_offset): Removed.
12249 (Symbol::has_tls_mod_got_offset): Removed.
12250 (Symbol::has_tls_pair_got_offset): Removed.
12251 * x86_64.cc (Target_x86_64::Got_type): New enum declaration.
12252 (Target_x86_64::Scan::local): Updated callers of Output_data_got
12253 member functions.
12254 (Target_x86_64::Scan::global): Likewise.
12255 (Target_x86_64::Relocate::relocate): Likewise.
12256 (Target_x86_64::Relocate::relocate_tls): Likewise.
12257
bd52eafb
BE
122582008-03-25 Ben Elliston <bje@au.ibm.com>
12259
12260 * yyscript.y: Fix spelling error in comment.
12261
8b105e34
ILT
122622008-03-24 Ian Lance Taylor <iant@google.com>
12263
8ed814a9
ILT
12264 * options.h (class General_options): Define build_id option.
12265 * layout.h (class Layout): Declare write_build_id, create_note,
12266 create_build_id. Add build_id_note_ member.
12267 * layout.cc: Include <cerrno>, <fcntl.h>, <unistd.h>,
12268 "libiberty.h", "md5.h", "sha1.h".
12269 (Layout::Layout): Initialize eh_frame_data_,
12270 eh_frame_hdr_section_, and build_id_note_.
12271 (Layout::finalize): Call create_build_id.
12272 (Layout::create_note): New function, broken out of
12273 Layout::create_gold_note.
12274 (Layout::create_gold_note): Call create_note.
12275 (Layout::create_build_id): New function.
12276 (Layout::write_build_id): New function.
12277 (Close_task_runner::run): Call write_build_id.
12278
8b105e34
ILT
12279 * x86_64.cc: Correct license to GPLv3.
12280
086a1841
ILT
122812008-03-23 Ian Lance Taylor <iant@google.com>
12282
12283 * options.cc: Include "demangle.h".
12284 (parse_optional_string): New function.
12285 (parse_long_option): Handle takes_optional_argument.
12286 (parse_short_option): Update dash_z initializer. Handle
12287 takes_optional_argument.
12288 (General_options::General_options): Initialize do_demangle_.
12289 (General_options::finalize): Set do_demangle_. Handle demangling
12290 style.
12291 * options.h (parse_optional_string): Declare.
12292 (struct One_option): Add optional_arg field. Update constructor.
12293 Update call constructor calls. Add takes_optional_argument
12294 function.
12295 (DEFINE_var): Add optional_arg__ parameter. Change all callers.
12296 (DEFINE_optional_string): Define.
12297 (General_options::demangle): Change from DEFINE_bool to
12298 DEFINE_optional_string.
12299 (General_options::no_demangle): New function.
12300 (General_options::do_demangle): New function.
12301 (General_options::set_do_demangle): New function.
12302 (General_options::execstack_status_): Move definition to end of
12303 class definition.
12304 (General_options::static_): Likewise.
12305 (General_options::do_demangle_): New field.
12306 * object.cc (big_endian>::get_symbol_location_info): Call
12307 Options::do_demangle, not Options::demangle.
12308 * symtab.cc (demangle): Likewise.
12309
cbb93e63
ILT
123102008-03-22 Ian Lance Taylor <iant@google.com>
12311
12312 * gold.h: Include <cstddef> and <sys/types.h>
12313 * options.h: Include <cstring>.
12314
ec531623
ILT
123152008-03-21 Ian Lance Taylor <iant@google.com>
12316
12317 * Added source code to GNU binutils.
This page took 0.716523 seconds and 4 git commands to generate.