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