* sparc.cc (Target_sparc::Scan::local): Handle R_SPARC_GOTDATA_OP*
[binutils-gdb.git] / gold / ChangeLog
1 2010-02-08 David S. Miller <davem@davemloft.net>
2
3 * sparc.cc (Target_sparc::Relocate::relocate): If relocation offset is
4 unaligned for R_SPARC_16, R_SPARC_32, or R_SPARC_64, use the unaligned
5 relocation helper function.
6
7 * sparc.cc (Target_sparc::Scan::local): Handle R_SPARC_GOTDATA_OP*
8 just like R_SPARC_GOT{10,13,22}.
9 (Target_sparc::Scan::local): Likewise.
10 (Target_sparc::Relocate:relocate): Likewise.
11
12 2010-02-06 Ian Lance Taylor <iant@google.com>
13
14 * configure.ac: Rewrite targetobjs duplicate removal code to use
15 only shell constructs.
16 * configure: Rebuild.
17
18 2010-02-05 Doug Kwan <dougkwan@google.com>
19
20 PR 11247
21 * arm.cc (Arm_relobj::section_is_scannable): New method.
22 (Arm_relobj::section_needs_reloc_stub_scanning): Use it.
23 (Arm_relobj::section_needs_cortex_a8_stub_scanning): Same.
24
25 2010-02-04 Doug Kwan <dougkwan@google.com>
26
27 PR 11247
28 * arm-reloc-property.cc (cstdio): Include.
29 * configure.ac (targetobjs): Remove duplicates.
30 * configure: Regenerate.
31 * resolve.cc (Symbol_table::resolve): Explicit instantiate both
32 big and little endian version for a given address size.
33
34 2010-02-03 Doug Kwan <dougkwan@google.com>
35
36 * arm-reloc-property.cc
37 (Arm_reloc_property_table::reloc_name_in_error_message): New method
38 definition.
39 * arm-reloc-property.h
40 (Arm_reloc_property_table::get_implemented_static_reloc_property):
41 New method definition.
42 (Arm_reloc_property_table::reloc_name_in_error_message): New method
43 declaration.
44 * arm-reloc.def (THM_MOVT_ABS, THM_MOVT_PREL, THM_MOVT_BREL): Change
45 overflow to N.
46 (GOT_PREL): Change implemented to Y.
47 * arm.cc (Target_arm::reloc_uses_thumb_bit): Remove method.
48 (Target_arm::Relocate::reloc_needs_sym_origin): Remove method.
49 (Arm_relocate_functions::movw_abs_nc): Remove method.
50 (Arm_relocate_functions::movt_abs): Ditto.
51 (Arm_relocate_functions::thm_movw_abs_nc): Ditto.
52 (Arm_relocate_functions::thm_movt_abs): Ditto.
53 (Arm_relocate_functions::movw_rel_nc): Ditto.
54 (Arm_relocate_functions::movw_rel): Ditto.
55 (Arm_relocate_functions::movt_rel): Ditto.
56 (Arm_relocate_functions:thm_movw_rel_nc): Ditto.
57 (Arm_relocate_functions:thm_movw_rel): Ditto.
58 (Arm_relocate_functions:thm_movt_rel): Ditto.
59 (Arm_relocate_functions::movw, Arm_relocate_functions::movt,
60 (Arm_relocate_functions::thm_movw, Arm_relocate_functions::thm_movt):
61 New method definitions.
62 (Arm_relocation_functions::arm_grp_alu): Add assertion for group index.
63 (Arm_relocation_functions::arm_grp_ldr): Ditto.
64 (Arm_relocation_functions::arm_grp_ldrs): Ditto.
65 (Arm_relocation_functions::arm_grp_ldc): Ditto.
66 (Target_arm::Relocate::relocate): Check for non-static or
67 unimplemented relocation code and exit early. Change calls to
68 Target_arm::reloc_uses_thumb_bit and
69 Target_arm::Reloc::reloc_needs_sym_origin to use relocation property
70 instead. Refactor code to handle similar relocations to increase
71 code sharing. Remove check for unsupported relocation code in switch
72 statement.
73 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Use
74 relocation property table to find out size. Change error message to
75 print out the name of a relocation code instead of the numeric value.
76 (Target_arm::scan_reloc_for_stub): Use relocation property table
77 instead of calling Target_arm::reloc_uses_thumb_bit().
78
79 2010-02-02 Doug Kwan <dougkwan@google.com>
80
81 * arm.cc (Target_arm::relocate_section): Do view adjustment for all
82 types of relaxed input section.
83
84 2010-02-02 Doug Kwan <dougkwan@google.com>
85
86 * Makefile.am (HFILES): Add arm-reloc-property.h.
87 (DEFFILES): New.
88 (TARGETSOURCES): Add arm-reloc-property.cc
89 (ALL_TARGETOBJS): Add arm-reloc-property.$(OBJEXT)
90 (libgold_a_SOURCES): $(DEFFILES)
91 * Makefile.in: Regenerate.
92 * arm-reloc-property.cc: New file.
93 * arm-reloc-property.h: New file.
94 * arm-reloc.def: New file.
95 * arm.cc: Update comments.
96 (arm-reloc-property.h): New included header.
97 (arm_reloc_property_table): New global variable.
98 (Target_arm::do_select_as_default_target): New method definition.
99 * configure.tgt (armeb*-*-*,armbe*-*-*,arm*-*-*): Add
100 arm-reloc-property to targ_extra_obj.
101 * parameters.cc (set_parameters_target): Call
102 Target::select_as_default_target().
103 * target.h (Target::select_as_default_target): New method definition.
104 (Target::do_select_as_default_target): Same.
105
106 2010-02-01 Doug Kwan <dougkwan@google.com>
107
108 * arm.cc (Arm_exidx_fixup::Arm_exidx_fixup): Initialize
109 first_output_text_section_.
110 (Arm_exidx_fixup::first_output_text_section): New method definition.
111 (Arm_exidx_fixup::first_output_text_section_): New data member.
112 (Arm_exidx_fixup::process_exidx_section): Record the first text
113 output section seen.
114 (Arm_output_section::fix_exidx_coverage): Set correct linked section
115 and entsize in output section header.
116
117 2010-01-29 Viktor Kutuzov <vkutuzov@accesssoftek.com>
118
119 * gold/arm.cc: Added support for the ARM relocations: R_ARM_THM_PC8,
120 R_ARM_THM_PC12, R_ARM_THM_ALU_PREL_11_0.
121 (Arm_relocate_functions::thm_alu11): New Method.
122 (Arm_relocate_functions::thm_pc8): New Method.
123 (Arm_relocate_functions::thm_pc12): New Method.
124 (Target_arm::Scan::local): Handle the relocations.
125 (Target_arm::Scan::global): Likewise.
126 (Target_arm::Relocate::relocate): Likewise.
127 (Target_arm:Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
128
129 2010-01-29 Doug Kwan <dougkwan@google.com>
130
131 * arm.cc (Target_arm::Scan::global): General PLTs for the same set
132 of relocation types as ld.
133
134 2010-01-29 Doug Kwan <dougkwan@google.com>
135
136 * arm.cc (Arm_relocate_functions::arm_branch_common) Change visibility
137 to public.
138 (Arm_relocate_functions::thumb_branch_common): Ditto.
139 (Arm_relocate_functions::thm_call, Arm_relocate_functions::thm_jump24,
140 Arm_relocate_functions::thm_xpc22, Arm_relocate_functions::plt32,
141 Arm_relocate_functions::xpc25, Arm_relocate_functions::call,
142 Arm_relocate_functions::jump24): Remove.
143 (Target_arm::Relocate::relocate): Adjust code to call
144 Arm_relocation_functions::arm_branch_common and
145 Arm_relocation_functions::thumb_branch_common instead of their removed
146 wrappers. Merge switch-cases together to reduce source code size.
147
148 2010-01-29 Doug Kwan <dougkwan@google.com>
149
150 * arm.cc (Arm_relobj::Arm_relobj): Initialize new data member
151 output_local_symbol_count_needs_update_.
152 (Arm_relobj::output_local_symbol_count_needs_update,
153 Arm_relobj::set_output_local_symbol_count_needs_update,
154 Arm_relobj::update_output_local_symbol_count): New methods.
155 (Arm_relobj::output_local_symbol_count_needs_update_): New data
156 member.
157 (Arm_exidx_cantunwind::do_fixed_endian_write): Write address
158 of pointed function as in a R_ARM_PREL31 relocation.
159 (Arm_output_section<big_endian>::fix_exidx_coverage): Mark objects
160 for output local symbol count updating.
161 (Target_arm::do_relax): Update output local symbol counts in objects
162 if necessary.
163 * object.h (Sized_relobj::set_output_local_symbol_count): New method.
164
165 2010-01-29 Viktor Kutuzov <vkutuzov@accesssoftek.com>
166
167 * arm.cc: Added support for the ARM relocations:
168 R_ARM_MOVW_BREL_NC, R_ARM_MOVT_BREL, R_ARM_MOVW_BREL,
169 R_ARM_THM_MOVW_BREL_NC, R_ARM_THM_MOVT_BREL, R_ARM_THM_MOVW_BREL.
170 (Arm_relocate_functions::movw_rel_nc): Renamed (was
171 movw_prel_nc).
172 (Arm_relocate_functions::movw_rel): New method.
173 (Arm_relocate_functions::movt_rel): Renamed (was movt_prel).
174 (Arm_relocate_functions::thm_movw_rel_nc): Renamed (was
175 thm_movw_prel_nc).
176 (Arm_relocate_functions::thm_movw_rel): New method.
177 (Arm_relocate_functions::thm_movt_rel): Renamed (was
178 thm_movt_prel).
179 (Target_arm::Scan::local): Handle MOVW_BREL/MOVT_BREL
180 relocations.
181 (Target_arm::Scan::global): Likewise.
182 (Target_arm::Relocate::relocate): Likewise.
183 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
184 Likewise.
185
186 2010-01-27 Viktor Kutuzov <vkutuzov@accesssoftek.com>
187
188 * arm.cc: Added support for ARM group relocations.
189 (Target_arm::reloc_needs_sym_origin): New method.
190 (Arm_relocate_functions::calc_grp_kn): New method.
191 (Arm_relocate_functions::calc_grp_residual): New method.
192 (Arm_relocate_functions::calc_grp_gn): New method.
193 (Arm_relocate_functions::arm_grp_alu): New Method.
194 (Arm_relocate_functions::arm_grp_ldr): New Method.
195 (Arm_relocate_functions::arm_grp_ldrs): New Method.
196 (Arm_relocate_functions::arm_grp_ldc): New Method.
197 (Target_arm::Scan::local): Handle the ARM group relocations.
198 (Target_arm::Scan::global): Likewise.
199 (Target_arm::Relocate::relocate): Likewise.
200 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
201 Likewise.
202
203 2010-01-26 Doug Kwan <dougkwan@google.com>
204
205 * arm.cc (set): Include.
206 (class Arm_exidx_fixup): Change type of last_input_section_ to const
207 pointer type.
208 (Arm_output_section::Text_section_list): New type.
209 (Arm_output_section::append_text_sections_to_list): New method.
210 (Arm_output_section::fix_exidx_coverage): Ditto.
211 (Arm_relobj::Arm_relobj): Initialize exidx_section_map_.
212 (Arm_relobj::convert_input_section_to_relaxed_section): Use
213 Relobj::set_section_offset() instead of
214 Sized_relobj::invalidate_section_offset().
215 (Arm_relobj::section_needs_reloc_stub_scanning): Add an extra
216 parameter for section headers. Ignore relocation sections for
217 unallocated sections and EXIDX sections.
218 (Target_arm::fix_exidx_coverage): New method.
219 (Target_arm::output_section_address_less_than): New type.
220 (Arm_exidx_fixup::add_exidx_cantunwind_as_needed): Use index of the
221 linked text section instead of the EXIDX section.
222 (Arm_output_section::create_stub_group): Add an assertion to check
223 that this is not an EXIDX output section.
224 (Arm_output_section::append_text_sections_to_list): New method.
225 (Arm_output_section::fix_exidx_coverage): Ditto.
226 (Arm_relobj::scan_sections_for_stubs): Adjust call to
227 Arm_relobj::section_needs_reloc_stub_scanning.
228 (Target_arm::do_relax): Fix EXIDX output section coverage in the
229 first pass.
230 (Target_arm::fix_exidx_coverage): New method.
231 * object.h (Relobj::set_output_section): New method.
232 (Sized_relobj::invalidate_section_offset): Remove method.
233 (Sized_relobj::do_invalidate_section_offset): Remove method.
234 (Sized_relobj::do_set_section_offset): Handle offset value -1.
235
236 2010-01-25 Doug Kwan <dougkwan@google.com>
237
238 * arm.cc (Arm_exidx_merged_section::do_output_offset):
239 Fix warning due to signed and unsigned comparison on a 32-bit host.
240
241 2010-01-22 Doug Kwan <dougkwan@google.com>
242
243 * arm.cc (Target_arm::do_relax): Record an output section for section
244 offset adjustment it contains any stub table that has changed.
245 * layout.cc (Layout::clean_up_after_relaxation): Adjust section
246 offsets in an output section if necessary.
247 * output.cc (Output_section::Output_section): Initialize
248 section_offsets_need_adjustments_.
249 (Output_section::add_input_section_for_script): Renamed to
250 Output_section::add_simple_input_section.
251 (Output_section::save_states): Add a comment.
252 (Output_section::discard_states): New method defintion.
253 (Output_section::adjust_section_offsets): Same.
254 * output.h (Output_section::add_input_section_for_script): Renamed to
255 Output_section::add_simple_input_section.
256 (Output_section::discard_states): New method declaration.
257 (Output_section::adjust_section_offsets): Same.
258 (Output_section::section_offsets_need_adjustment,
259 Output_section::set_section_offsets_need_adjustment): New method
260 definitions.
261 (Output_section::section_offsets_need_adjustment_): New data member.
262 * script-sections.cc
263 (Output_section_element_input::set_section_address): Adjust code for
264 renaming of Output_section::add_input_section_for_script.
265 (Orphan_output_section::set_section_address): Same.
266
267 2010-01-22 Viktor Kutuzov <vkutuzov@accesssoftek.com>
268
269 * gold/arm.cc (Target_arm): Updated fix_v4bx method and usage of
270 Fix_v4bx enum values .
271 * gold/options.h (General_options): New option definitions.
272 (General_options::fix_v4bx): New method.
273 (General_options::Fix_v4bx): New enum.
274 * gold/options.cc (General_options::parse_fix_v4bx): New method.
275 (General_options::parse_fix_v4bx_interworking): New method.
276
277 2010-01-22 Doug Kwan <dougkwan@google.com>
278
279 * arm.cc (Arm_exidx_fixup): New class.
280
281 2010-01-21 Doug Kwan <dougkwan@google.com>
282
283 * arm.cc (Arm_exidx_cantunwind, Arm_exidx_merged_section): New
284 classes.
285 (Arm_exidx_section_offset_map): New type.
286
287 2010-01-21 Doug Kwan <dougkwan@google.com>
288
289 * arm.cc (Arm_exidx_input_section): New class.
290 (Arm_relobj::exidx_input_section_by_link,
291 Arm_relobj::exidx_input_section_by_shndx,
292 Arm_relobj::make_exidx_input_section): New methods.
293 (read_arm_attributes_section): Remove.
294 (Arm_relobj::do_read_symbols): Look for ARM.exidx sections and record
295 information about them.
296 (Arm_dynobj::do_read_symbols): Move code in read_arm_attributes_section
297 to here.
298
299 2010-01-20 Doug Kwan <dougkwan@google.com>
300
301 * arm.cc (Target_arm::Arm_input_section_map): Change key type from
302 Input_section_specifier to Section_id.
303 (Target_arm::new_arm_input_section: Adjust code for change of key
304 type.
305 (Target_arm::find_arm_input_section): Ditto.
306 * gc.h (object.h): Include for Section_id nand Section_id_hash.
307 (Section_id): Remove.
308 (Garbage_collection::Section_id_hash): Remove.
309 * icf.h (object.h): Include for Section_id nand Section_id_hash.
310 (Section_id): Remove.
311 (Icf::Section_id_hash): Remove.
312 * object.h (Section_id, Const_section_id, Section_id_hash,
313 Const_section_id_hash): New type definitions.
314 * output.cc (Output_section::add_relaxed_input_section): Change to
315 use Const_section_id instead of Input_section_specifier as key type.
316 (Output_section::add_merge_input_section): Ditto.
317 (Output_section::build_relaxation_map): Change to use Section_id
318 instead of Input_section_specifier as key type.
319 (Output_section::convert_input_sections_in_list_to_relaxed_sections):
320 Ditto.
321 (Output_section::convert_input_sections_to_relaxed_sections): Change
322 to use Const_section_id instead of Input_section_specifier as key type.
323 (Output_section::find_merge_section): Ditto.
324 (Output_section::find_relaxed_input_section): Ditto.
325 * output.h (Input_section_specifier): Remove class.
326 (Output_section::Output_section_data_by_input_section_map): Change
327 key type to Const_section_id.
328 (Output_section::Output_relaxed_input_section_by_input_section_map):
329 Ditto.
330 (Output_section::Relaxation_map): Change key type to Section_id.
331
332 2010-01-20 Viktor Kutuzov <vkutuzov@accesssoftek.com>
333
334 * gold/arm.cc: Added support for R_ARM_V4BX relocation
335 (class Arm_v4bx_stub): New class.
336 (DEF_STUBS): Updated definition to support v4_veneer_bx.
337 (Stub_factory::make_arm_v4bx_stub): New method.
338 (Stub_factory::elf32_arm_stub_v4_veneer_bx): New veneer template.
339 (Stub_table::empty): Handle v4bx stubs.
340 (Stub_table::add_arm_v4bx_stub): New method.
341 (Stub_table::find_arm_v4bx_stub): New method.
342 (Arm_relocate_functions::v4bx): New method.
343 (Target_arm::fix_v4bx): New method.
344 (Target_arm::Target_arm): Handle R_ARM_V4BX.
345 (Stub_table::relocate_stubs): Likewise.
346 (Stub_table::do_write): Likewise.
347 (Stub_table::update_data_size_and_addralign): Likewise.
348 (Stub_table::finalize_stubs): Likewise.
349 (Target_arm::Scan::local): Likewise.
350 (Target_arm::Scan::global): Likewise.
351 (Target_arm::do_finalize_sections): Likewise.
352 (Target_arm::Relocate::relocate): Likewise.
353 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
354 Likewise.
355 (Target_arm::scan_reloc_for_stub): Likewise.
356 (Target_arm::scan_reloc_section_for_stubs): Likewise.
357
358 2010-01-19 Ian Lance Taylor <iant@google.com>
359
360 * output.cc (Output_section_headers::do_sized_write): Write large
361 segment count to sh_info field.
362 (Output_file_header::do_sized_write): For large segment count,
363 write PN_XNUM to e_phnum field.
364
365 2010-01-15 Viktor Kutuzov <vkutuzov@accesssoftek.com>
366
367 * arm.cc (Arm_relocate_functions::thm_jump6): New function.
368 (Arm_relocate_functions::thm_jump8): New function.
369 (Arm_relocate_functions::thm_jump11): New function.
370 (Target_arm::Scan::local): Handle R_ARM_THM_JUMP6, R_ARM_THM_JUMP8,
371 R_ARM_THM_JUMP11.
372 (Target_arm::Scan::global): Likewise.
373 (Target_arm::Relocate::relocate): Likewise.
374 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
375 Likewise.
376
377 2010-01-14 Doug Kwan <dougkwan@google.com>
378
379 * arm.cc (map, utility): Include headers.
380 (Target_arm::apply_cortex_a8_workaround): New method.
381 (Arm_relobj::do_relocate_sections): Apply any Cortex-A8 workaround.
382 (Target_arm::Scan::local): Handle R_ARM_THM_JUMP24, R_ARM_THM_JUMP19.
383 (Target_arm::Scan::global): R_ARM_THM_JUMP19.
384 (Target_arm::do_finalize_sections): Set fix_cortex_a8_ according to
385 the --[no-]fix-cortex-a8 command line options.
386 (Target_arm::Relocate::relocate): Handle R_ARM_JUMP19.
387 (Target_arm::relocate_stub): Use addend in instruction template.
388 * options.h (DEFINE_bool): Set the user-set flag.
389 (General_options): Add --[no-]-fix-cortex options.
390 * output.cc (Output_section::convert_input_sections_to_relaxed_sections)
391 : Update fast look-up map after conversion.
392
393 2010-01-14 Sriraman Tallam <tmsriram@google.com>
394
395 * object.cc (Sized_relobj::do_layout): Change to call layout_gnu_stack
396 in the first pass of do_layout.
397
398 2010-01-13 Doug Kwan <dougkwan@google.com>
399
400 * arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
401 Arm_relobj::scan_sections_for_stubs): Rearrange code to avoid an
402 apparent compiler problem of not folding static constant integral
403 data members of elfcpp::Elf_sizes<32>.
404
405 2010-01-13 Doug Kwan <dougkwan@google.com>
406
407 * arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
408 Arm_relobj::section_needs_cortex_a8_stub_scanning,
409 Arm_relobj::scan_section_for_cortex_a8_erratum,
410 Arm_relobj::scan_span_for_cortex_a8_erratum): New methods.
411 (Arm_relobj::scan_sections_for_stubs): Move code deciding what
412 sections to scan for relocation stubs into a new method
413 Arm_relobj::section_needs_reloc_stub_scanning. Handle both
414 relocation and Cortex-A8 stub scanning.
415 (Target_arm::do_relax): Force stubs to be after stubbed sections
416 if fixing the Cortex-A8 erratum. Remove all Cortex-A8 stubs at
417 the beginning of a new relaxation pass. Update a comment.
418 (Target_arm::scan_span_for_cortex_a8_erratum): New method definition.
419
420 2010-01-12 Ian Lance Taylor <iant@google.com>
421
422 * target-reloc.h (visibility_error): New inline function.
423 (relocate_section): Call visibility_error.
424 * testsuite/Makefile.am (check_DATA): Add protected_3.err.
425 (MOSTLYCLEANFILES): Likewise.
426 (protected_4_pic.o, protected_3.err): New targets.
427 * testsuite/protected_4.cc: New file.
428
429 2010-01-12 Doug Kwan <dougkwan@google.com>
430
431 * arm.cc (Cortex_a8_reloc): New class.
432 (Target_arm::Target_arm): Initialize new data members fix_cortex_a8_
433 and cortex_a8_relocs_info_.
434 (Target_arm::fix_cortex_a8): New method definition.
435 (Target_arm::Cortex_a8_relocs_info): New type.
436 (Target_arm::fix_cortex_a8_, Target_arm::cortex_a8_relocs_info_):
437 New data member declarations.
438 (Target_arm::scan_reloc_for_stub): Record information about
439 relocations for THUMB branches that might be exempted from the
440 Cortex-A8 workaround.
441 (Target_arm::do_relax): Clear all Cortex-A8 relocation information
442 at the beginning of a relaxation pass.
443
444 2010-01-12 Doug Kwan <dougkwan@google.com>
445
446 * arm.cc (Arm_relobj::mapping_symbols_info_): New data member.
447 (Arm_relobj::Mapping_symbol_position,
448 Arm_reloj::Mapping_symbol_position_less,
449 Arm_relobj::Mapping_symbols_info): New types.
450 (Target_arm::is_mapping_symbol_name): New method definition.
451 (Arm_relobj::do_count_local_symbols): Save information about mapping
452 symbols.
453
454 2010-01-11 Doug Kwan <dougkwan@google.com>
455
456 * arm.cc (Arm_relocate_functions::thumb32_branch_offset,
457 Arm_relocate_functions::thumb32_branch_upper,
458 Arm_relocate_functions::thumb32_branch_lower,
459 Arm_relocate_functions::thumb32_cond_branch_offset,
460 Arm_relocate_functions::thumb32_cond_branch_upper,
461 Arm_relocate_functions::thumb32_cond_branch_lower,
462 Arm_relocate_functions::thm_jump19): New methods to handle THUMB
463 branch offset encoding.
464 (Arm_relocate_functions::thumb_branch_common): Use new branch
465 offset encoding methods to avoid code duplication.
466 (Stub_template::Stub_template) Handle THUMB16_SPECIAL_TYPE.
467 (Stub_addend_reader::operator()): Use new branch encoding method
468 to avoid code duplication.
469
470 2010-01-11 Doug Kwan <dougkwan@google.com>
471
472 * arm.cc (Arm_relobj::do_gc_process_relocs): New method.
473 (Target_arm::do_finalize_sections): Define special EXIDX section
474 symbols only if referenced.
475 * gc.h (Garbage_collection::add_reference): New method.
476 (gc_process_relocs): Use Garbage_collection::add_reference to avoid
477 code duplication.
478
479 2010-01-11 Ian Lance Taylor <iant@google.com>
480
481 * script.cc (Version_script_info::build_expression_list_lookup):
482 Change complaing about duplicate wildcard match from error to
483 warning.
484
485 * script.cc (class Lazy_demangler): Recreate--revert part of patch
486 of 2009-12-30.
487 (Version_script_info::Version_script_info): Initialize globs_,
488 default_version_, default_is_global_, and exact_. Don't
489 initialize globals_ or locals_.
490 (Version_script_info::build_lookup_tables): Build local symbols
491 first.
492 (Version_script_info::unquote): New function.
493 (Version_script_info::add_exact_match): New function.
494 (Version_script_info::build_expression_list_lookup): Remove lookup
495 parameter. Add is_global parameter. Change all callers. Handle
496 wildcard pattern specially. Unquote pattern. Call
497 add_exact_match.
498 (Version_script_info::get_name_to_match): New function.
499 (Version_script_info::get_symbol_version): New function.
500 (Version_script_info::get_symbol_version_helper): Remove.
501 (Version_script_info::check_unmatched_names): Call unquote.
502 * script.h (class Version_script_info): Change get_symbol_version
503 to be non-inline and add is_global parameter; change all callers.
504 Rewrite symbol_is_local. Update declarations. Define struct
505 Version_tree_match, Exact, Globs. Don't define struct Lookup.
506 Remove globals_ and locals_ members. Add exact_, globs_,
507 default_version_, is_global_.
508 (Version_script_info::Glob): Remove pattern, add expression and
509 is_global. Update constructor. Change all callers.
510 * dynobj.cc (Versions::finalize): Mark the version symbol as the
511 default version.
512 (Versions::symbol_section_contents): If a symbol is undefined, or
513 defined in a dynamic object, set the version index to
514 VER_NDX_LOCAL.
515 * symtab.cc (Symbol_table::add_from_relobj): Don't call
516 symbol_is_local.
517 (Symbol_table::add_from_pluginobj): Likewise.
518 * testsuite/ver_matching_test.sh: blaza1 and blaza go into V2.
519
520 2010-01-11 Doug Kwan <dougkwan@google.com>
521
522 * Makefile.am (incremental_dump_DEPENDENCIES): Add libintl dependency.
523 (incremental_dump_LDADD): Add linking option for libintl.
524 * Makefile.in: Regenerate.
525
526 2010-01-11 H.J. Lu <hongjiu.lu@intel.com>
527
528 PR gold/11144
529 * testsuite/Makefile.am (dynamic_list.stdout): Use --dyn-syms
530 instead of -Ds.
531 * testsuite/Makefile.in: Regenerated.
532
533 2010-01-10 Doug Kwan <dougkwan@google.com>
534
535 * options.h (DEFINE_var): Use parentheses around argument varname__
536 in macro body to avoid any unintended subsequent substitutions.
537
538 2010-01-10 Ian Lance Taylor <iant@google.com>
539
540 * resolve.cc (Symbol_table::resolve): Add symbols to list of ODR
541 candidates before doing symbol resolution.
542
543 * resolve.cc (Symbol_table::resolve): Add symbols to the list of
544 ODR candidates if only one is weak.
545
546 2010-01-08 Ian Lance Taylor <iant@google.com>
547
548 * script.cc (Version_script_info::build_expression_list_lookup):
549 Don't warn about ambiguous version, just record the ambiguity.
550 (Version_script_info::get_symbol_version_helper): Give error if
551 version is ambiguous.
552
553 2010-01-08 Doug Kwan <dougkwan@google.com>
554
555 * arm.cc (Stub_table::Stub_table): Initalize cortex_a8_stubs_,
556 prev_data_size_ and prev_addralign_. Remove initializer for
557 deleted data member has_been_changed_.
558 (Stub_table::empty): Look at both reloc_stubs_ and cortex_a8_stubs_
559 to determine if the table is empty.
560 (Stub_table::has_been_changed, Stub_table_set_has_been_changed):
561 Remove.
562 (Stub_table::add_reloc_stub): Define method in class definition
563 instead of just declaring it there.
564 (Stub_table::add_cortex_a8_stub): New method definition.
565 (Stub_table::update_data_size_and_addralign): Ditto.
566 (Stub_table::finalize_stubs): Ditto.
567 (Stub_table::apply_cortex_a8_workaround_to_address_range): Ditto.
568 (Stub_table::do_addralign_): Return address alignment in the
569 (Stub_table::do_reset_address_and_file_offset): Define method in
570 class definition instead of declaring it there. Set current data
571 size to be the data size of the previous pass.
572 (Stub_table::set_final_data_size): Use current data size as the
573 final data size.
574 (Stub_table::relocate_stub): Change parameter type of stub from
575 Reloc_stub pointer to Stub pointer.
576 (Stub_table::addralign_, Stub_table::has_been_changed_): Remove.
577 (Stub_table::Cortex_a8_stub_list): New typedef.
578 (Stub_table::cortex_a8_stubs_, Stub_table::prev_data_size_,
579 Stub_table::prev_addralign_): New data member.
580 (Arm_relobj::Arm_relobj): Initialize data member
581 section_has_cortex_a8_workaround_.
582 (Arm_relobj::section_has_cortex_a8_workaround,
583 Arm_relobj::mark_section_for_cortex_a8_workaround): New method
584 definitions.
585 (Arm_relobj::section_has_cortex_a8_workaround_): New data member
586 declarations.
587 (Target_arm::relocate_stub): Change parameter type of stub from
588 Reloc_stub pointer to Stub pointer.
589 (Insn_template::size, Insn_template::alignment): Handle
590 THUMB16_SPECIAL_TYPE.
591 (Stub_table::remove_all_cortex_a8_stubs, Stub_table::finalize_stubs,
592 Stub_table::update_data_size_and_addralign,
593 Stub_table::apply_cortex_a8_workaround_to_address_range): New method
594 definitions.
595 (Stub_table::relocate_stubs): Handle Cortex-A8 stubs.
596 (Stub_table::do_write): Ditto.
597 (Target_arm::do_relax): Adjust code for changes in Stub_table.
598
599 2010-01-08 Ian Lance Taylor <iant@google.com>
600
601 PR 11108
602 * symtab.h (class Symbol): Remove fields is_target_special_ and
603 has_plt_offset_. Add field is_defined_in_discarded_section_.
604 (Symbol::is_defined_in_discarded_section): New function.
605 (Symbol::set_is_defined_in_discarded_section): New function.
606 (Symbol::has_plt_offset): Rewrite.
607 (Symbol::set_plt_offset): Verify that new offset is not -1U.
608 * symtab.cc (Symbol::init_fields): Initialize plt_offset_ to -1U.
609 Don't initialize is_target_special_ or has_plt_offset_.
610 Initialize is_defined_in_discarded_section_.
611 (Symbol_table::add_from_relobj): If appropriate, set
612 is_defined_in_discarded_section.
613 * resolve.cc (Symbol::override_base_with_special): Don't test
614 is_target_special_. Change has_plt_offset_ to has_plt_offset().
615 * target-reloc.h (relocate_section): Do special handling for
616 symbols defined in discarded sections for global symbols as well
617 as local symbols.
618
619 2010-01-08 Ian Lance Taylor <iant@google.com>
620
621 * dynobj.cc (big_endian>::find_dynsym_sections): Set pi to NULL in
622 the SHT_SYMTAB case.
623
624 2010-01-08 Ian Lance Taylor <iant@google.com>
625
626 * object.cc (Sized_relobj::do_layout): Don't get confused if
627 layout_eh_frame returns NULL.
628
629 2010-01-08 Ian Lance Taylor <iant@google.com>
630
631 PR 11084
632 * dynobj.cc (Sized_dynobj::find_dynsym_sections): If there is no
633 dynamic symbol table, use the normal symbol table.
634 (Sized_dynobj::do_read_symbols): Remove assertion about type of
635 symbol table.
636
637 2010-01-08 Ian Lance Taylor <iant@google.com>
638
639 PR 11072
640 * layout.cc (Layout::include_section): Remove .gnu_debuglink
641 sections.
642
643 2010-01-08 H.J. Lu <hongjiu.lu@intel.com>
644
645 * version.cc (print_version): Change to "Copyright 2010".
646
647 2010-01-08 Ian Lance Taylor <iant@google.com>
648
649 PR 10287
650 PR 11063
651 * i386.cc (class Target_i386): Change return type of plt_section
652 to be non-const.
653 (class Output_data_plt_i386): Add tls_desc_rel_ field.
654 (Output_data_plt_i386::Output_data_plt_i386): Initialize
655 tls_desc_rel_ field.
656 (Output_data_plt_i386::rel_tls_desc): New function.
657 (Target_i386::rel_tls_desc_section): New function.
658 (Target_i386::Scan::local): Rewrite R_386_TLS_GOTDESC handling.
659 (Target_i386::Scan::global): For R_386_TLS_GOTDESC put
660 R_386_TLS_DESC reloc in rel_tls_desc_section.
661 * x86_64.cc (class Target_x86_64): Add tlsdesc_reloc_info_ field.
662 Define struct Tlsdesc_info.
663 (Target_x86_64::Target_x86_64): Initialize tlsdesc_reloc_info_.
664 (Target_x86_64::do_reloc_symbol_index): New function.
665 (Target_x86_64::add_tlsdesc_info): New function.
666 (class Output_data_plt_x86_64): Add tlsdesc_rel_ field.
667 (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize
668 tlsdesc_rel_ field.
669 (Output_data_plt_x86_64::rela_plt): Rename from rel_plt. Change
670 all callers.
671 (Output_data_plt_x86_64::rela_tlsdesc): New function.
672 (Target_x86_64::rela_tlsdesc_section): New function.
673 (Target_x86_64::Scan::local): Rewrite R_X86_64_GOTPC32_TLSDESC
674 handling.
675 (Target_x86_64::Scan::global): For R_X86_64_GOTPC32_TLSDESC put
676 (Target_x86_64::do_reloc_addend): New function.
677 R_X86_64_TLSDESC reloc in rela_tlsdesc_section.
678 * output.h (class Output_reloc) [SHT_REL]: Add new constructor
679 declarations. Define TARGET_CODE. Add arg field to u1_ union.
680 (Output_reloc::type): New function.
681 (Output_reloc::is_local_section_symbol): Check for TARGET_CODE.
682 (Output_reloc::is_target_specific): New function.
683 (Output_reloc::target_arg): New function.
684 (class Output_reloc) [SHT_RELA]: Add four new constructors for
685 absolute relocs and target specific relocs.
686 (class Output_data_reloc) [SHT_REL]: Add add_absolute and
687 add_target_specific.
688 (class Output_data_reloc) [SHT_RELA]: Likewise.
689 * output.cc (Output_reloc::Output_reloc): Add four new versions
690 for absolute relocs and target specific relocs.
691 (Output_reloc::set_needs_dynsym_index): Add TARGET_CODE case.
692 (Output_reloc::get_symbol_index): Likewise.
693 (Output_reloc::local_section_offset): Check that local_sym_index_
694 is not TARGET_CODE or 0.
695 (Output_reloc::symbol_value): Likewise.
696 (Output_reloc::write) [SHT_RELA]: Call target for target specific
697 reloc.
698 * target.h (class Target): Add reloc_symbol_index and reloc_addend
699 functions. Add do_reloc_symbol_index and do_reloc_addend virtual
700 functions.
701 * layout.cc (add_target_dynamic_tags): Use output section for
702 DT_PLTRELSZ and DT_JMPREL.
703
704 2010-01-07 Ian Lance Taylor <iant@google.com>
705
706 PR 11061
707 * output.h (class Output_reloc) [SHT_RELA]: Add is_relative
708 function.
709 (class Output_data_reloc_generic): Define.
710 (class Output_data_reloc_base): Change base class to
711 Output_data_reloc_generic. Change add() method to call
712 bump_relative_reloc_count for a relative reloc. Remove
713 sort_relocs_ field.
714 * output.cc (Output_data_reloc_base::do_write): Change sort_reloc_
715 to sort_relocs().
716 * layout.cc (Layout::add_target_dynamic_tags): Change dyn_rel to
717 Output_data_reloc_generic*. Add DT_RELCOUNT/DT_RELACOUNT tag if
718 appropriate.
719 * layout.h (class Layout): Update declaration.
720
721 2010-01-07 Ian Lance Taylor <iant@google.com>
722
723 * output.h (class Output_data): Add const version of
724 output_section and do_output_section.
725 (class Output_section_data): Add const version of
726 do_output_section.
727 (class Output_section): Likewise.
728 * layout.cc (Layout::add_target_dynamic_tags): New function.
729 * layout.h (class Layout): Update declarations.
730 * arm.cc (Target_arm::do_finalize_sections): Use
731 add_target_dynamic_tags.
732 * i386.cc (Target_i386::do_finalize_sections): Likewise.
733 * powerpc.cc (Target_powerpc::do_finalize_sections): Likewise.
734 * sparc.cc (Target_sparc::do_finalize_sections): Likewise.
735 * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
736
737 2010-01-07 Ian Lance Taylor <iant@google.com>
738
739 PR 11042
740 * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Mark the dynamic
741 object as needed.
742
743 2010-01-07 Dmitry Gorbachev <d.g.gorbachev@gmail.com>
744 Ian Lance Taylor <iant@google.com>
745
746 PR 11019
747 * object.cc: Instantiate Xindex::initialize_symtab_xindex and
748 Xindex::read_symtab_xindex.
749
750 2010-01-07 Doug Kwan <dougkwan@google.com>
751
752 * arm.cc (Insn_template::Type): New enum value THUMB16_SPECIAL_TYPE.
753 (Insn_template::thumb16_bcond_insn): New method declaration.
754 (Insn_template): Fix spelling.
755 (Stub::thumb16_special): New method declaration.
756 (Stub::do_write): Define virtual method which was previously pure
757 virtual.
758 (Stub::do_thumb16_special): New method declaration.
759 (Stub::do_fixed_endian_write): New template member.
760 (Reloc_stub::do_write): Remove.
761 (Reloc_stub::do_fixed_endian_write): Remove.
762 (Cortex_a8_stub): New class definition.
763 (Stub_factory::make_cortex_a8_stub): New method definition.
764 (Stub_factory::Stub_factory): Add missing static storage class
765 qualifier for elf32_arm_stub_a8_veneer_blx.
766
767 2010-01-07 Ian Lance Taylor <iant@google.com>
768
769 PR 10980
770 * options.h (class General_options): Add --warn-unresolved-symbols
771 and --error-unresolved-symbols.
772 * errors.cc (Errors::undefined_symbol): Implement
773 --warn-unresolved-symbols.
774
775 * options.h (class General_options): Add -z text and -z textoff.
776 * layout.cc (Layout::finish_dynamic_section): Implement -z text.
777
778 2010-01-06 Sriraman Tallam <tmsriram@google.com>
779
780 * gc.h (Garbage_collection::Cident_section_map): New typedef.
781 (Garbage_collection::cident_sections): New function.
782 (Garbage_collection::add_cident_section): New function.
783 (Garbage_collection::cident_sections_): New member.
784 (gc_process_relocs): Add references to sections whose names are C
785 identifiers.
786 * gold.h (cident_section_start_prefix): New constant.
787 (cident_section_stop_prefix): New constant.
788 (is_cident): New function.
789 * layout.cc (Layout::define_section_symbols): Replace string constants
790 with the newly defined constants.
791 * object.cc (Sized_relobj::do_layout): Track sections whose names are
792 C identifiers.
793 * testsuite/Makefile.am: Add gc_orphan_section_test.
794 * testsuite/Makefile.in: Regenerate.
795 * testsuite/gc_orphan_section_test.cc: New file.
796 * testsuite/gc_orphan_section_test.sh: New file.
797
798 2010-01-06 Ian Lance Taylor <iant@google.com>
799
800 PR 10980
801 * options.h (class General_options): Add --warn-shared-textrel.
802 * layout.cc (Layout::finish_dynamic_section): Implement
803 --warn-shared-textrel.
804
805 PR 10980
806 * options.h (class General_options): Add --warn-multiple-gp.
807
808 2010-01-06 Viktor Kutuzov <vkutuzov@accesssoftek.com>
809
810 * Makefile.am (incremental_dump_DEPENDENCIES): Remove
811 $(THREADSLIB) and $(LIBDL).
812 * Makefile.in: Rebuild.
813
814 2010-01-06 Ian Lance Taylor <iant@google.com>
815
816 PR 10980
817 * options.cc (General_options::parse_section_start): New function.
818 (General_options::section_start): New function.
819 (General_options::General_options): Initialize all members.
820 * options.h: Include <map>
821 (class General_options): Add --section-start. Add section_starts_
822 member.
823 * layout.cc (Layout::attach_allocated_section_to_segment): If
824 --section-start was used, set the address of the segment. Remove
825 local sort_sections.
826 (Layout::relaxation_loop_body): If the address of the load segment
827 has been set by --section-start, don't use it.
828 * output.h (Output_segment::update_flags_for_output_section): New
829 function.
830 * output.cc (Output_segment::add_output_section): Call
831 update_flags_for_output_section.
832
833 2010-01-05 Ian Lance Taylor <iant@google.com>
834
835 PR 10980
836 * options.h (class General_options): Add --undefined-version.
837 * script.cc (struct Version_expression): Add was_matched_by_symbol
838 field.
839 (Version_script_info::matched_symbol): New function.
840 (Version_script_info::get_symbol_version_helper): Call
841 matched_symbol.
842 (Version_script_info::check_unmatched_names): New function.
843 * script.h (class Version_script_info): Update declarations.
844 * gold.cc (queue_middle_tasks): Handle --no-undefined-version.
845
846 * options.h (class General_options): Use DEFINE_bool_alias for
847 allow_multiple_definition.
848 * resolve.cc (Symbol_table::should_override): Don't test
849 allow_multiple_definition.
850
851 PR 10980
852 * options.h (class General_options): Add --cref.
853 * main.cc (main): Print cref table if --cref. Don't close mapfile
854 until after printing cref table.
855 * cref.cc: Include "symtab.h".
856 (class Cref_inputs): Define Cref_table_compare and Cref_table.
857 (Cref_table_compare::operator()): New function.
858 (Cref_inputs::gather_cref): New function.
859 (filecol): New static const.
860 (Cref_inputs::print_cref): New function.
861 (Cref::print_cref): New function.
862 * cref.h: Include <cstdio>.
863 (class Cref): Update declarations.
864 * mapfile.h (Mapfile::file): New function.
865 * object.h (class Object): Define Symbols. Declare virtual
866 do_get_global_symbols.
867 (Object::get_global_symbols): New function.
868 * object.cc (Input_objects::add_object): Pass object to cref_ if
869 --cref.
870 (Input_objects::archive_start): Likewise.
871 (Input_objects::archive_stop): Likewise.
872 (Input_objects::print_cref): New function.
873 * dynobj.h (Sized_dynobj::do_get_global_symbols): New function.
874 * dynobj.cc (big_endian>::do_add_symbols): Create symbols_ if
875 --cref.
876 * plugin.cc (Sized_pluginobj::do_get_global_symbols): New
877 function.
878 * plugin.h (class Sized_pluginobj): Update declarations.
879
880 2010-01-05 Ian Lance Taylor <iant@google.com>
881
882 * symtab.cc (Symbol_table::add_from_object): Rename def parameter
883 to is_default_version. Rename insdef to insdefault.
884 (Symbol_table::add_from_relobj): Rename def to is_default_version
885 and local to is_forced_local.
886 (Symbol_table::add_from_pluginobj): Likewise.
887 (Symbol_table::add_from_dynobj): Likewise.
888 (Symbol_table::define_special_symbol): Rename insdef to
889 insdefault.
890
891 2010-01-04 Ian Lance Taylor <iant@google.com>
892
893 PR 10980
894 * options.h (class General_options): Add
895 --allow-multiple-definition and -z muldefs.
896 * resolve.cc (Symbol_table::should_override): Don't warn about a
897 multiple symbol definition if --allow-multiple-definition or -z
898 muldefs.
899
900 PR 10980
901 * options.h (class General_options): Add --add-needed and
902 --copy-dt-needed-entries. Tweak --as-needed help entry.
903 * object.cc (Input_objects::check_dynamic_dependencies): Give an
904 error if --copy-dt-needed-entries aka --add-needed is used and
905 would cause a change in behaviour.
906
907 PR 10980
908 * options.h (class General_options): Add -G as a short version of
909 --shared. Add no-op options -assert, -g, and -i.
910
911 2010-01-04 Sriraman Tallam <tmsriram@google.com>
912
913 * gc.h (gc_process_relocs): Call is_section_foldable_candidate to
914 check for .text or .gnu.linkonce.t sections.
915 * icf.cc (Icf::find_identical_sections): Ditto.
916 Change the detection for mangled function name within the section
917 name.
918 * icf.h (is_section_foldable_candidate): New function.
919
920 2009-12-30 Ian Lance Taylor <iant@google.com>
921
922 PR 10980
923 * options.h (class General_options): Permit two dashes with
924 --retain-symbols-file.
925
926 2009-12-30 Ian Lance Taylor <iant@google.com>
927
928 PR 10979
929 * layout.cc (Layout::relaxation_loop_body): If -Ttext was used,
930 don't put the file header and segment headers in the text
931 segment.
932
933 PR 10979
934 * common.cc (Sort_commons::operator()): Stabilize sort when both
935 entries are NULL.
936 (Symbol_table::do_allocate_commons_list): When allocating common
937 symbols, skip a symbol which is no longer common.
938 * symtab.h (Symbol::is_common): Test whether the symbol comes from
939 an object before checking its type.
940 * testsuite/common_test_2.c: New file.
941 * testsuite/common_test_3.c: New file.
942 * testsuite/Makefile.am (check_PROGRAMS): Add common_test_2.
943 (common_test_2_SOURCES, common_test_2_DEPENDENCIES): Define.
944 (common_test_2_LDFLAGS, common_test_2_LDADD): Define.
945 (common_test_2_pic.o, common_test_2.so): New targets.
946 (common_test_3_pic.o, common_test_3.so): New targets.
947 * testsuite/Makefile.in: Rebuild.
948
949 PR 10979
950 * script.cc (read_input_script): If we see a new SECTIONS clause,
951 and we have added an input section, give an error.
952 * layout.h (class Layout): Add have_added_input_section function.
953 Add have_added_input_section_ field.
954 * layout.cc (Layout::Layout): Initialize
955 have_added_input_section_.
956 (Layout::layout): Set have_added_input_section_.
957 (Layout::layout_eh_frame): Likewise.
958
959 2009-12-30 Ian Lance Taylor <iant@google.com>
960
961 PR 10931
962 * options.h (class General_options): Add --sort-common option.
963 * symtab.h (class Symbol_table): Define Sort_commons_order enum.
964 * common.cc (Sort_common): Add sort_order parameter to
965 constructor. Add sort_order_ field.
966 (Sort_commons::operator): Check sort_order_.
967 (Symbol_table::allocate_commons): Determine the sort order.
968 (Symbol_table::do_allocate_commons): Add sort_order parameter.
969 Change all callers.
970 (Symbol_table::do_allocate_commons_list): Likewise.
971
972 2009-12-30 Ian Lance Taylor <iant@google.com>
973
974 PR 10916
975 * symtab.cc (Symbol_table::add_from_relobj): When not exporting
976 symbols from this object, don't change the visibility of an
977 undefined symbol.
978 * testsuite/exclude_libs_test_1.c (lib1_ref): New function.
979
980 2009-12-30 Ian Lance Taylor <iant@google.com>
981
982 PR 10861
983 * script.h (class Version_script_info): Define Language enum.
984 Update declarations. Define Glob, Exact, and Lookup types. Add
985 new fields globals_, locals_, and is_finalized_.
986 * script.cc: Various formatting fixes.
987 (class Parser_closure): Change language_stack_ from a vector of
988 std::string to one of Version_script_info::Language. Adjust all
989 uses accordingly.
990 (class Lazy_demangler): Remove.
991 (struct Version_expression): Change language from std::string to
992 Version_script_info::Language.
993 (Version_script_info::Version_script_info): New function.
994 (Version_script_info::~Version_script_info): Don't call clear.
995 (Version_script_info::finalize): New function.
996 (Version_script_info::build_lookup_tables): New function.
997 (Version_script_info::build_expression_list_lookup): New
998 function.
999 (Version_script_info::get_symbol_version_helper): Rewrite to use
1000 lookup tables.
1001 (Version_script_info::print_expression_list): Adjust to use
1002 Version_script_info::Language.
1003 (script_push_lex_into_version_mode): Check that the version script
1004 has not been finalized.
1005 (version_script_push_lang): Change language string to
1006 Version_script_info::Language.
1007 * options.cc (Command_line::version_script): New function.
1008 * options.h (class General_options): Add finalize_dynamic_list
1009 function. Change version_script from declaration to definition.
1010 * testsuite/ver_test_4.script: Remove duplicate def of t2_2.
1011 * testsuite/version_script.map: Remove duplicate def of foo.
1012 * testsuite/Makefile.am (ver_matching_def.so): Depend upon
1013 version_script.map.
1014 * testsuite/Makefile.in: Rebuild.
1015
1016 2009-12-30 Ian Lance Taylor <iant@google.com>
1017
1018 PR 10843
1019 * target-reloc.h (relocate_for_relocatable): When copying a reloc,
1020 if the input symbol index is 0, make the output symbol index 0.
1021
1022 2009-12-30 Ian Lance Taylor <iant@google.com>
1023
1024 PR 10670
1025 * options.h (class General_options): Add -x/--discard-all.
1026 * object.cc (Sized_relobj::do_count_local_symbols): Handle
1027 --discard-all. If the local symbol needs a dynamic entry, check
1028 that before handling --discard-locals.
1029
1030 2009-12-30 Ian Lance Taylor <iant@google.com>
1031
1032 PR 10450
1033 * output.cc (Output_segment::Output_segment): If PT_TLS, set the
1034 flags to PF_R.
1035 (Output_segment::add_output_section): Don't change the flags if
1036 the type is PT_TLS.
1037
1038 PR 10450
1039 * dynobj.cc (Dynobj::create_gnu_hash_table): Add symbols to the
1040 GNU hash table if they need a dynamic value. Otherwise, don't add
1041 them if they are defined in a dynamic object or are forced local.
1042
1043 2009-12-29 Ian Lance Taylor <iant@google.com>
1044
1045 PR 10450
1046 * layout.cc (Layout::create_dynamic_symtab): Only set entsize of
1047 .gnu.hash table for a 32-bit target.
1048
1049 PR 10450
1050 * symtab.h (Symbol::needs_dynsym_entry): A symbol in both a
1051 regular and a dynamic object only needs a dynamic symbol table
1052 entry if it is externally visible.
1053
1054 PR 10450
1055 * i386.cc (class Target_i386): Initialize global_offset_table_ in
1056 constructor. Add global_offset_table_ field.
1057 (Target_i386::got_section): Set global_offset_table_.
1058 (Target_i386::do_finalize_sections): Set global_offset_table_
1059 size.
1060 * x86_64.cc (class Target_x86_64): Initialize global_offset_table_
1061 in constructor. Add global_offset_table_ field.
1062 (Target_x86_64::got_section): Set global_offset_table_.
1063 (Target_x86_64::do_finalize_sections): Set global_offset_table_
1064 size.
1065
1066 * layout.cc (Layout::Layout): Initialize increase_relro_.
1067 (Layout::get_output_section): Add is_relro, is_last_relro, and
1068 is_first_non_relro parameters. Change all callers.
1069 (Layout::choose_output_section): Likewise.
1070 (Layout::add_output_section_data): Likewise.
1071 (Layout::make_output_section): Likewise.
1072 (Layout::set_segment_offsets): Clear increase_relro when using a
1073 linker script.
1074 * layout.h (class Layout): Add increase_relro method. Add
1075 increase_relro_ field. Update declarations.
1076 * output.cc (Output_section::Output_section): Initialize
1077 is_last_relro_ and is_first_non_relro_.
1078 (Output_segment::add_output_section): Group relro sections is
1079 do_sort is true. Handle is_last_relro and is_first_non_relro.
1080 (Output_segment::maximum_alignment): Remove relro handling.
1081 (Output_segment::set_section_addresses): Add increase_relro
1082 parameter. Change all callers. Add initial alignment to align
1083 relro sections on separate page. Remove old relro handling.
1084 (Output_segment::set_section_list_addresses): Remove in_relro
1085 parameter. Change all callers.
1086 (Output_segment::set_offset): Add increase parameter. Change all
1087 callers. Remove old relro handling.
1088 * output.h (class Output_section): Add new methods: is_last_relro,
1089 set_is_last_relro, is_first_non_relro, set_is_first_non_relro.
1090 Add is_last_relro_ and is_first_non_relro_ fields.
1091 * i386.cc (Target_i386::got_section): Don't call set_is_relro.
1092 Create separate .got.plt section. Call increase_relro.
1093 * x86_64.cc (Target_x86_64::got_section): Likewise.
1094 * testsuite/relro_script_test.t: Add .got.plt.
1095
1096 PR 10450
1097 * layout.cc (Layout::Layout): Initialize dynamic_symbol_ field.
1098 (Layout::create_initial_dynamic_sections): Set dynamic_symbol_.
1099 (Layout::finalize): Call set_dynamic_symbol_size.
1100 (Layout::set_dynamic_symbol_size): New function.
1101 * layout.h (class Layout): Add dynamic_symbol_ field. Declare
1102 set_dynamic_symbol_size.
1103
1104 PR 10450
1105 * output.h (class Output_section): Add is_entsize_zero_ field.
1106 * output.cc (Output_section::Output_section): Initialize
1107 is_entsize_zero_.
1108 (Output_section::set_entsize): If two different entsizes are
1109 requested, force it to zero.
1110 (Output_section::add_input_section): Set flags for .debug_str
1111 before updating section flags. Set entsize.
1112 (Output_section::update_flags_for_input_section): Set SHF_MERGE
1113 and SHF_STRING if all input sections have those flags.
1114
1115 2009-12-29 Rafael Espindola <espindola@google.com>
1116
1117 * main.cc (main): Fix the sys time reporting.
1118 * workqueue.cc (Workqueue::find_and_run_task): Fix the sys time
1119 reporting.
1120
1121 2009-12-29 Sriraman Tallam <tmsriram@google.com>
1122
1123 * options.cc (General_options::parse_version): Allow -v to exit
1124 without an error if there is nothing to link.
1125
1126 2009-12-29 Ian Lance Taylor <iant@google.com>
1127
1128 * configure.ac: Set the MCMODEL_MEDIUM conditional to false if
1129 using a version of gcc before 4.1.
1130 * configure: Rebuild.
1131
1132 2009-12-28 Chris Demetriou <cgd@google.com>
1133
1134 * attributes.cc (Output_attributes_section_data::do_write): Use
1135 std::vector::front rather than std::vector::data.
1136
1137 2009-12-28 Ian Lance Taylor <iant@google.com>
1138
1139 * symtab.h (class Symbol_table): Add enum Defined.
1140 * resolve.cc (Symbol_table::should_override): Add defined
1141 parameter. Change all callers. Test whether object is NULL
1142 before calling a method on it.
1143 (Symbol_table::report_resolve_problem): Add defined parameter.
1144 Change all callers.
1145 (Symbol_table::should_override_with_special): Likewise.
1146 * symtab.cc (Symbol_table::define_in_output_data): Add defined
1147 parameter. Change all callers.
1148 (Symbol_table::do_define_in_output_data): Likewise.
1149 (Symbol_table::define_in_output_segment): Likewise.
1150 (Symbol_table::do_define_in_output_segment): Likewise.
1151 (Symbol_table::define_as_constant): Likewise.
1152 (Symbol_table::do_define_as_constant): Likewise.
1153 * script.h (class Symbol_assignment): Add is_defsym parameter to
1154 constructor; change all callers.
1155 * script.cc (Script_options::add_symbol_assignment): Add is_defsym
1156 parameter. Change all callers. Add is_defsym_ field.
1157 (class Parser_closure): Add parsing_defsym parameter to
1158 constructor; change all callers. Add parsing_defsym accessor
1159 function. Add parsing_defsym_ field.
1160
1161 2009-12-28 Ian Lance Taylor <iant@google.com>
1162
1163 * gold.cc (queue_middle_tasks): Fix formatting.
1164 * object.cc (Relobj::is_section_name_included): Likewise.
1165
1166 2009-12-23 Ian Lance Taylor <iant@google.com>
1167
1168 * i386.cc (Target_i386::do_calls_non_split): Recognize
1169 -fsplit-stack prologue for a function with a static chain.
1170 * x86_64.cc (Target_x86_64::do_calls_non_split): Recognize
1171 -fsplit-stack prologue when using %r11.
1172
1173 2009-12-21 Sriraman Tallam <tmsriram@google.com>
1174
1175 * options.cc (General_options::parse_version): Make -v continue and do
1176 the link like GNU ld does.
1177
1178 2009-12-17 Rafael Avila de Espindola <espindola@google.com>
1179
1180 * Makefile.am (CCFILES): Add timer.cc.
1181 (HFILES): Add timer.h.
1182 * configure.ac: Check for sysconf and times.
1183 * main.cc: include timer.h.
1184 (main): Use Timer instead of get_run_time.
1185 * timer.cc: New.
1186 * timer.h: New.
1187 * workqueue.cc: include timer.h.
1188 (Workqueue::find_and_run_task):
1189 Report user, sys and wall time.
1190 * Makefile.in: Regenerate.
1191 * config.in: Regenerate.
1192 * configure: Regenerate.
1193
1194 2009-12-16 Doug Kwan <dougkwan@google.com>
1195
1196 * arm.cc (Arm_relobj::scan_sections_for_stubs): Exclude ICF-eliminated
1197 sections.
1198 * object.cc (Sized_relobj::do_finalize_local_symbols): Handle
1199 relaxed input sections.
1200 * output.cc (Output_section::find_relaxed_input_section): Change
1201 return type to Output_relaxed_input_section pointer. Adjust code
1202 for new type of relaxed_input_section_map_.
1203 * output.h (Output_section::find_relaxed_input_section): Change
1204 return type to Output_relaxed_input_section pointer.
1205 (Output_section::Output_relaxed_input_section_by_input_section_map):
1206 New type.
1207 (Output_section::relaxed_input_section_map_): Change type to
1208 Output_section::Output_relaxed_input_section_by_input_section_map.
1209 * symtab.cc (Symbol_table::compute_final_value): Handle relaxed
1210 input section.
1211
1212 2009-12-15 Ian Lance Taylor <iant@google.com>
1213
1214 * layout.cc (Layout::create_shstrtab): Only write out after input
1215 sections if we are compressing debug sections.
1216
1217 2009-12-15 Ian Lance Taylor <iant@google.com>
1218
1219 * archive.cc (Archive::add_symbols): Only look up a symbol without
1220 a version if there is, in fact, a version.
1221
1222 2009-12-14 Ian Lance Taylor <iant@google.com>
1223
1224 Revert -Wshadow changes, all changes from:
1225 2009-12-11 Doug Kwan <dougkwan@google.com>
1226 2009-12-11 Nick Clifton <nickc@redhat.com>
1227 * configure.ac: Remove -Wshadow when setting WARN_CXXFLAGS.
1228
1229 2009-12-11 Doug Kwan <dougkwan@google.com>
1230
1231 * arm.cc (Target_arm::do_finalize_sections): Fix build breakage
1232 due to -Wshadow.
1233 * attributes.cc (Object_attribute::size): Ditto.
1234 (Attributes_section_data::size): Ditto.
1235 (Attributes_section_data::Attributes_section_data): Ditto.
1236 (Output_attributes_section_data::do_write): Ditto.
1237 * attributes.h (Object_attribute::set_type): Ditto.
1238 * testsuite/tls_test_main.cc (safe_lock, safe_unlock): Ditto.
1239
1240 2009-12-11 Nick Clifton <nickc@redhat.com>
1241
1242 * archive.cc: Fix shadowed variable warnings.
1243 * arm.cc: Likewise.
1244 * compressed_output.cc: Likewise.
1245 * compressed_output.h: Likewise.
1246 * configure: Likewise.
1247 * dwarf_reader.cc: Likewise.
1248 * dynobj.cc: Likewise.
1249 * dynobj.h: Likewise.
1250 * ehframe.cc: Likewise.
1251 * ehframe.h: Likewise.
1252 * errors.cc: Likewise.
1253 * expression.cc: Likewise.
1254 * fileread.cc: Likewise.
1255 * fileread.h: Likewise.
1256 * freebsd.h: Likewise.
1257 * i386.cc: Likewise.
1258 * icf.cc: Likewise.
1259 * incremental.h: Likewise.
1260 * layout.cc: Likewise.
1261 * layout.h: Likewise.
1262 * mapfile.cc: Likewise.
1263 * merge.cc: Likewise.
1264 * merge.h: Likewise.
1265 * object.cc: Likewise.
1266 * object.h: Likewise.
1267 * options.h: Likewise.
1268 * output.cc: Likewise.
1269 * output.h: Likewise.
1270 * parameters.cc: Likewise.
1271 * plugin.cc: Likewise.
1272 * powerpc.cc: Likewise.
1273 * reduced_debug_output.cc: Likewise.
1274 * reduced_debug_output.h: Likewise.
1275 * reloc.cc: Likewise.
1276 * reloc.h: Likewise.
1277 * resolve.cc: Likewise.
1278 * script-sections.cc: Likewise.
1279 * script.cc: Likewise.
1280 * script.h: Likewise.
1281 * sparc.cc: Likewise.
1282 * symtab.cc: Likewise.
1283 * symtab.h: Likewise.
1284 * target-select.cc: Likewise.
1285 * target-select.h: Likewise.
1286 * token.h: Likewise.
1287 * workqueue.cc: Likewise.
1288 * workqueue.h: Likewise.
1289 * x86_64.cc: Likewise.
1290
1291 2009-12-10 Doug Kwan <dougkwan@google.com>
1292
1293 * arm.cc (attributes.h): New include.
1294 (Arm_relobj::Arm_relobj): Initialize attributes_section_data_.
1295 (Arm_relobj::~Arm_relobj): Delete object pointed by
1296 attributes_section_data_.
1297 (Arm_relobj::attributes_section_data): New method definition.
1298 (Arm_relobj::attributes_section_data_): New data member declaration.
1299 (Arm_dynobj::Arm_dynobj): Initialize attributes_section_data_.
1300 (Arm_dynobj::~Arm_dynobj): Delete object pointed by
1301 attributes_section_data_.
1302 (Arm_dynobj::attributes_section_data): New method definition.
1303 (Arm_dynobj::attributes_section_data_): New data member declaration.
1304 (Target_arm::Target_arm): Initialize attributes_section_data_. Change
1305 initialization value of may_use_blx_ to false.
1306 (Target_arm::using_thumb2, Target_arm::using_thumb_only,
1307 Target_arm::may_use_arm_nop, Target_arm::may_use_thumb2_nop): Use
1308 object attributes to compute results instead of hard-coding.
1309 (Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order,
1310 Target_arm::get_secondary_compatible_arch,
1311 Target_arm::set_secondary_compatible_arch
1312 Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name,
1313 Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes):
1314 New method declarations.
1315 (Target_arm::get_aeabi_object_attribute): New method definition.
1316 (Target_arm::attributes_section_data_): New data member declaration.
1317 (read_arm_attributes_section): New template definition.
1318 (Arm_relobj::do_read_symbols): Read attributes section if it exists.
1319 (Arm_dynobj::do_read_symbols): Ditto.
1320 (Target_arm::do_finalize_sections): Merge attributes sections from
1321 input. Check for BLX use after attributes section merging.
1322 Fix __exidx_start and __exidx_end visibility. Create an
1323 .ARM.attributes section if necessary.
1324 (Target_arm::get_secondary_compatible_arch,
1325 Target_arm::set_secondary_compatible_arch,
1326 Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name,
1327 Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes,
1328 Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order):
1329 New method definitions.
1330
1331 2009-12-09 Ian Lance Taylor <iant@google.com>
1332
1333 * plugin.cc (Plugin::load): Don't cast from void* to a function
1334 pointer.
1335
1336 2009-12-09 Ian Lance Taylor <iant@google.com>
1337
1338 * dynobj.cc (Sized_dynobj::do_read_symbols): Clear version
1339 information fields.
1340
1341 2009-12-09 H.J. Lu <hongjiu.lu@intel.com>
1342
1343 * testsuite/Makefile.am (two_file_shared_1_pic_2_test_DEPENDENCIES):
1344 Replace two_file_shared_1.so with two_file_shared_2.so.
1345 * testsuite/Makefile.in: Regenerated.
1346
1347 2009-12-08 Doug Kwan <dougkwan@google.com>
1348
1349 * Makefile.am (CCFILES): Add attributes.cc and int_encoding.cc.
1350 (HFILES): Add attributes.h and int_encoding.h.
1351 * Makefile.in: Regenerate.
1352 * dwarf_reader.cc (read_unsigned_LEB_128, read_signed_LEB_128): Move
1353 function definitions to int_encoding.cc
1354 * dwarf_reader.h (read_unsigned_LEB_128, read_signed_LEB_128): Move
1355 prototypes to int_encoding.h
1356 * reduced_debug_output.cc (int_encoding.h): New include.
1357 (write_unsigned_LEB_128, get_length_as_unsigned_LEB_128): Move
1358 function definitions to int_encoding.cc
1359 (insert_into_vector, read_from_pointer): Move template definitions to
1360 int_encoding.h
1361 * attributes.cc: New file.
1362 * attributes.h: New file.
1363 * int_encoding.cc: New file.
1364 * int_encoding.h: New file.
1365
1366 2009-12-07 Rafael Avila de Espindola <espindola@google.com>
1367
1368 PR gold/11055
1369 * incremental-dump.cc (dump_incremental_inputs): New.
1370 (main): Use dump_incremental_inputs.
1371
1372 2009-12-07 H.J. Lu <hongjiu.lu@intel.com>
1373
1374 PR gold/10893
1375 * i386.cc (Target_i386::Scan::globa): Use is_func instead of
1376 checking elfcpp::STT_FUNC.
1377 (Target_i386::Relocate::relocate): Likewise.
1378 * x86_64.cc (Target_x86_64::Scan::global): Likewise.
1379
1380 * symtab.cc (Symbol_table::sized_write_symbol): Turn IFUNC
1381 symbols from shared libraries into normal FUNC symbols.
1382
1383 * symtab.h (Symbol): Add is_func and use it.
1384
1385 2009-12-05 Doug Kwan <dougkwan@google.com>
1386
1387 * arm.cc (Target_arm::arm_info): Initialize new fields
1388 attributes_section and attributes_vendor.
1389 * i386.cc (Target_i386::i386_info): Same.
1390 * object.cc (Sized_relobj::do_layout): Skip attribute section.
1391 * gold/powerpc.cc (Target_powerpc::powerpc_info): Initialize new
1392 fields attributes_section and attributes_vendor.
1393 * sparc.cc (Target_sparc::sparc_info): Same.
1394 * target.h (Target::attributes_section, Target::attributes_vendor,
1395 Target::is_attributes_section, Target::attribute_arg_type,
1396 Target::attributes_order): New method definitions.
1397 (Target::Target_info::attributes_section,
1398 Target::Target_info::attributes_vendor): New fields.
1399 (Target::do_attribute_arg_type, Target::do_attributes_order): New
1400 virtual method definitions.
1401 * x86_64.cc (Target_x86_64::x86_64_info): Initialize new fields
1402 attributes_section and attributes_vendor.
1403 * testsuite/testfile.cc (Target_test::test_target_info): Same.
1404
1405 2009-12-05 Doug Kwan <dougkwan@google.com>
1406
1407 * arm.cc: Update comments about interworking and stub generation.
1408 (Target_arm::Relocate::reloc_is_non_pic): Update list of relocations
1409 considered as non-PIC.
1410 (Arm_relocate_functions::base_abs): Fix formatting.
1411 (Arm_relocate_functions::got_prel): Fix comment. Change interface
1412 of function to use GOT entry address instead of offset.
1413 (Target_arm::Scan::global): Issue an error if a symbol would need a
1414 PLT does not get one because it is untyped. Remove code to create
1415 dynamic symbols for relative branches.
1416 (Target_arm::Relocate::relocate: Use 0 instead of false since function
1417 takes unsigned integer instead of boolean.
1418
1419 2009-12-05 H.J. Lu <hongjiu.lu@intel.com>
1420
1421 * testsuite/Makefile.am (constructor_test_LDADD): New. Empty.
1422 (two_file_test_LDADD): Likewise.
1423 (common_test_1_LDADD): Likewise.
1424 (exception_test_LDADD) Likewise.
1425 (weak_test_LDADD): Likewise.
1426 (many_sections_test_LDADD): Likewise.
1427 (initpri1_LDADD): Likewise.
1428 (script_test_1_LDADD): Likewise.
1429 (script_test_2_LDADD): Likewise.
1430 (justsyms_LDADD): Likewise.
1431 (binary_test_LDADD): Likewise.
1432 (large_LDADD): Likewise.
1433 * testsuite/Makefile.in: Regenerated.
1434
1435 2009-12-04 H.J. Lu <hongjiu.lu@intel.com>
1436
1437 * resolve.cc (symbol_to_bits): Treat STB_GNU_UNIQUE as STB_GLOBAL.
1438 (Symbol_table::override_with_special): Likewise.
1439 (Symbol_table::add_from_object): Likewise.
1440
1441 2009-12-04 Rafael Avila de Espindola <espindola@google.com>
1442
1443 * incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
1444 Don't set the data_offset twice.
1445
1446 2009-12-04 Rafael Avila de Espindola <espindola@google.com>
1447
1448 * testsuite/Makefile.in: Regenerate.
1449
1450 2009-12-03 Doug Kwan <dougkwan@google.com>
1451
1452 * arm.cc: Remove comment about missing .ARM.exidx section symbols.
1453 (Target_arm::do_finalize_sections): Add parameter for symbol table
1454 pointer. Add __exidx_start and __exidx_end symbols as appropriate.
1455 * i386.cc (Target_i386::do_finalize_sections): Add an additional
1456 parameter for symbol table pointer.
1457 * layout.cc (Layout::finalize): Call Target::finalize_sections with
1458 an additional parameter for a pointer to symbol table.
1459 * powerpc.cc (Target_powerpc::do_finalize_sections): Add an additional
1460 parameter for a symbol table pointer.
1461 * sparc.cc (Target_sparc::do_finalize_sections): Ditto.
1462 * target.h (Target::finalize_sections, Target::do_finalize_sections):
1463 Ditto.
1464 * x86_64.cc (Target_x86_64::do_finalize_sections): Add an additional
1465 parameter for a symbol table pointer.
1466
1467 2009-12-03 Rafael Avila de Espindola <espindola@google.com>
1468
1469 * incremental.cc (Incremental_inputs_header)
1470 (Incremental_inputs_header_write, Incremental_inputs_entry)
1471 (Incremental_inputs_entry_write): Move ...
1472 * incremental.h (Incremental_inputs_header)
1473 (Incremental_inputs_header_write, Incremental_inputs_entry)
1474 (Incremental_inputs_entry_write): here.
1475
1476 2009-12-02 Rafael Avila de Espindola <espindola@google.com>
1477
1478 * incremental.cc (make_sized_incremental_binary): Set the target.
1479 Error if it is incompatible.
1480 * output.h (Output_file): Add filename method.
1481
1482 2009-12-02 Rafael Avila de Espindola <espindola@google.com>
1483
1484 * incremental.cc (Incremental_inputs_entry): Remove unused argument
1485 from the get_* methods.
1486
1487 2009-12-02 Rafael Avila de Espindola <espindola@google.com>
1488
1489 * incremental-dump.cc (main): Check that the offeset of a script is 0.
1490 * incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
1491 Write 0 for the data_offset of scripts.
1492
1493 2009-12-02 Rafael Avila de Espindola <espindola@google.com>
1494
1495 * testsuite/Makefile.am: Add the incremental_test.sh test.
1496 * testsuite/incremental_test.sh: New.
1497 * testsuite/incremental_test_1.c: New.
1498 * testsuite/incremental_test_2.c: New.
1499
1500 2009-12-01 Rafael Avila de Espindola <espindola@google.com>
1501
1502 * incremental-dump.cc (main): Fix typos.
1503
1504 2009-11-27 Rafael Avila de Espindola <espindola@google.com>
1505
1506 PR gold/11025
1507 * incremental-dump.cc (main): Use llu to print 64 bit values.
1508
1509 2009-11-26 Per Øyvind Karlsen <peroyvind@mandriva.org>
1510 H.J. Lu <hongjiu.lu@intel.com>
1511
1512 * Makefile.am (incremental_dump_DEPENDENCIES): Add $(THREADSLIB)
1513 $(LIBDL).
1514 (incremental_dump_LDADD): Likewise.
1515 * Makefile.in: Regenerated.
1516
1517 2009-11-25 Doug Kwan <dougkwan@google.com>
1518
1519 Revert:
1520
1521 2009-11-25 Doug Kwan <dougkwan@google.com>
1522
1523 * arm.cc (Target_arm::Target_arm): Move method definition
1524 outside of class definition. Add code to handle
1525 --target1-rel, --target1-abs and --target2= options.
1526 (Target_arm::get_reloc_reloc_type): Change method to be
1527 non-static and const.
1528 (Target_arm::target1_is_rel_, Target_arm::target2_reloc_):
1529 New data member declaration.
1530 (Target_arm::Scan::local, Target_arm::Scan::global,
1531 Target_arm::Relocate::relocate,
1532 Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
1533 Adjust call to Target_arm::get_real_reloc_type.
1534 (Target_arm::get_real_reloc_type): Use command line options
1535 to determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
1536 * options.h (--target1-rel, --target1-abs, --target2): New
1537 ARM-only options.
1538
1539 2009-11-25 Doug Kwan <dougkwan@google.com>
1540
1541 * arm.cc (Target_arm::Target_arm): Move method definition outside of
1542 class definition. Add code to handle --target1-rel, --target1-abs
1543 and --target2= options.
1544 (Target_arm::get_reloc_reloc_type): Change method to be non-static
1545 and const.
1546 (Target_arm::target1_is_rel_, Target_arm::target2_reloc_): New data
1547 member declaration.
1548 (Target_arm::Scan::local, Target_arm::Scan::global,
1549 Target_arm::Relocate::relocate,
1550 Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Adjust
1551 call to Target_arm::get_real_reloc_type.
1552 (Target_arm::get_real_reloc_type): Use command line options to
1553 determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
1554 * options.h (--target1-rel, --target1-abs, --target2): New ARM-only
1555 options.
1556
1557 2009-11-25 Doug Kwan <dougkwan@google.com>
1558
1559 * arm.cc (Target_arm::may_use_thumb2_nop): New method definition.
1560 (Arm_relocate_functions::thumb_branch_common): New metod declaration.
1561 (Arm_relocate_functions::abs12, Arm_relocate_functions::abs16): Fix
1562 formatting.
1563 (Arm_relocate_functions::thm_call): Replace body with a call to
1564 Arm_relocate_functions::thumb_branch_common.
1565 (Arm_relocate_functions::thm_jump24,
1566 Arm_relocate_functions::thm_xpc22): New method definitions.
1567 (Arm_relocate_functions::thumb_branch_common): New method definition.
1568 (Reloc_stub::stbu_type_for_reloc): Fix incorrect uses of bit-wise-or
1569 operator.
1570 (Target_arm::Relocate::relocate): Adjust call to thm_call.
1571 Add code to handle R_ARM_THM_XPC22 and R_ARM_THM_JUMP24.
1572
1573 2009-11-24 Rafael Avila de Espindola <espindola@google.com>
1574
1575 * Makefile.am: Build incremental-dump
1576 * Makefile.in: Regenerate.
1577 * incremental-dump.cc: New.
1578 * incremental.cc (Incremental_inputs_header_data,
1579 Incremental_inputs_entry_data): Move to incremental.h
1580 * incremental.h: (Incremental_inputs_header_data,
1581 Incremental_inputs_entry_data): Move from incremental.cc
1582
1583 2009-11-24 Rafael Avila de Espindola <espindola@google.com>
1584
1585 * incremental.cc (Incremental_inputs_header,
1586 Incremental_inputs_header_write, Incremental_inputs_entry,
1587 Incremental_inputs_entry_write): Add a typedef with the data type.
1588
1589 2009-11-24 Rafael Avila de Espindola <espindola@google.com>
1590
1591 * incremental.cc (Incremental_inputs_header,
1592 Incremental_inputs_header_write, Incremental_inputs_entry,
1593 Incremental_inputs_entry_write): Update comment about which
1594 type has the filed descriptions.
1595
1596 2009-11-15 Doug Kwan <dougkwan@google.com>
1597
1598 * arm.cc (Target_arm::may_use_arm_nop): New method definition.
1599 (Arm_relocate_functions::arm_branch_common): Change method defintion
1600 in class definition to a method declaration and update list of formal
1601 parameters.
1602 (Arm_relocate_functions::plt32, Arm_relocate_functions::call,
1603 Arm_relocation_functions::jump24): Adjust call to
1604 Arm_relocate_functions::arm_branch_common. Update list of formal
1605 parameters.
1606 (Arm_relocate_functions::xpc25): New method definition.
1607 (Arm_relocate_functions::arm_branch_common): Move method defintion
1608 out from class definition. Use stubs for mode-switching and extending
1609 branch ranges.
1610 (Target_arm::Relocate::relocate): Handle weakly-undefined symbols
1611 specially. Change code to enable use of stubs in ARM branches.
1612
1613 2009-11-10 Doug Kwan <dougkwan@google.com>
1614
1615 * arm.cc (Arm_relobj::do_relocate_sections): Remove options parameter
1616 in method declaration.
1617 (Target_arm::relocate_stub): New method declaration.
1618 (Target_arm::default_target): Change to return a pointer instead of
1619 a const reference.
1620 (Reloc_stub::stub_type_for_reloc): Adjust for the change in
1621 Target_arm::default_target.
1622 (Arm_Relobj::do_relocate_sections): Remove options paramater in
1623 method definition.
1624 (Target_arm::relocate_section): Adjust view.
1625 (Target_arm::relocate_stub): New method definition.
1626
1627 2009-11-10 Doug Kwan <dougkwan@google.com>
1628
1629 * i386.cc (Target_i386::do_calls_non_split): Add a cast to avoid
1630 a format warning.
1631 * incremental.cc (open_incremental_binary): Initialized local
1632 variables to avoid warnings.
1633 * object.cc (make_elf_object): Ditto.
1634 * x86_64.cc (Target_x86_64::do_calls_non_split): Add a cast to avoid
1635 a format warning.
1636
1637 009-11-09 H.J. Lu <hongjiu.lu@intel.com>
1638
1639 PR gold/10930
1640 * testsuite/plugin_test.c: Include "config.h".
1641
1642 2009-11-09 Doug Kwan <dougkwan@google.com>
1643
1644 * arm.cc (Target_arm::fake_relnum_for_stubs): New constant.
1645 (arm_symbol_value): Remove.
1646 (Arm_relocate_functions::arm_branch_common,
1647 Arm_relocate_functions::abs8, Arm_relocate_functions::thm_abs5,
1648 Arm_relocate_functions::abs12, Arm_relocate_functions::abs16,
1649 Arm_relocate_functions::abs32, Arm_relocate_functions::rel32,
1650 Arm_relocate_functions::thm_call, Arm_relocate_functions::plt32,
1651 Arm_relocate_functions::call, Arm_relocate_functions::jump24,
1652 Arm_relocate_functions::prel31, Arm_relocate_functions::mov_abs_nc,
1653 Arm_relocate_functions::movt_abs, Arm_relocate_functions::movw_abs_nc,
1654 Arm_relocate_functions::thm_mobw_abs_nc,
1655 Arm_relocate_functions::thm_mov_abs,
1656 Arm_relocate_functions::movw_prel_nc,
1657 Arm_relocate_functions::thm_movt_abs,
1658 Arm_relocate_functions::movt_prel,
1659 Arm_relocate_functions::thm_movw_prel_nc,
1660 Arm_relocate_functions::thm_movt_prel): Adjust callers of the above.
1661 (Target_arm::Relocate::relocate): Only decompose address into two
1662 parts if relocation type uses the thumb-bit and pass the actual
1663 bit instead of a flag indicating that the thumb-bit is used. Adjust
1664 calls to methods in Arm_relocate_functions for this change.
1665
1666 2009-11-08 Ian Lance Taylor <iant@google.com>
1667
1668 PR 10925
1669 * reloc.cc: Instantiate
1670 Sized_relobj::initialize_input_to_output_maps and
1671 Sized_relobj:free_input_to_output_maps.
1672
1673 2009-11-06 Ian Lance Taylor <iant@google.com>
1674
1675 PR 10876
1676 * defstd.cc (in_segment): Set only_if_ref true for "end".
1677
1678 2009-11-06 Doug Kwan <dougkwan@google.com>
1679
1680 * arm.cc (class Reloc_stub): Correct a comment.
1681 (Target_arm::Target_arm): Initialize arm_input_section_map_.
1682 (Target_arm::scan_section_for_stubs): New method declaration.
1683 (Target_arm::do_make_elf_object, Target_arm::do_make_output_section):
1684 Change methods from private to protected.
1685 (Target_arm::do_may_relax): New method definition.
1686 (Target_arm::do_relax, Target_arm::group_sections,
1687 Target_arm::scan_reloc_for_stub,
1688 Target_arm::scan_reloc_section_for_stubs): New method declarations.
1689 (Target_arm::arm_input_section_map_): New data member declaration.
1690 (Target_arm::scan_reloc_for_stub,
1691 Target_arm::scan_reloc_section_for_stubs,
1692 Target_arm::scan_section_for_stubs, Target_arm::group_sections,
1693 Target_arm::do_relax): New method definitions.
1694
1695 2009-11-06 Mikolaj Zalewski <mikolaj@google.com>
1696
1697 * configure.ac: Check for (struct stat)::st_mtim
1698 * fileread.cc (File_read::get_mtime): Use st_mtim if available.
1699 * config.in: Regenerate.
1700 * configure: Regenerate.
1701
1702 2009-11-05 Ian Lance Taylor <iant@google.com>
1703
1704 PR 10910
1705 * output.cc (Output_segment::add_output_section): Add missing
1706 return statement.
1707
1708 2009-11-04 Ian Lance Taylor <iant@google.com>
1709
1710 PR 10880
1711 * object.h (class Object): Add is_needed and set_is_needed
1712 methods. Add is_needed_ field. Make bool fields into bitfields.
1713 * symtab.cc (Symbol_table::set_dynsym_indexes): If a symbol is
1714 defined in a dynamic object and referenced by a regular object,
1715 set is_needed for the dynamic object.
1716 * layout.cc (Layout::finish_dynamic_section): Don't add DT_NEEDED
1717 if the file is marked with as_needed and it is not needed.
1718
1719 2009-11-04 Ian Lance Taylor <iant@google.com>
1720
1721 PR 10887
1722 * arm.cc (Target_arm::do_finalize_sections): Don't add dynamic
1723 tags if data is discarded by linker script.
1724 * i386.cc (Target_i386::do_finalize_sections): Likewise.
1725 * powerpc.cc (Target_powerpc::do_finalize_sections): Likewise.
1726 * sparc.cc (Target_sparc::do_finalize_sections): Likewise.
1727 * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
1728
1729 2009-11-04 Ian Lance Taylor <iant@google.com>
1730
1731 * layout.cc (Layout::get_output_section): Add is_interp and
1732 is_dynamic_linker_section parameters. Change all callers.
1733 (Layout::choose_output_section): Likewise.
1734 (Layout::make_output_section): Likewise.
1735 (Layout::add_output_section_data): Add is_dynamic_linker_section
1736 parameter. Change all callers.
1737 * layout.h (class Layout): Update declarations.
1738 * output.h (class Output_section): Add is_interp, set_is_interp,
1739 is_dynamic_linker_section, set_is_dynamic_linker_section methods.
1740 Add is_interp_, is_dynamic_linker_section_ fields. Change
1741 generate_code_fills_at_write_ to a bitfield.
1742 * output.cc (Output_section::Output_sections): Initialize new
1743 fields.
1744 (Output_segment::add_output_section): Add do_sort parameter.
1745 Change all callers.
1746
1747 2009-11-03 Ian Lance Taylor <iant@google.com>
1748
1749 PR 10860
1750 * options.h (class General_options): Add --warn-common.
1751 * resolve.cc (Symbol_table::resolve): Handle --warn-common when
1752 merging two common symbols.
1753 (Symbol_table::should_override): Handle --warn-common when merging
1754 a common symbol with a defined symbol. Use report_resolve_problem
1755 for multiple definitions.
1756 (Symbol_table::report_resolve_problem): New function.
1757 * symtab.h (class Symbol_table): Declare report_resolve_problem.
1758
1759 2009-11-03 Doug Kwan <dougkwan@google.com>
1760
1761 * arm.cc (Target_arm::Target_arm): Initialize stub_tables_ and
1762 stub_factory_.
1763 (Target_arm::stub_factory): New method definition.
1764 (Target_arm::new_arm_input_section,
1765 Target_arm::find_arm_input_section, Target_arm::new_stub_table,
1766 Target_arm::reloc_uses_thumb_bit): New method declarations.
1767 (Target_arm::Stub_table_list, Target_arm::Arm_input_section_map):
1768 New type definitions.
1769 (Target_arm::stub_tables_, Target_arm::stub_factory_): New data
1770 member declarations.
1771 (Target_arm::reloc_uses_thumb_bit, Target_arm::new_arm_input_section,
1772 Target_arm::find_arm_input_section, Target_arm::new_stub_table):
1773 New method definitions.
1774
1775 2009-11-03 Ian Lance Taylor <iant@google.com>
1776
1777 * options.h (class General_options): Add --warn_constructors.
1778
1779 2009-11-03 Ian Lance Taylor <iant@google.com>
1780
1781 PR 10893
1782 * defstd.cc (in_section): Add entries for __rel_iplt_start,
1783 __rel_iplt_end, __rela_iplt_start, __rela_iplt_end, and __stack.
1784
1785 2009-11-03 Ian Lance Taylor <iant@google.com>
1786
1787 PR 10895
1788 * po/Make-in ($(srcdir)/$(PACKAGE).pot): Pass -C and
1789 --msgid-bugs-address.
1790 (install-pdf): New target.
1791 (install-data_yes): Look up one directory to find mkinstalldirs.
1792
1793 2009-11-03 H.J. Lu <hongjiu.lu@intel.com>
1794
1795 * po/Make-in (.po.gmo): Don't generate .gmo files in source
1796 tree.
1797
1798 2009-10-30 Doug Kwan <dougkwan@google.com>
1799
1800 * arm.cc (Stub_addend_reader): Fix bug in previouls check-in.
1801
1802 2009-10-30 Doug Kwan <dougkwan@google.com>
1803
1804 * arm.cc (Stub_addend_reader): New struct template definition
1805 and partial specializations.
1806 (Stub_addend_reader::operator()): New method definition for a
1807 partially specialized template.
1808
1809 2009-10-30 Doug Kwan <dougkwan@google.com>
1810
1811 * arm.cc (Arm_relobj::processor_specific_flags): New method
1812 definition.
1813 (Arm_relobj::do_read_symbols): New method declaration.
1814 (Arm_relobj::processor_specific_flags_): New data member declaration.
1815 (Arm_dynobj): New class definition.
1816 (Target_arm::do_finalize_sections): Add input_objects parameter.
1817 (Target_arm::do_adjust_elf_header): New method declaration.
1818 (Target_arm::are_eabi_versions_compatible,
1819 (Target_arm::merge_processor_specific_flags): New method declaration.
1820 (Target_arm::do_make_elf_object): New overloaded method definitions
1821 and declaration.
1822 (Arm_relobj::do_read_symbols): New method definition.
1823 (Arm_dynobj::do_read_symbols): Ditto.
1824 (Target_arm::do_finalize_sections): Add input_objects parameters.
1825 Merge processor-specific flags from all input objects.
1826 (Target_arm::are_eabi_versions_compatible,
1827 Target_arm::merge_processor_specific_flags,
1828 Target_arm::do_adjust_elf_header, Target_arm::do_make_elf_object):
1829 New method definitions.
1830 * i386.cc (Target_i386::do_finalize_sections): Add unnamed
1831 Input_objects pointer type parameter.
1832 * layout.cc (Layout::finalize): Pass input objects to target's.
1833 finalize_sections function.
1834 * output.cc (Output_file_header::do_sized_write): Set ELF file
1835 header's processor-specific flags.
1836 * powerpc.cc (Target_powerpc::do_finalize_sections): Add unnamed
1837 Input_objects pointer type parameter.
1838 * sparc.cc (Target_sparc::do_finalize_sections): Same.
1839 * target.h (Input_objects): New forward class declaration.
1840 (Target::processor_specific_flags,
1841 Target::are_processor_specific_flags_sect): New method definitions.
1842 (Target::finalize_sections): Add input_objects parameter.
1843 (Target::Target): Initialize processor_specific_flags_ and
1844 are_processor_specific_flags_set_.
1845 (Target::do_finalize_sections): Add unnamed Input_objects pointer type
1846 parameter.
1847 (Target::set_processor_specific_flags): New method definition.
1848 (Target::processor_specific_flags_,
1849 Target::are_processor_specific_flags_set_): New data member
1850 declarations.
1851 * x86_64.cc (Target_x86_64::do_finalize_sections): Add unnamed
1852 Input_objects pointer type parameter.
1853
1854 2009-10-30 Doug Kwan <dougkwan@google.com>
1855
1856 * arm.cc: Use Arm_address instead of elfcpp::Elf_types<32>::Elf_Addr.
1857
1858 2009-10-28 Ian Lance Taylor <iant@google.com>
1859
1860 * object.h (class Relobj): Drop options parameter from
1861 gc_process_relocs, scan_relocs, relocate, do_gc_process_relocs,
1862 do_scan_relocs, do_relocate. Change all callers.
1863 (class Sized_relobj): Drop options parameters from
1864 do_gc_process_relocs, do_scan_relocs, do_relocate,
1865 do_relocate_sections, relocate_sections, emit_relocs_scan,
1866 emit_relocs_scan_reltype. Change all callers.
1867 (struct Relocate_info): Remove options field and all references to
1868 it.
1869 * reloc.h (class Read_relocs): Remove options constructor
1870 parameter and options_ field. Change all callers.
1871 (class Gc_process_relocs, class Scan_relocs): Likewise.
1872 (class Relocate_task): Likewise.
1873 * target-reloc.h (scan_relocs): Remove options parameter. Change
1874 all callers.
1875 (scan_relocatable_relocs): Likewise.
1876 * target.h (class Sized_target): Remove options parameter from
1877 gc_process_relocs, scan_relocs, scan_relocatable_relocs. Change
1878 all callers.
1879 * gc.h (gc_process_relocs): Remove options parameter. Change all
1880 callers.
1881 * arm.cc: Update functions to remove options parameters.
1882 * i386.cc: Likewise.
1883 * powerpc.cc: Likewise.
1884 * sparc.cc: Likewise.
1885 * x86_64.cc: Likewise.
1886 * testsuite/testfile.cc: Likewise.
1887
1888 2009-10-28 Doug Kwan <dougkwan@google.com>
1889
1890 * arm.cc (Arm_relobj): New class definition.
1891 (Arm_relobj::scan_sections_for_stubs,
1892 Arm_relobj::do_count_local_symbols, Arm_relobj::do_relocate_sections):
1893 New method definitions.
1894
1895 2009-10-28 Cary Coutant <ccoutant@google.com>
1896
1897 * plugin.h (Plugin::Plugin): Initialize cleanup_done_.
1898 (Plugin::cleanup_done_): New member.
1899 (Plugin_manager::Plugin_manager): Remove cleanup_done_.
1900 (Plugin_manager::cleanup_done_): Remove.
1901 (Plugin_manager::add_input_file): Edit error message.
1902 * plugin.cc (Plugin::cleanup): Test and set cleanup_done_.
1903 (Plugin_manager::cleanup): Remove use of cleanup_done_.
1904
1905 2009-10-27 Mikolaj Zalewski <mikolajz@google.com>
1906
1907 * fileread.cc: (File_read::View::~View): Use the new
1908 data_ownership_ filed.
1909 (File_read::~File_read): Dispose the new whole_file_view_.
1910 (File_read::open): Mmap the whole file if needed.
1911 (File_read::open): Use whole_file_view_ instead of contents_.
1912 (File_read::find_view): Use whole_file_view_ if applicable.
1913 (File_read::do_read): Use whole_file_view_ instead of contents_.
1914 (File_read::make_view): Use whole_file_view_ instead of contents_,
1915 update File_read::View::View call.
1916 (File_read::find_or_make_view): Update File_read::View::View
1917 call.
1918 * fileread.h: (File_read::File_read): Initialize whole_file_view_,
1919 remove contents_
1920 (File_read::View::Data_ownership): New enum.
1921 (File_read::View::View): Replace bool mapped_ with Data_ownership
1922 argument.
1923 (File_read::View::mapped_): Remove (replaced by data_ownership_).
1924 (File_read::View::data_ownership_): New field.
1925 (File_read::contents_): Remove (replaced by whole_file_view_).
1926 (File_read::whole_file_view_): New field.
1927 * options.h (class General_options): Add --keep-files-mapped.
1928
1929 2009-10-27 Cary Coutant <ccoutant@google.com>
1930
1931 * symtab.cc (add_from_pluginobj): Pass correct value for is_ordinary.
1932 * testsuite/Makefile.am (plugin_test_5): New test case.
1933 * testsuite/Makefile.in: Regenerate.
1934
1935 2009-10-25 Doug Kwan <dougkwan@google.com>
1936
1937 * object.h (Sized_relobj::View_size, Sized_relobj::Views): Change
1938 from private to protected to allow access by child class.
1939 (Sized_relobj::do_relocate_sections): New method declaration.
1940 (Sized_relobj::relocate_sections): Virtualize.
1941 * reloc.cc (Sized_relobj::do_relocate_sections): Rename from
1942 Sized_relobj::relocate_sections. Instantiate template explicitly
1943 for different target sizes and endianity.
1944
1945 2009-10-24 Doug Kwan <dougkwan@google.com>
1946
1947 * arm.cc (Arm_output_section, Arm_relobj): Forward class declarations.
1948 (Arm_input_section::as_arm_input_section): New method.
1949 (Arm_output_section): New class definition.
1950 (Arm_output_section::create_stub_group,
1951 Arm_output_section::group_sections): New method definitions.
1952
1953 2009-10-22 Doug Kwan <dougkwan@google.com>
1954
1955 * arm.cc (Arm_input_section): New class definition.
1956 (Arm_input_section::init, Arm_input_section:do_write,
1957 Arm_input_section::set_final_data_size,
1958 Arm_input_section::do_reset_address_and_file_offset): New method
1959 definitions.
1960
1961 2009-10-21 Doug Kwan <dougkwan@google.com>
1962
1963 * arm.cc (Stub_table, Arm_input_section): New forward class
1964 declarations.
1965 (Stub_table): New class defintion.
1966 (Stub_table::add_reloc_stub, Stub_table::relocate_stubs
1967 Stub_table::do_reset_address_and_file_offset, Stub_table::do_write):
1968 New method definition.
1969
1970 2009-10-21 Doug Kwan <dougkwan@google.com>
1971
1972 * arm.cc: Update copyright comments.
1973 (Target_arm): New forward class template declaration.
1974 (Arm_address): New type.
1975 (ARM_MAX_FWD_BRANCH_OFFSET, ARM_MAX_BWD_BRANCH_OFFSET,
1976 THM_MAX_FWD_BRANCH_OFFSET, THM_MAX_BWD_BRANCH_OFFSET,
1977 THM2_MAX_FWD_BRANCH_OFFSET, THM2_MAX_BWD_BRANCH_OFFSET): New
1978 constants.
1979 (Insn_template): Same.
1980 (DEF_STUBS): New macro.
1981 (Stub_type): New enum type.
1982 (Stub_template): New class definition.
1983 (Stub): Same.
1984 (Reloc_stub): Same.
1985 (Stub_factory): Same.
1986 (Target_arm::Target_arm): Initialize may_use_blx_ and
1987 should_force_pic_veneer_.
1988 (Target_arm::may_use_blx, Target_arm::set_may_use_blx,
1989 Target_arm::should_force_pic_veneer,
1990 Target_arm::set_should_force_pic_veneer, Target_arm::using_thumb2,
1991 Target_arm::using_thumb_only, Target_arm:;default_target): New
1992 method defintions.
1993 (Target_arm::may_use_blx_, Target_arm::should_force_pic_veneer_):
1994 New data member declarations.
1995 (Insn_template::size, Insn_template::alignment): New method defintions.
1996 (Stub_template::Stub_template): New method definition.
1997 (Reloc_stub::Key::name, Reloc_stub::stub_type_for_reloc,
1998 Reloc_stub::do_fixed_endian_write, Reloc_stub::do_write): Same.
1999 (Stub_factory::Stub_factory): New method definition.
2000 * gold.h (string_hash): New template.
2001 * output.h (Input_section_specifier::hash_value): Use
2002 gold::string_hash.
2003 (Input_section_specifier::string_hash): Remove.
2004 * stringpool.cc (Stringpool_template::string_hash): Use
2005 gold::string_hash.
2006
2007 2009-10-20 Doug Kwan <dougkwan@google.com>
2008
2009 * object.cc (Sized_relobj::do_finalize_local_symbols): Handle section
2010 symbols of relaxed input sections.
2011 * output.h (Output_section::find_relaxed_input_section): Make
2012 method public.
2013
2014 2009-10-16 Doug Kwan <dougkwan@google.com>
2015
2016 * dynobj.cc (Versions::Versions): Initialize version_script_.
2017 Only insert base version symbol definition for a shared object
2018 if version script defines any version versions.
2019 (Versions::define_base_version): New method definition.
2020 (Versions::add_def): Check that base version is not needed.
2021 (Versions::add_need): Define base version lazily.
2022 * dynobj.h (Versions::define_base_version): New method declaration.
2023 (Versions::needs_base_version_): New data member declaration.
2024 * testsuite/Makefile.am (check_SCRIPTS): Add no_version_test.sh
2025 (check_DATA): Add no_version_test.stdout.
2026 (libno_version_test.so, no_version_test.o no_version_test.stdout):
2027 New make rules.
2028 * testsuite/Makefile.in: Regenerate.
2029 * testsuite/no_version_test.c: New file.
2030 * testsuite/no_version_test.sh: Ditto.
2031
2032 2009-10-16 Doug Kwan <dougkwan@google.com>
2033
2034 * expression.cc (class Segment_start_expression): New class definition.
2035 (Segment_start_expression::value): New method definition.
2036 (script_exp_function_segment_start): Return a new
2037 Segment_start_expression.
2038 * gold/script-c.h (script_saw_segment_start_expression): New function
2039 prototype.
2040 * script-sections.cc (Script_sections::Script_sections): Initialize
2041 SAW_SEGMENT_START_EXPRESSION_ to false.
2042 (Script_sections::set_section_addresses): Use -Ttext, -Tdata
2043 and -Tbbs options to specify section addresses if given in
2044 command line and no SEGMENT_START expression is seen in a script.
2045 * script-sections.h (Script_sections::saw_segment_start_expression,
2046 Script_sections::set_saw_segment_start_expression): New method
2047 definition.
2048 (Script_sections::saw_segment_start_expression_): New data member
2049 declaration.
2050 * script.cc (script_saw_segment_start_expression): New function.
2051 * yyscript.y (SEGMENT_START): Call script_saw_segment_start_expression.
2052 * testsuite/Makefile.am (check_SCRIPTS): Add script_test_6.sh,
2053 script_test_7.sh and script_test_8.sh.
2054 (check_DATA): Add script_test_6.stdout, script_test_7.stdout and
2055 script_test_8.stdout.
2056 (MOSTLYCLEANFILES): Add script_test_6, script_test_7 and script_test_8.
2057 (script_test_6, script_test_6.stdout, script_test_7,
2058 script_test_7.stdout, script_test_8, script_test_8.stdout): New rules.
2059 * Makefile.in: Regenerate.
2060 * testsuite/script_test_6.sh: New file.
2061 * testsuite/script_test_6.t: Same.
2062 * testsuite/script_test_7.sh: Same.
2063 * testsuite/script_test_7.t: Same.
2064 * testsuite/script_test_8.sh: Same.
2065
2066 2009-10-16 Doug Kwan <dougkwan@google.com>
2067
2068 * output.cc (Output_segment::set_section_list_address): Cast
2069 expressions to unsigned long long type to avoid format warnings.
2070
2071 2009-10-15 Ian Lance Taylor <iant@google.com>
2072
2073 * script.cc (Script_options::add_symbol_assignment): Always add a
2074 dot assignment to script_sections_.
2075 * script-sections.cc (Script_sections::add_dot_assignment):
2076 Initialize if necessary.
2077
2078 * layout.cc (Layout::relaxation_loop_body): Don't crash if we see
2079 program headers with no load segment if there is a linker script.
2080
2081 * layout.cc (Layout::set_segment_offsets): Align the file offset
2082 to the segment aligment for -N or -n with no load segment.
2083 * output.cc (Output_segment::add_output_section): Don't crash if
2084 the first section is a TLS section.
2085 (Output_segment::set_section_list_addresses): Print an error
2086 message if the address moves backward in a linker script.
2087 * script-sections.cc
2088 (Output_section_element_input::set_section_addresses): Don't
2089 increase *dot_value for a SHF_TLS/SHT_NOBITS section.
2090 (Orphan_output_section::set_section_addresses): Likewise.
2091
2092 2009-10-15 Doug Kwan <dougkwan@google.com>
2093
2094 * layout.cc (Layout::finish_dynamic_section): Generate tags
2095 DT_FINI_ARRAY, DT_FINI_ARRAYSZ, DT_INIT_ARRAY, DT_INIT_ARRAYSZ,
2096 DT_PREINIT_ARRAY, DT_PREINIT_ARRAYSZ as needed. If -Bsymbolic is
2097 used, add DT_SYMBOLIC and set DF_SYMBOLIC in DT_FLAGS.
2098
2099 2009-10-14 Ian Lance Taylor <iant@google.com>
2100
2101 * object.h (class Relocate_info): Add reloc_shdr and data_shdr
2102 fields.
2103 * object.cc (Sized_relobj::relocate_sections): Set reloc_shdr and
2104 data_shdr fields of relinfo.
2105 * i386.cc (class Target_i386::Relocate): Remove ldo_addrs_ field.
2106 (Target_i386::Relocate::relocate_tls): Don't call fix_up_ldo. For
2107 R_386_TLS_LDO_32, adjust based on section flags.
2108 (Target_i386::Relocate::fix_up_ldo): Remove.
2109
2110 2009-10-13 Ian Lance Taylor <iant@google.com>
2111
2112 Add support for -pie.
2113 * options.h (class General_options): Add -pie and
2114 --pic-executable.
2115 (General_options::output_is_position_independent): Test -pie.
2116 (General_options::output_is_executable): Return true if not shared
2117 and not relocatable.
2118 (General_options::output_is_pie): Remove.
2119 * options.cc (General_options::finalize): Reject incompatible uses
2120 of -pie.
2121 * gold.cc (queue_middle_tasks): A -pie link is not static.
2122 * symtab.h (Symbol::needs_plt_entry): Return false if -pie.
2123 * symtab.cc (Symbol::final_value_is_known): Return false if
2124 output_is_position_independent.
2125 * layout.cc (Layout::set_segment_offsets): Start at address 0 if
2126 output_is_position_independent.
2127 * output.cc (Output_file_header::do_sized_write): Use ET_DYN if
2128 output_is_position_independent.
2129 * i386.cc (Output_data_plt_i386::do_write): Use the PIC PLT if
2130 output_is_position_independent.
2131 * testsuite/Makefile.am (check_PROGRAMS): Add basic_pie_test and
2132 two_file_pie_test.
2133 (basic_pie_test.o, basic_pie_test): New targets.
2134 (two_file_test_1_pie.o, two_file_test_1b_pie.o): New targets.
2135 (two_file_test_2_pie.o, two_file_test_main_pie.o): New targets.
2136 (two_file_pie_test): New target.
2137 * testsuite/Makefile.in: Rebuild.
2138 * README: Remove note saying that -pie is not supported.
2139
2140 2009-10-13 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
2141
2142 * options.h (class General_options): Add -init and -fini.
2143 * layout.cc (Layout::finish_dynamic_section): Emit
2144 given init and fini functions.
2145
2146 2009-10-13 Sriraman Tallam <tmsriram@google.com>
2147
2148 * gc.h (gc_process_relocs): Check if icf is enabled using new
2149 function.
2150 * gold.cc (queue_initial_tasks): Likewise.
2151 (queue_middle_tasks): Likewise.
2152 * object.cc (do_layout): Likewise.
2153 * symtab.cc (is_section_folded): Likewise.
2154 * main.cc (main): Likewise.
2155 * reloc.cc (Read_relocs::run): Likewise.
2156 (Sized_relobj::do_scan_relocs): Likewise.
2157 * icf.cc (is_function_ctor_or_dtor): New function.
2158 (Icf::find_identical_sections): Check if function is ctor or dtor when
2159 safe icf is chosen.
2160 * options.h (General_options::icf): Change option to be an enum.
2161 (Icf_status): New enum.
2162 (icf_enabled): New method.
2163 (icf_safe_folding): New method.
2164 (set_icf_status): New method.
2165 (icf_status_): New variable.
2166 * (options.cc) (General_options::finalize): Set icf_status_.
2167 * testsuite/Makefile.am: Add commands to build icf_safe_test. Modify
2168 icf_test and icf_keep_unique_test to use the --icf enum flag.
2169 * testsuite/icf_safe_test.sh: New file.
2170 * testsuite/icf_safe_test.cc: New file.
2171
2172 2009-10-12 Sriraman Tallam <tmsriram@google.com>
2173
2174 * symtab.h: Check for GOLD_SYMTAB_H before header includes. Remove
2175 includes to gc.h and icf.h.
2176 * arm.cc: Include gc.h.
2177 * gold.cc: Likewise.
2178 * i386.cc: Likewise.
2179 * powerpc.cc: Likewise.
2180 * sparc.cc: Likewise.
2181 * x86_64.cc: Likewise.
2182 * gc.h: Include icf.h.
2183
2184 2009-10-11 Ian Lance Taylor <iant@google.com>
2185
2186 * plugin.cc: Include "gold.h" before other header files.
2187
2188 2009-10-10 Chris Demetriou <cgd@google.com>
2189
2190 * options.h (Input_file_argument::Input_file_type): New enum.
2191 (Input_file_argument::is_lib_): Replace with...
2192 (Input_file_argument::type_): New member.
2193 (Input_file_argument::Input_file_argument): Take Input_file_type
2194 'type' rather than boolean 'is_lib' as second argument.
2195 (Input_file_argument::is_lib): Use type_.
2196 (Input_file_argument::is_searched_file): New function.
2197 (Input_file_argument::may_need_search): Handle is_searched_file.
2198 * options.cc (General_options::parse_library): Support -l:filename.
2199 (General_options::parse_just_symbols): Update for Input_file_argument
2200 changes.
2201 (Command_line::process): Likewise.
2202 * archive.cc (Archive::get_file_and_offset): Likewise.
2203 * plugin.cc (Plugin_manager::release_input_file): Likewise.
2204 * script.cc (read_script_file, script_add_file): Likewise.
2205 * fileread.cc (Input_file::Input_file): Likewise.
2206 (Input_file::will_search_for): Handle is_searched_file.
2207 (Input_file::open): Likewise.
2208 * readsyms.cc (Read_symbols::get_name): Likewise.
2209 * testsuite/Makefile.am (searched_file_test): New test.
2210 * testsuite/Makefile.in: Regenerate.
2211 * testsuite/searched_file_test.cc: New file.
2212 * testsuite/searched_file_test_lib.cc: New file.
2213
2214 2009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
2215 Ian Lance Taylor <iant@google.com>
2216
2217 * descriptor.cc: Include <cstdio> and "binary-io.h".
2218 (Descriptors::open): Open the files in binary mode always.
2219 * script.cc (Lex::get_token): Treat \r as whitespace.
2220
2221 2009-10-09 Ian Lance Taylor <iant@google.com>
2222
2223 * testsuite/retain_symbols_file_test.sh: Don't test for __tcf_0.
2224
2225 2009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
2226 Ian Lance Taylor <iant@google.com>
2227
2228 * configure.ac: Check for readv function also.
2229 * fileread.cc (readv): Define if not HAVE_READV.
2230 * fileread.h (File_read:: max_readv_entries): Set to 1 if readv
2231 does not exist.
2232 * config.in: Regenerate.
2233 * configure: Regenerate.
2234
2235 2009-10-09 Doug Kwan <dougkwan@google.com>
2236
2237 * layout.cc (Layout::make_output_section): Call target hook to make
2238 ordinary output section.
2239 (Layout::finalize): Adjust parameter list of call the
2240 Target::may_relax().
2241 * layout.h (class Layout::section_list): New method.
2242 * merge.h (Output_merge_base::entsize): Change visibility to public.
2243 (Output_merge_base::is_string, Output_merge_base::do_is_string):
2244 New methods.
2245 (Output_merge_string::do_is_string): New method.
2246 * object.cc (Sized_relobj::do_setup): renamed from
2247 Sized_relobj::set_up.
2248 * object.h (Sized_relobj::adjust_shndx,
2249 Sized_relobj::initializ_input_to_output_maps,
2250 Sized_relobj::free_input_to_output_maps): Change visibilities to
2251 protected.
2252 (Sized_relobj::setup): Virtualize.
2253 (Sized_relobj::do_setup): New method declaration.
2254 (Sized_relobj::invalidate_section_offset,
2255 Sized_relobj::do_invalidate_section_offset): New method decfinitions.
2256 (Sized_relobj::elf_file, Sized_relobj::local_values): New methods.
2257 * options.cc (parse_int): New function.
2258 * options.h (parse_int): New declaration.
2259 (DEFINE_int): New macro.
2260 (stub_group_size): New option.
2261 * output.cc (Output_section::Output_section): Initialize memebers
2262 merge_section_map_, merge_section_by_properties_map_,
2263 relaxed_input_section_map_, is_relaxed_input_section_map_valid_.
2264 (Output_section::add_input_section): Handled deferred code-fill
2265 generation and remove an old comment.
2266 (Output_section::add_relaxed_input_section): New method definition.
2267 (Output_section::add_merge_input_section): Use merge section by
2268 properties map to speed to search. Update merge section maps
2269 as appropriate.
2270 (Output_section::build_relaxation_map): New method definition.
2271 (Output_section::convert_input_sections_in_list_to_relaxed_sections):
2272 Same.
2273 (Output_section::relax_input_section): Renamed to
2274 Output_section::convert_input_sections_to_relaxed_sections and change
2275 interface to take a vector of pointers to relaxed sections.
2276 (Output_section::find_merge_section,
2277 Output_section::find_relaxed_input_section): New method definitions.
2278 (Output_section::is_input_address_mapped,
2279 Output_section::output_offset, Output_section::output_address):
2280 Use output section data maps to speed up searching.
2281 (Output_section::find_starting_output_address): Add comments.
2282 (Output_section::do_write,
2283 Output_section::write_to_postprocessing_buffer): Do code-fill
2284 generation as appropriate.
2285 (Output_section::get_input_sections): Invalidate relaxed input section
2286 map.
2287 (Output_section::restore_states): Adjust type of checkpoint .
2288 Invalidate relaxed input section map.
2289 * output.h (Output_merge_base): New class declaration.
2290 (Input_section_specifier): New class defintion.
2291 (class Output_relaxed_input_section) Change base class to
2292 Output_section_data_build.
2293 (Output_relaxed_input_section::Output_relaxed_input_section): Adjust
2294 base class initializer.
2295 (Output_section::add_relaxed_input_section): New method declaration.
2296 (Output_section::Input_section): Change visibility to protected.
2297 (Output_section::Input_section::relobj,
2298 Output_section::Input_section::shndx): Handle relaxed input sections.
2299 Output_section::input_sections) Change visibility to protected. Also
2300 define overload to return a non-const pointer.
2301 (Output_section::Merge_section_properties): New class defintion.
2302 (Output_section::Merge_section_by_properties_map,
2303 Output_section::Output_section_data_by_input_section_map,
2304 Output_section::Relaxation_map): New types.
2305 (Output_section::relax_input_section): Rename method to
2306 Output_section::convert_input_sections_to_relaxed_sections and change
2307 interface to take a vector of relaxed section pointers.
2308 (Output_section::find_merge_section,
2309 Output_section::find_relaxed_input_section,
2310 Output_section::build_relaxation_map,
2311 Output_section::convert_input_sections_in_list_to_relaxed_sections):
2312 New method declarations.
2313 (Output_section::merge_section_map_
2314 Output_section::merge_section_by_properties_map_,
2315 Output_section::relaxed_input_section_map_,
2316 Output_section::is_relaxed_input_section_map_valid_,
2317 Output_section::generate_code_fills_at_write_): New data members.
2318 * script-sections.cc
2319 (Output_section_element_input::set_section_addresses): Call
2320 current_data_size and addralign methods of relaxed input sections.
2321 (Orphan_output_section::set_section_addresses): Call current_data_size
2322 and addralign methods of relaxed input sections.
2323 * symtab.cc (Symbol_table::compute_final_value): Extract template
2324 from the body of Symbol_table::sized_finalize_symbol.
2325 (Symbol_table::sized_finalized_symbol): Call
2326 Symbol_table::compute_final_value.
2327 * symtab.h (Symbol_table::Compute_final_value_status): New enum type.
2328 (Symbol_table::compute_final_value): New templated method declaration.
2329 * target.cc (Target::do_make_output_section): New method defintion.
2330 * target.h (Target::make_output_section): New method declaration.
2331 (Target::relax): Add more parameters for input objects, symbol table
2332 and layout. Adjust call to do_relax.
2333 (Target::do_make_output_section): New method declaration.
2334 (Target::do_relax): Add parameters for input objects, symbol table
2335 and layout.
2336
2337 2009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
2338
2339 * pread.c: Include stdio.h.
2340
2341 2009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
2342
2343 * plugin.cc: Don't include dlfcn.h when ENABLE_PLUGINS is not
2344 defined.
2345
2346 2009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
2347
2348 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
2349 Change read_shndx type to unsigned int.
2350 (Sized_dwarf_line_info::read_lines): Change shndx type to unsigned
2351 int.
2352 (Sized_dwarf_line_info::read_line_mappings): Likewise.
2353 * dwarf_reader.h (Sized_dwarf_line_info::Sized_dwarf_line_info):
2354 Change read_shndx type to unsigned int.
2355 (Sized_dwarf_line_info::read_lines): Change shndx type to unsigned
2356 int.
2357 (Sized_dwarf_line_info::read_line_mappings): Likewise.
2358 * layout.cc (Layout::create_symtab_sections): Cast the result of
2359 local_symcount * symsize to off_t in the gold_assert.
2360
2361 2009-10-09 Viktor Kutuzov <vkutuzov@accesssoftek.com>
2362
2363 * arm.cc (Target_arm::relocate::reloc_is_non_pic): Return true for
2364 R_ARM_THM_ABS5, R_ARM_ABS8, R_ARM_ABS12, R_ARM_ABS16,
2365 R_ARM_BASE_ABS.
2366 (Arm_relocate_functions::abs8): Remove has_thumb_bit parameter.
2367 (Arm_relocate_functions::thm_abs5): New function.
2368 (Arm_relocate_functions::abs12): New function.
2369 (Arm_relocate_functions::abs16): New function.
2370 (Arm_relocate_functions::base_abs): New function.
2371 (Scan::check_non_pic): Handle R_ARM_ABS32_NOI.
2372 (Scan::local): Remove special handling of R_ARM_ABS8. Handle
2373 R_ARM_ABS32_NOI, R_ARM_THM_ABS5, R_ARM_ABS12, R_ARM_ABS16, and
2374 R_ARM_BASE_ABS.
2375 (Scan::global): Likewise.
2376 (Relocate::relocate): Handle R_ARM_ABS12, R_ARM_ABS16,
2377 R_ARM_ABS32_NOI, R_ARM_THM_ABS5, and R_ARM_BASE_ABS.
2378 (Relocatable_size_for_reloc::get_size_for_reloc): Handle
2379 R_ARM_ABS16, R_ARM_THM_ABS5, R_ARM_ABS32_NOI, R_ARM_ABS12, and
2380 R_ARM_BASE_ABS.
2381
2382 2009-10-09 Viktor Kutuzov <vkutuzov@accesssoftek.com>
2383
2384 * arm.cc (Arm_relocate_functions::movw_prel_nc): New function.
2385 (Arm_relocate_functions::movt_prel): New function.
2386 (Arm_relocate_functions::thm_movw_prel_nc): New function.
2387 (Arm_relocate_functions::thm_movt_prel): New function.
2388 (Scan::local): Handle R_ARM_MOVW_PREL_NC, R_ARM_MOVT_PREL,
2389 R_ARM_THM_MOVW_PREL_NC, and R_ARM_THM_MOVT_PREL.
2390 (Scan::global, Relocate::relocate): Likewise.
2391 (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
2392
2393 2009-10-09 Mikolaj Zalewski <mikolajz@google.com>
2394
2395 * gold.cc: (queue_initial_tasks): Pass incremental_inputs to
2396 Incremental_checker.
2397 * incremental.cc: (INCREMENTAL_LINK_VERSION): Change type to
2398 unsigned int.
2399 (class Incremental_inputs_header): New class.
2400 (Incremental_inputs_header_writer): Edit comment.
2401 (Incremental_inputs_entry): New class.
2402 (Incremental_inputs_entry_writer): Edit comment.
2403 (Sized_incremental_binary::do_find_incremental_inputs_section):
2404 Add *strtab_shndx parameter, fill it.
2405 (Sized_incremental_binary::do_check_inputs): New method.
2406 (Incremental_checker::can_incrementally_link_output_file): Use
2407 Sized_incremental_binary::check_inputs.
2408 (Incremental_inputs::report_command_line): Save command line in
2409 command_line_.
2410 * incremental.h:
2411 (Incremental_binary::find_incremental_inputs_section): New
2412 method.
2413 (Incremental_binary::do_find_incremental_inputs_section): Add
2414 strtab_shndx parameter.
2415 (Incremental_binary::do_check_inputs): New pure virtual method.
2416 (Sized_incremental_binary::do_check_inputs): Declare.
2417 (Incremental_checker::Incremental_checker): Add incremental_inputs
2418 parameter, use it to initialize incremental_inputs_.
2419 (Incremental_checker::incremental_inputs_): New field.
2420 (Incremental_checker::command_line): New method.
2421 (Incremental_checker::inputs): New method.
2422 (Incremental_checker::command_line_): New field.
2423
2424 2009-10-09 Mikolaj Zalewski <mikolajz@google.com>
2425
2426 * incremental.cc: Include <cstdarg> and "target-select.h".
2427 (vexplain_no_incremental): New function.
2428 (explain_no_incremental): New function.
2429 (Incremental_binary::error): New method.
2430 (Sized_incremental_binary::do_find_incremental_inputs_section): New
2431 method.
2432 (make_sized_incremental_binary): New function.
2433 (open_incremental_binary): New function.
2434 (can_incrementally_link_file): Add checks if output is ELF and has
2435 inputs section.
2436 * incremental.h: Include "elfcpp_file.h" and "output.h".
2437 (Incremental_binary): New class.
2438 (Sized_incremental_binary): New class.
2439 (open_incremental_binary): Declare.
2440 * object.cc (is_elf_object): Use
2441 elfcpp::Elf_recognizer::is_elf_file.
2442 (make_elf_object): Use elfcpp::Elf_recognizer::is_valid_header.
2443 * output.h (Output_file::filesize): New method.
2444
2445 2009-10-07 Viktor Kutuzov <vkutuzov@accesssoftek.com>
2446
2447 * arm.cc (Arm_relocate_functions::extract_arm_movw_movt_addend):
2448 New function.
2449 (Arm_relocate_functions::insert_val_arm_movw_movt): New function.
2450 (Arm_relocate_functions::extract_thumb_movw_movt_addend): New
2451 function.
2452 (Arm_relocate_functions::insert_val_thumb_movw_movt): New
2453 function.
2454 (Arm_relocate_functions::movw_abs_nc): New function.
2455 (Arm_relocate_functions::movt_abs): New function.
2456 (Arm_relocate_functions::thm_movw_abs_nc): New function.
2457 (Arm_relocate_functions::thm_movt_abs): New function.
2458 (Scan::local): Handle R_ARM_MOVW_ABS_NC, R_ARM_MOVT_ABS,
2459 R_ARM_THM_MOVW_ABS_NC, R_ARM_THM_MOVT_ABS.
2460 (Scan::global): Likewise.
2461 (Relocate::relocate): Likewise.
2462 (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
2463
2464 2009-10-07 Viktor Kutuzov <vkutuzov@accesssoftek.com>
2465
2466 * arm.cc (Arm_relocate_functions::got_prel) New function.
2467 (Scan::local, Scan::global): Handle R_ARM_GOT_PREL.
2468 (Relocate::relocate): Likewise.
2469 (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
2470
2471 2009-10-06 Ian Lance Taylor <iant@google.com>
2472
2473 * options.h (class General_options): Define
2474 split_stack_adjust_size parameter.
2475 * object.h (class Object): Add uses_split_stack_ and
2476 has_no_split_stack_ fields. Add uses_split_stack and
2477 has_no_split_stack accessor functions. Declare
2478 handle_split_stack_section.
2479 (class Reloc_symbol_changes): Define.
2480 (class Sized_relobj): Define Function_offsets. Declare
2481 split_stack_adjust, split_stack_adjust_reltype, and
2482 find_functions.
2483 * object.cc (Object::handle_split_stack_section): New function.
2484 (Sized_relobj::do_layout): Call handle_split_stack_section.
2485 * dynobj.cc (Sized_dynobj::do_layout): Call
2486 handle_split_stack_section.
2487 * reloc.cc (Sized_relobj::relocate_sections): Call
2488 split_stack_adjust for executable sections in split_stack
2489 objects. Pass reloc_map to relocate_section.
2490 (Sized_relobj::split_stack_adjust): New function.
2491 (Sized_relobj::split_stack_adjust_reltype): New function.
2492 (Sized_relobj::find_functions): New function.
2493 * target-reloc.h: Include "object.h".
2494 (relocate_section): Add reloc_symbol_changes parameter. Change
2495 all callers.
2496 * target.h (class Target): Add calls_non_split method. Declare
2497 do_calls_non_split virtual method. Declare match_view and
2498 set_view_to_nop.
2499 * target.cc: Include "elfcpp.h".
2500 (Target::do_calls_non_split): New function.
2501 (Target::match_view): New function.
2502 (Target::set_view_to_nop): New function.
2503 * gold.cc (queue_middle_tasks): Give an error if mixing
2504 split-stack and non-split-stack objects with -r.
2505 * i386.cc (Target_i386::relocate_section): Add
2506 reloc_symbol_changes parameter.
2507 (Target_i386::do_calls_non_split): New function.
2508 * x86_64.cc (Target_x86_64::relocate_section): Add
2509 reloc_symbol_changes parameter.
2510 (Target_x86_64::do_calls_non_split): New function.
2511 * arm.cc (Target_arm::relocate_section): Add reloc_symbol_changes
2512 parameter.
2513 * powerpc.cc (Target_powerpc::relocate_section): Add
2514 reloc_symbol_changes parameter.
2515 * sparc.cc (Target_sparc::relocate_section): Add
2516 reloc_symbol_changes parameter.
2517 * configure.ac: Call AM_CONDITIONAL for the default target.
2518 * configure: Rebuild.
2519 * testsuite/Makefile.am (TEST_AS): New variable.
2520 (check_SCRIPTS): Add split_i386.sh and split_x86_64.sh.
2521 (check_DATA): Add split_i386 and split_x86_64 files.
2522 (SPLIT_DEFSYMS): Define.
2523 (split_i386_[1234n].o): New targets.
2524 (split_i386_[124]): New targets.
2525 (split_i386_[1234r].stdout): New targets.
2526 (split_x86_64_[1234n].o): New targets.
2527 (split_x86_64_[124]): New targets.
2528 (split_x86_64_[1234r].stdout): New targets.
2529 (MOSTLYCLEANFILES): Add new executables.
2530 * testsuite/split_i386.sh: New file.
2531 * testsuite/split_x86_64.sh: New file.
2532 * testsuite/split_i386_1.s: New file.
2533 * testsuite/split_i386_2.s: New file.
2534 * testsuite/split_i386_3.s: New file.
2535 * testsuite/split_i386_4.s: New file.
2536 * testsuite/split_i386_n.s: New file.
2537 * testsuite/split_x86_64_1.s: New file.
2538 * testsuite/split_x86_64_2.s: New file.
2539 * testsuite/split_x86_64_3.s: New file.
2540 * testsuite/split_x86_64_4.s: New file.
2541 * testsuite/split_x86_64_n.s: New file.
2542 * testsuite/testfile.cc (Target_test): Update relocation_section
2543 function.
2544 * testsuite/Makefile.in: Rebuild.
2545
2546 2009-10-06 Ian Lance Taylor <iant@google.com>
2547
2548 * i386.cc (class Target_i386::Relocate): Add ldo_addrs_ field.
2549 (Target_i386::Relocate::relocate_tls): Call fix_up_ldo before
2550 changing local_dynamic_type_ from LOCAL_DYNAMIC_NONE. When
2551 handling R_386_TLS_LDO_32, if local_dynamic_type_ is NONE, push
2552 the address on ldo_addrs_.
2553 (Target_i386::Relocate::fix_up_ldo): New function.
2554
2555 2009-10-06 Rafael Espindola <espindola@google.com>
2556
2557 * plugin.cc (add_input_library): New.
2558 (Plugin::load): Add add_input_library to tv.
2559 (Plugin_manager::add_input_file): Add the is_lib argument.
2560 (add_input_file): Update call to Plugin_manager::add_input_file.
2561 (add_input_library): New.
2562 * plugin.h (Plugin_manager::add_input_file): Add the is_lib argument.
2563
2564 2009-09-30 Doug Kwan <dougkwan@google.com>
2565
2566 * arm.cc (Target_arm::may_need_copy_reloc): Check for THUMB function
2567 symbol and call Symbol::may_need_copy_reloc to determine if
2568 a copy reloc is needed.
2569 * copy-relocs.cc (Copy_relocs::need_copy_reloc): Return false if -z
2570 nocopyreloc is given in command line.
2571 (Copy_relocs::emit_copy_reloc): Assert that -z nocopyreloc is not
2572 given in command line.
2573 * i386.cc (Target_i386::may_need_copy_reloc): Remove.
2574 (Target_i386::Scan::global): Use Symbol::may_need_copy_reloc instead
2575 of the removed Target_i386::may_need_copy_reloc.
2576 * options.h (copyreloc): New option with default value false.
2577 * powerpc.cc (Target_powerpc::may_need_copy_reloc): Remove.
2578 (Target_powerpc::Scan::global): Use Symbol::may_need_copy_reloc
2579 instead of the removed Target_powerpc::may_need_copy_reloc.
2580 * sparc.cc (Target_powerpc::may_need_copy_reloc): Remove.
2581 (Target_sparc::Scan::global): Use Symbol::may_need_copy_reloc
2582 instead of the removed Target_sparc::may_need_copy_reloc.
2583 * symtab.h (Symbol::may_need_copy_reloc): New method definition.
2584 * x86_64.cc (Target_powerpc::may_need_copy_reloc): Remove.
2585 (Target_x86_64::Scan::global): Use Symbol::may_need_copy_reloc
2586 instead of the removed Target_x86_64::may_need_copy_reloc.
2587
2588 2009-09-30 Ian Lance Taylor <iant@google.com>
2589
2590 * object.h (class Object): Remove target_ field, and target,
2591 sized_target, and set_target methods.
2592 (Object::sized_target): Remove.
2593 (class Sized_relobj): Update declarations. Remove sized_target.
2594 * object.cc (Sized_relobj::setup): Remove target parameter.
2595 Change all callers.
2596 (Input_objects::add_object): Don't do anything with the target.
2597 (make_elf_sized_object): Add punconfigured parameter. Change all
2598 callers. Set or test parameter target.
2599 * dynobj.cc (Sized_dynobj::target): Remove target parameter.
2600 Change all callers.
2601 * parameters.cc (Parameters::set_target): Change parameter type to
2602 be non-const.
2603 (Parameters::default_target): Remove.
2604 (set_parameters_target): Change parameter type to be non-const.
2605 (parameters_force_valid_target): New function.
2606 (parameters_clear_target): New function.
2607 * parameters.h (class Parameters): Update declarations. Remove
2608 default_target method. Add sized_target and clear_target
2609 methods. Change target_ to be non-const.
2610 (set_parameters_target): Update declaration.
2611 (parameters_force_valid_target): Declare.
2612 (parameters_clear_target): Declare.
2613 * readsyms.cc (Read_symbols::do_read_symbols): Pass punconfigured
2614 as NULL if we aren't searching.
2615 (Add_symbols::run): Don't check for compatible target.
2616 * fileread.cc (Input_file::open_binary): Call
2617 parameters_force_valid_target.
2618 * gold.cc (queue_middle_tasks): Likewise.
2619 * plugin.cc (make_sized_plugin_object): Likewise. Don't call
2620 set_target on object.
2621 * dynobj.h (class Sized_dynobj): Update declarations.
2622 * archive.cc (Archive::get_elf_object_for_member): Return NULL if
2623 make_elf_object returns NULL.
2624 (Archive::include_member): Don't check whether object target is
2625 compatible.
2626 * output.cc (Output_section::add_input_section): Get target from
2627 parameters.
2628 (Output_section::relax_input_section): Likewise.
2629 * reloc.cc (Sized_relobj::do_gc_process_relocs): Get target from
2630 parameters.
2631 (Sized_relobj::do_scan_relocs): Likewise.
2632 (Sized_relobj::relocate_sections): Likewise.
2633 * resolve.cc (Symbol_table::resolve): Likewise.
2634 * symtab.cc (Symbol_table::wrap_symbol): Likewise. Remove object
2635 parameter. Change all callers.
2636 (Symbol_table::add_from_object): Get target from parameters.
2637 (Symbol_table::add_from_relobj): Don't check object target.
2638 (Symbol_table::add_from_dynobj): Likewise.
2639 (Symbol_table::define_special_symbol): Get target from
2640 parameters.
2641 * symtab.h (class Symbol_table): Update declaration.
2642 * testsuite/binary_unittest.cc (gold_testsuite): Remove target
2643 parameter. Change all callers. Clear parameter target.
2644 (Binary_test): Test target here.
2645 * testsuite/object_unittest.cc (gold_testsuite): Remove
2646 target_test_pointer parameter. Change all callers.
2647 (Object_test): Test target here.
2648
2649 2009-09-26 Ian Lance Taylor <iant@google.com>
2650
2651 * testsuite/initpri1.c: Don't try to use constructor priorities if
2652 compiling with gcc before 4.3.
2653
2654 2009-09-22 Mikolaj Zalewski <mikolajz@google.com>
2655
2656 * testsuite/retain_symbols_file_test.sh (check_present): Change
2657 output file name to retain_symbols_file_test.stdout.
2658 (check_absent): Likewise.
2659
2660 2009-09-18 Craig Silverstein <csilvers@google.com>
2661
2662 * object.cc (Sized_relobj::do_count): Test should_retain_symbol map.
2663 * options.cc: Include <cerrno> and <fstream>.
2664 (General_options::finalize): Parse -retain-symbols-file tag.
2665 * options.h: New flag.
2666 (General_options): New method should_retain_symbol, new
2667 variable symbols_to_retain.
2668 * symtab.cc (Symbol_table::sized_finalize_symbol): Test
2669 should_retain_symbol map.
2670 * testsuite/Makefile.am (retain_symbols_file_test): New test.
2671 * testsuite/Makefile.in: Regenerate.
2672 * testsuite/retain_symbols_file_test.sh: New file.
2673
2674 2009-09-18 Nick Clifton <nickc@redhat.com>
2675
2676 * po/es.po: Updated Spanish translation.
2677
2678 2009-09-17 Doug Kwan <dougkwan@google.com>
2679
2680 * debug.h (DEBUG_RELAXATION): New constant.
2681 (DEBUG_ALL): Add DEBUG_RELAXATION.
2682 (debug_string_to_enum): Add relaxation debug option.
2683 * layout.cc
2684 (Layout::Relaxation_debug_check::check_output_data_for_reset_values,
2685 Layout::Relaxation_debug_check::read_sections,
2686 Layout::Relaxation_debug_check::read_sections): New method definitions.
2687 (Layout::Layout): Initialize data members
2688 record_output_section_data_from_scrips_,
2689 script_output_section_data_list_ and relaxation_debug_check_.
2690 (Layout::save_segments, Layout::restore_segments,
2691 Layout::clean_up_after_relaxation, Layout::prepare_for_relaxation,
2692 Layout::relaxation_loop_body): New method definitions.
2693 (Layout::finalize): Support relaxation. Move section layout code to
2694 Layout::relaxation_loop_body.
2695 (Layout::set_asection_address_from_script): Move code for orphan
2696 section placement out.
2697 (Layout::place_orphan_sections_in_script): New method definition.
2698 * layout.h (Output_segment_headers, Output_file_header):
2699 New forward class declarations.
2700 (Layout::~Layout): Define.
2701 (Layout::new_output_section_data_from_script): New method definition.
2702 (Layout::place_orphan_sections_in_script): New method declaration.
2703 (Layout::Segment_states): New type declaration.
2704 (Layout::save_segments, Layout::restore_segments,
2705 Layout::clean_up_after_relaxation, Layout::prepare_for_relaxation,
2706 Layout::relaxation_loop_body): New method declarations.
2707 (Layout::Output_section_data_list): New type declaration.
2708 (Layout::Relaxation_debug_check): New class definition.
2709 (Layout::record_output_section_data_from_script_,
2710 Layout::script_output_section_data_list_, Layout::segment_states_,
2711 Layout::relaxation_debug_check_): New data members.
2712 * output.cc: (Output_section_headers::do_size): New method definition.
2713 (Output_section_headers::Output_section_headers): Move size
2714 computation to Output_section_headers::do_size.
2715 (Output_segment_headers::do_size): New method definition.
2716 (Output_file_header::Output_file_header): Move size computation to
2717 Output_file_header::do_size and call it.
2718 (Output_file_header::do_size): New method definition.
2719 (Output_data_group::Output_data_group): Adjust call to
2720 Output_section_data.
2721 (Output_data_dynamic::set_final_data_size): Add DT_NULL tag only once.
2722 (Output_symtab_xindex::do_write): Add array bound check.
2723 (Output_section::Input_section::print_to_mapfile): Handle
2724 RELAXED_INPUT_SECTION_CODE.
2725 (Output_section::Output_section): Initialize data member checkpoint_.
2726 (Output_section::~Output_section): Delete checkpoint object pointed
2727 by checkpoint_.
2728 (Output_section::add_input_section): Always add an Input_section if
2729 relaxing.
2730 (Output_section::add_merge_input_section): Add assert.
2731 (Output_section::relax_input_section): New method definition.
2732 (Output_section::set_final_data_size): Set load address to zero for
2733 an unallocated section.
2734 (Output_section::do_address_and_file_offset_have_reset_values):
2735 New method definition.
2736 (Output_section::Input_section_sort_enty::Input_section_sort_enty):
2737 Handle relaxed input section.
2738 (Output_section::sort_attached_input_sections): Checkpoint input
2739 section list lazily.
2740 (Output_section::get_input_sections): Change type of input_sections to
2741 list of Simple_input_section pointers. Checkpoint input section list
2742 lazily. Also handle relaxed input sections.
2743 (Output_section::add_input_section_for_script): Take a reference to
2744 a Simple_input_section object instead of Relobj pointer and section
2745 index as parameter. Handle relaxed input sections.
2746 (Output_section::save_states, Output_section::restore_states): New
2747 method definitions.
2748 * output.h (Output_data::Output_data): Initialize is_data_size_fixed_.
2749 (Output_data::is_data_size_fixed): New method definition.
2750 (Output_data::reset_addresss_and_file_offset): Do not reset data size
2751 if it is fixed.
2752 (Output_data::address_and_file_offset_have_reset_values): New method
2753 definition.
2754 (Output_data::do_address_and_file_offset_have_reset_values): New method
2755 definition.
2756 (Output_data::set_data_size): Check that data size is not fixed.
2757 (Output_data::fix_data_size): New method definition.
2758 (Output_data::is_data_size_fixed_): New data member.
2759 (Output_section_headers::set_final_data_size): New method definition.
2760 (Output_section_headers::do_size): New method declaration.
2761 (Output_segment_headers::set_final_data_size): New method definition.
2762 (Output_segment_headers::do_size): New method declaration.
2763 (Output_file_header::set_final_data_size)::New method definition.
2764 (Output_file_header::do_size)::New method declaration.
2765 (Output_section_data::Output_section_data): Add new parameter
2766 is_data_size_fixed and use it to fix data size.
2767 (Output_data_const::Output_data_const): Adjust call to base class
2768 constructor and fix data size.
2769 (Output_data_const_buffer::Output_data_const_buffer): Adjust call to
2770 base class constructor and fix data size.
2771 (Output_data_fixed_space::Output_data_fixed_space): Adjust call to
2772 base class constructor and fix data size.
2773 (Output_data_zero_fill::Output_data_zero_fill): Adjust call to base
2774 class constructor and fix data size.
2775 (Output_data_group::set_final_data_size): New method definition.
2776 (Output_data_dynamic::Dynamic_entry::tag): New method definition.
2777 (Output_symtab_xindex::Output_symtab_xindex): Adjust call to base
2778 class constructor and fix data size.
2779 (Output_relaxed_input_section): New class definition.
2780 (Output_section::Simple_input_section): New class definition.
2781 (Output_section::get_input_sections): Adjust parameter list.
2782 (Output_section::add_input_section_for_script): Same.
2783 (Output_section::save_states, Output_section::restore_states,
2784 Output_section::do_address_and_file_offset_have_reset_values,
2785 (Output_section::Input_section::Input_section): Handle
2786 RELAXED_INPUT_SECTION_CODE. Add new overload for
2787 Output_relaxed_input_section.
2788 (Output_section::Input_section::is_input_section,
2789 Output_section::Input_section::set_output_section): Handle relaxed
2790 input section.
2791 (Output_section::Input_section::is_relaxed_input_section,
2792 Output_section::Input_section::output_section_data,
2793 Output_section::Input_section::relaxed_input_section): New method
2794 definitions.
2795 (Output_section::Input_section::RELAXED_INPUT_SECTION_CODE): New enum
2796 value.
2797 (Output_section::Input_section::u1_): Update comments.
2798 (Output_section::Input_section::u2_): Add new union member poris.
2799 (Output_section::Checkpoint_output_section): New classs definition.
2800 (Output_section::relax_input_section): New method declaration.
2801 (Output_section::checkpoint_): New data member.
2802 (Output_segment): Update comments.
2803 (Output_segment::Output_segment): Un-privatize copy constructor.
2804 (Output_segment::operator=): Un-privatize.
2805 * script-sections.cc (Output_section_element::Input_section_list):
2806 Change element type to Output_section::Simple_input_section.
2807 (Output_section_element_dot_assignment::set_section_addresses):
2808 Register output section data for relaxation clean up.
2809 (Output_data_exression::Output_data_expression): Adjust call to base
2810 constructor to fix data size.
2811 (Output_section_element_data::set_section_addresses): Register
2812 Output_data_expression object for relaxation clean up.
2813 (struct Input_section_info): Replace Relobj pointer and section index
2814 pair with Output_section::Simple_input_section and Convert struct to a
2815 class.
2816 (Input_section_sorter::operator()): Adjust access to
2817 Input_section_info data member to use accessors.
2818 (Output_section_element_input::set_section_addresses): Use layout
2819 parameter. Adjust code to use Output_section::Simple_input_section
2820 and Input_secction_info classes. Register filler for relaxation
2821 clean up.
2822 (Orphan_output_section::set_section_addresses): Replace Relobj pointer
2823 and section index pair with Output_section::Simple_input_section
2824 class. Adjust code accordingly.
2825 (Phdrs_element::release_segment): New method definition.
2826 (Script_sections::attach_sections_using_phdrs_clause): Do not modify
2827 segment list.
2828 (Script_sections::release_segments): New method definition.
2829 * gold/script-sections.h (Script_sections::release_segments): New
2830 method declaration.
2831 * gold/target.h (Target::may_relax, Target::relax,
2832 Target::do_may_relax, Target::do_relax): New method definitions.
2833
2834 2009-09-17 Viktor Kutuzov <vkutuzov@accesssoftek.com>
2835
2836 * arm.cc (has_signed_unsigned_overflow): New function.
2837 (Arm_relocate_functions::abs8): New function.
2838 (Target_arm::Scan::local): Handle R_ARM_ABS8.
2839 (Target_arm::Scan::global): Likewise.
2840 (Target_arm::relocate::relocate): Likewise.
2841 (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
2842 Likewise.
2843
2844 2009-09-16 Cary Coutant <ccoutant@google.com>
2845
2846 * testsuite/Makefile.am (MOSTLYCLEANFILES): Add more generated files.
2847 * testsuite/Makefile.in: Regenerate.
2848
2849 2009-09-11 Nick Clifton <nickc@redhat.com>
2850
2851 * po/gold.pot: Updated by the Translation project.
2852
2853 2009-09-08 Cary Coutant <ccoutant@google.com>
2854
2855 * output.cc (Output_file::open): Add execute permission to empty file.
2856 * testsuite/Makefile.am (permission_test): New test.
2857 * testsuite/Makefile.in: Regenerate.
2858
2859 2009-09-02 Ian Lance Taylor <iant@google.com>
2860
2861 * output.cc (Output_file::resize): Call map_no_anonymous rather
2862 than map.
2863
2864 2009-09-01 Mikolaj Zalewski <mikolajz@google.com>
2865
2866 * gold.cc: Include "incremental.h".
2867 (queue_initial_tasks): Call Incremental_checker methods.
2868 * incremental.cc: Include "output.h".
2869 (Incremental_checker::can_incrementally_link_output_file): New
2870 method.
2871 * incremental.h (Incremental_checker): New class.
2872
2873 * output.cc (Output_file::open_for_modification): New method.
2874 (Output_file::map_anonymous): Changed return type to bool. Record
2875 map in base_ field.
2876 (Output_file::map_no_anonymous): New method, broken out of map.
2877 (Output_file::map): Use map_no_anonymous and map_anonymous.
2878 * output.h (class Output_file): Update declarations.
2879
2880 2009-08-24 Cary Coutant <ccoutant@google.com>
2881
2882 * options.h (Command_line::Pre_options): New class.
2883 (Command_line::pre_options): New member.
2884 * options.cc (gold::options::ready_to_register): New variable.
2885 (One_option::register_option): Do nothing if not registering options.
2886 Assert if same short option registered twice.
2887 (General_options::General_options): Turn off option registration when
2888 done constructing.
2889 (Command_line::Pre_options::Pre_options): New constructor.
2890
2891 2009-08-24 Cary Coutant <ccoutant@google.com>
2892
2893 * options.h (General_options::no_keep_memory): Remove incorrect
2894 short option.
2895
2896 2009-08-24 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
2897
2898 * Makefile.am (am__skiplex, am__skipyacc): New.
2899 * Makefile.in: Regenerate.
2900
2901 2009-08-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
2902
2903 * Makefile.am (AM_CPPFLAGS): Renamed from ...
2904 (INCLUDES): ... this.
2905 * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add -Wno-portability.
2906 (AM_CPPFLAGS): Renamed from ...
2907 (INCLUDE): ... this.
2908 * Makefile.in, testsuite/Makefile.in: Regenerate.
2909
2910 * Makefile.in: Regenerate.
2911 * aclocal.m4: Likewise.
2912 * config.in: Likewise.
2913 * configure: Likewise.
2914 * testsuite/Makefile.in: Likewise.
2915
2916 * Makefile.am (AUTOMAKE_OPTIONS): Add foreign.
2917 * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add foreign.
2918 * Makefile.in: Regenerate.
2919 * testsuite/Makefile.in: Regenerate.
2920
2921 2009-08-19 Cary Coutant <ccoutant@google.com>
2922
2923 * resolve.cc (Symbol_table::resolve): Don't complain about defined
2924 symbols in shared libraries overridden by hidden or internal symbols
2925 in the main program.
2926
2927 2009-08-19 Chris Demetriou <cgd@google.com>
2928
2929 * testsuite/debug_msg.sh: Match .* rather than ${srcdir} when
2930 checking source file names in error messages.
2931
2932 2009-08-18 Doug Kwan <dougkwan@google.com>
2933
2934 * dynobj.cc (Sized_dynobj::setup): Take a Target object instead of
2935 an elcpp::Ehdr as parameter. Adjust call to set_target.
2936 * dynobj.h (Sized_dynobj::setup): Take a Target object instead of
2937 an elfcpp::Ehdr as parameter.
2938 * object.cc (Object::set_target): Remove the version that looks up
2939 a target and sets it.
2940 (Sized_relobj::setup): Take a Target object instead of
2941 an elfcpp::Ehdr as parameter. Adjust call to set_target.
2942 (make_elf_sized_object): Find target and ask target to
2943 make an ELF object.
2944 * object.h: (Object::set_target): Remove the version that looks up
2945 a target and sets it.
2946 (Sized_relobj::setup): Take a Target object instead of
2947 an elfcpp:Ehdr as parameter.
2948 * target.cc: Include dynobj.h.
2949 (Target::do_make_elf_object_implementation): New.
2950 (Target::do_make_elf_object): New.
2951 * target.h (Target::make_elf_object): New template declaration.
2952 (Target::do_make_elf_object): New method declarations.
2953 (Target::do_make_elf_object_implementation): New template declaration.
2954
2955 2009-08-14 Ian Lance Taylor <iant@google.com>
2956
2957 * gold.h (FUNCTION_NAME): Define.
2958 (gold_unreachable): Use FUNCTION_NAME.
2959
2960 2009-08-12 Sriraman Tallam <tmsriram@google.com>
2961
2962 * icf.cc (Icf::find_identical_sections): Issue a warning when a
2963 symbol in the --keep-unique list is not found.
2964
2965 2009-08-12 Sriraman Tallam <tmsriram@google.com>
2966
2967 * icf.cc (Icf::find_identical_sections): Unfold symbols that have
2968 been maked as --keep-unique.
2969 (Icf::unfold_section): New function.
2970 * icf.h (Icf::unfold_section): New function.
2971 * options.h (General_options::keep_unique): New option.
2972 * testsuite/Makefile.am: Add commands to build icf_keep_unique_test.
2973 * testsuite/Makefile.in: Regenerate.
2974 * testsuite/icf_keep_unique_test.sh: New file.
2975 * testsuite/icf_keep_unique_test.cc: New file.
2976
2977 2009-08-12 Cary Coutant <ccoutant@google.com>
2978
2979 PR 10471
2980 * resolve.cc (Symbol_table::resolve): Check for references from
2981 dynamic objects to hidden and internal symbols.
2982 * testsuite/Makefile.am (hidden_test.sh): New test.
2983 * testsuite/Makefile.in: Regenerate.
2984 * testsuite/hidden_test.sh: New script.
2985 * testsuite/hidden_test_1.c: New test source.
2986 * testsuite/hidden_test_main.c: New test source.
2987
2988 2009-08-11 Doug Kwan <dougkwan@google.com>
2989
2990 * arm.cc: Update comments.
2991 (Target_arm::do_finalize_sections): Add a special PT_ARM_EXIDX
2992 segment to locate the .ARM.exidx section if present.
2993
2994 2009-08-09 Doug Kwan <dougkwan@google.com>
2995
2996 * dynobj.h (Sized_dynobj::do_section_entsize): Revert the previous
2997 patch.
2998
2999 2009-08-07 Sriraman Tallam <tmsriram@google.com>
3000 * dynobj.h (Sized_dynobj::do_section_entsize): Add return to avoid
3001 compiler warnings.
3002
3003 2009-08-06 Sriraman Tallam <tmsriram@google.com>
3004
3005 * x86_64.cc (Target_x86_64::Relocate::relocate_tls): Check for a
3006 valid tls_segment only for non-debug-section relocations.
3007 * testsuite/Makefile.am: Add gc_tls_test.
3008 * testsuite/Makefile.in: Regenerate.
3009 * testsuite/gc_tls_test.cc: New file.
3010 * testsuite/gc_tls_test.sh: New file.
3011
3012 2009-08-05 Sriraman Tallam <tmsriram@google.com>
3013
3014 * icf.cc: New file.
3015 * icf.h: New file.
3016 * Makefile.am (CCFILES): Add icf.cc.
3017 (HFILES): Add icf.h
3018 * Makefile.in: Regenerate.
3019 * dynobj.h (Sized_dynobj::do_section_entsize): New function.
3020 * gc.h (gc_process_relocs): Populate lists used by icf to contain
3021 section, symbol and addend information for the relocs.
3022 * gold.cc (queue_middle_tasks): Call identical code folding.
3023 * gold.h: Add defines for multimap.
3024 * layout.cc (Layout::create_symtab_sections): Add symtab as parameter
3025 to the call of finalize_local_symbols.
3026 * main.cc (main): Create object of class Icf.
3027 * object.cc (Sized_relobj::do_layout): Allow this function to be
3028 called twice during icf.
3029 (Sized_relobj::do_finalize_local_symbols): Fold symbols corresponding
3030 to sections marked as identical by icf.
3031 (Sized_relobj::do_section_flags): Get section_flags from Symbols_data
3032 when available.
3033 (Sized_relobj::do_section_entsize): New function.
3034 * object.h (Object::section_entsize): New function.
3035 (Object::do_section_entsize): New pure virtual function.
3036 (Relobj::finalize_local_symbols): Add new parameter.
3037 (Relobj::do_section_entsize): New function.
3038 * options.h (General_options::icf): New option.
3039 (General_options::icf_iterations): New option.
3040 (General_options::print_icf_sections): New option.
3041 * plugin.cc (Sized_pluginobj::do_section_entsize): New function.
3042 * plugin.h (Sized_pluginobj::do_section_entsize): New function.
3043 * reloc.cc (Read_relocs::run): Delay scanning relocs when doing
3044 icf.
3045 * symtab.cc (Symbol_table::is_section_folded): New function.
3046 (Symbol_table::sized_finalize_symbol): Fold symbols corresponding
3047 to sections marked as identical by icf.
3048 * symtab.h (Symbol_table::set_icf): New function.
3049 (Symbol_table::icf): New function.
3050 (Symbol_table::is_section_folded): New function.
3051 (Symbol_table::icf_): New data member.
3052 * target-reloc.h (relocate_section): Ignore sections folded by icf.
3053 * testsuite/Makefile.am: Add commands to build icf_test.
3054 * testsuite/Makefile.in: Regenerate.
3055 * testsuite/icf_test.sh: New file.
3056 * testsuite/icf_test.cc: New file.
3057
3058 2009-07-24 Chris Demetriou <cgd@google.com>
3059
3060 * layout.cc (is_compressible_debug_section): Fix incorrect
3061 comment about compressed section names.
3062
3063 2009-07-20 Ian Lance Taylor <ian@airs.com>
3064
3065 PR 10419
3066 * x86_64.cc (Target_x86_64::do_code_fill): Correct nop sequences.
3067
3068 2009-07-16 Ian Lance Taylor <iant@google.com>
3069
3070 PR 10400
3071 * layout.h: #include <map>.
3072 (class Kept_section): Change from struct to class. Add accessors
3073 and setters. Add section size to Comdat_group mapping. Change
3074 Comdat_group to std::map. Add is_comdat_ field. Add
3075 linkonce_size field in union.
3076 (class Layout): Update declaration of find_or_add_kept_section.
3077 Don't declare find_kept_object.
3078 * layout.cc (Layout::find_or_add_kept_section): Remove candidate
3079 parameter. Add object, shndx, is_comdat, and is_group_name
3080 parameters. Change all callers. Adjust for new Kept_section.
3081 (Layout::find_kept_object): Remove.
3082 * object.cc (Sized_relobj::include_section_group): Update use of
3083 Kept_section. Rename secnum to shndx. Only record
3084 Kept_comdat_section if sections are the same size.
3085 (Sized_relobj::include_linkonce_section): Update use of
3086 Kept_section. Only record Kept_comdat_section if sections are the
3087 same size. Set size of linkonce section.
3088 (Sized_relobj::map_to_kept_section): Update call to
3089 get_kept_comdat_section.
3090 * object.h (class Sized_relobj): Rename fields in
3091 Kept_comdat_section to drop trailing underscores; change object
3092 field to Relobj*. Change Kept_comdat_section_table to store
3093 struct rather than pointer.
3094 (Sized_relobj::set_kept_comdat_section): Remove kept parameter.
3095 Add kept_object and kept_shndx parameters. Change all callers.
3096 (Sized_relobj::get_kept_comdat_section): Change return type to
3097 bool. Add kept_object and kept_shndx parameters. Change all
3098 callers.
3099 * plugin.cc (Pluginobj::include_comdat_group): Update call to
3100 Layout::find_or_add_kept_section.
3101
3102 2009-07-09 Ian Lance Taylor <iant@google.com>
3103
3104 * merge.cc (Object_merge_map::initialize_input_to_output_map):
3105 Reserve space in the hash table.
3106
3107 2009-07-06 Mikolaj Zalewski <mikolajz@google.com>
3108
3109 * fileread.cc (File_read::get_mtime): New method.
3110 * fileread.h (Timespec): New structure.
3111 (File_read::get_mtime): New method.
3112 * incremental.cc (Incremental_inputs_entry_data::timestamp_usec):
3113 Renamed from timestamp_nsec.
3114 (Incremental_inputs_entry_write::timestamp_sec): Fix argument to
3115 Elf_Xword.
3116 (Incremental_inputs_entry_write::timestamp_usec): Renamed from
3117 timestamp_nsec.
3118 (Incremental_inputs::report_archive): Save mtime; style fix.
3119 (Incremental_inputs::report_obejct): Save mtime; style fix.
3120 (Incremental_inputs::report_script): Save mtime; style fix.
3121 (Incremental_inputs::finalize_inputs): Style fix.
3122 (Incremental_inputs::finalize): Style fix.
3123 (Incremental_inputs::create_input_section_data): Store inputs
3124 mtime.
3125 * incremental.h (Incremental_inputs::report_script): Add mtime
3126 argument.
3127 (Incremental_inputs::Input_info::Input_info): Intialize only one
3128 union member.
3129 (Incremental_inputs::Input_info::archive): Move to nameless
3130 union.
3131 (Incremental_inputs::Input_info::obejct): Move to nameless union.
3132 (Incremental_inputs::Input_info::script): Move to nameless union.
3133 (Incremental_inputs::mtime): New field.
3134 * script.cc (read_input_script): Pass file mtime to
3135 Incremental_input.
3136 * script.h (Script_info::inputs): Style fix.
3137
3138 2009-07-01 Ian Lance Taylor <ian@airs.com>
3139
3140 * freebsd.h (Target_freebsd::do_adjust_elf_header): Use size
3141 instead of 32.
3142
3143 2009-06-24 Ian Lance Taylor <iant@google.com>
3144
3145 PR 10156
3146 * layout.cc (Layout::choose_output_section): If we find an
3147 existing section, update the flags.
3148 (Layout::create_notes): New function, broken out of
3149 Layout::finalize.
3150 (Layout::finalize): Don't create note sections.
3151 (Layout::create_note): Don't crash if linker script discards
3152 section.
3153 (Layout::create_gold_note): Likewise.
3154 (Layout::create_build_id): Likewise. Don't set
3155 after_input_sections on the section.
3156 (Layout::create_executable_stack_info): Remove target parameter.
3157 Change caller.
3158 * layout.h (class Layout): Declare create_notes. Update
3159 declaration of create_executable_stack_info.
3160 * gold.cc (queue_middle_tasks): Call create_notes.
3161 * output.cc (Output_section::update_flags_for_input_section): Move
3162 here from output.h. If SHF_ALLOC flag is newly set, mark address
3163 invalid.
3164 * output.h (Output_data::mark_address_invalid): New function.
3165 (class Output_section): Only declare, not define,
3166 update_flags_for_input_section. Remove set_flags.
3167
3168 2009-06-24 Ian Lance Taylor <iant@google.com>
3169
3170 * script-sections.cc (Output_section_definition::
3171 set_section_addresses): Rename shadowing local load_address to
3172 laddr.
3173
3174 2009-06-24 Ian Lance Taylor <iant@google.com>
3175
3176 PR 10244
3177 * reloc.cc (relocate_sections): Skip empty relocation sections.
3178
3179 2009-06-23 Ian Lance Taylor <iant@google.com>
3180
3181 PR 10156
3182 * layout.cc (Layout::create_note): Use choose_output_section
3183 rather than make_output_section.
3184
3185 2009-06-23 Ian Lance Taylor <iant@google.com>
3186
3187 PR 10237
3188 * options.cc (General_options::parse_V): Set printed_version_.
3189 (General_options::General_options): Initialize printed_version_.
3190 * options.h (class General_options): Add printed_version_ field.
3191 * gold.cc (queue_initial_tasks): If there are no input files,
3192 don't give a fatal error if we printed the version information.
3193 (queue_middle_tasks): If using -r with a shared object, give a
3194 fatal error rather than an ordinary error.
3195
3196 2009-06-23 Ian Lance Taylor <iant@google.com>
3197
3198 PR 10219
3199 * layout.cc (Layout::Layout): Initialize have_stabstr_section_.
3200 (Layout::make_output_section): Set have_stabstr_section_ if we see
3201 a .stab*str section.
3202 (Layout::finalize): Call link_stabs_sections.
3203 (Layout::link_stabs_sections): New file.
3204 * layout.h (class Layout): Add have_stabstr_section_ field.
3205 Declare link_stabs_sections.
3206
3207 2009-06-23 Doug Kwan <dougkwan@google.com>
3208
3209 * Makefile.am (libgold_a_LIBADD): New.
3210 (ld_new_DEPENDENCIES, ld_new_LDADD): Remove LIBOBJS
3211 * Makefile.in: Regenerate.
3212 * config.in (HAVE_DECL_MEMMEM, HAVE_DECL_STRNDUP): New.
3213 * configure: Regenerate.
3214 * configure.ac (AC_CHECK_DECLS): Add strndup and memmem.
3215 * fileread.cc: Include sys/state.h
3216 * gold.h: Declare memmem and strndup if found missing.
3217 * gold_reloc.h: Include byteswap.h if HAVE_BYTESWAP_H is defined.
3218
3219 2009-06-23 Ian Lance Taylor <iant@google.com>
3220
3221 * configure.ac: Call AC_CHECK_DECLS using C, not C++.
3222 * configure: Rebuild.
3223
3224 2009-06-23 Ian Lance Taylor <iant@google.com>
3225
3226 PR 10147
3227 * object.cc (Object::section_contents): Don't try to get a view if
3228 the section has length zero.
3229 (Object::handle_gnu_warning_section): If the section is empty, use
3230 the name of the section as the warning.
3231
3232 2009-06-23 Ian Lance Taylor <iant@google.com>
3233
3234 PR 10133
3235 * stringpool.h (class Stringpool_template): Add optimize_ field.
3236 (Stringpool_template::set_optimize): New function.
3237 * stringpool.cc (Stringpool_template::Stringpool_template):
3238 Initialize optimize_ field.
3239 (Stringpool_template::set_string_offsets): Test local optimize
3240 fild rather than parameter.
3241 * layout.cc (Layout::Layout): Call set_optimize on the section
3242 name stringpool.
3243
3244 2009-06-22 Ian Lance Taylor <iant@google.com>
3245
3246 PR 10030
3247 * yyscript.y: Parse TARGET.
3248 * script.cc (script_set_target): New function.
3249 * script-c.h (script_set_target): Declare.
3250 * options.cc (General_options::string_to_object_format): Rename
3251 from string_to_object_format in anonymous namespace. Change
3252 callers.
3253 * options.h (class General_options): Declare
3254 string_to_object_format.
3255
3256 2009-06-22 Ian Lance Taylor <iant@google.com>
3257
3258 * script-sections.cc (Script_sections::create_segments): Don't put
3259 program headers in a PT_LOAD segment if -n or -N.
3260
3261 2009-06-22 Ian Lance Taylor <iant@google.com>
3262
3263 PR 10141
3264 * options.h (class General_options): Add -z lazy and -z now. Sort
3265 -z options into alphabetical order.
3266 * layout.cc (Layout::finish_dynamic_section): Handle -z now.
3267
3268 2009-06-21 Ian Lance Taylor <iant@google.com>
3269
3270 * layout.cc (Layout::make_output_section): Call
3271 Target::new_output_section.
3272 (Layout::attach_allocated_section_to_segment): Put large section
3273 sections in a separate load segment with the large segment flag
3274 set.
3275 (Layout::segment_precedes): Sort large data segments after other
3276 load segments.
3277 (align_file_offset): New static function.
3278 (Layout::set_segment_offsets): Use align_file_offset.
3279 * output.h (class Output_section): Add is_small_section_ and
3280 is_large_section_ fields.
3281 (Output_section::is_small_section): New function.
3282 (Output_section::set_is_small_section): New function.
3283 (Output_section::is_large_section): New function.
3284 (Output_section::set_is_large_section): New function.
3285 (Output_section::is_large_data_section): New function.
3286 (class Output_segment): Add is_large_data_segment_ field.
3287 (Output_segment::is_large_data_segment): New function.
3288 (Output_segment::set_is_large_data_segment): New function.
3289 * output.cc (Output_section::Output_section): Initialize new
3290 fields.
3291 (Output_segment::Output_segment): Likewise.
3292 (Output_segment::add_output_section): Add assertion that large
3293 data sections always go in large data segments. Force small data
3294 sections to the end of the list of data sections. Force small BSS
3295 sections to the start of the list of BSS sections. For large BSS
3296 sections to the end of the list of BSS sections.
3297 * symtab.h (class Symbol): Declare is_common_shndx.
3298 (Symbol::is_defined): Check Symbol::is_common_shndx.
3299 (Symbol::is_common): Likewise.
3300 (class Symbol_table): Define enum Commons_section_type. Update
3301 declarations. Add small_commons_ and large_commons_ fields.
3302 * symtab.cc (Symbol::is_common_shndx): New function.
3303 (Symbol_table::Symbol_table): Initialize new fields.
3304 (Symbol_table::add_from_object): Put small and large common
3305 symbols in the right list.
3306 (Symbol_table::sized_finalized_symbol): Check
3307 Symbol::is_common_shndx.
3308 (Symbol_table::sized_write_globals): Likewise.
3309 * common.cc (Symbol_table::do_allocate_commons): Allocate new
3310 common symbol lists. Don't call do_allocate_commons_list if the
3311 list is empty.
3312 (Symbol_table::do_allocate_commons_list): Remove is_tls
3313 parameter. Add comons_section_type parameter. Change all
3314 callers. Handle small and large common symbols.
3315 * object.cc (Sized_relobj::do_finalize_local_symbols): Check
3316 Symbol::is_common_shndx.
3317 * resolve.cc (symbol_to_bits): Likewise.
3318 * target.h (Target::small_common_shndx): New function.
3319 (Target::small_common_section_flags): New function.
3320 (Target::large_common_shndx): New function.
3321 (Target::large_common_section_flags): New function.
3322 (Target::new_output_section): New function.
3323 (Target::Target_info): Add small_common_shndx, large_common_shndx,
3324 small_common_section_flags, and large_common_section_flags
3325 fields.
3326 (Target::do_new_output_section): New virtual function.
3327 * arm.cc (Target_arm::arm_info): Initialize new fields.
3328 * i386.cc (Target_i386::i386_info): Likewise.
3329 * powerpc.cc (Target_powerpc::powerpc_info) [all versions]:
3330 Likewise.
3331 * sparc.c (Target_sparc::sparc_info) [all versions]: Likewise.
3332 * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
3333 (Target_x86_64::do_new_output_section): New function.
3334 * configure.ac: Define conditional MCMODEL_MEDIUM.
3335 * testsuite/Makefile.am (check_PROGRAMS): Add large.
3336 (large_SOURCES, large_CFLAGS, large_DEPENDENCIES): Define.
3337 (large_LDFLAGS): Define.
3338 * testsuite/large.c: New file.
3339 * testsuite/testfile.cc (Target_test::test_target_info):
3340 Initialize new fields.
3341 * configure, testsuite/Makefile.in: Rebuild.
3342
3343 2009-06-05 Doug Kwan <dougkwan@google.com>
3344
3345 * Makefile.am (CCFILES): Add target.cc.
3346 * Makefile.in: Regenerate.
3347 * i386.cc (class Target_i386): Define new virtual method to
3348 override do_is_local_label_name in parent.
3349 * object.cc (Sized_relobj::do_count_local_symbols): Discard
3350 local symbols if --discard-locals or -X is given.
3351 * options.h (class General_options): Declare new options
3352 '--discard-locals' and '-X' for discarding locals.
3353 * target.h (class Target): Define new methods is_local_label_name.
3354 Declare new virtual method do_is_local_label_name.
3355 * target.cc: New file.
3356 * testsuite/Makefile.am (check_PROGRAMS): Add discard_locals_test.
3357 (check_SCRIPTS): Add discard_locals_test.sh.
3358 (check_DATA): Add discard_local_tests.syms.
3359 (discard_locals_test_SOURCES, discard_locals_test_LDFLAGS): Define.
3360 (discard_local_tests.syms, discard_locals_test.o): New make rules.
3361 * testsuite/Makefile.in: Regenerate.
3362 * testsuite/discard_locals_test.c: New file.
3363 * testsuite/discard_locals_test.sh: Same.
3364
3365 2009-06-05 Doug Kwan <dougkwan@google.com>
3366
3367 * object.cc (Sized_relobj::Sized_relobj): Initialize
3368 discarded_eh_frame_shndx_ to -1U.
3369 (Sized_relobj::do_layout): Record index of a discard .eh_frame
3370 section.
3371 (Sized_relobj::do_count_local_symbols): Skip local symbols in
3372 a discarded .eh_frame section.
3373 (Sized_relobj::do_finalize_local_symbols): Ditto.
3374 * object.h (class Sized_relobj): Declare new member
3375 discarded_eh_frame_shndx_.
3376 * testsuite/Makefile.am (check_PROGRAMS): Add local_labels_test.
3377 (local_labels_test.o, local_labels_test): New rules.
3378 * testsuite/Makefile.in: Regenerate.
3379
3380 2009-06-04 Doug Kwan <dougkwan@google.com>
3381
3382 * layout.cc (Layout::section_name_mapping): Add mapping for
3383 special ARM sections.
3384
3385 2009-06-03 Doug Kwan <dougkwan@google.com>
3386
3387 * arm.cc (utils::sign_extend): Reverse test in gold_assert.
3388 (utils::has_overflow): Same.
3389
3390 2009-06-03 Ian Lance Taylor <iant@google.com>
3391
3392 * layout.cc (Layout::section_name_mapping): New array, replacing
3393 Layout::linkonce_mapping.
3394 (Layout::section_name_mapping_count): New variable, replacing
3395 Layout::linkonce_mapping_count.
3396 (Layout::linkonce_output_name): Remove.
3397 (Layout::output_section_name): Rewrite.
3398 * layout.h (class Layout): Rename Linkonce_mapping to
3399 Section_name_mapping, linkonce_mapping to section_name_mapping,
3400 linkonce_mapping_count to section_name_mapping_count. Don't
3401 declare linkonce_output_name.
3402
3403 2009-06-03 Doug Kwan <dougkwan@google.com>
3404
3405 * gold/arm.cc (namespace utils): New.
3406 (Target_arm::reloc_is_non_pic): Define new method.
3407 (class Arm_relocate_functions): New.
3408 (Target_arm::Relocate::relocate): Handle relocation types used by
3409 Android.
3410
3411 2009-06-03 Ian Lance Taylor <iant@google.com>
3412
3413 * arm.cc (Target_arm::scan::global): Use || instead of |.
3414
3415 2009-06-02 Doug Kwan <dougkwan@google.com>
3416
3417 * gold/arm.cc (Target_arm::Scan::Scan): Initialize
3418 issued_non_pic_error_.
3419 (class Target_arm::Scan): Declare new method check_non_pic.
3420 Define new method symbol_needs_plt_entry.
3421 Declare new data member issued_non_pic_error_.
3422 (class Target_arm::Relocate): Declare new method
3423 should_apply_static_reloc.
3424 (Target_arm::may_need_copy_reloc): Handle STT_ARM_TFUNC.
3425 (Target_arm::Scan::check_non_pic): Define new method.
3426 (Target_arm::Scan::local): Handle a small subset of reloc types used
3427 by Android.
3428 (Target_arm::Scan::local): Same.
3429 (Target_arm::Relocate::should_apply_statci_reloc): Define new method.
3430
3431 2009-05-31 Mikolaj Zalewski <mikolajz@google.com>
3432
3433 * incremental.cc (Incremental_inputs::report_command_line): Filter
3434 out --incremental-* options.
3435
3436 2009-05-29 Doug Kwan <dougkwan@google.com>
3437
3438 * gold/arm.cc (Output_data_plt_arm): Forward declaration for new
3439 template class.
3440 (class Target_arm): Update comment.
3441 (Target_arm::Target_arm): Initialize new data members GOT_,
3442 PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_ and DYNBSS_.
3443 Declare new methods Target_arm::got_section, Target_arm::make_plt_entry
3444 and Target_arm::rel_dyn_section.
3445 Declare new_enum Target_arm::Got_type.
3446 Declare new data members GOT_, PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_
3447 and DYNBSS_.
3448 Update commments for member do_dynsym_value.
3449 (Target_arm::got_size, Target_arm::plt_section,
3450 Target_arm::may_need_copy_reloc and Target_arm::copy_reloc): Define
3451 new methods inside class defintion.
3452 (Target_arm::got_section): Define new method.
3453 (Target_arm::rel_dyn_section): Same.
3454 (Output_data_plt_arm): New template class.
3455 (Output_data_plt_arm::Output_data_plt_arm): Define constructor.
3456 (Output_data_plt_arm:do_adjust_output_section): Define new method.
3457 (Output_data_plt_arm::add_entry): Same.
3458 (Output_data_plt_arm::first_plt_entry): Define new
3459 static data member for PLT instruction template.
3460 (Output_data_plt_arm::plt_entry): Same.
3461 (Output_data_plt_arm::do_write): Define new method.
3462 (Target_arm::make_plt_entry): Same.
3463 (Target_arm::do_finalize_sections): Same.
3464 (Target_arm::do_dynsym_value): Same.
3465
3466 2009-05-28 Doug Kwan <dougkwan@google.com>
3467
3468 * Makefile.am (TARGETSOURCES): Add arm.cc.
3469 (ALL_TARGETOBJECTS): Add arm.$(OBJEXT)
3470 * Makefile.in: Regenerate.
3471 * arm.cc: New file.
3472 * configure.tgt: Add armbe*-*-*, armeb*-*-* and arm*-*-* targets.
3473
3474 2009-05-26 Doug Kwan <dougkwan@google.com>
3475
3476 * options.cc (General_options::parse_exclude_libs). Fix a comment.
3477 (General_options::check_excluded_libs): Strip off directories in
3478 archive name before matching like GNU ld does.
3479 * testsuite/Makefile.am (MOSTLYCLEANFILES,
3480 exclude_libs_test_DEPENDENCIES): Add alt/libexclude_libs_test_3.a
3481 (exclude_libs_test_LDFLAGS): Add linker option
3482 -Wl,--exclude-libs,libexclude_libs_test_3
3483 (exclude_libs_test_LADD): Add alt/libexclude_libs_test_3.a as
3484 an explicit archive without using -l.
3485 (alt/libexclude_libs_test_3.a): New make rule.
3486 * testsuite/Makefile.in: Regenerate.
3487 * testsuite/exclude_libs_test.c : Declare lib3_default().
3488 (main): Call it.
3489 * exclude_libs_test.sh: Add tests for alt/exclude_libs_test_3.a.
3490 * exclude_libs_test_3.c: New file.
3491
3492 2009-05-26 Nick Clifton <nickc@redhat.com>
3493
3494 * po/id.po: New Indonesian translation.
3495 * po/gold.pot: Updated template file.
3496
3497 2009-05-22 Sriraman Tallam <tmsriram@google.com>
3498
3499 * testsuite/Makefile.am: Add -ffunction-sections to compile
3500 gc_comdat_test files. Add -Wl,--gc-sections to build
3501 gc_comdat_test.
3502 * testsuite/Makefile.in: Regenerate.
3503 * testsuite/gc_comdat_test.sh: Fix the condition around grep.
3504
3505 2009-05-21 Sriraman Tallam <tmsriram@google.com>
3506
3507 * object.cc (Sized_relobj::map_to_kept_section): Return NULL if the
3508 kept comdat section was garbage collected.
3509 * testsuite/Makefile.am: Add test gc_comdat_test.sh.
3510 * testsuite/Makefile.in: Regenerate.
3511 * testsuite/gc_comdat_test.sh: New file.
3512 * testsuite/gc_comdat_test_1.cc: New file.
3513 * testsuite/gc_comdat_test_2.cc: New file.
3514
3515 2009-05-19 Doug Kwan <dougkwan@google.com>
3516
3517 * archive.cc (Archive::Archive): Move constructor from archive.h
3518 to here. Initialize no_export_.
3519 (Archive::get_elf_object_for_member): Set no_export flag of object.
3520 * archive.h (Archive::Archive): Move constructor body to
3521 archive.cc.
3522 (Archive::no_export): New method.
3523 (Archive::no_export_): New field.
3524 * object.h (Object::Object): Initialize no_export_ to false.
3525 (Object::no_export, Object::set_no_export): New methods.
3526 (Object::no_export_): New field.
3527 * options.cc (General_options::parse_exclude_libs): New method.
3528 (General_options::check_excluded_libs) Same.
3529 * options.h (exclude_libs): New option.
3530 (General_options::check_excluded_libs): New method declaration.
3531 (General_options::excluded_libs_): New field.
3532 * symtab.cc (Symbol_table::add_from_relobj): Hide symbols with
3533 default or protected visibility if an object has no-export flag set.
3534 testsuite/Makefile.am (check_PROGRAMS): Add exclude_libs_test.
3535 (check_SCRIPTS): Add exclude_libs_test.sh.
3536 (check_DATA): Add exclude_libs_test.syms.
3537 (MOSTLYCLEANFILES): Add exclude_libs_test.syms,
3538 libexclude_libs_test_1.a and libexclude_libs_test_2.a.
3539 (exclude_libs_test_SOURCES, exclude_libs_test_DEPENDENCIES,
3540 exclude_libs_test_LDFLAGS and exclude_libs_test_LDADD): Define.
3541 (exclude_libs_test.syms, libexclude_libs_test_1.a,
3542 libexclude_libs_test_2.a): New rules.
3543 * testsuite/Makefile.in: Regenerate.
3544 * testsuite/exclude_libs_test.c: New file.
3545 * testsuite/exclude_libs_test.sh: Ditto.
3546 * testsuite/exclude_libs_test_1.c: Ditto.
3547 * testsuite/exclude_libs_test_2.c: Ditto.
3548
3549 2009-05-15 Ian Lance Taylor <iant@google.com>
3550
3551 * configure.ac: Check for declarations for cases where libiberty.h
3552 checks HAVE_DECL_xxx.
3553 * configure, config.in: Rebuild.
3554
3555 2009-05-15 Mikolaj Zalewski <mikolajz@google.com>
3556
3557 * gold.h (Incremental_argument_list): Remove (invalid) forward
3558 declaration.
3559 * incremental.cc (Incremental_inputs::report_achive): New method.
3560 (Incremental_inputs::report_object): New method.
3561 (Incremental_inputs::report_script): New method.
3562 (Incremental_inputs::finalize_inputs): New method.
3563 (Incremental_inputs::finalize): Call finalize_inputs().
3564 (Incremental_inputs::sized_create_incremental_inputs_section_data):
3565 Create inputs entries.
3566 * incremental.h (Incremental_input_type): New enum.
3567 (Incremental_inputs::Incremental_input): Initialize new fields.
3568 (Incremental_inputs::report_inputs): New method.
3569 (Incremental_inputs::report_achive): New method.
3570 (Incremental_inputs::report_object): New method.
3571 (Incremental_inputs::report_script): New method.
3572 (Incremental_inputs::finalize_inputs): New method.
3573 (Incremental_inputs::Input_info): New struct.
3574 (Incremental_inputs::Input_info_map): New typedef.
3575 (Incremental_inputs::lock_): New field.
3576 (Incremental_inputs::Inputs_): New field.
3577 (Incremental_inputs::Inputs_map): New field.
3578 * main.cc (main): Call Incremental_input::report_inputs.
3579 * options.h (Input_argument_list): Typedef moved from
3580 Input_arguments.
3581 (Input_file_group::Files): Remove, use ::Input_argument_list.
3582 (Input_file_group::Input_argument_list): Remove, use
3583 ::Input_argument_list.
3584 * plugin.cc (Plugin_manager::add_input_file): Add error in
3585 incremental build.
3586 * read_syms.cc (do_read_syms): Call Incremental_input::report_*
3587 functions.
3588 * script.cc (read_input_script): Call
3589 Incremental_input::report_script.
3590 * script.h (Script_info): New class.
3591
3592 2009-04-27 Ian Lance Taylor <iant@google.com>
3593
3594 * x86_64.cc (do_adjust_output_section): Set entsize to
3595 plt_entry_size.
3596
3597 2009-04-23 Elliott Hughes <enh@google.com>
3598
3599 * output.cc (Output_file::close): After short writes, continue
3600 writing from the correct offset in the buffer being written.
3601
3602 2009-04-23 Chris Demetriou <cgd@google.com>
3603
3604 * configure.ac (HAVE_TR1_UNORDERED_MAP_REHASH): New define.
3605 * configure: Regenerate.
3606 * config.in: Regenerate.
3607 * gold.h: Avoid std::tr1::unordered_map and std::tr1::unordered_set
3608 if HAVE_TR1_UNORDERED_MAP_REHASH is not defined.
3609
3610 2009-04-21 Mikolaj Zalewski <mikolajz@google.com>
3611
3612 * incremental.cc (Incremental_inputs_header_data): Renamed from
3613 Incremental_input_header_data.
3614 (Incremental_inputs_header_data::data_size): New field.
3615 (Incremental_inputs_header_data::put_input_file_count): Renamed
3616 from input_file_count.
3617 (Incremental_inputs_header_data::put_command_line_offset): Renamed
3618 from command_line_offset.
3619 (Incremental_inputs_header_data::put_reserved): Renamed from
3620 put_reserved.
3621 (Incremental_inputs_entry_data): Renamed from
3622 Incremental_input_entry_data.
3623 (Incremental_inputs_entry_data::data_size): New field.
3624 (Incremental_inputs::report_command_line): New method.
3625 (Incremental_inputs::finalize): New method.
3626 (Incremental_inputs::create_incremental_inputs_data): New method.
3627 (Incremental_inputs::sized_create_incremental_inputs_data): New method.
3628 * incremental.h: New file.
3629 * layout.cc (Layout::Layout): Handle new incremental_inputs_.
3630 (Layout::finalize): Create incremental inputs section in
3631 incremental builds.
3632 (Layout::create_incremental_info_sections): New method.
3633 * layout.h (Layout::incremental_inputs): New method.
3634 (Layout::create_incremental_info_sections): New method.
3635 (Layout::incremental_inputs_): New field.
3636 * main.cc (main): Notify Incremental_input of the command line.
3637
3638 2009-04-01 Ian Lance Taylor <iant@google.com>
3639 Mikolaj Zalewski <mikolajz@google.com>
3640
3641 * gold.h (reserve_unordered_map): Define, three versions, one for
3642 each version of Unordered_map.
3643 * layout.cc (Layout::Layout): Remove options parameter. Add
3644 number_of_input_files parameter. Don't initialize options_.
3645 Initialize number_of_input_files_ and resized_signatures_. Move
3646 sections_are_attached_.
3647 (Layout::layout_group): Reserve space for group_signatures_.
3648 (Layout::find_or_add_kept_section): Change name parameter to be a
3649 reference. Resize signatures_ map when it gets large enough.
3650 (Layout::layout_eh_frame): Use parameters->options() instead of
3651 this->options_.
3652 (Layout::make_output_section): Likewise.
3653 (Layout::attach_allocated_section_to_segment): Likewise.
3654 (Layout::finalize, Layout::create_executable_stack): Likewise.
3655 (Layout::set_segment_offsets, Layout::create_interp): Likewise.
3656 (Layout::finish_dynamic_section, Layout::write_binary): Likewise.
3657 * layout.h (class Layout): Update declarations. Remove options_
3658 field. Add number_of_input_files_ and resized_signatures_
3659 fields. Move sections_are_attached_ field.
3660 * main.cc (main): Pass number of input files to Layout
3661 constructor. Don't pass options.
3662
3663 2009-03-30 Ian Lance Taylor <iant@google.com>
3664
3665 * ffsll.c (ffsll): Correct implementation.
3666
3667 2009-03-27 Ian Lance Taylor <iant@google.com>
3668
3669 * ffsll.c: New file.
3670 * configure.ac: Call AC_REPLACE_FUNCS on ffsll.
3671 * gold.h (ffsll): Declare if HAVE_FFSLL is not defined.
3672 * ftruncate.c (ftruncate): Declare before definition.
3673 * mremap.c (mremap): Likewise.
3674 * pread.c (pread): Likewise.
3675 * configure, Makefile.in, config.in: Rebuild.
3676
3677 * mremap.c: New file.
3678 * configure.ac: Call AC_REPLACE_FUNCS on mremap.
3679 * gold.h (MREMAP_MAYMOVE): Define if HAVE_MREMAP is not defined.
3680 (mremap): Declare if HAVE_MREMAP is not defined.
3681 * configure, Makefile.in, config.in: Rebuild.
3682
3683 2009-03-27 Cary Coutant <ccoutant@google.com>
3684
3685 * powerpc.cc (Target_powerpc::check_non_pic): Assert that output is
3686 position independent.
3687 * sparc.cc (Target_sparc::check_non_pic): Likewise.
3688 * x86_64.cc (Target_x86_64::check_non_pic): Likewise.
3689
3690 2009-03-24 Cary Coutant <ccoutant@google.com>
3691
3692 * symtab.h (needs_plt_entry): Check for unsatisfied reference from
3693 an executable.
3694 (needs_dynamic_reloc): Likewise.
3695
3696 2009-03-24 Ian Lance Taylor <iant@google.com>
3697
3698 * yyscript.y (file_cmd): Recognize EXTERN.
3699 (extern_name_list, extern_name_list_body): New nonterminals.
3700 * script.cc (script_add_extern): Define.
3701 * script-c.h (script_add_extern): Declare.
3702
3703 2009-03-24 Rafael Avila de Espindola <espindola@google.com>
3704
3705 * object.cc (is_elf_object): Define.
3706 * object.h (is_elf_object): Declare.
3707 * archive.cc (Archive::get_elf_object_for_member): Call
3708 is_elf_object.
3709 * readsyms.cc (Read_symbols::do_read_symbols): Likewise.
3710
3711 2009-03-24 Elliott Hughes <enh@google.com>
3712
3713 * output.cc (Output_file::map_anonymous): Define.
3714 (Output_file::map): Use map_anonymous. If the regular mmap fails,
3715 try an anonymous one. Report the size if the mmap fails.
3716 * output.h (class Output_file): Declare map_anonymous.
3717
3718 2009-03-24 Ian Lance Taylor <iant@google.com>
3719
3720 * target-select.cc (instantiate_target): Don't acquire the lock if
3721 the instantiated_target_ field has already been set.
3722
3723 2009-03-23 Ian Lance Taylor <iant@google.com>
3724
3725 * gold-threads.h (class Initialize_lock): Define.
3726 * gold-threads.cc (class Initialize_lock_once): Define.
3727 (initialize_lock_control): New static variable.
3728 (initialize_lock_pointer): New static variable.
3729 (initialize_lock_once): New static function.
3730 (Initialize_lock::Initialize_lock): Define.
3731 (Initialize_lock::initialize): Define.
3732 * target-select.h: Include "gold-threads.h".
3733 (class Target_selector): Add lock_ and initialize_lock_ fields.
3734 Don't define instantiate_target, just declare it.
3735 * target-select.cc (Target_selector::Target_selector): Initialize
3736 new fields.
3737 (Target_selector::instantiate_target): Define.
3738 * descriptors.h: Include "gold-threads.h".
3739 (class Descriptors): Add initialize_lock_ field.
3740 * descriptors.cc (Descriptors::Descriptors): Initialize new
3741 field.
3742 (Descriptors::open): Use initialize_lock_ field
3743 * errors.h (class Errors): Add initialize_lock_ field.
3744 * errors.cc (Errors::Errors): Initialize new field.
3745 (Errors::initialize_lock): Use initialize_lock_ field.
3746 * powerpc.cc (class Target_selector_powerpc): Remove
3747 instantiated_target_ field. In do_recognize call
3748 instantiate_target rather than do_instantiate_target. In
3749 do_instantiate_target just allocate a new target.
3750 * sparc.cc (class Target_selector_sparc): Likewise.
3751
3752 * freebsd.h: New file.
3753 * i386.cc: Include "freebsd.h".
3754 (Target_i386): Derive from Target_freebsd rather than
3755 Sized_target.
3756 (Target_selector_i386): Derive from Target_selector_freebsd rather
3757 than Target_selector.
3758 * x86_64.cc: Include "freebsd.h".
3759 (Target_x86_64): Derive from Target_freebsd rather than
3760 Sized_target.
3761 (Target_selector_x86_64): Derive from Target_selector_freebsd
3762 rather than Target_selector.
3763 * target.h (class Target): Add adjust_elf_header and
3764 do_adjust_elf_header.
3765 * output.cc (Output_file_header:: do_sized_write): Call target
3766 adjust_elf_header routine.
3767 * configure.tgt: Set targ_osabi.
3768 * configure.ac: Define GOLD_DEFAULT_OSABI.
3769 * parameters.cc (Parameters::default_target): Pass
3770 GOLD_DEFAULT_OSABI to select_target.
3771 * target-select.h (class Target_selector): Make instantiate_target
3772 protected rather than private.
3773 * Makefile.am (HFILES): Add freebsd.h.
3774 * configure, Makefile.in, config.in: Rebuild.
3775
3776 * merge.cc (do_add_input_section): Correct pend value. Change
3777 message about last entry not being null terminated from error to
3778 warning.
3779
3780 2009-03-20 Mikolaj Zalewski <mikolajz@google.com>
3781
3782 * incremental.cc: New file.
3783 * Makefile.am (CCFILES): Add incremental.cc.
3784 * Makefile.in: Rebuild.
3785
3786 2009-03-19 Paul Pluzhnikov <ppluzhnikov@google.com>
3787
3788 * layout.cc (Layout::output_section_name): Preserve names
3789 of '.note.' sections.
3790
3791 2009-03-19 Ian Lance Taylor <iant@google.com>
3792
3793 * descriptors.cc (Descriptors::open): Check that the options are
3794 valid before using them.
3795
3796 2009-03-18 Ian Lance Taylor <iant@google.com>
3797
3798 * script-sections.h: Include <list>.
3799 (class Script_sections): Change Sections_elements from std::vector
3800 to std::list. Typedef public Elements_iterator. Add
3801 orphan_section_placement_, data_segment_align_start_, and
3802 saw_data_segment_align_ fields. Remove data_segment_align_index_
3803 field.
3804 * script-sections.cc (class Orphan_section_placement): New class.
3805 (class Sections_element): Add virtual functions is_relro and
3806 orphan_section_init. Remove virtual function place_orphan_here.
3807 (class Output_section_definition): Add is_relro and
3808 orphan_section_init. Remove place_orphan_here.
3809 (class Orphan_output_section): Likewise.
3810 (Script_sections::Script_sections): Update for field changes.
3811 (Script_sections::data_segment_align): Set saw_data_segment_align_
3812 and data_segment_align_start_, not data_segment_align_index.
3813 (Script_sections::data_segment_relro_end): Check
3814 saw_data_segment_align_. Use data_segment_align_start_ rather
3815 than data_segment_align_index_.
3816 (Script_sections::place_orphan): Rewrite to use
3817 Orphan_section_placement.
3818
3819 2009-03-17 Ian Lance Taylor <iant@google.com>
3820
3821 * archive.cc (Archive::add_symbols): Check for a version attached
3822 to the symbol name in the archive map.
3823 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_11.
3824 (ver_test_11_SOURCES, ver_test_11_DEPENDENCIES): Define.
3825 (ver_test_11_LDFLAGS, ver_test_11_LDADD): Define.
3826 (ver_test_11.a): New target.
3827 * testsuite/Makefile.in: Rebuild.
3828
3829 * configure.ac: Check for chsize and posix_fallocate. Replace
3830 ftruncate.
3831 * ftruncate.c: New file, from gnulib.
3832 * output.cc (posix_fallocate): Define dummy version if not
3833 HAVE_POSIX_FALLOCATE.
3834 (Output_file::map): Call posix_fallocate rather than lseek and
3835 write.
3836 * gold.h (ftruncate): Declare if not HAVE_FTRUNCATE.
3837 * configure, Makefile.in, config.in: Rebuild.
3838
3839 2009-03-17 Paul Pluzhnikov <ppluzhnikov@google.com>
3840
3841 * layout.h (Layout::create_note): Add section_name parameter.
3842 * layout.cc (Layout::create_note): Likewise.
3843 (Layout::create_build_id, Layout::create_gold_note): Fix callers.
3844
3845 2009-03-17 Ian Lance Taylor <iant@google.com>
3846
3847 * descriptors.cc: Include "options.h".
3848 (FD_CLOEXEC, O_CLOEXEC): Define if not defined.
3849 (Descriptors::open): Always use O_CLOEXEC when opening a new
3850 descriptor. If we have a plugin, and O_CLOEXEC was not defined,
3851 then set FD_CLOEXEC.
3852
3853 * sparc.cc (class Target_sparc): Add has_got_section.
3854 (Target_sparc::Scan::global): If we see _GLOBAL_OFFSET_TABLE_,
3855 make sure we have a GOT section.
3856
3857 * sparc.cc (optimize_tls_reloc): Recognize R_SPARC_TLS_IE_ADD.
3858 (Target_sparc::Scan::local): Likewise.
3859 (Target_sparc::Scan::global): Likewise.
3860 (Target_sparc::Relocate::relocate): Likewise.
3861 (Target_sparc::Relocate::relocate_tls): Likewise.
3862
3863 * symtab.cc (Symbol_table::define_default_version): New function,
3864 broken out of add_from_object.
3865 (Symbol_table::add_from_object): Call define_default_version.
3866 (Symbol_table::define_special_symbol): Add resolve_oldsym
3867 parameter. Change all callers. If the version for a symbol comes
3868 from a version script, resolve it with the symbol with the same
3869 name with no version. Also add the symbol without a version if
3870 appropriate.
3871 (do_define_in_output_data): If resolving with oldsym, don't delete
3872 sym.
3873 (do_define_in_output_segment): Likewise.
3874 (do_define_as_constant): Likewise.
3875 * symtab.h (class Symbol_table): Update declarations.
3876
3877 2009-03-13 Ian Lance Taylor <iant@google.com>
3878
3879 * readsyms.cc (Read_symbols::incompatible_warning): New function.
3880 (Read_symbols::requeue): New function.
3881 (Read_symbols::do_read_symbols): If make_elf_object fails because
3882 the target type is not configured, and the file was searched for,
3883 issue a warning and retry with the next directory.
3884 (Add_symbols::run): If the file has an incompatible format, and
3885 it was searched for, requeue the Read_symbols task. On error,
3886 release the object.
3887 * readsyms.h (class Read_symbols): Add dirindex_ field. Add
3888 dirindex parameter to constructor. Change all callers. Declare
3889 incompatible_warning and requeue.
3890 (class Add_symbols): Add dirpath_, dirindex_, mapfile_,
3891 input_argument_ and input_group_ fields. Add them to
3892 constructor. Change all callers.
3893 (class Read_script): Add dirindex_ field. Add it to constructor.
3894 Change all callers.
3895 * archive.cc (Archive::setup): Remove input_objects parameter.
3896 Change all callers.
3897 (Archive::get_file_and_offset): Likewise.
3898 (Archive::read_all_symbols): Likewise.
3899 (Archive::read_symbols): Likewise.
3900 (Archive::get_elf_object_for_member): Remove input_objects
3901 parameter. Add punconfigured parameter. Change all callers.
3902 (Archive::add_symbols): Change return type to bool. Check return
3903 value of include_member.
3904 (Archive::include_all_members): Likewise.
3905 (Archive::include_member): Change return type to bool. Return
3906 false if first included object has incompatible target. Set
3907 included_member_ field.
3908 (Add_archive_symbols::run): If add_symbols returns false, requeue
3909 Read_symbols task.
3910 * archive.h (class Archive): Add included_member_ field.
3911 Initialize it in constructor. Add input_file and searched_for
3912 methods. Update declarations.
3913 (class Add_archive_symbols): Add dirpath_, dirindex_, and
3914 input_argument_ fields. Add them to constructor. Change all
3915 callers.
3916 * script.cc: Include "target-select.h".
3917 (class Parser_closure): Add skip_on_incompatible_target_ and
3918 found_incompatible_target_ fields. Add
3919 skip_on_incompatible_target parameter to constructor. Change all
3920 callers. Add methods skip_on_incompatible_target,
3921 clear_skip_on_incompatible_target, found_incompatible_target, and
3922 set_found_incompatible_target.
3923 (read_input_script): Add dirindex parameter. Change all callers.
3924 If parser finds an incompatible target, requeue Read_symbols
3925 task.
3926 (script_set_symbol): Clear skip_on_incompatible_target in
3927 closure.
3928 (script_add_assertion, script_parse_option): Likewise.
3929 (script_start_sections, script_add_phdr): Likewise.
3930 (script_check_output_format): New function.
3931 * script.h (read_input_script): Update declaration.
3932 * script-c.h (script_check_output_format): Declare.
3933 * yyscript.y (file_cmd): Handle OUTPUT_FORMAT.
3934 (ignore_cmd): Remove OUTPUT_FORMAT.
3935 * fileread.cc (Input_file::Input_file): Add explicit this.
3936 (Input_file::will_search_for): New function.
3937 (Input_file::open): Add pindex parameter. Change all callers.
3938 * fileread.h (class Input_file): Add input_file_argument method.
3939 Declare will_search_for. Update declarations.
3940 * object.cc (make_elf_object): Add punconfigured parameter.
3941 Change all callers.
3942 * object.h (class Object): Make input_file public. Add
3943 searched_for method.
3944 (make_elf_object): Update declaration.
3945 * dirsearch.cc (Dirsearch::find): Add pindex parameter. Use it to
3946 restart search.
3947 * dirsearch.h (class Dirsearch): Update declaration.
3948 * options.h (class General_options): Add --warn-search-mismatch.
3949 * parameters.cc (Parameters::is_compatible_target): New function.
3950 * parameters.h (class Parameters): Declare is_compatible_target.
3951 * workqueue.cc (Workqueue::add_blocker): New function.
3952 * workqueue.h (class Workqueue): Declare add_blocker.
3953
3954 * fileread.cc (Input_file::open): Remove options parameter.
3955 Change all callers.
3956 (Input_file::open_binary): Likewise.
3957 * script.cc (read_input_script): Likewise.
3958 * readsyms.h (class Read_symbols): Remove options_ field. Remove
3959 options parameter from constructor. Change all callers.
3960 (class Read_script): Likewise.
3961 * fileread.h (class Input_file): Update declarations.
3962 * script.h (read_input_script): Update declaration.
3963
3964 2009-03-10 Nick Clifton <nickc@redhat.com>
3965
3966 * po/es.po: New Spanish translation.
3967
3968 2009-03-06 Cary Coutant <ccoutant@google.com>
3969
3970 * options.cc (parse_short_option): Keep dash_z from registering itself.
3971
3972 2009-03-03 Ian Lance Taylor <iant@google.com>
3973
3974 PR 9918
3975 * target-reloc.h (relocate_section): Pass output_section to
3976 relocate.
3977 * i386.cc (Target_i386::should_apply_static_reloc): Add
3978 output_section parameter. Change all callers.
3979 (Target_i386::Relocate::relocate): Add output_section parameter.
3980 * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
3981 * sparc.cc (Target_sparc::Relocate::relocate): Likewise.
3982 * powerpc.cc (Target_powerpc::Relocate::relocate): Likewise.
3983 * testsuite/two_file_shared.sh: New script.
3984 * testsuite/Makefile.am (check_SCRIPTS): Add two_file_shared.sh.
3985 (check_DATA): Add two_file_shared.dbg.
3986 (two_file_shared.dbg): New target.
3987 * testsuite/Makefile.in: Rebuild.
3988
3989 2009-03-01 Ian Lance Taylor <iant@google.com>
3990
3991 * configure.ac: Check for byteswap.h.
3992 * configure: Rebuild.
3993 * config.in: Rebuild.
3994
3995 2009-03-01 Mikolaj Zalewski <mikolajz@google.com>
3996
3997 * layout.cc (Layout::find_or_add_kept_section): New function.
3998 (Layout::add_comdat): Removed.
3999 * layout.h (struct Kept_section): Move out of class Layout.
4000 Remove trailing underscores from field names. Add group_sections
4001 field. Rename group_ field to is_group. Change all uses.
4002 (class Layout): Declare find_or_add_kept_section, not add_comdat.
4003 * object.cc (Sized_relobj::Sized_relobj): Don't initialize
4004 comdat_groups_ field.
4005 (Sized_relobj::include_section_group): Use
4006 find_or_add_kept_section and Kept_section::group_sections.
4007 (Sized_relobj::include_linkonce_section): Likewise.
4008 * object.cc (class Sized_relobj): Don't define Comdat_group or
4009 Comdat_group_table. Remove find_comdat_group and
4010 add_comdat_group. Remove comdat_groups_ field.
4011 * plugin.cc (include_comdat_group): Use
4012 Layout::find_or_add_kept_section.
4013
4014 2009-02-28 Ian Lance Taylor <iant@google.com>
4015
4016 * README: --gc-sections and map files are now supported. Document
4017 some build requirements.
4018
4019 PR 6992
4020 * symtab.cc (Symbol_table::sized_write_section_symbol): In a
4021 relocatable link set the value of the section symbol to zero.
4022 * object.cc (Sized_relobj::do_finalize_local_symbols): In a
4023 relocatable link don't include the section address in the local
4024 symbol value.
4025
4026 2009-02-27 Ian Lance Taylor <iant@google.com>
4027
4028 PR 6811
4029 * options.h (class Search_directory): Add is_system_directory.
4030 (class General_options): Declare is_in_system_directory.
4031 * options.cc (get_relative_sysroot): Make static.
4032 (get_default_sysroot): Make static.
4033 (General_optoins::is_in_system_directory): New function.
4034 * fileread.cc (Input_file::is_in_system_directory): New function.
4035 * fileread.h (class Input_file): Declare is_in_system_directory.
4036 * object.h (class Object): Add is_in_system_directory.
4037 (class Input_objects): Remove system_library_directory_ field.
4038 * object.cc (Input_objects::add_object): Don't set
4039 system_library_directory_.
4040 (input_objects::found_in_system_library_directory): Remove.
4041 * symtab.cc (Symbol_table::write_globals): Remove input_objects
4042 parameter. Change all callers.
4043 (Symbol_table::sized_write_globals): Likewise.
4044 (Symbol_table::warn_about_undefined_dynobj_symbol): Likewise.
4045 Call Object::is_in_system_directory.
4046 * symtab.h (class Symbol_table): Update declarations.
4047
4048 PR 5990
4049 * descriptors.h (Open_descriptor): Add is_on_stack field.
4050 * descriptors.cc (Descriptors::open): If the descriptor is on the
4051 top of the stack, remove it. Initialize is_on_stack field.
4052 (Descriptors::release): Only add pod to stack if it is not on the
4053 stack already.
4054 (Descriptors::close_some_descriptor): Clear stack_next and
4055 is_on_stack fields.
4056
4057 PR 7091
4058 * output.cc (Output_section::find_starting_output_address): Rename
4059 from starting_output_address; add PADDR parameter; change return
4060 type.
4061 * output.h (class Output_section): Declare
4062 find_starting_output_address instead of starting_output_address.
4063 * object.cc (Sized_relobj::do_finalize_local_symbols): Handle a
4064 section symbol for which we can't find a merge section.
4065
4066 PR 9836
4067 * symtab.cc (Symbol_table::add_from_object): If the visibility is
4068 hidden or internal, force the symbol to be local.
4069 * resolve.cc (Symbol::override_visibility): Define.
4070 (Symbol::override_base): Use override_visibility.
4071 (Symbol_table::resolve): Likewise.
4072 (Symbol::override_base_with_special): Likewise.
4073 (Symbol_table::override_with_special): If the visibility is hidden
4074 or internal, force the symbol to be local.
4075 * symtab.h (class Symbol): Add set_visibility and
4076 override_visibility.
4077 * testsuite/ver_test_1.sh: New file.
4078 * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_1.sh.
4079 (check_DATA): Add ver_test_1.syms.
4080 (ver_test_1.syms): New target.
4081 * testsuite/Makefile.in: Rebuild.
4082
4083 2009-02-25 Cary Coutant <ccoutant@google.com>
4084
4085 * layout.cc (Layout::choose_output_section): Don't rename sections
4086 when using a linker script that has a SECTIONS clause.
4087 * Makefile.in: Regenerate.
4088
4089 * testsuite/Makefile.am (script_test_5.sh): New test case.
4090 * testsuite/Makefile.in: Regenerate.
4091 * testsuite/script_test_5.cc: New file.
4092 * testsuite/script_test_5.sh: New file.
4093 * testsuite/script_test_5.t: New file.
4094
4095 2009-02-13 Rafael Avila de Espindola <espindola@google.com>
4096
4097 * archive.cc (Archive::include_member): Update calls to add_symbols.
4098 * dynobj.cc (Sized_dynobj<size, big_endian>::make_version_map): Add
4099 the Layout argument.
4100 * dynobj.h (do_add_symbols): Add the Layout argument.
4101 * object.cc (Sized_relobj<size, big_endian>::do_add_symbols): Add the
4102 Layout argument.
4103 * object.h (Object::add_symbols): Add the Layout argument.
4104 (Object::do_add_symbols): Add the Layout argument.
4105 (Sized_relobj::do_add_symbols): Add the Layout argument.
4106 * plugin.cc (Sized_pluginobj<size, big_endian>::do_add_symbols):
4107 Unify the two versions.
4108 (Add_plugin_symbols): Remove.
4109 * plugin.h (Pluginobj::add_symbols, Pluginobj::do_add_symbols): Remove.
4110 (Sized_pluginobj::do_add_symbols): Unify the two versions.
4111 (Add_plugin_symbols): Remove.
4112 * readsyms.cc (Read_symbols::do_read_symbols): Update call to
4113 Add_symbols. Use Add_symbols instead of Add_plugin_symbols.
4114 (Add_symbols::run): Make it work with Pulginobj.
4115
4116 2009-02-06 Ian Lance Taylor <iant@google.com>
4117
4118 * object.cc (Sized_relobj::do_layout): Make info message start
4119 with lower case letter.
4120
4121 2009-02-06 Mikolaj Zalewski <mikolajz@google.com>
4122
4123 * binary.cc: Fix file comment.
4124
4125 * options.h (enum Incremental_disposition): Define.
4126 (class General_options): Add new options: --incremental,
4127 --incremental_changed, --incremental_unchanged,
4128 --incremental_unknown. Add incremental_disposition_ and
4129 implicit_incremental_ fields.
4130 (General_options::incremental_disposition): New function.
4131 (class Position_dependent_options): Add incremental_disposition
4132 option.
4133 (Position_dependent_options::copy_from_options): Set incremental
4134 dispositions.
4135 * options.cc (General_options::parse_incremental_changed): New
4136 function.
4137 (General_options::parse_incremental_unchanged): New function.
4138 (General_options::parse_incremental_unknown): New function.
4139 (General_options::General_options): Initialize new fields
4140 incremental_disposition_ and implicit_incremental_.
4141 (General_options::finalize): Check for uasge of --incremental-*
4142 without --incremental.
4143
4144 2009-02-06 Chris Demetriou <cgd@google.com>
4145
4146 * gold.h (gold_undefined_symbol): Change to take only a Symbol
4147 pointer and to report location as the file name associated with
4148 the symbol.
4149 (gold_undefined_symbol_at_location): New function to replace the
4150 old gold_undefined_symbol functionality.
4151 * target-reloc.h (relocate_section): Update to use
4152 gold_undefined_symbol_at_location.
4153 * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
4154 Call gold_undefined_symbol function rather than gold_error.
4155 * errors.h (Errors::undefined_symbol): Take location as a
4156 string, rather than calculating it from a relocation.
4157 * errors.cc (Errors::fatal): Print "fatal error:" before the
4158 formatted message.
4159 (Errors::error, Errors::error_at_location): Print "error: "
4160 before the formatted message.
4161 (Errors::undefined_symbol): Take location as a string, rather
4162 than calculating it from a relocation.
4163 (gold_undefined_symbol_at_location): New function akin to
4164 old gold_undefined_symbol, calculates location from relocation.
4165 (gold_undefined_symbol): Change to take only a Symbol pointer
4166 and to report location as the file name associated with the symbol.
4167 * testsuite/debug_msg.sh: Update for changed error messages.
4168 * testsuite/undef_symbol.sh: Likewise.
4169
4170 2009-02-04 Duncan Sands <baldrick@free.fr>
4171
4172 PR 9812
4173 * reduced_debug_output.h
4174 (Output_reduced_debug_abbrev_section::failed): Use format for
4175 gold_warning.
4176 (Output_reduced_debug_info_section::faild): Likewise.
4177
4178 2009-01-31 Mikolaj Zalewski <mikolajz@google.com>
4179
4180 * script.cc (Lazy_demangler): New class.
4181 (Version_script_info::get_symbol_version_helper): Demangle a
4182 symbol only once.
4183
4184 2009-01-29 Cary Coutant <ccoutant@google.com>
4185
4186 * i386.cc (Target_i386::Relocate::relocate): Recognize non-PIC calls
4187 to __tls_get_addr.
4188 * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
4189
4190 2009-01-28 Ian Lance Taylor <iant@google.com>
4191
4192 * version.cc (version_string): Bump to 1.9.
4193
4194 * gold.h: Include <cstring> and <stdint.h>.
4195 * version.cc: Include <cstdio>.
4196 * object.cc (Sized_relobj::do_layout): Initialize gc_sd to avoid a
4197 warning.
4198 * reduced_debug_output.cc (insert_into_vector): Rename from
4199 Insert_into_vector; change all callers. Use Swap_unaligned to
4200 avoid aliasing issue; remove union since it is unnecessary.
4201
4202 2009-01-27 Sriraman Tallam <tmsriram@google.com>
4203
4204 * Makefile.am (CCFILES): Add gc.cc.
4205 (HFILES): Add gc.h.
4206 * Makefile.in: Regenerate.
4207 * gold.cc (Gc_runner): New class.
4208 (queue_initial_tasks): Call garbage collection related tasks
4209 when corresponding options are invoked.
4210 (queue_middle_gc_tasks): New function.
4211 (queue_middle_tasks): Reorder tasks to allow relocs to be read and
4212 processed early before laying out sections during garbage collection.
4213 * gold.h (queue_middle_gc_tasks): New function.
4214 (is_prefix_of): Move from "layout.cc".
4215 * i386.cc (Target_i386::gc_process_relocs): New function.
4216 * layout.cc (is_prefix_of): Remove. Move to "gold.h"
4217 * main.cc (main): Create object of class "Garbage_collection".
4218 * object.cc (Relobj::copy_symbols_data): New function.
4219 (Relobj::is_section_name_included): New function.
4220 (Sized_relobj::do_layout): Allow this function to be called twice
4221 during garbage collection and defer layout of section during the
4222 first call.
4223 * object.h (Relobj::get_symbols_data): New function.
4224 (Relobj::is_section_name_included): New function.
4225 (Relobj::copy_symbols_data): New function.
4226 (Relobj::set_symbols_data): New function.
4227 (Relobj::get_relocs_data): New function.
4228 (Relobj::set_relocs_data): New function.
4229 (Relobj::is_output_section_offset_invalid): New pure virtual function.
4230 (Relobj::gc_process_relocs): New function.
4231 (Relobj::do_gc_process_relocs): New pure virtual function.
4232 (Relobj::sd_): New data member.
4233 (Sized_relobj::is_output_section_offset_invalid): New function.
4234 (Sized_relobj::do_gc_process_relocs): New function.
4235 * options.h (General_options::gc_sections): Modify to not be a no-op.
4236 (General_options::print_gc_sections): New option.
4237 * plugin.cc (Plugin_finish::run): Remove function call to
4238 Plugin_manager::layout_deferred_objects. Move it to "gold.cc".
4239 * powerpc.cc (Target_powerpc::gc_process_relocs): New function.
4240 * reloc.cc (Read_relocs::run): Add task to process relocs and
4241 determine unreferenced sections when doing garbage collection.
4242 (Gc_process_relocs): New class.
4243 (Sized_relobj::do_gc_process_relocs): New function.
4244 (Sized_relobj::do_scan_relocs): Don't try to scan the relocs for
4245 sections that are garbage collected.
4246 * reloc.h (Gc_process_relocs): New class.
4247 * sparc.cc (Target_sparc::gc_process_relocs): New function.
4248 * symtab.cc (Symbol::should_add_dynsym_entry): Do not add entries for
4249 symbols whose corresponding sections are garbage collected.
4250 (Symbol_table::Symbol_table): Add new parameter for the garbage
4251 collection object.
4252 (Symbol_table::gc_mark_undef_symbols): New function.
4253 (Symbol_table::gc_mark_symbol_for_shlib): New function.
4254 (Symbol_table::gc_mark_dyn_syms): New function.
4255 (Symbol_table::resolve): Do not treat symbols seen in dynamic objects
4256 as garbage.
4257 (Symbol_table::add_from_object): Likewise.
4258 (Symbol_table::add_from_relobj): When building shared objects, do not
4259 treat externally visible symbols as garbage.
4260 (Symbol_table::sized_finalize_symbol): Do not check dynamic symbol
4261 table information for static and relocatable links.
4262 * symtab.h (Symbol_table::set_gc): New function.
4263 (Symbol_table::gc): New function.
4264 (Symbol_table::gc_mark_undef_symbols): New function.
4265 (Symbol_table::gc_mark_symbol_for_shlib): New function.
4266 (Symbol_table::gc_mark_dyn_syms): New function.
4267 (Symbol_table::gc_): New data member.
4268 * target.h (Sized_target::gc_process_relocs): New pure virtual
4269 function.
4270 * x86_64.cc (Target_x86_64::gc_process_relocs): New function.
4271 * testsuite/testfile.cc (Target_test::gc_process_relocs): New function.
4272
4273 2009-01-20 Chris Faylor <me.sourceware@sourceware.org>
4274
4275 * options.h (General_options::gc_sections): Define as a no-op for now.
4276 (General_options::no_keep_memory): Ditto.
4277 (General_options::Bshareable): Define.
4278 * options.cc (General_options::finalize): Honor -Bshareable.
4279
4280 2009-01-20 Andreas Schwab <schwab@suse.de>
4281
4282 * powerpc.cc (Powerpc_relocate_functions::rel16_ha): Don't try to
4283 read the value in the contents, since we don't use it. Use the
4284 template endianness when writing.
4285 (Relocate::relocate): Use it for R_PPC_REL16_HA.
4286
4287 2009-01-19 Andreas Schwab <schwab@suse.de>
4288
4289 * configure.tgt (powerpc64-*): Fix targ_obj.
4290
4291 2009-01-15 Ian Lance Taylor <iant@google.com>
4292
4293 * object.cc (Sized_relobj::write_local_symbols): Don't write out
4294 local symbols when stripping all symbols.
4295
4296 2009-01-14 Cary Coutant <ccoutant@google.com>
4297
4298 * output.cc (Output_reloc): Add explicit instantiations.
4299
4300 2009-01-14 Cary Coutant <ccoutant@google.com>
4301
4302 * archive.cc (Archive::get_elf_object_for_member): Remove call
4303 to File_read::claim_for_plugin.
4304 * descriptors.cc (Descriptors::open): Remove reference to
4305 is_claimed.
4306 (Descriptors::claim_for_plugin): Remove.
4307 * descriptors.h (Descriptors::claim_for_plugin): Remove.
4308 (Descriptors::is_claimed): Remove.
4309 (claim_descriptor_for_plugin): Remove.
4310 * fileread.cc (File_read::claim_for_plugin): Remove.
4311 * fileread.h (File_read::claim_for_plugin): Remove.
4312 (File_read::descriptor): Reopen descriptor if necessary.
4313 * plugin.cc (Plugin::load): Add two new APIs to transfer vector.
4314 (Plugin_manager::all_symbols_read): Add task parameter. Change
4315 all callers.
4316 (Plugin_manager::get_input_file): New function.
4317 (Plugin_manager::release_input_file): New function.
4318 (Pluginobj::Pluginobj): Add filesize parameter and initialize
4319 corresponding data member.
4320 (Sized_pluginobj::Sized_pluginobj): Add filesize parameter
4321 and pass to base constructor. Change all callers.
4322 (get_input_file, release_input_file): New functions.
4323 (make_sized_plugin_object): Add filesize parameter. Change all callers.
4324 * plugin.h (Plugin_manager::Plugin_manager): Initialize task_ member.
4325 (Plugin_manager::all_symbols_read): Add task parameter.
4326 (Plugin_manager::get_input_file): New function.
4327 (Plugin_manager::release_input_file): New function.
4328 (Plugin_manager::task_): New data member.
4329 (Pluginobj::Pluginobj): Add filesize parameter.
4330 (Pluginobj::filename): New function.
4331 (Pluginobj::descriptor): New function.
4332 (Pluginobj::filesize): New function.
4333 (Pluginobj::filesize_): New data member.
4334 (Sized_pluginobj::Sized_pluginobj): Add filesize parameter.
4335 * readsyms.cc (Read_symbols::do_read_symbols): Remove call to
4336 File_read::claim_for_plugin; use Object::unlock to unlock the file.
4337
4338 * testsuite/Makefile.am (plugin_test_4): New test case for plugins
4339 with archive libraries.
4340 * testsuite/Makefile.in: Regenerate.
4341 * testsuite/plugin_test.c (struct sym_info): New type.
4342 (get_input_file, release_input_file): New static variables.
4343 (onload): Capture new transfer vector entries.
4344 (claim_file_hook): Stop reading at end of file according to filesize.
4345 Factor out parsing of readelf output into separate function.
4346 (all_symbols_read_hook): Exercise get_input_file and release_input_file
4347 APIs and get the source file name from the symbol table. Convert
4348 source file name to corresponding object file name. Print info
4349 message when adding new input files.
4350 (parse_readelf_line): New function.
4351 * testsuite/plugin_test_1.sh: Add checks for new info messages.
4352 * testsuite/plugin_test_2.sh: Likewise.
4353 * testsuite/plugin_test_3.sh: Likewise.
4354 * testsuite/plugin_test_4.sh: New test case.
4355
4356 2009-01-07 Ian Lance Taylor <iant@google.com>
4357
4358 * version.cc (version_string): Bump to 1.8.
4359
4360 2008-12-23 Cary Coutant <ccoutant@google.com>
4361
4362 * gold.cc (gold_exit): Call plugin cleanup handlers on exit.
4363 * plugin.cc (Plugin_manager::finish): Rename as
4364 layout_deferred_objects. Move cleanup to separate function.
4365 (Plugin_manager::cleanup): New function.
4366 (Plugin_finish::run): Call layout_deferred_objects and cleanup
4367 separately.
4368 * plugin.h (Plugin_manager::finish): Rename as
4369 layout_deferred_objects.
4370 (Plugin_manager::cleanup): New function.
4371 (Plugin_manager::cleanup_done): New field.
4372
4373 2008-12-23 Cary Coutant <ccoutant@google.com>
4374
4375 * plugin.cc (is_visible_from_outside): New function.
4376 (Pluginobj::get_symbol_resolution_info): Call is_visible_from_outside
4377 so we don't return "IR only" status for exported symbols or -r links.
4378
4379 * testsuite/Makefile.am (plugin_test_3): New test case.
4380 * testsuite/Makefile.in: Regenerate.
4381 * testsuite/plugin_test_3.sh: New file.
4382
4383 2008-12-22 Cary Coutant <ccoutant@google.com>
4384
4385 * object.cc (Sized_relobj::layout_section): New function.
4386 (Sized_relobj::do_layout): Defer layout of input sections until after
4387 plugin has provided replacement files.
4388 (Sized_relobj::do_layout_deferred_sections): New function.
4389 * object.h (Relobj::set_section_offset): Remove virtual keyword.
4390 (Relobj::layout_deferred_sections): New function.
4391 (Relobj::do_layout_deferred_sections): New function.
4392 (Sized_relobj::do_layout_deferred_sections): New function.
4393 (Sized_relobj::layout_section): New function.
4394 (Sized_relobj::Deferred_layout): New structure.
4395 (Sized_relobj::deferred_layout_): New field.
4396 * plugin.cc (Plugin_manager::finish): Renamed, was cleanup.
4397 Change all callers. Layout deferred sections.
4398 (class Plugin_finish): Renamed, was Plugin_cleanup. Change all
4399 references.
4400 (Plugin_hook::run): Move code from do_plugin_hook inline.
4401 (Plugin_hook::do_plugin_hook): Remove.
4402 * plugin.h (Plugin_manager::Plugin_manager): Add missing initializers.
4403 (Plugin_manager::finish): Renamed, was cleanup.
4404 (Plugin_manager::should_defer_layout): New function.
4405 (Plugin_manager::add_deferred_layout_object): New function.
4406 (Plugin_manager::Deferred_layout_list): New type.
4407 (Plugin_manager::deferred_layout_objects_): New field.
4408 (Plugin_hook::do_plugin_hook): Remove.
4409
4410 2008-12-17 Ian Lance Taylor <iant@google.com>
4411
4412 * options.h (class General_options): Add --no case for
4413 --export-dynamic.
4414
4415 2008-12-16 Cary Coutant <ccoutant@google.com>
4416
4417 * plugin.cc (Plugin::load): Move LDPT_MESSAGE to front of transfer
4418 vector.
4419 (Plugin_manager::claim_file): Create plugin object even if
4420 plugin did not call the add_symbols callback.
4421 (Plugin_obj::get_symbol_resolution_info): Guard against plugin
4422 asking for more symbols than were added.
4423 * testsuite/Makefile.am (plugin_test_1): Add test case with
4424 no global symbols.
4425 (empty.syms): New target.
4426 * testsuite/Makefile.in: Regenerate.
4427 * testsuite/plugin_test.c (claim_file_hook): Add new debug
4428 message. Don't call add_symbols if no globals.
4429 (all_symbols_read_hook): Don't provide replacement for empty
4430 claimed file.
4431
4432 2008-12-12 Ian Lance Taylor <iant@google.com>
4433
4434 * target-reloc.h (Default_scan_relocatable_relocs): Only discard
4435 r_type == 0 for a local symbol with r_sym == 0.
4436 (scan_relocatable_relocs): Pass r_sym to
4437 local_non_section_strategy.
4438 * reloc.cc (Emit_relocs_strategy::local_non_section_strategy): Add
4439 r_sym parameter.
4440
4441 * configure.ac: Update test for TLS descriptors: they are
4442 supported as of glibc 2.9.
4443 * configure: Rebuild.
4444
4445 2008-12-11 Ian Lance Taylor <iant@google.com>
4446
4447 PR 7091
4448 * target-reloc.h (Default_scan_relocatable_relocs): For each
4449 function, map r_type == 0 to RELOC_DISCARD.
4450
4451 2008-12-10 Cary Coutant <ccoutant@google.com>
4452
4453 * layout.cc (Layout::add_comdat): Allow COMDAT group from a replacement
4454 object to override a kept COMDAT group from a plugin object.
4455
4456 2008-12-09 Ian Lance Taylor <iant@google.com>
4457
4458 PR 7088
4459 * yyscript.y (file_cmd): Handle INPUT.
4460
4461 * testsuite/initpri1.c: Change all declarations to be full
4462 prototypes by adding void, to avoid compiler warnings.
4463
4464 2008-12-05 Rafael Avila de Espindola <espindola@google.com>
4465
4466 * options.cc (General_options::parse_plugin_opt): New.
4467 (General_options::add_plugin): The argument now is just the filename.
4468 (General_options::add_plugin_option): New.
4469 * options.h (plugin_opt): New.
4470 (add_plugin): Change argument name.
4471 (add_plugin_option): New.
4472 * plugin.cc (Plugin::load): Don't parse the plugin option.
4473 * plugin.h (Plugin::Plugin): Rename argument. Init filename_.
4474 (Plugin::add_option): New.
4475 (Plugin::args_): Change type.
4476 (Plugin::filename_): New.
4477 (Plugin_manager::add_plugin_option): New.
4478 * testsuite/Makefile.am (plugin_test_1): Use new syntax.
4479 * testsuite/Makefile.in: Regenerate.
4480
4481 2008-12-05 Cary Coutant <ccoutant@google.com>
4482
4483 * layout.cc (Layout::include_section): Check for SHF_EXCLUDE.
4484 Handle --strip-lto-sections option.
4485 * options.h (strip_lto_sections): New option.
4486
4487 2008-12-01 Cary Coutant <ccoutant@google.com>
4488
4489 * plugin.cc (ld_plugin_message): Change format parameter to const.
4490 Fix mismatch between new[] and delete.
4491
4492 2008-11-14 Cary Coutant <ccoutant@google.com>
4493
4494 * reloc.cc (Sized_relobj::do_read_relocs): Use constant invalid_address
4495 instead of -1U.
4496
4497 2008-11-05 Craig Silverstein <csilvers@google.com>
4498
4499 * options.cc (General_options::parse_dynamic_list): New function.
4500 * options.h (General_options): New flags dynamic_list,
4501 dynamic_list_data, dynamic_list_cpp_new, and
4502 dynamic_list_cpp_typeinfo. New variable dynamic_list_.
4503 (General_options::in_dynamic_list): New function.
4504 * script.cc (Lex::Mode): New enum DYNAMIC_LIST.
4505 (Lex::can_start_name): Add support for DYNAMIC_LIST mode.
4506 (Lex::can_continue_name): Likewise.
4507 (yylex): Likewise.
4508 (read_script_file): New parameter script_options.
4509 (read_dynamic_list): New function.
4510 (Script_options::define_dynamic_list): New function.
4511 (dynamic_list_keyword_parsecodes): New variable.
4512 (dynamic_list_keywords): New variable.
4513 * script.h (Script_options::define_dynamic_list): New function
4514 prototype.
4515 (read_dynamic_list): New function prototype.
4516 * symtab.cc (strprefix): New macro.
4517 (Symbol::should_add_dynsym_entry): Support dynamic_list,
4518 dynamic_list_data, dynamic_list_cpp_new, and
4519 dynamic_list_cpp_typeinfo.
4520 * yyscript.y (PARSING_DYNAMIC_LIST): New token.
4521 (dynamic_list_expr): New rule.
4522 (dynamic_list_nodes): Likewise.
4523 (dynamic_list_node): Likewise.
4524 * testsuite/Makefile.am (dynamic_list): New test.
4525 * testsuite/Makefile.in: Regenerated.
4526 * testsuite/dynamic_list.t: New file.
4527 * testsuite/dynamic_list.sh: New file.
4528
4529 2008-11-05 Craig Silverstein <csilvers@google.com>
4530
4531 * testsuite/tls_test_c.c: Add prototype for t11 and t11_last.
4532 * testsuite/tls_test_c.c (t11): Add explicit "void" to prototype.
4533 (t11_last): Likewise.
4534 * testsuite/ver_test_6.c (main): Likewise.
4535
4536 2008-10-07 Cary Coutant <ccoutant@google.com>
4537
4538 * options.c (General_options::finalize): Add check for -static and
4539 -shared.
4540 * gold.cc (queue_middle_tasks): Assert that list of dynamic objects
4541 is not empty.
4542
4543 2008-10-02 Cary Coutant <ccoutant@google.com>
4544
4545 * plugin.cc (make_sized_plugin_object): Fix conditional
4546 compilation to work when not all targets are enabled.
4547
4548 2008-09-29 Cary Coutant <ccoutant@google.com>
4549
4550 * archive.cc (Archive::get_file_and_offset): Use filename instead
4551 of name to get library path.
4552 (Archive::include_member): Unlock external member of a thin archive.
4553
4554 * testsuite/Makefile.am (TEST_AR): New variable.
4555 (thin_archive_test_1): New test.
4556 (thin_archive_test_2): New test.
4557 * testsuite/Makefile.in: Regenerate.
4558 * testsuite/thin_archive_main.cc: New file.
4559 * testsuite/thin_archive_test_1.cc: New file.
4560 * testsuite/thin_archive_test_2.cc: New file.
4561 * testsuite/thin_archive_test_3.cc: New file.
4562 * testsuite/thin_archive_test_4.cc: New file.
4563
4564 2008-09-29 Cary Coutant <ccoutant@google.com>
4565
4566 * mapfile.cc (Mapfile::print_input_section): Change -1U to -1ULL.
4567 * object.cc (Sized_relobj::do_layout): Use constant invalid_address
4568 instead of -1U.
4569 (Sized_relobj::do_finalize_local_symbols): Likewise.
4570 (Sized_relobj::map_to_kept_section): Likewise.
4571 * object.h (Sized_relobj::invalid_address): New constant.
4572 (Sized_relobj::do_output_section_offset): Check for invalid_address
4573 and return -1ULL.
4574 * output.cc (Output_reloc::local_section_offset): Use constant
4575 invalid_address instead of -1U.
4576 (Output_reloc::get_address): Likewise.
4577 (Output_section::output_address): Change -1U to -1ULL.
4578 * output.h (Output_reloc::invalid_address): New constant.
4579 * reloc.cc (Sized_relobj::write_sections): Use constant
4580 invalid_address instead of -1U.
4581 (Sized_relobj::relocate_sections): Likewise.
4582 * symtab.cc (Symbol_table::sized_finalize_symbol): Handle symbol
4583 values for merge sections.
4584 * target-reloc.h (relocate_for_relocatable): Use constant
4585 invalid_address instead of -1U.
4586
4587 2008-09-19 Cary Coutant <ccoutant@google.com>
4588
4589 Add plugin functionality for link-time optimization (LTO).
4590 * configure.ac (plugins): Add --enable-plugins option.
4591 * configure: Regenerate.
4592 * config.in: Regenerate.
4593 * Makefile.am (LIBDL): New variable.
4594 (CCFILES): Add plugin.cc.
4595 (HFILES): Add plugin.h.
4596 (ldadd_var): Add LIBDL.
4597 * Makefile.in: Regenerate.
4598
4599 * archive.cc: Include "plugin.h".
4600 (Archive::setup): Don't preread archive symbols when using a plugin.
4601 (Archive::get_file_and_offset): Add memsize parameter. Change callers.
4602 (Archive::get_elf_object_for_member): Call plugin hooks for claiming
4603 files.
4604 (Archive::include_member): Add symbols from plugin objects.
4605 * archive.h (Archive::get_file_and_offset): Add memsize parameter.
4606 * descriptors.cc (Descriptors::open): Check for file descriptors
4607 abandoned by plugins.
4608 (Descriptors::claim_for_plugin): New function.
4609 * descriptors.h (Descriptors::claim_for_plugin): New function.
4610 (Open_descriptor::is_claimed): New field.
4611 (claim_descriptor_for_plugin): New function.
4612 * fileread.cc (File_read::claim_for_plugin): New function.
4613 * fileread.h (File_read::claim_for_plugin): New function.
4614 (File_read::descriptor): New function.
4615 * gold.cc: Include "plugin.h".
4616 (queue_initial_tasks): Add task to call plugin hooks for generating
4617 new object files.
4618 * main.cc: Include "plugin.h".
4619 (main): Load plugin libraries.
4620 * object.h (Pluginobj): Declare.
4621 (Object::pluginobj): New function.
4622 (Object::do_pluginobj): New function.
4623 (Object::set_target): New function.
4624 * options.cc: Include "plugin.h".
4625 (General_options::parse_plugin): New function.
4626 (General_options::General_options): Initialize plugins_ field.
4627 (General_options::add_plugin): New function.
4628 * options.h (Plugin_manager): Declare.
4629 (General_options): Add --plugin option.
4630 (General_options::has_plugins): New function.
4631 (General_options::plugins): New function.
4632 (General_options::add_plugin): New function.
4633 (General_options::plugins_): New field.
4634 * plugin.cc: New file.
4635 * plugin.h: New file.
4636 * readsyms.cc: Include "plugin.h".
4637 (Read_symbols::do_read_symbols): Check for archive before checking
4638 for ELF file. Call plugin hooks to claim files.
4639 * resolve.cc (Symbol_table::resolve): Record when symbol is referenced
4640 from a real object file; force override when processing replacement
4641 files.
4642 * symtab.cc (Symbol::init_fields): Initialize in_real_elf_ field.
4643 (Symbol::init_base_object): Likewise.
4644 (Symbol::init_base_output_data): Likewise.
4645 (Symbol::init_base_output_segment): Likewise.
4646 (Symbol::init_base_constant): Likewise.
4647 (Symbol::init_base_undefined): Likewise.
4648 (Symbol::output_section): Assert that object is not a plugin.
4649 (Symbol_table::add_from_pluginobj): New function.
4650 (Symbol_table::sized_finalize_symbol): Treat symbols from plugins as
4651 undefined.
4652 (Symbol_table::sized_write_globals): Likewise.
4653 (Symbol_table::add_from_pluginobj): Instantiate template.
4654 * symtab.h (Sized_pluginobj): Declare.
4655 (Symbol::in_real_elf): New function.
4656 (Symbol::set_in_real_elf): New function.
4657 (Symbol::in_real_elf_): New field.
4658 (Symbol_table::add_from_pluginobj): New function.
4659
4660 * testsuite/Makefile.am (AM_CFLAGS): New variable.
4661 (LIBDL): New variable.
4662 (LDADD): Add LIBDL.
4663 (check_PROGRAMS): Add plugin_test_1 and plugin_test_2.
4664 (check_SCRIPTS): Add plugin_test_1.sh and plugin_test_2.sh.
4665 (check_DATA): Add plugin_test_1.err and plugin_test_2.err.
4666 (MOSTLYCLEANFILES): Likewise.
4667 * testsuite/Makefile.in: Regenerate.
4668 * testsuite/plugin_test.c: New file.
4669 * testsuite/plugin_test_1.sh: New file.
4670 * testsuite/plugin_test_2.sh: New file.
4671
4672 2008-09-16 Ian Lance Taylor <iant@google.com>
4673
4674 * target-reloc.h (relocate_section): Check whether a symbol is
4675 defined by the ABI before reporting an undefined symbol error.
4676 * target.h (Target::is_defined_by_abi): Make parameter const.
4677 (Target::do_is_defined_by_abi): Likewise.
4678 * i386.cc (Target_i386::do_is_defined_by_abi): Likewise.
4679 * powerpc.cc (Target_powerpc::do_is_defined_by_abi): Likewise.
4680 * sparc.cc (Target_sparc::do_is_defined_by_abi): Likewise.
4681 * x86_64.cc (Target_x86_64::do_is_defined_by_abi): Likewise.
4682 * testsuite/Makefile.am (tls_test_shared.so): Add -Wl,-z,defs.
4683 * testsuite/Makefile.in: Rebuild.
4684
4685 * fileread.cc (make_view): Add casts to avoid warning.
4686
4687 2008-09-16 Alexandre Oliva <aoliva@redhat.com>
4688
4689 * i386.cc (Target_i386::define_tls_base_symbol): Update comments.
4690 * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
4691
4692 2008-09-16 Alexandre Oliva <aoliva@redhat.com>
4693
4694 * options.h (General_options::output_is_executable): New.
4695 (General_options::output_is_pie): New.
4696 * i386.cc (Target_i386::define_tls_base_symbol): Use SEGMENT_START
4697 for shared libraries.
4698 * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
4699
4700 2008-09-11 Chris Demetriou <cgd@google.com>
4701
4702 * options.h (origin): New -z option.
4703 * layout.cc (Layout:finish_dynamic_section): If "-z origin"
4704 is specified, set DF_ORIGIN in DT_FLAGS and set DF_1_ORIGIN
4705 in DT_FLAGS_1.
4706
4707 2008-09-05 Cary Coutant <ccoutant@google.com>
4708
4709 * fileread.cc (File_read::make_view): Add check for attempt to map
4710 beyond end of file.
4711
4712 2008-09-05 Cary Coutant <ccoutant@google.com>
4713
4714 * symtab.cc (Symbol_table::add_from_dynobj): Fix typos in
4715 explicit instantiations.
4716
4717 2008-08-28 Kris Van Hees <kris.van.hees@oracle.com>
4718
4719 PR gold/6858
4720 * options.cc (General_options::finalize): Allow undefined symbols
4721 in shlibs if linking -shared.
4722
4723 PR gold/6859
4724 * symtab.cc (Symbol::init_base_undefined): Mark explicitly undefined
4725 symbols as not needing a dynsym entry.
4726
4727 2008-08-20 Craig Silverstein <csilvers@google.com>
4728
4729 * fileread.cc (File_read::open): Do not lock the file unless it
4730 was successfully opened.
4731
4732 2008-08-14 Cary Coutant <ccoutant@google.com>
4733
4734 * x86_64.cc (Target_x86_64::Relocate::relocat_tls):
4735 Use addend for DTPOFF32, DTPOFF64, and TPOFF32 relocs.
4736 * testsuite/tls_test.cc (struct int128): 128-bit struct
4737 for testing TLS relocs with non-zero addend.
4738 (v12): New TLS variable.
4739 (t12): New test.
4740 (t_last): Add check for v12.
4741 * testsuite/tls_test.h (t12): New function.
4742 * testsuite/tls_test_main.cc (thread_routine): Call new test.
4743
4744 2008-08-13 Ian Lance Taylor <iant@google.com>
4745
4746 * layout.cc (Layout::attach_allocated_section_to_segment): Don't
4747 set tls_segment_ or relro_segment_.
4748 (Layout::make_output_segment): Set tls_segment_ and relro_segment_
4749 when appropriate.
4750 * output.h (Output_section::clear_is_relro): New function.
4751 * output.cc (Output_segment::add_output_section): Handle SHF_TLS
4752 sections specially even when output_data_ is empty.
4753 (Output_segment::maximum_alignment): When first section is relro,
4754 only force alignment for PT_LOAD segments.
4755 * script.cc (script_data_segment_align): New function.
4756 (script_data_segment_relro_end): New function.
4757 * script-c.h (script_data_segment_align): Declare.
4758 (script_data_segment_relro_end): Declare.
4759 * script-sections.h (class Script_sections): Declare
4760 data_segment_align and data_segment_relro_end. Add fields
4761 segment_align_index_ and saw_relro_end_.
4762 * script-sections.cc (class Sections_element): Add set_is_relro
4763 virtual function. Add new bool* parameter to place_orphan_here.
4764 Add get_output_section virtual function.
4765 (class Output_section_definition): Add set_is_relro. Add new
4766 bool* parameter to place_orphan_here. Add get_output_section.
4767 Add is_relro_ field.
4768 (Output_section_definition::Output_section_definition): Initialize
4769 evaluated_address_, evaluated_load_address, evaluated_addralign_,
4770 and is_relro_ fields.
4771 (Output_section_definition::place_orphan_here): Add is_relro
4772 parameter.
4773 (Output_section_definition::set_section_addresses): Set relro for
4774 output section.
4775 (Output_section_definition::alternate_constraint): Likewise.
4776 (class Orphan_output_section): Add new bool* parameter to
4777 place_orphan_here. Add get_output_section.
4778 (Orphan_output_section::place_orphan_here): Add is_relro
4779 parameter.
4780 (Script_sections::Script_sections): Initialize
4781 data_segment_align_index_ and saw_relro_end_.
4782 (Script_sections::data_segment_align): New function.
4783 (Script_sections::data_segment_relro_end): New function.
4784 (Script_sections::place_orphan): Set or clear is_relro.
4785 (Script_sections::set_section_addresses): Force alignment of first
4786 TLS section.
4787 * yyscript.y (exp): Call script_data_segment_align and
4788 script_data_segment_relro_end.
4789 * testsuite/relro_script_test.t: New file.
4790 * testsuite/relro_test.cc (using_script): Declare.
4791 (t1, t2): Test using_script.
4792 * testsuite/Makefile.am (check_PROGRAMS): Add relro_script_test.
4793 (relro_script_test_SOURCES): Define.
4794 (relro_script_test_DEPENDENCIES): Define.
4795 (relro_script_test_LDFLAGS): Define.
4796 (relro_script_test_LDADD): Define.
4797 (relro_script_test.so): New target.
4798 * testsuite/Makefile.in: Rebuild.
4799
4800 2008-08-06 Cary Coutant <ccoutant@google.com>
4801
4802 * archive.cc (Archive::total_archives, Archive::total_members)
4803 (Archive::total_members_loaded): New variables.
4804 (Archive::setup): Add parameter. Add option to preread
4805 archive symbols.
4806 (Archive::read_armap): Add counter.
4807 (Archive::get_file_and_offset): New function.
4808 (Archive::get_elf_object_for_member): New function.
4809 (Archive::read_all_symbols): New function.
4810 (Archive::read_symbols): New function.
4811 (Archive::add_symbols): Add counters.
4812 (Archive::include_all_members): Use armap to find members if it's
4813 already built.
4814 (Archive::include_member): Skip reading symbols if already read.
4815 Factored code into Archive::get_file_and_offset and
4816 Archive::get_elf_object_for_member. Changed call to
4817 Mapfile::report_include_archive_member.
4818 (Archive::print_stats): New function.
4819 * archive.h: Declare Object and Read_symbols_data classes.
4820 (Archive::Archive): Add initializers for new members.
4821 (Archive::setup): Add parameter.
4822 (Archive::print_stats): New function.
4823 (Archive::total_archives, Archive::total_members)
4824 (Archive::total_members_loaded): New variables.
4825 (Archive::get_file_and_offset): New function.
4826 (Archive::get_elf_object_for_member): New function.
4827 (Archive::read_all_symbols): New function.
4828 (Archive::read_symbols): New function.
4829 (Archive::Archive_member): New class.
4830 (Archive::members_): New member.
4831 (Archive::num_members_): New member.
4832 * main.cc: Include archive.h.
4833 (main): Call Archive::print_stats.
4834 * mapfile.cc (Mapfile::report_include_archive_member): Delete
4835 archive parameter; member_name is now the fully-decorated name.
4836 * mapfile.h (Mapfile::report_include_archive_member): Likewise.
4837 * options.h: (General_options): Add --preread-archive-symbols option.
4838 * readsyms.cc (Read_symbols::do_read_symbols): Change call to
4839 Archive::setup.
4840
4841 2008-08-04 Ian Lance Taylor <iant@google.com>
4842
4843 * symtab.h (Symbol::use_plt_offset): New function.
4844 * i386.cc (Relocate::relocate): Call Symbol::use_plt_offset.
4845 * powerpc.cc (Relocate::relocate): Likewise.
4846 * sparc.cc (Relocate::relocate): Likewise.
4847 * x86_64.cc (Relocate::relocate): Likewise.
4848 * testsuite/weak_plt.sh: New test.
4849 * testsuite/weak_plt_main.cc: New test.
4850 * testsuite/weak_plt_shared.cc: New test.
4851 * testsuite/Makefile.am (check_SCRIPTS): Add weak_plt.sh.
4852 (check_PROGRAMS): Add weak_plt.
4853 (check_DATA): Add weak_plt_shared.so.
4854 (weak_plt_main_pic.o, weak_plt): New targets.
4855 (weak_plt_shared_pic.o, weak_plt_shared.so): New targets.
4856 * testsuite/Makefile.in: Rebuild.
4857
4858 * testsuite/Makefile.am (weak_alias_test_1.so): Depend upon
4859 gcctestdir/ld.
4860 (weak_alias_test_2.so, weak_alias_test_4.so): Likewise.
4861 * testsuite/Makefile.in: Rebuild.
4862
4863 2008-08-04 Alan Modra <amodra@bigpond.net.au>
4864
4865 * Makefile.am (POTFILES.in): Set LC_ALL=C.
4866 * Makefile.in: Regenerate.
4867 * po/POTFILES.in: Regenerate.
4868
4869 2008-07-29 Ian Lance Taylor <iant@google.com>
4870
4871 * script.cc (Script_options::finalize_symbols): Finalize SECTIONS
4872 symbols before other symbols.
4873 * testsuite/script_test_2.cc (test_addr): Declare.
4874 (test_addr_alias): Declare.
4875 (main): Check that test_addr and test_addr_alias have the right
4876 values.
4877 * testsuite/script_test_2.t: Define test_addr_alias and
4878 test_addr.
4879
4880 2008-07-24 Ian Lance Taylor <iant@google.com>
4881
4882 PR 5990
4883 * descriptors.cc: New file.
4884 * descriptors.h: New file.
4885 * gold-threads.h (class Hold_optional_lock): New class.
4886 * fileread.cc: Include "descriptors.h".
4887 (File_read::~File_read): Release descriptor rather than closing
4888 it.
4889 (File_read::open) [file]: Call open_descriptor rather than open.
4890 Set is_descriptor_opened_.
4891 (File_read::open) [memory]: Assert that descriptor is not open.
4892 (File_read::reopen_descriptor): New function.
4893 (File_read::release): Release descriptor.
4894 (File_read::do_read): Make non-const. Reopen descriptor.
4895 (File_read::read): Make non-const.
4896 (File_read::make_view): Reopen descriptor.
4897 (File_read::do_readv): Likewise.
4898 * fileread.h (class File_read): Add is_descriptor_opened_ field.
4899 Update declarations.
4900 * layout.cc: Include "descriptors.h".
4901 (Layout::create_build_id): Use open_descriptor rather than open.
4902 * output.cc: Include "descriptors.h".
4903 (Output_file::open): Use open_descriptor rather than open.
4904 * archive.cc (Archive::const_iterator): Change Archive to be
4905 non-const.
4906 (Archive::begin, Archive::end): Make non-const.
4907 (Archive::count_members): Likewise.
4908 * archive.h (class Archive): Update declarations.
4909 * object.h (Object::read): Make non-const.
4910 * Makefile.am (CCFILES): Add descriptors.cc.
4911 (HFILES): Add descriptors.h.
4912 * Makefile.in: Rebuild.
4913
4914 PR 6716
4915 * gold.h: Always include <clocale>. Add Solaris workarounds
4916 following code in binutils/sysdep.h.
4917
4918 PR 6048
4919 * ehframe.cc (Eh_frame::add_ehframe_input_section): Check whether
4920 this->eh_frame_hdr_ is NULL before using it.
4921
4922 * dynobj.cc (Versions::Versions): Update comment.
4923
4924 * dynobj.cc (Versions::Versions): If there is an soname, use it as
4925 the base version name.
4926
4927 * stringpool.cc (Stringpool_template::add_with_length): Set key to
4928 array size plus one.
4929 (Stringpool_template::set_string_offsets): Subtract one from key
4930 before using it as an array index.
4931 (Stringpool_template::get_offset_with_length): Likewise.
4932 (Stringpool_template::write_to_buffer): Likewise.
4933 * stringpool.h (Stringpool_template::get_offset_from_key):
4934 Likewise.
4935
4936 2008-07-23 Ian Lance Taylor <iant@google.com>
4937
4938 PR 6658
4939 * object.h (Merged_symbol_value::value): Do our best to handle a
4940 negative addend.
4941
4942 PR 6647
4943 * script.cc (Version_script_info::get_versions): Don't add empty
4944 version tag to return value.
4945 (Version_script_info::get_symbol_version_helper): Change return
4946 type to bool. Add pversion parameter. Change all callers.
4947 (script_register_vers_node): Don't require a non-NULL tag.
4948 * script.h (class Version_script_info): Update declarations.
4949 (Version_script_info::get_symbol_version): Change return type to
4950 bool. Add version parameter. Change all callers.
4951 * symtab.cc (Sized_symbol::add_from_relobj): Rework version
4952 handling. Handle an empty version from a version script.
4953 (Symbol_table::define_special_symbol): Likewise.
4954 * testsuite/ver_test_10.script: New file.
4955 * testsuite/ver_test_10.sh: New file.
4956 * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_10.sh.
4957 (check_DATA): Add ver_test_10.syms.
4958 (ver_test_10.syms, ver_test_10.so): New target.
4959 * testsuite/Makefile.in: Rebuild.
4960
4961 2008-07-23 Simon Baldwin <simonb@google.com>
4962
4963 * symtab.cc (Symbol_table::sized_write_symbol): Only set st_size
4964 to zero for undefined symbols from dynamic libraries.
4965
4966 2008-07-23 Ian Lance Taylor <iant@google.com>
4967
4968 * symtab.cc (Symbol_table::resolve): Remove version parameter.
4969 Change all callers.
4970 * symtab.h (class Symbol_table): Update declaration.
4971 * testsuite/ver_test_9.cc: New file.
4972 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_9.
4973 (ver_test_9_SOURCES, ver_test_9_DEPENDENCIES): Define.
4974 (ver_test_9_LDFLAGS, ver_test_9_LDADD): Define.
4975 (ver_test_9.so, ver_test_9.o): New targets.
4976 * testsuite/Makefile.in: Rebuild.
4977
4978 2008-07-22 Ian Lance Taylor <iant@google.com>
4979
4980 * options.h (class General_options): Define --check-sections.
4981 * layout.cc (Layout::set_segment_offsets): Handle
4982 --check-sections.
4983
4984 * options.h (class General_options): Define -n/--nmagic and
4985 -N/--omagic.
4986 * options.cc (General_options::finalize): For -n/--nmagic or
4987 -N/--omagic, set -static.
4988 * layout.cc (Layout::attach_allocated_section_to_segment): If
4989 -N/--omagic, don't put read-only and read-write sections in
4990 different segments.
4991 (Layout::find_first_load_seg): If -N/--omagic, don't insist on
4992 finding a read-only segment.
4993 (Layout::set_segment_offsets): If -N/--omagic or -n/--nmagic,
4994 don't set the minimum segment alignment to the common page size,
4995 and don't set the file offset to the address modulo the page size.
4996 * script-sections.cc (Script_sections::create_segments): If
4997 -n/--omagic, don't put read-only and read-write sections in
4998 different segments.
4999
5000 * cref.cc: New file.
5001 * cref.h: New file.
5002 * options.h (class General_options): Add --print-symbol-counts.
5003 * main.cc (main): Issue defined symbol report if requested.
5004 * archive.cc (Archive::interpret_header): Make into a const member
5005 function.
5006 (Archive::add_symbols): Call Input_objects::archive_start and
5007 archive_stop.
5008 (Archive::const_iterator): Define new class.
5009 (Archive::begin, Archive::end): New functions.
5010 (Archive::include_all_members): Rewrite to use iterator.
5011 (Archive::count_members): New function.
5012 * archive.h (class Archive): Update declarations.
5013 (Archive::filename): New function.
5014 * object.cc: Include "cref.h".
5015 (Sized_relobj::Sized_relobj): Initialize defined_count_.
5016 (Sized_relobj::do_get_global_symbol_counts): New function.
5017 (Input_objects::add_object): Add object to cross-referencer.
5018 (Input_objects::archive_start): New function.
5019 (Input_objects::archive_stop): New function.
5020 (Input_objects::print_symbol_counts): New function.
5021 * object.h: Declare Cref and Archive.
5022 (Object::get_global_symbol_counts): New function.
5023 (Object::do_get_global_symbol_counts): New pure virtual function.
5024 (class Sized_relobj): Add defined_count_ field. Update
5025 declarations.
5026 (class Input_objects): Add cref_ field. Update constructor.
5027 Update declarations.
5028 * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize symbols_ and
5029 defined_count_.
5030 (Sized_dynobj::do_add_symbols): Allocate symbols_ if printing
5031 symbol counts.
5032 (Sized_dynobj::do_get_global_symbol_counts): New function.
5033 * dynobj.h (class Sized_dynobj): Add fields symbols_ and
5034 defined_count_. Update declarations. Define Symbols typedef.
5035 * symtab.cc (Symbol_table::add_from_relobj): Add defined
5036 parameter. Change all callers.
5037 (Symbol_table::add_from_dynobj): Add sympointers and defined
5038 parameters. Change all callers.
5039 * symtab.h (class Symbol_table): Update declarations.
5040 * Makefile.am (CCFILES): Add cref.cc.
5041 (HFILES): Add cref.h.
5042 * Makefile.in: Rebuild.
5043
5044 2008-07-22 Simon Baldwin <simonb@google.com>
5045
5046 * symtab.cc (Symbol_table::sized_write_symbol): Set symbol size
5047 to zero when writing undefined symbols.
5048
5049 2008-07-22 Ian Lance Taylor <iant@google.com>
5050
5051 * output.cc (Output_section::add_input_section): Don't try to
5052 merge empty merge sections.
5053
5054 2008-07-21 Craig Silverstein <csilvers@google.com>
5055
5056 * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
5057 Include symbol version in error message.
5058
5059 2008-07-20 Chris Demetriou <cgd@google.com>
5060
5061 * configure.ac (gold_cv_c_random_seed): New configured variable.
5062 (RANDOM_SEED_CFLAGS): New substituted variable.
5063 * Makefile.am (AM_CFLAGS, AM_CXXFLAGS): Add $(RANDOM_SEED_CFLAGS).
5064 * configure: Rebuild.
5065 * Makefile.in: Likewise.
5066 * testsuite/Makefile.in: Likewise.
5067
5068 2008-07-18 Ian Lance Taylor <iant@google.com>
5069
5070 * symtab.cc (Symbol_table::add_from_object): Rewrite the case
5071 where we see NAME/NULL and NAME/VERSION as separate symbols.
5072 * testsuite/ver_test_main.cc (main): Call t4.
5073 (t4, t4_2a): Define.
5074 * testsuite/ver_test_2.cc (t4_2): Define.
5075 * testsuite/ver_test_2.script: Put t4_2a in VER2.
5076 * testsuite/ver_test_4.cc (t4_2a): Define.
5077 * testsuite/ver_test_4.script: Put t4_2a in VER2.
5078 * testsuite/ver_test.h (t4, t4_2, t4_2a): Declare.
5079
5080 2008-07-17 Ian Lance Taylor <iant@google.com>
5081
5082 * dynobj.cc (Versions::add_def): If we give an error about a
5083 missing version, go ahead and create the version anyhow.
5084
5085 2008-07-10 Ian Lance Taylor <iant@google.com>
5086
5087 Handle output sections with more than 0x7fffffff bytes.
5088 * object.h (class Relobj): Change map_to_output_ to
5089 output_sections_, and just keep a section pointer. Change all
5090 uses. Move comdat group support to Sized_relobj.
5091 (Relobj::is_section_specially_mapped): Remove.
5092 (Relobj::output_section): Remove poff parameter. Change all
5093 callers.
5094 (Relobj::output_section_offset): New function.
5095 (Relobj::set_section_offset): Rewrite.
5096 (Relobj::map_to_output): Remove.
5097 (Relobj::output_sections): New function.
5098 (Relobj::do_output_section_offset): New pure virtual function.
5099 (Relobj::do_set_section_offset): Likewise.
5100 (class Sized_relobj): Add section_offsets_ field. Add comdat
5101 group support from Relobj. Update declarations.
5102 (Sized_relobj::get_output_section_offset): New function.
5103 (Sized_relobj::do_output_section_offset): New function.
5104 (Sized_relobj::do_set_section_offset): New function.
5105 * object.cc (Relobj::output_section_address): Remove.
5106 (Sized_relobj::Sized_relobj): Initialize new fields.
5107 (Sized_relobj::include_section_group): Cast find_kept_object to
5108 Sized_relobj.
5109 (Sized_relobj::include_linkonce_section): Likewise.
5110 (Sized_relobj::do_layout): Use separate arrays for output section
5111 and output offset.
5112 (Sized_relobj::do_count_local_symbols): Change map_to_output to
5113 output_sections.
5114 (Sized_relobj::do_finalize_local_symbols): Change map_to_output to
5115 output_sections and section_offsets.
5116 (Sized_relobj::write_local_symbols): Likewise.
5117 (map_to_kept_section): Compute output address directly.
5118 * reloc.cc (Sized_relobj::do_read_relocs): Change map_to_output to
5119 output_sections and section_offsets.
5120 (Sized_relobj::write_sections): Likewise.
5121 (Sized_relobj::relocate_sections): Likewise.
5122 * symtab.cc (sized_finalize_symbol): Use output_section_offset.
5123 * output.h (class Output_reloc): Update declarations. Change
5124 u2_.relobj to Sized_relobj*.
5125 (class Output_data_reloc): Change add functions to use
5126 Sized_relobj*.
5127 * output.cc (Output_reloc::Output_reloc): Change relobj to
5128 Sized_relobj*.
5129 (Output_reloc::local_section_offset): Change return type to
5130 Elf_Addr. Use get_output_section_offset.
5131 (Output_reloc::get_address): Likewise.
5132 (Output_section::is_input_address_mapped): Don't call
5133 is_section_specially_mapped.
5134 (Output_section::output_offset): Likewise.
5135 (Output_section::output_address): Likewise.
5136 (Output_section::starting_output_address): Likewise.
5137 * copy-relocs.cc (Copy_relocs::copy_reloc): Change object
5138 parameter to Sized_relobj*.
5139 (Copy_relocs::need_copy_reloc): Likewise.
5140 (Copy_relocs::save): Likewise.
5141 * copy-relocs.h (class Copy_relocs): Update declarations.
5142 (class Copy_relocs::Copy_reloc_entry): Change constructor to use
5143 Sized_relobj*. Change relobj_ field to Sized_relobj*.
5144 * target-reloc.h (relocate_for_relocatable): Change
5145 offset_in_output_section type to Elf_Addr. Change code that uses
5146 it as well.
5147 * layout.cc (Layout::layout): Always set *off.
5148 * mapfile.cc (Mapfile::print_input_section): Use
5149 output_section_offset.
5150 * i386.cc (Target_i386::copy_reloc): Change object parameter to
5151 Sized_relobj*.
5152 * powerpc.cc (Target_powerpc::copy_reloc): Likewise.
5153 * sparc.cc (Target_sparc::copy_reloc): Likewise.
5154 * x86_64.cc (Target_x86_64::copy_reloc): Likewise.
5155
5156 2008-07-03 Ian Lance Taylor <iant@google.com>
5157
5158 * layout.cc (Layout::include_section): Do not discard unrecognized
5159 SHT_STRTAB sections.
5160
5161 2008-06-30 Craig Silverstein <csilvers@cs.stanford.edu>
5162
5163 * script.cc (Lex::can_continue_name): Make '?' allowable in
5164 version-script names.
5165 * testsuite/version_script.map: Change glob pattern to use '?'
5166
5167 2008-06-30 Manish Singh <yosh@gimp.org>
5168
5169 PR 6585
5170 * symtab.cc (Symbol_table::add_undefined_symbols_from_command_line):
5171 Correct typo.
5172
5173 2008-06-30 Ian Lance Taylor <iant@google.com>
5174
5175 PR 6660
5176 PR 6682
5177 * powerpc.cc (Powerpc_relocate_functions::addr16_ha) [both
5178 versions]: Don't try to read the value in the contents, since we
5179 don't use it. Use the template endianness when writing.
5180
5181 2008-06-25 Cary Coutant <ccoutant@google.com>
5182
5183 * fileread.cc (File_read::make_view): Assert on zero-length view.
5184 * object.cc (Sized_relobj::do_read_symbols): Don't try to read
5185 symbol table when there are no symbols to read.
5186
5187 2008-06-23 Craig Silverstein <csilvers@google.com>
5188
5189 * version.cc (version_string): Bump to 1.7
5190
5191 2008-06-18 Craig Silverstein <csilvers@google.com>
5192
5193 * powerpc.cc (Powerpc_relocate_functions::addr16_ha): cast
5194 constant 0xFFFF to type Valtype.
5195 (Powerpc_relocate_functions::rel16_ha): Likewise.
5196
5197 2008-06-17 Ian Lance Taylor <iant@google.com>
5198
5199 * output.h (Output_section::Input_section): Initialize p2align_ to
5200 zero for Output_section_data constructors.
5201 (Output_section::Input_section::addralign): If not an input
5202 section, return the alignment of the Output_section_data.
5203 * testsuite/copy_test.cc: New file.
5204 * testsuite/copy_test_1.cc: New file.
5205 * testsuite/copy_test_2.cc: New file.
5206 * testsuite/Makefile.am (check_PROGRAMS): Add copy_test.
5207 (copy_test_SOURCES, copy_test_DEPENDENCIES): New variables.
5208 (copy_test_LDFLAGS, copy_test_LDADD): New variables.
5209 (copy_test_1_pic.o, copy_test_1.so): New targets.
5210 (copy_test_2_pic.o, copy_test_2.so): New targets.
5211 * testsuite/Makefile.in: Rebuild.
5212
5213 * script-sections.cc (Script_sections::place_orphan): Initialize
5214 local variable exact.
5215
5216 2008-06-13 David Edelsohn <edelsohn@gnu.org>
5217
5218 * powerpc.cc (Output_data_plt_powerpc::do_write): 8 + 4 = 0xC.
5219
5220 2008-06-12 David Edelsohn <edelsohn@gnu.org>
5221 David S. Miller <davem@davemloft.net>
5222
5223 * powerpc.cc: New file.
5224 * Makefile.am (TARGETSOURCES): Add powerpc.cc
5225 (ALL_TARGETOBJS): Add powerpc.$(OBJEXT)
5226 * configure.tgt: Add entries for powerpc-* and powerpc64-*.
5227 * Makefile.in: Rebuild.
5228
5229 2008-06-09 Ian Lance Taylor <iant@google.com>
5230
5231 * testsuite/relro_test.cc: Include <cstdio>, <cstdlib>, and
5232 <exception>.
5233 (throwing, orig_terminate): New static variables.
5234 (terminate_handler): New static function.
5235 (t2): Set terminate handler.
5236
5237 2008-06-05 Kris Van Hees <kris.van.hees@oracle.com>
5238
5239 PR 6584
5240 * binary.cc (Binary_to_elf::sized_convert): Fix .data
5241 alignment.
5242
5243 2008-05-30 Cary Coutant <ccoutant@google.com>
5244
5245 * archive.cc (Archive::include_all_members) Correct to step
5246 over symbol table and extended name table in thin archives.
5247
5248 2008-05-29 Kris Van Hees <kris.van.hees@oracle.com>
5249
5250 PR 6407
5251 * target-reloc.h (relocate_for_relocatable): Fix new_offset
5252 calculation.
5253
5254 2008-05-28 Caleb Howe <cshowe@google.com>
5255
5256 * reduced_debug_output.cc: New file.
5257 * reduced_debug_output.h: New file.
5258 * options.h (class General_options): Add --strip-debug-non-line.
5259 * options.cc (General_options::finalize): Add strip_debug_non_line
5260 to the strip heirarchy.
5261 * layout.h (class Layout): Add debug_abbrev_ and debug_info_
5262 fields.
5263 * layout.cc: Include "reduced_debug_output.h".
5264 (Layout::Layout): Initialize new fields.
5265 (line_only_debug_sections): New static array.
5266 (is_lines_only_debug_sections): New static inline function.
5267 (Layout::include_section): Handle --strip-debug-non-line.
5268 (Layout::make_output_section): If --strip-debug-non-line, build
5269 new output sections for .debug_abbrev and .debug_info.
5270 * dwarf_reader.cc (read_unsigned_LEB_128): Move to namespace
5271 gold. Warn about possible overflow.
5272 (read_signed_LEB_128): Likewise.
5273 * dwarf_reader.h: (read_unsigned_LEB_128): Declare.
5274 (read_signed_LEB_128): Declare.
5275 * Makefile.am (CCFILES): Add reduced_debug_output.cc.
5276 (HFILES): Add reduced_debug_output.h.
5277 * Makefile.in: Rebuild.
5278
5279 2008-05-21 Ian Lance Taylor <iant@google.com>
5280
5281 * mapfile.cc: New file.
5282 * mapfile.h: New file.
5283 * options.h (class General_options): Add -M/--print-map and -Map.
5284 * options.cc (General_options::finalize): Make -M equivalent to
5285 -Map -.
5286 * main.cc: Include <cstdio> and "mapfile.h".
5287 (main): Open mapfile if requested.
5288 * gold.cc (class Middle_runner): Add mapfile_ field. Update
5289 constructor. Change caller.
5290 (queue_initial_tasks): Add mapfile parameter. Change caller.
5291 (queue_middle_tasks): Likewise.
5292 * gold.h (queue_initial_tasks, queue_middle_tasks): Update
5293 declarations.
5294 * archive.cc: Include "mapfile.h".
5295 (Archive::add_symbols): Add mapfile parameter. Change all
5296 callers. Pass mapfile, symbol, and reason to include_member.
5297 (Archive::include_all_members): Add mapfile parameter. Change all
5298 callers.
5299 (Archive::include_member): Add mapfile, sym, and why parameters.
5300 Change all callers. Report inclusion to map file.
5301 * archive.h: Include "fileread.h".
5302 (class Archive): Update declarations.
5303 (Archive::file): New const method.
5304 (class Add_archive_symbols): Add mapfile_ field. Update
5305 constructor. Change all callers.
5306 * readsyms.h (class Read_symbols): Likewise.
5307 (class Finish_group): Likewise.
5308 (class Read_script): Likewise.
5309 * common.cc: Include "mapfile.h".
5310 (Symbol_table::allocate_commons): Add mapfile parameter. Change
5311 all callers.
5312 (Symbol_table::do_allocate_commons): Likewise.
5313 (Symbol_table::do_allocate_commons_list): Likewise. Report common
5314 symbol allocation to mapfile.
5315 * common.h (class Allocate_commons_task): Add mapfile_ field.
5316 Update constructor. Change all callers.
5317 * symtab.h (class Symbol_table): Update declarations.
5318 * layout.cc: Include "mapfile.h".
5319 (Layout_task_runner::run): Print information to mapfile.
5320 (Layout::create_gold_note): Change Output_data_fixed_space to
5321 Output_data_zero_fill.
5322 (Layout::create_build_id): Likewise.
5323 (Layout::print_to_mapfile): New function.
5324 * layout.h (class Layout_task_runner): Add mapfile_ field. Update
5325 constructor. Change caller.
5326 (class Layout): Declare print_to_mapfile.
5327 * output.cc (Output_section::Input_section::print_to_mapfile): New
5328 function.
5329 (Output_section::add_input_section): If producing a map, always
5330 add to input_sections_ list.
5331 (Output_section::do_print_to_mapfile): New function.
5332 (Output_segment::print_sections_to_mapfile): New function.
5333 (Output_segment::print_section_list_to_mapfile): New function.
5334 * output.h: Include "mapfile.h".
5335 (Output_data::print_to_mapfile): New function.
5336 (Output_data::do_print_to_mapfile): New virtual function.
5337 (Output_segment_headers::do_print_to_mapfile): New function.
5338 (Output_file_header::do_print_to_mapfile): New function.
5339 (Output_data_const::do_print_to_mapfile): New function.
5340 (class Output_data_const_buffer): Add map_name_ field. Update
5341 constructor. Change all callers. Add do_print_to_mapfile
5342 function.
5343 (class Output_data_fixed_space): Likewise.
5344 (class Output_data_space): Likewise.
5345 (class Output_data_zero_fill): New class.
5346 (Output_data_strtab::do_print_to_mapfile): New function.
5347 (Output_data_reloc_base::do_print_to_mapfile): New function.
5348 (Output_relocatable_relocs::do_print_to_mapfile): New function.
5349 (Output_data_group::do_print_to_mapfile): New function.
5350 (Output_data_got::do_print_to_mapfile): New function.
5351 (Output_data_dynamic::do_print_to_mapfile): New function.
5352 (Output_symtab_xindex::do_print_to_mapfile): New function.
5353 (class Output_section): Declare do_print_to_mapflie. Declare
5354 print_to_mapfile in Input_section.
5355 (class Output_segment): Declare new functions.
5356 * object.h (Sized_relobj::symbol_count): New function.
5357 * script-sections.cc
5358 (Output_section_element_dot_assignment::set_section_addresses):
5359 Change Output_data_fixed_space to Output_data_zero_fill.
5360 (Output_data_expression::do_print_to_mapfile): New function.
5361 * script.cc (read_input_script): Add mapfile parameter. Change
5362 all callers.
5363 * script.h (read_input_script): Update declaration.
5364 * ehframe.h (Eh_frame_hdr::do_print_to_mapfile): New function.
5365 (Eh_frame::do_print_to_mapfile): New function.
5366 * merge.h (Output_merge_data::do_print_to_mapfile): New function.
5367 (Output_merge_string::do_print_to_mapfile): New function.
5368 * i386.cc (Output_data_plt_i386::do_print_to_mapfile): New
5369 function.
5370 * sparc.cc (Output_data_plt_sparc::do_print_to_mapfile): New
5371 function.
5372 * x86_64.cc (Output_data_plt_x86_64::do_print_to_mapfile): New
5373 function.
5374 * Makefile.am (CCFILES): Add mapfile.cc.
5375 (HFILES): Add mapfile.h.
5376 * Makefile.in: Rebuild.
5377
5378 2008-05-19 Ian Lance Taylor <iant@google.com>
5379
5380 * options.h (class General_options): Add -z relro.
5381 * layout.cc (Layout::Layout): Initialize relro_segment_.
5382 (Layout::add_output_section_data): Return the output section.
5383 (Layout::make_output_section): Rcognize relro sections and mark
5384 them appropriately.
5385 (Layout::attach_allocated_section_to_segment): Put relro sections
5386 in a PT_GNU_RELRO segment.
5387 (Layout::create_initial_dynamic_sections): Mark the .dynamic
5388 section as relro.
5389 (Layout::segment_precedes): Sort PT_GNU_RELRO segments after
5390 PT_TLS segments.
5391 (Layout::linkonce_mapping): Map d.rel.ro.local to
5392 .data.rel.ro.local.
5393 (Layout::output_section_name): Us .data.rel.ro.local for any
5394 section which begins with that.
5395 * layout.h (class Layout): Update add_output_section_data
5396 declaration. Add relro_segment_ field.
5397 * output.cc (Output_section::Output_section): Initialize is_relro_
5398 and is_relro_local_ fields.
5399 (Output_segment::add_output_section): Group relro sections.
5400 (Output_segment::is_first_section_relro): New function.
5401 (Output_segment::maximum_alignment): If there is a relro section,
5402 align the segment to the common page size.
5403 (Output_segment::set_section_addresses): Track whether we are
5404 looking at relro sections. If the last section is a relro
5405 section, align to the common page size.
5406 (Output_segment::set_section_list_addresses): Add in_relro
5407 parameter. Change all callers. Align to the page size when
5408 moving from relro to non-relro section.
5409 (Output_segment::set_offset): Align memsz of a PT_GNU_RELRO
5410 segment.
5411 * output.h (class Output_section): Add is_relro_ and
5412 is_relro_local_ fields.
5413 (Output_section::is_relro): New function.
5414 (Output_section::set_is_relro): New function.
5415 (Output_section::is_relro_local): New function.
5416 (Output_section::set_is_relro_local): New function.
5417 (class Output_segment): Update declarations.
5418 * i386.cc (Target_i386::got_section): Mark .got section as relro.
5419 * sparc.cc (Target_sparc::got_section): Likewise.
5420 * x86_64.cc (Target_x86_64::got_section): Likewise.
5421 * testsuite/relro_test_main.cc: New file.
5422 * testsuite/relro_test.cc: New file.
5423 * testsuite/Makefile.am (check_PROGRAMS): Add relro_test.
5424 (relro_test_SOURCES, relro_test_DEPENDENCIES): New variables.
5425 (relro_test_LDFLAGS, relro_test_LDADD): New variables.
5426 (relro_test.so, relro_test_pic.o): New targets.
5427 * testsuite/Makefile.in: Rebuild.
5428
5429 2008-05-16 Ian Lance Taylor <iant@google.com>
5430
5431 * output.cc (Output_segment::add_output_section): Remove front
5432 parameter.
5433 * output.h (class Output_segment): Remove
5434 add_initial_output_section and overloaded add_output_section.
5435 Update declaration of remaining add_output_section.
5436 * layout.cc (Layout::create_interp): Call add_output_section
5437 rather than add_initial_output_section.
5438 (Layout::finish_dynamic_section): Likewise.
5439
5440 * i386.cc (Target_i386::Relocate::relocate_tls): Set dynamic type
5441 for TLS_GOTDESC and TLS_DESC_CALL. Only optimize TLS_LDO_32 if we
5442 know the dynamic type.
5443 * x86_64.cc (Target_x86_64::Relocate): Add saw_tls_block_reloc_
5444 field. Initialize it in constructor.
5445 (Target_x86_64::Relocate::relocate_tls): Record that we saw a TLS
5446 block reloc for TLSGD, GOTPC32_TLSDESC, TLSDESC_CALL, and TLSLD.
5447 Only optimize DTPOFF32 and DTPOFF64 if we have seen a TLS block
5448 reloc.
5449
5450 * output.cc (Output_reloc::get_address): Change return type to
5451 Elf_Addr.
5452 * output.h (class Output_reloc): Update get_address declaration.
5453 * x86_64.cc (Output_data_plt_x86_64::do_write): Use 64-bit types
5454 for section addresses.
5455
5456 2008-05-09 Ian Lance Taylor <iant@google.com>
5457
5458 PR 6493
5459 * gold.cc (gold_nomem): Use return value of write.
5460
5461 2008-05-08 Ian Lance Taylor <iant@google.com>
5462
5463 * symtab.c (Symbol::init_base_output_data): Add version
5464 parameter. Change all callers.
5465 (Symbol::init_base_output_segment): Likewise.
5466 (Symbol::init_base_constant): Likewise.
5467 (Symbol::init_base_undefined): Likewise.
5468 (Sized_symbol::init_output_data): Likewise.
5469 (Sized_symbol::init_output_segment): Likewise.
5470 (Sized_symbol::init_constant): Likewise.
5471 (Sized_symbol::init_undefined): Likewise.
5472 (Symbol_table::do_define_in_output_data): If the new symbol has a
5473 version, mark it as the default.
5474 (Symbol_table::do_define_in_output_segment): Likewise.
5475 (Symbol_table::do_define_as_constant): Likewise.
5476 * symtab.h (class Symbol): Update declarations.
5477 (class Sized_symbol): Likewise.
5478 * resolve.cc (Symbol::override_version): New function.
5479 (Symbol::override_base): Call override_version.
5480 (Symbol::override_base_with_special): Likewise.
5481 * testsuite/ver_script_8.script: New file.
5482 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_8.
5483 (ver_test_8_SOURCES, ver_test_8_DEPENDENCIES): Define.
5484 (ver_test_8_LDFLAGS, ver_test_8_LDADD): Define.
5485 (ver_test_8_1.so, ver_test_8_2.so): New targets.
5486
5487 2008-05-06 Ian Lance Taylor <iant@google.com>
5488
5489 PR 6049
5490 * options.h (DEFINE_set): Add VARNAME_begin and VARNAME_end
5491 functions.
5492 (class General_options): Remove existing --undefined, and add
5493 --no-undefined instead. Add new --undefined as synonym for -u.
5494 * archive.cc (Archive::add_symbols): Check whether symbol was
5495 named with -u.
5496 * gold.cc (queue_middle_tasks): Add -u symbols to symbol table.
5497 * symtab.h (class Symbol): Rename CONSTANT to IS_CONSTANT; change
5498 all uses. Add IS_UNDEFINED. Update declarations to split
5499 different versions of init_base. Declare init_base_undefined.
5500 (Symbol::is_defined): Handle IS_UNDEFINED.
5501 (Symbol::is_undefined): Likewise.
5502 (Symbol::is_weak_undefined): Call is_undefined.
5503 (Symbol::is_absolute): Handle IS_CONSTANT.
5504 (class Sized_symbol): Update declarations to split different
5505 versions of init. Declare init_undefined.
5506 (class Symbol_table): Declare new functions.
5507 * symtab.cc (Symbol::init_base_object): Rename from init_base.
5508 Change all callers.
5509 (Symbol::init_base_output_data): Likewise.
5510 (Symbol::init_base_output_segment): Likewise.
5511 (Symbol::init_base_constant): Likewise.
5512 (Symbol::init_base_undefined): New function.
5513 (Sized_symbol::init_object): Rename from init. Change all
5514 callers.
5515 (Sized_symbol::init_output_data): Likewise.
5516 (Sized_symbol::init_output_segment): Likewise.
5517 (Sized_symbol::init_constant): Likewise.
5518 (Sized_symbol::init_undefined): New function.
5519 (Symbol_table::add_undefined_symbols_from_command_line): New
5520 function.
5521 (Symbol_table::do_add_undefined_symbols_from_command_line): New
5522 function.
5523 (Symbol::final_value_is_known): Handle IS_UNDEFINED.
5524 (Symbol::output_section): Likewise.
5525 (Symbol::set_output_section): Likewise.
5526 (Symbol_table::sized_finalize_symbol): Likewise.
5527 (Symbol_table::sized_write_globals): Likewise.
5528 * resolve.cc (Symbol_table::should_override): Likewise.
5529 (Symbol::override_base_with_special): Likewise.
5530
5531 * symtab.cc (Symbol_table::add_from_dynobj): If we see a protected
5532 symbol, change it to have default visibility.
5533 * testsuite/protected_1.cc: New file.
5534 * testsuite/protected_2.cc: New file.
5535 * testsuite/protected_3.cc: New file.
5536 * testsuite/protected_main_1.cc: New file.
5537 * testsuite/protected_main_2.cc: New file.
5538 * testsuite/protected_main_3.cc: New file.
5539 * testsuite/Makefile.am (check_PROGRAMS): Add protected_1.
5540 (protected_1_SOURCES, protected_1_DEPENDENCIES): Define.
5541 (protected_1_LDFLAGS, protected_1_LDADD): Define.
5542 (protected_1.so): New target.
5543 (protected_1_pic.o, protected_2_pic.o): New targets.
5544 (protected_3_pic.o): New target.
5545 (check_PROGRAMS): Add protected_2.
5546 (protected_2_SOURCES, protected_2_DEPENDENCIES): Define.
5547 (protected_2_LDFLAGS, protected_2_LDADD): Define.
5548 * testsuite/Makefile.in: Rebuild.
5549
5550 * options.h (DEFINE_var): Add set_user_set_##varname__.
5551 (DEFINE_bool_alias): New macro.
5552 (class General_options): Define -Bstatic using DEFINE_bool_alias
5553 rather than DEFINE_special. Add --undefined as an alias for -z
5554 defs.
5555 * options.cc (General_options::parse_Bstatic): Remove.
5556
5557 * options.h (class General_options): Add --fatal-warnings.
5558 * main.cc (main): Implement --fatal-warnings.
5559 * errors.h (Errors::warning_count): New function.
5560
5561 * options.h (class General_options): Add -Bsymbolic-functions.
5562 * symtab.h (Symbol::is_preemptible): Check for
5563 -Bsymbolic-functions.
5564
5565 2008-05-05 Ian Lance Taylor <iant@google.com>
5566
5567 * options.h (DEFINE_bool): For DASH_Z, create the negative option
5568 as noVARNAME rather than no-VARNAME.
5569 (class General_options): Add option -z combreloc.
5570 * output.h (class Output_reloc) [SHT_REL]: Declare compare and
5571 get_address.
5572 (Output_reloc::sort_before) [SHT_REL]: New function.
5573 (Output_reloc::sort_before) [SHT_RELA]: New function.
5574 (class Output_data_reloc_base): Add sort_relocs_ field. Define
5575 Sort_relocs_comparison.
5576 (Output_data_reloc_base::Output_data_reloc_base): Add sort_relocs
5577 parameter. Change all callers.
5578 (Output_data_reloc::Output_data_reloc) [both versions]: Add
5579 sort_relocs parameter. Change all callers.
5580 * output.cc (Output_reloc::get_address): New function, broken out
5581 of write_rel.
5582 (Output_reloc::write_rel): Call it.
5583 (Output_reloc::compare): New function.
5584 (Output_data_reloc_base::do_write): Optionally sort relocs.
5585
5586 * configure.ac: If targ_extra_obj is set, link it in.
5587 * configure.tgt: Initialize all variables.
5588 (x86_64*): Set targ_extra_obj and targ_extra_size.
5589 * configure: Rebuild.
5590
5591 * object.cc (Sized_relobj::include_section_group): Adjust section
5592 indexes read from group data. Build vector to pass to
5593 layout_group.
5594 * layout.cc (Layout::layout_group): Add flags and shndxes
5595 parameters. Remove contents parameter. Change caller. Update
5596 explicit instantiations.
5597 * layout.h (class Layout): Update layout_group declaration.
5598 * output.cc (Output_data_group::Output_data_group): Add flags and
5599 input_shndxes parameters. Remove contents parameter. Change
5600 caller.
5601 (Output_data_group::do_write): Change input_sections_ to
5602 input_shndxes_.
5603 * output.h (class Output_data_group): Update constructor
5604 declaration. Rename input_sections_ to input_shndxes_.
5605 * testsuite/many_sections_test.cc: Add template.
5606
5607 2008-04-30 Cary Coutant <ccoutant@google.com>
5608
5609 * target-reloc.h (relocate_section): Fix dead-pointer bug.
5610
5611 * layout.cc (Layout::include_section): Refactored check for debug
5612 info section.
5613 (Layout::add_comdat): Add new parameters. Change type
5614 of signature parameter. Add object and shndx to signatures table.
5615 (Layout::find_kept_object): New function.
5616 * layout.h: Include <cstring>.
5617 (Layout::is_debug_info_section): New function.
5618 (Layout::add_comdat): Add new parameters.
5619 (Layout::find_kept_object): New function.
5620 (Layout::Kept_section): New struct.
5621 (Layout::Signatures): Change type of map range.
5622 * object.cc (Relobj::output_section_address): New function.
5623 (Sized_relobj::include_section_group): Add new parameters. Change
5624 calls to Layout::add_comdat. Change to build table of kept comdat
5625 groups and table mapping discarded sections to kept sections.
5626 (Sized_relobj::include_linkonce_section): Likewise. Add new parameter.
5627 (Sized_relobj::do_layout): Change calls to include_section_group and
5628 include_linkonce_section.
5629 (Sized_relobj::do_finalize_local_symbols): Do not set local symbol
5630 value to zero when section is discarded.
5631 (Sized_relobj::map_to_kept_section): New function.
5632 * object.h (Relobj::output_section_address): New function.
5633 (Relobj::Comdat_group): New type.
5634 (Relobj::find_comdat_group): New function.
5635 (Relobj::Comdat_group_table): New type.
5636 (Relobj::Kept_comdat_section): New type.
5637 (Relobj::Kept_comdat_section_table): New type.
5638 (Relobj::add_comdat_group): New function.
5639 (Relobj::set_kept_comdat_section): New function.
5640 (Relobj::get_kept_comdat_section): New function.
5641 (Relobj::comdat_groups_): New field.
5642 (Relobj::kept_comdat_sections_): New field.
5643 (Symbol_value::input_value): Update comment.
5644 (Sized_relobj::map_to_kept_section) New function.
5645 (Sized_relobj::include_linkonce_section): Add new parameter.
5646 * target-reloc.h (Comdat_behavior): New type.
5647 (get_comdat_behavior): New function.
5648 (relocate_section): Add code to map a discarded section to the
5649 corresponding kept section when applying a relocation.
5650
5651 2008-04-30 Craig Silverstein <csilvers@google.com>
5652
5653 * dwarf_reader.cc (next_generation_count): New static var.
5654 (Addr2line_cache_entry): New struct.
5655 (addr2line_cache): New static var.
5656 (Dwarf_line_info::one_addr2line): Added caching.
5657 (Dwarf_line_info::clear_addr2line_cache): New function.
5658 * dwarf_reader.h (Dwarf_line_info::one_addr2line): Add
5659 cache-size parameter.
5660 (Dwarf_line_info::one_addr2line_cache): New function.
5661 * symtab.cc (Symbol_table::detect_odr_violations): Pass
5662 new cache-size argument to one_addr2line(), and clear cache.
5663
5664 2008-04-28 Cary Coutant <ccoutant@google.com>
5665
5666 * i386.cc (Relocate::relocate): Fix typos for R_386_PC16 and
5667 R_386_PC8 relocations.
5668
5669 2008-04-23 Ian Lance Taylor <iant@google.com>
5670
5671 * object.cc (Sized_relobj::include_section_group): Check for
5672 invalid section group.
5673
5674 * object.cc (make_elf_object): Correct test for 64-bit ELF file
5675 header size.
5676
5677 * readsyms.cc (Read_symbols::do_read_symbols): Use get_view rather
5678 than read for file header.
5679 * archive.cc (Archive::include_member): Likewise.
5680
5681 2008-04-23 Paolo Bonzini <bonzini@gnu.org>
5682
5683 * aclocal.m4: Regenerate.
5684 * configure: Regenerate.
5685
5686 2008-04-19 Ian Lance Taylor <iant@google.com>
5687
5688 * version.cc (version_string): Bump to 1.6.
5689
5690 * testsuite/Makefile.am (many_sections_r_test): New target.
5691 (many_sections_r_test_SOURCES): Remove.
5692 (many_sections_r_test_DEPENDENCIES): Remove.
5693 (many_sections_r_test_LDFLAGS): Remove.
5694 (many_sections_r_test_LDADD): Remove.
5695
5696 * object.cc (Sized_relobj::do_add_symbols): Always pass
5697 local_symbol_count_ to add_from_relobj.
5698
5699 * testsuite/Makefile.am (many_sections_check.h): Only check one in
5700 every thousand variables.
5701 * testsuite/Makefile.in: Rebuild.
5702
5703 * object.cc (Xindex::initialize_symtab_xindex): New function.
5704 (Xindex::read_symtab_xindex): New function.
5705 (Xindex::sym_xindex_to_shndx): New function.
5706 (Sized_relobj::find_symtab): Pick up SHT_SYMTAB_SHNDX section if
5707 available.
5708 (Sized_relobj::do_initialize_xindex): New function.
5709 (Sized_relobj::do_read_symbols): Adjust section links.
5710 (Sized_relobj::symbol_section_and_value): Add is_ordinary
5711 parameter. Change all callers.
5712 (Sized_relobj::include_section_group): Adjust section links and
5713 symbol section indexes.
5714 (Sized_relobj::do_layout): Adjust section links.
5715 (Sized_relobj::do_count_local_symbols): Adjust section links and
5716 symbol section indexes.
5717 (Sized_relobj::do_finalize_local_symbols): Distinguish between
5718 ordinary and special symbols.
5719 (Sized_relobj::write_local_symbols): Add symtab_xindex and
5720 dynsym_xindex parameters. Change all callers. Adjust section
5721 links. Use SHN_XINDEX when needed.
5722 (Sized_relobj::get_symbol_location_info): Adjust section links.
5723 Don't get fooled by special symbols.
5724 * object.h (class Xindex): Define.
5725 (class Object): Add xindex_ parameter. Declare virtual functoin
5726 do_initialize_xindex.
5727 (Object::adjust_sym_shndx): New function.
5728 (Object::set_xindex): New protected function.
5729 (class Symbol_value): Add is_ordinary_shndx_ field.
5730 (Symbol_value::Symbol_value): Initialize is_ordinary_shndx_.
5731 (Symbol_value::value): Assert ordinary section.
5732 (Symbol_value::initialize_input_to_output_map): Likewise.
5733 (Symbol_value::set_input_shndx): Add is_ordinary parameter.
5734 Change all callers.
5735 (Symbol_value::input_shndx): Add is_ordinary parameter. Change
5736 all callers.
5737 (class Sized_relobj): Update declarations.
5738 (Sized_relobj::local_symbol_input_shndx): Add is_ordinary
5739 parameter. Change all callers.
5740 (Sized_relobj::adjust_shndx): New function.
5741 * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize dynsym_shndx_
5742 field.
5743 (Sized_dynobj::find_dynsym_sections): Remove pdynsym_shndx
5744 parameter. Change all callers. Pick up SHT_DYNSYM_SHNDX section
5745 for SHT_DYNSYM section if available. Set dynsym_shndx_ field.
5746 (Sized_dynobj::read_dynsym_section): Adjust section links.
5747 (Sized_dynobj::read_dynamic): Likewise.
5748 (Sized_dynobj::do_read_symbols): Use dynsym_shndx_ field. Adjust
5749 section links.
5750 (Sized_dynobj::do_initialize_xindex): New function.
5751 * dynobj.h (class Sized_dynobj): Add dynsym_shndx_ field. Declare
5752 do_initialize_xindex.
5753 (Sized_dynobj::adjust_shndx): New function.
5754 * layout.cc (Layout::Layout): Initialize symtab_xindex_ and
5755 dynsym_xindex_ fields.
5756 (Layout::finalize): Add a call to set_section_indexes before
5757 creating the symtab sections.
5758 (Layout::set_section_indexes): Don't do anything if the section
5759 already has a section index.
5760 (Layout::create_symtab_sections): Add shnum parameter. Change
5761 caller. Create .symtab_shndx section if needed.
5762 (Layout::create_shdrs): Add shstrtab_section parameter. Change
5763 caller.
5764 (Layout::allocated_output_section_count): New function.
5765 (Layout::create_dynamic_symtab): Create .dynsym_shndx section if
5766 needed.
5767 * layout.h (class Layout): Add symtab_xindex_ and dynsym_xindex_
5768 fields. Update declarations.
5769 (Layout::symtab_xindex): New function.
5770 (Layout::dynsym_xindex): New function.
5771 (class Write_symbols_task): Add layout_ field.
5772 (Write_symbols_task::Write_symbols_task): Add layout parameter.
5773 Change caller.
5774 * output.cc (Output_section_headers::Output_section_headers): Add
5775 shstrtab_section parameter. Change all callers.
5776 (Output_section_headers::do_sized_write): Store overflow values
5777 for section count and section string table section index in
5778 section header zero.
5779 (Output_file_header::do_sized_write): Check for overflow of
5780 section count and section string table section index.
5781 (Output_symtab_xindex::do_write): New function.
5782 (Output_symtab_xindex::endian_do_write): New function.
5783 * output.h (class Output_section_headers): Add shstrtab_section_.
5784 Update declarations.
5785 (class Output_symtab_xindex): Define.
5786 (Output_section::has_out_shndx): New function.
5787 * symtab.cc (Symbol::init_fields): Initialize is_ordinary_shndx_
5788 field.
5789 (Symbol::init_base): Add st_shndx and is_ordinary parameters.
5790 Change all callers.
5791 (Sized_symbol::init): Likewise.
5792 (Symbol::output_section): Check for ordinary symbol.
5793 (Symbol_table::add_from_object): Remove orig_sym parameter. Add
5794 st_shndx, is_ordinary, and orig_st_shndx parameters. Change all
5795 callers.
5796 (Symbol_table::add_from_relobj): Add symndx_offset parameter.
5797 Change all callers. Simplify handling of symbols from sections
5798 not included in the link.
5799 (Symbol_table::add_from_dynobj): Handle ordinary symbol
5800 distinction.
5801 (Weak_alias_sorter::operator()): Assert that symbols are
5802 ordinary.
5803 (Symbol_table::sized_finalize_symbol): Handle ordinary symbol
5804 distinction.
5805 (Symbol_table::write_globals): Add symtab_xindex and dynsym_xindex
5806 parameters. Change all callers.
5807 (Symbol_table::sized_write_globals): Likewise. Handle ordinary
5808 symbol distinction. Use SHN_XINDEX when needed.
5809 (Symbol_table::write_section_symbol): Add symtab_xindex
5810 parameter. Change all callers.
5811 (Symbol_table::sized_write_section_symbol): Likewise. Use
5812 SHN_XINDEX when needed.
5813 * symtab.h (class Symbol): Add is_ordinary_shndx_ field. Update
5814 declarations.
5815 (Symbol::shndx): Add is_ordinary parameter. Change all callers.
5816 (Symbol::is_defined): Check is_ordinary.
5817 (Symbol::is_undefined, Symbol::is_weak_undefined): Likewise.
5818 (Symbol::is_absolute, Symbol::is_common): Likewise.
5819 (class Sized_symbol): Update declarations.
5820 (class Symbol_table): Update declarations.
5821 * resolve.cc (Symbol::override_base): Add st_shndx and is_ordinary
5822 parameters. Change all callers.
5823 (Sized_symbol::override): Likewise.
5824 (Symbol_table::override): Likewise.
5825 (symbol_to_bits): Add is_ordinary parameter. Change all callers.
5826 (Symbol_table::resolve): Remove orig_sym parameter. Add st_shndx,
5827 is_ordinary, and orig_st_shndx parameters. Change all callers.
5828 * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Require symbol
5829 to be in an ordinary section.
5830 * dwarf_reader.cc (Sized_dwarf_line_info::symbol_section): Add
5831 object and is_ordinary parameters. Change all callers.
5832 (Sized_dwarf_line_info::read_relocs): Add object parameter.
5833 Change all callers. Don't add undefined or non-ordinary symbols
5834 to reloc_map_.
5835 (Sized_dwarf_line_info::read_line_mappings): Add object parameter.
5836 Change all callers.
5837 * dwarf_reader.h (class Sized_dwarf_line_info): Update
5838 declarations.
5839 * ehframe.cc (Eh_frame::read_fde): Check for ordinary symbol.
5840 * reloc.cc (Sized_relobj::do_read_relocs): Adjust section links.
5841 (Sized_relobj::relocate_sections): Likewise.
5842 * target-reloc.h (scan_relocs): Adjust section symbol index.
5843 (scan_relocatable_relocs): Likewise.
5844 * i386.cc (Scan::local): Check for ordinary symbols.
5845 * sparc.cc (Scan::local): Likewise.
5846 * x86_64.cc (Scan::local): Likewise.
5847 * testsuite/binary_unittest.cc (Sized_binary_test): Update calls
5848 to symbol_section_and_value.
5849 * testsuite/many_sections_test.cc: New file.
5850 * testsuite/Makefile.am (BUILT_SOURCES): Define.
5851 (check_PROGRAMS): Add many_sections_test.
5852 (many_sections_test_SOURCES): Define.
5853 (many_sections_test_DEPENDENCIES): Define.
5854 (many_sections_test_LDFLAGS): Define.
5855 (BUILT_SOURCES): Add many_sections_define.h.
5856 (many_sections_define.h): New target.
5857 (BUILT_SOURCES): Add many_sections_check.h.
5858 (many_sections_check.h): New target.
5859 (check_PROGRAMS): Add many_sections_r_test.
5860 (many_sections_r_test_SOURCES): Define.
5861 (many_sections_r_test_DEPENDENCIES): Define.
5862 (many_sections_r_test_LDFLAGS): Define.
5863 (many_sections_r_test_LDADD): Define.
5864 (many_sections_r_test.o): New target.
5865 * testsuite/Makefile.in: Rebuild.
5866
5867 2008-04-17 Cary Coutant <ccoutant@google.com>
5868
5869 * errors.cc (Errors::info): New function.
5870 (gold_info): New function.
5871 * errors.h (Errors::info): New function.
5872 * gold.h (gold_info): New function.
5873 * object.cc (Input_objects::add_object): Print trace output.
5874 * options.cc (options::parse_set): New function.
5875 (General_options::parse_wrap): Deleted.
5876 (General_options::General_options): Deleted initializer.
5877 * options.h (options::String_set): New typedef.
5878 (options::parse_set): New function.
5879 (DEFINE_set): New macro.
5880 (General_options::wrap): Changed to use DEFINE_set. Changed
5881 callers of any_wrap_symbols and is_wrap_symbol.
5882 (General_options::trace, General_options::trace_symbol):
5883 New options.
5884 (General_options::any_wrap_symbols, General_options::is_wrap_symbol)
5885 (General_options::wrap_symbols_): Deleted.
5886 * symtab.cc (Symbol_table::add_from_object): Print trace output.
5887
5888 2008-04-17 David S. Miller <davem@davemloft.net>
5889
5890 * options.cc (General_options::parse_V): New function.
5891 * options.h: Add entries for -V and -Qy.
5892
5893 2008-04-17 Ian Lance Taylor <iant@google.com>
5894
5895 * common.cc (Symbol_table::allocate_commons): Remove options
5896 parameter. Change caller.
5897 (Symbol_table::do_allocate_commons): Remove options parameter.
5898 Change caller. Just call do_allocate_commons_list twice.
5899 (Symbol_table::do_allocate_commons_list): New function, broken out
5900 of do_allocate_commons.
5901 * common.h (class Allocate_commons_task): Remove options_ field.
5902 Update constructor.
5903 * symtab.cc (Symbol_table::Symbol_table): Initialize
5904 tls_commons_.
5905 (Symbol_table::add_from_object): Put TLS common symbols on
5906 tls_commons_ list.
5907 (Symbol_table::sized_finalize_symbol): Handle STT_TLS symbols
5908 which are IN_OUTPUT_DATA.
5909 * symtab.h (class Symbol_table): Add tls_commons_ field. Update
5910 allocate_commons and do_allocate_commons declarations. Declare
5911 do_allocate_commons_list.
5912 * gold.cc (queue_middle_tasks): Update creation of
5913 Allocate_commons_task to not pass options.
5914 * testsuite/Makefile.am (INCLUDES): Add -I.. .
5915 (TLS_TEST_C_FLAGS): New variable.
5916 (tls_test_c_pic.o): New target.
5917 (tls_test_shared.so): Link in tls_test_c_pic.o.
5918 (tls_test_c_pic_ie.o): New target.
5919 (tls_test_ie_shared.so): Link in tls_test_c_pic_ie.o.
5920 (tls_test_DEPENDENCIES, tls_test_LDADD): Add tls_test_c.o.
5921 (tls_test_c.o): New target.
5922 (tls_pic_test_DEPENDENCIES): Add tls_test_c_pic.o.
5923 (tls_pic_test_LDADD): Likewise.
5924 (tls_shared_gd_to_ie_test_DEPENDENCIES): Add tls_test_c_pic.o.
5925 (tls_shared_gd_to_ie_test_LDADD): Likewise.
5926 (tls_test_c_gnu2.o): New target.
5927 (tls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): Add
5928 tls_test_c_gnu2.o.
5929 (tls_shared_gnu2_gd_to_ie_test_LDADD): Likewise.
5930 (tls_test_gnu2_shared.so): Link in tls_test_c_gnu2.o.
5931 (tls_test_shared_nonpic.so): Link in tls_test_c.o.
5932 * testsuite/tls_test.cc: Include "config.h".
5933 (t_last): Call t11_last.
5934 * testsuite/tls_test.h (t11, t11_last): Declare.
5935 * testsuite/tls_test_c.c: New file.
5936 * testsuite/tls_test_main.cc (thread_routine): Call t11.
5937 * configure.ac: Check for OpenMP support.
5938 * configure, config.in, Makefile.in: Rebuild.
5939 * testsuite/Makefile.in: Rebuild.
5940
5941 2008-04-16 Cary Coutant <ccoutant@google.com>
5942
5943 * i386.cc (Target_i386::define_tls_base_symbol): New function.
5944 (Target_i386::tls_base_symbol_defined_): New field.
5945 (Target_i386::Scan::local): Define _TLS_MODULE_BASE_ symbol.
5946 (Target_i386::Scan::global): Likewise.
5947 * symtab.cc (sized_finalize_symbol): Add check for TLS symbol.
5948 * x86_64.cc (Target_x86_64::define_tls_base_symbol): New function.
5949 (Target_x86_64::tls_base_symbol_defined_): New field.
5950 (Target_x86_64::Scan::local): Define _TLS_MODULE_BASE_ symbol.
5951 (Target_x86_64::Scan::global): Likewise.
5952
5953 2008-04-16 Cary Coutant <ccoutant@google.com>
5954
5955 * symtab.h (Symbol::is_strong_undefined): Removed unused function.
5956 (Symbol::needs_plt_entry): Allow weak undefined symbols.
5957 (Symbol::needs_dynamic_reloc): Allow weak undefined symbols when
5958 building shared libraries.
5959 * testsuite/Makefile.am (weak_undef_nonpic_test): New target.
5960 (weak_undef_file1_nonpic.o, weak_undef_file2_nonpic.o)
5961 (weak_undef_lib_nonpic.so, alt/weak_undef_lib_nonpic.so): New targets.
5962 * testsuite/Makefile.in: Rebuild.
5963 * testsuite/weak_undef.h: New file.
5964 * testsuite/weak_undef_file1.cc: Add extra test cases.
5965 * testsuite/weak_undef_file2.cc: Likewise.
5966 * testsuite/weak_undef_test.cc: Likewise.
5967
5968 2008-04-16 David S. Miller <davem@davemloft.net>
5969
5970 * sparc.cc (Target_sparc::Scan): Change from struct to class.
5971 Add issued_non_pic_error_ field. Declare check_non_pic.
5972 (Target_sparc::Scan::check_non_pic): New function.
5973 (Target_sparc::Scan::local): Call check_non_pic as appropriate.
5974 (Target_sparc::Scan::global): Likewise.
5975
5976 * configure.ac (FN_PTRS_IN_SO_WITHOUT_PIC): Add sparc64.
5977 * configure: Rebuild.
5978
5979 * options.h (DEFINE_enable): New macro.
5980 (new_dtags): New enable option.
5981 (initfirst, interpose, loadfltr, nodefaultlib,
5982 nodelete, nodlopen, nodump): New -z options.
5983 * layout.cc (Layout:finish_dynamic_section): If new
5984 dtags enabled, emit DT_RUNPATH. Also, emit a
5985 DT_FLAGS_1 containing any specified -z flags.
5986
5987 2008-04-16 Ian Lance Taylor <iant@google.com>
5988
5989 * copy-relocs.cc: New file.
5990 * copy-relocs.h: New file.
5991 * reloc.cc: Remove Copy_relocs code.
5992 * reloc.h: Likewise.
5993 * reloc-types.h (struct Reloc_types) [both versions]: Add
5994 get_reloc_addend_noerror.
5995 * output.h (class Output_data_reloc<elfcpp::SHT_REL>): Add
5996 variants of add_global which take an addend which must be zero.
5997 * i386.cc: Include "copy-relocs.h".
5998 (class Target_i386): Change type of copy_relocs_ to variable,
5999 update initializer.
6000 (Target_i386::copy_reloc): Rewrite to pass to Copy_relocs class.
6001 Change all callers.
6002 (Target_i386::do_finalize_sections): Change handling of
6003 copy_relocs_.
6004 * sparc.cc: Include "copy-relocs.h".
6005 (class Target_sparc): Change type of copy_relocs_ to variable,
6006 update initializer.
6007 (Target_sparc::copy_reloc): Rewrite to pass to Copy_relocs class.
6008 Change all callers.
6009 (Target_sparc::do_finalize_sections): Change handling of
6010 copy_relocs_.
6011 * x86_64.cc: Include "copy-relocs.h".
6012 (class Target_x86_64): Change type of copy_relocs_ to variable,
6013 update initializer.
6014 (Target_x86_64::copy_reloc): Rewrite to pass to Copy_relocs
6015 class. Change all callers.
6016 (Target_x86_64::do_finalize_sections): Change handling of
6017 copy_relocs_.
6018 * Makefile.am (CCFILES): Add copy-relocs.cc.
6019 (HFILES): Add copy-relocs.h.
6020
6021 * Makefile.in, aclocal.m4, testsuite/Makefile.in: Rebuild.
6022
6023 * testsuite/script_test_4.sh: Permit leading zeroes.
6024
6025 2008-04-15 Ian Lance Taylor <iant@google.com>
6026
6027 * script-sections.cc (Script_sections::create_segments): Use
6028 header_size_adjustment even when there is enough room for the
6029 headers.
6030 * testsuite/script_test_4.sh: New file.
6031 * testsuite/script_test_4.t: New file.
6032 * testsuite/Makefile.am (check_SCRIPTS): Add script_test_4.sh.
6033 (check_DATA): Add script_test_4.stdout.
6034 (MOSTLYCLEANFILES): Likewise.
6035 (script_test_4): New target.
6036 (script_test_4.stdout): New target.
6037 * testsuite/Makefile.in: Rebuild.
6038
6039 * sparc.cc: Add definitions for Output_data_plt_sparc class
6040 constants.
6041
6042 2008-04-14 David S. Miller <davem@davemloft.net>
6043
6044 * sparc.cc: New file.
6045 * Makefile.am (TARGETSOURCES): Add sparc.cc
6046 (ALL_TARGETOBJS): Add sparc.$(OBJEXT)
6047 * configure.tgt: Document targ_extra_size and
6048 targ_extra_big_endian. Add entries for sparc-* and
6049 sparc64-*.
6050 * configure.ac: Handle targ_extra_size and
6051 targ_extra_big_endian.
6052 * Makefile.in: Rebuild.
6053 * configure: Likewise.
6054 * po/POTFILES.in: Likewise.
6055 * po/gold.pot: Likewise.
6056
6057 2008-04-14 Ian Lance Taylor <iant@google.com>
6058
6059 * layout.cc (Layout::Layout): Initialize sections_are_attached_.
6060 (Layout::get_output_section): Ignore SHF_WRITE and SHF_EXECINSTR
6061 in the name/type/flags to section mapping. Don't call
6062 allocate_output_section.
6063 (Layout::choose_output_section): Change parameter from adjust_name
6064 to is_input_section. Don't permit input sections after sections
6065 are attached to segments. Don't call allocate_output_section.
6066 (Layout::layout_eh_frame): Call update_flags_for_input_section,
6067 not write_enable_output_section.
6068 (Layout::make_output_section): Don't push to
6069 unattached_section_list_ nor call attach_to_segment. Call
6070 attach_section_to_segment if sections are attached.
6071 (Layout::attach_sections_to_segments): New function.
6072 (Layout::attach_section_to_segment): New function.
6073 (Layout::attach_allocated_section_to_segment): Rename from
6074 attach_to_segment. Remove flags parameter.
6075 (Layout::allocate_output_section): Remove function.
6076 (Layout::write_enable_output_section): Remove function.
6077 * layout.h (class Layout): Update for above changes. Add new
6078 field sections_are_attached_.
6079 * output.h (Output_section::update_flags_for_input_section): New
6080 function.
6081 * output.cc (Output_section::add_input_section): Call
6082 update_flags_for_input_section.
6083 * gold.cc (queue_middle_tasks): Call attach_sections_to_segments.
6084
6085 2008-04-11 Cary Coutant <ccoutant@google.com>
6086
6087 * i386.cc (Target_i386::got_mod_index_entry): Restore code previously
6088 thought unnecessary.
6089 * x86_64.cc (Target_x86_64::got_mod_index_entry): Likewise.
6090
6091 2008-04-11 Ian Lance Taylor <iant@google.com>
6092
6093 * output.h (class Output_section_data): Remove inline definition
6094 of set_addralign.
6095 * output.cc (Output_section_data::set_addralign): New function.
6096
6097 2008-04-11 Cary Coutant <ccoutant@google.com>
6098
6099 Add support for TLS descriptors for i386 and x86_64.
6100 * i386.cc (Target_i386::Relocate::tls_desc_gd_to_ie): New function.
6101 (Target_i386::Relocate::tls_desc_gd_to_le): New function.
6102 (Target_i386::Got_type): Add GOT_TYPE_TLS_NOFFSET and
6103 GOT_TYPE_TLS_DESC.
6104 (Target_i386::got_mod_index_entry): Remove unnecessary code.
6105 (Target_i386::Scan::local): Implement R_386_TLS_GOTDESC and
6106 R_386_TLS_DESC_CALL relocations. Fix problem with initial-exec
6107 relocations.
6108 (Target_i386::Scan::global): Fix problem with GD-to-IE relaxation.
6109 Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations;
6110 Fix problem with initial-exec relocations.
6111 (Target_i386::Relocate::relocate_tls): Likewise.
6112 (Target_i386::Relocate::tls_gd_to_ie): Fix problem with GD-to-IE
6113 relaxation.
6114 * output.cc (Output_data_dynamic::Dynamic_entry::write): Add
6115 support for section-plus-offset dynamic table entries.
6116 * output.h (Output_data_dynamic::add_section_plus_offset): New function.
6117 (Output_data_dynamic::Dynamic_entry): Add support for
6118 section-plus-offset dynamic table entries.
6119 (Output_data_dynamic::Classification): Likewise.
6120 (Output_data_dynamic::classification_): Renamed offset_.
6121 * x86_64.cc (Target_x86_64::Relocate::tls_desc_gd_to_ie): New function.
6122 (Target_x86_64::Relocate::tls_desc_gd_to_le): New function.
6123 (Target_x86_64::make_plt_section): New function.
6124 (Target_x86_64::reserve_tlsdesc_entries): New function.
6125 (Output_data_plt_x86_64::Output_data_plt_x86_64): Add new parameter.
6126 (Output_data_plt_x86_64::reserve_tlsdesc_entry): New function.
6127 (Output_data_plt_x86_64::has_tlsdesc_entry): New function.
6128 (Output_data_plt_x86_64::get_tlsdesc_got_offset): New function.
6129 (Output_data_plt_x86_64::get_tlsdesc_plt_offset): New function.
6130 (Output_data_plt_x86_64::tlsdesc_plt_entry): New field.
6131 (Output_data_plt_x86_64::set_final_data_size): Move out of line;
6132 add extra PLT entry for TLS descriptors.
6133 (Output_data_plt_x86_64::got_): New field.
6134 (Output_data_plt_x86_64::tlsdesc_got_offset_): New field.
6135 (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize new
6136 fields.
6137 (Output_data_plt_x86_64::do_write): Write extra PLT entry for TLS
6138 descriptors.
6139 (Target_x86_64::make_plt_entry): Factor out make_plt_section.
6140 (Target_x86_64::got_mod_index_entry): Remove unnecessary code.
6141 (Target_x86_64::Scan::local): Implement R_386_TLS_GOTDESC and
6142 R_386_TLS_DESC_CALL relocations.
6143 (Target_x86_64::Scan::global): Likewise.
6144 (Target_x86_64::do_finalize_sections): Add dynamic table entries
6145 for TLS descriptors.
6146 (Relocate::relocate_tls): Fix problem with GD-to-IE relaxation.
6147 Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations.
6148 (Target_x86_64::Relocate::tls_gd_to_ie): Fix problem with
6149 GD-to-IE relaxation.
6150 * configure.ac: Export new conditional variables TLS_GNU2_DIALECT
6151 and TLS_DESCRIPTORS.
6152 * Makefile.in: Rebuild.
6153 * configure: Rebuild.
6154 * testsuite/Makefile.am (tls_shared_gd_to_ie_test): New target.
6155 (tls_test_shared2.so): New target.
6156 (tls_shared_gd_to_ie_test_SOURCES): New variable.
6157 (tls_shared_gd_to_ie_test_DEPENDENCIES): New variable.
6158 (tls_shared_gd_to_ie_test_LDFLAGS): New variable.
6159 (tls_shared_gd_to_ie_test_LDADD): New variable.
6160 (tls_shared_gnu2_gd_to_ie_test): New target.
6161 (tls_test_gnu2.o, tls_test_file2_gnu2.o, tls_test_gnu2_shared2.so):
6162 New targets.
6163 (tls_shared_gnu2_gd_to_ie_test_SOURCES): New variable.
6164 (ls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): New variable.
6165 (tls_shared_gnu2_gd_to_ie_test_LDFLAGS): New variable.
6166 (tls_shared_gnu2_gd_to_ie_test_LDADD): New variable.
6167 (tls_shared_gnu2_test): New target.
6168 (tls_test_gnu2_shared.so): New target.
6169 (tls_shared_gnu2_test_SOURCES): New variable.
6170 (tls_shared_gnu2_test_DEPENDENCIES): New variable.
6171 (tls_shared_gnu2_test_LDFLAGS): New variable.
6172 (tls_shared_gnu2_test_LDADD): New variable.
6173 * testsuite/Makefile.in: Rebuild.
6174 * testsuite/Makefile.
6175
6176 2008-04-11 Ian Lance Taylor <iant@google.com>
6177
6178 * testsuite/Makefile.am (justsyms_2r.o): Add dependency on
6179 justsyms.t.
6180 * testsuite/Makefile.in: Rebuild.
6181
6182 * testsuite/script_test_2a.cc (script_test_string_a): Make 8 bytes
6183 long.
6184 * testsuite/script_test_2.cc (main): Adjust test.
6185
6186 2008-04-11 David S. Miller <davem@davemloft.net>
6187 Ian Lance Taylor <iant@google.com>
6188
6189 * options.h (General_options): Add entries for '-Y' and
6190 '-relax'.
6191 * options.cc (General_options:finalize): If -Y was used, add those
6192 entries to the library path instead of the default "/lib" and
6193 "/usr/lib".
6194
6195 2008-04-11 David S. Miller <davem@davemloft.net>
6196
6197 * testsuite/justsyms.t: Start at 0x100.
6198 * testsuite/justsyms_1.cc: Adjust justsyms_string assertion.
6199 * testsuite/script_test_2b.cc (script_test_string_b): Make 8 bytes
6200 long.
6201 * testsuite/script_test_2.cc: Adjust string and section length
6202 checks.
6203
6204 2008-04-09 Ian Lance Taylor <iant@google.com>
6205
6206 PR gold/5996
6207 * script-sections.cc (Sections_element::allocate_to_segment): Add
6208 orphan parameter.
6209 (Output_section_definition::allocate_to_segment): Likewise.
6210 (Orphan_output_section::allocate_to_segment): Likewise.
6211 (Script_sections::attach_sections_using_phdrs_clause): Don't
6212 propagate non-PT_LOAD segments to orphan sections.
6213 * testsuite/Makefile.am (script_test_3.stdout): Generate using
6214 readelf rather than objdump.
6215 * testsuite/script_test_3.sh: Adjust accordingly. Test that
6216 .interp section and PT_INTERP segment are the same size.
6217 * testsuite/Makefile.in: Rebuild.
6218
6219 * symtab.cc (Symbol_table::add_from_dynobj): Only look for weak
6220 aliases for symbols defined in the same object.
6221 * testsuite/Makefile.am (check_PROGRAMS): Add weak_alias_test.
6222 (weak_alias_test_SOURCES): New variable.
6223 (weak_alias_test_DEPENDENCIES): New variable.
6224 (weak_alias_test_LDFLAGS): New variable.
6225 (weak_alias_test_LDADD): New variable.
6226 (weak_alias_test_1_pic.o, weak_alias_test_1.so): New targets.
6227 (weak_alias_test_2_pic.o, weak_alias_test_2.so): New targets.
6228 (weak_alias_test_3.o): New target.
6229 (weak_alias_test_4_pic.o, weak_alias_test_4.so): New targets.
6230 * testsuite/weak_alias_test_main.cc: New file.
6231 * testsuite/weak_alias_test_1.cc: New file.
6232 * testsuite/weak_alias_test_2.cc: New file.
6233 * testsuite/weak_alias_test_3.cc: New file.
6234
6235 2008-04-08 Ian Lance Taylor <iant@google.com>
6236
6237 * options.h (class General_options): Add --noinhibit-exec option.
6238 * main.cc (main): Check --noinhibit-exec.
6239
6240 * options.h (class General_options): Define --wrap as a special
6241 option. Add wrap_symbols_ field.
6242 (General_options::any_wrap_symbols): New function.
6243 (General_options::is_wrap_symbol): New function.
6244 * options.cc (General_options::parse_wrap): New function.
6245 (General_options::General_options): Initialize wrap_symbols_.
6246 * symtab.cc (Symbol_table::wrap_symbol): New function.
6247 (Symbol_table::add_from_object): Handle --wrap.
6248 * symtab.h (class Symbol_table): Declare wrap_symbol.
6249 * target.h (Target::wrap_char): New function.
6250 (Target::Target_info): Add wrap_char field.
6251 * i386.cc (Target_i386::i386_info): Initialize wrap_char.
6252 * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
6253 * testsuite/testfile.cc (Target_test::test_target_info):
6254 Likewise.
6255
6256 * errors.cc (Errors::undefined_symbol): Mention symbol version if
6257 there is one.
6258
6259 * layout.h (class Layout): Add added_eh_frame_data_ field.
6260 * layout.cc (Layout::Layout): Initialize new field.
6261 (Layout::layout_eh_frame): Don't add eh_frame_data_ to .eh_frame
6262 output section until we find a section we merged successfully.
6263 * object.cc (Sized_relobj::check_eh_frame_flags): Don't require
6264 that the size be non-zero.
6265
6266 * merge.cc (Object_merge_map::get_output_offset): Remove inline
6267 qualifier.
6268
6269 2008-04-08 Craig Silverstein <csilvers@google.com>
6270
6271 * configure.ac: Export new conditional variable HAVE_ZLIB.
6272 * testsuite/Makefile.am (flagstest_o_specialfile): Condition
6273 on HAVE_ZLIB.
6274 (flagstest_o_specialfile_and_compress_debug_sections): Likewise.
6275 * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
6276
6277 2008-04-07 Ian Lance Taylor <iant@google.com>
6278
6279 * version.cc (version_string): Set to "1.5".
6280
6281 * x86_64.cc (Target_x86_64::Scan): Change from struct to class.
6282 Add issued_non_pic_error_ field. Declare check_non_pic.
6283 (Target_x86_64::Scan::check_non_pic): New function.
6284 (Target_x86_64::Scan::local): Call check_non_pic as appropriate.
6285 (Target_x86_64::Scan::global): Likewise.
6286
6287 * output.cc (Output_reloc<SHT_REL>::local_section_offset): Add
6288 addend parameter. Change caller. Handle merge sections.
6289 (Output_reloc<SHT_REL>::symbol_value): Change parameter type from
6290 Address to Addend. Don't add in the result of
6291 local_section_offset, pass down the addend and use the returned
6292 value.
6293 * output.h (class Output_reloc<SHT_REL>): Add Addend typedef.
6294 Update declarations of local_section_offset and symbol_value.
6295 * testsuite/two_file_test_1.cc (t18): New function.
6296 * testsuite/two_file_test_2.cc (f18): New function.
6297 * testsuite/two_file_test_main.cc (main): Call t18.
6298 * testsuite/two_file_test.h (t18, f18): Declare.
6299
6300 * configure.ac: Don't test for objdump, c++filt, or readelf.
6301 * testsuite/Makefile.am: Remove READELF and OBJDUMP_AND_CPPFILT
6302 conditionals.
6303 (TEST_READELF): New variable.
6304 (TEST_OBJDUMP, TEST_CXXFILT, TEST_STRIP): New variables.
6305 (check_PROGRAMS): Add two_file_strip_test.
6306 (two_file_strip_test): New target.
6307 (check_PROGRAMS): Add two_file_same_shared_strip_test.
6308 (two_file_same_shared_strip_test_SOURCES): New variable.
6309 (two_file_same_shared_strip_test_DEPENDENCIES): New variable.
6310 (two_file_same_shared_strip_test_LDFLAGS): New variable.
6311 (two_file_same_shared_strip_test_LDADD): New variable.
6312 (two_file_shared_strip.so): New target.
6313 (ver_test_2.syms, ver_test_4.syms): Use TEST_READELF.
6314 (ver_test_5.syms, ver_test_7.syms): Likewise.
6315 (ver_matching_test.stdout): Use TEST_OBJDUMP and TEST_CXXFILT.
6316 (strip_test_3.stdout): Use TEST_OBJDUMP.
6317 * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
6318
6319 2008-04-04 Cary Coutant <ccoutant@google.com>
6320
6321 * symtab.h (Symbol::is_weak_undefined): New function.
6322 (Symbol::is_strong_undefined): New function.
6323 (Symbol::is_absolute): New function.
6324 (Symbol::needs_plt_entry): Exclude weak undefined symbols.
6325 (Symbol::needs_dynamic_reloc): Exclude weak undefined and
6326 absolute symbols.
6327 * testsuite/Makefile.am (check_PROGRAMS): Add weak_undef_test.
6328 (weak_undef_test): New target.
6329 * testsuite/Makefile.in: Rebuild.
6330 * testsuite/weak_undef_file1.cc: New file.
6331 * testsuite/weak_undef_file2.cc: New file.
6332 * testsuite/weak_undef_test.cc: New file.
6333
6334 2008-04-03 Craig Silverstein <csilvers@google.com>
6335
6336 * compressed_output.h (class Output_compressed_section): Use
6337 unsigned buffer.
6338 * compressed_output.cc (zlib_compress): Use unsigned buffers,
6339 add zlib header.
6340 (zlib_compressed_suffix): Removed.
6341 (Output_compressed_section::set_final_data_size): Use unsigned
6342 buffers.
6343 * testsuite/Makefile.am (flagstest_compress_debug_sections):
6344 Fix linker invocation.
6345 (flagstest_o_specialfile_and_compress_debug_sections):
6346 Likewise.
6347 * testsuite/Makefile.in: Regenerated.
6348
6349 2008-04-02 David S. Miller <davem@davemloft.net>
6350
6351 * dwarf_reader.cc (Sized_dwarf_line_info::read_header_prolog,
6352 Sized_dwarf_line_info::process_one_opcode): Use Swap_unaligned.
6353
6354 2008-04-02 Craig Silverstein <csilvers@google.com>
6355
6356 * TODO: New file.
6357
6358 2008-04-02 Ian Lance Taylor <iant@google.com>
6359
6360 * fileread.cc (File_read::find_view): Add byteshift and vshifted
6361 parameters. Update for new key type to views_. Change all
6362 callers.
6363 (File_read::read): Adjust for byteshift in returned view.
6364 (File_read::add_view): New function, broken out of
6365 find_and_make_view.
6366 (File_read::make_view): New function, broken out of
6367 find_and_make_view.
6368 (File_read::find_or_make_view): Add offset and aligned
6369 parameters. Rewrite accordingly. Change all callers.
6370 (File_read::get_view): Add offset and aligned parameters. Adjust
6371 for byteshift in return value.
6372 (File_read::get_lasting_view): Likewise.
6373 * fileread.h (class File_read): Update declarations.
6374 (class File_read::View): Add byteshift_ field. Add byteshift to
6375 constructor. Add byteshift method.
6376 * archive.h (Archive::clear_uncached_views): New function.
6377 (Archive::get_view): Add aligned parameter. Change all callers.
6378 * object.h (Object::get_view): Add aligned parameter. Change all
6379 callers.
6380 (Object::get_lasting_view): Likewise.
6381
6382 * fileread.cc (File_read::release): Don't call clear_views if
6383 there are multiple objects.
6384 * fileread.h (File_read::clear_uncached_views): New function.
6385 * archive.cc (Add_archive_symbols::run): Call clear_uncached_views
6386 on the archive.
6387
6388 2008-03-31 Cary Coutant <ccoutant@google.com>
6389
6390 Add thin archive support.
6391 * archive.cc (Archive::armagt): New const.
6392 (Archive::setup): Remove task parameter and calls to unlock.
6393 (Archive::unlock_nested_archives): New function.
6394 (Archive::read_header): Add nested_off parameter. Change
6395 all callers.
6396 (Archive::interpret_header): Likewise.
6397 (Archive::include_all_members): Change to handle thin
6398 archives.
6399 (Archive::include_member): Likewise.
6400 * archive.h (Archive::Archive): Add new parameters and
6401 initializers.
6402 (Archive::armagt): New const.
6403 (Archive::setup): Remove task parameter.
6404 (Archive::unlock_nested_archives): New function.
6405 (Archive::read_header): Add nested_off parameter.
6406 (Archive::interpret_header): Likewise.
6407 (Archive::Nested_archive_table): New typedef.
6408 (Archive::is_thin_archive_): New field.
6409 (Archive::nested_archives_): New field.
6410 (Archive::options_): New field.
6411 (Archive::dirpath_): New field.
6412 (Archive::task_): New field.
6413 * readsyms.cc (Read_symbols::do_read_symbols): Add check
6414 for thin archives. Pass additional parameters to
6415 Archive::Archive. Unlock the archive file after calling
6416 Archive::setup.
6417
6418 2008-03-29 Ian Lance Taylor <iant@google.com>
6419
6420 * symtab.cc (Symbol_table::do_define_as_constant): Don't force a
6421 version symbol to be local.
6422 * testsuite/ver_test_4.sh: New file.
6423 * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_4.sh.
6424 (check_DATA): Add ver_test_4.syms.
6425 (ver_test_4.syms): New target.
6426 * testsuite/Makefile.in: Rebuild.
6427
6428 * output.cc
6429 (Output_section::Input_section_sort_entry::has_priority): New
6430 function.
6431 (Output_section::Input_section_sort_entry::match_file_name): New
6432 function.
6433 (Output_section::Input_section_sort_entry::match_section_name):
6434 Remove.
6435 (Output_section::Input_section_sort_entry::match_section_name_prefix):
6436 Remove.
6437 (Output_section::Input_section_sort_entry::match_section_file):
6438 Remove.
6439 (Output_section::Input_section_sort_compare::operator()): Rewrite
6440 using new Input_section_sort_entry functions. Sort crtbegin and
6441 crtend first. Sort sections with no priority before sections with
6442 a priority.
6443 * testsuite/initpri1.c (d3): Check j != 4.
6444 (cd5): New constructor/destructor function.
6445 (main): Check j != 2.
6446
6447 * symtab.cc (Symbol_table::add_from_object): If we don't use the
6448 new symbol when resolving, don't call set_is_default.
6449 * testsuite/ver_test_7.cc: New file.
6450 * testsuite/ver_test_7.sh: New file.
6451 * testsuite/Makefile.am (ver_test_7.so): New target.
6452 (ver_test_7.o): New target.
6453 (check_SCRIPTS): Add ver_test_7.sh.
6454 (check_DATA): Add ver_test_7.syms.
6455 (ver_test_7.syms): New target.
6456
6457 2008-03-28 Ian Lance Taylor <iant@google.com>
6458
6459 * layout.cc (Layout::layout): If we see an input section with a
6460 name that needs sorting, set the must_sort flag for the output
6461 section.
6462 (Layout::make_output_section): If the name of the output section
6463 indicates that it might require sorting, set the may_sort flag.
6464 * output.h (Output_section::may_sort_attached_input_sections): New
6465 function.
6466 (Output_section::set_may_sort_attached_input_sections): New
6467 function.
6468 (Output_section::must_sort_attached_input_sections): New
6469 function.
6470 (Output_section::set_must_sort_attached_input_sections): New
6471 function.
6472 (class Output_section): Declare Input_section_sort_entry. Define
6473 Input_section_sort_compare. Declare
6474 sort_attached_input_sections. Add new fields:
6475 may_sort_attached_input_sections_,
6476 must_sort_attached_input_sections_,
6477 attached_input_sections_are_sorted_.
6478 * output.cc (Output_section::Output_section): Initialize new
6479 fields.
6480 (Output_section::add_input_section): Add an entry to
6481 input_sections_ if may_sort or must_sort are true.
6482 (Output_section::set_final_data_size): Call
6483 sort_attached_input_sections if necessary.
6484 (Output_section::Input_section_sort_entry): Define new class.
6485 (Output_section::Input_section_sort_compare::operator()): New
6486 function.
6487 (Output_section::sort_attached_input_sections): New function.
6488 * configure.ac: Check whether the compiler supports constructor
6489 priorities. Define a CONSTRUCTOR_PRIORITY automake conditional.
6490 * testsuite/initpri1.c: New file.
6491 * testsuite/Makefile.am (check_PROGRAMS): Add initpri1 if
6492 CONSTRUCTOR_PRIORITY.
6493 (initpri1_SOURCES, initpri1_DEPENDENCIES): New variables.
6494 (initpri1_LDFLAGS): New variable.
6495 * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
6496
6497 2008-03-27 Ian Lance Taylor <iant@google.com>
6498
6499 * common.cc (Sort_commons::operator): Correct sorting algorithm.
6500 * testsuite/common_test_1.c: New file.
6501 * testsuite/Makefile.am (check_PROGRAMS): Add common_test_1.
6502 (common_test_1_SOURCES): New variable.
6503 (common_test_1_DEPENDENCIES): New variable.
6504 (common_test_1_LDFLAGS): New variable.
6505
6506 * symtab.cc (Symbol_table::add_from_object): Handle saw_undefined_
6507 and commons_ correctly when NAME/VERSION does not override
6508 NAME/NULL.
6509 * testsuite/ver_test_6.c: New file.
6510 * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_6
6511 (ver_test_6_SOURCES, ver_test_6_DEPENDENCIES): New variables.
6512 (ver_test_6_LDFLAGS, ver_test_6_LDADD): New variables.
6513
6514 2008-03-26 Ian Lance Taylor <iant@google.com>
6515
6516 * symtab.cc (Symbol_table::add_from_relobj): Don't set the version
6517 of an undefined symbol from a version script.
6518 * testsuite/Makefile.am (ver_test_5.so): New target.
6519 (ver_test_5.o): New target.
6520 (check_SCRIPTS): Add ver_test_5.sh.
6521 (check_DATA): Add ver_test_5.syms.
6522 (ver_test_5.syms): New target.
6523 * testsuite/ver_test_5.cc: New file.
6524 * testsuite/ver_test_5.script: New file.
6525 * testsuite/ver_test_5.sh: New file.
6526 * Makefile.in, testsuite/Makefile.in: Rebuild.
6527
6528 PR gold/5986
6529 Fix problems building gold with gcc 4.3.0.
6530 * gold.h (TEMPLATE_ATTRIBUTE_PRINTF_4): Define.
6531 (gold_error_at_location, gold_warning_at_location): Use it.
6532 * configure.ac: Check whether we can compile and use a template
6533 function with a printf attribute.
6534 * x86_64.cc (Target_x86_64::do_code_fill): Swap out a 32-bit value
6535 when jumping over bytes.
6536 * object.cc: Instantiate Object::read_section_data.
6537 * debug.h: Include <cstring>
6538 * dwarf_reader.cc: Include <algorithm>
6539 * main.cc: Include <cstring>.
6540 * options.cc: Include <cstring>.
6541 * output.cc: Include <cstring>.
6542 * script.cc: Include <cstring>.
6543 * script.h: Include <string>.
6544 * symtab.cc: Include <cstring> and <algorithm>.
6545 * target-select.cc: Include <cstring>.
6546 * version.cc: Include <string>.
6547 * testsuite/testmain.cc: Include <cstdlib>.
6548 * configure, config.in: Rebuild.
6549
6550 2008-03-25 Ian Lance Taylor <iant@google.com>
6551
6552 * options.cc: Include "../bfd/bfdver.h".
6553 (options::help): Print bug reporting address.
6554
6555 * version.cc (print_version): Adjust output for current value of
6556 BFD_VERSION_STRING.
6557
6558 * NEWS: New file.
6559
6560 * options.cc (options::help): Print list of supported targets.
6561 * target-select.h: Include <vector>.
6562 (class Target_selector): Make machine_, size_, and is_big_endian_
6563 fields const. Add bfd_name_ and instantiated_target_ fields.
6564 (Target_selector::Target_selector): Add bfd_name parameter.
6565 (Target_selector::recognize): Make non-virtual, call
6566 do_recognize.
6567 (Target_selector::recognize_by_name): Make non-virtual, call
6568 do_recognize_by_name.
6569 (Target_selector::supported_names): New function.
6570 (Target_selector::bfd_name): New function.
6571 (Target_selector::do_instantiate_target): New pure virtual
6572 function.
6573 (Target_selector::do_recognize): New virtual function.
6574 (Target_selector::do_recognize_by_name): New virtual function.
6575 (Target_selector::instantiate_target): New private function.
6576 (supported_target_names): Declare.
6577 * target-select.cc (Target_selector::Target_selector): Update for
6578 new parameter and fields.
6579 (select_target_by_name): Check that the name matches before
6580 calling recognize_by_name.
6581 (supported_target_names): New function.
6582 * i386.cc (class Target_selector_i386): Update Target_selector
6583 constructor call. Remove recognize and recognize_by_name. Add
6584 do_instantiate_target.
6585 * x86_64.cc (class Target_selector_x86_64): Likewise.
6586 * testsuite/testfile.cc (class Target_selector_test): Update for
6587 changes to Target_selector.
6588
6589 * README: Rewrite, with some notes on unsupported features.
6590
6591 2008-03-24 Cary Coutant <ccoutant@google.com>
6592
6593 * i386.cc (Target_i386::Got_type): New enum declaration.
6594 (Target_i386::Scan::local): Updated callers of Output_data_got
6595 member functions.
6596 (Target_i386::Scan::global): Likewise.
6597 (Target_i386::Relocate::relocate): Likewise.
6598 (Target_i386::Relocate::relocate_tls): Likewise.
6599 * object.h (Got_offset_list): New class.
6600 (Sized_relobj::local_has_got_offset): Added got_type parameter.
6601 (Sized_relobj::local_got_offset): Likewise.
6602 (Sized_relobj::set_local_got_offset): Likewise.
6603 (Sized_relobj::local_has_tls_got_offset): Removed.
6604 (Sized_relobj::local_tls_got_offset): Removed.
6605 (Sized_relobj::set_local_tls_got_offset): Removed.
6606 (Sized_relobj::Local_got_offsets): Changed to store a list of offsets.
6607 * output.cc (Output_data_got::add_global): Added got_type parameter.
6608 (Output_data_got::add_global_with_rel): Likewise.
6609 (Output_data_got::add_global_with_rela): Likewise.
6610 (Output_data_got::add_global_pair_with_rel): New function.
6611 (Output_data_got::add_global_pair_with_rela): New function.
6612 (Output_data_got::add_local): Added got_type parameter.
6613 (Output_data_got::add_local_with_rel): Likewise.
6614 (Output_data_got::add_local_with_rela): Likewise.
6615 (Output_data_got::add_local_pair_with_rel): New function.
6616 (Output_data_got::add_local_pair_with_rela): New function.
6617 (Output_data_got::add_global_tls): Removed.
6618 (Output_data_got::add_global_tls_with_rel): Removed.
6619 (Output_data_got::add_global_tls_with_rela): Removed.
6620 (Output_data_got::add_local_tls): Removed.
6621 (Output_data_got::add_local_tls_with_rel): Removed.
6622 (Output_data_got::add_local_tls_with_rela): Removed.
6623 * output.h (Output_data_got::add_global): Added got_type parameter.
6624 (Output_data_got::add_global_with_rel): Likewise.
6625 (Output_data_got::add_global_with_rela): Likewise.
6626 (Output_data_got::add_global_pair_with_rel): New function.
6627 (Output_data_got::add_global_pair_with_rela): New function.
6628 (Output_data_got::add_local): Added got_type parameter.
6629 (Output_data_got::add_local_with_rel): Likewise.
6630 (Output_data_got::add_local_with_rela): Likewise.
6631 (Output_data_got::add_local_pair_with_rel): New function.
6632 (Output_data_got::add_local_pair_with_rela): New function.
6633 (Output_data_got::add_global_tls): Removed.
6634 (Output_data_got::add_global_tls_with_rel): Removed.
6635 (Output_data_got::add_global_tls_with_rela): Removed.
6636 (Output_data_got::add_local_tls): Removed.
6637 (Output_data_got::add_local_tls_with_rel): Removed.
6638 (Output_data_got::add_local_tls_with_rela): Removed.
6639 * resolve.cc (Symbol::override_base_with_special): Removed
6640 reference to has_got_offset_ field.
6641 * symtab.cc (Symbol::init_fields): Replaced initialization
6642 of got_offset_ with got_offsets_. Removed initialization
6643 of has_got_offset_
6644 * symtab.h (Symbol::has_got_offset): Aded got_type parameter.
6645 (Symbol::got_offset): Likewise.
6646 (Symbol::set_got_offset): Likewise.
6647 (Symbol::has_tls_got_offset): Removed.
6648 (Symbol::tls_got_offset): Removed.
6649 (Symbol::set_tls_got_offset): Removed.
6650 (Symbol::got_offset_): Removed.
6651 (Symbol::tls_mod_got_offset_): Removed.
6652 (Symbol::tls_pair_got_offset_): Removed.
6653 (Symbol::got_offsets_): New field.
6654 (Symbol::has_got_offset): Removed.
6655 (Symbol::has_tls_mod_got_offset): Removed.
6656 (Symbol::has_tls_pair_got_offset): Removed.
6657 * x86_64.cc (Target_x86_64::Got_type): New enum declaration.
6658 (Target_x86_64::Scan::local): Updated callers of Output_data_got
6659 member functions.
6660 (Target_x86_64::Scan::global): Likewise.
6661 (Target_x86_64::Relocate::relocate): Likewise.
6662 (Target_x86_64::Relocate::relocate_tls): Likewise.
6663
6664 2008-03-25 Ben Elliston <bje@au.ibm.com>
6665
6666 * yyscript.y: Fix spelling error in comment.
6667
6668 2008-03-24 Ian Lance Taylor <iant@google.com>
6669
6670 * options.h (class General_options): Define build_id option.
6671 * layout.h (class Layout): Declare write_build_id, create_note,
6672 create_build_id. Add build_id_note_ member.
6673 * layout.cc: Include <cerrno>, <fcntl.h>, <unistd.h>,
6674 "libiberty.h", "md5.h", "sha1.h".
6675 (Layout::Layout): Initialize eh_frame_data_,
6676 eh_frame_hdr_section_, and build_id_note_.
6677 (Layout::finalize): Call create_build_id.
6678 (Layout::create_note): New function, broken out of
6679 Layout::create_gold_note.
6680 (Layout::create_gold_note): Call create_note.
6681 (Layout::create_build_id): New function.
6682 (Layout::write_build_id): New function.
6683 (Close_task_runner::run): Call write_build_id.
6684
6685 * x86_64.cc: Correct license to GPLv3.
6686
6687 2008-03-23 Ian Lance Taylor <iant@google.com>
6688
6689 * options.cc: Include "demangle.h".
6690 (parse_optional_string): New function.
6691 (parse_long_option): Handle takes_optional_argument.
6692 (parse_short_option): Update dash_z initializer. Handle
6693 takes_optional_argument.
6694 (General_options::General_options): Initialize do_demangle_.
6695 (General_options::finalize): Set do_demangle_. Handle demangling
6696 style.
6697 * options.h (parse_optional_string): Declare.
6698 (struct One_option): Add optional_arg field. Update constructor.
6699 Update call constructor calls. Add takes_optional_argument
6700 function.
6701 (DEFINE_var): Add optional_arg__ parameter. Change all callers.
6702 (DEFINE_optional_string): Define.
6703 (General_options::demangle): Change from DEFINE_bool to
6704 DEFINE_optional_string.
6705 (General_options::no_demangle): New function.
6706 (General_options::do_demangle): New function.
6707 (General_options::set_do_demangle): New function.
6708 (General_options::execstack_status_): Move definition to end of
6709 class definition.
6710 (General_options::static_): Likewise.
6711 (General_options::do_demangle_): New field.
6712 * object.cc (big_endian>::get_symbol_location_info): Call
6713 Options::do_demangle, not Options::demangle.
6714 * symtab.cc (demangle): Likewise.
6715
6716 2008-03-22 Ian Lance Taylor <iant@google.com>
6717
6718 * gold.h: Include <cstddef> and <sys/types.h>
6719 * options.h: Include <cstring>.
6720
6721 2008-03-21 Ian Lance Taylor <iant@google.com>
6722
6723 * Added source code to GNU binutils.