2012-09-06 Cary Coutant <ccoutant@google.com>
[deliverable/binutils-gdb.git] / gold / ChangeLog
CommitLineData
32ed4573
L
12012-09-05 H.J. Lu <hongjiu.lu@intel.com>
2
3 * testsuite/script_test_3.t: Add .got.plt output section
4 statement.
5 * testsuite/script_test_4.t: Likewise.
6
f4baf0d4
AM
72012-09-05 Alan Modra <amodra@gmail.com>
8
9 * powerpc.cc (Powerpc_relocate_functions): Upcase enum values,
10 update all uses and lose "enum" when using type.
11
864a1b56
AM
122012-09-05 Alan Modra <amodra@gmail.com>
13
14 * configure.ac (FN_PTRS_IN_SO_WITHOUT_PIC): False for powerpc.
15 * configure: Regenerate.
16 * testsuite/Makefile.am (final_layout.stdout): Pass --synthetic to nm.
17 (plugin_final_layout.stdout): Likewise.
18 (memory_test): Set page sizes to 0x1000.
19 * testsuite/Makefile.in: Regenerate.
20 * testsuite/discard_locals_test.sh: Add FIXME comment.
21 * testsuite/justsyms_exec.c: Disable function test for powerpc64.
22 * testsuite/pr14265.t: Add .got output section statement.
23 * testsuite/script_test_2.t: Likewise.
24 * testsuite/script_test_3.t: Likewise.
25 * testsuite/script_test_4.t: Likewise.
26 * testsuite/script_test_5.t: Likewise.
27 * testsuite/script_test_6.t: Likewise.
28 * testsuite/script_test_7.t: Likewise.
29 * testsuite/script_test_9.t: Likewise.
30
3ea0a085
AM
312012-09-05 Alan Modra <amodra@gmail.com>
32
33 * powerpc.cc (Powerpc_relobj::get_opd_ent): Make const.
34 (Powerpc_relocate_functions::Status): New typedef.
35 (Target_powerpc::Scan::get_reference_flags): Handle more relocs.
36 (Target_powerpc::Scan::local): Handle REL64.
37 (Target_powerpc::Scan::global): Likewise, and dynamic relocs
38 for REL32 and REL64.
39 (Target_powerpc::symval_for_branch): New function, extracted from..
40 (Target_powerpc::Relocate::relocate): ..here. Correct plt call
41 checks. Report overflow errors.
42
7404fe1b
AM
432012-09-05 Alan Modra <amodra@gmail.com>
44
45 * object.h (Sized_relobj_file::emit_relocs): Delete.
46 (Sized_relobj_file::emit_relocs_reltype): Delete.
47 * reloc.cc (Sized_relobj_file::do_relocate_sections): Call target
48 relocate_relocs for --emit-relocs.
49 (Sized_relobj_file::emit_relocs, emit_relocs_reltype): Delete.
50 * output.h: Update comment.
51 (Output_segment::first_section): New function.
52 (Output_segment::first_section_load_address): Use first_section.
53 * output.cc (Output_segment::first_section): New function extracted..
54 (Output_segment::first_section_load_address): ..from here. Delete.
55 * target-reloc.h (relocate_for_relocatable): Rename to relocate_relocs.
56 * target.h (Sized_target::relocate_for_relocatable): Likewise.
57 * arm.cc (Target_arm::relocate_for_relocatable): Likewise, and
58 adjust call to target.h function.
59 * i386.cc (Target_i386): Likewise.
60 * sparc.cc (Target_sparc): Likewise.
61 * x86_64.cc (Target_x86_64): Likewise.
62 * powerpc.cc (Target_powerpc): Likewise.
63 (Target_powerpc::Scan::local, global): Handle R_POWERPC_TLS. Ensure
64 first tls section has section symbol for optimised local dynamic
65 output relocs.
66 (Target_powerpc::Relocate::relocate): Correct local dynamic value.
67 (Target_powerpc::relocate_relocs): Adjust relocs emitted for
68 optimised tls code.
69 * testsuite/testfile.cc (Target_test::relocate_for_relocatable):
70 Rename to relocate_relocs. Update error message.
71
957564c9
AS
722012-09-04 Andreas Schwab <schwab@linux-m68k.org>
73
74 * powerpc.cc (do_make_elf_object): Allow ET_EXEC files with
75 --just-symbols.
76
dd93cd0a
AM
772012-08-31 Alan Modra <amodra@gmail.com>
78
79 * powerpc.cc (Powerpc_relobj): Add and use Address typedef.
80 (Powerpc_relobj::toc_base_offset): New stub function.
81 (Target_powerpc): Add tp_offset, dtp_offset. Rename
82 got_mod_index_offset to tlsld_got_offset. Update all refs.
83 (Target_powerpc::Relocate::enum skip_tls): New.
84 (Target_powerpc::call_tls_get_addr_): New var.
85 (Target_powerpc::is_branch_reloc): Move to file scope.
86 (Target_powerpc::relocate_tls, optimize_tls_reloc): Delete.
87 (Target_powerpc::optimize_tls_gd, optimize_tls_ld, optimize_tls_ie):
88 New functions.
89 (Target_powerpc::enum Got_type): Delete old values, add new ones.
90 (powerpc_info): Correct common_pagesize for ppc64.
91 (at_tls_transform, needs_dynamic_reloc, use_plt_offset): New functions.
92 (Powerpc_relocate_functions): Add overflow check enums and functions.
93 Add non-shift version of rela, rela_ua. Delete all rel public
94 functions. Delete addr16_lo. Add addr64, addr64_u, addr32,
95 addr32_u, addr24, addr16_u, addr16_hi2, addr16_ha2, addr16_hi3,
96 addr16_ha3, addr14 functions.
97 (Output_data_got_powerpc::add_constant_pair): New function.
98 (Output_data_got_powerpc::got_base_offset): Likewise.
99 (Output_data_got_powerpc::do_write): Correct 64-bit got header.
100 (instruction constants): Sort, add some more.
101 (Output_data_glink::do_write): Add and use Address typedef. Use
102 object->toc_base_offset() stub for 64-bit.
103 (Target_powerpc::tlsld_got_offset): Use add_constant_pair.
104 (Target_powerpc::Scan::get_reference_flags): Handle more relocs.
105 (Target_powerpc::Scan::local, global): Emit relative dynamic reloc
106 for R_PPC64_TOC. Handle more relocs. Generate got entries for TLS.
107 Always treat .opd relocs as against locally defined symbol.
108 Correct condition for RELATIVE relocs.
109 (Target_powerpc::do_finalize_sections): Test for NULL sections.
110 (Target_powerpc::Relocate::relocate): Use plt call stub as value
111 for 32-bit syms with a plt entry. Correct ppc64 toc base
112 calculations. Handle TLS relocs, and more. Add overflow
113 checking and adjust for Powerpc_relocate_functions changes.
114 (Target_powerpc::relocate_for_relocatable): Handle zero r_sym.
115 Reinstate --emit-relocs code with FIXME.
116
a1373b60
AM
1172012-08-30 Alan Modra <amodra@gmail.com>
118
119 * layout.cc (Layout::set_segment_offsets): Set p_align to
120 abi_pagesize, not common_pagesize.
121 (Layout::relaxation_loop_body): Similarly use abi_pagesize
122 to determine whether file header can go in segment.
123
703d02da
AM
1242012-08-30 Alan Modra <amodra@gmail.com>
125
126 * output.h (Output_reloc::Output_reloc <output section>): Add
127 is_relative param. Adjust calls.
128 (Output_reloc::add_output_section_relative): New functions.
129 * output.cc (Output_reloc::Output_reloc <output section>): Handle
130 is_relative.
131 (Output_reloc::symbol_value): Handle SECTION_CODE.
132
16164a6b
ST
1332012-08-24 Sriraman Tallam <tmsriram@google.com>
134
135 * gold.cc (queue_middle_tasks): Call layout again when unique
136 segments for sections is desired.
137 * layout.cc (Layout::Layout): Initialize new members.
138 (Layout::get_output_section_flags): New function.
139 (Layout::choose_output_section): Call get_output_section_flags.
140 (Layout::layout): Make output section for mapping to a unique segment.
141 (Layout::insert_section_segment_map): New function.
142 (Layout::attach_allocated_section_to_segment): Make unique segment for
703d02da 143 output sections marked so.
16164a6b
ST
144 (Layout::segment_precedes): Check for unique segments when sorting.
145 * layout.h (Layout::Unique_segment_info): New struct.
146 (Layout::Section_segment_map): New typedef.
147 (Layout::insert_section_segment_map): New function.
148 (Layout::get_output_section_flags): New function.
149 (Layout::is_unique_segment_for_sections_specified): New function.
150 (Layout::set_unique_segment_for_sections_specified): New function.
151 (Layout::unique_segment_for_sections_specified_): New member.
152 (Layout::section_segment_map_): New member.
153 * object.cc (Sized_relobj_file<size, big_endian>::do_layout):
154 Rename is_gc_pass_one to is_pass_one.
155 Rename is_gc_pass_two to is_pass_two.
156 Rename is_gc_or_icf to is_two_pass.
157 Check for which pass based on whether symbols data is present.
158 Make it two pass when unique segments for sections is desired.
159 * output.cc (Output_section::Output_section): Initialize new
160 members.
161 * output.h (Output_section::is_unique_segment): New function.
162 (Output_section::set_is_unique_segment): New function.
163 (Output_section::is_unique_segment_): New member.
164 (Output_section::extra_segment_flags): New function.
165 (Output_section::set_extra_segment_flags): New function.
166 (Output_section::extra_segment_flags_): New member.
167 (Output_section::segment_alignment): New function.
168 (Output_section::set_segment_alignment): New function.
169 (Output_section::segment_alignment_): New member.
170 (Output_segment::Output_segment): Initialize is_unique_segment_.
171 (Output_segment::is_unique_segment): New function.
172 (Output_segment::set_is_unique_segment): New function.
173 (Output_segment::is_unique_segment_): New member.
174 * plugin.cc (allow_unique_segment_for_sections): New function.
175 (unique_segment_for_sections): New function.
176 (Plugin::load): Add new functions to transfer vector.
177 * Makefile.am (plugin_final_layout.readelf.stdout): Add readelf output.
178 * Makefile.in: Regenerate.
179 * testsuite/plugin_final_layout.sh: Check if unique segment
180 functionality works.
181 * testsuite/plugin_section_order.c (onload): Check if new interfaces
182 are available.
183 (allow_unique_segment_for_sections): New global.
184 (unique_segment_for_sections): New global.
185 (claim_file_hook): Call allow_unique_segment_for_sections.
186 (all_symbols_read_hook): Call unique_segment_for_sections.
16164a6b 187
1e2bee4f
CC
1882012-08-22 Cary Coutant <ccoutant@google.com>
189
190 * layout.cc (Layout::include_section): Don't assert on GROUP
191 sections with --emit-relocs.
192
1d5dfe78
CC
1932012-08-21 Cary Coutant <ccoutant@google.com>
194
195 * symtab.cc (Symbol_table::gc_mark_undef_symbols): Don't assert
196 if --export-dynamic-symbol names an undef symbol.
197
c9269dff
AM
1982012-08-18 Alan Modra <amodra@gmail.com>
199
200 * powerpc.cc: Formatting and white space.
201 (Powerpc_relobj): Rename got2_section_ to special_.
202 Add opd_ent_shndx_ and opd_ent_off_ vectors.
203 (Powerpc_relobj::opd_shndx, init_opd, get_opd_ent, set_opd_ent,
204 scan_opd_relocs, do_read_relocs, opd_ent_ndx): New functions.
205 (Target_powerpc): Add Address typedef and invalid_address. Use
206 throughout.
207 (Target_powerpc::is_branch_reloc): New function.
208 (Powerpc_relocate_functions): Add Address typedef, use throughout.
209 (Powerpc_relocate_functions:rela, rela_ua): Correct type used
210 for dst_mask, value and addend.
211 (Powerpc_relobj::do_find_special_sections): Find .opd for 64-bit.
212 (ld_2_1, cror_15_15_15, cror_31_31_31): New insn constants.
213 (Output_data_glink::do_write): Correct toc base. Don't try to use
214 uint16_t for 24-bit offset. Use get_output_section_offset and
215 check return.
216 (Target_powerpc::Scan::local): Handle more relocs.
217 (Target_powerpc::do_finalize_sections): Set up DT_PPC64_GLINK.
218 (Target_powerpc::Relocate::relocate): Correct toc base calculation.
219 Plug in toc restoring insn after plt calls. Translate branches
220 to function descriptor symbols to corresponding entry point.
221 (Target_powerpc::relocate_for_relocatable): Check return from
222 get_output_section_offset.
223 * symtab.h: Comment typo.
224
b1759dce
ILT
2252012-08-14 Ian Lance Taylor <iant@google.com>
226
227 * x86_64.cc (Target_x86_64::Scan::global): Fix erroneous call to
228 unsupported_relocal_local to call unsupported_reloc_global.
229
b9b2ae8b
NC
2302012-08-14 Nick Clifton <nickc@redhat.com>
231
232 PR ld/14265
233 * script-sections.cc (Sections_element::output_section_name): Add
234 keep return parameter.
235 (Output_section_element::match_name): Add keep return parameter.
236 Return the value of the keep_ member.
237 * script-sections.h (class Output_section): Update
238 output_section_name prototype.
239 * layout.cc (Layout::keep_input_section): New public member
240 function.
241 (Layout::choose_output_section): Pass keep parameter to
242 output_section_name.
243 * layout.h (class Layout): Add keep_input_section.
244 * object.cc (Sized_relobj_file::do_layout): Check for kept input
245 sections.
246 * testsuite/Makefile.am: Add a test.
247 * testsuite/Makefile.in: Regenerate.
248 * testsuite/pr14265.c: Source file for the test.
249 * testsuite/pr14265.t: Linker script for the test.
250 * testsuite/pr14265.sh: Shell script for the test.
251
921b5322
AM
2522012-08-14 Alan Modra <amodra@gmail.com>
253
254 * target.h (Target::output_section_name): New function.
255 (Target::do_output_section_name): New function.
256 * layout.cc (Layout::choose_output_section): Call the above.
257 * powerpc.cc (Target_powerpc::do_output_section_name): New function.
258
6ce78956
AM
2592012-08-14 Alan Modra <amodra@gmail.com>
260
261 * powerpc.cc: Update for renamed R_PPC_REL16 relocs.
262 (Output_data_got_powerpc::do_write): Don't rely on base class lookup
263 for replace_constant call.
264 (Output_data_plt_powerpc::do_print_to_mapfile): New function.
265 (Output_data_glink::do_print_to_mapfile): New function.
266 (Target_powerpc::Scan::local): Ignore R_PPC64_TOCSAVE.
267 (Target_powerpc::Relocate::relocate): Likewise.
268
d1a8cabd
AM
2692012-08-14 Alan Modra <amodra@gmail.com>
270
271 * powerpc.cc (Powerpc_relobj::set_got2_shndx): Delete.
272 (Powerpc_relobj::do_find_special_sections): Don't use set_got2_shndx.
273 (Output_data_glink::add_entry,find_entry): Remove shndx param.
274 (class Glink_sym_ent): Rename from struct Glink_sym_ent. Remove
275 all references to shndx_. Handle special case for R_PPC_PLTREL24
276 here.
277 (class Glink_sym_ent_hash): Rename from struct Glink_sym_ent_hash.
278 (Output_data_glink::do_write): Retrieve got2_shdnx from object.
279 (Target_powerpc::make_plt_entry): Don't special case R_PPC_PLTREL24
280 here.
281 (Target_powerpc::Scan::global): Nor on make_plt_entry call.
282 (Target_powerpc::Relocate::relocate): Nor on glink->find_entry call.
283
d83ce4e3
AM
2842012-08-12 Alan Modra <amodra@gmail.com>
285
286 * powerpc.cc: Whitespace fixes. Wrap overly long lines.
287 (glink insn constants): Use uint32_t.
288 (Output_data_glink::add_entry): Use insert, not [] operator.
289
cf43a2fe
AM
2902012-08-11 Alan Modra <amodra@gmail.com>
291
292 * object.h (Sized_relobj_file::find_shdr): New function.
293 (Sized_relobj_file::find_special_sections): New function.
294 * object.cc (Sized_relobj_file::find_shdr): New function.
295 (Sized_relobj_file::find_eh_frame): Use find_shdr.
296 (Sized_relobj_file::find_special_sections): New function, split out..
297 (Sized_relobj_file::do_read_symbols): ..from here.
298 * output.h (Output_data_got::replace_constant): New function.
299 (Output_data_got::num_entries): New function.
300 (Output_data_got::last_got_offset,set_got_size): Use num_entries.
301 (Output_data_got::got_offset): Protected rather than private.
302 (Output_data_got::replace_got_entry): New function.
303 * output.cc (Output_data_got::replace_got_entry): New function.
304 * powerpc.cc (class Powerpc_relobj): New.
305 (class Powerpc_relocate_functions): Delete all psymval variants or
306 convert to value,addend type. Delete pcrela, pcrela_unaligned.
307 Implement _ha functions using corresponding _hi function.
308 (Powerpc_relobj::find_special_sections): New function.
309 (Target_powerpc::do_make_elf_object): New function.
310 (class Output_data_got_powerpc): New.
311 (class Output_data_glink): New.
312 (class Powerpc_scan_relocatable_reloc): New.
313 Many more changes througout file.
314
3c892704
NC
3152012-08-09 Nick Clifton <nickc@redhat.com>
316
317 * po/vi.po: Updated Vietnamese translation.
318
82435b3b
ILT
3192012-08-07 Ian Lance Taylor <iant@google.com>
320
321 * layout.cc (Layout::add_target_dynamic_tags): If
322 dynrel_includes_plt but no dyn_rel, emit dynamic reloc tags for
323 plt_rel.
324
a6dc81d2
NC
3252012-07-30 Nick Clifton <nickc@redhat.com>
326
327 * po/gold.pot: Updated template.
328 * po/es.po: Updated Spanish translation.
329
f1415016
CC
3302012-07-18 Cary Coutant <ccoutant@google.com>
331
332 PR gold/14344
333 * configure.ac: Add check for -gpubnames support.
334 * configure: Regenerate.
335 * testsuite/Makefile.am (gdb_index_test_1): Add check for -gpubnames
336 support; force -gno-pubnames.
337 (gdb_index_test_2, gdb_index_test_3): Add check for -gpubnames
338 support.
339 (gdb_index_test_4): New test.
340 * testsuite/Makefile.in: Regenerate.
341 * testsuite/gdb_index_test_1.sh: Refactor code into common file.
342 * testsuite/gdb_index_test_2.sh: Likewise.
343 * testsuite/gdb_index_test_3.sh: Don't look for space after colon.
344 * testsuite/gdb_index_test_4.sh: New script.
345 * testsuite/gdb_index_test_comm.sh: New script with common code;
346 don't look for space after colon.
347
b7fd7c37
ST
3482012-07-16 Sriraman Tallam <tmsriram@google.com>
349
350 * gold.cc (queue_middle_tasks): Update function order only after
351 deferred objects due to plugins are processed.
352
1f3212db
ILT
3532012-07-11 Ian Lance Taylor <iant@google.com>
354
355 * arm.cc (Arm_relocate_functions::abs16): Remove unused typedef.
356 (Arm_exidx_cantunwind::do_fixed_endian_write): Likewise.
357 (Target_arm::scan_reloc_for_stub): Likewise.
358 * common.cc (Symbol_table::do_allocate_commons_list): Likewise.
359 * dwarf_reader.cc (Dwarf_die::skip_attributes): Likewise.
360 * ehframe.cc (Eh_frame::do_add_ehframe_input_section): Likewise.
361 * incremental.cc (Sized_incr_dynobj::do_add_symbols): Likewise.
362 * powerpc.cc (Target_powerpc::relocate_tls): Likewise.
363
81c82a68
ILT
3642012-07-10 Dodji Seketeli <dodji@redhat.com>
365 Ian Lance Taylor <iant@google.com>
366
367 PR gold/14309
368 * configure.ac: Test whether std::tr1::hash<off_t> works.
369 * gold.h: Add a specialization for std::tr1::hash<off_t> if
370 needed.
371 * output.h (class Output_fill): Add virtual destructor.
372 * configure, config.in: Rebuild.
373
eabc84f4
RM
3742012-06-22 Roland McGrath <mcgrathr@google.com>
375
376 * layout.cc (finalize): Define __ehdr_start symbol if applicable.
377
370e30b6
RÁE
3782012-06-12 Rafael Ávila de Espíndola <respindola@mozilla.com>
379
380 * plugin.cc (Plugin::load): Handle position independent executables.
381
fb1b895d
CC
3822012-06-06 Cary Coutant <ccoutant@google.com>
383
384 * layout.cc (gdb_sections): Remove ".debug_" prefixes,
385 add .debug_macro.
386 (lines_only_debug_sections): Likewise.
387 (gdb_fast_lookup_sections): New static array.
388 (is_gdb_debug_section): Rename formal parameter.
389 (is_lines_only_debug_section): Likewise.
390 (is_gdb_fast_lookup_section): New function.
391 (Layout::include_section): Check for ".zdebug_" prefix; pass
392 section name suffix to is_gdb_debug_section, et al.; check for
393 fast-lookup sections when building .gdb_index.
394 * options.h (--strip-debug-gdb): Update GDB version number.
395
7c0640fa
CC
3962012-06-06 Cary Coutant <ccoutant@google.com>
397
398 * configure.ac: Add check for fallocate.
399 * configure: Regenerate.
400 * config.in: Regenerate.
401
402 * options.h (class General_options): Add --mmap-output-file and
403 --posix-fallocate options.
404 * output.cc: (posix_fallocate): Remove; replace with...
405 (gold_fallocate): New function.
406 (Output_file::map_no_anonymous): Call gold_fallocate.
407 (Output_file::map): Check --mmap-output-file option.
408
2a49eb69
DK
4092012-06-05 Jing Yu <jingyu@google.com>
410
411 * gold.h (textdomain): Add do {} to empty while(0).
412 (bindtextdomain): Likewise.
413
fad072ac
CC
4142012-06-04 Cary Coutant <ccoutant@google.com>
415
416 * dynobj.cc (Sized_dynobj::do_get_global_symbol_counts): Call
417 has_dynsym_index.
418
8cc69fb6
ST
4192012-05-25 Sriraman Tallam <tmsriram@google.com>
420
421 * symtab.cc (Symbol_table::define_special_symbol):
422 Initialize *poldsym to prevent uninitialized variable errors.
423
1be75daa
CC
4242012-05-23 Cary Coutant <ccoutant@google.com>
425
426 * layout.cc (Layout::section_name_mapping): Add rules to handle
427 exact match on .data.rel.ro.local or .data.rel.ro.
428 (Layout::output_section_name): Check for exact matches.
429
9b689de0
CC
4302012-05-23 Cary Coutant <ccoutant@google.com>
431
432 * layout.cc (Layout::section_name_mapping): Match .data.rel.ro.*
433 more carefully.
434
b24fdbf5
CC
4352012-05-22 Cary Coutant <ccoutant@google.com>
436
437 * symtab.cc (Symbol::should_add_dynsym_entry): Check for relocatable
438 object before exporting symbol.
439
e550e1a2
L
4402012-05-21 H.J. Lu <hongjiu.lu@intel.com>
441
442 * testsuite/tls_test.cc: Include "config.h" first.
443 * testsuite/tls_test_c.c: Likewise.
444
df7b86aa
NC
4452012-05-17 Daniel Richard G. <skunk@iskunk.org>
446 Nick Clifton <nickc@redhat.com>
447
448 PR 14072
449 * configure.in: Add check that sysdep.h has been included before
450 any system header files.
451 * configure: Regenerate.
452 * config.in: Regenerate.
453
1007b503
CC
4542012-05-14 Cary Coutant <ccoutant@google.com>
455
456 * layout.cc (Layout::make_output_section): Mark .tdata section
457 as RELRO.
458 * testsuite/relro_test.cc: Add a TLS variable.
459
fd885f3a
L
4602012-05-10 H.J. Lu <hongjiu.lu@intel.com>
461
462 PR gold/14091
463 * x86_64.cc (Target_x86_64::Scan::local): For x32, generate
464 R_X86_64_RELATIVE64 instead of R_X86_64_RELATIVE in case of
465 R_X86_64_64.
466
80f5885c
CC
4672012-05-08 Cary Coutant <ccoutant@google.com>
468
469 * layout.cc (gdb_sections): Update GDB version, add .debug_addr.
470 (lines_only_debug_sections): Likewise.
471
2e702c99
RM
4722012-05-02 Roland McGrath <mcgrathr@google.com>
473
474 * nacl.cc: New file.
475 * nacl.h: New file.
476 * Makefile.am (CCFILES, HFILES): Add them.
477 * Makefile.in: Regenerate.
478 * i386.cc (Output_data_plt_i386_nacl): New class.
479 (Output_data_plt_i386_nacl_exec): New class.
480 (Output_data_plt_i386_nacl_dyn): New class.
481 (Target_i386_nacl): New class.
482 (Target_selector_i386_nacl): New class.
483 (target_selector_i386): Use it instead of Target_selector_i386.
484 * x86_64.cc (Output_data_plt_x86_64_nacl): New class.
485 (Target_x86_64_nacl): New class.
486 (Target_selector_x86_64_nacl): New class.
487 (target_selector_x86_64, target_selector_x32): Use it instead of
488 Target_selector_x86_64.
489 * arm.cc (Output_data_plt_arm_nacl): New class.
490 (Target_arm_nacl): New class.
491 (Target_selector_arm_nacl): New class.
492 (target_selector_arm, target_selector_armbe): Use it instead of
493 Target_selector_arm.
494
495 * target-select.cc (select_target): Take new Input_file* and off_t
496 arguments, pass them on to recognize method of selector.
497 * object.cc (make_elf_sized_object): Update caller.
498 * parameters.cc (parameters_force_valid_target): Likewise.
499 * incremental.cc (make_sized_incremental_binary): Likewise.
500 * target-select.h: Update decl.
501 (Target_selector::recognize): Take new Input_file* argument,
502 pass it on to do_recognize.
503 (Target_selector::do_recognize): Take new Input_file* argument.
504 * freebsd.h (Target_selector_freebsd::do_recognize): Likewise.
505 * powerpc.cc (Target_selector_powerpc::do_recognize): Likewise.
506 * sparc.cc (Target_selector_sparc::do_recognize): Likewise.
507 * testsuite/testfile.cc (Target_selector::do_recognize): Likewise.
508
509 * target.h (Target::Target_info): New members isolate_execinstr
510 and rosegment_gap.
511 (Target::isolate_execinstr, Target::rosegment_gap): New methods.
512 * arm.cc (Target_arm::arm_info): Update initializer.
513 * i386.cc (Target_i386::i386_info): Likewise.
514 * powerpc.cc (Target_powerpc::powerpc_info): Likewise.
515 * sparc.cc (Target_sparc::sparc_info): Likewise.
516 * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
517 * testsuite/testfile.cc (Target_test::test_target_info): Likewise.
518 * layout.cc (Layout::attach_allocated_section_to_segment):
519 Take new const Target* argument. If target->isolate_execinstr(), act
520 like --rosegment.
521 (Layout::find_first_load_seg): Take new const Target* argument;
522 if target->isolate_execinstr(), reject PF_X segments.
523 (Layout::relaxation_loop_body): Update caller.
524 (Layout::set_segment_offsets): If target->isolate_execinstr(),
525 reset file offset to zero when we hit LOAD_SEG, and then do a second
526 loop over the segments before LOAD_SEG to reassign offsets after
527 addresses have been determined. Handle target->rosegment_gap().
528 (Layout::attach_section_to_segment): Take new const Target* argument;
529 pass it to attach_allocated_section_to_segment.
530 (Layout::make_output_section): Update caller.
531 (Layout::attach_sections_to_segments): Take new const Target* argument;
532 pass it to attach_section_to_segment.
533 * gold.cc (queue_middle_tasks): Update caller.
534 * layout.h (Layout): Update method decls with new arguments.
535
536 * arm.cc (Target_arm::Target_arm): Take optional argument for the
537 Target_info pointer to use.
538 (Target_arm::do_make_data_plt): New virtual method.
539 (Target_arm::make_data_plt): New method that calls it.
540 (Target_arm::make_plt_entry): Use it.
541 (Output_data_plt_arm::Output_data_plt_arm): Take additional argument
542 for the section alignment.
543 (Output_data_plt_arm::do_first_plt_entry_offset): New abstract virtual
544 method.
545 (Output_data_plt_arm::first_plt_entry_offset): Call it.
546 (Output_data_plt_arm::do_get_plt_entry_size): New abstract virtual
547 method.
548 (Output_data_plt_arm::get_plt_entry_size): Call it.
549 (Output_data_plt_arm::do_fill_plt_entry): New abstract virtual method.
550 (Output_data_plt_arm::fill_plt_entry): New method that calls it.
551 (Output_data_plt_arm::do_fill_first_plt_entry): New abstract virtual
552 method.
553 (Output_data_plt_arm::fill_first_plt_entry): New method that calls it.
554 (Output_data_plt_arm::set_final_data_size): Use get_plt_entry_size
555 method instead of sizeof(plt_entry).
556 (Output_data_plt_arm::add_entry): Likewise.
557 Use first_plt_entry_offset method instead of sizeof(first_plt_entry).
558 (Target_arm::first_plt_entry_offset): Call method on this->plt_ rather
559 than static method.
560 (Target_arm::plt_entry_size): Likewise.
561 (Output_data_plt_arm::first_plt_entry, Output_data_plt_arm::plt_entry):
562 Move to ...
563 (Output_data_plt_arm_standard): ... here, new class.
564 (Output_data_plt_arm::do_write): Move guts of PLT filling to...
565 (Output_data_plt_arm_standard::do_fill_first_plt_entry): ... here ...
566 (Output_data_plt_arm_standard::do_fill_plt_entry): ... and here.
567
568 * x86_64.cc (Output_data_plt_x86_64::Output_data_plt_x86_64):
569 Take additional argument for the PLT entry size.
570 (Output_data_plt_x86_64::get_tlsdesc_plt_offset):
571 Use get_plt_entry_size method rather than plt_entry_size variable.
572 (Output_data_plt_x86_64::reserve_slot): Likewise.
573 (Output_data_plt_x86_64::do_adjust_output_section): Likewise.
574 (Output_data_plt_x86_64::add_entry): Likewise.
575 (Output_data_plt_x86_64::add_local_ifunc_entry): Likewise.
576 (Output_data_plt_x86_64::address_for_global): Likewise.
577 (Output_data_plt_x86_64::address_for_local): Likewise.
578 (Output_data_plt_x86_64::set_final_data_size): Likewise.
579 (Output_data_plt_x86_64::first_plt_entry_offset): Likewise.
580 Make method non-static.
581 (Output_data_plt_x86_64::do_get_plt_entry_size): New abstract virtual
582 method.
583 (Output_data_plt_x86_64::get_plt_entry_size): Just call that.
584 (Output_data_plt_x86_64::do_add_eh_frame): New abstract virtual method.
585 (Output_data_plt_x86_64::add_eh_frame): New method to call it.
586 (Output_data_plt_x86_64::do_fill_first_plt_entry): New abstract
587 virtual method.
588 (Output_data_plt_x86_64::fill_first_plt_entry): New method to call it.
589 (Output_data_plt_x86_64::do_fill_plt_entry): New abstract
590 virtual method.
591 (Output_data_plt_x86_64::fill_plt_entry): New method to call it.
592 (Output_data_plt_x86_64::do_fill_tlsdesc_entry): New abstract
593 virtual method.
594 (Output_data_plt_x86_64::fill_tlsdesc_entry): New method to call it.
595 (Output_data_plt_x86_64::plt_entry_size)
596 (Output_data_plt_x86_64::first_plt_entry)
597 (Output_data_plt_x86_64::plt_entry)
598 (Output_data_plt_x86_64::tlsdesc_plt_entry)
599 (Output_data_plt_x86_64::plt_eh_frame_fde_size)
600 (Output_data_plt_x86_64::plt_eh_frame_fde): Move to ...
601 (Output_data_plt_x86_64_standard): ... here, new class.
602 (Target_x86_64::Target_x86_64): Take optional argument for the
603 Target_info pointer to use.
604 (Target_x86_64::do_make_data_plt): New virtual method.
605 (Target_x86_64::make_data_plt): New method to call it.
606 (Target_x86_64::init_got_plt_for_update): Use that.
607 Call this->plt_->add_eh_frame method here.
608 (Output_data_plt_x86_64::init): Don't do add_eh_frame_for_plt here.
609 (Target_x86_64::first_plt_entry_offset): Call method on this->plt_
610 rather than static method.
611 (Target_x86_64::plt_entry_size): Likewise.
612 (Output_data_plt_x86_64::do_write): Use get_plt_entry_size method
613 rather than plt_entry_size variable. Move guts of PLT filling to...
614 (Output_data_plt_x86_64_standard::do_fill_first_plt_entry): ... here ...
615 (Output_data_plt_x86_64_standard::do_fill_plt_entry): ... and here ...
616 (Output_data_plt_x86_64_standard::do_fill_tlsdesc_entry): ... and here.
617
618 * i386.cc (Output_data_plt_i386::Output_data_plt_i386): Take
619 additional argument for the section alignment.
620 Don't do add_eh_frame_for_plt here.
621 (Output_data_plt_i386::first_plt_entry_offset): Make the method
622 non-static. Use get_plt_entry_size method rather than plt_entry_size
623 variable.
624 (Output_data_plt_i386::do_get_plt_entry_size): New abstract virtual
625 method.
626 (Output_data_plt_i386::get_plt_entry_size): Call it.
627 (Output_data_plt_i386::do_add_eh_frame): New abstract virtual method.
628 (Output_data_plt_i386::add_eh_frame): New method to call it.
629 (Output_data_plt_i386::do_fill_first_plt_entry): New abstract virtual
630 method.
631 (Output_data_plt_i386::fill_first_plt_entry): New method to call it.
632 (Output_data_plt_i386::do_fill_plt_entry): New abstract virtual
633 method.
634 (Output_data_plt_i386::fill_plt_entry): New method to call it.
635 (Output_data_plt_i386::set_final_data_size): Use get_plt_entry_size
636 method instead of plt_entry_size.
637 (Output_data_plt_i386::plt_entry_size)
638 (Output_data_plt_i386::plt_eh_frame_fde_size)
639 (Output_data_plt_i386::plt_eh_frame_fde): Move to ...
640 (Output_data_plt_i386_standard): ... here, new class.
641 (Output_data_plt_i386_exec): New class.
642 (Output_data_plt_i386::exec_first_plt_entry): Move to ...
643 (Output_data_plt_i386_exec::first_plt_entry): ... here.
644 (Output_data_plt_i386::exec_plt_entry): Move to ...
645 (Output_data_plt_i386_exec::plt_entry): ... here.
646 (Output_data_plt_i386_dyn): New class.
647 (Output_data_plt_i386::first_plt_entry): Move to ...
648 (Output_data_plt_i386_dyn::first_plt_entry): ... here.
649 (Output_data_plt_i386::dyn_plt_entry): Move to ...
650 (Output_data_plt_i386_dyn::plt_entry): ... here.
651 (Target_i386::Target_i386): Take optional argument for the Target_info
652 pointer to use.
653 (Target_i386::do_make_data_plt): New virtual method.
654 (Target_i386::make_data_plt): New method to call it.
655 (Target_i386::make_plt_section): Use that.
656 Call this->plt_->add_eh_frame method here.
657 (Output_data_plt_i386::add_entry): Use get_plt_entry_size method
658 rather than plt_entry_size variable.
659 (Output_data_plt_i386::add_local_ifunc_entry): Likewise.
660 (Output_data_plt_i386::address_for_local): Likewise.
661 (Output_data_plt_i386::do_write): Likewise.
662 Move guts of PLT filling to...
663 (Output_data_plt_i386_exec::do_fill_first_plt_entry): ... here ...
664 (Output_data_plt_i386_exec::do_fill_plt_entry): ... and here ...
665 (Output_data_plt_i386_dyn::do_fill_first_plt_entry): ... and here ...
666 (Output_data_plt_i386_dyn::do_fill_plt_entry): ... and here.
667
b9b9f2ee
CC
6682012-05-01 Cary Coutant <ccoutant@google.com>
669
670 * dwarf_reader.cc (Dwarf_die::read_attributes)
671 (Dwarf_die::skip_attributes, Dwarf_die::int_attribute)
672 (Dwarf_die::uint_attribute): Remove DW_FORM_null.
673 * reduced_debug_output.cc
674 (Output_reduced_debug_info_section::get_die_end): Remove
675 DW_FORM_GNU_ref_index. Add default case.
676
57923f48
MW
6772012-04-26 Mark Wielaard <mjw@redhat.com>
678
679 * dwarf_reader.cc (Dwarf_die::address_attribute): New function.
680 * dwarf_reader.h (Dwarf_die::address_attribute): Likewise.
681 * gdb-index.cc (Gdb_index_info_reader::record_cu_ranges): Handle
682 DW_AT_high_pc as offset from DW_AT_low_pc.
683
684 * testsuite/Makefile.am (gdb_index_test_3.sh): New test case.
685 * testsuite/Makefile.in: Regenerate.
686 * testsuite/gdb_index_test_3.c: New test source file.
687 * testsuite/gdb_index_test_3.sh: New test source file.
688
2c54b4f4
ILT
6892012-04-25 Ian Lance Taylor <iant@google.com>
690
691 * arm.cc (Target_arm::do_is_defined_by_abi): Make sym a const
692 pointer.
693 (Stub_addend_reader::operator()): Declare Arm_relocate_functions
694 as a class, not a struct.
695 (Target_arm::scan_span_for_cortex_a8_erratum): Likewise.
696 (Target_arm::apply_cortex_a8_workaround): Likewise.
697 * gc.h: Declare Reloc_types as a struct, not a class.
698 * object.h: Declare Symbols_data as a struct.
699 * reloc.h: Declare Read_relocs_data as a struct.
700 * target.h: Declare Relocate_info as a struct.
701
a5a5f7a3
DM
7022012-04-24 David S. Miller <davem@davemloft.net>
703
704 * sparc.cc (Target_sparc::Relocate::relax_call): New function.
705 (Target_sparc::Relocate::relocate): Call it for R_SPARC_WDISP30
706 and R_SPARC_WPLT30.
707
f038d496
CC
7082012-04-24 Cary Coutant <ccoutant@google.com>
709
710 * incremental-dump.cc (find_input_containing_global): Replace
711 magic number with symbolic constant.
712 (dump_incremental_inputs): Update version number.
713 * incremental.cc (Output_section_incremental_inputs): Update version
714 number; import symbolic constants from Incremental_inputs_reader.
715 (Incremental_inputs::create_data_sections): Align relocations
716 section correctly for 64-bit targets.
717 (Output_section_incremental_inputs::set_final_data_size): Use symbolic
718 constants; add padding.
719 (Output_section_incremental_inputs::write_header): Add assert for
720 header_size.
721 (Output_section_incremental_inputs::write_input_files): Add assert
722 for input_entry_size.
723 (Output_section_incremental_inputs::write_info_blocks): Add padding;
724 add assert for object_info_size, input_section_entry_size,
725 global_sym_entry_size.
726 * incremental.h (Incremental_inputs_reader): Add symbolic constants
727 for data structure sizes; use them.
728 (Incremental_input_entry_reader): Import symbolic constants from
729 Incremental_inputs_reader; use them.
730
a4d85145
DM
7312012-04-23 David S. Miller <davem@davemloft.net>
732
733 * sparc.cc (class Target_sparc): Add elf_machine_, elf_flags_,
734 and elf_flags_set_.
735 (Target_sparc::Target_sparc): Initialize new fields.
736 (Target_sparc::do_make_elf_object): New function.
737 (Target_sparc::do_adjust_elf_header): New function.
738
1d509098
CC
7392012-04-23 Cary Coutant <ccoutant@google.com>
740
741 * gdb-index.cc (Gdb_index::do_write): Use Swap_aligned32 for writing
742 CU range table of gdb index.
743
7ebeff7f
DM
7442012-04-20 David S. Miller <davem@davemloft.net>
745
746 * target.cc (Sized_target::do_adjust_elf_header): Use big_endian
747 instead of false.
748
13cf9988
DM
7492012-04-16 David S. Miller <davem@davemloft.net>
750
2a1079e8
DM
751 * sparc.cc (Target_sparc::got_address): New function.
752 (Sparc_relocate_functions::gdop_hix22): New function.
753 (Sparc_relocate_functions::gdop_lox10): New function.
754 (Target_sparc::Scan::local): Do not emit a GOT entry for GOTDATA
755 relocs.
756 (Target_sparc::Scan::local): Likewise if the global symbol is not
757 preemptible and is not IFUNC.
758 (Target_sparc::Relocate::relocate): Perform GOTDATA code
759 transformations for local and non-preemptible non-IFUNC global
760 symbols.
761
0bc964fc
DM
762 * gdb-index.cc (Gdb_index::do_write): Use Swap_unaligned when
763 writing out 64-bit part of ranges.
764
661d7a80
DM
765 * Makefile.am: Build IFUNC tests with -fPIC and -fPIE instead of
766 -fpic and -fpie respectively.
767 * Makefile.in: Regenerate.
768
8c2bf391
DM
769 * sparc.cc (class Target_sparc): Add rela_ifunc_.
770 (Target_sparc::Target_sparc): Initialize new field.
771 (Target_sparc::do_plt_section_for_global): New function.
772 (Target_sparc::do_plt_section_for_local): New function.
773 (Target_sparc::reloc_needs_plt_for_ifunc): New function.
774 (Target_sparc::make_plt_section): New function, broken out of
775 make_plt_entry. Use ORDER_NON_RELRO_FIRST for ".plt".
776 (Target_sparc::make_plt_entry): Call make_plt_section.
777 (Target_sparc::make_local_ifunc_plt_entry): New function.
778 (Target_sparc::rela_ifunc_section): New function.
779 (Target_sparc::plt_section): Remove const.
780 (Output_data_plt_sparc): Update declarations. Define Global_ifunc
781 and Local_ifunc types. Add global_ifuncs_, local_ifuncs_, ifunc_rel_,
782 and ifunc_count_ fields.
783 (Output_data_plt_sparc::Output_data_plt_sparc): Initialize new fields.
784 (Output_data_plt_sparc::add_entry): Handle IFUNC symbols.
785 (Output_data_plt_sparc::add_local_ifunc_entry): New function.
786 (Output_data_plt_sparc::rela_ifunc): New function.
787 (Output_data_plt_sparc::emit_pending_ifunc_relocs): New function.
788 (Output_data_plt_sparc::has_ifunc_section): New function.
789 (Output_data_plt_sparc::entry_count): Include ifunc_count_.
790 (Output_data_plt_sparc::address_for_global): New function.
791 (Output_data_plt_sparc::address_for_local): New function.
792 (Output_data_plt_sparc::plt_index_to_offset): New function.
793 (Output_data_plt_sparc::set_final_data_size): Use plt_index_to_offset
794 and entry_count.
795 (Output_data_plt_sparc::do_write): Use first_plt_entry_offset and
796 entry_count.
797 (Target_sparc::Scan::get_reference_flags): Add R_SPARC_IRELATIVE and
798 R_SPARC_JMP_IREL to switch.
799 (Target_sparc::Scan::check_non_pic): Likewise.
800 (Target_sparc::Scan::local): Handle IFUNC symbols.
801 (Target_sparc::Scan::local): Likewise.
802 (Target_sparc::Relocate::relocate): Likewise, use plt_address_for_global
803 and plt_address_for_local.
804 (Target_sparc::do_finalize_sections): Call emit_pending_ifunc_relocs.
805 Define __rel_iplt_start and __rel_iplt_end if doing a static link.
806
13cf9988
DM
807 * output.h (Output_reloc): Allow use_plt_offset for global relocs too.
808 (class Output_data_reloc): Adjust calls to Output_reloc_type.
809 (Output_data_reloc::add_global_relative): (RELA only) Add use_plt_offset.
810 * output.cc (Output_reloc::Output_reloc): Add use_plt_offset flag for
811 global relocs too.
812 (Output_reloc::symbol_value): Respect use_plt_offset_ for global symbols.
813 * powerpc.cc (Target_powerpc::Scan::global): Adjust add_global_relative
814 calls.
815 * sparc.cc (Target_sparc::Scan::global): Likewise.
816 * x86_64.cc (Target_x86_64::Scan::global): Likewise.
817
31821be0
CC
8182012-04-16 Cary Coutant <ccoutant@google.com>
819
820 * archive.cc (Library_base::should_include_member): Check for
821 --export-dynamic-symbol.
822 * options.h (class General_options): Add --export-dynamic-symbol.
823 * symtab.cc (Symbol::should_add_dynsym_entry): Check for
824 --export-dynamic-symbol.
825 (Symbol_table::gc_mark_undef_symbols): Likewise.
826 (Symbol_table::do_add_undefined_symbols_from_command_line): Likewise.
827
2615994e
DM
8282012-04-12 David S. Miller <davem@davemloft.net>
829
830 * sparc.cc (Reloc::wdisp10): New relocation method.
831 (Reloc::h34): Likewise.
832 (Target_sparc::Scan::check_non_pic): Handle R_SPARC_H34.
833 (Target_sparc::Scan::get_reference_flags): Handle R_SPARC_H34 and
834 R_SPARC_WDISP10.
835 (Target_sparc::Scan::local): Likewise.
836 (Target_sparc::Scan::global): Likewise.
837 (Target_sparc::Relocate::relocate): Likewise.
838
6782735d
CC
8392012-04-09 Cary Coutant <ccoutant@google.com>
840
841 * gdb-index.cc (Gdb_index_info_reader::record_cu_ranges): Allow
842 low_pc == 0.
843
8c7a0b00
ILT
8442012-04-06 Ian Lance Taylor <iant@google.com>
845
846 * timer.cc: #include <unistd.h>.
847
58797674
RM
8482012-04-06 Roland McGrath <mcgrathr@google.com>
849
850 * configure.in (AC_CHECK_HEADERS): Add locale.h.
851 * config.in: Regenerate.
852 * configure: Regenerate.
853
44350750
NC
8542012-04-05 Nick Clifton <nickc@redhat.com>
855
856 * configure.ac (AC_CHECK_FUNCS): Add setlocale.
857 (AM_LC_MESSAGES): Add.
858 * aclocal.m4: Regenerate.
859 * config.in: Regenerate.
860 * configure: Regenerate.
861
c1027032
CC
8622012-03-21 Cary Coutant <ccoutant@google.com>
863
864 * Makefile.am: Add gdb-index.cc, gdb-index.h.
865 * Makefile.in: Regenerate.
866 * dwarf_reader.cc (Sized_elf_reloc_mapper::do_initialize): New function.
867 (Sized_elf_reloc_mapper::symbol_section): New function.
868 (Sized_elf_reloc_mapper::do_get_reloc_target): New function.
869 (make_elf_reloc_mapper): New function.
870 (Dwarf_abbrev_table::clear_abbrev_codes): New function.
871 (Dwarf_abbrev_table::do_read_abbrevs): New function.
872 (Dwarf_abbrev_table::do_get_abbrev): New function.
873 (Dwarf_ranges_table::read_ranges_table): New function.
874 (Dwarf_ranges_table::read_range_list): New function.
875 (Dwarf_pubnames_table::read_section): New function.
876 (Dwarf_pubnames_table::read_header): New function.
877 (Dwarf_pubnames_table::next_name): New function.
878 (Dwarf_die::Dwarf_die): New function.
879 (Dwarf_die::read_attributes): New function.
880 (Dwarf_die::skip_attributes): New function.
881 (Dwarf_die::set_name): New function.
882 (Dwarf_die::set_linkage_name): New function.
883 (Dwarf_die::attribute): New function.
884 (Dwarf_die::string_attribute): New function.
885 (Dwarf_die::int_attribute): New function.
886 (Dwarf_die::uint_attribute): New function.
887 (Dwarf_die::ref_attribute): New function.
888 (Dwarf_die::child_offset): New function.
889 (Dwarf_die::sibling_offset): New function.
890 (Dwarf_info_reader::check_buffer): New function.
891 (Dwarf_info_reader::parse): New function.
892 (Dwarf_info_reader::do_parse): New function.
893 (Dwarf_info_reader::do_read_string_table): New function.
894 (Dwarf_info_reader::lookup_reloc): New function.
895 (Dwarf_info_reader::get_string): New function.
896 (Dwarf_info_reader::visit_compilation_unit): New function.
897 (Dwarf_info_reader::visit_type_unit): New function.
898 (Sized_dwarf_line_info::Sized_dwarf_line_info): Use
899 Sized_elf_reloc_mapper.
900 (Sized_dwarf_line_info::symbol_section): Remove function.
901 (Sized_dwarf_line_info::read_relocs): Use Sized_elf_reloc_mapper.
902 (Sized_dwarf_line_info::read_line_mappings): Remove object
903 parameter, adjust callers.
904 (Sized_dwarf_line_info::format_file_lineno): Fix type of cast.
905 * dwarf_reader.h: Include <sys/types.h>.
906 (class Track_relocs): Remove forward declaration.
907 (class Elf_reloc_mapper): New class.
908 (class Sized_elf_reloc_mapper): New class.
909 (class Dwarf_abbrev_table): New class.
910 (class Dwarf_range_list): New class.
911 (class Dwarf_ranges_table): New class.
912 (class Dwarf_pubnames_table): New class.
913 (class Dwarf_die): New class.
914 (class Dwarf_info_reader): New class.
915 (Sized_dwarf_line_info::read_line_mappings): Remove object parameter.
916 (Sized_dwarf_line_info::symbol_section): Remove member function.
917 * dynobj.h (Sized_dynobj::do_section_contents): Refactor code from
918 base class.
919 * gdb-index.cc: New source file.
920 * gdb-index.h: New source file.
921 * incremental.cc (Sized_relobj_incr::do_layout): Track .debug_info
922 and .debug_types sections, call Layout::add_to_gdb_index.
923 (Sized_relobj_incr::do_section_name): Implement.
924 (Sized_relobj_incr::do_section_contents): Adjust parameter list and
925 return type; Implement.
926 (Sized_incr_dynobj::do_section_contents): Adjust parameter list and
927 return type.
928 * incremental.h (Sized_relobj_incr::do_section_contents): Adjust
929 parameter list and return type.
930 (Sized_incr_dynobj::do_section_contents): Likewise.
931 * layout.cc: Include gdb-index.h.
932 (Layout::Layout): Initialize gdb_index_data_.
933 (Layout::init_fixed_output_section): Check for .gdb_index section.
934 (Layout::add_to_gdb_index): New function. Instantiate.
935 * layout.h: Add forward declaration for class Gdb_index.
936 (Layout::add_to_gdb_index): New member function.
937 (Layout::gdb_index_data_): New data member.
938 * main.cc: Include gdb-index.h.
939 (main): Print statistics for gdb index.
940 * object.cc (Object::section_contents): Move code into
941 do_section_contents.
942 (need_decompressed_section): Check for sections needed when building
943 gdb index.
944 (build_compressed_section_map): Likewise.
945 (Sized_relobj_file::do_read_symbols): Need local symbols when building
946 gdb index.
947 (Sized_relobj_file::do_layout): Track .debug_info and .debug_types
948 sections; call Layout::add_to_gdb_index.
949 (Sized_relobj_file::do_decompressed_section_contents): Call
950 do_section_contents directly.
951 * object.h (Object::do_section_contents): Adjust parameter list and
952 return type.
953 (Object::do_decompressed_section_contents): Call do_section_contents
954 directly.
955 (Sized_relobj_file::do_section_contents): Adjust parameter list and
956 return type.
957 * options.h (class General_options): Add --gdb-index option.
958 * plugin.cc (Sized_pluginobj::do_section_contents): Adjust parameter
959 list and return type.
960 * plugin.h (Sized_pluginobj::do_section_contents): Likewise.
961 * reloc.h (Track_relocs::checkpoint): New function.
962 (Track_relocs::reset): New function.
963
964 * testsuite/Makefile.am (gdb_index_test_1.sh, gdb_index_test_2.sh):
965 New test cases.
966 * testsuite/Makefile.in: Regenerate.
967 * testsuite/gdb_index_test.cc: New test source file.
968 * testsuite/gdb_index_test_1.sh: New test source file.
969 * testsuite/gdb_index_test_2.sh: New test source file.
970
647f1574
DK
9712012-03-19 Doug Kwan <dougkwan@google.com>
972
973 * arm.cc (Target_arm::do_define_standard_symbols): New method.
2e702c99 974 (Target_arm::do_finalize_sections): Remove code which defines
647f1574
DK
975 __exidx_start and __exidx_end. Make symbol table parameter
976 anonymous as it is not used.
977 * gold.cc (queue_middle_tasks): Call target hook to define any
978 target-specific symbols.
979 * target.h (Target::define_standard_symbols): New method.
980 (Target::do_define_standard_symbols): Same.
981 * testsuite/Makefile.am (arm_exidx_test): Dump relocations also.
982 * testsuite/Makefile.in: Regenerate.
983 * testsuite/arm_exidx.s: Generate data relocations for __exidx_start
984 and __exidx_end.
985 * testsuite/arm_exidx_test.sh: Check that no unused dynamic
986 relocations are generated for __exidx_start and __exidx_end.
987
7c6109da
DK
9882012-03-16 Doug Kwan <dougkwan@google.com>
989
990 * testsuite/Makefile.am: Disable test initpri3b.
991 * testsuite/Makefile.in: Regenerate.
992
7b8957f8
DK
9932012-03-15 Doug Kwan <dougkwan@google.com>
994
995 * arm.cc (Target_arm::got_section): Make .got section read-only
996 if -z now is given.
997
14dc9ef7
ILT
9982012-03-15 Ian Lance Taylor <iant@google.com>
999
1000 PR gold/13850
1001 * layout.cc (Layout::make_output_section): Correctly mark
1002 SHT_INIT_ARRAY, et. al., as relro.
1003
fa40b62a
DK
10042012-03-14 Doug Kwan <dougkwan@google.com>
1005
1006 * gold/arm.cc (Target_arm::Scan::global): Generate R_ARM_GLOB_DAT
1007 dynamic relocations for protected symbols in shared objects.
1008
fd325007
ILT
10092012-03-13 Ian Lance Taylor <iant@google.com>
1010
1011 * resolve.cc (Symbol_table::resolve): When merging common symbols,
1012 keep the larger alignment.
1013
e8dd54e1
CC
10142012-03-12 Cary Coutant <ccoutant@google.com>
1015
1016 * dwarf_reader.cc (Sized_dwarf_line_info::process_one_opcode): Fix
1017 handling of DW_LNE_define_file.
1018
feb5f3b0
CC
10192012-03-12 Cary Coutant <ccoutant@google.com>
1020
1021 * reduced_debug_output.cc
1022 (Output_reduced_debug_info_section::get_die_end): Add new FORM
1023 codes to switch.
1024
a1fb4256
CC
10252012-02-29 Cary Coutant <ccoutant@google.com>
1026
1027 * object.cc (need_decompressed_section): Add #ifdef ENABLE_THREADS.
1028
5dd8762a
CC
10292012-02-29 Cary Coutant <ccoutant@google.com>
1030
1031 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
1032 Call Object::decompressed_section_contents.
1033 * dwarf_reader.h (Sized_dwarf_line_info::~Sized_dwarf_line_info):
1034 New dtor.
1035 (Sized_dwarf_line_info::buffer_start_): New data member.
1036 * merge.cc (Output_merge_data::do_add_input_section): Call
1037 Object::decompressed_section_contents.
1038 (Output_merge_string::do_add_input_section): Likewise.
1039 * object.cc (need_decompressed_section): New function.
1040 (build_compressed_section_map): Decompress sections needed later.
1041 (Sized_relobj_file::do_decompressed_section_contents): New function.
1042 (Sized_relobj_file::do_discard_decompressed_sections): New function.
1043 * object.h (Object::decompressed_section_contents): New function.
1044 (Object::discard_decompressed_sections): New function.
1045 (Object::do_decompressed_section_contents): New function.
1046 (Object::do_discard_decompressed_sections): New function.
1047 (Compressed_section_info): New type.
1048 (Compressed_section_map): Include decompressed section contents.
1049 (Sized_relobj_file::do_decompressed_section_contents): New function.
1050 (Sized_relobj_file::do_discard_decompressed_sections): New function.
1051
7b5de7ee
CC
10522012-02-16 Cary Coutant <ccoutant@google.com>
1053
1054 * testsuite/Makefile.am (initpri2): Add --ctors-in-init-array option.
1055 * testsuite/Makefile.in: Regenerate.
1056
f9fa4a63
CC
10572012-02-14 Cary Coutant <ccoutant@google.com>
1058
1059 * options.cc (General_options::finalize): Disallow -pie and -static.
1060
2c175ebc
DK
10612012-02-03 Doug Kwan <dougkwan@google.com>
1062
1063 * arm.cc (Arm_relocate_functions::abs8,
1064 Arm_relocate_functions::abs16): Use
1065 Bits::has_signed_unsigned_overflow32.
1066 (Arm_relocate_functions::thm_abs8): Correct range of
1067 overflow check.
1068 * reloc.h (Bits class): Change minimum number of bits from 0 to 1
1069 in assertions.
1070
90cff06f
DK
10712012-02-02 Doug Kwan <dougkwan@google.com>
1072
1073 * arm.cc (Reloc_stub::stub_type_for_reloc): Use PIC stubs in all
1074 position independent outputs, not just shared objects.
1075
63887f3d
L
10762012-01-30 H.J. Lu <hongjiu.lu@intel.com>
1077
1078 * configure.ac: Check if -fpic -mtls-dialect=gnu2 works.
1079 * configure: Regenerated.
1080
bef2b434
ILT
10812012-01-27 Ian Lance Taylor <iant@google.com>
1082
1083 * reloc.h (Bits): New class with static functions, copied from
1084 namespace utils in arm.cc.
1085 * arm.cc (namespace utils): Remove. Rewrite all uses to use Bits
1086 instead.
1087
c335b55d
L
10882012-01-27 H.J. Lu <hongjiu.lu@intel.com>
1089
1090 * incremental.cc (write_info_blocks): Correct relocation offset.
1091
41194d9f
L
10922012-01-27 H.J. Lu <hongjiu.lu@intel.com>
1093
1094 * x86_64.cc (Relocate::tls_gd_to_ie): Support x32.
1095 (Relocate::tls_gd_to_le): Likewise.
1096
1bae613c
L
10972012-01-27 H.J. Lu <hongjiu.lu@intel.com>
1098
1099 * x86_64.cc (Scan::global): Support x32 IFUNC function pointer.
1100
24482ca0
L
11012012-01-27 H.J. Lu <hongjiu.lu@intel.com>
1102
1103 * configure.ac: Check if -mcmodel=medium works.
1104 * configure: Regenerated.
1105
c2c7840a
CC
11062012-01-24 Cary Coutant <ccoutant@google.com>
1107
1108 * int_encoding.cc (read_unsigned_LEB_128): Replaced with inline
1109 definition and ...
1110 (read_unsigned_LEB_128_x): ... this new function.
1111 (read_signed_LEB_128): Replaced with inline definition and ...
1112 (read_signed_LEB_128_x): ... this new function.
1113 * int_encoding.h (read_unsigned_LEB_128_x): New function.
1114 (read_unsigned_LEB_128): Add inline definition.
1115 (read_signed_LEB_128_x): New function.
1116 (read_signed_LEB_128): Add inline definition.
1117 * testsuite/Makefile.am (leb128_unittest): New unit test.
1118 * testsuite/Makefile.in: Regenerate.
1119 * testsuite/leb128_unittest.cc: New unit test.
1120
833de760 11212012-01-23 Ian Lance Taylor <iant@google.com>
9dee3b3c
ILT
1122
1123 PR gold/13617
1124 * i386.cc (Target_i386::do_code_fill): When using a jmp
1125 instruction, pad with nop instructions.
1126 * x86_64.cc (Target_x86_64::do_code_fill): Likewise.
1127
618d6666
L
11282012-01-22 H.J. Lu <hongjiu.lu@intel.com>
1129
1130 * x86_64.cc (gc_process_relocs): Add typename on types used in
1131 template.
1132 (scan_relocs): Likewise.
1133 (relocate_section): Likewise.
1134 (apply_relocation): Likewise.
1135
3660ff06
L
11362012-01-10 H.J. Lu <hongjiu.lu@intel.com>
1137
1138 * x86_64.cc (Scan::check_non_pic): Allow R_X86_64_32 for x32.
1139 (Scan::local): Use R_X86_64_RELATIVE relocation for R_X86_64_32
1140 under x32.
1141
fc51264f
L
11422012-01-09 H.J. Lu <hongjiu.lu@intel.com>
1143
1144 * x86_64.cc: Initial support for x32.
1145
dd74ae06
CC
11462012-01-03 Cary Coutant <ccoutant@google.com>
1147
1148 * gold/incremental.cc (Sized_incremental_binary::do_process_got_plt):
1149 Use abstract base class for GOT.
1150 * gold/output.h (class Output_data_got_base): New abstract base class.
1151 (class Output_data_got): Derive from new base class, adjust ctors.
1152 (Output_data_got::reserve_slot): Make virtual; rename to
1153 do_reserve_slot; Adjust callers.
1154 * gold/target.h (Sized_target::init_got_plt_for_update): Return
1155 pointer to abstract base class.
1156 * gold/x86_64.cc (Target_x86_64::init_got_plt_for_update): Likewise.
1157
83896202
ILT
11582011-12-18 Ian Lance Taylor <iant@google.com>
1159
1160 * object.h (Relobj::local_symbol_value): New function.
1161 (Relobj::local_plt_offset): New function.
1162 (Relobj::local_has_got_offset): New function.
1163 (Relobj::local_got_offset): New function.
1164 (Relobj::set_local_got_offset): New function.
1165 (Relobj::do_local_symbol_value): New pure virtual function.
1166 (Relobj::do_local_plt_offset): Likewise.
1167 (Relobj::do_local_has_got_offset): Likewise.
1168 (Relobj::do_local_got_offset): Likewise.
1169 (Relobj::do_set_local_got_offset): Likewise.
1170 (Sized_relobj::do_local_has_got_offset): Rename from
1171 local_has_got_offset.
1172 (Sized_relobj::do_local_got_offset): Rename from local_got_offset.
1173 (Sized_relobj::do_set_local_got_offset): Rename from
1174 set_local_got_offset.
1175 (Sized_relobj_file::do_local_plt_offset): Rename from
1176 local_plt_offset.
1177 (Sized_relobj_file::do_local_symbol_value): New function.
1178 * object.cc (Sized_relobj_file::do_local_plt_offset): Rename from
1179 local_plt_offset.
1180 * output.cc (Output_data_got::Got_entry::write): Change object to
1181 Relobj. Use local_symbol_value.
1182 (Output_data_got::add_global_with_rel): Change rel_dyn to
1183 Output_data_reloc_generic*. Use add_global_generic.
1184 (Output_data_got::add_global_with_rela): Remove. Change all
1185 callers to use add_global_with_rel.
1186 (Output_data_got::add_global_pair_with_rel): Change rel_dyn to
1187 Output_data_reloc_generic*. Use add_global_generic.
1188 (Output_data_got::add_global_pair_with_rela): Remove. Change all
1189 callers to use add_global_pair_with_rel.
1190 (Output_data_got::add_local): Change object to Relobj*.
1191 (Output_data_got::add_local_plt): Likewise.
1192 (Output_data_got::add_local_with_rel): Change object to Relobj*,
1193 change rel_dyn to Output_data_reloc_generic*. Use
1194 add_local_generic.
1195 (Output_data_got::add_local_with_rela): Remove. Change all
1196 callers to use all_local_with_rel.
1197 (Output_data_got::add_local_pair_with_rel): Change object to
1198 Relobj*, change rel_dyn to Output_data_reloc_generic*. Use
1199 add_output_section_generic.
1200 (Output_data_got::add_local_pair_with_rela): Remove. Change all
1201 callers to use add_local_pair_with_rel.
1202 (Output_data_got::reserve_local): Change object to Relobj*.
1203 * output.h: (class Output_data_reloc_generic): Add pure virtual
1204 declarations for add_global_generic, add_local_generic,
1205 add_output_section_generic.
1206 (class Output_data_reloc) [SHT_REL, SHT_RELA]: Implement new
1207 functions for Output_data_reloc_generic. Update declarations for
1208 changes listed in output.cc.
1209 (class Output_data_got): Change template parameter to got_size.
1210 Don't define Rel_dyn or Rela_dyn. Update declarations per above.
1211 * incremental.h (Sized_relobj_incr::do_local_symbol_value): New
1212 function.
1213 (Sized_relobj_incr::do_local_plt_offset): New function.
1214 * copy-relocs.cc (Copy_relocs::Copy_reloc_entry::emit): Call
1215 add_global_generic.
1216
76677ad0
CC
12172011-12-17 Cary Coutant <ccoutant@google.com>
1218
1219 * dwarf_reader.cc (Sized_dwarf_line_info::read_lines): Add casts.
1220 * resolve.cc (Symbol_table::resolve): Likewise.
1221 * i386.cc (Target_i386::do_code_fill): Use char constants for nop
1222 arrays.
1223 * x86_64.cc (Target_x86_64::do_code_fill): Likewise.
1224
8b8dd8d5
ILT
12252011-12-16 Ian Lance Taylor <iant@google.com>
1226
1227 * output.h (Output_data_reloc_generic::add): Only call
1228 add_dynamic_reloc if this is a dynamic reloc section.
1229
d55525b9
L
12302011-12-15 H.J. Lu <hongjiu.lu@intel.com>
1231
1232 PR gold/13505
1233 * target-reloc.h (apply_relocation): Replace <64, false> with
1234 <size, big_endian>.
1235
ff81c7c1
NC
12362011-11-25 Nick Clifton <nickc@redhat.com>
1237
1238 * po/it.po: New Italian translation.
1239
628f39be
SA
12402011-11-17 Sterling Augustine <saugustine@google.com>
1241
1242 * script.cc (script_include_directive): Implement.
1243 (read_script_file): New local variables name and search_path. Update
1244 comment. Call IS_ABSOLUTE_PATH and Dirsearch::find_file_in_dir_list.
1245 * dirsearch.h (Dirsearch::find_file_in_dir_list): Declare new method.
1246 * dirsearch.cc (Dirsearch::find_file_in_dir_list): Implement it.
1247
98ef3ea4
SA
12482011-11-11 Sterling Augustine <saugustine@google.com>
1249
1250 * yyscript.y (section_cmd): Add support for INCLUDE directive.
1251 (file_or_sections_cmd): Likewise.
1252
f4a8b6d7
DK
12532011-11-11 Doug Kwan <dougkwan@google.com>
1254
1255 * arm.cc (Target_arm::do_make_elf_object): Allow executable also
1256 if --just-symbols is given.
1257
29ab395d
DK
12582011-11-10 Doug Kwan <dougkwan@google.com>
1259
1260 PR gold/13362
1261 * arm.cc (Target_arm::Relocate::relocate_tls): Do unaligned accesses
1262 when processing data relocs.
1263 * reloc.h (Relocate_functions::rel_unaligned): New method.
1264 (Relocate_functions::pcrel_unaligned): Ditto.
1265 (Relocate_functions::rel32_unaligned): Ditto.
1266 (Relocate_functions::pcrel32_unaligned): Ditto.
1267
2c339f71
DK
12682011-11-09 Doug Kwan <dougkwan@google.com>
1269
1270 PR gold/13362
1271 * arm.cc (Arm_scan_relocatable_relocs::Default_scan_relocatable_relocs):
1272 Use unaligned 4-byte relocs for static 32-bit data as required by EABI.
1273 * reloc.h (Relocatable_relocs::Reloc_strategy): New enum
1274 RELOC_ADJUST_FOR_SECTION_4_UNALIGNED.
1275 (Relocate_functions::rel_unaligned): New.
1276 (Relocate_functions::rel32_unaligned): New.
1277 * target-reloc.h (relocate_for_relocatable): Add code to handle
1278 RELOC_ADJUST_FOR_SECTION_4_UNALIGNED.
1279 * testsuite/Makefile.am (arm_unaligned_reloc_r.stdout,
1280 arm_unaligned_reloc_r): New targets.
1281 * testsuite/Makefile.in: Regenerate.
1282 * arm_unaligned_reloc.sh: Check unaligned relocs in relocatable
1283 linking.
1284
3f3cddf1
ILT
12852011-11-02 Ian Lance Taylor <iant@google.com>
1286
1287 * configure.ac: Add --with-lib-path option. Define LIB_PATH and
1288 NATIVE_LINKER.
1289 * Makefile.am (AM_CPPFLAGS): Define TOOLLIBDIR.
1290 * options.cc (General_options::finalize): Use library search path
1291 from configure script if specified. If not native and no sysroot,
1292 only search TOOLLIBDIR.
1293 * options.h (Search_directory::Search_directory): Change name to
1294 const std::string&.
1295 (General_options::add_to_library_path_with_sysroot): Change arg to
1296 const std::string&.
1297 * configure, Makefile.in, config.in: Rebuild.
1298
a8e2273b
ILT
12992011-11-02 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
1300
1301 * arm.cc (Target_arm::may_use_v5t_interworking): Check whether
1302 we are working around the ARM1176 Erratum.
1303 * options.h (General_options::fix_arm1176): Add option.
1304 * testsuite/Makefile.am: Add testcases, and keep current ones
1305 working.
1306 * testsuite/Makefile.in: Regenerate.
1307 * testsuite/arm_fix_1176.s: New file.
1308 * testsuite/arm_fix_1176.sh: Likewise.
1309
cd6eab1c
ILT
13102011-11-02 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
1311
1312 * arm.cc (Target_arm::Target_arm): Remove initialisation of
1313 may_use_blx_.
1314 (Target_arm::may_use_blx): Remove method.
1315 (Target_arm::set_may_use_blx): Likewise.
1316 (Target_arm::may_use_v4t_interworking): New method.
1317 (Target_arm::may_use_v5t_interworking): Likewise.
1318 (Target_arm::may_use_blx_): Remove member variable.
1319 (Arm_relocate_functions::arm_branch_common): Check for v5T
1320 interworking.
1321 (Arm_relocate_functions::thumb_branch_common): Likewise.
1322 (Reloc_stub::stub_type_for_reloc): Likewise.
1323 (Target_arm::do_finalize_sections): Correct interworking checks.
1324 * testsuite/Makefile.am: Add new tests.
1325 * testsuite/Makefile.in: Regenerate.
1326 * testsuite/arm_farcall_arm_arm.s: New test.
1327 * testsuite/arm_farcall_arm_arm.sh: Likewise.
1328 * testsuite/arm_farcall_arm_thumb.s: Likewise.
1329 * testsuite/arm_farcall_arm_thumb.sh: Likewise.
1330 * testsuite/arm_farcall_thumb_arm.s: Likewise.
1331 * testsuite/arm_farcall_thumb_arm.sh: Likewise.
1332 * testsuite/arm_farcall_thumb_thumb.s: Likewise.
1333 * testsuite/arm_farcall_thumb_thumb.sh: Likewise.
1334
286adcf4
CC
13352011-10-31 Cary Coutant <ccoutant@google.com>
1336
1337 PR gold/13023
1338 * expression.cc (Expression::eval_with_dot): Add
1339 is_section_dot_assignment parameter.
1340 (Expression::eval_maybe_dot): Likewise. Adjust value when rhs is
1341 absolute and assigning to dot within a section.
1342 * script-sections.cc
1343 (Output_section_element_assignment::set_section_addresses): Pass
1344 dot_section to set_if_absolute.
1345 (Output_section_element_dot_assignment::finalize_symbols): Pass TRUE
1346 as is_section_dot_assignment flag to eval_with_dot.
1347 (Output_section_element_dot_assignment::set_section_addresses):
1348 Likewise.
1349 * script.cc (Symbol_assignment::set_if_absolute): Add dot_section
1350 parameter. Also set value if relative to dot_section; set the
1351 symbol's output_section.
1352 * script.h (Expression::eval_with_dot): Add is_section_dot_assignment
1353 parameter. Adjust all callers.
1354 (Expression::eval_maybe_dot): Likewise.
1355 (Symbol_assignment::set_if_absolute): Add dot_section parameter.
1356 Adjust all callers.
1357 * testsuite/script_test_2.t: Test assignment of an absolute value
1358 to dot within an output section element.
1359
9634ed06
CC
13602011-10-31 Cary Coutant <ccoutant@google.com>
1361
1362 * options.h (class General_options): Add --[no-]gnu-unique options.
1363 * symtab.cc (Symbol_table::sized_write_globals): Convert
1364 STB_GNU_UNIQUE to STB_GLOBAL if --no-gnu-unique.
1365
de4101c7
CC
13662011-10-31 Cary Coutant <ccoutant@google.com>
1367
1368 PR gold/13359
1369 * i386.cc (Target_i386::Relocate::relocate_tls): Remove
1370 unnecessary assertion.
1371 * x86_64.cc (Target_x86_64::Relocate::relocate_tls): Likewise.
1372
7257cc92
ST
13732011-10-31 Sriraman Tallam <tmsriram@google.com>
1374
1375 * symtab.h (Symbol_table::gc_mark_symbol_for_shlib): Rename to
1376 gc_mark_symbol.
1377 * symtab.cc (Symbol_table::gc_mark_symbol_for_shlib): Rename to
1378 gc_mark_symbol.
1379 Change to just keep the section associated with symbol.
1380 (Symbol_table::add_from_relobj): Mark symbols as not garbage when
1381 they are externally visible and --export-dynamic is turned on.
1382 (Symbol_table::gc_mark_dyn_syms): Call gc_mark_symbol.
1383
bfc34b3f
ILT
13842011-10-19 Ian Lance Taylor <iant@google.com>
1385
1386 PR gold/13163
1387 * script-sections.cc
1388 (Output_section_element_dot_assignment::needs_output_section): New
1389 function.
1390
ea0d8c47
ILT
13912011-10-19 Ian Lance Taylor <iant@google.com>
1392
1393 PR gold/13204
1394 * layout.cc (Layout::segment_precedes): Don't assert failure if a
1395 --section-start option was seen.
1396 * options.h (General_options::any_section_start): New function.
1397
abd242a9
DM
13982011-10-18 David S. Miller <davem@davemloft.net>
1399
1400 PR binutils/13301
1401 * sparc.cc (Target_sparc::Relocate::reloc_adjust_addr_): New
1402 member to track relocation locations that have moved during TLS
1403 reloc optimizations.
1404 (Target_sparc::Relocate::Relocate): Initialize to NULL.
1405 (Target_sparc::Relocate::relocate): Adjust view down by 4
1406 bytes if it matches reloc_adjust_addr_.
1407 (Target_sparc::Relocate::relocate_tls): Always move the
1408 __tls_get_addr call delay slot instruction forward 4 bytes when
1409 performing relaxation.
1410
bab9090f
CC
14112011-10-18 Cary Coutant <ccoutant@google.com>
1412
1413 * output.cc (posix_fallocate): Return 0 on success, errno on failure.
1414 (Output_file::map_no_anonymous): Check for non-zero
1415 return code from posix_fallocate.
1416
f7c5b166
CC
14172011-10-17 Cary Coutant <ccoutant@google.com>
1418
1419 PR gold/13245
1420 * plugin.cc (is_visible_from_outside): Check for symbols
1421 referenced from dynamic objects.
1422 * resolve.cc (Symbol_table::resolve): Don't count references
1423 from dynamic objects as references from real ELF files.
1424 * testsuite/plugin_test_2.sh: Adjust expected result.
1425
b490c0bb
CC
14262011-10-17 Cary Coutant <ccoutant@google.com>
1427
1428 * gold.cc: Include timer.h.
1429 (queue_middle_tasks): Stamp time.
1430 (queue_final_tasks): Likewise.
1431 * main.cc (main): Store timer in parameters. Print timers
1432 for each pass.
1433 * parameters.cc (Parameters::Parameters): Initialize timer_.
1434 (Parameters::set_timer): New function.
1435 (set_parameters_timer): New function.
1436 * parameters.h (Parameters::set_timer): New function.
1437 (Parameters::timer): New function.
1438 (Parameters::timer_): New data member.
1439 (set_parameters_timer): New function.
1440 * timer.cc (Timer::stamp): New function.
1441 (Timer::get_pass_time): New function.
1442 * timer.h (Timer::stamp): New function.
1443 (Timer::get_pass_time): New function.
1444 (Timer::pass_times_): New data member.
1445
f475cf7b
CC
14462011-10-17 Cary Coutant <ccoutant@google.com>
1447
1448 * readsyms.cc (Read_symbols::run): Don't queue an unblocker
1449 task for members of lib groups.
1450
cdd7e244
CC
14512011-10-17 Cary Coutant <ccoutant@google.com>
1452
1453 PR gold/13288
4f95c8b4 1454 * fileread.cc (File_read::find_view): Add assert.
cdd7e244
CC
1455 (File_read::make_view): Move bounds check (replace with assert)...
1456 (File_read::find_or_make_view): ... to here.
1457
dfb45471
CC
14582011-10-12 Cary Coutant <ccoutant@google.com>
1459
4f95c8b4 1460 * output.cc (Output_file::open_base_file): Handle case where
dfb45471
CC
1461 ::read returns less than requested size.
1462
53bbcc1b
CC
14632011-10-10 Cary Coutant <ccoutant@google.com>
1464
4f95c8b4 1465 * incremental.cc (Sized_relobj_incr::Sized_relobj_incr):
53bbcc1b
CC
1466 Initialize defined_count_.
1467 (Sized_relobj_incr::do_add_symbols): Count defined symbols.
1468 (Sized_relobj_incr::do_get_global_symbol_counts): Rewrite.
1469 (Sized_incr_dynobj::Sized_incr_dynobj): Initialize defined_count_.
1470 (Sized_incr_dynobj::do_add_symbols): Count defined symbols.
1471 (Sized_incr_dynobj::do_get_global_symbol_counts): Rewrite.
4f95c8b4 1472 * incremental.h (Sized_relobj_incr::defined_count_): New data
53bbcc1b
CC
1473 member.
1474 (Sized_incr_dynobj::defined_count_): New data member.
4f95c8b4 1475 * plugin.cc (Sized_pluginobj::do_get_global_symbol_counts):
53bbcc1b
CC
1476 Return zeroes instead of internal error.
1477
397b129b
CC
14782011-10-10 Cary Coutant <ccoutant@google.com>
1479
1480 PR gold/13249
4f95c8b4 1481 * output.cc (Output_reloc::Output_reloc): Add use_plt_offset flag.
397b129b 1482 (Output_reloc::symbol_value): Return PLT offset if flag is set.
4f95c8b4 1483 * output.h (class Output_reloc): Add use_plt_offset flag.
397b129b
CC
1484 (Output_reloc::type_): Adjust size of bit field.
1485 (Output_reloc::use_plt_offset_): New bit field.
1486 (class Output_data_reloc): Adjust all calls to Output_reloc_type.
1487 (Output_data_reloc::add_local_relative): (RELA only) Add use_plt_offset
1488 flag. Adjust all callers.
4f95c8b4 1489 * x86_64.cc (Target_x86_64::Scan::local): Check for IFUNC when
397b129b
CC
1490 creating RELATIVE relocations.
1491
d5698657
NC
14922011-10-10 Nick Clifton <nickc@redhat.com>
1493
1494 * po/es.po: Updated Spanish translation.
1495 * po/fi.po: Updated Finnish translation.
1496
6a59a5c2
DN
14972011-10-03 Diego Novillo <dnovillo@google.com>
1498
1499 * options.cc (parse_uint): Fix dereference of RETVAL.
1500
f0558624
ST
15012011-09-29 Sriraman Tallam <tmsriram@google.com>
1502
1503 * layout.h (section_order_map_): New member.
1504 (get_section_order_map): New member function.
1505 * output.cc (Output_section::add_input_section): Check for patterns
1506 only when --section-ordering-file is specified.
1507 * gold.cc (queue_middle_tasks): Delay updating order of sections till
1508 output_sections have been formed.
1509 * layout.cc (Layout_Layout): Initialize section_order_map_.
1510 * plugin.cc (update_section_order): Store order in order_map. Do not
1511 update the order.
1512 * testsuite/Makefile.am: Add test case for plugin_final_layout.
1513 * testsuite/Makefile.in: Regenerate.
1514 * testsuite/plugin_section_order.c: New file.
1515 * testsuite/plugin_final_layout.cc: New file.
1516 * testsuite/plugin_final_layout.sh: New file.
1517
a7dac153
CC
15182011-09-29 Cary Coutant <ccoutant@google.com>
1519
4f95c8b4 1520 * incremental.cc (Sized_incremental_binary::do_process_got_plt):
a7dac153 1521 Check for NULL.
4f95c8b4 1522 * symtab.cc (Symbol_table::add_from_relobj): Ignore version
a7dac153
CC
1523 symbols during incremental update.
1524 (Symbol_table::add_from_dynobj): Likewise.
1525
eebd87a5
ILT
15262011-09-27 Viktor Kutuzov <vkutuzov@accesssoftek.com>
1527 Ian Lance Taylor <iant@google.com>
1528
1529 * symtab.cc (Symbol_table::define_special_symbol): Always
1530 canonicalize version string.
1531
403a3331
CC
15322011-09-26 Cary Coutant <ccoutant@google.com>
1533
4f95c8b4
CC
1534 * gold.cc (queue_initial_tasks): Move option checks ...
1535 * options.cc (General_options::finalize): ... to here. Disable
403a3331
CC
1536 some options; make others fatal.
1537
235061c2
CC
15382011-09-26 Cary Coutant <ccoutant@google.com>
1539
1540 gcc PR lto/47247
1541 * plugin.cc (get_symbols_v2): New function.
1542 (Plugin::load): Add LDPT_GET_SYMBOLS_V2.
1543 (is_referenced_from_outside): New function.
1544 (Pluginobj::get_symbol_resolution_info): Add version parameter, return
1545 LDPR_PREVAILING_DEF_IRONLY_EXP when using new version.
1546 (get_symbols): Pass version parameter.
1547 (get_symbols_v2): New function.
1548 * plugin.h (Pluginobj::get_symbol_resolution_info): Add version
1549 parameter.
1550 * testsuite/plugin_test.c (get_symbols_v2): New static variable.
1551 (onload): Add LDPT_GET_SYMBOLS_V2.
1552 (all_symbols_read_hook): Use get_symbols_v2; check for
1553 LDPR_PREVAILING_DEF_IRONLY_EXP.
1554 * testsuite/plugin_test_3.sh: Update expected results.
1555
dc87f620
ILT
15562011-09-23 Simon Baldwin <simonb@google.com>
1557
1558 * configure.ac: Add new --with-gold-ldadd and --with-gold-ldflags
1559 configuration options.
1560 * configure: Regenerate.
1561 * Makefile.am: Handle GOLD_LDADD and GOLD_LDFLAGS.
1562 * Makefile.in: Regenerate.
1563 * testsuite/Makefile.in: Regenerate.
1564
a8279f82
ST
15652011-09-19 Sriraman Tallam <tmsriram@google.com>
1566
1567 * plugin.h (should_defer_layout): Modify to check for any_claimed_.
1568
0c9350c8
CC
15692011-09-19 Cary Coutant <ccoutant@google.com>
1570
1571 * incremental.cc (can_incremental_update): Fix typo in comment.
1572 * incremental.h (can_incremental_update): Likewise.
1573
aa06ae28
CC
15742011-09-18 Cary Coutant <ccoutant@google.com>
1575
1576 * incremental.cc (can_incremental_update): New function.
1577 * incremental.h (can_incremental_update): New function.
1578 * layout.cc (Layout::init_fixed_output_section): Call it.
1579 (Layout::make_output_section): Don't allow patch space in .eh_frame.
1580 * object.cc (Sized_relobj_file::do_layout): Call
1581 can_incremental_update.
1582
ebb300b2
CC
15832011-09-13 Cary Coutant <ccoutant@google.com>
1584
1585 * configure.ac: Check for glibc support for gnu_indirect_function
1586 support with static linking, setting automake conditional
1587 IFUNC_STATIC.
1588 * Makefile.in: Regenerate.
1589 * configure: Regenerate.
1590
1591 * testsuite/Makefile.am (ifuncmain1static, ifuncmain2static)
1592 (ifuncmain4static, ifuncmain5static, ifuncmain7static): Add check
1593 for IFUNC_STATIC.
1594 * testsuite/Makefile.in: Regenerate.
1595
1206d0d5
CC
15962011-09-13 Cary Coutant <ccoutant@google.com>
1597
1598 * incremental.cc (Sized_relobj_incr::do_layout): Call
1599 report_comdat_group for kept comdat sections.
1600 * testsuite/Makefile.am (incremental_comdat_test_1): New test.
1601 * testsuite/Makefile.in: Regenerate.
1602 * testsuite/incr_comdat_test_1.cc: New source file.
1603 * testsuite/incr_comdat_test_2_v1.cc: New source file.
1604 * testsuite/incr_comdat_test_2_v2.cc: New source file.
1605 * testsuite/incr_comdat_test_2_v3.cc: New source file.
1606
40b29874
ILT
16072011-09-13 Ian Lance Taylor <iant@google.com>
1608
1609 * object.cc (Sized_relobj_file::do_layout): Remove unused local
1610 variable external_symbols_offset.
1611
1b045aac
ILT
16122011-09-12 Ian Lance Taylor <iant@google.com>
1613
1614 * object.cc (Sized_relobj_file::do_layout): Remove assertion which
1615 triggered if object has no symbols.
1616
24c6c55a
DM
16172011-09-09 David S. Miller <davem@davemloft.net>
1618
1619 * output.cc (Output_fill_debug_info::do_write): Use Swap_unaligned.
1620 (Output_fill_debug_line::do_write): Likewise.
1621
66570254
CC
16222011-08-29 Cary Coutant <ccoutant@google.com>
1623
1624 * output.cc: (Output_fill_debug_info::do_minimum_hole_size): Add
1625 casts to match formatting specs.
1626 (Output_fill_debug_line::do_minimum_hole_size): Likewise.
1627
8ea8cd50
CC
16282011-08-26 Cary Coutant <ccoutant@google.com>
1629
1630 * layout.cc (Free_list::allocate): Provide guarantee of minimum
1631 remaining hole size when allocating.
1632 (Layout::make_output_section): Set fill methods for debug sections.
1633 * layout.h (Free_list::Free_list_node): Move from private to
1634 public.
1635 (Free_list::set_min_hole_size): New function.
1636 (Free_list::begin, Free_list::end): New functions.
1637 (Free_list::min_hole_): New data member.
1638 * output.cc: Include dwarf.h.
1639 (Output_fill_debug_info::do_minimum_hole_size): New function.
1640 (Output_fill_debug_info::do_write): New function.
1641 (Output_fill_debug_line::do_minimum_hole_size): New function.
1642 (Output_fill_debug_line::do_write): New function.
1643 (Output_section::Output_section): Initialize new data member.
1644 (Output_section::set_final_data_size): Ensure patch space is larger
1645 than minimum hole size.
1646 (Output_section::do_write): Fill holes in debug sections.
1647 * output.h (Output_fill): New class.
1648 (Output_fill_debug_info): New class.
1649 (Output_fill_debug_line): New class.
1650 (Output_section::set_free_space_fill): New function.
1651 (Output_section::free_space_fill_): New data member.
1652 * testsuite/Makefile.am (incremental_test_3): Add
1653 --incremental-patch option.
1654 (incremental_test_4): Likewise.
1655 (incremental_test_5): Likewise.
1656 (incremental_test_6): Likewise.
1657 (incremental_copy_test): Likewise.
1658 (incremental_common_test_1): Likewise.
1659 * testsuite/Makefile.in: Regenerate.
1660
7cf80422
NC
16612011-08-26 Nick Clifton <nickc@redhat.com>
1662
1663 * po/es.po: Updated Spanish translation.
1664
c3f7b0e5
CC
16652011-08-01 Cary Coutant <ccoutant@google.com>
1666
1667 * gold/testsuite/Makefile.am (justsyms_exec): New testcase.
1668 * gold/testsuite/Makefile.in: Regenerate.
1669 * gold/testsuite/justsyms_exec.c: New source file.
1670 * gold/testsuite/justsyms_lib.c: New source file.
1671
9590bf25
CC
16722011-08-01 Cary Coutant <ccoutant@google.com>
1673
1674 * layout.cc (Layout::set_segment_offsets): Don't realign text
1675 segment if -Ttext was specified.
1676 * object.cc (Sized_relobj_file::Sized_relobj_file): Store the ELF
1677 file type.
1678 * object.h (Sized_relobj_file::e_type): New function.
1679 (Sized_relobj_file::e_type_): New data member.
1680 * symtab.cc (Symbol_table::add_from_relobj): Don't add section
1681 base address for ET_EXEC files.
1682 * target.cc (Target::do_make_elf_object_implementation): Allow
1683 ET_EXEC files with --just-symbols option.
1684
dcd8d12e
CC
16852011-07-28 Cary Coutant <ccoutant@google.com>
1686
1687 * workqueue-internal.h (Workqueue_threader::should_cancel_thread):
1688 Add thread_number parameter.
1689 (Workqueue_threader_threadpool::should_cancel_thread): Likewise.
1690 * workqueue-threads.cc
1691 (Workqueue_threader_threadpool::should_cancel_thread): Cancel
1692 current thread if its thread number is greater than desired thread
1693 count.
1694 * workqueue.cc (Workqueue_threader_single::should_cancel_thread):
1695 Add thread_number parameter.
1696 (Workqueue::should_cancel_thread): Likewise.
1697 (Workqueue::find_runnable_or_wait): Pass thread_number to
1698 should_cancel_thread.
1699 * workqueue.h (Workqueue::should_cancel_thread): Add thread_number
1700 parameter.
1701
804eb480
ST
17022011-07-22 Sriraman Tallam <tmsriram@google.com>
1703
1704 * symtab.cc (Symbol_table::add_from_relobj): Mark symbol as referenced
1705 only after checking if it cannot be forced local.
1706 * symtab.h (is_externally_visible): Check if the symbol is not forced
1707 local.
1708
f1ddb600
ILT
17092011-07-15 Ian Lance Taylor <iant@google.com>
1710
1711 * options.h (class General_options): Add --print-output-format.
1712 Move -EL next to -EB, for better --help output.
1713 * target-select.cc: Include <cstdio>, "options.h", and
1714 "parameters.h".
1715 (Target_selector::do_target_bfd_name): New function.
1716 (print_output_format): New function.
1717 * target-select.h (class Target_selector): Update declarations.
1718 (Target_selector::target_bfd_name): New function.
1719 (print_output_format): Declare.
1720 * main.cc: Include "target-select.h".
1721 (main): Handle --print-output-format.
1722 * gold.cc: Include "target-select.h".
1723 (queue_initial_tasks): Handle --print-output-format when there are
1724 no input files.
1725 * parameters.cc (parameters_force_valid_target): Give a better
1726 error message if -EB/-EL does not match target.
1727 * freebsd.h (Target_selector_freebsd::do_target_bfd_name): New
1728 function.
1729
7d172687
ILT
17302011-07-15 Ian Lance Taylor <iant@google.com>
1731
1732 * i386.cc (class Output_data_plt_i386): Add layout_ field.
1733 (Output_data_plt_i386::Output_data_plt_i386): Initialize layout_.
1734 (Output_data_plt_i386::do_write): Write address of .dynamic
1735 section to first entry in .got.plt section.
1736 * x86_64.cc (class Output_data_plt_x86_64): Add layout_ field.
1737 (Output_data_plt_x86_64::Output_data_plt_x86_64) [both versions]:
1738 Initialize layout_.
1739 (Output_data_plt_x86_64::do_write): Write address of .dynamic
1740 section to first entry in .got.plt section.
1741 * layout.h (Layout::dynamic_section): New function.
1742
e9552f7e
ST
17432011-07-13 Sriraman Tallam <tmsriram@google.com>
1744
1745 * archive.cc (Archive::get_elf_object_for_member): Add extra parameter
1746 to claim_file call.
1747 * layout.cc (Layout::Layout): Initialize section_ordering_specified_,
1748 input_section_position_, and input_section_glob_.
1749 (read_layout_from_file): Call function section_ordering_specified.
1750 * layout.h (is_section_ordering_specified): New function.
1751 (section_ordering_specified): New function.
1752 (section_ordering_specified_): New boolean member.
1753 * main.cc(main): Call load_plugins after layout object is defined.
1754 * output.cc (Output_section::add_input_section): Use
1755 function section_ordering_specified to check if section ordering is
1756 needed.
1757 * output.cc (Output_section::add_relaxed_input_section): Use
1758 function section_ordering_specified to check if section ordering is
1759 needed.
1760 (Output_section::update_section_layout): New function.
1761 (Output_section::sort_attached_input_sections): Check if input section
1762 must be reordered.
1763 * output.h (Output_section::update_section_layout): New function.
1764 * plugin.cc (get_section_count): New function.
1765 (get_section_type): New function.
1766 (get_section_name): New function.
1767 (get_section_contents): New function.
1768 (update_section_order): New function.
58797674 1769 (allow_section_ordering): New function.
e9552f7e
ST
1770 (Plugin::load): Add the new interfaces to the transfer vector.
1771 (Plugin_manager::load_plugins): New parameter.
1772 (Plugin_manager::all_symbols_read): New parameter.
1773 (Plugin_manager::claim_file): New parameter. Save the elf object for
1774 unclaimed objects.
1775 (Plugin_manager::get_elf_object): New function.
1776 (Plugin_manager::get_view): Change to directly use the bool to check
1777 if get_view is called from claim_file_hook.
1778 * plugin.h (input_objects): New function
1779 (Plugin__manager::load_plugins): New parameter.
1780 (Plugin_manager::claim_file): New parameter.
1781 (Plugin_manager::get_elf_object): New function.
1782 (Plugin_manager::in_claim_file_handler): New function.
1783 (Plugin_manager::in_claim_file_handler_): New member.
1784 (layout): New function.
1785 * readsyms.cc (Read_symbols::do_read_symbols): Call the claim_file
1786 handler with an extra parameter. Make the elf object before calling
1787 claim_file handler.
1788 * testsuite/plugin_test.c (get_section_count): New function pointer.
1789 (get_section_type): New function pointer.
1790 (get_section_name): New function pointer.
1791 (get_section_contents): New function pointer.
1792 (update_section_order): New function pointer.
1793 (allow_section_ordering): New function pointer.
1794 (onload): Check if the new interfaces exist.
1795
9446efde
ILT
17962011-07-13 Ian Lance Taylor <iant@google.com>
1797
1798 * i386.cc (Target_i386::got_section): If -z now, make .got.plt a
1799 relro section.
1800 * x86_64.cc (Target_x86_64::got_section): Likewise.
1801 * testsuite/Makefile.am (check_PROGRAMS): Add relro_now_test.
1802 (relro_now_test_SOURCES): New variable.
1803 (relro_now_test_DEPENDENCIES): New variable.
1804 (relro_now_test_LDFLAGS): New variable.
1805 (relro_now_test_LDADD): New variable.
1806 (relro_now_test.so): New target.
1807 * testsuite/Makefile.in: Rebuild.
1808
07aa62f2
ILT
18092011-07-12 Ian Lance Taylor <iant@google.com>
1810
1811 PR gold/12980
1812 * i386.cc (Target_i386::Scan::global): For a GOT reloc, use a
1813 GLOB_DAT relocation rather than a RELATIVE relocation for a
1814 protected symbol when creating a shared library.
1815 * x86_64.cc (Target_x86_64::Scan::global): Likewise.
1816 * testsuite/protected_1.cc (f2, get_f2_addr): New functions.
1817 * testsuite/protected_main_1.cc (main): Test that protected
1818 function has same address.
1819
e2153196
ILT
18202011-07-11 Ian Lance Taylor <iant@google.com>
1821
1822 PR gold/12979
1823 * options.h (class General_options): Add -Bgroup.
1824 * options.cc (General_options::finalize): If -Bgroup is set,
1825 default to --unresolved-symbols=report-all.
1826 * layout.cc (Layout::finish_dynamic_section): Implement -Bgroup.
1827 * target-reloc.h (issue_undefined_symbol_error): Handle
1828 --unresolved-symbols=report-all.
1829
6daf5215
ILT
18302011-07-08 Ian Lance Taylor <iant@google.com>
1831
1832 PR gold/11985
1833 * layout.cc (Layout::create_initial_dynamic_sections): Don't crash
1834 if linker script discards key sections.
1835 (Layout::create_dynamic_symtab): Likewise.
1836 (Layout::assign_local_dynsym_offsets): Likewise.
1837 (Layout::sized_create_version_sections): Likewise.
1838 (Layout::create_interp): Likewise.
1839 (Layout::finish_dynamic_section): Likewise.
1840 (Layout::set_dynamic_symbol_size): Likewise.
1841
beabb2c6
ILT
18422011-07-08 Ian Lance Taylor <iant@google.com>
1843
1844 PR gold/12386
1845 * options.h (class General_options): Add --unresolved-symbols.
1846 * target-reloc.h (issue_undefined_symbol_error): Check
1847 --unresolved-symbols. Add comments.
1848
9c16daf1
ILT
18492011-07-08 Ian Lance Taylor <iant@google.com>
1850
1851 * testsuite/odr_violation2.cc (Ordering::operator()): Make
1852 expression more complex.
1853
191f1a2d
ILT
18542011-07-08 Ian Lance Taylor <iant@google.com>
1855
1856 PR gold/11317
1857 * target-reloc.h (issue_undefined_symbol_error): New inline
1858 function, broken out of relocate_section.
1859 (relocate_section): Call issue_undefined_symbol_error.
1860 * i386.cc (Target_i386::Relocate::relocate_tls): Don't crash if
1861 there is no TLS segment if we are about to issue an undefined
1862 symbol error.
1863 * x86_64.cc (Target_x86_64::relocate_tls): Likewise.
1864
62855347
ILT
18652011-07-08 Ian Lance Taylor <iant@google.com>
1866
1867 PR gold/12279
1868 * resolve.cc (Symbol_table::should_override): Add fromtype
1869 parameter. Change all callers. Give error when linking together
1870 TLS and non-TLS symbol.
1871 (Symbol_table::should_override_with_special): Add fromtype
1872 parameter. Change all callers.
1873 * i386.cc (Target_i386::Relocate::relocate_tls): Don't crash if
1874 there is no TLS segment if we have reported some errors.
1875 * x86_64.cc (Target_x86_64::relocate_tls): Likewise.
1876
67181c72
ILT
18772011-07-08 Ian Lance Taylor <iant@google.com>
1878
1879 PR gold/12372
1880 * target.h (Target::plt_address_for_global): New function.
1881 (Target::plt_address_for_local): New function.
1882 (Target::plt_section_for_global): Remove.
1883 (Target::plt_section_for_local): Remove.
1884 (Target::do_plt_address_for_global): New virtual function.
1885 (Target::do_plt_address_for_local): New virtual function.
1886 (Target::do_plt_section_for_global): Remove.
1887 (Target::do_plt_section_for_local): Remove.
1888 (Target::register_global_plt_entry): Add Symbol_table and Layout
1889 parameters.
1890 * output.cc (Output_data_got::Got_entry::write): Use
1891 plt_address_for_global and plt_address_for_local.
1892 * layout.cc (Layout::add_target_dynamic_tags): Use size and
1893 address of output section.
1894 * i386.cc (class Output_data_plt_i386): Add irelative_rel_,
1895 got_irelative_, and irelative_count_ fields. Update
1896 declarations.
1897 (Output_data_plt_i386::has_irelative_section): New function.
1898 (Output_data_plt_i386::entry_count): Add irelative_count_.
1899 (Output_data_plt_i386::set_final_data_size): Likewise.
1900 (class Target_i386): Add got_irelative_ and rel_irelative_
1901 fields. Update declarations.
1902 (Target_i386::Target_i386): Initialize new fields.
1903 (Target_i386::do_plt_address_for_global): New function replacing
1904 do_plt_section_for_global.
1905 (Target_i386::do_plt_address_for_local): New function replacing
1906 do_plt_section_for_local.
1907 (Target_i386::got_section): Create got_irelative_.
1908 (Target_i386::rel_irelative_section): New function.
1909 (Output_data_plt_i386::Output_data_plt_i386): Initialize new
1910 fields. Don't define __rel_iplt_{start,end}.
1911 (Output_data_plt_i386::add_entry): Add symtab and layout
1912 parameters. Change all callers. Use different PLT and GOT for
1913 IFUNC symbols.
1914 (Output_data_plt_i386::add_local_ifunc_entry): Add symtab and
1915 layout parameters. Change all callers. Use different PLT and
1916 GOT.
1917 (Output_data_plt_i386::rel_tls_desc): Fix formatting.
1918 (Output_data_plt_i386::rel_irelative): New function.
1919 (Output_data_plt_i386::address_for_global): New function.
1920 (Output_data_plt_i386::address_for_local): New function.
1921 (Output_data_plt_i386::do_write): Write out IRELATIVE area. Use
1922 IRELATIVE GOT when changing IFUNC GOT entries.
1923 (Target_i386::Scan::global): Use IRELATIVE GOT for IRELATIVE
1924 reloc.
1925 (Target_i386::do_finalize_sections): Create the __rel_iplt symbols
1926 if we didn't create an IRELATIVE GOT.
1927 (Target_i386::Relocate::relocate): Use plt_address_for_global and
1928 plt_address_for_local.
1929 (Target_i386::do_dynsym_value): Use plt_address_for_global.
1930 * x86_64.cc (class Output_data_plt_x86_64): Add irelative_rel_,
1931 got_irelative_, and irelative_count_ fields. Update
1932 declarations.
1933 (Output_data_plt_x86_64::Output_data_plt_x86_64) [both versions]:
1934 Initialize new fields. Remove symtab parameter. Change all
1935 callers.
1936 (Output_data_plt_x86_64::get_tlsdesc_plt_offset): Add
1937 irelative_count_.
1938 (Output_data_plt_x86_64::has_irelative_section): New function.
1939 (Output_data_plt_x86_64::entry_count): Add irelative_count_.
1940 (class Target_x86_64): Add got_irelative_ and rel_irelative_
1941 fields. Update declarations.
1942 (Target_x86_64::Target_x86_64): Initialize new fields.
1943 (Target_x86_64::do_plt_address_for_global): New function replacing
1944 do_plt_section_for_global.
1945 (Target_x86_64::do_plt_address_for_local): New function replacing
1946 do_plt_section_for_local.
1947 (Target_x86_64::got_section): Create got_irelative_.
1948 (Target_x86_64::rela_irelative_section): New function.
1949 (Output_data_plt_x86_64::init): Remove symtab parameter. Change
1950 all callers. Don't create __rel_iplt_{start,end}.
1951 (Output_data_plt_x86_64::add_entry): Add symtab and layout
1952 parameters. Change all callers. Use different PLT and GOT for
1953 IFUNC symbols.
1954 (Output_data_plt_x86_64::add_local_ifunc_entry): Add symtab and
1955 layout parameters. Change all callers. Use different PLT and
1956 GOT.
1957 (Output_data_plt_x86_64::add_relocation): Add symtab and layout
1958 parameters. Change all callers. Use different PLT and GOT for
1959 IFUNC symbols.
1960 (Output_data_plt_x86_64::rela_tlsdesc): Fix formatting.
1961 (Output_data_plt_x86_64::rela_irelative): New function.
1962 (Output_data_plt_x86_64::address_for_global): New function.
1963 (Output_data_plt_x86_64::address_for_local): New function.
1964 (Output_data_plt_x86_64::set_final_data_size): Likewise.
1965 (Output_data_plt_x86_64::do_write): Write out IRELATIVE area.
1966 (Target_x86_64::init_got_plt_for_update): Create got_irelative_.
1967 (Target_x86_64::register_global_plt_entry): Add symtab and layout
1968 parameters.
1969 (Target_x86_64::Scan::global): Use IRELATIVE GOT for IRELATIVE
1970 reloc.
1971 (Target_x86_64::do_finalize_sections): Create the __rela_iplt
1972 symbols if we didn't create an IRELATIVE GOT.
1973 (Target_x86_64::Relocate::relocate): Use plt_address_for_global and
1974 plt_address_for_local.
1975 (Target_x86_64::do_dynsym_value): Use plt_address_for_global.
1976 * testsuite/ifuncvar1.c: New test file.
1977 * testsuite/ifuncvar2.c: New test file.
1978 * testsuite/ifuncvar3.c: New test file.
1979 * testsuite/Makefile.am (check_PROGRAMS): Add ifuncvar.
1980 (ifuncvar1_pic.o, ifuncvar2_pic.o, ifuncvar.so): New targets.
1981 (ifuncvar_SOURCES, ifuncvar_DEPENDENCIES): New variables.
1982 (ifuncvar_LDFLAGS, ifuncvar_LDADD): New variables.
1983 * testsuite/Makefile.in: Rebuild.
1984
33c15b45
CC
19852011-07-07 Cary Coutant <ccoutant@google.com>
1986
1987 * testsuite/Makefile.am (two_file_test_1_v1_ndebug.o): New target.
1988 (two_file_test_1_ndebug.o): Likewise.
1989 (two_file_test_1b_ndebug.o): Likewise.
1990 (two_file_test_2_ndebug.o): Likewise.
1991 (two_file_test_main_ndebug.o): Likewise.
1992 (incremental_test_2): Link with no-debug versions.
1993
f48b5fb7
CC
19942011-07-06 Cary Coutant <ccoutant@google.com>
1995
1996 * gold/incremental.cc
1997 (Output_section_incremental_inputs::write_info_blocks): Check for
1998 hidden and internal symbols.
1999
221597a5
CC
20002011-07-06 Cary Coutant <ccoutant@google.com>
2001
2002 * incremental.cc (Sized_incremental_binary::do_file_has_changed):
2003 Check disposition for startup file.
2004 (Incremental_inputs::report_command_line): Ignore
2005 --incremental-startup-unchanged option.
2006 * options.cc (General_options::parse_incremental_startup_unchanged):
2007 New function.
2008 (General_options::General_options): Initialize new data member.
2009 * options.h (Incremental_disposition): Add INCREMENTAL_STARTUP.
2010 (General_options): Add --incremental-startup-unchanged option.
2011 (General_options::incremental_startup_disposition): New function.
2012 (General_options::incremental_startup_disposition_): New data member.
2013
e24719f6
CC
20142011-07-06 Cary Coutant <ccoutant@google.com>
2015
2016 * incremental.cc (Sized_incremental_binary::setup_readers): Pass
2017 input file index to Script_info ctor.
2018 (Sized_incremental_binary::do_file_has_changed): Find the
2019 command-line argument for files named in scripts.
2020 * incremental.h (Script_info::Script_info): New ctor
2021 with input file index.
2022 (Script_info::input_file_index): New function.
2023 (Script_info::input_file_index_): New data member.
2024 (Incremental_binary::get_library): Add const.
2025 (Incremental_binary::get_script_info): Add const.
2026 * readsyms.cc (Read_member::is_runnable): Check for this_blocker_.
2027 * testsuite/Makefile.am (incremental_test_5): New test case.
2028 (incremental_test_6): New test case.
2029 * testsuite/Makefile.in: Regenerate.
2030
8f7c81e8
CC
20312011-07-06 Cary Coutant <ccoutant@google.com>
2032
2033 * incremental.cc (Sized_incremental_binary::do_check_inputs): Add
2034 debug output when command lines differ.
2035
9fbd3822
CC
20362011-07-06 Cary Coutant <ccoutant@google.com>
2037
2038 * incremental.cc (Incremental_inputs::report_command_line): Ignore
2039 --incremental-patch option.
2040 * layout.cc (Free_list::allocate): Extend allocation beyond original
2041 end if enabled.
2042 (Layout::make_output_section): Mark sections that should get
2043 patch space.
2044 * options.cc (parse_percent): New function.
2045 * options.h (parse_percent): New function.
2046 (DEFINE_percent): New macro.
2047 (General_options): Add --incremental-patch option.
2048 * output.cc (Output_section::Output_section): Initialize new data
2049 members.
2050 (Output_section::add_input_section): Print section name when out
2051 of patch space.
2052 (Output_section::add_output_section_data): Likewise.
2053 (Output_section::set_final_data_size): Add patch space when
2054 doing --incremental-full.
2055 (Output_section::do_reset_address_and_file_offset): Remove patch
2056 space.
2057 (Output_segment::set_section_list_addresses): Print debug output
2058 only if --incremental-update.
2059 * output.h (Output_section::set_is_patch_space_allowed): New function.
2060 (Output_section::is_patch_space_allowed_): New data member.
2061 (Output_section::patch_space_): New data member.
2062 * parameters.cc (Parameters::incremental_full): New function.
2063 * parameters.h (Parameters::incremental_full): New function
2064 * testsuite/Makefile.am (incremental_test_2): Add test for
2065 --incremental-patch option.
2066 * testsuite/Makefile.in: Regenerate.
2067 * testsuite/two_file_test_1_v1.cc (t1, t2, t3): Add comments.
2068 (t18): Remove function body.
2069
f6cccc2c
DK
20702011-07-05 Doug Kwan <dougkwan@google.com>
2071
2072 PR gold/12771
2073 * arm.cc (Arm_relocate_functions::abs8): Use int32_t for addend and
2074 Arm_Address type for relocation result.
2075 (Arm_relocate_functions::abs16): Use unaligned access. Also fix
2076 overflow check.
2077 (Arm_relocate_functions::abs32): Use unaligned access.
2078 (Arm_relocate_functions::rel32): Ditto.
2079 (Arm_relocate_functions::prel31): Ditto.
2080 (Arm_exidix_cantunwind::do_fixed_endian_write): Ditto.
2081 * testsuite/Makefile.am: Add new test arm_unaligned_reloc for unaligned
2082 static data relocations.
2083 * testsuite/Makefile.in: Regnerate.
2084 * testsuite/arm_unaligned_reloc.{s,sh}: New files.
2085
28a13fec
ILT
20862011-07-05 Ian Lance Taylor <iant@google.com>
2087
2088 PR gold/12392
2089 * i386.cc (Target_i386::do_finalize_sections): Define __rel_iplt
2090 symbols if necessary.
2091 * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
2092
24d47b34
ILT
20932011-07-05 Ian Lance Taylor <iant@google.com>
2094
2095 PR gold/12952
2096 * resolve.cc (Symbol::override_base_with_special): Simply override
2097 version with special symbol version, ignoring previous version.
2098
41f9cbbe
ILT
20992011-07-05 Ian Lance Taylor <iant@google.com>
2100
2101 * object.cc (Sized_relobj_file::include_section_group): Add
2102 information to comment about signature location.
2103
886288f1
ILT
21042011-07-02 Ian Lance Taylor <iant@google.com>
2105
2106 PR gold/12957
2107 * options.h (class General_options): Add -f and -F.
2108 * options.cc (General_options::finalize): Fatal error if -f/-F
2109 are used without -shared.
2110 * layout.cc (Layout::finish_dynamic_section): Implement -f/-F.
2111
ae3a6d4f
ILT
21122011-07-02 Ian Lance Taylor <iant@google.com>
2113
2114 * dirsearch.cc (Dir_cache::read_files): Ignore ENOTDIR errors.
2115
21131061
ILT
21162011-07-01 Ian Lance Taylor <iant@google.com>
2117
2118 PR gold/12525
2119 PR gold/12952
2120 * resolve.cc (Symbol::override_base_with_special): Don't override
2121 the version if the overriding symbol has a different name.
2122 * dynobj.cc (Versions::add_def): Add dynpool parameter. Change
2123 all callers. If we give an error about an undefined version,
2124 define the base version if necessary.
2125 * dynobj.h (class Versions): Update declaration.
2126 * testsuite/weak_alias_test_5.cc: New file.
2127 * testsuite/weak_alias_test.script: New file.
2128 * testsuite/weak_alias_test_main.cc: Check that versioned_symbol
2129 and versioned_alias have the right value, and call t2.
2130 * testsuite/Makefile.am (weak_alias_test_DEPENDENCIES): Add
2131 weak_alias_test_5.so.
2132 (weak_alias_test_LDADD): Likewise.
2133 (weak_alias_test_5_pic.o, weak_alias_test_5.so): New targets.
2134 * testsuite/Makefile.in: Rebuild.
2135
611062c0
ILT
21362011-07-01 Ian Lance Taylor <iant@google.com>
2137
2138 PR gold/12525
2139 * options.h (class General_options): Support -z notext.
2140 * testsuite/Makefile.am (two_file_shared_1_nonpic.so): Use
2141 -Wl,-z,notext.
2142 (two_file_shared_nonpic.so): Likewise.
2143 (two_file_shared_mixed.so): Likewise.
2144 (two_file_shared_mixed_1.so): Likewise.
2145 (weak_undef_lib_nonpic.so): Likewise.
2146 (alt/weak_undef_lib_nonpic.so): Likewise.
2147 (tls_test_shared_nonpic.so): Likewise.
2148 * testsuite/Makefile.in: Rebuild.
2149
328c7c2f
ILT
21502011-07-01 Ian Lance Taylor <iant@google.com>
2151
2152 PR gold/12525
2153 * configure.ac: Test whether static linking works, setting
2154 the automake conditional HAVE_STATIC.
2155 * testsuite/Makefile.am: Disable tests using -static if
2156 HAVE_STATIC is not true.
2157 * configure, testsuite/Makefile.in: Rebuild.
2158
02d7cd44
ILT
21592011-07-01 Ian Lance Taylor <iant@google.com>
2160
2161 PR gold/12525
2162 * ehframe.cc (Eh_frame_hdr::get_fde_pc): Handle DW_EH_PE_datarel.
2163 Assert if we see DW_EH_PE_indirect.
2164 * target.h (Target::ehframe_datarel_base): New function.
2165 (Target::do_ehframe_datarel_base): New target function.
2166 * i386.cc (Target_i386::do_ehframe_datarel_base): New function.
2167 * x86_64.cc (Target_x86_64::do_ehframe_datarel_base): New
2168 function.
2169
07a60597
ILT
21702011-07-01 Ian Lance Taylor <iant@google.com>
2171
2172 PR gold/12571
2173 * options.h (class General_options): Add
2174 --ld-generated-unwind-info.
2175 * ehframe.cc (Fde::write): Add address parameter. Change all
2176 callers. If associated with PLT, fill in address and size.
2177 (Cie::set_output_offset): Only add merge mapping if there is an
2178 object.
2179 (Cie::write): Add address parameter. Change all callers.
2180 (Eh_frame::add_ehframe_for_plt): New function.
2181 * ehframe.h (class Fde): Update declarations. Move shndx_ and
2182 input_offset_ fields into union u_, with new plt field.
2183 (Fde::Fde): Adjust for new union field.
2184 (Fde::Fde) [Output_data version]: New constructor.
2185 (Fde::add_mapping): Only add merge mapping if there is an object.
2186 (class Cie): Update declarations.
2187 (class Eh_frame): Declare add_ehframe_for_plt.
2188 * layout.cc (Layout::layout_eh_frame): Break out code into
2189 make_eh_frame_section, and call it.
2190 (Layout::make_eh_frame_section): New function.
2191 (Layout::add_eh_frame_for_plt): New function.
2192 * layout.h (class Layout): Update declarations.
2193 * merge.cc (Merge_map::add_mapping): Add assertion.
2194 * i386.cc: Include "dwarf.h".
2195 (class Output_data_plt_i386): Make first_plt_entry,
2196 dyn_first_plt_entry, exec_plt_entry, and dyn_plt_entry const. Add
2197 plt_eh_frame_cie_size, plt_eh_frame_fde_size, plt_eh_frame_cie,
2198 and plt_eh_frame_fde.
2199 (Output_data_plt_i386::Output_data_plt_i386): Align to 16-byte
2200 boundary. Call add_eh_frame_for_plt if appropriate.
2201 * x86_64.cc: Include "dwarf.h".
2202 (class Output_data_plt_x86_64): Align to 16-byte boundary. Make
2203 first_plt_entry, plt_entry and tlsdesc_plt_entry const. Add
2204 plt_eh_frame_cie_size, plt_eh_frame_fde_size, plt_eh_frame_cie,
2205 and plt_eh_frame_fde.
2206 (Output_data_plt_x86_64::init): Call add_eh_frame_for_plt if
2207 appropriate.
2208
14788a3f
ILT
22092011-06-29 Ian Lance Taylor <iant@google.com>
2210
2211 PR gold/12629
2212 * object.cc (Sized_relobj_file::layout_section): Change shdr
2213 parameter to be const.
2214 (Sized_relobj_file::layout_eh_frame_section): New function, broken
2215 out of do_layout.
2216 (Sized_relobj_file::do_layout): Defer .eh_frame sections if
2217 appropriate. Call layout_eh_frame_section.
2218 (Sized_relobj_file::do_layout_deferred_sections): Handle .eh_frame
2219 sections.
2220 * object.h (class Sized_relobj_file): Update declarations.
2221
6c21fce1
ILT
22222011-06-29 Ian Lance Taylor <iant@google.com>
2223
37e41b03 2224 PR gold/12652
6c21fce1
ILT
2225 * script.cc (Token::integer_value): Accept trailing M/m/K/k
2226 modifier.
2227 (Lex::gather_token): Accept trailing M/m/K/k for integers.
2228
4d5e4e62
ILT
22292011-06-29 Ian Lance Taylor <iant@google.com>
2230
2231 PR gold/12675
2232 * object.cc (Sized_relobj_file::check_eh_frame_flags): Check for
2233 SHT_X86_64_UNWIND.
2234 * layout.cc (Layout::layout_eh_frame): Likewise.
2235
886f533a
ILT
22362011-06-29 Ian Lance Taylor <iant@google.com>
2237
2238 PR gold/12695
2239 * layout.cc (Layout::symtab_section_shndx): New function.
2240 * layout.h (class Layout): Declare symtab_section_shndx.
2241 * output.cc (Output_section::write_header): Call it.
2242
f3ae1b28
ILT
22432011-06-29 Ian Lance Taylor <iant@google.com>
2244
2245 PR gold/12818
2246 * symtab.cc (Symbol::should_add_dynsym_entry): Don't add undefined
2247 symbols which are not used in a relocation.
2248
aecf301f
ILT
22492011-06-28 Ian Lance Taylor <iant@google.com>
2250
2251 PR gold/12898
2252 * layout.cc (Layout::segment_precedes): Don't crash if a linker
2253 script create indistinguishable segments.
2254 (Layout::set_segment_offsets): Use stable_sort when sorting
2255 segments. Pass this to Compare_segments constructor.
2256 * layout.h (class Layout): Make segment_precedes non-static.
2257 (class Compare_segments): Change from struct to class. Add
2258 layout_ field. Add constructor.
2259 * script-sections.cc
2260 (Script_sections::attach_sections_using_phdrs_clause): Rename
2261 local orphan to is_orphan. Don't report failure to put empty
2262 section in segment. On attachment failure, report name of
2263 section, and attach to first PT_LOAD segment.
2264
03ef7571
ILT
22652011-06-28 Ian Lance Taylor <iant@google.com>
2266
2267 PR gold/12934
2268 * target-select.cc (Target_selector::Target_selector): Add
2269 emulation parameter. Change all callers.
2270 (select_target_by_bfd_name): Rename from select_target_by_name.
2271 Change all callers.
2272 (select_target_by_emulation): New function.
2273 (supported_emulation_names): New function.
2274 * target-select.h (class Target_selector): Add emulation_ field.
2275 Update declarations.
2276 (Target_selector::recognize_by_bfd_name): Rename from
2277 recognize_by_name. Change all callers.
2278 (Target_selector::supported_bfd_names): Rename from
2279 supported_names. Change all callers.
2280 (Target_selector::recognize_by_emulation): New function.
2281 (Target_selector::supported_emulations): New function.
2282 (Target_selector::emulation): New function.
2283 (Target_selector::do_recognize_by_bfd_name): Rename from
2284 do_recognize_by_name. Change all callers.
2285 (Target_selector::do_supported_bfd_names): Rename from
2286 do_supported_names. Change all callers.
2287 (Target_selector::do_recognize_by_emulation): New function.
2288 (Target_selector::do_supported_emulations): New function.
2289 (select_target_by_bfd_name): Change name in declaration.
2290 (select_target_by_emulation): Declare.
2291 (supported_emulation_names): Declare.
2292 * parameters.cc (parameters_force_valid_target): Try to find
2293 target based on emulation from -m option.
2294 * options.h (class General_options): Change doc string for -m.
2295 * options.cc (help): Print emulations.
2296 (General_options::parse_V): Likewise.
2297 * freebsd.h (Target_selector_freebsd::Target_selector_freebsd):
2298 Add emulation parameter. Change all callers.
2299
200b2bb9
ILT
23002011-06-28 Ian Lance Taylor <iant@google.com>
2301
2302 * target.h (class Target): Add osabi_ field.
2303 (Target::osabi): New function.
2304 (Target::set_osabi): New function.
2305 (Target::Target): Initialize osabi_.
2306 (Target::do_adjust_elf_header): Make pure virtual.
2307 (Sized_target::do_adjust_elf_header): Declare.
2308 * target.cc (Sized_target::do_adjust_elf_header): New function.
2309 (class Sized_target): Instantiate all versions.
2310 * freebsd.h (class Target_freebsd): Remove.
2311 (Target_selector_freebsd::do_recognize): Call set_osabi on
2312 Target.
2313 (Target_selector_freebsd::do_recognize_by_name): Likewise.
2314 (Target_selector_freebsd::set_osabi): Remove.
2315 * i386.cc (class Target_i386): Inherit from Sized_target rather
2316 than Target_freebsd.
2317 * x86_64.cc (class Target_x86_64): Likewise.
2318
b3ce541e
ILT
23192011-06-28 Ian Lance Taylor <iant@google.com>
2320
2321 * target.h (Target::can_check_for_function_pointers): Rewrite.
2322 Make non-virtual.
2323 (Target::can_icf_inline_merge_sections): Likewise.
2324 (Target::section_may_have_icf_unsafe_poineters): Likewise.
2325 (Target::Target_info): Add can_icf_inline_merge_sections field.
2326 (Target::do_can_check_for_function_pointers): New virtual
2327 function.
2328 (Target::do_section_may_have_icf_unsafe_pointers): Likewise.
2329 * arm.cc (Target_arm::do_can_check_for_function_pointers): Rename
2330 from can_check_for_function_pointers, move in file.
2331 (Target_arm::do_section_may_have_icf_unsafe_pointers): Rename from
2332 section_may_have_icf_unsafe_poineters, move in file.
2333 (Target_arm::arm_info): Initialize can_icf_inline_merge_sections.
2334 * i386.cc (Target_i386::do_can_check_for_function_pointers):
2335 Rename from can_check_for_function_pointers, move in file.
2336 (Target_i386::can_icf_inline_merge_sections): Remove.
2337 (Target_i386::i386_info): Initialize
2338 can_icf_inline_merge_sections.
2339 * powerpc.cc (Target_powerpc::powerpc_info) [all versions]:
2340 Initialize can_icf_inline_merge_sections.
2341 * sparc.cc (Target_sparc::sparc_info) [both version]: Likewise.
2342 * x86_64.cc (Target_x86_64::do_can_check_for_function_pointers):
2343 Rename from can_check_for_function_pointers, move in file.
2344 (Target_x86_64::can_icf_inline_merge_sections): Remove.
2345 (Target_x86_64::x86_64_info): Initialize
2346 can_icf_inline_merge_sections.
2347 * testsuite/testfile.cc (Target_test::test_target_info):
2348 Likewise.
2349 * icf.cc (get_section_contents): Correct formatting.
2350
6d1c4efb
ILT
23512011-06-27 Ian Lance Taylor <iant@google.com>
2352
2353 * symtab.cc (Symbol::versioned_name): New function.
2354 (Symbol_table::add_to_final_symtab): Use versioned_name when
2355 appropriate.
2356 (Symbol_table::sized_write_symbol): Likewise.
2357 * symtab.h (class Symbol): Declare versioned_name.
2358 * stringpool.h (class Stringpool_template): Add variant of add
2359 which takes a std::basic_string.
2360 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_12.
2361 (ver_test_12_SOURCES, ver_test_12_DEPENDENCIES): New variables.
2362 (ver_test_12_LDFLAGS, ver_test_12_LDADD): New variables.
2363 (ver_test_12.o): New target.
2364 * testsuite/Makefile.in: Rebuild.
2365
57eb9b50
DK
23662011-06-27 Doug Kwan <dougkwan@google.com>
2367
2368 * arm.cc (Arm_relocate_functions::thm_jump8,
2369 Arm_relocate_functions::thm_jump11): Use a wider signed
2370 type to compute offset.
2371 * testsuite/Makefile.am: Add new tests arm_thm_jump11 and
2372 arm_thm_jump8.
2373 * testsuite/Makefile.in: Regenerate.
2374 * testsuite/arm_branch_in_range.sh: Check test results of
2375 arm_thm_jump11 and arm_thm_jump8.
2376 * testsuite/arm_thm_jump11.s: New test source file.
2377 * testsuite/arm_thm_jump11.t: New linker script.
2378 * testsuite/arm_thm_jump8.s: New test source file.
2379 * testsuite/arm_thm_jump8.t: New linker script.
2380
487b39df
ILT
23812011-06-24 Ian Lance Taylor <iant@google.com>
2382
2383 * layout.cc: Include "object.h".
2384 (ctors_sections_in_init_array): New static variable.
2385 (Layout::is_ctors_in_init_array): New function.
2386 (Layout::layout): Add entry to ctors_sections_in_init_array if
2387 appropriate.
2388 * layout.h (class Layout): Declare is_ctors_in_init_array.
2389 * reloc.cc (Sized_relobj_file::do_relocate): Call reverse_words if
2390 is_ctors_reverse_view is set.
2391 (Sized_relobj_file::write_sections): Add layout parameter. Change
2392 all callers. Set is_ctors_reverse_view field of View_size.
2393 (Sized_relobj_file::reverse_words): New function.
2394 * object.h (Sized_relobj_file::View_size): Add
2395 is_ctors_reverse_view field.
2396 (class Sized_relobj_file): Update declarations.
2397 * testsuite/initpri3.c: New test.
2398 * testsuite/Makefile.am: (check_PROGRAMS): Add initpri3a and
2399 initpri3b.
2400 (initpri3a_SOURCES, initpri3a_DEPENDENCIES): New variables.
2401 (initpri3a_LDFLAGS, initpri3a_LDADD): New variables.
2402 (initpri3b_SOURCES, initpri3b_DEPENDENCIES): New variables.
2403 (initpri3b_LDFLAGS, initpri3b_LDADD): New variables.
2404 * testsuite/Makefile.in: Rebuild.
2405
472076e4
CC
24062011-06-24 Cary Coutant <ccoutant@google.com>
2407
2408 * testsuite/Makefile.am: Add in-tree assembler to gcctestdir.
2409 (debug_msg_cdebug.o, odr_violation1_cdebug.o, odr_violation2_cdebug.o)
2410 (debug_msg_cdebug.err): New targets.
2411 * testsuite/Makefile.in: Regenerate.
2412 * testsuite/debug_msg.sh: Check output of link with compressed debug.
2413 Fix checks for link with shared library.
2414
a60af0db
DK
24152011-06-24 Doug Kwan <dougkwan@google.com>
2416
2417 * arm.cc (Arm_output_section::append_text_sections_to_list): Do not
2418 skip empty text sections.
2419 * testsuite/arm_exidx_test.s: Test handling of an empty text section.
2420
5393d741
ILT
24212011-06-22 Ian Lance Taylor <iant@google.com>
2422
2423 PR gold/12910
2424 * options.h (class General_options): Add --ctors-in-init-array.
2425 * layout.cc (Layout::get_output_section): Treat SHT_INIT_ARRAY and
2426 friends as SHT_PROGBITS for merging sections.
2427 (Layout::layout): Remove special handling of .init_array and
2428 friends. Don't sort if doing relocatable link. Sort for .ctors
2429 and .dtors if ctors_in_init_array.
2430 (Layout::make_output_section): Force correct section types for
2431 .init_array and friends. Don't sort if doing relocatable link,
2432 Don't sort .ctors and .dtors if ctors_in_init_array.
2433 (Layout::section_name_mapping): Remove .ctors. and .dtorso.
2434 (Layout::output_section_name): Add relobj parameter. Change all
2435 callers. Handle .ctors. and .dtors. in code rather than table.
2436 Handle .ctors and .dtors if ctors_in_init_array.
2437 (Layout::match_file_name): New function, moved from output.cc.
2438 * layout.h (class Layout): Update declarations.
2439 * output.cc: Include "layout.h".
2440 (Input_section_sort_entry::get_priority): New function.
2441 (Input_section_sort_entry::match_file_name): Just call
2442 Layout::match_file_name.
2443 (Output_section::Input_section_sort_init_fini_compare::operator()):
2444 Handle .ctors and .dtors. Sort by explicit priority rather than
2445 by name.
2446 * configure.ac: Remove CONSTRUCTOR_PRIORITY test and conditional.
2447 * testsuite/initpri2.c: New test.
2448 * testsuite/Makefile.am: Don't test CONSTRUCTOR_PRIORITY.
2449 (check_PROGRAMS): Add initpri2.
2450 (initpri2_SOURCES, initpri2_DEPENDENCIES): New variables.
2451 (initpri2_LDFLAGS, initpri2_LDADD): New variables.
2452 * configure, testsuite/Makefile.in: Rebuild.
2453
e1f74f98
ILT
24542011-06-19 Ian Lance Taylor <iant@google.com>
2455
2456 PR gold/12880
2457 * layout.cc (Layout::attach_allocated_section_to_segment): Add a
2458 .interp section to a PT_INTERP segment even if we have seen a
2459 --dynamic-linker option. Don't do it if we have seen a PHDRS
2460 clause in a linker script.
2461 (Layout::finalize): Don't create a .interp section if we've
2462 already create a PT_INTERP segment.
2463 (Layout::create_interp): Always call choose_output_section (revert
2464 patch of 2011-06-17). Don't create PT_INTERP segment.
2465 * script-sections.cc
2466 (Script_sections::create_note_and_tls_segments): Add a .interp
2467 section to a PT_INTERP segment even if we have seen a
2468 --dynamic-linker option.
2469
766f91bb
ILT
24702011-06-18 Ian Lance Taylor <iant@google.com>
2471
2472 * layout.cc (Layout::finish_dynamic_section): Don't set DT_TEXTREL
2473 merely because a non-PT_LOAD segment has a dynamic reloc.
2474
0d212c3a
ILT
24752011-06-18 Ian Lance Taylor <iant@google.com>
2476
2477 * layout.cc (Layout::finish_dynamic_section): Don't create
2478 DT_FLAGS entry if not needed.
2479
911a5072
ILT
24802011-06-18 Ian Lance Taylor <iant@google.com>
2481
2482 PR gold/12745
2483 * layout.cc (Layout::layout_eh_frame): Correct handling of
2484 writable .eh_frame section.
2485
534b4e5f
ILT
24862011-06-17 Ian Lance Taylor <iant@google.com>
2487
2488 PR gold/12893
2489 * resolve.cc (Symbol_table::resolve): Don't give an error if a
2490 symbol is redefined with the exact same object and value.
2491
10b4f102
ILT
24922011-06-17 Ian Lance Taylor <iant@google.com>
2493
2494 PR gold/12880
2495 * layout.h (class Layout): Add interp_segment_ field.
2496 * layout.cc (Layout::Layout): Initialize interp_segment_ field.
2497 (Layout::attach_allocated_section_to_segment): If making shared
2498 library, put .interp section in PT_INTERP segment.
2499 (Layout::finalize): Also call create_interp if -dynamic-linker
2500 option was used.
2501 (Layout::create_interp): Assert that there is no PT_INTERP
2502 segment. If not using a SECTIONS clause, use make_output_section.
2503 (Layout::make_output_segment): Set interp_segment_ if PT_INTERP.
2504 * script-sections.cc
2505 (Script_sections::create_note_and_tls_segments): If making shared
2506 library, put .interp section in PT_INTERP segment.
2507
a29b0dad
ILT
25082011-06-17 Ian Lance Taylor <iant@google.com>
2509
e588ea8d
ILT
2510 * object.cc (Sized_relobj_file::do_layout): Keep warning sections
2511 when making a shared library.
2512
25132011-06-17 Ian Lance Taylor <iant@google.com>
2514
2515 * x86_64.cc (Target_x86_64::Scan::check_non_pic): Add gsym
2516 parameter. Change all callers. Don't issue warning about PC32
2517 against locally defined symbol.
a29b0dad 2518
9d3b0698
ILT
25192011-06-16 Ian Lance Taylor <iant@google.com>
2520
2521 * symtab.cc (Warnings::issue_warning): Don't warn if relocation
2522 occurs in same object.
2523
85b0f90c
AM
25242011-06-14 Alan Modra <amodra@gmail.com>
2525
2526 * po/POTFILES.in: Regenerate.
2527
a94907d9
ILT
25282011-06-09 Ian Lance Taylor <iant@google.com>
2529
2530 * script-sections.cc
2531 (Orphan_output_section::set_section_addresses): For a relocatable
2532 link set address to 0.
2533
4fb3a1c3
CC
25342011-06-09 Cary Coutant <ccoutant@google.com>
2535
2536 PR gold/12804
2537 * gold/gold.cc (queue_initial_tasks): Warn if --incremental is
2538 used with --compress-debug-sections.
2539 * gold/object.cc (Sized_relobj_file::do_layout): Report
2540 uncompressed size of compressed input sections.
2541
61220854
CC
25422011-06-08 Cary Coutant <ccoutant@google.com>
2543
2544 PR gold/12804
2545 * testsuite/two_file_test_2_v1.cc: Change initialization of
2546 v2 to keep it in .data.
2547
e6455dfb
CC
25482011-06-07 Cary Coutant <ccoutant@google.com>
2549
2550 * common.cc (Symbol_table::do_allocate_commons_list): Call
2551 gold_fallback.
2552 * errors.cc (Errors::fatal): Adjust call to gold_exit.
2553 (Errors::fallback): New function.
2554 (gold_fallback): New function.
2555 * errors.h (Errors::fallback): New function.
2556 * gold.cc (gold_exit): Change status parameter to enum; adjust
2557 all callers.
2558 (queue_initial_tasks): Call gold_fallback.
2559 * gold.h: Include cstdlib.
2560 (Exit_status): New enum type.
2561 (gold_exit): Change status parameter to enum.
2562 (gold_fallback): New function.
2563 * layout.cc (Layout::set_section_offsets): Call gold_fallback.
2564 (Layout::create_symtab_sections): Likewise.
2565 (Layout::create_shdrs): Likewise.
2566 * main.cc (main): Adjust call to gold_exit.
2567 * output.cc (Output_data_got::add_got_entry): Call gold_fallback.
2568 (Output_data_got::add_got_entry_pair): Likewise.
2569 (Output_section::add_input_section): Likewise.
2570 (Output_section::add_output_section_data): Likewise.
2571 (Output_segment::set_section_list_addresses): Likewise.
2572 * x86_64.cc (Output_data_plt_x86_64::add_entry): Likewise.
2573
fb0e076f
CC
25742011-06-07 Cary Coutant <ccoutant@google.com>
2575
2576 * layout.cc (Layout::set_segment_offsets): Don't adjust layout
2577 for incremental links.
2578 * output.cc (Output_segment::set_section_list_addresses): Remove
2579 FIXME and test for TLS or BSS.
2580
a5ee4d5d
CC
25812011-06-07 Cary Coutant <ccoutant@google.com>
2582
2583 * testsuite/Makefile.am: Add incremental_copy_test,
2584 incremental_common_test_1.
2585 * testsuite/Makefile.in: Regenerate.
2586 * testsuite/common_test_1_v1.c: New source file.
2587 * testsuite/common_test_1_v2.c: New source file.
2588 * testsuite/copy_test_v1.cc: New source file.
2589
5146f448
CC
25902011-06-07 Cary Coutant <ccoutant@google.com>
2591
2592 * common.cc (Symbol_table::do_allocate_commons_list): For incremental
2593 update, allocate common from bss section's free list.
2594 * incremental-dump.cc (dump_incremental_inputs): Print flag for
2595 linker-defined symbols.
2596 * incremental.cc (Sized_incremental_binary::do_process_got_plt):
2597 Skip GOT and PLT entries that are no longer referenced.
2598 (Output_section_incremental_inputs::write_info_blocks): Mark
2599 linker-defined symbols.
2600 (Sized_incr_relobj::do_add_symbols): Process linker-defined symbols.
2601 * output.cc (Output_section::allocate): New function.
2602 * output.h (Output_section::allocate): New function.
2603 * resolve.cc (Symbol_table::report_resolve_problem): Add case for
2604 linker-defined symbols.
2605 (Symbol::override_base_with_special): Copy is_predefined_ flag.
2606 * symtab.cc (Symbol::init_fields): Initialize is_predefined_ flag.
2607 (Symbol::init_base_output_data): Likewise.
2608 (Symbol::init_base_output_segment): Likewise.
2609 (Symbol::init_base_constant): Likewise.
2610 (Sized_symbol::init_output_data): Likewise.
2611 (Sized_symbol::init_output_segment): Likewise.
2612 (Sized_symbol::init_constant): Likewise.
2613 (Symbol_table::do_define_in_output_data): Likewise.
2614 (Symbol_table::do_define_in_output_segment): Likewise.
2615 (Symbol_table::do_define_as_constant): Likewise.
2616 * symtab.h (Symbol::is_predefined): New function.
2617 (Symbol::init_base_output_data): Add is_predefined parameter.
2618 (Symbol::init_base_output_segment): Likewise.
2619 (Symbol::init_base_constant): Likewise.
2620 (Symbol::is_predefined_): New data member.
2621 (Sized_symbol::init_output_data): Add is_predefined parameter.
2622 (Sized_symbol::init_output_segment): Likewise.
2623 (Sized_symbol::init_constant): Likewise.
2624 (enum Symbol_table::Defined): Add INCREMENTAL_BASE.
2625
26d3c67d
CC
26262011-06-07 Cary Coutant <ccoutant@google.com>
2627
2628 * copy-relocs.cc (Copy_relocs::copy_reloc): Call make_copy_reloc
2629 instead of emit_copy_reloc.
2630 (Copy_relocs::emit_copy_reloc): Refactor.
2631 (Copy_relocs::make_copy_reloc): New function.
2632 (Copy_relocs::add_copy_reloc): Remove.
2633 * copy-relocs.h (Copy_relocs::emit_copy_reloc): Move to public
2634 section.
2635 (Copy_relocs::make_copy_reloc): New function.
2636 (Copy_relocs::add_copy_reloc): Remove.
2637 * gold.cc (queue_middle_tasks): Emit old COPY relocations from
2638 unchanged input files.
2639 * incremental-dump.cc (dump_incremental_inputs): Print "COPY" flag.
2640 * incremental.cc (Sized_incremental_binary::do_reserve_layout):
2641 Reserve BSS space for COPY relocations.
2642 (Sized_incremental_binary::do_emit_copy_relocs): New function.
2643 (Output_section_incremental_inputs::write_info_blocks): Record
2644 whether a symbol is copied from a shared object.
2645 (Sized_incr_dynobj::do_add_symbols): Record COPY relocations.
2646 * incremental.h (enum Incremental_shlib_symbol_flags): New type.
2647 (INCREMENTAL_SHLIB_SYM_FLAGS_SHIFT): New constant.
2648 (Incremental_input_entry_reader::get_output_symbol_index): Add
2649 is_copy parameter.
2650 (Incremental_binary::emit_copy_relocs): New function.
2651 (Incremental_binary::do_emit_copy_relocs): New function.
2652 (Sized_incremental_binary::Sized_incremental_binary): Initialize
2653 new data member.
2654 (Sized_incremental_binary::add_copy_reloc): New function.
2655 (Sized_incremental_binary::do_emit_copy_relocs): New function.
2656 (Sized_incremental_binary::Copy_reloc): New struct.
2657 (Sized_incremental_binary::Copy_relocs): New typedef.
2658 (Sized_incremental_binary::copy_relocs_): New data member.
2659 * symtab.cc (Symbol_table::add_from_incrobj): Change return type.
2660 * symtab.h (Symbol_table::add_from_incrobj): Change return type.
2661 * target.h (Sized_target::emit_copy_reloc): New function.
2662 * x86_64.cc (Target_x86_64::emit_copy_reloc): New function.
2663
7cdb37d9
CC
26642011-06-02 Cary Coutant <ccoutant@google.com>
2665
2666 PR gold/12163
2667 * gold/archive.cc (Archive::Archive): Initialize new data member.
2668 (Archive::include_all_members): Return if archive has already been
2669 included.
2670 * gold/archive.h (Archive::include_all_members_): New data member.
2671
cc643b88
NC
26722011-06-02 Nick Clifton <nickc@redhat.com>
2673
2674 * dynobj.h: Fix spelling mistake in comment.
2675 * output.cc: Likewise.
2676
f62a3ca7 26772011-05-31 Doug Kwan <dougkwan@google.com>
2e702c99 2678 Asier Llano
f62a3ca7
DK
2679
2680 PR gold/12826
cc643b88 2681 * arm.cc (Target_arm::tag_cpu_arch_combine): Fix handling of
f62a3ca7
DK
2682 arch value that equals to elfcpp::MAX_TAG_CPU_ARCH.
2683 * testsuite/Makefile.am: (MOSTLYCLEANFILES): Clean up. Remove
2684 redundant arm_exidx_test.so.
2685 * testsuite/Makefile.in: Regenerate.
2686 (check_SCRIPTS): Add pr12826.sh
2687 (check_DATA): Add pr12826.stdout
2688 (pr12826.stdout, pr12826.so, pr12826_1.o, pr12826_2.o): New rules.
2689 * testsuite/pr12826.sh: New file.
2690 * testsuite/pr12826_1.s: Ditto.
2691 * testsuite/pr12826_1.s: Ditto.
2692
8dbe1edc
ILT
26932011-05-30 Ian Lance Taylor <iant@google.com>
2694
2695 * reloc.cc (Sized_relobj_file::do_read_relocs): Ignore empty reloc
2696 sections.
2697
c49875be
ILT
26982011-05-29 Ian Lance Taylor <iant@google.com>
2699
2700 PR gold/12804
2701 * testsuite/Makefile.am: Use different file name for two_file_test
2702 temporary file for each incremental test.
2703 * testsuite/Makefile.in: Rebuild.
2704
69d53f7a
ILT
27052011-05-29 Ian Lance Taylor <iant@google.com>
2706
2707 * binary.cc (Binary_to_elf::sized_convert): Don't crash if the
2708 binary input file is empty.
2709
41d0ab5f
ILT
27102011-05-27 Ian Lance Taylor <iant@google.com>
2711
2712 * testsuite/Makefile.am (ver_test_2.so): Use -Wl,-R,.
2713 (ver_test_9.so): Likewise.
2714 * testsuite/Makefile.in: Rebuild.
2715
89d8a36b
CC
27162011-05-26 Cary Coutant <ccoutant@google.com>
2717
2718 * incremental-dump.cc (dump_incremental_inputs): Print COMDAT groups.
2719 * incremental.cc (Incremental_inputs::report_input_section): Fix
2720 comment, indentation.
2721 (Incremental_inputs::report_comdat_group): New function.
2722 (Output_section_incremental_inputs::set_final_data_size): Adjust size
2723 of data for incremental input file entry.
2724 (Output_section_incremental_inputs::write_info_blocks): Write COMDAT
2725 group count, COMDAT group signatures.
2726 (Sized_incr_relobj::do_layout): Record kept COMDAT group info from
2727 an unchanged input file.
2728 * incremental.h (Incremental_object_entry::Incremental_object_entry):
2729 Initialize new data member.
2730 (Incremental_object_entry::add_comdat_group): New function.
2731 (Incremental_object_entry::get_comdat_group_count): New function.
2732 (Incremental_object_entry::get_comdat_signature_key): New function.
2733 (Incremental_object_entry::groups_): New data member.
2734 (Incremental_inputs::report_comdat_group): New function.
2735 (Incremental_input_entry_reader::get_symbol_offset): Adjust size of
2736 data for incremental input file entry.
2737 (Incremental_input_entry_reader::get_comdat_group_count): New function.
2738 (Incremental_input_entry_reader::get_input_section): Adjust size of
2739 data for incremental input file entry.
2740 (Incremental_input_entry_reader::get_global_symbol_reader): Likewise.
2741 (Incremental_input_entry_reader::get_comdat_group_signature): New
2742 function.
2743 * object.cc (Sized_relobj::include_section_group): Report kept
2744 COMDAT groups for incremental links.
2745
1706a06f
ILT
27462011-05-24 David Meyer <pdox@google.com>
2747
2748 * dirsearch.cc (Dirsearch::find): Replace n1 and n2 parameters
2749 with name parameter. Add found_name parameter.
2750 * fileread.cc (Input_file::find_file): Adjust code accordingly.
2751 * dirsearch.h (class Dirsearch): Update declaration.
2752
a10ae760
ILT
27532011-05-24 Ian Lance Taylor <iant@google.com>
2754
2755 * archive.cc (Library_base::should_include_member): Pull in object
2756 from archive if it defines the entry symbol.
2757 * parameters.cc (Parameters::entry): New function.
2758 * parameters.h (class Parameters): Declare entry.
2759 * output.h (class Output_file_header): Remove entry_ field.
2760 * output.cc (Output_file_header::Output_file_header): Remove entry
2761 parameter. Change all callers.
2762 (Output_file_header::entry): Use parameters->entry.
2763 * gold.cc (queue_middle_tasks): Likewise.
2764 * plugin.cc (Plugin_hook::run): Likewise.
2765
aa92d6ed
CC
27662011-05-24 Cary Coutant <ccoutant@google.com>
2767
2768 * gold.cc (queue_initial_tasks): Pass incremental base filename
2769 to Output_file::open_base_file; don't print error message.
2770 * incremental-dump.cc (main): Adjust call to
2771 Output_file::open_for_modification.
2772 * incremental-dump.cc (main): Likewise.
2773 * incremental.cc (Incremental_inputs::report_command_line):
2774 Ignore --incremental-base option when comparing command lines.
2775 Ignore parameter when given as separate argument.
2776 * options.h (class General_options): Add --incremental-base.
2777 * output.cc (Output_file::Output_file):
2778 (Output_file::open_base_file): Add base_name and writable parameters;
2779 read base file into new file; print error message here.
2780 (Output_file::map_no_anonymous): Add writable parameter; adjust all
2781 callers.
2782 * output.h (Output_file::open_for_modification): Rename to...
2783 (Output_file::open_base_file): ...this; add base_name and
2784 writable parameters; adjust all callers.
2785 (Output_file::map_no_anonymous): Add writable parameter; adjust all
2786 callers.
2787 * testsuite/Makefile.am (incremental_test_4): Test
2788 --incremental-base.
2789 * testsuite/Makefile.in: Regenerate.
2790
2eedd706
CC
27912011-05-24 Cary Coutant <ccoutant@google.com>
2792
2793 * testsuite/Makefile.am: Add incremental_test_2, incremental_test_3,
2794 incremental_test_4.
2795 * testsuite/Makefile.in: Regenerate.
2796 * testsuite/two_file_test_1_v1.cc: New test source file.
2797 * testsuite/two_file_test_1b_v1.cc: New test source file.
2798 * testsuite/two_file_test_2_v1.cc: New test source file.
2799
0f1c85a6
CC
28002011-05-24 Cary Coutant <ccoutant@google.com>
2801
2802 * dynobj.h (Dynobj::do_dynobj): New function.
2803 * incremental-dump.cc (dump_incremental_inputs): Print as_needed
2804 flag and soname for shared objects.
2805 * incremental.cc (Incremental_inputs::report_object): Make
2806 either Incremental_object_entry or Incremental_dynobj_entry; add
2807 soname to string table.
2808 (Incremental_inputs::report_input_section): Add assertion.
2809 (Output_section_incremental_inputs::set_final_data_size): Adjust
2810 type of input file entry for shared libraries; adjust size of
2811 shared library info entry.
2812 (Output_section_incremental_inputs::write_input_files): Write
2813 as_needed flag for shared libraries.
2814 (Output_section_incremental_inputs::write_info_blocks): Adjust type
2815 of input file entry for shared libraries; write soname.
2816 (Sized_incr_dynobj::Sized_incr_dynobj): Read as_needed flag and
2817 soname from incremental info.
2818 * incremental.h (enum Incremental_input_flags): Add
2819 INCREMENTAL_INPUT_AS_NEEDED.
2820 (Incremental_input_entry::Incremental_input_entry): Initialize new
2821 data member.
2822 (Incremental_input_entry::set_as_needed): New function.
2823 (Incremental_input_entry::as_needed): New function.
2824 (Incremental_input_entry::do_dynobj_entry): New function.
2825 (Incremental_input_entry::as_needed_): New data member.
2826 (Incremental_object_entry::Incremental_object_entry): Don't check
2827 for shared library.
2828 (Incremental_object_entry::do_type): Likewise.
2829 (class Incremental_dynobj_entry): New class.
2830 (Incremental_input_entry_reader::as_needed): New function.
2831 (Incremental_input_entry_reader::get_soname): New function.
2832 (Incremental_input_entry_reader::get_global_symbol_count): Rewrite.
2833 (Incremental_input_entry_reader::get_output_symbol_index): Adjust
2834 size of shared library info entry.
58797674 2835 * layout.cc (Layout::finish_dynamic_section): Don't test for
0f1c85a6
CC
2836 incremental link when adding DT_NEEDED entries.
2837 * object.h (Object::Object): Initialize new data member.
2838 (Object::dynobj): New function.
2839 (Object::set_as_needed): New function.
2840 (Object::as_needed): New function.
2841 (Object::do_dynobj): New function.
2842 (Object::as_needed_): New data member.
2843
6fa2a40b
CC
28442011-05-24 Cary Coutant <ccoutant@google.com>
2845
2846 * incremental-dump.cc (dump_incremental_inputs): Print dynamic reloc
2847 info; adjust display of GOT entries.
2848 * incremental.cc (Sized_incremental_binary::setup_readers): Allocate
2849 vector of input objects; remove file_status_.
2850 (Sized_incremental_binary::do_reserve_layout): Remove file_status_.
2851 (Sized_incremental_binary::do_process_got_plt): Adjust calls to
2852 got_plt reader; call target hooks to reserve GOT entries.
2853 (Output_section_incremental_inputs::set_final_data_size): Adjust size
2854 of input file info header and GOT info entry.
2855 (Output_section_incremental_inputs::write_info_blocks): Write dynamic
2856 relocation info.
2857 (Got_plt_view_info::got_descriptor): Remove.
2858 (Got_plt_view_info::sym_index): New data member.
2859 (Got_plt_view_info::input_index): New data member.
2860 (Local_got_offset_visitor::visit): Write input file index.
2861 (Global_got_offset_visitor::visit): Write 0 for input file index.
2862 (Global_symbol_visitor_got_plt::operator()): Replace got_descriptor
2863 with sym_index and input_index.
2864 (Output_section_incremental_inputs::write_got_plt): Adjust size of
2865 incremental info GOT entry; replace got_descriptor with input_index.
2866 (Sized_relobj_incr::Sized_relobj_incr): Adjust initializers; record
2867 map from input file index to object.
2868 (Sized_relobj_incr::do_layout): Replace direct data member reference
2869 with accessor function.
2870 (Sized_relobj_incr::do_for_all_local_got_entries): Move to base class.
2871 * incremental.h (Incremental_input_entry_reader::get_symbol_offset):
2872 Adjust size of input file info header.
2873 (Incremental_input_entry_reader::get_first_dyn_reloc): New function.
2874 (Incremental_input_entry_reader::get_dyn_reloc_count): New function.
2875 (Incremental_input_entry_reader::get_input_section): Adjust size of
2876 input file info header.
2877 (Incremental_got_plt_reader::Incremental_got_plt_reader): Adjust size
2878 of incremental info GOT entry.
2879 (Incremental_got_plt_reader::get_got_desc): Remove.
2880 (Incremental_got_plt_reader::get_got_symndx): New function.
2881 (Incremental_got_plt_reader::get_got_input_index): New function.
2882 (Sized_incremental_binary::Sized_incremental_binary): Remove
2883 file_status_; add input_objects_.
2884 (Sized_incremental_binary::~Sized_incremental_binary): Remove.
2885 (Sized_incremental_binary::set_file_is_unchanged): Remove.
2886 (Sized_incremental_binary::file_is_unchanged): Remove.
2887 (Sized_incremental_binary::set_input_object): New function.
2888 (Sized_incremental_binary::input_object): New function.
2889 (Sized_incremental_binary::file_status_): Remove.
2890 (Sized_incremental_binary::input_objects_): New data member.
2891 (Sized_relobj_incr): Rename Sized_incr_relobj to this; adjust all
2892 references.
2893 (Sized_relobj_incr::invalid_address): Move to base class.
2894 (Sized_relobj_incr::is_output_section_offset_invalid): Move to base
2895 class.
2896 (Sized_relobj_incr::do_output_section_offset): Likewise.
2897 (Sized_relobj_incr::do_for_all_local_got_entries): Likewise.
2898 (Sized_relobj_incr::section_offsets_): Likewise.
2899 * object.cc (Sized_relobj::do_for_all_local_got_entries): New
2900 function.
2901 (Sized_relobj_file::Sized_relobj_file): Remove local_got_offsets_.
2902 (Sized_relobj_file::layout_section): Replace refs to section_offsets_
2903 with accessor function.
2904 (Sized_relobj_file::do_layout): Likewise.
2905 (Sized_relobj_file::do_layout_deferred_sections): Likewise.
2906 (Sized_relobj_file::do_for_all_local_got_entries): Move to base class.
2907 (Sized_relobj_file::compute_final_local_value): Replace refs to
2908 section_offsets_ with accessor function.
2909 (Sized_relobj_file::do_finalize_local_symbols): Likewise.
2910 * object.h (Relobj::Relobj): Initialize new data members.
2911 (Relobj::add_dyn_reloc): New function.
2912 (Relobj::first_dyn_reloc): New function.
2913 (Relobj::dyn_reloc_count): New function.
2914 (Relobj::first_dyn_reloc_): New data member.
2915 (Relobj::dyn_reloc_count_): New data member.
2916 (Sized_relobj): Rename Sized_relobj_base to this; adjust all
2917 references.
2918 (Sized_relobj::Address): New typedef.
2919 (Sized_relobj::invalid_address): Move here from child class.
2920 (Sized_relobj::Sized_relobj): Initialize new data members.
2921 (Sized_relobj::sized_relobj): New function.
2922 (Sized_relobj::is_output_section_offset_invalid): Move here from
2923 child class.
2924 (Sized_relobj::get_output_section_offset): Likewise.
2925 (Sized_relobj::local_has_got_offset): Likewise.
2926 (Sized_relobj::local_got_offset): Likewise.
2927 (Sized_relobj::set_local_got_offset): Likewise.
2928 (Sized_relobj::do_for_all_local_got_entries): Likewise.
2929 (Sized_relobj::clear_got_offsets): New function.
2930 (Sized_relobj::section_offsets): Move here from child class.
2931 (Sized_relobj::do_output_section_offset): Likewise.
2932 (Sized_relobj::do_set_section_offset): Likewise.
2933 (Sized_relobj::Local_got_offsets): Likewise.
2934 (Sized_relobj::local_got_offsets_): Likewise.
2935 (Sized_relobj::section_offsets_): Likewise.
2936 (Sized_relobj_file): Rename Sized_relobj to this; adjust all
2937 references.
2938 (Sized_relobj_file::is_output_section_offset_invalid): Move to base
2939 class.
2940 (Sized_relobj_file::sized_relobj): New function
2941 (Sized_relobj_file::local_has_got_offset): Move to base class.
2942 (Sized_relobj_file::local_got_offset): Likewise.
2943 (Sized_relobj_file::set_local_got_offset): Likewise.
2944 (Sized_relobj_file::get_output_section_offset): Likewise.
2945 (Sized_relobj_file::do_for_all_local_got_entries): Likewise.
2946 (Sized_relobj_file::do_output_section_offset): Likewise.
2947 (Sized_relobj_file::do_set_section_offset): Likewise.
2948 (Sized_relobj_file::Local_got_offsets): Likewise.
2949 (Sized_relobj_file::local_got_offsets_): Likewise.
2950 (Sized_relobj_file::section_offsets_): Likewise.
2951 * output.cc (Output_reloc::Output_reloc): Adjust type of relobj
2952 (all constructors).
2953 (set_needs_dynsym_index): Convert relobj to derived class pointer.
2954 (Output_reloc::get_symbol_index): Likewise.
2955 (Output_reloc::local_section_offset): Likewise.
2956 (Output_reloc::get_address): Likewise.
2957 (Output_reloc::symbol_value): Likewise.
2958 (Output_data_got::reserve_slot): Move to class definition.
2959 (Output_data_got::reserve_local): New function.
2960 (Output_data_got::reserve_slot_for_global): Remove.
2961 (Output_data_got::reserve_global): New function.
2962 * output.h (Output_reloc::Output_reloc): Adjust type of relobj
2963 (all constructors, two instantiations).
2964 (Output_reloc::get_relobj): New function (two instantiations).
2965 (Output_reloc::u1_.relobj, Output_reloc::u2_.relobj): Adjust type.
2966 (Output_data_reloc_base::add): Convert relobj to derived class pointer.
2967 (Output_data_reloc::add_global): Adjust type of relobj.
2968 (Output_data_reloc::add_global_relative): Likewise.
2969 (Output_data_reloc::add_symbolless_global_addend): Likewise.
2970 (Output_data_reloc::add_local): Likewise.
2971 (Output_data_reloc::add_local_relative): Likewise.
2972 (Output_data_reloc::add_symbolless_local_addend): Likewise.
2973 (Output_data_reloc::add_local_section): Likewise.
2974 (Output_data_reloc::add_output_section): Likewise.
2975 (Output_data_reloc::add_absolute): Likewise.
2976 (Output_data_reloc::add_target_specific): Likewise.
2977 (Output_data_got::reserve_slot): Move definition here.
2978 (Output_data_got::reserve_local): New function.
2979 (Output_data_got::reserve_global): New function.
2980 * reloc.cc (Sized_relobj_file::do_read_relocs): Replace refs to
2981 section_offsets_ with accessor function.
2982 (Sized_relobj_file::write_sections): Likewise.
2983 (Sized_relobj_file::do_relocate_sections): Likewise.
2984 * target.h (Sized_target::reserve_local_got_entry): New function.
2985 (Sized_target::reserve_global_got_entry): New function.
2986 * x86_64.cc (Target_x86_64::reserve_local_got_entry): New function.
2987 (Target_x86_64::reserve_global_got_entry): New function.
2988 (Target_x86_64::init_got_plt_for_update): Create rela_dyn section.
2989
4829d394
CC
29902011-05-23 Cary Coutant <ccoutant@google.com>
2991
2992 * gold.cc (queue_middle_tasks): Process existing GOT/PLT entries.
2993 * incremental-dump.cc (dump_incremental_inputs): Mask high-order
2994 bit when checking got_type.
2995 * incremental.cc (Sized_incremental_binary::setup_readers):
2996 Store symbol table and string table locations; initialize bit vector
2997 of file status flags.
2998 (Sized_incremental_binary::do_reserve_layout): Set bit flag for
2999 unchanged files.
3000 (Sized_incremental_binary::do_process_got_plt): New function.
3001 (Sized_incremental_binary::get_symtab_view): Use stored locations.
3002 (Output_section_incremental_inputs::set_final_data_size): Record
3003 file index for each input file.
3004 (Output_section_incremental_inputs::write_got_plt): Store file index
3005 instead of input entry offset for each GOT entry.
3006 * incremental.h
3007 (Incremental_input_entry::Incremental_input_entry): Initialize new
3008 data member.
3009 (Incremental_input_entry::set_offset): Store file index.
3010 (Incremental_input_entry::get_file_index): New function.
3011 (Incremental_input_entry::file_index_): New data member.
3012 (Incremental_binary::process_got_plt): New function.
3013 (Incremental_binary::do_process_got_plt): New function.
3014 (Sized_incremental_binary::Sized_incremental_binary): Initialize new
3015 data members.
3016 (Sized_incremental_binary::~Sized_incremental_binary): New destructor.
3017 (Sized_incremental_binary::set_file_is_unchanged): New function.
3018 (Sized_incremental_binary::file_is_unchanged): New function.
3019 (Sized_incremental_binary::do_process_got_plt): New function.
3020 (Sized_incremental_binary::file_status_): New data member.
3021 (Sized_incremental_binary::main_symtab_loc_): New data member.
3022 (Sized_incremental_binary::main_strtab_loc_): New data member.
3023 * output.cc (Output_data_got::Got_entry::write): Add case
3024 RESERVED_CODE.
3025 (Output_data_got::add_global): Call add_got_entry.
3026 (Output_data_got::add_global_plt): Likewise.
3027 (Output_data_got::add_global_with_rel): Likewise.
3028 (Output_data_got::add_global_with_rela): Likewise.
3029 (Output_data_got::add_global_pair_with_rel): Call add_got_entry_pair.
3030 (Output_data_got::add_global_pair_with_rela): Likewise.
3031 (Output_data_got::add_local): Call add_got_entry.
3032 (Output_data_got::add_local_plt): Likewise.
3033 (Output_data_got::add_local_with_rel): Likewise.
3034 (Output_data_got::add_local_with_rela): Likewise.
3035 (Output_data_got::add_local_pair_with_rel): Call add_got_entry_pair.
3036 (Output_data_got::add_local_pair_with_rela): Likewise.
3037 (Output_data_got::reserve_slot): New function.
3038 (Output_data_got::reserve_slot_for_global): New function.
3039 (Output_data_got::add_got_entry): New function.
3040 (Output_data_got::add_got_entry_pair): New function.
3041 (Output_section::add_output_section_data): Edit FIXME.
3042 * output.h
3043 (Output_section_data_build::Output_section_data_build): New
3044 constructor with size parameter.
3045 (Output_data_space::Output_data_space): Likewise.
3046 (Output_data_got::Output_data_got): Initialize new data member; new
3047 constructor with size parameter.
3048 (Output_data_got::add_constant): Call add_got_entry.
3049 (Output_data_got::reserve_slot): New function.
3050 (Output_data_got::reserve_slot_for_global): New function.
3051 (class Output_data_got::Got_entry): Add RESERVED_CODE.
3052 (Output_data_got::add_got_entry): New function.
3053 (Output_data_got::add_got_entry_pair): New function.
3054 (Output_data_got::free_list_): New data member.
3055 * target.h (Sized_target::init_got_plt_for_update): New function.
3056 (Sized_target::register_global_plt_entry): New function.
3057 * x86_64.cc (Output_data_plt_x86_64::Output_data_plt_x86_64):
3058 Initialize new data member; call init; add constructor with PLT count.
3059 (Output_data_plt_x86_64::init): New function.
3060 (Output_data_plt_x86_64::add_relocation): New function.
3061 (Output_data_plt_x86_64::reserve_slot): New function.
3062 (Output_data_plt_x86_64::free_list_): New data member.
3063 (Target_x86_64::init_got_plt_for_update): New function.
3064 (Target_x86_64::register_global_plt_entry): New function.
3065 (Output_data_plt_x86_64::add_entry): Allocate from free list for
3066 incremental updates.
3067 (Output_data_plt_x86_64::add_relocation): New function.
3068 * testsuite/object_unittest.cc (Object_test): Set default options.
3069
ec69d6da
ILT
30702011-05-16 Ian Lance Taylor <iant@google.com>
3071
3072 * options.h (class General_options): Make -i a synonym for -r.
3073
732e31de
ILT
30742011-05-16 Ian Lance Taylor <iant@google.com>
3075
3076 * testsuite/tls_test_main.cc: Use semaphores instead of mutexes.
3077
403676b5
CC
30782011-05-10 Cary Coutant <ccoutant@google.com>
3079
3080 * object.cc (Sized_relobj::do_count_local_symbols): Check for
3081 strip_all (-s).
3082
5b7b7d6e
ILT
30832011-05-06 Ian Lance Taylor <iant@google.com>
3084
3085 * layout.cc (Layout::layout): If the output section flags change,
3086 update the ordering.
3087
f0f9babf
CC
30882011-04-25 Cary Coutant <ccoutant@google.com>
3089
3090 * incremental-dump.cc (dump_incremental_inputs): Print local
3091 symbol info for each input file.
3092 * incremental.cc
3093 (Output_section_incremental_inputs::set_final_data_size): Add local
3094 symbol info to input file entries in incremental info.
3095 (Output_section_incremental_inputs::write_info_blocks): Likewise.
3096 (Sized_incr_relobj::Sized_incr_relobj): Initialize new data members.
3097 (Sized_incr_relobj::do_add_symbols): Cosmetic change.
3098 (Sized_incr_relobj::do_count_local_symbols): Replace stub with
3099 implementation.
3100 (Sized_incr_relobj::do_finalize_local_symbols): Likewise.
3101 (Sized_incr_relobj::do_relocate): Write the local symbols.
3102 (Sized_incr_dynobj::do_add_symbols): Cosmetic change.
3103 * incremental.h (Incremental_inputs_reader::get_symbol_offset):
3104 Adjust size of input file header.
3105 (Incremental_inputs_reader::get_local_symbol_offset): New function.
3106 (Incremental_inputs_reader::get_local_symbol_count): New function.
3107 (Incremental_inputs_reader::get_input_section): Adjust size of input
3108 file header.
3109 (Incremental_inputs_reader::get_global_symbol_reader): Likewise.
3110 (Sized_incr_relobj::This): New typedef.
3111 (Sized_incr_relobj::sym_size): New const data member.
3112 (Sized_incr_relobj::Local_symbol): New struct.
3113 (Sized_incr_relobj::do_output_local_symbol_count): New function.
3114 (Sized_incr_relobj::do_local_symbol_offset): New function.
3115 (Sized_incr_relobj::local_symbol_count_): New data member.
3116 (Sized_incr_relobj::output_local_dynsym_count_): New data member.
3117 (Sized_incr_relobj::local_symbol_index_): New data member.
3118 (Sized_incr_relobj::local_symbol_offset_): New data member.
3119 (Sized_incr_relobj::local_dynsym_offset_): New data member.
3120 (Sized_incr_relobj::local_symbols_): New data member.
3121 * object.h (Relobj::output_local_symbol_count): New function.
3122 (Relobj::local_symbol_offset): New function.
3123 (Relobj::do_output_local_symbol_count): New function.
3124 (Relobj::do_local_symbol_offset): New function.
3125 (Sized_relobj::do_output_local_symbol_count): New function.
3126 (Sized_relobj::do_local_symbol_offset): New function.
3127
d0a9ace3
ILT
31282011-04-22 Vladimir Simonov <sv@sw.ru>
3129
3130 * descriptors.cc (set_close_on_exec): New function.
3131 (Descriptors::open): Use set_close_on_exec.
3132 * output.cc (S_ISLNK): Define if not defined.
3133
94a3fc8b
CC
31342011-04-22 Cary Coutant <ccoutant@google.com>
3135
3136 * incremental.cc (Sized_incremental_binary::setup_readers): Allocate
3137 global symbol map.
3138 (Sized_incremental_binary::do_apply_incremental_relocs): New function.
3139 (Sized_incr_relobj::do_add_symbols): Add symbols to global symbol map.
3140 (Sized_incr_relobj::do_relocate): Remap section indices in incremental
3141 relocations.
3142 (Sized_incr_dynobj::do_add_symbols): Add symbols to global symbol map.
3143 (Sized_incr_dynobj::do_for_all_global_symbols): Remove FIXME.
3144 (Sized_incr_dynobj::do_for_all_local_got_entries): Likewise.
3145 * incremental.h
3146 (Incremental_inputs_reader::global_symbol_reader_at_offset): New
3147 function.
3148 (Incremental_binary::apply_incremental_relocs): New function.
3149 (Incremental_binary::do_apply_incremental_relocs): New function.
3150 (Sized_incremental_binary::Sized_incremental_binary): Initialize new
3151 data member.
3152 (Sized_incremental_binary::add_global_symbol): New function.
3153 (Sized_incremental_binary::global_symbol): New function.
3154 (Sized_incremental_binary::do_apply_incremental_relocs): New function.
3155 (Sized_incremental_binary::symbol_map_): New data member.
3156 * layout.cc (Layout_task_runner::run): Apply incremental relocations.
3157 * target.h (Sized_target::apply_relocation): New function.
3158 * target-reloc.h (apply_relocation): New function.
3159 * x86_64.cc (Target_x86_64::apply_relocation): New function.
3160
c87e4302
DK
31612011-04-22 Doug Kwan <dougkwan@google.com>
3162
3163 * arm.cc (Arm_output_section::Arm_output_section): Set SHF_LINK_ORDER
3164 flag of a SHT_ARM_EXIDX section.
2e702c99 3165 * testsuite/Makefile.am (arm_exidx_test): New test rules.
c87e4302
DK
3166 * testsuite/Makefile.in: Regenerate.
3167 * testsuite/arm_exidx_test.s: New file.
3168 * testsuite/arm_exidx_test.sh: Same.
3169
e7782cf6
CC
31702011-04-20 Cary Coutant <ccoutant@google.com>
3171
3172 PR gold/12689
3173 * archive.h (Incremental_archive_entry::Archive_member):
3174 Initialize arg_serial_ (second constructor).
3175
308ecdc7
ILT
31762011-04-17 Ian Lance Taylor <iant@google.com>
3177
3178 * object.cc (Relocate_info::location): Simplify location string.
3179 * errors.cc (Errors::error_at_location): Don't print program
3180 name.
3181 (Errors::warning_at_location): Likewise.
3182 (Errors::undefined_symbol): Likewise.
3183 * testsuite/debug_msg.sh: Update accordingly.
3184
bec5b579
CC
31852011-04-14 Cary Coutant <ccoutant@google.com>
3186
3187 * gold/layout.cc (Layout::symtab_section_offset): New function.
3188 * gold/layout.h (Layout::symtab_section_offset): New function.
3189 * gold/reloc.cc (Sized_relobj::do_relocate): Call it.
3190
88597d34
ILT
31912011-04-12 Ian Lance Taylor <iant@google.com>
3192
3193 * configure.ac: Check for sys/mman.h and mmap. Check for mremap
3194 with MREMAP_MAYMOVE.
3195 * output.h (class Output_file): Add map_is_allocated_ field.
3196 * output.cc: Only #include <sys/mman.h> if it exists. If mmap is
3197 not available, provide stubs. If mremap is not available, #define
3198 it to gold_mremap.
3199 (MREMAP_MAYMOVE): Define if not defined.
3200 (Output_file::Output_file): Initialize map_is_allocated_.
3201 (Output_file::resize): Check map_is_allocated_.
3202 (Output_file::map_anonymous): If mmap fails, use malloc.
3203 (Output_file::unmap): Don't do anything for an anonymous map.
3204 * fileread.cc: Only #include <sys/mman.h> if it exists. If mmap
3205 is not available, provide stubs.
3206 (File_read::View::~View): Use free rather than delete[].
3207 (File_read::make_view): Use malloc rather than new[]. If mmap
3208 fails, use malloc.
3209 (File_read::find_or_make_view): Use malloc rather than new[].
3210 * gold.h: Remove HAVE_REMAP code.
3211 * mremap.c: #include <errno.h>. Only #include <sys/mman.h> if it
3212 exists. Rename mremap to gold_mremap. If mmap is not available
3213 don't do anything.
3214 * configure, config.in: Rebuild.
3215
11e361bc
ILT
32162011-04-11 Ian Lance Taylor <iant@google.com>
3217
3218 * incremental.cc (Sized_incr_relobj::do_add_symbols): Always
3219 initialize local variable v.
3220
cdc29364
CC
32212011-04-11 Cary Coutant <ccoutant@google.com>
3222
3223 * archive.cc (Archive::include_member): Adjust call to
3224 report_object.
3225 (Add_archive_symbols::run): Track argument serial numbers.
3226 (Lib_group::include_member): Likewise.
3227 (Add_lib_group_symbols::run): Adjust call to report_archive_begin.
3228 * archive.h (Incremental_archive_entry::Archive_member):
3229 Initialize arg_serial_.
3230 (Archive_member::arg_serial_): New data member.
3231 * dynobj.cc (Dynobj::Dynobj): Allow input_file_ to be NULL.
3232 (Sized_dynobj::do_add_symbols): Track symbols when doing an
3233 incremental link.
3234 (Sized_dynobj::do_for_all_local_got_entries): New function.
3235 * dynobj.h: (Sized_dynobj::do_for_all_local_got_entries): New
3236 function.
3237 * fileread.cc (get_mtime): New function.
3238 * fileread.h (get_mtime): New function.
3239 * gold.cc (queue_initial_tasks): Check for incremental update.
3240 (process_incremental_input): New function.
3241 (queue_middle_tasks): Don't force valid target for incremental
3242 update.
3243 * incremental-dump.cc (find_input_containing_global): Adjust
3244 size of symbol info entry.
3245 (dump_incremental_inputs): Dump argument serial number and
3246 in_system_directory flag; bias shndx by 1; print symbol names
3247 when dumping per-file symbol lists; use new symbol info readers.
3248 * incremental.cc
3249 (Output_section_incremental_inputs:update_data_size): New function.
3250 (Sized_incremental_binary::setup_readers): Setup input readers
3251 for each input file; build maps for files added from libraries
3252 and scripts.
3253 (Sized_incremental_binary::check_input_args): New function.
3254 (Sized_incremental_binary::do_check_inputs): Build map of argument
3255 serial numbers to input arguments.
3256 (Sized_incremental_binary::do_file_has_changed): Rename
3257 do_file_is_unchanged to this; compare file modification times.
3258 (Sized_incremental_binary::do_init_layout): New function.
3259 (Sized_incremental_binary::do_reserve_layout): New function.
3260 (Sized_incremental_binary::do_get_input_reader): Remove.
3261 (Sized_incremental_binary::get_symtab_view): New function.
3262 (Incremental_checker::can_incrementally_link_output_file): Remove.
3263 (Incremental_inputs::report_command_line): Exclude --debug options.
3264 (Incremental_inputs::report_archive_begin): Add parameter; track
3265 argument serial numbers; don't put input file entry for archive
3266 before archive members.
3267 (Incremental_inputs::report_archive_end): Put input file entry
3268 for archive after archive members.
3269 (Incremental_inputs::report_object): Add parameter; track argument
3270 serial numbers and in_system_directory flag.
3271 (Incremental_inputs::report_script): Add parameter; track argument
3272 serial numbers.
3273 (Output_section_incremental_inputs::set_final_data_size): Adjust
3274 size of symbol info entry; check for forwarding symbols.
3275 (Output_section_incremental_inputs::write_input_files): Write
3276 in_system_directory flag and argument serial number.
3277 (Output_section_incremental_inputs::write_info_blocks): Map section
3278 indices between incremental info and original input file; store
3279 input section index for each symbol.
3280 (class Local_got_offset_visitor): Derive from Got_offset_list::Visitor;
3281 change operator() to visit().
3282 (class Global_got_offset_visitor): Likewise.
3283 (class Global_symbol_visitor_got_plt):
3284 (Output_section_incremental_inputs::write_got_plt): Use new visitor
3285 classes.
3286 (Sized_incr_relobj::Sized_incr_relobj): New constructor.
3287 (Sized_incr_relobj::do_read_symbols): New function.
3288 (Sized_incr_relobj::do_layout): New function.
3289 (Sized_incr_relobj::do_layout_deferred_sections): New function.
3290 (Sized_incr_relobj::do_add_symbols): New function.
3291 (Sized_incr_relobj::do_should_include_member): New function.
3292 (Sized_incr_relobj::do_for_all_global_symbols): New function.
3293 (Sized_incr_relobj::do_for_all_local_got_entries): New function.
3294 (Sized_incr_relobj::do_section_size): New function.
3295 (Sized_incr_relobj::do_section_name): New function.
3296 (Sized_incr_relobj::do_section_contents): New function.
3297 (Sized_incr_relobj::do_section_flags): New function.
3298 (Sized_incr_relobj::do_section_entsize): New function.
3299 (Sized_incr_relobj::do_section_address): New function.
3300 (Sized_incr_relobj::do_section_type): New function.
3301 (Sized_incr_relobj::do_section_link): New function.
3302 (Sized_incr_relobj::do_section_info): New function.
3303 (Sized_incr_relobj::do_section_addralign): New function.
3304 (Sized_incr_relobj::do_initialize_xindex): New function.
3305 (Sized_incr_relobj::do_get_global_symbol_counts): New function.
3306 (Sized_incr_relobj::do_read_relocs): New function.
3307 (Sized_incr_relobj::do_gc_process_relocs): New function.
3308 (Sized_incr_relobj::do_scan_relocs): New function.
3309 (Sized_incr_relobj::do_count_local_symbols): New function.
3310 (Sized_incr_relobj::do_finalize_local_symbols): New function.
3311 (Sized_incr_relobj::do_set_local_dynsym_indexes): New function.
3312 (Sized_incr_relobj::do_set_local_dynsym_offset): New function.
3313 (Sized_incr_relobj::do_relocate): New function.
3314 (Sized_incr_relobj::do_set_section_offset): New function.
3315 (Sized_incr_dynobj::Sized_incr_dynobj): New function.
3316 (Sized_incr_dynobj::do_read_symbols): New function.
3317 (Sized_incr_dynobj::do_layout): New function.
3318 (Sized_incr_dynobj::do_add_symbols): New function.
3319 (Sized_incr_dynobj::do_should_include_member): New function.
3320 (Sized_incr_dynobj::do_for_all_global_symbols): New function.
3321 (Sized_incr_dynobj::do_for_all_local_got_entries): New function.
3322 (Sized_incr_dynobj::do_section_size): New function.
3323 (Sized_incr_dynobj::do_section_name): New function.
3324 (Sized_incr_dynobj::do_section_contents): New function.
3325 (Sized_incr_dynobj::do_section_flags): New function.
3326 (Sized_incr_dynobj::do_section_entsize): New function.
3327 (Sized_incr_dynobj::do_section_address): New function.
3328 (Sized_incr_dynobj::do_section_type): New function.
3329 (Sized_incr_dynobj::do_section_link): New function.
3330 (Sized_incr_dynobj::do_section_info): New function.
3331 (Sized_incr_dynobj::do_section_addralign): New function.
3332 (Sized_incr_dynobj::do_initialize_xindex): New function.
3333 (Sized_incr_dynobj::do_get_global_symbol_counts): New function.
3334 (make_sized_incremental_object): New function.
3335 (Incremental_library::copy_unused_symbols): New function.
3336 (Incremental_library::do_for_all_unused_symbols): New function.
3337 * incremental.h (enum Incremental_input_flags): New type.
3338 (class Incremental_checker): Remove.
3339 (Incremental_input_entry::Incremental_input_entry): Add argument
3340 serial number.
3341 (Incremental_input_entry::arg_serial): New function.
3342 (Incremental_input_entry::set_is_in_system_directory): New function.
3343 (Incremental_input_entry::is_in_system_directory): New function.
3344 (Incremental_input_entry::arg_serial_): New data member.
3345 (Incremental_input_entry::is_in_system_directory_): New data member.
3346 (class Script_info): Move here from script.h.
3347 (Script_info::Script_info): Add filename parameter.
3348 (Script_info::filename): New function.
3349 (Script_info::filename_): New data member.
3350 (Incremental_script_entry::Incremental_script_entry): Add argument
3351 serial number.
3352 (Incremental_object_entry::Incremental_object_entry): Likewise.
3353 (Incremental_object_entry::add_input_section): Build list of input
3354 sections with map to original shndx.
3355 (Incremental_object_entry::get_input_section_index): New function.
3356 (Incremental_object_entry::shndx_): New data member.
3357 (Incremental_object_entry::name_key_): Rename; adjust all refs.
3358 (Incremental_object_entry::sh_size_): Rename; adjust all refs.
3359 (Incremental_archive_entry::Incremental_archive_entry): Add argument
3360 serial number.
3361 (Incremental_inputs::report_archive_begin): Likewise.
3362 (Incremental_inputs::report_object): Likewise.
3363 (Incremental_inputs::report_script): Likewise.
3364 (class Incremental_global_symbol_reader): New class.
3365 (Incremental_input_entry_reader::Incremental_input_entry_reader): Read
3366 and store flags and input file type.
3367 (Incremental_input_entry_reader::arg_serial): New function.
3368 (Incremental_input_entry_reader::type): Extract type from flags.
3369 (Incremental_input_entry_reader::is_in_system_directory): New function.
3370 (Incremental_input_entry_reader::get_input_section_count): Call
3371 accessor function for type.
3372 (Incremental_input_entry_reader::get_symbol_offset): Call accessor
3373 function for type; adjust size of global symbol entry.
3374 (Incremental_input_entry_reader::get_global_symbol_count): Call
3375 accessor function for type.
3376 (Incremental_input_entry_reader::get_object_count): Likewise.
3377 (Incremental_input_entry_reader::get_object_offset): Likewise.
3378 (Incremental_input_entry_reader::get_member_count): Likewise.
3379 (Incremental_input_entry_reader::get_unused_symbol_count): Likewise.
3380 (Incremental_input_entry_reader::get_member_offset): Likewise.
3381 (Incremental_input_entry_reader::get_unused_symbol): Likewise.
3382 (Incremental_input_entry_reader::Global_symbol_info): Remove.
3383 (Incremental_input_entry_reader::get_global_symbol_info): Remove.
3384 (Incremental_input_entry_reader::get_global_symbol_reader): New
3385 function.
3386 (Incremental_input_entry_reader::get_output_symbol_index): New
3387 function.
3388 (Incremental_input_entry_reader::type_): Remove.
3389 (Incremental_input_entry_reader::flags_): New data member.
3390 (Incremental_inputs_reader::input_file_offset): New function.
3391 (Incremental_inputs_reader::input_file_index): New function.
3392 (Incremental_inputs_reader::input_file): Call input_file_offset.
3393 (Incremental_inputs_reader::input_file_at_offset): New function.
3394 (Incremental_relocs_reader::get_r_type): Reformat.
3395 (Incremental_relocs_reader::get_r_shndx): Reformat.
3396 (Incremental_relocs_reader::get_r_offset): Reformat.
3397 (Incremental_relocs_reader::data): New function.
3398 (Incremental_binary::Incremental_binary): Initialize new data members.
3399 (Incremental_binary::check_inputs): Add cmdline parameter.
3400 (Incremental_binary::file_is_unchanged): Remove.
3401 (Input_reader::arg_serial): New function.
3402 (Input_reader::get_unused_symbol_count): New function.
3403 (Input_reader::get_unused_symbol): New function.
3404 (Input_reader::do_arg_serial): New function.
3405 (Input_reader::do_get_unused_symbol_count): New function.
3406 (Input_reader::do_get_unused_symbol): New function.
3407 (Incremental_binary::input_file_count): New function.
3408 (Incremental_binary::get_input_reader): Change signature to use
3409 index instead of filename.
3410 (Incremental_binary::file_has_changed): New function.
3411 (Incremental_binary::get_input_argument): New function.
3412 (Incremental_binary::get_library): New function.
3413 (Incremental_binary::get_script_info): New function.
3414 (Incremental_binary::init_layout): New function.
3415 (Incremental_binary::reserve_layout): New function.
3416 (Incremental_binary::output_file): New function.
3417 (Incremental_binary::do_check_inputs): New function.
3418 (Incremental_binary::do_file_is_unchanged): Remove.
3419 (Incremental_binary::do_file_has_changed): New function.
3420 (Incremental_binary::do_init_layout): New function.
3421 (Incremental_binary::do_reserve_layout): New function.
3422 (Incremental_binary::do_input_file_count): New function.
3423 (Incremental_binary::do_get_input_reader): Change signature.
3424 (Incremental_binary::input_args_map_): New data member.
3425 (Incremental_binary::library_map_): New data member.
3426 (Incremental_binary::script_map_): New data member.
3427 (Sized_incremental_binary::Sized_incremental_binary): Initialize
3428 new data members.
3429 (Sized_incremental_binary::output_section): New function.
3430 (Sized_incremental_binary::inputs_reader): Add const.
3431 (Sized_incremental_binary::symtab_reader): Add const.
3432 (Sized_incremental_binary::relocs_reader): Add const.
3433 (Sized_incremental_binary::got_plt_reader): Add const.
3434 (Sized_incremental_binary::get_symtab_view): New function.
3435 (Sized_incremental_binary::Inputs_reader): New typedef.
3436 (Sized_incremental_binary::Input_entry_reader): New typedef.
3437 (Sized_incremental_binary::do_check_inputs): Add cmdline parameter.
3438 (Sized_incremental_binary::do_file_is_unchanged): Remove.
3439 (Sized_incremental_binary::do_file_has_changed): New function.
3440 (Sized_incremental_binary::do_init_layout): New function.
3441 (Sized_incremental_binary::do_reserve_layout): New function.
3442 (Sized_input_reader::Inputs_reader): Remove.
3443 (Sized_input_reader::Input_entry_reader): Remove.
3444 (Sized_input_reader::do_arg_serial): New function.
3445 (Sized_input_reader::do_get_unused_symbol_count): New function.
3446 (Sized_input_reader::do_get_unused_symbol): New function.
3447 (Sized_incremental_binary::do_input_file_count): New function.
3448 (Sized_incremental_binary::do_get_input_reader): Change signature;
3449 use index instead of filename.
3450 (Sized_incremental_binary::section_map_): New data member.
3451 (Sized_incremental_binary::input_entry_readers_): New data member.
3452 (class Sized_incr_relobj): New class.
3453 (class Sized_incr_dynobj): New class.
3454 (make_sized_incremental_object): New function.
3455 (class Incremental_library): New class.
3456 * layout.cc (Free_list::num_lists): New static data member.
3457 (Free_list::num_nodes): New static data member.
3458 (Free_list::num_removes): New static data member.
3459 (Free_list::num_remove_visits): New static data member.
3460 (Free_list::num_allocates): New static data member.
3461 (Free_list::num_allocate_visits): New static data member.
3462 (Free_list::init): New function.
3463 (Free_list::remove): New function.
3464 (Free_list::allocate): New function.
3465 (Free_list::dump): New function.
3466 (Free_list::print_stats): New function.
3467 (Layout_task_runner::run): Resize output file for incremental updates.
3468 (Layout::Layout): Initialize new data members.
3469 (Layout::set_incremental_base): New function.
3470 (Layout::init_fixed_output_section): New function.
3471 (Layout::layout_eh_frame): Do not build .eh_frame_hdr section for
3472 incremental updates.
3473 (Layout::create_gold_note): Do not create gold note section for
3474 incremental updates.
3475 (Layout::set_segment_offsets): Do not recalculate RELRO alignment
3476 for incremental updates.
3477 (Layout::set_section_offsets): For incremental updates, allocate space
3478 from free list.
3479 (Layout::create_symtab_sections): Layout with offsets relative to
3480 start of section; for incremental updates, allocate space from free
3481 list.
3482 (Layout::create_shdrs): For incremental updates, allocate space from
3483 free list.
3484 (Layout::finish_dynamic_section): For incremental updates, do not
3485 check --as-needed (fixed in subsequent patch).
3486 * layout.h (class Free_list): New class.
3487 (Layout::set_incremental_base): New function.
3488 (Layout::incremental_base): New function.
3489 (Layout::init_fixed_output_section): New function.
3490 (Layout::allocate): New function.
3491 (Layout::incremental_base_): New data member.
3492 (Layout::free_list_): New data member.
3493 * main.cc (main): Print Free_list statistics.
3494 * object.cc (Relobj::finalize_incremental_relocs): Add
3495 clear_counts parameter; clear counts only when clear_counts is set.
3496 (Sized_relobj::Sized_relobj): Initialize new base class.
3497 (Sized_relobj::do_layout): Don't report special sections.
3498 (Sized_relobj::do_for_all_local_got_entries): New function.
3499 (Sized_relobj::write_local_symbols): Add symtab_off parameter; add
3500 symtab_off to all symbol table offsets.
3501 (Sized_relobj::do_get_global_symbol_counts): Add typename keyword.
3502 * object.h (class Got_offset_list): Move to top of file.
3503 (Object::Object): Allow case where input_file == NULL.
3504 (Object::~Object): Likewise.
3505 (Object::input_file): Assert that input_file != NULL.
3506 (Object::lock): Allow case where input_file == NULL.
3507 (Object::unlock): Likewise.
3508 (Object::is_locked): Likewise.
3509 (Object::token): Likewise.
3510 (Object::release): Likewise.
3511 (Object::is_incremental): New function.
3512 (Object::get_mtime): New function.
3513 (Object::for_all_local_got_entries): New function.
3514 (Object::clear_view_cache_marks): Allow case where input_file == NULL.
3515 (Object::set_is_in_system_directory): New function.
3516 (Object::is_in_system_directory): New function.
3517 (Object::do_is_incremental): New function.
3518 (Object::do_get_mtime): New function.
3519 (Object::do_for_all_local_got_entries): New function.
3520 (Object::is_in_system_directory_): New data member.
3521 (Relobj::finalize_incremental_relocs): Add clear_counts parameter.
3522 (class Sized_relobj_base): New class.
3523 (class Sized_relobj): Derive from Sized_relobj_base.
3524 (class Sized_relobj::Symbols): Redeclare from base class.
3525 (class Sized_relobj::local_got_offset_list): Remove.
3526 (class Sized_relobj::Output_sections): Redeclare from base class.
3527 (class Sized_relobj::do_for_all_local_got_entries): New function.
3528 (class Sized_relobj::write_local_symbols): Add offset parameter.
3529 (class Sized_relobj::local_symbol_offset_): Update comment.
3530 (class Sized_relobj::local_dynsym_offset_): Update comment.
3531 * options.cc (Input_arguments::add_file): Remove const.
3532 * options.h (Input_file_argument::Input_file_argument):
3533 Initialize arg_serial_ (all constructors).
3534 (Input_file_argument::set_arg_serial): New function.
3535 (Input_file_argument::arg_serial): New function.
3536 (Input_file_argument::arg_serial_): New data member.
3537 (Input_arguments::Input_arguments): Initialize file_count_.
3538 (Input_arguments::add_file): Remove const.
3539 (Input_arguments::number_of_input_files): New function.
3540 (Input_arguments::file_count_): New data member.
3541 (Command_line::number_of_input_files): Call
3542 Input_arguments::number_of_input_files.
3543 * output.cc (Output_segment_headers::Output_segment_headers):
3544 Set current size.
3545 (Output_section::Input_section::current_data_size): New function.
3546 (Output_section::Output_section): Initialize new data members.
3547 (Output_section::add_input_section): Don't do merge sections for
3548 an incremental link; allocate space from free list for an
3549 incremental update.
3550 (Output_section::add_output_section_data): Allocate space from
3551 free list for an incremental update.
3552 (Output_section::update_data_size): New function.
3553 (Output_section::set_fixed_layout): New function.
3554 (Output_section::reserve): New function.
3555 (Output_segment::set_section_addresses): Remove const.
3556 (Output_segment::set_section_list_addresses): Remove const; allocate
3557 space from free list for an incremental update.
3558 (Output_segment::set_offset): Adjust size of RELRO segment for an
3559 incremental update.
3560 * output.h (Output_data::current_data_size): Move here from
3561 child classes.
3562 (Output_data::pre_finalize_data_size): New function.
3563 (Output_data::update_data_size): New function.
3564 (Output_section_headers::update_data_size): new function.
3565 (Output_section_data_build::current_data_size): Move to Output_data.
3566 (Output_data_strtab::update_data_size): New function.
3567 (Output_section::current_data_size): Move to Output_data.
3568 (Output_section::set_fixed_layout): New function.
3569 (Output_section::has_fixed_layout): New function.
3570 (Output_section::reserve): New function.
3571 (Output_section::update_data_size): New function.
3572 (Output_section::has_fixed_layout_): New data member.
3573 (Output_section::free_list_): New data member.
3574 (Output_segment::set_section_addresses): Remove const.
3575 (Output_segment::set_section_list_addresses): Remove const.
3576 * plugin.cc (Sized_pluginobj::do_for_all_local_got_entries):
3577 New function.
3578 * plugin.h (Sized_pluginobj::do_for_all_local_got_entries):
3579 New function.
3580 * readsyms.cc (Read_symbols::do_read_symbols): Add library
3581 parameter when calling Add_symbols constructor; store argument
3582 serial number for members of a lib group.
3583 (Add_symbols::locks): Allow case where token == NULL.
3584 (Add_symbols::run): Report libraries denoted by --start-lib/--end-lib.
3585 (Read_member::~Read_member): New function.
3586 (Read_member::is_runnable): New function.
3587 (Read_member::locks): New function.
3588 (Read_member::run): New function.
3589 (Check_script::~Check_script): New function.
3590 (Check_script::is_runnable): New function.
3591 (Check_script::locks): New function.
3592 (Check_script::run): New function.
3593 (Check_library::~Check_library): New function.
3594 (Check_library::is_runnable): New function.
3595 (Check_library::locks): New function.
3596 (Check_library::run): New function.
3597 * readsyms.h (Add_symbols::Add_symbols): Add library parameter.
3598 (Add_symbols::library_): New data member.
3599 (class Read_member): New class.
3600 (class Check_script): New class.
3601 (class Check_library): New class.
3602 * reloc.cc (Read_relocs::is_runnable): Allow case where
3603 token == NULL.
3604 (Read_relocs::locks): Likewise.
3605 (Scan_relocs::locks): Likewise.
3606 (Relocate_task::locks): Likewise.
3607 (Sized_relobj::do_scan_relocs): Tell finalize_incremental_relocs
3608 to clear counters.
3609 (Sized_relobj::incremental_relocs_scan): Fix comment.
3610 (Sized_relobj::do_relocate): Pass output file offset to
3611 write_local_symbols.
3612 (Sized_relobj::incremental_relocs_write_reltype): Use reloc_size
3613 from class declaration.
3614 * script.cc (read_input_script): Allocate Script_info; pass
3615 argument serial number to report_script.
3616 * script.h (class Script_info): Move to incremental.h.
3617 * symtab.cc (Symbol_table::add_from_incrobj): New function.
3618 * symtab.h (Symbol_table::add_from_incrobj): New function.
3619 (Symbol_table::set_file_offset): New function.
3620
b961d0d7
CC
36212011-04-05 Cary Coutant <ccoutant@google.com>
3622
3623 * incremental-dump.cc (dump_incremental_inputs): Change signature
3624 to take a Sized_incremental_binary; change caller. Use readers
3625 in Sized_incremental_binary.
3626 * incremental.cc
3627 (Sized_incremental_binary::find_incremental_inputs_sections):
3628 Rename do_find_incremental_inputs_sections to this.
3629 (Sized_incremental_binary::setup_readers): New function.
3630 (Sized_incremental_binary::do_check_inputs): Check
3631 has_incremental_info_ flag; move setup code to setup_readers;
3632 use input readers.
3633 (Sized_incremental_binary::do_file_is_unchanged): New function.
3634 (Sized_incremental_binary::do_get_input_reader): New function.
3635 * incremental.h (class Incremental_binary): Move to end of file.
3636 (Incremental_binary::file_is_unchanged): New function.
3637 (Incremental_binary::do_file_is_unchanged): New function.
3638 (Incremental_binary::Input_reader): New class.
3639 (Incremental_binary::get_input_reader): New function.
3640 (class Sized_incremental_binary): Move to end of file.
3641 (Sized_incremental_binary::Sized_incremental_binary): Setup the
3642 input section reader classes.
3643 (Sized_incremental_binary::has_incremental_info): New function.
3644 (Sized_incremental_binary::inputs_reader): New function.
3645 (Sized_incremental_binary::symtab_reader): New function.
3646 (Sized_incremental_binary::relocs_reader): New function.
3647 (Sized_incremental_binary::got_plt_reader): New function.
3648 (Sized_incremental_binary::do_file_is_unchanged): New function.
3649 (Sized_incremental_binary::Sized_input_reader): New class.
3650 (Sized_incremental_binary::get_input_reader): New function.
3651 (Sized_incremental_binary::find_incremental_inputs_sections):
3652 Rename do_find_incremental_inputs_sections to this.
3653 (Sized_incremental_binary::setup_readers): New function.
3654 (Sized_incremental_binary::has_incremental_info_): New data member.
3655 (Sized_incremental_binary::inputs_reader_): New data member.
3656 (Sized_incremental_binary::symtab_reader_): New data member.
3657 (Sized_incremental_binary::relocs_reader_): New data member.
3658 (Sized_incremental_binary::got_plt_reader_): New data member.
3659 (Sized_incremental_binary::current_input_file_): New data member.
3660
a869183f
PP
36612011-04-05 Paul Pluzhnikov <ppluzhnikov@google.com>
3662
3663 PR gold/12640
3664 * dwarf_reader.cc (Sized_dwarf_line_info): Fix vector bounds
3665 violation.
3666
36672011-03-30 Cary Coutant <ccoutant@google.com>
c7975edd
CC
3668
3669 * archive.cc (Archive::include_member): Adjust call to report_object.
3670 (Add_archive_symbols::run): Add script_info to call to
3671 report_archive_begin.
3672 (Lib_group::include_member): Adjust call to report_object.
3673 (Add_lib_group_symbols::run): Adjust call to report_object.
3674 * incremental-dump.cc (dump_incremental_inputs): Remove unnecessary
3675 blocks. Add object count for script input files.
3676 * incremental.cc (Incremental_inputs::report_archive_begin): Add
3677 script_info parameter; change all callers.
3678 (Incremental_inputs::report_object): Add script_info parameter;
3679 change all callers.
3680 (Incremental_inputs::report_script): Store backpointer to
3681 incremental info entry.
3682 (Output_section_incremental_inputs::set_final_data_size): Record
3683 additional information for scripts.
3684 (Output_section_incremental_inputs::write_info_blocks): Likewise.
3685 * incremental.h (Incremental_script_entry::add_object): New function.
3686 (Incremental_script_entry::get_object_count): New function.
3687 (Incremental_script_entry::get_object): New function.
3688 (Incremental_script_entry::objects_): New data member; adjust
3689 constructor.
3690 (Incremental_inputs::report_archive_begin): Add script_info parameter.
3691 (Incremental_inputs::report_object): Add script_info parameter.
3692 (Incremental_inputs_reader::get_object_count): New function.
3693 (Incremental_inputs_reader::get_object_offset): New function.
3694 * options.cc (Input_arguments::add_file): Return reference to
3695 new input argument.
3696 * options.h (Input_argument::set_script_info): New function.
3697 (Input_argument::script_info): New function.
3698 (Input_argument::script_info_): New data member; adjust all
3699 constructors.
3700 (Input_file_group::add_file): Return reference to new input argument.
3701 (Input_file_lib::add_file): Likewise.
3702 (Input_arguments::add_file): Likewise.
3703 * readsyms.cc (Add_symbols::run): Adjust call to report_object.
3704 * script.cc (Parser_closure::Parser_closure): Add script_info
3705 parameter; adjust all callers.
3706 (Parser_closure::script_info): New function.
3707 (Parser_closure::script_info_): New data member.
3708 (read_input_script): Report scripts earlier to incremental info.
3709 (script_add_file): Set script_info in Input_argument.
3710 (script_add_library): Likewise.
3711 * script.h (Script_options::Script_info): Rewrite class.
3712
a869183f 37132011-03-29 Cary Coutant <ccoutant@google.com>
e0c52780
CC
3714
3715 * archive.cc (Library_base::should_include_member): Move
3716 method here from class Archive.
3717 (Archive::Archive): Initialize base class.
3718 (Archive::should_include_member): Move to base class.
3719 (Archive::do_for_all_unused_symbols): New function.
3720 (Add_archive_symbols::run): Remove redundant access to
3721 incremental_inputs.
3722 (Lib_group::Lib_group): Initialize base class.
3723 (Lib_group::do_filename): New function.
3724 (Lib_group::include_member): Pass pointer to Lib_group to
3725 report_object.
3726 (Lib_group::do_for_all_unused_symbols): New function.
3727 (Add_lib_group_symbols::run): Report archive information for
3728 incremental links.
3729 * archive.h (class Library_base): New base class.
3730 (class Archive): Derive from Library_base.
3731 (Archive::filename): Move to base class.
3732 (Archive::set_incremental_info): Likewise.
3733 (Archive::incremental_info): Likewise.
3734 (Archive::Should_include): Likewise.
3735 (Archive::should_include_member): Likewise.
3736 (Archive::Armap_entry): Remove.
3737 (Archive::Unused_symbol_iterator): Remove.
3738 (Archive::unused_symbols_begin): Remove.
3739 (Archive::unused_symbols_end): Remove.
3740 (Archive::do_filename): New function.
3741 (Archive::do_get_mtime): New function.
3742 (Archive::do_for_all_unused_symbols): New function.
3743 (Archive::task_): Move to base class.
3744 (Archive::incremental_info_): Likewise.
3745 (class Lib_group): Derive from Library_base.
3746 (Lib_group::do_filename): New function.
3747 (Lib_group::do_get_mtime): New function.
3748 (Lib_group::do_for_all_unused_symbols): New function.
3749 (Lib_group::task_): Move to base class.
3750 * dynobj.cc (Sized_dynobj::do_for_all_global_symbols): New
3751 function.
3752 * dynobj.h (Sized_dynobj::do_for_all_global_symbols): New
3753 function.
3754 * incremental.cc (Incremental_inputs::report_archive_begin):
3755 Use Library_base; call library's get_mtime; add incremental inputs
3756 entry before members.
3757 (class Unused_symbol_visitor): New class.
3758 (Incremental_inputs::report_archive_end): Use Library_base; use
3759 visitor class to record unused symbols; don't add incremental inputs
3760 entry after members.
3761 (Incremental_inputs::report_object): Use Library_base.
3762 * incremental.h
3763 (Incremental_archive_entry::Incremental_archive_entry): Remove
3764 unused Archive parameter.
3765 (Incremental_inputs::report_archive_begin): Use Library_base.
3766 (Incremental_inputs::report_archive_end): Likewise.
3767 (Incremental_inputs::report_object): Likewise.
3768 * object.cc (Sized_relobj::do_for_all_global_symbols): New
3769 function.
3770 * object.h (Object::for_all_global_symbols): New function.
3771 (Object::do_for_all_global_symbols): New function.
3772 (Sized_relobj::do_for_all_global_symbols): New function.
3773 * plugin.cc (Sized_pluginobj::do_for_all_global_symbols): New
3774 function.
3775 * plugin.h (Sized_pluginobj::do_for_all_global_symbols): New
3776 function.
3777
61ab3e40
ILT
37782011-03-27 Ian Lance Taylor <iant@google.com>
3779
3780 * archive.cc (Archive::interpret_header): Return -1 if something
3781 goes wrong. Change callers accordingly.
3782
30e1f9e6
CC
37832011-03-25 Cary Coutant <ccoutant@google.com>
3784
3785 * testsuite/Makefile.am (final_layout.stdout): Use -n option with nm.
3786 * testsuite/Makefile.in: Regenerate.
3787
9370ce59 37882011-03-23 Rafael Ávila de Espíndola <respindola@mozilla.com>
9c793f14
RÁE
3789
3790 * plugin.cc (get_view): New.
3791 (Plugin::load): Pass get_view to the plugin.
3792 (Plugin_manager::get_view): New.
3793
9312bb0a
ILT
37942011-03-21 Ian Lance Taylor <iant@google.com>
3795
3796 * testsuite/final_layout.sh: Rewrite to not use dc.
07aead7b 3797 * testsuite/relro_test.sh: Fail if dc is not present.
9312bb0a 3798
7e12ba9e
ST
37992011-03-21 Sriraman Tallam <tmsriram@google.com>
3800
3801 * testsuite/icf_safe_so_test.sh: Add #!/bin/sh to start.
3802 Change == to -eq.
3803 * testsuite/icf_string_merge_test.sh: Add #!/bin/sh to start.
3804 * testsuite/icf_safe_test.sh: Add #!/bin/sh to start.
3805 Change == to -eq.
3806 * testsuite/icf_sht_rel_addend_test.sh: Add #!/bin/sh to start.
3807 * testsuite/icf_preemptible_functions_test.sh: Add #!/bin/sh to start.
3808
fd7a005d
ILT
38092011-03-14 Ian Lance Taylor <iant@google.com>
3810
3811 * script-sections.cc (Sort_output_sections::script_compare):
3812 Rename from is_before, change return type.
3813 (Sort_output_sections::operator()): Adjust accordingly.
3814
ed16fd1b
ILT
38152011-03-11 Jeffrey Yasskin <jyasskin@google.com>
3816
3817 PR gold/12572
3818 * testsuite/odr_violation2.cc: Add comment to make all error line
3819 numbers double digits.
3820 * testsuite/debug_msg.sh: Adjust expected errors.
3821
71ff8986
ILT
38222011-03-09 Jeffrey Yasskin <jyasskin@google.com>
3823
3824 * dwarf_reader.cc (Sized_dwarf_line_info): Include all lines,
3825 but mark earlier ones as non-canonical
3826 (offset_to_iterator): Update search target and example
3827 (do_addr2line): Return extra lines in a vector*
3828 (format_file_lineno): Extract from do_addr2line
3829 (one_addr2line): Add vector* out-param
3830 * dwarf_reader.h (Offset_to_lineno_entry): New field recording
3831 when a lineno entry appeared last for its instruction
3832 (Dwarf_line_info): Add vector* out-param
3833 * object.cc (Relocate_info): Pass NULL for the vector* out-param
3834 * symtab.cc (Odr_violation_compare): Include the lineno in the
3835 comparison again.
3836 (linenos_from_loc): New. Combine the canonical line for an
3837 address with its other lines.
3838 (True_if_intersect): New. Helper functor to make
3839 std::set_intersection a query.
3840 (detect_odr_violations): Compare sets of lines instead of just
3841 one line for each function. This became less deterministic, but
3842 has fewer false positives.
3843 * symtab.h: Declarations.
3844 * testsuite/Makefile.am (odr_violation2.o): Compile with -O2 to
3845 mix an optimized and non-optimized object in the same binary
3846 (odr_violation2.so): Same.
3847 * testsuite/Makefile.in: Regenerate from Makefile.am.
3848 * testsuite/debug_msg.cc (main): Make OdrDerived classes.
3849 * testsuite/debug_msg.sh: Update line numbers and add
3850 assertions.
3851 * testsuite/odr_violation1.cc: Use OdrDerived, in a
3852 non-optimized context.
3853 * testsuite/odr_violation2.cc: Make sure Ordering::operator()
3854 isn't inlined, and use OdrDerived in an optimized context.
3855 * testsuite/odr_header1.h: Defines OdrDerived, where
3856 optimization will change the
3857 first-instruction-in-the-destructor's file and line number.
3858 * testsuite/odr_header2.h: Defines OdrBase.
3859
a19fefdc
ILT
38602011-03-09 Ian Lance Taylor <iant@google.com>
3861
3862 * fileread.cc (File_read::clear_views): Don't delete the whole
3863 file view.
3864
ecb351e9
ILT
38652011-03-08 Ian Lance Taylor <iant@google.com>
3866
3867 PR gold/12525
3868 * fileread.cc: #include <climits>.
3869 (GOLD_IOV_MAX): Define.
3870 (File_read::read_multiple): Limit number of entries by iov_max.
3871 * fileread.h (class File_read): Always set max_readv_entries to
3872 128.
3873
b821d13c
ILT
38742011-03-07 Ian Lance Taylor <iant@google.com>
3875
3876 PR gold/12525
3877 * options.h (class General_options): Add -dy and -dn.
3878
89243142
CC
38792011-03-02 Cary Coutant <ccoutant@google.com>
3880
3881 * testsuite/script_test_9.t: Add TLS segment.
3882
d0773f31
ILT
38832011-03-02 Simon Baldwin <simonb@google.com>
3884
3885 * configure.ac: Add check for gnu_indirect_function support in
3886 the toolchain building binutils.
3887 * configure: Rebuild.
3888
9370ce59 38892011-02-18 Rafael Ávila de Espíndola <respindola@mozilla.com>
badc8139
RÁE
3890
3891 * symtab.cc (Symbol::should_add_dynsym_entry) Return false for
3892 plugin only symbols.
3893 (Symbol_table::sized_finalize_symbol) Mark symbol only present
3894 in plugin files as not needed in the symbol table.
3895
4cf7a849
ST
38962011-02-11 Sriraman Tallam <tmsriram@google.com>
3897
3898 * output.cc (Output_section::add_input_section): Delay fill
3899 generation for section ordering.
3900
b578bd7d
ILT
39012011-02-09 Ian Lance Taylor <iant@google.com>
3902
3903 PR gold/12316
3904 * object.h (class Sized_relobj): Remove clear_local_symbols.
3905 * reloc.cc (Sized_relobj::do_relocate): Don't call
3906 clear_local_symbols.
3907
9370ce59 39082011-02-08 Rafael Ávila de Espíndola <respindola@mozilla.com>
84ced98a
RÁE
3909
3910 * plugin.cc (is_visible_from_outside): Return true for symbols
3911 in the -u option.
3912
55382fb7
ILT
39132011-02-04 Jeffrey Yasskin <jyasskin@google.com>
3914
3915 * symtab.cc (Odr_violation_compare::operator()): Sort by just the
3916 filename.
3917
4e271fff
ST
39182011-02-02 Sriraman Tallam <tmsriram@google.com>
3919
3920 * icf.h (is_section_foldable_candidate): Change type of parameter
2e702c99 3921 to std::string.
4e271fff 3922 * icf.cc (Icf::find_identical_sections): Change type of local variable
2e702c99 3923 section_name to be std::string.
4e271fff
ST
3924 (is_function_ctor_or_dtor): Change type of parameter to std::string.
3925
d433c3ac
ILT
39262011-01-25 Ian Lance Taylor <iant@google.com>
3927
3928 * script.cc (script_add_extern): Rewrite to use
3929 add_symbol_reference.
3930
880473a6
DK
39312011-01-25 Doug Kwan <dougkwan@google.com>
3932
d433c3ac 3933 * icf.cc (get_section_contents): Always lock section's object.
880473a6 3934
f30f86fa
ILT
39352011-01-24 Ian Lance Taylor <iant@google.com>
3936
3937 * options.h (class General_options): Accept
3938 --no-detect-odr-violations.
3939
8e51a0b9
ILT
39402011-01-24 Ian Lance Taylor <iant@google.com>
3941
3942 * version.cc (version_string): Bump to 1.11.
3943
0f3b89d8
ILT
39442011-01-24 Ian Lance Taylor <iant@google.com>
3945
3946 * plugin.cc (class Plugin_rescan): Define new class.
3947 (Plugin_manager::claim_file): Set any_claimed_.
3948 (Plugin_manager::save_archive): New function.
3949 (Plugin_manager::save_input_group): New function.
3950 (Plugin_manager::all_symbols_read): Create Plugin_rescan task if
3951 necessary.
3952 (Plugin_manager::new_undefined_symbol): New function.
3953 (Plugin_manager::rescan): New function.
3954 (Plugin_manager::rescannable_defines): New function.
3955 (Plugin_manager::add_input_file): Set any_added_.
3956 * plugin.h (class Plugin_manager): define new fields rescannable_,
3957 undefined_symbols_, any_claimed_, and any_added_. Declare
3958 Plugin_rescan as friend. Declare new functions.
3959 (Plugin_manager::Rescannable): Define type.
3960 (Plugin_manager::Rescannable_list): Define type.
3961 (Plugin_manager::Undefined_symbol_list): Define type.
3962 (Plugin_manager::Plugin_manager): Initialize new fields.
3963 * archive.cc (Archive::defines_symbol): New function.
3964 (Add_archive_symbols::run): Pass archive to plugins if any.
3965 * archive.h (class Archive): Declare defines_symbol.
3966 * readsyms.cc (Input_group::~Input_group): New function.
3967 (Finish_group::run): Pass input_group to plugins if any.
3968 * readsyms.h (class Input_group): Declare destructor.
3969 * symtab.cc (add_from_object): Pass undefined symbol to plugins if
3970 any.
3971
3bb951e5
ILT
39722011-01-10 Ian Lance Taylor <iant@google.com>
3973
3974 * layout.cc (Layout::layout_eh_frame): Mark a writable .eh_frame
3975 section as relro.
3976 (Layout::set_segment_offsets): Reset increase_relro before calling
3977 set_section_addresses a second time.
3978
0aa45fac
CC
39792011-01-04 Cary Coutant <ccoutant@google.com>
3980
3981 * script-sections.cc (Sort_output_sections::operator()): Sort TLS
3982 sections before NOBITS sections.
3983
0db46eb4
L
39842011-01-01 H.J. Lu <hongjiu.lu@intel.com>
3985
3986 * version.cc (print_version): Update copyright to 2011.
3987
829c9745
CC
39882010-12-23 Cary Coutant <ccoutant@google.com>
3989
3990 * output.h (Output_data_reloc::add_output_section): Pass OD instead
3991 of OS to this->add. Add OD parameter to second form of the function.
3992
7500420b
ILT
39932010-12-20 Ian Lance Taylor <iant@google.com>
3994
3995 * dwarf_reader.cc (Sized_dwarf_line_info::read_lines): Only keep
3996 second of two consecutive entries with same offset.
3997
f8e9a930
RW
39982010-12-16 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
3999
4000 * testsuite/Makefile.am (ifuncmain2static_LDADD)
4001 (ifuncmain2_LDADD, ifuncmain4static_LDADD, ifuncmain4_LDADD)
4002 (ifuncmain7static_LDADD, ifuncmain7_LDADD): New empty variables,
4003 to avoid unneeded links against $(LDADD).
4004 * testsuite/Makefile.in: Regenerate.
4005
2fbb4320
ILT
40062010-12-15 Ian Lance Taylor <iant@google.com>
4007
4008 PR gold/12324
4009 * x86_64.cc (Target_x86_64::Scan::check_non_pic): Give an error
4010 for R_X86_64_32 and R_X86_64_PC32.
4011 * testsuite/Makefile.am (ver_matching_def.so): Depend on and use
4012 ver_matching_def_pic.o.
4013 (ver_matching_def_pic.o): New target.
4014
fedb228d
RW
40152010-12-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
4016
4017 * fileread.cc (file_counts_lock, file_counts_initialize_lock)
4018 (total_mapped_bytes, current_mapped_bytes, maximum_mapped_bytes):
4019 Move definition before File_read::View member definitions.
4020 (File_read::View::~View): Initialize and hold lock before
4021 updating current_mapped_bytes.
4022
9b547ce6
RW
40232010-12-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
4024
4025 * dwarf_reader.cc: Remove outdated comment.
4026 * gold-threads.cc: Fix typo in error message.
4027 * archive.cc: Fix typos in comments.
4028 * archive.h: Likewise.
4029 * arm-reloc-property.cc: Likewise.
4030 * arm-reloc-property.h: Likewise.
4031 * arm-reloc.def: Likewise.
4032 * arm.cc: Likewise.
4033 * attributes.h: Likewise.
4034 * cref.cc: Likewise.
4035 * ehframe.cc: Likewise.
4036 * fileread.h: Likewise.
4037 * gold.h: Likewise.
4038 * i386.cc: Likewise.
4039 * icf.cc: Likewise.
4040 * incremental.h: Likewise.
4041 * int_encoding.cc: Likewise.
4042 * layout.h: Likewise.
4043 * main.cc: Likewise.
4044 * merge.h: Likewise.
4045 * object.cc: Likewise.
4046 * object.h: Likewise.
4047 * options.cc: Likewise.
4048 * readsyms.cc: Likewise.
4049 * reduced_debug_output.cc: Likewise.
4050 * reloc.cc: Likewise.
4051 * script-sections.cc: Likewise.
4052 * sparc.cc: Likewise.
4053 * symtab.h: Likewise.
4054 * target-reloc.h: Likewise.
4055 * target.cc: Likewise.
4056 * target.h: Likewise.
4057 * timer.cc: Likewise.
4058 * timer.h: Likewise.
4059 * x86_64.cc: Likewise.
4060
83e17bd5
CC
40612010-12-09 Cary Coutant <ccoutant@google.com>
4062
4063 * layout.cc (Layout::layout_gnu_stack): Add warnings for executable
4064 stack.
4065 * layout.h (Layout::layout_gnu_stack): Add pointer to Object
4066 parameter; change all callers.
4067 * object.cc (Sized_relobj::do_layout): Adjust call to layout_gnu_stack.
4068 * options.h (warn_execstack): New option.
4069
017257f8
DK
40702010-12-07 Doug Kwan <dougkwan@google.com>
4071
4072 * arm.cc (Target_arm::Scan::get_reference_flags): Treat R_ARM_PREL31
4073 like function call relocations.
4074
c20cbc06
ILT
40752010-12-07 Ian Lance Taylor <iant@google.com>
4076
4077 * archive.cc (Archive::get_elf_object_for_member): Permit
4078 punconfigured to be NULL.
4079 (Archive::read_symbols): Pass NULL to get_elf_object_for_member.
4080 (Archive::include_member): Pass NULL to get_elf_object_for_member
4081 if we searched for the archive and this is the first included
4082 object.
4083
4dbfafcc
ILT
40842010-12-01 Ian Lance Taylor <iant@google.com>
4085
4086 * dwarf_reader.h (class Sized_dwarf_line_info): Add
4087 track_relocs_type_ field.
4088 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
4089 Set track_relocs_type_.
4090 (Sized_dwarf_line_info::process_one_opcode): Ignore the section
4091 contents when using RELA relocs.
4092 (Sized_dwarf_line_info::read_relocs): Add the reloc addend to
4093 reloc_map_.
4094 * reloc.cc (Track_relocs::next_addend): New function.
4095 * reloc.h (class Track_relocs): Declare next_addend.
4096
e5e19edd
ILT
40972010-12-01 Ian Lance Taylor <iant@google.com>
4098
4099 * testsuite/icf_virtual_function_folding_test.cc (class Bar): Add
4100 virtual destructor.
4101
9a5ce24c
ILT
41022010-12-01 Ian Lance Taylor <iant@google.com>
4103
4104 * README: Update compilers known to work and fail.
4105
c7791212
NC
41062010-11-23 Matthias Klose <doko@ubuntu.com>
4107
4108 * configure.in: For --enable-gold, handle value `default' instead of
4109 `both*'. Always install ld as ld.bfd, install as ld if gold is
4110 not the default.
4111 * configure: Regenerate.
4112
0ad220c9
DK
41132010-11-18 Doug Kwan <dougkwan@google.com>
4114
4115 * expression.cc (BINARY_EXPRESSION): Initialize left_alignment
4116 and right_alignment to be zero. Store result alignment only if it is
4117 greater than existing alignment.
4118
ab8056e0
CC
41192010-11-16 Cary Coutant <ccoutant@google.com>
4120
4121 PR gold/12220
4122 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
4123 Check for ".zdebug_line".
4124
fd064a5b
CC
41252010-11-16 Doug Kwan <dougkwan@google.com>
4126 Cary Coutant <ccoutant@google.com>
4127
4128 * output.h (Output_segment::set_section_addresses): Pass increase_relro
4129 by reference; adjust all callers.
4130 * output.cc (Output_segment::set_section_addresses): Adjust references
4131 to increase_relro. Add padding to *increase_relro when ORDER_RELRO_LAST
4132 list is empty.
4133 (Output_segment::set_offset): Assert if PT_GNU_RELRO segment does not
4134 end at page boundary.
4135
6fc6ea19
CC
41362010-11-16 Cary Coutant <ccoutant@google.com>
4137
4138 PR gold/12220
4139 * layout.cc (Layout::choose_output_section): Transform names of
4140 compressed sections even when using a script with a SECTIONS clause.
4141 (Layout::output_section_name): Remove code to transform
4142 compressed debug section names.
4143 * output.cc (Output_section::add_input_section): Use uncompressed
4144 section size when tracking input sections.
4145
95a2c8d6
RS
41462010-11-11 Richard Sandiford <richard.sandiford@linaro.org>
4147
4148 * symtab.h (Symbol::NON_PIC_REF): Remove.
4149 (Symbol::RELATIVE_REF, Symbol::TLS_REF): New Reference_flags.
4150 (Symbol::FUNCTION_CALL): Renumber. Reword comment.
4151 (Symbol::needs_dynamic_reloc): Don't check NON_PIC_REF.
4152 (Symbol::use_plt_offset): Take a flags argument and pass it
4153 directly to needs_dynamic_reloc. Restrict check for undefined
4154 weak symbols to function calls.
4155 * arm.cc (Target_arm::Scan::get_reference_flags): New function.
4156 (Target_arm::Scan::global): Use it.
4157 (Target_arm::Scan::scan_reloc_for_stub): Likewise.
4158 (Target_arm::Relocate::relocate): Likewise.
4159 (Target_arm::Relocate::should_apply_static_reloc): Replace flags
4160 parameter with an r_type parameter. Use get_reference_flags
4161 to get the flags.
4162 (Target_arm::Relocate::relocate): Update accordingly.
4163 * i386.cc (Target_i386::Scan::get_reference_flags): New function.
4164 (Target_i386::Scan::reloc_needs_plt_for_ifunc): Use it.
4165 (Target_i386::Scan::global): Likewise.
4166 (Target_i386::Relocate::relocate): Likewise.
4167 (Target_i386::Relocate::should_apply_static_reloc): Replace flags
4168 parameter with an r_type parameter. Use get_reference_flags
4169 to get the flags.
4170 (Target_i386::Relocate::relocate): Update accordingly.
4171 * powerpc.cc (Target_powerpc::Scan::get_reference_flags): New function.
4172 (Target_powerpc::Scan::global): Use it.
4173 (Target_powerpc::Scan::scan_reloc_for_stub): Likewise.
4174 (Target_powerpc::Relocate::relocate): Likewise.
4175 * sparc.cc (Target_sparc::Scan::get_reference_flags): New function.
4176 (Target_sparc::Scan::global): Use it.
4177 (Target_sparc::Scan::scan_reloc_for_stub): Likewise.
4178 (Target_sparc::Relocate::relocate): Likewise.
4179 * x86_64.cc (Target_x86_64::Scan::get_reference_flags): New function.
4180 (Target_x86_64::Scan::reloc_needs_plt_for_ifunc): Use it.
4181 (Target_x86_64::Scan::global): Likewise.
4182 (Target_x86_64::Relocate::relocate): Likewise.
4183
f625ae50
DK
41842010-11-08 Doug Kwan <dougkwan@google.com>
4185 Cary Coutant <ccoutant@google.com>
4186
4187 * arm.cc (Arm_exidx_merge_section::build_contents): New method.
4188 (Arm_exidx_merge_section::section_contents_): New data member.
4189 (Arm_input_section::Arm_input_section): Initialize original_contents_.
4190 (Arm_input_section::~Arm_input_section): De-allocate memory.
58797674 4191 (Arm_input_section::original_contents_): New data member.
f625ae50
DK
4192 (Arm_exidx_fixup::process_exidx_section): Pass EXIDX section contents
4193 in parameters instead of calling Object::section_contents without
4194 locking.
4195 (Arm_output_section::group_section): New parameter TASK. Pass it
4196 to callees that need locking objects.
4197 (Arm_output_section::fix_exidx_coverage): New parameter TASK. Use it
4198 to lock EXIDX input sections. Fix a formatting issue. Call
4199 Arm_exidx_merged_section::build_contents to create merged section
4200 contents.
4201 (Arm_output_section::create_stub_group): New parameter TASK. Use it
4202 to lock object of stub table owner.
4203 (Arm_exidx_input_section::Arm_exidx_input_section): Add new parameter
4204 TEXT_SIZE to initialize data member TEXT_SIZE_.
4205 (Arm_exidx_input_section::addralign): Fix typo in comment.
4206 (Arm_exidx_input_section::text_size): New method.
4207 (Target_arm::do_relax): New parameter TASK. Pass it to callees
4208 that require locking objects. Lock objects before scanning for stubs
4209 and updating local symbols.
4210 (Arm_input_section<big_endian>::init): Copy contents of original
4211 input section.
2e702c99 4212 (Arm_input_section<big_endian>::do_write): Use saved contents of
f625ae50
DK
4213 original input section instead of calling Object::section_contents
4214 without locking.
4215 (Arm_exidx_cantunwind::do_fixed_endian_write): Find out text section
4216 size without calling Object::section_size().
4217 (Arm_exidx_merged_section::Arm_exidx_merged_section): Add sanity check
4218 for size. Allocate a buffer for merged EXIDX entries.
4219 (Arm_exidx_merged_section::build_contents): New method.
2e702c99 4220 (Arm_exidx_merged_section::do_write): Move merge section contents
f625ae50
DK
4221 building code to Arm_exidx_merged_section::build_contetns. Write
4222 out contetns in buffer instead of building it on the fly.
4223 (Arm_relobj::make_exidx_input_section): Also pass text section size
4224 to Arm_exidx_input_section constructor.
4225 (Arm_relobj::do_read_symbols): Fix memory leak. Fix a formatting issue.
4226 (Arm_dynobj::do_read_symbols): Fix memory leak.
4227 * layout.cc (Layout::finalize): Pass TASK to Target::relax().
4228 * target.h: (class Task): Add forward declaration.
4229 (Target::relax): Add new parameter TASK and pass it to
4230 Target::do_relax().
4231 (Target::do_relax):: New parameter TASK. Fix a formatting issue.
4232
5f9bcf58
CC
42332010-11-05 Cary Coutant <ccoutant@google.com>
4234
4235 PR gold/10708
4236 * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Hold a lock on the
4237 object when reading from the file.
4238 * gold.cc (queue_middle_tasks): Hold a lock on the object when doing
4239 second layout pass.
4240 * icf.cc (preprocess_for_unique_sections): Hold a lock on the object
4241 when reading section contents.
4242 (get_section_contents): Likewise.
4243 (icf::find_identical_sections): Likewise.
4244 * mapfile.cc (Mapfile::print_discarded_sections): Hold a lock on the
4245 object when reading from the file.
4246 * plugin.cc (Plugin_manager::layout_deferred_objects): Hold a lock on
4247 the object when doing deferred section layout.
4248
e597fa08
NC
42492010-11-03 Nick Clifton <nickc@redhat.com>
4250
4251 PR gold/12001
4252 * script.h (class Symbol_assignment: name): New member. Returns
4253 the name of the symbol.
4254 * scrfipt.cc (Script_options::is_pending_assignment): New member.
4255 Returns true if the given symbol name is on the list of
4256 assignments wating to be processed.
4257 * archive.cc (should_incldue_member): If the symbol is undefined,
4258 check to see if it is on the list of symbols pending assignment.
4259
3f9a3278
ILT
42602010-11-03 Ryan Mansfield <rmansfield@qnx.com>
4261
4262 * script-sections.cc (Script_sections::find_memory_region): Check
4263 for a NULL output section pointer.
4264
d06fb4d1
DK
42652010-10-29 Doug Kwan <dougkwan@google.com>
4266
4267 * arm.cc (Arm_outout_section::fix_exidx_coverage): Adjust call to
4268 Output_section::add_relaxed_input_section.
4269 * output.cc (Output_section::add_relaxed_input_section): Add new
4270 arguments LAYOUT and NAME. Set section order index.
4271 (Output_section::convert_input_sections_in_list_to_relaxed_sections):
4272 Copy section order index.
4273 * output.h (Output_section::add_relaxed_input_section): Add new
4274 arguments LAYOUT and NAME.
4275
90e24de5
ILT
42762010-10-29 Viktor Kutuzov <vkutuzov@accesssoftek.com>
4277
4278 * testsuite/Makefile.am: Move gcctestdir/ld rule to
2e702c99 4279 NATIVE_OR_CROSS_LINKER.
90e24de5
ILT
4280 * testsuite/Makefile.in: Regenerate.
4281
c9484ea5
DK
42822010-10-20 Doug Kwan <dougkwan@google.com>
4283
4284 * arm.cc (Arm_relobj::do_read_symbols): Warn about ARM EXIDX sections
4285 without SHF_LINK_ORDER flags.
4286 * layout.cc (Layout::choose_output_section): Do not filter
4287 SHF_LINK_ORDER flag in a relocatable link.
4288
5bc2f5be
CC
42892010-10-17 Cary Coutant <ccoutant@google.com>
4290
4291 * output.h (Output_segment::set_section_addresses): Change function
4292 signature. Update all callers.
4293 * output.cc (Output_segment::is_first_section_relro): Ignore TLS
4294 sections.
4295 (Output_segment::set_section_addresses): Align after last TLS
4296 section. Add padding before last relro section instead of after.
4297
0c91cf04
DK
42982010-10-17 Doug Kwan <dougkwan@google.com>
4299
4300 * gold/arm.cc (Target_arm::got_section): Use correct order and set
4301 GOT output section to be writable.
4302
8c21d9d3
CC
43032010-10-14 Cary Coutant <ccoutant@google.com>
4304
4305 * debug.h (DEBUG_INCREMENTAL): New flag.
2e702c99
RM
4306 (debug_string_to_enum): Add DEBUG_INCREMENTAL).
4307 * gold.cc (queue_initial_tasks): Check parameters for incremental link
4308 mode.
4309 * incremental.cc (report_command_line): Ignore all forms of
4310 --incremental.
4311 * layout.cc (Layout::Layout): Check parameters for incremental link
4312 mode.
4313 * options.cc (General_options::parse_incremental): New function.
4314 (General_options::parse_no_incremental): New function.
4315 (General_options::parse_incremental_full): New function.
4316 (General_options::parse_incremental_update): New function.
4317 (General_options::incremental_mode_): New data member.
4318 (General_options::finalize): Check incremental_mode_.
4319 * options.h (General_options): Update help text for --incremental.
4320 Add --no-incremental, --incremental-full, --incremental-update.
4321 (General_options::Incremental_mode): New enum type.
4322 (General_options::incremental_mode): New function.
4323 (General_options::incremental_mode_): New data member.
4324 * parameters.cc (Parameters::incremental_mode_): New data member.
4325 (Parameters::set_options): Set incremental_mode_.
4326 (Parameters::set_incremental_full): New function.
4327 (Parameters::incremental): New function.
4328 (Parameters::incremental_update): New function.
4329 (set_parameters_incremental_full): New function.
4330 * parameters.h (Parameters::set_incremental_full): New function.
4331 (Parameters::incremental): New function.
4332 (Parameters::incremental_update): New function.
4333 (Parameters::incremental_mode_): New data member.
4334 (set_parameters_incremental_full): New function.
4335 * plugin.cc (Plugin_manager::add_input_file): Check parameters for
4336 incremental link mode.
4337 * reloc.cc (Sized_relobj::do_read_relocs): Likewise.
4338 (Sized_relobj::do_relocate_sections): Likewise.
4339 * testsuite/Makefile.am (incremental_test): Use --incremental-full
4340 option.
4341 * testsuite/Makefile.in: Regenerate.
4342 * testsuite/incremental_test.sh: Filter all forms of --incremental.
8c21d9d3 4343
bb32aa18 43442010-10-12 Viktor Kutuzov <vkutuzov@accesssoftek.com>
eb373049
ILT
4345
4346 * script-sections.h (class Script_sections): Make
4347 Sections_elements typedef public.
4348 * script-sections.cc (class Sort_output_sections): Add elements_
4349 field. Add constructor which sets it; change all callers.
4350 (Sort_output_sections::is_before): New function.
4351 (Sort_output_sections::operator()): Call is_before.
4352 * configure.ac (NATIVE_OR_CROSS_LINKER): New automake
4353 conditional.
4354 * testsuite/script_test_10.sh: New test. Test script section
4355 order.
4356 * testsuite/script_test_10.t: Likewise.
4357 * testsuite/script_test_10.s: Likewise.
4358 * testsuite/Makefile.am: Wrap the cross linker tests and the
4359 common tests into NATIVE_OR_CROSS_LINKER.
4360 (check_SCRIPTS): Add script_test_10.sh.
4361 (check_DATA): Add script_test_10.stdout.
4362 (script_test_10.o, script_test_10): New targets.
4363 (script_test_10.stdout): New target.
4364 * configure, testsuite/Makefile.in: Regenerate.
4365
3cef7179
ILT
43662010-10-12 Viktor Kutuzov <vkutuzov@accesssoftek.com>
4367
4368 * arm.cc (Target_arm::Scan::local): Report the unsupported reloc
4369 error for the deprecated relocations.
4370 (Target_arm::Scan::global): Likewise.
4371 (Target_arm::Relocate::relocate): Likewise.
4372
7411e9a8
RS
43732010-10-12 Richard Sandiford <richard.sandiford@linaro.org>
4374
4375 * fileread.cc (Input_file::find_file): Initialize *found_name
4376 and *namep when using the fallback search for case 4.
4377
6a9da32a
CC
43782010-10-11 Cary Coutant <ccoutant@google.com>
4379
4380 * options.h (class General_options): Redefine -z lazy as an alias for
4381 the negation of -z now.
4382
ac897c20
ILT
43832010-10-11 Ian Lance Taylor <iant@google.com>
4384
4385 * resolve.cc (symbol_to_bits): Report the value of the unsupported
4386 binding.
4387
ea5cae92
NC
43882010-10-06 Nick Clifton <nickc@redhat.com>
4389
4390 * script-sections.cc(class Memory_region): Remove
4391 current_lma_offset_ field. Rename current_vma_offset_ to
4392 current_offset_. Add last_section_ field.
4393 (Memory_region::get_current_vma_address): Rename to
4394 get_current_address.
4395 (Memory_region::get_current_lma_address): Delete.
4396 (Memory_region::increment_vma_offset): Rename to
4397 increment_offset.
4398 (Memory_region::increment_lma_offset): Delete.
4399 (Memory_region::attributes_compatible): New method. Returns
4400 true if the provided section is compatible with the region.
4401 (Memory_region::get_last_section): New method. Returns the last
4402 section to use the region.
4403 (Memory_region::set_last_section): New method. Stores the last
4404 section to use the region.
4405 (Script_sections::block_in_region): New method. Returns true if
4406 a block of memory is contained within a region.
4407 (Script_sections::find_memory_region): New method. Locates a
4408 memory region to be used to set a VMA or LMA address.
4409 (Output_section_definition::set_section_addresses): Add code to
4410 check for addresses set by memory regions.
4411 (Output_segment::set_section_addresses): Remove memory region
4412 walking code.
4413 (Script_sections::create_segment): Add a warning if a header
4414 segment is created outside of any region.
4415 * script-sections.h (class Script_sections): Add prototypes for
4416 find_memory_region and block_in_region methods.
4417 * testsuite/memory_test.s: Use .long instead of .word.
4418 * testsuite/memory_test.t: Add some more output sections.
4419 * testsuite/memory_test.sh: Update expected output.
4420
a9bfd952
DK
44212010-10-02 Doug Kwan <dougkwan@google.com>
4422
4423 * symtab.cc (Symbol_table::Symbol_table_hash::operator()): Move
4424 defintion to symtab.h
4425 * symtab.h (Symbol_table::Symbol_table_hash::operator()): Change
4426 declaration to defintion.
4427
bacff3ab
NC
44282010-10-01 Nick Clifton <nickc@redhat.com>
4429
4430 * expression.cc (eval): Replace dummy argument with NULL.
4431 (eval_maybe_dot): Check for a NULL result section pointer.
4432 (Symbol_expression::value): Likewise.
4433 (Dot_expression::value): Likewise.
4434 (BINARY_EXPRESSION): Likewise.
4435 (Max_expression::value): Likewise.
4436 (Min_expression::value): Likewise.
4437 (Absolute_expression::value): Likewise.
4438 (Addr_expression::value_from_output_section): Likewise.
4439 (Loaddddr_expression::value_from_output_section): Likewise.
4440 (Segment_start_expression::value): Likewise.
4441 * script-sections.cc
4442 (Sections_elememt_dot_assignment::finalize_symbols): Replace dummy
4443 argument with NULL.
4444 (Sections_elememt_dot_assignment::set_section_addresses):
4445 Likewise.
4446 (Output_data_expression::do_write_to_buffer): Likewise.
4447 (Output_section_definition::finalize_symbols): Likewise.
4448 (Output_section_definition::set_section_addresses): Likewise.
4449
f81bc8b5
DK
44502010-09-30 Doug Kwan <dougkwan@google.com>
4451
4452 * gold/testsuite/arm_branch_out_of_range.sh: Fix broken tests.
4453
c95e9f27
ST
44542010-09-28 Sriraman Tallam <tmsriram@google.com>
4455
4456 * target.h (Target::can_icf_inline_merge_sections): New virtual
bacff3ab 4457 function.
c95e9f27
ST
4458 * x86_64.cc (Target__x86_64::can_icf_inline_merge_sections): New
4459 virtual function.
4460 * i386.cc (Target_i386::can_icf_inline_merge_sections): New
4461 virtual function.
4462 * icf.cc (get_section_contents): Inline merge sections only when
4463 target allows it.
4464
3cac54d2
RW
44652010-09-27 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
4466
4467 * configure: Regenerate.
4468
2904037a
ILT
44692010-09-17 Ian Lance Taylor <iant@google.com>
4470
4471 * testsuite/memory_test.sh: Adjust for change of 2010-09-10.
d4d91489
ILT
4472 * testsuite/Makefile.am (memory_test.o): New target.
4473 (memory_test): Depend on memory_test.o, gcctestdir/ld, and
4474 memory_test.t.
4475 * testsuite/Makefile.in: Rebuild.
2904037a 4476
bca7fb63
DK
44772010-09-17 Doug Kwan <dougkwan@google.com>
4478
4479 * arm.cc (Target_arm::Relocate::relocate): Ignore symbol type and
4480 defintion if relocation uses GOT entries of the symbol.
4481 * testsuite/icf_safe_test.sh: Fix test.
4482 * testsuite/icf_safe_so_test.sh: Fix test.
4483
4ef28648
CC
44842010-09-16 Cary Coutant <ccoutant@google.com>
4485
4486 * script_sections.cc (class Memory_region): Remove "NULL" from
4487 vector initializations.
4488
793990de
CC
44892010-09-15 Cary Coutant <ccoutant@google.com>
4490
4491 * incremental.cc (Output_section_incremental_inputs::write_info_blocks):
4492 Resolve forwarding symbols.
4493
81e015e2
DK
44942010-09-15 Doug Kwan <dougkwan@google.com>
4495
4496 * gold/testsuite/script_test_3.t: Add ARM special sections.
4497 * gold/testsuite/script_test_4.t: Same.
4498 * gold/testsuite/script_test_5.t: Same.
4499 * gold/testsuite/script_test_6.t: Same.
4500 * gold/testsuite/script_test_7.t: Same.
4501 * gold/testsuite/script_test_7.t: Same.
4502 * gold/testsuite/thumb_blx_out_of_range.s: Fix instruction alignment.
4503
36171d64
CC
45042010-09-14 Cary Coutant <ccoutant@google.com>
4505
4506 * x86_64.cc (Target_x86_64::saw_tls_block_reloc_): Remove member.
4507 (Target_x86_64::Relocate::relocate_tls): Replace check for
4508 saw_tls_block_reloc_ with test for executable section.
4509
d89051bd
CC
45102010-09-12 Cary Coutant <ccoutant@google.com>
4511
4512 * symtab.h (Symbol::needs_dynamic_reloc): Non-PIC calls from
4513 position-independent executables to shared libraries need dynamic
4514 relocations.
4515 (Symbol::may_need_copy_reloc): Do not generate COPY relocs in
4516 position-independent executables.
4517 * testsuite/Makefile.am (two_file_mixed_pie_test): New test.
4518 * testsuite/Makefile.in: Regenerate.
4519
fca41f0f
NC
45202010-09-10 Nick Clifton <nickc@redhat.com>
4521
4522 PR gold/11997
4523 * testsuite/memory_test.t: Discard any sections that are not
4524 needed.
4525
6695e4b3
L
45262010-09-09 H.J. Lu <hongjiu.lu@intel.com>
4527
4528 PR gold/11996
4529 * object.cc (Sized_relobj::do_finalize_local_symbols): Remove
4530 "This::" to work around a bug in gcc 4.2.
4531
4532 * testsuite/ifuncmain7.c (foo_ifunc): Add __attribute__ ((used)).
4533
0f72bf6f
RÁE
45342010-09-09 Rafael Espindola <espindola@google.com>
4535
4536 * layout.cc (Layout::attach_allocated_section_to_segment): Don't put
4537 sections with different PF_X flags in the same segment.
4538 (Layout::find_first_load_seg): Search all segments to find the first
4539 one.
4540 * options.h (rosegment): New.
4541
45422010-09-08 Rafael Espindola <espindola@google.com>
a6577478 4543
05a79166 4544 * layout.cc (Layout::set_segment_offsets): Always advance to a new page.
a6577478 4545
aa98ff75
DK
45462010-09-08 Doug Kwan <dougkwan@google.com>
4547
4548 * arm.cc (Arm_exidx_cantunwind::do_print_to_mapfile): New method.
4549 (Arm_relobj::do_relocate_sections): Add new parameter for output
4550 file to match the parent.
4551 (Target_arm::scan_reloc_section_for_stubs): Use would-be final values
4552 of local symbols instead of input values. Update code to track
4553 changes in gold::relocate_section.
4554 * object.cc (Sized_relobj::compute_final_local_value): New methods.
4555 (Sized_relobj::compute_final_local_value_internal): New methods.
4556 (Sized_relobj::do_finalize_local_symbols): Move code from loop
4557 body into private version of Sized_relobj::compute_final_local_value.
4558 Call the inline method.
4559 * object.h (Symbol_value::Symbol_value): Define destructor. Free
4560 merged symbol value if there is one.
4561 (Symbol_value::has_output_value): New method defintiion.
4562 (Sized_relobj::Compute_final_local_value_status): New enum type.
4563 (Sized_relobj::compute_final_local_value): New methods.
4564 (Sized_relobj::compute_final_local_value_internal): New methods.
4565 * Makefile.am (check_SCRIPTS): Add arm_branch_out_of_range.sh
4566 and arm_cortex_a8.sh.
4567 (thumb_bl_out_of_range_local, arm_cortex_a8_b_cond, arm_cortex_a8_bl,
4568 arm_cortex_a8_blx, arm_cortex_a8_local, arm_corte_a8_local_reloc):
4569 New tests.
4570 * Makefile.in: Regenerate.
4571 * testsuite/arm_bl_out_of_range.s: Update test.
4572 * testsuite/thumb_bl_out_of_range.s: Ditto.
4573 * testsuite/thumb_blx_out_of_range.s: Ditto.
4574 * testsuite/arm_branch_out_of_range.sh: New file.
4575 * testsuite/arm_cortex_a8.sh: Ditto.
4576 * testsuite/arm_cortex_a8_b.s: Ditto.
4577 * testsuite/arm_cortex_a8_b_cond.s: Ditto.
4578 * testsuite/arm_cortex_a8_b_local.s: Ditto.
4579 * testsuite/arm_cortex_a8_bl.s: Ditto.
4580 * testsuite/arm_cortex_a8_blx.s: Ditto.
4581 * testsuite/arm_cortex_a8_local.s: Ditto.
4582 * testsuite/arm_cortex_a8_local_reloc.s: Ditto.
4583 * testsuite/thumb_bl_out_of_range_local.s: Ditto.
4584
05a79166
L
45852010-09-08 Rafael Espindola <espindola@google.com>
4586
4587 * Makefile.am (memory_test.stdout): Run readelf with -W.
4588 * Makefile.in: Regenerate.
4589 * testsuite/memory_test.sh: Make the regexps accept both 32 and
4590 64 bit output.
4591
33dbc701
RÁE
45922010-09-08 Rafael Espindola <espindola@google.com>
4593
4594 * script-sections.cc (Script_sections::add_memory_region): Convert
4595 field precision to int.
4596 * script.cc (script_set_section_region, script_set_section_region):
4597 Convert field precision to int.
4598
731ca54a
RÁE
45992010-09-08 Rafael Espindola <espindola@google.com>
4600
4601 * arm.cc (do_finalize_sections): Create the __exidx_start and
4602 __exdix_end symbols even when the section is missing.
4603
7f8cd844
NC
46042010-09-08 Nick Clifton <nickc@redhat.com>
4605
4606 * README: Remove claim that MEMORY is not supported.
4607 * expression.cc (script_exp_function_origin)
4608 (script_exp_function_length): Move from here to ...
4609 * script.cc: ... here.
4610 (script_set_section_region, script_add_memory)
4611 (script_parse_memory_attr, script_include_directive): New
4612 functions.
4613 * script-sections.cc
4614 (class Memory_region): New class.
4615 (class Output_section_definition): Add set_memory_region,
4616 set_section_vma, set_section_lma and get_section_name methods.
4617 (class Script_Sections): Add add_memory_region,
4618 find_memory_region, find_memory_region_origin,
4619 find_memory_region_length and set_memory_region methods.
4620 Have set_section_addresses method walk the list of set memory
4621 regions.
4622 Extend the print methos to display memory regions.
4623 * script-sections.h: Add prototypes for new methods.
4624 Add enum for MEMORY region attributes.
4625 * yyscript.y: Add support for parsing MEMORY regions.
4626 * script-c.h: Add prototypes for new functions.
4627 * testsuite/Makefile.am: Add test of MEMORY region functionality.
4628 * testsuite/Makefile.in: Regenerate.
4629 * testsuite/memory_test.sh: New script.
4630 * testsuite/memory_test.s: New assembler source file.
4631 * testsuite/memory_test.t: New linker script.
4632
a4649286
DK
46332010-08-27 Doug Kwan <dougkwan@google.com>
4634
4635 * gold/resolve.cc (Symbol_table::should_override): Let a weak
4636 reference override an existing dynamic weak reference.
4637 * testsuite/Makefile.am: Add new test dyn_weak_ref.
4638 * testsuite/Makefile.in: Regenerate.
4639 * testsuite/dyn_weak_ref.sh: New file.
4640 * testsuite/dyn_weak_ref_1.c: Ditto.
4641 * testsuite/dyn_weak_ref_2.c: Ditto.
4642
b56648ad
ILT
46432010-08-27 Ian Lance Taylor <iant@google.com>
4644
4645 * incremental.h (class Incremental_input_entry): Add virtual
4646 destructor.
4647
809313cb
ILT
46482010-08-27 Ian Lance Taylor <iant@google.com>
4649
4650 * testsuite/start_lib_test_3.c: Mark t3 as used.
4651
11e32464
NC
46522010-08-27 Nick Clifton <nickc@redhat.com>
4653
4654 * options.cc (version_script): Fix small typo in previous
4655 whitespace tidyup.
4656
ca09d69a
NC
46572010-08-25 Nick Clifton <nickc@redhat.com>
4658
4659 * archive.cc: Formatting fixes: Remove whitespace between
4660 typename and following asterisk. Remove whitespace between
4661 function name and opening parenthesis.
4662 * archive.h: Likewise.
4663 * arm.cc: Likewise.
4664 * attributes.cc: Likewise.
4665 * attributes.h: Likewise.
4666 * common.cc: Likewise.
4667 * copy-relocs.cc: Likewise.
4668 * dirsearch.h: Likewise.
4669 * dynobj.cc: Likewise.
4670 * ehframe.cc: Likewise.
4671 * ehframe.h: Likewise.
4672 * expression.cc: Likewise.
4673 * fileread.cc: Likewise.
4674 * fileread.h: Likewise.
4675 * gc.h: Likewise.
4676 * gold-threads.cc: Likewise.
4677 * gold.cc: Likewise.
4678 * i386.cc: Likewise.
4679 * icf.h: Likewise.
4680 * incremental-dump.cc: Likewise.
4681 * incremental.cc: Likewise.
4682 * layout.cc: Likewise.
4683 * layout.h: Likewise.
4684 * main.cc: Likewise.
4685 * merge.cc: Likewise.
4686 * merge.h: Likewise.
4687 * object.cc: Likewise.
4688 * object.h: Likewise.
4689 * options.cc: Likewise.
4690 * options.h: Likewise.
4691 * output.cc: Likewise.
4692 * output.h: Likewise.
4693 * plugin.cc: Likewise.
4694 * plugin.h: Likewise.
4695 * powerpc.cc: Likewise.
4696 * reloc.cc: Likewise.
4697 * script-c.h: Likewise.
4698 * script-sections.cc: Likewise.
4699 * script.cc: Likewise.
4700 * stringpool.cc: Likewise.
4701 * symtab.cc: Likewise.
4702 * symtab.h: Likewise.
4703 * target.cc: Likewise.
4704 * timer.cc: Likewise.
4705 * timer.h: Likewise.
4706 * version.cc: Likewise.
4707 * x86_64.cc: Likewise.
4708
b8fa8750
NC
47092010-08-24 Nick Clifton <nickc@redhat.com>
4710
4711 PR 11899
4712 * layout.cc (segment_precedes): Sort segments by their physical
4713 addresses, if they have been set.
4714
9919d93b
CC
47152010-08-23 Cary Coutant <ccoutant@google.com>
4716
4717 * archive.cc (Lib_group::add_symbols): Lock object before deleting its
4718 symbols data.
4719 (Lib_group::include_member): Unlock object after deleting its
4720 symbols data.
4721 * testsuite/start_lib_test_3.c: Remove all global symbols to trigger
4722 the bug fixed here.
4723
97b4be1c
CC
47242010-08-19 Neil Vachharajani <nvachhar@google.com>
4725 Cary Coutant <ccoutant@google.com>
4726
4727 * gold/archive.h (Add_lib_group_symbols): Add readsyms_blocker_, adjust
4728 constructor, and set_blocker.
4729 * gold/archive.cc (Add_lib_group_symbols::is_runnable): Also check
4730 readsyms_blocker_.
4731 * gold/readsyms.cc (Read_symbols::do_lib_group): Also pass
4732 this->this_blocker_ to Add_lib_group_symbols::set_blocker.
4733 * testsuite/Makefile.am (start_lib_test): New test case.
4734 * testsuite/Makefile.in: Regenerate.
4735 * testsuite/start_lib_test_main.c: New file.
4736 * testsuite/start_lib_test_1.c: New file.
4737 * testsuite/start_lib_test_2.c: New file.
4738 * testsuite/start_lib_test_3.c: New file.
4739
dd0b1884
ILT
47402010-08-19 Ian Lance Taylor <iant@google.com>
4741
4742 * Makefile.in: Rebuild with automake 1.11.1.
4743 * aclocal.m4: Likewise.
4744 * testsuite/Makefile.in: Likewise.
4745
7223e9ca
ILT
47462010-08-19 Ian Lance Taylor <iant@google.com>
4747
4748 PR 10893
4749 * i386.cc (class Output_data_plt_i386): Update declarations.
4750 Define Global_ifunc and Local_ifunc types. Add global_ifuncs_ and
4751 local_ifuncs_ fields.
4752 (Target_i386::do_plt_section_for_global): New function.
4753 (Target_i386::do_plt_section_for_local): New function.
4754 (Output_data_plt_i386::Output_data_plt_i386): Add symtab
4755 parameter; change all callers. Initialize global_ifuncs_ and
4756 local_ifuncs_. If doing a static link define __rel_iplt_start and
4757 __rel_iplt_end.
4758 (Output_data_plt_i386::add_entry): Handle IFUNC symbols.
4759 (Output_data_plt_i386::add_local_ifunc_entry): New function.
4760 (Output_data_plt_i386::do_write): Fix GOT entries for IFUNC
4761 symbols.
4762 (Target_i386::make_plt_section): New function, broken out of
4763 make_plt_entry. Set sh_info field of .rel.plt to point to .plt.
4764 (Target_i386::make_plt_entry): Call make_plt_section.
4765 (Target_i386::make_local_ifunc_plt_entry): New function.
4766 (Target_i386::Scan::reloc_needs_iplt_for_ifunc): New function.
4767 (Target_i386::Scan::local): Handle IFUNC symbols. Add
4768 R_386_IRELATIVE to switch.
4769 (Target_i386::Scan::global): Likewise.
4770 (Target_i386::Relocate::relocate): Likewise.
4771 (Target_i386::Relocatable_size_for_reloc): Add R_386_IRELATIVE to
4772 switch.
4773 * x86_64.cc (class Output_data_plt_x86_64): Update declarations.
4774 (Target_x86_64::do_plt_section_for_global): New function.
4775 (Target_x86_64::do_plt_section_for_local): New function.
4776 (Output_data_plt_x86_64::Output_data_plt_x86_64): Add symtab
4777 parameter; change all callers. If doing a static link define
4778 __rela_iplt_start and __rela_iplt_end.
4779 (Output_data_plt_x86_64::add_entry): Handle IFUNC symbols.
4780 (Output_data_plt_x86_64::add_local_ifunc_entry): New function.
4781 (Target_x86_64::make_plt_section): Set sh_info field of .rel.plt
4782 to point to .plt.
4783 (Target_x86_64::make_local_ifunc_plt_entry): New function.
4784 (Target_x86_64::Scan::check_non_pic): Add R_X86_64_IRELATIVE to
4785 switch.
4786 (Target_x86_64::Scan::reloc_needs_iplt_for_ifunc): New function.
4787 (Target_x86_64::Scan::local): Handle IFUNC symbols. Add
4788 R_X86_64_IRELATIVE to switch.
4789 (Target_x86_64::Scan::global): Likewise.
4790 (Target_x86_64::Relocate::relocate): Likewise.
4791 (Target_x86_64::Relocatable_size_for_reloc): Add R_X86_64_IRELATIVE to
4792 switch.
4793 * target.h (class Target): Add plt_section_for_global and
4794 plt_section_for_local functions. Add do_plt_section_for_global
4795 and do_plt_section_for_local virtual functions.
4796 * symtab.h (Symbol::needs_plt_entry): Handle IFUNC symbol. Add
4797 clarifying comments.
4798 (Symbol::use_plt_offset): Handle IFUNC symbol.
4799 * object.cc (Sized_relobj::Sized_relobj): Initialize
4800 local_plt_offsets_.
4801 (Sized_relobj::local_has_plt_offset): New function.
4802 (Sized_relobj::local_plt_offset): New function.
4803 (Sized_relobj::set_local_plt_offset): New function.
4804 (Sized_relobj::do_count): Handle IFUNC symbol.
4805 * object.h (class Symbol_value): Add is_ifunc_symbol_ field. Take
4806 a bit away from input_shndx_ field. Add set_is_func_symbol and
4807 is_ifunc_symbol functions.
4808 (class Sized_relobj): Update declarations. Remove Tls_got_entry
4809 and Local_tls_got_offsets. Define Local_plt_offsets. Add
4810 local_plt_offsets_ field.
4811 (Sized_relobj::clear_local_symbols): Clear local_plt_offsets_.
4812 * output.h (class Output_section_data): Add non-const
4813 output_section function.
4814 (class Output_data_got): Update declarations.
4815 (class Output_data_got::Got_entry): Add use_plt_offset_ field.
4816 Add use_plt_offset parameter to global and local constructors.
4817 Change all callers. Change local_sym_index_ field to 31 bits.
4818 Change GSYM_CODE and CONSTANT_CODE accordingly.
4819 * output.cc (Output_data_reloc_base::do_adjust_output_section): If
4820 doing a static link don't set sh_link field.
4821 (Output_data_got::Got_entry::write): Use PLT offset if
4822 appropriate.
4823 (Output_data_got::add_global_plt): New function.
4824 (Output_data_got::add_local_plt): New function.
4825 * target-reloc.h (relocate_section): Handle IFUNC symbol.
4826 * defstd.cc (in_section): Remove entries for __rel_iplt_start,
4827 __rel_iplt_end, __rela_iplt_start, and __rela_iplt_end.
4828 * configure.ac: Set IFUNC automake conditional for glibc >= 2.11.
4829 * testsuite/Makefile.am: Add a bunch of IFUNC tests, all within
4830 IFUNC conditional.
4831 * testsuite/ifunc-sel.h: New file.
4832 * testsuite/ifuncmain1.c: New file.
4833 * testsuite/ifuncmain1vis.c: New file.
4834 * testsuite/ifuncmod1.c: New file.
4835 * testsuite/ifuncdep2.c: New file.
4836 * testsuite/ifuncmain2.c: New file.
4837 * testsuite/ifuncmain3.c: New file.
4838 * testsuite/ifuncmod3.c: New file.
4839 * testsuite/ifuncmain4.c: New file.
4840 * testsuite/ifuncmain5.c: New file.
4841 * testsuite/ifuncmod5.c: New file.
4842 * testsuite/ifuncmain6pie.c: New file.
4843 * testsuite/ifuncmod6.c: New file.
4844 * testsuite/ifuncmain7.c: New file.
4845 * configure, testsuite/Makefile.in: Rebuild.
4846
56f75c03
ILT
48472010-08-18 Ian Lance Taylor <iant@google.com>
4848
4849 * incremental.cc
4850 (Output_section_incremental_inputs::write_input_files): Add cast
4851 to avoid signed/unsigned comparison warning.
4852 (Output_section_incremental_inputs::write_info_blocks): Likewise.
4853
55455f89
CC
48542010-08-12 Cary Coutant <ccoutant@google.com>
4855
4856 * common.cc (Sort_commons::operator()): Remove unnecessary code.
4857
e2054bcb
ILT
48582010-08-13 Ian Lance Taylor <iant@google.com>
4859
4860 * testsuite/incremental_test_1.c: Add prototype to avoid warning.
4861
74f67560
DK
48622010-08-12 Cary Coutant <ccoutant@google.com>
4863 Doug Kwan <dougkwan@google.com>
4864
4865 * resolve.cc (Symbol_table::should_override): When a weak dynamic
4866 defintion overrides non-weak undef, remember that the original undef
4867 is not weak.
4868 * symtab.cc (Symbol_table::sized_write_global): For undef without
4869 an original weak binding, set binding to global in output.
4870 * testsuite/Makefile.am: Add new test strong_ref_weak_def.
4871 * testsuite/Makefile.in: Regenerate.
4872 * testsuite/strong_ref_weak_def.sh: New file.
4873 * testsuite/strong_ref_weak_def_1.c: Ditto.
4874 * testsuite/strong_ref_weak_def_2.c: Ditto.
4875
d1238d12
CC
48762010-08-12 Cary Coutant <ccoutant@google.com>
4877
4878 * testsuite/incremental_test.sh: Rewrite.
4879 * testsuite/incremental_test_1.c: Rewrite.
4880 * testsuite/incremental_test_2.c: Rewrite.
4881
0e70b911
CC
48822010-08-12 Cary Coutant <ccoutant@google.com>
4883
4884 * arm.cc (Target_arm::got_size): Add const.
4885 (Target_arm::got_entry_count): New function.
4886 (Target_arm::plt_entry_count): New function.
4887 (Target_arm::first_plt_entry_offset): New function.
4888 (Target_arm::plt_entry_size): New function.
4889 (Output_data_plt_arm::entry_count): New function.
4890 (Output_data_plt_arm::first_plt_entry_offset): New function.
4891 (Output_data_plt_arm::get_plt_entry_size): New function.
4892 * i386.cc (Target_i386::got_size): Add const.
4893 (Target_i386::got_entry_count): New function.
4894 (Target_i386::plt_entry_count): New function.
4895 (Target_i386::first_plt_entry_offset): New function.
4896 (Target_i386::plt_entry_size): New function.
4897 (Output_data_plt_i386::entry_count): New function.
4898 (Output_data_plt_i386::first_plt_entry_offset): New function.
4899 (Output_data_plt_i386::get_plt_entry_size): New function.
4900 * incremental-dump.cc (dump_incremental_inputs): Adjust call to
4901 find_incremental_inputs_sections. Dump incremental_got_plt section.
4902 * incremental.cc: Include target.h.
4903 (Sized_incremental_binary::do_find_incremental_inputs_sections): Add
4904 parameter. Adjust all callers. Find incremental_got_plt section.
4905 (Incremental_inputs::create_data_sections): Create incremental_got_plt
4906 section.
4907 (Output_section_incremental_inputs::set_final_data_size): Calculate
4908 size of incremental_got_plt section.
4909 (Output_section_incremental_inputs::do_write): Write the
4910 incremental_got_plt section.
4911 (Got_plt_view_info): New struct.
4912 (Local_got_offset_visitor): New class.
4913 (Global_got_offset_visitor): New class.
4914 (Global_symbol_visitor_got_plt): New class.
4915 (Output_section_incremental_inputs::write_got_plt): New function.
4916 * incremental.h (Incremental_binary::find_incremental_inputs_sections):
4917 Add parameter. Adjust all callers.
4918 (Incremental_binary::do_find_incremental_inputs_sections): Likewise.
4919 (Incremental_inputs::got_plt_section): New function.
4920 (Incremental_inputs::got_plt_section_): New data member.
4921 (Incremental_got_plt_reader): New class.
4922 * layout.cc (Layout::create_incremental_info_sections): Add the
4923 incremental_got_plt section.
4924 * object.h (Got_offset_list::get_list): New function.
4925 (Got offset_list::for_all_got_offsets): New function.
4926 (Sized_relobj::local_got_offset_list): New function.
4927 * powerpc.cc (Target_powerpc::got_size): Add const.
4928 (Target_powerpc::got_entry_count): New function.
4929 (Target_powerpc::plt_entry_count): New function.
4930 (Target_powerpc::first_plt_entry_offset): New function.
4931 (Target_powerpc::plt_entry_size): New function.
4932 (Output_data_plt_powerpc::entry_count): New function.
4933 (Output_data_plt_powerpc::first_plt_entry_offset): New function.
4934 (Output_data_plt_powerpc::get_plt_entry_size): New function.
4935 * sparc.cc (Target_sparc::got_size): Add const.
4936 (Target_sparc::got_entry_count): New function.
4937 (Target_sparc::plt_entry_count): New function.
4938 (Target_sparc::first_plt_entry_offset): New function.
4939 (Target_sparc::plt_entry_size): New function.
4940 (Output_data_plt_sparc::entry_count): New function.
4941 (Output_data_plt_sparc::first_plt_entry_offset): New function.
4942 (Output_data_plt_sparc::get_plt_entry_size): New function.
4943 * symtab.h (Symbol::got_offset_list): New function.
4944 (Symbol_table::for_all_symbols): New function.
4945 * target.h (Sized_target::got_entry_count): New function.
4946 (Sized_target::plt_entry_count): New function.
4947 (Sized_target::plt_entry_size): New function.
4948 * x86_64.cc (Target_x86_64::got_size): Add const.
4949 (Target_x86_64::got_entry_count): New function.
4950 (Target_x86_64::plt_entry_count): New function.
4951 (Target_x86_64::first_plt_entry_offset): New function.
4952 (Target_x86_64::plt_entry_size): New function.
4953 (Output_data_plt_x86_64::entry_count): New function.
4954 (Output_data_plt_x86_64::first_plt_entry_offset): New function.
4955 (Output_data_plt_x86_64::get_plt_entry_size): New function.
4956
09ec0418
CC
49572010-08-12 Cary Coutant <ccoutant@google.com>
4958
4959 * archive.cc: Include incremental.h.
4960 (Archive::Archive): Initialize incremental_info_.
4961 (Archive::include_member): Record archive members in incremental info.
4962 (Add_archive_symbols::run): Record begin and end of an archive in
4963 incremental info.
4964 (Lib_group::include_member): Record objects in incremental info.
4965 * archive.h (Incremental_archive_entry): Forward declaration.
4966 (Archive::set_incremental_info): New member function.
4967 (Archive::incremental_info): New member function.
4968 (Archive::Unused_symbol_iterator): New class.
4969 (Archive::unused_symbols_begin): New member function.
4970 (Archive::unused_symbols_end): New member function.
4971 (Archive::incremental_info_): New data member.
4972 * incremental-dump.cc (find_input_containing_global): New function.
4973 (dump_incremental_inputs): Dump new incremental info sections.
4974 * incremental.cc: Include symtab.h.
4975 (Output_section_incremental_inputs): New class.
4976 (Sized_incremental_binary::do_find_incremental_inputs_sections): Support
4977 new incremental info sections.
4978 (Sized_incremental_binary::do_check_inputs): Likewise.
4979 (Incremental_inputs::report_archive): Remove.
4980 (Incremental_inputs::report_archive_begin): New function.
4981 (Incremental_inputs::report_archive_end): New function.
4982 (Incremental_inputs::report_object): New function.
4983 (Incremental_inputs::finalize_inputs): Remove.
4984 (Incremental_inputs::report_input_section): New function.
4985 (Incremental_inputs::report_script): Rewrite.
4986 (Incremental_inputs::finalize): Do nothing but finalize string table.
4987 (Incremental_inputs::create_incremental_inputs_section_data): Remove.
4988 (Incremental_inputs::sized_create_inputs_section_data): Remove.
4989 (Incremental_inputs::create_data_sections): New function.
4990 (Incremental_inputs::relocs_entsize): New function.
4991 (Output_section_incremental_inputs::set_final_data_size): New function.
4992 (Output_section_incremental_inputs::do_write): New function.
4993 (Output_section_incremental_inputs::write_header): New function.
4994 (Output_section_incremental_inputs::write_input_files): New function.
4995 (Output_section_incremental_inputs::write_info_blocks): New function.
4996 (Output_section_incremental_inputs::write_symtab): New function.
4997 * incremental.h (Incremental_script_entry): Forward declaration.
4998 (Incremental_object_entry): Forward declaration.
4999 (Incremental_archive_entry): Forward declaration.
5000 (Incremental_inputs): Forward declaration.
5001 (Incremental_inputs_header_data): Remove.
5002 (Incremental_inputs_header): Remove.
5003 (Incremental_inputs_header_write): Remove.
5004 (Incremental_inputs_entry_data): Remove.
5005 (Incremental_inputs_entry): Remove.
5006 (Incremental_inputs_entry_write): Remove.
5007 (enum Incremental_input_type): Add INCREMENTAL_INPUT_ARCHIVE_MEMBER.
5008 (Incremental_binary::find_incremental_inputs_sections): Add parameters.
5009 (Incremental_binary::do_find_incremental_inputs_sections): Likewise.
5010 (Sized_ncremental_binary::do_find_incremental_inputs_sections):
5011 Likewise.
5012 (Incremental_input_entry): New class.
5013 (Incremental_script_entry): New class.
5014 (Incremental_object_entry): New class.
5015 (Incremental_archive_entry): New class.
5016 (Incremental_inputs::Incremental_inputs): Initialize new data members.
5017 (Incremental_inputs::report_inputs): Remove.
5018 (Incremental_inputs::report_archive): Remove.
5019 (Incremental_inputs::report_archive_begin): New function.
5020 (Incremental_inputs::report_archive_end): New function.
5021 (Incremental_inputs::report_object): Change prototype.
5022 (Incremental_inputs::report_input_section): New function.
5023 (Incremental_inputs::report_script): Change prototype.
5024 (Incremental_inputs::get_reloc_count): New function.
5025 (Incremental_inputs::set_reloc_count): New function.
5026 (Incremental_inputs::create_data_sections): New function.
5027 (Incremental_inputs::create_incremental_inputs_section_data): Remove.
5028 (Incremental_inputs::inputs_section): New function.
5029 (Incremental_inputs::symtab_section): New function.
5030 (Incremental_inputs::relocs_section): New function.
5031 (Incremental_inputs::get_stringpool): Add const.
5032 (Incremental_inputs::command_line): Add const.
5033 (Incremental_inputs::inputs): Remove.
5034 (Incremental_inputs::command_line_key): New function.
5035 (Incremental_inputs::input_file_count): New function.
5036 (Incremental_inputs::input_files): New function.
5037 (Incremental_inputs::relocs_entsize): New function.
5038 (Incremental_inputs::sized_create_inputs_section_data): Remove.
5039 (Incremental_inputs::finalize_inputs): Remove.
5040 (Incremental_inputs::Input_info): Remove.
5041 (Incremental_inputs::lock_): Remove.
5042 (Incremental_inputs::inputs_): Change type.
5043 (Incremental_inputs::inputs_map_): Remove.
5044 (Incremental_inputs::current_object_entry_): New data member.
5045 (Incremental_inputs::inputs_section_): New data member.
5046 (Incremental_inputs::symtab_section_): New data member.
5047 (Incremental_inputs::relocs_section_): New data member.
5048 (Incremental_inputs::reloc_count_): New data member.
5049 (Incremental_inputs_reader): New class.
5050 (Incremental_symtab_reader): New class.
5051 (Incremental_relocs_reader): New class.
5052 * layout.cc (Layout::finalize): Move finalization of incremental info
5053 and creation of incremental info sections to follow finalization of
5054 symbol table. Set offsets for postprocessing sections.
5055 (Layout::create_incremental_info_sections): Call
5056 Incremental_inputs::create_data_sections. Add incremental symtab
5057 and relocs sections. Set sh_entsize and sh_link fields. Arrange for
5058 sections to layout after input sections.
5059 * layout.h (struct Timespec): Forward declaration.
5060 (Layout::incremental_inputs): Add const.
5061 (Layout::create_incremental_info_sections): Add parameter.
5062 * main.cc (main): Remove call to Incremental_inputs::report_inputs.
5063 * object.cc: Include incremental.h.
5064 (Relobj::finalize_incremental_relocs): New function.
5065 (Sized_relobj::do_layout): Record input sections in incremental info.
5066 * object.h (Object::output_section): New function.
5067 (Object::output_section_offset): Moved from Relobj.
5068 (Object::get_incremental_reloc_base): New function.
5069 (Object::get_incremental_reloc_count): New function.
5070 (Object::do_output_section): New function.
5071 (Object::do_output_section_offset): Moved from Relobj.
5072 (Object::do_get_incremental_reloc_base): New function.
5073 (Object::do_get_incremental_reloc_count): New function.
5074 (Object::Object): Initialize new data members.
5075 (Relobj::output_section): Renamed do_output_section and moved to
5076 protected.
5077 (Relobj::output_section_offset): Moved to Object.
5078 (Relobj::do_get_incremental_reloc_base): New function.
5079 (Relobj::do_get_incremental_reloc_count): New function.
5080 (Relobj::allocate_incremental_reloc_counts): New function.
5081 (Relobj::count_incremental_reloc): New function.
5082 (Relobj::finalize_incremental_relocs): New function.
5083 (Relobj::next_incremental_reloc_index): New function.
5084 (Relobj::reloc_counts_): New data member.
5085 (Relobj::reloc_bases_): New data member.
5086 (Sized_relobj::do_relocate_sections): Add parameter. Change caller.
5087 (Sized_relobj::relocate_sections): Add parameter. Change all callers.
5088 (Sized_relobj::incremental_relocs_scan): New function.
5089 (Sized_relobj::incremental_relocs_scan_reltype): New function.
5090 (Sized_relobj::incremental_relocs_write): New function.
5091 (Sized_relobj::incremental_relocs_write_reltype): New function.
5092 * plugin.cc (Plugin_manager::add_input_file): Rewrite test for
5093 incremental link.
5094 * readsyms.cc (Read_symbols::do_read_symbols): Move reporting of
5095 archives and object files elsewhere.
5096 (Add_symbols::run): Report object files here.
5097 (Finish_group::run): Report end of archive at end of group.
5098 * reloc.cc: Include layout.h, incremental.h.
5099 (Sized_relobj::do_read_relocs): Need relocations for incremental link.
5100 (Sized_relobj::do_scan_relocs): Record relocations for incremental link.
5101 (Sized_relobj::incremental_relocs_scan): New function.
5102 (Sized_relobj::incremental_relocs_scan_reltype): New function.
5103 (Sized_relobj::do_relocate_sections): Write incremental relocations.
5104 (Sized_relobj::incremental_relocs_write): New function.
5105 (Sized_relobj::incremental_relocs_write_reltype): New function.
5106 * script.cc (read_input_script): Rewrite test for incremental link.
5107 Change call to Incremental_inputs::report_script.
5108 * symtab.h (Symbol_table::first_global_index): New function.
5109 (Symbol_table::output_count): New function.
5110
ce0d1972
DK
51112010-08-12 Doug Kwan <dougkwan@google.com>
5112
5113 * arm.cc (Target_arm::merge_object_attributes): Check command line
5114 options --no-wchar-size-warning and --no-enum-size-warning.
5115 * options.h (General_options): Add ld-compatible options
5116 --no-enum-size-warning and --no-wchar-size-warning.
5117
6e5710ce
ILT
51182010-08-04 Ian Lance Taylor <iant@google.com>
5119
5120 * x86_64.cc (Target_x86_64::Scan::local): Use
5121 R_X86_64_GNU_VTINHERIT instead of R_386_GNU_VTINHERIT and
5122 R_X86_64_GNU_VTENTRY instead of R_386_GNU_VTENTRY.
5123 (Target_x86_64::Scan::global): Likewise.
5124 (Target_x86_64::Relocate::relocate): Likewise.
5125 (Target_x86_64::Relocatable_size_for_reloc::get_size_for_reloc):
5126 Likewise.
5127
fef830db
CC
51282010-08-03 Cary Coutant <ccoutant@google.com>
5129
5130 * merge.cc (Output_merge_string::do_add_input_section): Count strings
5131 to reserve space in merged_strings vector. Keep total input size
5132 for stats.
5133 (Output_merge_string::do_print_merge_stats): Print total input size.
5134 * merge.h (Output_merge_string): Add input_size_ field.
5135 * stringpool.cc (Stringpool_template::string_length): Move
5136 implementations out of Stringpool_template class and place in
5137 stringpool.h.
5138 * stringpool.h (string_length): Move out of Stringpool_template.
5139
1e3811b0
ILT
51402010-08-03 Ian Lance Taylor <iant@google.com>
5141
5142 PR 11712
5143 * layout.cc (relaxation_loop_body): If address of load segment is
5144 set, adjust address to include headers if possible.
5145
7af0c620
ILT
51462010-08-03 Ian Lance Taylor <iant@google.com>
5147
5148 * version.cc (version_string): Bump to 1.10.
5149
22f0da72
ILT
51502010-08-03 Ian Lance Taylor <iant@google.com>
5151
5152 PR 11805
5153 * layout.h (enum Output_section_order): Define.
5154 (class Layout): Update declarations.
5155 * layout.cc (Layout::get_output_section): Add order parameter.
5156 Remove is_interp, is_dynamic_linker_section, is_last_relro, and
5157 is_first_non_relro parameters. Change all callers.
5158 (Layout::choose_output_section): Likewise.
5159 (Layout::add_output_section_data): Likewise.
5160 (Layout::make_output_section): Likewise. Set order.
5161 (Layout::default_section_order): New function.
5162 (Layout::layout_eh_frame): Call add_output_section_to_nonload.
5163 * output.cc (Output_section::Output_section): Initialize order_.
5164 Don't initialize deleted fields.
5165 (Output_segment::Output_segment): Don't initialize deleted
5166 fields.
5167 (Output_segment::add_output_section_to_load): New function
5168 replacing add_output_section. Change all callers to call this or
5169 add_output_section_to_nonload.
5170 (Output_segment::add_output_section_to_nonload): New function.
5171 (Output_segment::remove_output_section): Rewrite.
5172 (Output_segment::add_initial_output_data): Likewise.
5173 (Output_segment::has_any_data_sections): Likewise.
5174 (Output_segment::is_first_section_relro): Likewise.
5175 (Output_segment::maximum_alignment): Likewise.
5176 (Output_segment::has_dynamic_reloc): New function replacing
5177 dynamic_reloc_count. Change all callers.
5178 (Output_segment::has_dynamic_reloc_list): New function replacing
5179 dynamic_reloc_count_list. Change all callers.
5180 (Output_segment::set_section_addresses): Rewrite.
5181 (Output_segment::set_offset): Rewrite.
5182 (Output_segment::find_first_and_last_list): Remove.
5183 (Output_segment::set_tls_offsets): Rewrite.
5184 (Output_segment::first_section_load_address): Likewise.
5185 (Output_segment::output_section_count): Likewise.
5186 (Output_segment::section_with_lowest_load_address): Likewise.
5187 (Output_segment::write_section_headers): Likewise.
5188 (Output_segment::print_sections_to_map): Likewise.
5189 * output.h (class Output_data): Remove dynamic_reloc_count_
5190 field. Add has_dynamic_reloc_ field. Make bools into bitfields.
5191 (Output_data::add_dynamic_reloc): Rewrite.
5192 (Output_data::has_dynamic_reloc): New function.
5193 (Output_data::dynamic_reloc_count): Remove.
5194 (class Output_section): Add order_ field. Remvoe is_relro_local_,
5195 is_last_relro_, is_first_non_relro_, is_interp_,
5196 is_dynamic_linker_section_ fields. Add order and set_order
5197 functions. Remove is_relro_local, set_is_relro_local,
5198 is_last_relro, set_is_last_relro, is_first_non_relro,
5199 set_is_first_non_relro functions, is_interp, set_is_interp,
5200 is_dynamic_linker_section, and set_is_dynamic_linker_section
5201 functions.
5202 (class Output_segment): Change Output_data_list from std::list to
5203 std:;vector. Add output_lists_ field. Remove output_data_ and
5204 output_bss_ fields. Update declarations.
5205
3ff2ccb0
ILT
52062010-08-02 Ian Lance Taylor <iant@google.com>
5207
5208 * arm.cc (Target_arm::gc_process_relocs): Use typename.
5209 * powerpc.cc (Target_powerpc::gc_process_relocs): Likewise.
5210 * sparc.cc (Target_sparc::gc_process_relocs): Likewise.
5211
88a4108b
ILT
52122010-08-02 Ian Lance Taylor <iant@google.com>
5213
5214 PR 11855
5215 * script.cc (Script_options::Script_options): Initialize
5216 symbol_definitions_ and symbol_references_.
5217 (Script_options::add_symbol_assignment): Update
5218 symbol_definitions_ and symbol_references_.
5219 (Script_options::add_symbol_reference): New function.
5220 (script_symbol): New function.
5221 * script.h (class Script_options): Add symbol_definitions_ and
5222 symbol_references_ fields.
5223 (Script_options::referenced_const_iterator): New type.
5224 (Script_options::referenced_begin): New function.
5225 (Script_options::referenced_end): New function.
5226 (Script_options::is_referenced): New function.
5227 (Script_options::any_unreferenced): New function.
5228 * script-c.h (script_symbol): Declare.
5229 * yyscript.y (exp): Call script_symbol.
5230 * symtab.cc: Include "script.h".
5231 (Symbol_table::gc_mark_undef_symbols): Add layout parameter.
5232 Change all callers. Check symbols referenced by scripts.
5233 (Symbol_table::add_undefined_symbols_from_command_line): Add
5234 layout parameter. Change all callers.
5235 (Symbol_table::do_add_undefined_symbols_from_command_line):
5236 Likewise. Break out loop body. Check symbols referenced by
5237 scripts.
5238 (Symbol_table::add_undefined_symbol_from_command_line): New
5239 function broken out of
5240 do_add_undefined_symbols_from_command_line.
5241 * symtab.h (class Symbol_table): Update declarations.
5242 * archive.cc: Include "layout.h".
5243 (Archive::should_include_member): Add layout parameter. Change
5244 all callers. Check for symbol mentioned in expression.
5245 * archive.h (class Archive): Update declaration.
5246 * object.cc (Sized_relobj::do_should_include_member): Add layout
5247 parameter.
5248 * object.h (Object::should_include_member): Add layout parameter.
5249 Change all callers.
5250 (Object::do_should_include_member): Add layout parameter.
5251 (class Sized_relobj): Update declaration.
5252 * dynobj.cc (Sized_dynobj::do_should_include_member): Add layout
5253 parameter.
5254 * dynobj.h (class Sized_dynobj): Update declaration.
5255 * plugin.cc (Sized_pluginobj::do_should_include_member): Add
5256 layout parameter.
5257 * plugin.h (class Sized_pluginobj): Update declaration.
5258
5f1ab67a
ILT
52592010-08-02 Ian Lance Taylor <iant@google.com>
5260
5261 PR 11866
5262 * output.cc (Output_segment::set_offset): Search for the first and
5263 last sections rather than assuming that the list is in order.
5264 (Output_segment::find_first_and_last_list): New function.
5265 * output.h (class Output_segment): Update declarations.
5266 * testsuite/Makefile.am (check_PROGRAMS): Add relro_strip_test.
5267 (relro_strip_test_SOURCES): New variable.
5268 (relro_strip_test_DEPENDENCIES): New variable.
5269 (relro_strip_test_LDFLAGS): New variable.
5270 (relro_strip_test_LDADD): New variable.
5271 (relro_strip_test.so): New target.
5272
a8df5856
ILT
52732010-08-02 Ian Lance Taylor <iant@google.com>
5274
5275 * i386.cc (class Target_i386): Add got_tlsdesc_ field.
5276 (Target_i386::Target_i386):: Initialize got_tlsdesc_.
5277 (Target_i386::got_tlsdesc_section): New function.
5278 (Target_i386::got_section): Create space for GOT entries for
5279 TLSDESC relocations.
5280 (Target_i386::Scan::local): Use TLSDESC GOT for unoptimized
5281 R_386_TLS_GOTDESC.
5282 (Target_i386::Scan::global): Likewise.
5283 (Target_i386::Relocate::relocate_tls): Adjust GOT offset when
5284 using TLSDESC GOT.
5285 * x86_64.cc (class Target_x86_64): Add got_tlsdesc_ field.
5286 (Target_x86_64::Target_x86_64):: Initialize got_tlsdesc_.
5287 (Target_x86_64::got_tlsdesc_section): New function.
5288 (Target_x86_64::got_section): Create space for GOT entries for
5289 TLSDESC relocations.
5290 (Target_x86_64::Scan::local): Use TLSDESC GOT for unoptimized
5291 R_386_TLS_GOTDESC.
5292 (Target_x86_64::Scan::global): Likewise.
5293 (Target_x86_64::Relocate::relocate_tls): Adjust GOT offset when
5294 using TLSDESC GOT.
5295
0c10a0a6
ILT
52962010-08-02 Ian Lance Taylor <iant@google.com>
5297
5298 * testsuite/final_layout.sh: Use dc to convert from hex to
5299 decimal.
5300
41cbeecc
ST
53012010-07-29 Sriraman Tallam <tmsriram@google.com>
5302
5303 * arm.cc (Target_arm<big_endian>::gc_process_relocs): Add template
5304 paramter to the call to gold::gc_process_relocs.
5305 * i386.cc (Target_i386<big_endian>::gc_process_relocs): Add template
5306 paramter to the call to gold::gc_process_relocs.
5307 * x86_64.cc (Target_x86_64<big_endian>::gc_process_relocs): Add template
5308 parameter to the call to gold::gc_process_relocs.
5309 * powerpc.cc (Target_powerpc<big_endian>::gc_process_relocs): Add
5310 template parameter to the call to gold::gc_process_relocs.
5311 * sparc.cc (Target_sparc<big_endian>::gc_process_relocs): Add template
5312 paramter to the call to gold::gc_process_relocs.
5313 * gc.h (get_embedded_addend_size): New function.
5314 (gc_process_relocs): Save the size of the reloc for use by ICF.
5315 * icf.cc (get_section_contents): Get the addend from the text section
5316 for SHT_REL relocation sections.
5317 * icf.h (Icf::Reloc_addend_size_info): New typedef.
5318 (Icf::Reloc_info): Add new member reloc_addend_size_info.
5319 * int_encoding.h (read_from_pointer): New overloaded function.
5320 * testsuite/Makefile.am (icf_sht_rel_addend_test): New test.
5321 * testsuite/icf_sht_rel_addend_test.sh: New file.
5322 * testsuite/icf_sht_rel_addend_test_1.cc: New file.
5323 * testsuite/icf_sht_rel_addend_test_2.cc: New file.
5324
6ea55b82
RW
53252010-07-28 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
5326
5327 * configure.ac (AM_INIT_AUTOMAKE): Use parallel-tests option.
5328 * Makefile.in: Regenerate.
5329 * testsuite/Makefile.in: Regenerate.
5330
9691462b
ILT
53312010-07-27 Jeffrey Yasskin <jyasskin@google.com>
5332
5333 * testsuite/debug_msg.sh: Test mixed weak/strong symbol behavior.
5334 * gold/testsuite/debug_msg.cc: Likewise.
5335 * gold/testsuite/odr_violation1.cc
5336 * gold/testsuite/odr_violation2.cc
5337
76897331
CC
53382010-07-21 Cary Coutant <ccoutant@google.com>
5339
5340 * merge.h (Output_merge_string::Merged_string): Remove object, shndx,
5341 string, and length fields.
5342 (Output_merge_string::Merged_strings_list): New type.
5343 (Output_merge_string::Merged_strings_lists): New typedef.
5344 (Output_merge_string): Replace merged_strings_ with
5345 merged_strings_lists_.
5346 * merge.cc (Output_merge_string::do_add_input_section): Allocate new
5347 Merged_strings_list per input object and section. Don't store pointer
5348 to the string. Don't store length with each merged string entry.
5349 (Output_merge_string::finalize_merged_data): Loop over list of merged
5350 strings lists. Recompute length of each merged string.
5351
78384e8f
CC
53522010-07-15 Cary Coutant <ccoutant@google.com>
5353
5354 * plugin.cc (Plugin_finish::run): Don't call cleanup handlers from
5355 here.
5356
783659f9
ILT
53572010-07-14 Ian Lance Taylor <iant@google.com>
5358
5359 * descriptors.cc (Descriptors::open): Report correct name in error
5360 message.
5361
131687b4
DK
53622010-07-13 Doug Kwan <dougkwan@google.com>
5363
5364 * arm.cc (Arm_input_section::Arm_input_section): For a
5365 SHT_ARM_EXIDX section, always keeps the input sections.
5366 (Arm_input_section::set_exidx_section_link): New method.
5367 (Arm_exidx_input_section::Arm_exidx_input_section): Initialize
5368 has_errors_ to false.
5369 (Arm_exidx_input_section::has_errors,
5370 Arm_exidx_input_section::set_has_errors): New methods.
5371 (Arm_exidx_input_section::has_errors_): New data member.
5372 (Arm_relobj::get_exidx_shndx_list): New method.
5373 (Arm_output_section::append_text_sections_to_list): Do not skip
5374 section without SHF_EXECINSTR.
5375 (Arm_output_section::fix_exidx_coverage): Skip input sections with
5376 errors.
2e702c99 5377 (Arm_relobj::make_exidx_input_section): Add new parameter for text
131687b4
DK
5378 section header. Make error messages more verbose. Check for
5379 a non-executable section linked to an EXIDX section.
5380 (Arm_relobj::do_read_symbols): Remove error checking, which has been
5381 moved to Arm_relobj::make_exidx_input_section. Add an assertion to
5382 check that there is no deferred EXIDX section if we exit early.
5383 Instead of not making an EXIDX section in case of an error, make one
5384 and set the has_errors flag of it.
5385 (Target_arm::do_finalize_sections): Fix up links of EXIDX sections
5386 in a relocatable link.
5387 (Target_arm::do_relax): Look for the EXIDX output section instead of
5388 assuming that it is called .ARM.exidx.
2e702c99 5389 (Target_arm::fix_exidx_coverage): Add a new parameter for input
131687b4
DK
5390 section list. Do not check for SHF_EXECINSTR section flags but
5391 skip any input section with errors.
5392 * output.cc (Output_section::Output_section): Initialize
5393 always_keeps_input_sections_ to false.
5394 (Output_section::add_input_section): Check for
5395 always_keeps_input_sections_.
5396 * output.h (Output_section::always_keeps_input_sections,
5397 Output_section::set_always_keeps_input_sections): New methods.
5398 (Output_section::always_keeps_input_sections): New data member.
5399
69517287
RÁE
54002010-07-13 Rafael Espindola <espindola@google.com>
5401
5402 * fileread.cc (try_extra_search_path, find_file): Move to Input_file.
5403 * fileread.h (Input_file): Add try_extra_search_path and find_file.
5404
82742395
ILT
54052010-07-13 Philip Herron <herron.philip@googlemail.com>
5406 Ian Lance Taylor <iant@google.com>
5407
5408 * output.h (Output_section_lookup_maps::add_merge_section):
5409 Correct check of whether value was inserted.
5410 (Output_section_lookup_maps::add_merge_input_section): Likewise.
5411 (Output_section_lookup_maps::add_relaxed_input_section):
5412 Likewise.
5413 * arm.cc (Target_arm::got_section): Remove used local os.
5414 * i386.cc (Target_i386::got_section): Likewise.
5415 * x86_64.cc (Target_x86_64::got_section): Likewise.
5416 * sparc.cc (Target_sparc::got_section): Likewise.
5417 (Target_sparc::relocate): Remove unused local have_got_offset.
5418 * powerpc.cc (Target_powerpc::relocate): Likewise.
5419
f2d707b5
ILT
54202010-07-13 Ian Lance Taylor <iant@google.com>
5421
241531d6
ILT
5422 * compressed_output.cc (zlib_decompress): Fix signature in
5423 !HAVE_ZLIB_H case.
5424
f2d707b5
ILT
5425 * archive.cc (Archive::include_member): Unlock an external member
5426 of a thin archive. Don't bother to delete an object we know is
5427 NULL.
5428
a2e47362
CC
54292010-07-12 Cary Coutant <ccoutant@google.com>
5430
5431 * compressed_output.cc (zlib_decompress): New function.
5432 (get_uncompressed_size): New function.
5433 (decompress_input_section): New function.
5434 * compressed_output.h (get_uncompressed_size): New function.
5435 (decompress_input_section): New function.
5436 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info)
5437 Handle compressed debug sections.
5438 * layout.cc (is_compressed_debug_section): New function.
5439 (Layout::output_section_name): Map compressed section names to
5440 canonical names.
5441 * layout.h (is_compressed_debug_section): New function.
5442 (is_debug_info_section): Recognize compressed debug sections.
5443 * merge.cc: Include compressed_output.h.
5444 (Output_merge_data::do_add_input_section): Handle compressed
5445 debug sections.
5446 (Output_merge_string::do_add_input_section): Handle compressed
5447 debug sections.
5448 * object.cc: Include compressed_output.h.
5449 (Sized_relobj::Sized_relobj): Initialize new data members.
5450 (build_compressed_section_map): New function.
5451 (Sized_relobj::do_read_symbols): Handle compressed debug sections.
5452 * object.h (Object::section_is_compressed): New method.
5453 (Object::do_section_is_compressed): New method.
5454 (Sized_relobj::Compressed_section_map): New type.
5455 (Sized_relobj::do_section_is_compressed): New method.
5456 (Sized_relobj::compressed_sections_): New data member.
5457 * output.cc (Output_section::add_input_section): Handle compressed
5458 debug sections.
5459 * reloc.cc: Include compressed_output.h.
5460 (Sized_relobj::write_sections): Handle compressed debug sections.
5461
ce279a62
CC
54622010-07-08 Cary Coutant <ccoutant@google.com>
5463
5464 * resolve.cc (Symbol_table::resolve): Remember whether undef was
5465 weak when resolving to a dynamic def.
5466 (Symbol_table::should_override): Add adjust_dyndef flag; set it
5467 for weak undef/dynamic def cases. Adjust callers.
5468 * symtab.cc (Symbol::init_fields): Initialize undef_binding_set_ and
5469 undef_binding_weak_.
5470 (Symbol_table::sized_write_globals): Adjust symbol binding.
5471 (Symbol_table::sized_write_symbol): Add binding parameter.
5472 * symtab.h (Symbol::set_undef_binding): New method.
5473 (Symbol::is_undef_binding_weak): New method.
5474 (Symbol::undef_binding_set_, Symbol::undef_binding_weak_): New members.
5475 (Symbol_table::should_override): Add new parameter.
5476 (Symbol_table::sized_write_symbol): Add new parameter.
5477
5478 * testsuite/weak_undef_file1.cc: Add new test case.
5479 * testsuite/weak_undef_file2.cc: Fix header comment.
5480 * testsuite/weak_undef_test.cc: Add new test case.
5481
b2286c10
DK
54822010-06-29 Doug Kwan <dougkwan@google.com>
5483
5484 * arm-reloc-property.cc (Arm_reloc_property::Arm_reloc_property):
5485 Initialize USE_SYMBOL_.
5486 * arm-reloc-property.h (Arm_reloc_property::uses_symbol): New method
5487 definition.
5488 (Arm_reloc_property::uses_symbol_): New data member declaration.
5489 * arm.cc (Target_arm::Relocate::relocate): Exit early if relocation
5490 uses symbol value and symbol is undefined but not weakly undefined.
5491
4802450a
RÁE
54922010-06-28 Rafael Espindola <espindola@google.com>
5493
5494 * plugin.cc (Plugin::load): Use dlerror.
5495
e5ca47ba
ILT
54962010-06-26 Jeffrey Yaskin <jyasskin@google.com>
5497
5498 * symtab.cc (detect_odr_violations): When reporting an ODR
5499 violation, report an object where the symbol is defined.
5500
8a75a161
DK
55012010-06-25 Doug Kwan <dougkwan@google.com>
5502
5503 * arm.cc (Target_arm::can_check_for_functions_pointers): Return true.
5504 (Target_arm::section_may_have_icf_unsafe_pointers): New method
5505 definition.
5506 (Target_arm::Scan::local_reloc_may_be_function_pointer,
5507 Target_arm::Scan::global_reloc_may_be_function_pointer): Implement
5508 target hook to detect function points.
5509 (Target_arm::Scan::possible_function_pointer_reloc): New method.
5510 * icf.h (Icf::check_section_for_function_pointers): Change type of
5511 parameter SECTION_NAME to const reference to std::string. Use
5512 target hook to determine if section may have unsafe pointers.
5513 * target.h (Target::section_may_have_icf_unsafe_pointers): New
5514 method definition.
5515
42218b9f
RÁE
55162010-06-21 Rafael Espindola <espindola@google.com>
5517
5518 * fileread.cc (Input_file::find_fie): New
5519 (Input_file::open): Use Input_file::find_fie.
5520 * fileread.h (Input_file::find_fie): New
5521 * plugin.cc (set_extra_library_path): New.
5522 (Plugin::load): Add set_extra_library_path to the transfer vector.
5523 (Plugin_manager::set_extra_library_path): New.
5524 (Plugin_manager::add_input_file): Use the extra search path if set.
5525 (set_extra_library_path(): New.
5526 * plugin.h (Plugin_manager): Add set_extra_library_path and
5527 extra_search_path_.
5528
a0506cca
CC
55292010-06-19 Cary Coutant <ccoutant@google.com>
5530
5531 * layout.cc (gdb_sections): Add .debug_types.
5532 (lines_only_debug_sections): Likewise.
5533
6508b958
RÁE
55342010-06-18 Rafael Espindola <espindola@google.com>
5535
5536 * plugin.cc (add_input_file,add_input_library)
5537 (Plugin_manager::add_input_file): Make filename arguments const.
5538 * plugin.h (Plugin_manager::add_input_file): Make filename arguments
5539 const.
5540
3e235302
DK
55412010-06-16 Doug Kwan <dougkwan@google.com>
5542
5543 * arm.cc (Target_arm::do_finalize_sections): Do not emit an
5544 .ARM.attributes section if we have not merged any input
5545 attributes sections.
5546
106e8a6c
DK
55472010-06-15 Viktor Kutuzov <vkutuzov@accesssoftek.com>
5548
5549 * arm.cc: Allow combining objects with no EABI version
5550 information.
5551
91ff43fe
RÁE
55522010-06-15 Rafael Espindola <espindola@google.com>
5553
5554 * plugin.cc (Plugin_hook::run): Set in_real_elf for the start symbol.
5555
68ed838c
ILT
55562010-06-15 Viktor Kutuzov <vkutuzov@accesssoftek.com>
5557
5558 * fileread.cc: Only #include <sys/uio.h> if HAVE_READV.
5559 (struct iovec): Correct !HAVE_READV definition.
5560
f3a2388f
CC
55612010-06-10 Cary Coutant <ccoutant@google.com>
5562
5563 * object.cc (Sized_relobj::do_layout): Defer layout for reloc sections.
5564 (Sized_relobj::do_layout_deferred_sections): Do layout for deferred
5565 reloc sections.
5566 * object.h (Sized_relobj::deferred_layout_relocs_): New data member.
5567
5568 PR 11683
5569 * symtab.h (Symbol::is_placeholder): New member function.
5570 * target-reloc.h (relocate_section): Check for placeholder symbols.
5571
5572 * testsuite/Makefile.am (plugin_test_8): New test.
5573 (plugin_test_9): New test.
5574 * testsuite/Makefile.in: Regenerate.
5575
e1df38aa
NC
55762010-06-09 Nick Clifton <nickc@redhat.com>
5577
5578 * yyscript.y (input_list_element): Allow strings prefixed with
5579 the '-' character. Treat these as libraries.
5580 * script.cc (script_add_library): New function. Adds a library
5581 specified by "-l<name>" found in an input script.
5582 * script-c.h: Add prototype for script_add_library.
5583
25bbe950
DK
55842010-06-07 Doug Kwan <dougkwan@google.com>
5585
5586 * arm.cc (Target_arm::do_relax): Reserve more space for stubs.
5587 Restrict stub-group size to be within long conditional branch
5588 range when working around cortex-A8 erratum.
5589
0f32ea4c
ILT
55902010-06-07 Damien Diederen <dd@crosstwine.com>
5591
5592 * gold-threads.cc (Lock_impl_threads::Lock_impl_threads): Correct
5593 #ifdef typo.
5594
8fe2a369
ST
55952010-06-03 Sriraman Tallam <tmsriram@google.com>
5596
5597 PR gold/11658
5598 * output.cc
5599 (Output_section::Input_section_sort_entry::compare_section_ordering):
5600 Change to return non-zero correctly.
5601 (Output_section::Input_section_sort_section_order_index_compare
5602 ::operator()): Change to fix ambiguity in comparisons.
5603
6e9ba2ca
ST
56042010-06-01 Sriraman Tallam <tmsriram@google.com>
5605
5606 * gold.h (is_wildcard_string): New function.
5607 * layout.cc (Layout::layout): Pass this pointer to add_input_section.
5608 (Layout::layout_eh_frame): Ditto.
5609 (Layout::find_section_order_index): New method.
5610 (Layout::read_layout_from_file): New method.
5611 * layout.h (Layout::find_section_order_index): New method.
5612 (Layout::read_layout_from_file): New method.
5613 (Layout::input_section_position_): New private member.
5614 (Layout::input_section_glob_): New private member.
5615 * main.cc (main): Call read_layout_from_file here.
5616 * options.h (--section-ordering-file): New option.
5617 * output.cc (Output_section::input_section_order_specified_): New
5618 member.
5619 (Output_section::Output_section): Initialize new member.
5620 (Output_section::add_input_section): Add new parameter.
5621 Keep input sections when --section-ordering-file is used.
5622 (Output_section::set_final_data_size): Sort input sections when
5623 section ordering file is specified.
5624 (Output_section::Input_section_sort_entry): Add new parameter.
5625 Check sorting type.
5626 (Output_section::Input_section_sort_entry::compare_section_ordering):
5627 New method.
5628 (Output_section::Input_section_sort_compare::operator()): Change to
5629 consider section_order_index.
5630 (Output_section::Input_section_sort_init_fini_compare::operator()):
5631 Change to consider section_order_index.
5632 (Output_section::Input_section_sort_section_order_index_compare
5633 ::operator()): New method.
5634 (Output_section::sort_attached_input_sections): Change to sort
5635 according to section order when specified.
e1df38aa
NC
5636 (Output_section::add_input_section<32, true>): Add new parameter.
5637 (Output_section::add_input_section<64, true>): Add new parameter.
5638 (Output_section::add_input_section<32, false>): Add new parameter.
5639 (Output_section::add_input_section<64, false>): Add new parameter.
6e9ba2ca
ST
5640 * output.h (Output_section::add_input_section): Add new parameter.
5641 (Output_section::input_section_order_specified): New
5642 method.
5643 (Output_section::set_input_section_order_specified): New method.
5644 (Input_section::Input_section): Initialize section_order_index_.
5645 (Input_section::section_order_index): New method.
5646 (Input_section::set_section_order_index): New method.
5647 (Input_section::section_order_index_): New member.
5648 (Input_section::Input_section_sort_section_order_index_compare): New
5649 struct.
5650 (Output_section::input_section_order_specified_): New member.
5651 * script-sections.cc (is_wildcard_string): Delete and move modified
5652 method to gold.h.
5653 (Output_section_element_input::Output_section_element_input): Modify
5654 call to is_wildcard_string.
5655 (Output_section_element_input::Input_section_pattern
5656 ::Input_section_pattern): Ditto.
5657 (Output_section_element_input::Output_section_element_input): Ditto.
5658 * testsuite/Makefile.am (final_layout): New test case.
5659 * testsuite/Makefile.in: Regenerate.
5660 * testsuite/final_layout.cc: New file.
5661 * testsuite/final_layout.sh: New file.
5662
3537c84b
RÁE
56632010-06-01 Rafael Espindola <espindola@google.com>
5664
5665 * plugin.cc (Plugin::load): Pass the output name to the plugin.
5666
105b6afd
RÁE
56672010-06-01 Rafael Espindola <espindola@google.com>
5668
5669 * plugin.cc (Sized_pluginobj::::do_add_symbols): Correctly set the
5670 visibility of symbols.
5671
29e11421
DK
56722010-05-27 Doug Kwan <dougkwan@google.com>
5673
5674 * object.cc (Sized_relobj::do_finalize_local_symbols): Use offset
5675 from start of output section instead of address for a local symbol
5676 in a merged or relaxed section when doing a relocatable link.
5677
5e0f337e
RÁE
56782010-05-26 Rafael Espindola <espindola@google.com>
5679
703d02da 5680 PR 11604
5e0f337e
RÁE
5681 * gold/object.cc(Sized_relobj::do_layout_deferred_sections): Avoid
5682 adding sections the garbage collector removed.
5683 * gold/testsuite/Makefile.am: Add test.
5684 * gold/testsuite/Makefile.in: Regenerate.
5685 * gold/testsuite/plugin_test_7.sh: New.
5686 * gold/testsuite/plugin_test_7_1.c: New.
5687 * gold/testsuite/plugin_test_7_2.c: New.
5688
f4187277
RÁE
56892010-05-26 Rafael Espindola <espindola@google.com>
5690
5691 * script-sections.cc (Output_section_definition::set_section_addresses):
5692 Check for --section-start.
5693
5c388529
DK
56942010-05-26 Doug Kwan <dougkwan@google.com>
5695
5696 * arm.cc (Arm_scan_relocatable_relocs): New class.
5697 (Target_arm::relocate_special_relocatable): New method.
5698 (Arm_relocate_functions::arm_branch_common): Handle relocatable link.
5699 (Arm_relocate_functions::thumb_branch_common): Same.
5700 (Target_arm::scan_relocatable_relocs): Use Arm_scan_relocatable_relocs
5701 instead of Default_scan_relocatable_relocs.
5702 * target-reloc.h (relocate_for_relocatable): Let target handle
5703 relocation strategy Relocatable_relocs::RELOC_SPECIAL.
5704 * target.h (Sized_target::relocate_special_relocatable): New method.
5705
bca1c3ae
ILT
57062010-05-25 Viktor Kutuzov <vkutuzov@accesssoftek.com>
5707
5708 * timer.cc: Only #include <sys/times.h> if HAVE_TIMES is defined.
5709
0439c796
DK
57102010-05-23 Doug Kwan <dougkwan@google.com>
5711
5712 * arm.cc (Arm_input_section::do_output_offset): Use convert_types
5713 instead of a cast.
5714 (Target_arm::apply_cortex_a8_workaround): Rewrite a conditional branch
5715 with a direct branch, not a conditional branch, to a stub.
5716 * merge.cc (Output_merge_base::record_input_section): New method
5717 defintion.
5718 (Output_merge_data::do_add_input_section): Record input section if
5719 keeps-input-sections flag is set.
5720 (Output_merge_string::do_add_input_section): Ditto.
5721 * merge.h (Output_merge_base::Output_merge_base): Initialize new data
5722 members KEEPS_INPUT_SECTIONS_, FIRST_RELOBJ_, FIRST_SHNDX_ and
5723 INPUT_SECTIONS_.
5724 (Output_merge_base::keeps_input_sections,
5725 Output_merge_base::set_keeps_input_sections,
5726 Output_merge_base::first_relobj, Output_merge_base::first_shndx): New
5727 method definitions.
5728 (Output_merge_base::Input_sections): New type declaration.
5729 (Output_merge_base::input_sections_begin,
5730 Output_merge_base::input_sections_end,
5731 Output_merge_base::do_set_keeps_input_sections): New method definitions.
5732 (Output_merge_base::bool keeps_input_sections_,
5733 Output_merge_base::first_relobj_, Output_merge_base::first_shndx_,
5734 Output_merge_base::input_sections_): New data members.
5735 (Output_merge_data::do_set_keeps_input_sections): New method
5736 defintion.
5737 (Output_merge_string::do_set_keeps_input_sections): Ditto.
5738 * output.cc (Output_section::Input_section::relobj): Move method
5739 defintion from class declaration to here and handle merge sections.
5740 (Output_section::Input_section::shndx): Ditto.
5741 (Output_section::Output_section): Remove initializations of removed
5742 data members and initialize new data member LOOKUP_MAPS_.
5743 (Output_section::add_input_section): Set keeps-input-sections flag
5744 for a newly created merge output section as appropriate. Adjust code
5745 to use Output_section_lookup_maps class.
5746 (Output_section::add_relaxed_input_section): Adjst code for lookup
5747 maps code refactoring.
2e702c99 5748 (Output_section::add_merge_input_section): Add a new parameter
0439c796
DK
5749 KEEPS_INPUT_SECTION. Adjust code to use Output_section_lookup_maps
5750 class. If adding input section to a newly created merge output
5751 section fails, remove the new merge section.
5752 (Output_section::convert_input_sections_in_list_to_relaxed_input_sections):
e1df38aa 5753 Adjust code for use of the Output_section_lookup_maps class.
2e702c99 5754 (Output_section::find_merge_section): Ditto.
0439c796 5755 (Output_section::build_lookup_maps): New method defintion.
2e702c99 5756 (Output_section::find_relaxed_input_section): Adjust code to use
0439c796
DK
5757 Output_section_lookup_maps class.
5758 (Output_section::get_input_sections): Export merge sections. Adjust
5759 code to use Output_section_lookup_maps class.
5760 (Output_section:::add_script_input_section): Adjust code to use
5761 Output_section_lookup_maps class. Update lookup maps for merge
5762 sections also.
5763 (Output_section::discard_states): Use Output_section_lookup_maps.
5764 (Output_section::restore_states): Same.
5765 * output.h (Merge_section_properties): Move class defintion out of
5766 Output_section.
5767 (Output_section_lookup_maps): New class.
5768 (Output_section::Input_section::is_merge_section): New method
5769 defintion.
5770 (Output_section::Input_section::relobj): Move defintion out of class
5771 defintion. Declare method only.
5772 (Output_section::Input_section::shndx): Ditto.
5773 (Output_section::Input_section::output_merge_base): New method defintion.
2e702c99 5774 (Output_section::Input_section::u2_.pomb): New union field.
0439c796
DK
5775 (Output_section::Merge_section_by_properties_map,
5776 Output_section::Output_section_data_by_input_section_map,
5777 Output_section::Ouptut_relaxed_input_section_by_input_section_map):
5778 Remove types.
2e702c99 5779 (Output_section::add_merge_input_section): Add new parameter
0439c796
DK
5780 KEEPS_INPUT_SECTIONS.
5781 (Output_section::build_lookup_maps): New method declaration.
5782 (Output_section::merge_section_map_,
5783 Output_section::merge_section_by_properties_map_,
5784 Output_section::relaxed_input_section_map_,
5785 Output_section::is_relaxed_input_section_map_valid_): Remove data
5786 members.
5787 (Output_section::lookup_maps_): New data member.
5788
76295588
L
57892010-05-21 Doug Kwan <dougkwan@google.com>
5790
5791 PR gold/11619
5792 * arm.cc (Arm_input_section::do_output_offset): Add a cast to
5793 avoid a compilation error.
5794
d103a984
RÁE
57952010-05-19 Rafael Espindola <espindola@google.com>
5796
5797 * script-sections.cc (Output_section_definition::allocate_to_segment):
5798 Update the phdrs_list even when the output section is NULL.
5799 * testsuite/Makefile.am: Add test.
5800 * testsuite/Makefile.in: Regenerate.
5801 * testsuite/script_test_9.cc: New.
5802 * testsuite/script_test_9.sh: New.
5803 * testsuite/script_test_9.t: New.
5804
6625d24e
DK
58052010-05-19 Doug Kwan <dougkwan@google.com>
5806
5807 * arm.cc (Arm_input_section::original_size): New method.
5808 (Arm_input_section::do_addralign): Add a cast.
5809 (Arm_input_section::do_output_offset): Remove static cast.
5810 (Arm_input_section::original_addralign,
5811 Arm_input_section::original_size_): Change type to uint32_t.
5812 (Arm_input_section::init): Add safe casts for section alignment
5813 and size.
5814 (Arm_input_section::set_final_data_size): Do not set address and
5815 offset of stub table.
5816 (Arm_output_section::fix_exidx_coverage): Change use of of
5817 Output_section::Simple_input_section to that of
5818 Output_section::Input_section.
5819 (Target_arm::do_relax): Set addresses and file offsets of Stub_tables
5820 except for the first pass.
5821 * output.cc (Output_section::get_input_sections): Change type of
5822 input_sections to std::list<Input_section>.
5823 (Output_section::add_script_input_section): Rename from
5824 Output_section::add_simple_input_section. Change type of SIS
5825 parameter from Simple_input_section to Input_section.
5826 * output.h (Output_section::Simple_input_section): Remove class.
5827 (Output_section::Input_section): Change class visibility to public.
5828 (Output_section::Input_section::addralign): Use stored alignments
5829 for special input sections if set.
5830 (Output_section::Input_section::set_addralign): New method.
5831 (Output_section::get_input_sections): Change parameter type from
5832 list of Simple_input_section to list of Input_section.
5833 (Output_section::add_script_input_section): Rename from
5834 Output_section::add_simple_input_section. Change first parameter's
5835 type from Simple_input_section to Input_section and remove the
5836 second and third parameters.
5837 * script-sections.cc (Input_section::Input_section_list): Change
5838 type to list of Output_section::Input_section/
5839 (Input_section_info::Input_section_info): Change parameter type of
5840 INPUT_SECTION to Output_section::Input_section.
5841 (Input_section_info::input_section): Change return type.
5842 (Input_section_info::input_section_): Change type to
5843 Output_section::Input_section.
5844 (Output_section_element_input::set_section_addresses): Adjust code
5845 to use Output_section::Input_section instead of
5846 Output_section::Simple_input_section. Adjust code for renaming
5847 of Output_section::add_simple_input_section.
5848 (Orphan_output_section::set_section_addresses): Ditto.
5849
e1e82ea4
RW
58502010-05-18 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
5851
5852 * gold.h (Unordered_multimap, Unordered_map): Fix defines for
5853 when neither HAVE_TR1_UNORDERED_MAP nor HAVE_EXT_HASH_MAP are set.
5854
91e75c8a
RÁE
58552010-05-18 Rafael Espindola <espindola@google.com>
5856
5857 * options.cc (General_options::finalize): Handle -nostdlib.
5858 * options.h (nostdlib): New option.
5859 * script.cc (script_add_search_dir): Handle -nostdlib.
5860
da59ad79
DK
58612010-05-12 Doug Kwan <dougkwan@google.com>
5862
5863 * arm.cc (Target_arm::do_finalize_sections): Create an empty
5864 attributes section only if there no attributes section after merging.
5865 (Target_arm::merge_object_attributes): Move value of
e1df38aa 5866 Tag_MPextension_use_legacy to that of Tag_MPextension_use.
da59ad79
DK
5867 Handle Tag_DIV_use and Tag_MPextension_use_legacy.
5868 * testsuite/Makefile.am (check_SCRIPTS): Add arm_attr_merge.sh
5869 (check_DATA): Add arm_attr_merge_6.stdout, arm_attr_merge_6r_stdout
5870 and arm_attr_merge_7.stdout.
5871 (arm_attr_merge_6.stdout, arm_attr_merge_6 arm_attr_merge_6a.o
5872 arm_attr_merge_6b.o, arm_attr_merge_6r.stdout, arm_attr_merge_6r,
5873 arm_attr_merge_7.stdout, arm_attr_merge_7, arm_attr_merge_7a.o,
5874 arm_attr_merge_7b.o): New rules.
5875 (MOSTLYCLEANFILES): Add arm_attr_merge_6, arm_attr_merge_6r and
5876 arm_attr_merge_7
5877 * testsuite/Makefile.in: Regenerate.
5878 * testsuite/arm_attr_merge.sh: New file.
5879 * testsuite/arm_attr_merge_[67][ab].s: Same.
5880
3e01a7fd
NC
58812010-05-05 Nick Clifton <nickc@redhat.com>
5882
5883 * po/es.po: Updated Spanish translation.
5884
7ad2014a
L
58852010-04-27 H.J. Lu <hongjiu.lu@intel.com>
5886
5887 * Makefile.am (install-exec-local): Properly install gold as
5888 default cross linker.
5889 * Makefile.in: Regenerated.
5890
4fda8867
NC
58912010-04-27 H.J. Lu <hongjiu.lu@intel.com>
5892 Nick Clifton <nickc@redhat.com>
5893
5894 * configure.ac (install_as_default): Define and set to false
5895 unless --enable-gold or --enable-gold=both/gold has been
5896 specified.
5897 * configure: Regenerate.
5898
5899 * Makefile.am (install-exec-local): Install the executable as
5900 'ld.gold'. If install_as_default is true then also install it as
5901 'ld'.
5902 * Makefile.in: Regenerated.
5903
bd288ea2
ILT
59042010-04-24 Ian Lance Taylor <iant@google.com>
5905
5906 * layout.cc (Layout::layout_reloc): In relocatable link don't
5907 combine reloc sections for grouped sections.
5908
ef38fd8a
ST
59092010-04-23 Sriraman Tallam <tmsriram@google.com>
5910
5911 * gc.h (gc_process_relocs): Pass information on relocs pointing to
5912 sections that are not ordinary to icf.
5913 * icf.cc (get_section_contents): Handle relocation pointing to section
5914 with no object or shndx information.
5915 * testsuite/Makefile.am: Remove icf_virtual_function_folding_test.sh
5916 * testsuite/Makefile.in: Regenerate.
5917 * testsuite/icf_virtual_function_folding_test.cc: Remove printf.
5918 * testsuite/icf_virtual_function_folding_test.sh: Delete file.
5919
f6973bdc
ILT
59202010-04-22 Ian Lance Taylor <iant@google.com>
5921
5922 * expression.cc (Expression::Expression_eval_info): Add
5923 result_alignment_pointer field.
5924 (Expression::eval_with_dot): Add result_alignment_pointer
5925 parameter. Change all callers.
5926 (Expression::eval_maybe_dot): Likewise.
5927 (class Binary_expression): Add alignment_pointer parameter to
5928 left_value and right_value. Change all callers.
5929 (BINARY_EXPRESSION): Set result alignment.
5930 (class Trinary_expression): Add alignment_pointer parameter to
5931 arg2_value and arg3_value. Change all callers.
5932 (Trinary_cond::value): Set result alignment.
5933 (Max_expression::value, Min_expression::value): Likewise.
5934 (Align_expression::value): Likewise.
5935 * script-sections.cc (class Sections_element): Add dot_alignment
5936 parameter to set_section_addresses virtual function. Update
5937 instantiations.
5938 (class Output_section_element): Likewise.
5939 (Script_sections::create_segments): Add dot_alignment parameter.
5940 Change all callers.
5941 (Script_sections::create_segments_from_phdrs_clause): Likewise.
5942 (Script_sections::set_phdrs_clause_addresses): Likewise.
5943 * script-sections.h: Update declarations.
5944 * script.h: Update declarations.
5945 * output.h (Output_segment::set_minimum_p_align): Don't decrease
5946 min_p_align.
5947 * testsuite/script_test_3.t: Set large alignment.
5948 * testsuite/script_test_3.sh: Make sure that at least one LOAD
5949 segment has expected alignment.
5950
9c9c98a5
NC
59512010-04-22 Nick Clifton <nickc@redhat.com>
5952
5953 * po/gold.pot: Updated by the Translation project.
5954 * po/vi.po: Updated Vietnamese translation.
5955
2253bfba
L
59562010-04-22 H.J. Lu <hongjiu.lu@intel.com>
5957
5958 * testsuite/Makefile.am (check_PROGRAMS): Add
5959 icf_virtual_function_folding_test.
5960 * testsuite/Makefile.in: Regenerated.
5961
85fdf906
AH
59622010-04-15 Andrew Haley <aph@redhat.com>
5963
5964 * options.h (merge_exidx_entries): New option.
5965 * arm.cc (class Arm_exidx_fixup): Add new arg, merge_exidx_entries.
5966 (class Arm_exidx_fixup::merge_exidx_entries_): New member.
5967 (Output_section::fix_exidx_coverage): Add new arg, merge_exidx_entries.
5968 (Target_arm::merge_exidx_entries): New function.
5969 (process_exidx_entry): Don't merge if merge_exidx_entries_ is false.
5970 (Arm_output_section::fix_exidx_coverage): Pass merge_exidx_entries
5971 to Arm_exidx_fixup constructor.
5972 Add new arg, merge_exidx_entries.
5973 (Target_arm::fix_exidx_coverage): pass merge_exidx_entries to
5974 Arm_output_section::fix_exidx_coverage.
5975
ce97fa81
ST
59762010-04-18 Sriraman Tallam <tmsriram@google.com>
5977
5978 * icf.cc (get_section_contents): Check for preemptible functions.
5979 Ignore addend when appropriate.
5980 * symtab.cc (should_add_dynsym_entry): Add new parameter. Check for
5981 section folded.
5982 (add_from_relobj): Check for section folded.
5983 (set_dynsym_indexes): Fix call to should_add_dynsym_entry.
5984 * symtab.h (should_add_dynsym_entry): Add new parameter.
5985 * target-reloc.h (scan_relocs): Check for section folded.
5986 * x86_64.cc (Target_x86_64::Scan::possible_function_pointer_reloc):
5987 Check reloc types for function pointers in shared objects.
5988 * testsuite/Makefile.am (icf_virtual_function_folding_test): New test
5989 case.
5990 (icf_preemptible_functions_test): New test case.
5991 (icf_string_merge_test): New test case.
5992 * testsuite.Makefile.in: Regenerate.
5993 * testsuite/icf_safe_so_test.sh: Change to not fold foo_glob and
5994 bar_glob. Refactor code.
5995 * testsuite/icf_preemptible_functions_test.cc: New file.
5996 * testsuite/icf_preemptible_functions_test.sh: New file.
5997 * testsuite/icf_string_merge_test.cc: New file.
5998 * testsuite/icf_string_merge_test.sh: New file.
5999 * testsuite/icf_virtual_function_folding_test.cc: New file.
6000 * testsuite/icf_virtual_function_folding_test.sh: New file.
6001
04ceb17c
DK
60022010-04-14 Doug Kwan <dougkwan@google.com>
6003
6004 * arm.cc (Arm_output_section::fix_exidx_coverage): Mark object
6005 for local symbol recounting if we remove a section due to ICF.
6006 * gold.cc (queue_middle_gc_tasks): Create a dummy blocker if
6007 there are no regular objects in input.
6008
153e7da4
DK
60092010-04-13 Doug Kwan <dougkwan@google.com>
6010
6011 * arm.cc (Arm_input_section::set_final_data_size): Compute
6012 accurate final data size instead of using current data size.
6013
4dbd9faf
DK
60142010-04-09 Doug Kwan <dougkwan@google.com>
6015
6016 * layout.cc (Layout::choose_output_section): Handle script section
6017 types.
6018 (Layout::make_output_section_for_script): Add section type parameter.
6019 Handle script section types.
6020 * layout.h (Layout::make_output_section_for_script): Add section
6021 type parameter.
6022 * output.cc (Output_section::Output_section): Initialize data member
6023 is_noload_.
6024 (Output_section::do_reset_address_and_file_offset): Do not set address
6025 to 0 if section is a NOLOAD section.
6026 * output.h (Output_section::is_noload): New method.
6027 (Output_section::set_is_noload): Ditto.
6028 (Output_section::is_noload_): New data member.
6029 * script-c.h (Script_section_type): New enum type.
6030 (struct Parser_output_section_header): Add new file section_type.
6031 * script-sections.cc (Sections_element::output_section_name): Add
6032 parameter for returning script section type.
6033 (Output_section_definition::output_section_name): Ditto.
6034 (Output_section_definition::section_type)P; New method.
6035 (Output_section_definiton::script_section_type_name): Ditto.
6036 (Output_section_definition::script_section_type_): New data member.
6037 (Output_section_definition::Output_section_definition): Initialize
6038 data member Output_section_definition::script_section_type_.
6039 (Output_section_definition::create_sections): Pass script section type
6040 to Layout::make_output_section_for_script.
6041 (Output_section_definition::output_section_name): Return script
6042 section type to caller.
6043 (Output_section_definition::set_section_address): Do not advance
6044 dot value and load address if section type is NOLOAD. Set address
6045 of NOLOAD sections regardless of section flags.
6046 (Output_section_definition::print): Print section type if it is
6047 not SCRIPT_SECTION_TYPE_NONE.
6048 (Output_section_definition::section_type): New method.
6049 (Output_section_definition::script_section_type_name): Ditto.
6050 (Script_sections::output_section_name): Add new parameter
6051 PSECTION_TYPE for returning script section type. Pass it to
6052 section elements. Handle discard sections.
6053 (Sort_output_sections::operator()): Handle NOLOAD sections.
6054 * script-sections.h (Script_sections::Section_type): New enum type.
2e702c99 6055 (Script_sections::output_section_name): Add a new parameter for
4dbd9faf
DK
6056 returning script section type.
6057 * script.cc (script_keyword_parsecodes): Add keywords COPY, DSECT,
6058 INFO and NOLOAD.
6059 * yyscript.y (union): Add new field SECTION_TYPE.
6060 (COPY, DSECT, INFO, NOLOAD): New tokens.
6061 (opt_address_and_section_type): Change type to output_section_header.
6062 (section_type): New non-terminal
6063 (section_header): Handle section type.
2253bfba 6064 (opt_address_and_section_type): Return section type value.
4dbd9faf 6065
721ea635
L
60662010-04-09 H.J. Lu <hongjiu.lu@intel.com>
6067
6068 * testsuite/plugin_common_test_1.c (foo): Add prototype.
6069 * testsuite/plugin_common_test_2.c (foo): Likewise.
6070
6bf924b0
DK
60712010-04-08 Doug Kwan <dougkwan@google.com>
6072
6073 * merge.cc (Output_merge_data::set_final_data_size): Handle empty
6074 Output_merge_data.
6075 * output.cc (Output_section::add_merge_input_section): Simplify
6076 code and return status of Output_merge_base::add_input_section.
e1df38aa 6077 Update merge section map only if Output_merge_base::add_input_section
6bf924b0
DK
6078 returns true.
6079
24af6f92
DK
60802010-04-07 Doug Kwan <dougkwan@google.com>
6081
6082 * arm.cc (Arm_relobj::scan_section_for_cortex_a8_erratum): Warn
6083 if section is marked as containing instructions but has no mapping
6084 symbols.
6085 (Arm_relobj::do_count_local_symbols): Call adjust_sym_shndx to get
6086 correct section index.
6087 (Arm_relobj::find_linked_text_section): Ditto.
6088
00698fc5
CC
60892010-04-07 Cary Coutant <ccoutant@google.com>
6090
6091 * archive.cc (include_member): Destroy Read_symbols_data object before
6092 releasing file.
6093 * object.cc (Read_symbols_data::~Read_symbols_data) New destructor.
6094 * object.h (Read_symbols_data::Read_symbols_data) New constructor.
6095 (Read_symbols_data::~Read_symbols_data) New destructor.
6096 (Section_relocs::Section_relocs) New constructor.
6097 (Section_relocs::~Section_relocs) New destructor.
6098 (Read_relocs_data::Read_relocs_data) New constructor.
6099 (Read_relocs_data::~Read_relocs_data) New destructor.
6100 * testsuite/binary_unittest.cc (Sized_binary_test): Set sd member
6101 pointers to NULL after deleting.
6102
7296d933
DK
61032010-04-07 Doug Kwan <dougkwan@google.com>
6104
6105 * arm.cc: Replace "endianity" with "endianness" in comments.
6106 (Arm_exidx_cantunwind): Ditto.
6107 (Arm_relobj::Arm_relobj): Initialize merge_flags_and_attribures.
6108 (Arm_relobj::merge_flags_and_attributes): New method.
6109 (Arm_relobj::merge_flags_and_attributes_): New data member.
6110 (Arm_exidx_cantunwind::do_fixed_endian_write): Fix formatting.
6111 (Arm_relobj::scan_sections_for_stubs): Ditto.
6112 (Arm_relobj::do_read_symbols): Check to see if we really want to
6113 merge processor-specific flags and attributes. Exit early if
6114 an object is empty except for section names and the undefined symbol.
6115 (Target_arm::do_finalize_sections): Move check for ELF format to
6116 Arm_relobj::do_read_symbols. Merge processor specific flags and
6117 attributes from a regular object only when we have determined that
6118 it is aapropriate. Do not create an .ARM.attributes section in
6119 output if there is no regular input object.
6120 (Target_arm::merge_processor_specific_flags): Check
6121 --warn-mismatch before printing any error.
6122 (Target_arm::merge_object_attributes): Ditto.
6123 * gold.cc (queue_middle_tasks): Handle the case in which there is
6124 no regular object in input.
6125 * options.cc (General_options::parse_EB): New method.
6126 (General_options::parse_EL): Same.
6127 (General_options::General_options): Initialize endianness_.
6128 * options.h (-EB, -EL, -no-pipeline-knowledge, -p, --warn-mismatch):
6129 New options.
6130 (General_options::Endianness): New enum.
6131 (General_options::endianness): New method.
6132 (General_options::endianness_): New data member.
6133 * parameters.cc (Parameters::set_options): Check target endianness.
6134 (Parameters::set_target_once): Ditto.
6135 (Parameters::check_target_endianness): New method.
6136 (parameters_force_valid_target): If either -EL or -EB is specified,
6137 use it to define endianness of default target.
6138 * parameters.h (Parameters::check_target_endianness): New method
6139 declaration.
6140 * target.h (class Target): Change "endianity" to "endianness"
6141 in comments.
6142
efc8d4f2
RW
61432010-04-07 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
6144
6145 * configure.ac (AM_INIT_AUTOMAKE): Add option no-dist.
6146 * configure: Regenerate.
6147 * Makefile.in: Regenerate.
6148 * testsuite/Makefile.in: Regenerate.
6149
be234d88
CC
61502010-04-06 Cary Coutant <ccoutant@google.com>
6151
6152 gcc PR lto/42757
6153 * plugin.cc (Pluginobj::get_symbol_resolution_info): Check for
6154 prevailing definitions of common symbols.
6155 * testsuite/plugin_test_6.sh: New test case.
6156 * testsuite/plugin_common_test_1.c: New test case.
6157 * testsuite/plugin_common_test_2.c: New test case.
6158 * testsuite/Makefile.am (plugin_test_6): New test case.
6159 * testsuite/Makefile.in: Regenerate.
6160
bd32c6bd
NC
61612010-04-06 Nick Clifton <nickc@redhat.com>
6162
6163 * po/vi.po: New Vietnamese translation.
6164
323c532f
DK
61652010-03-30 Doug Kwan <dougkwan@google.com>
6166
6167 * arm.cc (Target_arm::using_thumb_only): Handle v6-M
6168
4fcd97eb
DK
61692010-03-25 Doug Kwan <dougkwan@google.com>
6170
6171 * gold/arm.cc (Arm_exidx_fixup::update_offset_map): Rearrange code
6172 to avoid a conversion warning on a 32-bit host.
6173
4ebf39db
ILT
61742010-03-24 Ian Lance Taylor <iant@google.com>
6175
6176 * testsuite/script_test_3.t: Add a TLS segment.
6177 * testsuite/Makefile.am (check_PROGRAMS): Add
6178 tls_phdrs_script_test.
6179 (tls_phdrs_script_test_SOURCES): Define.
6180 (tls_phdrs_script_test_DEPENDENCIES): Define.
6181 (tls_phdrs_script_test_LDFLAGS): Define.
6182 (tls_phdrs_script_test_LDADD): Define.
6183 * testsuite/Makefile.in: Rebuild.
6184
4a599bdd
CC
61852010-03-23 Cary Coutant <ccoutant@google.com>
6186
6187 * fileread.cc (find_or_make_view): Fix comment.
6188
6c93b22c
ILT
61892010-03-23 Ian Lance Taylor <iant@google.com>
6190
6191 * script-sections.cc (class Orphan_section_placement): Define
6192 PLACE_TLS and PLACE_TLS_BSS.
6193 (Orphan_section_placement::Orphan_section_placement): Initialize
6194 new places.
6195 (Orphan_section_placement::find_place): Handle SHF_TLS sections.
6196 * testsuite/Makefile.am (check_PROGRAMS): Add tls_script_test.
6197 (tls_script_test_SOURCES): Define.
6198 (tls_script_test_DEPENDENCIES): Define.
6199 (tls_script_test_LDFLAGS): Define.
6200 (tls_script_test_LDADD): Define.
6201 * testsuite/Makefile.in: Rebuild.
6202
a2c7281b
DK
62032010-03-22 Doug Kwan <dougkwan@google.com>
6204
6205 * arm.cc (Arm_relocate_functions::abs8,
6206 Arm_relocate_functions::abs16): Use correct check for overflow
6207 specified in the ARM ELF specs.
6208 (Arm_relocate_functions): thumb_branch_common. Handle bit 1 of branch
6209 target of a BLX instruction specially.
6210 (Reloc_stub::stub_type_for_reloc): Ditto.
6211 (Relocate::relocate): Use symbolic names instead of numeric relocation
6212 codes to report error.
6213 (Target_arm::do_relox): Reduce default stub-group size for Cortex-A8
6214 workaround.
6215 * testsuite/Makefile.am (check_DATA): add thumb_blx_in_range.stdout,
6216 thumb_blx_out_of_range.stdout, thumb2_blx_in_range.stdout and
6217 thumb2_blx_out_of_range.stdout
6218 (thumb_bl_out_of_range, thumb_bl_out_of_range.o,
6219 thumb2_bl_out_of_range, thumb2_bl_out_of_range.o): Fix dependenices.
6220 (thumb_blx_in_range.stdout, thumb_blx_in_range, thumb_blx_in_range.o,
6221 thumb_blx_out_of_range.stdout, thumb_blx_out_of_range,
6222 thumb_blx_out_of_range.o, thumb2_blx_in_range.stdout,
6223 thumb2_blx_in_range, thumb2_blx_in_range.o,
6224 thumb2_blx_out_of_range.stdout, thumb2_blx_out_of_range,
6225 thumb2_blx_out_of_range.o): New rules.
2e702c99 6226 (MOSTLYCLEANFILES): Add thumb_blx_in_range, thumb_blx_out_of_range,
a2c7281b
DK
6227 thumb2_blx_in_range and thumb2_blx_out_of_range.
6228 * testsuite/Makefile.in: Regenerate.
6229 * arm_branch_in_range.sh: Add tests for THUMB BLX.
6230 * testsuite/thumb_blx_in_range.s: New file.
6231 * testsuite/thumb_blx_out_of_range.s: New file.
6232
b0193076
RÁE
62332010-03-22 Rafael Espindola <espindola@google.com>
6234
6235 * archive.cc (Should_include): Move to archive.h.
6236 (should_include_member): Make it a member of Archive.
6237 (Lib_group): New.
6238 (Add_lib_group_symbols): New.
6239 * archive.h: Include options.h.
6240 (Archive_member): Moved from Archive.
6241 (Should_include): Moved from archive.cc.
6242 (Lib_group): New.
6243 (Add_lib_group_symbols): New.
6244 * dynobj.cc (do_should_include_member): New.
6245 * dynobj.h (do_should_include_member): New.
6246 * gold.cc (queue_initial_tasks): Update call to queue.
6247 * main.cc (main): Print lib group stats.
6248 * object.cc (do_should_include_member): New.
6249 * object.h: Include archive.h.
6250 (Object::should_include_member): New.
6251 (Object::do_should_include_member): New.
6252 (Sized_relobj::do_should_include_member): New.
6253 * options.cc (General_options::parse_start_lib): New.
6254 (General_options::parse_end_lib): New.
6255 (Input_arguments::add_file): Handle lib groups.
6256 (Input_arguments::start_group): Check we are not in a lib.
6257 (Input_arguments::start_lib): New.
6258 (Input_arguments::end_lib): New.
6259 * options.h (General_options): Add start_lib and end_lib.
6260 (Input_argument::lib_): New.
6261 (Input_argument::lib): New.
6262 (Input_argument::is_lib): New.
6263 (Input_file_lib): New.
6264 (Input_arguments::in_lib_): New.
6265 (Input_arguments::in_lib): New.
6266 (Input_arguments::start_lib): New.
6267 (Input_arguments::end_lib_): New.
6268 * plugin.cc (Pluginobj::get_symbol_resolution_info): Mark symbols
6269 in unused members as preempted.
6270 (Sized_pluginobj::do_should_include_member): New.
6271 * plugin.h (Sized_pluginobj::do_should_include_member): New.
6272 * readsyms.cc (Read_symbols::locks): If we are just reading a member,
6273 return the blocker.
6274 (Read_symbols::do_whole_lib_group): New.
6275 (Read_symbols::do_lib_group): New.
6276 (Read_symbols::do_read_symbols): Handle lib groups.
6277 (Read_symbols::get_name): Handle lib groups.
6278 * readsyms.h (Read_symbols): Add an archive member pointer.
6279 (Read_symbols::do_whole_lib_group): New.
6280 (Read_symbols::do_lib_group): New.
6281 (Read_symbols::member_): New.
6282 * script.cc (read_input_script): Update call to queue_soon.
6283
d099120c
DK
62842010-03-19 Doug Kwan <dougkwan@google.com>
6285
6286 * arm.cc (Stub_table::Stub_table): Initialize new data members
6287 Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_.
6288 (Stub_table::add_reloc_stub): Assign stub offset and update
6289 Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_.
6290 (Stub_table::reloc_stubs_size_, Stub_table::reloc_stubs_addralign_):
6291 New data members.
2e702c99 6292 (Stub_table::update_data_size_and_addralign): Use
d099120c
DK
6293 Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_
6294 instead of going over all reloc stubs.
2e702c99 6295 (Stub_table::finalize_stubs): Do not assign reloc stub offsets.
d099120c
DK
6296 * stringpool.cc (Stringpool_template::Stringpool_template): Initialize
6297 Stringpool_template::offset_ to size of Stringpool_char.
2e702c99 6298 (Stringpool_template::new_key_offset): Remove code to initialize
d099120c
DK
6299 Stringpool_template::offset_.
6300 * stringpool.h (Stringpool_template::set_no_zero_null): Set
6301 Stringpool_template::offset_ to zero.
6302
1aa37384
DK
63032010-03-15 Doug Kwan <dougkwan@google.com>
6304
6305 * stringpool.cc (Stringpool_template::Stringpool_template): Initialize
6306 offset_.
6307 (Stringpool_template::new_key_offset): New method.
6308 (Stringpool_template::add_string): Assign offsets when adding new
6309 strings.
6310 (Stringpool_template::set_string_offsets): Do not set string offsets
6311 when not optimizing.
6312 * stringpool.h (Chunked_vector::Chunked_vector): Initialize data
6313 member size_.
2e702c99
RM
6314 (Chunked_vector::clear): Clear size_.
6315 (Chunked_vector::reserve): Call reserve method of all Element_vectors.
6316 (Chunked_vector::size): Return size_.
6317 (Chunked_vector::push_back): Use size_ to find insert position.
e1df38aa 6318 (Chunked_vector::size_): New data member.
1aa37384
DK
6319 (Stringpool_template::set_no_zero_null): Assert string set is empty.
6320 (Stringpool_template::new_key_offset): New method declaration.
6321 (Stringpool_template::offset_): New data member.
6322
b672b057
RÁE
63232010-03-15 Rafael Espindola <espindola@google.com>
6324
6325 * readsyms.cc (Read_symbols::do_read_symbols): Update calls to
6326 Add_symbols' constructor.
6327 * readsyms.h (Add_symbols): Remove the input_group member.
6328
b6848d3c
ILT
63292010-03-10 Ian Lance Taylor <iant@google.com>
6330
6331 * reloc.cc (Sized_relobj::split_stack_adjust_reltype): Call the
6332 target to ask whether a reference to a symbol requires a stack
6333 split.
6334 * target.h (Target::is_call_to_non_split): New function.
6335 (Target::do_is_call_to_non_split): Declare virtual function.
6336 * target.cc: Include "symtab.h".
6337 (Target::do_is_call_to_non_split): New function.
6338 * i386.cc (Target_i386::do_is_call_to_non_split): New function.
6339
a2a5469e
CC
63402010-03-10 Cary Coutant <ccoutant@google.com>
6341
6342 * fileread.cc (File_read::~File_read): Don't delete whole_file_view_.
6343 (File_read::open[1]): Remove initial mapping of whole_file_view_.
6344 (File_read::open[2]): Add whole_file_view_ to list of views.
6345 (File_read::make_view): Remove test of whole_file_view_.
6346 (File_read::find_or_make_view): Create whole_file_view_ if
6347 necessary.
6348 (File_read::clear_views): Replace bool parameter with enum;
6349 adjust all callers. Don't delete views with permanent data;
6350 do delete cached views and views from archives if
6351 --no-keep-files-mapped is set. Set whole_file_view_ to NULL
6352 if clearing the corresponding view.
6353 * fileread.h (File_read::Clear_views_mode): New enum.
6354 (File_read::View::is_permanent_view): New method.
6355 (File_read::clear_views): Replace bool parameter
6356 with enum; adjust all callers.
6357 * options.h (General_options): Change keep_files_mapped option;
6358 add map_whole_files.
6359 * readsyms.cc (Add_symbols::run): Delete sd_ object before
6360 releasing the file.
6361 * reloc.cc (Scan_relocs::run): Delete rd_ object before releasing
6362 the file.
6363
8861f32b
DM
63642010-03-10 David S. Miller <davem@davemloft.net>
6365
6366 * sparc.cc (Target_sparc::Scan::local): Accept R_SPARC_WPLT30.
6367
d62d0f5f
ST
63682010-03-09 Sriraman Tallam <tmsriram@google.com>
6369
6370 * icf.cc (get_section_contents): Add '@' marker after processing the
6371 merge reloc.
6372
9177756d
DK
63732010-03-08 Doug Kwan <dougkwan@google.com>
6374
6375 * gold/arm.cc (Arm_exidx_fixup::update_offset_map): Fix build breakage
6376 due to a conversion warning.
6377 (Arm_relobj::update_output_local_symbol_count): Check for local
6378 symbol with unset output index.
6379
9e9e071b
ILT
63802010-03-05 Ian Lance Taylor <iant@google.com>
6381
6382 * options.h (class General_options): Add --spare-dynamic-tags.
6383 * output.cc (Output_data_dynamic::set_final_data_size): Implement
6384 --spare-dynamic-tags.
6385
a81ee015
ILT
63862010-03-05 Ian Lance Taylor <iant@google.com>
6387
6388 * incremental.cc: Include "libiberty.h".
6389
44ec90b9
RO
63902010-03-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
6391
6392 * dynobj.h (Verdef::Verdef): Add is_info arg, is_info member
6393 function, is_info_ member.
6394 * dynobj.cc (Verdef::write): Set VER_FLG_INFO if this->is_info_.
6395 (Versions::Versions): Update caller.
6396 (Versions::define_base_version): Likewise.
6397 (Versions::add_def): Likewise.
6398
0897ed3b
ST
63992010-03-03 Sriraman Tallam <tmsriram@google.com>
6400
6401 * i386.cc (Target_i386::can_check_for_function_pointers): New function.
6402 (Scan::possible_function_pointer_reloc): New function.
6403 (Scan::local_reloc_may_be_function_pointer): Change to call
6404 possible_function_pointer_reloc.
6405 (Scan::global_reloc_may_be_function_pointer): Ditto.
6406 * icf.h (Icf::check_section_for_function_pointers): Change to reject
6407 relocations in ".data.rel.ro._ZTV" section.
6408 * testsuite/icf_safe_so_test.sh: Change to pass i386.
6409 * testsuite/icf_safe_so_test.cc: Ditto.
6410 * testsuite/icf_safe_test.cc: Ditto.
6411 * testsuite/icf_safe_test.sh: Ditto.
6412
d3bbad62
ILT
64132010-03-03 Viktor Kutuzov <vkutuzov@accesssoftek.com>
6414 Ian Lance Taylor <iant@google.com>
6415
6416 * target-reloc.h (relocate_section): Check the symbol table index
6417 for -1U before setting the local symbol index.
6418 (scan_relocatable_relocs): If copying the relocation, record that
6419 the local symbol is required.
6420 * object.h (Symbol_value::is_output_symtab_index_set): New
6421 function.
6422 (Symbol_value::may_be_discarded_from_output_symtab): New
6423 function.
6424 (Symbol_value::has_output_symtab_entry): New function.
6425 (Symbol_value::needs_output_symtab_entry): Remove.
6426 (Symbol_value::output_symtab_index): Make sure the symbol index is
6427 set.
6428 (Symbol_value::set_output_symtab_index): Make sure the symbol
6429 index is not set. Make sure the new index is valid.
6430 (Symbol_value::set_must_have_output_symtab_entry): New function.
6431 (Symbol_value::has_output_dynsym_entry): New function.
6432 (Symbol_value::set_output_dynsym_index): Make sure the new index
6433 is valid.
6434 (Sized_relobj::set_must_have_output_symtab_entry): New function.
6435 * object.cc (Sized_relobj::do_count_local_symbols): Only discard a
6436 local symbol if permitted.
6437 (Sized_relobj::do_finalize_local_symbols): Call
6438 is_output_symtab_index_set rather than needs_output_symtab_entry.
6439 (Sized_relobj::write_local_symbols): Call has_output_symtab_entry
6440 rather than needs_output_symtab_entry. Call
6441 has_output_dynsym_entry rather than needs_output_dynsym_entry.
6442 * arm.cc (Arm_relobj::update_output_local_symbol_count): Call
6443 is_output_symtab_index_set rather than needs_output_symtab_entry.
6444 * testsuite/discard_locals_relocatable_test.c: New file.
6445 * testsuite/discard_locals_test.sh: Test -r.
6446 * testsuite/Makefile.am (check_DATA): Add
6447 discard_locals_relocatable_test1.syms,
6448 discard_local_relocatable_test2.syms.
6449 (MOSTLYCLEANFILES): Likewise. Also add
6450 discard_locals_relocatable_test1.lout and
6451 discard_locals_relocatable_test2.out.
6452 (discard_locals_relocatable_test1.syms): New target.
6453 (discard_locals_relocatable_test.o): New target.
6454 (discard_locals_relocatable_test1.out): New target.
6455 (discard_locals_relocatable_test2.syms): New target.
6456 (discard_locals_relocatable_test2.out): New target.
6457 (various): Add missing ../ld-new dependencies.
6458 * testsuite/Makefile.in: Rebuild.
6459
7e8ccf26
NC
64602010-03-03 Nick Clifton <nickc@redhat.com>
6461
6462 * po/fi.po: New Finnish translation.
6463
2a0ff005
DK
64642010-03-01 Doug Kwan <dougkwan@google.com>
6465
6466 * layout.cc (Layout::Layout): Force section types of .init_array*,
6467 .preinit_array* and .fini_array* sections.
6468 * output.cc (Output_section::Input_section_sort_entry::has_priority):
6469 Fix check of return value of std::string::find.().
6470 (Output_section::Input_section_sort_compare::operator()): Remove
6471 comment about .init_array.
6472 (Output_section::Input_section_sort_init_fini_compare::operator()):
6473 New method.
6474 (Output_section::sort_attached_input_sections): Handle .init_array
6475 and .fini_array specially.
6476 * output.h (Output_section::Inut_section_sort_compare): Update
6477 comment.
6478 (Output_section::Input_section_sort_init_fini_compare): New struct.
6479
c3e4ae29
DK
64802010-02-26 Doug Kwan <dougkwan@google.com>
6481
6482 * arm.cc (Target_arm::Relocate::reloc_is_non_pic): Treat
6483 R_ARM_PREL31 and R_ARM_SBREL31 as position independent.
6484 * testsuite/debug_msg.sh: Avoid matching source line number for
6485 use of global variable undef_int.
6486
2fd9ae7a
DK
64872010-02-26 Doug Kwan <dougkwan@google.com>
6488
6489 * arm.cc (Target_arm::scan_reloc_for_stub): Move code handling
6490 R_ARM_V4BX to Target_arm::scan_reloc_section_for_stubs.
6491 (Target_arm::scan_reloc_section_for_stubs): Instead of calling
6492 scan_reloc_for_stub, do all processing of R_ARM_V4BX here.
6493 * options.cc (General_options::General_options): Initialize member
6494 fix_v4bx_.
6495 * testsuite/Makefile.am (check_SCRIPTS): Add arm_fix_v4bx.sh
6496 (check_DATA): Add arm_fix_v4bx.stdout, arm_fix_v4bx_interworking.stdout
6497 and rm_no_fix_v4bx.stdout
6498 (arm_fix_v4bx.stdout, arm_fix_v4bx, arm_fix_v4bx.o,
6499 arm_fix_v4bx_interworking.stdout, arm_fix_v4bx_interworking,
6500 arm_no_fix_v4bx.stdout, arm_no_fix_v4bx): New make rules.
6501 (MOSTLYCLEANFILES): Add arm_fix_v4bx, arm_fix_v4bx_interworking
6502 and arm_no_fix_v4bx.
6503 * Makefile.in: Regenerate.
6504 * testsuite/arm_fix_v4bx.s: New file.
6505 * testsuite/arm_fix_v4bx.sh: Ditto.
6506
67ec7d0b
DK
65072010-02-24 Doug Kwan <dougkwan@google.com>
6508
6509 * arm.cc (Target_arm::got_section): Make the .got section the first
6510 non RELRO section in the data segment.
6511 * testsuite/script_test_5.sh: Fix match patterns to avoid matching
6512 suffixes of section names.
6513
10165461
DK
65142010-02-24 Doug Kwan <dougkwan@google.com>
6515
6516 * arm.cc (Target_arm::do_finalize_sections): Skip processor specific
6517 flags and attributes merging if an input file is a binary file.
6518 * fileread.cc (Input_file::open): Record format of original file.
6519 * fileread.h (Input_file::Format): New enum type.
2e702c99 6520 (Input_file::Input_file): Initialize data member format_.
10165461
DK
6521 (Input_file::format): New method definition.
6522 (Input_file::format_):: New data member.
6523
4a54abbb
DK
65242010-02-24 Doug Kwan <dougkwan@google.com>
6525
6526 * arm.cc (Arm_output_data_got): New class.
6527 (ARM_TCB_SIZE): New constant
6528 (Target_arm): Use Arm_output_data_got instead of Output_data_got.
6529 (Arm_output_section::fix_exidx_coverage): Add a parameter for layout.
6530 If user uses a script with a SECTIONS clause, issue only a warning
6531 for a misplaced EXIDX input section. Otherwise, issue an error.
2e702c99 6532 (Arm_relobj::do_gc_process_relocs): Exit early if we are not doing
4a54abbb
DK
6533 garbage collection.
6534 (Target_arm::got_mode_index_entry): Handle static linking.
6535 (Target_arm::Scan::local): Ditto.
6536 (Target_arm::Scan::global): Ditto.
6537 (Target_arm::Relocate::relocate_tls): Handle static linking. Fix
6538 all incorrectly implemented relocations.
e1df38aa 6539 (Target_arm::fix_exidx_coverage): Pass layout to
4a54abbb
DK
6540 Arm_output_section::fix_exidx_coverage.
6541 * layout.cc (Layout::section_name_mapping): Remove trailing dots
6542 from ".ARM.exidx." and ".ARM.extab.".
6543
ca419a6f
ILT
65442010-02-23 Viktor Kutuzov <vkutuzov@accesssoftek.com>
6545
6546 * arm.cc (Target_arm::do_finalize_sections): Create attribute
6547 section if it does not already exist.
6548 * attributes.cc (Attributes_section_data::Attributes_section_data):
6549 Don't crash if size is zero.
6550
135b9c78
ILT
65512010-02-23 Viktor Kutuzov <vkutuzov@accesssoftek.com>
6552 Ian Lance Taylor <iant@google.com>
6553
6554 * gold.cc (queue_middle_tasks): If no input files were opened,
6555 exit.
6556 * workqueue.h (Task_function::Task_function): Assert that there is
6557 a blocker.
6558
bb0bfe4f
DK
65592010-02-22 Doug Kwan <dougkwan@google.com>
6560
6561 * gold-threads.h (Once::~Once): Explicitly define virtual destructor.
6562 * icf.cc (get_section_contents): Cast snprintf arguments to long long
6563 types to avoid warnings due to different uint64_t implementations
6564 on different hosts.
6565
2a2b6d42
DK
65662010-02-21 Doug Kwan <dougkwan@google.com>
6567
6568 * arm.cc (Arm_relocate_functions::arm_branch_common): Fix bug in
6569 handling of the maximum backward branch offset.
2e702c99 6570 (Arm_relocate_functions::thumb_branch_common): Ditto.
2a2b6d42
DK
6571 * testsuite/Makefile.am (check_SCRIPTS): Add arm_branch_in_range.sh.
6572 (check_DATA): Add arm_bl_in_range.stdout, arm_bl_out_of_range.stdout
e1df38aa 6573 thumb_bl_in_range.stdout, thumb_bl_out_of_range.stdout,
2a2b6d42
DK
6574 thumb2_bl_in_range.stdout and thumb2_bl_out_of_range.stdout.
6575 (arm_bl_in_range.stdout, arm_bl_in_range, arm_bl_in_range.o,
6576 arm_bl_out_of_range.stdout, arm_bl_out_of_range,
6577 arm_bl_out_of_range.o, thumb_bl_in_range.stdout, thumb_bl_in_range,
6578 thumb_bl_in_range.o, thumb_bl_out_of_range.stdout,
6579 thumb_bl_out_of_range thumb_bl_out_of_range.o,
6580 thumb2_bl_in_range.stdout, thumb2_bl_in_range, thumb2_bl_in_range.o
6581 thumb2_bl_out_of_range.stdout, thumb2_bl_out_of_range,
6582 thumb2_bl_out_of_range.o): New rules.
6583 (MOSTLYCLEANFILES): Add arm_bl_in_range, arm_bl_out_of_range,
6584 thumb_bl_in_range, thumb_bl_out_of_range, thumb2_bl_in_range and
6585 thumb2_bl_out_of_range
6586 * testsuite/Makefile.in: Regenerate.
6587 * testsuite/arm_bl_in_range.s: New file.
6588 * testsuite/arm_bl_out_of_range.s: Ditto.
6589 * testsuite/arm_branch_in_range.sh: Ditto.
6590 * testsuite/arm_branch_range.t: Ditto.
6591 * testsuite/thumb2_branch_range.t: Ditto.
6592 * testsuite/thumb_bl_in_range.s: Ditto.
6593 * testsuite/thumb_bl_out_of_range.s: Ditto.
6594 * testsuite/thumb_branch_range.t: Ditto.
6595
b487ad64
ST
65962010-02-20 Sriraman Tallam <tmsriram@google.com>
6597
6598 * gc.h (gc_process_relocs): Change vectors to point to the new list.
6599 Add reloc offset information.
6600 * icf.cc (get_section_contents): Change iterators to point to the new
6601 vectors. Add reloc offset information to the contents.
6602 * icf.h (Icf::Sections_reachable_info): New typedef.
6603 (Icf::Sections_reachable_list): New typedef.
6604 (Icf::Offset_info): New typedef.
6605 (Icf::Reloc_info): New struct typedef.
6606 (Icf::Reloc_info_list): New typedef.
6607 (Icf::symbol_reloc_list): Delete method.
6608 (Icf::addend_reloc_list): Delete method.
6609 (Icf::section_reloc_list): Delete method.
6610 (Icf::reloc_info_list): New method.
6611 (Icf::reloc_info_list_): New member.
6612
f96accdf
DK
66132010-02-19 Doug Kwan <dougkwan@google.com>
6614
6615 * arm-reloc.def: Mark R_ARM_TLS_GD32, R_ARM_TLS_LDM32,
6616 R_ARM_TLS_LDO32, R_ARM_TLS_IE32 and R_ARM_TLS_LE32 are implemented.
6617 * arm.cc (Arm_relocation_functions): New forward declaration.
6618 (Target_arm::Target_arm): Initialize new data members
6619 got_mod_index_offset_ and tls_base_symbol_defined_.
6620 (Target_arm::Relocate::relocate_tls): New method.
6621 (Target_arm::optimize_tls_reloc, Target_arm::define_tls_base_symbol,
6622 Target_arm::got_mod_index_entry, Target_arm::rel_tls_desc_section):
6623 New methods.
2e702c99 6624 (Target_arm::Got_type): Add GOT_TYPE_TLS_NOFFSET, GOT_TYPE_OFFSET,
f96accdf
DK
6625 GOT_TYPE_TLS_PAIR and GOT_TYPE_TLS_DESC.
6626 (Target_arm::got_mod_index_offset_,
6627 Target_arm::tls_base_symbol_defined_): New data members.
6628 (Target_arm::Scan::local, Target::Scan::global,
6629 Target_arm::Relocate::relocate): Handle 32-bit initial TLS
6630 relocations.
6631
c8761b9a
DK
66322010-02-18 Doug Kwan <dougkwan@google.com>
6633
6634 * arm.cc (Arm_relobj::find_linked_text_section): New method.
6635 (Arm_relobj::make_exidx_input_section): Pass section index of linked
6636 text section as a parameter becuase some broken tools may not set
6637 the link in section header.
6638 (Target_arm::has_got_section): New method.
6639 (Target_arm::scan_section_for_cortex_a8_stubs): Treat an input section
6640 without any mapping symbol as data only. Remove warning.
6641 (Arm_relobj::do_read_synbols): If an EXIDX input section has no
6642 link in its section header, try to discover the link by inspecting the
6643 REL31 relocation at the beginning of the section.
6644 (Target_arm::Scan::check_non_pic): Report name of offending relocation
6645 in error message.
6646 (Target_arm::Scan::global): Treat any reference to the symbol
6647 _GLOBAL_OFFSET_TABLE_ as a GOT access.
6648
21bb3914
ST
66492010-02-12 Sriraman Tallam <tmsriram@google.com>
6650
6651 * arm.cc (Scan::local_reloc_may_be_function_pointer): New function.
6652 (Scan::global_reloc_may_be_function_pointer): New function.
6653 * sparc.cc (Scan::local_reloc_may_be_function_pointer): New function.
6654 (Scan::global_reloc_may_be_function_pointer): New function.
6655 * powerpc.cc (Scan::local_reloc_may_be_function_pointer): New function.
6656 (Scan::global_reloc_may_be_function_pointer): New function.
6657 * i386.cc (Scan::local_reloc_may_be_function_pointer): New function.
6658 (Scan::global_reloc_may_be_function_pointer): New function.
6659 * x86_64.cc (Scan::local_reloc_may_be_function_pointer): New function.
6660 (Scan::global_reloc_may_be_function_pointer): New function.
6661 (Scan::possible_function_pointer_reloc): New function.
6662 (Target_x86_64::can_check_for_function_pointers): New function.
6663 * gc.h (gc_process_relocs): Scan relocation types to determine if
6664 function pointers were taken for targets that support it.
6665 * icf.cc (Icf::find_identical_sections): Include functions for
6666 folding in safe ICF whose pointer is not taken.
6667 * icf.h (Secn_fptr_taken_set): New typedef.
6668 (fptr_section_id_): New member.
6669 (section_has_function_pointers): New function.
6670 (set_section_has_function_pointers): New function.
6671 (check_section_for_function_pointers): New function.
6672 * options.h: Fix comment for safe ICF option.
6673 * target.h (can_check_for_function_pointers): New function.
6674 * testsuite/Makefile.am: Add icf_safe_so_test test case.
6675 Modify icf_safe_test for X86-64.
6676 * testsuite/Makefile.in: Regenerate.
6677 * testsuite/icf_safe_so_test.cc: New file.
6678 * testsuite/icf_safe_so_test.sh: New file.
6679 * testsuite/icf_safe_test.cc (kept_func_3): New function.
6680 (main): Change to take pointer to function kept_func_3.
6681 * testsuite/icf_safe_test.sh (arch_specific_safe_fold): Check if safe
6682 folding is done correctly for X86-64.
6683
0da6fa6c
DM
66842010-02-12 David S. Miller <davem@davemloft.net>
6685
6686 * output.h (Output_reloc<SHT_REL>::Output_reloc): Add
6687 is_symbolless parameter.
6688 (Output_reloc<SHT_REL>::is_symbolless): New.
6689 (Output_reloc<SHT_REL>::is_symbolless_): New.
6690 (Output_reloc<SHT_REL>::type_): Decrease to 29 bits.
6691 (Output_reloc<SHT_RELA>::Output_reloc): Add is_symbolless parameter.
6692 (Output_reloc<SHT_RELA>::is_symbolless): New.
6693 (Output_data_reloc::add_global): Handle is_symbolless.
6694 (Output_data_reloc::add_global_relative): Likewise.
6695 (Output_data_reloc::add_local): Likewise.
6696 (Output_data_reloc::add_local_relative): Likewise.
6697 (Output_data_reloc::add_symbolless_global_addend): New.
6698 (Output_data_reloc::add_symbolless_local_addend): New.
6699 * output.cc (Output_reloc<SHT_REL>::Output_reloc): Handle
6700 is_symbolless.
6701 (Output_reloc::set_needs_dynsym_index): Test ->is_symbolless_
6702 instead of ->is_relative_
6703 (Output_reloc::write): Likewise.
6704 (Output_reloc::get_symbol_index): Return 0 when ->is_symbolless_
6705 (Output_reloc::write_rel): Simplify.
6706
6707 * sparc.cc (Target_sparc::Scan::local): Use
6708 ->add_symbolless_local_addend as needed.
6709 (Target_sparc::Scan::global): Use ->add_symbolless_global_addend as
6710 needed. Also, emit appropriate unaligned vs. aligned dynamic reloc
6711 based upon relocation offset.
6712
e4782e83
DK
67132010-02-11 Doug Kwan <dougkwan@google.com>
6714
6715 * arm.cc (Target_arm::Scan::local): Fix bugs in relocation handling.
6716 (Target_arm::Scan::global): Ditto. Also remove a comment before the
6717 beginning of function.
6718 (Target_arm::Relocate::relocate): Remove error messages for MOVW_ABS
6719 and MOVT_ABS relocations. Those are non issued in scanning. Fix
6720 parameter is_32bit in calls to should_apply_static_reloc.
6721 * testsuite/Makefile.am (check_SCRIPTS): Add arm_abs_global.sh.
6722 (check_DATA): Add arm_abs_global.stdout.
6723 (arm_abs_lib.o, libarm_abs.so, arm_abs_global.o, arm_abs_global,
6724 arm_abs_global.stdout): New rules.
6725 (MOSTLLYCLEANFILES): Add arm_abs_global
6726 * Makefile.in: Regenerate.
6727 * testsuite/arm_abs_global.s: New file.
6728 * testsuite/arm_abs_global.sh: Ditto.
6729 * testsuite/arm_abs_lib.s: Ditto.
6730
93ceb764
ILT
67312010-02-11 Ian Lance Taylor <iant@google.com>
6732
6733 * gold.cc (queue_middle_gc_tasks): Use a separate blocker for each
6734 Read_relocs task.
6735 (queue_middle_tasks): Likewise, and also for Scan_relocs. Run
6736 Allocate_commons_task first.
6737 * reloc.cc (Read_relocs::run): Pass next_blocker_ down to next
6738 task, rather than symtab_lock_.
6739 (Gc_process_relocs::~Gc_process_relocs): New function.
6740 (Gc_process_relocs::is_runnable): Check this_blocker_.
6741 (Gc_process_relocs::locks): Use next_blocker_ rather than
6742 blocker_.
6743 (Scan_relocs::~Scan_relocs): New function.
6744 (Scan_relocs::is_runnable): Check this_blocker_ rather than
6745 symtab_lock_.
6746 (Scan_relocs::locks): Drop symtab_lock_ and blocker_. Add
6747 next_blocker_.
6748 * reloc.h (class Read_relocs): Drop symtab_lock_ and blocker_
6749 fields. Add this_blocker_ and next_blocker_ fields. Adjust
6750 constructor accordingly.
6751 (class Gc_process_relocs): Likewise.
6752 (class Scan_relocs): Likewise.
6753 * common.h (class Allocate_commons_task): Remove symtab_lock_
6754 field, and corresponding constructor parameter.
6755 * common.cc (Allocate_commons_tasK::is_runnable): Remove use of
6756 symtab_lock_.
6757 (Allocate_commons_task::locks): Likewise.
6758
114dfbe1
ILT
67592010-02-11 Ian Lance Taylor <iant@google.com>
6760
6761 * gold-threads.h (class Once): Define.
6762 (class Initialize_lock): Rewrite as child of Once.
6763 * gold-threads.cc (class Once_initialize): Define.
6764 (once_pointer_control): New static variable.
6765 (once_pointer, once_arg): New static variables.
6766 (c_run_once): New static function.
6767 (Once::Once, Once::run_once, Once::internal_run): New functions.
6768 (class Initialize_lock_once): Remove.
6769 (initialize_lock_control): Remove.
6770 (initialize_lock_pointer): Remove.
6771 (initialize_lock_once): Remove.
6772 (Initialize_lock::Initialize_lock): Move to gold-threads.h.
6773 (Initialize_lock::initialize): Rewrite.
6774 (Initialize_lock::do_run_once): New function.
6775 * archive.cc (Archive::interpret_header): Only clear name if it is
6776 not already empty.
6777 * fileread.cc: Include "gold-threads.h"
6778 (file_counts_lock): New static variable.
6779 (file_counts_initialize_lock): Likewise.
6780 (File_read::release): Only increment counts when using --stats.
6781 Use a lock around the increment.
6782 * parameters.cc (class Set_parameters_target_once): Define.
6783 (set_parameters_target_once): New static variable.
6784 (Parameters::Parameters): Move here from parameters.h.
6785 (Parameters::set_target): Rewrite.
6786 (Parameters::set_target_once): New function.
6787 (Parameters::clear_target): Move here and rewrite.
6788 * parameters.h (class Parameters): Update declarations. Add
6789 set_parameters_target_once_ field.
6790 (Parameters::Parameters): Move to parameters.cc.
6791 (Parameters::clear_target): Likewise.
6792 * readsyms.cc (Read_symbols::do_group): Create a Start_group
6793 task.
6794 (Start_group::~Start_group): New function.
6795 (Start_group::is_runnable): New function.
6796 (Start_group::locks, Start_group::run): New functions.
6797 (Finish_group::run): Change saw_undefined to size_t.
6798 * readsyms.h (class Start_group): Define.
6799 (class Finish_group): Change saw_undefined_ field to size_t.
6800 (Finish_group::Finish_group): Remove saw_undefined and
6801 this_blocker parameters. Change all callers.
6802 (Finish_group::set_saw_undefined): New function.
6803 (Finish_group::set_blocker): New function.
6804 * symtab.h (class Symbol_table): Change saw_undefined to return
6805 size_t. Change saw_undefined_ field to size_t.
6806 * target-select.cc (Set_target_once::do_run_once): New function.
6807 (Target_selector::Target_selector): Initialize set_target_once_
6808 field. Don't initialize lock_ and initialize_lock_ fields.
6809 (Target_selector::instantiate_target): Rewrite.
6810 (Target_selector::set_target): New function.
6811 * target-select.h (class Set_target_once): Define.
6812 (class Target_selector): Update declarations. Make
6813 Set_target_once a friend. Remove lock_ and initialize_lock_
6814 fields. Add set_target_once_ field.
6815
fa17a3f4
ILT
68162010-02-10 Ian Lance Taylor <iant@google.com>
6817
6818 * dirsearch.cc (Dirsearch::initialize): Add all blockers before
6819 queueing any tasks.
6820 * gold.cc (queue_middle_gc_tasks): Likewise. Fix final blocker.
6821 (queue_middle_tasks): Add all blockers before queueing any tasks.
6822 (queue_final_tasks): Likewise.
6823 * token.h (Task_token::add_blockers): New function.
6824 * object.h (Input_objects::number_of_relobjs): New function.
6825
c7177d31
ILT
68262010-02-10 Ian Lance Taylor <iant@google.com>
6827
5de0e392
ILT
6828 * i386.cc (Relocate::relocate_tls): A local symbol is final if not
6829 shared, not if not position independent.
6830 * x86_64.cc (Relocate::relocate_tls): Likewise.
6831 * testsuite/Makefile.am (check_PROGRAMS): Add tls_pie_pic_test.
6832 (tls_pie_pic_test): New target.
6833 * testsuite/Makefile.in: Rebuild.
6834
c7177d31
ILT
6835 * testsuite/Makefile.am (check_PROGRAMS): Add tls_pie_test.
6836 (tls_test_main_pie.o, tls_test_pie.o): New targets.
6837 (tls_test_file2_pie.o, tls_test_c_pie.o, tls_pie_test): Likewise.
6838 * testsuite/Makefile.in: Rebuild.
6839
684b268a
DM
68402010-02-09 David S. Miller <davem@davemloft.net>
6841
6842 * sparc.cc (Target_sparc::Scan::local): Do not emit relocs other than
6843 R_SPARC_RELATIVE using ->add_local_relative().
6844 (Target_sparc::Scan::global): Likewise for ->add_global_relative().
6845
612a8d3d
DM
6846 * output.h (Output_data_dynamic::add_section_size): New method
6847 that takes two Output_data objects.
6848 (Output_data_dynamic::Dynamic_entry): Create storage for secondary
6849 entry param. Handle it in initializers.
6850 * output.cc (Output_data_dynamic::Dynamic_entry::write): For
6851 DYNAMIC_SECTION_SIZE, add in second object size if non-NULL.
6852 * layout.h (Layout::add_target_dynamic_tags): Add dynrel_includes_plt
6853 arg.
6854 * layout.cc (Layout::add_target_dynamic_tags): If dynrel_includes_plt,
6855 and .rela.plt exists, set DT_REL{,A}SZ to sum of .rela.dyn and .rela.plt
6856 * arm.cc (Target_arm::do_finalize_sections): Update to pass false
6857 for dynrel_includes_plt.
6858 * i386.cc (Target_i386::do_finalize_sections): Likewise.
6859 * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
6860 * sparc.cc (Target_sparc::make_plt_entry): Force .rela.dyn to be output
6861 before .rela.plt
6862 (Target_sparc::do_finalize_sections): Update to pass true for
6863 dynrel_includes_plt.
6864 * powerpc.cc (Target_powerpc::make_plt_entry): Force .rela.dyn to be
6865 output before .rela.plt
6866 (Target_powerpc::do_finalize_sections): Update to pass true for
6867 dynrel_includes_plt when 32-bit.
6868
cb1be87e
DK
68692010-02-08 Doug Kwan <dougkwan@google.com>
6870
6871 * arm.cc (Arm_relobj::simple_input_section_output_address): New
6872 method.
6873 (Arm_relobj::section_needs_cortex_a8_stub_scanning,
6874 Arm_relobj::scan_section_for_cortex_a8_stubs,
6875 Arm_relobj::do_relocation_section): Instead of calling
6876 Output_section::output_address, use faster
6877 Arm_relobj::simple_input_section_output_address.
6878
705b5121
DM
68792010-02-08 David S. Miller <davem@davemloft.net>
6880
6881 * sparc.cc (Target_sparc::Relocate::relocate): If relocation offset is
6882 unaligned for R_SPARC_16, R_SPARC_32, or R_SPARC_64, use the unaligned
6883 relocation helper function.
6884
024c4466
DM
6885 * sparc.cc (Target_sparc::Scan::local): Handle R_SPARC_GOTDATA_OP*
6886 just like R_SPARC_GOT{10,13,22}.
6887 (Target_sparc::Scan::local): Likewise.
6888 (Target_sparc::Relocate:relocate): Likewise.
6889
9109c078
ILT
68902010-02-06 Ian Lance Taylor <iant@google.com>
6891
6892 * configure.ac: Rewrite targetobjs duplicate removal code to use
6893 only shell constructs.
6894 * configure: Rebuild.
6895
cf846138
DK
68962010-02-05 Doug Kwan <dougkwan@google.com>
6897
6898 PR 11247
6899 * arm.cc (Arm_relobj::section_is_scannable): New method.
6900 (Arm_relobj::section_needs_reloc_stub_scanning): Use it.
6901 (Arm_relobj::section_needs_cortex_a8_stub_scanning): Same.
6902
6cfaf60b
DK
69032010-02-04 Doug Kwan <dougkwan@google.com>
6904
6905 PR 11247
6906 * arm-reloc-property.cc (cstdio): Include.
6907 * configure.ac (targetobjs): Remove duplicates.
6908 * configure: Regenerate.
6909 * resolve.cc (Symbol_table::resolve): Explicit instantiate both
6910 big and little endian version for a given address size.
6911
5c57f1be
DK
69122010-02-03 Doug Kwan <dougkwan@google.com>
6913
6914 * arm-reloc-property.cc
6915 (Arm_reloc_property_table::reloc_name_in_error_message): New method
6916 definition.
6917 * arm-reloc-property.h
6918 (Arm_reloc_property_table::get_implemented_static_reloc_property):
6919 New method definition.
6920 (Arm_reloc_property_table::reloc_name_in_error_message): New method
6921 declaration.
6922 * arm-reloc.def (THM_MOVT_ABS, THM_MOVT_PREL, THM_MOVT_BREL): Change
6923 overflow to N.
6924 (GOT_PREL): Change implemented to Y.
6925 * arm.cc (Target_arm::reloc_uses_thumb_bit): Remove method.
6926 (Target_arm::Relocate::reloc_needs_sym_origin): Remove method.
6927 (Arm_relocate_functions::movw_abs_nc): Remove method.
6928 (Arm_relocate_functions::movt_abs): Ditto.
6929 (Arm_relocate_functions::thm_movw_abs_nc): Ditto.
6930 (Arm_relocate_functions::thm_movt_abs): Ditto.
6931 (Arm_relocate_functions::movw_rel_nc): Ditto.
6932 (Arm_relocate_functions::movw_rel): Ditto.
6933 (Arm_relocate_functions::movt_rel): Ditto.
6934 (Arm_relocate_functions:thm_movw_rel_nc): Ditto.
6935 (Arm_relocate_functions:thm_movw_rel): Ditto.
6936 (Arm_relocate_functions:thm_movt_rel): Ditto.
6937 (Arm_relocate_functions::movw, Arm_relocate_functions::movt,
6938 (Arm_relocate_functions::thm_movw, Arm_relocate_functions::thm_movt):
6939 New method definitions.
6940 (Arm_relocation_functions::arm_grp_alu): Add assertion for group index.
6941 (Arm_relocation_functions::arm_grp_ldr): Ditto.
6942 (Arm_relocation_functions::arm_grp_ldrs): Ditto.
6943 (Arm_relocation_functions::arm_grp_ldc): Ditto.
6944 (Target_arm::Relocate::relocate): Check for non-static or
6945 unimplemented relocation code and exit early. Change calls to
6946 Target_arm::reloc_uses_thumb_bit and
6947 Target_arm::Reloc::reloc_needs_sym_origin to use relocation property
6948 instead. Refactor code to handle similar relocations to increase
6949 code sharing. Remove check for unsupported relocation code in switch
6950 statement.
6951 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Use
6952 relocation property table to find out size. Change error message to
6953 print out the name of a relocation code instead of the numeric value.
6954 (Target_arm::scan_reloc_for_stub): Use relocation property table
6955 instead of calling Target_arm::reloc_uses_thumb_bit().
6956
218c5831
DK
69572010-02-02 Doug Kwan <dougkwan@google.com>
6958
6959 * arm.cc (Target_arm::relocate_section): Do view adjustment for all
6960 types of relaxed input section.
6961
0d31c79d
DK
69622010-02-02 Doug Kwan <dougkwan@google.com>
6963
6964 * Makefile.am (HFILES): Add arm-reloc-property.h.
6965 (DEFFILES): New.
2e702c99
RM
6966 (TARGETSOURCES): Add arm-reloc-property.cc
6967 (ALL_TARGETOBJS): Add arm-reloc-property.$(OBJEXT)
0d31c79d
DK
6968 (libgold_a_SOURCES): $(DEFFILES)
6969 * Makefile.in: Regenerate.
6970 * arm-reloc-property.cc: New file.
6971 * arm-reloc-property.h: New file.
6972 * arm-reloc.def: New file.
6973 * arm.cc: Update comments.
6974 (arm-reloc-property.h): New included header.
6975 (arm_reloc_property_table): New global variable.
6976 (Target_arm::do_select_as_default_target): New method definition.
6977 * configure.tgt (armeb*-*-*,armbe*-*-*,arm*-*-*): Add
6978 arm-reloc-property to targ_extra_obj.
6979 * parameters.cc (set_parameters_target): Call
6980 Target::select_as_default_target().
6981 * target.h (Target::select_as_default_target): New method definition.
6982 (Target::do_select_as_default_target): Same.
6983
546c7457
DK
69842010-02-01 Doug Kwan <dougkwan@google.com>
6985
6986 * arm.cc (Arm_exidx_fixup::Arm_exidx_fixup): Initialize
6987 first_output_text_section_.
6988 (Arm_exidx_fixup::first_output_text_section): New method definition.
6989 (Arm_exidx_fixup::first_output_text_section_): New data member.
6990 (Arm_exidx_fixup::process_exidx_section): Record the first text
6991 output section seen.
6992 (Arm_output_section::fix_exidx_coverage): Set correct linked section
6993 and entsize in output section header.
6994
11b861d5
DK
69952010-01-29 Viktor Kutuzov <vkutuzov@accesssoftek.com>
6996
6997 * gold/arm.cc: Added support for the ARM relocations: R_ARM_THM_PC8,
6998 R_ARM_THM_PC12, R_ARM_THM_ALU_PREL_11_0.
6999 (Arm_relocate_functions::thm_alu11): New Method.
7000 (Arm_relocate_functions::thm_pc8): New Method.
7001 (Arm_relocate_functions::thm_pc12): New Method.
7002 (Target_arm::Scan::local): Handle the relocations.
7003 (Target_arm::Scan::global): Likewise.
7004 (Target_arm::Relocate::relocate): Likewise.
7005 (Target_arm:Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
7006
c9a2c125
DK
70072010-01-29 Doug Kwan <dougkwan@google.com>
7008
7009 * arm.cc (Target_arm::Scan::global): General PLTs for the same set
7010 of relocation types as ld.
7011
1521477a
DK
70122010-01-29 Doug Kwan <dougkwan@google.com>
7013
7014 * arm.cc (Arm_relocate_functions::arm_branch_common) Change visibility
7015 to public.
7016 (Arm_relocate_functions::thumb_branch_common): Ditto.
7017 (Arm_relocate_functions::thm_call, Arm_relocate_functions::thm_jump24,
7018 Arm_relocate_functions::thm_xpc22, Arm_relocate_functions::plt32,
7019 Arm_relocate_functions::xpc25, Arm_relocate_functions::call,
7020 Arm_relocate_functions::jump24): Remove.
7021 (Target_arm::Relocate::relocate): Adjust code to call
7022 Arm_relocation_functions::arm_branch_common and
7023 Arm_relocation_functions::thumb_branch_common instead of their removed
e1df38aa 7024 wrappers. Merge switch-cases together to reduce source code size.
1521477a 7025
e7eca48c
DK
70262010-01-29 Doug Kwan <dougkwan@google.com>
7027
7028 * arm.cc (Arm_relobj::Arm_relobj): Initialize new data member
7029 output_local_symbol_count_needs_update_.
7030 (Arm_relobj::output_local_symbol_count_needs_update,
7031 Arm_relobj::set_output_local_symbol_count_needs_update,
7032 Arm_relobj::update_output_local_symbol_count): New methods.
7033 (Arm_relobj::output_local_symbol_count_needs_update_): New data
7034 member.
7035 (Arm_exidx_cantunwind::do_fixed_endian_write): Write address
7036 of pointed function as in a R_ARM_PREL31 relocation.
7037 (Arm_output_section<big_endian>::fix_exidx_coverage): Mark objects
7038 for output local symbol count updating.
7039 (Target_arm::do_relax): Update output local symbol counts in objects
7040 if necessary.
7041 * object.h (Sized_relobj::set_output_local_symbol_count): New method.
7042
02961d7e
ILT
70432010-01-29 Viktor Kutuzov <vkutuzov@accesssoftek.com>
7044
7045 * arm.cc: Added support for the ARM relocations:
7046 R_ARM_MOVW_BREL_NC, R_ARM_MOVT_BREL, R_ARM_MOVW_BREL,
7047 R_ARM_THM_MOVW_BREL_NC, R_ARM_THM_MOVT_BREL, R_ARM_THM_MOVW_BREL.
7048 (Arm_relocate_functions::movw_rel_nc): Renamed (was
7049 movw_prel_nc).
7050 (Arm_relocate_functions::movw_rel): New method.
7051 (Arm_relocate_functions::movt_rel): Renamed (was movt_prel).
7052 (Arm_relocate_functions::thm_movw_rel_nc): Renamed (was
7053 thm_movw_prel_nc).
7054 (Arm_relocate_functions::thm_movw_rel): New method.
7055 (Arm_relocate_functions::thm_movt_rel): Renamed (was
7056 thm_movt_prel).
7057 (Target_arm::Scan::local): Handle MOVW_BREL/MOVT_BREL
7058 relocations.
7059 (Target_arm::Scan::global): Likewise.
7060 (Target_arm::Relocate::relocate): Likewise.
7061 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
7062 Likewise.
7063
b10d2873
ILT
70642010-01-27 Viktor Kutuzov <vkutuzov@accesssoftek.com>
7065
7066 * arm.cc: Added support for ARM group relocations.
7067 (Target_arm::reloc_needs_sym_origin): New method.
7068 (Arm_relocate_functions::calc_grp_kn): New method.
7069 (Arm_relocate_functions::calc_grp_residual): New method.
7070 (Arm_relocate_functions::calc_grp_gn): New method.
7071 (Arm_relocate_functions::arm_grp_alu): New Method.
7072 (Arm_relocate_functions::arm_grp_ldr): New Method.
7073 (Arm_relocate_functions::arm_grp_ldrs): New Method.
7074 (Arm_relocate_functions::arm_grp_ldc): New Method.
7075 (Target_arm::Scan::local): Handle the ARM group relocations.
7076 (Target_arm::Scan::global): Likewise.
7077 (Target_arm::Relocate::relocate): Likewise.
7078 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
7079 Likewise.
7080
2b328d4e
DK
70812010-01-26 Doug Kwan <dougkwan@google.com>
7082
7083 * arm.cc (set): Include.
7084 (class Arm_exidx_fixup): Change type of last_input_section_ to const
7085 pointer type.
2e702c99 7086 (Arm_output_section::Text_section_list): New type.
2b328d4e
DK
7087 (Arm_output_section::append_text_sections_to_list): New method.
7088 (Arm_output_section::fix_exidx_coverage): Ditto.
7089 (Arm_relobj::Arm_relobj): Initialize exidx_section_map_.
2e702c99 7090 (Arm_relobj::convert_input_section_to_relaxed_section): Use
2b328d4e
DK
7091 Relobj::set_section_offset() instead of
7092 Sized_relobj::invalidate_section_offset().
2e702c99 7093 (Arm_relobj::section_needs_reloc_stub_scanning): Add an extra
2b328d4e
DK
7094 parameter for section headers. Ignore relocation sections for
7095 unallocated sections and EXIDX sections.
7096 (Target_arm::fix_exidx_coverage): New method.
7097 (Target_arm::output_section_address_less_than): New type.
7098 (Arm_exidx_fixup::add_exidx_cantunwind_as_needed): Use index of the
7099 linked text section instead of the EXIDX section.
7100 (Arm_output_section::create_stub_group): Add an assertion to check
7101 that this is not an EXIDX output section.
7102 (Arm_output_section::append_text_sections_to_list): New method.
7103 (Arm_output_section::fix_exidx_coverage): Ditto.
7104 (Arm_relobj::scan_sections_for_stubs): Adjust call to
2e702c99 7105 Arm_relobj::section_needs_reloc_stub_scanning.
2b328d4e
DK
7106 (Target_arm::do_relax): Fix EXIDX output section coverage in the
7107 first pass.
7108 (Target_arm::fix_exidx_coverage): New method.
7109 * object.h (Relobj::set_output_section): New method.
7110 (Sized_relobj::invalidate_section_offset): Remove method.
7111 (Sized_relobj::do_invalidate_section_offset): Remove method.
7112 (Sized_relobj::do_set_section_offset): Handle offset value -1.
7113
c7f3c371
DK
71142010-01-25 Doug Kwan <dougkwan@google.com>
7115
7116 * arm.cc (Arm_exidx_merged_section::do_output_offset):
7117 Fix warning due to signed and unsigned comparison on a 32-bit host.
7118
8923b24c
DK
71192010-01-22 Doug Kwan <dougkwan@google.com>
7120
7121 * arm.cc (Target_arm::do_relax): Record an output section for section
7122 offset adjustment it contains any stub table that has changed.
7123 * layout.cc (Layout::clean_up_after_relaxation): Adjust section
7124 offsets in an output section if necessary.
7125 * output.cc (Output_section::Output_section): Initialize
7126 section_offsets_need_adjustments_.
7127 (Output_section::add_input_section_for_script): Renamed to
7128 Output_section::add_simple_input_section.
7129 (Output_section::save_states): Add a comment.
7130 (Output_section::discard_states): New method defintion.
7131 (Output_section::adjust_section_offsets): Same.
7132 * output.h (Output_section::add_input_section_for_script): Renamed to
7133 Output_section::add_simple_input_section.
7134 (Output_section::discard_states): New method declaration.
7135 (Output_section::adjust_section_offsets): Same.
7136 (Output_section::section_offsets_need_adjustment,
7137 Output_section::set_section_offsets_need_adjustment): New method
7138 definitions.
7139 (Output_section::section_offsets_need_adjustment_): New data member.
7140 * script-sections.cc
7141 (Output_section_element_input::set_section_address): Adjust code for
7142 renaming of Output_section::add_input_section_for_script.
7143 (Orphan_output_section::set_section_address): Same.
7144
9b2fd367
DK
71452010-01-22 Viktor Kutuzov <vkutuzov@accesssoftek.com>
7146
7147 * gold/arm.cc (Target_arm): Updated fix_v4bx method and usage of
7148 Fix_v4bx enum values .
7149 * gold/options.h (General_options): New option definitions.
7150 (General_options::fix_v4bx): New method.
7151 (General_options::Fix_v4bx): New enum.
7152 * gold/options.cc (General_options::parse_fix_v4bx): New method.
7153 (General_options::parse_fix_v4bx_interworking): New method.
7154
80d0d023
DK
71552010-01-22 Doug Kwan <dougkwan@google.com>
7156
7157 * arm.cc (Arm_exidx_fixup): New class.
7158
af2cdeae
DK
71592010-01-21 Doug Kwan <dougkwan@google.com>
7160
7161 * arm.cc (Arm_exidx_cantunwind, Arm_exidx_merged_section): New
7162 classes.
7163 (Arm_exidx_section_offset_map): New type.
7164
993d07c1
DK
71652010-01-21 Doug Kwan <dougkwan@google.com>
7166
7167 * arm.cc (Arm_exidx_input_section): New class.
7168 (Arm_relobj::exidx_input_section_by_link,
7169 Arm_relobj::exidx_input_section_by_shndx,
7170 Arm_relobj::make_exidx_input_section): New methods.
7171 (read_arm_attributes_section): Remove.
7172 (Arm_relobj::do_read_symbols): Look for ARM.exidx sections and record
7173 information about them.
7174 (Arm_dynobj::do_read_symbols): Move code in read_arm_attributes_section
7175 to here.
7176
5ac169d4
DK
71772010-01-20 Doug Kwan <dougkwan@google.com>
7178
7179 * arm.cc (Target_arm::Arm_input_section_map): Change key type from
7180 Input_section_specifier to Section_id.
7181 (Target_arm::new_arm_input_section: Adjust code for change of key
7182 type.
7183 (Target_arm::find_arm_input_section): Ditto.
7184 * gc.h (object.h): Include for Section_id nand Section_id_hash.
7185 (Section_id): Remove.
7186 (Garbage_collection::Section_id_hash): Remove.
7187 * icf.h (object.h): Include for Section_id nand Section_id_hash.
7188 (Section_id): Remove.
7189 (Icf::Section_id_hash): Remove.
7190 * object.h (Section_id, Const_section_id, Section_id_hash,
7191 Const_section_id_hash): New type definitions.
7192 * output.cc (Output_section::add_relaxed_input_section): Change to
7193 use Const_section_id instead of Input_section_specifier as key type.
7194 (Output_section::add_merge_input_section): Ditto.
7195 (Output_section::build_relaxation_map): Change to use Section_id
7196 instead of Input_section_specifier as key type.
2e702c99 7197 (Output_section::convert_input_sections_in_list_to_relaxed_sections):
5ac169d4
DK
7198 Ditto.
7199 (Output_section::convert_input_sections_to_relaxed_sections): Change
7200 to use Const_section_id instead of Input_section_specifier as key type.
2e702c99 7201 (Output_section::find_merge_section): Ditto.
5ac169d4
DK
7202 (Output_section::find_relaxed_input_section): Ditto.
7203 * output.h (Input_section_specifier): Remove class.
7204 (Output_section::Output_section_data_by_input_section_map): Change
7205 key type to Const_section_id.
7206 (Output_section::Output_relaxed_input_section_by_input_section_map):
7207 Ditto.
7208 (Output_section::Relaxation_map): Change key type to Section_id.
7209
a2162063
ILT
72102010-01-20 Viktor Kutuzov <vkutuzov@accesssoftek.com>
7211
7212 * gold/arm.cc: Added support for R_ARM_V4BX relocation
7213 (class Arm_v4bx_stub): New class.
7214 (DEF_STUBS): Updated definition to support v4_veneer_bx.
7215 (Stub_factory::make_arm_v4bx_stub): New method.
7216 (Stub_factory::elf32_arm_stub_v4_veneer_bx): New veneer template.
7217 (Stub_table::empty): Handle v4bx stubs.
7218 (Stub_table::add_arm_v4bx_stub): New method.
7219 (Stub_table::find_arm_v4bx_stub): New method.
7220 (Arm_relocate_functions::v4bx): New method.
7221 (Target_arm::fix_v4bx): New method.
7222 (Target_arm::Target_arm): Handle R_ARM_V4BX.
7223 (Stub_table::relocate_stubs): Likewise.
7224 (Stub_table::do_write): Likewise.
7225 (Stub_table::update_data_size_and_addralign): Likewise.
7226 (Stub_table::finalize_stubs): Likewise.
7227 (Target_arm::Scan::local): Likewise.
7228 (Target_arm::Scan::global): Likewise.
7229 (Target_arm::do_finalize_sections): Likewise.
7230 (Target_arm::Relocate::relocate): Likewise.
7231 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
7232 Likewise.
7233 (Target_arm::scan_reloc_for_stub): Likewise.
7234 (Target_arm::scan_reloc_section_for_stubs): Likewise.
7235
5696ab0b
ILT
72362010-01-19 Ian Lance Taylor <iant@google.com>
7237
7238 * output.cc (Output_section_headers::do_sized_write): Write large
7239 segment count to sh_info field.
7240 (Output_file_header::do_sized_write): For large segment count,
7241 write PN_XNUM to e_phnum field.
7242
800d0f56
ILT
72432010-01-15 Viktor Kutuzov <vkutuzov@accesssoftek.com>
7244
7245 * arm.cc (Arm_relocate_functions::thm_jump6): New function.
7246 (Arm_relocate_functions::thm_jump8): New function.
7247 (Arm_relocate_functions::thm_jump11): New function.
7248 (Target_arm::Scan::local): Handle R_ARM_THM_JUMP6, R_ARM_THM_JUMP8,
7249 R_ARM_THM_JUMP11.
7250 (Target_arm::Scan::global): Likewise.
7251 (Target_arm::Relocate::relocate): Likewise.
7252 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
7253 Likewise.
7254
41263c05
DK
72552010-01-14 Doug Kwan <dougkwan@google.com>
7256
7257 * arm.cc (map, utility): Include headers.
7258 (Target_arm::apply_cortex_a8_workaround): New method.
7259 (Arm_relobj::do_relocate_sections): Apply any Cortex-A8 workaround.
7260 (Target_arm::Scan::local): Handle R_ARM_THM_JUMP24, R_ARM_THM_JUMP19.
7261 (Target_arm::Scan::global): R_ARM_THM_JUMP19.
7262 (Target_arm::do_finalize_sections): Set fix_cortex_a8_ according to
7263 the --[no-]fix-cortex-a8 command line options.
7264 (Target_arm::Relocate::relocate): Handle R_ARM_JUMP19.
7265 (Target_arm::relocate_stub): Use addend in instruction template.
7266 * options.h (DEFINE_bool): Set the user-set flag.
7267 (General_options): Add --[no-]-fix-cortex options.
7268 * output.cc (Output_section::convert_input_sections_to_relaxed_sections)
e1df38aa 7269 : Update fast look-up map after conversion.
41263c05 7270
459e9b03
ST
72712010-01-14 Sriraman Tallam <tmsriram@google.com>
7272
7273 * object.cc (Sized_relobj::do_layout): Change to call layout_gnu_stack
7274 in the first pass of do_layout.
7275
b521dfe4
DK
72762010-01-13 Doug Kwan <dougkwan@google.com>
7277
7278 * arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
7279 Arm_relobj::scan_sections_for_stubs): Rearrange code to avoid an
7280 apparent compiler problem of not folding static constant integral
7281 data members of elfcpp::Elf_sizes<32>.
7282
44272192
DK
72832010-01-13 Doug Kwan <dougkwan@google.com>
7284
7285 * arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
7286 Arm_relobj::section_needs_cortex_a8_stub_scanning,
7287 Arm_relobj::scan_section_for_cortex_a8_erratum,
7288 Arm_relobj::scan_span_for_cortex_a8_erratum): New methods.
7289 (Arm_relobj::scan_sections_for_stubs): Move code deciding what
7290 sections to scan for relocation stubs into a new method
7291 Arm_relobj::section_needs_reloc_stub_scanning. Handle both
7292 relocation and Cortex-A8 stub scanning.
7293 (Target_arm::do_relax): Force stubs to be after stubbed sections
7294 if fixing the Cortex-A8 erratum. Remove all Cortex-A8 stubs at
e1df38aa 7295 the beginning of a new relaxation pass. Update a comment.
44272192
DK
7296 (Target_arm::scan_span_for_cortex_a8_erratum): New method definition.
7297
44b71ece
ILT
72982010-01-12 Ian Lance Taylor <iant@google.com>
7299
7300 * target-reloc.h (visibility_error): New inline function.
7301 (relocate_section): Call visibility_error.
7302 * testsuite/Makefile.am (check_DATA): Add protected_3.err.
7303 (MOSTLYCLEANFILES): Likewise.
7304 (protected_4_pic.o, protected_3.err): New targets.
7305 * testsuite/protected_4.cc: New file.
7306
a120bc7f
DK
73072010-01-12 Doug Kwan <dougkwan@google.com>
7308
7309 * arm.cc (Cortex_a8_reloc): New class.
7310 (Target_arm::Target_arm): Initialize new data members fix_cortex_a8_
7311 and cortex_a8_relocs_info_.
7312 (Target_arm::fix_cortex_a8): New method definition.
7313 (Target_arm::Cortex_a8_relocs_info): New type.
7314 (Target_arm::fix_cortex_a8_, Target_arm::cortex_a8_relocs_info_):
7315 New data member declarations.
7316 (Target_arm::scan_reloc_for_stub): Record information about
7317 relocations for THUMB branches that might be exempted from the
7318 Cortex-A8 workaround.
7319 (Target_arm::do_relax): Clear all Cortex-A8 relocation information
7320 at the beginning of a relaxation pass.
7321
20138696
DK
73222010-01-12 Doug Kwan <dougkwan@google.com>
7323
7324 * arm.cc (Arm_relobj::mapping_symbols_info_): New data member.
7325 (Arm_relobj::Mapping_symbol_position,
7326 Arm_reloj::Mapping_symbol_position_less,
7327 Arm_relobj::Mapping_symbols_info): New types.
7328 (Target_arm::is_mapping_symbol_name): New method definition.
7329 (Arm_relobj::do_count_local_symbols): Save information about mapping
7330 symbols.
7331
089d69dc
DK
73322010-01-11 Doug Kwan <dougkwan@google.com>
7333
7334 * arm.cc (Arm_relocate_functions::thumb32_branch_offset,
7335 Arm_relocate_functions::thumb32_branch_upper,
7336 Arm_relocate_functions::thumb32_branch_lower,
7337 Arm_relocate_functions::thumb32_cond_branch_offset,
7338 Arm_relocate_functions::thumb32_cond_branch_upper,
7339 Arm_relocate_functions::thumb32_cond_branch_lower,
7340 Arm_relocate_functions::thm_jump19): New methods to handle THUMB
7341 branch offset encoding.
7342 (Arm_relocate_functions::thumb_branch_common): Use new branch
7343 offset encoding methods to avoid code duplication.
7344 (Stub_template::Stub_template) Handle THUMB16_SPECIAL_TYPE.
7345 (Stub_addend_reader::operator()): Use new branch encoding method
7346 to avoid code duplication.
7347
99e5bff2
DK
73482010-01-11 Doug Kwan <dougkwan@google.com>
7349
7350 * arm.cc (Arm_relobj::do_gc_process_relocs): New method.
7351 (Target_arm::do_finalize_sections): Define special EXIDX section
7352 symbols only if referenced.
7353 * gc.h (Garbage_collection::add_reference): New method.
7354 (gc_process_relocs): Use Garbage_collection::add_reference to avoid
7355 code duplication.
7356
98e090bd
ILT
73572010-01-11 Ian Lance Taylor <iant@google.com>
7358
d0a91bd8
ILT
7359 * script.cc (Version_script_info::build_expression_list_lookup):
7360 Change complaing about duplicate wildcard match from error to
7361 warning.
7362
98e090bd
ILT
7363 * script.cc (class Lazy_demangler): Recreate--revert part of patch
7364 of 2009-12-30.
7365 (Version_script_info::Version_script_info): Initialize globs_,
7366 default_version_, default_is_global_, and exact_. Don't
7367 initialize globals_ or locals_.
7368 (Version_script_info::build_lookup_tables): Build local symbols
7369 first.
7370 (Version_script_info::unquote): New function.
7371 (Version_script_info::add_exact_match): New function.
7372 (Version_script_info::build_expression_list_lookup): Remove lookup
7373 parameter. Add is_global parameter. Change all callers. Handle
7374 wildcard pattern specially. Unquote pattern. Call
7375 add_exact_match.
7376 (Version_script_info::get_name_to_match): New function.
7377 (Version_script_info::get_symbol_version): New function.
7378 (Version_script_info::get_symbol_version_helper): Remove.
7379 (Version_script_info::check_unmatched_names): Call unquote.
7380 * script.h (class Version_script_info): Change get_symbol_version
7381 to be non-inline and add is_global parameter; change all callers.
7382 Rewrite symbol_is_local. Update declarations. Define struct
7383 Version_tree_match, Exact, Globs. Don't define struct Lookup.
7384 Remove globals_ and locals_ members. Add exact_, globs_,
7385 default_version_, is_global_.
7386 (Version_script_info::Glob): Remove pattern, add expression and
7387 is_global. Update constructor. Change all callers.
7388 * dynobj.cc (Versions::finalize): Mark the version symbol as the
7389 default version.
7390 (Versions::symbol_section_contents): If a symbol is undefined, or
7391 defined in a dynamic object, set the version index to
7392 VER_NDX_LOCAL.
7393 * symtab.cc (Symbol_table::add_from_relobj): Don't call
7394 symbol_is_local.
7395 (Symbol_table::add_from_pluginobj): Likewise.
7396 * testsuite/ver_matching_test.sh: blaza1 and blaza go into V2.
7397
d56962d3
DK
73982010-01-11 Doug Kwan <dougkwan@google.com>
7399
7400 * Makefile.am (incremental_dump_DEPENDENCIES): Add libintl dependency.
7401 (incremental_dump_LDADD): Add linking option for libintl.
7402 * Makefile.in: Regenerate.
7403
94e6ee91
L
74042010-01-11 H.J. Lu <hongjiu.lu@intel.com>
7405
7406 PR gold/11144
7407 * testsuite/Makefile.am (dynamic_list.stdout): Use --dyn-syms
7408 instead of -Ds.
7409 * testsuite/Makefile.in: Regenerated.
7410
e96c574b
DK
74112010-01-10 Doug Kwan <dougkwan@google.com>
7412
7413 * options.h (DEFINE_var): Use parentheses around argument varname__
7414 in macro body to avoid any unintended subsequent substitutions.
7415
7198066b
ILT
74162010-01-10 Ian Lance Taylor <iant@google.com>
7417
ba4d53bf
ILT
7418 * resolve.cc (Symbol_table::resolve): Add symbols to list of ODR
7419 candidates before doing symbol resolution.
7420
7198066b
ILT
7421 * resolve.cc (Symbol_table::resolve): Add symbols to the list of
7422 ODR candidates if only one is weak.
7423
a2beed37
ILT
74242010-01-08 Ian Lance Taylor <iant@google.com>
7425
7426 * script.cc (Version_script_info::build_expression_list_lookup):
7427 Don't warn about ambiguous version, just record the ambiguity.
7428 (Version_script_info::get_symbol_version_helper): Give error if
7429 version is ambiguous.
7430
2fb7225c
DK
74312010-01-08 Doug Kwan <dougkwan@google.com>
7432
7433 * arm.cc (Stub_table::Stub_table): Initalize cortex_a8_stubs_,
703d02da
AM
7434 prev_data_size_ and prev_addralign_. Remove initializer for
7435 deleted data member has_been_changed_.
7436 (Stub_table::empty): Look at both reloc_stubs_ and cortex_a8_stubs_
7437 to determine if the table is empty.
7438 (Stub_table::has_been_changed, Stub_table_set_has_been_changed):
7439 Remove.
7440 (Stub_table::add_reloc_stub): Define method in class definition
7441 instead of just declaring it there.
7442 (Stub_table::add_cortex_a8_stub): New method definition.
7443 (Stub_table::update_data_size_and_addralign): Ditto.
7444 (Stub_table::finalize_stubs): Ditto.
7445 (Stub_table::apply_cortex_a8_workaround_to_address_range): Ditto.
7446 (Stub_table::do_addralign_): Return address alignment in the
7447 (Stub_table::do_reset_address_and_file_offset): Define method in
7448 class definition instead of declaring it there. Set current data
7449 size to be the data size of the previous pass.
7450 (Stub_table::set_final_data_size): Use current data size as the
7451 final data size.
7452 (Stub_table::relocate_stub): Change parameter type of stub from
7453 Reloc_stub pointer to Stub pointer.
7454 (Stub_table::addralign_, Stub_table::has_been_changed_): Remove.
7455 (Stub_table::Cortex_a8_stub_list): New typedef.
7456 (Stub_table::cortex_a8_stubs_, Stub_table::prev_data_size_,
7457 Stub_table::prev_addralign_): New data member.
7458 (Arm_relobj::Arm_relobj): Initialize data member
7459 section_has_cortex_a8_workaround_.
7460 (Arm_relobj::section_has_cortex_a8_workaround,
7461 Arm_relobj::mark_section_for_cortex_a8_workaround): New method
7462 definitions.
7463 (Arm_relobj::section_has_cortex_a8_workaround_): New data member
7464 declarations.
7465 (Target_arm::relocate_stub): Change parameter type of stub from
7466 Reloc_stub pointer to Stub pointer.
7467 (Insn_template::size, Insn_template::alignment): Handle
7468 THUMB16_SPECIAL_TYPE.
7469 (Stub_table::remove_all_cortex_a8_stubs, Stub_table::finalize_stubs,
7470 Stub_table::update_data_size_and_addralign,
7471 Stub_table::apply_cortex_a8_workaround_to_address_range): New method
7472 definitions.
7473 (Stub_table::relocate_stubs): Handle Cortex-A8 stubs.
7474 (Stub_table::do_write): Ditto.
7475 (Target_arm::do_relax): Adjust code for changes in Stub_table.
2fb7225c 7476
880cd20d
ILT
74772010-01-08 Ian Lance Taylor <iant@google.com>
7478
7479 PR 11108
7480 * symtab.h (class Symbol): Remove fields is_target_special_ and
7481 has_plt_offset_. Add field is_defined_in_discarded_section_.
7482 (Symbol::is_defined_in_discarded_section): New function.
7483 (Symbol::set_is_defined_in_discarded_section): New function.
7484 (Symbol::has_plt_offset): Rewrite.
7485 (Symbol::set_plt_offset): Verify that new offset is not -1U.
7486 * symtab.cc (Symbol::init_fields): Initialize plt_offset_ to -1U.
7487 Don't initialize is_target_special_ or has_plt_offset_.
7488 Initialize is_defined_in_discarded_section_.
7489 (Symbol_table::add_from_relobj): If appropriate, set
7490 is_defined_in_discarded_section.
7491 * resolve.cc (Symbol::override_base_with_special): Don't test
7492 is_target_special_. Change has_plt_offset_ to has_plt_offset().
7493 * target-reloc.h (relocate_section): Do special handling for
7494 symbols defined in discarded sections for global symbols as well
7495 as local symbols.
7496
2703e3eb
ILT
74972010-01-08 Ian Lance Taylor <iant@google.com>
7498
7499 * dynobj.cc (big_endian>::find_dynsym_sections): Set pi to NULL in
7500 the SHT_SYMTAB case.
7501
339d40a3
ILT
75022010-01-08 Ian Lance Taylor <iant@google.com>
7503
7504 * object.cc (Sized_relobj::do_layout): Don't get confused if
7505 layout_eh_frame returns NULL.
7506
abecea76
ILT
75072010-01-08 Ian Lance Taylor <iant@google.com>
7508
7509 PR 11084
7510 * dynobj.cc (Sized_dynobj::find_dynsym_sections): If there is no
7511 dynamic symbol table, use the normal symbol table.
7512 (Sized_dynobj::do_read_symbols): Remove assertion about type of
7513 symbol table.
7514
6b7dd3f3
ILT
75152010-01-08 Ian Lance Taylor <iant@google.com>
7516
7517 PR 11072
7518 * layout.cc (Layout::include_section): Remove .gnu_debuglink
7519 sections.
7520
36c50e63
L
75212010-01-08 H.J. Lu <hongjiu.lu@intel.com>
7522
7523 * version.cc (print_version): Change to "Copyright 2010".
7524
e291e7b9
ILT
75252010-01-08 Ian Lance Taylor <iant@google.com>
7526
7527 PR 10287
7528 PR 11063
7529 * i386.cc (class Target_i386): Change return type of plt_section
7530 to be non-const.
7531 (class Output_data_plt_i386): Add tls_desc_rel_ field.
7532 (Output_data_plt_i386::Output_data_plt_i386): Initialize
7533 tls_desc_rel_ field.
7534 (Output_data_plt_i386::rel_tls_desc): New function.
7535 (Target_i386::rel_tls_desc_section): New function.
7536 (Target_i386::Scan::local): Rewrite R_386_TLS_GOTDESC handling.
7537 (Target_i386::Scan::global): For R_386_TLS_GOTDESC put
7538 R_386_TLS_DESC reloc in rel_tls_desc_section.
7539 * x86_64.cc (class Target_x86_64): Add tlsdesc_reloc_info_ field.
7540 Define struct Tlsdesc_info.
7541 (Target_x86_64::Target_x86_64): Initialize tlsdesc_reloc_info_.
7542 (Target_x86_64::do_reloc_symbol_index): New function.
7543 (Target_x86_64::add_tlsdesc_info): New function.
7544 (class Output_data_plt_x86_64): Add tlsdesc_rel_ field.
7545 (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize
7546 tlsdesc_rel_ field.
7547 (Output_data_plt_x86_64::rela_plt): Rename from rel_plt. Change
7548 all callers.
7549 (Output_data_plt_x86_64::rela_tlsdesc): New function.
7550 (Target_x86_64::rela_tlsdesc_section): New function.
7551 (Target_x86_64::Scan::local): Rewrite R_X86_64_GOTPC32_TLSDESC
7552 handling.
7553 (Target_x86_64::Scan::global): For R_X86_64_GOTPC32_TLSDESC put
7554 (Target_x86_64::do_reloc_addend): New function.
7555 R_X86_64_TLSDESC reloc in rela_tlsdesc_section.
7556 * output.h (class Output_reloc) [SHT_REL]: Add new constructor
7557 declarations. Define TARGET_CODE. Add arg field to u1_ union.
7558 (Output_reloc::type): New function.
7559 (Output_reloc::is_local_section_symbol): Check for TARGET_CODE.
7560 (Output_reloc::is_target_specific): New function.
7561 (Output_reloc::target_arg): New function.
7562 (class Output_reloc) [SHT_RELA]: Add four new constructors for
7563 absolute relocs and target specific relocs.
7564 (class Output_data_reloc) [SHT_REL]: Add add_absolute and
7565 add_target_specific.
7566 (class Output_data_reloc) [SHT_RELA]: Likewise.
7567 * output.cc (Output_reloc::Output_reloc): Add four new versions
7568 for absolute relocs and target specific relocs.
7569 (Output_reloc::set_needs_dynsym_index): Add TARGET_CODE case.
7570 (Output_reloc::get_symbol_index): Likewise.
7571 (Output_reloc::local_section_offset): Check that local_sym_index_
7572 is not TARGET_CODE or 0.
7573 (Output_reloc::symbol_value): Likewise.
7574 (Output_reloc::write) [SHT_RELA]: Call target for target specific
7575 reloc.
7576 * target.h (class Target): Add reloc_symbol_index and reloc_addend
7577 functions. Add do_reloc_symbol_index and do_reloc_addend virtual
7578 functions.
7579 * layout.cc (add_target_dynamic_tags): Use output section for
7580 DT_PLTRELSZ and DT_JMPREL.
7581
3a44184e
ILT
75822010-01-07 Ian Lance Taylor <iant@google.com>
7583
7584 PR 11061
7585 * output.h (class Output_reloc) [SHT_RELA]: Add is_relative
7586 function.
7587 (class Output_data_reloc_generic): Define.
7588 (class Output_data_reloc_base): Change base class to
7589 Output_data_reloc_generic. Change add() method to call
7590 bump_relative_reloc_count for a relative reloc. Remove
7591 sort_relocs_ field.
7592 * output.cc (Output_data_reloc_base::do_write): Change sort_reloc_
7593 to sort_relocs().
7594 * layout.cc (Layout::add_target_dynamic_tags): Change dyn_rel to
7595 Output_data_reloc_generic*. Add DT_RELCOUNT/DT_RELACOUNT tag if
7596 appropriate.
7597 * layout.h (class Layout): Update declaration.
7598
ea715a34
ILT
75992010-01-07 Ian Lance Taylor <iant@google.com>
7600
7601 * output.h (class Output_data): Add const version of
7602 output_section and do_output_section.
7603 (class Output_section_data): Add const version of
7604 do_output_section.
7605 (class Output_section): Likewise.
7606 * layout.cc (Layout::add_target_dynamic_tags): New function.
7607 * layout.h (class Layout): Update declarations.
7608 * arm.cc (Target_arm::do_finalize_sections): Use
7609 add_target_dynamic_tags.
7610 * i386.cc (Target_i386::do_finalize_sections): Likewise.
7611 * powerpc.cc (Target_powerpc::do_finalize_sections): Likewise.
7612 * sparc.cc (Target_sparc::do_finalize_sections): Likewise.
7613 * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
7614
659948a4
ILT
76152010-01-07 Ian Lance Taylor <iant@google.com>
7616
7617 PR 11042
7618 * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Mark the dynamic
7619 object as needed.
7620
9d3b86f6
ILT
76212010-01-07 Dmitry Gorbachev <d.g.gorbachev@gmail.com>
7622 Ian Lance Taylor <iant@google.com>
7623
7624 PR 11019
7625 * object.cc: Instantiate Xindex::initialize_symtab_xindex and
7626 Xindex::read_symtab_xindex.
7627
bb0d3eb0
DK
76282010-01-07 Doug Kwan <dougkwan@google.com>
7629
7630 * arm.cc (Insn_template::Type): New enum value THUMB16_SPECIAL_TYPE.
7631 (Insn_template::thumb16_bcond_insn): New method declaration.
7632 (Insn_template): Fix spelling.
7633 (Stub::thumb16_special): New method declaration.
7634 (Stub::do_write): Define virtual method which was previously pure
7635 virtual.
7636 (Stub::do_thumb16_special): New method declaration.
7637 (Stub::do_fixed_endian_write): New template member.
7638 (Reloc_stub::do_write): Remove.
7639 (Reloc_stub::do_fixed_endian_write): Remove.
7640 (Cortex_a8_stub): New class definition.
7641 (Stub_factory::make_cortex_a8_stub): New method definition.
7642 (Stub_factory::Stub_factory): Add missing static storage class
7643 qualifier for elf32_arm_stub_a8_veneer_blx.
7644
ffeef7df
ILT
76452010-01-07 Ian Lance Taylor <iant@google.com>
7646
dc3f80fe
ILT
7647 PR 10980
7648 * options.h (class General_options): Add --warn-unresolved-symbols
7649 and --error-unresolved-symbols.
7650 * errors.cc (Errors::undefined_symbol): Implement
7651 --warn-unresolved-symbols.
7652
ffeef7df
ILT
7653 * options.h (class General_options): Add -z text and -z textoff.
7654 * layout.cc (Layout::finish_dynamic_section): Implement -z text.
7655
f1ec9ded
ST
76562010-01-06 Sriraman Tallam <tmsriram@google.com>
7657
7658 * gc.h (Garbage_collection::Cident_section_map): New typedef.
7659 (Garbage_collection::cident_sections): New function.
7660 (Garbage_collection::add_cident_section): New function.
7661 (Garbage_collection::cident_sections_): New member.
7662 (gc_process_relocs): Add references to sections whose names are C
7663 identifiers.
7664 * gold.h (cident_section_start_prefix): New constant.
7665 (cident_section_stop_prefix): New constant.
7666 (is_cident): New function.
7667 * layout.cc (Layout::define_section_symbols): Replace string constants
7668 with the newly defined constants.
7669 * object.cc (Sized_relobj::do_layout): Track sections whose names are
7670 C identifiers.
7671 * testsuite/Makefile.am: Add gc_orphan_section_test.
7672 * testsuite/Makefile.in: Regenerate.
7673 * testsuite/gc_orphan_section_test.cc: New file.
7674 * testsuite/gc_orphan_section_test.sh: New file.
7675
6eda8c29
ILT
76762010-01-06 Ian Lance Taylor <iant@google.com>
7677
b9674e17
ILT
7678 PR 10980
7679 * options.h (class General_options): Add --warn-shared-textrel.
7680 * layout.cc (Layout::finish_dynamic_section): Implement
7681 --warn-shared-textrel.
7682
6eda8c29
ILT
7683 PR 10980
7684 * options.h (class General_options): Add --warn-multiple-gp.
7685
32dcd44e
ILT
76862010-01-06 Viktor Kutuzov <vkutuzov@accesssoftek.com>
7687
7688 * Makefile.am (incremental_dump_DEPENDENCIES): Remove
7689 $(THREADSLIB) and $(LIBDL).
7690 * Makefile.in: Rebuild.
7691
a192ba05
ILT
76922010-01-06 Ian Lance Taylor <iant@google.com>
7693
7694 PR 10980
7695 * options.cc (General_options::parse_section_start): New function.
7696 (General_options::section_start): New function.
7697 (General_options::General_options): Initialize all members.
7698 * options.h: Include <map>
7699 (class General_options): Add --section-start. Add section_starts_
7700 member.
7701 * layout.cc (Layout::attach_allocated_section_to_segment): If
7702 --section-start was used, set the address of the segment. Remove
7703 local sort_sections.
7704 (Layout::relaxation_loop_body): If the address of the load segment
7705 has been set by --section-start, don't use it.
7706 * output.h (Output_segment::update_flags_for_output_section): New
7707 function.
7708 * output.cc (Output_segment::add_output_section): Call
7709 update_flags_for_output_section.
7710
dde3f402
ILT
77112010-01-05 Ian Lance Taylor <iant@google.com>
7712
62dfdd4d
ILT
7713 PR 10980
7714 * options.h (class General_options): Add --undefined-version.
7715 * script.cc (struct Version_expression): Add was_matched_by_symbol
7716 field.
7717 (Version_script_info::matched_symbol): New function.
7718 (Version_script_info::get_symbol_version_helper): Call
7719 matched_symbol.
7720 (Version_script_info::check_unmatched_names): New function.
7721 * script.h (class Version_script_info): Update declarations.
7722 * gold.cc (queue_middle_tasks): Handle --no-undefined-version.
7723
9c4ae156
ILT
7724 * options.h (class General_options): Use DEFINE_bool_alias for
7725 allow_multiple_definition.
7726 * resolve.cc (Symbol_table::should_override): Don't test
7727 allow_multiple_definition.
7728
dde3f402
ILT
7729 PR 10980
7730 * options.h (class General_options): Add --cref.
7731 * main.cc (main): Print cref table if --cref. Don't close mapfile
7732 until after printing cref table.
7733 * cref.cc: Include "symtab.h".
7734 (class Cref_inputs): Define Cref_table_compare and Cref_table.
7735 (Cref_table_compare::operator()): New function.
7736 (Cref_inputs::gather_cref): New function.
7737 (filecol): New static const.
7738 (Cref_inputs::print_cref): New function.
7739 (Cref::print_cref): New function.
7740 * cref.h: Include <cstdio>.
7741 (class Cref): Update declarations.
7742 * mapfile.h (Mapfile::file): New function.
7743 * object.h (class Object): Define Symbols. Declare virtual
7744 do_get_global_symbols.
7745 (Object::get_global_symbols): New function.
7746 * object.cc (Input_objects::add_object): Pass object to cref_ if
7747 --cref.
7748 (Input_objects::archive_start): Likewise.
7749 (Input_objects::archive_stop): Likewise.
7750 (Input_objects::print_cref): New function.
7751 * dynobj.h (Sized_dynobj::do_get_global_symbols): New function.
7752 * dynobj.cc (big_endian>::do_add_symbols): Create symbols_ if
7753 --cref.
7754 * plugin.cc (Sized_pluginobj::do_get_global_symbols): New
7755 function.
7756 * plugin.h (class Sized_pluginobj): Update declarations.
7757
8781f709
ILT
77582010-01-05 Ian Lance Taylor <iant@google.com>
7759
7760 * symtab.cc (Symbol_table::add_from_object): Rename def parameter
7761 to is_default_version. Rename insdef to insdefault.
7762 (Symbol_table::add_from_relobj): Rename def to is_default_version
7763 and local to is_forced_local.
7764 (Symbol_table::add_from_pluginobj): Likewise.
7765 (Symbol_table::add_from_dynobj): Likewise.
7766 (Symbol_table::define_special_symbol): Rename insdef to
7767 insdefault.
7768
fe35d28d
ILT
77692010-01-04 Ian Lance Taylor <iant@google.com>
7770
30bc8c46
ILT
7771 PR 10980
7772 * options.h (class General_options): Add
7773 --allow-multiple-definition and -z muldefs.
7774 * resolve.cc (Symbol_table::should_override): Don't warn about a
7775 multiple symbol definition if --allow-multiple-definition or -z
7776 muldefs.
7777
7eaea549
ILT
7778 PR 10980
7779 * options.h (class General_options): Add --add-needed and
7780 --copy-dt-needed-entries. Tweak --as-needed help entry.
7781 * object.cc (Input_objects::check_dynamic_dependencies): Give an
7782 error if --copy-dt-needed-entries aka --add-needed is used and
7783 would cause a change in behaviour.
7784
fe35d28d
ILT
7785 PR 10980
7786 * options.h (class General_options): Add -G as a short version of
7787 --shared. Add no-op options -assert, -g, and -i.
7788
55a2bb35
ST
77892010-01-04 Sriraman Tallam <tmsriram@google.com>
7790
7791 * gc.h (gc_process_relocs): Call is_section_foldable_candidate to
7792 check for .text or .gnu.linkonce.t sections.
7793 * icf.cc (Icf::find_identical_sections): Ditto.
7794 Change the detection for mangled function name within the section
7795 name.
7796 * icf.h (is_section_foldable_candidate): New function.
7797
719328e1
ILT
77982009-12-30 Ian Lance Taylor <iant@google.com>
7799
7800 PR 10980
7801 * options.h (class General_options): Permit two dashes with
7802 --retain-symbols-file.
7803
d7bb5745
ILT
78042009-12-30 Ian Lance Taylor <iant@google.com>
7805
403a15dd
ILT
7806 PR 10979
7807 * layout.cc (Layout::relaxation_loop_body): If -Ttext was used,
7808 don't put the file header and segment headers in the text
7809 segment.
7810
eda294df
ILT
7811 PR 10979
7812 * common.cc (Sort_commons::operator()): Stabilize sort when both
7813 entries are NULL.
7814 (Symbol_table::do_allocate_commons_list): When allocating common
7815 symbols, skip a symbol which is no longer common.
7816 * symtab.h (Symbol::is_common): Test whether the symbol comes from
7817 an object before checking its type.
7818 * testsuite/common_test_2.c: New file.
7819 * testsuite/common_test_3.c: New file.
7820 * testsuite/Makefile.am (check_PROGRAMS): Add common_test_2.
7821 (common_test_2_SOURCES, common_test_2_DEPENDENCIES): Define.
7822 (common_test_2_LDFLAGS, common_test_2_LDADD): Define.
7823 (common_test_2_pic.o, common_test_2.so): New targets.
7824 (common_test_3_pic.o, common_test_3.so): New targets.
7825 * testsuite/Makefile.in: Rebuild.
7826
d7bb5745
ILT
7827 PR 10979
7828 * script.cc (read_input_script): If we see a new SECTIONS clause,
7829 and we have added an input section, give an error.
7830 * layout.h (class Layout): Add have_added_input_section function.
7831 Add have_added_input_section_ field.
7832 * layout.cc (Layout::Layout): Initialize
7833 have_added_input_section_.
7834 (Layout::layout): Set have_added_input_section_.
7835 (Layout::layout_eh_frame): Likewise.
7836
fc59c572
ILT
78372009-12-30 Ian Lance Taylor <iant@google.com>
7838
7839 PR 10931
7840 * options.h (class General_options): Add --sort-common option.
7841 * symtab.h (class Symbol_table): Define Sort_commons_order enum.
7842 * common.cc (Sort_common): Add sort_order parameter to
7843 constructor. Add sort_order_ field.
7844 (Sort_commons::operator): Check sort_order_.
7845 (Symbol_table::allocate_commons): Determine the sort order.
7846 (Symbol_table::do_allocate_commons): Add sort_order parameter.
7847 Change all callers.
7848 (Symbol_table::do_allocate_commons_list): Likewise.
7849
1c74fab0
ILT
78502009-12-30 Ian Lance Taylor <iant@google.com>
7851
7852 PR 10916
7853 * symtab.cc (Symbol_table::add_from_relobj): When not exporting
7854 symbols from this object, don't change the visibility of an
7855 undefined symbol.
7856 * testsuite/exclude_libs_test_1.c (lib1_ref): New function.
7857
6affe781
ILT
78582009-12-30 Ian Lance Taylor <iant@google.com>
7859
7860 PR 10861
7861 * script.h (class Version_script_info): Define Language enum.
7862 Update declarations. Define Glob, Exact, and Lookup types. Add
7863 new fields globals_, locals_, and is_finalized_.
7864 * script.cc: Various formatting fixes.
7865 (class Parser_closure): Change language_stack_ from a vector of
7866 std::string to one of Version_script_info::Language. Adjust all
7867 uses accordingly.
7868 (class Lazy_demangler): Remove.
7869 (struct Version_expression): Change language from std::string to
7870 Version_script_info::Language.
7871 (Version_script_info::Version_script_info): New function.
7872 (Version_script_info::~Version_script_info): Don't call clear.
7873 (Version_script_info::finalize): New function.
7874 (Version_script_info::build_lookup_tables): New function.
7875 (Version_script_info::build_expression_list_lookup): New
7876 function.
7877 (Version_script_info::get_symbol_version_helper): Rewrite to use
7878 lookup tables.
7879 (Version_script_info::print_expression_list): Adjust to use
7880 Version_script_info::Language.
7881 (script_push_lex_into_version_mode): Check that the version script
7882 has not been finalized.
7883 (version_script_push_lang): Change language string to
7884 Version_script_info::Language.
7885 * options.cc (Command_line::version_script): New function.
7886 * options.h (class General_options): Add finalize_dynamic_list
7887 function. Change version_script from declaration to definition.
7888 * testsuite/ver_test_4.script: Remove duplicate def of t2_2.
7889 * testsuite/version_script.map: Remove duplicate def of foo.
7890 * testsuite/Makefile.am (ver_matching_def.so): Depend upon
7891 version_script.map.
7892 * testsuite/Makefile.in: Rebuild.
7893
818bf354
ILT
78942009-12-30 Ian Lance Taylor <iant@google.com>
7895
7896 PR 10843
7897 * target-reloc.h (relocate_for_relocatable): When copying a reloc,
7898 if the input symbol index is 0, make the output symbol index 0.
7899
ebcc8304
ILT
79002009-12-30 Ian Lance Taylor <iant@google.com>
7901
7902 PR 10670
7903 * options.h (class General_options): Add -x/--discard-all.
7904 * object.cc (Sized_relobj::do_count_local_symbols): Handle
7905 --discard-all. If the local symbol needs a dynamic entry, check
7906 that before handling --discard-locals.
7907
176fe33f
ILT
79082009-12-30 Ian Lance Taylor <iant@google.com>
7909
bb321bb1
ILT
7910 PR 10450
7911 * output.cc (Output_segment::Output_segment): If PT_TLS, set the
7912 flags to PF_R.
7913 (Output_segment::add_output_section): Don't change the flags if
7914 the type is PT_TLS.
7915
176fe33f
ILT
7916 PR 10450
7917 * dynobj.cc (Dynobj::create_gnu_hash_table): Add symbols to the
7918 GNU hash table if they need a dynamic value. Otherwise, don't add
7919 them if they are defined in a dynamic object or are forced local.
7920
e8cd95c7
ILT
79212009-12-29 Ian Lance Taylor <iant@google.com>
7922
1b81fb71
ILT
7923 PR 10450
7924 * layout.cc (Layout::create_dynamic_symtab): Only set entsize of
7925 .gnu.hash table for a 32-bit target.
7926
8d6d383d
ILT
7927 PR 10450
7928 * symtab.h (Symbol::needs_dynsym_entry): A symbol in both a
7929 regular and a dynamic object only needs a dynamic symbol table
7930 entry if it is externally visible.
7931
e785ec03
ILT
7932 PR 10450
7933 * i386.cc (class Target_i386): Initialize global_offset_table_ in
7934 constructor. Add global_offset_table_ field.
7935 (Target_i386::got_section): Set global_offset_table_.
7936 (Target_i386::do_finalize_sections): Set global_offset_table_
7937 size.
7938 * x86_64.cc (class Target_x86_64): Initialize global_offset_table_
7939 in constructor. Add global_offset_table_ field.
7940 (Target_x86_64::got_section): Set global_offset_table_.
7941 (Target_x86_64::do_finalize_sections): Set global_offset_table_
7942 size.
7943
1a2dff53
ILT
7944 * layout.cc (Layout::Layout): Initialize increase_relro_.
7945 (Layout::get_output_section): Add is_relro, is_last_relro, and
7946 is_first_non_relro parameters. Change all callers.
7947 (Layout::choose_output_section): Likewise.
7948 (Layout::add_output_section_data): Likewise.
7949 (Layout::make_output_section): Likewise.
7950 (Layout::set_segment_offsets): Clear increase_relro when using a
7951 linker script.
7952 * layout.h (class Layout): Add increase_relro method. Add
7953 increase_relro_ field. Update declarations.
7954 * output.cc (Output_section::Output_section): Initialize
7955 is_last_relro_ and is_first_non_relro_.
7956 (Output_segment::add_output_section): Group relro sections is
7957 do_sort is true. Handle is_last_relro and is_first_non_relro.
7958 (Output_segment::maximum_alignment): Remove relro handling.
7959 (Output_segment::set_section_addresses): Add increase_relro
7960 parameter. Change all callers. Add initial alignment to align
7961 relro sections on separate page. Remove old relro handling.
7962 (Output_segment::set_section_list_addresses): Remove in_relro
7963 parameter. Change all callers.
7964 (Output_segment::set_offset): Add increase parameter. Change all
7965 callers. Remove old relro handling.
7966 * output.h (class Output_section): Add new methods: is_last_relro,
7967 set_is_last_relro, is_first_non_relro, set_is_first_non_relro.
7968 Add is_last_relro_ and is_first_non_relro_ fields.
7969 * i386.cc (Target_i386::got_section): Don't call set_is_relro.
7970 Create separate .got.plt section. Call increase_relro.
7971 * x86_64.cc (Target_x86_64::got_section): Likewise.
7972 * testsuite/relro_script_test.t: Add .got.plt.
7973
f0ba79e2
ILT
7974 PR 10450
7975 * layout.cc (Layout::Layout): Initialize dynamic_symbol_ field.
7976 (Layout::create_initial_dynamic_sections): Set dynamic_symbol_.
7977 (Layout::finalize): Call set_dynamic_symbol_size.
7978 (Layout::set_dynamic_symbol_size): New function.
7979 * layout.h (class Layout): Add dynamic_symbol_ field. Declare
7980 set_dynamic_symbol_size.
7981
e8cd95c7
ILT
7982 PR 10450
7983 * output.h (class Output_section): Add is_entsize_zero_ field.
7984 * output.cc (Output_section::Output_section): Initialize
7985 is_entsize_zero_.
7986 (Output_section::set_entsize): If two different entsizes are
7987 requested, force it to zero.
7988 (Output_section::add_input_section): Set flags for .debug_str
7989 before updating section flags. Set entsize.
7990 (Output_section::update_flags_for_input_section): Set SHF_MERGE
7991 and SHF_STRING if all input sections have those flags.
7992
3e1b9a8a
RÁE
79932009-12-29 Rafael Espindola <espindola@google.com>
7994
7995 * main.cc (main): Fix the sys time reporting.
e8cd95c7
ILT
7996 * workqueue.cc (Workqueue::find_and_run_task): Fix the sys time
7997 reporting.
3e1b9a8a 7998
3dcad376
ST
79992009-12-29 Sriraman Tallam <tmsriram@google.com>
8000
8001 * options.cc (General_options::parse_version): Allow -v to exit
8002 without an error if there is nothing to link.
8003
084e2665
ILT
80042009-12-29 Ian Lance Taylor <iant@google.com>
8005
8006 * configure.ac: Set the MCMODEL_MEDIUM conditional to false if
8007 using a version of gcc before 4.1.
8008 * configure: Rebuild.
8009
250acde3
CD
80102009-12-28 Chris Demetriou <cgd@google.com>
8011
8012 * attributes.cc (Output_attributes_section_data::do_write): Use
8013 std::vector::front rather than std::vector::data.
8014
99fff23b
ILT
80152009-12-28 Ian Lance Taylor <iant@google.com>
8016
8017 * symtab.h (class Symbol_table): Add enum Defined.
8018 * resolve.cc (Symbol_table::should_override): Add defined
8019 parameter. Change all callers. Test whether object is NULL
8020 before calling a method on it.
8021 (Symbol_table::report_resolve_problem): Add defined parameter.
8022 Change all callers.
8023 (Symbol_table::should_override_with_special): Likewise.
8024 * symtab.cc (Symbol_table::define_in_output_data): Add defined
8025 parameter. Change all callers.
8026 (Symbol_table::do_define_in_output_data): Likewise.
8027 (Symbol_table::define_in_output_segment): Likewise.
8028 (Symbol_table::do_define_in_output_segment): Likewise.
8029 (Symbol_table::define_as_constant): Likewise.
8030 (Symbol_table::do_define_as_constant): Likewise.
8031 * script.h (class Symbol_assignment): Add is_defsym parameter to
8032 constructor; change all callers.
8033 * script.cc (Script_options::add_symbol_assignment): Add is_defsym
8034 parameter. Change all callers. Add is_defsym_ field.
8035 (class Parser_closure): Add parsing_defsym parameter to
8036 constructor; change all callers. Add parsing_defsym accessor
8037 function. Add parsing_defsym_ field.
8038
556bd683
ILT
80392009-12-28 Ian Lance Taylor <iant@google.com>
8040
8041 * gold.cc (queue_middle_tasks): Fix formatting.
fa618ee4 8042 * object.cc (Relobj::is_section_name_included): Likewise.
556bd683 8043
1782c879
ILT
80442009-12-23 Ian Lance Taylor <iant@google.com>
8045
8046 * i386.cc (Target_i386::do_calls_non_split): Recognize
8047 -fsplit-stack prologue for a function with a static chain.
cbc999b9
ILT
8048 * x86_64.cc (Target_x86_64::do_calls_non_split): Recognize
8049 -fsplit-stack prologue when using %r11.
1782c879 8050
329ca2b1
ST
80512009-12-21 Sriraman Tallam <tmsriram@google.com>
8052
8053 * options.cc (General_options::parse_version): Make -v continue and do
8054 the link like GNU ld does.
8055
d675ff46
RÁE
80562009-12-17 Rafael Avila de Espindola <espindola@google.com>
8057
8058 * Makefile.am (CCFILES): Add timer.cc.
8059 (HFILES): Add timer.h.
8060 * configure.ac: Check for sysconf and times.
8061 * main.cc: include timer.h.
8062 (main): Use Timer instead of get_run_time.
8063 * timer.cc: New.
8064 * timer.h: New.
8065 * workqueue.cc: include timer.h.
8066 (Workqueue::find_and_run_task):
8067 Report user, sys and wall time.
8068 * Makefile.in: Regenerate.
8069 * config.in: Regenerate.
8070 * configure: Regenerate.
8071
d6344fb5
DK
80722009-12-16 Doug Kwan <dougkwan@google.com>
8073
8074 * arm.cc (Arm_relobj::scan_sections_for_stubs): Exclude ICF-eliminated
8075 sections.
8076 * object.cc (Sized_relobj::do_finalize_local_symbols): Handle
8077 relaxed input sections.
8078 * output.cc (Output_section::find_relaxed_input_section): Change
8079 return type to Output_relaxed_input_section pointer. Adjust code
8080 for new type of relaxed_input_section_map_.
8081 * output.h (Output_section::find_relaxed_input_section): Change
8082 return type to Output_relaxed_input_section pointer.
8083 (Output_section::Output_relaxed_input_section_by_input_section_map):
8084 New type.
8085 (Output_section::relaxed_input_section_map_): Change type to
8086 Output_section::Output_relaxed_input_section_by_input_section_map.
8087 * symtab.cc (Symbol_table::compute_final_value): Handle relaxed
8088 input section.
8089
0e0d5469
ILT
80902009-12-15 Ian Lance Taylor <iant@google.com>
8091
8092 * layout.cc (Layout::create_shstrtab): Only write out after input
8093 sections if we are compressing debug sections.
8094
0649a889
ILT
80952009-12-15 Ian Lance Taylor <iant@google.com>
8096
8097 * archive.cc (Archive::add_symbols): Only look up a symbol without
8098 a version if there is, in fact, a version.
8099
2ea97941
ILT
81002009-12-14 Ian Lance Taylor <iant@google.com>
8101
8102 Revert -Wshadow changes, all changes from:
8103 2009-12-11 Doug Kwan <dougkwan@google.com>
8104 2009-12-11 Nick Clifton <nickc@redhat.com>
8105 * configure.ac: Remove -Wshadow when setting WARN_CXXFLAGS.
8106
b0eec2cc
DK
81072009-12-11 Doug Kwan <dougkwan@google.com>
8108
8109 * arm.cc (Target_arm::do_finalize_sections): Fix build breakage
8110 due to -Wshadow.
8111 * attributes.cc (Object_attribute::size): Ditto.
8112 (Attributes_section_data::size): Ditto.
8113 (Attributes_section_data::Attributes_section_data): Ditto.
8114 (Output_attributes_section_data::do_write): Ditto.
8115 * attributes.h (Object_attribute::set_type): Ditto.
8116 * testsuite/tls_test_main.cc (safe_lock, safe_unlock): Ditto.
8117
91d6fa6a
NC
81182009-12-11 Nick Clifton <nickc@redhat.com>
8119
8120 * archive.cc: Fix shadowed variable warnings.
8121 * arm.cc: Likewise.
8122 * compressed_output.cc: Likewise.
8123 * compressed_output.h: Likewise.
8124 * configure: Likewise.
8125 * dwarf_reader.cc: Likewise.
8126 * dynobj.cc: Likewise.
8127 * dynobj.h: Likewise.
8128 * ehframe.cc: Likewise.
8129 * ehframe.h: Likewise.
8130 * errors.cc: Likewise.
8131 * expression.cc: Likewise.
8132 * fileread.cc: Likewise.
8133 * fileread.h: Likewise.
8134 * freebsd.h: Likewise.
8135 * i386.cc: Likewise.
8136 * icf.cc: Likewise.
8137 * incremental.h: Likewise.
8138 * layout.cc: Likewise.
8139 * layout.h: Likewise.
8140 * mapfile.cc: Likewise.
8141 * merge.cc: Likewise.
8142 * merge.h: Likewise.
8143 * object.cc: Likewise.
8144 * object.h: Likewise.
8145 * options.h: Likewise.
8146 * output.cc: Likewise.
8147 * output.h: Likewise.
8148 * parameters.cc: Likewise.
8149 * plugin.cc: Likewise.
8150 * powerpc.cc: Likewise.
8151 * reduced_debug_output.cc: Likewise.
8152 * reduced_debug_output.h: Likewise.
8153 * reloc.cc: Likewise.
8154 * reloc.h: Likewise.
8155 * resolve.cc: Likewise.
8156 * script-sections.cc: Likewise.
8157 * script.cc: Likewise.
8158 * script.h: Likewise.
8159 * sparc.cc: Likewise.
8160 * symtab.cc: Likewise.
8161 * symtab.h: Likewise.
8162 * target-select.cc: Likewise.
8163 * target-select.h: Likewise.
8164 * token.h: Likewise.
8165 * workqueue.cc: Likewise.
8166 * workqueue.h: Likewise.
8167 * x86_64.cc: Likewise.
8168
a0351a69
DK
81692009-12-10 Doug Kwan <dougkwan@google.com>
8170
8171 * arm.cc (attributes.h): New include.
8172 (Arm_relobj::Arm_relobj): Initialize attributes_section_data_.
8173 (Arm_relobj::~Arm_relobj): Delete object pointed by
8174 attributes_section_data_.
8175 (Arm_relobj::attributes_section_data): New method definition.
8176 (Arm_relobj::attributes_section_data_): New data member declaration.
8177 (Arm_dynobj::Arm_dynobj): Initialize attributes_section_data_.
8178 (Arm_dynobj::~Arm_dynobj): Delete object pointed by
8179 attributes_section_data_.
8180 (Arm_dynobj::attributes_section_data): New method definition.
8181 (Arm_dynobj::attributes_section_data_): New data member declaration.
8182 (Target_arm::Target_arm): Initialize attributes_section_data_. Change
8183 initialization value of may_use_blx_ to false.
2e702c99 8184 (Target_arm::using_thumb2, Target_arm::using_thumb_only,
a0351a69
DK
8185 Target_arm::may_use_arm_nop, Target_arm::may_use_thumb2_nop): Use
8186 object attributes to compute results instead of hard-coding.
8187 (Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order,
8188 Target_arm::get_secondary_compatible_arch,
8189 Target_arm::set_secondary_compatible_arch
8190 Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name,
8191 Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes):
8192 New method declarations.
8193 (Target_arm::get_aeabi_object_attribute): New method definition.
8194 (Target_arm::attributes_section_data_): New data member declaration.
8195 (read_arm_attributes_section): New template definition.
8196 (Arm_relobj::do_read_symbols): Read attributes section if it exists.
8197 (Arm_dynobj::do_read_symbols): Ditto.
8198 (Target_arm::do_finalize_sections): Merge attributes sections from
8199 input. Check for BLX use after attributes section merging.
8200 Fix __exidx_start and __exidx_end visibility. Create an
8201 .ARM.attributes section if necessary.
8202 (Target_arm::get_secondary_compatible_arch,
8203 Target_arm::set_secondary_compatible_arch,
8204 Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name,
8205 Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes,
e1df38aa 8206 Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order):
a0351a69
DK
8207 New method definitions.
8208
b59befec
ILT
82092009-12-09 Ian Lance Taylor <iant@google.com>
8210
8211 * plugin.cc (Plugin::load): Don't cast from void* to a function
8212 pointer.
8213
1276bc89
ILT
82142009-12-09 Ian Lance Taylor <iant@google.com>
8215
8216 * dynobj.cc (Sized_dynobj::do_read_symbols): Clear version
8217 information fields.
8218
2f2de248
L
82192009-12-09 H.J. Lu <hongjiu.lu@intel.com>
8220
8221 * testsuite/Makefile.am (two_file_shared_1_pic_2_test_DEPENDENCIES):
8222 Replace two_file_shared_1.so with two_file_shared_2.so.
8223 * testsuite/Makefile.in: Regenerated.
8224
4f787271
DK
82252009-12-08 Doug Kwan <dougkwan@google.com>
8226
8227 * Makefile.am (CCFILES): Add attributes.cc and int_encoding.cc.
8228 (HFILES): Add attributes.h and int_encoding.h.
8229 * Makefile.in: Regenerate.
8230 * dwarf_reader.cc (read_unsigned_LEB_128, read_signed_LEB_128): Move
8231 function definitions to int_encoding.cc
8232 * dwarf_reader.h (read_unsigned_LEB_128, read_signed_LEB_128): Move
8233 prototypes to int_encoding.h
8234 * reduced_debug_output.cc (int_encoding.h): New include.
8235 (write_unsigned_LEB_128, get_length_as_unsigned_LEB_128): Move
8236 function definitions to int_encoding.cc
8237 (insert_into_vector, read_from_pointer): Move template definitions to
8238 int_encoding.h
8239 * attributes.cc: New file.
8240 * attributes.h: New file.
8241 * int_encoding.cc: New file.
8242 * int_encoding.h: New file.
8243
20b52f1a
RÁE
82442009-12-07 Rafael Avila de Espindola <espindola@google.com>
8245
8246 PR gold/11055
8247 * incremental-dump.cc (dump_incremental_inputs): New.
8248 (main): Use dump_incremental_inputs.
8249
53d7974c
L
82502009-12-07 H.J. Lu <hongjiu.lu@intel.com>
8251
8252 PR gold/10893
8253 * i386.cc (Target_i386::Scan::globa): Use is_func instead of
8254 checking elfcpp::STT_FUNC.
8255 (Target_i386::Relocate::relocate): Likewise.
8256 * x86_64.cc (Target_x86_64::Scan::global): Likewise.
8257
8258 * symtab.cc (Symbol_table::sized_write_symbol): Turn IFUNC
8259 symbols from shared libraries into normal FUNC symbols.
8260
8261 * symtab.h (Symbol): Add is_func and use it.
8262
05a352e6
DK
82632009-12-05 Doug Kwan <dougkwan@google.com>
8264
8265 * arm.cc (Target_arm::arm_info): Initialize new fields
8266 attributes_section and attributes_vendor.
8267 * i386.cc (Target_i386::i386_info): Same.
8268 * object.cc (Sized_relobj::do_layout): Skip attribute section.
8269 * gold/powerpc.cc (Target_powerpc::powerpc_info): Initialize new
8270 fields attributes_section and attributes_vendor.
53d7974c 8271 * sparc.cc (Target_sparc::sparc_info): Same.
05a352e6
DK
8272 * target.h (Target::attributes_section, Target::attributes_vendor,
8273 Target::is_attributes_section, Target::attribute_arg_type,
8274 Target::attributes_order): New method definitions.
8275 (Target::Target_info::attributes_section,
8276 Target::Target_info::attributes_vendor): New fields.
8277 (Target::do_attribute_arg_type, Target::do_attributes_order): New
8278 virtual method definitions.
8279 * x86_64.cc (Target_x86_64::x86_64_info): Initialize new fields
8280 attributes_section and attributes_vendor.
8281 * testsuite/testfile.cc (Target_test::test_target_info): Same.
8282
f4e5969c
DK
82832009-12-05 Doug Kwan <dougkwan@google.com>
8284
8285 * arm.cc: Update comments about interworking and stub generation.
8286 (Target_arm::Relocate::reloc_is_non_pic): Update list of relocations
8287 considered as non-PIC.
8288 (Arm_relocate_functions::base_abs): Fix formatting.
8289 (Arm_relocate_functions::got_prel): Fix comment. Change interface
8290 of function to use GOT entry address instead of offset.
8291 (Target_arm::Scan::global): Issue an error if a symbol would need a
8292 PLT does not get one because it is untyped. Remove code to create
8293 dynamic symbols for relative branches.
8294 (Target_arm::Relocate::relocate: Use 0 instead of false since function
8295 takes unsigned integer instead of boolean.
8296
1abce4a6
L
82972009-12-05 H.J. Lu <hongjiu.lu@intel.com>
8298
8299 * testsuite/Makefile.am (constructor_test_LDADD): New. Empty.
8300 (two_file_test_LDADD): Likewise.
8301 (common_test_1_LDADD): Likewise.
8302 (exception_test_LDADD) Likewise.
8303 (weak_test_LDADD): Likewise.
8304 (many_sections_test_LDADD): Likewise.
8305 (initpri1_LDADD): Likewise.
8306 (script_test_1_LDADD): Likewise.
8307 (script_test_2_LDADD): Likewise.
8308 (justsyms_LDADD): Likewise.
8309 (binary_test_LDADD): Likewise.
8310 (large_LDADD): Likewise.
8311 * testsuite/Makefile.in: Regenerated.
8312
adcf2816 83132009-12-04 H.J. Lu <hongjiu.lu@intel.com>
1abce4a6 8314
adcf2816
L
8315 * resolve.cc (symbol_to_bits): Treat STB_GNU_UNIQUE as STB_GLOBAL.
8316 (Symbol_table::override_with_special): Likewise.
8317 (Symbol_table::add_from_object): Likewise.
8318
28e67f5d
RÁE
83192009-12-04 Rafael Avila de Espindola <espindola@google.com>
8320
8321 * incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
8322 Don't set the data_offset twice.
8323
ae10a101
RÁE
83242009-12-04 Rafael Avila de Espindola <espindola@google.com>
8325
8326 * testsuite/Makefile.in: Regenerate.
8327
f59f41f3
DK
83282009-12-03 Doug Kwan <dougkwan@google.com>
8329
8330 * arm.cc: Remove comment about missing .ARM.exidx section symbols.
8331 (Target_arm::do_finalize_sections): Add parameter for symbol table
8332 pointer. Add __exidx_start and __exidx_end symbols as appropriate.
8333 * i386.cc (Target_i386::do_finalize_sections): Add an additional
8334 parameter for symbol table pointer.
8335 * layout.cc (Layout::finalize): Call Target::finalize_sections with
8336 an additional parameter for a pointer to symbol table.
8337 * powerpc.cc (Target_powerpc::do_finalize_sections): Add an additional
8338 parameter for a symbol table pointer.
8339 * sparc.cc (Target_sparc::do_finalize_sections): Ditto.
8340 * target.h (Target::finalize_sections, Target::do_finalize_sections):
8341 Ditto.
8342 * x86_64.cc (Target_x86_64::do_finalize_sections): Add an additional
8343 parameter for a symbol table pointer.
8344
ca55d848
RÁE
83452009-12-03 Rafael Avila de Espindola <espindola@google.com>
8346
8347 * incremental.cc (Incremental_inputs_header)
8348 (Incremental_inputs_header_write, Incremental_inputs_entry)
8349 (Incremental_inputs_entry_write): Move ...
8350 * incremental.h (Incremental_inputs_header)
8351 (Incremental_inputs_header_write, Incremental_inputs_entry)
8352 (Incremental_inputs_entry_write): here.
8353
3aec4f9c
RÁE
83542009-12-02 Rafael Avila de Espindola <espindola@google.com>
8355
8356 * incremental.cc (make_sized_incremental_binary): Set the target.
8357 Error if it is incompatible.
8358 * output.h (Output_file): Add filename method.
8359
9c0ae74d
RÁE
83602009-12-02 Rafael Avila de Espindola <espindola@google.com>
8361
8362 * incremental.cc (Incremental_inputs_entry): Remove unused argument
8363 from the get_* methods.
8364
a45500ae
RÁE
83652009-12-02 Rafael Avila de Espindola <espindola@google.com>
8366
8367 * incremental-dump.cc (main): Check that the offeset of a script is 0.
8368 * incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
8369 Write 0 for the data_offset of scripts.
8370
325e6408
RÁE
83712009-12-02 Rafael Avila de Espindola <espindola@google.com>
8372
8373 * testsuite/Makefile.am: Add the incremental_test.sh test.
8374 * testsuite/incremental_test.sh: New.
8375 * testsuite/incremental_test_1.c: New.
8376 * testsuite/incremental_test_2.c: New.
8377
954c3e2e
RÁE
83782009-12-01 Rafael Avila de Espindola <espindola@google.com>
8379
703d02da 8380 * incremental-dump.cc (main): Fix typos.
954c3e2e 8381
f8086623
RÁE
83822009-11-27 Rafael Avila de Espindola <espindola@google.com>
8383
8384 PR gold/11025
8385 * incremental-dump.cc (main): Use llu to print 64 bit values.
8386
3b0dd6ac
L
83872009-11-26 Per Øyvind Karlsen <peroyvind@mandriva.org>
8388 H.J. Lu <hongjiu.lu@intel.com>
8389
8390 * Makefile.am (incremental_dump_DEPENDENCIES): Add $(THREADSLIB)
8391 $(LIBDL).
8392 (incremental_dump_LDADD): Likewise.
8393 * Makefile.in: Regenerated.
8394
a6d1ef57 83952009-11-25 Doug Kwan <dougkwan@google.com>
e1df38aa 8396
a6d1ef57
DK
8397 Revert:
8398
8399 2009-11-25 Doug Kwan <dougkwan@google.com>
8400
8401 * arm.cc (Target_arm::Target_arm): Move method definition
8402 outside of class definition. Add code to handle
8403 --target1-rel, --target1-abs and --target2= options.
8404 (Target_arm::get_reloc_reloc_type): Change method to be
8405 non-static and const.
8406 (Target_arm::target1_is_rel_, Target_arm::target2_reloc_):
8407 New data member declaration.
8408 (Target_arm::Scan::local, Target_arm::Scan::global,
8409 Target_arm::Relocate::relocate,
8410 Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
8411 Adjust call to Target_arm::get_real_reloc_type.
8412 (Target_arm::get_real_reloc_type): Use command line options
8413 to determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
8414 * options.h (--target1-rel, --target1-abs, --target2): New
8415 ARM-only options.
8416
50aeb7d4
DK
84172009-11-25 Doug Kwan <dougkwan@google.com>
8418
8419 * arm.cc (Target_arm::Target_arm): Move method definition outside of
8420 class definition. Add code to handle --target1-rel, --target1-abs
8421 and --target2= options.
8422 (Target_arm::get_reloc_reloc_type): Change method to be non-static
8423 and const.
8424 (Target_arm::target1_is_rel_, Target_arm::target2_reloc_): New data
8425 member declaration.
8426 (Target_arm::Scan::local, Target_arm::Scan::global,
8427 Target_arm::Relocate::relocate,
8428 Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Adjust
8429 call to Target_arm::get_real_reloc_type.
8430 (Target_arm::get_real_reloc_type): Use command line options to
8431 determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
8432 * options.h (--target1-rel, --target1-abs, --target2): New ARM-only
8433 options.
8434
51938283
DK
84352009-11-25 Doug Kwan <dougkwan@google.com>
8436
8437 * arm.cc (Target_arm::may_use_thumb2_nop): New method definition.
8438 (Arm_relocate_functions::thumb_branch_common): New metod declaration.
8439 (Arm_relocate_functions::abs12, Arm_relocate_functions::abs16): Fix
8440 formatting.
8441 (Arm_relocate_functions::thm_call): Replace body with a call to
8442 Arm_relocate_functions::thumb_branch_common.
8443 (Arm_relocate_functions::thm_jump24,
8444 Arm_relocate_functions::thm_xpc22): New method definitions.
8445 (Arm_relocate_functions::thumb_branch_common): New method definition.
8446 (Reloc_stub::stbu_type_for_reloc): Fix incorrect uses of bit-wise-or
8447 operator.
8448 (Target_arm::Relocate::relocate): Adjust call to thm_call.
8449 Add code to handle R_ARM_THM_XPC22 and R_ARM_THM_JUMP24.
8450
e2b8f3c4
RÁE
84512009-11-24 Rafael Avila de Espindola <espindola@google.com>
8452
8453 * Makefile.am: Build incremental-dump
8454 * Makefile.in: Regenerate.
8455 * incremental-dump.cc: New.
8456 * incremental.cc (Incremental_inputs_header_data,
8457 Incremental_inputs_entry_data): Move to incremental.h
8458 * incremental.h: (Incremental_inputs_header_data,
8459 Incremental_inputs_entry_data): Move from incremental.cc
8460
bcba9aec
RÁE
84612009-11-24 Rafael Avila de Espindola <espindola@google.com>
8462
8463 * incremental.cc (Incremental_inputs_header,
8464 Incremental_inputs_header_write, Incremental_inputs_entry,
8465 Incremental_inputs_entry_write): Add a typedef with the data type.
8466
7c3afe08
RÁE
84672009-11-24 Rafael Avila de Espindola <espindola@google.com>
8468
8469 * incremental.cc (Incremental_inputs_header,
8470 Incremental_inputs_header_write, Incremental_inputs_entry,
8471 Incremental_inputs_entry_write): Update comment about which
8472 type has the filed descriptions.
8473
d204b6e9
DK
84742009-11-15 Doug Kwan <dougkwan@google.com>
8475
8476 * arm.cc (Target_arm::may_use_arm_nop): New method definition.
8477 (Arm_relocate_functions::arm_branch_common): Change method defintion
8478 in class definition to a method declaration and update list of formal
8479 parameters.
8480 (Arm_relocate_functions::plt32, Arm_relocate_functions::call,
8481 Arm_relocation_functions::jump24): Adjust call to
8482 Arm_relocate_functions::arm_branch_common. Update list of formal
8483 parameters.
8484 (Arm_relocate_functions::xpc25): New method definition.
8485 (Arm_relocate_functions::arm_branch_common): Move method defintion
8486 out from class definition. Use stubs for mode-switching and extending
8487 branch ranges.
8488 (Target_arm::Relocate::relocate): Handle weakly-undefined symbols
8489 specially. Change code to enable use of stubs in ARM branches.
8490
43d12afe
DK
84912009-11-10 Doug Kwan <dougkwan@google.com>
8492
8493 * arm.cc (Arm_relobj::do_relocate_sections): Remove options parameter
8494 in method declaration.
8495 (Target_arm::relocate_stub): New method declaration.
8496 (Target_arm::default_target): Change to return a pointer instead of
8497 a const reference.
8498 (Reloc_stub::stub_type_for_reloc): Adjust for the change in
8499 Target_arm::default_target.
8500 (Arm_Relobj::do_relocate_sections): Remove options paramater in
8501 method definition.
8502 (Target_arm::relocate_section): Adjust view.
8503 (Target_arm::relocate_stub): New method definition.
8504
ac33a407
DK
85052009-11-10 Doug Kwan <dougkwan@google.com>
8506
8507 * i386.cc (Target_i386::do_calls_non_split): Add a cast to avoid
8508 a format warning.
8509 * incremental.cc (open_incremental_binary): Initialized local
8510 variables to avoid warnings.
8511 * object.cc (make_elf_object): Ditto.
8512 * x86_64.cc (Target_x86_64::do_calls_non_split): Add a cast to avoid
8513 a format warning.
e1df38aa 8514
88ee28e9
L
8515009-11-09 H.J. Lu <hongjiu.lu@intel.com>
8516
8517 PR gold/10930
8518 * testsuite/plugin_test.c: Include "config.h".
8519
2daedcd6
DK
85202009-11-09 Doug Kwan <dougkwan@google.com>
8521
8522 * arm.cc (Target_arm::fake_relnum_for_stubs): New constant.
8523 (arm_symbol_value): Remove.
8524 (Arm_relocate_functions::arm_branch_common,
8525 Arm_relocate_functions::abs8, Arm_relocate_functions::thm_abs5,
8526 Arm_relocate_functions::abs12, Arm_relocate_functions::abs16,
8527 Arm_relocate_functions::abs32, Arm_relocate_functions::rel32,
8528 Arm_relocate_functions::thm_call, Arm_relocate_functions::plt32,
8529 Arm_relocate_functions::call, Arm_relocate_functions::jump24,
8530 Arm_relocate_functions::prel31, Arm_relocate_functions::mov_abs_nc,
8531 Arm_relocate_functions::movt_abs, Arm_relocate_functions::movw_abs_nc,
8532 Arm_relocate_functions::thm_mobw_abs_nc,
8533 Arm_relocate_functions::thm_mov_abs,
8534 Arm_relocate_functions::movw_prel_nc,
8535 Arm_relocate_functions::thm_movt_abs,
8536 Arm_relocate_functions::movt_prel,
8537 Arm_relocate_functions::thm_movw_prel_nc,
8538 Arm_relocate_functions::thm_movt_prel): Adjust callers of the above.
8539 (Target_arm::Relocate::relocate): Only decompose address into two
8540 parts if relocation type uses the thumb-bit and pass the actual
8541 bit instead of a flag indicating that the thumb-bit is used. Adjust
8542 calls to methods in Arm_relocate_functions for this change.
8543
1276bc89 85442009-11-08 Ian Lance Taylor <iant@google.com>
3e4afc80
ILT
8545
8546 PR 10925
8547 * reloc.cc: Instantiate
8548 Sized_relobj::initialize_input_to_output_maps and
8549 Sized_relobj:free_input_to_output_maps.
8550
e53ad1b5
ILT
85512009-11-06 Ian Lance Taylor <iant@google.com>
8552
8553 PR 10876
8554 * defstd.cc (in_segment): Set only_if_ref true for "end".
8555
eb44217c
DK
85562009-11-06 Doug Kwan <dougkwan@google.com>
8557
8558 * arm.cc (class Reloc_stub): Correct a comment.
8559 (Target_arm::Target_arm): Initialize arm_input_section_map_.
8560 (Target_arm::scan_section_for_stubs): New method declaration.
8561 (Target_arm::do_make_elf_object, Target_arm::do_make_output_section):
8562 Change methods from private to protected.
8563 (Target_arm::do_may_relax): New method definition.
8564 (Target_arm::do_relax, Target_arm::group_sections,
8565 Target_arm::scan_reloc_for_stub,
8566 Target_arm::scan_reloc_section_for_stubs): New method declarations.
8567 (Target_arm::arm_input_section_map_): New data member declaration.
8568 (Target_arm::scan_reloc_for_stub,
8569 Target_arm::scan_reloc_section_for_stubs,
8570 Target_arm::scan_section_for_stubs, Target_arm::group_sections,
8571 Target_arm::do_relax): New method definitions.
8572
5d329b7d
ILT
85732009-11-06 Mikolaj Zalewski <mikolaj@google.com>
8574
8575 * configure.ac: Check for (struct stat)::st_mtim
8576 * fileread.cc (File_read::get_mtime): Use st_mtim if available.
8577 * config.in: Regenerate.
8578 * configure: Regenerate.
8579
96a0d71b
ILT
85802009-11-05 Ian Lance Taylor <iant@google.com>
8581
8582 PR 10910
8583 * output.cc (Output_segment::add_output_section): Add missing
8584 return statement.
8585
594c8e5e
ILT
85862009-11-04 Ian Lance Taylor <iant@google.com>
8587
8588 PR 10880
8589 * object.h (class Object): Add is_needed and set_is_needed
8590 methods. Add is_needed_ field. Make bool fields into bitfields.
8591 * symtab.cc (Symbol_table::set_dynsym_indexes): If a symbol is
8592 defined in a dynamic object and referenced by a regular object,
8593 set is_needed for the dynamic object.
8594 * layout.cc (Layout::finish_dynamic_section): Don't add DT_NEEDED
8595 if the file is marked with as_needed and it is not needed.
8596
22b127cc
ILT
85972009-11-04 Ian Lance Taylor <iant@google.com>
8598
8599 PR 10887
8600 * arm.cc (Target_arm::do_finalize_sections): Don't add dynamic
8601 tags if data is discarded by linker script.
8602 * i386.cc (Target_i386::do_finalize_sections): Likewise.
8603 * powerpc.cc (Target_powerpc::do_finalize_sections): Likewise.
8604 * sparc.cc (Target_sparc::do_finalize_sections): Likewise.
8605 * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
8606
f5c870d2
ILT
86072009-11-04 Ian Lance Taylor <iant@google.com>
8608
8609 * layout.cc (Layout::get_output_section): Add is_interp and
8610 is_dynamic_linker_section parameters. Change all callers.
8611 (Layout::choose_output_section): Likewise.
8612 (Layout::make_output_section): Likewise.
8613 (Layout::add_output_section_data): Add is_dynamic_linker_section
8614 parameter. Change all callers.
8615 * layout.h (class Layout): Update declarations.
8616 * output.h (class Output_section): Add is_interp, set_is_interp,
8617 is_dynamic_linker_section, set_is_dynamic_linker_section methods.
8618 Add is_interp_, is_dynamic_linker_section_ fields. Change
8619 generate_code_fills_at_write_ to a bitfield.
8620 * output.cc (Output_section::Output_sections): Initialize new
8621 fields.
8622 (Output_segment::add_output_section): Add do_sort parameter.
8623 Change all callers.
8624
1ae4d23b
ILT
86252009-11-03 Ian Lance Taylor <iant@google.com>
8626
8627 PR 10860
8628 * options.h (class General_options): Add --warn-common.
8629 * resolve.cc (Symbol_table::resolve): Handle --warn-common when
8630 merging two common symbols.
8631 (Symbol_table::should_override): Handle --warn-common when merging
8632 a common symbol with a defined symbol. Use report_resolve_problem
8633 for multiple definitions.
8634 (Symbol_table::report_resolve_problem): New function.
8635 * symtab.h (class Symbol_table): Declare report_resolve_problem.
8636
55da9579
DK
86372009-11-03 Doug Kwan <dougkwan@google.com>
8638
8639 * arm.cc (Target_arm::Target_arm): Initialize stub_tables_ and
8640 stub_factory_.
8641 (Target_arm::stub_factory): New method definition.
8642 (Target_arm::new_arm_input_section,
8643 Target_arm::find_arm_input_section, Target_arm::new_stub_table,
8644 Target_arm::reloc_uses_thumb_bit): New method declarations.
e1df38aa 8645 (Target_arm::Stub_table_list, Target_arm::Arm_input_section_map):
55da9579
DK
8646 New type definitions.
8647 (Target_arm::stub_tables_, Target_arm::stub_factory_): New data
8648 member declarations.
8649 (Target_arm::reloc_uses_thumb_bit, Target_arm::new_arm_input_section,
8650 Target_arm::find_arm_input_section, Target_arm::new_stub_table):
8651 New method definitions.
8652
37a9ac43
ILT
86532009-11-03 Ian Lance Taylor <iant@google.com>
8654
8655 * options.h (class General_options): Add --warn_constructors.
8656
b3d6a3d4
ILT
86572009-11-03 Ian Lance Taylor <iant@google.com>
8658
8659 PR 10893
8660 * defstd.cc (in_section): Add entries for __rel_iplt_start,
8661 __rel_iplt_end, __rela_iplt_start, __rela_iplt_end, and __stack.
8662
934b01dd
ILT
86632009-11-03 Ian Lance Taylor <iant@google.com>
8664
8665 PR 10895
8666 * po/Make-in ($(srcdir)/$(PACKAGE).pot): Pass -C and
8667 --msgid-bugs-address.
8668 (install-pdf): New target.
8669 (install-data_yes): Look up one directory to find mkinstalldirs.
8670
03c1939b
L
86712009-11-03 H.J. Lu <hongjiu.lu@intel.com>
8672
8673 * po/Make-in (.po.gmo): Don't generate .gmo files in source
8674 tree.
8675
ebd95253
DK
86762009-10-30 Doug Kwan <dougkwan@google.com>
8677
8678 * arm.cc (Stub_addend_reader): Fix bug in previouls check-in.
8679
e9bbb538
DK
86802009-10-30 Doug Kwan <dougkwan@google.com>
8681
8682 * arm.cc (Stub_addend_reader): New struct template definition
8683 and partial specializations.
8684 (Stub_addend_reader::operator()): New method definition for a
8685 partially specialized template.
8686
d5b40221
DK
86872009-10-30 Doug Kwan <dougkwan@google.com>
8688
8689 * arm.cc (Arm_relobj::processor_specific_flags): New method
8690 definition.
8691 (Arm_relobj::do_read_symbols): New method declaration.
8692 (Arm_relobj::processor_specific_flags_): New data member declaration.
8693 (Arm_dynobj): New class definition.
8694 (Target_arm::do_finalize_sections): Add input_objects parameter.
8695 (Target_arm::do_adjust_elf_header): New method declaration.
8696 (Target_arm::are_eabi_versions_compatible,
8697 (Target_arm::merge_processor_specific_flags): New method declaration.
8698 (Target_arm::do_make_elf_object): New overloaded method definitions
8699 and declaration.
8700 (Arm_relobj::do_read_symbols): New method definition.
8701 (Arm_dynobj::do_read_symbols): Ditto.
8702 (Target_arm::do_finalize_sections): Add input_objects parameters.
8703 Merge processor-specific flags from all input objects.
8704 (Target_arm::are_eabi_versions_compatible,
8705 Target_arm::merge_processor_specific_flags,
8706 Target_arm::do_adjust_elf_header, Target_arm::do_make_elf_object):
8707 New method definitions.
8708 * i386.cc (Target_i386::do_finalize_sections): Add unnamed
8709 Input_objects pointer type parameter.
8710 * layout.cc (Layout::finalize): Pass input objects to target's.
8711 finalize_sections function.
8712 * output.cc (Output_file_header::do_sized_write): Set ELF file
8713 header's processor-specific flags.
8714 * powerpc.cc (Target_powerpc::do_finalize_sections): Add unnamed
8715 Input_objects pointer type parameter.
8716 * sparc.cc (Target_sparc::do_finalize_sections): Same.
8717 * target.h (Input_objects): New forward class declaration.
8718 (Target::processor_specific_flags,
8719 Target::are_processor_specific_flags_sect): New method definitions.
8720 (Target::finalize_sections): Add input_objects parameter.
8721 (Target::Target): Initialize processor_specific_flags_ and
8722 are_processor_specific_flags_set_.
8723 (Target::do_finalize_sections): Add unnamed Input_objects pointer type
8724 parameter.
8725 (Target::set_processor_specific_flags): New method definition.
8726 (Target::processor_specific_flags_,
8727 Target::are_processor_specific_flags_set_): New data member
8728 declarations.
8729 * x86_64.cc (Target_x86_64::do_finalize_sections): Add unnamed
8730 Input_objects pointer type parameter.
8731
ebabffbd
DK
87322009-10-30 Doug Kwan <dougkwan@google.com>
8733
8734 * arm.cc: Use Arm_address instead of elfcpp::Elf_types<32>::Elf_Addr.
8735
ad0f2072
ILT
87362009-10-28 Ian Lance Taylor <iant@google.com>
8737
8738 * object.h (class Relobj): Drop options parameter from
8739 gc_process_relocs, scan_relocs, relocate, do_gc_process_relocs,
8740 do_scan_relocs, do_relocate. Change all callers.
8741 (class Sized_relobj): Drop options parameters from
8742 do_gc_process_relocs, do_scan_relocs, do_relocate,
8743 do_relocate_sections, relocate_sections, emit_relocs_scan,
8744 emit_relocs_scan_reltype. Change all callers.
8745 (struct Relocate_info): Remove options field and all references to
8746 it.
8747 * reloc.h (class Read_relocs): Remove options constructor
8748 parameter and options_ field. Change all callers.
8749 (class Gc_process_relocs, class Scan_relocs): Likewise.
8750 (class Relocate_task): Likewise.
8751 * target-reloc.h (scan_relocs): Remove options parameter. Change
8752 all callers.
8753 (scan_relocatable_relocs): Likewise.
8754 * target.h (class Sized_target): Remove options parameter from
8755 gc_process_relocs, scan_relocs, scan_relocatable_relocs. Change
8756 all callers.
8757 * gc.h (gc_process_relocs): Remove options parameter. Change all
8758 callers.
8759 * arm.cc: Update functions to remove options parameters.
8760 * i386.cc: Likewise.
8761 * powerpc.cc: Likewise.
8762 * sparc.cc: Likewise.
8763 * x86_64.cc: Likewise.
8764 * testsuite/testfile.cc: Likewise.
8765
8ffa3667
DK
87662009-10-28 Doug Kwan <dougkwan@google.com>
8767
8768 * arm.cc (Arm_relobj): New class definition.
e1df38aa 8769 (Arm_relobj::scan_sections_for_stubs,
8ffa3667
DK
8770 Arm_relobj::do_count_local_symbols, Arm_relobj::do_relocate_sections):
8771 New method definitions.
8772
40f36857
CC
87732009-10-28 Cary Coutant <ccoutant@google.com>
8774
8775 * plugin.h (Plugin::Plugin): Initialize cleanup_done_.
8776 (Plugin::cleanup_done_): New member.
8777 (Plugin_manager::Plugin_manager): Remove cleanup_done_.
8778 (Plugin_manager::cleanup_done_): Remove.
8779 (Plugin_manager::add_input_file): Edit error message.
8780 * plugin.cc (Plugin::cleanup): Test and set cleanup_done_.
8781 (Plugin_manager::cleanup): Remove use of cleanup_done_.
8782
2c849493
ILT
87832009-10-27 Mikolaj Zalewski <mikolajz@google.com>
8784
8785 * fileread.cc: (File_read::View::~View): Use the new
8786 data_ownership_ filed.
8787 (File_read::~File_read): Dispose the new whole_file_view_.
8788 (File_read::open): Mmap the whole file if needed.
8789 (File_read::open): Use whole_file_view_ instead of contents_.
8790 (File_read::find_view): Use whole_file_view_ if applicable.
8791 (File_read::do_read): Use whole_file_view_ instead of contents_.
8792 (File_read::make_view): Use whole_file_view_ instead of contents_,
8793 update File_read::View::View call.
8794 (File_read::find_or_make_view): Update File_read::View::View
8795 call.
8796 * fileread.h: (File_read::File_read): Initialize whole_file_view_,
8797 remove contents_
8798 (File_read::View::Data_ownership): New enum.
8799 (File_read::View::View): Replace bool mapped_ with Data_ownership
8800 argument.
8801 (File_read::View::mapped_): Remove (replaced by data_ownership_).
8802 (File_read::View::data_ownership_): New field.
8803 (File_read::contents_): Remove (replaced by whole_file_view_).
8804 (File_read::whole_file_view_): New field.
8805 * options.h (class General_options): Add --keep-files-mapped.
8806
24998053
CC
88072009-10-27 Cary Coutant <ccoutant@google.com>
8808
8809 * symtab.cc (add_from_pluginobj): Pass correct value for is_ordinary.
8810 * testsuite/Makefile.am (plugin_test_5): New test case.
8811 * testsuite/Makefile.in: Regenerate.
8812
72adc4fa
DK
88132009-10-25 Doug Kwan <dougkwan@google.com>
8814
8815 * object.h (Sized_relobj::View_size, Sized_relobj::Views): Change
8816 from private to protected to allow access by child class.
8817 (Sized_relobj::do_relocate_sections): New method declaration.
8818 (Sized_relobj::relocate_sections): Virtualize.
e1df38aa 8819 * reloc.cc (Sized_relobj::do_relocate_sections): Rename from
72adc4fa
DK
8820 Sized_relobj::relocate_sections. Instantiate template explicitly
8821 for different target sizes and endianity.
8822
07f508a2
DK
88232009-10-24 Doug Kwan <dougkwan@google.com>
8824
8825 * arm.cc (Arm_output_section, Arm_relobj): Forward class declarations.
8826 (Arm_input_section::as_arm_input_section): New method.
8827 (Arm_output_section): New class definition.
8828 (Arm_output_section::create_stub_group,
8829 Arm_output_section::group_sections): New method definitions.
8830
10ad9fe5
DK
88312009-10-22 Doug Kwan <dougkwan@google.com>
8832
8833 * arm.cc (Arm_input_section): New class definition.
8834 (Arm_input_section::init, Arm_input_section:do_write,
8835 Arm_input_section::set_final_data_size,
8836 Arm_input_section::do_reset_address_and_file_offset): New method
8837 definitions.
8838
56ee5e00
DK
88392009-10-21 Doug Kwan <dougkwan@google.com>
8840
8841 * arm.cc (Stub_table, Arm_input_section): New forward class
8842 declarations.
8843 (Stub_table): New class defintion.
8844 (Stub_table::add_reloc_stub, Stub_table::relocate_stubs
8845 Stub_table::do_reset_address_and_file_offset, Stub_table::do_write):
8846 New method definition.
8847
b569affa
DK
88482009-10-21 Doug Kwan <dougkwan@google.com>
8849
8850 * arm.cc: Update copyright comments.
8851 (Target_arm): New forward class template declaration.
8852 (Arm_address): New type.
8853 (ARM_MAX_FWD_BRANCH_OFFSET, ARM_MAX_BWD_BRANCH_OFFSET,
8854 THM_MAX_FWD_BRANCH_OFFSET, THM_MAX_BWD_BRANCH_OFFSET,
8855 THM2_MAX_FWD_BRANCH_OFFSET, THM2_MAX_BWD_BRANCH_OFFSET): New
8856 constants.
8857 (Insn_template): Same.
8858 (DEF_STUBS): New macro.
8859 (Stub_type): New enum type.
8860 (Stub_template): New class definition.
8861 (Stub): Same.
8862 (Reloc_stub): Same.
8863 (Stub_factory): Same.
8864 (Target_arm::Target_arm): Initialize may_use_blx_ and
8865 should_force_pic_veneer_.
8866 (Target_arm::may_use_blx, Target_arm::set_may_use_blx,
8867 Target_arm::should_force_pic_veneer,
8868 Target_arm::set_should_force_pic_veneer, Target_arm::using_thumb2,
8869 Target_arm::using_thumb_only, Target_arm:;default_target): New
8870 method defintions.
8871 (Target_arm::may_use_blx_, Target_arm::should_force_pic_veneer_):
8872 New data member declarations.
8873 (Insn_template::size, Insn_template::alignment): New method defintions.
8874 (Stub_template::Stub_template): New method definition.
8875 (Reloc_stub::Key::name, Reloc_stub::stub_type_for_reloc,
8876 Reloc_stub::do_fixed_endian_write, Reloc_stub::do_write): Same.
8877 (Stub_factory::Stub_factory): New method definition.
8878 * gold.h (string_hash): New template.
8879 * output.h (Input_section_specifier::hash_value): Use
8880 gold::string_hash.
8881 (Input_section_specifier::string_hash): Remove.
8882 * stringpool.cc (Stringpool_template::string_hash): Use
8883 gold::string_hash.
8884
6c172549
DK
88852009-10-20 Doug Kwan <dougkwan@google.com>
8886
8887 * object.cc (Sized_relobj::do_finalize_local_symbols): Handle section
8888 symbols of relaxed input sections.
8889 * output.h (Output_section::find_relaxed_input_section): Make
8890 method public.
8891
c5617f2f
DK
88922009-10-16 Doug Kwan <dougkwan@google.com>
8893
8894 * dynobj.cc (Versions::Versions): Initialize version_script_.
8895 Only insert base version symbol definition for a shared object
8896 if version script defines any version versions.
8897 (Versions::define_base_version): New method definition.
8898 (Versions::add_def): Check that base version is not needed.
8899 (Versions::add_need): Define base version lazily.
8900 * dynobj.h (Versions::define_base_version): New method declaration.
8901 (Versions::needs_base_version_): New data member declaration.
8902 * testsuite/Makefile.am (check_SCRIPTS): Add no_version_test.sh
8903 (check_DATA): Add no_version_test.stdout.
8904 (libno_version_test.so, no_version_test.o no_version_test.stdout):
8905 New make rules.
8906 * testsuite/Makefile.in: Regenerate.
8907 * testsuite/no_version_test.c: New file.
8908 * testsuite/no_version_test.sh: Ditto.
8909
3c12dcdb
DK
89102009-10-16 Doug Kwan <dougkwan@google.com>
8911
8912 * expression.cc (class Segment_start_expression): New class definition.
8913 (Segment_start_expression::value): New method definition.
8914 (script_exp_function_segment_start): Return a new
8915 Segment_start_expression.
8916 * gold/script-c.h (script_saw_segment_start_expression): New function
8917 prototype.
8918 * script-sections.cc (Script_sections::Script_sections): Initialize
8919 SAW_SEGMENT_START_EXPRESSION_ to false.
8920 (Script_sections::set_section_addresses): Use -Ttext, -Tdata
8921 and -Tbbs options to specify section addresses if given in
8922 command line and no SEGMENT_START expression is seen in a script.
8923 * script-sections.h (Script_sections::saw_segment_start_expression,
8924 Script_sections::set_saw_segment_start_expression): New method
8925 definition.
8926 (Script_sections::saw_segment_start_expression_): New data member
8927 declaration.
8928 * script.cc (script_saw_segment_start_expression): New function.
8929 * yyscript.y (SEGMENT_START): Call script_saw_segment_start_expression.
8930 * testsuite/Makefile.am (check_SCRIPTS): Add script_test_6.sh,
8931 script_test_7.sh and script_test_8.sh.
8932 (check_DATA): Add script_test_6.stdout, script_test_7.stdout and
8933 script_test_8.stdout.
8934 (MOSTLYCLEANFILES): Add script_test_6, script_test_7 and script_test_8.
8935 (script_test_6, script_test_6.stdout, script_test_7,
8936 script_test_7.stdout, script_test_8, script_test_8.stdout): New rules.
8937 * Makefile.in: Regenerate.
8938 * testsuite/script_test_6.sh: New file.
8939 * testsuite/script_test_6.t: Same.
8940 * testsuite/script_test_7.sh: Same.
8941 * testsuite/script_test_7.t: Same.
8942 * testsuite/script_test_8.sh: Same.
8943
64b1ae37
DK
89442009-10-16 Doug Kwan <dougkwan@google.com>
8945
8946 * output.cc (Output_segment::set_section_list_address): Cast
8947 expressions to unsigned long long type to avoid format warnings.
8948
661be1e2
ILT
89492009-10-15 Ian Lance Taylor <iant@google.com>
8950
12edd763 8951 * script.cc (Script_options::add_symbol_assignment): Always add a
b3d6a3d4 8952 dot assignment to script_sections_.
12edd763
ILT
8953 * script-sections.cc (Script_sections::add_dot_assignment):
8954 Initialize if necessary.
8955
68b6574b
ILT
8956 * layout.cc (Layout::relaxation_loop_body): Don't crash if we see
8957 program headers with no load segment if there is a linker script.
8958
661be1e2
ILT
8959 * layout.cc (Layout::set_segment_offsets): Align the file offset
8960 to the segment aligment for -N or -n with no load segment.
8961 * output.cc (Output_segment::add_output_section): Don't crash if
8962 the first section is a TLS section.
8963 (Output_segment::set_section_list_addresses): Print an error
8964 message if the address moves backward in a linker script.
8965 * script-sections.cc
8966 (Output_section_element_input::set_section_addresses): Don't
8967 increase *dot_value for a SHF_TLS/SHT_NOBITS section.
8968 (Orphan_output_section::set_section_addresses): Likewise.
8969
f15f61a7
DK
89702009-10-15 Doug Kwan <dougkwan@google.com>
8971
8972 * layout.cc (Layout::finish_dynamic_section): Generate tags
8973 DT_FINI_ARRAY, DT_FINI_ARRAYSZ, DT_INIT_ARRAY, DT_INIT_ARRAYSZ,
8974 DT_PREINIT_ARRAY, DT_PREINIT_ARRAYSZ as needed. If -Bsymbolic is
8975 used, add DT_SYMBOLIC and set DF_SYMBOLIC in DT_FLAGS.
8976
82bb573a
ILT
89772009-10-14 Ian Lance Taylor <iant@google.com>
8978
8979 * object.h (class Relocate_info): Add reloc_shdr and data_shdr
8980 fields.
8981 * object.cc (Sized_relobj::relocate_sections): Set reloc_shdr and
8982 data_shdr fields of relinfo.
8983 * i386.cc (class Target_i386::Relocate): Remove ldo_addrs_ field.
8984 (Target_i386::Relocate::relocate_tls): Don't call fix_up_ldo. For
8985 R_386_TLS_LDO_32, adjust based on section flags.
8986 (Target_i386::Relocate::fix_up_ldo): Remove.
8987
374ad285
ILT
89882009-10-13 Ian Lance Taylor <iant@google.com>
8989
8990 Add support for -pie.
8991 * options.h (class General_options): Add -pie and
8992 --pic-executable.
8993 (General_options::output_is_position_independent): Test -pie.
8994 (General_options::output_is_executable): Return true if not shared
8995 and not relocatable.
8996 (General_options::output_is_pie): Remove.
8997 * options.cc (General_options::finalize): Reject incompatible uses
8998 of -pie.
8999 * gold.cc (queue_middle_tasks): A -pie link is not static.
9000 * symtab.h (Symbol::needs_plt_entry): Return false if -pie.
9001 * symtab.cc (Symbol::final_value_is_known): Return false if
9002 output_is_position_independent.
9003 * layout.cc (Layout::set_segment_offsets): Start at address 0 if
9004 output_is_position_independent.
9005 * output.cc (Output_file_header::do_sized_write): Use ET_DYN if
9006 output_is_position_independent.
9007 * i386.cc (Output_data_plt_i386::do_write): Use the PIC PLT if
9008 output_is_position_independent.
9009 * testsuite/Makefile.am (check_PROGRAMS): Add basic_pie_test and
9010 two_file_pie_test.
9011 (basic_pie_test.o, basic_pie_test): New targets.
9012 (two_file_test_1_pie.o, two_file_test_1b_pie.o): New targets.
9013 (two_file_test_2_pie.o, two_file_test_main_pie.o): New targets.
9014 (two_file_pie_test): New target.
9015 * testsuite/Makefile.in: Rebuild.
9016 * README: Remove note saying that -pie is not supported.
9017
c6585162
ILT
90182009-10-13 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
9019
9020 * options.h (class General_options): Add -init and -fini.
9021 * layout.cc (Layout::finish_dynamic_section): Emit
9022 given init and fini functions.
9023
032ce4e9
ST
90242009-10-13 Sriraman Tallam <tmsriram@google.com>
9025
9026 * gc.h (gc_process_relocs): Check if icf is enabled using new
9027 function.
9028 * gold.cc (queue_initial_tasks): Likewise.
9029 (queue_middle_tasks): Likewise.
9030 * object.cc (do_layout): Likewise.
9031 * symtab.cc (is_section_folded): Likewise.
9032 * main.cc (main): Likewise.
9033 * reloc.cc (Read_relocs::run): Likewise.
9034 (Sized_relobj::do_scan_relocs): Likewise.
9035 * icf.cc (is_function_ctor_or_dtor): New function.
9036 (Icf::find_identical_sections): Check if function is ctor or dtor when
9037 safe icf is chosen.
9038 * options.h (General_options::icf): Change option to be an enum.
9039 (Icf_status): New enum.
9040 (icf_enabled): New method.
9041 (icf_safe_folding): New method.
9042 (set_icf_status): New method.
9043 (icf_status_): New variable.
9044 * (options.cc) (General_options::finalize): Set icf_status_.
9045 * testsuite/Makefile.am: Add commands to build icf_safe_test. Modify
9046 icf_test and icf_keep_unique_test to use the --icf enum flag.
9047 * testsuite/icf_safe_test.sh: New file.
e1df38aa 9048 * testsuite/icf_safe_test.cc: New file.
032ce4e9 9049
f345227a
ST
90502009-10-12 Sriraman Tallam <tmsriram@google.com>
9051
9052 * symtab.h: Check for GOLD_SYMTAB_H before header includes. Remove
9053 includes to gc.h and icf.h.
9054 * arm.cc: Include gc.h.
9055 * gold.cc: Likewise.
9056 * i386.cc: Likewise.
9057 * powerpc.cc: Likewise.
9058 * sparc.cc: Likewise.
9059 * x86_64.cc: Likewise.
9060 * gc.h: Include icf.h.
9061
1c7814ed
ILT
90622009-10-11 Ian Lance Taylor <iant@google.com>
9063
9064 * plugin.cc: Include "gold.h" before other header files.
9065
ae3b5189
CD
90662009-10-10 Chris Demetriou <cgd@google.com>
9067
9068 * options.h (Input_file_argument::Input_file_type): New enum.
9069 (Input_file_argument::is_lib_): Replace with...
9070 (Input_file_argument::type_): New member.
9071 (Input_file_argument::Input_file_argument): Take Input_file_type
9072 'type' rather than boolean 'is_lib' as second argument.
9073 (Input_file_argument::is_lib): Use type_.
9074 (Input_file_argument::is_searched_file): New function.
9075 (Input_file_argument::may_need_search): Handle is_searched_file.
9076 * options.cc (General_options::parse_library): Support -l:filename.
9077 (General_options::parse_just_symbols): Update for Input_file_argument
9078 changes.
9079 (Command_line::process): Likewise.
9080 * archive.cc (Archive::get_file_and_offset): Likewise.
9081 * plugin.cc (Plugin_manager::release_input_file): Likewise.
9082 * script.cc (read_script_file, script_add_file): Likewise.
9083 * fileread.cc (Input_file::Input_file): Likewise.
9084 (Input_file::will_search_for): Handle is_searched_file.
9085 (Input_file::open): Likewise.
9086 * readsyms.cc (Read_symbols::get_name): Likewise.
9087 * testsuite/Makefile.am (searched_file_test): New test.
9088 * testsuite/Makefile.in: Regenerate.
9089 * testsuite/searched_file_test.cc: New file.
9090 * testsuite/searched_file_test_lib.cc: New file.
9091
f3048a1d
ILT
90922009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
9093 Ian Lance Taylor <iant@google.com>
9094
9095 * descriptor.cc: Include <cstdio> and "binary-io.h".
9096 (Descriptors::open): Open the files in binary mode always.
9097 * script.cc (Lex::get_token): Treat \r as whitespace.
9098
d4780e57
ILT
90992009-10-09 Ian Lance Taylor <iant@google.com>
9100
9101 * testsuite/retain_symbols_file_test.sh: Don't test for __tcf_0.
9102
d9a893b8
ILT
91032009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
9104 Ian Lance Taylor <iant@google.com>
9105
9106 * configure.ac: Check for readv function also.
9107 * fileread.cc (readv): Define if not HAVE_READV.
9108 * fileread.h (File_read:: max_readv_entries): Set to 1 if readv
9109 does not exist.
9110 * config.in: Regenerate.
9111 * configure: Regenerate.
9112
c0a62865
DK
91132009-10-09 Doug Kwan <dougkwan@google.com>
9114
9115 * layout.cc (Layout::make_output_section): Call target hook to make
9116 ordinary output section.
9117 (Layout::finalize): Adjust parameter list of call the
9118 Target::may_relax().
9119 * layout.h (class Layout::section_list): New method.
9120 * merge.h (Output_merge_base::entsize): Change visibility to public.
9121 (Output_merge_base::is_string, Output_merge_base::do_is_string):
9122 New methods.
9123 (Output_merge_string::do_is_string): New method.
9124 * object.cc (Sized_relobj::do_setup): renamed from
9125 Sized_relobj::set_up.
9126 * object.h (Sized_relobj::adjust_shndx,
9127 Sized_relobj::initializ_input_to_output_maps,
9128 Sized_relobj::free_input_to_output_maps): Change visibilities to
9129 protected.
9130 (Sized_relobj::setup): Virtualize.
9131 (Sized_relobj::do_setup): New method declaration.
9132 (Sized_relobj::invalidate_section_offset,
9133 Sized_relobj::do_invalidate_section_offset): New method decfinitions.
9134 (Sized_relobj::elf_file, Sized_relobj::local_values): New methods.
9135 * options.cc (parse_int): New function.
9136 * options.h (parse_int): New declaration.
9137 (DEFINE_int): New macro.
9138 (stub_group_size): New option.
9139 * output.cc (Output_section::Output_section): Initialize memebers
9140 merge_section_map_, merge_section_by_properties_map_,
9141 relaxed_input_section_map_, is_relaxed_input_section_map_valid_.
9142 (Output_section::add_input_section): Handled deferred code-fill
9143 generation and remove an old comment.
9144 (Output_section::add_relaxed_input_section): New method definition.
9145 (Output_section::add_merge_input_section): Use merge section by
9146 properties map to speed to search. Update merge section maps
9147 as appropriate.
9148 (Output_section::build_relaxation_map): New method definition.
9149 (Output_section::convert_input_sections_in_list_to_relaxed_sections):
9150 Same.
9151 (Output_section::relax_input_section): Renamed to
9152 Output_section::convert_input_sections_to_relaxed_sections and change
9153 interface to take a vector of pointers to relaxed sections.
9154 (Output_section::find_merge_section,
9155 Output_section::find_relaxed_input_section): New method definitions.
9156 (Output_section::is_input_address_mapped,
9157 Output_section::output_offset, Output_section::output_address):
9158 Use output section data maps to speed up searching.
9159 (Output_section::find_starting_output_address): Add comments.
9160 (Output_section::do_write,
9161 Output_section::write_to_postprocessing_buffer): Do code-fill
9162 generation as appropriate.
9163 (Output_section::get_input_sections): Invalidate relaxed input section
9164 map.
9165 (Output_section::restore_states): Adjust type of checkpoint .
9166 Invalidate relaxed input section map.
9167 * output.h (Output_merge_base): New class declaration.
9168 (Input_section_specifier): New class defintion.
9169 (class Output_relaxed_input_section) Change base class to
9170 Output_section_data_build.
9171 (Output_relaxed_input_section::Output_relaxed_input_section): Adjust
9172 base class initializer.
9173 (Output_section::add_relaxed_input_section): New method declaration.
9174 (Output_section::Input_section): Change visibility to protected.
2e702c99 9175 (Output_section::Input_section::relobj,
c0a62865
DK
9176 Output_section::Input_section::shndx): Handle relaxed input sections.
9177 Output_section::input_sections) Change visibility to protected. Also
9178 define overload to return a non-const pointer.
9179 (Output_section::Merge_section_properties): New class defintion.
9180 (Output_section::Merge_section_by_properties_map,
9181 Output_section::Output_section_data_by_input_section_map,
9182 Output_section::Relaxation_map): New types.
9183 (Output_section::relax_input_section): Rename method to
9184 Output_section::convert_input_sections_to_relaxed_sections and change
9185 interface to take a vector of relaxed section pointers.
9186 (Output_section::find_merge_section,
9187 Output_section::find_relaxed_input_section,
9188 Output_section::build_relaxation_map,
9189 Output_section::convert_input_sections_in_list_to_relaxed_sections):
9190 New method declarations.
9191 (Output_section::merge_section_map_
9192 Output_section::merge_section_by_properties_map_,
9193 Output_section::relaxed_input_section_map_,
9194 Output_section::is_relaxed_input_section_map_valid_,
9195 Output_section::generate_code_fills_at_write_): New data members.
9196 * script-sections.cc
9197 (Output_section_element_input::set_section_addresses): Call
9198 current_data_size and addralign methods of relaxed input sections.
9199 (Orphan_output_section::set_section_addresses): Call current_data_size
9200 and addralign methods of relaxed input sections.
9201 * symtab.cc (Symbol_table::compute_final_value): Extract template
9202 from the body of Symbol_table::sized_finalize_symbol.
9203 (Symbol_table::sized_finalized_symbol): Call
9204 Symbol_table::compute_final_value.
9205 * symtab.h (Symbol_table::Compute_final_value_status): New enum type.
9206 (Symbol_table::compute_final_value): New templated method declaration.
9207 * target.cc (Target::do_make_output_section): New method defintion.
9208 * target.h (Target::make_output_section): New method declaration.
9209 (Target::relax): Add more parameters for input objects, symbol table
9210 and layout. Adjust call to do_relax.
9211 (Target::do_make_output_section): New method declaration.
9212 (Target::do_relax): Add parameters for input objects, symbol table
9213 and layout.
9214
d446d6c4
ILT
92152009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
9216
9217 * pread.c: Include stdio.h.
9218
bc06c745
ILT
92192009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
9220
9221 * plugin.cc: Don't include dlfcn.h when ENABLE_PLUGINS is not
9222 defined.
9223
75aea3d0
ILT
92242009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
9225
9226 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
9227 Change read_shndx type to unsigned int.
9228 (Sized_dwarf_line_info::read_lines): Change shndx type to unsigned
9229 int.
9230 (Sized_dwarf_line_info::read_line_mappings): Likewise.
9231 * dwarf_reader.h (Sized_dwarf_line_info::Sized_dwarf_line_info):
9232 Change read_shndx type to unsigned int.
9233 (Sized_dwarf_line_info::read_lines): Change shndx type to unsigned
9234 int.
9235 (Sized_dwarf_line_info::read_line_mappings): Likewise.
9236 * layout.cc (Layout::create_symtab_sections): Cast the result of
9237 local_symcount * symsize to off_t in the gold_assert.
9238
be8fcb75
ILT
92392009-10-09 Viktor Kutuzov <vkutuzov@accesssoftek.com>
9240
9241 * arm.cc (Target_arm::relocate::reloc_is_non_pic): Return true for
9242 R_ARM_THM_ABS5, R_ARM_ABS8, R_ARM_ABS12, R_ARM_ABS16,
9243 R_ARM_BASE_ABS.
9244 (Arm_relocate_functions::abs8): Remove has_thumb_bit parameter.
9245 (Arm_relocate_functions::thm_abs5): New function.
9246 (Arm_relocate_functions::abs12): New function.
9247 (Arm_relocate_functions::abs16): New function.
9248 (Arm_relocate_functions::base_abs): New function.
9249 (Scan::check_non_pic): Handle R_ARM_ABS32_NOI.
9250 (Scan::local): Remove special handling of R_ARM_ABS8. Handle
9251 R_ARM_ABS32_NOI, R_ARM_THM_ABS5, R_ARM_ABS12, R_ARM_ABS16, and
9252 R_ARM_BASE_ABS.
9253 (Scan::global): Likewise.
9254 (Relocate::relocate): Handle R_ARM_ABS12, R_ARM_ABS16,
9255 R_ARM_ABS32_NOI, R_ARM_THM_ABS5, and R_ARM_BASE_ABS.
9256 (Relocatable_size_for_reloc::get_size_for_reloc): Handle
9257 R_ARM_ABS16, R_ARM_THM_ABS5, R_ARM_ABS32_NOI, R_ARM_ABS12, and
9258 R_ARM_BASE_ABS.
9259
c2a122b6
ILT
92602009-10-09 Viktor Kutuzov <vkutuzov@accesssoftek.com>
9261
9262 * arm.cc (Arm_relocate_functions::movw_prel_nc): New function.
9263 (Arm_relocate_functions::movt_prel): New function.
9264 (Arm_relocate_functions::thm_movw_prel_nc): New function.
9265 (Arm_relocate_functions::thm_movt_prel): New function.
9266 (Scan::local): Handle R_ARM_MOVW_PREL_NC, R_ARM_MOVT_PREL,
9267 R_ARM_THM_MOVW_PREL_NC, and R_ARM_THM_MOVT_PREL.
9268 (Scan::global, Relocate::relocate): Likewise.
9269 (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
9270
c4aa1e2d
ILT
92712009-10-09 Mikolaj Zalewski <mikolajz@google.com>
9272
9273 * gold.cc: (queue_initial_tasks): Pass incremental_inputs to
9274 Incremental_checker.
9275 * incremental.cc: (INCREMENTAL_LINK_VERSION): Change type to
9276 unsigned int.
9277 (class Incremental_inputs_header): New class.
9278 (Incremental_inputs_header_writer): Edit comment.
9279 (Incremental_inputs_entry): New class.
9280 (Incremental_inputs_entry_writer): Edit comment.
9281 (Sized_incremental_binary::do_find_incremental_inputs_section):
9282 Add *strtab_shndx parameter, fill it.
9283 (Sized_incremental_binary::do_check_inputs): New method.
9284 (Incremental_checker::can_incrementally_link_output_file): Use
9285 Sized_incremental_binary::check_inputs.
9286 (Incremental_inputs::report_command_line): Save command line in
9287 command_line_.
9288 * incremental.h:
9289 (Incremental_binary::find_incremental_inputs_section): New
9290 method.
9291 (Incremental_binary::do_find_incremental_inputs_section): Add
9292 strtab_shndx parameter.
9293 (Incremental_binary::do_check_inputs): New pure virtual method.
9294 (Sized_incremental_binary::do_check_inputs): Declare.
9295 (Incremental_checker::Incremental_checker): Add incremental_inputs
9296 parameter, use it to initialize incremental_inputs_.
9297 (Incremental_checker::incremental_inputs_): New field.
9298 (Incremental_checker::command_line): New method.
9299 (Incremental_checker::inputs): New method.
9300 (Incremental_checker::command_line_): New field.
9301
c549a694
ILT
93022009-10-09 Mikolaj Zalewski <mikolajz@google.com>
9303
9304 * incremental.cc: Include <cstdarg> and "target-select.h".
9305 (vexplain_no_incremental): New function.
9306 (explain_no_incremental): New function.
9307 (Incremental_binary::error): New method.
9308 (Sized_incremental_binary::do_find_incremental_inputs_section): New
9309 method.
9310 (make_sized_incremental_binary): New function.
9311 (open_incremental_binary): New function.
9312 (can_incrementally_link_file): Add checks if output is ELF and has
9313 inputs section.
9314 * incremental.h: Include "elfcpp_file.h" and "output.h".
9315 (Incremental_binary): New class.
9316 (Sized_incremental_binary): New class.
9317 (open_incremental_binary): Declare.
9318 * object.cc (is_elf_object): Use
9319 elfcpp::Elf_recognizer::is_elf_file.
9320 (make_elf_object): Use elfcpp::Elf_recognizer::is_valid_header.
9321 * output.h (Output_file::filesize): New method.
9322
fd3c5f0b
ILT
93232009-10-07 Viktor Kutuzov <vkutuzov@accesssoftek.com>
9324
9325 * arm.cc (Arm_relocate_functions::extract_arm_movw_movt_addend):
9326 New function.
9327 (Arm_relocate_functions::insert_val_arm_movw_movt): New function.
9328 (Arm_relocate_functions::extract_thumb_movw_movt_addend): New
9329 function.
9330 (Arm_relocate_functions::insert_val_thumb_movw_movt): New
9331 function.
9332 (Arm_relocate_functions::movw_abs_nc): New function.
9333 (Arm_relocate_functions::movt_abs): New function.
9334 (Arm_relocate_functions::thm_movw_abs_nc): New function.
9335 (Arm_relocate_functions::thm_movt_abs): New function.
9336 (Scan::local): Handle R_ARM_MOVW_ABS_NC, R_ARM_MOVT_ABS,
9337 R_ARM_THM_MOVW_ABS_NC, R_ARM_THM_MOVT_ABS.
9338 (Scan::global): Likewise.
9339 (Relocate::relocate): Likewise.
9340 (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
9341
7f5309a5
ILT
93422009-10-07 Viktor Kutuzov <vkutuzov@accesssoftek.com>
9343
9344 * arm.cc (Arm_relocate_functions::got_prel) New function.
9345 (Scan::local, Scan::global): Handle R_ARM_GOT_PREL.
9346 (Relocate::relocate): Likewise.
9347 (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
9348
364c7fa5
ILT
93492009-10-06 Ian Lance Taylor <iant@google.com>
9350
9351 * options.h (class General_options): Define
9352 split_stack_adjust_size parameter.
9353 * object.h (class Object): Add uses_split_stack_ and
9354 has_no_split_stack_ fields. Add uses_split_stack and
9355 has_no_split_stack accessor functions. Declare
9356 handle_split_stack_section.
9357 (class Reloc_symbol_changes): Define.
9358 (class Sized_relobj): Define Function_offsets. Declare
9359 split_stack_adjust, split_stack_adjust_reltype, and
9360 find_functions.
9361 * object.cc (Object::handle_split_stack_section): New function.
9362 (Sized_relobj::do_layout): Call handle_split_stack_section.
9363 * dynobj.cc (Sized_dynobj::do_layout): Call
9364 handle_split_stack_section.
9365 * reloc.cc (Sized_relobj::relocate_sections): Call
9366 split_stack_adjust for executable sections in split_stack
9367 objects. Pass reloc_map to relocate_section.
9368 (Sized_relobj::split_stack_adjust): New function.
9369 (Sized_relobj::split_stack_adjust_reltype): New function.
9370 (Sized_relobj::find_functions): New function.
9371 * target-reloc.h: Include "object.h".
9372 (relocate_section): Add reloc_symbol_changes parameter. Change
9373 all callers.
9374 * target.h (class Target): Add calls_non_split method. Declare
9375 do_calls_non_split virtual method. Declare match_view and
9376 set_view_to_nop.
9377 * target.cc: Include "elfcpp.h".
9378 (Target::do_calls_non_split): New function.
9379 (Target::match_view): New function.
9380 (Target::set_view_to_nop): New function.
9381 * gold.cc (queue_middle_tasks): Give an error if mixing
9382 split-stack and non-split-stack objects with -r.
9383 * i386.cc (Target_i386::relocate_section): Add
9384 reloc_symbol_changes parameter.
9385 (Target_i386::do_calls_non_split): New function.
9386 * x86_64.cc (Target_x86_64::relocate_section): Add
9387 reloc_symbol_changes parameter.
9388 (Target_x86_64::do_calls_non_split): New function.
9389 * arm.cc (Target_arm::relocate_section): Add reloc_symbol_changes
9390 parameter.
9391 * powerpc.cc (Target_powerpc::relocate_section): Add
9392 reloc_symbol_changes parameter.
9393 * sparc.cc (Target_sparc::relocate_section): Add
9394 reloc_symbol_changes parameter.
9395 * configure.ac: Call AM_CONDITIONAL for the default target.
9396 * configure: Rebuild.
9397 * testsuite/Makefile.am (TEST_AS): New variable.
9398 (check_SCRIPTS): Add split_i386.sh and split_x86_64.sh.
9399 (check_DATA): Add split_i386 and split_x86_64 files.
9400 (SPLIT_DEFSYMS): Define.
9401 (split_i386_[1234n].o): New targets.
9402 (split_i386_[124]): New targets.
9403 (split_i386_[1234r].stdout): New targets.
9404 (split_x86_64_[1234n].o): New targets.
9405 (split_x86_64_[124]): New targets.
9406 (split_x86_64_[1234r].stdout): New targets.
9407 (MOSTLYCLEANFILES): Add new executables.
9408 * testsuite/split_i386.sh: New file.
9409 * testsuite/split_x86_64.sh: New file.
9410 * testsuite/split_i386_1.s: New file.
9411 * testsuite/split_i386_2.s: New file.
9412 * testsuite/split_i386_3.s: New file.
9413 * testsuite/split_i386_4.s: New file.
9414 * testsuite/split_i386_n.s: New file.
9415 * testsuite/split_x86_64_1.s: New file.
9416 * testsuite/split_x86_64_2.s: New file.
9417 * testsuite/split_x86_64_3.s: New file.
9418 * testsuite/split_x86_64_4.s: New file.
9419 * testsuite/split_x86_64_n.s: New file.
9420 * testsuite/testfile.cc (Target_test): Update relocation_section
9421 function.
9422 * testsuite/Makefile.in: Rebuild.
9423
e8a9fcda
ILT
94242009-10-06 Ian Lance Taylor <iant@google.com>
9425
9426 * i386.cc (class Target_i386::Relocate): Add ldo_addrs_ field.
9427 (Target_i386::Relocate::relocate_tls): Call fix_up_ldo before
9428 changing local_dynamic_type_ from LOCAL_DYNAMIC_NONE. When
9429 handling R_386_TLS_LDO_32, if local_dynamic_type_ is NONE, push
9430 the address on ldo_addrs_.
9431 (Target_i386::Relocate::fix_up_ldo): New function.
9432
e99daf92
ILT
94332009-10-06 Rafael Espindola <espindola@google.com>
9434
9435 * plugin.cc (add_input_library): New.
9436 (Plugin::load): Add add_input_library to tv.
9437 (Plugin_manager::add_input_file): Add the is_lib argument.
9438 (add_input_file): Update call to Plugin_manager::add_input_file.
9439 (add_input_library): New.
9440 * plugin.h (Plugin_manager::add_input_file): Add the is_lib argument.
9441
966d4097
DK
94422009-09-30 Doug Kwan <dougkwan@google.com>
9443
9444 * arm.cc (Target_arm::may_need_copy_reloc): Check for THUMB function
9445 symbol and call Symbol::may_need_copy_reloc to determine if
9446 a copy reloc is needed.
9447 * copy-relocs.cc (Copy_relocs::need_copy_reloc): Return false if -z
9448 nocopyreloc is given in command line.
9449 (Copy_relocs::emit_copy_reloc): Assert that -z nocopyreloc is not
9450 given in command line.
9451 * i386.cc (Target_i386::may_need_copy_reloc): Remove.
9452 (Target_i386::Scan::global): Use Symbol::may_need_copy_reloc instead
9453 of the removed Target_i386::may_need_copy_reloc.
9454 * options.h (copyreloc): New option with default value false.
9455 * powerpc.cc (Target_powerpc::may_need_copy_reloc): Remove.
9456 (Target_powerpc::Scan::global): Use Symbol::may_need_copy_reloc
9457 instead of the removed Target_powerpc::may_need_copy_reloc.
9458 * sparc.cc (Target_powerpc::may_need_copy_reloc): Remove.
9459 (Target_sparc::Scan::global): Use Symbol::may_need_copy_reloc
9460 instead of the removed Target_sparc::may_need_copy_reloc.
9461 * symtab.h (Symbol::may_need_copy_reloc): New method definition.
9462 * x86_64.cc (Target_powerpc::may_need_copy_reloc): Remove.
9463 (Target_x86_64::Scan::global): Use Symbol::may_need_copy_reloc
9464 instead of the removed Target_x86_64::may_need_copy_reloc.
9465
029ba973
ILT
94662009-09-30 Ian Lance Taylor <iant@google.com>
9467
9468 * object.h (class Object): Remove target_ field, and target,
9469 sized_target, and set_target methods.
9470 (Object::sized_target): Remove.
9471 (class Sized_relobj): Update declarations. Remove sized_target.
9472 * object.cc (Sized_relobj::setup): Remove target parameter.
9473 Change all callers.
9474 (Input_objects::add_object): Don't do anything with the target.
9475 (make_elf_sized_object): Add punconfigured parameter. Change all
9476 callers. Set or test parameter target.
9477 * dynobj.cc (Sized_dynobj::target): Remove target parameter.
9478 Change all callers.
9479 * parameters.cc (Parameters::set_target): Change parameter type to
9480 be non-const.
9481 (Parameters::default_target): Remove.
9482 (set_parameters_target): Change parameter type to be non-const.
9483 (parameters_force_valid_target): New function.
9484 (parameters_clear_target): New function.
9485 * parameters.h (class Parameters): Update declarations. Remove
9486 default_target method. Add sized_target and clear_target
9487 methods. Change target_ to be non-const.
9488 (set_parameters_target): Update declaration.
9489 (parameters_force_valid_target): Declare.
9490 (parameters_clear_target): Declare.
9491 * readsyms.cc (Read_symbols::do_read_symbols): Pass punconfigured
9492 as NULL if we aren't searching.
9493 (Add_symbols::run): Don't check for compatible target.
9494 * fileread.cc (Input_file::open_binary): Call
9495 parameters_force_valid_target.
9496 * gold.cc (queue_middle_tasks): Likewise.
9497 * plugin.cc (make_sized_plugin_object): Likewise. Don't call
9498 set_target on object.
9499 * dynobj.h (class Sized_dynobj): Update declarations.
9500 * archive.cc (Archive::get_elf_object_for_member): Return NULL if
9501 make_elf_object returns NULL.
9502 (Archive::include_member): Don't check whether object target is
9503 compatible.
9504 * output.cc (Output_section::add_input_section): Get target from
9505 parameters.
9506 (Output_section::relax_input_section): Likewise.
9507 * reloc.cc (Sized_relobj::do_gc_process_relocs): Get target from
9508 parameters.
9509 (Sized_relobj::do_scan_relocs): Likewise.
9510 (Sized_relobj::relocate_sections): Likewise.
9511 * resolve.cc (Symbol_table::resolve): Likewise.
9512 * symtab.cc (Symbol_table::wrap_symbol): Likewise. Remove object
9513 parameter. Change all callers.
9514 (Symbol_table::add_from_object): Get target from parameters.
9515 (Symbol_table::add_from_relobj): Don't check object target.
9516 (Symbol_table::add_from_dynobj): Likewise.
9517 (Symbol_table::define_special_symbol): Get target from
9518 parameters.
9519 * symtab.h (class Symbol_table): Update declaration.
9520 * testsuite/binary_unittest.cc (gold_testsuite): Remove target
9521 parameter. Change all callers. Clear parameter target.
9522 (Binary_test): Test target here.
9523 * testsuite/object_unittest.cc (gold_testsuite): Remove
9524 target_test_pointer parameter. Change all callers.
9525 (Object_test): Test target here.
9526
a6a22b83
ILT
95272009-09-26 Ian Lance Taylor <iant@google.com>
9528
9529 * testsuite/initpri1.c: Don't try to use constructor priorities if
9530 compiling with gcc before 4.3.
9531
6a8f49fe
ILT
95322009-09-22 Mikolaj Zalewski <mikolajz@google.com>
9533
9534 * testsuite/retain_symbols_file_test.sh (check_present): Change
9535 output file name to retain_symbols_file_test.stdout.
9536 (check_absent): Likewise.
9537
8c604651
CS
95382009-09-18 Craig Silverstein <csilvers@google.com>
9539
9540 * object.cc (Sized_relobj::do_count): Test should_retain_symbol map.
9541 * options.cc: Include <cerrno> and <fstream>.
9542 (General_options::finalize): Parse -retain-symbols-file tag.
9543 * options.h: New flag.
9544 (General_options): New method should_retain_symbol, new
9545 variable symbols_to_retain.
9546 * symtab.cc (Symbol_table::sized_finalize_symbol): Test
9547 should_retain_symbol map.
9548 * testsuite/Makefile.am (retain_symbols_file_test): New test.
9549 * testsuite/Makefile.in: Regenerate.
9550 * testsuite/retain_symbols_file_test.sh: New file.
9551
ca58b19f
NC
95522009-09-18 Nick Clifton <nickc@redhat.com>
9553
9554 * po/es.po: Updated Spanish translation.
9555
20e6d0d6
DK
95562009-09-17 Doug Kwan <dougkwan@google.com>
9557
9558 * debug.h (DEBUG_RELAXATION): New constant.
9559 (DEBUG_ALL): Add DEBUG_RELAXATION.
9560 (debug_string_to_enum): Add relaxation debug option.
9561 * layout.cc
9562 (Layout::Relaxation_debug_check::check_output_data_for_reset_values,
9563 Layout::Relaxation_debug_check::read_sections,
9564 Layout::Relaxation_debug_check::read_sections): New method definitions.
9565 (Layout::Layout): Initialize data members
9566 record_output_section_data_from_scrips_,
9567 script_output_section_data_list_ and relaxation_debug_check_.
9568 (Layout::save_segments, Layout::restore_segments,
9569 Layout::clean_up_after_relaxation, Layout::prepare_for_relaxation,
9570 Layout::relaxation_loop_body): New method definitions.
9571 (Layout::finalize): Support relaxation. Move section layout code to
9572 Layout::relaxation_loop_body.
9573 (Layout::set_asection_address_from_script): Move code for orphan
9574 section placement out.
9575 (Layout::place_orphan_sections_in_script): New method definition.
9576 * layout.h (Output_segment_headers, Output_file_header):
9577 New forward class declarations.
9578 (Layout::~Layout): Define.
9579 (Layout::new_output_section_data_from_script): New method definition.
9580 (Layout::place_orphan_sections_in_script): New method declaration.
9581 (Layout::Segment_states): New type declaration.
9582 (Layout::save_segments, Layout::restore_segments,
9583 Layout::clean_up_after_relaxation, Layout::prepare_for_relaxation,
9584 Layout::relaxation_loop_body): New method declarations.
9585 (Layout::Output_section_data_list): New type declaration.
9586 (Layout::Relaxation_debug_check): New class definition.
9587 (Layout::record_output_section_data_from_script_,
9588 Layout::script_output_section_data_list_, Layout::segment_states_,
9589 Layout::relaxation_debug_check_): New data members.
9590 * output.cc: (Output_section_headers::do_size): New method definition.
9591 (Output_section_headers::Output_section_headers): Move size
9592 computation to Output_section_headers::do_size.
9593 (Output_segment_headers::do_size): New method definition.
e1df38aa 9594 (Output_file_header::Output_file_header): Move size computation to
20e6d0d6
DK
9595 Output_file_header::do_size and call it.
9596 (Output_file_header::do_size): New method definition.
9597 (Output_data_group::Output_data_group): Adjust call to
9598 Output_section_data.
9599 (Output_data_dynamic::set_final_data_size): Add DT_NULL tag only once.
9600 (Output_symtab_xindex::do_write): Add array bound check.
2e702c99 9601 (Output_section::Input_section::print_to_mapfile): Handle
20e6d0d6
DK
9602 RELAXED_INPUT_SECTION_CODE.
9603 (Output_section::Output_section): Initialize data member checkpoint_.
9604 (Output_section::~Output_section): Delete checkpoint object pointed
9605 by checkpoint_.
9606 (Output_section::add_input_section): Always add an Input_section if
9607 relaxing.
9608 (Output_section::add_merge_input_section): Add assert.
9609 (Output_section::relax_input_section): New method definition.
9610 (Output_section::set_final_data_size): Set load address to zero for
9611 an unallocated section.
9612 (Output_section::do_address_and_file_offset_have_reset_values):
9613 New method definition.
9614 (Output_section::Input_section_sort_enty::Input_section_sort_enty):
9615 Handle relaxed input section.
9616 (Output_section::sort_attached_input_sections): Checkpoint input
9617 section list lazily.
9618 (Output_section::get_input_sections): Change type of input_sections to
9619 list of Simple_input_section pointers. Checkpoint input section list
9620 lazily. Also handle relaxed input sections.
9621 (Output_section::add_input_section_for_script): Take a reference to
9622 a Simple_input_section object instead of Relobj pointer and section
9623 index as parameter. Handle relaxed input sections.
9624 (Output_section::save_states, Output_section::restore_states): New
9625 method definitions.
9626 * output.h (Output_data::Output_data): Initialize is_data_size_fixed_.
9627 (Output_data::is_data_size_fixed): New method definition.
9628 (Output_data::reset_addresss_and_file_offset): Do not reset data size
9629 if it is fixed.
9630 (Output_data::address_and_file_offset_have_reset_values): New method
9631 definition.
9632 (Output_data::do_address_and_file_offset_have_reset_values): New method
9633 definition.
9634 (Output_data::set_data_size): Check that data size is not fixed.
9635 (Output_data::fix_data_size): New method definition.
9636 (Output_data::is_data_size_fixed_): New data member.
9637 (Output_section_headers::set_final_data_size): New method definition.
9638 (Output_section_headers::do_size): New method declaration.
9639 (Output_segment_headers::set_final_data_size): New method definition.
9640 (Output_segment_headers::do_size): New method declaration.
9641 (Output_file_header::set_final_data_size)::New method definition.
9642 (Output_file_header::do_size)::New method declaration.
9643 (Output_section_data::Output_section_data): Add new parameter
9644 is_data_size_fixed and use it to fix data size.
9645 (Output_data_const::Output_data_const): Adjust call to base class
9646 constructor and fix data size.
9647 (Output_data_const_buffer::Output_data_const_buffer): Adjust call to
9648 base class constructor and fix data size.
9649 (Output_data_fixed_space::Output_data_fixed_space): Adjust call to
9650 base class constructor and fix data size.
9651 (Output_data_zero_fill::Output_data_zero_fill): Adjust call to base
9652 class constructor and fix data size.
9653 (Output_data_group::set_final_data_size): New method definition.
9654 (Output_data_dynamic::Dynamic_entry::tag): New method definition.
9655 (Output_symtab_xindex::Output_symtab_xindex): Adjust call to base
9656 class constructor and fix data size.
9657 (Output_relaxed_input_section): New class definition.
9658 (Output_section::Simple_input_section): New class definition.
9659 (Output_section::get_input_sections): Adjust parameter list.
9660 (Output_section::add_input_section_for_script): Same.
9661 (Output_section::save_states, Output_section::restore_states,
9662 Output_section::do_address_and_file_offset_have_reset_values,
9663 (Output_section::Input_section::Input_section): Handle
9664 RELAXED_INPUT_SECTION_CODE. Add new overload for
9665 Output_relaxed_input_section.
9666 (Output_section::Input_section::is_input_section,
9667 Output_section::Input_section::set_output_section): Handle relaxed
9668 input section.
9669 (Output_section::Input_section::is_relaxed_input_section,
9670 Output_section::Input_section::output_section_data,
9671 Output_section::Input_section::relaxed_input_section): New method
9672 definitions.
9673 (Output_section::Input_section::RELAXED_INPUT_SECTION_CODE): New enum
9674 value.
9675 (Output_section::Input_section::u1_): Update comments.
9676 (Output_section::Input_section::u2_): Add new union member poris.
9677 (Output_section::Checkpoint_output_section): New classs definition.
9678 (Output_section::relax_input_section): New method declaration.
9679 (Output_section::checkpoint_): New data member.
9680 (Output_segment): Update comments.
9681 (Output_segment::Output_segment): Un-privatize copy constructor.
9682 (Output_segment::operator=): Un-privatize.
9683 * script-sections.cc (Output_section_element::Input_section_list):
9684 Change element type to Output_section::Simple_input_section.
9685 (Output_section_element_dot_assignment::set_section_addresses):
9686 Register output section data for relaxation clean up.
9687 (Output_data_exression::Output_data_expression): Adjust call to base
9688 constructor to fix data size.
9689 (Output_section_element_data::set_section_addresses): Register
9690 Output_data_expression object for relaxation clean up.
9691 (struct Input_section_info): Replace Relobj pointer and section index
9692 pair with Output_section::Simple_input_section and Convert struct to a
9693 class.
9694 (Input_section_sorter::operator()): Adjust access to
e1df38aa 9695 Input_section_info data member to use accessors.
20e6d0d6
DK
9696 (Output_section_element_input::set_section_addresses): Use layout
9697 parameter. Adjust code to use Output_section::Simple_input_section
9698 and Input_secction_info classes. Register filler for relaxation
9699 clean up.
9700 (Orphan_output_section::set_section_addresses): Replace Relobj pointer
9701 and section index pair with Output_section::Simple_input_section
9702 class. Adjust code accordingly.
9703 (Phdrs_element::release_segment): New method definition.
9704 (Script_sections::attach_sections_using_phdrs_clause): Do not modify
9705 segment list.
9706 (Script_sections::release_segments): New method definition.
9707 * gold/script-sections.h (Script_sections::release_segments): New
9708 method declaration.
9709 * gold/target.h (Target::may_relax, Target::relax,
9710 Target::do_may_relax, Target::do_relax): New method definitions.
9711
5e445df6
ILT
97122009-09-17 Viktor Kutuzov <vkutuzov@accesssoftek.com>
9713
9714 * arm.cc (has_signed_unsigned_overflow): New function.
9715 (Arm_relocate_functions::abs8): New function.
9716 (Target_arm::Scan::local): Handle R_ARM_ABS8.
9717 (Target_arm::Scan::global): Likewise.
9718 (Target_arm::relocate::relocate): Likewise.
9719 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
9720 Likewise.
9721
8c604651 97222009-09-16 Cary Coutant <ccoutant@google.com>
72fef11a
CC
9723
9724 * testsuite/Makefile.am (MOSTLYCLEANFILES): Add more generated files.
9725 * testsuite/Makefile.in: Regenerate.
9726
1e9cc1c2
NC
97272009-09-11 Nick Clifton <nickc@redhat.com>
9728
9729 * po/gold.pot: Updated by the Translation project.
9730
6a89f575
CC
97312009-09-08 Cary Coutant <ccoutant@google.com>
9732
9733 * output.cc (Output_file::open): Add execute permission to empty file.
9734 * testsuite/Makefile.am (permission_test): New test.
9735 * testsuite/Makefile.in: Regenerate.
9736
fdcac5af
ILT
97372009-09-02 Ian Lance Taylor <iant@google.com>
9738
9739 * output.cc (Output_file::resize): Call map_no_anonymous rather
9740 than map.
9741
44453f85
ILT
97422009-09-01 Mikolaj Zalewski <mikolajz@google.com>
9743
9744 * gold.cc: Include "incremental.h".
9745 (queue_initial_tasks): Call Incremental_checker methods.
9746 * incremental.cc: Include "output.h".
9747 (Incremental_checker::can_incrementally_link_output_file): New
9748 method.
9749 * incremental.h (Incremental_checker): New class.
9750
9751 * output.cc (Output_file::open_for_modification): New method.
9752 (Output_file::map_anonymous): Changed return type to bool. Record
9753 map in base_ field.
9754 (Output_file::map_no_anonymous): New method, broken out of map.
9755 (Output_file::map): Use map_no_anonymous and map_anonymous.
9756 * output.h (class Output_file): Update declarations.
9757
293c1386
CC
97582009-08-24 Cary Coutant <ccoutant@google.com>
9759
9760 * options.h (Command_line::Pre_options): New class.
9761 (Command_line::pre_options): New member.
9762 * options.cc (gold::options::ready_to_register): New variable.
9763 (One_option::register_option): Do nothing if not registering options.
9764 Assert if same short option registered twice.
9765 (General_options::General_options): Turn off option registration when
9766 done constructing.
9767 (Command_line::Pre_options::Pre_options): New constructor.
9768
f773f3d2
CC
97692009-08-24 Cary Coutant <ccoutant@google.com>
9770
06a73cfe
CC
9771 * options.h (General_options::no_keep_memory): Remove incorrect
9772 short option.
f773f3d2 9773
a15af8e2
RW
97742009-08-24 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
9775
9776 * Makefile.am (am__skiplex, am__skipyacc): New.
9777 * Makefile.in: Regenerate.
9778
c462b41b
RW
97792009-08-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
9780
14ec8efd
RW
9781 * Makefile.am (AM_CPPFLAGS): Renamed from ...
9782 (INCLUDES): ... this.
9783 * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add -Wno-portability.
9784 (AM_CPPFLAGS): Renamed from ...
9785 (INCLUDE): ... this.
9786 * Makefile.in, testsuite/Makefile.in: Regenerate.
9787
81ecdfbb
RW
9788 * Makefile.in: Regenerate.
9789 * aclocal.m4: Likewise.
9790 * config.in: Likewise.
9791 * configure: Likewise.
9792 * testsuite/Makefile.in: Likewise.
9793
c462b41b
RW
9794 * Makefile.am (AUTOMAKE_OPTIONS): Add foreign.
9795 * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add foreign.
9796 * Makefile.in: Regenerate.
9797 * testsuite/Makefile.in: Regenerate.
9798
2da73f13
CC
97992009-08-19 Cary Coutant <ccoutant@google.com>
9800
9801 * resolve.cc (Symbol_table::resolve): Don't complain about defined
9802 symbols in shared libraries overridden by hidden or internal symbols
9803 in the main program.
9804
2db70501
CD
98052009-08-19 Chris Demetriou <cgd@google.com>
9806
9807 * testsuite/debug_msg.sh: Match .* rather than ${srcdir} when
9808 checking source file names in error messages.
9809
f733487b
DK
98102009-08-18 Doug Kwan <dougkwan@google.com>
9811
9812 * dynobj.cc (Sized_dynobj::setup): Take a Target object instead of
9813 an elcpp::Ehdr as parameter. Adjust call to set_target.
9814 * dynobj.h (Sized_dynobj::setup): Take a Target object instead of
9815 an elfcpp::Ehdr as parameter.
9816 * object.cc (Object::set_target): Remove the version that looks up
9817 a target and sets it.
9818 (Sized_relobj::setup): Take a Target object instead of
9819 an elfcpp::Ehdr as parameter. Adjust call to set_target.
9820 (make_elf_sized_object): Find target and ask target to
9821 make an ELF object.
9822 * object.h: (Object::set_target): Remove the version that looks up
9823 a target and sets it.
9824 (Sized_relobj::setup): Take a Target object instead of
9825 an elfcpp:Ehdr as parameter.
9826 * target.cc: Include dynobj.h.
9827 (Target::do_make_elf_object_implementation): New.
2e702c99 9828 (Target::do_make_elf_object): New.
f733487b
DK
9829 * target.h (Target::make_elf_object): New template declaration.
9830 (Target::do_make_elf_object): New method declarations.
9831 (Target::do_make_elf_object_implementation): New template declaration.
9832
cc70f101
ILT
98332009-08-14 Ian Lance Taylor <iant@google.com>
9834
9835 * gold.h (FUNCTION_NAME): Define.
9836 (gold_unreachable): Use FUNCTION_NAME.
9837
ef5e0cb1
ST
98382009-08-12 Sriraman Tallam <tmsriram@google.com>
9839
9840 * icf.cc (Icf::find_identical_sections): Issue a warning when a
9841 symbol in the --keep-unique list is not found.
9842
48c187ce
ST
98432009-08-12 Sriraman Tallam <tmsriram@google.com>
9844
9845 * icf.cc (Icf::find_identical_sections): Unfold symbols that have
9846 been maked as --keep-unique.
9847 (Icf::unfold_section): New function.
9848 * icf.h (Icf::unfold_section): New function.
9849 * options.h (General_options::keep_unique): New option.
9850 * testsuite/Makefile.am: Add commands to build icf_keep_unique_test.
9851 * testsuite/Makefile.in: Regenerate.
9852 * testsuite/icf_keep_unique_test.sh: New file.
9853 * testsuite/icf_keep_unique_test.cc: New file.
9854
645afe0c
CC
98552009-08-12 Cary Coutant <ccoutant@google.com>
9856
9857 PR 10471
9858 * resolve.cc (Symbol_table::resolve): Check for references from
9859 dynamic objects to hidden and internal symbols.
9860 * testsuite/Makefile.am (hidden_test.sh): New test.
9861 * testsuite/Makefile.in: Regenerate.
9862 * testsuite/hidden_test.sh: New script.
9863 * testsuite/hidden_test_1.c: New test source.
9864 * testsuite/hidden_test_main.c: New test source.
9865
11af873f
DK
98662009-08-11 Doug Kwan <dougkwan@google.com>
9867
9868 * arm.cc: Update comments.
9869 (Target_arm::do_finalize_sections): Add a special PT_ARM_EXIDX
9870 segment to locate the .ARM.exidx section if present.
9871
b9f7d72d
DK
98722009-08-09 Doug Kwan <dougkwan@google.com>
9873
9874 * dynobj.h (Sized_dynobj::do_section_entsize): Revert the previous
9875 patch.
9876
ddd3c53c
ST
98772009-08-07 Sriraman Tallam <tmsriram@google.com>
9878 * dynobj.h (Sized_dynobj::do_section_entsize): Add return to avoid
9879 compiler warnings.
9880
27721062
ST
98812009-08-06 Sriraman Tallam <tmsriram@google.com>
9882
9883 * x86_64.cc (Target_x86_64::Relocate::relocate_tls): Check for a
9884 valid tls_segment only for non-debug-section relocations.
9885 * testsuite/Makefile.am: Add gc_tls_test.
9886 * testsuite/Makefile.in: Regenerate.
9887 * testsuite/gc_tls_test.cc: New file.
9888 * testsuite/gc_tls_test.sh: New file.
9889
ef15dade 98902009-08-05 Sriraman Tallam <tmsriram@google.com>
e1df38aa 9891
ef15dade
ST
9892 * icf.cc: New file.
9893 * icf.h: New file.
9894 * Makefile.am (CCFILES): Add icf.cc.
9895 (HFILES): Add icf.h
9896 * Makefile.in: Regenerate.
9897 * dynobj.h (Sized_dynobj::do_section_entsize): New function.
9898 * gc.h (gc_process_relocs): Populate lists used by icf to contain
9899 section, symbol and addend information for the relocs.
9900 * gold.cc (queue_middle_tasks): Call identical code folding.
9901 * gold.h: Add defines for multimap.
9902 * layout.cc (Layout::create_symtab_sections): Add symtab as parameter
9903 to the call of finalize_local_symbols.
9904 * main.cc (main): Create object of class Icf.
9905 * object.cc (Sized_relobj::do_layout): Allow this function to be
9906 called twice during icf.
9907 (Sized_relobj::do_finalize_local_symbols): Fold symbols corresponding
9908 to sections marked as identical by icf.
9909 (Sized_relobj::do_section_flags): Get section_flags from Symbols_data
9910 when available.
9911 (Sized_relobj::do_section_entsize): New function.
9912 * object.h (Object::section_entsize): New function.
9913 (Object::do_section_entsize): New pure virtual function.
9914 (Relobj::finalize_local_symbols): Add new parameter.
9915 (Relobj::do_section_entsize): New function.
9916 * options.h (General_options::icf): New option.
9917 (General_options::icf_iterations): New option.
9918 (General_options::print_icf_sections): New option.
9919 * plugin.cc (Sized_pluginobj::do_section_entsize): New function.
9920 * plugin.h (Sized_pluginobj::do_section_entsize): New function.
9921 * reloc.cc (Read_relocs::run): Delay scanning relocs when doing
9922 icf.
9923 * symtab.cc (Symbol_table::is_section_folded): New function.
9924 (Symbol_table::sized_finalize_symbol): Fold symbols corresponding
9925 to sections marked as identical by icf.
9926 * symtab.h (Symbol_table::set_icf): New function.
9927 (Symbol_table::icf): New function.
9928 (Symbol_table::is_section_folded): New function.
9929 (Symbol_table::icf_): New data member.
9930 * target-reloc.h (relocate_section): Ignore sections folded by icf.
9931 * testsuite/Makefile.am: Add commands to build icf_test.
9932 * testsuite/Makefile.in: Regenerate.
9933 * testsuite/icf_test.sh: New file.
9934 * testsuite/icf_test.cc: New file.
9935
c3b65ac4
CD
99362009-07-24 Chris Demetriou <cgd@google.com>
9937
9938 * layout.cc (is_compressible_debug_section): Fix incorrect
9939 comment about compressed section names.
9940
1caf2c51
ILT
99412009-07-20 Ian Lance Taylor <ian@airs.com>
9942
9943 PR 10419
9944 * x86_64.cc (Target_x86_64::do_code_fill): Correct nop sequences.
9945
1ef4d87f
ILT
99462009-07-16 Ian Lance Taylor <iant@google.com>
9947
9948 PR 10400
9949 * layout.h: #include <map>.
9950 (class Kept_section): Change from struct to class. Add accessors
9951 and setters. Add section size to Comdat_group mapping. Change
9952 Comdat_group to std::map. Add is_comdat_ field. Add
9953 linkonce_size field in union.
9954 (class Layout): Update declaration of find_or_add_kept_section.
9955 Don't declare find_kept_object.
9956 * layout.cc (Layout::find_or_add_kept_section): Remove candidate
9957 parameter. Add object, shndx, is_comdat, and is_group_name
9958 parameters. Change all callers. Adjust for new Kept_section.
9959 (Layout::find_kept_object): Remove.
9960 * object.cc (Sized_relobj::include_section_group): Update use of
9961 Kept_section. Rename secnum to shndx. Only record
9962 Kept_comdat_section if sections are the same size.
9963 (Sized_relobj::include_linkonce_section): Update use of
9964 Kept_section. Only record Kept_comdat_section if sections are the
9965 same size. Set size of linkonce section.
9966 (Sized_relobj::map_to_kept_section): Update call to
9967 get_kept_comdat_section.
9968 * object.h (class Sized_relobj): Rename fields in
9969 Kept_comdat_section to drop trailing underscores; change object
9970 field to Relobj*. Change Kept_comdat_section_table to store
9971 struct rather than pointer.
9972 (Sized_relobj::set_kept_comdat_section): Remove kept parameter.
9973 Add kept_object and kept_shndx parameters. Change all callers.
9974 (Sized_relobj::get_kept_comdat_section): Change return type to
9975 bool. Add kept_object and kept_shndx parameters. Change all
9976 callers.
9977 * plugin.cc (Pluginobj::include_comdat_group): Update call to
9978 Layout::find_or_add_kept_section.
9979
37c3b7b0
ILT
99802009-07-09 Ian Lance Taylor <iant@google.com>
9981
9982 * merge.cc (Object_merge_map::initialize_input_to_output_map):
9983 Reserve space in the hash table.
9984
98fa85cb
ILT
99852009-07-06 Mikolaj Zalewski <mikolajz@google.com>
9986
9987 * fileread.cc (File_read::get_mtime): New method.
9988 * fileread.h (Timespec): New structure.
9989 (File_read::get_mtime): New method.
9990 * incremental.cc (Incremental_inputs_entry_data::timestamp_usec):
9991 Renamed from timestamp_nsec.
9992 (Incremental_inputs_entry_write::timestamp_sec): Fix argument to
9993 Elf_Xword.
e1df38aa 9994 (Incremental_inputs_entry_write::timestamp_usec): Renamed from
98fa85cb 9995 timestamp_nsec.
e1df38aa 9996 (Incremental_inputs::report_archive): Save mtime; style fix.
98fa85cb
ILT
9997 (Incremental_inputs::report_obejct): Save mtime; style fix.
9998 (Incremental_inputs::report_script): Save mtime; style fix.
9999 (Incremental_inputs::finalize_inputs): Style fix.
10000 (Incremental_inputs::finalize): Style fix.
10001 (Incremental_inputs::create_input_section_data): Store inputs
10002 mtime.
10003 * incremental.h (Incremental_inputs::report_script): Add mtime
10004 argument.
10005 (Incremental_inputs::Input_info::Input_info): Intialize only one
10006 union member.
10007 (Incremental_inputs::Input_info::archive): Move to nameless
10008 union.
10009 (Incremental_inputs::Input_info::obejct): Move to nameless union.
10010 (Incremental_inputs::Input_info::script): Move to nameless union.
10011 (Incremental_inputs::mtime): New field.
10012 * script.cc (read_input_script): Pass file mtime to
10013 Incremental_input.
10014 * script.h (Script_info::inputs): Style fix.
10015
c9d70757
ILT
100162009-07-01 Ian Lance Taylor <ian@airs.com>
10017
10018 * freebsd.h (Target_freebsd::do_adjust_elf_header): Use size
10019 instead of 32.
10020
9c547ec3
ILT
100212009-06-24 Ian Lance Taylor <iant@google.com>
10022
10023 PR 10156
10024 * layout.cc (Layout::choose_output_section): If we find an
10025 existing section, update the flags.
10026 (Layout::create_notes): New function, broken out of
10027 Layout::finalize.
10028 (Layout::finalize): Don't create note sections.
10029 (Layout::create_note): Don't crash if linker script discards
10030 section.
10031 (Layout::create_gold_note): Likewise.
10032 (Layout::create_build_id): Likewise. Don't set
10033 after_input_sections on the section.
10034 (Layout::create_executable_stack_info): Remove target parameter.
10035 Change caller.
10036 * layout.h (class Layout): Declare create_notes. Update
10037 declaration of create_executable_stack_info.
10038 * gold.cc (queue_middle_tasks): Call create_notes.
10039 * output.cc (Output_section::update_flags_for_input_section): Move
10040 here from output.h. If SHF_ALLOC flag is newly set, mark address
10041 invalid.
10042 * output.h (Output_data::mark_address_invalid): New function.
10043 (class Output_section): Only declare, not define,
10044 update_flags_for_input_section. Remove set_flags.
10045
55458500
ILT
100462009-06-24 Ian Lance Taylor <iant@google.com>
10047
10048 * script-sections.cc (Output_section_definition::
10049 set_section_addresses): Rename shadowing local load_address to
10050 laddr.
10051
1307d6cd
ILT
100522009-06-24 Ian Lance Taylor <iant@google.com>
10053
10054 PR 10244
10055 * reloc.cc (relocate_sections): Skip empty relocation sections.
10056
ec3f783e
ILT
100572009-06-23 Ian Lance Taylor <iant@google.com>
10058
10059 PR 10156
10060 * layout.cc (Layout::create_note): Use choose_output_section
10061 rather than make_output_section.
10062
459c9f1c
ILT
100632009-06-23 Ian Lance Taylor <iant@google.com>
10064
10065 PR 10237
10066 * options.cc (General_options::parse_V): Set printed_version_.
10067 (General_options::General_options): Initialize printed_version_.
10068 * options.h (class General_options): Add printed_version_ field.
10069 * gold.cc (queue_initial_tasks): If there are no input files,
10070 don't give a fatal error if we printed the version information.
10071 (queue_middle_tasks): If using -r with a shared object, give a
10072 fatal error rather than an ordinary error.
10073
1518dc8f
ILT
100742009-06-23 Ian Lance Taylor <iant@google.com>
10075
10076 PR 10219
10077 * layout.cc (Layout::Layout): Initialize have_stabstr_section_.
10078 (Layout::make_output_section): Set have_stabstr_section_ if we see
10079 a .stab*str section.
10080 (Layout::finalize): Call link_stabs_sections.
10081 (Layout::link_stabs_sections): New file.
10082 * layout.h (class Layout): Add have_stabstr_section_ field.
10083 Declare link_stabs_sections.
10084
3d857b98
DK
100852009-06-23 Doug Kwan <dougkwan@google.com>
10086
10087 * Makefile.am (libgold_a_LIBADD): New.
10088 (ld_new_DEPENDENCIES, ld_new_LDADD): Remove LIBOBJS
2e702c99 10089 * Makefile.in: Regenerate.
3d857b98
DK
10090 * config.in (HAVE_DECL_MEMMEM, HAVE_DECL_STRNDUP): New.
10091 * configure: Regenerate.
10092 * configure.ac (AC_CHECK_DECLS): Add strndup and memmem.
10093 * fileread.cc: Include sys/state.h
10094 * gold.h: Declare memmem and strndup if found missing.
10095 * gold_reloc.h: Include byteswap.h if HAVE_BYTESWAP_H is defined.
10096
0639a6f6
ILT
100972009-06-23 Ian Lance Taylor <iant@google.com>
10098
10099 * configure.ac: Call AC_CHECK_DECLS using C, not C++.
10100 * configure: Rebuild.
10101
8d63875c
ILT
101022009-06-23 Ian Lance Taylor <iant@google.com>
10103
10104 PR 10147
10105 * object.cc (Object::section_contents): Don't try to get a view if
10106 the section has length zero.
10107 (Object::handle_gnu_warning_section): If the section is empty, use
10108 the name of the section as the warning.
10109
f7c8a183
ILT
101102009-06-23 Ian Lance Taylor <iant@google.com>
10111
10112 PR 10133
10113 * stringpool.h (class Stringpool_template): Add optimize_ field.
10114 (Stringpool_template::set_optimize): New function.
10115 * stringpool.cc (Stringpool_template::Stringpool_template):
10116 Initialize optimize_ field.
10117 (Stringpool_template::set_string_offsets): Test local optimize
10118 fild rather than parameter.
10119 * layout.cc (Layout::Layout): Call set_optimize on the section
10120 name stringpool.
10121
e6a307ba
ILT
101222009-06-22 Ian Lance Taylor <iant@google.com>
10123
10124 PR 10030
10125 * yyscript.y: Parse TARGET.
10126 * script.cc (script_set_target): New function.
10127 * script-c.h (script_set_target): Declare.
10128 * options.cc (General_options::string_to_object_format): Rename
10129 from string_to_object_format in anonymous namespace. Change
10130 callers.
10131 * options.h (class General_options): Declare
10132 string_to_object_format.
10133
3ee173de
ILT
101342009-06-22 Ian Lance Taylor <iant@google.com>
10135
10136 * script-sections.cc (Script_sections::create_segments): Don't put
10137 program headers in a PT_LOAD segment if -n or -N.
10138
101392009-06-22 Ian Lance Taylor <iant@google.com>
e1c74d60
ILT
10140
10141 PR 10141
10142 * options.h (class General_options): Add -z lazy and -z now. Sort
10143 -z options into alphabetical order.
10144 * layout.cc (Layout::finish_dynamic_section): Handle -z now.
10145
cd6739a1 101462009-06-21 Ian Lance Taylor <iant@google.com>
8a5e3e08
ILT
10147
10148 * layout.cc (Layout::make_output_section): Call
10149 Target::new_output_section.
10150 (Layout::attach_allocated_section_to_segment): Put large section
10151 sections in a separate load segment with the large segment flag
10152 set.
10153 (Layout::segment_precedes): Sort large data segments after other
10154 load segments.
10155 (align_file_offset): New static function.
10156 (Layout::set_segment_offsets): Use align_file_offset.
10157 * output.h (class Output_section): Add is_small_section_ and
10158 is_large_section_ fields.
10159 (Output_section::is_small_section): New function.
10160 (Output_section::set_is_small_section): New function.
10161 (Output_section::is_large_section): New function.
10162 (Output_section::set_is_large_section): New function.
10163 (Output_section::is_large_data_section): New function.
10164 (class Output_segment): Add is_large_data_segment_ field.
10165 (Output_segment::is_large_data_segment): New function.
10166 (Output_segment::set_is_large_data_segment): New function.
10167 * output.cc (Output_section::Output_section): Initialize new
10168 fields.
10169 (Output_segment::Output_segment): Likewise.
10170 (Output_segment::add_output_section): Add assertion that large
10171 data sections always go in large data segments. Force small data
10172 sections to the end of the list of data sections. Force small BSS
10173 sections to the start of the list of BSS sections. For large BSS
10174 sections to the end of the list of BSS sections.
10175 * symtab.h (class Symbol): Declare is_common_shndx.
10176 (Symbol::is_defined): Check Symbol::is_common_shndx.
10177 (Symbol::is_common): Likewise.
10178 (class Symbol_table): Define enum Commons_section_type. Update
10179 declarations. Add small_commons_ and large_commons_ fields.
10180 * symtab.cc (Symbol::is_common_shndx): New function.
10181 (Symbol_table::Symbol_table): Initialize new fields.
10182 (Symbol_table::add_from_object): Put small and large common
10183 symbols in the right list.
10184 (Symbol_table::sized_finalized_symbol): Check
10185 Symbol::is_common_shndx.
10186 (Symbol_table::sized_write_globals): Likewise.
10187 * common.cc (Symbol_table::do_allocate_commons): Allocate new
10188 common symbol lists. Don't call do_allocate_commons_list if the
10189 list is empty.
10190 (Symbol_table::do_allocate_commons_list): Remove is_tls
10191 parameter. Add comons_section_type parameter. Change all
10192 callers. Handle small and large common symbols.
10193 * object.cc (Sized_relobj::do_finalize_local_symbols): Check
10194 Symbol::is_common_shndx.
10195 * resolve.cc (symbol_to_bits): Likewise.
10196 * target.h (Target::small_common_shndx): New function.
10197 (Target::small_common_section_flags): New function.
10198 (Target::large_common_shndx): New function.
10199 (Target::large_common_section_flags): New function.
10200 (Target::new_output_section): New function.
10201 (Target::Target_info): Add small_common_shndx, large_common_shndx,
10202 small_common_section_flags, and large_common_section_flags
10203 fields.
10204 (Target::do_new_output_section): New virtual function.
10205 * arm.cc (Target_arm::arm_info): Initialize new fields.
10206 * i386.cc (Target_i386::i386_info): Likewise.
10207 * powerpc.cc (Target_powerpc::powerpc_info) [all versions]:
10208 Likewise.
10209 * sparc.c (Target_sparc::sparc_info) [all versions]: Likewise.
10210 * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
10211 (Target_x86_64::do_new_output_section): New function.
10212 * configure.ac: Define conditional MCMODEL_MEDIUM.
10213 * testsuite/Makefile.am (check_PROGRAMS): Add large.
10214 (large_SOURCES, large_CFLAGS, large_DEPENDENCIES): Define.
10215 (large_LDFLAGS): Define.
10216 * testsuite/large.c: New file.
10217 * testsuite/testfile.cc (Target_test::test_target_info):
10218 Initialize new fields.
10219 * configure, testsuite/Makefile.in: Rebuild.
10220
bb04269c
DK
102212009-06-05 Doug Kwan <dougkwan@google.com>
10222
10223 * Makefile.am (CCFILES): Add target.cc.
e1df38aa 10224 * Makefile.in: Regenerate.
bb04269c
DK
10225 * i386.cc (class Target_i386): Define new virtual method to
10226 override do_is_local_label_name in parent.
10227 * object.cc (Sized_relobj::do_count_local_symbols): Discard
10228 local symbols if --discard-locals or -X is given.
10229 * options.h (class General_options): Declare new options
10230 '--discard-locals' and '-X' for discarding locals.
10231 * target.h (class Target): Define new methods is_local_label_name.
10232 Declare new virtual method do_is_local_label_name.
10233 * target.cc: New file.
10234 * testsuite/Makefile.am (check_PROGRAMS): Add discard_locals_test.
10235 (check_SCRIPTS): Add discard_locals_test.sh.
10236 (check_DATA): Add discard_local_tests.syms.
10237 (discard_locals_test_SOURCES, discard_locals_test_LDFLAGS): Define.
10238 (discard_local_tests.syms, discard_locals_test.o): New make rules.
10239 * testsuite/Makefile.in: Regenerate.
10240 * testsuite/discard_locals_test.c: New file.
10241 * testsuite/discard_locals_test.sh: Same.
10242
805bb01c
DK
102432009-06-05 Doug Kwan <dougkwan@google.com>
10244
10245 * object.cc (Sized_relobj::Sized_relobj): Initialize
10246 discarded_eh_frame_shndx_ to -1U.
10247 (Sized_relobj::do_layout): Record index of a discard .eh_frame
10248 section.
10249 (Sized_relobj::do_count_local_symbols): Skip local symbols in
10250 a discarded .eh_frame section.
10251 (Sized_relobj::do_finalize_local_symbols): Ditto.
10252 * object.h (class Sized_relobj): Declare new member
10253 discarded_eh_frame_shndx_.
10254 * testsuite/Makefile.am (check_PROGRAMS): Add local_labels_test.
10255 (local_labels_test.o, local_labels_test): New rules.
10256 * testsuite/Makefile.in: Regenerate.
10257
1dcd334d
DK
102582009-06-04 Doug Kwan <dougkwan@google.com>
10259
10260 * layout.cc (Layout::section_name_mapping): Add mapping for
10261 special ARM sections.
10262
96d49306
DK
102632009-06-03 Doug Kwan <dougkwan@google.com>
10264
10265 * arm.cc (utils::sign_extend): Reverse test in gold_assert.
10266 (utils::has_overflow): Same.
10267
dff16297
ILT
102682009-06-03 Ian Lance Taylor <iant@google.com>
10269
10270 * layout.cc (Layout::section_name_mapping): New array, replacing
10271 Layout::linkonce_mapping.
10272 (Layout::section_name_mapping_count): New variable, replacing
10273 Layout::linkonce_mapping_count.
10274 (Layout::linkonce_output_name): Remove.
10275 (Layout::output_section_name): Rewrite.
10276 * layout.h (class Layout): Rename Linkonce_mapping to
10277 Section_name_mapping, linkonce_mapping to section_name_mapping,
10278 linkonce_mapping_count to section_name_mapping_count. Don't
10279 declare linkonce_output_name.
10280
c121c671
DK
102812009-06-03 Doug Kwan <dougkwan@google.com>
10282
10283 * gold/arm.cc (namespace utils): New.
10284 (Target_arm::reloc_is_non_pic): Define new method.
10285 (class Arm_relocate_functions): New.
10286 (Target_arm::Relocate::relocate): Handle relocation types used by
10287 Android.
10288
07800fab
ILT
102892009-06-03 Ian Lance Taylor <iant@google.com>
10290
10291 * arm.cc (Target_arm::scan::global): Use || instead of |.
10292
c121c671
DK
102932009-06-02 Doug Kwan <dougkwan@google.com>
10294
10295 * gold/arm.cc (Target_arm::Scan::Scan): Initialize
10296 issued_non_pic_error_.
10297 (class Target_arm::Scan): Declare new method check_non_pic.
10298 Define new method symbol_needs_plt_entry.
10299 Declare new data member issued_non_pic_error_.
10300 (class Target_arm::Relocate): Declare new method
10301 should_apply_static_reloc.
10302 (Target_arm::may_need_copy_reloc): Handle STT_ARM_TFUNC.
10303 (Target_arm::Scan::check_non_pic): Define new method.
10304 (Target_arm::Scan::local): Handle a small subset of reloc types used
10305 by Android.
10306 (Target_arm::Scan::local): Same.
10307 (Target_arm::Relocate::should_apply_statci_reloc): Define new method.
10308
b19b0c6d
ILT
103092009-05-31 Mikolaj Zalewski <mikolajz@google.com>
10310
10311 * incremental.cc (Incremental_inputs::report_command_line): Filter
10312 out --incremental-* options.
10313
94cdfcff
DK
103142009-05-29 Doug Kwan <dougkwan@google.com>
10315
10316 * gold/arm.cc (Output_data_plt_arm): Forward declaration for new
10317 template class.
10318 (class Target_arm): Update comment.
10319 (Target_arm::Target_arm): Initialize new data members GOT_,
10320 PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_ and DYNBSS_.
10321 Declare new methods Target_arm::got_section, Target_arm::make_plt_entry
10322 and Target_arm::rel_dyn_section.
10323 Declare new_enum Target_arm::Got_type.
10324 Declare new data members GOT_, PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_
10325 and DYNBSS_.
10326 Update commments for member do_dynsym_value.
10327 (Target_arm::got_size, Target_arm::plt_section,
10328 Target_arm::may_need_copy_reloc and Target_arm::copy_reloc): Define
10329 new methods inside class defintion.
10330 (Target_arm::got_section): Define new method.
10331 (Target_arm::rel_dyn_section): Same.
10332 (Output_data_plt_arm): New template class.
10333 (Output_data_plt_arm::Output_data_plt_arm): Define constructor.
10334 (Output_data_plt_arm:do_adjust_output_section): Define new method.
10335 (Output_data_plt_arm::add_entry): Same.
10336 (Output_data_plt_arm::first_plt_entry): Define new
10337 static data member for PLT instruction template.
10338 (Output_data_plt_arm::plt_entry): Same.
10339 (Output_data_plt_arm::do_write): Define new method.
10340 (Target_arm::make_plt_entry): Same.
10341 (Target_arm::do_finalize_sections): Same.
10342 (Target_arm::do_dynsym_value): Same.
10343
4a657b0d
DK
103442009-05-28 Doug Kwan <dougkwan@google.com>
10345
10346 * Makefile.am (TARGETSOURCES): Add arm.cc.
10347 (ALL_TARGETOBJECTS): Add arm.$(OBJEXT)
10348 * Makefile.in: Regenerate.
10349 * arm.cc: New file.
10350 * configure.tgt: Add armbe*-*-*, armeb*-*-* and arm*-*-* targets.
10351
e7ae8c36
DK
103522009-05-26 Doug Kwan <dougkwan@google.com>
10353
10354 * options.cc (General_options::parse_exclude_libs). Fix a comment.
10355 (General_options::check_excluded_libs): Strip off directories in
10356 archive name before matching like GNU ld does.
10357 * testsuite/Makefile.am (MOSTLYCLEANFILES,
10358 exclude_libs_test_DEPENDENCIES): Add alt/libexclude_libs_test_3.a
10359 (exclude_libs_test_LDFLAGS): Add linker option
10360 -Wl,--exclude-libs,libexclude_libs_test_3
10361 (exclude_libs_test_LADD): Add alt/libexclude_libs_test_3.a as
10362 an explicit archive without using -l.
10363 (alt/libexclude_libs_test_3.a): New make rule.
10364 * testsuite/Makefile.in: Regenerate.
10365 * testsuite/exclude_libs_test.c : Declare lib3_default().
10366 (main): Call it.
10367 * exclude_libs_test.sh: Add tests for alt/exclude_libs_test_3.a.
10368 * exclude_libs_test_3.c: New file.
10369
f12e7348
NC
103702009-05-26 Nick Clifton <nickc@redhat.com>
10371
10372 * po/id.po: New Indonesian translation.
10373 * po/gold.pot: Updated template file.
10374
4daadc0d
ST
103752009-05-22 Sriraman Tallam <tmsriram@google.com>
10376
e1df38aa 10377 * testsuite/Makefile.am: Add -ffunction-sections to compile
4daadc0d
ST
10378 gc_comdat_test files. Add -Wl,--gc-sections to build
10379 gc_comdat_test.
10380 * testsuite/Makefile.in: Regenerate.
10381 * testsuite/gc_comdat_test.sh: Fix the condition around grep.
10382
531813ad
ST
103832009-05-21 Sriraman Tallam <tmsriram@google.com>
10384
10385 * object.cc (Sized_relobj::map_to_kept_section): Return NULL if the
10386 kept comdat section was garbage collected.
10387 * testsuite/Makefile.am: Add test gc_comdat_test.sh.
10388 * testsuite/Makefile.in: Regenerate.
10389 * testsuite/gc_comdat_test.sh: New file.
10390 * testsuite/gc_comdat_test_1.cc: New file.
10391 * testsuite/gc_comdat_test_2.cc: New file.
10392
65514900
CC
103932009-05-19 Doug Kwan <dougkwan@google.com>
10394
10395 * archive.cc (Archive::Archive): Move constructor from archive.h
10396 to here. Initialize no_export_.
10397 (Archive::get_elf_object_for_member): Set no_export flag of object.
10398 * archive.h (Archive::Archive): Move constructor body to
10399 archive.cc.
10400 (Archive::no_export): New method.
10401 (Archive::no_export_): New field.
10402 * object.h (Object::Object): Initialize no_export_ to false.
10403 (Object::no_export, Object::set_no_export): New methods.
10404 (Object::no_export_): New field.
10405 * options.cc (General_options::parse_exclude_libs): New method.
10406 (General_options::check_excluded_libs) Same.
10407 * options.h (exclude_libs): New option.
10408 (General_options::check_excluded_libs): New method declaration.
10409 (General_options::excluded_libs_): New field.
10410 * symtab.cc (Symbol_table::add_from_relobj): Hide symbols with
10411 default or protected visibility if an object has no-export flag set.
10412 testsuite/Makefile.am (check_PROGRAMS): Add exclude_libs_test.
10413 (check_SCRIPTS): Add exclude_libs_test.sh.
10414 (check_DATA): Add exclude_libs_test.syms.
10415 (MOSTLYCLEANFILES): Add exclude_libs_test.syms,
10416 libexclude_libs_test_1.a and libexclude_libs_test_2.a.
10417 (exclude_libs_test_SOURCES, exclude_libs_test_DEPENDENCIES,
10418 exclude_libs_test_LDFLAGS and exclude_libs_test_LDADD): Define.
10419 (exclude_libs_test.syms, libexclude_libs_test_1.a,
10420 libexclude_libs_test_2.a): New rules.
10421 * testsuite/Makefile.in: Regenerate.
10422 * testsuite/exclude_libs_test.c: New file.
10423 * testsuite/exclude_libs_test.sh: Ditto.
10424 * testsuite/exclude_libs_test_1.c: Ditto.
10425 * testsuite/exclude_libs_test_2.c: Ditto.
10426
1b77ea50
ILT
104272009-05-15 Ian Lance Taylor <iant@google.com>
10428
10429 * configure.ac: Check for declarations for cases where libiberty.h
10430 checks HAVE_DECL_xxx.
10431 * configure, config.in: Rebuild.
10432
072fe7ce
ILT
104332009-05-15 Mikolaj Zalewski <mikolajz@google.com>
10434
10435 * gold.h (Incremental_argument_list): Remove (invalid) forward
10436 declaration.
10437 * incremental.cc (Incremental_inputs::report_achive): New method.
10438 (Incremental_inputs::report_object): New method.
10439 (Incremental_inputs::report_script): New method.
10440 (Incremental_inputs::finalize_inputs): New method.
10441 (Incremental_inputs::finalize): Call finalize_inputs().
10442 (Incremental_inputs::sized_create_incremental_inputs_section_data):
10443 Create inputs entries.
10444 * incremental.h (Incremental_input_type): New enum.
10445 (Incremental_inputs::Incremental_input): Initialize new fields.
10446 (Incremental_inputs::report_inputs): New method.
10447 (Incremental_inputs::report_achive): New method.
10448 (Incremental_inputs::report_object): New method.
10449 (Incremental_inputs::report_script): New method.
10450 (Incremental_inputs::finalize_inputs): New method.
10451 (Incremental_inputs::Input_info): New struct.
10452 (Incremental_inputs::Input_info_map): New typedef.
10453 (Incremental_inputs::lock_): New field.
10454 (Incremental_inputs::Inputs_): New field.
10455 (Incremental_inputs::Inputs_map): New field.
10456 * main.cc (main): Call Incremental_input::report_inputs.
10457 * options.h (Input_argument_list): Typedef moved from
10458 Input_arguments.
10459 (Input_file_group::Files): Remove, use ::Input_argument_list.
10460 (Input_file_group::Input_argument_list): Remove, use
10461 ::Input_argument_list.
10462 * plugin.cc (Plugin_manager::add_input_file): Add error in
10463 incremental build.
10464 * read_syms.cc (do_read_syms): Call Incremental_input::report_*
10465 functions.
10466 * script.cc (read_input_script): Call
10467 Incremental_input::report_script.
10468 * script.h (Script_info): New class.
10469
b0481b0b
ILT
104702009-04-27 Ian Lance Taylor <iant@google.com>
10471
10472 * x86_64.cc (do_adjust_output_section): Set entsize to
10473 plt_entry_size.
10474
b22a5a41 104752009-04-23 Elliott Hughes <enh@google.com>
6d1e3092
CD
10476
10477 * output.cc (Output_file::close): After short writes, continue
10478 writing from the correct offset in the buffer being written.
10479
40fde488
CD
104802009-04-23 Chris Demetriou <cgd@google.com>
10481
10482 * configure.ac (HAVE_TR1_UNORDERED_MAP_REHASH): New define.
10483 * configure: Regenerate.
10484 * config.in: Regenerate.
10485 * gold.h: Avoid std::tr1::unordered_map and std::tr1::unordered_set
10486 if HAVE_TR1_UNORDERED_MAP_REHASH is not defined.
10487
3ce2c28e
ILT
104882009-04-21 Mikolaj Zalewski <mikolajz@google.com>
10489
10490 * incremental.cc (Incremental_inputs_header_data): Renamed from
10491 Incremental_input_header_data.
10492 (Incremental_inputs_header_data::data_size): New field.
10493 (Incremental_inputs_header_data::put_input_file_count): Renamed
10494 from input_file_count.
10495 (Incremental_inputs_header_data::put_command_line_offset): Renamed
10496 from command_line_offset.
10497 (Incremental_inputs_header_data::put_reserved): Renamed from
10498 put_reserved.
10499 (Incremental_inputs_entry_data): Renamed from
10500 Incremental_input_entry_data.
10501 (Incremental_inputs_entry_data::data_size): New field.
10502 (Incremental_inputs::report_command_line): New method.
10503 (Incremental_inputs::finalize): New method.
10504 (Incremental_inputs::create_incremental_inputs_data): New method.
10505 (Incremental_inputs::sized_create_incremental_inputs_data): New method.
10506 * incremental.h: New file.
10507 * layout.cc (Layout::Layout): Handle new incremental_inputs_.
703d02da 10508 (Layout::finalize): Create incremental inputs section in
3ce2c28e 10509 incremental builds.
703d02da 10510 (Layout::create_incremental_info_sections): New method.
3ce2c28e 10511 * layout.h (Layout::incremental_inputs): New method.
703d02da
AM
10512 (Layout::create_incremental_info_sections): New method.
10513 (Layout::incremental_inputs_): New field.
3ce2c28e
ILT
10514 * main.cc (main): Notify Incremental_input of the command line.
10515
e55bde5e
ILT
105162009-04-01 Ian Lance Taylor <iant@google.com>
10517 Mikolaj Zalewski <mikolajz@google.com>
10518
10519 * gold.h (reserve_unordered_map): Define, three versions, one for
10520 each version of Unordered_map.
10521 * layout.cc (Layout::Layout): Remove options parameter. Add
10522 number_of_input_files parameter. Don't initialize options_.
10523 Initialize number_of_input_files_ and resized_signatures_. Move
10524 sections_are_attached_.
10525 (Layout::layout_group): Reserve space for group_signatures_.
10526 (Layout::find_or_add_kept_section): Change name parameter to be a
10527 reference. Resize signatures_ map when it gets large enough.
10528 (Layout::layout_eh_frame): Use parameters->options() instead of
10529 this->options_.
10530 (Layout::make_output_section): Likewise.
10531 (Layout::attach_allocated_section_to_segment): Likewise.
10532 (Layout::finalize, Layout::create_executable_stack): Likewise.
10533 (Layout::set_segment_offsets, Layout::create_interp): Likewise.
10534 (Layout::finish_dynamic_section, Layout::write_binary): Likewise.
10535 * layout.h (class Layout): Update declarations. Remove options_
10536 field. Add number_of_input_files_ and resized_signatures_
10537 fields. Move sections_are_attached_ field.
10538 * main.cc (main): Pass number of input files to Layout
10539 constructor. Don't pass options.
10540
154b857c
ILT
105412009-03-30 Ian Lance Taylor <iant@google.com>
10542
10543 * ffsll.c (ffsll): Correct implementation.
10544
2f35ab9b
ILT
105452009-03-27 Ian Lance Taylor <iant@google.com>
10546
fd03461a
ILT
10547 * ffsll.c: New file.
10548 * configure.ac: Call AC_REPLACE_FUNCS on ffsll.
10549 * gold.h (ffsll): Declare if HAVE_FFSLL is not defined.
10550 * ftruncate.c (ftruncate): Declare before definition.
10551 * mremap.c (mremap): Likewise.
10552 * pread.c (pread): Likewise.
10553 * configure, Makefile.in, config.in: Rebuild.
10554
2f35ab9b
ILT
10555 * mremap.c: New file.
10556 * configure.ac: Call AC_REPLACE_FUNCS on mremap.
10557 * gold.h (MREMAP_MAYMOVE): Define if HAVE_MREMAP is not defined.
10558 (mremap): Declare if HAVE_MREMAP is not defined.
10559 * configure, Makefile.in, config.in: Rebuild.
10560
33aea2fd
CC
105612009-03-27 Cary Coutant <ccoutant@google.com>
10562
10563 * powerpc.cc (Target_powerpc::check_non_pic): Assert that output is
10564 position independent.
10565 * sparc.cc (Target_sparc::check_non_pic): Likewise.
10566 * x86_64.cc (Target_x86_64::check_non_pic): Likewise.
10567
6d479619
CC
105682009-03-24 Cary Coutant <ccoutant@google.com>
10569
10570 * symtab.h (needs_plt_entry): Check for unsatisfied reference from
10571 an executable.
10572 (needs_dynamic_reloc): Likewise.
10573
afc06bb8
ILT
105742009-03-24 Ian Lance Taylor <iant@google.com>
10575
10576 * yyscript.y (file_cmd): Recognize EXTERN.
10577 (extern_name_list, extern_name_list_body): New nonterminals.
10578 * script.cc (script_add_extern): Define.
10579 * script-c.h (script_add_extern): Declare.
10580
f6060a4d
ILT
105812009-03-24 Rafael Avila de Espindola <espindola@google.com>
10582
10583 * object.cc (is_elf_object): Define.
10584 * object.h (is_elf_object): Declare.
10585 * archive.cc (Archive::get_elf_object_for_member): Call
10586 is_elf_object.
33aea2fd 10587 * readsyms.cc (Read_symbols::do_read_symbols): Likewise.
f6060a4d 10588
26736d8e
ILT
105892009-03-24 Elliott Hughes <enh@google.com>
10590
10591 * output.cc (Output_file::map_anonymous): Define.
10592 (Output_file::map): Use map_anonymous. If the regular mmap fails,
10593 try an anonymous one. Report the size if the mmap fails.
10594 * output.h (class Output_file): Declare map_anonymous.
10595
22fd9730
ILT
105962009-03-24 Ian Lance Taylor <iant@google.com>
10597
10598 * target-select.cc (instantiate_target): Don't acquire the lock if
10599 the instantiated_target_ field has already been set.
10600
cb010894
ILT
106012009-03-23 Ian Lance Taylor <iant@google.com>
10602
7f055c20
ILT
10603 * gold-threads.h (class Initialize_lock): Define.
10604 * gold-threads.cc (class Initialize_lock_once): Define.
10605 (initialize_lock_control): New static variable.
10606 (initialize_lock_pointer): New static variable.
10607 (initialize_lock_once): New static function.
10608 (Initialize_lock::Initialize_lock): Define.
10609 (Initialize_lock::initialize): Define.
10610 * target-select.h: Include "gold-threads.h".
10611 (class Target_selector): Add lock_ and initialize_lock_ fields.
10612 Don't define instantiate_target, just declare it.
10613 * target-select.cc (Target_selector::Target_selector): Initialize
10614 new fields.
10615 (Target_selector::instantiate_target): Define.
10616 * descriptors.h: Include "gold-threads.h".
10617 (class Descriptors): Add initialize_lock_ field.
10618 * descriptors.cc (Descriptors::Descriptors): Initialize new
10619 field.
10620 (Descriptors::open): Use initialize_lock_ field
10621 * errors.h (class Errors): Add initialize_lock_ field.
10622 * errors.cc (Errors::Errors): Initialize new field.
10623 (Errors::initialize_lock): Use initialize_lock_ field.
10624 * powerpc.cc (class Target_selector_powerpc): Remove
10625 instantiated_target_ field. In do_recognize call
10626 instantiate_target rather than do_instantiate_target. In
10627 do_instantiate_target just allocate a new target.
10628 * sparc.cc (class Target_selector_sparc): Likewise.
10629
36959681
ILT
10630 * freebsd.h: New file.
10631 * i386.cc: Include "freebsd.h".
10632 (Target_i386): Derive from Target_freebsd rather than
10633 Sized_target.
10634 (Target_selector_i386): Derive from Target_selector_freebsd rather
10635 than Target_selector.
10636 * x86_64.cc: Include "freebsd.h".
10637 (Target_x86_64): Derive from Target_freebsd rather than
10638 Sized_target.
10639 (Target_selector_x86_64): Derive from Target_selector_freebsd
10640 rather than Target_selector.
10641 * target.h (class Target): Add adjust_elf_header and
10642 do_adjust_elf_header.
10643 * output.cc (Output_file_header:: do_sized_write): Call target
10644 adjust_elf_header routine.
10645 * configure.tgt: Set targ_osabi.
10646 * configure.ac: Define GOLD_DEFAULT_OSABI.
10647 * parameters.cc (Parameters::default_target): Pass
10648 GOLD_DEFAULT_OSABI to select_target.
10649 * target-select.h (class Target_selector): Make instantiate_target
10650 protected rather than private.
10651 * Makefile.am (HFILES): Add freebsd.h.
10652 * configure, Makefile.in, config.in: Rebuild.
10653
cb010894
ILT
10654 * merge.cc (do_add_input_section): Correct pend value. Change
10655 message about last entry not being null terminated from error to
10656 warning.
10657
0e879927
ILT
106582009-03-20 Mikolaj Zalewski <mikolajz@google.com>
10659
10660 * incremental.cc: New file.
10661 * Makefile.am (CCFILES): Add incremental.cc.
10662 * Makefile.in: Rebuild.
10663
41105937
PP
106642009-03-19 Paul Pluzhnikov <ppluzhnikov@google.com>
10665
10666 * layout.cc (Layout::output_section_name): Preserve names
10667 of '.note.' sections.
e1df38aa 10668
60439920
ILT
106692009-03-19 Ian Lance Taylor <iant@google.com>
10670
10671 * descriptors.cc (Descriptors::open): Check that the options are
10672 valid before using them.
10673
0d371ad3
ILT
106742009-03-18 Ian Lance Taylor <iant@google.com>
10675
10676 * script-sections.h: Include <list>.
10677 (class Script_sections): Change Sections_elements from std::vector
10678 to std::list. Typedef public Elements_iterator. Add
10679 orphan_section_placement_, data_segment_align_start_, and
10680 saw_data_segment_align_ fields. Remove data_segment_align_index_
10681 field.
10682 * script-sections.cc (class Orphan_section_placement): New class.
10683 (class Sections_element): Add virtual functions is_relro and
10684 orphan_section_init. Remove virtual function place_orphan_here.
10685 (class Output_section_definition): Add is_relro and
10686 orphan_section_init. Remove place_orphan_here.
10687 (class Orphan_output_section): Likewise.
10688 (Script_sections::Script_sections): Update for field changes.
10689 (Script_sections::data_segment_align): Set saw_data_segment_align_
10690 and data_segment_align_start_, not data_segment_align_index.
10691 (Script_sections::data_segment_relro_end): Check
10692 saw_data_segment_align_. Use data_segment_align_start_ rather
10693 than data_segment_align_index_.
10694 (Script_sections::place_orphan): Rewrite to use
10695 Orphan_section_placement.
10696
9201d894
ILT
106972009-03-17 Ian Lance Taylor <iant@google.com>
10698
9c5b8369
ILT
10699 * archive.cc (Archive::add_symbols): Check for a version attached
10700 to the symbol name in the archive map.
10701 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_11.
10702 (ver_test_11_SOURCES, ver_test_11_DEPENDENCIES): Define.
10703 (ver_test_11_LDFLAGS, ver_test_11_LDADD): Define.
10704 (ver_test_11.a): New target.
10705 * testsuite/Makefile.in: Rebuild.
10706
9201d894
ILT
10707 * configure.ac: Check for chsize and posix_fallocate. Replace
10708 ftruncate.
10709 * ftruncate.c: New file, from gnulib.
10710 * output.cc (posix_fallocate): Define dummy version if not
10711 HAVE_POSIX_FALLOCATE.
10712 (Output_file::map): Call posix_fallocate rather than lseek and
10713 write.
10714 * gold.h (ftruncate): Declare if not HAVE_FTRUNCATE.
10715 * configure, Makefile.in, config.in: Rebuild.
10716
ef4ab7a8 107172009-03-17 Paul Pluzhnikov <ppluzhnikov@google.com>
e1df38aa 10718
ef4ab7a8
PP
10719 * layout.h (Layout::create_note): Add section_name parameter.
10720 * layout.cc (Layout::create_note): Likewise.
10721 (Layout::create_build_id, Layout::create_gold_note): Fix callers.
e1df38aa 10722
8c500701
ILT
107232009-03-17 Ian Lance Taylor <iant@google.com>
10724
e85b18e1
ILT
10725 * descriptors.cc: Include "options.h".
10726 (FD_CLOEXEC, O_CLOEXEC): Define if not defined.
10727 (Descriptors::open): Always use O_CLOEXEC when opening a new
10728 descriptor. If we have a plugin, and O_CLOEXEC was not defined,
10729 then set FD_CLOEXEC.
10730
9efe6174
ILT
10731 * sparc.cc (class Target_sparc): Add has_got_section.
10732 (Target_sparc::Scan::global): If we see _GLOBAL_OFFSET_TABLE_,
10733 make sure we have a GOT section.
10734
10735 * sparc.cc (optimize_tls_reloc): Recognize R_SPARC_TLS_IE_ADD.
10736 (Target_sparc::Scan::local): Likewise.
10737 (Target_sparc::Scan::global): Likewise.
10738 (Target_sparc::Relocate::relocate): Likewise.
10739 (Target_sparc::Relocate::relocate_tls): Likewise.
10740
8c500701
ILT
10741 * symtab.cc (Symbol_table::define_default_version): New function,
10742 broken out of add_from_object.
10743 (Symbol_table::add_from_object): Call define_default_version.
10744 (Symbol_table::define_special_symbol): Add resolve_oldsym
10745 parameter. Change all callers. If the version for a symbol comes
10746 from a version script, resolve it with the symbol with the same
10747 name with no version. Also add the symbol without a version if
10748 appropriate.
10749 (do_define_in_output_data): If resolving with oldsym, don't delete
10750 sym.
10751 (do_define_in_output_segment): Likewise.
10752 (do_define_as_constant): Likewise.
10753 * symtab.h (class Symbol_table): Update declarations.
10754
f1ed28fb
ILT
107552009-03-13 Ian Lance Taylor <iant@google.com>
10756
15f8229b
ILT
10757 * readsyms.cc (Read_symbols::incompatible_warning): New function.
10758 (Read_symbols::requeue): New function.
10759 (Read_symbols::do_read_symbols): If make_elf_object fails because
10760 the target type is not configured, and the file was searched for,
10761 issue a warning and retry with the next directory.
10762 (Add_symbols::run): If the file has an incompatible format, and
10763 it was searched for, requeue the Read_symbols task. On error,
10764 release the object.
10765 * readsyms.h (class Read_symbols): Add dirindex_ field. Add
10766 dirindex parameter to constructor. Change all callers. Declare
10767 incompatible_warning and requeue.
10768 (class Add_symbols): Add dirpath_, dirindex_, mapfile_,
10769 input_argument_ and input_group_ fields. Add them to
10770 constructor. Change all callers.
10771 (class Read_script): Add dirindex_ field. Add it to constructor.
10772 Change all callers.
10773 * archive.cc (Archive::setup): Remove input_objects parameter.
10774 Change all callers.
10775 (Archive::get_file_and_offset): Likewise.
10776 (Archive::read_all_symbols): Likewise.
10777 (Archive::read_symbols): Likewise.
10778 (Archive::get_elf_object_for_member): Remove input_objects
10779 parameter. Add punconfigured parameter. Change all callers.
10780 (Archive::add_symbols): Change return type to bool. Check return
10781 value of include_member.
10782 (Archive::include_all_members): Likewise.
10783 (Archive::include_member): Change return type to bool. Return
10784 false if first included object has incompatible target. Set
10785 included_member_ field.
10786 (Add_archive_symbols::run): If add_symbols returns false, requeue
10787 Read_symbols task.
10788 * archive.h (class Archive): Add included_member_ field.
10789 Initialize it in constructor. Add input_file and searched_for
10790 methods. Update declarations.
10791 (class Add_archive_symbols): Add dirpath_, dirindex_, and
10792 input_argument_ fields. Add them to constructor. Change all
10793 callers.
10794 * script.cc: Include "target-select.h".
10795 (class Parser_closure): Add skip_on_incompatible_target_ and
10796 found_incompatible_target_ fields. Add
10797 skip_on_incompatible_target parameter to constructor. Change all
10798 callers. Add methods skip_on_incompatible_target,
10799 clear_skip_on_incompatible_target, found_incompatible_target, and
10800 set_found_incompatible_target.
10801 (read_input_script): Add dirindex parameter. Change all callers.
10802 If parser finds an incompatible target, requeue Read_symbols
10803 task.
10804 (script_set_symbol): Clear skip_on_incompatible_target in
10805 closure.
10806 (script_add_assertion, script_parse_option): Likewise.
10807 (script_start_sections, script_add_phdr): Likewise.
10808 (script_check_output_format): New function.
10809 * script.h (read_input_script): Update declaration.
10810 * script-c.h (script_check_output_format): Declare.
10811 * yyscript.y (file_cmd): Handle OUTPUT_FORMAT.
10812 (ignore_cmd): Remove OUTPUT_FORMAT.
10813 * fileread.cc (Input_file::Input_file): Add explicit this.
10814 (Input_file::will_search_for): New function.
10815 (Input_file::open): Add pindex parameter. Change all callers.
10816 * fileread.h (class Input_file): Add input_file_argument method.
10817 Declare will_search_for. Update declarations.
10818 * object.cc (make_elf_object): Add punconfigured parameter.
10819 Change all callers.
10820 * object.h (class Object): Make input_file public. Add
10821 searched_for method.
10822 (make_elf_object): Update declaration.
10823 * dirsearch.cc (Dirsearch::find): Add pindex parameter. Use it to
10824 restart search.
10825 * dirsearch.h (class Dirsearch): Update declaration.
10826 * options.h (class General_options): Add --warn-search-mismatch.
10827 * parameters.cc (Parameters::is_compatible_target): New function.
10828 * parameters.h (class Parameters): Declare is_compatible_target.
10829 * workqueue.cc (Workqueue::add_blocker): New function.
10830 * workqueue.h (class Workqueue): Declare add_blocker.
10831
f1ed28fb
ILT
10832 * fileread.cc (Input_file::open): Remove options parameter.
10833 Change all callers.
10834 (Input_file::open_binary): Likewise.
10835 * script.cc (read_input_script): Likewise.
10836 * readsyms.h (class Read_symbols): Remove options_ field. Remove
10837 options parameter from constructor. Change all callers.
10838 (class Read_script): Likewise.
10839 * fileread.h (class Input_file): Update declarations.
10840 * script.h (read_input_script): Update declaration.
10841
34dd024a
NC
108422009-03-10 Nick Clifton <nickc@redhat.com>
10843
10844 * po/es.po: New Spanish translation.
10845
6d71b17c
CC
108462009-03-06 Cary Coutant <ccoutant@google.com>
10847
10848 * options.cc (parse_short_option): Keep dash_z from registering itself.
10849
031cdbed
ILT
108502009-03-03 Ian Lance Taylor <iant@google.com>
10851
10852 PR 9918
10853 * target-reloc.h (relocate_section): Pass output_section to
10854 relocate.
10855 * i386.cc (Target_i386::should_apply_static_reloc): Add
10856 output_section parameter. Change all callers.
10857 (Target_i386::Relocate::relocate): Add output_section parameter.
10858 * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
10859 * sparc.cc (Target_sparc::Relocate::relocate): Likewise.
10860 * powerpc.cc (Target_powerpc::Relocate::relocate): Likewise.
10861 * testsuite/two_file_shared.sh: New script.
10862 * testsuite/Makefile.am (check_SCRIPTS): Add two_file_shared.sh.
10863 (check_DATA): Add two_file_shared.dbg.
10864 (two_file_shared.dbg): New target.
10865 * testsuite/Makefile.in: Rebuild.
10866
15d5fa16
ILT
108672009-03-01 Ian Lance Taylor <iant@google.com>
10868
10869 * configure.ac: Check for byteswap.h.
10870 * configure: Rebuild.
10871 * config.in: Rebuild.
10872
8a4c0b0d
ILT
108732009-03-01 Mikolaj Zalewski <mikolajz@google.com>
10874
10875 * layout.cc (Layout::find_or_add_kept_section): New function.
10876 (Layout::add_comdat): Removed.
10877 * layout.h (struct Kept_section): Move out of class Layout.
10878 Remove trailing underscores from field names. Add group_sections
10879 field. Rename group_ field to is_group. Change all uses.
10880 (class Layout): Declare find_or_add_kept_section, not add_comdat.
10881 * object.cc (Sized_relobj::Sized_relobj): Don't initialize
10882 comdat_groups_ field.
10883 (Sized_relobj::include_section_group): Use
10884 find_or_add_kept_section and Kept_section::group_sections.
10885 (Sized_relobj::include_linkonce_section): Likewise.
10886 * object.cc (class Sized_relobj): Don't define Comdat_group or
10887 Comdat_group_table. Remove find_comdat_group and
10888 add_comdat_group. Remove comdat_groups_ field.
10889 * plugin.cc (include_comdat_group): Use
10890 Layout::find_or_add_kept_section.
10891
b4ecf66b
ILT
108922009-02-28 Ian Lance Taylor <iant@google.com>
10893
14359ca0
ILT
10894 * README: --gc-sections and map files are now supported. Document
10895 some build requirements.
10896
b4ecf66b
ILT
10897 PR 6992
10898 * symtab.cc (Symbol_table::sized_write_section_symbol): In a
10899 relocatable link set the value of the section symbol to zero.
10900 * object.cc (Sized_relobj::do_finalize_local_symbols): In a
10901 relocatable link don't include the section address in the local
10902 symbol value.
10903
0602e05a
ILT
109042009-02-27 Ian Lance Taylor <iant@google.com>
10905
fd9d194f
ILT
10906 PR 6811
10907 * options.h (class Search_directory): Add is_system_directory.
10908 (class General_options): Declare is_in_system_directory.
10909 * options.cc (get_relative_sysroot): Make static.
10910 (get_default_sysroot): Make static.
10911 (General_optoins::is_in_system_directory): New function.
10912 * fileread.cc (Input_file::is_in_system_directory): New function.
10913 * fileread.h (class Input_file): Declare is_in_system_directory.
10914 * object.h (class Object): Add is_in_system_directory.
10915 (class Input_objects): Remove system_library_directory_ field.
10916 * object.cc (Input_objects::add_object): Don't set
10917 system_library_directory_.
10918 (input_objects::found_in_system_library_directory): Remove.
10919 * symtab.cc (Symbol_table::write_globals): Remove input_objects
10920 parameter. Change all callers.
10921 (Symbol_table::sized_write_globals): Likewise.
10922 (Symbol_table::warn_about_undefined_dynobj_symbol): Likewise.
10923 Call Object::is_in_system_directory.
10924 * symtab.h (class Symbol_table): Update declarations.
10925
61edd21f
ILT
10926 PR 5990
10927 * descriptors.h (Open_descriptor): Add is_on_stack field.
10928 * descriptors.cc (Descriptors::open): If the descriptor is on the
10929 top of the stack, remove it. Initialize is_on_stack field.
10930 (Descriptors::release): Only add pod to stack if it is not on the
10931 stack already.
10932 (Descriptors::close_some_descriptor): Clear stack_next and
10933 is_on_stack fields.
10934
e29e076a
ILT
10935 PR 7091
10936 * output.cc (Output_section::find_starting_output_address): Rename
10937 from starting_output_address; add PADDR parameter; change return
10938 type.
10939 * output.h (class Output_section): Declare
10940 find_starting_output_address instead of starting_output_address.
10941 * object.cc (Sized_relobj::do_finalize_local_symbols): Handle a
10942 section symbol for which we can't find a merge section.
10943
0602e05a
ILT
10944 PR 9836
10945 * symtab.cc (Symbol_table::add_from_object): If the visibility is
10946 hidden or internal, force the symbol to be local.
10947 * resolve.cc (Symbol::override_visibility): Define.
10948 (Symbol::override_base): Use override_visibility.
10949 (Symbol_table::resolve): Likewise.
10950 (Symbol::override_base_with_special): Likewise.
10951 (Symbol_table::override_with_special): If the visibility is hidden
10952 or internal, force the symbol to be local.
10953 * symtab.h (class Symbol): Add set_visibility and
10954 override_visibility.
10955 * testsuite/ver_test_1.sh: New file.
10956 * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_1.sh.
10957 (check_DATA): Add ver_test_1.syms.
10958 (ver_test_1.syms): New target.
10959 * testsuite/Makefile.in: Rebuild.
10960
401a9a73
CC
109612009-02-25 Cary Coutant <ccoutant@google.com>
10962
10963 * layout.cc (Layout::choose_output_section): Don't rename sections
10964 when using a linker script that has a SECTIONS clause.
10965 * Makefile.in: Regenerate.
10966
10967 * testsuite/Makefile.am (script_test_5.sh): New test case.
10968 * testsuite/Makefile.in: Regenerate.
10969 * testsuite/script_test_5.cc: New file.
10970 * testsuite/script_test_5.sh: New file.
10971 * testsuite/script_test_5.t: New file.
10972
f488e4b0
CC
109732009-02-13 Rafael Avila de Espindola <espindola@google.com>
10974
10975 * archive.cc (Archive::include_member): Update calls to add_symbols.
10976 * dynobj.cc (Sized_dynobj<size, big_endian>::make_version_map): Add
10977 the Layout argument.
10978 * dynobj.h (do_add_symbols): Add the Layout argument.
10979 * object.cc (Sized_relobj<size, big_endian>::do_add_symbols): Add the
10980 Layout argument.
10981 * object.h (Object::add_symbols): Add the Layout argument.
10982 (Object::do_add_symbols): Add the Layout argument.
10983 (Sized_relobj::do_add_symbols): Add the Layout argument.
10984 * plugin.cc (Sized_pluginobj<size, big_endian>::do_add_symbols):
10985 Unify the two versions.
10986 (Add_plugin_symbols): Remove.
10987 * plugin.h (Pluginobj::add_symbols, Pluginobj::do_add_symbols): Remove.
10988 (Sized_pluginobj::do_add_symbols): Unify the two versions.
10989 (Add_plugin_symbols): Remove.
10990 * readsyms.cc (Read_symbols::do_read_symbols): Update call to
10991 Add_symbols. Use Add_symbols instead of Add_plugin_symbols.
10992 (Add_symbols::run): Make it work with Pulginobj.
10993
89dd1680
ILT
109942009-02-06 Ian Lance Taylor <iant@google.com>
10995
10996 * object.cc (Sized_relobj::do_layout): Make info message start
10997 with lower case letter.
10998
266d0a74
ILT
109992009-02-06 Mikolaj Zalewski <mikolajz@google.com>
11000
602b464e
ILT
11001 * binary.cc: Fix file comment.
11002
266d0a74
ILT
11003 * options.h (enum Incremental_disposition): Define.
11004 (class General_options): Add new options: --incremental,
11005 --incremental_changed, --incremental_unchanged,
11006 --incremental_unknown. Add incremental_disposition_ and
11007 implicit_incremental_ fields.
11008 (General_options::incremental_disposition): New function.
11009 (class Position_dependent_options): Add incremental_disposition
11010 option.
11011 (Position_dependent_options::copy_from_options): Set incremental
11012 dispositions.
11013 * options.cc (General_options::parse_incremental_changed): New
11014 function.
2e702c99
RM
11015 (General_options::parse_incremental_unchanged): New function.
11016 (General_options::parse_incremental_unknown): New function.
11017 (General_options::General_options): Initialize new fields
266d0a74 11018 incremental_disposition_ and implicit_incremental_.
2e702c99 11019 (General_options::finalize): Check for uasge of --incremental-*
266d0a74
ILT
11020 without --incremental.
11021
f073bbf7
CD
110222009-02-06 Chris Demetriou <cgd@google.com>
11023
11024 * gold.h (gold_undefined_symbol): Change to take only a Symbol
11025 pointer and to report location as the file name associated with
11026 the symbol.
11027 (gold_undefined_symbol_at_location): New function to replace the
11028 old gold_undefined_symbol functionality.
11029 * target-reloc.h (relocate_section): Update to use
11030 gold_undefined_symbol_at_location.
11031 * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
11032 Call gold_undefined_symbol function rather than gold_error.
11033 * errors.h (Errors::undefined_symbol): Take location as a
11034 string, rather than calculating it from a relocation.
11035 * errors.cc (Errors::fatal): Print "fatal error:" before the
11036 formatted message.
11037 (Errors::error, Errors::error_at_location): Print "error: "
11038 before the formatted message.
11039 (Errors::undefined_symbol): Take location as a string, rather
11040 than calculating it from a relocation.
11041 (gold_undefined_symbol_at_location): New function akin to
11042 old gold_undefined_symbol, calculates location from relocation.
11043 (gold_undefined_symbol): Change to take only a Symbol pointer
11044 and to report location as the file name associated with the symbol.
11045 * testsuite/debug_msg.sh: Update for changed error messages.
11046 * testsuite/undef_symbol.sh: Likewise.
11047
8e94a90c
ILT
110482009-02-04 Duncan Sands <baldrick@free.fr>
11049
11050 PR 9812
11051 * reduced_debug_output.h
11052 (Output_reduced_debug_abbrev_section::failed): Use format for
11053 gold_warning.
11054 (Output_reduced_debug_info_section::faild): Likewise.
11055
88a0e15b
ILT
110562009-01-31 Mikolaj Zalewski <mikolajz@google.com>
11057
11058 * script.cc (Lazy_demangler): New class.
2e702c99 11059 (Version_script_info::get_symbol_version_helper): Demangle a
88a0e15b
ILT
11060 symbol only once.
11061
5efc7cd2
CC
110622009-01-29 Cary Coutant <ccoutant@google.com>
11063
11064 * i386.cc (Target_i386::Relocate::relocate): Recognize non-PIC calls
11065 to __tls_get_addr.
11066 * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
11067
e0ebcf42
ILT
110682009-01-28 Ian Lance Taylor <iant@google.com>
11069
5efc7cd2 11070 * version.cc (version_string): Bump to 1.9.
75fe7426 11071
e0ebcf42
ILT
11072 * gold.h: Include <cstring> and <stdint.h>.
11073 * version.cc: Include <cstdio>.
11074 * object.cc (Sized_relobj::do_layout): Initialize gc_sd to avoid a
11075 warning.
11076 * reduced_debug_output.cc (insert_into_vector): Rename from
11077 Insert_into_vector; change all callers. Use Swap_unaligned to
11078 avoid aliasing issue; remove union since it is unnecessary.
11079
8e2813be 110802009-01-27 Sriraman Tallam <tmsriram@google.com>
6d03d481
ST
11081
11082 * Makefile.am (CCFILES): Add gc.cc.
11083 (HFILES): Add gc.h.
11084 * Makefile.in: Regenerate.
11085 * gold.cc (Gc_runner): New class.
11086 (queue_initial_tasks): Call garbage collection related tasks
11087 when corresponding options are invoked.
11088 (queue_middle_gc_tasks): New function.
11089 (queue_middle_tasks): Reorder tasks to allow relocs to be read and
11090 processed early before laying out sections during garbage collection.
11091 * gold.h (queue_middle_gc_tasks): New function.
11092 (is_prefix_of): Move from "layout.cc".
11093 * i386.cc (Target_i386::gc_process_relocs): New function.
11094 * layout.cc (is_prefix_of): Remove. Move to "gold.h"
11095 * main.cc (main): Create object of class "Garbage_collection".
11096 * object.cc (Relobj::copy_symbols_data): New function.
11097 (Relobj::is_section_name_included): New function.
e1df38aa
NC
11098 (Sized_relobj::do_layout): Allow this function to be called twice
11099 during garbage collection and defer layout of section during the
6d03d481
ST
11100 first call.
11101 * object.h (Relobj::get_symbols_data): New function.
11102 (Relobj::is_section_name_included): New function.
11103 (Relobj::copy_symbols_data): New function.
11104 (Relobj::set_symbols_data): New function.
11105 (Relobj::get_relocs_data): New function.
11106 (Relobj::set_relocs_data): New function.
11107 (Relobj::is_output_section_offset_invalid): New pure virtual function.
11108 (Relobj::gc_process_relocs): New function.
11109 (Relobj::do_gc_process_relocs): New pure virtual function.
11110 (Relobj::sd_): New data member.
11111 (Sized_relobj::is_output_section_offset_invalid): New function.
11112 (Sized_relobj::do_gc_process_relocs): New function.
11113 * options.h (General_options::gc_sections): Modify to not be a no-op.
11114 (General_options::print_gc_sections): New option.
11115 * plugin.cc (Plugin_finish::run): Remove function call to
11116 Plugin_manager::layout_deferred_objects. Move it to "gold.cc".
11117 * powerpc.cc (Target_powerpc::gc_process_relocs): New function.
11118 * reloc.cc (Read_relocs::run): Add task to process relocs and
11119 determine unreferenced sections when doing garbage collection.
11120 (Gc_process_relocs): New class.
11121 (Sized_relobj::do_gc_process_relocs): New function.
11122 (Sized_relobj::do_scan_relocs): Don't try to scan the relocs for
11123 sections that are garbage collected.
11124 * reloc.h (Gc_process_relocs): New class.
11125 * sparc.cc (Target_sparc::gc_process_relocs): New function.
11126 * symtab.cc (Symbol::should_add_dynsym_entry): Do not add entries for
11127 symbols whose corresponding sections are garbage collected.
11128 (Symbol_table::Symbol_table): Add new parameter for the garbage
11129 collection object.
11130 (Symbol_table::gc_mark_undef_symbols): New function.
11131 (Symbol_table::gc_mark_symbol_for_shlib): New function.
11132 (Symbol_table::gc_mark_dyn_syms): New function.
11133 (Symbol_table::resolve): Do not treat symbols seen in dynamic objects
11134 as garbage.
11135 (Symbol_table::add_from_object): Likewise.
11136 (Symbol_table::add_from_relobj): When building shared objects, do not
11137 treat externally visible symbols as garbage.
11138 (Symbol_table::sized_finalize_symbol): Do not check dynamic symbol
11139 table information for static and relocatable links.
11140 * symtab.h (Symbol_table::set_gc): New function.
11141 (Symbol_table::gc): New function.
11142 (Symbol_table::gc_mark_undef_symbols): New function.
11143 (Symbol_table::gc_mark_symbol_for_shlib): New function.
11144 (Symbol_table::gc_mark_dyn_syms): New function.
11145 (Symbol_table::gc_): New data member.
e1df38aa 11146 * target.h (Sized_target::gc_process_relocs): New pure virtual
6d03d481
ST
11147 function.
11148 * x86_64.cc (Target_x86_64::gc_process_relocs): New function.
11149 * testsuite/testfile.cc (Target_test::gc_process_relocs): New function.
11150
3b293544
CF
111512009-01-20 Chris Faylor <me.sourceware@sourceware.org>
11152
11153 * options.h (General_options::gc_sections): Define as a no-op for now.
11154 (General_options::no_keep_memory): Ditto.
11155 (General_options::Bshareable): Define.
11156 * options.cc (General_options::finalize): Honor -Bshareable.
11157
83d22aa8
AS
111582009-01-20 Andreas Schwab <schwab@suse.de>
11159
11160 * powerpc.cc (Powerpc_relocate_functions::rel16_ha): Don't try to
11161 read the value in the contents, since we don't use it. Use the
11162 template endianness when writing.
11163 (Relocate::relocate): Use it for R_PPC_REL16_HA.
11164
cd536b21
AS
111652009-01-19 Andreas Schwab <schwab@suse.de>
11166
11167 * configure.tgt (powerpc64-*): Fix targ_obj.
11168
99e9a495
ILT
111692009-01-15 Ian Lance Taylor <iant@google.com>
11170
11171 * object.cc (Sized_relobj::write_local_symbols): Don't write out
11172 local symbols when stripping all symbols.
11173
bbbfea06
CC
111742009-01-14 Cary Coutant <ccoutant@google.com>
11175
99e9a495 11176 * output.cc (Output_reloc): Add explicit instantiations.
bbbfea06 11177
0f7c0701
CC
111782009-01-14 Cary Coutant <ccoutant@google.com>
11179
11180 * archive.cc (Archive::get_elf_object_for_member): Remove call
11181 to File_read::claim_for_plugin.
11182 * descriptors.cc (Descriptors::open): Remove reference to
11183 is_claimed.
11184 (Descriptors::claim_for_plugin): Remove.
11185 * descriptors.h (Descriptors::claim_for_plugin): Remove.
11186 (Descriptors::is_claimed): Remove.
11187 (claim_descriptor_for_plugin): Remove.
11188 * fileread.cc (File_read::claim_for_plugin): Remove.
11189 * fileread.h (File_read::claim_for_plugin): Remove.
11190 (File_read::descriptor): Reopen descriptor if necessary.
11191 * plugin.cc (Plugin::load): Add two new APIs to transfer vector.
11192 (Plugin_manager::all_symbols_read): Add task parameter. Change
11193 all callers.
11194 (Plugin_manager::get_input_file): New function.
11195 (Plugin_manager::release_input_file): New function.
11196 (Pluginobj::Pluginobj): Add filesize parameter and initialize
11197 corresponding data member.
11198 (Sized_pluginobj::Sized_pluginobj): Add filesize parameter
11199 and pass to base constructor. Change all callers.
11200 (get_input_file, release_input_file): New functions.
11201 (make_sized_plugin_object): Add filesize parameter. Change all callers.
11202 * plugin.h (Plugin_manager::Plugin_manager): Initialize task_ member.
11203 (Plugin_manager::all_symbols_read): Add task parameter.
11204 (Plugin_manager::get_input_file): New function.
11205 (Plugin_manager::release_input_file): New function.
11206 (Plugin_manager::task_): New data member.
11207 (Pluginobj::Pluginobj): Add filesize parameter.
11208 (Pluginobj::filename): New function.
11209 (Pluginobj::descriptor): New function.
11210 (Pluginobj::filesize): New function.
11211 (Pluginobj::filesize_): New data member.
11212 (Sized_pluginobj::Sized_pluginobj): Add filesize parameter.
11213 * readsyms.cc (Read_symbols::do_read_symbols): Remove call to
11214 File_read::claim_for_plugin; use Object::unlock to unlock the file.
11215
11216 * testsuite/Makefile.am (plugin_test_4): New test case for plugins
11217 with archive libraries.
11218 * testsuite/Makefile.in: Regenerate.
11219 * testsuite/plugin_test.c (struct sym_info): New type.
11220 (get_input_file, release_input_file): New static variables.
11221 (onload): Capture new transfer vector entries.
11222 (claim_file_hook): Stop reading at end of file according to filesize.
11223 Factor out parsing of readelf output into separate function.
11224 (all_symbols_read_hook): Exercise get_input_file and release_input_file
11225 APIs and get the source file name from the symbol table. Convert
11226 source file name to corresponding object file name. Print info
11227 message when adding new input files.
11228 (parse_readelf_line): New function.
11229 * testsuite/plugin_test_1.sh: Add checks for new info messages.
11230 * testsuite/plugin_test_2.sh: Likewise.
11231 * testsuite/plugin_test_3.sh: Likewise.
11232 * testsuite/plugin_test_4.sh: New test case.
11233
62a6d109
ILT
112342009-01-07 Ian Lance Taylor <iant@google.com>
11235
11236 * version.cc (version_string): Bump to 1.8.
11237
483620e8
CC
112382008-12-23 Cary Coutant <ccoutant@google.com>
11239
11240 * gold.cc (gold_exit): Call plugin cleanup handlers on exit.
11241 * plugin.cc (Plugin_manager::finish): Rename as
11242 layout_deferred_objects. Move cleanup to separate function.
11243 (Plugin_manager::cleanup): New function.
11244 (Plugin_finish::run): Call layout_deferred_objects and cleanup
11245 separately.
11246 * plugin.h (Plugin_manager::finish): Rename as
11247 layout_deferred_objects.
11248 (Plugin_manager::cleanup): New function.
11249 (Plugin_manager::cleanup_done): New field.
11250
d66a9eb3
CC
112512008-12-23 Cary Coutant <ccoutant@google.com>
11252
11253 * plugin.cc (is_visible_from_outside): New function.
11254 (Pluginobj::get_symbol_resolution_info): Call is_visible_from_outside
11255 so we don't return "IR only" status for exported symbols or -r links.
11256
11257 * testsuite/Makefile.am (plugin_test_3): New test case.
11258 * testsuite/Makefile.in: Regenerate.
11259 * testsuite/plugin_test_3.sh: New file.
11260
5995b570
CC
112612008-12-22 Cary Coutant <ccoutant@google.com>
11262
11263 * object.cc (Sized_relobj::layout_section): New function.
11264 (Sized_relobj::do_layout): Defer layout of input sections until after
11265 plugin has provided replacement files.
11266 (Sized_relobj::do_layout_deferred_sections): New function.
11267 * object.h (Relobj::set_section_offset): Remove virtual keyword.
11268 (Relobj::layout_deferred_sections): New function.
11269 (Relobj::do_layout_deferred_sections): New function.
11270 (Sized_relobj::do_layout_deferred_sections): New function.
11271 (Sized_relobj::layout_section): New function.
11272 (Sized_relobj::Deferred_layout): New structure.
11273 (Sized_relobj::deferred_layout_): New field.
11274 * plugin.cc (Plugin_manager::finish): Renamed, was cleanup.
11275 Change all callers. Layout deferred sections.
11276 (class Plugin_finish): Renamed, was Plugin_cleanup. Change all
11277 references.
11278 (Plugin_hook::run): Move code from do_plugin_hook inline.
11279 (Plugin_hook::do_plugin_hook): Remove.
11280 * plugin.h (Plugin_manager::Plugin_manager): Add missing initializers.
11281 (Plugin_manager::finish): Renamed, was cleanup.
11282 (Plugin_manager::should_defer_layout): New function.
11283 (Plugin_manager::add_deferred_layout_object): New function.
11284 (Plugin_manager::Deferred_layout_list): New type.
11285 (Plugin_manager::deferred_layout_objects_): New field.
11286 (Plugin_hook::do_plugin_hook): Remove.
11287
ee769c88
ILT
112882008-12-17 Ian Lance Taylor <iant@google.com>
11289
11290 * options.h (class General_options): Add --no case for
11291 --export-dynamic.
11292
abc8dcba
CC
112932008-12-16 Cary Coutant <ccoutant@google.com>
11294
11295 * plugin.cc (Plugin::load): Move LDPT_MESSAGE to front of transfer
11296 vector.
11297 (Plugin_manager::claim_file): Create plugin object even if
11298 plugin did not call the add_symbols callback.
11299 (Plugin_obj::get_symbol_resolution_info): Guard against plugin
11300 asking for more symbols than were added.
11301 * testsuite/Makefile.am (plugin_test_1): Add test case with
11302 no global symbols.
11303 (empty.syms): New target.
11304 * testsuite/Makefile.in: Regenerate.
11305 * testsuite/plugin_test.c (claim_file_hook): Add new debug
11306 message. Don't call add_symbols if no globals.
11307 (all_symbols_read_hook): Don't provide replacement for empty
11308 claimed file.
11309
b0074644
ILT
113102008-12-12 Ian Lance Taylor <iant@google.com>
11311
68943102
ILT
11312 * target-reloc.h (Default_scan_relocatable_relocs): Only discard
11313 r_type == 0 for a local symbol with r_sym == 0.
11314 (scan_relocatable_relocs): Pass r_sym to
11315 local_non_section_strategy.
11316 * reloc.cc (Emit_relocs_strategy::local_non_section_strategy): Add
11317 r_sym parameter.
11318
b0074644
ILT
11319 * configure.ac: Update test for TLS descriptors: they are
11320 supported as of glibc 2.9.
11321 * configure: Rebuild.
11322
c2508178
ILT
113232008-12-11 Ian Lance Taylor <iant@google.com>
11324
11325 PR 7091
11326 * target-reloc.h (Default_scan_relocatable_relocs): For each
11327 function, map r_type == 0 to RELOC_DISCARD.
11328
2756a258
CC
113292008-12-10 Cary Coutant <ccoutant@google.com>
11330
11331 * layout.cc (Layout::add_comdat): Allow COMDAT group from a replacement
11332 object to override a kept COMDAT group from a plugin object.
11333
bb6f53d3
ILT
113342008-12-09 Ian Lance Taylor <iant@google.com>
11335
fbc558e1
ILT
11336 PR 7088
11337 * yyscript.y (file_cmd): Handle INPUT.
11338
bb6f53d3
ILT
11339 * testsuite/initpri1.c: Change all declarations to be full
11340 prototypes by adding void, to avoid compiler warnings.
11341
4674ecfc
CC
113422008-12-05 Rafael Avila de Espindola <espindola@google.com>
11343
11344 * options.cc (General_options::parse_plugin_opt): New.
11345 (General_options::add_plugin): The argument now is just the filename.
11346 (General_options::add_plugin_option): New.
11347 * options.h (plugin_opt): New.
11348 (add_plugin): Change argument name.
11349 (add_plugin_option): New.
11350 * plugin.cc (Plugin::load): Don't parse the plugin option.
11351 * plugin.h (Plugin::Plugin): Rename argument. Init filename_.
11352 (Plugin::add_option): New.
11353 (Plugin::args_): Change type.
11354 (Plugin::filename_): New.
11355 (Plugin_manager::add_plugin_option): New.
11356 * testsuite/Makefile.am (plugin_test_1): Use new syntax.
11357 * testsuite/Makefile.in: Regenerate.
11358
fd06b4aa
CC
113592008-12-05 Cary Coutant <ccoutant@google.com>
11360
11361 * layout.cc (Layout::include_section): Check for SHF_EXCLUDE.
11362 Handle --strip-lto-sections option.
11363 * options.h (strip_lto_sections): New option.
11364
6c52134c
CC
113652008-12-01 Cary Coutant <ccoutant@google.com>
11366
11367 * plugin.cc (ld_plugin_message): Change format parameter to const.
11368 Fix mismatch between new[] and delete.
11369
a45248e0
CC
113702008-11-14 Cary Coutant <ccoutant@google.com>
11371
11372 * reloc.cc (Sized_relobj::do_read_relocs): Use constant invalid_address
11373 instead of -1U.
11374
c82fbeee
CS
113752008-11-05 Craig Silverstein <csilvers@google.com>
11376
11377 * options.cc (General_options::parse_dynamic_list): New function.
11378 * options.h (General_options): New flags dynamic_list,
11379 dynamic_list_data, dynamic_list_cpp_new, and
11380 dynamic_list_cpp_typeinfo. New variable dynamic_list_.
11381 (General_options::in_dynamic_list): New function.
11382 * script.cc (Lex::Mode): New enum DYNAMIC_LIST.
11383 (Lex::can_start_name): Add support for DYNAMIC_LIST mode.
11384 (Lex::can_continue_name): Likewise.
11385 (yylex): Likewise.
11386 (read_script_file): New parameter script_options.
11387 (read_dynamic_list): New function.
11388 (Script_options::define_dynamic_list): New function.
11389 (dynamic_list_keyword_parsecodes): New variable.
11390 (dynamic_list_keywords): New variable.
11391 * script.h (Script_options::define_dynamic_list): New function
11392 prototype.
11393 (read_dynamic_list): New function prototype.
11394 * symtab.cc (strprefix): New macro.
11395 (Symbol::should_add_dynsym_entry): Support dynamic_list,
11396 dynamic_list_data, dynamic_list_cpp_new, and
11397 dynamic_list_cpp_typeinfo.
11398 * yyscript.y (PARSING_DYNAMIC_LIST): New token.
11399 (dynamic_list_expr): New rule.
11400 (dynamic_list_nodes): Likewise.
11401 (dynamic_list_node): Likewise.
11402 * testsuite/Makefile.am (dynamic_list): New test.
11403 * testsuite/Makefile.in: Regenerated.
11404 * testsuite/dynamic_list.t: New file.
11405 * testsuite/dynamic_list.sh: New file.
11406
e0bb29a5
CS
114072008-11-05 Craig Silverstein <csilvers@google.com>
11408
11409 * testsuite/tls_test_c.c: Add prototype for t11 and t11_last.
11410 * testsuite/tls_test_c.c (t11): Add explicit "void" to prototype.
11411 (t11_last): Likewise.
11412 * testsuite/ver_test_6.c (main): Likewise.
11413
4e1e25e0
CC
114142008-10-07 Cary Coutant <ccoutant@google.com>
11415
11416 * options.c (General_options::finalize): Add check for -static and
11417 -shared.
11418 * gold.cc (queue_middle_tasks): Assert that list of dynamic objects
11419 is not empty.
11420
92f03fcb
CC
114212008-10-02 Cary Coutant <ccoutant@google.com>
11422
11423 * plugin.cc (make_sized_plugin_object): Fix conditional
11424 compilation to work when not all targets are enabled.
11425
fbd8a257
CC
114262008-09-29 Cary Coutant <ccoutant@google.com>
11427
11428 * archive.cc (Archive::get_file_and_offset): Use filename instead
11429 of name to get library path.
11430 (Archive::include_member): Unlock external member of a thin archive.
11431
11432 * testsuite/Makefile.am (TEST_AR): New variable.
11433 (thin_archive_test_1): New test.
11434 (thin_archive_test_2): New test.
81636b3f
CC
11435 * testsuite/Makefile.in: Regenerate.
11436 * testsuite/thin_archive_main.cc: New file.
11437 * testsuite/thin_archive_test_1.cc: New file.
11438 * testsuite/thin_archive_test_2.cc: New file.
11439 * testsuite/thin_archive_test_3.cc: New file.
11440 * testsuite/thin_archive_test_4.cc: New file.
fbd8a257 11441
eff45813
CC
114422008-09-29 Cary Coutant <ccoutant@google.com>
11443
11444 * mapfile.cc (Mapfile::print_input_section): Change -1U to -1ULL.
11445 * object.cc (Sized_relobj::do_layout): Use constant invalid_address
11446 instead of -1U.
11447 (Sized_relobj::do_finalize_local_symbols): Likewise.
11448 (Sized_relobj::map_to_kept_section): Likewise.
11449 * object.h (Sized_relobj::invalid_address): New constant.
11450 (Sized_relobj::do_output_section_offset): Check for invalid_address
11451 and return -1ULL.
11452 * output.cc (Output_reloc::local_section_offset): Use constant
11453 invalid_address instead of -1U.
11454 (Output_reloc::get_address): Likewise.
11455 (Output_section::output_address): Change -1U to -1ULL.
11456 * output.h (Output_reloc::invalid_address): New constant.
11457 * reloc.cc (Sized_relobj::write_sections): Use constant
11458 invalid_address instead of -1U.
11459 (Sized_relobj::relocate_sections): Likewise.
11460 * symtab.cc (Symbol_table::sized_finalize_symbol): Handle symbol
11461 values for merge sections.
11462 * target-reloc.h (relocate_for_relocatable): Use constant
11463 invalid_address instead of -1U.
11464
89fc3421
CC
114652008-09-19 Cary Coutant <ccoutant@google.com>
11466
11467 Add plugin functionality for link-time optimization (LTO).
11468 * configure.ac (plugins): Add --enable-plugins option.
11469 * configure: Regenerate.
11470 * config.in: Regenerate.
11471 * Makefile.am (LIBDL): New variable.
11472 (CCFILES): Add plugin.cc.
11473 (HFILES): Add plugin.h.
11474 (ldadd_var): Add LIBDL.
11475 * Makefile.in: Regenerate.
11476
11477 * archive.cc: Include "plugin.h".
11478 (Archive::setup): Don't preread archive symbols when using a plugin.
11479 (Archive::get_file_and_offset): Add memsize parameter. Change callers.
11480 (Archive::get_elf_object_for_member): Call plugin hooks for claiming
11481 files.
11482 (Archive::include_member): Add symbols from plugin objects.
11483 * archive.h (Archive::get_file_and_offset): Add memsize parameter.
11484 * descriptors.cc (Descriptors::open): Check for file descriptors
11485 abandoned by plugins.
11486 (Descriptors::claim_for_plugin): New function.
11487 * descriptors.h (Descriptors::claim_for_plugin): New function.
11488 (Open_descriptor::is_claimed): New field.
11489 (claim_descriptor_for_plugin): New function.
11490 * fileread.cc (File_read::claim_for_plugin): New function.
11491 * fileread.h (File_read::claim_for_plugin): New function.
11492 (File_read::descriptor): New function.
11493 * gold.cc: Include "plugin.h".
11494 (queue_initial_tasks): Add task to call plugin hooks for generating
11495 new object files.
11496 * main.cc: Include "plugin.h".
11497 (main): Load plugin libraries.
11498 * object.h (Pluginobj): Declare.
11499 (Object::pluginobj): New function.
11500 (Object::do_pluginobj): New function.
11501 (Object::set_target): New function.
11502 * options.cc: Include "plugin.h".
11503 (General_options::parse_plugin): New function.
11504 (General_options::General_options): Initialize plugins_ field.
11505 (General_options::add_plugin): New function.
11506 * options.h (Plugin_manager): Declare.
11507 (General_options): Add --plugin option.
11508 (General_options::has_plugins): New function.
11509 (General_options::plugins): New function.
11510 (General_options::add_plugin): New function.
11511 (General_options::plugins_): New field.
11512 * plugin.cc: New file.
11513 * plugin.h: New file.
11514 * readsyms.cc: Include "plugin.h".
11515 (Read_symbols::do_read_symbols): Check for archive before checking
11516 for ELF file. Call plugin hooks to claim files.
11517 * resolve.cc (Symbol_table::resolve): Record when symbol is referenced
11518 from a real object file; force override when processing replacement
11519 files.
11520 * symtab.cc (Symbol::init_fields): Initialize in_real_elf_ field.
11521 (Symbol::init_base_object): Likewise.
11522 (Symbol::init_base_output_data): Likewise.
11523 (Symbol::init_base_output_segment): Likewise.
11524 (Symbol::init_base_constant): Likewise.
11525 (Symbol::init_base_undefined): Likewise.
11526 (Symbol::output_section): Assert that object is not a plugin.
11527 (Symbol_table::add_from_pluginobj): New function.
11528 (Symbol_table::sized_finalize_symbol): Treat symbols from plugins as
11529 undefined.
11530 (Symbol_table::sized_write_globals): Likewise.
11531 (Symbol_table::add_from_pluginobj): Instantiate template.
11532 * symtab.h (Sized_pluginobj): Declare.
11533 (Symbol::in_real_elf): New function.
11534 (Symbol::set_in_real_elf): New function.
11535 (Symbol::in_real_elf_): New field.
11536 (Symbol_table::add_from_pluginobj): New function.
11537
11538 * testsuite/Makefile.am (AM_CFLAGS): New variable.
11539 (LIBDL): New variable.
11540 (LDADD): Add LIBDL.
11541 (check_PROGRAMS): Add plugin_test_1 and plugin_test_2.
11542 (check_SCRIPTS): Add plugin_test_1.sh and plugin_test_2.sh.
11543 (check_DATA): Add plugin_test_1.err and plugin_test_2.err.
11544 (MOSTLYCLEANFILES): Likewise.
11545 * testsuite/Makefile.in: Regenerate.
11546 * testsuite/plugin_test.c: New file.
11547 * testsuite/plugin_test_1.sh: New file.
11548 * testsuite/plugin_test_2.sh: New file.
11549
de31bda5
ILT
115502008-09-16 Ian Lance Taylor <iant@google.com>
11551
9c2d0ef9
ILT
11552 * target-reloc.h (relocate_section): Check whether a symbol is
11553 defined by the ABI before reporting an undefined symbol error.
11554 * target.h (Target::is_defined_by_abi): Make parameter const.
11555 (Target::do_is_defined_by_abi): Likewise.
11556 * i386.cc (Target_i386::do_is_defined_by_abi): Likewise.
11557 * powerpc.cc (Target_powerpc::do_is_defined_by_abi): Likewise.
11558 * sparc.cc (Target_sparc::do_is_defined_by_abi): Likewise.
11559 * x86_64.cc (Target_x86_64::do_is_defined_by_abi): Likewise.
11560 * testsuite/Makefile.am (tls_test_shared.so): Add -Wl,-z,defs.
11561 * testsuite/Makefile.in: Rebuild.
11562
de31bda5
ILT
11563 * fileread.cc (make_view): Add casts to avoid warning.
11564
9fa33bee
AO
115652008-09-16 Alexandre Oliva <aoliva@redhat.com>
11566
11567 * i386.cc (Target_i386::define_tls_base_symbol): Update comments.
11568 * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
11569
183fd0e3
AO
115702008-09-16 Alexandre Oliva <aoliva@redhat.com>
11571
11572 * options.h (General_options::output_is_executable): New.
11573 (General_options::output_is_pie): New.
11574 * i386.cc (Target_i386::define_tls_base_symbol): Use SEGMENT_START
11575 for shared libraries.
11576 * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
11577
7be8330a
CD
115782008-09-11 Chris Demetriou <cgd@google.com>
11579
11580 * options.h (origin): New -z option.
11581 * layout.cc (Layout:finish_dynamic_section): If "-z origin"
11582 is specified, set DF_ORIGIN in DT_FLAGS and set DF_1_ORIGIN
11583 in DT_FLAGS_1.
11584
a9caad02
CC
115852008-09-05 Cary Coutant <ccoutant@google.com>
11586
11587 * fileread.cc (File_read::make_view): Add check for attempt to map
11588 beyond end of file.
11589
ae6dce4d
CC
115902008-09-05 Cary Coutant <ccoutant@google.com>
11591
11592 * symtab.cc (Symbol_table::add_from_dynobj): Fix typos in
11593 explicit instantiations.
11594
d7ab2a47
KVH
115952008-08-28 Kris Van Hees <kris.van.hees@oracle.com>
11596
11597 PR gold/6858
11598 * options.cc (General_options::finalize): Allow undefined symbols
11599 in shlibs if linking -shared.
11600
11601 PR gold/6859
11602 * symtab.cc (Symbol::init_base_undefined): Mark explicitly undefined
11603 symbols as not needing a dynsym entry.
11604
1e52a9c1
CS
116052008-08-20 Craig Silverstein <csilvers@google.com>
11606
11607 * fileread.cc (File_read::open): Do not lock the file unless it
11608 was successfully opened.
11609
d85c80a3
CC
116102008-08-14 Cary Coutant <ccoutant@google.com>
11611
11612 * x86_64.cc (Target_x86_64::Relocate::relocat_tls):
11613 Use addend for DTPOFF32, DTPOFF64, and TPOFF32 relocs.
11614 * testsuite/tls_test.cc (struct int128): 128-bit struct
11615 for testing TLS relocs with non-zero addend.
11616 (v12): New TLS variable.
11617 (t12): New test.
11618 (t_last): Add check for v12.
11619 * testsuite/tls_test.h (t12): New function.
11620 * testsuite/tls_test_main.cc (thread_routine): Call new test.
11621
2d924fd9
ILT
116222008-08-13 Ian Lance Taylor <iant@google.com>
11623
11624 * layout.cc (Layout::attach_allocated_section_to_segment): Don't
11625 set tls_segment_ or relro_segment_.
11626 (Layout::make_output_segment): Set tls_segment_ and relro_segment_
11627 when appropriate.
11628 * output.h (Output_section::clear_is_relro): New function.
11629 * output.cc (Output_segment::add_output_section): Handle SHF_TLS
11630 sections specially even when output_data_ is empty.
11631 (Output_segment::maximum_alignment): When first section is relro,
11632 only force alignment for PT_LOAD segments.
11633 * script.cc (script_data_segment_align): New function.
11634 (script_data_segment_relro_end): New function.
11635 * script-c.h (script_data_segment_align): Declare.
11636 (script_data_segment_relro_end): Declare.
11637 * script-sections.h (class Script_sections): Declare
11638 data_segment_align and data_segment_relro_end. Add fields
11639 segment_align_index_ and saw_relro_end_.
11640 * script-sections.cc (class Sections_element): Add set_is_relro
11641 virtual function. Add new bool* parameter to place_orphan_here.
11642 Add get_output_section virtual function.
11643 (class Output_section_definition): Add set_is_relro. Add new
11644 bool* parameter to place_orphan_here. Add get_output_section.
11645 Add is_relro_ field.
11646 (Output_section_definition::Output_section_definition): Initialize
11647 evaluated_address_, evaluated_load_address, evaluated_addralign_,
11648 and is_relro_ fields.
11649 (Output_section_definition::place_orphan_here): Add is_relro
11650 parameter.
11651 (Output_section_definition::set_section_addresses): Set relro for
11652 output section.
11653 (Output_section_definition::alternate_constraint): Likewise.
11654 (class Orphan_output_section): Add new bool* parameter to
11655 place_orphan_here. Add get_output_section.
11656 (Orphan_output_section::place_orphan_here): Add is_relro
11657 parameter.
11658 (Script_sections::Script_sections): Initialize
11659 data_segment_align_index_ and saw_relro_end_.
11660 (Script_sections::data_segment_align): New function.
11661 (Script_sections::data_segment_relro_end): New function.
11662 (Script_sections::place_orphan): Set or clear is_relro.
11663 (Script_sections::set_section_addresses): Force alignment of first
11664 TLS section.
11665 * yyscript.y (exp): Call script_data_segment_align and
11666 script_data_segment_relro_end.
11667 * testsuite/relro_script_test.t: New file.
11668 * testsuite/relro_test.cc (using_script): Declare.
11669 (t1, t2): Test using_script.
11670 * testsuite/Makefile.am (check_PROGRAMS): Add relro_script_test.
11671 (relro_script_test_SOURCES): Define.
11672 (relro_script_test_DEPENDENCIES): Define.
11673 (relro_script_test_LDFLAGS): Define.
11674 (relro_script_test_LDADD): Define.
11675 (relro_script_test.so): New target.
11676 * testsuite/Makefile.in: Rebuild.
11677
f827c9a9
CC
116782008-08-06 Cary Coutant <ccoutant@google.com>
11679
11680 * archive.cc (Archive::total_archives, Archive::total_members)
11681 (Archive::total_members_loaded): New variables.
11682 (Archive::setup): Add parameter. Add option to preread
11683 archive symbols.
11684 (Archive::read_armap): Add counter.
11685 (Archive::get_file_and_offset): New function.
11686 (Archive::get_elf_object_for_member): New function.
11687 (Archive::read_all_symbols): New function.
11688 (Archive::read_symbols): New function.
11689 (Archive::add_symbols): Add counters.
11690 (Archive::include_all_members): Use armap to find members if it's
11691 already built.
11692 (Archive::include_member): Skip reading symbols if already read.
11693 Factored code into Archive::get_file_and_offset and
11694 Archive::get_elf_object_for_member. Changed call to
11695 Mapfile::report_include_archive_member.
11696 (Archive::print_stats): New function.
11697 * archive.h: Declare Object and Read_symbols_data classes.
11698 (Archive::Archive): Add initializers for new members.
11699 (Archive::setup): Add parameter.
11700 (Archive::print_stats): New function.
11701 (Archive::total_archives, Archive::total_members)
11702 (Archive::total_members_loaded): New variables.
11703 (Archive::get_file_and_offset): New function.
11704 (Archive::get_elf_object_for_member): New function.
11705 (Archive::read_all_symbols): New function.
11706 (Archive::read_symbols): New function.
11707 (Archive::Archive_member): New class.
11708 (Archive::members_): New member.
11709 (Archive::num_members_): New member.
11710 * main.cc: Include archive.h.
11711 (main): Call Archive::print_stats.
11712 * mapfile.cc (Mapfile::report_include_archive_member): Delete
11713 archive parameter; member_name is now the fully-decorated name.
11714 * mapfile.h (Mapfile::report_include_archive_member): Likewise.
11715 * options.h: (General_options): Add --preread-archive-symbols option.
11716 * readsyms.cc (Read_symbols::do_read_symbols): Change call to
11717 Archive::setup.
11718
de4c45bd
ILT
117192008-08-04 Ian Lance Taylor <iant@google.com>
11720
11721 * symtab.h (Symbol::use_plt_offset): New function.
11722 * i386.cc (Relocate::relocate): Call Symbol::use_plt_offset.
11723 * powerpc.cc (Relocate::relocate): Likewise.
11724 * sparc.cc (Relocate::relocate): Likewise.
11725 * x86_64.cc (Relocate::relocate): Likewise.
11726 * testsuite/weak_plt.sh: New test.
11727 * testsuite/weak_plt_main.cc: New test.
11728 * testsuite/weak_plt_shared.cc: New test.
11729 * testsuite/Makefile.am (check_SCRIPTS): Add weak_plt.sh.
11730 (check_PROGRAMS): Add weak_plt.
11731 (check_DATA): Add weak_plt_shared.so.
11732 (weak_plt_main_pic.o, weak_plt): New targets.
11733 (weak_plt_shared_pic.o, weak_plt_shared.so): New targets.
11734 * testsuite/Makefile.in: Rebuild.
11735
11736 * testsuite/Makefile.am (weak_alias_test_1.so): Depend upon
11737 gcctestdir/ld.
11738 (weak_alias_test_2.so, weak_alias_test_4.so): Likewise.
11739 * testsuite/Makefile.in: Rebuild.
11740
323ee3f4
AM
117412008-08-04 Alan Modra <amodra@bigpond.net.au>
11742
11743 * Makefile.am (POTFILES.in): Set LC_ALL=C.
11744 * Makefile.in: Regenerate.
11745 * po/POTFILES.in: Regenerate.
11746
7c07ecec
ILT
117472008-07-29 Ian Lance Taylor <iant@google.com>
11748
11749 * script.cc (Script_options::finalize_symbols): Finalize SECTIONS
11750 symbols before other symbols.
11751 * testsuite/script_test_2.cc (test_addr): Declare.
11752 (test_addr_alias): Declare.
11753 (main): Check that test_addr and test_addr_alias have the right
cd536b21 11754 values.
7c07ecec
ILT
11755 * testsuite/script_test_2.t: Define test_addr_alias and
11756 test_addr.
11757
5778530e
ILT
117582008-07-24 Ian Lance Taylor <iant@google.com>
11759
2a00e4fb
ILT
11760 PR 5990
11761 * descriptors.cc: New file.
11762 * descriptors.h: New file.
11763 * gold-threads.h (class Hold_optional_lock): New class.
11764 * fileread.cc: Include "descriptors.h".
11765 (File_read::~File_read): Release descriptor rather than closing
11766 it.
11767 (File_read::open) [file]: Call open_descriptor rather than open.
11768 Set is_descriptor_opened_.
11769 (File_read::open) [memory]: Assert that descriptor is not open.
11770 (File_read::reopen_descriptor): New function.
11771 (File_read::release): Release descriptor.
11772 (File_read::do_read): Make non-const. Reopen descriptor.
11773 (File_read::read): Make non-const.
11774 (File_read::make_view): Reopen descriptor.
11775 (File_read::do_readv): Likewise.
11776 * fileread.h (class File_read): Add is_descriptor_opened_ field.
11777 Update declarations.
11778 * layout.cc: Include "descriptors.h".
11779 (Layout::create_build_id): Use open_descriptor rather than open.
11780 * output.cc: Include "descriptors.h".
11781 (Output_file::open): Use open_descriptor rather than open.
11782 * archive.cc (Archive::const_iterator): Change Archive to be
11783 non-const.
11784 (Archive::begin, Archive::end): Make non-const.
11785 (Archive::count_members): Likewise.
11786 * archive.h (class Archive): Update declarations.
11787 * object.h (Object::read): Make non-const.
11788 * Makefile.am (CCFILES): Add descriptors.cc.
11789 (HFILES): Add descriptors.h.
11790 * Makefile.in: Rebuild.
11791
801647d1
ILT
11792 PR 6716
11793 * gold.h: Always include <clocale>. Add Solaris workarounds
11794 following code in binutils/sysdep.h.
11795
5edd166e
ILT
11796 PR 6048
11797 * ehframe.cc (Eh_frame::add_ehframe_input_section): Check whether
11798 this->eh_frame_hdr_ is NULL before using it.
11799
c89ad728
ILT
11800 * dynobj.cc (Versions::Versions): Update comment.
11801
aa86f06b
ILT
11802 * dynobj.cc (Versions::Versions): If there is an soname, use it as
11803 the base version name.
11804
5778530e
ILT
11805 * stringpool.cc (Stringpool_template::add_with_length): Set key to
11806 array size plus one.
11807 (Stringpool_template::set_string_offsets): Subtract one from key
11808 before using it as an array index.
11809 (Stringpool_template::get_offset_with_length): Likewise.
11810 (Stringpool_template::write_to_buffer): Likewise.
11811 * stringpool.h (Stringpool_template::get_offset_from_key):
11812 Likewise.
11813
057ead22
ILT
118142008-07-23 Ian Lance Taylor <iant@google.com>
11815
7f649c59
ILT
11816 PR 6658
11817 * object.h (Merged_symbol_value::value): Do our best to handle a
11818 negative addend.
11819
057ead22
ILT
11820 PR 6647
11821 * script.cc (Version_script_info::get_versions): Don't add empty
11822 version tag to return value.
11823 (Version_script_info::get_symbol_version_helper): Change return
11824 type to bool. Add pversion parameter. Change all callers.
11825 (script_register_vers_node): Don't require a non-NULL tag.
11826 * script.h (class Version_script_info): Update declarations.
11827 (Version_script_info::get_symbol_version): Change return type to
11828 bool. Add version parameter. Change all callers.
11829 * symtab.cc (Sized_symbol::add_from_relobj): Rework version
11830 handling. Handle an empty version from a version script.
11831 (Symbol_table::define_special_symbol): Likewise.
11832 * testsuite/ver_test_10.script: New file.
11833 * testsuite/ver_test_10.sh: New file.
11834 * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_10.sh.
11835 (check_DATA): Add ver_test_10.syms.
11836 (ver_test_10.syms, ver_test_10.so): New target.
11837 * testsuite/Makefile.in: Rebuild.
11838
58e54ac2
CD
118392008-07-23 Simon Baldwin <simonb@google.com>
11840
11841 * symtab.cc (Symbol_table::sized_write_symbol): Only set st_size
11842 to zero for undefined symbols from dynamic libraries.
11843
95d14cd3
ILT
118442008-07-23 Ian Lance Taylor <iant@google.com>
11845
11846 * symtab.cc (Symbol_table::resolve): Remove version parameter.
11847 Change all callers.
11848 * symtab.h (class Symbol_table): Update declaration.
11849 * testsuite/ver_test_9.cc: New file.
11850 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_9.
11851 (ver_test_9_SOURCES, ver_test_9_DEPENDENCIES): Define.
11852 (ver_test_9_LDFLAGS, ver_test_9_LDADD): Define.
11853 (ver_test_9.so, ver_test_9.o): New targets.
11854 * testsuite/Makefile.in: Rebuild.
11855
92de84a6
ILT
118562008-07-22 Ian Lance Taylor <iant@google.com>
11857
34810851
ILT
11858 * options.h (class General_options): Define --check-sections.
11859 * layout.cc (Layout::set_segment_offsets): Handle
11860 --check-sections.
11861
af6156ef
ILT
11862 * options.h (class General_options): Define -n/--nmagic and
11863 -N/--omagic.
11864 * options.cc (General_options::finalize): For -n/--nmagic or
11865 -N/--omagic, set -static.
11866 * layout.cc (Layout::attach_allocated_section_to_segment): If
11867 -N/--omagic, don't put read-only and read-write sections in
11868 different segments.
11869 (Layout::find_first_load_seg): If -N/--omagic, don't insist on
11870 finding a read-only segment.
11871 (Layout::set_segment_offsets): If -N/--omagic or -n/--nmagic,
11872 don't set the minimum segment alignment to the common page size,
11873 and don't set the file offset to the address modulo the page size.
11874 * script-sections.cc (Script_sections::create_segments): If
11875 -n/--omagic, don't put read-only and read-write sections in
11876 different segments.
11877
92de84a6
ILT
11878 * cref.cc: New file.
11879 * cref.h: New file.
11880 * options.h (class General_options): Add --print-symbol-counts.
11881 * main.cc (main): Issue defined symbol report if requested.
11882 * archive.cc (Archive::interpret_header): Make into a const member
11883 function.
11884 (Archive::add_symbols): Call Input_objects::archive_start and
11885 archive_stop.
11886 (Archive::const_iterator): Define new class.
11887 (Archive::begin, Archive::end): New functions.
11888 (Archive::include_all_members): Rewrite to use iterator.
11889 (Archive::count_members): New function.
11890 * archive.h (class Archive): Update declarations.
11891 (Archive::filename): New function.
11892 * object.cc: Include "cref.h".
11893 (Sized_relobj::Sized_relobj): Initialize defined_count_.
11894 (Sized_relobj::do_get_global_symbol_counts): New function.
11895 (Input_objects::add_object): Add object to cross-referencer.
11896 (Input_objects::archive_start): New function.
11897 (Input_objects::archive_stop): New function.
11898 (Input_objects::print_symbol_counts): New function.
11899 * object.h: Declare Cref and Archive.
11900 (Object::get_global_symbol_counts): New function.
11901 (Object::do_get_global_symbol_counts): New pure virtual function.
11902 (class Sized_relobj): Add defined_count_ field. Update
11903 declarations.
11904 (class Input_objects): Add cref_ field. Update constructor.
11905 Update declarations.
11906 * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize symbols_ and
11907 defined_count_.
11908 (Sized_dynobj::do_add_symbols): Allocate symbols_ if printing
11909 symbol counts.
11910 (Sized_dynobj::do_get_global_symbol_counts): New function.
11911 * dynobj.h (class Sized_dynobj): Add fields symbols_ and
11912 defined_count_. Update declarations. Define Symbols typedef.
11913 * symtab.cc (Symbol_table::add_from_relobj): Add defined
11914 parameter. Change all callers.
11915 (Symbol_table::add_from_dynobj): Add sympointers and defined
11916 parameters. Change all callers.
11917 * symtab.h (class Symbol_table): Update declarations.
11918 * Makefile.am (CCFILES): Add cref.cc.
11919 (HFILES): Add cref.h.
11920 * Makefile.in: Rebuild.
11921
3f7c5e1d
CD
119222008-07-22 Simon Baldwin <simonb@google.com>
11923
11924 * symtab.cc (Symbol_table::sized_write_symbol): Set symbol size
11925 to zero when writing undefined symbols.
11926
e0b64032
ILT
119272008-07-22 Ian Lance Taylor <iant@google.com>
11928
11929 * output.cc (Output_section::add_input_section): Don't try to
11930 merge empty merge sections.
11931
096b02cf
CS
119322008-07-21 Craig Silverstein <csilvers@google.com>
11933
11934 * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
11935 Include symbol version in error message.
cd536b21 11936
1d1f116d
CD
119372008-07-20 Chris Demetriou <cgd@google.com>
11938
cd536b21 11939 * configure.ac (gold_cv_c_random_seed): New configured variable.
1d1f116d
CD
11940 (RANDOM_SEED_CFLAGS): New substituted variable.
11941 * Makefile.am (AM_CFLAGS, AM_CXXFLAGS): Add $(RANDOM_SEED_CFLAGS).
11942 * configure: Rebuild.
11943 * Makefile.in: Likewise.
11944 * testsuite/Makefile.in: Likewise.
11945
a18f591e
ILT
119462008-07-18 Ian Lance Taylor <iant@google.com>
11947
11948 * symtab.cc (Symbol_table::add_from_object): Rewrite the case
11949 where we see NAME/NULL and NAME/VERSION as separate symbols.
11950 * testsuite/ver_test_main.cc (main): Call t4.
11951 (t4, t4_2a): Define.
11952 * testsuite/ver_test_2.cc (t4_2): Define.
11953 * testsuite/ver_test_2.script: Put t4_2a in VER2.
11954 * testsuite/ver_test_4.cc (t4_2a): Define.
11955 * testsuite/ver_test_4.script: Put t4_2a in VER2.
11956 * testsuite/ver_test.h (t4, t4_2, t4_2a): Declare.
11957
c6e3f6ed
ILT
119582008-07-17 Ian Lance Taylor <iant@google.com>
11959
11960 * dynobj.cc (Versions::add_def): If we give an error about a
11961 missing version, go ahead and create the version anyhow.
11962
ef9beddf
ILT
119632008-07-10 Ian Lance Taylor <iant@google.com>
11964
11965 Handle output sections with more than 0x7fffffff bytes.
11966 * object.h (class Relobj): Change map_to_output_ to
11967 output_sections_, and just keep a section pointer. Change all
11968 uses. Move comdat group support to Sized_relobj.
11969 (Relobj::is_section_specially_mapped): Remove.
11970 (Relobj::output_section): Remove poff parameter. Change all
11971 callers.
11972 (Relobj::output_section_offset): New function.
11973 (Relobj::set_section_offset): Rewrite.
11974 (Relobj::map_to_output): Remove.
11975 (Relobj::output_sections): New function.
11976 (Relobj::do_output_section_offset): New pure virtual function.
11977 (Relobj::do_set_section_offset): Likewise.
11978 (class Sized_relobj): Add section_offsets_ field. Add comdat
11979 group support from Relobj. Update declarations.
11980 (Sized_relobj::get_output_section_offset): New function.
11981 (Sized_relobj::do_output_section_offset): New function.
11982 (Sized_relobj::do_set_section_offset): New function.
11983 * object.cc (Relobj::output_section_address): Remove.
11984 (Sized_relobj::Sized_relobj): Initialize new fields.
11985 (Sized_relobj::include_section_group): Cast find_kept_object to
11986 Sized_relobj.
11987 (Sized_relobj::include_linkonce_section): Likewise.
11988 (Sized_relobj::do_layout): Use separate arrays for output section
11989 and output offset.
11990 (Sized_relobj::do_count_local_symbols): Change map_to_output to
11991 output_sections.
11992 (Sized_relobj::do_finalize_local_symbols): Change map_to_output to
11993 output_sections and section_offsets.
11994 (Sized_relobj::write_local_symbols): Likewise.
11995 (map_to_kept_section): Compute output address directly.
11996 * reloc.cc (Sized_relobj::do_read_relocs): Change map_to_output to
11997 output_sections and section_offsets.
11998 (Sized_relobj::write_sections): Likewise.
11999 (Sized_relobj::relocate_sections): Likewise.
12000 * symtab.cc (sized_finalize_symbol): Use output_section_offset.
12001 * output.h (class Output_reloc): Update declarations. Change
12002 u2_.relobj to Sized_relobj*.
12003 (class Output_data_reloc): Change add functions to use
12004 Sized_relobj*.
12005 * output.cc (Output_reloc::Output_reloc): Change relobj to
12006 Sized_relobj*.
12007 (Output_reloc::local_section_offset): Change return type to
12008 Elf_Addr. Use get_output_section_offset.
12009 (Output_reloc::get_address): Likewise.
12010 (Output_section::is_input_address_mapped): Don't call
12011 is_section_specially_mapped.
12012 (Output_section::output_offset): Likewise.
12013 (Output_section::output_address): Likewise.
12014 (Output_section::starting_output_address): Likewise.
12015 * copy-relocs.cc (Copy_relocs::copy_reloc): Change object
12016 parameter to Sized_relobj*.
12017 (Copy_relocs::need_copy_reloc): Likewise.
12018 (Copy_relocs::save): Likewise.
12019 * copy-relocs.h (class Copy_relocs): Update declarations.
12020 (class Copy_relocs::Copy_reloc_entry): Change constructor to use
12021 Sized_relobj*. Change relobj_ field to Sized_relobj*.
12022 * target-reloc.h (relocate_for_relocatable): Change
12023 offset_in_output_section type to Elf_Addr. Change code that uses
12024 it as well.
12025 * layout.cc (Layout::layout): Always set *off.
12026 * mapfile.cc (Mapfile::print_input_section): Use
12027 output_section_offset.
12028 * i386.cc (Target_i386::copy_reloc): Change object parameter to
12029 Sized_relobj*.
12030 * powerpc.cc (Target_powerpc::copy_reloc): Likewise.
12031 * sparc.cc (Target_sparc::copy_reloc): Likewise.
12032 * x86_64.cc (Target_x86_64::copy_reloc): Likewise.
12033
5cb66f97
ILT
120342008-07-03 Ian Lance Taylor <iant@google.com>
12035
12036 * layout.cc (Layout::include_section): Do not discard unrecognized
12037 SHT_STRTAB sections.
12038
afe47622
CS
120392008-06-30 Craig Silverstein <csilvers@cs.stanford.edu>
12040
12041 * script.cc (Lex::can_continue_name): Make '?' allowable in
12042 version-script names.
12043 * testsuite/version_script.map: Change glob pattern to use '?'
12044
5adf9721
ILT
120452008-06-30 Manish Singh <yosh@gimp.org>
12046
12047 PR 6585
12048 * symtab.cc (Symbol_table::add_undefined_symbols_from_command_line):
12049 Correct typo.
12050
e6fde208
ILT
120512008-06-30 Ian Lance Taylor <iant@google.com>
12052
12053 PR 6660
12054 PR 6682
12055 * powerpc.cc (Powerpc_relocate_functions::addr16_ha) [both
12056 versions]: Don't try to read the value in the contents, since we
12057 don't use it. Use the template endianness when writing.
12058
3f2e6a2d
CC
120592008-06-25 Cary Coutant <ccoutant@google.com>
12060
12061 * fileread.cc (File_read::make_view): Assert on zero-length view.
12062 * object.cc (Sized_relobj::do_read_symbols): Don't try to read
12063 symbol table when there are no symbols to read.
12064
c43d3a48
CS
120652008-06-23 Craig Silverstein <csilvers@google.com>
12066
12067 * version.cc (version_string): Bump to 1.7
12068
5f494ea0
CS
120692008-06-18 Craig Silverstein <csilvers@google.com>
12070
12071 * powerpc.cc (Powerpc_relocate_functions::addr16_ha): cast
12072 constant 0xFFFF to type Valtype.
12073 (Powerpc_relocate_functions::rel16_ha): Likewise.
12074
c42e122e
ILT
120752008-06-17 Ian Lance Taylor <iant@google.com>
12076
f34787f8
ILT
12077 * output.h (Output_section::Input_section): Initialize p2align_ to
12078 zero for Output_section_data constructors.
12079 (Output_section::Input_section::addralign): If not an input
12080 section, return the alignment of the Output_section_data.
12081 * testsuite/copy_test.cc: New file.
12082 * testsuite/copy_test_1.cc: New file.
12083 * testsuite/copy_test_2.cc: New file.
12084 * testsuite/Makefile.am (check_PROGRAMS): Add copy_test.
12085 (copy_test_SOURCES, copy_test_DEPENDENCIES): New variables.
12086 (copy_test_LDFLAGS, copy_test_LDADD): New variables.
12087 (copy_test_1_pic.o, copy_test_1.so): New targets.
12088 (copy_test_2_pic.o, copy_test_2.so): New targets.
12089 * testsuite/Makefile.in: Rebuild.
12090
c42e122e
ILT
12091 * script-sections.cc (Script_sections::place_orphan): Initialize
12092 local variable exact.
12093
ce3ac18a
DE
120942008-06-13 David Edelsohn <edelsohn@gnu.org>
12095
12096 * powerpc.cc (Output_data_plt_powerpc::do_write): 8 + 4 = 0xC.
12097
42cacb20
DE
120982008-06-12 David Edelsohn <edelsohn@gnu.org>
12099 David S. Miller <davem@davemloft.net>
12100
12101 * powerpc.cc: New file.
12102 * Makefile.am (TARGETSOURCES): Add powerpc.cc
12103 (ALL_TARGETOBJS): Add powerpc.$(OBJEXT)
12104 * configure.tgt: Add entries for powerpc-* and powerpc64-*.
12105 * Makefile.in: Rebuild.
12106
7b308235
ILT
121072008-06-09 Ian Lance Taylor <iant@google.com>
12108
12109 * testsuite/relro_test.cc: Include <cstdio>, <cstdlib>, and
12110 <exception>.
12111 (throwing, orig_terminate): New static variables.
12112 (terminate_handler): New static function.
12113 (t2): Set terminate handler.
12114
f0b886e3
ILT
121152008-06-05 Kris Van Hees <kris.van.hees@oracle.com>
12116
12117 PR 6584
cd536b21 12118 * binary.cc (Binary_to_elf::sized_convert): Fix .data
f0b886e3
ILT
12119 alignment.
12120
3e90f135
CC
121212008-05-30 Cary Coutant <ccoutant@google.com>
12122
12123 * archive.cc (Archive::include_all_members) Correct to step
12124 over symbol table and extended name table in thin archives.
12125
e09ad04a
ILT
121262008-05-29 Kris Van Hees <kris.van.hees@oracle.com>
12127
12128 PR 6407
12129 * target-reloc.h (relocate_for_relocatable): Fix new_offset
12130 calculation.
12131
62b01cb5
ILT
121322008-05-28 Caleb Howe <cshowe@google.com>
12133
12134 * reduced_debug_output.cc: New file.
12135 * reduced_debug_output.h: New file.
92de84a6 12136 * options.h (class General_options): Add --strip-debug-non-line.
62b01cb5
ILT
12137 * options.cc (General_options::finalize): Add strip_debug_non_line
12138 to the strip heirarchy.
12139 * layout.h (class Layout): Add debug_abbrev_ and debug_info_
12140 fields.
12141 * layout.cc: Include "reduced_debug_output.h".
12142 (Layout::Layout): Initialize new fields.
12143 (line_only_debug_sections): New static array.
12144 (is_lines_only_debug_sections): New static inline function.
12145 (Layout::include_section): Handle --strip-debug-non-line.
12146 (Layout::make_output_section): If --strip-debug-non-line, build
12147 new output sections for .debug_abbrev and .debug_info.
12148 * dwarf_reader.cc (read_unsigned_LEB_128): Move to namespace
12149 gold. Warn about possible overflow.
12150 (read_signed_LEB_128): Likewise.
12151 * dwarf_reader.h: (read_unsigned_LEB_128): Declare.
12152 (read_signed_LEB_128): Declare.
12153 * Makefile.am (CCFILES): Add reduced_debug_output.cc.
12154 (HFILES): Add reduced_debug_output.h.
12155 * Makefile.in: Rebuild.
12156
7d9e3d98
ILT
121572008-05-21 Ian Lance Taylor <iant@google.com>
12158
12159 * mapfile.cc: New file.
12160 * mapfile.h: New file.
12161 * options.h (class General_options): Add -M/--print-map and -Map.
12162 * options.cc (General_options::finalize): Make -M equivalent to
12163 -Map -.
12164 * main.cc: Include <cstdio> and "mapfile.h".
12165 (main): Open mapfile if requested.
12166 * gold.cc (class Middle_runner): Add mapfile_ field. Update
12167 constructor. Change caller.
12168 (queue_initial_tasks): Add mapfile parameter. Change caller.
12169 (queue_middle_tasks): Likewise.
12170 * gold.h (queue_initial_tasks, queue_middle_tasks): Update
12171 declarations.
12172 * archive.cc: Include "mapfile.h".
12173 (Archive::add_symbols): Add mapfile parameter. Change all
12174 callers. Pass mapfile, symbol, and reason to include_member.
12175 (Archive::include_all_members): Add mapfile parameter. Change all
12176 callers.
12177 (Archive::include_member): Add mapfile, sym, and why parameters.
12178 Change all callers. Report inclusion to map file.
12179 * archive.h: Include "fileread.h".
12180 (class Archive): Update declarations.
12181 (Archive::file): New const method.
12182 (class Add_archive_symbols): Add mapfile_ field. Update
12183 constructor. Change all callers.
12184 * readsyms.h (class Read_symbols): Likewise.
12185 (class Finish_group): Likewise.
12186 (class Read_script): Likewise.
12187 * common.cc: Include "mapfile.h".
12188 (Symbol_table::allocate_commons): Add mapfile parameter. Change
12189 all callers.
12190 (Symbol_table::do_allocate_commons): Likewise.
12191 (Symbol_table::do_allocate_commons_list): Likewise. Report common
12192 symbol allocation to mapfile.
12193 * common.h (class Allocate_commons_task): Add mapfile_ field.
12194 Update constructor. Change all callers.
12195 * symtab.h (class Symbol_table): Update declarations.
12196 * layout.cc: Include "mapfile.h".
12197 (Layout_task_runner::run): Print information to mapfile.
12198 (Layout::create_gold_note): Change Output_data_fixed_space to
12199 Output_data_zero_fill.
12200 (Layout::create_build_id): Likewise.
12201 (Layout::print_to_mapfile): New function.
12202 * layout.h (class Layout_task_runner): Add mapfile_ field. Update
12203 constructor. Change caller.
12204 (class Layout): Declare print_to_mapfile.
12205 * output.cc (Output_section::Input_section::print_to_mapfile): New
12206 function.
12207 (Output_section::add_input_section): If producing a map, always
12208 add to input_sections_ list.
12209 (Output_section::do_print_to_mapfile): New function.
12210 (Output_segment::print_sections_to_mapfile): New function.
12211 (Output_segment::print_section_list_to_mapfile): New function.
12212 * output.h: Include "mapfile.h".
12213 (Output_data::print_to_mapfile): New function.
12214 (Output_data::do_print_to_mapfile): New virtual function.
12215 (Output_segment_headers::do_print_to_mapfile): New function.
12216 (Output_file_header::do_print_to_mapfile): New function.
12217 (Output_data_const::do_print_to_mapfile): New function.
12218 (class Output_data_const_buffer): Add map_name_ field. Update
12219 constructor. Change all callers. Add do_print_to_mapfile
12220 function.
12221 (class Output_data_fixed_space): Likewise.
12222 (class Output_data_space): Likewise.
12223 (class Output_data_zero_fill): New class.
12224 (Output_data_strtab::do_print_to_mapfile): New function.
12225 (Output_data_reloc_base::do_print_to_mapfile): New function.
12226 (Output_relocatable_relocs::do_print_to_mapfile): New function.
12227 (Output_data_group::do_print_to_mapfile): New function.
12228 (Output_data_got::do_print_to_mapfile): New function.
12229 (Output_data_dynamic::do_print_to_mapfile): New function.
12230 (Output_symtab_xindex::do_print_to_mapfile): New function.
12231 (class Output_section): Declare do_print_to_mapflie. Declare
12232 print_to_mapfile in Input_section.
12233 (class Output_segment): Declare new functions.
12234 * object.h (Sized_relobj::symbol_count): New function.
12235 * script-sections.cc
12236 (Output_section_element_dot_assignment::set_section_addresses):
12237 Change Output_data_fixed_space to Output_data_zero_fill.
12238 (Output_data_expression::do_print_to_mapfile): New function.
12239 * script.cc (read_input_script): Add mapfile parameter. Change
12240 all callers.
12241 * script.h (read_input_script): Update declaration.
12242 * ehframe.h (Eh_frame_hdr::do_print_to_mapfile): New function.
12243 (Eh_frame::do_print_to_mapfile): New function.
12244 * merge.h (Output_merge_data::do_print_to_mapfile): New function.
12245 (Output_merge_string::do_print_to_mapfile): New function.
12246 * i386.cc (Output_data_plt_i386::do_print_to_mapfile): New
12247 function.
12248 * sparc.cc (Output_data_plt_sparc::do_print_to_mapfile): New
12249 function.
12250 * x86_64.cc (Output_data_plt_x86_64::do_print_to_mapfile): New
12251 function.
12252 * Makefile.am (CCFILES): Add mapfile.cc.
12253 (HFILES): Add mapfile.h.
12254 * Makefile.in: Rebuild.
12255
9f1d377b
ILT
122562008-05-19 Ian Lance Taylor <iant@google.com>
12257
12258 * options.h (class General_options): Add -z relro.
12259 * layout.cc (Layout::Layout): Initialize relro_segment_.
12260 (Layout::add_output_section_data): Return the output section.
12261 (Layout::make_output_section): Rcognize relro sections and mark
12262 them appropriately.
12263 (Layout::attach_allocated_section_to_segment): Put relro sections
12264 in a PT_GNU_RELRO segment.
12265 (Layout::create_initial_dynamic_sections): Mark the .dynamic
12266 section as relro.
12267 (Layout::segment_precedes): Sort PT_GNU_RELRO segments after
12268 PT_TLS segments.
12269 (Layout::linkonce_mapping): Map d.rel.ro.local to
12270 .data.rel.ro.local.
12271 (Layout::output_section_name): Us .data.rel.ro.local for any
12272 section which begins with that.
12273 * layout.h (class Layout): Update add_output_section_data
12274 declaration. Add relro_segment_ field.
12275 * output.cc (Output_section::Output_section): Initialize is_relro_
12276 and is_relro_local_ fields.
12277 (Output_segment::add_output_section): Group relro sections.
12278 (Output_segment::is_first_section_relro): New function.
12279 (Output_segment::maximum_alignment): If there is a relro section,
12280 align the segment to the common page size.
12281 (Output_segment::set_section_addresses): Track whether we are
12282 looking at relro sections. If the last section is a relro
12283 section, align to the common page size.
12284 (Output_segment::set_section_list_addresses): Add in_relro
12285 parameter. Change all callers. Align to the page size when
12286 moving from relro to non-relro section.
12287 (Output_segment::set_offset): Align memsz of a PT_GNU_RELRO
12288 segment.
12289 * output.h (class Output_section): Add is_relro_ and
12290 is_relro_local_ fields.
12291 (Output_section::is_relro): New function.
12292 (Output_section::set_is_relro): New function.
12293 (Output_section::is_relro_local): New function.
12294 (Output_section::set_is_relro_local): New function.
12295 (class Output_segment): Update declarations.
12296 * i386.cc (Target_i386::got_section): Mark .got section as relro.
12297 * sparc.cc (Target_sparc::got_section): Likewise.
12298 * x86_64.cc (Target_x86_64::got_section): Likewise.
12299 * testsuite/relro_test_main.cc: New file.
12300 * testsuite/relro_test.cc: New file.
12301 * testsuite/Makefile.am (check_PROGRAMS): Add relro_test.
12302 (relro_test_SOURCES, relro_test_DEPENDENCIES): New variables.
12303 (relro_test_LDFLAGS, relro_test_LDADD): New variables.
12304 (relro_test.so, relro_test_pic.o): New targets.
12305 * testsuite/Makefile.in: Rebuild.
12306
a984ee1d
ILT
123072008-05-16 Ian Lance Taylor <iant@google.com>
12308
01676dcd
ILT
12309 * output.cc (Output_segment::add_output_section): Remove front
12310 parameter.
12311 * output.h (class Output_segment): Remove
12312 add_initial_output_section and overloaded add_output_section.
12313 Update declaration of remaining add_output_section.
12314 * layout.cc (Layout::create_interp): Call add_output_section
12315 rather than add_initial_output_section.
12316 (Layout::finish_dynamic_section): Likewise.
12317
497897f9
ILT
12318 * i386.cc (Target_i386::Relocate::relocate_tls): Set dynamic type
12319 for TLS_GOTDESC and TLS_DESC_CALL. Only optimize TLS_LDO_32 if we
12320 know the dynamic type.
12321 * x86_64.cc (Target_x86_64::Relocate): Add saw_tls_block_reloc_
12322 field. Initialize it in constructor.
12323 (Target_x86_64::Relocate::relocate_tls): Record that we saw a TLS
12324 block reloc for TLSGD, GOTPC32_TLSDESC, TLSDESC_CALL, and TLSLD.
12325 Only optimize DTPOFF32 and DTPOFF64 if we have seen a TLS block
12326 reloc.
12327
a984ee1d
ILT
12328 * output.cc (Output_reloc::get_address): Change return type to
12329 Elf_Addr.
12330 * output.h (class Output_reloc): Update get_address declaration.
12331 * x86_64.cc (Output_data_plt_x86_64::do_write): Use 64-bit types
12332 for section addresses.
12333
55ba0940
ILT
123342008-05-09 Ian Lance Taylor <iant@google.com>
12335
12336 PR 6493
12337 * gold.cc (gold_nomem): Use return value of write.
12338
75517b77
ILT
123392008-05-08 Ian Lance Taylor <iant@google.com>
12340
12341 * symtab.c (Symbol::init_base_output_data): Add version
12342 parameter. Change all callers.
12343 (Symbol::init_base_output_segment): Likewise.
12344 (Symbol::init_base_constant): Likewise.
12345 (Symbol::init_base_undefined): Likewise.
12346 (Sized_symbol::init_output_data): Likewise.
12347 (Sized_symbol::init_output_segment): Likewise.
12348 (Sized_symbol::init_constant): Likewise.
12349 (Sized_symbol::init_undefined): Likewise.
12350 (Symbol_table::do_define_in_output_data): If the new symbol has a
12351 version, mark it as the default.
12352 (Symbol_table::do_define_in_output_segment): Likewise.
12353 (Symbol_table::do_define_as_constant): Likewise.
12354 * symtab.h (class Symbol): Update declarations.
12355 (class Sized_symbol): Likewise.
12356 * resolve.cc (Symbol::override_version): New function.
c42e122e 12357 (Symbol::override_base): Call override_version.
75517b77
ILT
12358 (Symbol::override_base_with_special): Likewise.
12359 * testsuite/ver_script_8.script: New file.
12360 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_8.
12361 (ver_test_8_SOURCES, ver_test_8_DEPENDENCIES): Define.
12362 (ver_test_8_LDFLAGS, ver_test_8_LDADD): Define.
12363 (ver_test_8_1.so, ver_test_8_2.so): New targets.
12364
f1f70eae
ILT
123652008-05-06 Ian Lance Taylor <iant@google.com>
12366
f3e9c5c5
ILT
12367 PR 6049
12368 * options.h (DEFINE_set): Add VARNAME_begin and VARNAME_end
12369 functions.
12370 (class General_options): Remove existing --undefined, and add
12371 --no-undefined instead. Add new --undefined as synonym for -u.
12372 * archive.cc (Archive::add_symbols): Check whether symbol was
12373 named with -u.
12374 * gold.cc (queue_middle_tasks): Add -u symbols to symbol table.
12375 * symtab.h (class Symbol): Rename CONSTANT to IS_CONSTANT; change
12376 all uses. Add IS_UNDEFINED. Update declarations to split
12377 different versions of init_base. Declare init_base_undefined.
12378 (Symbol::is_defined): Handle IS_UNDEFINED.
12379 (Symbol::is_undefined): Likewise.
12380 (Symbol::is_weak_undefined): Call is_undefined.
12381 (Symbol::is_absolute): Handle IS_CONSTANT.
12382 (class Sized_symbol): Update declarations to split different
12383 versions of init. Declare init_undefined.
12384 (class Symbol_table): Declare new functions.
12385 * symtab.cc (Symbol::init_base_object): Rename from init_base.
12386 Change all callers.
12387 (Symbol::init_base_output_data): Likewise.
12388 (Symbol::init_base_output_segment): Likewise.
12389 (Symbol::init_base_constant): Likewise.
12390 (Symbol::init_base_undefined): New function.
12391 (Sized_symbol::init_object): Rename from init. Change all
12392 callers.
12393 (Sized_symbol::init_output_data): Likewise.
12394 (Sized_symbol::init_output_segment): Likewise.
12395 (Sized_symbol::init_constant): Likewise.
12396 (Sized_symbol::init_undefined): New function.
12397 (Symbol_table::add_undefined_symbols_from_command_line): New
12398 function.
12399 (Symbol_table::do_add_undefined_symbols_from_command_line): New
12400 function.
12401 (Symbol::final_value_is_known): Handle IS_UNDEFINED.
12402 (Symbol::output_section): Likewise.
12403 (Symbol::set_output_section): Likewise.
12404 (Symbol_table::sized_finalize_symbol): Likewise.
12405 (Symbol_table::sized_write_globals): Likewise.
12406 * resolve.cc (Symbol_table::should_override): Likewise.
12407 (Symbol::override_base_with_special): Likewise.
12408
8bdcdf2c
ILT
12409 * symtab.cc (Symbol_table::add_from_dynobj): If we see a protected
12410 symbol, change it to have default visibility.
12411 * testsuite/protected_1.cc: New file.
12412 * testsuite/protected_2.cc: New file.
12413 * testsuite/protected_3.cc: New file.
12414 * testsuite/protected_main_1.cc: New file.
12415 * testsuite/protected_main_2.cc: New file.
12416 * testsuite/protected_main_3.cc: New file.
12417 * testsuite/Makefile.am (check_PROGRAMS): Add protected_1.
12418 (protected_1_SOURCES, protected_1_DEPENDENCIES): Define.
12419 (protected_1_LDFLAGS, protected_1_LDADD): Define.
12420 (protected_1.so): New target.
12421 (protected_1_pic.o, protected_2_pic.o): New targets.
12422 (protected_3_pic.o): New target.
12423 (check_PROGRAMS): Add protected_2.
12424 (protected_2_SOURCES, protected_2_DEPENDENCIES): Define.
12425 (protected_2_LDFLAGS, protected_2_LDADD): Define.
12426 * testsuite/Makefile.in: Rebuild.
12427
2b706932
ILT
12428 * options.h (DEFINE_var): Add set_user_set_##varname__.
12429 (DEFINE_bool_alias): New macro.
12430 (class General_options): Define -Bstatic using DEFINE_bool_alias
12431 rather than DEFINE_special. Add --undefined as an alias for -z
12432 defs.
12433 * options.cc (General_options::parse_Bstatic): Remove.
12434
d82a5bcc
ILT
12435 * options.h (class General_options): Add --fatal-warnings.
12436 * main.cc (main): Implement --fatal-warnings.
12437 * errors.h (Errors::warning_count): New function.
12438
f1f70eae
ILT
12439 * options.h (class General_options): Add -Bsymbolic-functions.
12440 * symtab.h (Symbol::is_preemptible): Check for
12441 -Bsymbolic-functions.
12442
8825ac63
ILT
124432008-05-05 Ian Lance Taylor <iant@google.com>
12444
d98bc257
ILT
12445 * options.h (DEFINE_bool): For DASH_Z, create the negative option
12446 as noVARNAME rather than no-VARNAME.
12447 (class General_options): Add option -z combreloc.
12448 * output.h (class Output_reloc) [SHT_REL]: Declare compare and
12449 get_address.
12450 (Output_reloc::sort_before) [SHT_REL]: New function.
12451 (Output_reloc::sort_before) [SHT_RELA]: New function.
12452 (class Output_data_reloc_base): Add sort_relocs_ field. Define
12453 Sort_relocs_comparison.
12454 (Output_data_reloc_base::Output_data_reloc_base): Add sort_relocs
12455 parameter. Change all callers.
12456 (Output_data_reloc::Output_data_reloc) [both versions]: Add
12457 sort_relocs parameter. Change all callers.
12458 * output.cc (Output_reloc::get_address): New function, broken out
12459 of write_rel.
12460 (Output_reloc::write_rel): Call it.
12461 (Output_reloc::compare): New function.
12462 (Output_data_reloc_base::do_write): Optionally sort relocs.
12463
60b2b4e7
ILT
12464 * configure.ac: If targ_extra_obj is set, link it in.
12465 * configure.tgt: Initialize all variables.
12466 (x86_64*): Set targ_extra_obj and targ_extra_size.
12467 * configure: Rebuild.
12468
8825ac63
ILT
12469 * object.cc (Sized_relobj::include_section_group): Adjust section
12470 indexes read from group data. Build vector to pass to
12471 layout_group.
12472 * layout.cc (Layout::layout_group): Add flags and shndxes
12473 parameters. Remove contents parameter. Change caller. Update
12474 explicit instantiations.
12475 * layout.h (class Layout): Update layout_group declaration.
12476 * output.cc (Output_data_group::Output_data_group): Add flags and
12477 input_shndxes parameters. Remove contents parameter. Change
12478 caller.
12479 (Output_data_group::do_write): Change input_sections_ to
12480 input_shndxes_.
12481 * output.h (class Output_data_group): Update constructor
12482 declaration. Rename input_sections_ to input_shndxes_.
12483 * testsuite/many_sections_test.cc: Add template.
12484
e94cf127
CC
124852008-04-30 Cary Coutant <ccoutant@google.com>
12486
4418b2d5
CC
12487 * target-reloc.h (relocate_section): Fix dead-pointer bug.
12488
e94cf127
CC
12489 * layout.cc (Layout::include_section): Refactored check for debug
12490 info section.
12491 (Layout::add_comdat): Add new parameters. Change type
12492 of signature parameter. Add object and shndx to signatures table.
12493 (Layout::find_kept_object): New function.
12494 * layout.h: Include <cstring>.
12495 (Layout::is_debug_info_section): New function.
12496 (Layout::add_comdat): Add new parameters.
12497 (Layout::find_kept_object): New function.
12498 (Layout::Kept_section): New struct.
12499 (Layout::Signatures): Change type of map range.
12500 * object.cc (Relobj::output_section_address): New function.
12501 (Sized_relobj::include_section_group): Add new parameters. Change
12502 calls to Layout::add_comdat. Change to build table of kept comdat
12503 groups and table mapping discarded sections to kept sections.
12504 (Sized_relobj::include_linkonce_section): Likewise. Add new parameter.
12505 (Sized_relobj::do_layout): Change calls to include_section_group and
12506 include_linkonce_section.
12507 (Sized_relobj::do_finalize_local_symbols): Do not set local symbol
12508 value to zero when section is discarded.
12509 (Sized_relobj::map_to_kept_section): New function.
12510 * object.h (Relobj::output_section_address): New function.
12511 (Relobj::Comdat_group): New type.
12512 (Relobj::find_comdat_group): New function.
12513 (Relobj::Comdat_group_table): New type.
12514 (Relobj::Kept_comdat_section): New type.
12515 (Relobj::Kept_comdat_section_table): New type.
12516 (Relobj::add_comdat_group): New function.
12517 (Relobj::set_kept_comdat_section): New function.
12518 (Relobj::get_kept_comdat_section): New function.
12519 (Relobj::comdat_groups_): New field.
12520 (Relobj::kept_comdat_sections_): New field.
12521 (Symbol_value::input_value): Update comment.
12522 (Sized_relobj::map_to_kept_section) New function.
12523 (Sized_relobj::include_linkonce_section): Add new parameter.
12524 * target-reloc.h (Comdat_behavior): New type.
12525 (get_comdat_behavior): New function.
12526 (relocate_section): Add code to map a discarded section to the
12527 corresponding kept section when applying a relocation.
12528
e4e5049b
CS
125292008-04-30 Craig Silverstein <csilvers@google.com>
12530
12531 * dwarf_reader.cc (next_generation_count): New static var.
12532 (Addr2line_cache_entry): New struct.
12533 (addr2line_cache): New static var.
12534 (Dwarf_line_info::one_addr2line): Added caching.
12535 (Dwarf_line_info::clear_addr2line_cache): New function.
12536 * dwarf_reader.h (Dwarf_line_info::one_addr2line): Add
12537 cache-size parameter.
12538 (Dwarf_line_info::one_addr2line_cache): New function.
12539 * symtab.cc (Symbol_table::detect_odr_violations): Pass
12540 new cache-size argument to one_addr2line(), and clear cache.
12541
d09e9154
CC
125422008-04-28 Cary Coutant <ccoutant@google.com>
12543
12544 * i386.cc (Relocate::relocate): Fix typos for R_386_PC16 and
12545 R_386_PC8 relocations.
12546
7ef73768
ILT
125472008-04-23 Ian Lance Taylor <iant@google.com>
12548
55438702
ILT
12549 * object.cc (Sized_relobj::include_section_group): Check for
12550 invalid section group.
12551
c165fb93
ILT
12552 * object.cc (make_elf_object): Correct test for 64-bit ELF file
12553 header size.
12554
7ef73768
ILT
12555 * readsyms.cc (Read_symbols::do_read_symbols): Use get_view rather
12556 than read for file header.
12557 * archive.cc (Archive::include_member): Likewise.
12558
6194aaab
L
125592008-04-23 Paolo Bonzini <bonzini@gnu.org>
12560
12561 * aclocal.m4: Regenerate.
12562 * configure: Regenerate.
12563
d491d34e
ILT
125642008-04-19 Ian Lance Taylor <iant@google.com>
12565
5ea2bac6
ILT
12566 * version.cc (version_string): Bump to 1.6.
12567
7bc3e21a
ILT
12568 * testsuite/Makefile.am (many_sections_r_test): New target.
12569 (many_sections_r_test_SOURCES): Remove.
12570 (many_sections_r_test_DEPENDENCIES): Remove.
12571 (many_sections_r_test_LDFLAGS): Remove.
12572 (many_sections_r_test_LDADD): Remove.
12573
7fcd3aa9
ILT
12574 * object.cc (Sized_relobj::do_add_symbols): Always pass
12575 local_symbol_count_ to add_from_relobj.
12576
4c94d6ae
ILT
12577 * testsuite/Makefile.am (many_sections_check.h): Only check one in
12578 every thousand variables.
12579 * testsuite/Makefile.in: Rebuild.
12580
d491d34e
ILT
12581 * object.cc (Xindex::initialize_symtab_xindex): New function.
12582 (Xindex::read_symtab_xindex): New function.
12583 (Xindex::sym_xindex_to_shndx): New function.
12584 (Sized_relobj::find_symtab): Pick up SHT_SYMTAB_SHNDX section if
12585 available.
12586 (Sized_relobj::do_initialize_xindex): New function.
12587 (Sized_relobj::do_read_symbols): Adjust section links.
12588 (Sized_relobj::symbol_section_and_value): Add is_ordinary
12589 parameter. Change all callers.
12590 (Sized_relobj::include_section_group): Adjust section links and
12591 symbol section indexes.
12592 (Sized_relobj::do_layout): Adjust section links.
12593 (Sized_relobj::do_count_local_symbols): Adjust section links and
12594 symbol section indexes.
12595 (Sized_relobj::do_finalize_local_symbols): Distinguish between
12596 ordinary and special symbols.
12597 (Sized_relobj::write_local_symbols): Add symtab_xindex and
12598 dynsym_xindex parameters. Change all callers. Adjust section
12599 links. Use SHN_XINDEX when needed.
12600 (Sized_relobj::get_symbol_location_info): Adjust section links.
12601 Don't get fooled by special symbols.
12602 * object.h (class Xindex): Define.
12603 (class Object): Add xindex_ parameter. Declare virtual functoin
12604 do_initialize_xindex.
12605 (Object::adjust_sym_shndx): New function.
12606 (Object::set_xindex): New protected function.
12607 (class Symbol_value): Add is_ordinary_shndx_ field.
12608 (Symbol_value::Symbol_value): Initialize is_ordinary_shndx_.
12609 (Symbol_value::value): Assert ordinary section.
12610 (Symbol_value::initialize_input_to_output_map): Likewise.
12611 (Symbol_value::set_input_shndx): Add is_ordinary parameter.
12612 Change all callers.
12613 (Symbol_value::input_shndx): Add is_ordinary parameter. Change
12614 all callers.
12615 (class Sized_relobj): Update declarations.
12616 (Sized_relobj::local_symbol_input_shndx): Add is_ordinary
12617 parameter. Change all callers.
12618 (Sized_relobj::adjust_shndx): New function.
12619 * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize dynsym_shndx_
12620 field.
12621 (Sized_dynobj::find_dynsym_sections): Remove pdynsym_shndx
12622 parameter. Change all callers. Pick up SHT_DYNSYM_SHNDX section
12623 for SHT_DYNSYM section if available. Set dynsym_shndx_ field.
12624 (Sized_dynobj::read_dynsym_section): Adjust section links.
12625 (Sized_dynobj::read_dynamic): Likewise.
12626 (Sized_dynobj::do_read_symbols): Use dynsym_shndx_ field. Adjust
12627 section links.
12628 (Sized_dynobj::do_initialize_xindex): New function.
12629 * dynobj.h (class Sized_dynobj): Add dynsym_shndx_ field. Declare
12630 do_initialize_xindex.
12631 (Sized_dynobj::adjust_shndx): New function.
12632 * layout.cc (Layout::Layout): Initialize symtab_xindex_ and
12633 dynsym_xindex_ fields.
12634 (Layout::finalize): Add a call to set_section_indexes before
12635 creating the symtab sections.
12636 (Layout::set_section_indexes): Don't do anything if the section
12637 already has a section index.
12638 (Layout::create_symtab_sections): Add shnum parameter. Change
12639 caller. Create .symtab_shndx section if needed.
12640 (Layout::create_shdrs): Add shstrtab_section parameter. Change
12641 caller.
12642 (Layout::allocated_output_section_count): New function.
12643 (Layout::create_dynamic_symtab): Create .dynsym_shndx section if
12644 needed.
12645 * layout.h (class Layout): Add symtab_xindex_ and dynsym_xindex_
12646 fields. Update declarations.
12647 (Layout::symtab_xindex): New function.
12648 (Layout::dynsym_xindex): New function.
12649 (class Write_symbols_task): Add layout_ field.
12650 (Write_symbols_task::Write_symbols_task): Add layout parameter.
12651 Change caller.
12652 * output.cc (Output_section_headers::Output_section_headers): Add
12653 shstrtab_section parameter. Change all callers.
12654 (Output_section_headers::do_sized_write): Store overflow values
12655 for section count and section string table section index in
12656 section header zero.
12657 (Output_file_header::do_sized_write): Check for overflow of
12658 section count and section string table section index.
12659 (Output_symtab_xindex::do_write): New function.
12660 (Output_symtab_xindex::endian_do_write): New function.
12661 * output.h (class Output_section_headers): Add shstrtab_section_.
12662 Update declarations.
12663 (class Output_symtab_xindex): Define.
12664 (Output_section::has_out_shndx): New function.
12665 * symtab.cc (Symbol::init_fields): Initialize is_ordinary_shndx_
12666 field.
12667 (Symbol::init_base): Add st_shndx and is_ordinary parameters.
12668 Change all callers.
12669 (Sized_symbol::init): Likewise.
12670 (Symbol::output_section): Check for ordinary symbol.
12671 (Symbol_table::add_from_object): Remove orig_sym parameter. Add
12672 st_shndx, is_ordinary, and orig_st_shndx parameters. Change all
12673 callers.
12674 (Symbol_table::add_from_relobj): Add symndx_offset parameter.
12675 Change all callers. Simplify handling of symbols from sections
12676 not included in the link.
12677 (Symbol_table::add_from_dynobj): Handle ordinary symbol
12678 distinction.
12679 (Weak_alias_sorter::operator()): Assert that symbols are
12680 ordinary.
12681 (Symbol_table::sized_finalize_symbol): Handle ordinary symbol
12682 distinction.
12683 (Symbol_table::write_globals): Add symtab_xindex and dynsym_xindex
12684 parameters. Change all callers.
12685 (Symbol_table::sized_write_globals): Likewise. Handle ordinary
12686 symbol distinction. Use SHN_XINDEX when needed.
12687 (Symbol_table::write_section_symbol): Add symtab_xindex
12688 parameter. Change all callers.
12689 (Symbol_table::sized_write_section_symbol): Likewise. Use
12690 SHN_XINDEX when needed.
12691 * symtab.h (class Symbol): Add is_ordinary_shndx_ field. Update
12692 declarations.
12693 (Symbol::shndx): Add is_ordinary parameter. Change all callers.
12694 (Symbol::is_defined): Check is_ordinary.
12695 (Symbol::is_undefined, Symbol::is_weak_undefined): Likewise.
12696 (Symbol::is_absolute, Symbol::is_common): Likewise.
12697 (class Sized_symbol): Update declarations.
12698 (class Symbol_table): Update declarations.
12699 * resolve.cc (Symbol::override_base): Add st_shndx and is_ordinary
12700 parameters. Change all callers.
12701 (Sized_symbol::override): Likewise.
12702 (Symbol_table::override): Likewise.
12703 (symbol_to_bits): Add is_ordinary parameter. Change all callers.
12704 (Symbol_table::resolve): Remove orig_sym parameter. Add st_shndx,
12705 is_ordinary, and orig_st_shndx parameters. Change all callers.
12706 * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Require symbol
12707 to be in an ordinary section.
12708 * dwarf_reader.cc (Sized_dwarf_line_info::symbol_section): Add
12709 object and is_ordinary parameters. Change all callers.
12710 (Sized_dwarf_line_info::read_relocs): Add object parameter.
12711 Change all callers. Don't add undefined or non-ordinary symbols
12712 to reloc_map_.
12713 (Sized_dwarf_line_info::read_line_mappings): Add object parameter.
12714 Change all callers.
12715 * dwarf_reader.h (class Sized_dwarf_line_info): Update
12716 declarations.
12717 * ehframe.cc (Eh_frame::read_fde): Check for ordinary symbol.
12718 * reloc.cc (Sized_relobj::do_read_relocs): Adjust section links.
12719 (Sized_relobj::relocate_sections): Likewise.
12720 * target-reloc.h (scan_relocs): Adjust section symbol index.
12721 (scan_relocatable_relocs): Likewise.
12722 * i386.cc (Scan::local): Check for ordinary symbols.
12723 * sparc.cc (Scan::local): Likewise.
12724 * x86_64.cc (Scan::local): Likewise.
12725 * testsuite/binary_unittest.cc (Sized_binary_test): Update calls
12726 to symbol_section_and_value.
12727 * testsuite/many_sections_test.cc: New file.
12728 * testsuite/Makefile.am (BUILT_SOURCES): Define.
12729 (check_PROGRAMS): Add many_sections_test.
12730 (many_sections_test_SOURCES): Define.
12731 (many_sections_test_DEPENDENCIES): Define.
12732 (many_sections_test_LDFLAGS): Define.
12733 (BUILT_SOURCES): Add many_sections_define.h.
12734 (many_sections_define.h): New target.
12735 (BUILT_SOURCES): Add many_sections_check.h.
12736 (many_sections_check.h): New target.
12737 (check_PROGRAMS): Add many_sections_r_test.
12738 (many_sections_r_test_SOURCES): Define.
12739 (many_sections_r_test_DEPENDENCIES): Define.
12740 (many_sections_r_test_LDFLAGS): Define.
12741 (many_sections_r_test_LDADD): Define.
12742 (many_sections_r_test.o): New target.
12743 * testsuite/Makefile.in: Rebuild.
12744
c5818ff1
CC
127452008-04-17 Cary Coutant <ccoutant@google.com>
12746
12747 * errors.cc (Errors::info): New function.
12748 (gold_info): New function.
12749 * errors.h (Errors::info): New function.
12750 * gold.h (gold_info): New function.
12751 * object.cc (Input_objects::add_object): Print trace output.
12752 * options.cc (options::parse_set): New function.
12753 (General_options::parse_wrap): Deleted.
12754 (General_options::General_options): Deleted initializer.
12755 * options.h (options::String_set): New typedef.
12756 (options::parse_set): New function.
12757 (DEFINE_set): New macro.
12758 (General_options::wrap): Changed to use DEFINE_set. Changed
12759 callers of any_wrap_symbols and is_wrap_symbol.
12760 (General_options::trace, General_options::trace_symbol):
12761 New options.
12762 (General_options::any_wrap_symbols, General_options::is_wrap_symbol)
12763 (General_options::wrap_symbols_): Deleted.
12764 * symtab.cc (Symbol_table::add_from_object): Print trace output.
12765
b5be4a7c
DM
127662008-04-17 David S. Miller <davem@davemloft.net>
12767
12768 * options.cc (General_options::parse_V): New function.
12769 * options.h: Add entries for -V and -Qy.
12770
155a0dd7
ILT
127712008-04-17 Ian Lance Taylor <iant@google.com>
12772
12773 * common.cc (Symbol_table::allocate_commons): Remove options
12774 parameter. Change caller.
12775 (Symbol_table::do_allocate_commons): Remove options parameter.
12776 Change caller. Just call do_allocate_commons_list twice.
12777 (Symbol_table::do_allocate_commons_list): New function, broken out
12778 of do_allocate_commons.
12779 * common.h (class Allocate_commons_task): Remove options_ field.
12780 Update constructor.
12781 * symtab.cc (Symbol_table::Symbol_table): Initialize
12782 tls_commons_.
12783 (Symbol_table::add_from_object): Put TLS common symbols on
12784 tls_commons_ list.
12785 (Symbol_table::sized_finalize_symbol): Handle STT_TLS symbols
12786 which are IN_OUTPUT_DATA.
12787 * symtab.h (class Symbol_table): Add tls_commons_ field. Update
12788 allocate_commons and do_allocate_commons declarations. Declare
12789 do_allocate_commons_list.
12790 * gold.cc (queue_middle_tasks): Update creation of
12791 Allocate_commons_task to not pass options.
12792 * testsuite/Makefile.am (INCLUDES): Add -I.. .
12793 (TLS_TEST_C_FLAGS): New variable.
12794 (tls_test_c_pic.o): New target.
12795 (tls_test_shared.so): Link in tls_test_c_pic.o.
12796 (tls_test_c_pic_ie.o): New target.
12797 (tls_test_ie_shared.so): Link in tls_test_c_pic_ie.o.
12798 (tls_test_DEPENDENCIES, tls_test_LDADD): Add tls_test_c.o.
12799 (tls_test_c.o): New target.
12800 (tls_pic_test_DEPENDENCIES): Add tls_test_c_pic.o.
12801 (tls_pic_test_LDADD): Likewise.
12802 (tls_shared_gd_to_ie_test_DEPENDENCIES): Add tls_test_c_pic.o.
12803 (tls_shared_gd_to_ie_test_LDADD): Likewise.
12804 (tls_test_c_gnu2.o): New target.
12805 (tls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): Add
12806 tls_test_c_gnu2.o.
12807 (tls_shared_gnu2_gd_to_ie_test_LDADD): Likewise.
12808 (tls_test_gnu2_shared.so): Link in tls_test_c_gnu2.o.
12809 (tls_test_shared_nonpic.so): Link in tls_test_c.o.
12810 * testsuite/tls_test.cc: Include "config.h".
12811 (t_last): Call t11_last.
12812 * testsuite/tls_test.h (t11, t11_last): Declare.
12813 * testsuite/tls_test_c.c: New file.
12814 * testsuite/tls_test_main.cc (thread_routine): Call t11.
12815 * configure.ac: Check for OpenMP support.
12816 * configure, config.in, Makefile.in: Rebuild.
12817 * testsuite/Makefile.in: Rebuild.
12818
edfbb029
CC
128192008-04-16 Cary Coutant <ccoutant@google.com>
12820
12821 * i386.cc (Target_i386::define_tls_base_symbol): New function.
12822 (Target_i386::tls_base_symbol_defined_): New field.
12823 (Target_i386::Scan::local): Define _TLS_MODULE_BASE_ symbol.
12824 (Target_i386::Scan::global): Likewise.
12825 * symtab.cc (sized_finalize_symbol): Add check for TLS symbol.
12826 * x86_64.cc (Target_x86_64::define_tls_base_symbol): New function.
12827 (Target_x86_64::tls_base_symbol_defined_): New field.
12828 (Target_x86_64::Scan::local): Define _TLS_MODULE_BASE_ symbol.
12829 (Target_x86_64::Scan::global): Likewise.
12830
f3c69fca
CC
128312008-04-16 Cary Coutant <ccoutant@google.com>
12832
12833 * symtab.h (Symbol::is_strong_undefined): Removed unused function.
12834 (Symbol::needs_plt_entry): Allow weak undefined symbols.
12835 (Symbol::needs_dynamic_reloc): Allow weak undefined symbols when
12836 building shared libraries.
12837 * testsuite/Makefile.am (weak_undef_nonpic_test): New target.
12838 (weak_undef_file1_nonpic.o, weak_undef_file2_nonpic.o)
12839 (weak_undef_lib_nonpic.so, alt/weak_undef_lib_nonpic.so): New targets.
12840 * testsuite/Makefile.in: Rebuild.
12841 * testsuite/weak_undef.h: New file.
12842 * testsuite/weak_undef_file1.cc: Add extra test cases.
12843 * testsuite/weak_undef_file2.cc: Likewise.
12844 * testsuite/weak_undef_test.cc: Likewise.
12845
7c414435
DM
128462008-04-16 David S. Miller <davem@davemloft.net>
12847
32b769e1
DM
12848 * sparc.cc (Target_sparc::Scan): Change from struct to class.
12849 Add issued_non_pic_error_ field. Declare check_non_pic.
12850 (Target_sparc::Scan::check_non_pic): New function.
12851 (Target_sparc::Scan::local): Call check_non_pic as appropriate.
12852 (Target_sparc::Scan::global): Likewise.
12853
11936fb1
DM
12854 * configure.ac (FN_PTRS_IN_SO_WITHOUT_PIC): Add sparc64.
12855 * configure: Rebuild.
12856
7c414435
DM
12857 * options.h (DEFINE_enable): New macro.
12858 (new_dtags): New enable option.
12859 (initfirst, interpose, loadfltr, nodefaultlib,
12860 nodelete, nodlopen, nodump): New -z options.
12861 * layout.cc (Layout:finish_dynamic_section): If new
12862 dtags enabled, emit DT_RUNPATH. Also, emit a
12863 DT_FLAGS_1 containing any specified -z flags.
12864
85c7bf8b
ILT
128652008-04-16 Ian Lance Taylor <iant@google.com>
12866
12c0daef
ILT
12867 * copy-relocs.cc: New file.
12868 * copy-relocs.h: New file.
12869 * reloc.cc: Remove Copy_relocs code.
12870 * reloc.h: Likewise.
12871 * reloc-types.h (struct Reloc_types) [both versions]: Add
12872 get_reloc_addend_noerror.
12873 * output.h (class Output_data_reloc<elfcpp::SHT_REL>): Add
12874 variants of add_global which take an addend which must be zero.
12875 * i386.cc: Include "copy-relocs.h".
12876 (class Target_i386): Change type of copy_relocs_ to variable,
12877 update initializer.
12878 (Target_i386::copy_reloc): Rewrite to pass to Copy_relocs class.
12879 Change all callers.
12880 (Target_i386::do_finalize_sections): Change handling of
12881 copy_relocs_.
12882 * sparc.cc: Include "copy-relocs.h".
12883 (class Target_sparc): Change type of copy_relocs_ to variable,
12884 update initializer.
12885 (Target_sparc::copy_reloc): Rewrite to pass to Copy_relocs class.
12886 Change all callers.
12887 (Target_sparc::do_finalize_sections): Change handling of
12888 copy_relocs_.
12889 * x86_64.cc: Include "copy-relocs.h".
12890 (class Target_x86_64): Change type of copy_relocs_ to variable,
12891 update initializer.
12892 (Target_x86_64::copy_reloc): Rewrite to pass to Copy_relocs
12893 class. Change all callers.
12894 (Target_x86_64::do_finalize_sections): Change handling of
12895 copy_relocs_.
12896 * Makefile.am (CCFILES): Add copy-relocs.cc.
12897 (HFILES): Add copy-relocs.h.
12898
4f4995b6
ILT
12899 * Makefile.in, aclocal.m4, testsuite/Makefile.in: Rebuild.
12900
85c7bf8b
ILT
12901 * testsuite/script_test_4.sh: Permit leading zeroes.
12902
4f2a9edd
ILT
129032008-04-15 Ian Lance Taylor <iant@google.com>
12904
e6188289
ILT
12905 * script-sections.cc (Script_sections::create_segments): Use
12906 header_size_adjustment even when there is enough room for the
12907 headers.
12908 * testsuite/script_test_4.sh: New file.
12909 * testsuite/script_test_4.t: New file.
12910 * testsuite/Makefile.am (check_SCRIPTS): Add script_test_4.sh.
12911 (check_DATA): Add script_test_4.stdout.
12912 (MOSTLYCLEANFILES): Likewise.
12913 (script_test_4): New target.
12914 (script_test_4.stdout): New target.
12915 * testsuite/Makefile.in: Rebuild.
12916
4f2a9edd
ILT
12917 * sparc.cc: Add definitions for Output_data_plt_sparc class
12918 constants.
12919
f5314dd5
DM
129202008-04-14 David S. Miller <davem@davemloft.net>
12921
12922 * sparc.cc: New file.
12923 * Makefile.am (TARGETSOURCES): Add sparc.cc
12924 (ALL_TARGETOBJS): Add sparc.$(OBJEXT)
12925 * configure.tgt: Document targ_extra_size and
12926 targ_extra_big_endian. Add entries for sparc-* and
12927 sparc64-*.
12928 * configure.ac: Handle targ_extra_size and
12929 targ_extra_big_endian.
12930 * Makefile.in: Rebuild.
12931 * configure: Likewise.
12932 * po/POTFILES.in: Likewise.
12933 * po/gold.pot: Likewise.
12934
154e0e9a
ILT
129352008-04-14 Ian Lance Taylor <iant@google.com>
12936
12937 * layout.cc (Layout::Layout): Initialize sections_are_attached_.
12938 (Layout::get_output_section): Ignore SHF_WRITE and SHF_EXECINSTR
12939 in the name/type/flags to section mapping. Don't call
12940 allocate_output_section.
12941 (Layout::choose_output_section): Change parameter from adjust_name
12942 to is_input_section. Don't permit input sections after sections
12943 are attached to segments. Don't call allocate_output_section.
12944 (Layout::layout_eh_frame): Call update_flags_for_input_section,
12945 not write_enable_output_section.
12946 (Layout::make_output_section): Don't push to
12947 unattached_section_list_ nor call attach_to_segment. Call
12948 attach_section_to_segment if sections are attached.
12949 (Layout::attach_sections_to_segments): New function.
12950 (Layout::attach_section_to_segment): New function.
12951 (Layout::attach_allocated_section_to_segment): Rename from
12952 attach_to_segment. Remove flags parameter.
12953 (Layout::allocate_output_section): Remove function.
12954 (Layout::write_enable_output_section): Remove function.
12955 * layout.h (class Layout): Update for above changes. Add new
12956 field sections_are_attached_.
12957 * output.h (Output_section::update_flags_for_input_section): New
12958 function.
12959 * output.cc (Output_section::add_input_section): Call
12960 update_flags_for_input_section.
12961 * gold.cc (queue_middle_tasks): Call attach_sections_to_segments.
12962
009a67a2
CC
129632008-04-11 Cary Coutant <ccoutant@google.com>
12964
12965 * i386.cc (Target_i386::got_mod_index_entry): Restore code previously
12966 thought unnecessary.
12967 * x86_64.cc (Target_x86_64::got_mod_index_entry): Likewise.
12968
759b1a24
ILT
129692008-04-11 Ian Lance Taylor <iant@google.com>
12970
12971 * output.h (class Output_section_data): Remove inline definition
12972 of set_addralign.
12973 * output.cc (Output_section_data::set_addralign): New function.
12974
c2b45e22
CC
129752008-04-11 Cary Coutant <ccoutant@google.com>
12976
12977 Add support for TLS descriptors for i386 and x86_64.
12978 * i386.cc (Target_i386::Relocate::tls_desc_gd_to_ie): New function.
12979 (Target_i386::Relocate::tls_desc_gd_to_le): New function.
12980 (Target_i386::Got_type): Add GOT_TYPE_TLS_NOFFSET and
12981 GOT_TYPE_TLS_DESC.
12982 (Target_i386::got_mod_index_entry): Remove unnecessary code.
12983 (Target_i386::Scan::local): Implement R_386_TLS_GOTDESC and
12984 R_386_TLS_DESC_CALL relocations. Fix problem with initial-exec
12985 relocations.
12986 (Target_i386::Scan::global): Fix problem with GD-to-IE relaxation.
12987 Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations;
12988 Fix problem with initial-exec relocations.
12989 (Target_i386::Relocate::relocate_tls): Likewise.
12990 (Target_i386::Relocate::tls_gd_to_ie): Fix problem with GD-to-IE
12991 relaxation.
12992 * output.cc (Output_data_dynamic::Dynamic_entry::write): Add
12993 support for section-plus-offset dynamic table entries.
12994 * output.h (Output_data_dynamic::add_section_plus_offset): New function.
12995 (Output_data_dynamic::Dynamic_entry): Add support for
12996 section-plus-offset dynamic table entries.
12997 (Output_data_dynamic::Classification): Likewise.
12998 (Output_data_dynamic::classification_): Renamed offset_.
12999 * x86_64.cc (Target_x86_64::Relocate::tls_desc_gd_to_ie): New function.
13000 (Target_x86_64::Relocate::tls_desc_gd_to_le): New function.
13001 (Target_x86_64::make_plt_section): New function.
13002 (Target_x86_64::reserve_tlsdesc_entries): New function.
13003 (Output_data_plt_x86_64::Output_data_plt_x86_64): Add new parameter.
13004 (Output_data_plt_x86_64::reserve_tlsdesc_entry): New function.
13005 (Output_data_plt_x86_64::has_tlsdesc_entry): New function.
13006 (Output_data_plt_x86_64::get_tlsdesc_got_offset): New function.
13007 (Output_data_plt_x86_64::get_tlsdesc_plt_offset): New function.
13008 (Output_data_plt_x86_64::tlsdesc_plt_entry): New field.
13009 (Output_data_plt_x86_64::set_final_data_size): Move out of line;
13010 add extra PLT entry for TLS descriptors.
13011 (Output_data_plt_x86_64::got_): New field.
13012 (Output_data_plt_x86_64::tlsdesc_got_offset_): New field.
13013 (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize new
13014 fields.
13015 (Output_data_plt_x86_64::do_write): Write extra PLT entry for TLS
13016 descriptors.
13017 (Target_x86_64::make_plt_entry): Factor out make_plt_section.
13018 (Target_x86_64::got_mod_index_entry): Remove unnecessary code.
13019 (Target_x86_64::Scan::local): Implement R_386_TLS_GOTDESC and
13020 R_386_TLS_DESC_CALL relocations.
13021 (Target_x86_64::Scan::global): Likewise.
13022 (Target_x86_64::do_finalize_sections): Add dynamic table entries
13023 for TLS descriptors.
13024 (Relocate::relocate_tls): Fix problem with GD-to-IE relaxation.
13025 Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations.
13026 (Target_x86_64::Relocate::tls_gd_to_ie): Fix problem with
13027 GD-to-IE relaxation.
13028 * configure.ac: Export new conditional variables TLS_GNU2_DIALECT
13029 and TLS_DESCRIPTORS.
13030 * Makefile.in: Rebuild.
13031 * configure: Rebuild.
13032 * testsuite/Makefile.am (tls_shared_gd_to_ie_test): New target.
13033 (tls_test_shared2.so): New target.
13034 (tls_shared_gd_to_ie_test_SOURCES): New variable.
13035 (tls_shared_gd_to_ie_test_DEPENDENCIES): New variable.
13036 (tls_shared_gd_to_ie_test_LDFLAGS): New variable.
13037 (tls_shared_gd_to_ie_test_LDADD): New variable.
13038 (tls_shared_gnu2_gd_to_ie_test): New target.
13039 (tls_test_gnu2.o, tls_test_file2_gnu2.o, tls_test_gnu2_shared2.so):
13040 New targets.
13041 (tls_shared_gnu2_gd_to_ie_test_SOURCES): New variable.
13042 (ls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): New variable.
13043 (tls_shared_gnu2_gd_to_ie_test_LDFLAGS): New variable.
13044 (tls_shared_gnu2_gd_to_ie_test_LDADD): New variable.
13045 (tls_shared_gnu2_test): New target.
13046 (tls_test_gnu2_shared.so): New target.
13047 (tls_shared_gnu2_test_SOURCES): New variable.
13048 (tls_shared_gnu2_test_DEPENDENCIES): New variable.
13049 (tls_shared_gnu2_test_LDFLAGS): New variable.
13050 (tls_shared_gnu2_test_LDADD): New variable.
13051 * testsuite/Makefile.in: Rebuild.
13052 * testsuite/Makefile.
13053
83bfb6b7
ILT
130542008-04-11 Ian Lance Taylor <iant@google.com>
13055
13056 * testsuite/Makefile.am (justsyms_2r.o): Add dependency on
13057 justsyms.t.
13058 * testsuite/Makefile.in: Rebuild.
13059
13060 * testsuite/script_test_2a.cc (script_test_string_a): Make 8 bytes
13061 long.
13062 * testsuite/script_test_2.cc (main): Adjust test.
13063
706e1f5e
ILT
130642008-04-11 David S. Miller <davem@davemloft.net>
13065 Ian Lance Taylor <iant@google.com>
13066
13067 * options.h (General_options): Add entries for '-Y' and
13068 '-relax'.
13069 * options.cc (General_options:finalize): If -Y was used, add those
13070 entries to the library path instead of the default "/lib" and
13071 "/usr/lib".
13072
7c98e6bb
DM
130732008-04-11 David S. Miller <davem@davemloft.net>
13074
13075 * testsuite/justsyms.t: Start at 0x100.
13076 * testsuite/justsyms_1.cc: Adjust justsyms_string assertion.
83bfb6b7
ILT
13077 * testsuite/script_test_2b.cc (script_test_string_b): Make 8 bytes
13078 long.
13079 * testsuite/script_test_2.cc: Adjust string and section length
13080 checks.
7c98e6bb 13081
99a37bfd
ILT
130822008-04-09 Ian Lance Taylor <iant@google.com>
13083
2cefc357
ILT
13084 PR gold/5996
13085 * script-sections.cc (Sections_element::allocate_to_segment): Add
13086 orphan parameter.
13087 (Output_section_definition::allocate_to_segment): Likewise.
13088 (Orphan_output_section::allocate_to_segment): Likewise.
13089 (Script_sections::attach_sections_using_phdrs_clause): Don't
13090 propagate non-PT_LOAD segments to orphan sections.
13091 * testsuite/Makefile.am (script_test_3.stdout): Generate using
13092 readelf rather than objdump.
13093 * testsuite/script_test_3.sh: Adjust accordingly. Test that
13094 .interp section and PT_INTERP segment are the same size.
13095 * testsuite/Makefile.in: Rebuild.
13096
99a37bfd
ILT
13097 * symtab.cc (Symbol_table::add_from_dynobj): Only look for weak
13098 aliases for symbols defined in the same object.
13099 * testsuite/Makefile.am (check_PROGRAMS): Add weak_alias_test.
13100 (weak_alias_test_SOURCES): New variable.
13101 (weak_alias_test_DEPENDENCIES): New variable.
13102 (weak_alias_test_LDFLAGS): New variable.
13103 (weak_alias_test_LDADD): New variable.
13104 (weak_alias_test_1_pic.o, weak_alias_test_1.so): New targets.
13105 (weak_alias_test_2_pic.o, weak_alias_test_2.so): New targets.
13106 (weak_alias_test_3.o): New target.
13107 (weak_alias_test_4_pic.o, weak_alias_test_4.so): New targets.
13108 * testsuite/weak_alias_test_main.cc: New file.
13109 * testsuite/weak_alias_test_1.cc: New file.
13110 * testsuite/weak_alias_test_2.cc: New file.
13111 * testsuite/weak_alias_test_3.cc: New file.
13112
780e49c5
ILT
131132008-04-08 Ian Lance Taylor <iant@google.com>
13114
cdb0b8f5
ILT
13115 * options.h (class General_options): Add --noinhibit-exec option.
13116 * main.cc (main): Check --noinhibit-exec.
13117
0864d551
ILT
13118 * options.h (class General_options): Define --wrap as a special
13119 option. Add wrap_symbols_ field.
13120 (General_options::any_wrap_symbols): New function.
13121 (General_options::is_wrap_symbol): New function.
13122 * options.cc (General_options::parse_wrap): New function.
13123 (General_options::General_options): Initialize wrap_symbols_.
13124 * symtab.cc (Symbol_table::wrap_symbol): New function.
13125 (Symbol_table::add_from_object): Handle --wrap.
13126 * symtab.h (class Symbol_table): Declare wrap_symbol.
13127 * target.h (Target::wrap_char): New function.
13128 (Target::Target_info): Add wrap_char field.
13129 * i386.cc (Target_i386::i386_info): Initialize wrap_char.
13130 * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
13131 * testsuite/testfile.cc (Target_test::test_target_info):
13132 Likewise.
13133
789aa6de
ILT
13134 * errors.cc (Errors::undefined_symbol): Mention symbol version if
13135 there is one.
13136
2c38906f
ILT
13137 * layout.h (class Layout): Add added_eh_frame_data_ field.
13138 * layout.cc (Layout::Layout): Initialize new field.
13139 (Layout::layout_eh_frame): Don't add eh_frame_data_ to .eh_frame
13140 output section until we find a section we merged successfully.
13141 * object.cc (Sized_relobj::check_eh_frame_flags): Don't require
13142 that the size be non-zero.
13143
780e49c5
ILT
13144 * merge.cc (Object_merge_map::get_output_offset): Remove inline
13145 qualifier.
13146
7fcd0256
ILT
131472008-04-08 Craig Silverstein <csilvers@google.com>
13148
13149 * configure.ac: Export new conditional variable HAVE_ZLIB.
13150 * testsuite/Makefile.am (flagstest_o_specialfile): Condition
13151 on HAVE_ZLIB.
13152 (flagstest_o_specialfile_and_compress_debug_sections): Likewise.
13153 * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
13154
6835af53
ILT
131552008-04-07 Ian Lance Taylor <iant@google.com>
13156
e24f324c
ILT
13157 * version.cc (version_string): Set to "1.5".
13158
a036edd8
ILT
13159 * x86_64.cc (Target_x86_64::Scan): Change from struct to class.
13160 Add issued_non_pic_error_ field. Declare check_non_pic.
13161 (Target_x86_64::Scan::check_non_pic): New function.
13162 (Target_x86_64::Scan::local): Call check_non_pic as appropriate.
13163 (Target_x86_64::Scan::global): Likewise.
13164
624f8810
ILT
13165 * output.cc (Output_reloc<SHT_REL>::local_section_offset): Add
13166 addend parameter. Change caller. Handle merge sections.
13167 (Output_reloc<SHT_REL>::symbol_value): Change parameter type from
13168 Address to Addend. Don't add in the result of
13169 local_section_offset, pass down the addend and use the returned
13170 value.
13171 * output.h (class Output_reloc<SHT_REL>): Add Addend typedef.
13172 Update declarations of local_section_offset and symbol_value.
13173 * testsuite/two_file_test_1.cc (t18): New function.
13174 * testsuite/two_file_test_2.cc (f18): New function.
13175 * testsuite/two_file_test_main.cc (main): Call t18.
13176 * testsuite/two_file_test.h (t18, f18): Declare.
13177
6835af53
ILT
13178 * configure.ac: Don't test for objdump, c++filt, or readelf.
13179 * testsuite/Makefile.am: Remove READELF and OBJDUMP_AND_CPPFILT
13180 conditionals.
13181 (TEST_READELF): New variable.
13182 (TEST_OBJDUMP, TEST_CXXFILT, TEST_STRIP): New variables.
13183 (check_PROGRAMS): Add two_file_strip_test.
13184 (two_file_strip_test): New target.
13185 (check_PROGRAMS): Add two_file_same_shared_strip_test.
13186 (two_file_same_shared_strip_test_SOURCES): New variable.
13187 (two_file_same_shared_strip_test_DEPENDENCIES): New variable.
13188 (two_file_same_shared_strip_test_LDFLAGS): New variable.
13189 (two_file_same_shared_strip_test_LDADD): New variable.
13190 (two_file_shared_strip.so): New target.
13191 (ver_test_2.syms, ver_test_4.syms): Use TEST_READELF.
13192 (ver_test_5.syms, ver_test_7.syms): Likewise.
13193 (ver_matching_test.stdout): Use TEST_OBJDUMP and TEST_CXXFILT.
13194 (strip_test_3.stdout): Use TEST_OBJDUMP.
13195 * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
13196
86925eef
CC
131972008-04-04 Cary Coutant <ccoutant@google.com>
13198
13199 * symtab.h (Symbol::is_weak_undefined): New function.
13200 (Symbol::is_strong_undefined): New function.
13201 (Symbol::is_absolute): New function.
13202 (Symbol::needs_plt_entry): Exclude weak undefined symbols.
13203 (Symbol::needs_dynamic_reloc): Exclude weak undefined and
13204 absolute symbols.
13205 * testsuite/Makefile.am (check_PROGRAMS): Add weak_undef_test.
13206 (weak_undef_test): New target.
13207 * testsuite/Makefile.in: Rebuild.
13208 * testsuite/weak_undef_file1.cc: New file.
13209 * testsuite/weak_undef_file2.cc: New file.
13210 * testsuite/weak_undef_test.cc: New file.
13211
126f3ece
ILT
132122008-04-03 Craig Silverstein <csilvers@google.com>
13213
13214 * compressed_output.h (class Output_compressed_section): Use
13215 unsigned buffer.
13216 * compressed_output.cc (zlib_compress): Use unsigned buffers,
13217 add zlib header.
13218 (zlib_compressed_suffix): Removed.
13219 (Output_compressed_section::set_final_data_size): Use unsigned
13220 buffers.
13221 * testsuite/Makefile.am (flagstest_compress_debug_sections):
13222 Fix linker invocation.
13223 (flagstest_o_specialfile_and_compress_debug_sections):
13224 Likewise.
13225 * testsuite/Makefile.in: Regenerated.
13226
deae2a14
DM
132272008-04-02 David S. Miller <davem@davemloft.net>
13228
13229 * dwarf_reader.cc (Sized_dwarf_line_info::read_header_prolog,
13230 Sized_dwarf_line_info::process_one_opcode): Use Swap_unaligned.
13231
70752818
ILT
132322008-04-02 Craig Silverstein <csilvers@google.com>
13233
13234 * TODO: New file.
13235
39d0cb0e
ILT
132362008-04-02 Ian Lance Taylor <iant@google.com>
13237
13238 * fileread.cc (File_read::find_view): Add byteshift and vshifted
13239 parameters. Update for new key type to views_. Change all
13240 callers.
13241 (File_read::read): Adjust for byteshift in returned view.
13242 (File_read::add_view): New function, broken out of
13243 find_and_make_view.
13244 (File_read::make_view): New function, broken out of
13245 find_and_make_view.
13246 (File_read::find_or_make_view): Add offset and aligned
13247 parameters. Rewrite accordingly. Change all callers.
13248 (File_read::get_view): Add offset and aligned parameters. Adjust
13249 for byteshift in return value.
13250 (File_read::get_lasting_view): Likewise.
13251 * fileread.h (class File_read): Update declarations.
13252 (class File_read::View): Add byteshift_ field. Add byteshift to
13253 constructor. Add byteshift method.
13254 * archive.h (Archive::clear_uncached_views): New function.
13255 (Archive::get_view): Add aligned parameter. Change all callers.
13256 * object.h (Object::get_view): Add aligned parameter. Change all
13257 callers.
13258 (Object::get_lasting_view): Likewise.
13259
13260 * fileread.cc (File_read::release): Don't call clear_views if
13261 there are multiple objects.
13262 * fileread.h (File_read::clear_uncached_views): New function.
13263 * archive.cc (Add_archive_symbols::run): Call clear_uncached_views
13264 on the archive.
13265
a1207466
CC
132662008-03-31 Cary Coutant <ccoutant@google.com>
13267
13268 Add thin archive support.
13269 * archive.cc (Archive::armagt): New const.
13270 (Archive::setup): Remove task parameter and calls to unlock.
13271 (Archive::unlock_nested_archives): New function.
13272 (Archive::read_header): Add nested_off parameter. Change
13273 all callers.
13274 (Archive::interpret_header): Likewise.
13275 (Archive::include_all_members): Change to handle thin
13276 archives.
13277 (Archive::include_member): Likewise.
13278 * archive.h (Archive::Archive): Add new parameters and
13279 initializers.
13280 (Archive::armagt): New const.
13281 (Archive::setup): Remove task parameter.
13282 (Archive::unlock_nested_archives): New function.
13283 (Archive::read_header): Add nested_off parameter.
13284 (Archive::interpret_header): Likewise.
13285 (Archive::Nested_archive_table): New typedef.
13286 (Archive::is_thin_archive_): New field.
13287 (Archive::nested_archives_): New field.
13288 (Archive::options_): New field.
13289 (Archive::dirpath_): New field.
13290 (Archive::task_): New field.
13291 * readsyms.cc (Read_symbols::do_read_symbols): Add check
13292 for thin archives. Pass additional parameters to
13293 Archive::Archive. Unlock the archive file after calling
13294 Archive::setup.
cd536b21 13295
479f6503
ILT
132962008-03-29 Ian Lance Taylor <iant@google.com>
13297
686c8caf
ILT
13298 * symtab.cc (Symbol_table::do_define_as_constant): Don't force a
13299 version symbol to be local.
13300 * testsuite/ver_test_4.sh: New file.
13301 * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_4.sh.
13302 (check_DATA): Add ver_test_4.syms.
13303 (ver_test_4.syms): New target.
13304 * testsuite/Makefile.in: Rebuild.
13305
ab794b6b
ILT
13306 * output.cc
13307 (Output_section::Input_section_sort_entry::has_priority): New
13308 function.
13309 (Output_section::Input_section_sort_entry::match_file_name): New
13310 function.
13311 (Output_section::Input_section_sort_entry::match_section_name):
13312 Remove.
13313 (Output_section::Input_section_sort_entry::match_section_name_prefix):
13314 Remove.
13315 (Output_section::Input_section_sort_entry::match_section_file):
13316 Remove.
13317 (Output_section::Input_section_sort_compare::operator()): Rewrite
13318 using new Input_section_sort_entry functions. Sort crtbegin and
13319 crtend first. Sort sections with no priority before sections with
13320 a priority.
13321 * testsuite/initpri1.c (d3): Check j != 4.
13322 (cd5): New constructor/destructor function.
13323 (main): Check j != 2.
13324
479f6503
ILT
13325 * symtab.cc (Symbol_table::add_from_object): If we don't use the
13326 new symbol when resolving, don't call set_is_default.
13327 * testsuite/ver_test_7.cc: New file.
13328 * testsuite/ver_test_7.sh: New file.
13329 * testsuite/Makefile.am (ver_test_7.so): New target.
13330 (ver_test_7.o): New target.
13331 (check_SCRIPTS): Add ver_test_7.sh.
13332 (check_DATA): Add ver_test_7.syms.
13333 (ver_test_7.syms): New target.
13334
2fd32231
ILT
133352008-03-28 Ian Lance Taylor <iant@google.com>
13336
13337 * layout.cc (Layout::layout): If we see an input section with a
13338 name that needs sorting, set the must_sort flag for the output
13339 section.
13340 (Layout::make_output_section): If the name of the output section
13341 indicates that it might require sorting, set the may_sort flag.
13342 * output.h (Output_section::may_sort_attached_input_sections): New
13343 function.
13344 (Output_section::set_may_sort_attached_input_sections): New
13345 function.
13346 (Output_section::must_sort_attached_input_sections): New
13347 function.
13348 (Output_section::set_must_sort_attached_input_sections): New
13349 function.
13350 (class Output_section): Declare Input_section_sort_entry. Define
13351 Input_section_sort_compare. Declare
13352 sort_attached_input_sections. Add new fields:
13353 may_sort_attached_input_sections_,
13354 must_sort_attached_input_sections_,
13355 attached_input_sections_are_sorted_.
13356 * output.cc (Output_section::Output_section): Initialize new
13357 fields.
13358 (Output_section::add_input_section): Add an entry to
13359 input_sections_ if may_sort or must_sort are true.
13360 (Output_section::set_final_data_size): Call
13361 sort_attached_input_sections if necessary.
13362 (Output_section::Input_section_sort_entry): Define new class.
13363 (Output_section::Input_section_sort_compare::operator()): New
13364 function.
13365 (Output_section::sort_attached_input_sections): New function.
13366 * configure.ac: Check whether the compiler supports constructor
13367 priorities. Define a CONSTRUCTOR_PRIORITY automake conditional.
13368 * testsuite/initpri1.c: New file.
13369 * testsuite/Makefile.am (check_PROGRAMS): Add initpri1 if
13370 CONSTRUCTOR_PRIORITY.
13371 (initpri1_SOURCES, initpri1_DEPENDENCIES): New variables.
13372 (initpri1_LDFLAGS): New variable.
13373 * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
13374
18e6b24e
ILT
133752008-03-27 Ian Lance Taylor <iant@google.com>
13376
49bdd526
ILT
13377 * common.cc (Sort_commons::operator): Correct sorting algorithm.
13378 * testsuite/common_test_1.c: New file.
13379 * testsuite/Makefile.am (check_PROGRAMS): Add common_test_1.
13380 (common_test_1_SOURCES): New variable.
13381 (common_test_1_DEPENDENCIES): New variable.
13382 (common_test_1_LDFLAGS): New variable.
13383
18e6b24e
ILT
13384 * symtab.cc (Symbol_table::add_from_object): Handle saw_undefined_
13385 and commons_ correctly when NAME/VERSION does not override
13386 NAME/NULL.
13387 * testsuite/ver_test_6.c: New file.
13388 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_6
13389 (ver_test_6_SOURCES, ver_test_6_DEPENDENCIES): New variables.
13390 (ver_test_6_LDFLAGS, ver_test_6_LDADD): New variables.
13391
04bf7072
ILT
133922008-03-26 Ian Lance Taylor <iant@google.com>
13393
5871526f
ILT
13394 * symtab.cc (Symbol_table::add_from_relobj): Don't set the version
13395 of an undefined symbol from a version script.
13396 * testsuite/Makefile.am (ver_test_5.so): New target.
13397 (ver_test_5.o): New target.
13398 (check_SCRIPTS): Add ver_test_5.sh.
13399 (check_DATA): Add ver_test_5.syms.
13400 (ver_test_5.syms): New target.
13401 * testsuite/ver_test_5.cc: New file.
13402 * testsuite/ver_test_5.script: New file.
13403 * testsuite/ver_test_5.sh: New file.
13404 * Makefile.in, testsuite/Makefile.in: Rebuild.
13405
04bf7072
ILT
13406 PR gold/5986
13407 Fix problems building gold with gcc 4.3.0.
13408 * gold.h (TEMPLATE_ATTRIBUTE_PRINTF_4): Define.
13409 (gold_error_at_location, gold_warning_at_location): Use it.
13410 * configure.ac: Check whether we can compile and use a template
13411 function with a printf attribute.
13412 * x86_64.cc (Target_x86_64::do_code_fill): Swap out a 32-bit value
13413 when jumping over bytes.
13414 * object.cc: Instantiate Object::read_section_data.
13415 * debug.h: Include <cstring>
13416 * dwarf_reader.cc: Include <algorithm>
13417 * main.cc: Include <cstring>.
13418 * options.cc: Include <cstring>.
13419 * output.cc: Include <cstring>.
13420 * script.cc: Include <cstring>.
13421 * script.h: Include <string>.
13422 * symtab.cc: Include <cstring> and <algorithm>.
13423 * target-select.cc: Include <cstring>.
13424 * version.cc: Include <string>.
13425 * testsuite/testmain.cc: Include <cstdlib>.
13426 * configure, config.in: Rebuild.
13427
874c5b28
ILT
134282008-03-25 Ian Lance Taylor <iant@google.com>
13429
819d6c3a
ILT
13430 * options.cc: Include "../bfd/bfdver.h".
13431 (options::help): Print bug reporting address.
13432
f4b2c6f5
ILT
13433 * version.cc (print_version): Adjust output for current value of
13434 BFD_VERSION_STRING.
13435
13436 * NEWS: New file.
13437
e96caa79
ILT
13438 * options.cc (options::help): Print list of supported targets.
13439 * target-select.h: Include <vector>.
13440 (class Target_selector): Make machine_, size_, and is_big_endian_
13441 fields const. Add bfd_name_ and instantiated_target_ fields.
13442 (Target_selector::Target_selector): Add bfd_name parameter.
13443 (Target_selector::recognize): Make non-virtual, call
13444 do_recognize.
13445 (Target_selector::recognize_by_name): Make non-virtual, call
13446 do_recognize_by_name.
13447 (Target_selector::supported_names): New function.
13448 (Target_selector::bfd_name): New function.
13449 (Target_selector::do_instantiate_target): New pure virtual
13450 function.
13451 (Target_selector::do_recognize): New virtual function.
13452 (Target_selector::do_recognize_by_name): New virtual function.
13453 (Target_selector::instantiate_target): New private function.
13454 (supported_target_names): Declare.
13455 * target-select.cc (Target_selector::Target_selector): Update for
13456 new parameter and fields.
13457 (select_target_by_name): Check that the name matches before
13458 calling recognize_by_name.
13459 (supported_target_names): New function.
13460 * i386.cc (class Target_selector_i386): Update Target_selector
13461 constructor call. Remove recognize and recognize_by_name. Add
13462 do_instantiate_target.
13463 * x86_64.cc (class Target_selector_x86_64): Likewise.
13464 * testsuite/testfile.cc (class Target_selector_test): Update for
13465 changes to Target_selector.
13466
874c5b28
ILT
13467 * README: Rewrite, with some notes on unsupported features.
13468
0a65a3a7
CC
134692008-03-24 Cary Coutant <ccoutant@google.com>
13470
13471 * i386.cc (Target_i386::Got_type): New enum declaration.
13472 (Target_i386::Scan::local): Updated callers of Output_data_got
13473 member functions.
13474 (Target_i386::Scan::global): Likewise.
13475 (Target_i386::Relocate::relocate): Likewise.
13476 (Target_i386::Relocate::relocate_tls): Likewise.
13477 * object.h (Got_offset_list): New class.
13478 (Sized_relobj::local_has_got_offset): Added got_type parameter.
13479 (Sized_relobj::local_got_offset): Likewise.
13480 (Sized_relobj::set_local_got_offset): Likewise.
13481 (Sized_relobj::local_has_tls_got_offset): Removed.
13482 (Sized_relobj::local_tls_got_offset): Removed.
13483 (Sized_relobj::set_local_tls_got_offset): Removed.
13484 (Sized_relobj::Local_got_offsets): Changed to store a list of offsets.
13485 * output.cc (Output_data_got::add_global): Added got_type parameter.
13486 (Output_data_got::add_global_with_rel): Likewise.
13487 (Output_data_got::add_global_with_rela): Likewise.
13488 (Output_data_got::add_global_pair_with_rel): New function.
13489 (Output_data_got::add_global_pair_with_rela): New function.
13490 (Output_data_got::add_local): Added got_type parameter.
13491 (Output_data_got::add_local_with_rel): Likewise.
13492 (Output_data_got::add_local_with_rela): Likewise.
13493 (Output_data_got::add_local_pair_with_rel): New function.
13494 (Output_data_got::add_local_pair_with_rela): New function.
13495 (Output_data_got::add_global_tls): Removed.
13496 (Output_data_got::add_global_tls_with_rel): Removed.
13497 (Output_data_got::add_global_tls_with_rela): Removed.
13498 (Output_data_got::add_local_tls): Removed.
13499 (Output_data_got::add_local_tls_with_rel): Removed.
13500 (Output_data_got::add_local_tls_with_rela): Removed.
13501 * output.h (Output_data_got::add_global): Added got_type parameter.
13502 (Output_data_got::add_global_with_rel): Likewise.
13503 (Output_data_got::add_global_with_rela): Likewise.
13504 (Output_data_got::add_global_pair_with_rel): New function.
13505 (Output_data_got::add_global_pair_with_rela): New function.
13506 (Output_data_got::add_local): Added got_type parameter.
13507 (Output_data_got::add_local_with_rel): Likewise.
13508 (Output_data_got::add_local_with_rela): Likewise.
13509 (Output_data_got::add_local_pair_with_rel): New function.
13510 (Output_data_got::add_local_pair_with_rela): New function.
13511 (Output_data_got::add_global_tls): Removed.
13512 (Output_data_got::add_global_tls_with_rel): Removed.
13513 (Output_data_got::add_global_tls_with_rela): Removed.
13514 (Output_data_got::add_local_tls): Removed.
13515 (Output_data_got::add_local_tls_with_rel): Removed.
13516 (Output_data_got::add_local_tls_with_rela): Removed.
13517 * resolve.cc (Symbol::override_base_with_special): Removed
13518 reference to has_got_offset_ field.
13519 * symtab.cc (Symbol::init_fields): Replaced initialization
13520 of got_offset_ with got_offsets_. Removed initialization
13521 of has_got_offset_
53fcba31 13522 * symtab.h (Symbol::has_got_offset): Aded got_type parameter.
0a65a3a7
CC
13523 (Symbol::got_offset): Likewise.
13524 (Symbol::set_got_offset): Likewise.
13525 (Symbol::has_tls_got_offset): Removed.
13526 (Symbol::tls_got_offset): Removed.
13527 (Symbol::set_tls_got_offset): Removed.
13528 (Symbol::got_offset_): Removed.
13529 (Symbol::tls_mod_got_offset_): Removed.
13530 (Symbol::tls_pair_got_offset_): Removed.
13531 (Symbol::got_offsets_): New field.
13532 (Symbol::has_got_offset): Removed.
13533 (Symbol::has_tls_mod_got_offset): Removed.
13534 (Symbol::has_tls_pair_got_offset): Removed.
13535 * x86_64.cc (Target_x86_64::Got_type): New enum declaration.
13536 (Target_x86_64::Scan::local): Updated callers of Output_data_got
13537 member functions.
13538 (Target_x86_64::Scan::global): Likewise.
13539 (Target_x86_64::Relocate::relocate): Likewise.
13540 (Target_x86_64::Relocate::relocate_tls): Likewise.
13541
bd52eafb
BE
135422008-03-25 Ben Elliston <bje@au.ibm.com>
13543
13544 * yyscript.y: Fix spelling error in comment.
13545
8b105e34
ILT
135462008-03-24 Ian Lance Taylor <iant@google.com>
13547
8ed814a9
ILT
13548 * options.h (class General_options): Define build_id option.
13549 * layout.h (class Layout): Declare write_build_id, create_note,
13550 create_build_id. Add build_id_note_ member.
13551 * layout.cc: Include <cerrno>, <fcntl.h>, <unistd.h>,
13552 "libiberty.h", "md5.h", "sha1.h".
13553 (Layout::Layout): Initialize eh_frame_data_,
13554 eh_frame_hdr_section_, and build_id_note_.
13555 (Layout::finalize): Call create_build_id.
13556 (Layout::create_note): New function, broken out of
13557 Layout::create_gold_note.
13558 (Layout::create_gold_note): Call create_note.
13559 (Layout::create_build_id): New function.
13560 (Layout::write_build_id): New function.
13561 (Close_task_runner::run): Call write_build_id.
13562
8b105e34
ILT
13563 * x86_64.cc: Correct license to GPLv3.
13564
086a1841
ILT
135652008-03-23 Ian Lance Taylor <iant@google.com>
13566
13567 * options.cc: Include "demangle.h".
13568 (parse_optional_string): New function.
13569 (parse_long_option): Handle takes_optional_argument.
13570 (parse_short_option): Update dash_z initializer. Handle
13571 takes_optional_argument.
13572 (General_options::General_options): Initialize do_demangle_.
13573 (General_options::finalize): Set do_demangle_. Handle demangling
13574 style.
13575 * options.h (parse_optional_string): Declare.
13576 (struct One_option): Add optional_arg field. Update constructor.
13577 Update call constructor calls. Add takes_optional_argument
13578 function.
13579 (DEFINE_var): Add optional_arg__ parameter. Change all callers.
13580 (DEFINE_optional_string): Define.
13581 (General_options::demangle): Change from DEFINE_bool to
13582 DEFINE_optional_string.
13583 (General_options::no_demangle): New function.
13584 (General_options::do_demangle): New function.
13585 (General_options::set_do_demangle): New function.
13586 (General_options::execstack_status_): Move definition to end of
13587 class definition.
13588 (General_options::static_): Likewise.
13589 (General_options::do_demangle_): New field.
13590 * object.cc (big_endian>::get_symbol_location_info): Call
13591 Options::do_demangle, not Options::demangle.
13592 * symtab.cc (demangle): Likewise.
13593
cbb93e63
ILT
135942008-03-22 Ian Lance Taylor <iant@google.com>
13595
13596 * gold.h: Include <cstddef> and <sys/types.h>
13597 * options.h: Include <cstring>.
13598
ec531623
ILT
135992008-03-21 Ian Lance Taylor <iant@google.com>
13600
13601 * Added source code to GNU binutils.
This page took 0.844263 seconds and 4 git commands to generate.