OpenCores
URL https://opencores.org/ocsvn/open8_urisc/open8_urisc/trunk

Subversion Repositories open8_urisc

[/] [open8_urisc/] [trunk/] [gnu/] [binutils/] [gold/] [ChangeLog] - Blame information for rev 148

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 148 khays
2011-06-09  Ian Lance Taylor  
2
 
3
        * script-sections.cc
4
        (Orphan_output_section::set_section_addresses): For a relocatable
5
        link set address to 0.
6
 
7
2011-06-09  Cary Coutant  
8
 
9
        PR gold/12804
10
        * gold/gold.cc (queue_initial_tasks): Warn if --incremental is
11
        used with --compress-debug-sections.
12
        * gold/object.cc (Sized_relobj_file::do_layout): Report
13
        uncompressed size of compressed input sections.
14
 
15
2011-06-08  Cary Coutant  
16
 
17
        PR gold/12804
18
        * testsuite/two_file_test_2_v1.cc: Change initialization of
19
        v2 to keep it in .data.
20
 
21
2011-06-07  Cary Coutant  
22
 
23
        * common.cc (Symbol_table::do_allocate_commons_list): Call
24
        gold_fallback.
25
        * errors.cc (Errors::fatal): Adjust call to gold_exit.
26
        (Errors::fallback): New function.
27
        (gold_fallback): New function.
28
        * errors.h (Errors::fallback): New function.
29
        * gold.cc (gold_exit): Change status parameter to enum; adjust
30
        all callers.
31
        (queue_initial_tasks): Call gold_fallback.
32
        * gold.h: Include cstdlib.
33
        (Exit_status): New enum type.
34
        (gold_exit): Change status parameter to enum.
35
        (gold_fallback): New function.
36
        * layout.cc (Layout::set_section_offsets): Call gold_fallback.
37
        (Layout::create_symtab_sections): Likewise.
38
        (Layout::create_shdrs): Likewise.
39
        * main.cc (main): Adjust call to gold_exit.
40
        * output.cc (Output_data_got::add_got_entry): Call gold_fallback.
41
        (Output_data_got::add_got_entry_pair): Likewise.
42
        (Output_section::add_input_section): Likewise.
43
        (Output_section::add_output_section_data): Likewise.
44
        (Output_segment::set_section_list_addresses): Likewise.
45
        * x86_64.cc (Output_data_plt_x86_64::add_entry): Likewise.
46
 
47
2011-06-07  Cary Coutant  
48
 
49
        * layout.cc (Layout::set_segment_offsets): Don't adjust layout
50
        for incremental links.
51
        * output.cc (Output_segment::set_section_list_addresses): Remove
52
        FIXME and test for TLS or BSS.
53
 
54
2011-06-07  Cary Coutant  
55
 
56
        * testsuite/Makefile.am: Add incremental_copy_test,
57
        incremental_common_test_1.
58
        * testsuite/Makefile.in: Regenerate.
59
        * testsuite/common_test_1_v1.c: New source file.
60
        * testsuite/common_test_1_v2.c: New source file.
61
        * testsuite/copy_test_v1.cc: New source file.
62
 
63
2011-06-07  Cary Coutant  
64
 
65
        * common.cc (Symbol_table::do_allocate_commons_list): For incremental
66
        update, allocate common from bss section's free list.
67
        * incremental-dump.cc (dump_incremental_inputs): Print flag for
68
        linker-defined symbols.
69
        * incremental.cc (Sized_incremental_binary::do_process_got_plt):
70
        Skip GOT and PLT entries that are no longer referenced.
71
        (Output_section_incremental_inputs::write_info_blocks): Mark
72
        linker-defined symbols.
73
        (Sized_incr_relobj::do_add_symbols): Process linker-defined symbols.
74
        * output.cc (Output_section::allocate): New function.
75
        * output.h (Output_section::allocate): New function.
76
        * resolve.cc (Symbol_table::report_resolve_problem): Add case for
77
        linker-defined symbols.
78
        (Symbol::override_base_with_special): Copy is_predefined_ flag.
79
        * symtab.cc (Symbol::init_fields): Initialize is_predefined_ flag.
80
        (Symbol::init_base_output_data): Likewise.
81
        (Symbol::init_base_output_segment): Likewise.
82
        (Symbol::init_base_constant): Likewise.
83
        (Sized_symbol::init_output_data): Likewise.
84
        (Sized_symbol::init_output_segment): Likewise.
85
        (Sized_symbol::init_constant): Likewise.
86
        (Symbol_table::do_define_in_output_data): Likewise.
87
        (Symbol_table::do_define_in_output_segment): Likewise.
88
        (Symbol_table::do_define_as_constant): Likewise.
89
        * symtab.h (Symbol::is_predefined): New function.
90
        (Symbol::init_base_output_data): Add is_predefined parameter.
91
        (Symbol::init_base_output_segment): Likewise.
92
        (Symbol::init_base_constant): Likewise.
93
        (Symbol::is_predefined_): New data member.
94
        (Sized_symbol::init_output_data): Add is_predefined parameter.
95
        (Sized_symbol::init_output_segment): Likewise.
96
        (Sized_symbol::init_constant): Likewise.
97
        (enum Symbol_table::Defined): Add INCREMENTAL_BASE.
98
 
99
2011-06-07  Cary Coutant  
100
 
101
        * copy-relocs.cc (Copy_relocs::copy_reloc): Call make_copy_reloc
102
        instead of emit_copy_reloc.
103
        (Copy_relocs::emit_copy_reloc): Refactor.
104
        (Copy_relocs::make_copy_reloc): New function.
105
        (Copy_relocs::add_copy_reloc): Remove.
106
        * copy-relocs.h (Copy_relocs::emit_copy_reloc): Move to public
107
        section.
108
        (Copy_relocs::make_copy_reloc): New function.
109
        (Copy_relocs::add_copy_reloc): Remove.
110
        * gold.cc (queue_middle_tasks): Emit old COPY relocations from
111
        unchanged input files.
112
        * incremental-dump.cc (dump_incremental_inputs): Print "COPY" flag.
113
        * incremental.cc (Sized_incremental_binary::do_reserve_layout):
114
        Reserve BSS space for COPY relocations.
115
        (Sized_incremental_binary::do_emit_copy_relocs): New function.
116
        (Output_section_incremental_inputs::write_info_blocks): Record
117
        whether a symbol is copied from a shared object.
118
        (Sized_incr_dynobj::do_add_symbols): Record COPY relocations.
119
        * incremental.h (enum Incremental_shlib_symbol_flags): New type.
120
        (INCREMENTAL_SHLIB_SYM_FLAGS_SHIFT): New constant.
121
        (Incremental_input_entry_reader::get_output_symbol_index): Add
122
        is_copy parameter.
123
        (Incremental_binary::emit_copy_relocs): New function.
124
        (Incremental_binary::do_emit_copy_relocs): New function.
125
        (Sized_incremental_binary::Sized_incremental_binary): Initialize
126
        new data member.
127
        (Sized_incremental_binary::add_copy_reloc): New function.
128
        (Sized_incremental_binary::do_emit_copy_relocs): New function.
129
        (Sized_incremental_binary::Copy_reloc): New struct.
130
        (Sized_incremental_binary::Copy_relocs): New typedef.
131
        (Sized_incremental_binary::copy_relocs_): New data member.
132
        * symtab.cc (Symbol_table::add_from_incrobj): Change return type.
133
        * symtab.h (Symbol_table::add_from_incrobj): Change return type.
134
        * target.h (Sized_target::emit_copy_reloc): New function.
135
        * x86_64.cc (Target_x86_64::emit_copy_reloc): New function.
136
 
137 27 khays
2011-06-02  Cary Coutant  
138
 
139
        PR gold/12163
140
        * gold/archive.cc (Archive::Archive): Initialize new data member.
141
        (Archive::include_all_members): Return if archive has already been
142
        included.
143
        * gold/archive.h (Archive::include_all_members_): New data member.
144
 
145
2011-06-02  Nick Clifton  
146
 
147
        * dynobj.h: Fix spelling mistake in comment.
148
        * output.cc: Likewise.
149
 
150
2011-05-31  Doug Kwan  
151
            Asier Llano
152
 
153
        PR gold/12826
154
        * arm.cc (Target_arm::tag_cpu_arch_combine): Fix handling of
155
        arch value that equals to elfcpp::MAX_TAG_CPU_ARCH.
156
        * testsuite/Makefile.am: (MOSTLYCLEANFILES): Clean up.  Remove
157
        redundant arm_exidx_test.so.
158
        * testsuite/Makefile.in: Regenerate.
159
        (check_SCRIPTS): Add pr12826.sh
160
        (check_DATA): Add pr12826.stdout
161
        (pr12826.stdout, pr12826.so, pr12826_1.o, pr12826_2.o): New rules.
162
        * testsuite/pr12826.sh: New file.
163
        * testsuite/pr12826_1.s: Ditto.
164
        * testsuite/pr12826_1.s: Ditto.
165
 
166
2011-05-30  Ian Lance Taylor  
167
 
168
        * reloc.cc (Sized_relobj_file::do_read_relocs): Ignore empty reloc
169
        sections.
170
 
171
2011-05-29  Ian Lance Taylor  
172
 
173
        PR gold/12804
174
        * testsuite/Makefile.am: Use different file name for two_file_test
175
        temporary file for each incremental test.
176
        * testsuite/Makefile.in: Rebuild.
177
 
178
2011-05-29  Ian Lance Taylor  
179
 
180
        * binary.cc (Binary_to_elf::sized_convert): Don't crash if the
181
        binary input file is empty.
182
 
183
2011-05-27  Ian Lance Taylor  
184
 
185
        * testsuite/Makefile.am (ver_test_2.so): Use -Wl,-R,.
186
        (ver_test_9.so): Likewise.
187
        * testsuite/Makefile.in: Rebuild.
188
 
189
2011-05-26 Cary Coutant  
190
 
191
        * incremental-dump.cc (dump_incremental_inputs): Print COMDAT groups.
192
        * incremental.cc (Incremental_inputs::report_input_section): Fix
193
        comment, indentation.
194
        (Incremental_inputs::report_comdat_group): New function.
195
        (Output_section_incremental_inputs::set_final_data_size): Adjust size
196
        of data for incremental input file entry.
197
        (Output_section_incremental_inputs::write_info_blocks): Write COMDAT
198
        group count, COMDAT group signatures.
199
        (Sized_incr_relobj::do_layout): Record kept COMDAT group info from
200
        an unchanged input file.
201
        * incremental.h (Incremental_object_entry::Incremental_object_entry):
202
        Initialize new data member.
203
        (Incremental_object_entry::add_comdat_group): New function.
204
        (Incremental_object_entry::get_comdat_group_count): New function.
205
        (Incremental_object_entry::get_comdat_signature_key): New function.
206
        (Incremental_object_entry::groups_): New data member.
207
        (Incremental_inputs::report_comdat_group): New function.
208
        (Incremental_input_entry_reader::get_symbol_offset): Adjust size of
209
        data for incremental input file entry.
210
        (Incremental_input_entry_reader::get_comdat_group_count): New function.
211
        (Incremental_input_entry_reader::get_input_section): Adjust size of
212
        data for incremental input file entry.
213
        (Incremental_input_entry_reader::get_global_symbol_reader): Likewise.
214
        (Incremental_input_entry_reader::get_comdat_group_signature): New
215
        function.
216
        * object.cc (Sized_relobj::include_section_group): Report kept
217
        COMDAT groups for incremental links.
218
 
219
2011-05-24  David Meyer  
220
 
221
        * dirsearch.cc (Dirsearch::find): Replace n1 and n2 parameters
222
        with name parameter.  Add found_name parameter.
223
        * fileread.cc (Input_file::find_file): Adjust code accordingly.
224
        * dirsearch.h (class Dirsearch): Update declaration.
225
 
226
2011-05-24  Ian Lance Taylor  
227
 
228
        * archive.cc (Library_base::should_include_member): Pull in object
229
        from archive if it defines the entry symbol.
230
        * parameters.cc (Parameters::entry): New function.
231
        * parameters.h (class Parameters): Declare entry.
232
        * output.h (class Output_file_header): Remove entry_ field.
233
        * output.cc (Output_file_header::Output_file_header): Remove entry
234
        parameter.  Change all callers.
235
        (Output_file_header::entry): Use parameters->entry.
236
        * gold.cc (queue_middle_tasks): Likewise.
237
        * plugin.cc (Plugin_hook::run): Likewise.
238
 
239
2011-05-24 Cary Coutant  
240
 
241
        * gold.cc (queue_initial_tasks): Pass incremental base filename
242
        to Output_file::open_base_file; don't print error message.
243
        * incremental-dump.cc (main): Adjust call to
244
        Output_file::open_for_modification.
245
        * incremental-dump.cc (main): Likewise.
246
        * incremental.cc (Incremental_inputs::report_command_line):
247
        Ignore --incremental-base option when comparing command lines.
248
        Ignore parameter when given as separate argument.
249
        * options.h (class General_options): Add --incremental-base.
250
        * output.cc (Output_file::Output_file):
251
        (Output_file::open_base_file): Add base_name and writable parameters;
252
        read base file into new file; print error message here.
253
        (Output_file::map_no_anonymous): Add writable parameter; adjust all
254
        callers.
255
        * output.h (Output_file::open_for_modification): Rename to...
256
        (Output_file::open_base_file): ...this; add base_name and
257
        writable parameters; adjust all callers.
258
        (Output_file::map_no_anonymous): Add writable parameter; adjust all
259
        callers.
260
        * testsuite/Makefile.am (incremental_test_4): Test
261
        --incremental-base.
262
        * testsuite/Makefile.in: Regenerate.
263
 
264
2011-05-24 Cary Coutant  
265
 
266
        * testsuite/Makefile.am: Add incremental_test_2, incremental_test_3,
267
        incremental_test_4.
268
        * testsuite/Makefile.in: Regenerate.
269
        * testsuite/two_file_test_1_v1.cc: New test source file.
270
        * testsuite/two_file_test_1b_v1.cc: New test source file.
271
        * testsuite/two_file_test_2_v1.cc: New test source file.
272
 
273
2011-05-24 Cary Coutant  
274
 
275
        * dynobj.h (Dynobj::do_dynobj): New function.
276
        * incremental-dump.cc (dump_incremental_inputs): Print as_needed
277
        flag and soname for shared objects.
278
        * incremental.cc (Incremental_inputs::report_object): Make
279
        either Incremental_object_entry or Incremental_dynobj_entry; add
280
        soname to string table.
281
        (Incremental_inputs::report_input_section): Add assertion.
282
        (Output_section_incremental_inputs::set_final_data_size): Adjust
283
        type of input file entry for shared libraries; adjust size of
284
        shared library info entry.
285
        (Output_section_incremental_inputs::write_input_files): Write
286
        as_needed flag for shared libraries.
287
        (Output_section_incremental_inputs::write_info_blocks): Adjust type
288
        of input file entry for shared libraries; write soname.
289
        (Sized_incr_dynobj::Sized_incr_dynobj): Read as_needed flag and
290
        soname from incremental info.
291
        * incremental.h (enum Incremental_input_flags): Add
292
        INCREMENTAL_INPUT_AS_NEEDED.
293
        (Incremental_input_entry::Incremental_input_entry): Initialize new
294
        data member.
295
        (Incremental_input_entry::set_as_needed): New function.
296
        (Incremental_input_entry::as_needed): New function.
297
        (Incremental_input_entry::do_dynobj_entry): New function.
298
        (Incremental_input_entry::as_needed_): New data member.
299
        (Incremental_object_entry::Incremental_object_entry): Don't check
300
        for shared library.
301
        (Incremental_object_entry::do_type): Likewise.
302
        (class Incremental_dynobj_entry): New class.
303
        (Incremental_input_entry_reader::as_needed): New function.
304
        (Incremental_input_entry_reader::get_soname): New function.
305
        (Incremental_input_entry_reader::get_global_symbol_count): Rewrite.
306
        (Incremental_input_entry_reader::get_output_symbol_index): Adjust
307
        size of shared library info entry.
308
        * layout.cc (Layout::finish_dynamic_section): Don't test for
309
        incremental link when adding DT_NEEDED entries.
310
        * object.h (Object::Object): Initialize new data member.
311
        (Object::dynobj): New function.
312
        (Object::set_as_needed): New function.
313
        (Object::as_needed): New function.
314
        (Object::do_dynobj): New function.
315
        (Object::as_needed_): New data member.
316
 
317
2011-05-24 Cary Coutant  
318
 
319
        * incremental-dump.cc (dump_incremental_inputs): Print dynamic reloc
320
        info; adjust display of GOT entries.
321
        * incremental.cc (Sized_incremental_binary::setup_readers): Allocate
322
        vector of input objects; remove file_status_.
323
        (Sized_incremental_binary::do_reserve_layout): Remove file_status_.
324
        (Sized_incremental_binary::do_process_got_plt): Adjust calls to
325
        got_plt reader; call target hooks to reserve GOT entries.
326
        (Output_section_incremental_inputs::set_final_data_size): Adjust size
327
        of input file info header and GOT info entry.
328
        (Output_section_incremental_inputs::write_info_blocks): Write dynamic
329
        relocation info.
330
        (Got_plt_view_info::got_descriptor): Remove.
331
        (Got_plt_view_info::sym_index): New data member.
332
        (Got_plt_view_info::input_index): New data member.
333
        (Local_got_offset_visitor::visit): Write input file index.
334
        (Global_got_offset_visitor::visit): Write 0 for input file index.
335
        (Global_symbol_visitor_got_plt::operator()): Replace got_descriptor
336
        with sym_index and input_index.
337
        (Output_section_incremental_inputs::write_got_plt): Adjust size of
338
        incremental info GOT entry; replace got_descriptor with input_index.
339
        (Sized_relobj_incr::Sized_relobj_incr): Adjust initializers; record
340
        map from input file index to object.
341
        (Sized_relobj_incr::do_layout): Replace direct data member reference
342
        with accessor function.
343
        (Sized_relobj_incr::do_for_all_local_got_entries): Move to base class.
344
        * incremental.h (Incremental_input_entry_reader::get_symbol_offset):
345
        Adjust size of input file info header.
346
        (Incremental_input_entry_reader::get_first_dyn_reloc): New function.
347
        (Incremental_input_entry_reader::get_dyn_reloc_count): New function.
348
        (Incremental_input_entry_reader::get_input_section): Adjust size of
349
        input file info header.
350
        (Incremental_got_plt_reader::Incremental_got_plt_reader): Adjust size
351
        of incremental info GOT entry.
352
        (Incremental_got_plt_reader::get_got_desc): Remove.
353
        (Incremental_got_plt_reader::get_got_symndx): New function.
354
        (Incremental_got_plt_reader::get_got_input_index): New function.
355
        (Sized_incremental_binary::Sized_incremental_binary): Remove
356
        file_status_; add input_objects_.
357
        (Sized_incremental_binary::~Sized_incremental_binary): Remove.
358
        (Sized_incremental_binary::set_file_is_unchanged): Remove.
359
        (Sized_incremental_binary::file_is_unchanged): Remove.
360
        (Sized_incremental_binary::set_input_object): New function.
361
        (Sized_incremental_binary::input_object): New function.
362
        (Sized_incremental_binary::file_status_): Remove.
363
        (Sized_incremental_binary::input_objects_): New data member.
364
        (Sized_relobj_incr): Rename Sized_incr_relobj to this; adjust all
365
        references.
366
        (Sized_relobj_incr::invalid_address): Move to base class.
367
        (Sized_relobj_incr::is_output_section_offset_invalid): Move to base
368
        class.
369
        (Sized_relobj_incr::do_output_section_offset): Likewise.
370
        (Sized_relobj_incr::do_for_all_local_got_entries): Likewise.
371
        (Sized_relobj_incr::section_offsets_): Likewise.
372
        * object.cc (Sized_relobj::do_for_all_local_got_entries): New
373
        function.
374
        (Sized_relobj_file::Sized_relobj_file): Remove local_got_offsets_.
375
        (Sized_relobj_file::layout_section): Replace refs to section_offsets_
376
        with accessor function.
377
        (Sized_relobj_file::do_layout): Likewise.
378
        (Sized_relobj_file::do_layout_deferred_sections): Likewise.
379
        (Sized_relobj_file::do_for_all_local_got_entries): Move to base class.
380
        (Sized_relobj_file::compute_final_local_value): Replace refs to
381
        section_offsets_ with accessor function.
382
        (Sized_relobj_file::do_finalize_local_symbols): Likewise.
383
        * object.h (Relobj::Relobj): Initialize new data members.
384
        (Relobj::add_dyn_reloc): New function.
385
        (Relobj::first_dyn_reloc): New function.
386
        (Relobj::dyn_reloc_count): New function.
387
        (Relobj::first_dyn_reloc_): New data member.
388
        (Relobj::dyn_reloc_count_): New data member.
389
        (Sized_relobj): Rename Sized_relobj_base to this; adjust all
390
        references.
391
        (Sized_relobj::Address): New typedef.
392
        (Sized_relobj::invalid_address): Move here from child class.
393
        (Sized_relobj::Sized_relobj): Initialize new data members.
394
        (Sized_relobj::sized_relobj): New function.
395
        (Sized_relobj::is_output_section_offset_invalid): Move here from
396
        child class.
397
        (Sized_relobj::get_output_section_offset): Likewise.
398
        (Sized_relobj::local_has_got_offset): Likewise.
399
        (Sized_relobj::local_got_offset): Likewise.
400
        (Sized_relobj::set_local_got_offset): Likewise.
401
        (Sized_relobj::do_for_all_local_got_entries): Likewise.
402
        (Sized_relobj::clear_got_offsets): New function.
403
        (Sized_relobj::section_offsets): Move here from child class.
404
        (Sized_relobj::do_output_section_offset): Likewise.
405
        (Sized_relobj::do_set_section_offset): Likewise.
406
        (Sized_relobj::Local_got_offsets): Likewise.
407
        (Sized_relobj::local_got_offsets_): Likewise.
408
        (Sized_relobj::section_offsets_): Likewise.
409
        (Sized_relobj_file): Rename Sized_relobj to this; adjust all
410
        references.
411
        (Sized_relobj_file::is_output_section_offset_invalid): Move to base
412
        class.
413
        (Sized_relobj_file::sized_relobj): New function
414
        (Sized_relobj_file::local_has_got_offset): Move to base class.
415
        (Sized_relobj_file::local_got_offset): Likewise.
416
        (Sized_relobj_file::set_local_got_offset): Likewise.
417
        (Sized_relobj_file::get_output_section_offset): Likewise.
418
        (Sized_relobj_file::do_for_all_local_got_entries): Likewise.
419
        (Sized_relobj_file::do_output_section_offset): Likewise.
420
        (Sized_relobj_file::do_set_section_offset): Likewise.
421
        (Sized_relobj_file::Local_got_offsets): Likewise.
422
        (Sized_relobj_file::local_got_offsets_): Likewise.
423
        (Sized_relobj_file::section_offsets_): Likewise.
424
        * output.cc (Output_reloc::Output_reloc): Adjust type of relobj
425
        (all constructors).
426
        (set_needs_dynsym_index): Convert relobj to derived class pointer.
427
        (Output_reloc::get_symbol_index): Likewise.
428
        (Output_reloc::local_section_offset): Likewise.
429
        (Output_reloc::get_address): Likewise.
430
        (Output_reloc::symbol_value): Likewise.
431
        (Output_data_got::reserve_slot): Move to class definition.
432
        (Output_data_got::reserve_local): New function.
433
        (Output_data_got::reserve_slot_for_global): Remove.
434
        (Output_data_got::reserve_global): New function.
435
        * output.h (Output_reloc::Output_reloc): Adjust type of relobj
436
        (all constructors, two instantiations).
437
        (Output_reloc::get_relobj): New function (two instantiations).
438
        (Output_reloc::u1_.relobj, Output_reloc::u2_.relobj): Adjust type.
439
        (Output_data_reloc_base::add): Convert relobj to derived class pointer.
440
        (Output_data_reloc::add_global): Adjust type of relobj.
441
        (Output_data_reloc::add_global_relative): Likewise.
442
        (Output_data_reloc::add_symbolless_global_addend): Likewise.
443
        (Output_data_reloc::add_local): Likewise.
444
        (Output_data_reloc::add_local_relative): Likewise.
445
        (Output_data_reloc::add_symbolless_local_addend): Likewise.
446
        (Output_data_reloc::add_local_section): Likewise.
447
        (Output_data_reloc::add_output_section): Likewise.
448
        (Output_data_reloc::add_absolute): Likewise.
449
        (Output_data_reloc::add_target_specific): Likewise.
450
        (Output_data_got::reserve_slot): Move definition here.
451
        (Output_data_got::reserve_local): New function.
452
        (Output_data_got::reserve_global): New function.
453
        * reloc.cc (Sized_relobj_file::do_read_relocs): Replace refs to
454
        section_offsets_ with accessor function.
455
        (Sized_relobj_file::write_sections): Likewise.
456
        (Sized_relobj_file::do_relocate_sections): Likewise.
457
        * target.h (Sized_target::reserve_local_got_entry): New function.
458
        (Sized_target::reserve_global_got_entry): New function.
459
        * x86_64.cc (Target_x86_64::reserve_local_got_entry): New function.
460
        (Target_x86_64::reserve_global_got_entry): New function.
461
        (Target_x86_64::init_got_plt_for_update): Create rela_dyn section.
462
 
463
2011-05-23 Cary Coutant  
464
 
465
        * gold.cc (queue_middle_tasks): Process existing GOT/PLT entries.
466
        * incremental-dump.cc (dump_incremental_inputs): Mask high-order
467
        bit when checking got_type.
468
        * incremental.cc (Sized_incremental_binary::setup_readers):
469
        Store symbol table and string table locations; initialize bit vector
470
        of file status flags.
471
        (Sized_incremental_binary::do_reserve_layout): Set bit flag for
472
        unchanged files.
473
        (Sized_incremental_binary::do_process_got_plt): New function.
474
        (Sized_incremental_binary::get_symtab_view): Use stored locations.
475
        (Output_section_incremental_inputs::set_final_data_size): Record
476
        file index for each input file.
477
        (Output_section_incremental_inputs::write_got_plt): Store file index
478
        instead of input entry offset for each GOT entry.
479
        * incremental.h
480
        (Incremental_input_entry::Incremental_input_entry): Initialize new
481
        data member.
482
        (Incremental_input_entry::set_offset): Store file index.
483
        (Incremental_input_entry::get_file_index): New function.
484
        (Incremental_input_entry::file_index_): New data member.
485
        (Incremental_binary::process_got_plt): New function.
486
        (Incremental_binary::do_process_got_plt): New function.
487
        (Sized_incremental_binary::Sized_incremental_binary): Initialize new
488
        data members.
489
        (Sized_incremental_binary::~Sized_incremental_binary): New destructor.
490
        (Sized_incremental_binary::set_file_is_unchanged): New function.
491
        (Sized_incremental_binary::file_is_unchanged): New function.
492
        (Sized_incremental_binary::do_process_got_plt): New function.
493
        (Sized_incremental_binary::file_status_): New data member.
494
        (Sized_incremental_binary::main_symtab_loc_): New data member.
495
        (Sized_incremental_binary::main_strtab_loc_): New data member.
496
        * output.cc (Output_data_got::Got_entry::write): Add case
497
        RESERVED_CODE.
498
        (Output_data_got::add_global): Call add_got_entry.
499
        (Output_data_got::add_global_plt): Likewise.
500
        (Output_data_got::add_global_with_rel): Likewise.
501
        (Output_data_got::add_global_with_rela): Likewise.
502
        (Output_data_got::add_global_pair_with_rel): Call add_got_entry_pair.
503
        (Output_data_got::add_global_pair_with_rela): Likewise.
504
        (Output_data_got::add_local): Call add_got_entry.
505
        (Output_data_got::add_local_plt): Likewise.
506
        (Output_data_got::add_local_with_rel): Likewise.
507
        (Output_data_got::add_local_with_rela): Likewise.
508
        (Output_data_got::add_local_pair_with_rel): Call add_got_entry_pair.
509
        (Output_data_got::add_local_pair_with_rela): Likewise.
510
        (Output_data_got::reserve_slot): New function.
511
        (Output_data_got::reserve_slot_for_global): New function.
512
        (Output_data_got::add_got_entry): New function.
513
        (Output_data_got::add_got_entry_pair): New function.
514
        (Output_section::add_output_section_data): Edit FIXME.
515
        * output.h
516
        (Output_section_data_build::Output_section_data_build): New
517
        constructor with size parameter.
518
        (Output_data_space::Output_data_space): Likewise.
519
        (Output_data_got::Output_data_got): Initialize new data member; new
520
        constructor with size parameter.
521
        (Output_data_got::add_constant): Call add_got_entry.
522
        (Output_data_got::reserve_slot): New function.
523
        (Output_data_got::reserve_slot_for_global): New function.
524
        (class Output_data_got::Got_entry): Add RESERVED_CODE.
525
        (Output_data_got::add_got_entry): New function.
526
        (Output_data_got::add_got_entry_pair): New function.
527
        (Output_data_got::free_list_): New data member.
528
        * target.h (Sized_target::init_got_plt_for_update): New function.
529
        (Sized_target::register_global_plt_entry): New function.
530
        * x86_64.cc (Output_data_plt_x86_64::Output_data_plt_x86_64):
531
        Initialize new data member; call init; add constructor with PLT count.
532
        (Output_data_plt_x86_64::init): New function.
533
        (Output_data_plt_x86_64::add_relocation): New function.
534
        (Output_data_plt_x86_64::reserve_slot): New function.
535
        (Output_data_plt_x86_64::free_list_): New data member.
536
        (Target_x86_64::init_got_plt_for_update): New function.
537
        (Target_x86_64::register_global_plt_entry): New function.
538
        (Output_data_plt_x86_64::add_entry): Allocate from free list for
539
        incremental updates.
540
        (Output_data_plt_x86_64::add_relocation): New function.
541
        * testsuite/object_unittest.cc (Object_test): Set default options.
542
 
543
2011-05-16  Ian Lance Taylor  
544
 
545
        * options.h (class General_options): Make -i a synonym for -r.
546
 
547
2011-05-16  Ian Lance Taylor  
548
 
549
        * testsuite/tls_test_main.cc: Use semaphores instead of mutexes.
550
 
551
2011-05-10 Cary Coutant  
552
 
553
        * object.cc (Sized_relobj::do_count_local_symbols): Check for
554
        strip_all (-s).
555
 
556
2011-05-06  Ian Lance Taylor  
557
 
558
        * layout.cc (Layout::layout): If the output section flags change,
559
        update the ordering.
560
 
561
2011-04-25 Cary Coutant  
562
 
563
        * incremental-dump.cc (dump_incremental_inputs): Print local
564
        symbol info for each input file.
565
        * incremental.cc
566
        (Output_section_incremental_inputs::set_final_data_size): Add local
567
        symbol info to input file entries in incremental info.
568
        (Output_section_incremental_inputs::write_info_blocks): Likewise.
569
        (Sized_incr_relobj::Sized_incr_relobj): Initialize new data members.
570
        (Sized_incr_relobj::do_add_symbols): Cosmetic change.
571
        (Sized_incr_relobj::do_count_local_symbols): Replace stub with
572
        implementation.
573
        (Sized_incr_relobj::do_finalize_local_symbols): Likewise.
574
        (Sized_incr_relobj::do_relocate): Write the local symbols.
575
        (Sized_incr_dynobj::do_add_symbols): Cosmetic change.
576
        * incremental.h (Incremental_inputs_reader::get_symbol_offset):
577
        Adjust size of input file header.
578
        (Incremental_inputs_reader::get_local_symbol_offset): New function.
579
        (Incremental_inputs_reader::get_local_symbol_count): New function.
580
        (Incremental_inputs_reader::get_input_section): Adjust size of input
581
        file header.
582
        (Incremental_inputs_reader::get_global_symbol_reader): Likewise.
583
        (Sized_incr_relobj::This): New typedef.
584
        (Sized_incr_relobj::sym_size): New const data member.
585
        (Sized_incr_relobj::Local_symbol): New struct.
586
        (Sized_incr_relobj::do_output_local_symbol_count): New function.
587
        (Sized_incr_relobj::do_local_symbol_offset): New function.
588
        (Sized_incr_relobj::local_symbol_count_): New data member.
589
        (Sized_incr_relobj::output_local_dynsym_count_): New data member.
590
        (Sized_incr_relobj::local_symbol_index_): New data member.
591
        (Sized_incr_relobj::local_symbol_offset_): New data member.
592
        (Sized_incr_relobj::local_dynsym_offset_): New data member.
593
        (Sized_incr_relobj::local_symbols_): New data member.
594
        * object.h (Relobj::output_local_symbol_count): New function.
595
        (Relobj::local_symbol_offset): New function.
596
        (Relobj::do_output_local_symbol_count): New function.
597
        (Relobj::do_local_symbol_offset): New function.
598
        (Sized_relobj::do_output_local_symbol_count): New function.
599
        (Sized_relobj::do_local_symbol_offset): New function.
600
 
601
2011-04-22  Vladimir Simonov  
602
 
603
        * descriptors.cc (set_close_on_exec): New function.
604
        (Descriptors::open): Use set_close_on_exec.
605
        * output.cc (S_ISLNK): Define if not defined.
606
 
607
2011-04-22 Cary Coutant  
608
 
609
        * incremental.cc (Sized_incremental_binary::setup_readers): Allocate
610
        global symbol map.
611
        (Sized_incremental_binary::do_apply_incremental_relocs): New function.
612
        (Sized_incr_relobj::do_add_symbols): Add symbols to global symbol map.
613
        (Sized_incr_relobj::do_relocate): Remap section indices in incremental
614
        relocations.
615
        (Sized_incr_dynobj::do_add_symbols): Add symbols to global symbol map.
616
        (Sized_incr_dynobj::do_for_all_global_symbols): Remove FIXME.
617
        (Sized_incr_dynobj::do_for_all_local_got_entries): Likewise.
618
        * incremental.h
619
        (Incremental_inputs_reader::global_symbol_reader_at_offset): New
620
        function.
621
        (Incremental_binary::apply_incremental_relocs): New function.
622
        (Incremental_binary::do_apply_incremental_relocs): New function.
623
        (Sized_incremental_binary::Sized_incremental_binary): Initialize new
624
        data member.
625
        (Sized_incremental_binary::add_global_symbol): New function.
626
        (Sized_incremental_binary::global_symbol): New function.
627
        (Sized_incremental_binary::do_apply_incremental_relocs): New function.
628
        (Sized_incremental_binary::symbol_map_): New data member.
629
        * layout.cc (Layout_task_runner::run): Apply incremental relocations.
630
        * target.h (Sized_target::apply_relocation): New function.
631
        * target-reloc.h (apply_relocation): New function.
632
        * x86_64.cc (Target_x86_64::apply_relocation): New function.
633
 
634
2011-04-22  Doug Kwan  
635
 
636
        * arm.cc (Arm_output_section::Arm_output_section): Set SHF_LINK_ORDER
637
        flag of a SHT_ARM_EXIDX section.
638
        * testsuite/Makefile.am (arm_exidx_test): New test rules.
639
        * testsuite/Makefile.in: Regenerate.
640
        * testsuite/arm_exidx_test.s: New file.
641
        * testsuite/arm_exidx_test.sh: Same.
642
 
643
2011-04-20 Cary Coutant  
644
 
645
        PR gold/12689
646
        * archive.h (Incremental_archive_entry::Archive_member):
647
        Initialize arg_serial_ (second constructor).
648
 
649
2011-04-17  Ian Lance Taylor  
650
 
651
        * object.cc (Relocate_info::location): Simplify location string.
652
        * errors.cc (Errors::error_at_location): Don't print program
653
        name.
654
        (Errors::warning_at_location): Likewise.
655
        (Errors::undefined_symbol): Likewise.
656
        * testsuite/debug_msg.sh: Update accordingly.
657
 
658
2011-04-14 Cary Coutant  
659
 
660
        * gold/layout.cc (Layout::symtab_section_offset): New function.
661
        * gold/layout.h (Layout::symtab_section_offset): New function.
662
        * gold/reloc.cc (Sized_relobj::do_relocate): Call it.
663
 
664
2011-04-12  Ian Lance Taylor  
665
 
666
        * configure.ac: Check for sys/mman.h and mmap.  Check for mremap
667
        with MREMAP_MAYMOVE.
668
        * output.h (class Output_file): Add map_is_allocated_ field.
669
        * output.cc: Only #include  if it exists.  If mmap is
670
        not available, provide stubs.  If mremap is not available, #define
671
        it to gold_mremap.
672
        (MREMAP_MAYMOVE): Define if not defined.
673
        (Output_file::Output_file): Initialize map_is_allocated_.
674
        (Output_file::resize): Check map_is_allocated_.
675
        (Output_file::map_anonymous): If mmap fails, use malloc.
676
        (Output_file::unmap): Don't do anything for an anonymous map.
677
        * fileread.cc: Only #include  if it exists.  If mmap
678
        is not available, provide stubs.
679
        (File_read::View::~View): Use free rather than delete[].
680
        (File_read::make_view): Use malloc rather than new[].  If mmap
681
        fails, use malloc.
682
        (File_read::find_or_make_view): Use malloc rather than new[].
683
        * gold.h: Remove HAVE_REMAP code.
684
        * mremap.c: #include .  Only #include  if it
685
        exists.  Rename mremap to gold_mremap.  If mmap is not available
686
        don't do anything.
687
        * configure, config.in: Rebuild.
688
 
689
2011-04-11  Ian Lance Taylor  
690
 
691
        * incremental.cc (Sized_incr_relobj::do_add_symbols): Always
692
        initialize local variable v.
693
 
694
2011-04-11  Cary Coutant  
695
 
696
        * archive.cc (Archive::include_member): Adjust call to
697
        report_object.
698
        (Add_archive_symbols::run): Track argument serial numbers.
699
        (Lib_group::include_member): Likewise.
700
        (Add_lib_group_symbols::run): Adjust call to report_archive_begin.
701
        * archive.h (Incremental_archive_entry::Archive_member):
702
        Initialize arg_serial_.
703
        (Archive_member::arg_serial_): New data member.
704
        * dynobj.cc (Dynobj::Dynobj): Allow input_file_ to be NULL.
705
        (Sized_dynobj::do_add_symbols): Track symbols when doing an
706
        incremental link.
707
        (Sized_dynobj::do_for_all_local_got_entries): New function.
708
        * dynobj.h: (Sized_dynobj::do_for_all_local_got_entries): New
709
        function.
710
        * fileread.cc (get_mtime): New function.
711
        * fileread.h (get_mtime): New function.
712
        * gold.cc (queue_initial_tasks): Check for incremental update.
713
        (process_incremental_input): New function.
714
        (queue_middle_tasks): Don't force valid target for incremental
715
        update.
716
        * incremental-dump.cc (find_input_containing_global): Adjust
717
        size of symbol info entry.
718
        (dump_incremental_inputs): Dump argument serial number and
719
        in_system_directory flag; bias shndx by 1; print symbol names
720
        when dumping per-file symbol lists; use new symbol info readers.
721
        * incremental.cc
722
        (Output_section_incremental_inputs:update_data_size): New function.
723
        (Sized_incremental_binary::setup_readers): Setup input readers
724
        for each input file; build maps for files added from libraries
725
        and scripts.
726
        (Sized_incremental_binary::check_input_args): New function.
727
        (Sized_incremental_binary::do_check_inputs): Build map of argument
728
        serial numbers to input arguments.
729
        (Sized_incremental_binary::do_file_has_changed): Rename
730
        do_file_is_unchanged to this; compare file modification times.
731
        (Sized_incremental_binary::do_init_layout): New function.
732
        (Sized_incremental_binary::do_reserve_layout): New function.
733
        (Sized_incremental_binary::do_get_input_reader): Remove.
734
        (Sized_incremental_binary::get_symtab_view): New function.
735
        (Incremental_checker::can_incrementally_link_output_file): Remove.
736
        (Incremental_inputs::report_command_line): Exclude --debug options.
737
        (Incremental_inputs::report_archive_begin): Add parameter; track
738
        argument serial numbers; don't put input file entry for archive
739
        before archive members.
740
        (Incremental_inputs::report_archive_end): Put input file entry
741
        for archive after archive members.
742
        (Incremental_inputs::report_object): Add parameter; track argument
743
        serial numbers and in_system_directory flag.
744
        (Incremental_inputs::report_script): Add parameter; track argument
745
        serial numbers.
746
        (Output_section_incremental_inputs::set_final_data_size): Adjust
747
        size of symbol info entry; check for forwarding symbols.
748
        (Output_section_incremental_inputs::write_input_files): Write
749
        in_system_directory flag and argument serial number.
750
        (Output_section_incremental_inputs::write_info_blocks): Map section
751
        indices between incremental info and original input file; store
752
        input section index for each symbol.
753
        (class Local_got_offset_visitor): Derive from Got_offset_list::Visitor;
754
        change operator() to visit().
755
        (class Global_got_offset_visitor): Likewise.
756
        (class Global_symbol_visitor_got_plt):
757
        (Output_section_incremental_inputs::write_got_plt): Use new visitor
758
        classes.
759
        (Sized_incr_relobj::Sized_incr_relobj): New constructor.
760
        (Sized_incr_relobj::do_read_symbols): New function.
761
        (Sized_incr_relobj::do_layout): New function.
762
        (Sized_incr_relobj::do_layout_deferred_sections): New function.
763
        (Sized_incr_relobj::do_add_symbols): New function.
764
        (Sized_incr_relobj::do_should_include_member): New function.
765
        (Sized_incr_relobj::do_for_all_global_symbols): New function.
766
        (Sized_incr_relobj::do_for_all_local_got_entries): New function.
767
        (Sized_incr_relobj::do_section_size): New function.
768
        (Sized_incr_relobj::do_section_name): New function.
769
        (Sized_incr_relobj::do_section_contents): New function.
770
        (Sized_incr_relobj::do_section_flags): New function.
771
        (Sized_incr_relobj::do_section_entsize): New function.
772
        (Sized_incr_relobj::do_section_address): New function.
773
        (Sized_incr_relobj::do_section_type): New function.
774
        (Sized_incr_relobj::do_section_link): New function.
775
        (Sized_incr_relobj::do_section_info): New function.
776
        (Sized_incr_relobj::do_section_addralign): New function.
777
        (Sized_incr_relobj::do_initialize_xindex): New function.
778
        (Sized_incr_relobj::do_get_global_symbol_counts): New function.
779
        (Sized_incr_relobj::do_read_relocs): New function.
780
        (Sized_incr_relobj::do_gc_process_relocs): New function.
781
        (Sized_incr_relobj::do_scan_relocs): New function.
782
        (Sized_incr_relobj::do_count_local_symbols): New function.
783
        (Sized_incr_relobj::do_finalize_local_symbols): New function.
784
        (Sized_incr_relobj::do_set_local_dynsym_indexes): New function.
785
        (Sized_incr_relobj::do_set_local_dynsym_offset): New function.
786
        (Sized_incr_relobj::do_relocate): New function.
787
        (Sized_incr_relobj::do_set_section_offset): New function.
788
        (Sized_incr_dynobj::Sized_incr_dynobj): New function.
789
        (Sized_incr_dynobj::do_read_symbols): New function.
790
        (Sized_incr_dynobj::do_layout): New function.
791
        (Sized_incr_dynobj::do_add_symbols): New function.
792
        (Sized_incr_dynobj::do_should_include_member): New function.
793
        (Sized_incr_dynobj::do_for_all_global_symbols): New function.
794
        (Sized_incr_dynobj::do_for_all_local_got_entries): New function.
795
        (Sized_incr_dynobj::do_section_size): New function.
796
        (Sized_incr_dynobj::do_section_name): New function.
797
        (Sized_incr_dynobj::do_section_contents): New function.
798
        (Sized_incr_dynobj::do_section_flags): New function.
799
        (Sized_incr_dynobj::do_section_entsize): New function.
800
        (Sized_incr_dynobj::do_section_address): New function.
801
        (Sized_incr_dynobj::do_section_type): New function.
802
        (Sized_incr_dynobj::do_section_link): New function.
803
        (Sized_incr_dynobj::do_section_info): New function.
804
        (Sized_incr_dynobj::do_section_addralign): New function.
805
        (Sized_incr_dynobj::do_initialize_xindex): New function.
806
        (Sized_incr_dynobj::do_get_global_symbol_counts): New function.
807
        (make_sized_incremental_object): New function.
808
        (Incremental_library::copy_unused_symbols): New function.
809
        (Incremental_library::do_for_all_unused_symbols): New function.
810
        * incremental.h (enum Incremental_input_flags): New type.
811
        (class Incremental_checker): Remove.
812
        (Incremental_input_entry::Incremental_input_entry): Add argument
813
        serial number.
814
        (Incremental_input_entry::arg_serial): New function.
815
        (Incremental_input_entry::set_is_in_system_directory): New function.
816
        (Incremental_input_entry::is_in_system_directory): New function.
817
        (Incremental_input_entry::arg_serial_): New data member.
818
        (Incremental_input_entry::is_in_system_directory_): New data member.
819
        (class Script_info): Move here from script.h.
820
        (Script_info::Script_info): Add filename parameter.
821
        (Script_info::filename): New function.
822
        (Script_info::filename_): New data member.
823
        (Incremental_script_entry::Incremental_script_entry): Add argument
824
        serial number.
825
        (Incremental_object_entry::Incremental_object_entry): Likewise.
826
        (Incremental_object_entry::add_input_section): Build list of input
827
        sections with map to original shndx.
828
        (Incremental_object_entry::get_input_section_index): New function.
829
        (Incremental_object_entry::shndx_): New data member.
830
        (Incremental_object_entry::name_key_): Rename; adjust all refs.
831
        (Incremental_object_entry::sh_size_): Rename; adjust all refs.
832
        (Incremental_archive_entry::Incremental_archive_entry): Add argument
833
        serial number.
834
        (Incremental_inputs::report_archive_begin): Likewise.
835
        (Incremental_inputs::report_object): Likewise.
836
        (Incremental_inputs::report_script): Likewise.
837
        (class Incremental_global_symbol_reader): New class.
838
        (Incremental_input_entry_reader::Incremental_input_entry_reader): Read
839
        and store flags and input file type.
840
        (Incremental_input_entry_reader::arg_serial): New function.
841
        (Incremental_input_entry_reader::type): Extract type from flags.
842
        (Incremental_input_entry_reader::is_in_system_directory): New function.
843
        (Incremental_input_entry_reader::get_input_section_count): Call
844
        accessor function for type.
845
        (Incremental_input_entry_reader::get_symbol_offset): Call accessor
846
        function for type; adjust size of global symbol entry.
847
        (Incremental_input_entry_reader::get_global_symbol_count): Call
848
        accessor function for type.
849
        (Incremental_input_entry_reader::get_object_count): Likewise.
850
        (Incremental_input_entry_reader::get_object_offset): Likewise.
851
        (Incremental_input_entry_reader::get_member_count): Likewise.
852
        (Incremental_input_entry_reader::get_unused_symbol_count): Likewise.
853
        (Incremental_input_entry_reader::get_member_offset): Likewise.
854
        (Incremental_input_entry_reader::get_unused_symbol): Likewise.
855
        (Incremental_input_entry_reader::Global_symbol_info): Remove.
856
        (Incremental_input_entry_reader::get_global_symbol_info): Remove.
857
        (Incremental_input_entry_reader::get_global_symbol_reader): New
858
        function.
859
        (Incremental_input_entry_reader::get_output_symbol_index): New
860
        function.
861
        (Incremental_input_entry_reader::type_): Remove.
862
        (Incremental_input_entry_reader::flags_): New data member.
863
        (Incremental_inputs_reader::input_file_offset): New function.
864
        (Incremental_inputs_reader::input_file_index): New function.
865
        (Incremental_inputs_reader::input_file): Call input_file_offset.
866
        (Incremental_inputs_reader::input_file_at_offset): New function.
867
        (Incremental_relocs_reader::get_r_type): Reformat.
868
        (Incremental_relocs_reader::get_r_shndx): Reformat.
869
        (Incremental_relocs_reader::get_r_offset): Reformat.
870
        (Incremental_relocs_reader::data): New function.
871
        (Incremental_binary::Incremental_binary): Initialize new data members.
872
        (Incremental_binary::check_inputs): Add cmdline parameter.
873
        (Incremental_binary::file_is_unchanged): Remove.
874
        (Input_reader::arg_serial): New function.
875
        (Input_reader::get_unused_symbol_count): New function.
876
        (Input_reader::get_unused_symbol): New function.
877
        (Input_reader::do_arg_serial): New function.
878
        (Input_reader::do_get_unused_symbol_count): New function.
879
        (Input_reader::do_get_unused_symbol): New function.
880
        (Incremental_binary::input_file_count): New function.
881
        (Incremental_binary::get_input_reader): Change signature to use
882
        index instead of filename.
883
        (Incremental_binary::file_has_changed): New function.
884
        (Incremental_binary::get_input_argument): New function.
885
        (Incremental_binary::get_library): New function.
886
        (Incremental_binary::get_script_info): New function.
887
        (Incremental_binary::init_layout): New function.
888
        (Incremental_binary::reserve_layout): New function.
889
        (Incremental_binary::output_file): New function.
890
        (Incremental_binary::do_check_inputs): New function.
891
        (Incremental_binary::do_file_is_unchanged): Remove.
892
        (Incremental_binary::do_file_has_changed): New function.
893
        (Incremental_binary::do_init_layout): New function.
894
        (Incremental_binary::do_reserve_layout): New function.
895
        (Incremental_binary::do_input_file_count): New function.
896
        (Incremental_binary::do_get_input_reader): Change signature.
897
        (Incremental_binary::input_args_map_): New data member.
898
        (Incremental_binary::library_map_): New data member.
899
        (Incremental_binary::script_map_): New data member.
900
        (Sized_incremental_binary::Sized_incremental_binary): Initialize
901
        new data members.
902
        (Sized_incremental_binary::output_section): New function.
903
        (Sized_incremental_binary::inputs_reader): Add const.
904
        (Sized_incremental_binary::symtab_reader): Add const.
905
        (Sized_incremental_binary::relocs_reader): Add const.
906
        (Sized_incremental_binary::got_plt_reader): Add const.
907
        (Sized_incremental_binary::get_symtab_view): New function.
908
        (Sized_incremental_binary::Inputs_reader): New typedef.
909
        (Sized_incremental_binary::Input_entry_reader): New typedef.
910
        (Sized_incremental_binary::do_check_inputs): Add cmdline parameter.
911
        (Sized_incremental_binary::do_file_is_unchanged): Remove.
912
        (Sized_incremental_binary::do_file_has_changed): New function.
913
        (Sized_incremental_binary::do_init_layout): New function.
914
        (Sized_incremental_binary::do_reserve_layout): New function.
915
        (Sized_input_reader::Inputs_reader): Remove.
916
        (Sized_input_reader::Input_entry_reader): Remove.
917
        (Sized_input_reader::do_arg_serial): New function.
918
        (Sized_input_reader::do_get_unused_symbol_count): New function.
919
        (Sized_input_reader::do_get_unused_symbol): New function.
920
        (Sized_incremental_binary::do_input_file_count): New function.
921
        (Sized_incremental_binary::do_get_input_reader): Change signature;
922
        use index instead of filename.
923
        (Sized_incremental_binary::section_map_): New data member.
924
        (Sized_incremental_binary::input_entry_readers_): New data member.
925
        (class Sized_incr_relobj): New class.
926
        (class Sized_incr_dynobj): New class.
927
        (make_sized_incremental_object): New function.
928
        (class Incremental_library): New class.
929
        * layout.cc (Free_list::num_lists): New static data member.
930
        (Free_list::num_nodes): New static data member.
931
        (Free_list::num_removes): New static data member.
932
        (Free_list::num_remove_visits): New static data member.
933
        (Free_list::num_allocates): New static data member.
934
        (Free_list::num_allocate_visits): New static data member.
935
        (Free_list::init): New function.
936
        (Free_list::remove): New function.
937
        (Free_list::allocate): New function.
938
        (Free_list::dump): New function.
939
        (Free_list::print_stats): New function.
940
        (Layout_task_runner::run): Resize output file for incremental updates.
941
        (Layout::Layout): Initialize new data members.
942
        (Layout::set_incremental_base): New function.
943
        (Layout::init_fixed_output_section): New function.
944
        (Layout::layout_eh_frame): Do not build .eh_frame_hdr section for
945
        incremental updates.
946
        (Layout::create_gold_note): Do not create gold note section for
947
        incremental updates.
948
        (Layout::set_segment_offsets): Do not recalculate RELRO alignment
949
        for incremental updates.
950
        (Layout::set_section_offsets): For incremental updates, allocate space
951
        from free list.
952
        (Layout::create_symtab_sections): Layout with offsets relative to
953
        start of section; for incremental updates, allocate space from free
954
        list.
955
        (Layout::create_shdrs): For incremental updates, allocate space from
956
        free list.
957
        (Layout::finish_dynamic_section): For incremental updates, do not
958
        check --as-needed (fixed in subsequent patch).
959
        * layout.h (class Free_list): New class.
960
        (Layout::set_incremental_base): New function.
961
        (Layout::incremental_base): New function.
962
        (Layout::init_fixed_output_section): New function.
963
        (Layout::allocate): New function.
964
        (Layout::incremental_base_): New data member.
965
        (Layout::free_list_): New data member.
966
        * main.cc (main): Print Free_list statistics.
967
        * object.cc (Relobj::finalize_incremental_relocs): Add
968
        clear_counts parameter; clear counts only when clear_counts is set.
969
        (Sized_relobj::Sized_relobj): Initialize new base class.
970
        (Sized_relobj::do_layout): Don't report special sections.
971
        (Sized_relobj::do_for_all_local_got_entries): New function.
972
        (Sized_relobj::write_local_symbols): Add symtab_off parameter; add
973
        symtab_off to all symbol table offsets.
974
        (Sized_relobj::do_get_global_symbol_counts): Add typename keyword.
975
        * object.h (class Got_offset_list): Move to top of file.
976
        (Object::Object): Allow case where input_file == NULL.
977
        (Object::~Object): Likewise.
978
        (Object::input_file): Assert that input_file != NULL.
979
        (Object::lock): Allow case where input_file == NULL.
980
        (Object::unlock): Likewise.
981
        (Object::is_locked): Likewise.
982
        (Object::token): Likewise.
983
        (Object::release): Likewise.
984
        (Object::is_incremental): New function.
985
        (Object::get_mtime): New function.
986
        (Object::for_all_local_got_entries): New function.
987
        (Object::clear_view_cache_marks): Allow case where input_file == NULL.
988
        (Object::set_is_in_system_directory): New function.
989
        (Object::is_in_system_directory): New function.
990
        (Object::do_is_incremental): New function.
991
        (Object::do_get_mtime): New function.
992
        (Object::do_for_all_local_got_entries): New function.
993
        (Object::is_in_system_directory_): New data member.
994
        (Relobj::finalize_incremental_relocs): Add clear_counts parameter.
995
        (class Sized_relobj_base): New class.
996
        (class Sized_relobj): Derive from Sized_relobj_base.
997
        (class Sized_relobj::Symbols): Redeclare from base class.
998
        (class Sized_relobj::local_got_offset_list): Remove.
999
        (class Sized_relobj::Output_sections): Redeclare from base class.
1000
        (class Sized_relobj::do_for_all_local_got_entries): New function.
1001
        (class Sized_relobj::write_local_symbols): Add offset parameter.
1002
        (class Sized_relobj::local_symbol_offset_): Update comment.
1003
        (class Sized_relobj::local_dynsym_offset_): Update comment.
1004
        * options.cc (Input_arguments::add_file): Remove const.
1005
        * options.h (Input_file_argument::Input_file_argument):
1006
        Initialize arg_serial_ (all constructors).
1007
        (Input_file_argument::set_arg_serial): New function.
1008
        (Input_file_argument::arg_serial): New function.
1009
        (Input_file_argument::arg_serial_): New data member.
1010
        (Input_arguments::Input_arguments): Initialize file_count_.
1011
        (Input_arguments::add_file): Remove const.
1012
        (Input_arguments::number_of_input_files): New function.
1013
        (Input_arguments::file_count_): New data member.
1014
        (Command_line::number_of_input_files): Call
1015
        Input_arguments::number_of_input_files.
1016
        * output.cc (Output_segment_headers::Output_segment_headers):
1017
        Set current size.
1018
        (Output_section::Input_section::current_data_size): New function.
1019
        (Output_section::Output_section): Initialize new data members.
1020
        (Output_section::add_input_section): Don't do merge sections for
1021
        an incremental link; allocate space from free list for an
1022
        incremental update.
1023
        (Output_section::add_output_section_data): Allocate space from
1024
        free list for an incremental update.
1025
        (Output_section::update_data_size): New function.
1026
        (Output_section::set_fixed_layout): New function.
1027
        (Output_section::reserve): New function.
1028
        (Output_segment::set_section_addresses): Remove const.
1029
        (Output_segment::set_section_list_addresses): Remove const; allocate
1030
        space from free list for an incremental update.
1031
        (Output_segment::set_offset): Adjust size of RELRO segment for an
1032
        incremental update.
1033
        * output.h (Output_data::current_data_size): Move here from
1034
        child classes.
1035
        (Output_data::pre_finalize_data_size): New function.
1036
        (Output_data::update_data_size): New function.
1037
        (Output_section_headers::update_data_size): new function.
1038
        (Output_section_data_build::current_data_size): Move to Output_data.
1039
        (Output_data_strtab::update_data_size): New function.
1040
        (Output_section::current_data_size): Move to Output_data.
1041
        (Output_section::set_fixed_layout): New function.
1042
        (Output_section::has_fixed_layout): New function.
1043
        (Output_section::reserve): New function.
1044
        (Output_section::update_data_size): New function.
1045
        (Output_section::has_fixed_layout_): New data member.
1046
        (Output_section::free_list_): New data member.
1047
        (Output_segment::set_section_addresses): Remove const.
1048
        (Output_segment::set_section_list_addresses): Remove const.
1049
        * plugin.cc (Sized_pluginobj::do_for_all_local_got_entries):
1050
        New function.
1051
        * plugin.h (Sized_pluginobj::do_for_all_local_got_entries):
1052
        New function.
1053
        * readsyms.cc (Read_symbols::do_read_symbols): Add library
1054
        parameter when calling Add_symbols constructor; store argument
1055
        serial number for members of a lib group.
1056
        (Add_symbols::locks): Allow case where token == NULL.
1057
        (Add_symbols::run): Report libraries denoted by --start-lib/--end-lib.
1058
        (Read_member::~Read_member): New function.
1059
        (Read_member::is_runnable): New function.
1060
        (Read_member::locks): New function.
1061
        (Read_member::run): New function.
1062
        (Check_script::~Check_script): New function.
1063
        (Check_script::is_runnable): New function.
1064
        (Check_script::locks): New function.
1065
        (Check_script::run): New function.
1066
        (Check_library::~Check_library): New function.
1067
        (Check_library::is_runnable): New function.
1068
        (Check_library::locks): New function.
1069
        (Check_library::run): New function.
1070
        * readsyms.h (Add_symbols::Add_symbols): Add library parameter.
1071
        (Add_symbols::library_): New data member.
1072
        (class Read_member): New class.
1073
        (class Check_script): New class.
1074
        (class Check_library): New class.
1075
        * reloc.cc (Read_relocs::is_runnable): Allow case where
1076
        token == NULL.
1077
        (Read_relocs::locks): Likewise.
1078
        (Scan_relocs::locks): Likewise.
1079
        (Relocate_task::locks): Likewise.
1080
        (Sized_relobj::do_scan_relocs): Tell finalize_incremental_relocs
1081
        to clear counters.
1082
        (Sized_relobj::incremental_relocs_scan): Fix comment.
1083
        (Sized_relobj::do_relocate): Pass output file offset to
1084
        write_local_symbols.
1085
        (Sized_relobj::incremental_relocs_write_reltype): Use reloc_size
1086
        from class declaration.
1087
        * script.cc (read_input_script): Allocate Script_info; pass
1088
        argument serial number to report_script.
1089
        * script.h (class Script_info): Move to incremental.h.
1090
        * symtab.cc (Symbol_table::add_from_incrobj): New function.
1091
        * symtab.h (Symbol_table::add_from_incrobj): New function.
1092
        (Symbol_table::set_file_offset): New function.
1093
 
1094
2011-04-05  Cary Coutant  
1095
 
1096
        * incremental-dump.cc (dump_incremental_inputs): Change signature
1097
        to take a Sized_incremental_binary; change caller.  Use readers
1098
        in Sized_incremental_binary.
1099
        * incremental.cc
1100
        (Sized_incremental_binary::find_incremental_inputs_sections):
1101
        Rename do_find_incremental_inputs_sections to this.
1102
        (Sized_incremental_binary::setup_readers): New function.
1103
        (Sized_incremental_binary::do_check_inputs): Check
1104
        has_incremental_info_ flag; move setup code to setup_readers;
1105
        use input readers.
1106
        (Sized_incremental_binary::do_file_is_unchanged): New function.
1107
        (Sized_incremental_binary::do_get_input_reader): New function.
1108
        * incremental.h (class Incremental_binary): Move to end of file.
1109
        (Incremental_binary::file_is_unchanged): New function.
1110
        (Incremental_binary::do_file_is_unchanged): New function.
1111
        (Incremental_binary::Input_reader): New class.
1112
        (Incremental_binary::get_input_reader): New function.
1113
        (class Sized_incremental_binary): Move to end of file.
1114
        (Sized_incremental_binary::Sized_incremental_binary): Setup the
1115
        input section reader classes.
1116
        (Sized_incremental_binary::has_incremental_info): New function.
1117
        (Sized_incremental_binary::inputs_reader): New function.
1118
        (Sized_incremental_binary::symtab_reader): New function.
1119
        (Sized_incremental_binary::relocs_reader): New function.
1120
        (Sized_incremental_binary::got_plt_reader): New function.
1121
        (Sized_incremental_binary::do_file_is_unchanged): New function.
1122
        (Sized_incremental_binary::Sized_input_reader): New class.
1123
        (Sized_incremental_binary::get_input_reader): New function.
1124
        (Sized_incremental_binary::find_incremental_inputs_sections):
1125
        Rename do_find_incremental_inputs_sections to this.
1126
        (Sized_incremental_binary::setup_readers): New function.
1127
        (Sized_incremental_binary::has_incremental_info_): New data member.
1128
        (Sized_incremental_binary::inputs_reader_): New data member.
1129
        (Sized_incremental_binary::symtab_reader_): New data member.
1130
        (Sized_incremental_binary::relocs_reader_): New data member.
1131
        (Sized_incremental_binary::got_plt_reader_): New data member.
1132
        (Sized_incremental_binary::current_input_file_): New data member.
1133
 
1134
2011-04-05  Paul Pluzhnikov  
1135
 
1136
        PR gold/12640
1137
        * dwarf_reader.cc (Sized_dwarf_line_info): Fix vector bounds
1138
        violation.
1139
 
1140
2011-03-30  Cary Coutant  
1141
 
1142
        * archive.cc (Archive::include_member): Adjust call to report_object.
1143
        (Add_archive_symbols::run): Add script_info to call to
1144
        report_archive_begin.
1145
        (Lib_group::include_member): Adjust call to report_object.
1146
        (Add_lib_group_symbols::run): Adjust call to report_object.
1147
        * incremental-dump.cc (dump_incremental_inputs): Remove unnecessary
1148
        blocks.  Add object count for script input files.
1149
        * incremental.cc (Incremental_inputs::report_archive_begin): Add
1150
        script_info parameter; change all callers.
1151
        (Incremental_inputs::report_object): Add script_info parameter;
1152
        change all callers.
1153
        (Incremental_inputs::report_script): Store backpointer to
1154
        incremental info entry.
1155
        (Output_section_incremental_inputs::set_final_data_size): Record
1156
        additional information for scripts.
1157
        (Output_section_incremental_inputs::write_info_blocks): Likewise.
1158
        * incremental.h (Incremental_script_entry::add_object): New function.
1159
        (Incremental_script_entry::get_object_count): New function.
1160
        (Incremental_script_entry::get_object): New function.
1161
        (Incremental_script_entry::objects_): New data member; adjust
1162
        constructor.
1163
        (Incremental_inputs::report_archive_begin): Add script_info parameter.
1164
        (Incremental_inputs::report_object): Add script_info parameter.
1165
        (Incremental_inputs_reader::get_object_count): New function.
1166
        (Incremental_inputs_reader::get_object_offset): New function.
1167
        * options.cc (Input_arguments::add_file): Return reference to
1168
        new input argument.
1169
        * options.h (Input_argument::set_script_info): New function.
1170
        (Input_argument::script_info): New function.
1171
        (Input_argument::script_info_): New data member; adjust all
1172
        constructors.
1173
        (Input_file_group::add_file): Return reference to new input argument.
1174
        (Input_file_lib::add_file): Likewise.
1175
        (Input_arguments::add_file): Likewise.
1176
        * readsyms.cc (Add_symbols::run): Adjust call to report_object.
1177
        * script.cc (Parser_closure::Parser_closure): Add script_info
1178
        parameter; adjust all callers.
1179
        (Parser_closure::script_info): New function.
1180
        (Parser_closure::script_info_): New data member.
1181
        (read_input_script): Report scripts earlier to incremental info.
1182
        (script_add_file): Set script_info in Input_argument.
1183
        (script_add_library): Likewise.
1184
        * script.h (Script_options::Script_info): Rewrite class.
1185
 
1186
2011-03-29  Cary Coutant  
1187
 
1188
        * archive.cc (Library_base::should_include_member): Move
1189
        method here from class Archive.
1190
        (Archive::Archive): Initialize base class.
1191
        (Archive::should_include_member): Move to base class.
1192
        (Archive::do_for_all_unused_symbols): New function.
1193
        (Add_archive_symbols::run): Remove redundant access to
1194
        incremental_inputs.
1195
        (Lib_group::Lib_group): Initialize base class.
1196
        (Lib_group::do_filename): New function.
1197
        (Lib_group::include_member): Pass pointer to Lib_group to
1198
        report_object.
1199
        (Lib_group::do_for_all_unused_symbols): New function.
1200
        (Add_lib_group_symbols::run): Report archive information for
1201
        incremental links.
1202
        * archive.h (class Library_base): New base class.
1203
        (class Archive): Derive from Library_base.
1204
        (Archive::filename): Move to base class.
1205
        (Archive::set_incremental_info): Likewise.
1206
        (Archive::incremental_info): Likewise.
1207
        (Archive::Should_include): Likewise.
1208
        (Archive::should_include_member): Likewise.
1209
        (Archive::Armap_entry): Remove.
1210
        (Archive::Unused_symbol_iterator): Remove.
1211
        (Archive::unused_symbols_begin): Remove.
1212
        (Archive::unused_symbols_end): Remove.
1213
        (Archive::do_filename): New function.
1214
        (Archive::do_get_mtime): New function.
1215
        (Archive::do_for_all_unused_symbols): New function.
1216
        (Archive::task_): Move to base class.
1217
        (Archive::incremental_info_): Likewise.
1218
        (class Lib_group): Derive from Library_base.
1219
        (Lib_group::do_filename): New function.
1220
        (Lib_group::do_get_mtime): New function.
1221
        (Lib_group::do_for_all_unused_symbols): New function.
1222
        (Lib_group::task_): Move to base class.
1223
        * dynobj.cc (Sized_dynobj::do_for_all_global_symbols): New
1224
        function.
1225
        * dynobj.h (Sized_dynobj::do_for_all_global_symbols): New
1226
        function.
1227
        * incremental.cc (Incremental_inputs::report_archive_begin):
1228
        Use Library_base; call library's get_mtime; add incremental inputs
1229
        entry before members.
1230
        (class Unused_symbol_visitor): New class.
1231
        (Incremental_inputs::report_archive_end): Use Library_base; use
1232
        visitor class to record unused symbols; don't add incremental inputs
1233
        entry after members.
1234
        (Incremental_inputs::report_object): Use Library_base.
1235
        * incremental.h
1236
        (Incremental_archive_entry::Incremental_archive_entry): Remove
1237
        unused Archive parameter.
1238
        (Incremental_inputs::report_archive_begin): Use Library_base.
1239
        (Incremental_inputs::report_archive_end): Likewise.
1240
        (Incremental_inputs::report_object): Likewise.
1241
        * object.cc (Sized_relobj::do_for_all_global_symbols): New
1242
        function.
1243
        * object.h (Object::for_all_global_symbols): New function.
1244
        (Object::do_for_all_global_symbols): New function.
1245
        (Sized_relobj::do_for_all_global_symbols): New function.
1246
        * plugin.cc (Sized_pluginobj::do_for_all_global_symbols):  New
1247
        function.
1248
        * plugin.h (Sized_pluginobj::do_for_all_global_symbols):  New
1249
        function.
1250
 
1251
2011-03-27  Ian Lance Taylor  
1252
 
1253
        * archive.cc (Archive::interpret_header): Return -1 if something
1254
        goes wrong.  Change callers accordingly.
1255
 
1256
2011-03-25  Cary Coutant  
1257
 
1258
        * testsuite/Makefile.am (final_layout.stdout): Use -n option with nm.
1259
        * testsuite/Makefile.in: Regenerate.
1260
 
1261
2010-03-23  Rafael Ávila de Espíndola 
1262
 
1263
        * plugin.cc (get_view): New.
1264
        (Plugin::load): Pass get_view to the plugin.
1265
        (Plugin_manager::get_view): New.
1266
 
1267
2011-03-21  Ian Lance Taylor  
1268
 
1269
        * testsuite/final_layout.sh: Rewrite to not use dc.
1270
        * testsuite/relro_test.sh: Fail if dc is not present.
1271
 
1272
2011-03-21  Sriraman Tallam  
1273
 
1274
        * testsuite/icf_safe_so_test.sh: Add #!/bin/sh to start.
1275
        Change == to -eq.
1276
        * testsuite/icf_string_merge_test.sh: Add #!/bin/sh to start.
1277
        * testsuite/icf_safe_test.sh: Add #!/bin/sh to start.
1278
        Change == to -eq.
1279
        * testsuite/icf_sht_rel_addend_test.sh: Add #!/bin/sh to start.
1280
        * testsuite/icf_preemptible_functions_test.sh: Add #!/bin/sh to start.
1281
 
1282
2011-03-14  Ian Lance Taylor  
1283
 
1284
        * script-sections.cc (Sort_output_sections::script_compare):
1285
        Rename from is_before, change return type.
1286
        (Sort_output_sections::operator()): Adjust accordingly.
1287
 
1288
2011-03-11  Jeffrey Yasskin  
1289
 
1290
        PR gold/12572
1291
        * testsuite/odr_violation2.cc: Add comment to make all error line
1292
        numbers double digits.
1293
        * testsuite/debug_msg.sh: Adjust expected errors.
1294
 
1295
2011-03-09  Jeffrey Yasskin  
1296
 
1297
        * dwarf_reader.cc (Sized_dwarf_line_info): Include all lines,
1298
        but mark earlier ones as non-canonical
1299
        (offset_to_iterator): Update search target and example
1300
        (do_addr2line): Return extra lines in a vector*
1301
        (format_file_lineno): Extract from do_addr2line
1302
        (one_addr2line): Add vector* out-param
1303
        * dwarf_reader.h (Offset_to_lineno_entry): New field recording
1304
        when a lineno entry appeared last for its instruction
1305
        (Dwarf_line_info): Add vector* out-param
1306
        * object.cc (Relocate_info): Pass NULL for the vector* out-param
1307
        * symtab.cc (Odr_violation_compare): Include the lineno in the
1308
        comparison again.
1309
        (linenos_from_loc): New. Combine the canonical line for an
1310
        address with its other lines.
1311
        (True_if_intersect): New. Helper functor to make
1312
        std::set_intersection a query.
1313
        (detect_odr_violations): Compare sets of lines instead of just
1314
        one line for each function. This became less deterministic, but
1315
        has fewer false positives.
1316
        * symtab.h: Declarations.
1317
        * testsuite/Makefile.am (odr_violation2.o): Compile with -O2 to
1318
        mix an optimized and non-optimized object in the same binary
1319
        (odr_violation2.so): Same.
1320
        * testsuite/Makefile.in: Regenerate from Makefile.am.
1321
        * testsuite/debug_msg.cc (main): Make OdrDerived classes.
1322
        * testsuite/debug_msg.sh: Update line numbers and add
1323
        assertions.
1324
        * testsuite/odr_violation1.cc: Use OdrDerived, in a
1325
        non-optimized context.
1326
        * testsuite/odr_violation2.cc: Make sure Ordering::operator()
1327
        isn't inlined, and use OdrDerived in an optimized context.
1328
        * testsuite/odr_header1.h: Defines OdrDerived, where
1329
        optimization will change the
1330
        first-instruction-in-the-destructor's file and line number.
1331
        * testsuite/odr_header2.h: Defines OdrBase.
1332
 
1333
2011-03-09  Ian Lance Taylor  
1334
 
1335
        * fileread.cc (File_read::clear_views): Don't delete the whole
1336
        file view.
1337
 
1338
2011-03-08  Ian Lance Taylor  
1339
 
1340
        PR gold/12525
1341
        * fileread.cc: #include .
1342
        (GOLD_IOV_MAX): Define.
1343
        (File_read::read_multiple): Limit number of entries by iov_max.
1344
        * fileread.h (class File_read): Always set max_readv_entries to
1345
        128.
1346
 
1347
2011-03-07  Ian Lance Taylor  
1348
 
1349
        PR gold/12525
1350
        * options.h (class General_options): Add -dy and -dn.
1351
 
1352
2011-03-02  Cary Coutant  
1353
 
1354
        * testsuite/script_test_9.t: Add TLS segment.
1355
 
1356
2011-03-02  Simon Baldwin  
1357
 
1358
        * configure.ac: Add check for gnu_indirect_function support in
1359
        the toolchain building binutils.
1360
        * configure: Rebuild.
1361
 
1362
2010-02-18  Rafael Ávila de Espíndola 
1363
 
1364
        * symtab.cc (Symbol::should_add_dynsym_entry) Return false for
1365
        plugin only symbols.
1366
        (Symbol_table::sized_finalize_symbol) Mark symbol only present
1367
        in plugin files as not needed in the symbol table.
1368
 
1369
2011-02-11  Sriraman Tallam  
1370
 
1371
        * output.cc (Output_section::add_input_section): Delay fill
1372
        generation for section ordering.
1373
 
1374
2011-02-09  Ian Lance Taylor  
1375
 
1376
        PR gold/12316
1377
        * object.h (class Sized_relobj): Remove clear_local_symbols.
1378
        * reloc.cc (Sized_relobj::do_relocate): Don't call
1379
        clear_local_symbols.
1380
 
1381
2010-02-08  Rafael Ávila de Espíndola 
1382
 
1383
        * plugin.cc (is_visible_from_outside): Return true for symbols
1384
        in the -u option.
1385
 
1386
2011-02-04  Jeffrey Yasskin  
1387
 
1388
        * symtab.cc (Odr_violation_compare::operator()): Sort by just the
1389
        filename.
1390
 
1391
2011-02-02  Sriraman Tallam  
1392
 
1393
        * icf.h (is_section_foldable_candidate): Change type of parameter
1394
        to std::string.
1395
        * icf.cc (Icf::find_identical_sections): Change type of local variable
1396
        section_name to be std::string.
1397
        (is_function_ctor_or_dtor): Change type of parameter to std::string.
1398
 
1399
2011-01-25  Ian Lance Taylor  
1400
 
1401
        * script.cc (script_add_extern): Rewrite to use
1402
        add_symbol_reference.
1403
 
1404
2011-01-25  Doug Kwan  
1405
 
1406
        * icf.cc (get_section_contents): Always lock section's object.
1407
 
1408
2011-01-24  Ian Lance Taylor  
1409
 
1410
        * options.h (class General_options): Accept
1411
        --no-detect-odr-violations.
1412
 
1413
2011-01-24  Ian Lance Taylor  
1414
 
1415
        * version.cc (version_string): Bump to 1.11.
1416
 
1417
2011-01-24  Ian Lance Taylor  
1418
 
1419
        * plugin.cc (class Plugin_rescan): Define new class.
1420
        (Plugin_manager::claim_file): Set any_claimed_.
1421
        (Plugin_manager::save_archive): New function.
1422
        (Plugin_manager::save_input_group): New function.
1423
        (Plugin_manager::all_symbols_read): Create Plugin_rescan task if
1424
        necessary.
1425
        (Plugin_manager::new_undefined_symbol): New function.
1426
        (Plugin_manager::rescan): New function.
1427
        (Plugin_manager::rescannable_defines): New function.
1428
        (Plugin_manager::add_input_file): Set any_added_.
1429
        * plugin.h (class Plugin_manager): define new fields rescannable_,
1430
        undefined_symbols_, any_claimed_, and any_added_.  Declare
1431
        Plugin_rescan as friend.  Declare new functions.
1432
        (Plugin_manager::Rescannable): Define type.
1433
        (Plugin_manager::Rescannable_list): Define type.
1434
        (Plugin_manager::Undefined_symbol_list): Define type.
1435
        (Plugin_manager::Plugin_manager): Initialize new fields.
1436
        * archive.cc (Archive::defines_symbol): New function.
1437
        (Add_archive_symbols::run): Pass archive to plugins if any.
1438
        * archive.h (class Archive): Declare defines_symbol.
1439
        * readsyms.cc (Input_group::~Input_group): New function.
1440
        (Finish_group::run): Pass input_group to plugins if any.
1441
        * readsyms.h (class Input_group): Declare destructor.
1442
        * symtab.cc (add_from_object): Pass undefined symbol to plugins if
1443
        any.
1444
 
1445
2011-01-10  Ian Lance Taylor  
1446
 
1447
        * layout.cc (Layout::layout_eh_frame): Mark a writable .eh_frame
1448
        section as relro.
1449
        (Layout::set_segment_offsets): Reset increase_relro before calling
1450
        set_section_addresses a second time.
1451
 
1452
2011-01-04  Cary Coutant  
1453
 
1454
        * script-sections.cc (Sort_output_sections::operator()): Sort TLS
1455
        sections before NOBITS sections.
1456
 
1457
2011-01-01  H.J. Lu  
1458
 
1459
        * version.cc (print_version): Update copyright to 2011.
1460
 
1461
2010-12-23  Cary Coutant  
1462
 
1463
        * output.h (Output_data_reloc::add_output_section): Pass OD instead
1464
        of OS to this->add.  Add OD parameter to second form of the function.
1465
 
1466
2010-12-20  Ian Lance Taylor  
1467
 
1468
        * dwarf_reader.cc (Sized_dwarf_line_info::read_lines): Only keep
1469
        second of two consecutive entries with same offset.
1470
 
1471
2010-12-16  Ralf Wildenhues  
1472
 
1473
        * testsuite/Makefile.am (ifuncmain2static_LDADD)
1474
        (ifuncmain2_LDADD, ifuncmain4static_LDADD, ifuncmain4_LDADD)
1475
        (ifuncmain7static_LDADD, ifuncmain7_LDADD): New empty variables,
1476
        to avoid unneeded links against $(LDADD).
1477
        * testsuite/Makefile.in: Regenerate.
1478
 
1479
2010-12-15  Ian Lance Taylor  
1480
 
1481
        PR gold/12324
1482
        * x86_64.cc (Target_x86_64::Scan::check_non_pic): Give an error
1483
        for R_X86_64_32 and R_X86_64_PC32.
1484
        * testsuite/Makefile.am (ver_matching_def.so): Depend on and use
1485
        ver_matching_def_pic.o.
1486
        (ver_matching_def_pic.o): New target.
1487
 
1488
2010-12-14  Ralf Wildenhues  
1489
 
1490
        * fileread.cc (file_counts_lock, file_counts_initialize_lock)
1491
        (total_mapped_bytes, current_mapped_bytes, maximum_mapped_bytes):
1492
        Move definition before File_read::View member definitions.
1493
        (File_read::View::~View): Initialize and hold lock before
1494
        updating current_mapped_bytes.
1495
 
1496
2010-12-14  Ralf Wildenhues  
1497
 
1498
        * dwarf_reader.cc: Remove outdated comment.
1499
        * gold-threads.cc: Fix typo in error message.
1500
        * archive.cc: Fix typos in comments.
1501
        * archive.h: Likewise.
1502
        * arm-reloc-property.cc: Likewise.
1503
        * arm-reloc-property.h: Likewise.
1504
        * arm-reloc.def: Likewise.
1505
        * arm.cc: Likewise.
1506
        * attributes.h: Likewise.
1507
        * cref.cc: Likewise.
1508
        * ehframe.cc: Likewise.
1509
        * fileread.h: Likewise.
1510
        * gold.h: Likewise.
1511
        * i386.cc: Likewise.
1512
        * icf.cc: Likewise.
1513
        * incremental.h: Likewise.
1514
        * int_encoding.cc: Likewise.
1515
        * layout.h: Likewise.
1516
        * main.cc: Likewise.
1517
        * merge.h: Likewise.
1518
        * object.cc: Likewise.
1519
        * object.h: Likewise.
1520
        * options.cc: Likewise.
1521
        * readsyms.cc: Likewise.
1522
        * reduced_debug_output.cc: Likewise.
1523
        * reloc.cc: Likewise.
1524
        * script-sections.cc: Likewise.
1525
        * sparc.cc: Likewise.
1526
        * symtab.h: Likewise.
1527
        * target-reloc.h: Likewise.
1528
        * target.cc: Likewise.
1529
        * target.h: Likewise.
1530
        * timer.cc: Likewise.
1531
        * timer.h: Likewise.
1532
        * x86_64.cc: Likewise.
1533
 
1534
2010-12-09  Cary Coutant  
1535
 
1536
        * layout.cc (Layout::layout_gnu_stack): Add warnings for executable
1537
        stack.
1538
        * layout.h (Layout::layout_gnu_stack): Add pointer to Object
1539
        parameter; change all callers.
1540
        * object.cc (Sized_relobj::do_layout): Adjust call to layout_gnu_stack.
1541
        * options.h (warn_execstack): New option.
1542
 
1543
2010-12-07  Doug Kwan  
1544
 
1545
        * arm.cc (Target_arm::Scan::get_reference_flags): Treat R_ARM_PREL31
1546
        like function call relocations.
1547
 
1548
2010-12-07  Ian Lance Taylor  
1549
 
1550
        * archive.cc (Archive::get_elf_object_for_member): Permit
1551
        punconfigured to be NULL.
1552
        (Archive::read_symbols): Pass NULL to get_elf_object_for_member.
1553
        (Archive::include_member): Pass NULL to get_elf_object_for_member
1554
        if we searched for the archive and this is the first included
1555
        object.
1556
 
1557
2010-12-01  Ian Lance Taylor  
1558
 
1559
        * dwarf_reader.h (class Sized_dwarf_line_info): Add
1560
        track_relocs_type_ field.
1561
        * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
1562
        Set track_relocs_type_.
1563
        (Sized_dwarf_line_info::process_one_opcode): Ignore the section
1564
        contents when using RELA relocs.
1565
        (Sized_dwarf_line_info::read_relocs): Add the reloc addend to
1566
        reloc_map_.
1567
        * reloc.cc (Track_relocs::next_addend): New function.
1568
        * reloc.h (class Track_relocs): Declare next_addend.
1569
 
1570
2010-12-01  Ian Lance Taylor  
1571
 
1572
        * testsuite/icf_virtual_function_folding_test.cc (class Bar): Add
1573
        virtual destructor.
1574
 
1575
2010-12-01  Ian Lance Taylor  
1576
 
1577
        * README: Update compilers known to work and fail.
1578
 
1579
2010-11-23  Matthias Klose  
1580
 
1581
        * configure.in: For --enable-gold, handle value `default' instead of
1582
        `both*'.  Always install ld as ld.bfd, install as ld if gold is
1583
        not the default.
1584
        * configure: Regenerate.
1585
 
1586
2010-11-18  Doug Kwan  
1587
 
1588
        * expression.cc (BINARY_EXPRESSION): Initialize left_alignment
1589
        and right_alignment to be zero.  Store result alignment only if it is
1590
        greater than existing alignment.
1591
 
1592
2010-11-16  Cary Coutant  
1593
 
1594
        PR gold/12220
1595
        * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
1596
        Check for ".zdebug_line".
1597
 
1598
2010-11-16  Doug Kwan  
1599
            Cary Coutant  
1600
 
1601
        * output.h (Output_segment::set_section_addresses): Pass increase_relro
1602
        by reference; adjust all callers.
1603
        * output.cc (Output_segment::set_section_addresses): Adjust references
1604
        to increase_relro. Add padding to *increase_relro when ORDER_RELRO_LAST
1605
        list is empty.
1606
        (Output_segment::set_offset): Assert if PT_GNU_RELRO segment does not
1607
        end at page boundary.
1608
 
1609
2010-11-16  Cary Coutant  
1610
 
1611
        PR gold/12220
1612
        * layout.cc (Layout::choose_output_section): Transform names of
1613
        compressed sections even when using a script with a SECTIONS clause.
1614
        (Layout::output_section_name): Remove code to transform
1615
        compressed debug section names.
1616
        * output.cc (Output_section::add_input_section): Use uncompressed
1617
        section size when tracking input sections.
1618
 
1619
2010-11-11  Richard Sandiford  
1620
 
1621
        * symtab.h (Symbol::NON_PIC_REF): Remove.
1622
        (Symbol::RELATIVE_REF, Symbol::TLS_REF): New Reference_flags.
1623
        (Symbol::FUNCTION_CALL): Renumber.  Reword comment.
1624
        (Symbol::needs_dynamic_reloc): Don't check NON_PIC_REF.
1625
        (Symbol::use_plt_offset): Take a flags argument and pass it
1626
        directly to needs_dynamic_reloc.  Restrict check for undefined
1627
        weak symbols to function calls.
1628
        * arm.cc (Target_arm::Scan::get_reference_flags): New function.
1629
        (Target_arm::Scan::global): Use it.
1630
        (Target_arm::Scan::scan_reloc_for_stub): Likewise.
1631
        (Target_arm::Relocate::relocate): Likewise.
1632
        (Target_arm::Relocate::should_apply_static_reloc): Replace flags
1633
        parameter with an r_type parameter.  Use get_reference_flags
1634
        to get the flags.
1635
        (Target_arm::Relocate::relocate): Update accordingly.
1636
        * i386.cc (Target_i386::Scan::get_reference_flags): New function.
1637
        (Target_i386::Scan::reloc_needs_plt_for_ifunc): Use it.
1638
        (Target_i386::Scan::global): Likewise.
1639
        (Target_i386::Relocate::relocate): Likewise.
1640
        (Target_i386::Relocate::should_apply_static_reloc): Replace flags
1641
        parameter with an r_type parameter.  Use get_reference_flags
1642
        to get the flags.
1643
        (Target_i386::Relocate::relocate): Update accordingly.
1644
        * powerpc.cc (Target_powerpc::Scan::get_reference_flags): New function.
1645
        (Target_powerpc::Scan::global): Use it.
1646
        (Target_powerpc::Scan::scan_reloc_for_stub): Likewise.
1647
        (Target_powerpc::Relocate::relocate): Likewise.
1648
        * sparc.cc (Target_sparc::Scan::get_reference_flags): New function.
1649
        (Target_sparc::Scan::global): Use it.
1650
        (Target_sparc::Scan::scan_reloc_for_stub): Likewise.
1651
        (Target_sparc::Relocate::relocate): Likewise.
1652
        * x86_64.cc (Target_x86_64::Scan::get_reference_flags): New function.
1653
        (Target_x86_64::Scan::reloc_needs_plt_for_ifunc): Use it.
1654
        (Target_x86_64::Scan::global): Likewise.
1655
        (Target_x86_64::Relocate::relocate): Likewise.
1656
 
1657
2010-11-08  Doug Kwan  
1658
            Cary Coutant  
1659
 
1660
        * arm.cc (Arm_exidx_merge_section::build_contents): New method.
1661
        (Arm_exidx_merge_section::section_contents_): New data member.
1662
        (Arm_input_section::Arm_input_section): Initialize original_contents_.
1663
        (Arm_input_section::~Arm_input_section): De-allocate memory.
1664
        (Arm_input_section::original_contents_): New data member.
1665
        (Arm_exidx_fixup::process_exidx_section): Pass EXIDX section contents
1666
        in parameters instead of calling Object::section_contents without
1667
        locking.
1668
        (Arm_output_section::group_section): New parameter TASK.  Pass it
1669
        to callees that need locking objects.
1670
        (Arm_output_section::fix_exidx_coverage): New parameter TASK.  Use it
1671
        to lock EXIDX input sections.  Fix a formatting issue.  Call
1672
        Arm_exidx_merged_section::build_contents to create merged section
1673
        contents.
1674
        (Arm_output_section::create_stub_group): New parameter TASK.  Use it
1675
        to lock object of stub table owner.
1676
        (Arm_exidx_input_section::Arm_exidx_input_section): Add new parameter
1677
        TEXT_SIZE to initialize data member TEXT_SIZE_.
1678
        (Arm_exidx_input_section::addralign): Fix typo in comment.
1679
        (Arm_exidx_input_section::text_size): New method.
1680
        (Target_arm::do_relax): New parameter TASK.  Pass it to callees
1681
        that require locking objects.  Lock objects before scanning for stubs
1682
        and updating local symbols.
1683
        (Arm_input_section::init): Copy contents of original
1684
        input section.
1685
        (Arm_input_section::do_write): Use saved contents of
1686
        original input section instead of calling Object::section_contents
1687
        without locking.
1688
        (Arm_exidx_cantunwind::do_fixed_endian_write): Find out text section
1689
        size without calling Object::section_size().
1690
        (Arm_exidx_merged_section::Arm_exidx_merged_section): Add sanity check
1691
        for size.  Allocate a buffer for merged EXIDX entries.
1692
        (Arm_exidx_merged_section::build_contents): New method.
1693
        (Arm_exidx_merged_section::do_write): Move merge section contents
1694
        building code to Arm_exidx_merged_section::build_contetns.  Write
1695
        out contetns in buffer instead of building it on the fly.
1696
        (Arm_relobj::make_exidx_input_section): Also pass text section size
1697
        to Arm_exidx_input_section constructor.
1698
        (Arm_relobj::do_read_symbols): Fix memory leak.  Fix a formatting issue.
1699
        (Arm_dynobj::do_read_symbols): Fix memory leak.
1700
        * layout.cc (Layout::finalize): Pass TASK to Target::relax().
1701
        * target.h: (class Task): Add forward declaration.
1702
        (Target::relax): Add new parameter TASK and pass it to
1703
        Target::do_relax().
1704
        (Target::do_relax):: New parameter TASK.  Fix a formatting issue.
1705
 
1706
2010-11-05  Cary Coutant  
1707
 
1708
        PR gold/10708
1709
        * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Hold a lock on the
1710
        object when reading from the file.
1711
        * gold.cc (queue_middle_tasks): Hold a lock on the object when doing
1712
        second layout pass.
1713
        * icf.cc (preprocess_for_unique_sections): Hold a lock on the object
1714
        when reading section contents.
1715
        (get_section_contents): Likewise.
1716
        (icf::find_identical_sections): Likewise.
1717
        * mapfile.cc (Mapfile::print_discarded_sections): Hold a lock on the
1718
        object when reading from the file.
1719
        * plugin.cc (Plugin_manager::layout_deferred_objects): Hold a lock on
1720
        the object when doing deferred section layout.
1721
 
1722
2010-11-03  Nick Clifton  
1723
 
1724
        PR gold/12001
1725
        * script.h (class Symbol_assignment: name): New member.  Returns
1726
        the name of the symbol.
1727
        * scrfipt.cc (Script_options::is_pending_assignment): New member.
1728
        Returns true if the given symbol name is on the list of
1729
        assignments wating to be processed.
1730
        * archive.cc (should_incldue_member): If the symbol is undefined,
1731
        check to see if it is on the list of symbols pending assignment.
1732
 
1733
2010-11-03  Ryan Mansfield  
1734
 
1735
        * script-sections.cc (Script_sections::find_memory_region): Check
1736
        for a NULL output section pointer.
1737
 
1738
2010-10-29  Doug Kwan  
1739
 
1740
        * arm.cc (Arm_outout_section::fix_exidx_coverage): Adjust call to
1741
        Output_section::add_relaxed_input_section.
1742
        * output.cc (Output_section::add_relaxed_input_section): Add new
1743
        arguments LAYOUT and NAME.  Set section order index.
1744
        (Output_section::convert_input_sections_in_list_to_relaxed_sections):
1745
        Copy section order index.
1746
        * output.h (Output_section::add_relaxed_input_section): Add new
1747
        arguments LAYOUT and NAME.
1748
 
1749
2010-10-29  Viktor Kutuzov  
1750
 
1751
        * testsuite/Makefile.am: Move gcctestdir/ld rule to
1752
        NATIVE_OR_CROSS_LINKER.
1753
        * testsuite/Makefile.in: Regenerate.
1754
 
1755
2010-10-20  Doug Kwan  
1756
 
1757
        * arm.cc (Arm_relobj::do_read_symbols): Warn about ARM EXIDX sections
1758
        without SHF_LINK_ORDER flags.
1759
        * layout.cc (Layout::choose_output_section): Do not filter
1760
        SHF_LINK_ORDER flag in a relocatable link.
1761
 
1762
2010-10-17  Cary Coutant  
1763
 
1764
        * output.h (Output_segment::set_section_addresses): Change function
1765
        signature.  Update all callers.
1766
        * output.cc (Output_segment::is_first_section_relro): Ignore TLS
1767
        sections.
1768
        (Output_segment::set_section_addresses): Align after last TLS
1769
        section.  Add padding before last relro section instead of after.
1770
 
1771
2010-10-17  Doug Kwan  
1772
 
1773
        * gold/arm.cc (Target_arm::got_section): Use correct order and set
1774
        GOT output section to be writable.
1775
 
1776
2010-10-14  Cary Coutant  
1777
 
1778
        * debug.h (DEBUG_INCREMENTAL): New flag.
1779
        (debug_string_to_enum): Add DEBUG_INCREMENTAL).
1780
        * gold.cc (queue_initial_tasks): Check parameters for incremental link
1781
        mode.
1782
        * incremental.cc (report_command_line): Ignore all forms of
1783
        --incremental.
1784
        * layout.cc (Layout::Layout): Check parameters for incremental link
1785
        mode.
1786
        * options.cc (General_options::parse_incremental): New function.
1787
        (General_options::parse_no_incremental): New function.
1788
        (General_options::parse_incremental_full): New function.
1789
        (General_options::parse_incremental_update): New function.
1790
        (General_options::incremental_mode_): New data member.
1791
        (General_options::finalize): Check incremental_mode_.
1792
        * options.h (General_options): Update help text for --incremental.
1793
        Add --no-incremental, --incremental-full, --incremental-update.
1794
        (General_options::Incremental_mode): New enum type.
1795
        (General_options::incremental_mode): New function.
1796
        (General_options::incremental_mode_): New data member.
1797
        * parameters.cc (Parameters::incremental_mode_): New data member.
1798
        (Parameters::set_options): Set incremental_mode_.
1799
        (Parameters::set_incremental_full): New function.
1800
        (Parameters::incremental): New function.
1801
        (Parameters::incremental_update): New function.
1802
        (set_parameters_incremental_full): New function.
1803
        * parameters.h (Parameters::set_incremental_full): New function.
1804
        (Parameters::incremental): New function.
1805
        (Parameters::incremental_update): New function.
1806
        (Parameters::incremental_mode_): New data member.
1807
        (set_parameters_incremental_full): New function.
1808
        * plugin.cc (Plugin_manager::add_input_file): Check parameters for
1809
        incremental link mode.
1810
        * reloc.cc (Sized_relobj::do_read_relocs): Likewise.
1811
        (Sized_relobj::do_relocate_sections): Likewise.
1812
        * testsuite/Makefile.am (incremental_test): Use --incremental-full
1813
        option.
1814
        * testsuite/Makefile.in: Regenerate.
1815
        * testsuite/incremental_test.sh: Filter all forms of --incremental.
1816
 
1817
2010-10-12  Viktor Kutuzov  
1818
 
1819
        * script-sections.h (class Script_sections): Make
1820
        Sections_elements typedef public.
1821
        * script-sections.cc (class Sort_output_sections): Add elements_
1822
        field.  Add constructor which sets it; change all callers.
1823
        (Sort_output_sections::is_before): New function.
1824
        (Sort_output_sections::operator()): Call is_before.
1825
        * configure.ac (NATIVE_OR_CROSS_LINKER): New automake
1826
        conditional.
1827
        * testsuite/script_test_10.sh: New test. Test script section
1828
        order.
1829
        * testsuite/script_test_10.t: Likewise.
1830
        * testsuite/script_test_10.s: Likewise.
1831
        * testsuite/Makefile.am: Wrap the cross linker tests and the
1832
        common tests into NATIVE_OR_CROSS_LINKER.
1833
        (check_SCRIPTS): Add script_test_10.sh.
1834
        (check_DATA): Add script_test_10.stdout.
1835
        (script_test_10.o, script_test_10): New targets.
1836
        (script_test_10.stdout): New target.
1837
        * configure, testsuite/Makefile.in: Regenerate.
1838
 
1839
2010-10-12  Viktor Kutuzov  
1840
 
1841
        * arm.cc (Target_arm::Scan::local): Report the unsupported reloc
1842
        error for the deprecated relocations.
1843
        (Target_arm::Scan::global): Likewise.
1844
        (Target_arm::Relocate::relocate): Likewise.
1845
 
1846
2010-10-12  Richard Sandiford  
1847
 
1848
        * fileread.cc (Input_file::find_file): Initialize *found_name
1849
        and *namep when using the fallback search for case 4.
1850
 
1851
2010-10-11  Cary Coutant  
1852
 
1853
        * options.h (class General_options): Redefine -z lazy as an alias for
1854
        the negation of -z now.
1855
 
1856
2010-10-11  Ian Lance Taylor  
1857
 
1858
        * resolve.cc (symbol_to_bits): Report the value of the unsupported
1859
        binding.
1860
 
1861
2010-10-06  Nick Clifton  
1862
 
1863
        * script-sections.cc(class Memory_region): Remove
1864
        current_lma_offset_ field.  Rename current_vma_offset_ to
1865
        current_offset_.  Add last_section_ field.
1866
        (Memory_region::get_current_vma_address): Rename to
1867
        get_current_address.
1868
        (Memory_region::get_current_lma_address): Delete.
1869
        (Memory_region::increment_vma_offset): Rename to
1870
        increment_offset.
1871
        (Memory_region::increment_lma_offset): Delete.
1872
        (Memory_region::attributes_compatible): New method.  Returns
1873
        true if the provided section is compatible with the region.
1874
        (Memory_region::get_last_section): New method.  Returns the last
1875
        section to use the region.
1876
        (Memory_region::set_last_section): New method.  Stores the last
1877
        section to use the region.
1878
        (Script_sections::block_in_region): New method.  Returns true if
1879
        a block of memory is contained within a region.
1880
        (Script_sections::find_memory_region): New method.  Locates a
1881
        memory region to be used to set a VMA or LMA address.
1882
        (Output_section_definition::set_section_addresses): Add code to
1883
        check for addresses set by memory regions.
1884
        (Output_segment::set_section_addresses): Remove memory region
1885
        walking code.
1886
        (Script_sections::create_segment): Add a warning if a header
1887
        segment is created outside of any region.
1888
        * script-sections.h (class Script_sections): Add prototypes for
1889
        find_memory_region and block_in_region methods.
1890
        * testsuite/memory_test.s: Use .long instead of .word.
1891
        * testsuite/memory_test.t: Add some more output sections.
1892
        * testsuite/memory_test.sh: Update expected output.
1893
 
1894
2010-10-02  Doug Kwan  
1895
 
1896
        * symtab.cc (Symbol_table::Symbol_table_hash::operator()): Move
1897
        defintion to symtab.h
1898
        * symtab.h (Symbol_table::Symbol_table_hash::operator()): Change
1899
        declaration to defintion.
1900
 
1901
2010-10-01  Nick Clifton  
1902
 
1903
        * expression.cc (eval): Replace dummy argument with NULL.
1904
        (eval_maybe_dot): Check for a NULL result section pointer.
1905
        (Symbol_expression::value): Likewise.
1906
        (Dot_expression::value): Likewise.
1907
        (BINARY_EXPRESSION): Likewise.
1908
        (Max_expression::value): Likewise.
1909
        (Min_expression::value): Likewise.
1910
        (Absolute_expression::value): Likewise.
1911
        (Addr_expression::value_from_output_section): Likewise.
1912
        (Loaddddr_expression::value_from_output_section): Likewise.
1913
        (Segment_start_expression::value): Likewise.
1914
        * script-sections.cc
1915
        (Sections_elememt_dot_assignment::finalize_symbols): Replace dummy
1916
        argument with NULL.
1917
        (Sections_elememt_dot_assignment::set_section_addresses):
1918
        Likewise.
1919
        (Output_data_expression::do_write_to_buffer): Likewise.
1920
        (Output_section_definition::finalize_symbols): Likewise.
1921
        (Output_section_definition::set_section_addresses): Likewise.
1922
 
1923
2010-09-30  Doug Kwan  
1924
 
1925
        * gold/testsuite/arm_branch_out_of_range.sh: Fix broken tests.
1926
 
1927
2010-09-28  Sriraman Tallam  
1928
 
1929
        * target.h (Target::can_icf_inline_merge_sections): New virtual
1930
        function.
1931
        * x86_64.cc (Target__x86_64::can_icf_inline_merge_sections): New
1932
        virtual function.
1933
        * i386.cc (Target_i386::can_icf_inline_merge_sections): New
1934
        virtual function.
1935
        * icf.cc (get_section_contents): Inline merge sections only when
1936
        target allows it.
1937
 
1938
2010-09-27  Ralf Wildenhues  
1939
 
1940
        * configure: Regenerate.
1941
 
1942
2010-09-17  Ian Lance Taylor  
1943
 
1944
        * testsuite/memory_test.sh: Adjust for change of 2010-09-10.
1945
        * testsuite/Makefile.am (memory_test.o): New target.
1946
        (memory_test): Depend on memory_test.o, gcctestdir/ld, and
1947
        memory_test.t.
1948
        * testsuite/Makefile.in: Rebuild.
1949
 
1950
2010-09-17  Doug Kwan  
1951
 
1952
        * arm.cc (Target_arm::Relocate::relocate): Ignore symbol type and
1953
        defintion if relocation uses GOT entries of the symbol.
1954
        * testsuite/icf_safe_test.sh: Fix test.
1955
        * testsuite/icf_safe_so_test.sh: Fix test.
1956
 
1957
2010-09-16  Cary Coutant  
1958
 
1959
        * script_sections.cc (class Memory_region): Remove "NULL" from
1960
        vector initializations.
1961
 
1962
2010-09-15  Cary Coutant  
1963
 
1964
        * incremental.cc (Output_section_incremental_inputs::write_info_blocks):
1965
        Resolve forwarding symbols.
1966
 
1967
2010-09-15  Doug Kwan  
1968
 
1969
        * gold/testsuite/script_test_3.t: Add ARM special sections.
1970
        * gold/testsuite/script_test_4.t: Same.
1971
        * gold/testsuite/script_test_5.t: Same.
1972
        * gold/testsuite/script_test_6.t: Same.
1973
        * gold/testsuite/script_test_7.t: Same.
1974
        * gold/testsuite/script_test_7.t: Same.
1975
        * gold/testsuite/thumb_blx_out_of_range.s: Fix instruction alignment.
1976
 
1977
2010-09-14  Cary Coutant  
1978
 
1979
        * x86_64.cc (Target_x86_64::saw_tls_block_reloc_): Remove member.
1980
        (Target_x86_64::Relocate::relocate_tls): Replace check for
1981
        saw_tls_block_reloc_ with test for executable section.
1982
 
1983
2010-09-12  Cary Coutant  
1984
 
1985
        * symtab.h (Symbol::needs_dynamic_reloc): Non-PIC calls from
1986
        position-independent executables to shared libraries need dynamic
1987
        relocations.
1988
        (Symbol::may_need_copy_reloc): Do not generate COPY relocs in
1989
        position-independent executables.
1990
        * testsuite/Makefile.am (two_file_mixed_pie_test): New test.
1991
        * testsuite/Makefile.in: Regenerate.
1992
 
1993
2010-09-10  Nick Clifton  
1994
 
1995
        PR gold/11997
1996
        * testsuite/memory_test.t: Discard any sections that are not
1997
        needed.
1998
 
1999
2010-09-09  H.J. Lu  
2000
 
2001
        PR gold/11996
2002
        * object.cc (Sized_relobj::do_finalize_local_symbols): Remove
2003
        "This::" to work around a bug in gcc 4.2.
2004
 
2005
        * testsuite/ifuncmain7.c (foo_ifunc): Add __attribute__ ((used)).
2006
 
2007
2010-09-09  Rafael Espindola  
2008
 
2009
        * layout.cc (Layout::attach_allocated_section_to_segment): Don't put
2010
        sections with different PF_X flags in the same segment.
2011
        (Layout::find_first_load_seg): Search all segments to find the first
2012
        one.
2013
        * options.h (rosegment): New.
2014
 
2015
2010-09-08  Rafael Espindola  
2016
 
2017
        * layout.cc (Layout::set_segment_offsets): Always advance to a new page.
2018
 
2019
2010-09-08  Doug Kwan  
2020
 
2021
        * arm.cc (Arm_exidx_cantunwind::do_print_to_mapfile): New method.
2022
        (Arm_relobj::do_relocate_sections): Add new parameter for output
2023
        file to match the parent.
2024
        (Target_arm::scan_reloc_section_for_stubs): Use would-be final values
2025
        of local symbols instead of input values.  Update code to track
2026
        changes in gold::relocate_section.
2027
        * object.cc (Sized_relobj::compute_final_local_value): New methods.
2028
        (Sized_relobj::compute_final_local_value_internal): New methods.
2029
        (Sized_relobj::do_finalize_local_symbols): Move code from loop
2030
        body into private version of Sized_relobj::compute_final_local_value.
2031
        Call the inline method.
2032
        * object.h (Symbol_value::Symbol_value): Define destructor.  Free
2033
        merged symbol value if there is one.
2034
        (Symbol_value::has_output_value): New method defintiion.
2035
        (Sized_relobj::Compute_final_local_value_status): New enum type.
2036
        (Sized_relobj::compute_final_local_value): New methods.
2037
        (Sized_relobj::compute_final_local_value_internal): New methods.
2038
        * Makefile.am (check_SCRIPTS): Add arm_branch_out_of_range.sh
2039
        and arm_cortex_a8.sh.
2040
        (thumb_bl_out_of_range_local, arm_cortex_a8_b_cond, arm_cortex_a8_bl,
2041
        arm_cortex_a8_blx, arm_cortex_a8_local, arm_corte_a8_local_reloc):
2042
        New tests.
2043
        * Makefile.in: Regenerate.
2044
        * testsuite/arm_bl_out_of_range.s: Update test.
2045
        * testsuite/thumb_bl_out_of_range.s: Ditto.
2046
        * testsuite/thumb_blx_out_of_range.s: Ditto.
2047
        * testsuite/arm_branch_out_of_range.sh: New file.
2048
        * testsuite/arm_cortex_a8.sh: Ditto.
2049
        * testsuite/arm_cortex_a8_b.s: Ditto.
2050
        * testsuite/arm_cortex_a8_b_cond.s: Ditto.
2051
        * testsuite/arm_cortex_a8_b_local.s: Ditto.
2052
        * testsuite/arm_cortex_a8_bl.s: Ditto.
2053
        * testsuite/arm_cortex_a8_blx.s: Ditto.
2054
        * testsuite/arm_cortex_a8_local.s: Ditto.
2055
        * testsuite/arm_cortex_a8_local_reloc.s: Ditto.
2056
        * testsuite/thumb_bl_out_of_range_local.s: Ditto.
2057
 
2058
2010-09-08  Rafael Espindola  
2059
 
2060
        * Makefile.am (memory_test.stdout): Run readelf with -W.
2061
        * Makefile.in: Regenerate.
2062
        * testsuite/memory_test.sh: Make the regexps accept both 32 and
2063
        64 bit output.
2064
 
2065
2010-09-08  Rafael Espindola  
2066
 
2067
        * script-sections.cc (Script_sections::add_memory_region): Convert
2068
        field precision to int.
2069
        * script.cc (script_set_section_region, script_set_section_region):
2070
        Convert field precision to int.
2071
 
2072
2010-09-08  Rafael Espindola  
2073
 
2074
        * arm.cc (do_finalize_sections): Create the __exidx_start and
2075
        __exdix_end symbols even when the section is missing.
2076
 
2077
2010-09-08  Nick Clifton  
2078
 
2079
        * README: Remove claim that MEMORY is not supported.
2080
        * expression.cc (script_exp_function_origin)
2081
        (script_exp_function_length): Move from here to ...
2082
        * script.cc: ... here.
2083
        (script_set_section_region, script_add_memory)
2084
        (script_parse_memory_attr, script_include_directive): New
2085
        functions.
2086
        * script-sections.cc
2087
        (class Memory_region): New class.
2088
        (class Output_section_definition): Add set_memory_region,
2089
        set_section_vma, set_section_lma and get_section_name methods.
2090
        (class Script_Sections): Add add_memory_region,
2091
        find_memory_region, find_memory_region_origin,
2092
        find_memory_region_length and set_memory_region methods.
2093
        Have set_section_addresses method walk the list of set memory
2094
        regions.
2095
        Extend the print methos to display memory regions.
2096
        * script-sections.h: Add prototypes for new methods.
2097
        Add enum for MEMORY region attributes.
2098
        * yyscript.y: Add support for parsing MEMORY regions.
2099
        * script-c.h: Add prototypes for new functions.
2100
        * testsuite/Makefile.am: Add test of MEMORY region functionality.
2101
        * testsuite/Makefile.in: Regenerate.
2102
        * testsuite/memory_test.sh: New script.
2103
        * testsuite/memory_test.s: New assembler source file.
2104
        * testsuite/memory_test.t: New linker script.
2105
 
2106
2010-08-27  Doug Kwan  
2107
 
2108
        * gold/resolve.cc (Symbol_table::should_override): Let a weak
2109
        reference override an existing dynamic weak reference.
2110
        * testsuite/Makefile.am: Add new test dyn_weak_ref.
2111
        * testsuite/Makefile.in: Regenerate.
2112
        * testsuite/dyn_weak_ref.sh: New file.
2113
        * testsuite/dyn_weak_ref_1.c: Ditto.
2114
        * testsuite/dyn_weak_ref_2.c: Ditto.
2115
 
2116
2010-08-27  Ian Lance Taylor  
2117
 
2118
        * incremental.h (class Incremental_input_entry): Add virtual
2119
        destructor.
2120
 
2121
2010-08-27  Ian Lance Taylor  
2122
 
2123
        * testsuite/start_lib_test_3.c: Mark t3 as used.
2124
 
2125
2010-08-27  Nick Clifton  
2126
 
2127
        * options.cc (version_script): Fix small typo in previous
2128
        whitespace tidyup.
2129
 
2130
2010-08-25  Nick Clifton  
2131
 
2132
        * archive.cc: Formatting fixes: Remove whitespace between
2133
        typename and following asterisk.  Remove whitespace between
2134
        function name and opening parenthesis.
2135
        * archive.h: Likewise.
2136
        * arm.cc: Likewise.
2137
        * attributes.cc: Likewise.
2138
        * attributes.h: Likewise.
2139
        * common.cc: Likewise.
2140
        * copy-relocs.cc: Likewise.
2141
        * dirsearch.h: Likewise.
2142
        * dynobj.cc: Likewise.
2143
        * ehframe.cc: Likewise.
2144
        * ehframe.h: Likewise.
2145
        * expression.cc: Likewise.
2146
        * fileread.cc: Likewise.
2147
        * fileread.h: Likewise.
2148
        * gc.h: Likewise.
2149
        * gold-threads.cc: Likewise.
2150
        * gold.cc: Likewise.
2151
        * i386.cc: Likewise.
2152
        * icf.h: Likewise.
2153
        * incremental-dump.cc: Likewise.
2154
        * incremental.cc: Likewise.
2155
        * layout.cc: Likewise.
2156
        * layout.h: Likewise.
2157
        * main.cc: Likewise.
2158
        * merge.cc: Likewise.
2159
        * merge.h: Likewise.
2160
        * object.cc: Likewise.
2161
        * object.h: Likewise.
2162
        * options.cc: Likewise.
2163
        * options.h: Likewise.
2164
        * output.cc: Likewise.
2165
        * output.h: Likewise.
2166
        * plugin.cc: Likewise.
2167
        * plugin.h: Likewise.
2168
        * powerpc.cc: Likewise.
2169
        * reloc.cc: Likewise.
2170
        * script-c.h: Likewise.
2171
        * script-sections.cc: Likewise.
2172
        * script.cc: Likewise.
2173
        * stringpool.cc: Likewise.
2174
        * symtab.cc: Likewise.
2175
        * symtab.h: Likewise.
2176
        * target.cc: Likewise.
2177
        * timer.cc: Likewise.
2178
        * timer.h: Likewise.
2179
        * version.cc: Likewise.
2180
        * x86_64.cc: Likewise.
2181
 
2182
2010-08-24  Nick Clifton  
2183
 
2184
        PR 11899
2185
        * layout.cc (segment_precedes): Sort segments by their physical
2186
        addresses, if they have been set.
2187
 
2188
2010-08-23  Cary Coutant  
2189
 
2190
        * archive.cc (Lib_group::add_symbols): Lock object before deleting its
2191
        symbols data.
2192
        (Lib_group::include_member): Unlock object after deleting its
2193
        symbols data.
2194
        * testsuite/start_lib_test_3.c: Remove all global symbols to trigger
2195
        the bug fixed here.
2196
 
2197
2010-08-19  Neil Vachharajani  
2198
            Cary Coutant  
2199
 
2200
        * gold/archive.h (Add_lib_group_symbols): Add readsyms_blocker_, adjust
2201
        constructor, and set_blocker.
2202
        * gold/archive.cc (Add_lib_group_symbols::is_runnable): Also check
2203
        readsyms_blocker_.
2204
        * gold/readsyms.cc (Read_symbols::do_lib_group): Also pass
2205
        this->this_blocker_ to Add_lib_group_symbols::set_blocker.
2206
        * testsuite/Makefile.am (start_lib_test): New test case.
2207
        * testsuite/Makefile.in: Regenerate.
2208
        * testsuite/start_lib_test_main.c: New file.
2209
        * testsuite/start_lib_test_1.c: New file.
2210
        * testsuite/start_lib_test_2.c: New file.
2211
        * testsuite/start_lib_test_3.c: New file.
2212
 
2213
2010-08-19  Ian Lance Taylor  
2214
 
2215
        * Makefile.in: Rebuild with automake 1.11.1.
2216
        * aclocal.m4: Likewise.
2217
        * testsuite/Makefile.in: Likewise.
2218
 
2219
2010-08-19  Ian Lance Taylor  
2220
 
2221
        PR 10893
2222
        * i386.cc (class Output_data_plt_i386): Update declarations.
2223
        Define Global_ifunc and Local_ifunc types.  Add global_ifuncs_ and
2224
        local_ifuncs_ fields.
2225
        (Target_i386::do_plt_section_for_global): New function.
2226
        (Target_i386::do_plt_section_for_local): New function.
2227
        (Output_data_plt_i386::Output_data_plt_i386): Add symtab
2228
        parameter; change all callers.  Initialize global_ifuncs_ and
2229
        local_ifuncs_.  If doing a static link define __rel_iplt_start and
2230
        __rel_iplt_end.
2231
        (Output_data_plt_i386::add_entry): Handle IFUNC symbols.
2232
        (Output_data_plt_i386::add_local_ifunc_entry): New function.
2233
        (Output_data_plt_i386::do_write): Fix GOT entries for IFUNC
2234
        symbols.
2235
        (Target_i386::make_plt_section): New function, broken out of
2236
        make_plt_entry.  Set sh_info field of .rel.plt to point to .plt.
2237
        (Target_i386::make_plt_entry): Call make_plt_section.
2238
        (Target_i386::make_local_ifunc_plt_entry): New function.
2239
        (Target_i386::Scan::reloc_needs_iplt_for_ifunc): New function.
2240
        (Target_i386::Scan::local): Handle IFUNC symbols.  Add
2241
        R_386_IRELATIVE to switch.
2242
        (Target_i386::Scan::global): Likewise.
2243
        (Target_i386::Relocate::relocate): Likewise.
2244
        (Target_i386::Relocatable_size_for_reloc): Add R_386_IRELATIVE to
2245
        switch.
2246
        * x86_64.cc (class Output_data_plt_x86_64): Update declarations.
2247
        (Target_x86_64::do_plt_section_for_global): New function.
2248
        (Target_x86_64::do_plt_section_for_local): New function.
2249
        (Output_data_plt_x86_64::Output_data_plt_x86_64): Add symtab
2250
        parameter; change all callers.  If doing a static link define
2251
        __rela_iplt_start and __rela_iplt_end.
2252
        (Output_data_plt_x86_64::add_entry): Handle IFUNC symbols.
2253
        (Output_data_plt_x86_64::add_local_ifunc_entry): New function.
2254
        (Target_x86_64::make_plt_section): Set sh_info field of .rel.plt
2255
        to point to .plt.
2256
        (Target_x86_64::make_local_ifunc_plt_entry): New function.
2257
        (Target_x86_64::Scan::check_non_pic): Add R_X86_64_IRELATIVE to
2258
        switch.
2259
        (Target_x86_64::Scan::reloc_needs_iplt_for_ifunc): New function.
2260
        (Target_x86_64::Scan::local): Handle IFUNC symbols.  Add
2261
        R_X86_64_IRELATIVE to switch.
2262
        (Target_x86_64::Scan::global): Likewise.
2263
        (Target_x86_64::Relocate::relocate): Likewise.
2264
        (Target_x86_64::Relocatable_size_for_reloc): Add R_X86_64_IRELATIVE to
2265
        switch.
2266
        * target.h (class Target): Add plt_section_for_global and
2267
        plt_section_for_local functions.  Add do_plt_section_for_global
2268
        and do_plt_section_for_local virtual functions.
2269
        * symtab.h (Symbol::needs_plt_entry): Handle IFUNC symbol.  Add
2270
        clarifying comments.
2271
        (Symbol::use_plt_offset): Handle IFUNC symbol.
2272
        * object.cc (Sized_relobj::Sized_relobj): Initialize
2273
        local_plt_offsets_.
2274
        (Sized_relobj::local_has_plt_offset): New function.
2275
        (Sized_relobj::local_plt_offset): New function.
2276
        (Sized_relobj::set_local_plt_offset): New function.
2277
        (Sized_relobj::do_count): Handle IFUNC symbol.
2278
        * object.h (class Symbol_value): Add is_ifunc_symbol_ field.  Take
2279
        a bit away from input_shndx_ field.  Add set_is_func_symbol and
2280
        is_ifunc_symbol functions.
2281
        (class Sized_relobj): Update declarations.  Remove Tls_got_entry
2282
        and Local_tls_got_offsets.  Define Local_plt_offsets.  Add
2283
        local_plt_offsets_ field.
2284
        (Sized_relobj::clear_local_symbols): Clear local_plt_offsets_.
2285
        * output.h (class Output_section_data): Add non-const
2286
        output_section function.
2287
        (class Output_data_got): Update declarations.
2288
        (class Output_data_got::Got_entry): Add use_plt_offset_ field.
2289
        Add use_plt_offset parameter to global and local constructors.
2290
        Change all callers.  Change local_sym_index_ field to 31 bits.
2291
        Change GSYM_CODE and CONSTANT_CODE accordingly.
2292
        * output.cc (Output_data_reloc_base::do_adjust_output_section): If
2293
        doing a static link don't set sh_link field.
2294
        (Output_data_got::Got_entry::write): Use PLT offset if
2295
        appropriate.
2296
        (Output_data_got::add_global_plt): New function.
2297
        (Output_data_got::add_local_plt): New function.
2298
        * target-reloc.h (relocate_section): Handle IFUNC symbol.
2299
        * defstd.cc (in_section): Remove entries for __rel_iplt_start,
2300
        __rel_iplt_end, __rela_iplt_start, and __rela_iplt_end.
2301
        * configure.ac: Set IFUNC automake conditional for glibc >= 2.11.
2302
        * testsuite/Makefile.am: Add a bunch of IFUNC tests, all within
2303
        IFUNC conditional.
2304
        * testsuite/ifunc-sel.h: New file.
2305
        * testsuite/ifuncmain1.c: New file.
2306
        * testsuite/ifuncmain1vis.c: New file.
2307
        * testsuite/ifuncmod1.c: New file.
2308
        * testsuite/ifuncdep2.c: New file.
2309
        * testsuite/ifuncmain2.c: New file.
2310
        * testsuite/ifuncmain3.c: New file.
2311
        * testsuite/ifuncmod3.c: New file.
2312
        * testsuite/ifuncmain4.c: New file.
2313
        * testsuite/ifuncmain5.c: New file.
2314
        * testsuite/ifuncmod5.c: New file.
2315
        * testsuite/ifuncmain6pie.c: New file.
2316
        * testsuite/ifuncmod6.c: New file.
2317
        * testsuite/ifuncmain7.c: New file.
2318
        * configure, testsuite/Makefile.in: Rebuild.
2319
 
2320
2010-08-18  Ian Lance Taylor  
2321
 
2322
        * incremental.cc
2323
        (Output_section_incremental_inputs::write_input_files): Add cast
2324
        to avoid signed/unsigned comparison warning.
2325
        (Output_section_incremental_inputs::write_info_blocks): Likewise.
2326
 
2327
2010-08-12  Cary Coutant  
2328
 
2329
        * common.cc (Sort_commons::operator()): Remove unnecessary code.
2330
 
2331
2010-08-13  Ian Lance Taylor  
2332
 
2333
        * testsuite/incremental_test_1.c: Add prototype to avoid warning.
2334
 
2335
2010-08-12  Cary Coutant  
2336
            Doug Kwan  
2337
 
2338
        * resolve.cc (Symbol_table::should_override): When a weak dynamic
2339
        defintion overrides non-weak undef, remember that the original undef
2340
        is not weak.
2341
        * symtab.cc (Symbol_table::sized_write_global): For undef without
2342
        an original weak binding, set binding to global in output.
2343
        * testsuite/Makefile.am: Add new test strong_ref_weak_def.
2344
        * testsuite/Makefile.in: Regenerate.
2345
        * testsuite/strong_ref_weak_def.sh: New file.
2346
        * testsuite/strong_ref_weak_def_1.c: Ditto.
2347
        * testsuite/strong_ref_weak_def_2.c: Ditto.
2348
 
2349
2010-08-12  Cary Coutant  
2350
 
2351
        * testsuite/incremental_test.sh: Rewrite.
2352
        * testsuite/incremental_test_1.c: Rewrite.
2353
        * testsuite/incremental_test_2.c: Rewrite.
2354
 
2355
2010-08-12  Cary Coutant  
2356
 
2357
        * arm.cc (Target_arm::got_size): Add const.
2358
        (Target_arm::got_entry_count): New function.
2359
        (Target_arm::plt_entry_count): New function.
2360
        (Target_arm::first_plt_entry_offset): New function.
2361
        (Target_arm::plt_entry_size): New function.
2362
        (Output_data_plt_arm::entry_count): New function.
2363
        (Output_data_plt_arm::first_plt_entry_offset): New function.
2364
        (Output_data_plt_arm::get_plt_entry_size): New function.
2365
        * i386.cc (Target_i386::got_size): Add const.
2366
        (Target_i386::got_entry_count): New function.
2367
        (Target_i386::plt_entry_count): New function.
2368
        (Target_i386::first_plt_entry_offset): New function.
2369
        (Target_i386::plt_entry_size): New function.
2370
        (Output_data_plt_i386::entry_count): New function.
2371
        (Output_data_plt_i386::first_plt_entry_offset): New function.
2372
        (Output_data_plt_i386::get_plt_entry_size): New function.
2373
        * incremental-dump.cc (dump_incremental_inputs): Adjust call to
2374
        find_incremental_inputs_sections.  Dump incremental_got_plt section.
2375
        * incremental.cc: Include target.h.
2376
        (Sized_incremental_binary::do_find_incremental_inputs_sections): Add
2377
        parameter.  Adjust all callers.  Find incremental_got_plt section.
2378
        (Incremental_inputs::create_data_sections): Create incremental_got_plt
2379
        section.
2380
        (Output_section_incremental_inputs::set_final_data_size): Calculate
2381
        size of incremental_got_plt section.
2382
        (Output_section_incremental_inputs::do_write): Write the
2383
        incremental_got_plt section.
2384
        (Got_plt_view_info): New struct.
2385
        (Local_got_offset_visitor): New class.
2386
        (Global_got_offset_visitor): New class.
2387
        (Global_symbol_visitor_got_plt): New class.
2388
        (Output_section_incremental_inputs::write_got_plt): New function.
2389
        * incremental.h (Incremental_binary::find_incremental_inputs_sections):
2390
        Add parameter.  Adjust all callers.
2391
        (Incremental_binary::do_find_incremental_inputs_sections): Likewise.
2392
        (Incremental_inputs::got_plt_section): New function.
2393
        (Incremental_inputs::got_plt_section_): New data member.
2394
        (Incremental_got_plt_reader): New class.
2395
        * layout.cc (Layout::create_incremental_info_sections): Add the
2396
        incremental_got_plt section.
2397
        * object.h (Got_offset_list::get_list): New function.
2398
        (Got offset_list::for_all_got_offsets): New function.
2399
        (Sized_relobj::local_got_offset_list): New function.
2400
        * powerpc.cc (Target_powerpc::got_size): Add const.
2401
        (Target_powerpc::got_entry_count): New function.
2402
        (Target_powerpc::plt_entry_count): New function.
2403
        (Target_powerpc::first_plt_entry_offset): New function.
2404
        (Target_powerpc::plt_entry_size): New function.
2405
        (Output_data_plt_powerpc::entry_count): New function.
2406
        (Output_data_plt_powerpc::first_plt_entry_offset): New function.
2407
        (Output_data_plt_powerpc::get_plt_entry_size): New function.
2408
        * sparc.cc (Target_sparc::got_size): Add const.
2409
        (Target_sparc::got_entry_count): New function.
2410
        (Target_sparc::plt_entry_count): New function.
2411
        (Target_sparc::first_plt_entry_offset): New function.
2412
        (Target_sparc::plt_entry_size): New function.
2413
        (Output_data_plt_sparc::entry_count): New function.
2414
        (Output_data_plt_sparc::first_plt_entry_offset): New function.
2415
        (Output_data_plt_sparc::get_plt_entry_size): New function.
2416
        * symtab.h (Symbol::got_offset_list): New function.
2417
        (Symbol_table::for_all_symbols): New function.
2418
        * target.h (Sized_target::got_entry_count): New function.
2419
        (Sized_target::plt_entry_count): New function.
2420
        (Sized_target::plt_entry_size): New function.
2421
        * x86_64.cc (Target_x86_64::got_size): Add const.
2422
        (Target_x86_64::got_entry_count): New function.
2423
        (Target_x86_64::plt_entry_count): New function.
2424
        (Target_x86_64::first_plt_entry_offset): New function.
2425
        (Target_x86_64::plt_entry_size): New function.
2426
        (Output_data_plt_x86_64::entry_count): New function.
2427
        (Output_data_plt_x86_64::first_plt_entry_offset): New function.
2428
        (Output_data_plt_x86_64::get_plt_entry_size): New function.
2429
 
2430
2010-08-12  Cary Coutant  
2431
 
2432
        * archive.cc: Include incremental.h.
2433
        (Archive::Archive): Initialize incremental_info_.
2434
        (Archive::include_member): Record archive members in incremental info.
2435
        (Add_archive_symbols::run): Record begin and end of an archive in
2436
        incremental info.
2437
        (Lib_group::include_member): Record objects in incremental info.
2438
        * archive.h (Incremental_archive_entry): Forward declaration.
2439
        (Archive::set_incremental_info): New member function.
2440
        (Archive::incremental_info): New member function.
2441
        (Archive::Unused_symbol_iterator): New class.
2442
        (Archive::unused_symbols_begin): New member function.
2443
        (Archive::unused_symbols_end): New member function.
2444
        (Archive::incremental_info_): New data member.
2445
        * incremental-dump.cc (find_input_containing_global): New function.
2446
        (dump_incremental_inputs): Dump new incremental info sections.
2447
        * incremental.cc: Include symtab.h.
2448
        (Output_section_incremental_inputs): New class.
2449
        (Sized_incremental_binary::do_find_incremental_inputs_sections): Support
2450
        new incremental info sections.
2451
        (Sized_incremental_binary::do_check_inputs): Likewise.
2452
        (Incremental_inputs::report_archive): Remove.
2453
        (Incremental_inputs::report_archive_begin): New function.
2454
        (Incremental_inputs::report_archive_end): New function.
2455
        (Incremental_inputs::report_object): New function.
2456
        (Incremental_inputs::finalize_inputs): Remove.
2457
        (Incremental_inputs::report_input_section): New function.
2458
        (Incremental_inputs::report_script): Rewrite.
2459
        (Incremental_inputs::finalize): Do nothing but finalize string table.
2460
        (Incremental_inputs::create_incremental_inputs_section_data): Remove.
2461
        (Incremental_inputs::sized_create_inputs_section_data): Remove.
2462
        (Incremental_inputs::create_data_sections): New function.
2463
        (Incremental_inputs::relocs_entsize): New function.
2464
        (Output_section_incremental_inputs::set_final_data_size): New function.
2465
        (Output_section_incremental_inputs::do_write): New function.
2466
        (Output_section_incremental_inputs::write_header): New function.
2467
        (Output_section_incremental_inputs::write_input_files): New function.
2468
        (Output_section_incremental_inputs::write_info_blocks): New function.
2469
        (Output_section_incremental_inputs::write_symtab): New function.
2470
        * incremental.h (Incremental_script_entry): Forward declaration.
2471
        (Incremental_object_entry): Forward declaration.
2472
        (Incremental_archive_entry): Forward declaration.
2473
        (Incremental_inputs): Forward declaration.
2474
        (Incremental_inputs_header_data): Remove.
2475
        (Incremental_inputs_header): Remove.
2476
        (Incremental_inputs_header_write): Remove.
2477
        (Incremental_inputs_entry_data): Remove.
2478
        (Incremental_inputs_entry): Remove.
2479
        (Incremental_inputs_entry_write): Remove.
2480
        (enum Incremental_input_type): Add INCREMENTAL_INPUT_ARCHIVE_MEMBER.
2481
        (Incremental_binary::find_incremental_inputs_sections): Add parameters.
2482
        (Incremental_binary::do_find_incremental_inputs_sections): Likewise.
2483
        (Sized_ncremental_binary::do_find_incremental_inputs_sections):
2484
        Likewise.
2485
        (Incremental_input_entry): New class.
2486
        (Incremental_script_entry): New class.
2487
        (Incremental_object_entry): New class.
2488
        (Incremental_archive_entry): New class.
2489
        (Incremental_inputs::Incremental_inputs): Initialize new data members.
2490
        (Incremental_inputs::report_inputs): Remove.
2491
        (Incremental_inputs::report_archive): Remove.
2492
        (Incremental_inputs::report_archive_begin): New function.
2493
        (Incremental_inputs::report_archive_end): New function.
2494
        (Incremental_inputs::report_object): Change prototype.
2495
        (Incremental_inputs::report_input_section): New function.
2496
        (Incremental_inputs::report_script): Change prototype.
2497
        (Incremental_inputs::get_reloc_count): New function.
2498
        (Incremental_inputs::set_reloc_count): New function.
2499
        (Incremental_inputs::create_data_sections): New function.
2500
        (Incremental_inputs::create_incremental_inputs_section_data): Remove.
2501
        (Incremental_inputs::inputs_section): New function.
2502
        (Incremental_inputs::symtab_section): New function.
2503
        (Incremental_inputs::relocs_section): New function.
2504
        (Incremental_inputs::get_stringpool): Add const.
2505
        (Incremental_inputs::command_line): Add const.
2506
        (Incremental_inputs::inputs): Remove.
2507
        (Incremental_inputs::command_line_key): New function.
2508
        (Incremental_inputs::input_file_count): New function.
2509
        (Incremental_inputs::input_files): New function.
2510
        (Incremental_inputs::relocs_entsize): New function.
2511
        (Incremental_inputs::sized_create_inputs_section_data): Remove.
2512
        (Incremental_inputs::finalize_inputs): Remove.
2513
        (Incremental_inputs::Input_info): Remove.
2514
        (Incremental_inputs::lock_): Remove.
2515
        (Incremental_inputs::inputs_): Change type.
2516
        (Incremental_inputs::inputs_map_): Remove.
2517
        (Incremental_inputs::current_object_entry_): New data member.
2518
        (Incremental_inputs::inputs_section_): New data member.
2519
        (Incremental_inputs::symtab_section_): New data member.
2520
        (Incremental_inputs::relocs_section_): New data member.
2521
        (Incremental_inputs::reloc_count_): New data member.
2522
        (Incremental_inputs_reader): New class.
2523
        (Incremental_symtab_reader): New class.
2524
        (Incremental_relocs_reader): New class.
2525
        * layout.cc (Layout::finalize): Move finalization of incremental info
2526
        and creation of incremental info sections to follow finalization of
2527
        symbol table.  Set offsets for postprocessing sections.
2528
        (Layout::create_incremental_info_sections): Call
2529
        Incremental_inputs::create_data_sections.  Add incremental symtab
2530
        and relocs sections.  Set sh_entsize and sh_link fields.  Arrange for
2531
        sections to layout after input sections.
2532
        * layout.h (struct Timespec): Forward declaration.
2533
        (Layout::incremental_inputs): Add const.
2534
        (Layout::create_incremental_info_sections): Add parameter.
2535
        * main.cc (main): Remove call to Incremental_inputs::report_inputs.
2536
        * object.cc: Include incremental.h.
2537
        (Relobj::finalize_incremental_relocs): New function.
2538
        (Sized_relobj::do_layout): Record input sections in incremental info.
2539
        * object.h (Object::output_section): New function.
2540
        (Object::output_section_offset): Moved from Relobj.
2541
        (Object::get_incremental_reloc_base): New function.
2542
        (Object::get_incremental_reloc_count): New function.
2543
        (Object::do_output_section): New function.
2544
        (Object::do_output_section_offset): Moved from Relobj.
2545
        (Object::do_get_incremental_reloc_base): New function.
2546
        (Object::do_get_incremental_reloc_count): New function.
2547
        (Object::Object): Initialize new data members.
2548
        (Relobj::output_section): Renamed do_output_section and moved to
2549
        protected.
2550
        (Relobj::output_section_offset): Moved to Object.
2551
        (Relobj::do_get_incremental_reloc_base): New function.
2552
        (Relobj::do_get_incremental_reloc_count): New function.
2553
        (Relobj::allocate_incremental_reloc_counts): New function.
2554
        (Relobj::count_incremental_reloc): New function.
2555
        (Relobj::finalize_incremental_relocs): New function.
2556
        (Relobj::next_incremental_reloc_index): New function.
2557
        (Relobj::reloc_counts_): New data member.
2558
        (Relobj::reloc_bases_): New data member.
2559
        (Sized_relobj::do_relocate_sections): Add parameter.  Change caller.
2560
        (Sized_relobj::relocate_sections): Add parameter.  Change all callers.
2561
        (Sized_relobj::incremental_relocs_scan): New function.
2562
        (Sized_relobj::incremental_relocs_scan_reltype): New function.
2563
        (Sized_relobj::incremental_relocs_write): New function.
2564
        (Sized_relobj::incremental_relocs_write_reltype): New function.
2565
        * plugin.cc (Plugin_manager::add_input_file): Rewrite test for
2566
        incremental link.
2567
        * readsyms.cc (Read_symbols::do_read_symbols): Move reporting of
2568
        archives and object files elsewhere.
2569
        (Add_symbols::run): Report object files here.
2570
        (Finish_group::run): Report end of archive at end of group.
2571
        * reloc.cc: Include layout.h, incremental.h.
2572
        (Sized_relobj::do_read_relocs): Need relocations for incremental link.
2573
        (Sized_relobj::do_scan_relocs): Record relocations for incremental link.
2574
        (Sized_relobj::incremental_relocs_scan): New function.
2575
        (Sized_relobj::incremental_relocs_scan_reltype): New function.
2576
        (Sized_relobj::do_relocate_sections): Write incremental relocations.
2577
        (Sized_relobj::incremental_relocs_write): New function.
2578
        (Sized_relobj::incremental_relocs_write_reltype): New function.
2579
        * script.cc (read_input_script): Rewrite test for incremental link.
2580
        Change call to Incremental_inputs::report_script.
2581
        * symtab.h (Symbol_table::first_global_index): New function.
2582
        (Symbol_table::output_count): New function.
2583
 
2584
2010-08-12  Doug Kwan  
2585
 
2586
        * arm.cc (Target_arm::merge_object_attributes): Check command line
2587
        options --no-wchar-size-warning and --no-enum-size-warning.
2588
        * options.h (General_options): Add ld-compatible options
2589
        --no-enum-size-warning and --no-wchar-size-warning.
2590
 
2591
2010-08-04  Ian Lance Taylor  
2592
 
2593
        * x86_64.cc (Target_x86_64::Scan::local): Use
2594
        R_X86_64_GNU_VTINHERIT instead of R_386_GNU_VTINHERIT and
2595
        R_X86_64_GNU_VTENTRY instead of R_386_GNU_VTENTRY.
2596
        (Target_x86_64::Scan::global): Likewise.
2597
        (Target_x86_64::Relocate::relocate): Likewise.
2598
        (Target_x86_64::Relocatable_size_for_reloc::get_size_for_reloc):
2599
        Likewise.
2600
 
2601
2010-08-03  Cary Coutant  
2602
 
2603
        * merge.cc (Output_merge_string::do_add_input_section): Count strings
2604
        to reserve space in merged_strings vector. Keep total input size
2605
        for stats.
2606
        (Output_merge_string::do_print_merge_stats): Print total input size.
2607
        * merge.h (Output_merge_string): Add input_size_ field.
2608
        * stringpool.cc (Stringpool_template::string_length): Move
2609
        implementations out of Stringpool_template class and place in
2610
        stringpool.h.
2611
        * stringpool.h (string_length): Move out of Stringpool_template.
2612
 
2613
2010-08-03  Ian Lance Taylor  
2614
 
2615
        PR 11712
2616
        * layout.cc (relaxation_loop_body): If address of load segment is
2617
        set, adjust address to include headers if possible.
2618
 
2619
2010-08-03  Ian Lance Taylor  
2620
 
2621
        * version.cc (version_string): Bump to 1.10.
2622
 
2623
2010-08-03  Ian Lance Taylor  
2624
 
2625
        PR 11805
2626
        * layout.h (enum Output_section_order): Define.
2627
        (class Layout): Update declarations.
2628
        * layout.cc (Layout::get_output_section): Add order parameter.
2629
        Remove is_interp, is_dynamic_linker_section, is_last_relro, and
2630
        is_first_non_relro parameters.  Change all callers.
2631
        (Layout::choose_output_section): Likewise.
2632
        (Layout::add_output_section_data): Likewise.
2633
        (Layout::make_output_section): Likewise.  Set order.
2634
        (Layout::default_section_order): New function.
2635
        (Layout::layout_eh_frame): Call add_output_section_to_nonload.
2636
        * output.cc (Output_section::Output_section): Initialize order_.
2637
        Don't initialize deleted fields.
2638
        (Output_segment::Output_segment): Don't initialize deleted
2639
        fields.
2640
        (Output_segment::add_output_section_to_load): New function
2641
        replacing add_output_section.  Change all callers to call this or
2642
        add_output_section_to_nonload.
2643
        (Output_segment::add_output_section_to_nonload): New function.
2644
        (Output_segment::remove_output_section): Rewrite.
2645
        (Output_segment::add_initial_output_data): Likewise.
2646
        (Output_segment::has_any_data_sections): Likewise.
2647
        (Output_segment::is_first_section_relro): Likewise.
2648
        (Output_segment::maximum_alignment): Likewise.
2649
        (Output_segment::has_dynamic_reloc): New function replacing
2650
        dynamic_reloc_count.  Change all callers.
2651
        (Output_segment::has_dynamic_reloc_list): New function replacing
2652
        dynamic_reloc_count_list.  Change all callers.
2653
        (Output_segment::set_section_addresses): Rewrite.
2654
        (Output_segment::set_offset): Rewrite.
2655
        (Output_segment::find_first_and_last_list): Remove.
2656
        (Output_segment::set_tls_offsets): Rewrite.
2657
        (Output_segment::first_section_load_address): Likewise.
2658
        (Output_segment::output_section_count): Likewise.
2659
        (Output_segment::section_with_lowest_load_address): Likewise.
2660
        (Output_segment::write_section_headers): Likewise.
2661
        (Output_segment::print_sections_to_map): Likewise.
2662
        * output.h (class Output_data): Remove dynamic_reloc_count_
2663
        field.  Add has_dynamic_reloc_ field.  Make bools into bitfields.
2664
        (Output_data::add_dynamic_reloc): Rewrite.
2665
        (Output_data::has_dynamic_reloc): New function.
2666
        (Output_data::dynamic_reloc_count): Remove.
2667
        (class Output_section): Add order_ field.  Remvoe is_relro_local_,
2668
        is_last_relro_, is_first_non_relro_, is_interp_,
2669
        is_dynamic_linker_section_ fields.  Add order and set_order
2670
        functions.  Remove is_relro_local, set_is_relro_local,
2671
        is_last_relro, set_is_last_relro, is_first_non_relro,
2672
        set_is_first_non_relro functions, is_interp, set_is_interp,
2673
        is_dynamic_linker_section, and set_is_dynamic_linker_section
2674
        functions.
2675
        (class Output_segment): Change Output_data_list from std::list to
2676
        std:;vector.  Add output_lists_ field.  Remove output_data_ and
2677
        output_bss_ fields.  Update declarations.
2678
 
2679
2010-08-02  Ian Lance Taylor  
2680
 
2681
        * arm.cc (Target_arm::gc_process_relocs): Use typename.
2682
        * powerpc.cc (Target_powerpc::gc_process_relocs): Likewise.
2683
        * sparc.cc (Target_sparc::gc_process_relocs): Likewise.
2684
 
2685
2010-08-02  Ian Lance Taylor  
2686
 
2687
        PR 11855
2688
        * script.cc (Script_options::Script_options): Initialize
2689
        symbol_definitions_ and symbol_references_.
2690
        (Script_options::add_symbol_assignment): Update
2691
        symbol_definitions_ and symbol_references_.
2692
        (Script_options::add_symbol_reference): New function.
2693
        (script_symbol): New function.
2694
        * script.h (class Script_options): Add symbol_definitions_ and
2695
        symbol_references_ fields.
2696
        (Script_options::referenced_const_iterator): New type.
2697
        (Script_options::referenced_begin): New function.
2698
        (Script_options::referenced_end): New function.
2699
        (Script_options::is_referenced): New function.
2700
        (Script_options::any_unreferenced): New function.
2701
        * script-c.h (script_symbol): Declare.
2702
        * yyscript.y (exp): Call script_symbol.
2703
        * symtab.cc: Include "script.h".
2704
        (Symbol_table::gc_mark_undef_symbols): Add layout parameter.
2705
        Change all callers.  Check symbols referenced by scripts.
2706
        (Symbol_table::add_undefined_symbols_from_command_line): Add
2707
        layout parameter.  Change all callers.
2708
        (Symbol_table::do_add_undefined_symbols_from_command_line):
2709
        Likewise.  Break out loop body.  Check symbols referenced by
2710
        scripts.
2711
        (Symbol_table::add_undefined_symbol_from_command_line): New
2712
        function broken out of
2713
        do_add_undefined_symbols_from_command_line.
2714
        * symtab.h (class Symbol_table): Update declarations.
2715
        * archive.cc: Include "layout.h".
2716
        (Archive::should_include_member): Add layout parameter.  Change
2717
        all callers.  Check for symbol mentioned in expression.
2718
        * archive.h (class Archive): Update declaration.
2719
        * object.cc (Sized_relobj::do_should_include_member): Add layout
2720
        parameter.
2721
        * object.h (Object::should_include_member): Add layout parameter.
2722
        Change all callers.
2723
        (Object::do_should_include_member): Add layout parameter.
2724
        (class Sized_relobj): Update declaration.
2725
        * dynobj.cc (Sized_dynobj::do_should_include_member): Add layout
2726
        parameter.
2727
        * dynobj.h (class Sized_dynobj): Update declaration.
2728
        * plugin.cc (Sized_pluginobj::do_should_include_member): Add
2729
        layout parameter.
2730
        * plugin.h (class Sized_pluginobj): Update declaration.
2731
 
2732
2010-08-02  Ian Lance Taylor  
2733
 
2734
        PR 11866
2735
        * output.cc (Output_segment::set_offset): Search for the first and
2736
        last sections rather than assuming that the list is in order.
2737
        (Output_segment::find_first_and_last_list): New function.
2738
        * output.h (class Output_segment): Update declarations.
2739
        * testsuite/Makefile.am (check_PROGRAMS): Add relro_strip_test.
2740
        (relro_strip_test_SOURCES): New variable.
2741
        (relro_strip_test_DEPENDENCIES): New variable.
2742
        (relro_strip_test_LDFLAGS): New variable.
2743
        (relro_strip_test_LDADD): New variable.
2744
        (relro_strip_test.so): New target.
2745
 
2746
2010-08-02  Ian Lance Taylor  
2747
 
2748
        * i386.cc (class Target_i386): Add got_tlsdesc_ field.
2749
        (Target_i386::Target_i386):: Initialize got_tlsdesc_.
2750
        (Target_i386::got_tlsdesc_section): New function.
2751
        (Target_i386::got_section): Create space for GOT entries for
2752
        TLSDESC relocations.
2753
        (Target_i386::Scan::local): Use TLSDESC GOT for unoptimized
2754
        R_386_TLS_GOTDESC.
2755
        (Target_i386::Scan::global): Likewise.
2756
        (Target_i386::Relocate::relocate_tls): Adjust GOT offset when
2757
        using TLSDESC GOT.
2758
        * x86_64.cc (class Target_x86_64): Add got_tlsdesc_ field.
2759
        (Target_x86_64::Target_x86_64):: Initialize got_tlsdesc_.
2760
        (Target_x86_64::got_tlsdesc_section): New function.
2761
        (Target_x86_64::got_section): Create space for GOT entries for
2762
        TLSDESC relocations.
2763
        (Target_x86_64::Scan::local): Use TLSDESC GOT for unoptimized
2764
        R_386_TLS_GOTDESC.
2765
        (Target_x86_64::Scan::global): Likewise.
2766
        (Target_x86_64::Relocate::relocate_tls): Adjust GOT offset when
2767
        using TLSDESC GOT.
2768
 
2769
2010-08-02  Ian Lance Taylor  
2770
 
2771
        * testsuite/final_layout.sh: Use dc to convert from hex to
2772
        decimal.
2773
 
2774
2010-07-29  Sriraman Tallam  
2775
 
2776
        * arm.cc (Target_arm::gc_process_relocs): Add template
2777
        paramter to the call to gold::gc_process_relocs.
2778
        * i386.cc (Target_i386::gc_process_relocs): Add template
2779
        paramter to the call to gold::gc_process_relocs.
2780
        * x86_64.cc (Target_x86_64::gc_process_relocs): Add template
2781
        parameter to the call to gold::gc_process_relocs.
2782
        * powerpc.cc (Target_powerpc::gc_process_relocs): Add
2783
        template parameter to the call to gold::gc_process_relocs.
2784
        * sparc.cc (Target_sparc::gc_process_relocs): Add template
2785
        paramter to the call to gold::gc_process_relocs.
2786
        * gc.h (get_embedded_addend_size): New function.
2787
        (gc_process_relocs): Save the size of the reloc for use by ICF.
2788
        * icf.cc (get_section_contents): Get the addend from the text section
2789
        for SHT_REL relocation sections.
2790
        * icf.h (Icf::Reloc_addend_size_info): New typedef.
2791
        (Icf::Reloc_info): Add new member reloc_addend_size_info.
2792
        * int_encoding.h (read_from_pointer): New overloaded function.
2793
        * testsuite/Makefile.am (icf_sht_rel_addend_test): New test.
2794
        * testsuite/icf_sht_rel_addend_test.sh: New file.
2795
        * testsuite/icf_sht_rel_addend_test_1.cc: New file.
2796
        * testsuite/icf_sht_rel_addend_test_2.cc: New file.
2797
 
2798
2010-07-28  Ralf Wildenhues  
2799
 
2800
        * configure.ac (AM_INIT_AUTOMAKE): Use parallel-tests option.
2801
        * Makefile.in: Regenerate.
2802
        * testsuite/Makefile.in: Regenerate.
2803
 
2804
2010-07-27  Jeffrey Yasskin  
2805
 
2806
        * testsuite/debug_msg.sh: Test mixed weak/strong symbol behavior.
2807
        * gold/testsuite/debug_msg.cc: Likewise.
2808
        * gold/testsuite/odr_violation1.cc
2809
        * gold/testsuite/odr_violation2.cc
2810
 
2811
2010-07-21  Cary Coutant  
2812
 
2813
        * merge.h (Output_merge_string::Merged_string): Remove object, shndx,
2814
        string, and length fields.
2815
        (Output_merge_string::Merged_strings_list): New type.
2816
        (Output_merge_string::Merged_strings_lists): New typedef.
2817
        (Output_merge_string): Replace merged_strings_ with
2818
        merged_strings_lists_.
2819
        * merge.cc (Output_merge_string::do_add_input_section): Allocate new
2820
        Merged_strings_list per input object and section.  Don't store pointer
2821
        to the string.  Don't store length with each merged string entry.
2822
        (Output_merge_string::finalize_merged_data): Loop over list of merged
2823
        strings lists.  Recompute length of each merged string.
2824
 
2825
2010-07-15  Cary Coutant  
2826
 
2827
        * plugin.cc (Plugin_finish::run): Don't call cleanup handlers from
2828
        here.
2829
 
2830
2010-07-14  Ian Lance Taylor  
2831
 
2832
        * descriptors.cc (Descriptors::open): Report correct name in error
2833
        message.
2834
 
2835
2010-07-13  Doug Kwan  
2836
 
2837
        * arm.cc (Arm_input_section::Arm_input_section): For a
2838
        SHT_ARM_EXIDX section, always keeps the input sections.
2839
        (Arm_input_section::set_exidx_section_link): New method.
2840
        (Arm_exidx_input_section::Arm_exidx_input_section): Initialize
2841
        has_errors_ to false.
2842
        (Arm_exidx_input_section::has_errors,
2843
        Arm_exidx_input_section::set_has_errors): New methods.
2844
        (Arm_exidx_input_section::has_errors_): New data member.
2845
        (Arm_relobj::get_exidx_shndx_list): New method.
2846
        (Arm_output_section::append_text_sections_to_list): Do not skip
2847
        section without SHF_EXECINSTR.
2848
        (Arm_output_section::fix_exidx_coverage): Skip input sections with
2849
        errors.
2850
        (Arm_relobj::make_exidx_input_section): Add new parameter for text
2851
        section header.  Make error messages more verbose.  Check for
2852
        a non-executable section linked to an EXIDX section.
2853
        (Arm_relobj::do_read_symbols): Remove error checking, which has been
2854
        moved to Arm_relobj::make_exidx_input_section.  Add an assertion to
2855
        check that there is no deferred EXIDX section if we exit early.
2856
        Instead of not making an EXIDX section in case of an error, make one
2857
        and set the has_errors flag of it.
2858
        (Target_arm::do_finalize_sections): Fix up links of EXIDX sections
2859
        in a relocatable link.
2860
        (Target_arm::do_relax): Look for the EXIDX output section instead of
2861
        assuming that it is called .ARM.exidx.
2862
        (Target_arm::fix_exidx_coverage): Add a new parameter for input
2863
        section list.  Do not check for SHF_EXECINSTR section flags but
2864
        skip any input section with errors.
2865
        * output.cc (Output_section::Output_section): Initialize
2866
        always_keeps_input_sections_ to false.
2867
        (Output_section::add_input_section): Check for
2868
        always_keeps_input_sections_.
2869
        *  output.h (Output_section::always_keeps_input_sections,
2870
        Output_section::set_always_keeps_input_sections): New methods.
2871
        (Output_section::always_keeps_input_sections): New data member.
2872
 
2873
2010-07-13  Rafael Espindola  
2874
 
2875
        * fileread.cc (try_extra_search_path, find_file): Move to Input_file.
2876
        * fileread.h (Input_file): Add try_extra_search_path and find_file.
2877
 
2878
2010-07-13  Philip Herron  
2879
            Ian Lance Taylor  
2880
 
2881
        * output.h (Output_section_lookup_maps::add_merge_section):
2882
        Correct check of whether value was inserted.
2883
        (Output_section_lookup_maps::add_merge_input_section): Likewise.
2884
        (Output_section_lookup_maps::add_relaxed_input_section):
2885
        Likewise.
2886
        * arm.cc (Target_arm::got_section): Remove used local os.
2887
        * i386.cc (Target_i386::got_section): Likewise.
2888
        * x86_64.cc (Target_x86_64::got_section): Likewise.
2889
        * sparc.cc (Target_sparc::got_section): Likewise.
2890
        (Target_sparc::relocate): Remove unused local have_got_offset.
2891
        * powerpc.cc (Target_powerpc::relocate): Likewise.
2892
 
2893
2010-07-13  Ian Lance Taylor  
2894
 
2895
        * compressed_output.cc (zlib_decompress): Fix signature in
2896
        !HAVE_ZLIB_H case.
2897
 
2898
        * archive.cc (Archive::include_member): Unlock an external member
2899
        of a thin archive.  Don't bother to delete an object we know is
2900
        NULL.
2901
 
2902
2010-07-12  Cary Coutant  
2903
 
2904
        * compressed_output.cc (zlib_decompress): New function.
2905
        (get_uncompressed_size): New function.
2906
        (decompress_input_section): New function.
2907
        * compressed_output.h (get_uncompressed_size): New function.
2908
        (decompress_input_section): New function.
2909
        * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info)
2910
        Handle compressed debug sections.
2911
        * layout.cc (is_compressed_debug_section): New function.
2912
        (Layout::output_section_name): Map compressed section names to
2913
        canonical names.
2914
        * layout.h (is_compressed_debug_section): New function.
2915
        (is_debug_info_section): Recognize compressed debug sections.
2916
        * merge.cc: Include compressed_output.h.
2917
        (Output_merge_data::do_add_input_section): Handle compressed
2918
        debug sections.
2919
        (Output_merge_string::do_add_input_section): Handle compressed
2920
        debug sections.
2921
        * object.cc: Include compressed_output.h.
2922
        (Sized_relobj::Sized_relobj): Initialize new data members.
2923
        (build_compressed_section_map): New function.
2924
        (Sized_relobj::do_read_symbols): Handle compressed debug sections.
2925
        * object.h (Object::section_is_compressed): New method.
2926
        (Object::do_section_is_compressed): New method.
2927
        (Sized_relobj::Compressed_section_map): New type.
2928
        (Sized_relobj::do_section_is_compressed): New method.
2929
        (Sized_relobj::compressed_sections_): New data member.
2930
        * output.cc (Output_section::add_input_section): Handle compressed
2931
        debug sections.
2932
        * reloc.cc: Include compressed_output.h.
2933
        (Sized_relobj::write_sections): Handle compressed debug sections.
2934
 
2935
2010-07-08  Cary Coutant  
2936
 
2937
        * resolve.cc (Symbol_table::resolve): Remember whether undef was
2938
        weak when resolving to a dynamic def.
2939
        (Symbol_table::should_override): Add adjust_dyndef flag; set it
2940
        for weak undef/dynamic def cases. Adjust callers.
2941
        * symtab.cc (Symbol::init_fields): Initialize undef_binding_set_ and
2942
        undef_binding_weak_.
2943
        (Symbol_table::sized_write_globals): Adjust symbol binding.
2944
        (Symbol_table::sized_write_symbol): Add binding parameter.
2945
        * symtab.h (Symbol::set_undef_binding): New method.
2946
        (Symbol::is_undef_binding_weak): New method.
2947
        (Symbol::undef_binding_set_, Symbol::undef_binding_weak_): New members.
2948
        (Symbol_table::should_override): Add new parameter.
2949
        (Symbol_table::sized_write_symbol): Add new parameter.
2950
 
2951
        * testsuite/weak_undef_file1.cc: Add new test case.
2952
        * testsuite/weak_undef_file2.cc: Fix header comment.
2953
        * testsuite/weak_undef_test.cc: Add new test case.
2954
 
2955
2010-06-29  Doug Kwan  
2956
 
2957
        * arm-reloc-property.cc (Arm_reloc_property::Arm_reloc_property):
2958
        Initialize USE_SYMBOL_.
2959
        * arm-reloc-property.h (Arm_reloc_property::uses_symbol): New method
2960
        definition.
2961
        (Arm_reloc_property::uses_symbol_): New data member declaration.
2962
        * arm.cc (Target_arm::Relocate::relocate): Exit early if relocation
2963
        uses symbol value and symbol is undefined but not weakly undefined.
2964
 
2965
2010-06-28  Rafael Espindola  
2966
 
2967
        * plugin.cc (Plugin::load): Use dlerror.
2968
 
2969
2010-06-26  Jeffrey Yaskin  
2970
 
2971
        * symtab.cc (detect_odr_violations): When reporting an ODR
2972
        violation, report an object where the symbol is defined.
2973
 
2974
2010-06-25  Doug Kwan  
2975
 
2976
        * arm.cc (Target_arm::can_check_for_functions_pointers): Return true.
2977
        (Target_arm::section_may_have_icf_unsafe_pointers): New method
2978
        definition.
2979
        (Target_arm::Scan::local_reloc_may_be_function_pointer,
2980
        Target_arm::Scan::global_reloc_may_be_function_pointer): Implement
2981
        target hook to detect function points.
2982
        (Target_arm::Scan::possible_function_pointer_reloc): New method.
2983
        * icf.h (Icf::check_section_for_function_pointers): Change type of
2984
        parameter SECTION_NAME to const reference to std::string.  Use
2985
        target hook to determine if section may have unsafe pointers.
2986
        * target.h (Target::section_may_have_icf_unsafe_pointers): New
2987
        method definition.
2988
 
2989
2010-06-21  Rafael Espindola  
2990
 
2991
        * fileread.cc (Input_file::find_fie): New
2992
        (Input_file::open): Use Input_file::find_fie.
2993
        * fileread.h (Input_file::find_fie): New
2994
        * plugin.cc (set_extra_library_path): New.
2995
        (Plugin::load): Add set_extra_library_path to the transfer vector.
2996
        (Plugin_manager::set_extra_library_path): New.
2997
        (Plugin_manager::add_input_file): Use the extra search path if set.
2998
        (set_extra_library_path(): New.
2999
        * plugin.h (Plugin_manager): Add set_extra_library_path and
3000
        extra_search_path_.
3001
 
3002
2010-06-19  Cary Coutant  
3003
 
3004
        * layout.cc (gdb_sections): Add .debug_types.
3005
        (lines_only_debug_sections): Likewise.
3006
 
3007
2010-06-18  Rafael Espindola  
3008
 
3009
        * plugin.cc (add_input_file,add_input_library)
3010
        (Plugin_manager::add_input_file): Make filename arguments const.
3011
        * plugin.h (Plugin_manager::add_input_file): Make filename arguments
3012
        const.
3013
 
3014
2010-06-16  Doug Kwan  
3015
 
3016
        * arm.cc (Target_arm::do_finalize_sections): Do not emit an
3017
        .ARM.attributes section if we have not merged any input
3018
        attributes sections.
3019
 
3020
2010-06-15  Viktor Kutuzov  
3021
 
3022
        * arm.cc: Allow combining objects with no EABI version
3023
        information.
3024
 
3025
2010-06-15  Rafael Espindola  
3026
 
3027
        * plugin.cc (Plugin_hook::run): Set in_real_elf for the start symbol.
3028
 
3029
2010-06-15  Viktor Kutuzov  
3030
 
3031
        * fileread.cc: Only #include  if HAVE_READV.
3032
        (struct iovec): Correct !HAVE_READV definition.
3033
 
3034
2010-06-10  Cary Coutant  
3035
 
3036
        * object.cc (Sized_relobj::do_layout): Defer layout for reloc sections.
3037
        (Sized_relobj::do_layout_deferred_sections): Do layout for deferred
3038
        reloc sections.
3039
        * object.h (Sized_relobj::deferred_layout_relocs_): New data member.
3040
 
3041
        PR 11683
3042
        * symtab.h (Symbol::is_placeholder): New member function.
3043
        * target-reloc.h (relocate_section): Check for placeholder symbols.
3044
 
3045
        * testsuite/Makefile.am (plugin_test_8): New test.
3046
        (plugin_test_9): New test.
3047
        * testsuite/Makefile.in: Regenerate.
3048
 
3049
2010-06-09  Nick Clifton  
3050
 
3051
        * yyscript.y (input_list_element): Allow strings prefixed with
3052
        the '-' character.  Treat these as libraries.
3053
        * script.cc (script_add_library): New function.  Adds a library
3054
        specified by "-l" found in an input script.
3055
        * script-c.h: Add prototype for script_add_library.
3056
 
3057
2010-06-07  Doug Kwan  
3058
 
3059
        * arm.cc (Target_arm::do_relax): Reserve more space for stubs.
3060
        Restrict stub-group size to be within long conditional branch
3061
        range when working around cortex-A8 erratum.
3062
 
3063
2010-06-07  Damien Diederen  
3064
 
3065
        * gold-threads.cc (Lock_impl_threads::Lock_impl_threads): Correct
3066
        #ifdef typo.
3067
 
3068
2010-06-03  Sriraman Tallam  
3069
 
3070
        PR gold/11658
3071
        * output.cc
3072
        (Output_section::Input_section_sort_entry::compare_section_ordering):
3073
        Change to return non-zero correctly.
3074
        (Output_section::Input_section_sort_section_order_index_compare
3075
        ::operator()): Change to fix ambiguity in comparisons.
3076
 
3077
2010-06-01  Sriraman Tallam  
3078
 
3079
        * gold.h (is_wildcard_string): New function.
3080
        * layout.cc (Layout::layout): Pass this pointer to add_input_section.
3081
        (Layout::layout_eh_frame): Ditto.
3082
        (Layout::find_section_order_index): New method.
3083
        (Layout::read_layout_from_file): New method.
3084
        * layout.h (Layout::find_section_order_index): New method.
3085
        (Layout::read_layout_from_file): New method.
3086
        (Layout::input_section_position_): New private member.
3087
        (Layout::input_section_glob_): New private member.
3088
        * main.cc (main): Call read_layout_from_file here.
3089
        * options.h (--section-ordering-file): New option.
3090
        * output.cc (Output_section::input_section_order_specified_): New
3091
        member.
3092
        (Output_section::Output_section): Initialize new member.
3093
        (Output_section::add_input_section): Add new parameter.
3094
        Keep input sections when --section-ordering-file is used.
3095
        (Output_section::set_final_data_size): Sort input sections when
3096
        section ordering file is specified.
3097
        (Output_section::Input_section_sort_entry): Add new parameter.
3098
        Check sorting type.
3099
        (Output_section::Input_section_sort_entry::compare_section_ordering):
3100
        New method.
3101
        (Output_section::Input_section_sort_compare::operator()): Change to
3102
        consider section_order_index.
3103
        (Output_section::Input_section_sort_init_fini_compare::operator()):
3104
        Change to consider section_order_index.
3105
        (Output_section::Input_section_sort_section_order_index_compare
3106
        ::operator()): New method.
3107
        (Output_section::sort_attached_input_sections): Change to sort
3108
        according to section order when specified.
3109
        (Output_section::add_input_section<32, true>): Add new parameter.
3110
        (Output_section::add_input_section<64, true>): Add new parameter.
3111
        (Output_section::add_input_section<32, false>): Add new parameter.
3112
        (Output_section::add_input_section<64, false>): Add new parameter.
3113
        * output.h (Output_section::add_input_section): Add new parameter.
3114
        (Output_section::input_section_order_specified): New
3115
        method.
3116
        (Output_section::set_input_section_order_specified): New method.
3117
        (Input_section::Input_section): Initialize section_order_index_.
3118
        (Input_section::section_order_index): New method.
3119
        (Input_section::set_section_order_index): New method.
3120
        (Input_section::section_order_index_): New member.
3121
        (Input_section::Input_section_sort_section_order_index_compare): New
3122
        struct.
3123
        (Output_section::input_section_order_specified_): New member.
3124
        * script-sections.cc (is_wildcard_string): Delete and move modified
3125
        method to gold.h.
3126
        (Output_section_element_input::Output_section_element_input): Modify
3127
        call to is_wildcard_string.
3128
        (Output_section_element_input::Input_section_pattern
3129
        ::Input_section_pattern): Ditto.
3130
        (Output_section_element_input::Output_section_element_input): Ditto.
3131
        * testsuite/Makefile.am (final_layout): New test case.
3132
        * testsuite/Makefile.in: Regenerate.
3133
        * testsuite/final_layout.cc: New file.
3134
        * testsuite/final_layout.sh: New file.
3135
 
3136
2010-06-01  Rafael Espindola  
3137
 
3138
        * plugin.cc (Plugin::load): Pass the output name to the plugin.
3139
 
3140
2010-06-01  Rafael Espindola  
3141
 
3142
        * plugin.cc (Sized_pluginobj::::do_add_symbols): Correctly set the
3143
        visibility of symbols.
3144
 
3145
2010-05-27  Doug Kwan  
3146
 
3147
        * object.cc (Sized_relobj::do_finalize_local_symbols): Use offset
3148
        from start of output section instead of address for a local symbol
3149
        in a merged or relaxed section when doing a relocatable link.
3150
 
3151
2010-05-26  Rafael Espindola  
3152
 
3153
       PR 11604
3154
        * gold/object.cc(Sized_relobj::do_layout_deferred_sections): Avoid
3155
        adding sections the garbage collector removed.
3156
        * gold/testsuite/Makefile.am: Add test.
3157
        * gold/testsuite/Makefile.in: Regenerate.
3158
        * gold/testsuite/plugin_test_7.sh: New.
3159
        * gold/testsuite/plugin_test_7_1.c: New.
3160
        * gold/testsuite/plugin_test_7_2.c: New.
3161
 
3162
2010-05-26  Rafael Espindola  
3163
 
3164
        * script-sections.cc (Output_section_definition::set_section_addresses):
3165
        Check for --section-start.
3166
 
3167
2010-05-26  Doug Kwan  
3168
 
3169
        * arm.cc (Arm_scan_relocatable_relocs): New class.
3170
        (Target_arm::relocate_special_relocatable): New method.
3171
        (Arm_relocate_functions::arm_branch_common): Handle relocatable link.
3172
        (Arm_relocate_functions::thumb_branch_common): Same.
3173
        (Target_arm::scan_relocatable_relocs): Use Arm_scan_relocatable_relocs
3174
        instead of Default_scan_relocatable_relocs.
3175
        * target-reloc.h (relocate_for_relocatable): Let target handle
3176
        relocation strategy Relocatable_relocs::RELOC_SPECIAL.
3177
        * target.h (Sized_target::relocate_special_relocatable): New method.
3178
 
3179
2010-05-25  Viktor Kutuzov  
3180
 
3181
        * timer.cc: Only #include  if HAVE_TIMES is defined.
3182
 
3183
2010-05-23  Doug Kwan  
3184
 
3185
        * arm.cc (Arm_input_section::do_output_offset): Use convert_types
3186
        instead of a cast.
3187
        (Target_arm::apply_cortex_a8_workaround): Rewrite a conditional branch
3188
        with a direct branch, not a conditional branch, to a stub.
3189
        * merge.cc (Output_merge_base::record_input_section): New method
3190
        defintion.
3191
        (Output_merge_data::do_add_input_section): Record input section if
3192
        keeps-input-sections flag is set.
3193
        (Output_merge_string::do_add_input_section): Ditto.
3194
        * merge.h (Output_merge_base::Output_merge_base): Initialize new data
3195
        members KEEPS_INPUT_SECTIONS_, FIRST_RELOBJ_, FIRST_SHNDX_ and
3196
        INPUT_SECTIONS_.
3197
        (Output_merge_base::keeps_input_sections,
3198
        Output_merge_base::set_keeps_input_sections,
3199
        Output_merge_base::first_relobj, Output_merge_base::first_shndx): New
3200
        method definitions.
3201
        (Output_merge_base::Input_sections): New type declaration.
3202
        (Output_merge_base::input_sections_begin,
3203
        Output_merge_base::input_sections_end,
3204
        Output_merge_base::do_set_keeps_input_sections): New method definitions.
3205
        (Output_merge_base::bool keeps_input_sections_,
3206
        Output_merge_base::first_relobj_, Output_merge_base::first_shndx_,
3207
        Output_merge_base::input_sections_): New data members.
3208
        (Output_merge_data::do_set_keeps_input_sections): New method
3209
        defintion.
3210
        (Output_merge_string::do_set_keeps_input_sections): Ditto.
3211
        * output.cc (Output_section::Input_section::relobj): Move method
3212
        defintion from class declaration to here and handle merge sections.
3213
        (Output_section::Input_section::shndx): Ditto.
3214
        (Output_section::Output_section): Remove initializations of removed
3215
        data members and initialize new data member LOOKUP_MAPS_.
3216
        (Output_section::add_input_section): Set keeps-input-sections flag
3217
        for a newly created merge output section as appropriate.  Adjust code
3218
        to use Output_section_lookup_maps class.
3219
        (Output_section::add_relaxed_input_section): Adjst code for lookup
3220
        maps code refactoring.
3221
        (Output_section::add_merge_input_section): Add a new parameter
3222
        KEEPS_INPUT_SECTION.  Adjust code to use Output_section_lookup_maps
3223
        class.  If adding input section to a newly created merge output
3224
        section fails, remove the new merge section.
3225
        (Output_section::convert_input_sections_in_list_to_relaxed_input_sections):
3226
        Adjust code for use of the Output_section_lookup_maps class.
3227
        (Output_section::find_merge_section): Ditto.
3228
        (Output_section::build_lookup_maps): New method defintion.
3229
        (Output_section::find_relaxed_input_section): Adjust code to use
3230
        Output_section_lookup_maps class.
3231
        (Output_section::get_input_sections): Export merge sections.  Adjust
3232
        code to use Output_section_lookup_maps class.
3233
        (Output_section:::add_script_input_section): Adjust code to use
3234
        Output_section_lookup_maps class.  Update lookup maps for merge
3235
        sections also.
3236
        (Output_section::discard_states): Use Output_section_lookup_maps.
3237
        (Output_section::restore_states): Same.
3238
        * output.h (Merge_section_properties): Move class defintion out of
3239
        Output_section.
3240
        (Output_section_lookup_maps): New class.
3241
        (Output_section::Input_section::is_merge_section): New method
3242
        defintion.
3243
        (Output_section::Input_section::relobj): Move defintion out of class
3244
        defintion.  Declare method only.
3245
        (Output_section::Input_section::shndx): Ditto.
3246
        (Output_section::Input_section::output_merge_base): New method defintion.
3247
        (Output_section::Input_section::u2_.pomb): New union field.
3248
        (Output_section::Merge_section_by_properties_map,
3249
        Output_section::Output_section_data_by_input_section_map,
3250
        Output_section::Ouptut_relaxed_input_section_by_input_section_map):
3251
        Remove types.
3252
        (Output_section::add_merge_input_section): Add new parameter
3253
        KEEPS_INPUT_SECTIONS.
3254
        (Output_section::build_lookup_maps): New method declaration.
3255
        (Output_section::merge_section_map_,
3256
        Output_section::merge_section_by_properties_map_,
3257
        Output_section::relaxed_input_section_map_,
3258
        Output_section::is_relaxed_input_section_map_valid_): Remove data
3259
        members.
3260
        (Output_section::lookup_maps_): New data member.
3261
 
3262
2010-05-21  Doug Kwan  
3263
 
3264
        PR gold/11619
3265
        * arm.cc (Arm_input_section::do_output_offset): Add a cast to
3266
        avoid a compilation error.
3267
 
3268
2010-05-19  Rafael Espindola  
3269
 
3270
        * script-sections.cc (Output_section_definition::allocate_to_segment):
3271
        Update the phdrs_list even when the output section is NULL.
3272
        * testsuite/Makefile.am: Add test.
3273
        * testsuite/Makefile.in: Regenerate.
3274
        * testsuite/script_test_9.cc: New.
3275
        * testsuite/script_test_9.sh: New.
3276
        * testsuite/script_test_9.t: New.
3277
 
3278
2010-05-19  Doug Kwan  
3279
 
3280
        * arm.cc (Arm_input_section::original_size): New method.
3281
        (Arm_input_section::do_addralign): Add a cast.
3282
        (Arm_input_section::do_output_offset): Remove static cast.
3283
        (Arm_input_section::original_addralign,
3284
         Arm_input_section::original_size_): Change type to uint32_t.
3285
        (Arm_input_section::init): Add safe casts for section alignment
3286
        and size.
3287
        (Arm_input_section::set_final_data_size): Do not set address and
3288
        offset of stub table.
3289
        (Arm_output_section::fix_exidx_coverage): Change use of of
3290
        Output_section::Simple_input_section to that of
3291
        Output_section::Input_section.
3292
        (Target_arm::do_relax): Set addresses and file offsets of Stub_tables
3293
        except for the first pass.
3294
        * output.cc (Output_section::get_input_sections): Change type of
3295
        input_sections to std::list.
3296
        (Output_section::add_script_input_section): Rename from
3297
        Output_section::add_simple_input_section.  Change type of SIS
3298
        parameter from Simple_input_section to Input_section.
3299
        * output.h (Output_section::Simple_input_section): Remove class.
3300
        (Output_section::Input_section): Change class visibility to public.
3301
        (Output_section::Input_section::addralign): Use stored alignments
3302
        for special input sections if set.
3303
        (Output_section::Input_section::set_addralign): New method.
3304
        (Output_section::get_input_sections): Change parameter type from
3305
        list of Simple_input_section to list of Input_section.
3306
        (Output_section::add_script_input_section): Rename from
3307
        Output_section::add_simple_input_section. Change first parameter's
3308
        type from Simple_input_section to Input_section and remove the
3309
        second and third parameters.
3310
        * script-sections.cc (Input_section::Input_section_list): Change
3311
        type to list of Output_section::Input_section/
3312
        (Input_section_info::Input_section_info): Change parameter type of
3313
        INPUT_SECTION to Output_section::Input_section.
3314
        (Input_section_info::input_section): Change return type.
3315
        (Input_section_info::input_section_): Change type to
3316
        Output_section::Input_section.
3317
        (Output_section_element_input::set_section_addresses): Adjust code
3318
        to use Output_section::Input_section instead of
3319
        Output_section::Simple_input_section.  Adjust code for renaming
3320
        of Output_section::add_simple_input_section.
3321
        (Orphan_output_section::set_section_addresses): Ditto.
3322
 
3323
2010-05-18  Ralf Wildenhues  
3324
 
3325
        * gold.h (Unordered_multimap, Unordered_map): Fix defines for
3326
        when neither HAVE_TR1_UNORDERED_MAP nor HAVE_EXT_HASH_MAP are set.
3327
 
3328
2010-05-18  Rafael Espindola  
3329
 
3330
        * options.cc (General_options::finalize): Handle -nostdlib.
3331
        * options.h (nostdlib): New option.
3332
        * script.cc (script_add_search_dir): Handle -nostdlib.
3333
 
3334
2010-05-12  Doug Kwan  
3335
 
3336
        * arm.cc (Target_arm::do_finalize_sections): Create an empty
3337
        attributes section only if there no attributes section after merging.
3338
        (Target_arm::merge_object_attributes): Move value of
3339
        Tag_MPextension_use_legacy to that of Tag_MPextension_use.
3340
        Handle Tag_DIV_use and Tag_MPextension_use_legacy.
3341
        * testsuite/Makefile.am (check_SCRIPTS): Add arm_attr_merge.sh
3342
        (check_DATA): Add arm_attr_merge_6.stdout, arm_attr_merge_6r_stdout
3343
        and arm_attr_merge_7.stdout.
3344
        (arm_attr_merge_6.stdout, arm_attr_merge_6 arm_attr_merge_6a.o
3345
        arm_attr_merge_6b.o, arm_attr_merge_6r.stdout, arm_attr_merge_6r,
3346
        arm_attr_merge_7.stdout, arm_attr_merge_7, arm_attr_merge_7a.o,
3347
        arm_attr_merge_7b.o): New rules.
3348
        (MOSTLYCLEANFILES): Add arm_attr_merge_6, arm_attr_merge_6r and
3349
        arm_attr_merge_7
3350
        * testsuite/Makefile.in: Regenerate.
3351
        * testsuite/arm_attr_merge.sh: New file.
3352
        * testsuite/arm_attr_merge_[67][ab].s: Same.
3353
 
3354
2010-05-05  Nick Clifton  
3355
 
3356
        * po/es.po: Updated Spanish translation.
3357
 
3358
2010-04-27  H.J. Lu  
3359
 
3360
        * Makefile.am (install-exec-local): Properly install gold as
3361
        default cross linker.
3362
        * Makefile.in: Regenerated.
3363
 
3364
2010-04-27  H.J. Lu  
3365
            Nick Clifton  
3366
 
3367
        * configure.ac (install_as_default): Define and set to false
3368
        unless --enable-gold or --enable-gold=both/gold has been
3369
        specified.
3370
        * configure: Regenerate.
3371
 
3372
        * Makefile.am (install-exec-local): Install the executable as
3373
        'ld.gold'.  If install_as_default is true then also install it as
3374
        'ld'.
3375
        * Makefile.in: Regenerated.
3376
 
3377
2010-04-24  Ian Lance Taylor  
3378
 
3379
        * layout.cc (Layout::layout_reloc): In relocatable link don't
3380
        combine reloc sections for grouped sections.
3381
 
3382
2010-04-23  Sriraman Tallam  
3383
 
3384
        * gc.h (gc_process_relocs): Pass information on relocs pointing to
3385
        sections that are not ordinary to icf.
3386
        * icf.cc (get_section_contents): Handle relocation pointing to section
3387
        with no object or shndx information.
3388
        * testsuite/Makefile.am: Remove icf_virtual_function_folding_test.sh
3389
        * testsuite/Makefile.in: Regenerate.
3390
        * testsuite/icf_virtual_function_folding_test.cc: Remove printf.
3391
        * testsuite/icf_virtual_function_folding_test.sh: Delete file.
3392
 
3393
2010-04-22  Ian Lance Taylor  
3394
 
3395
        * expression.cc (Expression::Expression_eval_info): Add
3396
        result_alignment_pointer field.
3397
        (Expression::eval_with_dot): Add result_alignment_pointer
3398
        parameter.  Change all callers.
3399
        (Expression::eval_maybe_dot): Likewise.
3400
        (class Binary_expression): Add alignment_pointer parameter to
3401
        left_value and right_value.  Change all callers.
3402
        (BINARY_EXPRESSION): Set result alignment.
3403
        (class Trinary_expression): Add alignment_pointer parameter to
3404
        arg2_value and arg3_value.  Change all callers.
3405
        (Trinary_cond::value): Set result alignment.
3406
        (Max_expression::value, Min_expression::value): Likewise.
3407
        (Align_expression::value): Likewise.
3408
        * script-sections.cc (class Sections_element): Add dot_alignment
3409
        parameter to set_section_addresses virtual function.  Update
3410
        instantiations.
3411
        (class Output_section_element): Likewise.
3412
        (Script_sections::create_segments): Add dot_alignment parameter.
3413
        Change all callers.
3414
        (Script_sections::create_segments_from_phdrs_clause): Likewise.
3415
        (Script_sections::set_phdrs_clause_addresses): Likewise.
3416
        * script-sections.h: Update declarations.
3417
        * script.h: Update declarations.
3418
        * output.h (Output_segment::set_minimum_p_align): Don't decrease
3419
        min_p_align.
3420
        * testsuite/script_test_3.t: Set large alignment.
3421
        * testsuite/script_test_3.sh: Make sure that at least one LOAD
3422
        segment has expected alignment.
3423
 
3424
2010-04-22  Nick Clifton  
3425
 
3426
        * po/gold.pot: Updated by the Translation project.
3427
        * po/vi.po: Updated Vietnamese translation.
3428
 
3429
2010-04-22  H.J. Lu  
3430
 
3431
        * testsuite/Makefile.am (check_PROGRAMS): Add
3432
        icf_virtual_function_folding_test.
3433
        * testsuite/Makefile.in: Regenerated.
3434
 
3435
2010-04-15  Andrew Haley  
3436
 
3437
        * options.h (merge_exidx_entries): New option.
3438
        * arm.cc (class Arm_exidx_fixup): Add new arg, merge_exidx_entries.
3439
        (class Arm_exidx_fixup::merge_exidx_entries_): New member.
3440
        (Output_section::fix_exidx_coverage): Add new arg, merge_exidx_entries.
3441
        (Target_arm::merge_exidx_entries): New function.
3442
        (process_exidx_entry): Don't merge if merge_exidx_entries_ is false.
3443
        (Arm_output_section::fix_exidx_coverage): Pass merge_exidx_entries
3444
        to Arm_exidx_fixup constructor.
3445
        Add new arg, merge_exidx_entries.
3446
        (Target_arm::fix_exidx_coverage): pass merge_exidx_entries to
3447
        Arm_output_section::fix_exidx_coverage.
3448
 
3449
2010-04-18  Sriraman Tallam  
3450
 
3451
        * icf.cc (get_section_contents): Check for preemptible functions.
3452
        Ignore addend when appropriate.
3453
        * symtab.cc (should_add_dynsym_entry): Add new parameter.  Check for
3454
        section folded.
3455
        (add_from_relobj): Check for section folded.
3456
        (set_dynsym_indexes): Fix call to should_add_dynsym_entry.
3457
        * symtab.h (should_add_dynsym_entry): Add new parameter.
3458
        * target-reloc.h (scan_relocs): Check for section folded.
3459
        * x86_64.cc (Target_x86_64::Scan::possible_function_pointer_reloc):
3460
        Check reloc types for function pointers in shared objects.
3461
        * testsuite/Makefile.am (icf_virtual_function_folding_test): New test
3462
        case.
3463
        (icf_preemptible_functions_test): New test case.
3464
        (icf_string_merge_test): New test case.
3465
        * testsuite.Makefile.in: Regenerate.
3466
        * testsuite/icf_safe_so_test.sh: Change to not fold foo_glob and
3467
        bar_glob.  Refactor code.
3468
        * testsuite/icf_preemptible_functions_test.cc: New file.
3469
        * testsuite/icf_preemptible_functions_test.sh: New file.
3470
        * testsuite/icf_string_merge_test.cc: New file.
3471
        * testsuite/icf_string_merge_test.sh: New file.
3472
        * testsuite/icf_virtual_function_folding_test.cc: New file.
3473
        * testsuite/icf_virtual_function_folding_test.sh: New file.
3474
 
3475
2010-04-14  Doug Kwan  
3476
 
3477
        * arm.cc (Arm_output_section::fix_exidx_coverage): Mark object
3478
        for local symbol recounting if we remove a section due to ICF.
3479
        * gold.cc (queue_middle_gc_tasks): Create a dummy blocker if
3480
        there are no regular objects in input.
3481
 
3482
2010-04-13  Doug Kwan  
3483
 
3484
        * arm.cc (Arm_input_section::set_final_data_size): Compute
3485
        accurate final data size instead of using current data size.
3486
 
3487
2010-04-09  Doug Kwan  
3488
 
3489
        * layout.cc (Layout::choose_output_section): Handle script section
3490
        types.
3491
        (Layout::make_output_section_for_script): Add section type parameter.
3492
        Handle script section types.
3493
        * layout.h (Layout::make_output_section_for_script): Add section
3494
        type parameter.
3495
        * output.cc (Output_section::Output_section): Initialize data member
3496
        is_noload_.
3497
        (Output_section::do_reset_address_and_file_offset): Do not set address
3498
        to 0 if section is a NOLOAD section.
3499
        * output.h (Output_section::is_noload): New method.
3500
        (Output_section::set_is_noload): Ditto.
3501
        (Output_section::is_noload_): New data member.
3502
        * script-c.h (Script_section_type): New enum type.
3503
        (struct Parser_output_section_header): Add new file section_type.
3504
        * script-sections.cc (Sections_element::output_section_name): Add
3505
        parameter for returning script section type.
3506
        (Output_section_definition::output_section_name): Ditto.
3507
        (Output_section_definition::section_type)P; New method.
3508
        (Output_section_definiton::script_section_type_name): Ditto.
3509
        (Output_section_definition::script_section_type_): New data member.
3510
        (Output_section_definition::Output_section_definition): Initialize
3511
        data member Output_section_definition::script_section_type_.
3512
        (Output_section_definition::create_sections): Pass script section type
3513
        to Layout::make_output_section_for_script.
3514
        (Output_section_definition::output_section_name): Return script
3515
        section type to caller.
3516
        (Output_section_definition::set_section_address): Do not advance
3517
        dot value and load address if section type is NOLOAD.  Set address
3518
        of NOLOAD sections regardless of section flags.
3519
        (Output_section_definition::print): Print section type if it is
3520
        not SCRIPT_SECTION_TYPE_NONE.
3521
        (Output_section_definition::section_type): New method.
3522
        (Output_section_definition::script_section_type_name): Ditto.
3523
        (Script_sections::output_section_name): Add new parameter
3524
        PSECTION_TYPE for returning script section type.  Pass it to
3525
        section elements.  Handle discard sections.
3526
        (Sort_output_sections::operator()): Handle NOLOAD sections.
3527
        * script-sections.h (Script_sections::Section_type): New enum type.
3528
        (Script_sections::output_section_name): Add a new parameter for
3529
        returning script section type.
3530
        * script.cc (script_keyword_parsecodes): Add keywords COPY, DSECT,
3531
        INFO and NOLOAD.
3532
        * yyscript.y (union): Add new field SECTION_TYPE.
3533
        (COPY, DSECT, INFO, NOLOAD): New tokens.
3534
        (opt_address_and_section_type): Change type to output_section_header.
3535
        (section_type): New non-terminal
3536
        (section_header): Handle section type.
3537
        (opt_address_and_section_type): Return section type value.
3538
 
3539
2010-04-09  H.J. Lu  
3540
 
3541
        * testsuite/plugin_common_test_1.c (foo): Add prototype.
3542
        * testsuite/plugin_common_test_2.c (foo): Likewise.
3543
 
3544
2010-04-08  Doug Kwan  
3545
 
3546
        * merge.cc (Output_merge_data::set_final_data_size): Handle empty
3547
        Output_merge_data.
3548
        * output.cc (Output_section::add_merge_input_section): Simplify
3549
        code and return status of Output_merge_base::add_input_section.
3550
        Update merge section map only if Output_merge_base::add_input_section
3551
        returns true.
3552
 
3553
2010-04-07  Doug Kwan  
3554
 
3555
        * arm.cc (Arm_relobj::scan_section_for_cortex_a8_erratum): Warn
3556
        if section is marked as containing instructions but has no mapping
3557
        symbols.
3558
        (Arm_relobj::do_count_local_symbols): Call adjust_sym_shndx to get
3559
        correct section index.
3560
        (Arm_relobj::find_linked_text_section): Ditto.
3561
 
3562
2010-04-07  Cary Coutant  
3563
 
3564
        * archive.cc (include_member): Destroy Read_symbols_data object before
3565
        releasing file.
3566
        * object.cc (Read_symbols_data::~Read_symbols_data) New destructor.
3567
        * object.h (Read_symbols_data::Read_symbols_data) New constructor.
3568
        (Read_symbols_data::~Read_symbols_data) New destructor.
3569
        (Section_relocs::Section_relocs) New constructor.
3570
        (Section_relocs::~Section_relocs) New destructor.
3571
        (Read_relocs_data::Read_relocs_data) New constructor.
3572
        (Read_relocs_data::~Read_relocs_data) New destructor.
3573
        * testsuite/binary_unittest.cc (Sized_binary_test): Set sd member
3574
        pointers to NULL after deleting.
3575
 
3576
2010-04-07  Doug Kwan  
3577
 
3578
        * arm.cc: Replace "endianity" with "endianness" in comments.
3579
        (Arm_exidx_cantunwind): Ditto.
3580
        (Arm_relobj::Arm_relobj): Initialize merge_flags_and_attribures.
3581
        (Arm_relobj::merge_flags_and_attributes): New method.
3582
        (Arm_relobj::merge_flags_and_attributes_): New data member.
3583
        (Arm_exidx_cantunwind::do_fixed_endian_write): Fix formatting.
3584
        (Arm_relobj::scan_sections_for_stubs): Ditto.
3585
        (Arm_relobj::do_read_symbols): Check to see if we really want to
3586
        merge processor-specific flags and attributes.  Exit early if
3587
        an object is empty except for section names and the undefined symbol.
3588
        (Target_arm::do_finalize_sections): Move check for ELF format to
3589
        Arm_relobj::do_read_symbols.  Merge processor specific flags and
3590
        attributes from a regular object only when we have determined that
3591
        it is aapropriate.  Do not create an .ARM.attributes section in
3592
        output if there is no regular input object.
3593
        (Target_arm::merge_processor_specific_flags): Check
3594
        --warn-mismatch before printing any error.
3595
        (Target_arm::merge_object_attributes): Ditto.
3596
        * gold.cc (queue_middle_tasks): Handle the case in which there is
3597
        no regular object in input.
3598
        * options.cc (General_options::parse_EB): New method.
3599
        (General_options::parse_EL): Same.
3600
        (General_options::General_options): Initialize endianness_.
3601
        * options.h (-EB, -EL, -no-pipeline-knowledge, -p, --warn-mismatch):
3602
        New options.
3603
        (General_options::Endianness): New enum.
3604
        (General_options::endianness): New method.
3605
        (General_options::endianness_): New data member.
3606
        * parameters.cc (Parameters::set_options): Check target endianness.
3607
        (Parameters::set_target_once): Ditto.
3608
        (Parameters::check_target_endianness): New method.
3609
        (parameters_force_valid_target): If either -EL or -EB is specified,
3610
        use it to define endianness of default target.
3611
        * parameters.h (Parameters::check_target_endianness): New method
3612
        declaration.
3613
        * target.h (class Target): Change "endianity" to "endianness"
3614
        in comments.
3615
 
3616
2010-04-07  Ralf Wildenhues  
3617
 
3618
        * configure.ac (AM_INIT_AUTOMAKE): Add option no-dist.
3619
        * configure: Regenerate.
3620
        * Makefile.in: Regenerate.
3621
        * testsuite/Makefile.in: Regenerate.
3622
 
3623
2010-04-06  Cary Coutant  
3624
 
3625
        gcc PR lto/42757
3626
        * plugin.cc (Pluginobj::get_symbol_resolution_info): Check for
3627
        prevailing definitions of common symbols.
3628
        * testsuite/plugin_test_6.sh: New test case.
3629
        * testsuite/plugin_common_test_1.c: New test case.
3630
        * testsuite/plugin_common_test_2.c: New test case.
3631
        * testsuite/Makefile.am (plugin_test_6): New test case.
3632
        * testsuite/Makefile.in: Regenerate.
3633
 
3634
2010-04-06  Nick Clifton  
3635
 
3636
        * po/vi.po: New Vietnamese translation.
3637
 
3638
2010-03-30  Doug Kwan  
3639
 
3640
        * arm.cc (Target_arm::using_thumb_only): Handle v6-M
3641
 
3642
2010-03-25  Doug Kwan  
3643
 
3644
        * gold/arm.cc (Arm_exidx_fixup::update_offset_map): Rearrange code
3645
        to avoid a conversion warning on a 32-bit host.
3646
 
3647
2010-03-24  Ian Lance Taylor  
3648
 
3649
        * testsuite/script_test_3.t: Add a TLS segment.
3650
        * testsuite/Makefile.am (check_PROGRAMS): Add
3651
        tls_phdrs_script_test.
3652
        (tls_phdrs_script_test_SOURCES): Define.
3653
        (tls_phdrs_script_test_DEPENDENCIES): Define.
3654
        (tls_phdrs_script_test_LDFLAGS): Define.
3655
        (tls_phdrs_script_test_LDADD): Define.
3656
        * testsuite/Makefile.in: Rebuild.
3657
 
3658
2010-03-23  Cary Coutant  
3659
 
3660
        * fileread.cc (find_or_make_view): Fix comment.
3661
 
3662
2010-03-23  Ian Lance Taylor  
3663
 
3664
        * script-sections.cc (class Orphan_section_placement): Define
3665
        PLACE_TLS and PLACE_TLS_BSS.
3666
        (Orphan_section_placement::Orphan_section_placement): Initialize
3667
        new places.
3668
        (Orphan_section_placement::find_place): Handle SHF_TLS sections.
3669
        * testsuite/Makefile.am (check_PROGRAMS): Add tls_script_test.
3670
        (tls_script_test_SOURCES): Define.
3671
        (tls_script_test_DEPENDENCIES): Define.
3672
        (tls_script_test_LDFLAGS): Define.
3673
        (tls_script_test_LDADD): Define.
3674
        * testsuite/Makefile.in: Rebuild.
3675
 
3676
2010-03-22  Doug Kwan  
3677
 
3678
        * arm.cc (Arm_relocate_functions::abs8,
3679
        Arm_relocate_functions::abs16): Use correct check for overflow
3680
        specified in the ARM ELF specs.
3681
        (Arm_relocate_functions): thumb_branch_common.  Handle bit 1 of branch
3682
        target of a BLX instruction specially.
3683
        (Reloc_stub::stub_type_for_reloc): Ditto.
3684
        (Relocate::relocate): Use symbolic names instead of numeric relocation
3685
        codes to report error.
3686
        (Target_arm::do_relox): Reduce default stub-group size for Cortex-A8
3687
        workaround.
3688
        * testsuite/Makefile.am (check_DATA): add thumb_blx_in_range.stdout,
3689
        thumb_blx_out_of_range.stdout, thumb2_blx_in_range.stdout and
3690
        thumb2_blx_out_of_range.stdout
3691
        (thumb_bl_out_of_range, thumb_bl_out_of_range.o,
3692
        thumb2_bl_out_of_range, thumb2_bl_out_of_range.o): Fix dependenices.
3693
        (thumb_blx_in_range.stdout, thumb_blx_in_range, thumb_blx_in_range.o,
3694
        thumb_blx_out_of_range.stdout, thumb_blx_out_of_range,
3695
        thumb_blx_out_of_range.o, thumb2_blx_in_range.stdout,
3696
        thumb2_blx_in_range, thumb2_blx_in_range.o,
3697
        thumb2_blx_out_of_range.stdout, thumb2_blx_out_of_range,
3698
        thumb2_blx_out_of_range.o): New rules.
3699
        (MOSTLYCLEANFILES): Add thumb_blx_in_range, thumb_blx_out_of_range,
3700
        thumb2_blx_in_range and thumb2_blx_out_of_range.
3701
        * testsuite/Makefile.in: Regenerate.
3702
        * arm_branch_in_range.sh: Add tests for THUMB BLX.
3703
        * testsuite/thumb_blx_in_range.s: New file.
3704
        * testsuite/thumb_blx_out_of_range.s: New file.
3705
 
3706
2010-03-22  Rafael Espindola  
3707
 
3708
        * archive.cc (Should_include): Move to archive.h.
3709
        (should_include_member): Make it a member of Archive.
3710
        (Lib_group): New.
3711
        (Add_lib_group_symbols): New.
3712
        * archive.h: Include options.h.
3713
        (Archive_member): Moved from Archive.
3714
        (Should_include): Moved from archive.cc.
3715
        (Lib_group): New.
3716
        (Add_lib_group_symbols): New.
3717
        * dynobj.cc (do_should_include_member): New.
3718
        * dynobj.h (do_should_include_member): New.
3719
        * gold.cc (queue_initial_tasks): Update call to queue.
3720
        * main.cc (main): Print lib group stats.
3721
        * object.cc (do_should_include_member): New.
3722
        * object.h: Include archive.h.
3723
        (Object::should_include_member): New.
3724
        (Object::do_should_include_member): New.
3725
        (Sized_relobj::do_should_include_member): New.
3726
        * options.cc (General_options::parse_start_lib): New.
3727
        (General_options::parse_end_lib): New.
3728
        (Input_arguments::add_file): Handle lib groups.
3729
        (Input_arguments::start_group): Check we are not in a lib.
3730
        (Input_arguments::start_lib): New.
3731
        (Input_arguments::end_lib): New.
3732
        * options.h (General_options): Add start_lib and end_lib.
3733
        (Input_argument::lib_): New.
3734
        (Input_argument::lib): New.
3735
        (Input_argument::is_lib): New.
3736
        (Input_file_lib): New.
3737
        (Input_arguments::in_lib_): New.
3738
        (Input_arguments::in_lib): New.
3739
        (Input_arguments::start_lib): New.
3740
        (Input_arguments::end_lib_): New.
3741
        * plugin.cc (Pluginobj::get_symbol_resolution_info): Mark symbols
3742
        in unused members as preempted.
3743
        (Sized_pluginobj::do_should_include_member): New.
3744
        * plugin.h (Sized_pluginobj::do_should_include_member): New.
3745
        * readsyms.cc (Read_symbols::locks): If we are just reading a member,
3746
        return the blocker.
3747
        (Read_symbols::do_whole_lib_group): New.
3748
        (Read_symbols::do_lib_group): New.
3749
        (Read_symbols::do_read_symbols): Handle lib groups.
3750
        (Read_symbols::get_name): Handle lib groups.
3751
        * readsyms.h (Read_symbols): Add an archive member pointer.
3752
        (Read_symbols::do_whole_lib_group): New.
3753
        (Read_symbols::do_lib_group): New.
3754
        (Read_symbols::member_): New.
3755
        * script.cc (read_input_script): Update call to queue_soon.
3756
 
3757
2010-03-19  Doug Kwan  
3758
 
3759
        * arm.cc (Stub_table::Stub_table): Initialize new data members
3760
        Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_.
3761
        (Stub_table::add_reloc_stub): Assign stub offset and update
3762
        Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_.
3763
        (Stub_table::reloc_stubs_size_, Stub_table::reloc_stubs_addralign_):
3764
        New data members.
3765
        (Stub_table::update_data_size_and_addralign): Use
3766
        Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_
3767
        instead of going over all reloc stubs.
3768
        (Stub_table::finalize_stubs): Do not assign reloc stub offsets.
3769
        * stringpool.cc (Stringpool_template::Stringpool_template): Initialize
3770
        Stringpool_template::offset_ to size of Stringpool_char.
3771
        (Stringpool_template::new_key_offset): Remove code to initialize
3772
        Stringpool_template::offset_.
3773
        * stringpool.h (Stringpool_template::set_no_zero_null): Set
3774
        Stringpool_template::offset_ to zero.
3775
 
3776
2010-03-15  Doug Kwan  
3777
 
3778
        * stringpool.cc (Stringpool_template::Stringpool_template): Initialize
3779
        offset_.
3780
        (Stringpool_template::new_key_offset): New method.
3781
        (Stringpool_template::add_string): Assign offsets when adding new
3782
        strings.
3783
        (Stringpool_template::set_string_offsets): Do not set string offsets
3784
        when not optimizing.
3785
        * stringpool.h (Chunked_vector::Chunked_vector): Initialize data
3786
        member size_.
3787
        (Chunked_vector::clear): Clear size_.
3788
        (Chunked_vector::reserve): Call reserve method of all Element_vectors.
3789
        (Chunked_vector::size): Return size_.
3790
        (Chunked_vector::push_back): Use size_ to find insert position.
3791
        (Chunked_vector::size_): New data member.
3792
        (Stringpool_template::set_no_zero_null): Assert string set is empty.
3793
        (Stringpool_template::new_key_offset): New method declaration.
3794
        (Stringpool_template::offset_): New data member.
3795
 
3796
2010-03-15   Rafael Espindola  
3797
 
3798
        * readsyms.cc (Read_symbols::do_read_symbols): Update calls to
3799
        Add_symbols' constructor.
3800
        * readsyms.h (Add_symbols): Remove the input_group member.
3801
 
3802
2010-03-10  Ian Lance Taylor  
3803
 
3804
        * reloc.cc (Sized_relobj::split_stack_adjust_reltype): Call the
3805
        target to ask whether a reference to a symbol requires a stack
3806
        split.
3807
        * target.h (Target::is_call_to_non_split): New function.
3808
        (Target::do_is_call_to_non_split): Declare virtual function.
3809
        * target.cc: Include "symtab.h".
3810
        (Target::do_is_call_to_non_split): New function.
3811
        * i386.cc (Target_i386::do_is_call_to_non_split): New function.
3812
 
3813
2010-03-10  Cary Coutant  
3814
 
3815
        * fileread.cc (File_read::~File_read): Don't delete whole_file_view_.
3816
        (File_read::open[1]): Remove initial mapping of whole_file_view_.
3817
        (File_read::open[2]): Add whole_file_view_ to list of views.
3818
        (File_read::make_view): Remove test of whole_file_view_.
3819
        (File_read::find_or_make_view): Create whole_file_view_ if
3820
        necessary.
3821
        (File_read::clear_views): Replace bool parameter with enum;
3822
        adjust all callers.  Don't delete views with permanent data;
3823
        do delete cached views and views from archives if
3824
        --no-keep-files-mapped is set.  Set whole_file_view_ to NULL
3825
        if clearing the corresponding view.
3826
        * fileread.h (File_read::Clear_views_mode): New enum.
3827
        (File_read::View::is_permanent_view): New method.
3828
        (File_read::clear_views): Replace bool parameter
3829
        with enum; adjust all callers.
3830
        * options.h (General_options): Change keep_files_mapped option;
3831
        add map_whole_files.
3832
        * readsyms.cc (Add_symbols::run): Delete sd_ object before
3833
        releasing the file.
3834
        * reloc.cc (Scan_relocs::run): Delete rd_ object before releasing
3835
        the file.
3836
 
3837
2010-03-10  David S. Miller  
3838
 
3839
        * sparc.cc (Target_sparc::Scan::local): Accept R_SPARC_WPLT30.
3840
 
3841
2010-03-09  Sriraman Tallam  
3842
 
3843
        * icf.cc (get_section_contents): Add '@' marker after processing the
3844
        merge reloc.
3845
 
3846
2010-03-08  Doug Kwan  
3847
 
3848
        * gold/arm.cc (Arm_exidx_fixup::update_offset_map): Fix build breakage
3849
        due to a conversion warning.
3850
        (Arm_relobj::update_output_local_symbol_count): Check for local
3851
        symbol with unset output index.
3852
 
3853
2010-03-05  Ian Lance Taylor  
3854
 
3855
        * options.h (class General_options): Add --spare-dynamic-tags.
3856
        * output.cc (Output_data_dynamic::set_final_data_size): Implement
3857
        --spare-dynamic-tags.
3858
 
3859
2010-03-05  Ian Lance Taylor  
3860
 
3861
        * incremental.cc: Include "libiberty.h".
3862
 
3863
2010-03-05  Rainer Orth  
3864
 
3865
        * dynobj.h (Verdef::Verdef): Add is_info arg, is_info member
3866
        function, is_info_ member.
3867
        * dynobj.cc (Verdef::write): Set VER_FLG_INFO if this->is_info_.
3868
        (Versions::Versions): Update caller.
3869
        (Versions::define_base_version): Likewise.
3870
        (Versions::add_def): Likewise.
3871
 
3872
2010-03-03  Sriraman Tallam  
3873
 
3874
        * i386.cc (Target_i386::can_check_for_function_pointers): New function.
3875
        (Scan::possible_function_pointer_reloc): New function.
3876
        (Scan::local_reloc_may_be_function_pointer): Change to call
3877
        possible_function_pointer_reloc.
3878
        (Scan::global_reloc_may_be_function_pointer): Ditto.
3879
        * icf.h (Icf::check_section_for_function_pointers): Change to reject
3880
        relocations in ".data.rel.ro._ZTV" section.
3881
        * testsuite/icf_safe_so_test.sh: Change to pass i386.
3882
        * testsuite/icf_safe_so_test.cc: Ditto.
3883
        * testsuite/icf_safe_test.cc: Ditto.
3884
        * testsuite/icf_safe_test.sh: Ditto.
3885
 
3886
2010-03-03  Viktor Kutuzov  
3887
            Ian Lance Taylor  
3888
 
3889
        * target-reloc.h (relocate_section): Check the symbol table index
3890
        for -1U before setting the local symbol index.
3891
        (scan_relocatable_relocs): If copying the relocation, record that
3892
        the local symbol is required.
3893
        * object.h (Symbol_value::is_output_symtab_index_set): New
3894
        function.
3895
        (Symbol_value::may_be_discarded_from_output_symtab): New
3896
        function.
3897
        (Symbol_value::has_output_symtab_entry): New function.
3898
        (Symbol_value::needs_output_symtab_entry): Remove.
3899
        (Symbol_value::output_symtab_index): Make sure the symbol index is
3900
        set.
3901
        (Symbol_value::set_output_symtab_index): Make sure the symbol
3902
        index is not set.  Make sure the new index is valid.
3903
        (Symbol_value::set_must_have_output_symtab_entry): New function.
3904
        (Symbol_value::has_output_dynsym_entry): New function.
3905
        (Symbol_value::set_output_dynsym_index): Make sure the new index
3906
        is valid.
3907
        (Sized_relobj::set_must_have_output_symtab_entry): New function.
3908
        * object.cc (Sized_relobj::do_count_local_symbols): Only discard a
3909
        local symbol if permitted.
3910
        (Sized_relobj::do_finalize_local_symbols): Call
3911
        is_output_symtab_index_set rather than needs_output_symtab_entry.
3912
        (Sized_relobj::write_local_symbols): Call has_output_symtab_entry
3913
        rather than needs_output_symtab_entry.  Call
3914
        has_output_dynsym_entry rather than needs_output_dynsym_entry.
3915
        * arm.cc (Arm_relobj::update_output_local_symbol_count): Call
3916
        is_output_symtab_index_set rather than needs_output_symtab_entry.
3917
        * testsuite/discard_locals_relocatable_test.c: New file.
3918
        * testsuite/discard_locals_test.sh: Test -r.
3919
        * testsuite/Makefile.am (check_DATA): Add
3920
        discard_locals_relocatable_test1.syms,
3921
        discard_local_relocatable_test2.syms.
3922
        (MOSTLYCLEANFILES): Likewise.  Also add
3923
        discard_locals_relocatable_test1.lout and
3924
        discard_locals_relocatable_test2.out.
3925
        (discard_locals_relocatable_test1.syms): New target.
3926
        (discard_locals_relocatable_test.o): New target.
3927
        (discard_locals_relocatable_test1.out): New target.
3928
        (discard_locals_relocatable_test2.syms): New target.
3929
        (discard_locals_relocatable_test2.out): New target.
3930
        (various): Add missing ../ld-new dependencies.
3931
        * testsuite/Makefile.in: Rebuild.
3932
 
3933
2010-03-03  Nick Clifton  
3934
 
3935
        * po/fi.po: New Finnish translation.
3936
 
3937
2010-03-01  Doug Kwan  
3938
 
3939
        * layout.cc (Layout::Layout): Force section types of .init_array*,
3940
        .preinit_array* and .fini_array* sections.
3941
        * output.cc (Output_section::Input_section_sort_entry::has_priority):
3942
        Fix check of return value of std::string::find.().
3943
        (Output_section::Input_section_sort_compare::operator()): Remove
3944
        comment about .init_array.
3945
        (Output_section::Input_section_sort_init_fini_compare::operator()):
3946
        New method.
3947
        (Output_section::sort_attached_input_sections): Handle .init_array
3948
        and .fini_array specially.
3949
        * output.h (Output_section::Inut_section_sort_compare): Update
3950
        comment.
3951
        (Output_section::Input_section_sort_init_fini_compare): New struct.
3952
 
3953
2010-02-26  Doug Kwan  
3954
 
3955
        * arm.cc (Target_arm::Relocate::reloc_is_non_pic): Treat
3956
        R_ARM_PREL31 and R_ARM_SBREL31 as position independent.
3957
        * testsuite/debug_msg.sh: Avoid matching source line number for
3958
        use of global variable undef_int.
3959
 
3960
2010-02-26  Doug Kwan  
3961
 
3962
        * arm.cc (Target_arm::scan_reloc_for_stub): Move code handling
3963
        R_ARM_V4BX to Target_arm::scan_reloc_section_for_stubs.
3964
        (Target_arm::scan_reloc_section_for_stubs): Instead of calling
3965
        scan_reloc_for_stub, do all processing of R_ARM_V4BX here.
3966
        * options.cc (General_options::General_options): Initialize member
3967
        fix_v4bx_.
3968
        * testsuite/Makefile.am (check_SCRIPTS): Add arm_fix_v4bx.sh
3969
        (check_DATA): Add arm_fix_v4bx.stdout, arm_fix_v4bx_interworking.stdout
3970
        and rm_no_fix_v4bx.stdout
3971
        (arm_fix_v4bx.stdout, arm_fix_v4bx, arm_fix_v4bx.o,
3972
        arm_fix_v4bx_interworking.stdout, arm_fix_v4bx_interworking,
3973
        arm_no_fix_v4bx.stdout, arm_no_fix_v4bx): New make rules.
3974
        (MOSTLYCLEANFILES): Add arm_fix_v4bx, arm_fix_v4bx_interworking
3975
        and arm_no_fix_v4bx.
3976
        * Makefile.in: Regenerate.
3977
        * testsuite/arm_fix_v4bx.s: New file.
3978
        * testsuite/arm_fix_v4bx.sh: Ditto.
3979
 
3980
2010-02-24  Doug Kwan  
3981
 
3982
        * arm.cc (Target_arm::got_section): Make the .got section the first
3983
        non RELRO section in the data segment.
3984
        * testsuite/script_test_5.sh: Fix match patterns to avoid matching
3985
        suffixes of section names.
3986
 
3987
2010-02-24  Doug Kwan  
3988
 
3989
        * arm.cc (Target_arm::do_finalize_sections): Skip processor specific
3990
        flags and attributes merging if an input file is a binary file.
3991
        * fileread.cc (Input_file::open): Record format of original file.
3992
        * fileread.h (Input_file::Format): New enum type.
3993
        (Input_file::Input_file): Initialize data member format_.
3994
        (Input_file::format): New method definition.
3995
        (Input_file::format_):: New data member.
3996
 
3997
2010-02-24  Doug Kwan  
3998
 
3999
        * arm.cc (Arm_output_data_got): New class.
4000
        (ARM_TCB_SIZE): New constant
4001
        (Target_arm): Use Arm_output_data_got instead of Output_data_got.
4002
        (Arm_output_section::fix_exidx_coverage): Add a parameter for layout.
4003
        If user uses a script with a SECTIONS clause, issue only a warning
4004
        for a misplaced EXIDX input section.  Otherwise, issue an error.
4005
        (Arm_relobj::do_gc_process_relocs): Exit early if we are not doing
4006
        garbage collection.
4007
        (Target_arm::got_mode_index_entry): Handle static linking.
4008
        (Target_arm::Scan::local): Ditto.
4009
        (Target_arm::Scan::global): Ditto.
4010
        (Target_arm::Relocate::relocate_tls): Handle static linking.  Fix
4011
        all incorrectly implemented relocations.
4012
        (Target_arm::fix_exidx_coverage): Pass layout to
4013
        Arm_output_section::fix_exidx_coverage.
4014
        * layout.cc (Layout::section_name_mapping): Remove trailing dots
4015
        from ".ARM.exidx." and ".ARM.extab.".
4016
 
4017
2010-02-23  Viktor Kutuzov  
4018
 
4019
        * arm.cc (Target_arm::do_finalize_sections): Create attribute
4020
        section if it does not already exist.
4021
        * attributes.cc (Attributes_section_data::Attributes_section_data):
4022
        Don't crash if size is zero.
4023
 
4024
2010-02-23  Viktor Kutuzov  
4025
            Ian Lance Taylor  
4026
 
4027
        * gold.cc (queue_middle_tasks): If no input files were opened,
4028
        exit.
4029
        * workqueue.h (Task_function::Task_function): Assert that there is
4030
        a blocker.
4031
 
4032
2010-02-22  Doug Kwan  
4033
 
4034
        * gold-threads.h (Once::~Once): Explicitly define virtual destructor.
4035
        * icf.cc (get_section_contents): Cast snprintf arguments to long long
4036
        types to avoid warnings due to different uint64_t implementations
4037
        on different hosts.
4038
 
4039
2010-02-21  Doug Kwan  
4040
 
4041
        * arm.cc (Arm_relocate_functions::arm_branch_common): Fix bug in
4042
        handling of the maximum backward branch offset.
4043
        (Arm_relocate_functions::thumb_branch_common): Ditto.
4044
        * testsuite/Makefile.am (check_SCRIPTS): Add arm_branch_in_range.sh.
4045
        (check_DATA): Add arm_bl_in_range.stdout, arm_bl_out_of_range.stdout
4046
        thumb_bl_in_range.stdout, thumb_bl_out_of_range.stdout,
4047
        thumb2_bl_in_range.stdout and thumb2_bl_out_of_range.stdout.
4048
        (arm_bl_in_range.stdout, arm_bl_in_range, arm_bl_in_range.o,
4049
        arm_bl_out_of_range.stdout, arm_bl_out_of_range,
4050
        arm_bl_out_of_range.o, thumb_bl_in_range.stdout, thumb_bl_in_range,
4051
        thumb_bl_in_range.o, thumb_bl_out_of_range.stdout,
4052
        thumb_bl_out_of_range thumb_bl_out_of_range.o,
4053
        thumb2_bl_in_range.stdout, thumb2_bl_in_range, thumb2_bl_in_range.o
4054
        thumb2_bl_out_of_range.stdout, thumb2_bl_out_of_range,
4055
        thumb2_bl_out_of_range.o): New rules.
4056
        (MOSTLYCLEANFILES): Add arm_bl_in_range, arm_bl_out_of_range,
4057
        thumb_bl_in_range, thumb_bl_out_of_range, thumb2_bl_in_range and
4058
        thumb2_bl_out_of_range
4059
        * testsuite/Makefile.in: Regenerate.
4060
        * testsuite/arm_bl_in_range.s: New file.
4061
        * testsuite/arm_bl_out_of_range.s: Ditto.
4062
        * testsuite/arm_branch_in_range.sh: Ditto.
4063
        * testsuite/arm_branch_range.t: Ditto.
4064
        * testsuite/thumb2_branch_range.t: Ditto.
4065
        * testsuite/thumb_bl_in_range.s: Ditto.
4066
        * testsuite/thumb_bl_out_of_range.s: Ditto.
4067
        * testsuite/thumb_branch_range.t: Ditto.
4068
 
4069
2010-02-20  Sriraman Tallam  
4070
 
4071
        * gc.h (gc_process_relocs): Change vectors to point to the new list.
4072
        Add reloc offset information.
4073
        * icf.cc (get_section_contents): Change iterators to point to the new
4074
        vectors. Add reloc offset information to the contents.
4075
        * icf.h (Icf::Sections_reachable_info): New typedef.
4076
        (Icf::Sections_reachable_list): New typedef.
4077
        (Icf::Offset_info): New typedef.
4078
        (Icf::Reloc_info): New struct typedef.
4079
        (Icf::Reloc_info_list): New typedef.
4080
        (Icf::symbol_reloc_list): Delete method.
4081
        (Icf::addend_reloc_list): Delete method.
4082
        (Icf::section_reloc_list): Delete method.
4083
        (Icf::reloc_info_list): New method.
4084
        (Icf::reloc_info_list_): New member.
4085
 
4086
2010-02-19  Doug Kwan  
4087
 
4088
        * arm-reloc.def: Mark R_ARM_TLS_GD32, R_ARM_TLS_LDM32,
4089
        R_ARM_TLS_LDO32, R_ARM_TLS_IE32 and R_ARM_TLS_LE32 are implemented.
4090
        * arm.cc (Arm_relocation_functions): New forward declaration.
4091
        (Target_arm::Target_arm): Initialize new data members
4092
        got_mod_index_offset_ and tls_base_symbol_defined_.
4093
        (Target_arm::Relocate::relocate_tls): New method.
4094
        (Target_arm::optimize_tls_reloc, Target_arm::define_tls_base_symbol,
4095
         Target_arm::got_mod_index_entry, Target_arm::rel_tls_desc_section):
4096
        New methods.
4097
        (Target_arm::Got_type): Add GOT_TYPE_TLS_NOFFSET, GOT_TYPE_OFFSET,
4098
        GOT_TYPE_TLS_PAIR and GOT_TYPE_TLS_DESC.
4099
        (Target_arm::got_mod_index_offset_,
4100
        Target_arm::tls_base_symbol_defined_): New data members.
4101
        (Target_arm::Scan::local, Target::Scan::global,
4102
        Target_arm::Relocate::relocate): Handle 32-bit initial TLS
4103
        relocations.
4104
 
4105
2010-02-18  Doug Kwan  
4106
 
4107
        * arm.cc (Arm_relobj::find_linked_text_section): New method.
4108
        (Arm_relobj::make_exidx_input_section): Pass section index of linked
4109
        text section as a parameter becuase some broken tools may not set
4110
        the link in section header.
4111
        (Target_arm::has_got_section): New method.
4112
        (Target_arm::scan_section_for_cortex_a8_stubs): Treat an input section
4113
        without any mapping symbol as data only.  Remove warning.
4114
        (Arm_relobj::do_read_synbols): If an EXIDX input section has no
4115
        link in its section header, try to discover the link by inspecting the
4116
        REL31 relocation at the beginning of the section.
4117
        (Target_arm::Scan::check_non_pic): Report name of offending relocation
4118
        in error message.
4119
        (Target_arm::Scan::global): Treat any reference to the symbol
4120
        _GLOBAL_OFFSET_TABLE_ as a GOT access.
4121
 
4122
2010-02-12  Sriraman Tallam  
4123
 
4124
        * arm.cc (Scan::local_reloc_may_be_function_pointer): New function.
4125
        (Scan::global_reloc_may_be_function_pointer): New function.
4126
        * sparc.cc (Scan::local_reloc_may_be_function_pointer): New function.
4127
        (Scan::global_reloc_may_be_function_pointer): New function.
4128
        * powerpc.cc (Scan::local_reloc_may_be_function_pointer): New function.
4129
        (Scan::global_reloc_may_be_function_pointer): New function.
4130
        * i386.cc (Scan::local_reloc_may_be_function_pointer): New function.
4131
        (Scan::global_reloc_may_be_function_pointer): New function.
4132
        * x86_64.cc (Scan::local_reloc_may_be_function_pointer): New function.
4133
        (Scan::global_reloc_may_be_function_pointer): New function.
4134
        (Scan::possible_function_pointer_reloc): New function.
4135
        (Target_x86_64::can_check_for_function_pointers): New function.
4136
        * gc.h (gc_process_relocs): Scan relocation types to determine if
4137
        function pointers were taken for targets that support it.
4138
        * icf.cc (Icf::find_identical_sections): Include functions for
4139
        folding in safe ICF whose pointer is not taken.
4140
        * icf.h (Secn_fptr_taken_set): New typedef.
4141
        (fptr_section_id_): New member.
4142
        (section_has_function_pointers): New function.
4143
        (set_section_has_function_pointers): New function.
4144
        (check_section_for_function_pointers): New function.
4145
        * options.h: Fix comment for safe ICF option.
4146
        * target.h (can_check_for_function_pointers): New function.
4147
        * testsuite/Makefile.am: Add icf_safe_so_test test case.
4148
        Modify icf_safe_test for X86-64.
4149
        * testsuite/Makefile.in: Regenerate.
4150
        * testsuite/icf_safe_so_test.cc: New file.
4151
        * testsuite/icf_safe_so_test.sh: New file.
4152
        * testsuite/icf_safe_test.cc (kept_func_3): New function.
4153
        (main): Change to take pointer to function kept_func_3.
4154
        * testsuite/icf_safe_test.sh (arch_specific_safe_fold): Check if safe
4155
        folding is done correctly for X86-64.
4156
 
4157
2010-02-12  David S. Miller  
4158
 
4159
        * output.h (Output_reloc::Output_reloc): Add
4160
        is_symbolless parameter.
4161
        (Output_reloc::is_symbolless): New.
4162
        (Output_reloc::is_symbolless_): New.
4163
        (Output_reloc::type_): Decrease to 29 bits.
4164
        (Output_reloc::Output_reloc): Add is_symbolless parameter.
4165
        (Output_reloc::is_symbolless): New.
4166
        (Output_data_reloc::add_global): Handle is_symbolless.
4167
        (Output_data_reloc::add_global_relative): Likewise.
4168
        (Output_data_reloc::add_local): Likewise.
4169
        (Output_data_reloc::add_local_relative): Likewise.
4170
        (Output_data_reloc::add_symbolless_global_addend): New.
4171
        (Output_data_reloc::add_symbolless_local_addend): New.
4172
        * output.cc (Output_reloc::Output_reloc): Handle
4173
        is_symbolless.
4174
        (Output_reloc::set_needs_dynsym_index): Test ->is_symbolless_
4175
        instead of ->is_relative_
4176
        (Output_reloc::write): Likewise.
4177
        (Output_reloc::get_symbol_index): Return 0 when ->is_symbolless_
4178
        (Output_reloc::write_rel): Simplify.
4179
 
4180
        * sparc.cc (Target_sparc::Scan::local): Use
4181
        ->add_symbolless_local_addend as needed.
4182
        (Target_sparc::Scan::global): Use ->add_symbolless_global_addend as
4183
        needed.  Also, emit appropriate unaligned vs. aligned dynamic reloc
4184
        based upon relocation offset.
4185
 
4186
2010-02-11  Doug Kwan  
4187
 
4188
        * arm.cc (Target_arm::Scan::local): Fix bugs in relocation handling.
4189
        (Target_arm::Scan::global): Ditto.  Also remove a comment before the
4190
        beginning of function.
4191
        (Target_arm::Relocate::relocate): Remove error messages for MOVW_ABS
4192
        and MOVT_ABS relocations.  Those are non issued in scanning.  Fix
4193
        parameter is_32bit in calls to should_apply_static_reloc.
4194
        * testsuite/Makefile.am (check_SCRIPTS): Add arm_abs_global.sh.
4195
        (check_DATA): Add arm_abs_global.stdout.
4196
        (arm_abs_lib.o, libarm_abs.so, arm_abs_global.o, arm_abs_global,
4197
        arm_abs_global.stdout): New rules.
4198
        (MOSTLLYCLEANFILES): Add arm_abs_global
4199
        * Makefile.in: Regenerate.
4200
        * testsuite/arm_abs_global.s: New file.
4201
        * testsuite/arm_abs_global.sh: Ditto.
4202
        * testsuite/arm_abs_lib.s: Ditto.
4203
 
4204
2010-02-11  Ian Lance Taylor  
4205
 
4206
        * gold.cc (queue_middle_gc_tasks): Use a separate blocker for each
4207
        Read_relocs task.
4208
        (queue_middle_tasks): Likewise, and also for Scan_relocs.  Run
4209
        Allocate_commons_task first.
4210
        * reloc.cc (Read_relocs::run): Pass next_blocker_ down to next
4211
        task, rather than symtab_lock_.
4212
        (Gc_process_relocs::~Gc_process_relocs): New function.
4213
        (Gc_process_relocs::is_runnable): Check this_blocker_.
4214
        (Gc_process_relocs::locks): Use next_blocker_ rather than
4215
        blocker_.
4216
        (Scan_relocs::~Scan_relocs): New function.
4217
        (Scan_relocs::is_runnable): Check this_blocker_ rather than
4218
        symtab_lock_.
4219
        (Scan_relocs::locks): Drop symtab_lock_ and blocker_.  Add
4220
        next_blocker_.
4221
        * reloc.h (class Read_relocs): Drop symtab_lock_ and blocker_
4222
        fields.  Add this_blocker_ and next_blocker_ fields.  Adjust
4223
        constructor accordingly.
4224
        (class Gc_process_relocs): Likewise.
4225
        (class Scan_relocs): Likewise.
4226
        * common.h (class Allocate_commons_task): Remove symtab_lock_
4227
        field, and corresponding constructor parameter.
4228
        * common.cc (Allocate_commons_tasK::is_runnable): Remove use of
4229
        symtab_lock_.
4230
        (Allocate_commons_task::locks): Likewise.
4231
 
4232
2010-02-11  Ian Lance Taylor  
4233
 
4234
        * gold-threads.h (class Once): Define.
4235
        (class Initialize_lock): Rewrite as child of Once.
4236
        * gold-threads.cc (class Once_initialize): Define.
4237
        (once_pointer_control): New static variable.
4238
        (once_pointer, once_arg): New static variables.
4239
        (c_run_once): New static function.
4240
        (Once::Once, Once::run_once, Once::internal_run): New functions.
4241
        (class Initialize_lock_once): Remove.
4242
        (initialize_lock_control): Remove.
4243
        (initialize_lock_pointer): Remove.
4244
        (initialize_lock_once): Remove.
4245
        (Initialize_lock::Initialize_lock): Move to gold-threads.h.
4246
        (Initialize_lock::initialize): Rewrite.
4247
        (Initialize_lock::do_run_once): New function.
4248
        * archive.cc (Archive::interpret_header): Only clear name if it is
4249
        not already empty.
4250
        * fileread.cc: Include "gold-threads.h"
4251
        (file_counts_lock): New static variable.
4252
        (file_counts_initialize_lock): Likewise.
4253
        (File_read::release): Only increment counts when using --stats.
4254
        Use a lock around the increment.
4255
        * parameters.cc (class Set_parameters_target_once): Define.
4256
        (set_parameters_target_once): New static variable.
4257
        (Parameters::Parameters): Move here from parameters.h.
4258
        (Parameters::set_target): Rewrite.
4259
        (Parameters::set_target_once): New function.
4260
        (Parameters::clear_target): Move here and rewrite.
4261
        * parameters.h (class Parameters): Update declarations.  Add
4262
        set_parameters_target_once_ field.
4263
        (Parameters::Parameters): Move to parameters.cc.
4264
        (Parameters::clear_target): Likewise.
4265
        * readsyms.cc (Read_symbols::do_group): Create a Start_group
4266
        task.
4267
        (Start_group::~Start_group): New function.
4268
        (Start_group::is_runnable): New function.
4269
        (Start_group::locks, Start_group::run): New functions.
4270
        (Finish_group::run): Change saw_undefined to size_t.
4271
        * readsyms.h (class Start_group): Define.
4272
        (class Finish_group): Change saw_undefined_ field to size_t.
4273
        (Finish_group::Finish_group): Remove saw_undefined and
4274
        this_blocker parameters.  Change all callers.
4275
        (Finish_group::set_saw_undefined): New function.
4276
        (Finish_group::set_blocker): New function.
4277
        * symtab.h (class Symbol_table): Change saw_undefined to return
4278
        size_t.  Change saw_undefined_ field to size_t.
4279
        * target-select.cc (Set_target_once::do_run_once): New function.
4280
        (Target_selector::Target_selector): Initialize set_target_once_
4281
        field.  Don't initialize lock_ and initialize_lock_ fields.
4282
        (Target_selector::instantiate_target): Rewrite.
4283
        (Target_selector::set_target): New function.
4284
        * target-select.h (class Set_target_once): Define.
4285
        (class Target_selector): Update declarations.  Make
4286
        Set_target_once a friend.  Remove lock_ and initialize_lock_
4287
        fields.  Add set_target_once_ field.
4288
 
4289
2010-02-10  Ian Lance Taylor  
4290
 
4291
        * dirsearch.cc (Dirsearch::initialize): Add all blockers before
4292
        queueing any tasks.
4293
        * gold.cc (queue_middle_gc_tasks): Likewise.  Fix final blocker.
4294
        (queue_middle_tasks): Add all blockers before queueing any tasks.
4295
        (queue_final_tasks): Likewise.
4296
        * token.h (Task_token::add_blockers): New function.
4297
        * object.h (Input_objects::number_of_relobjs): New function.
4298
 
4299
2010-02-10  Ian Lance Taylor  
4300
 
4301
        * i386.cc (Relocate::relocate_tls): A local symbol is final if not
4302
        shared, not if not position independent.
4303
        * x86_64.cc (Relocate::relocate_tls): Likewise.
4304
        * testsuite/Makefile.am (check_PROGRAMS): Add tls_pie_pic_test.
4305
        (tls_pie_pic_test): New target.
4306
        * testsuite/Makefile.in: Rebuild.
4307
 
4308
        * testsuite/Makefile.am (check_PROGRAMS): Add tls_pie_test.
4309
        (tls_test_main_pie.o, tls_test_pie.o): New targets.
4310
        (tls_test_file2_pie.o, tls_test_c_pie.o, tls_pie_test): Likewise.
4311
        * testsuite/Makefile.in: Rebuild.
4312
 
4313
2010-02-09  David S. Miller  
4314
 
4315
        * sparc.cc (Target_sparc::Scan::local): Do not emit relocs other than
4316
        R_SPARC_RELATIVE using ->add_local_relative().
4317
        (Target_sparc::Scan::global): Likewise for ->add_global_relative().
4318
 
4319
        * output.h (Output_data_dynamic::add_section_size): New method
4320
        that takes two Output_data objects.
4321
        (Output_data_dynamic::Dynamic_entry): Create storage for secondary
4322
        entry param.  Handle it in initializers.
4323
        * output.cc (Output_data_dynamic::Dynamic_entry::write): For
4324
        DYNAMIC_SECTION_SIZE, add in second object size if non-NULL.
4325
        * layout.h (Layout::add_target_dynamic_tags): Add dynrel_includes_plt
4326
        arg.
4327
        * layout.cc (Layout::add_target_dynamic_tags): If dynrel_includes_plt,
4328
        and .rela.plt exists, set DT_REL{,A}SZ to sum of .rela.dyn and .rela.plt
4329
        * arm.cc (Target_arm::do_finalize_sections): Update to pass false
4330
        for dynrel_includes_plt.
4331
        * i386.cc (Target_i386::do_finalize_sections): Likewise.
4332
        * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
4333
        * sparc.cc (Target_sparc::make_plt_entry): Force .rela.dyn to be output
4334
        before .rela.plt
4335
        (Target_sparc::do_finalize_sections): Update to pass true for
4336
        dynrel_includes_plt.
4337
        * powerpc.cc (Target_powerpc::make_plt_entry): Force .rela.dyn to be
4338
        output before .rela.plt
4339
        (Target_powerpc::do_finalize_sections): Update to pass true for
4340
        dynrel_includes_plt when 32-bit.
4341
 
4342
2010-02-08  Doug Kwan  
4343
 
4344
        * arm.cc (Arm_relobj::simple_input_section_output_address): New
4345
        method.
4346
        (Arm_relobj::section_needs_cortex_a8_stub_scanning,
4347
        Arm_relobj::scan_section_for_cortex_a8_stubs,
4348
        Arm_relobj::do_relocation_section): Instead of calling
4349
        Output_section::output_address, use faster
4350
        Arm_relobj::simple_input_section_output_address.
4351
 
4352
2010-02-08  David S. Miller  
4353
 
4354
        * sparc.cc (Target_sparc::Relocate::relocate): If relocation offset is
4355
        unaligned for R_SPARC_16, R_SPARC_32, or R_SPARC_64, use the unaligned
4356
        relocation helper function.
4357
 
4358
        * sparc.cc (Target_sparc::Scan::local): Handle R_SPARC_GOTDATA_OP*
4359
        just like R_SPARC_GOT{10,13,22}.
4360
        (Target_sparc::Scan::local): Likewise.
4361
        (Target_sparc::Relocate:relocate): Likewise.
4362
 
4363
2010-02-06  Ian Lance Taylor  
4364
 
4365
        * configure.ac: Rewrite targetobjs duplicate removal code to use
4366
        only shell constructs.
4367
        * configure: Rebuild.
4368
 
4369
2010-02-05  Doug Kwan  
4370
 
4371
        PR 11247
4372
        * arm.cc (Arm_relobj::section_is_scannable): New method.
4373
        (Arm_relobj::section_needs_reloc_stub_scanning): Use it.
4374
        (Arm_relobj::section_needs_cortex_a8_stub_scanning): Same.
4375
 
4376
2010-02-04  Doug Kwan  
4377
 
4378
        PR 11247
4379
        * arm-reloc-property.cc (cstdio): Include.
4380
        * configure.ac (targetobjs): Remove duplicates.
4381
        * configure: Regenerate.
4382
        * resolve.cc (Symbol_table::resolve): Explicit instantiate both
4383
        big and little endian version for a given address size.
4384
 
4385
2010-02-03  Doug Kwan  
4386
 
4387
        * arm-reloc-property.cc
4388
        (Arm_reloc_property_table::reloc_name_in_error_message): New method
4389
        definition.
4390
        * arm-reloc-property.h
4391
        (Arm_reloc_property_table::get_implemented_static_reloc_property):
4392
        New method definition.
4393
        (Arm_reloc_property_table::reloc_name_in_error_message): New method
4394
        declaration.
4395
        * arm-reloc.def (THM_MOVT_ABS, THM_MOVT_PREL, THM_MOVT_BREL): Change
4396
        overflow to N.
4397
        (GOT_PREL): Change implemented to Y.
4398
        * arm.cc (Target_arm::reloc_uses_thumb_bit): Remove method.
4399
        (Target_arm::Relocate::reloc_needs_sym_origin): Remove method.
4400
        (Arm_relocate_functions::movw_abs_nc): Remove method.
4401
        (Arm_relocate_functions::movt_abs): Ditto.
4402
        (Arm_relocate_functions::thm_movw_abs_nc): Ditto.
4403
        (Arm_relocate_functions::thm_movt_abs): Ditto.
4404
        (Arm_relocate_functions::movw_rel_nc): Ditto.
4405
        (Arm_relocate_functions::movw_rel): Ditto.
4406
        (Arm_relocate_functions::movt_rel): Ditto.
4407
        (Arm_relocate_functions:thm_movw_rel_nc): Ditto.
4408
        (Arm_relocate_functions:thm_movw_rel): Ditto.
4409
        (Arm_relocate_functions:thm_movt_rel): Ditto.
4410
        (Arm_relocate_functions::movw, Arm_relocate_functions::movt,
4411
        (Arm_relocate_functions::thm_movw, Arm_relocate_functions::thm_movt):
4412
        New method definitions.
4413
        (Arm_relocation_functions::arm_grp_alu): Add assertion for group index.
4414
        (Arm_relocation_functions::arm_grp_ldr): Ditto.
4415
        (Arm_relocation_functions::arm_grp_ldrs): Ditto.
4416
        (Arm_relocation_functions::arm_grp_ldc): Ditto.
4417
        (Target_arm::Relocate::relocate): Check for non-static or
4418
        unimplemented relocation code and exit early.  Change calls to
4419
        Target_arm::reloc_uses_thumb_bit and
4420
        Target_arm::Reloc::reloc_needs_sym_origin to use relocation property
4421
        instead.  Refactor code to handle similar relocations to increase
4422
        code sharing.  Remove check for unsupported relocation code in switch
4423
        statement.
4424
        (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Use
4425
        relocation property table to find out size.  Change error message to
4426
        print out the name of a relocation code instead of the numeric value.
4427
        (Target_arm::scan_reloc_for_stub): Use relocation property table
4428
        instead of calling Target_arm::reloc_uses_thumb_bit().
4429
 
4430
2010-02-02  Doug Kwan  
4431
 
4432
        * arm.cc (Target_arm::relocate_section): Do view adjustment for all
4433
        types of relaxed input section.
4434
 
4435
2010-02-02  Doug Kwan  
4436
 
4437
        * Makefile.am (HFILES): Add arm-reloc-property.h.
4438
        (DEFFILES): New.
4439
        (TARGETSOURCES): Add arm-reloc-property.cc
4440
        (ALL_TARGETOBJS): Add arm-reloc-property.$(OBJEXT)
4441
        (libgold_a_SOURCES): $(DEFFILES)
4442
        * Makefile.in: Regenerate.
4443
        * arm-reloc-property.cc: New file.
4444
        * arm-reloc-property.h: New file.
4445
        * arm-reloc.def: New file.
4446
        * arm.cc: Update comments.
4447
        (arm-reloc-property.h): New included header.
4448
        (arm_reloc_property_table): New global variable.
4449
        (Target_arm::do_select_as_default_target): New method definition.
4450
        * configure.tgt (armeb*-*-*,armbe*-*-*,arm*-*-*): Add
4451
        arm-reloc-property to targ_extra_obj.
4452
        * parameters.cc (set_parameters_target): Call
4453
        Target::select_as_default_target().
4454
        * target.h (Target::select_as_default_target): New method definition.
4455
        (Target::do_select_as_default_target): Same.
4456
 
4457
2010-02-01  Doug Kwan  
4458
 
4459
        * arm.cc (Arm_exidx_fixup::Arm_exidx_fixup): Initialize
4460
        first_output_text_section_.
4461
        (Arm_exidx_fixup::first_output_text_section): New method definition.
4462
        (Arm_exidx_fixup::first_output_text_section_): New data member.
4463
        (Arm_exidx_fixup::process_exidx_section): Record the first text
4464
        output section seen.
4465
        (Arm_output_section::fix_exidx_coverage): Set correct linked section
4466
        and entsize in output section header.
4467
 
4468
2010-01-29  Viktor Kutuzov  
4469
 
4470
        * gold/arm.cc: Added support for the ARM relocations: R_ARM_THM_PC8,
4471
        R_ARM_THM_PC12, R_ARM_THM_ALU_PREL_11_0.
4472
        (Arm_relocate_functions::thm_alu11): New Method.
4473
        (Arm_relocate_functions::thm_pc8): New Method.
4474
        (Arm_relocate_functions::thm_pc12): New Method.
4475
        (Target_arm::Scan::local): Handle the relocations.
4476
        (Target_arm::Scan::global): Likewise.
4477
        (Target_arm::Relocate::relocate): Likewise.
4478
        (Target_arm:Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
4479
 
4480
2010-01-29  Doug Kwan  
4481
 
4482
        * arm.cc (Target_arm::Scan::global): General PLTs for the same set
4483
        of relocation types as ld.
4484
 
4485
2010-01-29  Doug Kwan  
4486
 
4487
        * arm.cc (Arm_relocate_functions::arm_branch_common) Change visibility
4488
        to public.
4489
        (Arm_relocate_functions::thumb_branch_common): Ditto.
4490
        (Arm_relocate_functions::thm_call, Arm_relocate_functions::thm_jump24,
4491
        Arm_relocate_functions::thm_xpc22, Arm_relocate_functions::plt32,
4492
        Arm_relocate_functions::xpc25, Arm_relocate_functions::call,
4493
        Arm_relocate_functions::jump24): Remove.
4494
        (Target_arm::Relocate::relocate): Adjust code to call
4495
        Arm_relocation_functions::arm_branch_common and
4496
        Arm_relocation_functions::thumb_branch_common instead of their removed
4497
        wrappers.  Merge switch-cases together to reduce source code size.
4498
 
4499
2010-01-29  Doug Kwan  
4500
 
4501
        * arm.cc (Arm_relobj::Arm_relobj): Initialize new data member
4502
        output_local_symbol_count_needs_update_.
4503
        (Arm_relobj::output_local_symbol_count_needs_update,
4504
         Arm_relobj::set_output_local_symbol_count_needs_update,
4505
         Arm_relobj::update_output_local_symbol_count): New methods.
4506
        (Arm_relobj::output_local_symbol_count_needs_update_): New data
4507
        member.
4508
        (Arm_exidx_cantunwind::do_fixed_endian_write): Write address
4509
        of pointed function as in a R_ARM_PREL31 relocation.
4510
        (Arm_output_section::fix_exidx_coverage): Mark objects
4511
        for output local symbol count updating.
4512
        (Target_arm::do_relax): Update output local symbol counts in objects
4513
        if necessary.
4514
        * object.h (Sized_relobj::set_output_local_symbol_count): New method.
4515
 
4516
2010-01-29  Viktor Kutuzov  
4517
 
4518
        * arm.cc: Added support for the ARM relocations:
4519
        R_ARM_MOVW_BREL_NC, R_ARM_MOVT_BREL, R_ARM_MOVW_BREL,
4520
        R_ARM_THM_MOVW_BREL_NC, R_ARM_THM_MOVT_BREL, R_ARM_THM_MOVW_BREL.
4521
        (Arm_relocate_functions::movw_rel_nc): Renamed (was
4522
        movw_prel_nc).
4523
        (Arm_relocate_functions::movw_rel): New method.
4524
        (Arm_relocate_functions::movt_rel): Renamed (was movt_prel).
4525
        (Arm_relocate_functions::thm_movw_rel_nc): Renamed (was
4526
        thm_movw_prel_nc).
4527
        (Arm_relocate_functions::thm_movw_rel): New method.
4528
        (Arm_relocate_functions::thm_movt_rel): Renamed (was
4529
        thm_movt_prel).
4530
        (Target_arm::Scan::local): Handle MOVW_BREL/MOVT_BREL
4531
        relocations.
4532
        (Target_arm::Scan::global): Likewise.
4533
        (Target_arm::Relocate::relocate): Likewise.
4534
        (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
4535
        Likewise.
4536
 
4537
2010-01-27  Viktor Kutuzov  
4538
 
4539
        * arm.cc: Added support for ARM group relocations.
4540
        (Target_arm::reloc_needs_sym_origin): New method.
4541
        (Arm_relocate_functions::calc_grp_kn): New method.
4542
        (Arm_relocate_functions::calc_grp_residual): New method.
4543
        (Arm_relocate_functions::calc_grp_gn): New method.
4544
        (Arm_relocate_functions::arm_grp_alu): New Method.
4545
        (Arm_relocate_functions::arm_grp_ldr): New Method.
4546
        (Arm_relocate_functions::arm_grp_ldrs): New Method.
4547
        (Arm_relocate_functions::arm_grp_ldc): New Method.
4548
        (Target_arm::Scan::local): Handle the ARM group relocations.
4549
        (Target_arm::Scan::global): Likewise.
4550
        (Target_arm::Relocate::relocate): Likewise.
4551
        (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
4552
        Likewise.
4553
 
4554
2010-01-26  Doug Kwan  
4555
 
4556
        * arm.cc (set): Include.
4557
        (class Arm_exidx_fixup): Change type of last_input_section_ to const
4558
        pointer type.
4559
        (Arm_output_section::Text_section_list): New type.
4560
        (Arm_output_section::append_text_sections_to_list): New method.
4561
        (Arm_output_section::fix_exidx_coverage): Ditto.
4562
        (Arm_relobj::Arm_relobj): Initialize exidx_section_map_.
4563
        (Arm_relobj::convert_input_section_to_relaxed_section): Use
4564
        Relobj::set_section_offset() instead of
4565
        Sized_relobj::invalidate_section_offset().
4566
        (Arm_relobj::section_needs_reloc_stub_scanning): Add an extra
4567
        parameter for section headers. Ignore relocation sections for
4568
        unallocated sections and EXIDX sections.
4569
        (Target_arm::fix_exidx_coverage): New method.
4570
        (Target_arm::output_section_address_less_than): New type.
4571
        (Arm_exidx_fixup::add_exidx_cantunwind_as_needed): Use index of the
4572
        linked text section instead of the EXIDX section.
4573
        (Arm_output_section::create_stub_group): Add an assertion to check
4574
        that this is not an EXIDX output section.
4575
        (Arm_output_section::append_text_sections_to_list): New method.
4576
        (Arm_output_section::fix_exidx_coverage): Ditto.
4577
        (Arm_relobj::scan_sections_for_stubs): Adjust call to
4578
        Arm_relobj::section_needs_reloc_stub_scanning.
4579
        (Target_arm::do_relax): Fix EXIDX output section coverage in the
4580
        first pass.
4581
        (Target_arm::fix_exidx_coverage): New method.
4582
        * object.h (Relobj::set_output_section): New method.
4583
        (Sized_relobj::invalidate_section_offset): Remove method.
4584
        (Sized_relobj::do_invalidate_section_offset): Remove method.
4585
        (Sized_relobj::do_set_section_offset): Handle offset value -1.
4586
 
4587
2010-01-25  Doug Kwan  
4588
 
4589
        * arm.cc (Arm_exidx_merged_section::do_output_offset):
4590
        Fix warning due to signed and unsigned comparison on a 32-bit host.
4591
 
4592
2010-01-22  Doug Kwan  
4593
 
4594
        * arm.cc (Target_arm::do_relax): Record an output section for section
4595
        offset adjustment it contains any stub table that has changed.
4596
        * layout.cc (Layout::clean_up_after_relaxation): Adjust section
4597
        offsets in an output section if necessary.
4598
        * output.cc (Output_section::Output_section): Initialize
4599
        section_offsets_need_adjustments_.
4600
        (Output_section::add_input_section_for_script): Renamed to
4601
        Output_section::add_simple_input_section.
4602
        (Output_section::save_states): Add a comment.
4603
        (Output_section::discard_states): New method defintion.
4604
        (Output_section::adjust_section_offsets): Same.
4605
        * output.h (Output_section::add_input_section_for_script): Renamed to
4606
        Output_section::add_simple_input_section.
4607
        (Output_section::discard_states): New method declaration.
4608
        (Output_section::adjust_section_offsets): Same.
4609
        (Output_section::section_offsets_need_adjustment,
4610
        Output_section::set_section_offsets_need_adjustment): New method
4611
        definitions.
4612
        (Output_section::section_offsets_need_adjustment_): New data member.
4613
        * script-sections.cc
4614
        (Output_section_element_input::set_section_address): Adjust code for
4615
        renaming of Output_section::add_input_section_for_script.
4616
        (Orphan_output_section::set_section_address): Same.
4617
 
4618
2010-01-22  Viktor Kutuzov  
4619
 
4620
        * gold/arm.cc (Target_arm): Updated fix_v4bx method and usage of
4621
        Fix_v4bx enum values .
4622
        * gold/options.h (General_options): New option definitions.
4623
        (General_options::fix_v4bx): New method.
4624
        (General_options::Fix_v4bx): New enum.
4625
        * gold/options.cc (General_options::parse_fix_v4bx): New method.
4626
        (General_options::parse_fix_v4bx_interworking): New method.
4627
 
4628
2010-01-22  Doug Kwan  
4629
 
4630
        * arm.cc (Arm_exidx_fixup): New class.
4631
 
4632
2010-01-21  Doug Kwan  
4633
 
4634
        * arm.cc (Arm_exidx_cantunwind, Arm_exidx_merged_section): New
4635
        classes.
4636
        (Arm_exidx_section_offset_map): New type.
4637
 
4638
2010-01-21  Doug Kwan  
4639
 
4640
        * arm.cc (Arm_exidx_input_section): New class.
4641
        (Arm_relobj::exidx_input_section_by_link,
4642
        Arm_relobj::exidx_input_section_by_shndx,
4643
        Arm_relobj::make_exidx_input_section): New methods.
4644
        (read_arm_attributes_section): Remove.
4645
        (Arm_relobj::do_read_symbols): Look for ARM.exidx sections and record
4646
        information about them.
4647
        (Arm_dynobj::do_read_symbols): Move code in read_arm_attributes_section
4648
        to here.
4649
 
4650
2010-01-20  Doug Kwan  
4651
 
4652
        * arm.cc (Target_arm::Arm_input_section_map): Change key type from
4653
        Input_section_specifier to Section_id.
4654
        (Target_arm::new_arm_input_section: Adjust code for change of key
4655
        type.
4656
        (Target_arm::find_arm_input_section): Ditto.
4657
        * gc.h (object.h): Include for Section_id nand Section_id_hash.
4658
        (Section_id): Remove.
4659
        (Garbage_collection::Section_id_hash): Remove.
4660
        * icf.h (object.h): Include for Section_id nand Section_id_hash.
4661
        (Section_id): Remove.
4662
        (Icf::Section_id_hash): Remove.
4663
        * object.h (Section_id, Const_section_id, Section_id_hash,
4664
        Const_section_id_hash): New type definitions.
4665
        * output.cc (Output_section::add_relaxed_input_section): Change to
4666
        use Const_section_id instead of Input_section_specifier as key type.
4667
        (Output_section::add_merge_input_section): Ditto.
4668
        (Output_section::build_relaxation_map): Change to use Section_id
4669
        instead of Input_section_specifier as key type.
4670
        (Output_section::convert_input_sections_in_list_to_relaxed_sections):
4671
        Ditto.
4672
        (Output_section::convert_input_sections_to_relaxed_sections): Change
4673
        to use Const_section_id instead of Input_section_specifier as key type.
4674
        (Output_section::find_merge_section): Ditto.
4675
        (Output_section::find_relaxed_input_section): Ditto.
4676
        * output.h (Input_section_specifier): Remove class.
4677
        (Output_section::Output_section_data_by_input_section_map): Change
4678
        key type to Const_section_id.
4679
        (Output_section::Output_relaxed_input_section_by_input_section_map):
4680
        Ditto.
4681
        (Output_section::Relaxation_map): Change key type to Section_id.
4682
 
4683
2010-01-20  Viktor Kutuzov  
4684
 
4685
        * gold/arm.cc: Added support for R_ARM_V4BX relocation
4686
        (class Arm_v4bx_stub): New class.
4687
        (DEF_STUBS): Updated definition to support v4_veneer_bx.
4688
        (Stub_factory::make_arm_v4bx_stub): New method.
4689
        (Stub_factory::elf32_arm_stub_v4_veneer_bx): New veneer template.
4690
        (Stub_table::empty): Handle v4bx stubs.
4691
        (Stub_table::add_arm_v4bx_stub): New method.
4692
        (Stub_table::find_arm_v4bx_stub): New method.
4693
        (Arm_relocate_functions::v4bx): New method.
4694
        (Target_arm::fix_v4bx): New method.
4695
        (Target_arm::Target_arm): Handle R_ARM_V4BX.
4696
        (Stub_table::relocate_stubs): Likewise.
4697
        (Stub_table::do_write): Likewise.
4698
        (Stub_table::update_data_size_and_addralign): Likewise.
4699
        (Stub_table::finalize_stubs):  Likewise.
4700
        (Target_arm::Scan::local): Likewise.
4701
        (Target_arm::Scan::global): Likewise.
4702
        (Target_arm::do_finalize_sections): Likewise.
4703
        (Target_arm::Relocate::relocate): Likewise.
4704
        (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
4705
        Likewise.
4706
        (Target_arm::scan_reloc_for_stub): Likewise.
4707
        (Target_arm::scan_reloc_section_for_stubs): Likewise.
4708
 
4709
2010-01-19  Ian Lance Taylor  
4710
 
4711
        * output.cc (Output_section_headers::do_sized_write): Write large
4712
        segment count to sh_info field.
4713
        (Output_file_header::do_sized_write): For large segment count,
4714
        write PN_XNUM to e_phnum field.
4715
 
4716
2010-01-15  Viktor Kutuzov  
4717
 
4718
        * arm.cc (Arm_relocate_functions::thm_jump6): New function.
4719
        (Arm_relocate_functions::thm_jump8): New function.
4720
        (Arm_relocate_functions::thm_jump11): New function.
4721
        (Target_arm::Scan::local): Handle R_ARM_THM_JUMP6, R_ARM_THM_JUMP8,
4722
        R_ARM_THM_JUMP11.
4723
        (Target_arm::Scan::global): Likewise.
4724
        (Target_arm::Relocate::relocate): Likewise.
4725
        (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
4726
        Likewise.
4727
 
4728
2010-01-14  Doug Kwan  
4729
 
4730
        * arm.cc (map, utility): Include headers.
4731
        (Target_arm::apply_cortex_a8_workaround): New method.
4732
        (Arm_relobj::do_relocate_sections): Apply any Cortex-A8 workaround.
4733
        (Target_arm::Scan::local): Handle R_ARM_THM_JUMP24, R_ARM_THM_JUMP19.
4734
        (Target_arm::Scan::global): R_ARM_THM_JUMP19.
4735
        (Target_arm::do_finalize_sections): Set fix_cortex_a8_ according to
4736
        the --[no-]fix-cortex-a8 command line options.
4737
        (Target_arm::Relocate::relocate): Handle R_ARM_JUMP19.
4738
        (Target_arm::relocate_stub): Use addend in instruction template.
4739
        * options.h (DEFINE_bool): Set the user-set flag.
4740
        (General_options): Add --[no-]-fix-cortex options.
4741
        * output.cc (Output_section::convert_input_sections_to_relaxed_sections)
4742
        : Update fast look-up map after conversion.
4743
 
4744
2010-01-14  Sriraman Tallam  
4745
 
4746
        * object.cc (Sized_relobj::do_layout): Change to call layout_gnu_stack
4747
        in the first pass of do_layout.
4748
 
4749
2010-01-13  Doug Kwan  
4750
 
4751
        * arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
4752
        Arm_relobj::scan_sections_for_stubs): Rearrange code to avoid an
4753
        apparent compiler problem of not folding static constant integral
4754
        data members of elfcpp::Elf_sizes<32>.
4755
 
4756
2010-01-13  Doug Kwan  
4757
 
4758
        * arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
4759
        Arm_relobj::section_needs_cortex_a8_stub_scanning,
4760
        Arm_relobj::scan_section_for_cortex_a8_erratum,
4761
        Arm_relobj::scan_span_for_cortex_a8_erratum): New methods.
4762
        (Arm_relobj::scan_sections_for_stubs): Move code deciding what
4763
        sections to scan for relocation stubs into a new method
4764
        Arm_relobj::section_needs_reloc_stub_scanning.  Handle both
4765
        relocation and Cortex-A8 stub scanning.
4766
        (Target_arm::do_relax): Force stubs to be after stubbed sections
4767
        if fixing the Cortex-A8 erratum.  Remove all Cortex-A8 stubs at
4768
        the beginning of a new relaxation pass.  Update a comment.
4769
        (Target_arm::scan_span_for_cortex_a8_erratum): New method definition.
4770
 
4771
2010-01-12  Ian Lance Taylor  
4772
 
4773
        * target-reloc.h (visibility_error): New inline function.
4774
        (relocate_section): Call visibility_error.
4775
        * testsuite/Makefile.am (check_DATA): Add protected_3.err.
4776
        (MOSTLYCLEANFILES): Likewise.
4777
        (protected_4_pic.o, protected_3.err): New targets.
4778
        * testsuite/protected_4.cc: New file.
4779
 
4780
2010-01-12  Doug Kwan  
4781
 
4782
        * arm.cc (Cortex_a8_reloc): New class.
4783
        (Target_arm::Target_arm): Initialize new data members fix_cortex_a8_
4784
        and cortex_a8_relocs_info_.
4785
        (Target_arm::fix_cortex_a8): New method definition.
4786
        (Target_arm::Cortex_a8_relocs_info): New type.
4787
        (Target_arm::fix_cortex_a8_, Target_arm::cortex_a8_relocs_info_):
4788
        New data member declarations.
4789
        (Target_arm::scan_reloc_for_stub): Record information about
4790
        relocations for THUMB branches that might be exempted from the
4791
        Cortex-A8 workaround.
4792
        (Target_arm::do_relax): Clear all Cortex-A8 relocation information
4793
        at the beginning of a relaxation pass.
4794
 
4795
2010-01-12  Doug Kwan  
4796
 
4797
        * arm.cc (Arm_relobj::mapping_symbols_info_): New data member.
4798
        (Arm_relobj::Mapping_symbol_position,
4799
         Arm_reloj::Mapping_symbol_position_less,
4800
         Arm_relobj::Mapping_symbols_info): New types.
4801
        (Target_arm::is_mapping_symbol_name): New method definition.
4802
        (Arm_relobj::do_count_local_symbols): Save information about mapping
4803
        symbols.
4804
 
4805
2010-01-11  Doug Kwan  
4806
 
4807
        * arm.cc (Arm_relocate_functions::thumb32_branch_offset,
4808
        Arm_relocate_functions::thumb32_branch_upper,
4809
        Arm_relocate_functions::thumb32_branch_lower,
4810
        Arm_relocate_functions::thumb32_cond_branch_offset,
4811
        Arm_relocate_functions::thumb32_cond_branch_upper,
4812
        Arm_relocate_functions::thumb32_cond_branch_lower,
4813
        Arm_relocate_functions::thm_jump19): New methods to handle THUMB
4814
        branch offset encoding.
4815
        (Arm_relocate_functions::thumb_branch_common): Use new branch
4816
        offset encoding methods to avoid code duplication.
4817
        (Stub_template::Stub_template) Handle THUMB16_SPECIAL_TYPE.
4818
        (Stub_addend_reader::operator()): Use new branch encoding method
4819
        to avoid code duplication.
4820
 
4821
2010-01-11  Doug Kwan  
4822
 
4823
        * arm.cc (Arm_relobj::do_gc_process_relocs): New method.
4824
        (Target_arm::do_finalize_sections): Define special EXIDX section
4825
        symbols only if referenced.
4826
        * gc.h (Garbage_collection::add_reference): New method.
4827
        (gc_process_relocs): Use Garbage_collection::add_reference to avoid
4828
        code duplication.
4829
 
4830
2010-01-11  Ian Lance Taylor  
4831
 
4832
        * script.cc (Version_script_info::build_expression_list_lookup):
4833
        Change complaing about duplicate wildcard match from error to
4834
        warning.
4835
 
4836
        * script.cc (class Lazy_demangler): Recreate--revert part of patch
4837
        of 2009-12-30.
4838
        (Version_script_info::Version_script_info): Initialize globs_,
4839
        default_version_, default_is_global_, and exact_.  Don't
4840
        initialize globals_ or locals_.
4841
        (Version_script_info::build_lookup_tables): Build local symbols
4842
        first.
4843
        (Version_script_info::unquote): New function.
4844
        (Version_script_info::add_exact_match): New function.
4845
        (Version_script_info::build_expression_list_lookup): Remove lookup
4846
        parameter.  Add is_global parameter.  Change all callers.  Handle
4847
        wildcard pattern specially.  Unquote pattern.  Call
4848
        add_exact_match.
4849
        (Version_script_info::get_name_to_match): New function.
4850
        (Version_script_info::get_symbol_version): New function.
4851
        (Version_script_info::get_symbol_version_helper): Remove.
4852
        (Version_script_info::check_unmatched_names): Call unquote.
4853
        * script.h (class Version_script_info): Change get_symbol_version
4854
        to be non-inline and add is_global parameter; change all callers.
4855
        Rewrite symbol_is_local.  Update declarations.  Define struct
4856
        Version_tree_match, Exact, Globs.  Don't define struct Lookup.
4857
        Remove globals_ and locals_ members.  Add exact_, globs_,
4858
        default_version_, is_global_.
4859
        (Version_script_info::Glob): Remove pattern, add expression and
4860
        is_global.  Update constructor.  Change all callers.
4861
        * dynobj.cc (Versions::finalize): Mark the version symbol as the
4862
        default version.
4863
        (Versions::symbol_section_contents): If a symbol is undefined, or
4864
        defined in a dynamic object, set the version index to
4865
        VER_NDX_LOCAL.
4866
        * symtab.cc (Symbol_table::add_from_relobj): Don't call
4867
        symbol_is_local.
4868
        (Symbol_table::add_from_pluginobj): Likewise.
4869
        * testsuite/ver_matching_test.sh: blaza1 and blaza go into V2.
4870
 
4871
2010-01-11  Doug Kwan  
4872
 
4873
        * Makefile.am (incremental_dump_DEPENDENCIES): Add libintl dependency.
4874
        (incremental_dump_LDADD): Add linking option for libintl.
4875
        * Makefile.in: Regenerate.
4876
 
4877
2010-01-11  H.J. Lu  
4878
 
4879
        PR gold/11144
4880
        * testsuite/Makefile.am (dynamic_list.stdout): Use --dyn-syms
4881
        instead of -Ds.
4882
        * testsuite/Makefile.in: Regenerated.
4883
 
4884
2010-01-10  Doug Kwan  
4885
 
4886
        * options.h (DEFINE_var): Use parentheses around argument varname__
4887
        in macro body to avoid any unintended subsequent substitutions.
4888
 
4889
2010-01-10  Ian Lance Taylor  
4890
 
4891
        * resolve.cc (Symbol_table::resolve): Add symbols to list of ODR
4892
        candidates before doing symbol resolution.
4893
 
4894
        * resolve.cc (Symbol_table::resolve): Add symbols to the list of
4895
        ODR candidates if only one is weak.
4896
 
4897
2010-01-08  Ian Lance Taylor  
4898
 
4899
        * script.cc (Version_script_info::build_expression_list_lookup):
4900
        Don't warn about ambiguous version, just record the ambiguity.
4901
        (Version_script_info::get_symbol_version_helper): Give error if
4902
        version is ambiguous.
4903
 
4904
2010-01-08  Doug Kwan  
4905
 
4906
        * arm.cc (Stub_table::Stub_table): Initalize cortex_a8_stubs_,
4907
          prev_data_size_ and prev_addralign_.  Remove initializer for
4908
          deleted data member has_been_changed_.
4909
          (Stub_table::empty): Look at both reloc_stubs_ and cortex_a8_stubs_
4910
          to determine if the table is empty.
4911
          (Stub_table::has_been_changed, Stub_table_set_has_been_changed):
4912
          Remove.
4913
          (Stub_table::add_reloc_stub): Define method in class definition
4914
          instead of just declaring it there.
4915
          (Stub_table::add_cortex_a8_stub): New method definition.
4916
          (Stub_table::update_data_size_and_addralign): Ditto.
4917
          (Stub_table::finalize_stubs): Ditto.
4918
          (Stub_table::apply_cortex_a8_workaround_to_address_range): Ditto.
4919
          (Stub_table::do_addralign_): Return address alignment in the
4920
          (Stub_table::do_reset_address_and_file_offset): Define method in
4921
          class definition instead of declaring it there.  Set current data
4922
          size to be the data size of the previous pass.
4923
          (Stub_table::set_final_data_size): Use current data size as the
4924
          final data size.
4925
          (Stub_table::relocate_stub): Change parameter type of stub from
4926
          Reloc_stub pointer to Stub pointer.
4927
          (Stub_table::addralign_, Stub_table::has_been_changed_): Remove.
4928
          (Stub_table::Cortex_a8_stub_list): New typedef.
4929
          (Stub_table::cortex_a8_stubs_, Stub_table::prev_data_size_,
4930
           Stub_table::prev_addralign_): New data member.
4931
          (Arm_relobj::Arm_relobj): Initialize data member
4932
          section_has_cortex_a8_workaround_.
4933
          (Arm_relobj::section_has_cortex_a8_workaround,
4934
           Arm_relobj::mark_section_for_cortex_a8_workaround): New method
4935
           definitions.
4936
          (Arm_relobj::section_has_cortex_a8_workaround_): New data member
4937
          declarations.
4938
          (Target_arm::relocate_stub): Change parameter type of stub from
4939
          Reloc_stub pointer to Stub pointer.
4940
          (Insn_template::size, Insn_template::alignment): Handle
4941
          THUMB16_SPECIAL_TYPE.
4942
          (Stub_table::remove_all_cortex_a8_stubs, Stub_table::finalize_stubs,
4943
           Stub_table::update_data_size_and_addralign,
4944
           Stub_table::apply_cortex_a8_workaround_to_address_range): New method
4945
          definitions.
4946
          (Stub_table::relocate_stubs): Handle Cortex-A8 stubs.
4947
          (Stub_table::do_write): Ditto.
4948
          (Target_arm::do_relax): Adjust code for changes in Stub_table.
4949
 
4950
2010-01-08  Ian Lance Taylor  
4951
 
4952
        PR 11108
4953
        * symtab.h (class Symbol): Remove fields is_target_special_ and
4954
        has_plt_offset_.  Add field is_defined_in_discarded_section_.
4955
        (Symbol::is_defined_in_discarded_section): New function.
4956
        (Symbol::set_is_defined_in_discarded_section): New function.
4957
        (Symbol::has_plt_offset): Rewrite.
4958
        (Symbol::set_plt_offset): Verify that new offset is not -1U.
4959
        * symtab.cc (Symbol::init_fields): Initialize plt_offset_ to -1U.
4960
        Don't initialize is_target_special_ or has_plt_offset_.
4961
        Initialize is_defined_in_discarded_section_.
4962
        (Symbol_table::add_from_relobj): If appropriate, set
4963
        is_defined_in_discarded_section.
4964
        * resolve.cc (Symbol::override_base_with_special): Don't test
4965
        is_target_special_.  Change has_plt_offset_ to has_plt_offset().
4966
        * target-reloc.h (relocate_section): Do special handling for
4967
        symbols defined in discarded sections for global symbols as well
4968
        as local symbols.
4969
 
4970
2010-01-08  Ian Lance Taylor  
4971
 
4972
        * dynobj.cc (big_endian>::find_dynsym_sections): Set pi to NULL in
4973
        the SHT_SYMTAB case.
4974
 
4975
2010-01-08  Ian Lance Taylor  
4976
 
4977
        * object.cc (Sized_relobj::do_layout): Don't get confused if
4978
        layout_eh_frame returns NULL.
4979
 
4980
2010-01-08  Ian Lance Taylor  
4981
 
4982
        PR 11084
4983
        * dynobj.cc (Sized_dynobj::find_dynsym_sections): If there is no
4984
        dynamic symbol table, use the normal symbol table.
4985
        (Sized_dynobj::do_read_symbols): Remove assertion about type of
4986
        symbol table.
4987
 
4988
2010-01-08  Ian Lance Taylor  
4989
 
4990
        PR 11072
4991
        * layout.cc (Layout::include_section): Remove .gnu_debuglink
4992
        sections.
4993
 
4994
2010-01-08  H.J. Lu  
4995
 
4996
        * version.cc (print_version): Change to "Copyright 2010".
4997
 
4998
2010-01-08  Ian Lance Taylor  
4999
 
5000
        PR 10287
5001
        PR 11063
5002
        * i386.cc (class Target_i386): Change return type of plt_section
5003
        to be non-const.
5004
        (class Output_data_plt_i386): Add tls_desc_rel_ field.
5005
        (Output_data_plt_i386::Output_data_plt_i386): Initialize
5006
        tls_desc_rel_ field.
5007
        (Output_data_plt_i386::rel_tls_desc): New function.
5008
        (Target_i386::rel_tls_desc_section): New function.
5009
        (Target_i386::Scan::local): Rewrite R_386_TLS_GOTDESC handling.
5010
        (Target_i386::Scan::global): For R_386_TLS_GOTDESC put
5011
        R_386_TLS_DESC reloc in rel_tls_desc_section.
5012
        * x86_64.cc (class Target_x86_64): Add tlsdesc_reloc_info_ field.
5013
        Define struct Tlsdesc_info.
5014
        (Target_x86_64::Target_x86_64): Initialize tlsdesc_reloc_info_.
5015
        (Target_x86_64::do_reloc_symbol_index): New function.
5016
        (Target_x86_64::add_tlsdesc_info): New function.
5017
        (class Output_data_plt_x86_64): Add tlsdesc_rel_ field.
5018
        (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize
5019
        tlsdesc_rel_ field.
5020
        (Output_data_plt_x86_64::rela_plt): Rename from rel_plt.  Change
5021
        all callers.
5022
        (Output_data_plt_x86_64::rela_tlsdesc): New function.
5023
        (Target_x86_64::rela_tlsdesc_section): New function.
5024
        (Target_x86_64::Scan::local): Rewrite R_X86_64_GOTPC32_TLSDESC
5025
        handling.
5026
        (Target_x86_64::Scan::global): For R_X86_64_GOTPC32_TLSDESC put
5027
        (Target_x86_64::do_reloc_addend): New function.
5028
        R_X86_64_TLSDESC reloc in rela_tlsdesc_section.
5029
        * output.h (class Output_reloc) [SHT_REL]: Add new constructor
5030
        declarations.  Define TARGET_CODE.  Add arg field to u1_ union.
5031
        (Output_reloc::type): New function.
5032
        (Output_reloc::is_local_section_symbol): Check for TARGET_CODE.
5033
        (Output_reloc::is_target_specific): New function.
5034
        (Output_reloc::target_arg): New function.
5035
        (class Output_reloc) [SHT_RELA]: Add four new constructors for
5036
        absolute relocs and target specific relocs.
5037
        (class Output_data_reloc) [SHT_REL]: Add add_absolute and
5038
        add_target_specific.
5039
        (class Output_data_reloc) [SHT_RELA]: Likewise.
5040
        * output.cc (Output_reloc::Output_reloc): Add four new versions
5041
        for absolute relocs and target specific relocs.
5042
        (Output_reloc::set_needs_dynsym_index): Add TARGET_CODE case.
5043
        (Output_reloc::get_symbol_index): Likewise.
5044
        (Output_reloc::local_section_offset): Check that local_sym_index_
5045
        is not TARGET_CODE or 0.
5046
        (Output_reloc::symbol_value): Likewise.
5047
        (Output_reloc::write) [SHT_RELA]: Call target for target specific
5048
        reloc.
5049
        * target.h (class Target): Add reloc_symbol_index and reloc_addend
5050
        functions.  Add do_reloc_symbol_index and do_reloc_addend virtual
5051
        functions.
5052
        * layout.cc (add_target_dynamic_tags): Use output section for
5053
        DT_PLTRELSZ and DT_JMPREL.
5054
 
5055
2010-01-07  Ian Lance Taylor  
5056
 
5057
        PR 11061
5058
        * output.h (class Output_reloc) [SHT_RELA]: Add is_relative
5059
        function.
5060
        (class Output_data_reloc_generic): Define.
5061
        (class Output_data_reloc_base): Change base class to
5062
        Output_data_reloc_generic.  Change add() method to call
5063
        bump_relative_reloc_count for a relative reloc.  Remove
5064
        sort_relocs_ field.
5065
        * output.cc (Output_data_reloc_base::do_write): Change sort_reloc_
5066
        to sort_relocs().
5067
        * layout.cc (Layout::add_target_dynamic_tags): Change dyn_rel to
5068
        Output_data_reloc_generic*.  Add DT_RELCOUNT/DT_RELACOUNT tag if
5069
        appropriate.
5070
        * layout.h (class Layout): Update declaration.
5071
 
5072
2010-01-07  Ian Lance Taylor  
5073
 
5074
        * output.h (class Output_data): Add const version of
5075
        output_section and do_output_section.
5076
        (class Output_section_data): Add const version of
5077
        do_output_section.
5078
        (class Output_section): Likewise.
5079
        * layout.cc (Layout::add_target_dynamic_tags): New function.
5080
        * layout.h (class Layout): Update declarations.
5081
        * arm.cc (Target_arm::do_finalize_sections): Use
5082
        add_target_dynamic_tags.
5083
        * i386.cc (Target_i386::do_finalize_sections): Likewise.
5084
        * powerpc.cc (Target_powerpc::do_finalize_sections): Likewise.
5085
        * sparc.cc (Target_sparc::do_finalize_sections): Likewise.
5086
        * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
5087
 
5088
2010-01-07  Ian Lance Taylor  
5089
 
5090
        PR 11042
5091
        * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Mark the dynamic
5092
        object as needed.
5093
 
5094
2010-01-07  Dmitry Gorbachev  
5095
            Ian Lance Taylor  
5096
 
5097
        PR 11019
5098
        * object.cc: Instantiate Xindex::initialize_symtab_xindex and
5099
        Xindex::read_symtab_xindex.
5100
 
5101
2010-01-07  Doug Kwan  
5102
 
5103
        * arm.cc (Insn_template::Type): New enum value THUMB16_SPECIAL_TYPE.
5104
        (Insn_template::thumb16_bcond_insn): New method declaration.
5105
        (Insn_template): Fix spelling.
5106
        (Stub::thumb16_special): New method declaration.
5107
        (Stub::do_write): Define virtual method which was previously pure
5108
        virtual.
5109
        (Stub::do_thumb16_special): New method declaration.
5110
        (Stub::do_fixed_endian_write): New template member.
5111
        (Reloc_stub::do_write): Remove.
5112
        (Reloc_stub::do_fixed_endian_write): Remove.
5113
        (Cortex_a8_stub): New class definition.
5114
        (Stub_factory::make_cortex_a8_stub): New method definition.
5115
        (Stub_factory::Stub_factory): Add missing static storage class
5116
        qualifier for elf32_arm_stub_a8_veneer_blx.
5117
 
5118
2010-01-07  Ian Lance Taylor  
5119
 
5120
        PR 10980
5121
        * options.h (class General_options): Add --warn-unresolved-symbols
5122
        and --error-unresolved-symbols.
5123
        * errors.cc (Errors::undefined_symbol): Implement
5124
        --warn-unresolved-symbols.
5125
 
5126
        * options.h (class General_options): Add -z text and -z textoff.
5127
        * layout.cc (Layout::finish_dynamic_section): Implement -z text.
5128
 
5129
2010-01-06  Sriraman Tallam  
5130
 
5131
        * gc.h (Garbage_collection::Cident_section_map): New typedef.
5132
        (Garbage_collection::cident_sections): New function.
5133
        (Garbage_collection::add_cident_section): New function.
5134
        (Garbage_collection::cident_sections_): New member.
5135
        (gc_process_relocs): Add references to sections whose names are C
5136
        identifiers.
5137
        * gold.h (cident_section_start_prefix): New constant.
5138
        (cident_section_stop_prefix): New constant.
5139
        (is_cident): New function.
5140
        * layout.cc (Layout::define_section_symbols): Replace string constants
5141
        with the newly defined constants.
5142
        * object.cc (Sized_relobj::do_layout): Track sections whose names are
5143
        C identifiers.
5144
        * testsuite/Makefile.am: Add gc_orphan_section_test.
5145
        * testsuite/Makefile.in: Regenerate.
5146
        * testsuite/gc_orphan_section_test.cc: New file.
5147
        * testsuite/gc_orphan_section_test.sh: New file.
5148
 
5149
2010-01-06  Ian Lance Taylor  
5150
 
5151
        PR 10980
5152
        * options.h (class General_options): Add --warn-shared-textrel.
5153
        * layout.cc (Layout::finish_dynamic_section): Implement
5154
        --warn-shared-textrel.
5155
 
5156
        PR 10980
5157
        * options.h (class General_options): Add --warn-multiple-gp.
5158
 
5159
2010-01-06  Viktor Kutuzov  
5160
 
5161
        * Makefile.am (incremental_dump_DEPENDENCIES): Remove
5162
        $(THREADSLIB) and $(LIBDL).
5163
        * Makefile.in: Rebuild.
5164
 
5165
2010-01-06  Ian Lance Taylor  
5166
 
5167
        PR 10980
5168
        * options.cc (General_options::parse_section_start): New function.
5169
        (General_options::section_start): New function.
5170
        (General_options::General_options): Initialize all members.
5171
        * options.h: Include 
5172
        (class General_options): Add --section-start.  Add section_starts_
5173
        member.
5174
        * layout.cc (Layout::attach_allocated_section_to_segment): If
5175
        --section-start was used, set the address of the segment.  Remove
5176
        local sort_sections.
5177
        (Layout::relaxation_loop_body): If the address of the load segment
5178
        has been set by --section-start, don't use it.
5179
        * output.h (Output_segment::update_flags_for_output_section): New
5180
        function.
5181
        * output.cc (Output_segment::add_output_section): Call
5182
        update_flags_for_output_section.
5183
 
5184
2010-01-05  Ian Lance Taylor  
5185
 
5186
        PR 10980
5187
        * options.h (class General_options): Add --undefined-version.
5188
        * script.cc (struct Version_expression): Add was_matched_by_symbol
5189
        field.
5190
        (Version_script_info::matched_symbol): New function.
5191
        (Version_script_info::get_symbol_version_helper): Call
5192
        matched_symbol.
5193
        (Version_script_info::check_unmatched_names): New function.
5194
        * script.h (class Version_script_info): Update declarations.
5195
        * gold.cc (queue_middle_tasks): Handle --no-undefined-version.
5196
 
5197
        * options.h (class General_options): Use DEFINE_bool_alias for
5198
        allow_multiple_definition.
5199
        * resolve.cc (Symbol_table::should_override): Don't test
5200
        allow_multiple_definition.
5201
 
5202
        PR 10980
5203
        * options.h (class General_options): Add --cref.
5204
        * main.cc (main): Print cref table if --cref.  Don't close mapfile
5205
        until after printing cref table.
5206
        * cref.cc: Include "symtab.h".
5207
        (class Cref_inputs): Define Cref_table_compare and Cref_table.
5208
        (Cref_table_compare::operator()): New function.
5209
        (Cref_inputs::gather_cref): New function.
5210
        (filecol): New static const.
5211
        (Cref_inputs::print_cref): New function.
5212
        (Cref::print_cref): New function.
5213
        * cref.h: Include .
5214
        (class Cref): Update declarations.
5215
        * mapfile.h (Mapfile::file): New function.
5216
        * object.h (class Object): Define Symbols.  Declare virtual
5217
        do_get_global_symbols.
5218
        (Object::get_global_symbols): New function.
5219
        * object.cc (Input_objects::add_object): Pass object to cref_ if
5220
        --cref.
5221
        (Input_objects::archive_start): Likewise.
5222
        (Input_objects::archive_stop): Likewise.
5223
        (Input_objects::print_cref): New function.
5224
        * dynobj.h (Sized_dynobj::do_get_global_symbols): New function.
5225
        * dynobj.cc (big_endian>::do_add_symbols): Create symbols_ if
5226
        --cref.
5227
        * plugin.cc (Sized_pluginobj::do_get_global_symbols): New
5228
        function.
5229
        * plugin.h (class Sized_pluginobj): Update declarations.
5230
 
5231
2010-01-05  Ian Lance Taylor  
5232
 
5233
        * symtab.cc (Symbol_table::add_from_object): Rename def parameter
5234
        to is_default_version.  Rename insdef to insdefault.
5235
        (Symbol_table::add_from_relobj): Rename def to is_default_version
5236
        and local to is_forced_local.
5237
        (Symbol_table::add_from_pluginobj): Likewise.
5238
        (Symbol_table::add_from_dynobj): Likewise.
5239
        (Symbol_table::define_special_symbol): Rename insdef to
5240
        insdefault.
5241
 
5242
2010-01-04  Ian Lance Taylor  
5243
 
5244
        PR 10980
5245
        * options.h (class General_options): Add
5246
        --allow-multiple-definition and -z muldefs.
5247
        * resolve.cc (Symbol_table::should_override): Don't warn about a
5248
        multiple symbol definition if --allow-multiple-definition or -z
5249
        muldefs.
5250
 
5251
        PR 10980
5252
        * options.h (class General_options): Add --add-needed and
5253
        --copy-dt-needed-entries.  Tweak --as-needed help entry.
5254
        * object.cc (Input_objects::check_dynamic_dependencies): Give an
5255
        error if --copy-dt-needed-entries aka --add-needed is used and
5256
        would cause a change in behaviour.
5257
 
5258
        PR 10980
5259
        * options.h (class General_options): Add -G as a short version of
5260
        --shared.  Add no-op options -assert, -g, and -i.
5261
 
5262
2010-01-04  Sriraman Tallam  
5263
 
5264
        * gc.h (gc_process_relocs): Call is_section_foldable_candidate to
5265
        check for .text or .gnu.linkonce.t sections.
5266
        * icf.cc (Icf::find_identical_sections): Ditto.
5267
        Change the detection for mangled function name within the section
5268
        name.
5269
        * icf.h (is_section_foldable_candidate): New function.
5270
 
5271
2009-12-30  Ian Lance Taylor  
5272
 
5273
        PR 10980
5274
        * options.h (class General_options): Permit two dashes with
5275
        --retain-symbols-file.
5276
 
5277
2009-12-30  Ian Lance Taylor  
5278
 
5279
        PR 10979
5280
        * layout.cc (Layout::relaxation_loop_body): If -Ttext was used,
5281
        don't put the file header and segment headers in the text
5282
        segment.
5283
 
5284
        PR 10979
5285
        * common.cc (Sort_commons::operator()): Stabilize sort when both
5286
        entries are NULL.
5287
        (Symbol_table::do_allocate_commons_list): When allocating common
5288
        symbols, skip a symbol which is no longer common.
5289
        * symtab.h (Symbol::is_common): Test whether the symbol comes from
5290
        an object before checking its type.
5291
        * testsuite/common_test_2.c: New file.
5292
        * testsuite/common_test_3.c: New file.
5293
        * testsuite/Makefile.am (check_PROGRAMS): Add common_test_2.
5294
        (common_test_2_SOURCES, common_test_2_DEPENDENCIES): Define.
5295
        (common_test_2_LDFLAGS, common_test_2_LDADD): Define.
5296
        (common_test_2_pic.o, common_test_2.so): New targets.
5297
        (common_test_3_pic.o, common_test_3.so): New targets.
5298
        * testsuite/Makefile.in: Rebuild.
5299
 
5300
        PR 10979
5301
        * script.cc (read_input_script): If we see a new SECTIONS clause,
5302
        and we have added an input section, give an error.
5303
        * layout.h (class Layout): Add have_added_input_section function.
5304
        Add have_added_input_section_ field.
5305
        * layout.cc (Layout::Layout): Initialize
5306
        have_added_input_section_.
5307
        (Layout::layout): Set have_added_input_section_.
5308
        (Layout::layout_eh_frame): Likewise.
5309
 
5310
2009-12-30  Ian Lance Taylor  
5311
 
5312
        PR 10931
5313
        * options.h (class General_options): Add --sort-common option.
5314
        * symtab.h (class Symbol_table): Define Sort_commons_order enum.
5315
        * common.cc (Sort_common): Add sort_order parameter to
5316
        constructor.  Add sort_order_ field.
5317
        (Sort_commons::operator): Check sort_order_.
5318
        (Symbol_table::allocate_commons): Determine the sort order.
5319
        (Symbol_table::do_allocate_commons): Add sort_order parameter.
5320
        Change all callers.
5321
        (Symbol_table::do_allocate_commons_list): Likewise.
5322
 
5323
2009-12-30  Ian Lance Taylor  
5324
 
5325
        PR 10916
5326
        * symtab.cc (Symbol_table::add_from_relobj): When not exporting
5327
        symbols from this object, don't change the visibility of an
5328
        undefined symbol.
5329
        * testsuite/exclude_libs_test_1.c (lib1_ref): New function.
5330
 
5331
2009-12-30  Ian Lance Taylor  
5332
 
5333
        PR 10861
5334
        * script.h (class Version_script_info): Define Language enum.
5335
        Update declarations.  Define Glob, Exact, and Lookup types.  Add
5336
        new fields globals_, locals_, and is_finalized_.
5337
        * script.cc: Various formatting fixes.
5338
        (class Parser_closure): Change language_stack_ from a vector of
5339
        std::string to one of Version_script_info::Language.  Adjust all
5340
        uses accordingly.
5341
        (class Lazy_demangler): Remove.
5342
        (struct Version_expression): Change language from std::string to
5343
        Version_script_info::Language.
5344
        (Version_script_info::Version_script_info): New function.
5345
        (Version_script_info::~Version_script_info): Don't call clear.
5346
        (Version_script_info::finalize): New function.
5347
        (Version_script_info::build_lookup_tables): New function.
5348
        (Version_script_info::build_expression_list_lookup): New
5349
        function.
5350
        (Version_script_info::get_symbol_version_helper): Rewrite to use
5351
        lookup tables.
5352
        (Version_script_info::print_expression_list): Adjust to use
5353
        Version_script_info::Language.
5354
        (script_push_lex_into_version_mode): Check that the version script
5355
        has not been finalized.
5356
        (version_script_push_lang): Change language string to
5357
        Version_script_info::Language.
5358
        * options.cc (Command_line::version_script): New function.
5359
        * options.h (class General_options): Add finalize_dynamic_list
5360
        function.  Change version_script from declaration to definition.
5361
        * testsuite/ver_test_4.script: Remove duplicate def of t2_2.
5362
        * testsuite/version_script.map: Remove duplicate def of foo.
5363
        * testsuite/Makefile.am (ver_matching_def.so): Depend upon
5364
        version_script.map.
5365
        * testsuite/Makefile.in: Rebuild.
5366
 
5367
2009-12-30  Ian Lance Taylor  
5368
 
5369
        PR 10843
5370
        * target-reloc.h (relocate_for_relocatable): When copying a reloc,
5371
        if the input symbol index is 0, make the output symbol index 0.
5372
 
5373
2009-12-30  Ian Lance Taylor  
5374
 
5375
        PR 10670
5376
        * options.h (class General_options): Add -x/--discard-all.
5377
        * object.cc (Sized_relobj::do_count_local_symbols): Handle
5378
        --discard-all.  If the local symbol needs a dynamic entry, check
5379
        that before handling --discard-locals.
5380
 
5381
2009-12-30  Ian Lance Taylor  
5382
 
5383
        PR 10450
5384
        * output.cc (Output_segment::Output_segment): If PT_TLS, set the
5385
        flags to PF_R.
5386
        (Output_segment::add_output_section): Don't change the flags if
5387
        the type is PT_TLS.
5388
 
5389
        PR 10450
5390
        * dynobj.cc (Dynobj::create_gnu_hash_table): Add symbols to the
5391
        GNU hash table if they need a dynamic value.  Otherwise, don't add
5392
        them if they are defined in a dynamic object or are forced local.
5393
 
5394
2009-12-29  Ian Lance Taylor  
5395
 
5396
        PR 10450
5397
        * layout.cc (Layout::create_dynamic_symtab): Only set entsize of
5398
        .gnu.hash table for a 32-bit target.
5399
 
5400
        PR 10450
5401
        * symtab.h (Symbol::needs_dynsym_entry): A symbol in both a
5402
        regular and a dynamic object only needs a dynamic symbol table
5403
        entry if it is externally visible.
5404
 
5405
        PR 10450
5406
        * i386.cc (class Target_i386): Initialize global_offset_table_ in
5407
        constructor.  Add global_offset_table_ field.
5408
        (Target_i386::got_section): Set global_offset_table_.
5409
        (Target_i386::do_finalize_sections): Set global_offset_table_
5410
        size.
5411
        * x86_64.cc (class Target_x86_64): Initialize global_offset_table_
5412
        in constructor.  Add global_offset_table_ field.
5413
        (Target_x86_64::got_section): Set global_offset_table_.
5414
        (Target_x86_64::do_finalize_sections): Set global_offset_table_
5415
        size.
5416
 
5417
        * layout.cc (Layout::Layout): Initialize increase_relro_.
5418
        (Layout::get_output_section): Add is_relro, is_last_relro, and
5419
        is_first_non_relro parameters.  Change all callers.
5420
        (Layout::choose_output_section): Likewise.
5421
        (Layout::add_output_section_data): Likewise.
5422
        (Layout::make_output_section): Likewise.
5423
        (Layout::set_segment_offsets): Clear increase_relro when using a
5424
        linker script.
5425
        * layout.h (class Layout): Add increase_relro method.  Add
5426
        increase_relro_ field.  Update declarations.
5427
        * output.cc (Output_section::Output_section): Initialize
5428
        is_last_relro_ and is_first_non_relro_.
5429
        (Output_segment::add_output_section): Group relro sections is
5430
        do_sort is true.  Handle is_last_relro and is_first_non_relro.
5431
        (Output_segment::maximum_alignment): Remove relro handling.
5432
        (Output_segment::set_section_addresses): Add increase_relro
5433
        parameter.  Change all callers.  Add initial alignment to align
5434
        relro sections on separate page.  Remove old relro handling.
5435
        (Output_segment::set_section_list_addresses): Remove in_relro
5436
        parameter.  Change all callers.
5437
        (Output_segment::set_offset): Add increase parameter.  Change all
5438
        callers.  Remove old relro handling.
5439
        * output.h (class Output_section): Add new methods: is_last_relro,
5440
        set_is_last_relro, is_first_non_relro, set_is_first_non_relro.
5441
        Add is_last_relro_ and is_first_non_relro_ fields.
5442
        * i386.cc (Target_i386::got_section): Don't call set_is_relro.
5443
        Create separate .got.plt section.  Call increase_relro.
5444
        * x86_64.cc (Target_x86_64::got_section): Likewise.
5445
        * testsuite/relro_script_test.t: Add .got.plt.
5446
 
5447
        PR 10450
5448
        * layout.cc (Layout::Layout): Initialize dynamic_symbol_ field.
5449
        (Layout::create_initial_dynamic_sections): Set dynamic_symbol_.
5450
        (Layout::finalize): Call set_dynamic_symbol_size.
5451
        (Layout::set_dynamic_symbol_size): New function.
5452
        * layout.h (class Layout): Add dynamic_symbol_ field.  Declare
5453
        set_dynamic_symbol_size.
5454
 
5455
        PR 10450
5456
        * output.h (class Output_section): Add is_entsize_zero_ field.
5457
        * output.cc (Output_section::Output_section): Initialize
5458
        is_entsize_zero_.
5459
        (Output_section::set_entsize): If two different entsizes are
5460
        requested, force it to zero.
5461
        (Output_section::add_input_section): Set flags for .debug_str
5462
        before updating section flags.  Set entsize.
5463
        (Output_section::update_flags_for_input_section): Set SHF_MERGE
5464
        and SHF_STRING if all input sections have those flags.
5465
 
5466
2009-12-29   Rafael Espindola  
5467
 
5468
        * main.cc (main): Fix the sys time reporting.
5469
        * workqueue.cc (Workqueue::find_and_run_task): Fix the sys time
5470
        reporting.
5471
 
5472
2009-12-29  Sriraman Tallam  
5473
 
5474
        * options.cc (General_options::parse_version): Allow -v to exit
5475
        without an error if there is nothing to link.
5476
 
5477
2009-12-29  Ian Lance Taylor  
5478
 
5479
        * configure.ac: Set the MCMODEL_MEDIUM conditional to false if
5480
        using a version of gcc before 4.1.
5481
        * configure: Rebuild.
5482
 
5483
2009-12-28  Chris Demetriou  
5484
 
5485
        * attributes.cc (Output_attributes_section_data::do_write): Use
5486
        std::vector::front rather than std::vector::data.
5487
 
5488
2009-12-28  Ian Lance Taylor  
5489
 
5490
        * symtab.h (class Symbol_table): Add enum Defined.
5491
        * resolve.cc (Symbol_table::should_override): Add defined
5492
        parameter.  Change all callers.  Test whether object is NULL
5493
        before calling a method on it.
5494
        (Symbol_table::report_resolve_problem): Add defined parameter.
5495
        Change all callers.
5496
        (Symbol_table::should_override_with_special): Likewise.
5497
        * symtab.cc (Symbol_table::define_in_output_data): Add defined
5498
        parameter.  Change all callers.
5499
        (Symbol_table::do_define_in_output_data): Likewise.
5500
        (Symbol_table::define_in_output_segment): Likewise.
5501
        (Symbol_table::do_define_in_output_segment): Likewise.
5502
        (Symbol_table::define_as_constant): Likewise.
5503
        (Symbol_table::do_define_as_constant): Likewise.
5504
        * script.h (class Symbol_assignment): Add is_defsym parameter to
5505
        constructor; change all callers.
5506
        * script.cc (Script_options::add_symbol_assignment): Add is_defsym
5507
        parameter.  Change all callers.  Add is_defsym_ field.
5508
        (class Parser_closure): Add parsing_defsym parameter to
5509
        constructor; change all callers.  Add parsing_defsym accessor
5510
        function.  Add parsing_defsym_ field.
5511
 
5512
2009-12-28  Ian Lance Taylor  
5513
 
5514
        * gold.cc (queue_middle_tasks): Fix formatting.
5515
        * object.cc (Relobj::is_section_name_included): Likewise.
5516
 
5517
2009-12-23  Ian Lance Taylor  
5518
 
5519
        * i386.cc (Target_i386::do_calls_non_split): Recognize
5520
        -fsplit-stack prologue for a function with a static chain.
5521
        * x86_64.cc (Target_x86_64::do_calls_non_split): Recognize
5522
        -fsplit-stack prologue when using %r11.
5523
 
5524
2009-12-21  Sriraman Tallam  
5525
 
5526
        * options.cc (General_options::parse_version): Make -v continue and do
5527
        the link like GNU ld does.
5528
 
5529
2009-12-17  Rafael Avila de Espindola  
5530
 
5531
        * Makefile.am (CCFILES): Add timer.cc.
5532
        (HFILES): Add timer.h.
5533
        * configure.ac: Check for sysconf and times.
5534
        * main.cc: include timer.h.
5535
        (main): Use Timer instead of get_run_time.
5536
        * timer.cc: New.
5537
        * timer.h: New.
5538
        * workqueue.cc: include timer.h.
5539
        (Workqueue::find_and_run_task):
5540
        Report user, sys and wall time.
5541
        * Makefile.in: Regenerate.
5542
        * config.in: Regenerate.
5543
        * configure: Regenerate.
5544
 
5545
2009-12-16  Doug Kwan  
5546
 
5547
        * arm.cc (Arm_relobj::scan_sections_for_stubs): Exclude ICF-eliminated
5548
        sections.
5549
        * object.cc (Sized_relobj::do_finalize_local_symbols): Handle
5550
        relaxed input sections.
5551
        * output.cc (Output_section::find_relaxed_input_section): Change
5552
        return type to Output_relaxed_input_section pointer.  Adjust code
5553
        for new type of relaxed_input_section_map_.
5554
        * output.h (Output_section::find_relaxed_input_section): Change
5555
        return type to Output_relaxed_input_section pointer.
5556
        (Output_section::Output_relaxed_input_section_by_input_section_map):
5557
        New type.
5558
        (Output_section::relaxed_input_section_map_): Change type to
5559
        Output_section::Output_relaxed_input_section_by_input_section_map.
5560
        * symtab.cc (Symbol_table::compute_final_value): Handle relaxed
5561
        input section.
5562
 
5563
2009-12-15  Ian Lance Taylor  
5564
 
5565
        * layout.cc (Layout::create_shstrtab): Only write out after input
5566
        sections if we are compressing debug sections.
5567
 
5568
2009-12-15  Ian Lance Taylor  
5569
 
5570
        * archive.cc (Archive::add_symbols): Only look up a symbol without
5571
        a version if there is, in fact, a version.
5572
 
5573
2009-12-14  Ian Lance Taylor  
5574
 
5575
        Revert -Wshadow changes, all changes from:
5576
        2009-12-11  Doug Kwan  
5577
        2009-12-11  Nick Clifton  
5578
        * configure.ac: Remove -Wshadow when setting WARN_CXXFLAGS.
5579
 
5580
2009-12-11  Doug Kwan  
5581
 
5582
        * arm.cc (Target_arm::do_finalize_sections): Fix build breakage
5583
        due to -Wshadow.
5584
        * attributes.cc (Object_attribute::size): Ditto.
5585
        (Attributes_section_data::size): Ditto.
5586
        (Attributes_section_data::Attributes_section_data): Ditto.
5587
        (Output_attributes_section_data::do_write): Ditto.
5588
        * attributes.h (Object_attribute::set_type): Ditto.
5589
        * testsuite/tls_test_main.cc (safe_lock, safe_unlock): Ditto.
5590
 
5591
2009-12-11  Nick Clifton  
5592
 
5593
        * archive.cc: Fix shadowed variable warnings.
5594
        * arm.cc: Likewise.
5595
        * compressed_output.cc: Likewise.
5596
        * compressed_output.h: Likewise.
5597
        * configure: Likewise.
5598
        * dwarf_reader.cc: Likewise.
5599
        * dynobj.cc: Likewise.
5600
        * dynobj.h: Likewise.
5601
        * ehframe.cc: Likewise.
5602
        * ehframe.h: Likewise.
5603
        * errors.cc: Likewise.
5604
        * expression.cc: Likewise.
5605
        * fileread.cc: Likewise.
5606
        * fileread.h: Likewise.
5607
        * freebsd.h: Likewise.
5608
        * i386.cc: Likewise.
5609
        * icf.cc: Likewise.
5610
        * incremental.h: Likewise.
5611
        * layout.cc: Likewise.
5612
        * layout.h: Likewise.
5613
        * mapfile.cc: Likewise.
5614
        * merge.cc: Likewise.
5615
        * merge.h: Likewise.
5616
        * object.cc: Likewise.
5617
        * object.h: Likewise.
5618
        * options.h: Likewise.
5619
        * output.cc: Likewise.
5620
        * output.h: Likewise.
5621
        * parameters.cc: Likewise.
5622
        * plugin.cc: Likewise.
5623
        * powerpc.cc: Likewise.
5624
        * reduced_debug_output.cc: Likewise.
5625
        * reduced_debug_output.h: Likewise.
5626
        * reloc.cc: Likewise.
5627
        * reloc.h: Likewise.
5628
        * resolve.cc: Likewise.
5629
        * script-sections.cc: Likewise.
5630
        * script.cc: Likewise.
5631
        * script.h: Likewise.
5632
        * sparc.cc: Likewise.
5633
        * symtab.cc: Likewise.
5634
        * symtab.h: Likewise.
5635
        * target-select.cc: Likewise.
5636
        * target-select.h: Likewise.
5637
        * token.h: Likewise.
5638
        * workqueue.cc: Likewise.
5639
        * workqueue.h: Likewise.
5640
        * x86_64.cc: Likewise.
5641
 
5642
2009-12-10  Doug Kwan  
5643
 
5644
        * arm.cc (attributes.h): New include.
5645
        (Arm_relobj::Arm_relobj): Initialize attributes_section_data_.
5646
        (Arm_relobj::~Arm_relobj): Delete object pointed by
5647
        attributes_section_data_.
5648
        (Arm_relobj::attributes_section_data): New method definition.
5649
        (Arm_relobj::attributes_section_data_): New data member declaration.
5650
        (Arm_dynobj::Arm_dynobj): Initialize attributes_section_data_.
5651
        (Arm_dynobj::~Arm_dynobj): Delete object pointed by
5652
        attributes_section_data_.
5653
        (Arm_dynobj::attributes_section_data): New method definition.
5654
        (Arm_dynobj::attributes_section_data_): New data member declaration.
5655
        (Target_arm::Target_arm): Initialize attributes_section_data_.  Change
5656
        initialization value of may_use_blx_ to false.
5657
        (Target_arm::using_thumb2, Target_arm::using_thumb_only,
5658
        Target_arm::may_use_arm_nop, Target_arm::may_use_thumb2_nop): Use
5659
        object attributes to compute results instead of hard-coding.
5660
        (Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order,
5661
        Target_arm::get_secondary_compatible_arch,
5662
        Target_arm::set_secondary_compatible_arch
5663
        Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name,
5664
        Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes):
5665
        New method declarations.
5666
        (Target_arm::get_aeabi_object_attribute): New method definition.
5667
        (Target_arm::attributes_section_data_): New data member declaration.
5668
        (read_arm_attributes_section): New template definition.
5669
        (Arm_relobj::do_read_symbols): Read attributes section if it exists.
5670
        (Arm_dynobj::do_read_symbols): Ditto.
5671
        (Target_arm::do_finalize_sections): Merge attributes sections from
5672
        input.  Check for BLX use after attributes section merging.
5673
        Fix __exidx_start and __exidx_end visibility.  Create an
5674
        .ARM.attributes section if necessary.
5675
        (Target_arm::get_secondary_compatible_arch,
5676
        Target_arm::set_secondary_compatible_arch,
5677
        Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name,
5678
        Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes,
5679
        Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order):
5680
        New method definitions.
5681
 
5682
2009-12-09  Ian Lance Taylor  
5683
 
5684
        * plugin.cc (Plugin::load): Don't cast from void* to a function
5685
        pointer.
5686
 
5687
2009-12-09  Ian Lance Taylor  
5688
 
5689
        * dynobj.cc (Sized_dynobj::do_read_symbols): Clear version
5690
        information fields.
5691
 
5692
2009-12-09  H.J. Lu  
5693
 
5694
        * testsuite/Makefile.am (two_file_shared_1_pic_2_test_DEPENDENCIES):
5695
        Replace two_file_shared_1.so with two_file_shared_2.so.
5696
        * testsuite/Makefile.in: Regenerated.
5697
 
5698
2009-12-08  Doug Kwan  
5699
 
5700
        * Makefile.am (CCFILES): Add attributes.cc and int_encoding.cc.
5701
        (HFILES): Add attributes.h and int_encoding.h.
5702
        * Makefile.in: Regenerate.
5703
        * dwarf_reader.cc (read_unsigned_LEB_128, read_signed_LEB_128): Move
5704
        function definitions to int_encoding.cc
5705
        * dwarf_reader.h (read_unsigned_LEB_128, read_signed_LEB_128): Move
5706
        prototypes to int_encoding.h
5707
        * reduced_debug_output.cc (int_encoding.h): New include.
5708
        (write_unsigned_LEB_128, get_length_as_unsigned_LEB_128): Move
5709
        function definitions to int_encoding.cc
5710
        (insert_into_vector, read_from_pointer): Move template definitions to
5711
        int_encoding.h
5712
        * attributes.cc: New file.
5713
        * attributes.h: New file.
5714
        * int_encoding.cc: New file.
5715
        * int_encoding.h: New file.
5716
 
5717
2009-12-07  Rafael Avila de Espindola  
5718
 
5719
        PR gold/11055
5720
        * incremental-dump.cc (dump_incremental_inputs): New.
5721
        (main): Use dump_incremental_inputs.
5722
 
5723
2009-12-07  H.J. Lu  
5724
 
5725
        PR gold/10893
5726
        * i386.cc (Target_i386::Scan::globa): Use is_func instead of
5727
        checking elfcpp::STT_FUNC.
5728
        (Target_i386::Relocate::relocate): Likewise.
5729
        * x86_64.cc (Target_x86_64::Scan::global): Likewise.
5730
 
5731
        * symtab.cc (Symbol_table::sized_write_symbol): Turn IFUNC
5732
        symbols from shared libraries into normal FUNC symbols.
5733
 
5734
        * symtab.h (Symbol): Add is_func and use it.
5735
 
5736
2009-12-05  Doug Kwan  
5737
 
5738
        * arm.cc (Target_arm::arm_info): Initialize new fields
5739
        attributes_section and attributes_vendor.
5740
        * i386.cc (Target_i386::i386_info): Same.
5741
        * object.cc (Sized_relobj::do_layout): Skip attribute section.
5742
        * gold/powerpc.cc (Target_powerpc::powerpc_info): Initialize new
5743
        fields attributes_section and attributes_vendor.
5744
        * sparc.cc (Target_sparc::sparc_info): Same.
5745
        * target.h (Target::attributes_section, Target::attributes_vendor,
5746
        Target::is_attributes_section, Target::attribute_arg_type,
5747
        Target::attributes_order): New method definitions.
5748
        (Target::Target_info::attributes_section,
5749
        Target::Target_info::attributes_vendor): New fields.
5750
        (Target::do_attribute_arg_type, Target::do_attributes_order): New
5751
        virtual method definitions.
5752
        * x86_64.cc (Target_x86_64::x86_64_info): Initialize new fields
5753
        attributes_section and attributes_vendor.
5754
        * testsuite/testfile.cc (Target_test::test_target_info): Same.
5755
 
5756
2009-12-05  Doug Kwan  
5757
 
5758
        * arm.cc: Update comments about interworking and stub generation.
5759
        (Target_arm::Relocate::reloc_is_non_pic): Update list of relocations
5760
        considered as non-PIC.
5761
        (Arm_relocate_functions::base_abs): Fix formatting.
5762
        (Arm_relocate_functions::got_prel): Fix comment.  Change interface
5763
        of function to use GOT entry address instead of offset.
5764
        (Target_arm::Scan::global): Issue an error if a symbol would need a
5765
        PLT does not get one because it is untyped.  Remove code to create
5766
        dynamic symbols for relative branches.
5767
        (Target_arm::Relocate::relocate: Use 0 instead of false since function
5768
        takes unsigned integer instead of boolean.
5769
 
5770
2009-12-05  H.J. Lu  
5771
 
5772
        * testsuite/Makefile.am (constructor_test_LDADD): New. Empty.
5773
        (two_file_test_LDADD): Likewise.
5774
        (common_test_1_LDADD): Likewise.
5775
        (exception_test_LDADD) Likewise.
5776
        (weak_test_LDADD): Likewise.
5777
        (many_sections_test_LDADD): Likewise.
5778
        (initpri1_LDADD): Likewise.
5779
        (script_test_1_LDADD): Likewise.
5780
        (script_test_2_LDADD): Likewise.
5781
        (justsyms_LDADD): Likewise.
5782
        (binary_test_LDADD): Likewise.
5783
        (large_LDADD): Likewise.
5784
        * testsuite/Makefile.in: Regenerated.
5785
 
5786
2009-12-04  H.J. Lu  
5787
 
5788
        * resolve.cc (symbol_to_bits): Treat STB_GNU_UNIQUE as STB_GLOBAL.
5789
        (Symbol_table::override_with_special): Likewise.
5790
        (Symbol_table::add_from_object): Likewise.
5791
 
5792
2009-12-04  Rafael Avila de Espindola  
5793
 
5794
        * incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
5795
        Don't set the data_offset twice.
5796
 
5797
2009-12-04  Rafael Avila de Espindola  
5798
 
5799
        * testsuite/Makefile.in: Regenerate.
5800
 
5801
2009-12-03  Doug Kwan  
5802
 
5803
        * arm.cc: Remove comment about missing .ARM.exidx section symbols.
5804
        (Target_arm::do_finalize_sections): Add parameter for symbol table
5805
        pointer.  Add __exidx_start and __exidx_end symbols as appropriate.
5806
        * i386.cc (Target_i386::do_finalize_sections): Add an additional
5807
        parameter for symbol table pointer.
5808
        * layout.cc (Layout::finalize): Call Target::finalize_sections with
5809
        an additional parameter for a pointer to symbol table.
5810
        * powerpc.cc (Target_powerpc::do_finalize_sections): Add an additional
5811
        parameter for a symbol table pointer.
5812
        * sparc.cc (Target_sparc::do_finalize_sections): Ditto.
5813
        * target.h (Target::finalize_sections, Target::do_finalize_sections):
5814
        Ditto.
5815
        * x86_64.cc (Target_x86_64::do_finalize_sections): Add an additional
5816
        parameter for a symbol table pointer.
5817
 
5818
2009-12-03  Rafael Avila de Espindola  
5819
 
5820
        * incremental.cc (Incremental_inputs_header)
5821
        (Incremental_inputs_header_write, Incremental_inputs_entry)
5822
        (Incremental_inputs_entry_write): Move ...
5823
        * incremental.h (Incremental_inputs_header)
5824
        (Incremental_inputs_header_write, Incremental_inputs_entry)
5825
        (Incremental_inputs_entry_write): here.
5826
 
5827
2009-12-02  Rafael Avila de Espindola  
5828
 
5829
        * incremental.cc (make_sized_incremental_binary): Set the target.
5830
        Error if it is incompatible.
5831
        * output.h (Output_file): Add filename method.
5832
 
5833
2009-12-02  Rafael Avila de Espindola  
5834
 
5835
        * incremental.cc (Incremental_inputs_entry): Remove unused argument
5836
        from the get_* methods.
5837
 
5838
2009-12-02  Rafael Avila de Espindola  
5839
 
5840
        * incremental-dump.cc (main): Check that the offeset of a script is 0.
5841
        * incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
5842
        Write 0 for the data_offset of scripts.
5843
 
5844
2009-12-02  Rafael Avila de Espindola  
5845
 
5846
        * testsuite/Makefile.am: Add the incremental_test.sh test.
5847
        * testsuite/incremental_test.sh: New.
5848
        * testsuite/incremental_test_1.c: New.
5849
        * testsuite/incremental_test_2.c: New.
5850
 
5851
2009-12-01  Rafael Avila de Espindola  
5852
 
5853
       * incremental-dump.cc (main): Fix typos.
5854
 
5855
2009-11-27  Rafael Avila de Espindola  
5856
 
5857
        PR gold/11025
5858
        * incremental-dump.cc (main): Use llu to print 64 bit values.
5859
 
5860
2009-11-26  Per Øyvind Karlsen 
5861
            H.J. Lu  
5862
 
5863
        * Makefile.am (incremental_dump_DEPENDENCIES): Add $(THREADSLIB)
5864
        $(LIBDL).
5865
        (incremental_dump_LDADD): Likewise.
5866
        * Makefile.in: Regenerated.
5867
 
5868
2009-11-25  Doug Kwan  
5869
 
5870
        Revert:
5871
 
5872
        2009-11-25  Doug Kwan  
5873
 
5874
                * arm.cc (Target_arm::Target_arm): Move method definition
5875
                outside of class definition.  Add code to handle
5876
                --target1-rel, --target1-abs and --target2= options.
5877
                (Target_arm::get_reloc_reloc_type): Change method to be
5878
                non-static and const.
5879
                (Target_arm::target1_is_rel_, Target_arm::target2_reloc_):
5880
                New data member declaration.
5881
                (Target_arm::Scan::local, Target_arm::Scan::global,
5882
                Target_arm::Relocate::relocate,
5883
                Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
5884
                Adjust call to Target_arm::get_real_reloc_type.
5885
                (Target_arm::get_real_reloc_type): Use command line options
5886
                to determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
5887
                * options.h (--target1-rel, --target1-abs, --target2): New
5888
                ARM-only options.
5889
 
5890
2009-11-25  Doug Kwan  
5891
 
5892
        * arm.cc (Target_arm::Target_arm): Move method definition outside of
5893
        class definition.  Add code to handle --target1-rel, --target1-abs
5894
        and --target2= options.
5895
        (Target_arm::get_reloc_reloc_type): Change method to be non-static
5896
        and const.
5897
        (Target_arm::target1_is_rel_, Target_arm::target2_reloc_): New data
5898
        member declaration.
5899
        (Target_arm::Scan::local, Target_arm::Scan::global,
5900
        Target_arm::Relocate::relocate,
5901
        Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Adjust
5902
        call to Target_arm::get_real_reloc_type.
5903
        (Target_arm::get_real_reloc_type): Use command line options to
5904
        determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
5905
        * options.h (--target1-rel, --target1-abs, --target2): New ARM-only
5906
        options.
5907
 
5908
2009-11-25  Doug Kwan  
5909
 
5910
        * arm.cc (Target_arm::may_use_thumb2_nop): New method definition.
5911
        (Arm_relocate_functions::thumb_branch_common): New metod declaration.
5912
        (Arm_relocate_functions::abs12, Arm_relocate_functions::abs16): Fix
5913
        formatting.
5914
        (Arm_relocate_functions::thm_call): Replace body with a call to
5915
        Arm_relocate_functions::thumb_branch_common.
5916
        (Arm_relocate_functions::thm_jump24,
5917
        Arm_relocate_functions::thm_xpc22): New method definitions.
5918
        (Arm_relocate_functions::thumb_branch_common): New method definition.
5919
        (Reloc_stub::stbu_type_for_reloc): Fix incorrect uses of bit-wise-or
5920
        operator.
5921
        (Target_arm::Relocate::relocate): Adjust call to thm_call.
5922
        Add code to handle R_ARM_THM_XPC22 and R_ARM_THM_JUMP24.
5923
 
5924
2009-11-24  Rafael Avila de Espindola  
5925
 
5926
        * Makefile.am: Build incremental-dump
5927
        * Makefile.in: Regenerate.
5928
        * incremental-dump.cc: New.
5929
        * incremental.cc (Incremental_inputs_header_data,
5930
        Incremental_inputs_entry_data): Move to incremental.h
5931
        * incremental.h: (Incremental_inputs_header_data,
5932
        Incremental_inputs_entry_data): Move from incremental.cc
5933
 
5934
2009-11-24  Rafael Avila de Espindola  
5935
 
5936
        * incremental.cc (Incremental_inputs_header,
5937
        Incremental_inputs_header_write, Incremental_inputs_entry,
5938
        Incremental_inputs_entry_write): Add a typedef with the data type.
5939
 
5940
2009-11-24  Rafael Avila de Espindola  
5941
 
5942
        * incremental.cc (Incremental_inputs_header,
5943
        Incremental_inputs_header_write, Incremental_inputs_entry,
5944
        Incremental_inputs_entry_write): Update comment about which
5945
        type has the filed descriptions.
5946
 
5947
2009-11-15  Doug Kwan  
5948
 
5949
        * arm.cc (Target_arm::may_use_arm_nop): New method definition.
5950
        (Arm_relocate_functions::arm_branch_common): Change method defintion
5951
        in class definition to a method declaration and update list of formal
5952
        parameters.
5953
        (Arm_relocate_functions::plt32, Arm_relocate_functions::call,
5954
        Arm_relocation_functions::jump24): Adjust call to
5955
        Arm_relocate_functions::arm_branch_common.  Update list of formal
5956
        parameters.
5957
        (Arm_relocate_functions::xpc25): New method definition.
5958
        (Arm_relocate_functions::arm_branch_common): Move method defintion
5959
        out from class definition.  Use stubs for mode-switching and extending
5960
        branch ranges.
5961
        (Target_arm::Relocate::relocate): Handle weakly-undefined symbols
5962
        specially.  Change code to enable use of stubs in ARM branches.
5963
 
5964
2009-11-10  Doug Kwan  
5965
 
5966
        * arm.cc (Arm_relobj::do_relocate_sections): Remove options parameter
5967
        in method declaration.
5968
        (Target_arm::relocate_stub): New method declaration.
5969
        (Target_arm::default_target): Change to return a pointer instead of
5970
        a const reference.
5971
        (Reloc_stub::stub_type_for_reloc): Adjust for the change in
5972
        Target_arm::default_target.
5973
        (Arm_Relobj::do_relocate_sections): Remove options paramater in
5974
        method definition.
5975
        (Target_arm::relocate_section): Adjust view.
5976
        (Target_arm::relocate_stub): New method definition.
5977
 
5978
2009-11-10  Doug Kwan  
5979
 
5980
        * i386.cc (Target_i386::do_calls_non_split): Add a cast to avoid
5981
        a format warning.
5982
        * incremental.cc (open_incremental_binary): Initialized local
5983
        variables to avoid warnings.
5984
        * object.cc (make_elf_object): Ditto.
5985
        * x86_64.cc (Target_x86_64::do_calls_non_split): Add a cast to avoid
5986
        a format warning.
5987
 
5988
009-11-09  H.J. Lu  
5989
 
5990
        PR gold/10930
5991
        * testsuite/plugin_test.c: Include "config.h".
5992
 
5993
2009-11-09  Doug Kwan  
5994
 
5995
        * arm.cc (Target_arm::fake_relnum_for_stubs): New constant.
5996
        (arm_symbol_value): Remove.
5997
        (Arm_relocate_functions::arm_branch_common,
5998
        Arm_relocate_functions::abs8, Arm_relocate_functions::thm_abs5,
5999
        Arm_relocate_functions::abs12, Arm_relocate_functions::abs16,
6000
        Arm_relocate_functions::abs32, Arm_relocate_functions::rel32,
6001
        Arm_relocate_functions::thm_call, Arm_relocate_functions::plt32,
6002
        Arm_relocate_functions::call, Arm_relocate_functions::jump24,
6003
        Arm_relocate_functions::prel31, Arm_relocate_functions::mov_abs_nc,
6004
        Arm_relocate_functions::movt_abs, Arm_relocate_functions::movw_abs_nc,
6005
        Arm_relocate_functions::thm_mobw_abs_nc,
6006
        Arm_relocate_functions::thm_mov_abs,
6007
        Arm_relocate_functions::movw_prel_nc,
6008
        Arm_relocate_functions::thm_movt_abs,
6009
        Arm_relocate_functions::movt_prel,
6010
        Arm_relocate_functions::thm_movw_prel_nc,
6011
        Arm_relocate_functions::thm_movt_prel): Adjust callers of the above.
6012
        (Target_arm::Relocate::relocate): Only decompose address into two
6013
        parts if relocation type uses the thumb-bit and pass the actual
6014
        bit instead of a flag indicating that the thumb-bit is used.  Adjust
6015
        calls to methods in Arm_relocate_functions for this change.
6016
 
6017
2009-11-08  Ian Lance Taylor  
6018
 
6019
        PR 10925
6020
        * reloc.cc: Instantiate
6021
        Sized_relobj::initialize_input_to_output_maps and
6022
        Sized_relobj:free_input_to_output_maps.
6023
 
6024
2009-11-06  Ian Lance Taylor  
6025
 
6026
        PR 10876
6027
        * defstd.cc (in_segment): Set only_if_ref true for "end".
6028
 
6029
2009-11-06  Doug Kwan  
6030
 
6031
        * arm.cc (class Reloc_stub): Correct a comment.
6032
        (Target_arm::Target_arm): Initialize arm_input_section_map_.
6033
        (Target_arm::scan_section_for_stubs): New method declaration.
6034
        (Target_arm::do_make_elf_object, Target_arm::do_make_output_section):
6035
        Change methods from private to protected.
6036
        (Target_arm::do_may_relax): New method definition.
6037
        (Target_arm::do_relax, Target_arm::group_sections,
6038
        Target_arm::scan_reloc_for_stub,
6039
        Target_arm::scan_reloc_section_for_stubs): New method declarations.
6040
        (Target_arm::arm_input_section_map_): New data member declaration.
6041
        (Target_arm::scan_reloc_for_stub,
6042
        Target_arm::scan_reloc_section_for_stubs,
6043
        Target_arm::scan_section_for_stubs, Target_arm::group_sections,
6044
        Target_arm::do_relax): New method definitions.
6045
 
6046
2009-11-06  Mikolaj Zalewski  
6047
 
6048
        * configure.ac: Check for (struct stat)::st_mtim
6049
        * fileread.cc (File_read::get_mtime): Use st_mtim if available.
6050
        * config.in: Regenerate.
6051
        * configure: Regenerate.
6052
 
6053
2009-11-05  Ian Lance Taylor  
6054
 
6055
        PR 10910
6056
        * output.cc (Output_segment::add_output_section): Add missing
6057
        return statement.
6058
 
6059
2009-11-04  Ian Lance Taylor  
6060
 
6061
        PR 10880
6062
        * object.h (class Object): Add is_needed and set_is_needed
6063
        methods.  Add is_needed_ field.  Make bool fields into bitfields.
6064
        * symtab.cc (Symbol_table::set_dynsym_indexes): If a symbol is
6065
        defined in a dynamic object and referenced by a regular object,
6066
        set is_needed for the dynamic object.
6067
        * layout.cc (Layout::finish_dynamic_section): Don't add DT_NEEDED
6068
        if the file is marked with as_needed and it is not needed.
6069
 
6070
2009-11-04  Ian Lance Taylor  
6071
 
6072
        PR 10887
6073
        * arm.cc (Target_arm::do_finalize_sections): Don't add dynamic
6074
        tags if data is discarded by linker script.
6075
        * i386.cc (Target_i386::do_finalize_sections): Likewise.
6076
        * powerpc.cc (Target_powerpc::do_finalize_sections): Likewise.
6077
        * sparc.cc (Target_sparc::do_finalize_sections): Likewise.
6078
        * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
6079
 
6080
2009-11-04  Ian Lance Taylor  
6081
 
6082
        * layout.cc (Layout::get_output_section): Add is_interp and
6083
        is_dynamic_linker_section parameters.  Change all callers.
6084
        (Layout::choose_output_section): Likewise.
6085
        (Layout::make_output_section): Likewise.
6086
        (Layout::add_output_section_data): Add is_dynamic_linker_section
6087
        parameter.  Change all callers.
6088
        * layout.h (class Layout): Update declarations.
6089
        * output.h (class Output_section): Add is_interp, set_is_interp,
6090
        is_dynamic_linker_section, set_is_dynamic_linker_section methods.
6091
        Add is_interp_, is_dynamic_linker_section_ fields.  Change
6092
        generate_code_fills_at_write_ to a bitfield.
6093
        * output.cc (Output_section::Output_sections): Initialize new
6094
        fields.
6095
        (Output_segment::add_output_section): Add do_sort parameter.
6096
        Change all callers.
6097
 
6098
2009-11-03  Ian Lance Taylor  
6099
 
6100
        PR 10860
6101
        * options.h (class General_options): Add --warn-common.
6102
        * resolve.cc (Symbol_table::resolve): Handle --warn-common when
6103
        merging two common symbols.
6104
        (Symbol_table::should_override): Handle --warn-common when merging
6105
        a common symbol with a defined symbol.  Use report_resolve_problem
6106
        for multiple definitions.
6107
        (Symbol_table::report_resolve_problem): New function.
6108
        * symtab.h (class Symbol_table): Declare report_resolve_problem.
6109
 
6110
2009-11-03  Doug Kwan  
6111
 
6112
        * arm.cc (Target_arm::Target_arm): Initialize stub_tables_ and
6113
        stub_factory_.
6114
        (Target_arm::stub_factory): New method definition.
6115
        (Target_arm::new_arm_input_section,
6116
        Target_arm::find_arm_input_section, Target_arm::new_stub_table,
6117
        Target_arm::reloc_uses_thumb_bit): New method declarations.
6118
        (Target_arm::Stub_table_list, Target_arm::Arm_input_section_map):
6119
        New type definitions.
6120
        (Target_arm::stub_tables_, Target_arm::stub_factory_): New data
6121
        member declarations.
6122
        (Target_arm::reloc_uses_thumb_bit, Target_arm::new_arm_input_section,
6123
        Target_arm::find_arm_input_section, Target_arm::new_stub_table):
6124
        New method definitions.
6125
 
6126
2009-11-03  Ian Lance Taylor  
6127
 
6128
        * options.h (class General_options): Add --warn_constructors.
6129
 
6130
2009-11-03  Ian Lance Taylor  
6131
 
6132
        PR 10893
6133
        * defstd.cc (in_section): Add entries for __rel_iplt_start,
6134
        __rel_iplt_end, __rela_iplt_start, __rela_iplt_end, and __stack.
6135
 
6136
2009-11-03  Ian Lance Taylor  
6137
 
6138
        PR 10895
6139
        * po/Make-in ($(srcdir)/$(PACKAGE).pot): Pass -C and
6140
        --msgid-bugs-address.
6141
        (install-pdf): New target.
6142
        (install-data_yes): Look up one directory to find mkinstalldirs.
6143
 
6144
2009-11-03  H.J. Lu  
6145
 
6146
        * po/Make-in (.po.gmo): Don't generate .gmo files in source
6147
        tree.
6148
 
6149
2009-10-30  Doug Kwan  
6150
 
6151
        * arm.cc (Stub_addend_reader): Fix bug in previouls check-in.
6152
 
6153
2009-10-30  Doug Kwan  
6154
 
6155
        * arm.cc (Stub_addend_reader): New struct template definition
6156
        and partial specializations.
6157
        (Stub_addend_reader::operator()): New method definition for a
6158
        partially specialized template.
6159
 
6160
2009-10-30  Doug Kwan  
6161
 
6162
        * arm.cc (Arm_relobj::processor_specific_flags): New method
6163
        definition.
6164
        (Arm_relobj::do_read_symbols): New method declaration.
6165
        (Arm_relobj::processor_specific_flags_): New data member declaration.
6166
        (Arm_dynobj): New class definition.
6167
        (Target_arm::do_finalize_sections): Add input_objects parameter.
6168
        (Target_arm::do_adjust_elf_header): New method declaration.
6169
        (Target_arm::are_eabi_versions_compatible,
6170
        (Target_arm::merge_processor_specific_flags): New method declaration.
6171
        (Target_arm::do_make_elf_object): New overloaded method definitions
6172
        and declaration.
6173
        (Arm_relobj::do_read_symbols): New method definition.
6174
        (Arm_dynobj::do_read_symbols): Ditto.
6175
        (Target_arm::do_finalize_sections): Add input_objects parameters.
6176
        Merge processor-specific flags from all input objects.
6177
        (Target_arm::are_eabi_versions_compatible,
6178
        Target_arm::merge_processor_specific_flags,
6179
        Target_arm::do_adjust_elf_header, Target_arm::do_make_elf_object):
6180
        New method definitions.
6181
        * i386.cc (Target_i386::do_finalize_sections): Add unnamed
6182
        Input_objects pointer type parameter.
6183
        * layout.cc (Layout::finalize): Pass input objects to target's.
6184
        finalize_sections function.
6185
        * output.cc (Output_file_header::do_sized_write): Set ELF file
6186
        header's processor-specific flags.
6187
        * powerpc.cc (Target_powerpc::do_finalize_sections): Add unnamed
6188
        Input_objects pointer type parameter.
6189
        * sparc.cc (Target_sparc::do_finalize_sections): Same.
6190
        * target.h (Input_objects): New forward class declaration.
6191
        (Target::processor_specific_flags,
6192
        Target::are_processor_specific_flags_sect): New method definitions.
6193
        (Target::finalize_sections): Add input_objects parameter.
6194
        (Target::Target): Initialize processor_specific_flags_ and
6195
        are_processor_specific_flags_set_.
6196
        (Target::do_finalize_sections): Add unnamed Input_objects pointer type
6197
        parameter.
6198
        (Target::set_processor_specific_flags): New method definition.
6199
        (Target::processor_specific_flags_,
6200
        Target::are_processor_specific_flags_set_): New data member
6201
        declarations.
6202
        * x86_64.cc (Target_x86_64::do_finalize_sections): Add unnamed
6203
        Input_objects pointer type parameter.
6204
 
6205
2009-10-30  Doug Kwan  
6206
 
6207
        * arm.cc: Use Arm_address instead of elfcpp::Elf_types<32>::Elf_Addr.
6208
 
6209
2009-10-28  Ian Lance Taylor  
6210
 
6211
        * object.h (class Relobj): Drop options parameter from
6212
        gc_process_relocs, scan_relocs, relocate, do_gc_process_relocs,
6213
        do_scan_relocs, do_relocate.  Change all callers.
6214
        (class Sized_relobj): Drop options parameters from
6215
        do_gc_process_relocs, do_scan_relocs, do_relocate,
6216
        do_relocate_sections, relocate_sections, emit_relocs_scan,
6217
        emit_relocs_scan_reltype.  Change all callers.
6218
        (struct Relocate_info): Remove options field and all references to
6219
        it.
6220
        * reloc.h (class Read_relocs): Remove options constructor
6221
        parameter and options_ field.  Change all callers.
6222
        (class Gc_process_relocs, class Scan_relocs): Likewise.
6223
        (class Relocate_task): Likewise.
6224
        * target-reloc.h (scan_relocs): Remove options parameter.  Change
6225
        all callers.
6226
        (scan_relocatable_relocs): Likewise.
6227
        * target.h (class Sized_target): Remove options parameter from
6228
        gc_process_relocs, scan_relocs, scan_relocatable_relocs.  Change
6229
        all callers.
6230
        * gc.h (gc_process_relocs): Remove options parameter.  Change all
6231
        callers.
6232
        * arm.cc: Update functions to remove options parameters.
6233
        * i386.cc: Likewise.
6234
        * powerpc.cc: Likewise.
6235
        * sparc.cc: Likewise.
6236
        * x86_64.cc: Likewise.
6237
        * testsuite/testfile.cc: Likewise.
6238
 
6239
2009-10-28  Doug Kwan  
6240
 
6241
        * arm.cc (Arm_relobj): New class definition.
6242
        (Arm_relobj::scan_sections_for_stubs,
6243
        Arm_relobj::do_count_local_symbols, Arm_relobj::do_relocate_sections):
6244
        New method definitions.
6245
 
6246
2009-10-28  Cary Coutant  
6247
 
6248
        * plugin.h (Plugin::Plugin): Initialize cleanup_done_.
6249
        (Plugin::cleanup_done_): New member.
6250
        (Plugin_manager::Plugin_manager): Remove cleanup_done_.
6251
        (Plugin_manager::cleanup_done_): Remove.
6252
        (Plugin_manager::add_input_file): Edit error message.
6253
        * plugin.cc (Plugin::cleanup): Test and set cleanup_done_.
6254
        (Plugin_manager::cleanup): Remove use of cleanup_done_.
6255
 
6256
2009-10-27  Mikolaj Zalewski  
6257
 
6258
        * fileread.cc: (File_read::View::~View): Use the new
6259
        data_ownership_ filed.
6260
        (File_read::~File_read): Dispose the new whole_file_view_.
6261
        (File_read::open): Mmap the whole file if needed.
6262
        (File_read::open): Use whole_file_view_ instead of contents_.
6263
        (File_read::find_view): Use whole_file_view_ if applicable.
6264
        (File_read::do_read): Use whole_file_view_ instead of contents_.
6265
        (File_read::make_view): Use whole_file_view_ instead of contents_,
6266
        update File_read::View::View call.
6267
        (File_read::find_or_make_view): Update File_read::View::View
6268
        call.
6269
        * fileread.h: (File_read::File_read): Initialize whole_file_view_,
6270
        remove contents_
6271
        (File_read::View::Data_ownership): New enum.
6272
        (File_read::View::View): Replace bool mapped_ with Data_ownership
6273
        argument.
6274
        (File_read::View::mapped_): Remove (replaced by data_ownership_).
6275
        (File_read::View::data_ownership_): New field.
6276
        (File_read::contents_): Remove (replaced by whole_file_view_).
6277
        (File_read::whole_file_view_): New field.
6278
        * options.h (class General_options): Add --keep-files-mapped.
6279
 
6280
2009-10-27  Cary Coutant  
6281
 
6282
        * symtab.cc (add_from_pluginobj): Pass correct value for is_ordinary.
6283
        * testsuite/Makefile.am (plugin_test_5): New test case.
6284
        * testsuite/Makefile.in: Regenerate.
6285
 
6286
2009-10-25  Doug Kwan  
6287
 
6288
        * object.h (Sized_relobj::View_size, Sized_relobj::Views): Change
6289
        from private to protected to allow access by child class.
6290
        (Sized_relobj::do_relocate_sections): New method declaration.
6291
        (Sized_relobj::relocate_sections): Virtualize.
6292
        * reloc.cc (Sized_relobj::do_relocate_sections): Rename from
6293
        Sized_relobj::relocate_sections.  Instantiate template explicitly
6294
        for different target sizes and endianity.
6295
 
6296
2009-10-24  Doug Kwan  
6297
 
6298
        * arm.cc (Arm_output_section, Arm_relobj): Forward class declarations.
6299
        (Arm_input_section::as_arm_input_section): New method.
6300
        (Arm_output_section): New class definition.
6301
        (Arm_output_section::create_stub_group,
6302
        Arm_output_section::group_sections): New method definitions.
6303
 
6304
2009-10-22  Doug Kwan  
6305
 
6306
        * arm.cc (Arm_input_section): New class definition.
6307
        (Arm_input_section::init, Arm_input_section:do_write,
6308
        Arm_input_section::set_final_data_size,
6309
        Arm_input_section::do_reset_address_and_file_offset): New method
6310
        definitions.
6311
 
6312
2009-10-21  Doug Kwan  
6313
 
6314
        * arm.cc (Stub_table, Arm_input_section): New forward class
6315
        declarations.
6316
        (Stub_table): New class defintion.
6317
        (Stub_table::add_reloc_stub, Stub_table::relocate_stubs
6318
        Stub_table::do_reset_address_and_file_offset, Stub_table::do_write):
6319
        New method definition.
6320
 
6321
2009-10-21  Doug Kwan  
6322
 
6323
        * arm.cc: Update copyright comments.
6324
        (Target_arm): New forward class template declaration.
6325
        (Arm_address): New type.
6326
        (ARM_MAX_FWD_BRANCH_OFFSET, ARM_MAX_BWD_BRANCH_OFFSET,
6327
        THM_MAX_FWD_BRANCH_OFFSET, THM_MAX_BWD_BRANCH_OFFSET,
6328
        THM2_MAX_FWD_BRANCH_OFFSET, THM2_MAX_BWD_BRANCH_OFFSET): New
6329
        constants.
6330
        (Insn_template): Same.
6331
        (DEF_STUBS): New macro.
6332
        (Stub_type): New enum type.
6333
        (Stub_template): New class definition.
6334
        (Stub): Same.
6335
        (Reloc_stub): Same.
6336
        (Stub_factory): Same.
6337
        (Target_arm::Target_arm): Initialize may_use_blx_ and
6338
        should_force_pic_veneer_.
6339
        (Target_arm::may_use_blx, Target_arm::set_may_use_blx,
6340
        Target_arm::should_force_pic_veneer,
6341
        Target_arm::set_should_force_pic_veneer, Target_arm::using_thumb2,
6342
        Target_arm::using_thumb_only, Target_arm:;default_target): New
6343
        method defintions.
6344
        (Target_arm::may_use_blx_, Target_arm::should_force_pic_veneer_):
6345
        New data member declarations.
6346
        (Insn_template::size, Insn_template::alignment): New method defintions.
6347
        (Stub_template::Stub_template): New method definition.
6348
        (Reloc_stub::Key::name, Reloc_stub::stub_type_for_reloc,
6349
        Reloc_stub::do_fixed_endian_write, Reloc_stub::do_write): Same.
6350
        (Stub_factory::Stub_factory): New method definition.
6351
        * gold.h (string_hash): New template.
6352
        * output.h (Input_section_specifier::hash_value): Use
6353
        gold::string_hash.
6354
        (Input_section_specifier::string_hash): Remove.
6355
        * stringpool.cc (Stringpool_template::string_hash): Use
6356
        gold::string_hash.
6357
 
6358
2009-10-20  Doug Kwan  
6359
 
6360
        * object.cc (Sized_relobj::do_finalize_local_symbols): Handle section
6361
        symbols of relaxed input sections.
6362
        * output.h (Output_section::find_relaxed_input_section): Make
6363
        method public.
6364
 
6365
2009-10-16  Doug Kwan  
6366
 
6367
        * dynobj.cc (Versions::Versions): Initialize version_script_.
6368
        Only insert base version symbol definition for a shared object
6369
        if version script defines any version versions.
6370
        (Versions::define_base_version): New method definition.
6371
        (Versions::add_def): Check that base version is not needed.
6372
        (Versions::add_need): Define base version lazily.
6373
        * dynobj.h (Versions::define_base_version): New method declaration.
6374
        (Versions::needs_base_version_): New data member declaration.
6375
        * testsuite/Makefile.am (check_SCRIPTS): Add no_version_test.sh
6376
        (check_DATA): Add no_version_test.stdout.
6377
        (libno_version_test.so, no_version_test.o no_version_test.stdout):
6378
        New make rules.
6379
        * testsuite/Makefile.in: Regenerate.
6380
        * testsuite/no_version_test.c: New file.
6381
        * testsuite/no_version_test.sh: Ditto.
6382
 
6383
2009-10-16  Doug Kwan  
6384
 
6385
        * expression.cc (class Segment_start_expression): New class definition.
6386
        (Segment_start_expression::value): New method definition.
6387
        (script_exp_function_segment_start): Return a new
6388
        Segment_start_expression.
6389
        * gold/script-c.h (script_saw_segment_start_expression): New function
6390
        prototype.
6391
        * script-sections.cc (Script_sections::Script_sections): Initialize
6392
        SAW_SEGMENT_START_EXPRESSION_ to false.
6393
        (Script_sections::set_section_addresses): Use -Ttext, -Tdata
6394
        and -Tbbs options to specify section addresses if given in
6395
        command line and no SEGMENT_START expression is seen in a script.
6396
        * script-sections.h (Script_sections::saw_segment_start_expression,
6397
        Script_sections::set_saw_segment_start_expression): New method
6398
        definition.
6399
        (Script_sections::saw_segment_start_expression_): New data member
6400
        declaration.
6401
        * script.cc (script_saw_segment_start_expression): New function.
6402
        * yyscript.y (SEGMENT_START): Call script_saw_segment_start_expression.
6403
        * testsuite/Makefile.am (check_SCRIPTS): Add script_test_6.sh,
6404
        script_test_7.sh and script_test_8.sh.
6405
        (check_DATA): Add script_test_6.stdout, script_test_7.stdout and
6406
        script_test_8.stdout.
6407
        (MOSTLYCLEANFILES): Add script_test_6, script_test_7 and script_test_8.
6408
        (script_test_6, script_test_6.stdout, script_test_7,
6409
        script_test_7.stdout, script_test_8, script_test_8.stdout): New rules.
6410
        * Makefile.in: Regenerate.
6411
        * testsuite/script_test_6.sh: New file.
6412
        * testsuite/script_test_6.t: Same.
6413
        * testsuite/script_test_7.sh: Same.
6414
        * testsuite/script_test_7.t: Same.
6415
        * testsuite/script_test_8.sh: Same.
6416
 
6417
2009-10-16  Doug Kwan  
6418
 
6419
        * output.cc (Output_segment::set_section_list_address): Cast
6420
        expressions to unsigned long long type to avoid format warnings.
6421
 
6422
2009-10-15  Ian Lance Taylor  
6423
 
6424
        * script.cc (Script_options::add_symbol_assignment): Always add a
6425
        dot assignment to script_sections_.
6426
        * script-sections.cc (Script_sections::add_dot_assignment):
6427
        Initialize if necessary.
6428
 
6429
        * layout.cc (Layout::relaxation_loop_body): Don't crash if we see
6430
        program headers with no load segment if there is a linker script.
6431
 
6432
        * layout.cc (Layout::set_segment_offsets): Align the file offset
6433
        to the segment aligment for -N or -n with no load segment.
6434
        * output.cc (Output_segment::add_output_section): Don't crash if
6435
        the first section is a TLS section.
6436
        (Output_segment::set_section_list_addresses): Print an error
6437
        message if the address moves backward in a linker script.
6438
        * script-sections.cc
6439
        (Output_section_element_input::set_section_addresses): Don't
6440
        increase *dot_value for a SHF_TLS/SHT_NOBITS section.
6441
        (Orphan_output_section::set_section_addresses): Likewise.
6442
 
6443
2009-10-15  Doug Kwan  
6444
 
6445
        * layout.cc (Layout::finish_dynamic_section): Generate tags
6446
        DT_FINI_ARRAY, DT_FINI_ARRAYSZ, DT_INIT_ARRAY, DT_INIT_ARRAYSZ,
6447
        DT_PREINIT_ARRAY, DT_PREINIT_ARRAYSZ as needed. If -Bsymbolic is
6448
        used, add DT_SYMBOLIC and set DF_SYMBOLIC in DT_FLAGS.
6449
 
6450
2009-10-14  Ian Lance Taylor  
6451
 
6452
        * object.h (class Relocate_info): Add reloc_shdr and data_shdr
6453
        fields.
6454
        * object.cc (Sized_relobj::relocate_sections): Set reloc_shdr and
6455
        data_shdr fields of relinfo.
6456
        * i386.cc (class Target_i386::Relocate): Remove ldo_addrs_ field.
6457
        (Target_i386::Relocate::relocate_tls): Don't call fix_up_ldo.  For
6458
        R_386_TLS_LDO_32, adjust based on section flags.
6459
        (Target_i386::Relocate::fix_up_ldo): Remove.
6460
 
6461
2009-10-13  Ian Lance Taylor  
6462
 
6463
        Add support for -pie.
6464
        * options.h (class General_options): Add -pie and
6465
        --pic-executable.
6466
        (General_options::output_is_position_independent): Test -pie.
6467
        (General_options::output_is_executable): Return true if not shared
6468
        and not relocatable.
6469
        (General_options::output_is_pie): Remove.
6470
        * options.cc (General_options::finalize): Reject incompatible uses
6471
        of -pie.
6472
        * gold.cc (queue_middle_tasks): A -pie link is not static.
6473
        * symtab.h (Symbol::needs_plt_entry): Return false if -pie.
6474
        * symtab.cc (Symbol::final_value_is_known): Return false if
6475
        output_is_position_independent.
6476
        * layout.cc (Layout::set_segment_offsets): Start at address 0 if
6477
        output_is_position_independent.
6478
        * output.cc (Output_file_header::do_sized_write): Use ET_DYN if
6479
        output_is_position_independent.
6480
        * i386.cc (Output_data_plt_i386::do_write): Use the PIC PLT if
6481
        output_is_position_independent.
6482
        * testsuite/Makefile.am (check_PROGRAMS): Add basic_pie_test and
6483
        two_file_pie_test.
6484
        (basic_pie_test.o, basic_pie_test): New targets.
6485
        (two_file_test_1_pie.o, two_file_test_1b_pie.o): New targets.
6486
        (two_file_test_2_pie.o, two_file_test_main_pie.o): New targets.
6487
        (two_file_pie_test): New target.
6488
        * testsuite/Makefile.in: Rebuild.
6489
        * README: Remove note saying that -pie is not supported.
6490
 
6491
2009-10-13  Bernhard Reutner-Fischer  
6492
 
6493
        * options.h (class General_options): Add -init and -fini.
6494
        * layout.cc (Layout::finish_dynamic_section): Emit
6495
        given init and fini functions.
6496
 
6497
2009-10-13  Sriraman Tallam  
6498
 
6499
        * gc.h (gc_process_relocs): Check if icf is enabled using new
6500
        function.
6501
        * gold.cc (queue_initial_tasks): Likewise.
6502
        (queue_middle_tasks): Likewise.
6503
        * object.cc (do_layout): Likewise.
6504
        * symtab.cc (is_section_folded): Likewise.
6505
        * main.cc (main): Likewise.
6506
        * reloc.cc (Read_relocs::run): Likewise.
6507
        (Sized_relobj::do_scan_relocs): Likewise.
6508
        * icf.cc (is_function_ctor_or_dtor): New function.
6509
        (Icf::find_identical_sections): Check if function is ctor or dtor when
6510
        safe icf is chosen.
6511
        * options.h (General_options::icf): Change option to be an enum.
6512
        (Icf_status): New enum.
6513
        (icf_enabled): New method.
6514
        (icf_safe_folding): New method.
6515
        (set_icf_status): New method.
6516
        (icf_status_): New variable.
6517
        * (options.cc) (General_options::finalize): Set icf_status_.
6518
        * testsuite/Makefile.am: Add commands to build icf_safe_test. Modify
6519
        icf_test and icf_keep_unique_test to use the --icf enum flag.
6520
        * testsuite/icf_safe_test.sh: New file.
6521
        * testsuite/icf_safe_test.cc: New file.
6522
 
6523
2009-10-12  Sriraman Tallam  
6524
 
6525
        * symtab.h: Check for GOLD_SYMTAB_H before header includes. Remove
6526
        includes to gc.h and icf.h.
6527
        * arm.cc: Include gc.h.
6528
        * gold.cc: Likewise.
6529
        * i386.cc: Likewise.
6530
        * powerpc.cc: Likewise.
6531
        * sparc.cc: Likewise.
6532
        * x86_64.cc: Likewise.
6533
        * gc.h: Include icf.h.
6534
 
6535
2009-10-11  Ian Lance Taylor  
6536
 
6537
        * plugin.cc: Include "gold.h" before other header files.
6538
 
6539
2009-10-10  Chris Demetriou  
6540
 
6541
        * options.h (Input_file_argument::Input_file_type): New enum.
6542
        (Input_file_argument::is_lib_): Replace with...
6543
        (Input_file_argument::type_): New member.
6544
        (Input_file_argument::Input_file_argument): Take Input_file_type
6545
        'type' rather than boolean 'is_lib' as second argument.
6546
        (Input_file_argument::is_lib): Use type_.
6547
        (Input_file_argument::is_searched_file): New function.
6548
        (Input_file_argument::may_need_search): Handle is_searched_file.
6549
        * options.cc (General_options::parse_library): Support -l:filename.
6550
        (General_options::parse_just_symbols): Update for Input_file_argument
6551
        changes.
6552
        (Command_line::process): Likewise.
6553
        * archive.cc (Archive::get_file_and_offset): Likewise.
6554
        * plugin.cc (Plugin_manager::release_input_file): Likewise.
6555
        * script.cc (read_script_file, script_add_file): Likewise.
6556
        * fileread.cc (Input_file::Input_file): Likewise.
6557
        (Input_file::will_search_for): Handle is_searched_file.
6558
        (Input_file::open): Likewise.
6559
        * readsyms.cc (Read_symbols::get_name): Likewise.
6560
        * testsuite/Makefile.am (searched_file_test): New test.
6561
        * testsuite/Makefile.in: Regenerate.
6562
        * testsuite/searched_file_test.cc: New file.
6563
        * testsuite/searched_file_test_lib.cc: New file.
6564
 
6565
2009-10-09  Andrew Pinski  
6566
            Ian Lance Taylor  
6567
 
6568
        * descriptor.cc: Include  and "binary-io.h".
6569
        (Descriptors::open): Open the files in binary mode always.
6570
        * script.cc (Lex::get_token): Treat \r as whitespace.
6571
 
6572
2009-10-09  Ian Lance Taylor  
6573
 
6574
        * testsuite/retain_symbols_file_test.sh: Don't test for __tcf_0.
6575
 
6576
2009-10-09  Andrew Pinski  
6577
            Ian Lance Taylor  
6578
 
6579
        * configure.ac: Check for readv function also.
6580
        * fileread.cc (readv): Define if not HAVE_READV.
6581
        * fileread.h (File_read:: max_readv_entries): Set to 1 if readv
6582
        does not exist.
6583
        * config.in: Regenerate.
6584
        * configure: Regenerate.
6585
 
6586
2009-10-09  Doug Kwan  
6587
 
6588
        * layout.cc (Layout::make_output_section): Call target hook to make
6589
        ordinary output section.
6590
        (Layout::finalize): Adjust parameter list of call the
6591
        Target::may_relax().
6592
        * layout.h (class Layout::section_list): New method.
6593
        * merge.h (Output_merge_base::entsize): Change visibility to public.
6594
        (Output_merge_base::is_string, Output_merge_base::do_is_string):
6595
        New methods.
6596
        (Output_merge_string::do_is_string): New method.
6597
        * object.cc (Sized_relobj::do_setup): renamed from
6598
        Sized_relobj::set_up.
6599
        * object.h (Sized_relobj::adjust_shndx,
6600
        Sized_relobj::initializ_input_to_output_maps,
6601
        Sized_relobj::free_input_to_output_maps): Change visibilities to
6602
        protected.
6603
        (Sized_relobj::setup): Virtualize.
6604
        (Sized_relobj::do_setup): New method declaration.
6605
        (Sized_relobj::invalidate_section_offset,
6606
        Sized_relobj::do_invalidate_section_offset): New method decfinitions.
6607
        (Sized_relobj::elf_file, Sized_relobj::local_values): New methods.
6608
        * options.cc (parse_int): New function.
6609
        * options.h (parse_int): New declaration.
6610
        (DEFINE_int): New macro.
6611
        (stub_group_size): New option.
6612
        * output.cc (Output_section::Output_section): Initialize memebers
6613
        merge_section_map_, merge_section_by_properties_map_,
6614
        relaxed_input_section_map_, is_relaxed_input_section_map_valid_.
6615
        (Output_section::add_input_section): Handled deferred code-fill
6616
        generation and remove an old comment.
6617
        (Output_section::add_relaxed_input_section): New method definition.
6618
        (Output_section::add_merge_input_section): Use merge section by
6619
        properties map to speed to search.  Update merge section maps
6620
        as appropriate.
6621
        (Output_section::build_relaxation_map): New method definition.
6622
        (Output_section::convert_input_sections_in_list_to_relaxed_sections):
6623
        Same.
6624
        (Output_section::relax_input_section): Renamed to
6625
        Output_section::convert_input_sections_to_relaxed_sections and change
6626
        interface to take a vector of pointers to relaxed sections.
6627
        (Output_section::find_merge_section,
6628
        Output_section::find_relaxed_input_section): New method definitions.
6629
        (Output_section::is_input_address_mapped,
6630
        Output_section::output_offset, Output_section::output_address):
6631
        Use output section data maps to speed up searching.
6632
        (Output_section::find_starting_output_address): Add comments.
6633
        (Output_section::do_write,
6634
        Output_section::write_to_postprocessing_buffer): Do code-fill
6635
        generation as appropriate.
6636
        (Output_section::get_input_sections): Invalidate relaxed input section
6637
        map.
6638
        (Output_section::restore_states): Adjust type of checkpoint .
6639
        Invalidate relaxed input section map.
6640
        * output.h (Output_merge_base): New class declaration.
6641
        (Input_section_specifier): New class defintion.
6642
        (class Output_relaxed_input_section) Change base class to
6643
        Output_section_data_build.
6644
        (Output_relaxed_input_section::Output_relaxed_input_section): Adjust
6645
        base class initializer.
6646
        (Output_section::add_relaxed_input_section): New method declaration.
6647
        (Output_section::Input_section): Change visibility to protected.
6648
        (Output_section::Input_section::relobj,
6649
        Output_section::Input_section::shndx): Handle relaxed input sections.
6650
        Output_section::input_sections) Change visibility to protected.  Also
6651
        define overload to return a non-const pointer.
6652
        (Output_section::Merge_section_properties): New class defintion.
6653
        (Output_section::Merge_section_by_properties_map,
6654
        Output_section::Output_section_data_by_input_section_map,
6655
        Output_section::Relaxation_map): New types.
6656
        (Output_section::relax_input_section): Rename method to
6657
        Output_section::convert_input_sections_to_relaxed_sections and change
6658
        interface to take a vector of relaxed section pointers.
6659
        (Output_section::find_merge_section,
6660
        Output_section::find_relaxed_input_section,
6661
        Output_section::build_relaxation_map,
6662
        Output_section::convert_input_sections_in_list_to_relaxed_sections):
6663
        New method declarations.
6664
        (Output_section::merge_section_map_
6665
        Output_section::merge_section_by_properties_map_,
6666
        Output_section::relaxed_input_section_map_,
6667
        Output_section::is_relaxed_input_section_map_valid_,
6668
        Output_section::generate_code_fills_at_write_): New data members.
6669
        * script-sections.cc
6670
        (Output_section_element_input::set_section_addresses): Call
6671
        current_data_size and addralign methods of relaxed input sections.
6672
        (Orphan_output_section::set_section_addresses): Call current_data_size
6673
        and addralign methods of relaxed input sections.
6674
        * symtab.cc (Symbol_table::compute_final_value): Extract template
6675
        from the body of Symbol_table::sized_finalize_symbol.
6676
        (Symbol_table::sized_finalized_symbol): Call
6677
        Symbol_table::compute_final_value.
6678
        * symtab.h (Symbol_table::Compute_final_value_status): New enum type.
6679
        (Symbol_table::compute_final_value): New templated method declaration.
6680
        * target.cc (Target::do_make_output_section): New method defintion.
6681
        * target.h (Target::make_output_section): New method declaration.
6682
        (Target::relax): Add more parameters for input objects, symbol table
6683
        and layout.  Adjust call to do_relax.
6684
        (Target::do_make_output_section): New method declaration.
6685
        (Target::do_relax): Add parameters for input objects, symbol table
6686
        and layout.
6687
 
6688
2009-10-09  Andrew Pinski  
6689
 
6690
        * pread.c: Include stdio.h.
6691
 
6692
2009-10-09  Andrew Pinski  
6693
 
6694
        * plugin.cc: Don't include dlfcn.h when ENABLE_PLUGINS is not
6695
        defined.
6696
 
6697
2009-10-09  Andrew Pinski  
6698
 
6699
        * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
6700
        Change read_shndx type to unsigned int.
6701
        (Sized_dwarf_line_info::read_lines): Change shndx type to unsigned
6702
        int.
6703
        (Sized_dwarf_line_info::read_line_mappings): Likewise.
6704
        * dwarf_reader.h (Sized_dwarf_line_info::Sized_dwarf_line_info):
6705
        Change read_shndx type to unsigned int.
6706
        (Sized_dwarf_line_info::read_lines): Change shndx type to unsigned
6707
        int.
6708
        (Sized_dwarf_line_info::read_line_mappings): Likewise.
6709
        * layout.cc (Layout::create_symtab_sections): Cast the result of
6710
        local_symcount * symsize to off_t in the gold_assert.
6711
 
6712
2009-10-09  Viktor Kutuzov  
6713
 
6714
        * arm.cc (Target_arm::relocate::reloc_is_non_pic): Return true for
6715
        R_ARM_THM_ABS5, R_ARM_ABS8, R_ARM_ABS12, R_ARM_ABS16,
6716
        R_ARM_BASE_ABS.
6717
        (Arm_relocate_functions::abs8): Remove has_thumb_bit parameter.
6718
        (Arm_relocate_functions::thm_abs5): New function.
6719
        (Arm_relocate_functions::abs12): New function.
6720
        (Arm_relocate_functions::abs16): New function.
6721
        (Arm_relocate_functions::base_abs): New function.
6722
        (Scan::check_non_pic): Handle R_ARM_ABS32_NOI.
6723
        (Scan::local): Remove special handling of R_ARM_ABS8.  Handle
6724
        R_ARM_ABS32_NOI, R_ARM_THM_ABS5, R_ARM_ABS12, R_ARM_ABS16, and
6725
        R_ARM_BASE_ABS.
6726
        (Scan::global): Likewise.
6727
        (Relocate::relocate): Handle R_ARM_ABS12, R_ARM_ABS16,
6728
        R_ARM_ABS32_NOI, R_ARM_THM_ABS5, and R_ARM_BASE_ABS.
6729
        (Relocatable_size_for_reloc::get_size_for_reloc): Handle
6730
        R_ARM_ABS16, R_ARM_THM_ABS5, R_ARM_ABS32_NOI, R_ARM_ABS12, and
6731
        R_ARM_BASE_ABS.
6732
 
6733
2009-10-09  Viktor Kutuzov  
6734
 
6735
        * arm.cc (Arm_relocate_functions::movw_prel_nc): New function.
6736
        (Arm_relocate_functions::movt_prel): New function.
6737
        (Arm_relocate_functions::thm_movw_prel_nc): New function.
6738
        (Arm_relocate_functions::thm_movt_prel): New function.
6739
        (Scan::local): Handle R_ARM_MOVW_PREL_NC, R_ARM_MOVT_PREL,
6740
        R_ARM_THM_MOVW_PREL_NC, and R_ARM_THM_MOVT_PREL.
6741
        (Scan::global, Relocate::relocate): Likewise.
6742
        (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
6743
 
6744
2009-10-09  Mikolaj Zalewski  
6745
 
6746
        * gold.cc: (queue_initial_tasks): Pass incremental_inputs to
6747
        Incremental_checker.
6748
        * incremental.cc: (INCREMENTAL_LINK_VERSION): Change type to
6749
        unsigned int.
6750
        (class Incremental_inputs_header): New class.
6751
        (Incremental_inputs_header_writer): Edit comment.
6752
        (Incremental_inputs_entry): New class.
6753
        (Incremental_inputs_entry_writer): Edit comment.
6754
        (Sized_incremental_binary::do_find_incremental_inputs_section):
6755
        Add *strtab_shndx parameter, fill it.
6756
        (Sized_incremental_binary::do_check_inputs): New method.
6757
        (Incremental_checker::can_incrementally_link_output_file): Use
6758
        Sized_incremental_binary::check_inputs.
6759
        (Incremental_inputs::report_command_line): Save command line in
6760
        command_line_.
6761
        * incremental.h:
6762
        (Incremental_binary::find_incremental_inputs_section): New
6763
        method.
6764
        (Incremental_binary::do_find_incremental_inputs_section): Add
6765
        strtab_shndx parameter.
6766
        (Incremental_binary::do_check_inputs): New pure virtual method.
6767
        (Sized_incremental_binary::do_check_inputs): Declare.
6768
        (Incremental_checker::Incremental_checker): Add incremental_inputs
6769
        parameter, use it to initialize incremental_inputs_.
6770
        (Incremental_checker::incremental_inputs_): New field.
6771
        (Incremental_checker::command_line): New method.
6772
        (Incremental_checker::inputs): New method.
6773
        (Incremental_checker::command_line_): New field.
6774
 
6775
2009-10-09  Mikolaj Zalewski  
6776
 
6777
        * incremental.cc: Include  and "target-select.h".
6778
        (vexplain_no_incremental): New function.
6779
        (explain_no_incremental): New function.
6780
        (Incremental_binary::error): New method.
6781
        (Sized_incremental_binary::do_find_incremental_inputs_section): New
6782
        method.
6783
        (make_sized_incremental_binary): New function.
6784
        (open_incremental_binary): New function.
6785
        (can_incrementally_link_file): Add checks if output is ELF and has
6786
        inputs section.
6787
        * incremental.h: Include "elfcpp_file.h" and "output.h".
6788
        (Incremental_binary): New class.
6789
        (Sized_incremental_binary): New class.
6790
        (open_incremental_binary): Declare.
6791
        * object.cc (is_elf_object): Use
6792
        elfcpp::Elf_recognizer::is_elf_file.
6793
        (make_elf_object): Use elfcpp::Elf_recognizer::is_valid_header.
6794
        * output.h (Output_file::filesize): New method.
6795
 
6796
2009-10-07  Viktor Kutuzov  
6797
 
6798
        * arm.cc (Arm_relocate_functions::extract_arm_movw_movt_addend):
6799
        New function.
6800
        (Arm_relocate_functions::insert_val_arm_movw_movt): New function.
6801
        (Arm_relocate_functions::extract_thumb_movw_movt_addend): New
6802
        function.
6803
        (Arm_relocate_functions::insert_val_thumb_movw_movt): New
6804
        function.
6805
        (Arm_relocate_functions::movw_abs_nc): New function.
6806
        (Arm_relocate_functions::movt_abs): New function.
6807
        (Arm_relocate_functions::thm_movw_abs_nc): New function.
6808
        (Arm_relocate_functions::thm_movt_abs): New function.
6809
        (Scan::local): Handle R_ARM_MOVW_ABS_NC, R_ARM_MOVT_ABS,
6810
        R_ARM_THM_MOVW_ABS_NC, R_ARM_THM_MOVT_ABS.
6811
        (Scan::global): Likewise.
6812
        (Relocate::relocate): Likewise.
6813
        (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
6814
 
6815
2009-10-07  Viktor Kutuzov  
6816
 
6817
        * arm.cc (Arm_relocate_functions::got_prel) New function.
6818
        (Scan::local, Scan::global): Handle R_ARM_GOT_PREL.
6819
        (Relocate::relocate): Likewise.
6820
        (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
6821
 
6822
2009-10-06  Ian Lance Taylor  
6823
 
6824
        * options.h (class General_options): Define
6825
        split_stack_adjust_size parameter.
6826
        * object.h (class Object): Add uses_split_stack_ and
6827
        has_no_split_stack_ fields.  Add uses_split_stack and
6828
        has_no_split_stack accessor functions.  Declare
6829
        handle_split_stack_section.
6830
        (class Reloc_symbol_changes): Define.
6831
        (class Sized_relobj): Define Function_offsets.  Declare
6832
        split_stack_adjust, split_stack_adjust_reltype, and
6833
        find_functions.
6834
        * object.cc (Object::handle_split_stack_section): New function.
6835
        (Sized_relobj::do_layout): Call handle_split_stack_section.
6836
        * dynobj.cc (Sized_dynobj::do_layout): Call
6837
        handle_split_stack_section.
6838
        * reloc.cc (Sized_relobj::relocate_sections): Call
6839
        split_stack_adjust for executable sections in split_stack
6840
        objects.  Pass reloc_map to relocate_section.
6841
        (Sized_relobj::split_stack_adjust): New function.
6842
        (Sized_relobj::split_stack_adjust_reltype): New function.
6843
        (Sized_relobj::find_functions): New function.
6844
        * target-reloc.h: Include "object.h".
6845
        (relocate_section): Add reloc_symbol_changes parameter.  Change
6846
        all callers.
6847
        * target.h (class Target): Add calls_non_split method.  Declare
6848
        do_calls_non_split virtual method.  Declare match_view and
6849
        set_view_to_nop.
6850
        * target.cc: Include "elfcpp.h".
6851
        (Target::do_calls_non_split): New function.
6852
        (Target::match_view): New function.
6853
        (Target::set_view_to_nop): New function.
6854
        * gold.cc (queue_middle_tasks): Give an error if mixing
6855
        split-stack and non-split-stack objects with -r.
6856
        * i386.cc (Target_i386::relocate_section): Add
6857
        reloc_symbol_changes parameter.
6858
        (Target_i386::do_calls_non_split): New function.
6859
        * x86_64.cc (Target_x86_64::relocate_section): Add
6860
        reloc_symbol_changes parameter.
6861
        (Target_x86_64::do_calls_non_split): New function.
6862
        * arm.cc (Target_arm::relocate_section): Add reloc_symbol_changes
6863
        parameter.
6864
        * powerpc.cc (Target_powerpc::relocate_section): Add
6865
        reloc_symbol_changes parameter.
6866
        * sparc.cc (Target_sparc::relocate_section): Add
6867
        reloc_symbol_changes parameter.
6868
        * configure.ac: Call AM_CONDITIONAL for the default target.
6869
        * configure: Rebuild.
6870
        * testsuite/Makefile.am (TEST_AS): New variable.
6871
        (check_SCRIPTS): Add split_i386.sh and split_x86_64.sh.
6872
        (check_DATA): Add split_i386 and split_x86_64 files.
6873
        (SPLIT_DEFSYMS): Define.
6874
        (split_i386_[1234n].o): New targets.
6875
        (split_i386_[124]): New targets.
6876
        (split_i386_[1234r].stdout): New targets.
6877
        (split_x86_64_[1234n].o): New targets.
6878
        (split_x86_64_[124]): New targets.
6879
        (split_x86_64_[1234r].stdout): New targets.
6880
        (MOSTLYCLEANFILES): Add new executables.
6881
        * testsuite/split_i386.sh: New file.
6882
        * testsuite/split_x86_64.sh: New file.
6883
        * testsuite/split_i386_1.s: New file.
6884
        * testsuite/split_i386_2.s: New file.
6885
        * testsuite/split_i386_3.s: New file.
6886
        * testsuite/split_i386_4.s: New file.
6887
        * testsuite/split_i386_n.s: New file.
6888
        * testsuite/split_x86_64_1.s: New file.
6889
        * testsuite/split_x86_64_2.s: New file.
6890
        * testsuite/split_x86_64_3.s: New file.
6891
        * testsuite/split_x86_64_4.s: New file.
6892
        * testsuite/split_x86_64_n.s: New file.
6893
        * testsuite/testfile.cc (Target_test): Update relocation_section
6894
        function.
6895
        * testsuite/Makefile.in: Rebuild.
6896
 
6897
2009-10-06  Ian Lance Taylor  
6898
 
6899
        * i386.cc (class Target_i386::Relocate): Add ldo_addrs_ field.
6900
        (Target_i386::Relocate::relocate_tls): Call fix_up_ldo before
6901
        changing local_dynamic_type_ from LOCAL_DYNAMIC_NONE.  When
6902
        handling R_386_TLS_LDO_32, if local_dynamic_type_ is NONE, push
6903
        the address on ldo_addrs_.
6904
        (Target_i386::Relocate::fix_up_ldo): New function.
6905
 
6906
2009-10-06   Rafael Espindola  
6907
 
6908
        * plugin.cc (add_input_library): New.
6909
        (Plugin::load): Add add_input_library to tv.
6910
        (Plugin_manager::add_input_file): Add the is_lib argument.
6911
        (add_input_file): Update call to Plugin_manager::add_input_file.
6912
        (add_input_library): New.
6913
        * plugin.h (Plugin_manager::add_input_file): Add the is_lib argument.
6914
 
6915
2009-09-30  Doug Kwan  
6916
 
6917
        * arm.cc (Target_arm::may_need_copy_reloc): Check for THUMB function
6918
        symbol and call Symbol::may_need_copy_reloc to determine if
6919
        a copy reloc is needed.
6920
        * copy-relocs.cc (Copy_relocs::need_copy_reloc): Return false if -z
6921
        nocopyreloc is given in command line.
6922
        (Copy_relocs::emit_copy_reloc): Assert that -z nocopyreloc is not
6923
        given in command line.
6924
        * i386.cc (Target_i386::may_need_copy_reloc): Remove.
6925
        (Target_i386::Scan::global): Use Symbol::may_need_copy_reloc instead
6926
        of the removed Target_i386::may_need_copy_reloc.
6927
        * options.h (copyreloc): New option with default value false.
6928
        * powerpc.cc (Target_powerpc::may_need_copy_reloc): Remove.
6929
        (Target_powerpc::Scan::global): Use Symbol::may_need_copy_reloc
6930
        instead of the removed Target_powerpc::may_need_copy_reloc.
6931
        * sparc.cc (Target_powerpc::may_need_copy_reloc): Remove.
6932
        (Target_sparc::Scan::global): Use Symbol::may_need_copy_reloc
6933
        instead of the removed Target_sparc::may_need_copy_reloc.
6934
        * symtab.h (Symbol::may_need_copy_reloc): New method definition.
6935
        * x86_64.cc (Target_powerpc::may_need_copy_reloc): Remove.
6936
        (Target_x86_64::Scan::global): Use Symbol::may_need_copy_reloc
6937
        instead of the removed Target_x86_64::may_need_copy_reloc.
6938
 
6939
2009-09-30  Ian Lance Taylor  
6940
 
6941
        * object.h (class Object): Remove target_ field, and target,
6942
        sized_target, and set_target methods.
6943
        (Object::sized_target): Remove.
6944
        (class Sized_relobj): Update declarations.  Remove sized_target.
6945
        * object.cc (Sized_relobj::setup): Remove target parameter.
6946
        Change all callers.
6947
        (Input_objects::add_object): Don't do anything with the target.
6948
        (make_elf_sized_object): Add punconfigured parameter.  Change all
6949
        callers.  Set or test parameter target.
6950
        * dynobj.cc (Sized_dynobj::target): Remove target parameter.
6951
        Change all callers.
6952
        * parameters.cc (Parameters::set_target): Change parameter type to
6953
        be non-const.
6954
        (Parameters::default_target): Remove.
6955
        (set_parameters_target): Change parameter type to be non-const.
6956
        (parameters_force_valid_target): New function.
6957
        (parameters_clear_target): New function.
6958
        * parameters.h (class Parameters): Update declarations.  Remove
6959
        default_target method.  Add sized_target and clear_target
6960
        methods.  Change target_ to be non-const.
6961
        (set_parameters_target): Update declaration.
6962
        (parameters_force_valid_target): Declare.
6963
        (parameters_clear_target): Declare.
6964
        * readsyms.cc (Read_symbols::do_read_symbols): Pass punconfigured
6965
        as NULL if we aren't searching.
6966
        (Add_symbols::run): Don't check for compatible target.
6967
        * fileread.cc (Input_file::open_binary): Call
6968
        parameters_force_valid_target.
6969
        * gold.cc (queue_middle_tasks): Likewise.
6970
        * plugin.cc (make_sized_plugin_object): Likewise.  Don't call
6971
        set_target on object.
6972
        * dynobj.h (class Sized_dynobj): Update declarations.
6973
        * archive.cc (Archive::get_elf_object_for_member): Return NULL if
6974
        make_elf_object returns NULL.
6975
        (Archive::include_member): Don't check whether object target is
6976
        compatible.
6977
        * output.cc (Output_section::add_input_section): Get target from
6978
        parameters.
6979
        (Output_section::relax_input_section): Likewise.
6980
        * reloc.cc (Sized_relobj::do_gc_process_relocs): Get target from
6981
        parameters.
6982
        (Sized_relobj::do_scan_relocs): Likewise.
6983
        (Sized_relobj::relocate_sections): Likewise.
6984
        * resolve.cc (Symbol_table::resolve): Likewise.
6985
        * symtab.cc (Symbol_table::wrap_symbol): Likewise.  Remove object
6986
        parameter.  Change all callers.
6987
        (Symbol_table::add_from_object): Get target from parameters.
6988
        (Symbol_table::add_from_relobj): Don't check object target.
6989
        (Symbol_table::add_from_dynobj): Likewise.
6990
        (Symbol_table::define_special_symbol): Get target from
6991
        parameters.
6992
        * symtab.h (class Symbol_table): Update declaration.
6993
        * testsuite/binary_unittest.cc (gold_testsuite): Remove target
6994
        parameter.  Change all callers.  Clear parameter target.
6995
        (Binary_test): Test target here.
6996
        * testsuite/object_unittest.cc (gold_testsuite): Remove
6997
        target_test_pointer parameter.  Change all callers.
6998
        (Object_test): Test target here.
6999
 
7000
2009-09-26  Ian Lance Taylor  
7001
 
7002
        * testsuite/initpri1.c: Don't try to use constructor priorities if
7003
        compiling with gcc before 4.3.
7004
 
7005
2009-09-22  Mikolaj Zalewski  
7006
 
7007
        * testsuite/retain_symbols_file_test.sh (check_present): Change
7008
        output file name to retain_symbols_file_test.stdout.
7009
        (check_absent): Likewise.
7010
 
7011
2009-09-18  Craig Silverstein  
7012
 
7013
        * object.cc (Sized_relobj::do_count): Test should_retain_symbol map.
7014
        * options.cc: Include  and .
7015
        (General_options::finalize): Parse -retain-symbols-file tag.
7016
        * options.h: New flag.
7017
        (General_options): New method should_retain_symbol, new
7018
        variable symbols_to_retain.
7019
        * symtab.cc (Symbol_table::sized_finalize_symbol): Test
7020
        should_retain_symbol map.
7021
        * testsuite/Makefile.am (retain_symbols_file_test): New test.
7022
        * testsuite/Makefile.in: Regenerate.
7023
        * testsuite/retain_symbols_file_test.sh: New file.
7024
 
7025
2009-09-18  Nick Clifton  
7026
 
7027
        * po/es.po: Updated Spanish translation.
7028
 
7029
2009-09-17  Doug Kwan  
7030
 
7031
        * debug.h (DEBUG_RELAXATION): New constant.
7032
        (DEBUG_ALL): Add DEBUG_RELAXATION.
7033
        (debug_string_to_enum): Add relaxation debug option.
7034
        * layout.cc
7035
        (Layout::Relaxation_debug_check::check_output_data_for_reset_values,
7036
        Layout::Relaxation_debug_check::read_sections,
7037
        Layout::Relaxation_debug_check::read_sections): New method definitions.
7038
        (Layout::Layout): Initialize data members
7039
        record_output_section_data_from_scrips_,
7040
        script_output_section_data_list_ and relaxation_debug_check_.
7041
        (Layout::save_segments, Layout::restore_segments,
7042
        Layout::clean_up_after_relaxation, Layout::prepare_for_relaxation,
7043
        Layout::relaxation_loop_body): New method definitions.
7044
        (Layout::finalize): Support relaxation.  Move section layout code to
7045
        Layout::relaxation_loop_body.
7046
        (Layout::set_asection_address_from_script): Move code for orphan
7047
        section placement out.
7048
        (Layout::place_orphan_sections_in_script): New method definition.
7049
        * layout.h (Output_segment_headers, Output_file_header):
7050
        New forward class declarations.
7051
        (Layout::~Layout): Define.
7052
        (Layout::new_output_section_data_from_script): New method definition.
7053
        (Layout::place_orphan_sections_in_script): New method declaration.
7054
        (Layout::Segment_states): New type declaration.
7055
        (Layout::save_segments, Layout::restore_segments,
7056
        Layout::clean_up_after_relaxation, Layout::prepare_for_relaxation,
7057
        Layout::relaxation_loop_body): New method declarations.
7058
        (Layout::Output_section_data_list): New type declaration.
7059
        (Layout::Relaxation_debug_check): New class definition.
7060
        (Layout::record_output_section_data_from_script_,
7061
        Layout::script_output_section_data_list_, Layout::segment_states_,
7062
        Layout::relaxation_debug_check_): New data members.
7063
        * output.cc: (Output_section_headers::do_size): New method definition.
7064
        (Output_section_headers::Output_section_headers): Move size
7065
        computation to Output_section_headers::do_size.
7066
        (Output_segment_headers::do_size): New method definition.
7067
        (Output_file_header::Output_file_header): Move size computation to
7068
        Output_file_header::do_size and call it.
7069
        (Output_file_header::do_size): New method definition.
7070
        (Output_data_group::Output_data_group): Adjust call to
7071
        Output_section_data.
7072
        (Output_data_dynamic::set_final_data_size): Add DT_NULL tag only once.
7073
        (Output_symtab_xindex::do_write): Add array bound check.
7074
        (Output_section::Input_section::print_to_mapfile): Handle
7075
        RELAXED_INPUT_SECTION_CODE.
7076
        (Output_section::Output_section): Initialize data member checkpoint_.
7077
        (Output_section::~Output_section): Delete checkpoint object pointed
7078
        by checkpoint_.
7079
        (Output_section::add_input_section): Always add an Input_section if
7080
        relaxing.
7081
        (Output_section::add_merge_input_section): Add assert.
7082
        (Output_section::relax_input_section): New method definition.
7083
        (Output_section::set_final_data_size): Set load address to zero for
7084
        an unallocated section.
7085
        (Output_section::do_address_and_file_offset_have_reset_values):
7086
        New method definition.
7087
        (Output_section::Input_section_sort_enty::Input_section_sort_enty):
7088
        Handle relaxed input section.
7089
        (Output_section::sort_attached_input_sections): Checkpoint input
7090
        section list lazily.
7091
        (Output_section::get_input_sections): Change type of input_sections to
7092
        list of Simple_input_section pointers.  Checkpoint input section list
7093
        lazily.  Also handle relaxed input sections.
7094
        (Output_section::add_input_section_for_script): Take a reference to
7095
        a Simple_input_section object instead of Relobj pointer and section
7096
        index as parameter.  Handle relaxed input sections.
7097
        (Output_section::save_states, Output_section::restore_states): New
7098
        method definitions.
7099
        * output.h (Output_data::Output_data): Initialize is_data_size_fixed_.
7100
        (Output_data::is_data_size_fixed): New method definition.
7101
        (Output_data::reset_addresss_and_file_offset): Do not reset data size
7102
        if it is fixed.
7103
        (Output_data::address_and_file_offset_have_reset_values): New method
7104
        definition.
7105
        (Output_data::do_address_and_file_offset_have_reset_values): New method
7106
        definition.
7107
        (Output_data::set_data_size): Check that data size is not fixed.
7108
        (Output_data::fix_data_size): New method definition.
7109
        (Output_data::is_data_size_fixed_): New data member.
7110
        (Output_section_headers::set_final_data_size): New method definition.
7111
        (Output_section_headers::do_size): New method declaration.
7112
        (Output_segment_headers::set_final_data_size): New method definition.
7113
        (Output_segment_headers::do_size): New method declaration.
7114
        (Output_file_header::set_final_data_size)::New method definition.
7115
        (Output_file_header::do_size)::New method declaration.
7116
        (Output_section_data::Output_section_data): Add new parameter
7117
        is_data_size_fixed and use it to fix data size.
7118
        (Output_data_const::Output_data_const): Adjust call to base class
7119
        constructor and fix data size.
7120
        (Output_data_const_buffer::Output_data_const_buffer): Adjust call to
7121
        base class constructor and fix data size.
7122
        (Output_data_fixed_space::Output_data_fixed_space): Adjust call to
7123
        base class constructor and fix data size.
7124
        (Output_data_zero_fill::Output_data_zero_fill): Adjust call to base
7125
        class constructor and fix data size.
7126
        (Output_data_group::set_final_data_size): New method definition.
7127
        (Output_data_dynamic::Dynamic_entry::tag): New method definition.
7128
        (Output_symtab_xindex::Output_symtab_xindex): Adjust call to base
7129
        class constructor and fix data size.
7130
        (Output_relaxed_input_section): New class definition.
7131
        (Output_section::Simple_input_section): New class definition.
7132
        (Output_section::get_input_sections): Adjust parameter list.
7133
        (Output_section::add_input_section_for_script): Same.
7134
        (Output_section::save_states, Output_section::restore_states,
7135
        Output_section::do_address_and_file_offset_have_reset_values,
7136
        (Output_section::Input_section::Input_section): Handle
7137
        RELAXED_INPUT_SECTION_CODE.  Add new overload for
7138
        Output_relaxed_input_section.
7139
        (Output_section::Input_section::is_input_section,
7140
        Output_section::Input_section::set_output_section): Handle relaxed
7141
        input section.
7142
        (Output_section::Input_section::is_relaxed_input_section,
7143
        Output_section::Input_section::output_section_data,
7144
        Output_section::Input_section::relaxed_input_section): New method
7145
        definitions.
7146
        (Output_section::Input_section::RELAXED_INPUT_SECTION_CODE): New enum
7147
        value.
7148
        (Output_section::Input_section::u1_): Update comments.
7149
        (Output_section::Input_section::u2_): Add new union member poris.
7150
        (Output_section::Checkpoint_output_section): New classs definition.
7151
        (Output_section::relax_input_section): New method declaration.
7152
        (Output_section::checkpoint_): New data member.
7153
        (Output_segment): Update comments.
7154
        (Output_segment::Output_segment): Un-privatize copy constructor.
7155
        (Output_segment::operator=): Un-privatize.
7156
        * script-sections.cc (Output_section_element::Input_section_list):
7157
        Change element type to Output_section::Simple_input_section.
7158
        (Output_section_element_dot_assignment::set_section_addresses):
7159
        Register output section data for relaxation clean up.
7160
        (Output_data_exression::Output_data_expression): Adjust call to base
7161
        constructor to fix data size.
7162
        (Output_section_element_data::set_section_addresses): Register
7163
        Output_data_expression object for relaxation clean up.
7164
        (struct Input_section_info): Replace Relobj pointer and section index
7165
        pair with Output_section::Simple_input_section and Convert struct to a
7166
        class.
7167
        (Input_section_sorter::operator()): Adjust access to
7168
        Input_section_info data member to use accessors.
7169
        (Output_section_element_input::set_section_addresses): Use layout
7170
        parameter.  Adjust code to use Output_section::Simple_input_section
7171
        and Input_secction_info classes.  Register filler for relaxation
7172
        clean up.
7173
        (Orphan_output_section::set_section_addresses): Replace Relobj pointer
7174
        and section index pair with Output_section::Simple_input_section
7175
        class.  Adjust code accordingly.
7176
        (Phdrs_element::release_segment): New method definition.
7177
        (Script_sections::attach_sections_using_phdrs_clause): Do not modify
7178
        segment list.
7179
        (Script_sections::release_segments): New method definition.
7180
        * gold/script-sections.h (Script_sections::release_segments): New
7181
        method declaration.
7182
        * gold/target.h (Target::may_relax, Target::relax,
7183
        Target::do_may_relax, Target::do_relax): New method definitions.
7184
 
7185
2009-09-17  Viktor Kutuzov  
7186
 
7187
        * arm.cc (has_signed_unsigned_overflow): New function.
7188
        (Arm_relocate_functions::abs8): New function.
7189
        (Target_arm::Scan::local): Handle R_ARM_ABS8.
7190
        (Target_arm::Scan::global): Likewise.
7191
        (Target_arm::relocate::relocate): Likewise.
7192
        (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
7193
        Likewise.
7194
 
7195
2009-09-16  Cary Coutant  
7196
 
7197
        * testsuite/Makefile.am (MOSTLYCLEANFILES): Add more generated files.
7198
        * testsuite/Makefile.in: Regenerate.
7199
 
7200
2009-09-11  Nick Clifton  
7201
 
7202
        * po/gold.pot: Updated by the Translation project.
7203
 
7204
2009-09-08  Cary Coutant  
7205
 
7206
        * output.cc (Output_file::open): Add execute permission to empty file.
7207
        * testsuite/Makefile.am (permission_test): New test.
7208
        * testsuite/Makefile.in: Regenerate.
7209
 
7210
2009-09-02  Ian Lance Taylor  
7211
 
7212
        * output.cc (Output_file::resize): Call map_no_anonymous rather
7213
        than map.
7214
 
7215
2009-09-01  Mikolaj Zalewski  
7216
 
7217
        * gold.cc: Include "incremental.h".
7218
        (queue_initial_tasks): Call Incremental_checker methods.
7219
        * incremental.cc: Include "output.h".
7220
        (Incremental_checker::can_incrementally_link_output_file): New
7221
        method.
7222
        * incremental.h (Incremental_checker): New class.
7223
 
7224
        * output.cc (Output_file::open_for_modification): New method.
7225
        (Output_file::map_anonymous): Changed return type to bool.  Record
7226
        map in base_ field.
7227
        (Output_file::map_no_anonymous): New method, broken out of map.
7228
        (Output_file::map): Use map_no_anonymous and map_anonymous.
7229
        * output.h (class Output_file): Update declarations.
7230
 
7231
2009-08-24  Cary Coutant  
7232
 
7233
        * options.h (Command_line::Pre_options): New class.
7234
        (Command_line::pre_options): New member.
7235
        * options.cc (gold::options::ready_to_register): New variable.
7236
        (One_option::register_option): Do nothing if not registering options.
7237
        Assert if same short option registered twice.
7238
        (General_options::General_options): Turn off option registration when
7239
        done constructing.
7240
        (Command_line::Pre_options::Pre_options): New constructor.
7241
 
7242
2009-08-24  Cary Coutant  
7243
 
7244
        * options.h (General_options::no_keep_memory): Remove incorrect
7245
        short option.
7246
 
7247
2009-08-24  Ralf Wildenhues  
7248
 
7249
        * Makefile.am (am__skiplex, am__skipyacc): New.
7250
        * Makefile.in: Regenerate.
7251
 
7252
2009-08-22  Ralf Wildenhues  
7253
 
7254
        * Makefile.am (AM_CPPFLAGS): Renamed from ...
7255
        (INCLUDES): ... this.
7256
        * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add -Wno-portability.
7257
        (AM_CPPFLAGS): Renamed from ...
7258
        (INCLUDE): ... this.
7259
        * Makefile.in, testsuite/Makefile.in: Regenerate.
7260
 
7261
        * Makefile.in: Regenerate.
7262
        * aclocal.m4: Likewise.
7263
        * config.in: Likewise.
7264
        * configure: Likewise.
7265
        * testsuite/Makefile.in: Likewise.
7266
 
7267
        * Makefile.am (AUTOMAKE_OPTIONS): Add foreign.
7268
        * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add foreign.
7269
        * Makefile.in: Regenerate.
7270
        * testsuite/Makefile.in: Regenerate.
7271
 
7272
2009-08-19  Cary Coutant  
7273
 
7274
        * resolve.cc (Symbol_table::resolve): Don't complain about defined
7275
        symbols in shared libraries overridden by hidden or internal symbols
7276
        in the main program.
7277
 
7278
2009-08-19  Chris Demetriou  
7279
 
7280
        * testsuite/debug_msg.sh: Match .* rather than ${srcdir} when
7281
        checking source file names in error messages.
7282
 
7283
2009-08-18  Doug Kwan  
7284
 
7285
        * dynobj.cc (Sized_dynobj::setup): Take a Target object instead of
7286
        an elcpp::Ehdr as parameter.  Adjust call to set_target.
7287
        * dynobj.h (Sized_dynobj::setup): Take a Target object instead of
7288
        an elfcpp::Ehdr as parameter.
7289
        * object.cc (Object::set_target): Remove the version that looks up
7290
        a target and sets it.
7291
        (Sized_relobj::setup): Take a Target object instead of
7292
        an elfcpp::Ehdr as parameter.  Adjust call to set_target.
7293
        (make_elf_sized_object): Find target and ask target to
7294
        make an ELF object.
7295
        * object.h: (Object::set_target): Remove the version that looks up
7296
        a target and sets it.
7297
        (Sized_relobj::setup): Take a Target object instead of
7298
        an elfcpp:Ehdr as parameter.
7299
        * target.cc: Include dynobj.h.
7300
        (Target::do_make_elf_object_implementation): New.
7301
        (Target::do_make_elf_object): New.
7302
        * target.h (Target::make_elf_object): New template declaration.
7303
        (Target::do_make_elf_object): New method declarations.
7304
        (Target::do_make_elf_object_implementation): New template declaration.
7305
 
7306
2009-08-14  Ian Lance Taylor  
7307
 
7308
        * gold.h (FUNCTION_NAME): Define.
7309
        (gold_unreachable): Use FUNCTION_NAME.
7310
 
7311
2009-08-12  Sriraman Tallam  
7312
 
7313
        * icf.cc (Icf::find_identical_sections): Issue a warning when a
7314
        symbol in the --keep-unique list is not found.
7315
 
7316
2009-08-12  Sriraman Tallam  
7317
 
7318
        * icf.cc (Icf::find_identical_sections): Unfold symbols that have
7319
        been maked as --keep-unique.
7320
        (Icf::unfold_section): New function.
7321
        * icf.h (Icf::unfold_section): New function.
7322
        * options.h (General_options::keep_unique): New option.
7323
        * testsuite/Makefile.am: Add commands to build icf_keep_unique_test.
7324
        * testsuite/Makefile.in: Regenerate.
7325
        * testsuite/icf_keep_unique_test.sh: New file.
7326
        * testsuite/icf_keep_unique_test.cc: New file.
7327
 
7328
2009-08-12  Cary Coutant  
7329
 
7330
        PR 10471
7331
        * resolve.cc (Symbol_table::resolve): Check for references from
7332
        dynamic objects to hidden and internal symbols.
7333
        * testsuite/Makefile.am (hidden_test.sh): New test.
7334
        * testsuite/Makefile.in: Regenerate.
7335
        * testsuite/hidden_test.sh: New script.
7336
        * testsuite/hidden_test_1.c: New test source.
7337
        * testsuite/hidden_test_main.c: New test source.
7338
 
7339
2009-08-11  Doug Kwan  
7340
 
7341
        * arm.cc: Update comments.
7342
        (Target_arm::do_finalize_sections): Add a special PT_ARM_EXIDX
7343
        segment to locate the .ARM.exidx section if present.
7344
 
7345
2009-08-09  Doug Kwan  
7346
 
7347
        * dynobj.h (Sized_dynobj::do_section_entsize): Revert the previous
7348
        patch.
7349
 
7350
2009-08-07  Sriraman Tallam  
7351
        * dynobj.h (Sized_dynobj::do_section_entsize): Add return to avoid
7352
        compiler warnings.
7353
 
7354
2009-08-06  Sriraman Tallam  
7355
 
7356
        * x86_64.cc (Target_x86_64::Relocate::relocate_tls): Check for a
7357
        valid tls_segment only for non-debug-section relocations.
7358
        * testsuite/Makefile.am: Add gc_tls_test.
7359
        * testsuite/Makefile.in: Regenerate.
7360
        * testsuite/gc_tls_test.cc: New file.
7361
        * testsuite/gc_tls_test.sh: New file.
7362
 
7363
2009-08-05  Sriraman Tallam  
7364
 
7365
        * icf.cc: New file.
7366
        * icf.h: New file.
7367
        * Makefile.am (CCFILES): Add icf.cc.
7368
        (HFILES): Add icf.h
7369
        * Makefile.in: Regenerate.
7370
        * dynobj.h (Sized_dynobj::do_section_entsize): New function.
7371
        * gc.h (gc_process_relocs): Populate lists used by icf to contain
7372
        section, symbol and addend information for the relocs.
7373
        * gold.cc (queue_middle_tasks): Call identical code folding.
7374
        * gold.h: Add defines for multimap.
7375
        * layout.cc (Layout::create_symtab_sections): Add symtab as parameter
7376
        to the call of finalize_local_symbols.
7377
        * main.cc (main): Create object of class Icf.
7378
        * object.cc (Sized_relobj::do_layout): Allow this function to be
7379
        called twice during icf.
7380
        (Sized_relobj::do_finalize_local_symbols): Fold symbols corresponding
7381
        to sections marked as identical by icf.
7382
        (Sized_relobj::do_section_flags): Get section_flags from Symbols_data
7383
        when available.
7384
        (Sized_relobj::do_section_entsize): New function.
7385
        * object.h (Object::section_entsize): New function.
7386
        (Object::do_section_entsize): New pure virtual function.
7387
        (Relobj::finalize_local_symbols): Add new parameter.
7388
        (Relobj::do_section_entsize): New function.
7389
        * options.h (General_options::icf): New option.
7390
        (General_options::icf_iterations): New option.
7391
        (General_options::print_icf_sections): New option.
7392
        * plugin.cc (Sized_pluginobj::do_section_entsize): New function.
7393
        * plugin.h (Sized_pluginobj::do_section_entsize): New function.
7394
        * reloc.cc (Read_relocs::run): Delay scanning relocs when doing
7395
        icf.
7396
        * symtab.cc (Symbol_table::is_section_folded): New function.
7397
        (Symbol_table::sized_finalize_symbol):  Fold symbols corresponding
7398
        to sections marked as identical by icf.
7399
        * symtab.h (Symbol_table::set_icf): New function.
7400
        (Symbol_table::icf): New function.
7401
        (Symbol_table::is_section_folded): New function.
7402
        (Symbol_table::icf_): New data member.
7403
        * target-reloc.h (relocate_section): Ignore sections folded by icf.
7404
        * testsuite/Makefile.am: Add commands to build icf_test.
7405
        * testsuite/Makefile.in: Regenerate.
7406
        * testsuite/icf_test.sh: New file.
7407
        * testsuite/icf_test.cc: New file.
7408
 
7409
2009-07-24  Chris Demetriou  
7410
 
7411
        * layout.cc (is_compressible_debug_section): Fix incorrect
7412
        comment about compressed section names.
7413
 
7414
2009-07-20  Ian Lance Taylor  
7415
 
7416
        PR 10419
7417
        * x86_64.cc (Target_x86_64::do_code_fill): Correct nop sequences.
7418
 
7419
2009-07-16  Ian Lance Taylor  
7420
 
7421
        PR 10400
7422
        * layout.h: #include .
7423
        (class Kept_section): Change from struct to class.  Add accessors
7424
        and setters.  Add section size to Comdat_group mapping.  Change
7425
        Comdat_group to std::map.  Add is_comdat_ field.  Add
7426
        linkonce_size field in union.
7427
        (class Layout): Update declaration of find_or_add_kept_section.
7428
        Don't declare find_kept_object.
7429
        * layout.cc (Layout::find_or_add_kept_section): Remove candidate
7430
        parameter.  Add object, shndx, is_comdat, and is_group_name
7431
        parameters.  Change all callers.  Adjust for new Kept_section.
7432
        (Layout::find_kept_object): Remove.
7433
        * object.cc (Sized_relobj::include_section_group): Update use of
7434
        Kept_section.  Rename secnum to shndx.  Only record
7435
        Kept_comdat_section if sections are the same size.
7436
        (Sized_relobj::include_linkonce_section): Update use of
7437
        Kept_section.  Only record Kept_comdat_section if sections are the
7438
        same size.  Set size of linkonce section.
7439
        (Sized_relobj::map_to_kept_section): Update call to
7440
        get_kept_comdat_section.
7441
        * object.h (class Sized_relobj): Rename fields in
7442
        Kept_comdat_section to drop trailing underscores; change object
7443
        field to Relobj*.  Change Kept_comdat_section_table to store
7444
        struct rather than pointer.
7445
        (Sized_relobj::set_kept_comdat_section): Remove kept parameter.
7446
        Add kept_object and kept_shndx parameters.  Change all callers.
7447
        (Sized_relobj::get_kept_comdat_section): Change return type to
7448
        bool.  Add kept_object and kept_shndx parameters.  Change all
7449
        callers.
7450
        * plugin.cc (Pluginobj::include_comdat_group): Update call to
7451
        Layout::find_or_add_kept_section.
7452
 
7453
2009-07-09  Ian Lance Taylor  
7454
 
7455
        * merge.cc (Object_merge_map::initialize_input_to_output_map):
7456
        Reserve space in the hash table.
7457
 
7458
2009-07-06  Mikolaj Zalewski  
7459
 
7460
        * fileread.cc (File_read::get_mtime): New method.
7461
        * fileread.h (Timespec): New structure.
7462
        (File_read::get_mtime): New method.
7463
        * incremental.cc (Incremental_inputs_entry_data::timestamp_usec):
7464
        Renamed from timestamp_nsec.
7465
        (Incremental_inputs_entry_write::timestamp_sec): Fix argument to
7466
        Elf_Xword.
7467
        (Incremental_inputs_entry_write::timestamp_usec): Renamed from
7468
        timestamp_nsec.
7469
        (Incremental_inputs::report_archive): Save mtime; style fix.
7470
        (Incremental_inputs::report_obejct): Save mtime; style fix.
7471
        (Incremental_inputs::report_script): Save mtime; style fix.
7472
        (Incremental_inputs::finalize_inputs): Style fix.
7473
        (Incremental_inputs::finalize): Style fix.
7474
        (Incremental_inputs::create_input_section_data): Store inputs
7475
        mtime.
7476
        * incremental.h (Incremental_inputs::report_script): Add mtime
7477
        argument.
7478
        (Incremental_inputs::Input_info::Input_info): Intialize only one
7479
        union member.
7480
        (Incremental_inputs::Input_info::archive): Move to nameless
7481
        union.
7482
        (Incremental_inputs::Input_info::obejct): Move to nameless union.
7483
        (Incremental_inputs::Input_info::script): Move to nameless union.
7484
        (Incremental_inputs::mtime): New field.
7485
        * script.cc (read_input_script): Pass file mtime to
7486
        Incremental_input.
7487
        * script.h (Script_info::inputs): Style fix.
7488
 
7489
2009-07-01  Ian Lance Taylor  
7490
 
7491
        * freebsd.h (Target_freebsd::do_adjust_elf_header): Use size
7492
        instead of 32.
7493
 
7494
2009-06-24  Ian Lance Taylor  
7495
 
7496
        PR 10156
7497
        * layout.cc (Layout::choose_output_section): If we find an
7498
        existing section, update the flags.
7499
        (Layout::create_notes): New function, broken out of
7500
        Layout::finalize.
7501
        (Layout::finalize): Don't create note sections.
7502
        (Layout::create_note): Don't crash if linker script discards
7503
        section.
7504
        (Layout::create_gold_note): Likewise.
7505
        (Layout::create_build_id): Likewise.  Don't set
7506
        after_input_sections on the section.
7507
        (Layout::create_executable_stack_info): Remove target parameter.
7508
        Change caller.
7509
        * layout.h (class Layout): Declare create_notes.  Update
7510
        declaration of create_executable_stack_info.
7511
        * gold.cc (queue_middle_tasks): Call create_notes.
7512
        * output.cc (Output_section::update_flags_for_input_section): Move
7513
        here from output.h.  If SHF_ALLOC flag is newly set, mark address
7514
        invalid.
7515
        * output.h (Output_data::mark_address_invalid): New function.
7516
        (class Output_section): Only declare, not define,
7517
        update_flags_for_input_section.  Remove set_flags.
7518
 
7519
2009-06-24  Ian Lance Taylor  
7520
 
7521
        * script-sections.cc (Output_section_definition::
7522
        set_section_addresses): Rename shadowing local load_address to
7523
        laddr.
7524
 
7525
2009-06-24  Ian Lance Taylor  
7526
 
7527
        PR 10244
7528
        * reloc.cc (relocate_sections): Skip empty relocation sections.
7529
 
7530
2009-06-23  Ian Lance Taylor  
7531
 
7532
        PR 10156
7533
        * layout.cc (Layout::create_note): Use choose_output_section
7534
        rather than make_output_section.
7535
 
7536
2009-06-23  Ian Lance Taylor  
7537
 
7538
        PR 10237
7539
        * options.cc (General_options::parse_V): Set printed_version_.
7540
        (General_options::General_options): Initialize printed_version_.
7541
        * options.h (class General_options): Add printed_version_ field.
7542
        * gold.cc (queue_initial_tasks): If there are no input files,
7543
        don't give a fatal error if we printed the version information.
7544
        (queue_middle_tasks): If using -r with a shared object, give a
7545
        fatal error rather than an ordinary error.
7546
 
7547
2009-06-23  Ian Lance Taylor  
7548
 
7549
        PR 10219
7550
        * layout.cc (Layout::Layout): Initialize have_stabstr_section_.
7551
        (Layout::make_output_section): Set have_stabstr_section_ if we see
7552
        a .stab*str section.
7553
        (Layout::finalize): Call link_stabs_sections.
7554
        (Layout::link_stabs_sections): New file.
7555
        * layout.h (class Layout): Add have_stabstr_section_ field.
7556
        Declare link_stabs_sections.
7557
 
7558
2009-06-23  Doug Kwan  
7559
 
7560
        * Makefile.am (libgold_a_LIBADD): New.
7561
        (ld_new_DEPENDENCIES, ld_new_LDADD): Remove LIBOBJS
7562
        * Makefile.in: Regenerate.
7563
        * config.in (HAVE_DECL_MEMMEM, HAVE_DECL_STRNDUP): New.
7564
        * configure: Regenerate.
7565
        * configure.ac (AC_CHECK_DECLS): Add strndup and memmem.
7566
        * fileread.cc: Include sys/state.h
7567
        * gold.h: Declare memmem and strndup if found missing.
7568
        * gold_reloc.h: Include byteswap.h if HAVE_BYTESWAP_H is defined.
7569
 
7570
2009-06-23  Ian Lance Taylor  
7571
 
7572
        * configure.ac: Call AC_CHECK_DECLS using C, not C++.
7573
        * configure: Rebuild.
7574
 
7575
2009-06-23  Ian Lance Taylor  
7576
 
7577
        PR 10147
7578
        * object.cc (Object::section_contents): Don't try to get a view if
7579
        the section has length zero.
7580
        (Object::handle_gnu_warning_section): If the section is empty, use
7581
        the name of the section as the warning.
7582
 
7583
2009-06-23  Ian Lance Taylor  
7584
 
7585
        PR 10133
7586
        * stringpool.h (class Stringpool_template): Add optimize_ field.
7587
        (Stringpool_template::set_optimize): New function.
7588
        * stringpool.cc (Stringpool_template::Stringpool_template):
7589
        Initialize optimize_ field.
7590
        (Stringpool_template::set_string_offsets): Test local optimize
7591
        fild rather than parameter.
7592
        * layout.cc (Layout::Layout): Call set_optimize on the section
7593
        name stringpool.
7594
 
7595
2009-06-22  Ian Lance Taylor  
7596
 
7597
        PR 10030
7598
        * yyscript.y: Parse TARGET.
7599
        * script.cc (script_set_target): New function.
7600
        * script-c.h (script_set_target): Declare.
7601
        * options.cc (General_options::string_to_object_format): Rename
7602
        from string_to_object_format in anonymous namespace.  Change
7603
        callers.
7604
        * options.h (class General_options): Declare
7605
        string_to_object_format.
7606
 
7607
2009-06-22  Ian Lance Taylor  
7608
 
7609
        * script-sections.cc (Script_sections::create_segments): Don't put
7610
        program headers in a PT_LOAD segment if -n or -N.
7611
 
7612
2009-06-22  Ian Lance Taylor  
7613
 
7614
        PR 10141
7615
        * options.h (class General_options): Add -z lazy and -z now.  Sort
7616
        -z options into alphabetical order.
7617
        * layout.cc (Layout::finish_dynamic_section): Handle -z now.
7618
 
7619
2009-06-21  Ian Lance Taylor  
7620
 
7621
        * layout.cc (Layout::make_output_section): Call
7622
        Target::new_output_section.
7623
        (Layout::attach_allocated_section_to_segment): Put large section
7624
        sections in a separate load segment with the large segment flag
7625
        set.
7626
        (Layout::segment_precedes): Sort large data segments after other
7627
        load segments.
7628
        (align_file_offset): New static function.
7629
        (Layout::set_segment_offsets): Use align_file_offset.
7630
        * output.h (class Output_section): Add is_small_section_ and
7631
        is_large_section_ fields.
7632
        (Output_section::is_small_section): New function.
7633
        (Output_section::set_is_small_section):  New function.
7634
        (Output_section::is_large_section): New function.
7635
        (Output_section::set_is_large_section): New function.
7636
        (Output_section::is_large_data_section): New function.
7637
        (class Output_segment): Add is_large_data_segment_ field.
7638
        (Output_segment::is_large_data_segment): New function.
7639
        (Output_segment::set_is_large_data_segment): New function.
7640
        * output.cc (Output_section::Output_section): Initialize new
7641
        fields.
7642
        (Output_segment::Output_segment): Likewise.
7643
        (Output_segment::add_output_section): Add assertion that large
7644
        data sections always go in large data segments.  Force small data
7645
        sections to the end of the list of data sections.  Force small BSS
7646
        sections to the start of the list of BSS sections.  For large BSS
7647
        sections to the end of the list of BSS sections.
7648
        * symtab.h (class Symbol): Declare is_common_shndx.
7649
        (Symbol::is_defined): Check Symbol::is_common_shndx.
7650
        (Symbol::is_common): Likewise.
7651
        (class Symbol_table): Define enum Commons_section_type.  Update
7652
        declarations.  Add small_commons_ and large_commons_ fields.
7653
        * symtab.cc (Symbol::is_common_shndx): New function.
7654
        (Symbol_table::Symbol_table): Initialize new fields.
7655
        (Symbol_table::add_from_object): Put small and large common
7656
        symbols in the right list.
7657
        (Symbol_table::sized_finalized_symbol): Check
7658
        Symbol::is_common_shndx.
7659
        (Symbol_table::sized_write_globals): Likewise.
7660
        * common.cc (Symbol_table::do_allocate_commons): Allocate new
7661
        common symbol lists.  Don't call do_allocate_commons_list if the
7662
        list is empty.
7663
        (Symbol_table::do_allocate_commons_list): Remove is_tls
7664
        parameter.  Add comons_section_type parameter.  Change all
7665
        callers.  Handle small and large common symbols.
7666
        * object.cc (Sized_relobj::do_finalize_local_symbols): Check
7667
        Symbol::is_common_shndx.
7668
        * resolve.cc (symbol_to_bits): Likewise.
7669
        * target.h (Target::small_common_shndx): New function.
7670
        (Target::small_common_section_flags): New function.
7671
        (Target::large_common_shndx): New function.
7672
        (Target::large_common_section_flags): New function.
7673
        (Target::new_output_section): New function.
7674
        (Target::Target_info): Add small_common_shndx, large_common_shndx,
7675
        small_common_section_flags, and large_common_section_flags
7676
        fields.
7677
        (Target::do_new_output_section): New virtual function.
7678
        * arm.cc (Target_arm::arm_info): Initialize new fields.
7679
        * i386.cc (Target_i386::i386_info): Likewise.
7680
        * powerpc.cc (Target_powerpc::powerpc_info) [all versions]:
7681
        Likewise.
7682
        * sparc.c (Target_sparc::sparc_info) [all versions]: Likewise.
7683
        * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
7684
        (Target_x86_64::do_new_output_section): New function.
7685
        * configure.ac: Define conditional MCMODEL_MEDIUM.
7686
        * testsuite/Makefile.am (check_PROGRAMS): Add large.
7687
        (large_SOURCES, large_CFLAGS, large_DEPENDENCIES): Define.
7688
        (large_LDFLAGS): Define.
7689
        * testsuite/large.c: New file.
7690
        * testsuite/testfile.cc (Target_test::test_target_info):
7691
        Initialize new fields.
7692
        * configure, testsuite/Makefile.in: Rebuild.
7693
 
7694
2009-06-05  Doug Kwan  
7695
 
7696
        * Makefile.am (CCFILES): Add target.cc.
7697
        * Makefile.in: Regenerate.
7698
        * i386.cc (class Target_i386): Define new virtual method to
7699
        override do_is_local_label_name in parent.
7700
        * object.cc (Sized_relobj::do_count_local_symbols): Discard
7701
        local symbols if --discard-locals or -X is given.
7702
        * options.h (class General_options): Declare new options
7703
        '--discard-locals' and '-X' for discarding locals.
7704
        * target.h (class Target): Define new methods is_local_label_name.
7705
        Declare new virtual method do_is_local_label_name.
7706
        * target.cc: New file.
7707
        * testsuite/Makefile.am (check_PROGRAMS): Add discard_locals_test.
7708
        (check_SCRIPTS): Add discard_locals_test.sh.
7709
        (check_DATA): Add discard_local_tests.syms.
7710
        (discard_locals_test_SOURCES, discard_locals_test_LDFLAGS): Define.
7711
        (discard_local_tests.syms, discard_locals_test.o): New make rules.
7712
        * testsuite/Makefile.in: Regenerate.
7713
        * testsuite/discard_locals_test.c: New file.
7714
        * testsuite/discard_locals_test.sh: Same.
7715
 
7716
2009-06-05  Doug Kwan  
7717
 
7718
        * object.cc (Sized_relobj::Sized_relobj): Initialize
7719
        discarded_eh_frame_shndx_ to -1U.
7720
        (Sized_relobj::do_layout): Record index of a discard .eh_frame
7721
        section.
7722
        (Sized_relobj::do_count_local_symbols): Skip local symbols in
7723
        a discarded .eh_frame section.
7724
        (Sized_relobj::do_finalize_local_symbols): Ditto.
7725
        * object.h (class Sized_relobj): Declare new member
7726
        discarded_eh_frame_shndx_.
7727
        * testsuite/Makefile.am (check_PROGRAMS): Add local_labels_test.
7728
        (local_labels_test.o, local_labels_test): New rules.
7729
        * testsuite/Makefile.in: Regenerate.
7730
 
7731
2009-06-04  Doug Kwan  
7732
 
7733
        * layout.cc (Layout::section_name_mapping): Add mapping for
7734
        special ARM sections.
7735
 
7736
2009-06-03  Doug Kwan  
7737
 
7738
        * arm.cc (utils::sign_extend): Reverse test in gold_assert.
7739
        (utils::has_overflow): Same.
7740
 
7741
2009-06-03  Ian Lance Taylor  
7742
 
7743
        * layout.cc (Layout::section_name_mapping): New array, replacing
7744
        Layout::linkonce_mapping.
7745
        (Layout::section_name_mapping_count): New variable, replacing
7746
        Layout::linkonce_mapping_count.
7747
        (Layout::linkonce_output_name): Remove.
7748
        (Layout::output_section_name): Rewrite.
7749
        * layout.h (class Layout): Rename Linkonce_mapping to
7750
        Section_name_mapping, linkonce_mapping to section_name_mapping,
7751
        linkonce_mapping_count to section_name_mapping_count.  Don't
7752
        declare linkonce_output_name.
7753
 
7754
2009-06-03  Doug Kwan  
7755
 
7756
        * gold/arm.cc (namespace utils): New.
7757
        (Target_arm::reloc_is_non_pic): Define new method.
7758
        (class Arm_relocate_functions): New.
7759
        (Target_arm::Relocate::relocate): Handle relocation types used by
7760
        Android.
7761
 
7762
2009-06-03  Ian Lance Taylor  
7763
 
7764
        * arm.cc (Target_arm::scan::global): Use || instead of |.
7765
 
7766
2009-06-02  Doug Kwan  
7767
 
7768
        * gold/arm.cc (Target_arm::Scan::Scan):  Initialize
7769
        issued_non_pic_error_.
7770
        (class Target_arm::Scan): Declare new method check_non_pic.
7771
        Define new method symbol_needs_plt_entry.
7772
        Declare new data member issued_non_pic_error_.
7773
        (class Target_arm::Relocate): Declare new method
7774
        should_apply_static_reloc.
7775
        (Target_arm::may_need_copy_reloc): Handle STT_ARM_TFUNC.
7776
        (Target_arm::Scan::check_non_pic): Define new method.
7777
        (Target_arm::Scan::local): Handle a small subset of reloc types used
7778
        by Android.
7779
        (Target_arm::Scan::local): Same.
7780
        (Target_arm::Relocate::should_apply_statci_reloc): Define new method.
7781
 
7782
2009-05-31  Mikolaj Zalewski  
7783
 
7784
        * incremental.cc (Incremental_inputs::report_command_line): Filter
7785
        out --incremental-* options.
7786
 
7787
2009-05-29  Doug Kwan  
7788
 
7789
        * gold/arm.cc (Output_data_plt_arm): Forward declaration for new
7790
        template class.
7791
        (class Target_arm): Update comment.
7792
        (Target_arm::Target_arm): Initialize new data members GOT_,
7793
        PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_ and DYNBSS_.
7794
        Declare new methods Target_arm::got_section, Target_arm::make_plt_entry
7795
        and Target_arm::rel_dyn_section.
7796
        Declare new_enum Target_arm::Got_type.
7797
        Declare new data members GOT_, PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_
7798
        and DYNBSS_.
7799
        Update commments for member do_dynsym_value.
7800
        (Target_arm::got_size, Target_arm::plt_section,
7801
        Target_arm::may_need_copy_reloc and Target_arm::copy_reloc): Define
7802
        new methods inside class defintion.
7803
        (Target_arm::got_section): Define new method.
7804
        (Target_arm::rel_dyn_section): Same.
7805
        (Output_data_plt_arm): New template class.
7806
        (Output_data_plt_arm::Output_data_plt_arm): Define constructor.
7807
        (Output_data_plt_arm:do_adjust_output_section): Define new method.
7808
        (Output_data_plt_arm::add_entry): Same.
7809
        (Output_data_plt_arm::first_plt_entry): Define new
7810
        static data member for PLT instruction template.
7811
        (Output_data_plt_arm::plt_entry): Same.
7812
        (Output_data_plt_arm::do_write): Define new method.
7813
        (Target_arm::make_plt_entry): Same.
7814
        (Target_arm::do_finalize_sections): Same.
7815
        (Target_arm::do_dynsym_value): Same.
7816
 
7817
2009-05-28  Doug Kwan  
7818
 
7819
        * Makefile.am (TARGETSOURCES): Add arm.cc.
7820
        (ALL_TARGETOBJECTS): Add arm.$(OBJEXT)
7821
        * Makefile.in: Regenerate.
7822
        * arm.cc: New file.
7823
        * configure.tgt: Add armbe*-*-*, armeb*-*-* and arm*-*-* targets.
7824
 
7825
2009-05-26  Doug Kwan  
7826
 
7827
        * options.cc (General_options::parse_exclude_libs).  Fix a comment.
7828
        (General_options::check_excluded_libs): Strip off directories in
7829
        archive name before matching like GNU ld does.
7830
        * testsuite/Makefile.am (MOSTLYCLEANFILES,
7831
        exclude_libs_test_DEPENDENCIES): Add alt/libexclude_libs_test_3.a
7832
        (exclude_libs_test_LDFLAGS): Add linker option
7833
        -Wl,--exclude-libs,libexclude_libs_test_3
7834
        (exclude_libs_test_LADD): Add alt/libexclude_libs_test_3.a as
7835
        an explicit archive without using -l.
7836
        (alt/libexclude_libs_test_3.a): New make rule.
7837
        * testsuite/Makefile.in: Regenerate.
7838
        * testsuite/exclude_libs_test.c : Declare lib3_default().
7839
        (main): Call it.
7840
        * exclude_libs_test.sh: Add tests for alt/exclude_libs_test_3.a.
7841
        * exclude_libs_test_3.c: New file.
7842
 
7843
2009-05-26  Nick Clifton  
7844
 
7845
        * po/id.po: New Indonesian translation.
7846
        * po/gold.pot: Updated template file.
7847
 
7848
2009-05-22  Sriraman Tallam  
7849
 
7850
        * testsuite/Makefile.am: Add -ffunction-sections to compile
7851
        gc_comdat_test files.  Add -Wl,--gc-sections to build
7852
        gc_comdat_test.
7853
        * testsuite/Makefile.in: Regenerate.
7854
        * testsuite/gc_comdat_test.sh: Fix the condition around grep.
7855
 
7856
2009-05-21  Sriraman Tallam  
7857
 
7858
        * object.cc (Sized_relobj::map_to_kept_section): Return NULL if the
7859
        kept comdat section was garbage collected.
7860
        * testsuite/Makefile.am: Add test gc_comdat_test.sh.
7861
        * testsuite/Makefile.in: Regenerate.
7862
        * testsuite/gc_comdat_test.sh: New file.
7863
        * testsuite/gc_comdat_test_1.cc: New file.
7864
        * testsuite/gc_comdat_test_2.cc: New file.
7865
 
7866
2009-05-19  Doug Kwan  
7867
 
7868
        * archive.cc (Archive::Archive): Move constructor from archive.h
7869
        to here.  Initialize no_export_.
7870
        (Archive::get_elf_object_for_member): Set no_export flag of object.
7871
        * archive.h (Archive::Archive): Move constructor body to
7872
        archive.cc.
7873
        (Archive::no_export): New method.
7874
        (Archive::no_export_): New field.
7875
        * object.h (Object::Object): Initialize no_export_ to false.
7876
        (Object::no_export, Object::set_no_export): New methods.
7877
        (Object::no_export_): New field.
7878
        * options.cc (General_options::parse_exclude_libs): New method.
7879
        (General_options::check_excluded_libs) Same.
7880
        * options.h (exclude_libs): New option.
7881
        (General_options::check_excluded_libs): New method declaration.
7882
        (General_options::excluded_libs_): New field.
7883
        * symtab.cc (Symbol_table::add_from_relobj): Hide symbols with
7884
        default or protected visibility if an object has no-export flag set.
7885
        testsuite/Makefile.am (check_PROGRAMS): Add exclude_libs_test.
7886
        (check_SCRIPTS): Add exclude_libs_test.sh.
7887
        (check_DATA): Add exclude_libs_test.syms.
7888
        (MOSTLYCLEANFILES): Add exclude_libs_test.syms,
7889
        libexclude_libs_test_1.a and libexclude_libs_test_2.a.
7890
        (exclude_libs_test_SOURCES, exclude_libs_test_DEPENDENCIES,
7891
        exclude_libs_test_LDFLAGS and exclude_libs_test_LDADD): Define.
7892
        (exclude_libs_test.syms, libexclude_libs_test_1.a,
7893
        libexclude_libs_test_2.a): New rules.
7894
        * testsuite/Makefile.in: Regenerate.
7895
        * testsuite/exclude_libs_test.c: New file.
7896
        * testsuite/exclude_libs_test.sh: Ditto.
7897
        * testsuite/exclude_libs_test_1.c: Ditto.
7898
        * testsuite/exclude_libs_test_2.c: Ditto.
7899
 
7900
2009-05-15  Ian Lance Taylor  
7901
 
7902
        * configure.ac: Check for declarations for cases where libiberty.h
7903
        checks HAVE_DECL_xxx.
7904
        * configure, config.in: Rebuild.
7905
 
7906
2009-05-15  Mikolaj Zalewski  
7907
 
7908
        * gold.h (Incremental_argument_list): Remove (invalid) forward
7909
        declaration.
7910
        * incremental.cc (Incremental_inputs::report_achive): New method.
7911
        (Incremental_inputs::report_object): New method.
7912
        (Incremental_inputs::report_script): New method.
7913
        (Incremental_inputs::finalize_inputs): New method.
7914
        (Incremental_inputs::finalize): Call finalize_inputs().
7915
        (Incremental_inputs::sized_create_incremental_inputs_section_data):
7916
        Create inputs entries.
7917
        * incremental.h (Incremental_input_type): New enum.
7918
        (Incremental_inputs::Incremental_input): Initialize new fields.
7919
        (Incremental_inputs::report_inputs): New method.
7920
        (Incremental_inputs::report_achive): New method.
7921
        (Incremental_inputs::report_object): New method.
7922
        (Incremental_inputs::report_script): New method.
7923
        (Incremental_inputs::finalize_inputs): New method.
7924
        (Incremental_inputs::Input_info): New struct.
7925
        (Incremental_inputs::Input_info_map): New typedef.
7926
        (Incremental_inputs::lock_): New field.
7927
        (Incremental_inputs::Inputs_): New field.
7928
        (Incremental_inputs::Inputs_map): New field.
7929
        * main.cc (main): Call Incremental_input::report_inputs.
7930
        * options.h (Input_argument_list): Typedef moved from
7931
        Input_arguments.
7932
        (Input_file_group::Files): Remove, use ::Input_argument_list.
7933
        (Input_file_group::Input_argument_list): Remove, use
7934
        ::Input_argument_list.
7935
        * plugin.cc (Plugin_manager::add_input_file): Add error in
7936
        incremental build.
7937
        * read_syms.cc (do_read_syms): Call Incremental_input::report_*
7938
        functions.
7939
        * script.cc (read_input_script): Call
7940
        Incremental_input::report_script.
7941
        * script.h (Script_info): New class.
7942
 
7943
2009-04-27  Ian Lance Taylor  
7944
 
7945
        * x86_64.cc (do_adjust_output_section): Set entsize to
7946
        plt_entry_size.
7947
 
7948
2009-04-23  Elliott Hughes  
7949
 
7950
        * output.cc (Output_file::close): After short writes, continue
7951
        writing from the correct offset in the buffer being written.
7952
 
7953
2009-04-23  Chris Demetriou  
7954
 
7955
        * configure.ac (HAVE_TR1_UNORDERED_MAP_REHASH): New define.
7956
        * configure: Regenerate.
7957
        * config.in: Regenerate.
7958
        * gold.h: Avoid std::tr1::unordered_map and std::tr1::unordered_set
7959
        if HAVE_TR1_UNORDERED_MAP_REHASH is not defined.
7960
 
7961
2009-04-21  Mikolaj Zalewski  
7962
 
7963
        * incremental.cc (Incremental_inputs_header_data): Renamed from
7964
        Incremental_input_header_data.
7965
        (Incremental_inputs_header_data::data_size): New field.
7966
        (Incremental_inputs_header_data::put_input_file_count): Renamed
7967
        from input_file_count.
7968
        (Incremental_inputs_header_data::put_command_line_offset): Renamed
7969
        from command_line_offset.
7970
        (Incremental_inputs_header_data::put_reserved): Renamed from
7971
        put_reserved.
7972
        (Incremental_inputs_entry_data): Renamed from
7973
        Incremental_input_entry_data.
7974
        (Incremental_inputs_entry_data::data_size): New field.
7975
        (Incremental_inputs::report_command_line): New method.
7976
        (Incremental_inputs::finalize): New method.
7977
        (Incremental_inputs::create_incremental_inputs_data): New method.
7978
        (Incremental_inputs::sized_create_incremental_inputs_data): New method.
7979
        * incremental.h: New file.
7980
        * layout.cc (Layout::Layout): Handle new incremental_inputs_.
7981
       (Layout::finalize): Create incremental inputs section in
7982
        incremental builds.
7983
       (Layout::create_incremental_info_sections): New method.
7984
        * layout.h (Layout::incremental_inputs): New method.
7985
       (Layout::create_incremental_info_sections): New method.
7986
       (Layout::incremental_inputs_): New field.
7987
        * main.cc (main): Notify Incremental_input of the command line.
7988
 
7989
2009-04-01  Ian Lance Taylor  
7990
            Mikolaj Zalewski  
7991
 
7992
        * gold.h (reserve_unordered_map): Define, three versions, one for
7993
        each version of Unordered_map.
7994
        * layout.cc (Layout::Layout): Remove options parameter.  Add
7995
        number_of_input_files parameter.  Don't initialize options_.
7996
        Initialize number_of_input_files_ and resized_signatures_.  Move
7997
        sections_are_attached_.
7998
        (Layout::layout_group): Reserve space for group_signatures_.
7999
        (Layout::find_or_add_kept_section): Change name parameter to be a
8000
        reference.  Resize signatures_ map when it gets large enough.
8001
        (Layout::layout_eh_frame): Use parameters->options() instead of
8002
        this->options_.
8003
        (Layout::make_output_section): Likewise.
8004
        (Layout::attach_allocated_section_to_segment): Likewise.
8005
        (Layout::finalize, Layout::create_executable_stack): Likewise.
8006
        (Layout::set_segment_offsets, Layout::create_interp): Likewise.
8007
        (Layout::finish_dynamic_section, Layout::write_binary): Likewise.
8008
        * layout.h (class Layout): Update declarations.  Remove options_
8009
        field.  Add number_of_input_files_ and resized_signatures_
8010
        fields.  Move sections_are_attached_ field.
8011
        * main.cc (main): Pass number of input files to Layout
8012
        constructor.  Don't pass options.
8013
 
8014
2009-03-30  Ian Lance Taylor  
8015
 
8016
        * ffsll.c (ffsll): Correct implementation.
8017
 
8018
2009-03-27  Ian Lance Taylor  
8019
 
8020
        * ffsll.c: New file.
8021
        * configure.ac: Call AC_REPLACE_FUNCS on ffsll.
8022
        * gold.h (ffsll): Declare if HAVE_FFSLL is not defined.
8023
        * ftruncate.c (ftruncate): Declare before definition.
8024
        * mremap.c (mremap): Likewise.
8025
        * pread.c (pread): Likewise.
8026
        * configure, Makefile.in, config.in: Rebuild.
8027
 
8028
        * mremap.c: New file.
8029
        * configure.ac: Call AC_REPLACE_FUNCS on mremap.
8030
        * gold.h (MREMAP_MAYMOVE): Define if HAVE_MREMAP is not defined.
8031
        (mremap): Declare if HAVE_MREMAP is not defined.
8032
        * configure, Makefile.in, config.in: Rebuild.
8033
 
8034
2009-03-27  Cary Coutant  
8035
 
8036
        * powerpc.cc (Target_powerpc::check_non_pic): Assert that output is
8037
        position independent.
8038
        * sparc.cc (Target_sparc::check_non_pic): Likewise.
8039
        * x86_64.cc (Target_x86_64::check_non_pic): Likewise.
8040
 
8041
2009-03-24  Cary Coutant  
8042
 
8043
        * symtab.h (needs_plt_entry): Check for unsatisfied reference from
8044
        an executable.
8045
        (needs_dynamic_reloc): Likewise.
8046
 
8047
2009-03-24  Ian Lance Taylor  
8048
 
8049
        * yyscript.y (file_cmd): Recognize EXTERN.
8050
        (extern_name_list, extern_name_list_body): New nonterminals.
8051
        * script.cc (script_add_extern): Define.
8052
        * script-c.h (script_add_extern): Declare.
8053
 
8054
2009-03-24  Rafael Avila de Espindola  
8055
 
8056
        * object.cc (is_elf_object): Define.
8057
        * object.h (is_elf_object): Declare.
8058
        * archive.cc (Archive::get_elf_object_for_member): Call
8059
        is_elf_object.
8060
        * readsyms.cc (Read_symbols::do_read_symbols): Likewise.
8061
 
8062
2009-03-24  Elliott Hughes  
8063
 
8064
        * output.cc (Output_file::map_anonymous): Define.
8065
        (Output_file::map): Use map_anonymous.  If the regular mmap fails,
8066
        try an anonymous one.  Report the size if the mmap fails.
8067
        * output.h (class Output_file): Declare map_anonymous.
8068
 
8069
2009-03-24  Ian Lance Taylor  
8070
 
8071
        * target-select.cc (instantiate_target): Don't acquire the lock if
8072
        the instantiated_target_ field has already been set.
8073
 
8074
2009-03-23  Ian Lance Taylor  
8075
 
8076
        * gold-threads.h (class Initialize_lock): Define.
8077
        * gold-threads.cc (class Initialize_lock_once): Define.
8078
        (initialize_lock_control): New static variable.
8079
        (initialize_lock_pointer): New static variable.
8080
        (initialize_lock_once): New static function.
8081
        (Initialize_lock::Initialize_lock): Define.
8082
        (Initialize_lock::initialize): Define.
8083
        * target-select.h: Include "gold-threads.h".
8084
        (class Target_selector): Add lock_ and initialize_lock_ fields.
8085
        Don't define instantiate_target, just declare it.
8086
        * target-select.cc (Target_selector::Target_selector): Initialize
8087
        new fields.
8088
        (Target_selector::instantiate_target): Define.
8089
        * descriptors.h: Include "gold-threads.h".
8090
        (class Descriptors): Add initialize_lock_ field.
8091
        * descriptors.cc (Descriptors::Descriptors): Initialize new
8092
        field.
8093
        (Descriptors::open): Use initialize_lock_ field
8094
        * errors.h (class Errors): Add initialize_lock_ field.
8095
        * errors.cc (Errors::Errors): Initialize new field.
8096
        (Errors::initialize_lock): Use initialize_lock_ field.
8097
        * powerpc.cc (class Target_selector_powerpc): Remove
8098
        instantiated_target_ field.  In do_recognize call
8099
        instantiate_target rather than do_instantiate_target.  In
8100
        do_instantiate_target just allocate a new target.
8101
        * sparc.cc (class Target_selector_sparc): Likewise.
8102
 
8103
        * freebsd.h: New file.
8104
        * i386.cc: Include "freebsd.h".
8105
        (Target_i386): Derive from Target_freebsd rather than
8106
        Sized_target.
8107
        (Target_selector_i386): Derive from Target_selector_freebsd rather
8108
        than Target_selector.
8109
        * x86_64.cc: Include "freebsd.h".
8110
        (Target_x86_64): Derive from Target_freebsd rather than
8111
        Sized_target.
8112
        (Target_selector_x86_64): Derive from Target_selector_freebsd
8113
        rather than Target_selector.
8114
        * target.h (class Target): Add adjust_elf_header and
8115
        do_adjust_elf_header.
8116
        * output.cc (Output_file_header:: do_sized_write): Call target
8117
        adjust_elf_header routine.
8118
        * configure.tgt: Set targ_osabi.
8119
        * configure.ac: Define GOLD_DEFAULT_OSABI.
8120
        * parameters.cc (Parameters::default_target): Pass
8121
        GOLD_DEFAULT_OSABI to select_target.
8122
        * target-select.h (class Target_selector): Make instantiate_target
8123
        protected rather than private.
8124
        * Makefile.am (HFILES): Add freebsd.h.
8125
        * configure, Makefile.in, config.in: Rebuild.
8126
 
8127
        * merge.cc (do_add_input_section): Correct pend value.  Change
8128
        message about last entry not being null terminated from error to
8129
        warning.
8130
 
8131
2009-03-20  Mikolaj Zalewski  
8132
 
8133
        * incremental.cc: New file.
8134
        * Makefile.am (CCFILES): Add incremental.cc.
8135
        * Makefile.in: Rebuild.
8136
 
8137
2009-03-19  Paul Pluzhnikov  
8138
 
8139
        * layout.cc (Layout::output_section_name): Preserve names
8140
        of '.note.' sections.
8141
 
8142
2009-03-19  Ian Lance Taylor  
8143
 
8144
        * descriptors.cc (Descriptors::open): Check that the options are
8145
        valid before using them.
8146
 
8147
2009-03-18  Ian Lance Taylor  
8148
 
8149
        * script-sections.h: Include .
8150
        (class Script_sections): Change Sections_elements from std::vector
8151
        to std::list.  Typedef public Elements_iterator.  Add
8152
        orphan_section_placement_, data_segment_align_start_, and
8153
        saw_data_segment_align_ fields.  Remove data_segment_align_index_
8154
        field.
8155
        * script-sections.cc (class Orphan_section_placement): New class.
8156
        (class Sections_element): Add virtual functions is_relro and
8157
        orphan_section_init.  Remove virtual function place_orphan_here.
8158
        (class Output_section_definition): Add is_relro and
8159
        orphan_section_init.  Remove place_orphan_here.
8160
        (class Orphan_output_section): Likewise.
8161
        (Script_sections::Script_sections): Update for field changes.
8162
        (Script_sections::data_segment_align): Set saw_data_segment_align_
8163
        and data_segment_align_start_, not data_segment_align_index.
8164
        (Script_sections::data_segment_relro_end): Check
8165
        saw_data_segment_align_.  Use data_segment_align_start_ rather
8166
        than data_segment_align_index_.
8167
        (Script_sections::place_orphan): Rewrite to use
8168
        Orphan_section_placement.
8169
 
8170
2009-03-17  Ian Lance Taylor  
8171
 
8172
        * archive.cc (Archive::add_symbols): Check for a version attached
8173
        to the symbol name in the archive map.
8174
        * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_11.
8175
        (ver_test_11_SOURCES, ver_test_11_DEPENDENCIES): Define.
8176
        (ver_test_11_LDFLAGS, ver_test_11_LDADD): Define.
8177
        (ver_test_11.a): New target.
8178
        * testsuite/Makefile.in: Rebuild.
8179
 
8180
        * configure.ac: Check for chsize and posix_fallocate.  Replace
8181
        ftruncate.
8182
        * ftruncate.c: New file, from gnulib.
8183
        * output.cc (posix_fallocate): Define dummy version if not
8184
        HAVE_POSIX_FALLOCATE.
8185
        (Output_file::map): Call posix_fallocate rather than lseek and
8186
        write.
8187
        * gold.h (ftruncate): Declare if not HAVE_FTRUNCATE.
8188
        * configure, Makefile.in, config.in: Rebuild.
8189
 
8190
2009-03-17  Paul Pluzhnikov  
8191
 
8192
        * layout.h (Layout::create_note): Add section_name parameter.
8193
        * layout.cc (Layout::create_note): Likewise.
8194
        (Layout::create_build_id, Layout::create_gold_note): Fix callers.
8195
 
8196
2009-03-17  Ian Lance Taylor  
8197
 
8198
        * descriptors.cc: Include "options.h".
8199
        (FD_CLOEXEC, O_CLOEXEC): Define if not defined.
8200
        (Descriptors::open): Always use O_CLOEXEC when opening a new
8201
        descriptor.  If we have a plugin, and O_CLOEXEC was not defined,
8202
        then set FD_CLOEXEC.
8203
 
8204
        * sparc.cc (class Target_sparc): Add has_got_section.
8205
        (Target_sparc::Scan::global): If we see _GLOBAL_OFFSET_TABLE_,
8206
        make sure we have a GOT section.
8207
 
8208
        * sparc.cc (optimize_tls_reloc): Recognize R_SPARC_TLS_IE_ADD.
8209
        (Target_sparc::Scan::local): Likewise.
8210
        (Target_sparc::Scan::global): Likewise.
8211
        (Target_sparc::Relocate::relocate): Likewise.
8212
        (Target_sparc::Relocate::relocate_tls): Likewise.
8213
 
8214
        * symtab.cc (Symbol_table::define_default_version): New function,
8215
        broken out of add_from_object.
8216
        (Symbol_table::add_from_object): Call define_default_version.
8217
        (Symbol_table::define_special_symbol): Add resolve_oldsym
8218
        parameter.  Change all callers.  If the version for a symbol comes
8219
        from a version script, resolve it with the symbol with the same
8220
        name with no version.  Also add the symbol without a version if
8221
        appropriate.
8222
        (do_define_in_output_data): If resolving with oldsym, don't delete
8223
        sym.
8224
        (do_define_in_output_segment): Likewise.
8225
        (do_define_as_constant): Likewise.
8226
        * symtab.h (class Symbol_table): Update declarations.
8227
 
8228
2009-03-13  Ian Lance Taylor  
8229
 
8230
        * readsyms.cc (Read_symbols::incompatible_warning): New function.
8231
        (Read_symbols::requeue): New function.
8232
        (Read_symbols::do_read_symbols): If make_elf_object fails because
8233
        the target type is not configured, and the file was searched for,
8234
        issue a warning and retry with the next directory.
8235
        (Add_symbols::run): If the file has an incompatible format, and
8236
        it was searched for, requeue the Read_symbols task.  On error,
8237
        release the object.
8238
        * readsyms.h (class Read_symbols): Add dirindex_ field.  Add
8239
        dirindex parameter to constructor.  Change all callers.  Declare
8240
        incompatible_warning and requeue.
8241
        (class Add_symbols): Add dirpath_, dirindex_, mapfile_,
8242
        input_argument_ and input_group_ fields.  Add them to
8243
        constructor.  Change all callers.
8244
        (class Read_script): Add dirindex_ field.  Add it to constructor.
8245
        Change all callers.
8246
        * archive.cc (Archive::setup): Remove input_objects parameter.
8247
        Change all callers.
8248
        (Archive::get_file_and_offset): Likewise.
8249
        (Archive::read_all_symbols): Likewise.
8250
        (Archive::read_symbols): Likewise.
8251
        (Archive::get_elf_object_for_member): Remove input_objects
8252
        parameter.  Add punconfigured parameter.  Change all callers.
8253
        (Archive::add_symbols): Change return type to bool.  Check return
8254
        value of include_member.
8255
        (Archive::include_all_members): Likewise.
8256
        (Archive::include_member): Change return type to bool.  Return
8257
        false if first included object has incompatible target.  Set
8258
        included_member_ field.
8259
        (Add_archive_symbols::run): If add_symbols returns false, requeue
8260
        Read_symbols task.
8261
        * archive.h (class Archive): Add included_member_ field.
8262
        Initialize it in constructor.  Add input_file and searched_for
8263
        methods.  Update declarations.
8264
        (class Add_archive_symbols): Add dirpath_, dirindex_, and
8265
        input_argument_ fields.  Add them to constructor.  Change all
8266
        callers.
8267
        * script.cc: Include "target-select.h".
8268
        (class Parser_closure): Add skip_on_incompatible_target_ and
8269
        found_incompatible_target_ fields.  Add
8270
        skip_on_incompatible_target parameter to constructor.  Change all
8271
        callers.  Add methods skip_on_incompatible_target,
8272
        clear_skip_on_incompatible_target, found_incompatible_target, and
8273
        set_found_incompatible_target.
8274
        (read_input_script): Add dirindex parameter.  Change all callers.
8275
        If parser finds an incompatible target, requeue Read_symbols
8276
        task.
8277
        (script_set_symbol): Clear skip_on_incompatible_target in
8278
        closure.
8279
        (script_add_assertion, script_parse_option): Likewise.
8280
        (script_start_sections, script_add_phdr): Likewise.
8281
        (script_check_output_format): New function.
8282
        * script.h (read_input_script): Update declaration.
8283
        * script-c.h (script_check_output_format): Declare.
8284
        * yyscript.y (file_cmd): Handle OUTPUT_FORMAT.
8285
        (ignore_cmd): Remove OUTPUT_FORMAT.
8286
        * fileread.cc (Input_file::Input_file): Add explicit this.
8287
        (Input_file::will_search_for): New function.
8288
        (Input_file::open): Add pindex parameter.  Change all callers.
8289
        * fileread.h (class Input_file): Add input_file_argument method.
8290
        Declare will_search_for.  Update declarations.
8291
        * object.cc (make_elf_object): Add punconfigured parameter.
8292
        Change all callers.
8293
        * object.h (class Object): Make input_file public.  Add
8294
        searched_for method.
8295
        (make_elf_object): Update declaration.
8296
        * dirsearch.cc (Dirsearch::find): Add pindex parameter.  Use it to
8297
        restart search.
8298
        * dirsearch.h (class Dirsearch): Update declaration.
8299
        * options.h (class General_options): Add --warn-search-mismatch.
8300
        * parameters.cc (Parameters::is_compatible_target): New function.
8301
        * parameters.h (class Parameters): Declare is_compatible_target.
8302
        * workqueue.cc (Workqueue::add_blocker): New function.
8303
        * workqueue.h (class Workqueue): Declare add_blocker.
8304
 
8305
        * fileread.cc (Input_file::open): Remove options parameter.
8306
        Change all callers.
8307
        (Input_file::open_binary): Likewise.
8308
        * script.cc (read_input_script): Likewise.
8309
        * readsyms.h (class Read_symbols): Remove options_ field.  Remove
8310
        options parameter from constructor.  Change all callers.
8311
        (class Read_script): Likewise.
8312
        * fileread.h (class Input_file): Update declarations.
8313
        * script.h (read_input_script): Update declaration.
8314
 
8315
2009-03-10  Nick Clifton  
8316
 
8317
        * po/es.po: New Spanish translation.
8318
 
8319
2009-03-06  Cary Coutant  
8320
 
8321
        * options.cc (parse_short_option): Keep dash_z from registering itself.
8322
 
8323
2009-03-03  Ian Lance Taylor  
8324
 
8325
        PR 9918
8326
        * target-reloc.h (relocate_section): Pass output_section to
8327
        relocate.
8328
        * i386.cc (Target_i386::should_apply_static_reloc): Add
8329
        output_section parameter.  Change all callers.
8330
        (Target_i386::Relocate::relocate): Add output_section parameter.
8331
        * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
8332
        * sparc.cc (Target_sparc::Relocate::relocate): Likewise.
8333
        * powerpc.cc (Target_powerpc::Relocate::relocate): Likewise.
8334
        * testsuite/two_file_shared.sh: New script.
8335
        * testsuite/Makefile.am (check_SCRIPTS): Add two_file_shared.sh.
8336
        (check_DATA): Add two_file_shared.dbg.
8337
        (two_file_shared.dbg): New target.
8338
        * testsuite/Makefile.in: Rebuild.
8339
 
8340
2009-03-01  Ian Lance Taylor  
8341
 
8342
        * configure.ac: Check for byteswap.h.
8343
        * configure: Rebuild.
8344
        * config.in: Rebuild.
8345
 
8346
2009-03-01  Mikolaj Zalewski  
8347
 
8348
        * layout.cc (Layout::find_or_add_kept_section): New function.
8349
        (Layout::add_comdat): Removed.
8350
        * layout.h (struct Kept_section): Move out of class Layout.
8351
        Remove trailing underscores from field names.  Add group_sections
8352
        field.  Rename group_ field to is_group.  Change all uses.
8353
        (class Layout): Declare find_or_add_kept_section, not add_comdat.
8354
        * object.cc (Sized_relobj::Sized_relobj): Don't initialize
8355
        comdat_groups_ field.
8356
        (Sized_relobj::include_section_group): Use
8357
        find_or_add_kept_section and Kept_section::group_sections.
8358
        (Sized_relobj::include_linkonce_section): Likewise.
8359
        * object.cc (class Sized_relobj): Don't define Comdat_group or
8360
        Comdat_group_table.  Remove find_comdat_group and
8361
        add_comdat_group.  Remove comdat_groups_ field.
8362
        * plugin.cc (include_comdat_group): Use
8363
        Layout::find_or_add_kept_section.
8364
 
8365
2009-02-28  Ian Lance Taylor  
8366
 
8367
        * README: --gc-sections and map files are now supported.  Document
8368
        some build requirements.
8369
 
8370
        PR 6992
8371
        * symtab.cc (Symbol_table::sized_write_section_symbol): In a
8372
        relocatable link set the value of the section symbol to zero.
8373
        * object.cc (Sized_relobj::do_finalize_local_symbols): In a
8374
        relocatable link don't include the section address in the local
8375
        symbol value.
8376
 
8377
2009-02-27  Ian Lance Taylor  
8378
 
8379
        PR 6811
8380
        * options.h (class Search_directory): Add is_system_directory.
8381
        (class General_options): Declare is_in_system_directory.
8382
        * options.cc (get_relative_sysroot): Make static.
8383
        (get_default_sysroot): Make static.
8384
        (General_optoins::is_in_system_directory): New function.
8385
        * fileread.cc (Input_file::is_in_system_directory): New function.
8386
        * fileread.h (class Input_file): Declare is_in_system_directory.
8387
        * object.h (class Object): Add is_in_system_directory.
8388
        (class Input_objects): Remove system_library_directory_ field.
8389
        * object.cc (Input_objects::add_object): Don't set
8390
        system_library_directory_.
8391
        (input_objects::found_in_system_library_directory): Remove.
8392
        * symtab.cc (Symbol_table::write_globals): Remove input_objects
8393
        parameter.  Change all callers.
8394
        (Symbol_table::sized_write_globals): Likewise.
8395
        (Symbol_table::warn_about_undefined_dynobj_symbol): Likewise.
8396
        Call Object::is_in_system_directory.
8397
        * symtab.h (class Symbol_table): Update declarations.
8398
 
8399
        PR 5990
8400
        * descriptors.h (Open_descriptor): Add is_on_stack field.
8401
        * descriptors.cc (Descriptors::open): If the descriptor is on the
8402
        top of the stack, remove it.  Initialize is_on_stack field.
8403
        (Descriptors::release): Only add pod to stack if it is not on the
8404
        stack already.
8405
        (Descriptors::close_some_descriptor): Clear stack_next and
8406
        is_on_stack fields.
8407
 
8408
        PR 7091
8409
        * output.cc (Output_section::find_starting_output_address): Rename
8410
        from starting_output_address; add PADDR parameter; change return
8411
        type.
8412
        * output.h (class Output_section): Declare
8413
        find_starting_output_address instead of starting_output_address.
8414
        * object.cc (Sized_relobj::do_finalize_local_symbols): Handle a
8415
        section symbol for which we can't find a merge section.
8416
 
8417
        PR 9836
8418
        * symtab.cc (Symbol_table::add_from_object): If the visibility is
8419
        hidden or internal, force the symbol to be local.
8420
        * resolve.cc (Symbol::override_visibility): Define.
8421
        (Symbol::override_base): Use override_visibility.
8422
        (Symbol_table::resolve): Likewise.
8423
        (Symbol::override_base_with_special): Likewise.
8424
        (Symbol_table::override_with_special): If the visibility is hidden
8425
        or internal, force the symbol to be local.
8426
        * symtab.h (class Symbol): Add set_visibility and
8427
        override_visibility.
8428
        * testsuite/ver_test_1.sh: New file.
8429
        * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_1.sh.
8430
        (check_DATA): Add ver_test_1.syms.
8431
        (ver_test_1.syms): New target.
8432
        * testsuite/Makefile.in: Rebuild.
8433
 
8434
2009-02-25  Cary Coutant  
8435
 
8436
        * layout.cc (Layout::choose_output_section): Don't rename sections
8437
        when using a linker script that has a SECTIONS clause.
8438
        * Makefile.in: Regenerate.
8439
 
8440
        * testsuite/Makefile.am (script_test_5.sh): New test case.
8441
        * testsuite/Makefile.in: Regenerate.
8442
        * testsuite/script_test_5.cc: New file.
8443
        * testsuite/script_test_5.sh: New file.
8444
        * testsuite/script_test_5.t: New file.
8445
 
8446
2009-02-13  Rafael Avila de Espindola  
8447
 
8448
        * archive.cc (Archive::include_member): Update calls to add_symbols.
8449
        * dynobj.cc (Sized_dynobj::make_version_map): Add
8450
        the Layout argument.
8451
        * dynobj.h (do_add_symbols): Add the Layout argument.
8452
        * object.cc (Sized_relobj::do_add_symbols): Add the
8453
        Layout argument.
8454
        * object.h (Object::add_symbols): Add the Layout argument.
8455
        (Object::do_add_symbols): Add the Layout argument.
8456
        (Sized_relobj::do_add_symbols): Add the Layout argument.
8457
        * plugin.cc (Sized_pluginobj::do_add_symbols):
8458
        Unify the two versions.
8459
        (Add_plugin_symbols): Remove.
8460
        * plugin.h (Pluginobj::add_symbols, Pluginobj::do_add_symbols): Remove.
8461
        (Sized_pluginobj::do_add_symbols): Unify the two versions.
8462
        (Add_plugin_symbols): Remove.
8463
        * readsyms.cc (Read_symbols::do_read_symbols): Update call to
8464
        Add_symbols. Use Add_symbols instead of Add_plugin_symbols.
8465
        (Add_symbols::run): Make it work with Pulginobj.
8466
 
8467
2009-02-06  Ian Lance Taylor  
8468
 
8469
        * object.cc (Sized_relobj::do_layout): Make info message start
8470
        with lower case letter.
8471
 
8472
2009-02-06  Mikolaj Zalewski  
8473
 
8474
        * binary.cc: Fix file comment.
8475
 
8476
        * options.h (enum Incremental_disposition): Define.
8477
        (class General_options): Add new options: --incremental,
8478
        --incremental_changed, --incremental_unchanged,
8479
        --incremental_unknown.  Add incremental_disposition_ and
8480
        implicit_incremental_ fields.
8481
        (General_options::incremental_disposition): New function.
8482
        (class Position_dependent_options): Add incremental_disposition
8483
        option.
8484
        (Position_dependent_options::copy_from_options): Set incremental
8485
        dispositions.
8486
        * options.cc (General_options::parse_incremental_changed): New
8487
        function.
8488
        (General_options::parse_incremental_unchanged): New function.
8489
        (General_options::parse_incremental_unknown): New function.
8490
        (General_options::General_options): Initialize new fields
8491
        incremental_disposition_ and implicit_incremental_.
8492
        (General_options::finalize): Check for uasge of --incremental-*
8493
        without --incremental.
8494
 
8495
2009-02-06  Chris Demetriou  
8496
 
8497
        * gold.h (gold_undefined_symbol): Change to take only a Symbol
8498
        pointer and to report location as the file name associated with
8499
        the symbol.
8500
        (gold_undefined_symbol_at_location): New function to replace the
8501
        old gold_undefined_symbol functionality.
8502
        * target-reloc.h (relocate_section): Update to use
8503
        gold_undefined_symbol_at_location.
8504
        * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
8505
        Call gold_undefined_symbol function rather than gold_error.
8506
        * errors.h (Errors::undefined_symbol): Take location as a
8507
        string, rather than calculating it from a relocation.
8508
        * errors.cc (Errors::fatal): Print "fatal error:" before the
8509
        formatted message.
8510
        (Errors::error, Errors::error_at_location): Print "error: "
8511
        before the formatted message.
8512
        (Errors::undefined_symbol): Take location as a string, rather
8513
        than calculating it from a relocation.
8514
        (gold_undefined_symbol_at_location): New function akin to
8515
        old gold_undefined_symbol, calculates location from relocation.
8516
        (gold_undefined_symbol): Change to take only a Symbol pointer
8517
        and to report location as the file name associated with the symbol.
8518
        * testsuite/debug_msg.sh: Update for changed error messages.
8519
        * testsuite/undef_symbol.sh: Likewise.
8520
 
8521
2009-02-04  Duncan Sands  
8522
 
8523
        PR 9812
8524
        * reduced_debug_output.h
8525
        (Output_reduced_debug_abbrev_section::failed): Use format for
8526
        gold_warning.
8527
        (Output_reduced_debug_info_section::faild): Likewise.
8528
 
8529
2009-01-31  Mikolaj Zalewski  
8530
 
8531
        * script.cc (Lazy_demangler): New class.
8532
        (Version_script_info::get_symbol_version_helper): Demangle a
8533
        symbol only once.
8534
 
8535
2009-01-29  Cary Coutant  
8536
 
8537
        * i386.cc (Target_i386::Relocate::relocate): Recognize non-PIC calls
8538
        to __tls_get_addr.
8539
        * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
8540
 
8541
2009-01-28  Ian Lance Taylor  
8542
 
8543
        * version.cc (version_string): Bump to 1.9.
8544
 
8545
        * gold.h: Include  and .
8546
        * version.cc: Include .
8547
        * object.cc (Sized_relobj::do_layout): Initialize gc_sd to avoid a
8548
        warning.
8549
        * reduced_debug_output.cc (insert_into_vector): Rename from
8550
        Insert_into_vector; change all callers.  Use Swap_unaligned to
8551
        avoid aliasing issue; remove union since it is unnecessary.
8552
 
8553
2009-01-27  Sriraman Tallam  
8554
 
8555
        * Makefile.am (CCFILES): Add gc.cc.
8556
        (HFILES): Add gc.h.
8557
        * Makefile.in: Regenerate.
8558
        * gold.cc (Gc_runner): New class.
8559
        (queue_initial_tasks): Call garbage collection related tasks
8560
        when corresponding options are invoked.
8561
        (queue_middle_gc_tasks): New function.
8562
        (queue_middle_tasks): Reorder tasks to allow relocs to be read and
8563
        processed early before laying out sections during garbage collection.
8564
        * gold.h (queue_middle_gc_tasks): New function.
8565
        (is_prefix_of): Move from "layout.cc".
8566
        * i386.cc (Target_i386::gc_process_relocs): New function.
8567
        * layout.cc (is_prefix_of): Remove. Move to "gold.h"
8568
        * main.cc (main): Create object of class "Garbage_collection".
8569
        * object.cc (Relobj::copy_symbols_data): New function.
8570
        (Relobj::is_section_name_included): New function.
8571
        (Sized_relobj::do_layout): Allow this function to be called twice
8572
        during garbage collection and defer layout of section during the
8573
        first call.
8574
        * object.h (Relobj::get_symbols_data): New function.
8575
        (Relobj::is_section_name_included): New function.
8576
        (Relobj::copy_symbols_data): New function.
8577
        (Relobj::set_symbols_data): New function.
8578
        (Relobj::get_relocs_data): New function.
8579
        (Relobj::set_relocs_data): New function.
8580
        (Relobj::is_output_section_offset_invalid): New pure virtual function.
8581
        (Relobj::gc_process_relocs): New function.
8582
        (Relobj::do_gc_process_relocs): New pure virtual function.
8583
        (Relobj::sd_): New data member.
8584
        (Sized_relobj::is_output_section_offset_invalid): New function.
8585
        (Sized_relobj::do_gc_process_relocs): New function.
8586
        * options.h (General_options::gc_sections): Modify to not be a no-op.
8587
        (General_options::print_gc_sections): New option.
8588
        * plugin.cc (Plugin_finish::run): Remove function call to
8589
        Plugin_manager::layout_deferred_objects.  Move it to "gold.cc".
8590
        * powerpc.cc (Target_powerpc::gc_process_relocs): New function.
8591
        * reloc.cc (Read_relocs::run): Add task to process relocs and
8592
        determine unreferenced sections when doing garbage collection.
8593
        (Gc_process_relocs): New class.
8594
        (Sized_relobj::do_gc_process_relocs): New function.
8595
        (Sized_relobj::do_scan_relocs): Don't try to scan the relocs for
8596
        sections that are garbage collected.
8597
        * reloc.h (Gc_process_relocs): New class.
8598
        * sparc.cc (Target_sparc::gc_process_relocs): New function.
8599
        * symtab.cc (Symbol::should_add_dynsym_entry): Do not add entries for
8600
        symbols whose corresponding sections are garbage collected.
8601
        (Symbol_table::Symbol_table): Add new parameter for the garbage
8602
        collection object.
8603
        (Symbol_table::gc_mark_undef_symbols): New function.
8604
        (Symbol_table::gc_mark_symbol_for_shlib): New function.
8605
        (Symbol_table::gc_mark_dyn_syms): New function.
8606
        (Symbol_table::resolve): Do not treat symbols seen in dynamic objects
8607
        as garbage.
8608
        (Symbol_table::add_from_object): Likewise.
8609
        (Symbol_table::add_from_relobj): When building shared objects, do not
8610
        treat externally visible symbols as garbage.
8611
        (Symbol_table::sized_finalize_symbol): Do not check dynamic symbol
8612
        table information for static and relocatable links.
8613
        * symtab.h (Symbol_table::set_gc): New function.
8614
        (Symbol_table::gc): New function.
8615
        (Symbol_table::gc_mark_undef_symbols): New function.
8616
        (Symbol_table::gc_mark_symbol_for_shlib): New function.
8617
        (Symbol_table::gc_mark_dyn_syms): New function.
8618
        (Symbol_table::gc_): New data member.
8619
        * target.h (Sized_target::gc_process_relocs): New pure virtual
8620
        function.
8621
        * x86_64.cc (Target_x86_64::gc_process_relocs): New function.
8622
        * testsuite/testfile.cc (Target_test::gc_process_relocs): New function.
8623
 
8624
2009-01-20  Chris Faylor 
8625
 
8626
        * options.h (General_options::gc_sections): Define as a no-op for now.
8627
        (General_options::no_keep_memory): Ditto.
8628
        (General_options::Bshareable): Define.
8629
        * options.cc (General_options::finalize): Honor -Bshareable.
8630
 
8631
2009-01-20  Andreas Schwab  
8632
 
8633
        * powerpc.cc (Powerpc_relocate_functions::rel16_ha): Don't try to
8634
        read the value in the contents, since we don't use it.  Use the
8635
        template endianness when writing.
8636
        (Relocate::relocate): Use it for R_PPC_REL16_HA.
8637
 
8638
2009-01-19  Andreas Schwab  
8639
 
8640
        * configure.tgt (powerpc64-*): Fix targ_obj.
8641
 
8642
2009-01-15  Ian Lance Taylor  
8643
 
8644
        * object.cc (Sized_relobj::write_local_symbols): Don't write out
8645
        local symbols when stripping all symbols.
8646
 
8647
2009-01-14  Cary Coutant  
8648
 
8649
        * output.cc (Output_reloc): Add explicit instantiations.
8650
 
8651
2009-01-14  Cary Coutant  
8652
 
8653
        * archive.cc (Archive::get_elf_object_for_member): Remove call
8654
        to File_read::claim_for_plugin.
8655
        * descriptors.cc (Descriptors::open): Remove reference to
8656
        is_claimed.
8657
        (Descriptors::claim_for_plugin): Remove.
8658
        * descriptors.h (Descriptors::claim_for_plugin): Remove.
8659
        (Descriptors::is_claimed): Remove.
8660
        (claim_descriptor_for_plugin): Remove.
8661
        * fileread.cc (File_read::claim_for_plugin): Remove.
8662
        * fileread.h (File_read::claim_for_plugin): Remove.
8663
        (File_read::descriptor): Reopen descriptor if necessary.
8664
        * plugin.cc  (Plugin::load): Add two new APIs to transfer vector.
8665
        (Plugin_manager::all_symbols_read): Add task parameter. Change
8666
        all callers.
8667
        (Plugin_manager::get_input_file): New function.
8668
        (Plugin_manager::release_input_file): New function.
8669
        (Pluginobj::Pluginobj): Add filesize parameter and initialize
8670
        corresponding data member.
8671
        (Sized_pluginobj::Sized_pluginobj): Add filesize parameter
8672
        and pass to base constructor. Change all callers.
8673
        (get_input_file, release_input_file): New functions.
8674
        (make_sized_plugin_object): Add filesize parameter. Change all callers.
8675
        * plugin.h (Plugin_manager::Plugin_manager): Initialize task_ member.
8676
        (Plugin_manager::all_symbols_read): Add task parameter.
8677
        (Plugin_manager::get_input_file): New function.
8678
        (Plugin_manager::release_input_file): New function.
8679
        (Plugin_manager::task_): New data member.
8680
        (Pluginobj::Pluginobj): Add filesize parameter.
8681
        (Pluginobj::filename): New function.
8682
        (Pluginobj::descriptor): New function.
8683
        (Pluginobj::filesize): New function.
8684
        (Pluginobj::filesize_): New data member.
8685
        (Sized_pluginobj::Sized_pluginobj): Add filesize parameter.
8686
        * readsyms.cc (Read_symbols::do_read_symbols): Remove call to
8687
        File_read::claim_for_plugin; use Object::unlock to unlock the file.
8688
 
8689
        * testsuite/Makefile.am (plugin_test_4): New test case for plugins
8690
        with archive libraries.
8691
        * testsuite/Makefile.in: Regenerate.
8692
        * testsuite/plugin_test.c (struct sym_info): New type.
8693
        (get_input_file, release_input_file): New static variables.
8694
        (onload): Capture new transfer vector entries.
8695
        (claim_file_hook): Stop reading at end of file according to filesize.
8696
        Factor out parsing of readelf output into separate function.
8697
        (all_symbols_read_hook): Exercise get_input_file and release_input_file
8698
        APIs and get the source file name from the symbol table.  Convert
8699
        source file name to corresponding object file name.  Print info
8700
        message when adding new input files.
8701
        (parse_readelf_line): New function.
8702
        * testsuite/plugin_test_1.sh: Add checks for new info messages.
8703
        * testsuite/plugin_test_2.sh: Likewise.
8704
        * testsuite/plugin_test_3.sh: Likewise.
8705
        * testsuite/plugin_test_4.sh: New test case.
8706
 
8707
2009-01-07  Ian Lance Taylor  
8708
 
8709
        * version.cc (version_string): Bump to 1.8.
8710
 
8711
2008-12-23  Cary Coutant  
8712
 
8713
        * gold.cc (gold_exit): Call plugin cleanup handlers on exit.
8714
        * plugin.cc (Plugin_manager::finish): Rename as
8715
        layout_deferred_objects.  Move cleanup to separate function.
8716
        (Plugin_manager::cleanup): New function.
8717
        (Plugin_finish::run): Call layout_deferred_objects and cleanup
8718
        separately.
8719
        * plugin.h (Plugin_manager::finish): Rename as
8720
        layout_deferred_objects.
8721
        (Plugin_manager::cleanup): New function.
8722
        (Plugin_manager::cleanup_done): New field.
8723
 
8724
2008-12-23  Cary Coutant  
8725
 
8726
        * plugin.cc (is_visible_from_outside): New function.
8727
        (Pluginobj::get_symbol_resolution_info): Call is_visible_from_outside
8728
        so we don't return "IR only" status for exported symbols or -r links.
8729
 
8730
        * testsuite/Makefile.am (plugin_test_3): New test case.
8731
        * testsuite/Makefile.in: Regenerate.
8732
        * testsuite/plugin_test_3.sh: New file.
8733
 
8734
2008-12-22  Cary Coutant  
8735
 
8736
        * object.cc (Sized_relobj::layout_section): New function.
8737
        (Sized_relobj::do_layout): Defer layout of input sections until after
8738
        plugin has provided replacement files.
8739
        (Sized_relobj::do_layout_deferred_sections): New function.
8740
        * object.h (Relobj::set_section_offset): Remove virtual keyword.
8741
        (Relobj::layout_deferred_sections): New function.
8742
        (Relobj::do_layout_deferred_sections): New function.
8743
        (Sized_relobj::do_layout_deferred_sections): New function.
8744
        (Sized_relobj::layout_section): New function.
8745
        (Sized_relobj::Deferred_layout): New structure.
8746
        (Sized_relobj::deferred_layout_): New field.
8747
        * plugin.cc (Plugin_manager::finish): Renamed, was cleanup.
8748
        Change all callers.  Layout deferred sections.
8749
        (class Plugin_finish): Renamed, was Plugin_cleanup.  Change all
8750
        references.
8751
        (Plugin_hook::run): Move code from do_plugin_hook inline.
8752
        (Plugin_hook::do_plugin_hook): Remove.
8753
        * plugin.h (Plugin_manager::Plugin_manager): Add missing initializers.
8754
        (Plugin_manager::finish): Renamed, was cleanup.
8755
        (Plugin_manager::should_defer_layout): New function.
8756
        (Plugin_manager::add_deferred_layout_object): New function.
8757
        (Plugin_manager::Deferred_layout_list): New type.
8758
        (Plugin_manager::deferred_layout_objects_): New field.
8759
        (Plugin_hook::do_plugin_hook): Remove.
8760
 
8761
2008-12-17  Ian Lance Taylor  
8762
 
8763
        * options.h (class General_options): Add --no case for
8764
        --export-dynamic.
8765
 
8766
2008-12-16  Cary Coutant  
8767
 
8768
        * plugin.cc (Plugin::load): Move LDPT_MESSAGE to front of transfer
8769
        vector.
8770
        (Plugin_manager::claim_file): Create plugin object even if
8771
        plugin did not call the add_symbols callback.
8772
        (Plugin_obj::get_symbol_resolution_info): Guard against plugin
8773
        asking for more symbols than were added.
8774
        * testsuite/Makefile.am (plugin_test_1): Add test case with
8775
        no global symbols.
8776
        (empty.syms): New target.
8777
        * testsuite/Makefile.in: Regenerate.
8778
        * testsuite/plugin_test.c (claim_file_hook): Add new debug
8779
        message. Don't call add_symbols if no globals.
8780
        (all_symbols_read_hook): Don't provide replacement for empty
8781
        claimed file.
8782
 
8783
2008-12-12  Ian Lance Taylor  
8784
 
8785
        * target-reloc.h (Default_scan_relocatable_relocs): Only discard
8786
        r_type == 0 for a local symbol with r_sym == 0.
8787
        (scan_relocatable_relocs): Pass r_sym to
8788
        local_non_section_strategy.
8789
        * reloc.cc (Emit_relocs_strategy::local_non_section_strategy): Add
8790
        r_sym parameter.
8791
 
8792
        * configure.ac: Update test for TLS descriptors: they are
8793
        supported as of glibc 2.9.
8794
        * configure: Rebuild.
8795
 
8796
2008-12-11  Ian Lance Taylor  
8797
 
8798
        PR 7091
8799
        * target-reloc.h (Default_scan_relocatable_relocs): For each
8800
        function, map r_type == 0 to RELOC_DISCARD.
8801
 
8802
2008-12-10  Cary Coutant  
8803
 
8804
        * layout.cc (Layout::add_comdat): Allow COMDAT group from a replacement
8805
        object to override a kept COMDAT group from a plugin object.
8806
 
8807
2008-12-09  Ian Lance Taylor  
8808
 
8809
        PR 7088
8810
        * yyscript.y (file_cmd): Handle INPUT.
8811
 
8812
        * testsuite/initpri1.c: Change all declarations to be full
8813
        prototypes by adding void, to avoid compiler warnings.
8814
 
8815
2008-12-05  Rafael Avila de Espindola  
8816
 
8817
        * options.cc (General_options::parse_plugin_opt): New.
8818
        (General_options::add_plugin): The argument now is just the filename.
8819
        (General_options::add_plugin_option): New.
8820
        * options.h (plugin_opt): New.
8821
        (add_plugin): Change argument name.
8822
        (add_plugin_option): New.
8823
        * plugin.cc (Plugin::load): Don't parse the plugin option.
8824
        * plugin.h (Plugin::Plugin): Rename argument. Init filename_.
8825
        (Plugin::add_option): New.
8826
        (Plugin::args_): Change type.
8827
        (Plugin::filename_): New.
8828
        (Plugin_manager::add_plugin_option): New.
8829
        * testsuite/Makefile.am (plugin_test_1): Use new syntax.
8830
        * testsuite/Makefile.in: Regenerate.
8831
 
8832
2008-12-05  Cary Coutant  
8833
 
8834
        * layout.cc (Layout::include_section): Check for SHF_EXCLUDE.
8835
        Handle --strip-lto-sections option.
8836
        * options.h (strip_lto_sections): New option.
8837
 
8838
2008-12-01  Cary Coutant  
8839
 
8840
        * plugin.cc (ld_plugin_message): Change format parameter to const.
8841
        Fix mismatch between new[] and delete.
8842
 
8843
2008-11-14  Cary Coutant  
8844
 
8845
        * reloc.cc (Sized_relobj::do_read_relocs): Use constant invalid_address
8846
        instead of -1U.
8847
 
8848
2008-11-05  Craig Silverstein  
8849
 
8850
        * options.cc (General_options::parse_dynamic_list): New function.
8851
        * options.h (General_options): New flags dynamic_list,
8852
        dynamic_list_data, dynamic_list_cpp_new, and
8853
        dynamic_list_cpp_typeinfo.  New variable dynamic_list_.
8854
        (General_options::in_dynamic_list): New function.
8855
        * script.cc (Lex::Mode): New enum DYNAMIC_LIST.
8856
        (Lex::can_start_name): Add support for DYNAMIC_LIST mode.
8857
        (Lex::can_continue_name): Likewise.
8858
        (yylex): Likewise.
8859
        (read_script_file): New parameter script_options.
8860
        (read_dynamic_list): New function.
8861
        (Script_options::define_dynamic_list): New function.
8862
        (dynamic_list_keyword_parsecodes): New variable.
8863
        (dynamic_list_keywords): New variable.
8864
        * script.h (Script_options::define_dynamic_list): New function
8865
        prototype.
8866
        (read_dynamic_list): New function prototype.
8867
        * symtab.cc (strprefix): New macro.
8868
        (Symbol::should_add_dynsym_entry): Support dynamic_list,
8869
        dynamic_list_data, dynamic_list_cpp_new, and
8870
        dynamic_list_cpp_typeinfo.
8871
        * yyscript.y (PARSING_DYNAMIC_LIST): New token.
8872
        (dynamic_list_expr): New rule.
8873
        (dynamic_list_nodes): Likewise.
8874
        (dynamic_list_node): Likewise.
8875
        * testsuite/Makefile.am (dynamic_list): New test.
8876
        * testsuite/Makefile.in: Regenerated.
8877
        * testsuite/dynamic_list.t: New file.
8878
        * testsuite/dynamic_list.sh: New file.
8879
 
8880
2008-11-05  Craig Silverstein  
8881
 
8882
        * testsuite/tls_test_c.c: Add prototype for t11 and t11_last.
8883
        * testsuite/tls_test_c.c (t11): Add explicit "void" to prototype.
8884
        (t11_last): Likewise.
8885
        * testsuite/ver_test_6.c (main): Likewise.
8886
 
8887
2008-10-07  Cary Coutant  
8888
 
8889
        * options.c (General_options::finalize): Add check for -static and
8890
        -shared.
8891
        * gold.cc (queue_middle_tasks): Assert that list of dynamic objects
8892
        is not empty.
8893
 
8894
2008-10-02  Cary Coutant  
8895
 
8896
        * plugin.cc (make_sized_plugin_object): Fix conditional
8897
        compilation to work when not all targets are enabled.
8898
 
8899
2008-09-29  Cary Coutant  
8900
 
8901
        * archive.cc (Archive::get_file_and_offset): Use filename instead
8902
        of name to get library path.
8903
        (Archive::include_member): Unlock external member of a thin archive.
8904
 
8905
        * testsuite/Makefile.am (TEST_AR): New variable.
8906
        (thin_archive_test_1): New test.
8907
        (thin_archive_test_2): New test.
8908
        * testsuite/Makefile.in: Regenerate.
8909
        * testsuite/thin_archive_main.cc: New file.
8910
        * testsuite/thin_archive_test_1.cc: New file.
8911
        * testsuite/thin_archive_test_2.cc: New file.
8912
        * testsuite/thin_archive_test_3.cc: New file.
8913
        * testsuite/thin_archive_test_4.cc: New file.
8914
 
8915
2008-09-29  Cary Coutant  
8916
 
8917
        * mapfile.cc (Mapfile::print_input_section): Change -1U to -1ULL.
8918
        * object.cc (Sized_relobj::do_layout): Use constant invalid_address
8919
        instead of -1U.
8920
        (Sized_relobj::do_finalize_local_symbols): Likewise.
8921
        (Sized_relobj::map_to_kept_section): Likewise.
8922
        * object.h (Sized_relobj::invalid_address): New constant.
8923
        (Sized_relobj::do_output_section_offset): Check for invalid_address
8924
        and return -1ULL.
8925
        * output.cc (Output_reloc::local_section_offset): Use constant
8926
        invalid_address instead of -1U.
8927
        (Output_reloc::get_address): Likewise.
8928
        (Output_section::output_address): Change -1U to -1ULL.
8929
        * output.h (Output_reloc::invalid_address): New constant.
8930
        * reloc.cc (Sized_relobj::write_sections): Use constant
8931
        invalid_address instead of -1U.
8932
        (Sized_relobj::relocate_sections): Likewise.
8933
        * symtab.cc (Symbol_table::sized_finalize_symbol): Handle symbol
8934
        values for merge sections.
8935
        * target-reloc.h (relocate_for_relocatable): Use constant
8936
        invalid_address instead of -1U.
8937
 
8938
2008-09-19  Cary Coutant  
8939
 
8940
        Add plugin functionality for link-time optimization (LTO).
8941
        * configure.ac (plugins): Add --enable-plugins option.
8942
        * configure: Regenerate.
8943
        * config.in: Regenerate.
8944
        * Makefile.am (LIBDL): New variable.
8945
        (CCFILES): Add plugin.cc.
8946
        (HFILES): Add plugin.h.
8947
        (ldadd_var): Add LIBDL.
8948
        * Makefile.in: Regenerate.
8949
 
8950
        * archive.cc: Include "plugin.h".
8951
        (Archive::setup): Don't preread archive symbols when using a plugin.
8952
        (Archive::get_file_and_offset): Add memsize parameter.  Change callers.
8953
        (Archive::get_elf_object_for_member): Call plugin hooks for claiming
8954
        files.
8955
        (Archive::include_member): Add symbols from plugin objects.
8956
        * archive.h (Archive::get_file_and_offset): Add memsize parameter.
8957
        * descriptors.cc (Descriptors::open): Check for file descriptors
8958
        abandoned by plugins.
8959
        (Descriptors::claim_for_plugin): New function.
8960
        * descriptors.h (Descriptors::claim_for_plugin): New function.
8961
        (Open_descriptor::is_claimed): New field.
8962
        (claim_descriptor_for_plugin): New function.
8963
        * fileread.cc (File_read::claim_for_plugin): New function.
8964
        * fileread.h (File_read::claim_for_plugin): New function.
8965
        (File_read::descriptor): New function.
8966
        * gold.cc: Include "plugin.h".
8967
        (queue_initial_tasks): Add task to call plugin hooks for generating
8968
        new object files.
8969
        * main.cc: Include "plugin.h".
8970
        (main): Load plugin libraries.
8971
        * object.h (Pluginobj): Declare.
8972
        (Object::pluginobj): New function.
8973
        (Object::do_pluginobj): New function.
8974
        (Object::set_target): New function.
8975
        * options.cc: Include "plugin.h".
8976
        (General_options::parse_plugin): New function.
8977
        (General_options::General_options): Initialize plugins_ field.
8978
        (General_options::add_plugin): New function.
8979
        * options.h (Plugin_manager): Declare.
8980
        (General_options): Add --plugin option.
8981
        (General_options::has_plugins): New function.
8982
        (General_options::plugins): New function.
8983
        (General_options::add_plugin): New function.
8984
        (General_options::plugins_): New field.
8985
        * plugin.cc: New file.
8986
        * plugin.h: New file.
8987
        * readsyms.cc: Include "plugin.h".
8988
        (Read_symbols::do_read_symbols): Check for archive before checking
8989
        for ELF file.  Call plugin hooks to claim files.
8990
        * resolve.cc (Symbol_table::resolve): Record when symbol is referenced
8991
        from a real object file; force override when processing replacement
8992
        files.
8993
        * symtab.cc (Symbol::init_fields): Initialize in_real_elf_ field.
8994
        (Symbol::init_base_object): Likewise.
8995
        (Symbol::init_base_output_data): Likewise.
8996
        (Symbol::init_base_output_segment): Likewise.
8997
        (Symbol::init_base_constant): Likewise.
8998
        (Symbol::init_base_undefined): Likewise.
8999
        (Symbol::output_section): Assert that object is not a plugin.
9000
        (Symbol_table::add_from_pluginobj): New function.
9001
        (Symbol_table::sized_finalize_symbol): Treat symbols from plugins as
9002
        undefined.
9003
        (Symbol_table::sized_write_globals): Likewise.
9004
        (Symbol_table::add_from_pluginobj): Instantiate template.
9005
        * symtab.h (Sized_pluginobj): Declare.
9006
        (Symbol::in_real_elf): New function.
9007
        (Symbol::set_in_real_elf): New function.
9008
        (Symbol::in_real_elf_): New field.
9009
        (Symbol_table::add_from_pluginobj): New function.
9010
 
9011
        * testsuite/Makefile.am (AM_CFLAGS): New variable.
9012
        (LIBDL): New variable.
9013
        (LDADD): Add LIBDL.
9014
        (check_PROGRAMS): Add plugin_test_1 and plugin_test_2.
9015
        (check_SCRIPTS): Add plugin_test_1.sh and plugin_test_2.sh.
9016
        (check_DATA): Add plugin_test_1.err and plugin_test_2.err.
9017
        (MOSTLYCLEANFILES): Likewise.
9018
        * testsuite/Makefile.in: Regenerate.
9019
        * testsuite/plugin_test.c: New file.
9020
        * testsuite/plugin_test_1.sh: New file.
9021
        * testsuite/plugin_test_2.sh: New file.
9022
 
9023
2008-09-16  Ian Lance Taylor  
9024
 
9025
        * target-reloc.h (relocate_section): Check whether a symbol is
9026
        defined by the ABI before reporting an undefined symbol error.
9027
        * target.h (Target::is_defined_by_abi): Make parameter const.
9028
        (Target::do_is_defined_by_abi): Likewise.
9029
        * i386.cc (Target_i386::do_is_defined_by_abi): Likewise.
9030
        * powerpc.cc (Target_powerpc::do_is_defined_by_abi): Likewise.
9031
        * sparc.cc (Target_sparc::do_is_defined_by_abi): Likewise.
9032
        * x86_64.cc (Target_x86_64::do_is_defined_by_abi): Likewise.
9033
        * testsuite/Makefile.am (tls_test_shared.so): Add -Wl,-z,defs.
9034
        * testsuite/Makefile.in: Rebuild.
9035
 
9036
        * fileread.cc (make_view): Add casts to avoid warning.
9037
 
9038
2008-09-16  Alexandre Oliva  
9039
 
9040
        * i386.cc (Target_i386::define_tls_base_symbol): Update comments.
9041
        * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
9042
 
9043
2008-09-16  Alexandre Oliva  
9044
 
9045
        * options.h (General_options::output_is_executable): New.
9046
        (General_options::output_is_pie): New.
9047
        * i386.cc (Target_i386::define_tls_base_symbol): Use SEGMENT_START
9048
        for shared libraries.
9049
        * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
9050
 
9051
2008-09-11  Chris Demetriou  
9052
 
9053
        * options.h (origin): New -z option.
9054
        * layout.cc (Layout:finish_dynamic_section): If "-z origin"
9055
        is specified, set DF_ORIGIN in DT_FLAGS and set DF_1_ORIGIN
9056
        in DT_FLAGS_1.
9057
 
9058
2008-09-05  Cary Coutant  
9059
 
9060
        * fileread.cc (File_read::make_view): Add check for attempt to map
9061
        beyond end of file.
9062
 
9063
2008-09-05  Cary Coutant  
9064
 
9065
        * symtab.cc (Symbol_table::add_from_dynobj): Fix typos in
9066
        explicit instantiations.
9067
 
9068
2008-08-28  Kris Van Hees  
9069
 
9070
        PR gold/6858
9071
        * options.cc (General_options::finalize): Allow undefined symbols
9072
        in shlibs if linking -shared.
9073
 
9074
        PR gold/6859
9075
        * symtab.cc (Symbol::init_base_undefined): Mark explicitly undefined
9076
        symbols as not needing a dynsym entry.
9077
 
9078
2008-08-20  Craig Silverstein  
9079
 
9080
        * fileread.cc (File_read::open): Do not lock the file unless it
9081
        was successfully opened.
9082
 
9083
2008-08-14  Cary Coutant  
9084
 
9085
        * x86_64.cc (Target_x86_64::Relocate::relocat_tls):
9086
        Use addend for DTPOFF32, DTPOFF64, and TPOFF32 relocs.
9087
        * testsuite/tls_test.cc (struct int128): 128-bit struct
9088
        for testing TLS relocs with non-zero addend.
9089
        (v12): New TLS variable.
9090
        (t12): New test.
9091
        (t_last): Add check for v12.
9092
        * testsuite/tls_test.h (t12): New function.
9093
        * testsuite/tls_test_main.cc (thread_routine): Call new test.
9094
 
9095
2008-08-13  Ian Lance Taylor  
9096
 
9097
        * layout.cc (Layout::attach_allocated_section_to_segment): Don't
9098
        set tls_segment_ or relro_segment_.
9099
        (Layout::make_output_segment): Set tls_segment_ and relro_segment_
9100
        when appropriate.
9101
        * output.h (Output_section::clear_is_relro): New function.
9102
        * output.cc (Output_segment::add_output_section): Handle SHF_TLS
9103
        sections specially even when output_data_ is empty.
9104
        (Output_segment::maximum_alignment): When first section is relro,
9105
        only force alignment for PT_LOAD segments.
9106
        * script.cc (script_data_segment_align): New function.
9107
        (script_data_segment_relro_end): New function.
9108
        * script-c.h (script_data_segment_align): Declare.
9109
        (script_data_segment_relro_end): Declare.
9110
        * script-sections.h (class Script_sections): Declare
9111
        data_segment_align and data_segment_relro_end.  Add fields
9112
        segment_align_index_ and saw_relro_end_.
9113
        * script-sections.cc (class Sections_element): Add set_is_relro
9114
        virtual function.  Add new bool* parameter to place_orphan_here.
9115
        Add get_output_section virtual function.
9116
        (class Output_section_definition): Add set_is_relro.  Add new
9117
        bool* parameter to place_orphan_here.  Add get_output_section.
9118
        Add is_relro_ field.
9119
        (Output_section_definition::Output_section_definition): Initialize
9120
        evaluated_address_, evaluated_load_address, evaluated_addralign_,
9121
        and is_relro_ fields.
9122
        (Output_section_definition::place_orphan_here): Add is_relro
9123
        parameter.
9124
        (Output_section_definition::set_section_addresses): Set relro for
9125
        output section.
9126
        (Output_section_definition::alternate_constraint): Likewise.
9127
        (class Orphan_output_section): Add new bool* parameter to
9128
        place_orphan_here.  Add get_output_section.
9129
        (Orphan_output_section::place_orphan_here): Add is_relro
9130
        parameter.
9131
        (Script_sections::Script_sections): Initialize
9132
        data_segment_align_index_ and saw_relro_end_.
9133
        (Script_sections::data_segment_align): New function.
9134
        (Script_sections::data_segment_relro_end): New function.
9135
        (Script_sections::place_orphan): Set or clear is_relro.
9136
        (Script_sections::set_section_addresses): Force alignment of first
9137
        TLS section.
9138
        * yyscript.y (exp): Call script_data_segment_align and
9139
        script_data_segment_relro_end.
9140
        * testsuite/relro_script_test.t: New file.
9141
        * testsuite/relro_test.cc (using_script): Declare.
9142
        (t1, t2): Test using_script.
9143
        * testsuite/Makefile.am (check_PROGRAMS): Add relro_script_test.
9144
        (relro_script_test_SOURCES): Define.
9145
        (relro_script_test_DEPENDENCIES): Define.
9146
        (relro_script_test_LDFLAGS): Define.
9147
        (relro_script_test_LDADD): Define.
9148
        (relro_script_test.so): New target.
9149
        * testsuite/Makefile.in: Rebuild.
9150
 
9151
2008-08-06  Cary Coutant 
9152
 
9153
        * archive.cc (Archive::total_archives, Archive::total_members)
9154
        (Archive::total_members_loaded): New variables.
9155
        (Archive::setup): Add parameter.  Add option to preread
9156
        archive symbols.
9157
        (Archive::read_armap): Add counter.
9158
        (Archive::get_file_and_offset): New function.
9159
        (Archive::get_elf_object_for_member): New function.
9160
        (Archive::read_all_symbols): New function.
9161
        (Archive::read_symbols): New function.
9162
        (Archive::add_symbols): Add counters.
9163
        (Archive::include_all_members): Use armap to find members if it's
9164
        already built.
9165
        (Archive::include_member): Skip reading symbols if already read.
9166
        Factored code into Archive::get_file_and_offset and
9167
        Archive::get_elf_object_for_member.  Changed call to
9168
        Mapfile::report_include_archive_member.
9169
        (Archive::print_stats): New function.
9170
        * archive.h: Declare Object and Read_symbols_data classes.
9171
        (Archive::Archive): Add initializers for new members.
9172
        (Archive::setup): Add parameter.
9173
        (Archive::print_stats): New function.
9174
        (Archive::total_archives, Archive::total_members)
9175
        (Archive::total_members_loaded): New variables.
9176
        (Archive::get_file_and_offset): New function.
9177
        (Archive::get_elf_object_for_member): New function.
9178
        (Archive::read_all_symbols): New function.
9179
        (Archive::read_symbols): New function.
9180
        (Archive::Archive_member): New class.
9181
        (Archive::members_): New member.
9182
        (Archive::num_members_): New member.
9183
        * main.cc: Include archive.h.
9184
        (main): Call Archive::print_stats.
9185
        * mapfile.cc (Mapfile::report_include_archive_member): Delete
9186
        archive parameter; member_name is now the fully-decorated name.
9187
        * mapfile.h (Mapfile::report_include_archive_member): Likewise.
9188
        * options.h: (General_options): Add --preread-archive-symbols option.
9189
        * readsyms.cc (Read_symbols::do_read_symbols): Change call to
9190
        Archive::setup.
9191
 
9192
2008-08-04  Ian Lance Taylor  
9193
 
9194
        * symtab.h (Symbol::use_plt_offset): New function.
9195
        * i386.cc (Relocate::relocate): Call Symbol::use_plt_offset.
9196
        * powerpc.cc (Relocate::relocate): Likewise.
9197
        * sparc.cc (Relocate::relocate): Likewise.
9198
        * x86_64.cc (Relocate::relocate): Likewise.
9199
        * testsuite/weak_plt.sh: New test.
9200
        * testsuite/weak_plt_main.cc: New test.
9201
        * testsuite/weak_plt_shared.cc: New test.
9202
        * testsuite/Makefile.am (check_SCRIPTS): Add weak_plt.sh.
9203
        (check_PROGRAMS): Add weak_plt.
9204
        (check_DATA): Add weak_plt_shared.so.
9205
        (weak_plt_main_pic.o, weak_plt): New targets.
9206
        (weak_plt_shared_pic.o, weak_plt_shared.so): New targets.
9207
        * testsuite/Makefile.in: Rebuild.
9208
 
9209
        * testsuite/Makefile.am (weak_alias_test_1.so): Depend upon
9210
        gcctestdir/ld.
9211
        (weak_alias_test_2.so, weak_alias_test_4.so): Likewise.
9212
        * testsuite/Makefile.in: Rebuild.
9213
 
9214
2008-08-04  Alan Modra  
9215
 
9216
        * Makefile.am (POTFILES.in): Set LC_ALL=C.
9217
        * Makefile.in: Regenerate.
9218
        * po/POTFILES.in: Regenerate.
9219
 
9220
2008-07-29  Ian Lance Taylor  
9221
 
9222
        * script.cc (Script_options::finalize_symbols): Finalize SECTIONS
9223
        symbols before other symbols.
9224
        * testsuite/script_test_2.cc (test_addr): Declare.
9225
        (test_addr_alias): Declare.
9226
        (main): Check that test_addr and test_addr_alias have the right
9227
        values.
9228
        * testsuite/script_test_2.t: Define test_addr_alias and
9229
        test_addr.
9230
 
9231
2008-07-24  Ian Lance Taylor  
9232
 
9233
        PR 5990
9234
        * descriptors.cc: New file.
9235
        * descriptors.h: New file.
9236
        * gold-threads.h (class Hold_optional_lock): New class.
9237
        * fileread.cc: Include "descriptors.h".
9238
        (File_read::~File_read): Release descriptor rather than closing
9239
        it.
9240
        (File_read::open) [file]: Call open_descriptor rather than open.
9241
        Set is_descriptor_opened_.
9242
        (File_read::open) [memory]: Assert that descriptor is not open.
9243
        (File_read::reopen_descriptor): New function.
9244
        (File_read::release): Release descriptor.
9245
        (File_read::do_read): Make non-const.  Reopen descriptor.
9246
        (File_read::read): Make non-const.
9247
        (File_read::make_view): Reopen descriptor.
9248
        (File_read::do_readv): Likewise.
9249
        * fileread.h (class File_read): Add is_descriptor_opened_ field.
9250
        Update declarations.
9251
        * layout.cc: Include "descriptors.h".
9252
        (Layout::create_build_id): Use open_descriptor rather than open.
9253
        * output.cc: Include "descriptors.h".
9254
        (Output_file::open): Use open_descriptor rather than open.
9255
        * archive.cc (Archive::const_iterator): Change Archive to be
9256
        non-const.
9257
        (Archive::begin, Archive::end): Make non-const.
9258
        (Archive::count_members): Likewise.
9259
        * archive.h (class Archive): Update declarations.
9260
        * object.h (Object::read): Make non-const.
9261
        * Makefile.am (CCFILES): Add descriptors.cc.
9262
        (HFILES): Add descriptors.h.
9263
        * Makefile.in: Rebuild.
9264
 
9265
        PR 6716
9266
        * gold.h: Always include .  Add Solaris workarounds
9267
        following code in binutils/sysdep.h.
9268
 
9269
        PR 6048
9270
        * ehframe.cc (Eh_frame::add_ehframe_input_section): Check whether
9271
        this->eh_frame_hdr_ is NULL before using it.
9272
 
9273
        * dynobj.cc (Versions::Versions): Update comment.
9274
 
9275
        * dynobj.cc (Versions::Versions): If there is an soname, use it as
9276
        the base version name.
9277
 
9278
        * stringpool.cc (Stringpool_template::add_with_length): Set key to
9279
        array size plus one.
9280
        (Stringpool_template::set_string_offsets): Subtract one from key
9281
        before using it as an array index.
9282
        (Stringpool_template::get_offset_with_length): Likewise.
9283
        (Stringpool_template::write_to_buffer): Likewise.
9284
        * stringpool.h (Stringpool_template::get_offset_from_key):
9285
        Likewise.
9286
 
9287
2008-07-23  Ian Lance Taylor  
9288
 
9289
        PR 6658
9290
        * object.h (Merged_symbol_value::value): Do our best to handle a
9291
        negative addend.
9292
 
9293
        PR 6647
9294
        * script.cc (Version_script_info::get_versions): Don't add empty
9295
        version tag to return value.
9296
        (Version_script_info::get_symbol_version_helper): Change return
9297
        type to bool.  Add pversion parameter.  Change all callers.
9298
        (script_register_vers_node): Don't require a non-NULL tag.
9299
        * script.h (class Version_script_info): Update declarations.
9300
        (Version_script_info::get_symbol_version): Change return type to
9301
        bool.  Add version parameter.  Change all callers.
9302
        * symtab.cc (Sized_symbol::add_from_relobj): Rework version
9303
        handling.  Handle an empty version from a version script.
9304
        (Symbol_table::define_special_symbol): Likewise.
9305
        * testsuite/ver_test_10.script: New file.
9306
        * testsuite/ver_test_10.sh: New file.
9307
        * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_10.sh.
9308
        (check_DATA): Add ver_test_10.syms.
9309
        (ver_test_10.syms, ver_test_10.so): New target.
9310
        * testsuite/Makefile.in: Rebuild.
9311
 
9312
2008-07-23  Simon Baldwin  
9313
 
9314
        * symtab.cc (Symbol_table::sized_write_symbol): Only set st_size
9315
        to zero for undefined symbols from dynamic libraries.
9316
 
9317
2008-07-23  Ian Lance Taylor  
9318
 
9319
        * symtab.cc (Symbol_table::resolve): Remove version parameter.
9320
        Change all callers.
9321
        * symtab.h (class Symbol_table): Update declaration.
9322
        * testsuite/ver_test_9.cc: New file.
9323
        * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_9.
9324
        (ver_test_9_SOURCES, ver_test_9_DEPENDENCIES): Define.
9325
        (ver_test_9_LDFLAGS, ver_test_9_LDADD): Define.
9326
        (ver_test_9.so, ver_test_9.o): New targets.
9327
        * testsuite/Makefile.in: Rebuild.
9328
 
9329
2008-07-22  Ian Lance Taylor  
9330
 
9331
        * options.h (class General_options): Define --check-sections.
9332
        * layout.cc (Layout::set_segment_offsets): Handle
9333
        --check-sections.
9334
 
9335
        * options.h (class General_options): Define -n/--nmagic and
9336
        -N/--omagic.
9337
        * options.cc (General_options::finalize): For -n/--nmagic or
9338
        -N/--omagic, set -static.
9339
        * layout.cc (Layout::attach_allocated_section_to_segment): If
9340
        -N/--omagic, don't put read-only and read-write sections in
9341
        different segments.
9342
        (Layout::find_first_load_seg): If -N/--omagic, don't insist on
9343
        finding a read-only segment.
9344
        (Layout::set_segment_offsets): If -N/--omagic or -n/--nmagic,
9345
        don't set the minimum segment alignment to the common page size,
9346
        and don't set the file offset to the address modulo the page size.
9347
        * script-sections.cc (Script_sections::create_segments): If
9348
        -n/--omagic, don't put read-only and read-write sections in
9349
        different segments.
9350
 
9351
        * cref.cc: New file.
9352
        * cref.h: New file.
9353
        * options.h (class General_options): Add --print-symbol-counts.
9354
        * main.cc (main): Issue defined symbol report if requested.
9355
        * archive.cc (Archive::interpret_header): Make into a const member
9356
        function.
9357
        (Archive::add_symbols): Call Input_objects::archive_start and
9358
        archive_stop.
9359
        (Archive::const_iterator): Define new class.
9360
        (Archive::begin, Archive::end): New functions.
9361
        (Archive::include_all_members): Rewrite to use iterator.
9362
        (Archive::count_members): New function.
9363
        * archive.h (class Archive): Update declarations.
9364
        (Archive::filename): New function.
9365
        * object.cc: Include "cref.h".
9366
        (Sized_relobj::Sized_relobj): Initialize defined_count_.
9367
        (Sized_relobj::do_get_global_symbol_counts): New function.
9368
        (Input_objects::add_object): Add object to cross-referencer.
9369
        (Input_objects::archive_start): New function.
9370
        (Input_objects::archive_stop): New function.
9371
        (Input_objects::print_symbol_counts): New function.
9372
        * object.h: Declare Cref and Archive.
9373
        (Object::get_global_symbol_counts): New function.
9374
        (Object::do_get_global_symbol_counts): New pure virtual function.
9375
        (class Sized_relobj): Add defined_count_ field.  Update
9376
        declarations.
9377
        (class Input_objects): Add cref_ field.  Update constructor.
9378
        Update declarations.
9379
        * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize symbols_ and
9380
        defined_count_.
9381
        (Sized_dynobj::do_add_symbols): Allocate symbols_ if printing
9382
        symbol counts.
9383
        (Sized_dynobj::do_get_global_symbol_counts): New function.
9384
        * dynobj.h (class Sized_dynobj): Add fields symbols_ and
9385
        defined_count_.  Update declarations.  Define Symbols typedef.
9386
        * symtab.cc (Symbol_table::add_from_relobj): Add defined
9387
        parameter.  Change all callers.
9388
        (Symbol_table::add_from_dynobj): Add sympointers and defined
9389
        parameters.  Change all callers.
9390
        * symtab.h (class Symbol_table): Update declarations.
9391
        * Makefile.am (CCFILES): Add cref.cc.
9392
        (HFILES): Add cref.h.
9393
        * Makefile.in: Rebuild.
9394
 
9395
2008-07-22  Simon Baldwin  
9396
 
9397
        * symtab.cc (Symbol_table::sized_write_symbol): Set symbol size
9398
        to zero when writing undefined symbols.
9399
 
9400
2008-07-22  Ian Lance Taylor  
9401
 
9402
        * output.cc (Output_section::add_input_section): Don't try to
9403
        merge empty merge sections.
9404
 
9405
2008-07-21  Craig Silverstein  
9406
 
9407
        * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
9408
        Include symbol version in error message.
9409
 
9410
2008-07-20  Chris Demetriou  
9411
 
9412
        * configure.ac (gold_cv_c_random_seed): New configured variable.
9413
        (RANDOM_SEED_CFLAGS): New substituted variable.
9414
        * Makefile.am (AM_CFLAGS, AM_CXXFLAGS): Add $(RANDOM_SEED_CFLAGS).
9415
        * configure: Rebuild.
9416
        * Makefile.in: Likewise.
9417
        * testsuite/Makefile.in: Likewise.
9418
 
9419
2008-07-18  Ian Lance Taylor  
9420
 
9421
        * symtab.cc (Symbol_table::add_from_object): Rewrite the case
9422
        where we see NAME/NULL and NAME/VERSION  as separate symbols.
9423
        * testsuite/ver_test_main.cc (main): Call t4.
9424
        (t4, t4_2a): Define.
9425
        * testsuite/ver_test_2.cc (t4_2): Define.
9426
        * testsuite/ver_test_2.script: Put t4_2a in VER2.
9427
        * testsuite/ver_test_4.cc (t4_2a): Define.
9428
        * testsuite/ver_test_4.script: Put t4_2a in VER2.
9429
        * testsuite/ver_test.h (t4, t4_2, t4_2a): Declare.
9430
 
9431
2008-07-17  Ian Lance Taylor  
9432
 
9433
        * dynobj.cc (Versions::add_def): If we give an error about a
9434
        missing version, go ahead and create the version anyhow.
9435
 
9436
2008-07-10  Ian Lance Taylor  
9437
 
9438
        Handle output sections with more than 0x7fffffff bytes.
9439
        * object.h (class Relobj): Change map_to_output_ to
9440
        output_sections_, and just keep a section pointer.  Change all
9441
        uses.  Move comdat group support to Sized_relobj.
9442
        (Relobj::is_section_specially_mapped): Remove.
9443
        (Relobj::output_section): Remove poff parameter.  Change all
9444
        callers.
9445
        (Relobj::output_section_offset): New function.
9446
        (Relobj::set_section_offset): Rewrite.
9447
        (Relobj::map_to_output): Remove.
9448
        (Relobj::output_sections): New function.
9449
        (Relobj::do_output_section_offset): New pure virtual function.
9450
        (Relobj::do_set_section_offset): Likewise.
9451
        (class Sized_relobj): Add section_offsets_ field.  Add comdat
9452
        group support from Relobj.  Update declarations.
9453
        (Sized_relobj::get_output_section_offset): New function.
9454
        (Sized_relobj::do_output_section_offset): New function.
9455
        (Sized_relobj::do_set_section_offset): New function.
9456
        * object.cc (Relobj::output_section_address): Remove.
9457
        (Sized_relobj::Sized_relobj): Initialize new fields.
9458
        (Sized_relobj::include_section_group): Cast find_kept_object to
9459
        Sized_relobj.
9460
        (Sized_relobj::include_linkonce_section): Likewise.
9461
        (Sized_relobj::do_layout): Use separate arrays for output section
9462
        and output offset.
9463
        (Sized_relobj::do_count_local_symbols): Change map_to_output to
9464
        output_sections.
9465
        (Sized_relobj::do_finalize_local_symbols): Change map_to_output to
9466
        output_sections and section_offsets.
9467
        (Sized_relobj::write_local_symbols): Likewise.
9468
        (map_to_kept_section): Compute output address directly.
9469
        * reloc.cc (Sized_relobj::do_read_relocs): Change map_to_output to
9470
        output_sections and section_offsets.
9471
        (Sized_relobj::write_sections): Likewise.
9472
        (Sized_relobj::relocate_sections): Likewise.
9473
        * symtab.cc (sized_finalize_symbol): Use output_section_offset.
9474
        * output.h (class Output_reloc): Update declarations.  Change
9475
        u2_.relobj to Sized_relobj*.
9476
        (class Output_data_reloc): Change add functions to use
9477
        Sized_relobj*.
9478
        * output.cc (Output_reloc::Output_reloc): Change relobj to
9479
        Sized_relobj*.
9480
        (Output_reloc::local_section_offset): Change return type to
9481
        Elf_Addr.  Use get_output_section_offset.
9482
        (Output_reloc::get_address): Likewise.
9483
        (Output_section::is_input_address_mapped): Don't call
9484
        is_section_specially_mapped.
9485
        (Output_section::output_offset): Likewise.
9486
        (Output_section::output_address): Likewise.
9487
        (Output_section::starting_output_address): Likewise.
9488
        * copy-relocs.cc (Copy_relocs::copy_reloc): Change object
9489
        parameter to Sized_relobj*.
9490
        (Copy_relocs::need_copy_reloc): Likewise.
9491
        (Copy_relocs::save): Likewise.
9492
        * copy-relocs.h (class Copy_relocs): Update declarations.
9493
        (class Copy_relocs::Copy_reloc_entry): Change constructor to use
9494
        Sized_relobj*.  Change relobj_ field to Sized_relobj*.
9495
        * target-reloc.h (relocate_for_relocatable): Change
9496
        offset_in_output_section type to Elf_Addr.  Change code that uses
9497
        it as well.
9498
        * layout.cc (Layout::layout): Always set *off.
9499
        * mapfile.cc (Mapfile::print_input_section): Use
9500
        output_section_offset.
9501
        * i386.cc (Target_i386::copy_reloc): Change object parameter to
9502
        Sized_relobj*.
9503
        * powerpc.cc (Target_powerpc::copy_reloc): Likewise.
9504
        * sparc.cc (Target_sparc::copy_reloc): Likewise.
9505
        * x86_64.cc (Target_x86_64::copy_reloc): Likewise.
9506
 
9507
2008-07-03  Ian Lance Taylor  
9508
 
9509
        * layout.cc (Layout::include_section): Do not discard unrecognized
9510
        SHT_STRTAB sections.
9511
 
9512
2008-06-30  Craig Silverstein  
9513
 
9514
        * script.cc (Lex::can_continue_name): Make '?' allowable in
9515
        version-script names.
9516
        * testsuite/version_script.map: Change glob pattern to use '?'
9517
 
9518
2008-06-30  Manish Singh  
9519
 
9520
        PR 6585
9521
        * symtab.cc (Symbol_table::add_undefined_symbols_from_command_line):
9522
        Correct typo.
9523
 
9524
2008-06-30  Ian Lance Taylor  
9525
 
9526
        PR 6660
9527
        PR 6682
9528
        * powerpc.cc (Powerpc_relocate_functions::addr16_ha) [both
9529
        versions]: Don't try to read the value in the contents, since we
9530
        don't use it.  Use the template endianness when writing.
9531
 
9532
2008-06-25  Cary Coutant  
9533
 
9534
        * fileread.cc (File_read::make_view): Assert on zero-length view.
9535
        * object.cc (Sized_relobj::do_read_symbols): Don't try to read
9536
        symbol table when there are no symbols to read.
9537
 
9538
2008-06-23  Craig Silverstein  
9539
 
9540
        * version.cc (version_string): Bump to 1.7
9541
 
9542
2008-06-18  Craig Silverstein  
9543
 
9544
        * powerpc.cc (Powerpc_relocate_functions::addr16_ha): cast
9545
        constant 0xFFFF to type Valtype.
9546
        (Powerpc_relocate_functions::rel16_ha): Likewise.
9547
 
9548
2008-06-17  Ian Lance Taylor  
9549
 
9550
        * output.h (Output_section::Input_section): Initialize p2align_ to
9551
        zero for Output_section_data constructors.
9552
        (Output_section::Input_section::addralign): If not an input
9553
        section, return the alignment of the Output_section_data.
9554
        * testsuite/copy_test.cc: New file.
9555
        * testsuite/copy_test_1.cc: New file.
9556
        * testsuite/copy_test_2.cc: New file.
9557
        * testsuite/Makefile.am (check_PROGRAMS): Add copy_test.
9558
        (copy_test_SOURCES, copy_test_DEPENDENCIES): New variables.
9559
        (copy_test_LDFLAGS, copy_test_LDADD): New variables.
9560
        (copy_test_1_pic.o, copy_test_1.so): New targets.
9561
        (copy_test_2_pic.o, copy_test_2.so): New targets.
9562
        * testsuite/Makefile.in: Rebuild.
9563
 
9564
        * script-sections.cc (Script_sections::place_orphan): Initialize
9565
        local variable exact.
9566
 
9567
2008-06-13  David Edelsohn  
9568
 
9569
        * powerpc.cc (Output_data_plt_powerpc::do_write): 8 + 4 = 0xC.
9570
 
9571
2008-06-12  David Edelsohn  
9572
            David S. Miller  
9573
 
9574
        * powerpc.cc: New file.
9575
        * Makefile.am (TARGETSOURCES): Add powerpc.cc
9576
        (ALL_TARGETOBJS): Add powerpc.$(OBJEXT)
9577
        * configure.tgt: Add entries for powerpc-* and powerpc64-*.
9578
        * Makefile.in: Rebuild.
9579
 
9580
2008-06-09  Ian Lance Taylor  
9581
 
9582
        * testsuite/relro_test.cc: Include , , and
9583
        .
9584
        (throwing, orig_terminate): New static variables.
9585
        (terminate_handler): New static function.
9586
        (t2): Set terminate handler.
9587
 
9588
2008-06-05  Kris Van Hees  
9589
 
9590
        PR 6584
9591
        * binary.cc (Binary_to_elf::sized_convert): Fix .data
9592
        alignment.
9593
 
9594
2008-05-30  Cary Coutant  
9595
 
9596
        * archive.cc (Archive::include_all_members) Correct to step
9597
        over symbol table and extended name table in thin archives.
9598
 
9599
2008-05-29  Kris Van Hees  
9600
 
9601
        PR 6407
9602
        * target-reloc.h (relocate_for_relocatable): Fix new_offset
9603
        calculation.
9604
 
9605
2008-05-28  Caleb Howe  
9606
 
9607
        * reduced_debug_output.cc: New file.
9608
        * reduced_debug_output.h: New file.
9609
        * options.h (class General_options): Add --strip-debug-non-line.
9610
        * options.cc (General_options::finalize): Add strip_debug_non_line
9611
        to the strip heirarchy.
9612
        * layout.h (class Layout): Add debug_abbrev_ and debug_info_
9613
        fields.
9614
        * layout.cc: Include "reduced_debug_output.h".
9615
        (Layout::Layout): Initialize new fields.
9616
        (line_only_debug_sections): New static array.
9617
        (is_lines_only_debug_sections): New static inline function.
9618
        (Layout::include_section): Handle --strip-debug-non-line.
9619
        (Layout::make_output_section): If --strip-debug-non-line, build
9620
        new output sections for .debug_abbrev and .debug_info.
9621
        * dwarf_reader.cc (read_unsigned_LEB_128): Move to namespace
9622
        gold.  Warn about possible overflow.
9623
        (read_signed_LEB_128): Likewise.
9624
        * dwarf_reader.h: (read_unsigned_LEB_128): Declare.
9625
        (read_signed_LEB_128): Declare.
9626
        * Makefile.am (CCFILES): Add reduced_debug_output.cc.
9627
        (HFILES): Add reduced_debug_output.h.
9628
        * Makefile.in: Rebuild.
9629
 
9630
2008-05-21  Ian Lance Taylor  
9631
 
9632
        * mapfile.cc: New file.
9633
        * mapfile.h: New file.
9634
        * options.h (class General_options): Add -M/--print-map and -Map.
9635
        * options.cc (General_options::finalize): Make -M equivalent to
9636
        -Map -.
9637
        * main.cc: Include  and "mapfile.h".
9638
        (main): Open mapfile if requested.
9639
        * gold.cc (class Middle_runner): Add mapfile_ field.  Update
9640
        constructor.  Change caller.
9641
        (queue_initial_tasks): Add mapfile parameter.  Change caller.
9642
        (queue_middle_tasks): Likewise.
9643
        * gold.h (queue_initial_tasks, queue_middle_tasks): Update
9644
        declarations.
9645
        * archive.cc: Include "mapfile.h".
9646
        (Archive::add_symbols): Add mapfile parameter.  Change all
9647
        callers.  Pass mapfile, symbol, and reason to include_member.
9648
        (Archive::include_all_members): Add mapfile parameter.  Change all
9649
        callers.
9650
        (Archive::include_member): Add mapfile, sym, and why parameters.
9651
        Change all callers.  Report inclusion to map file.
9652
        * archive.h: Include "fileread.h".
9653
        (class Archive): Update declarations.
9654
        (Archive::file): New const method.
9655
        (class Add_archive_symbols): Add mapfile_ field.  Update
9656
        constructor.  Change all callers.
9657
        * readsyms.h (class Read_symbols): Likewise.
9658
        (class Finish_group): Likewise.
9659
        (class Read_script): Likewise.
9660
        * common.cc: Include "mapfile.h".
9661
        (Symbol_table::allocate_commons): Add mapfile parameter.  Change
9662
        all callers.
9663
        (Symbol_table::do_allocate_commons): Likewise.
9664
        (Symbol_table::do_allocate_commons_list): Likewise.  Report common
9665
        symbol allocation to mapfile.
9666
        * common.h (class Allocate_commons_task): Add mapfile_ field.
9667
        Update constructor.  Change all callers.
9668
        * symtab.h (class Symbol_table): Update declarations.
9669
        * layout.cc: Include "mapfile.h".
9670
        (Layout_task_runner::run): Print information to mapfile.
9671
        (Layout::create_gold_note): Change Output_data_fixed_space to
9672
        Output_data_zero_fill.
9673
        (Layout::create_build_id): Likewise.
9674
        (Layout::print_to_mapfile): New function.
9675
        * layout.h (class Layout_task_runner): Add mapfile_ field.  Update
9676
        constructor.  Change caller.
9677
        (class Layout): Declare print_to_mapfile.
9678
        * output.cc (Output_section::Input_section::print_to_mapfile): New
9679
        function.
9680
        (Output_section::add_input_section): If producing a map, always
9681
        add to input_sections_ list.
9682
        (Output_section::do_print_to_mapfile): New function.
9683
        (Output_segment::print_sections_to_mapfile): New function.
9684
        (Output_segment::print_section_list_to_mapfile): New function.
9685
        * output.h: Include "mapfile.h".
9686
        (Output_data::print_to_mapfile): New function.
9687
        (Output_data::do_print_to_mapfile): New virtual function.
9688
        (Output_segment_headers::do_print_to_mapfile): New function.
9689
        (Output_file_header::do_print_to_mapfile): New function.
9690
        (Output_data_const::do_print_to_mapfile): New function.
9691
        (class Output_data_const_buffer): Add map_name_ field.  Update
9692
        constructor.  Change all callers.  Add do_print_to_mapfile
9693
        function.
9694
        (class Output_data_fixed_space): Likewise.
9695
        (class Output_data_space): Likewise.
9696
        (class Output_data_zero_fill): New class.
9697
        (Output_data_strtab::do_print_to_mapfile): New function.
9698
        (Output_data_reloc_base::do_print_to_mapfile): New function.
9699
        (Output_relocatable_relocs::do_print_to_mapfile): New function.
9700
        (Output_data_group::do_print_to_mapfile): New function.
9701
        (Output_data_got::do_print_to_mapfile): New function.
9702
        (Output_data_dynamic::do_print_to_mapfile): New function.
9703
        (Output_symtab_xindex::do_print_to_mapfile): New function.
9704
        (class Output_section): Declare do_print_to_mapflie.  Declare
9705
        print_to_mapfile in Input_section.
9706
        (class Output_segment): Declare new functions.
9707
        * object.h (Sized_relobj::symbol_count): New function.
9708
        * script-sections.cc
9709
        (Output_section_element_dot_assignment::set_section_addresses):
9710
        Change Output_data_fixed_space to Output_data_zero_fill.
9711
        (Output_data_expression::do_print_to_mapfile): New function.
9712
        * script.cc (read_input_script): Add mapfile parameter.  Change
9713
        all callers.
9714
        * script.h (read_input_script): Update declaration.
9715
        * ehframe.h (Eh_frame_hdr::do_print_to_mapfile): New function.
9716
        (Eh_frame::do_print_to_mapfile): New function.
9717
        * merge.h (Output_merge_data::do_print_to_mapfile): New function.
9718
        (Output_merge_string::do_print_to_mapfile): New function.
9719
        * i386.cc (Output_data_plt_i386::do_print_to_mapfile): New
9720
        function.
9721
        * sparc.cc (Output_data_plt_sparc::do_print_to_mapfile): New
9722
        function.
9723
        * x86_64.cc (Output_data_plt_x86_64::do_print_to_mapfile): New
9724
        function.
9725
        * Makefile.am (CCFILES): Add mapfile.cc.
9726
        (HFILES): Add mapfile.h.
9727
        * Makefile.in: Rebuild.
9728
 
9729
2008-05-19  Ian Lance Taylor  
9730
 
9731
        * options.h (class General_options): Add -z relro.
9732
        * layout.cc (Layout::Layout): Initialize relro_segment_.
9733
        (Layout::add_output_section_data): Return the output section.
9734
        (Layout::make_output_section): Rcognize relro sections and mark
9735
        them appropriately.
9736
        (Layout::attach_allocated_section_to_segment): Put relro sections
9737
        in a PT_GNU_RELRO segment.
9738
        (Layout::create_initial_dynamic_sections): Mark the .dynamic
9739
        section as relro.
9740
        (Layout::segment_precedes): Sort PT_GNU_RELRO segments after
9741
        PT_TLS segments.
9742
        (Layout::linkonce_mapping): Map d.rel.ro.local to
9743
        .data.rel.ro.local.
9744
        (Layout::output_section_name): Us .data.rel.ro.local for any
9745
        section which begins with that.
9746
        * layout.h (class Layout): Update add_output_section_data
9747
        declaration.  Add relro_segment_ field.
9748
        * output.cc (Output_section::Output_section): Initialize is_relro_
9749
        and is_relro_local_ fields.
9750
        (Output_segment::add_output_section): Group relro sections.
9751
        (Output_segment::is_first_section_relro): New function.
9752
        (Output_segment::maximum_alignment): If there is a relro section,
9753
        align the segment to the common page size.
9754
        (Output_segment::set_section_addresses): Track whether we are
9755
        looking at relro sections.  If the last section is a relro
9756
        section, align to the common page size.
9757
        (Output_segment::set_section_list_addresses): Add in_relro
9758
        parameter.  Change all callers.  Align to the page size when
9759
        moving from relro to non-relro section.
9760
        (Output_segment::set_offset): Align memsz of a PT_GNU_RELRO
9761
        segment.
9762
        * output.h (class Output_section): Add is_relro_ and
9763
        is_relro_local_ fields.
9764
        (Output_section::is_relro): New function.
9765
        (Output_section::set_is_relro): New function.
9766
        (Output_section::is_relro_local): New function.
9767
        (Output_section::set_is_relro_local): New function.
9768
        (class Output_segment): Update declarations.
9769
        * i386.cc (Target_i386::got_section): Mark .got section as relro.
9770
        * sparc.cc (Target_sparc::got_section): Likewise.
9771
        * x86_64.cc (Target_x86_64::got_section): Likewise.
9772
        * testsuite/relro_test_main.cc: New file.
9773
        * testsuite/relro_test.cc: New file.
9774
        * testsuite/Makefile.am (check_PROGRAMS): Add relro_test.
9775
        (relro_test_SOURCES, relro_test_DEPENDENCIES): New variables.
9776
        (relro_test_LDFLAGS, relro_test_LDADD): New variables.
9777
        (relro_test.so, relro_test_pic.o): New targets.
9778
        * testsuite/Makefile.in: Rebuild.
9779
 
9780
2008-05-16  Ian Lance Taylor  
9781
 
9782
        * output.cc (Output_segment::add_output_section): Remove front
9783
        parameter.
9784
        * output.h (class Output_segment): Remove
9785
        add_initial_output_section and overloaded add_output_section.
9786
        Update declaration of remaining add_output_section.
9787
        * layout.cc (Layout::create_interp): Call add_output_section
9788
        rather than add_initial_output_section.
9789
        (Layout::finish_dynamic_section): Likewise.
9790
 
9791
        * i386.cc (Target_i386::Relocate::relocate_tls): Set dynamic type
9792
        for TLS_GOTDESC and TLS_DESC_CALL.  Only optimize TLS_LDO_32 if we
9793
        know the dynamic type.
9794
        * x86_64.cc (Target_x86_64::Relocate): Add saw_tls_block_reloc_
9795
        field.  Initialize it in constructor.
9796
        (Target_x86_64::Relocate::relocate_tls): Record that we saw a TLS
9797
        block reloc for TLSGD, GOTPC32_TLSDESC, TLSDESC_CALL, and TLSLD.
9798
        Only optimize DTPOFF32 and DTPOFF64 if we have seen a TLS block
9799
        reloc.
9800
 
9801
        * output.cc (Output_reloc::get_address): Change return type to
9802
        Elf_Addr.
9803
        * output.h (class Output_reloc): Update get_address declaration.
9804
        * x86_64.cc (Output_data_plt_x86_64::do_write): Use 64-bit types
9805
        for section addresses.
9806
 
9807
2008-05-09  Ian Lance Taylor  
9808
 
9809
        PR 6493
9810
        * gold.cc (gold_nomem): Use return value of write.
9811
 
9812
2008-05-08  Ian Lance Taylor  
9813
 
9814
        * symtab.c (Symbol::init_base_output_data): Add version
9815
        parameter.  Change all callers.
9816
        (Symbol::init_base_output_segment): Likewise.
9817
        (Symbol::init_base_constant): Likewise.
9818
        (Symbol::init_base_undefined): Likewise.
9819
        (Sized_symbol::init_output_data): Likewise.
9820
        (Sized_symbol::init_output_segment): Likewise.
9821
        (Sized_symbol::init_constant): Likewise.
9822
        (Sized_symbol::init_undefined): Likewise.
9823
        (Symbol_table::do_define_in_output_data): If the new symbol has a
9824
        version, mark it as the default.
9825
        (Symbol_table::do_define_in_output_segment): Likewise.
9826
        (Symbol_table::do_define_as_constant): Likewise.
9827
        * symtab.h (class Symbol): Update declarations.
9828
        (class Sized_symbol): Likewise.
9829
        * resolve.cc (Symbol::override_version): New function.
9830
        (Symbol::override_base): Call override_version.
9831
        (Symbol::override_base_with_special): Likewise.
9832
        * testsuite/ver_script_8.script: New file.
9833
        * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_8.
9834
        (ver_test_8_SOURCES, ver_test_8_DEPENDENCIES): Define.
9835
        (ver_test_8_LDFLAGS, ver_test_8_LDADD): Define.
9836
        (ver_test_8_1.so, ver_test_8_2.so): New targets.
9837
 
9838
2008-05-06  Ian Lance Taylor  
9839
 
9840
        PR 6049
9841
        * options.h (DEFINE_set): Add VARNAME_begin and VARNAME_end
9842
        functions.
9843
        (class General_options): Remove existing --undefined, and add
9844
        --no-undefined instead.  Add new --undefined as synonym for -u.
9845
        * archive.cc (Archive::add_symbols): Check whether symbol was
9846
        named with -u.
9847
        * gold.cc (queue_middle_tasks): Add -u symbols to symbol table.
9848
        * symtab.h (class Symbol): Rename CONSTANT to IS_CONSTANT; change
9849
        all uses.  Add IS_UNDEFINED.  Update declarations to split
9850
        different versions of init_base.  Declare init_base_undefined.
9851
        (Symbol::is_defined): Handle IS_UNDEFINED.
9852
        (Symbol::is_undefined): Likewise.
9853
        (Symbol::is_weak_undefined): Call is_undefined.
9854
        (Symbol::is_absolute): Handle IS_CONSTANT.
9855
        (class Sized_symbol): Update declarations to split different
9856
        versions of init.  Declare init_undefined.
9857
        (class Symbol_table): Declare new functions.
9858
        * symtab.cc (Symbol::init_base_object): Rename from init_base.
9859
        Change all callers.
9860
        (Symbol::init_base_output_data): Likewise.
9861
        (Symbol::init_base_output_segment): Likewise.
9862
        (Symbol::init_base_constant): Likewise.
9863
        (Symbol::init_base_undefined): New function.
9864
        (Sized_symbol::init_object): Rename from init.  Change all
9865
        callers.
9866
        (Sized_symbol::init_output_data): Likewise.
9867
        (Sized_symbol::init_output_segment): Likewise.
9868
        (Sized_symbol::init_constant): Likewise.
9869
        (Sized_symbol::init_undefined): New function.
9870
        (Symbol_table::add_undefined_symbols_from_command_line): New
9871
        function.
9872
        (Symbol_table::do_add_undefined_symbols_from_command_line): New
9873
        function.
9874
        (Symbol::final_value_is_known): Handle IS_UNDEFINED.
9875
        (Symbol::output_section): Likewise.
9876
        (Symbol::set_output_section): Likewise.
9877
        (Symbol_table::sized_finalize_symbol): Likewise.
9878
        (Symbol_table::sized_write_globals): Likewise.
9879
        * resolve.cc (Symbol_table::should_override): Likewise.
9880
        (Symbol::override_base_with_special): Likewise.
9881
 
9882
        * symtab.cc (Symbol_table::add_from_dynobj): If we see a protected
9883
        symbol, change it to have default visibility.
9884
        * testsuite/protected_1.cc: New file.
9885
        * testsuite/protected_2.cc: New file.
9886
        * testsuite/protected_3.cc: New file.
9887
        * testsuite/protected_main_1.cc: New file.
9888
        * testsuite/protected_main_2.cc: New file.
9889
        * testsuite/protected_main_3.cc: New file.
9890
        * testsuite/Makefile.am (check_PROGRAMS): Add protected_1.
9891
        (protected_1_SOURCES, protected_1_DEPENDENCIES): Define.
9892
        (protected_1_LDFLAGS, protected_1_LDADD): Define.
9893
        (protected_1.so): New target.
9894
        (protected_1_pic.o, protected_2_pic.o): New targets.
9895
        (protected_3_pic.o): New target.
9896
        (check_PROGRAMS): Add protected_2.
9897
        (protected_2_SOURCES, protected_2_DEPENDENCIES): Define.
9898
        (protected_2_LDFLAGS, protected_2_LDADD): Define.
9899
        * testsuite/Makefile.in: Rebuild.
9900
 
9901
        * options.h (DEFINE_var): Add set_user_set_##varname__.
9902
        (DEFINE_bool_alias): New macro.
9903
        (class General_options): Define -Bstatic using DEFINE_bool_alias
9904
        rather than DEFINE_special.  Add --undefined as an alias for -z
9905
        defs.
9906
        * options.cc (General_options::parse_Bstatic): Remove.
9907
 
9908
        * options.h (class General_options): Add --fatal-warnings.
9909
        * main.cc (main): Implement --fatal-warnings.
9910
        * errors.h (Errors::warning_count): New function.
9911
 
9912
        * options.h (class General_options): Add -Bsymbolic-functions.
9913
        * symtab.h (Symbol::is_preemptible): Check for
9914
        -Bsymbolic-functions.
9915
 
9916
2008-05-05  Ian Lance Taylor  
9917
 
9918
        * options.h (DEFINE_bool): For DASH_Z, create the negative option
9919
        as noVARNAME rather than no-VARNAME.
9920
        (class General_options): Add option -z combreloc.
9921
        * output.h (class Output_reloc) [SHT_REL]: Declare compare and
9922
        get_address.
9923
        (Output_reloc::sort_before) [SHT_REL]: New function.
9924
        (Output_reloc::sort_before) [SHT_RELA]: New function.
9925
        (class Output_data_reloc_base): Add sort_relocs_ field.  Define
9926
        Sort_relocs_comparison.
9927
        (Output_data_reloc_base::Output_data_reloc_base): Add sort_relocs
9928
        parameter.  Change all callers.
9929
        (Output_data_reloc::Output_data_reloc) [both versions]: Add
9930
        sort_relocs parameter.  Change all callers.
9931
        * output.cc (Output_reloc::get_address): New function, broken out
9932
        of write_rel.
9933
        (Output_reloc::write_rel): Call it.
9934
        (Output_reloc::compare): New function.
9935
        (Output_data_reloc_base::do_write): Optionally sort relocs.
9936
 
9937
        * configure.ac: If targ_extra_obj is set, link it in.
9938
        * configure.tgt: Initialize all variables.
9939
        (x86_64*): Set targ_extra_obj and targ_extra_size.
9940
        * configure: Rebuild.
9941
 
9942
        * object.cc (Sized_relobj::include_section_group): Adjust section
9943
        indexes read from group data.  Build vector to pass to
9944
        layout_group.
9945
        * layout.cc (Layout::layout_group): Add flags and shndxes
9946
        parameters.  Remove contents parameter.  Change caller.  Update
9947
        explicit instantiations.
9948
        * layout.h (class Layout): Update layout_group declaration.
9949
        * output.cc (Output_data_group::Output_data_group): Add flags and
9950
        input_shndxes parameters.  Remove contents parameter.  Change
9951
        caller.
9952
        (Output_data_group::do_write): Change input_sections_ to
9953
        input_shndxes_.
9954
        * output.h (class Output_data_group): Update constructor
9955
        declaration.  Rename input_sections_ to input_shndxes_.
9956
        * testsuite/many_sections_test.cc: Add template.
9957
 
9958
2008-04-30  Cary Coutant  
9959
 
9960
        * target-reloc.h (relocate_section): Fix dead-pointer bug.
9961
 
9962
        * layout.cc (Layout::include_section): Refactored check for debug
9963
        info section.
9964
        (Layout::add_comdat): Add new parameters.  Change type
9965
        of signature parameter.  Add object and shndx to signatures table.
9966
        (Layout::find_kept_object): New function.
9967
        * layout.h: Include .
9968
        (Layout::is_debug_info_section): New function.
9969
        (Layout::add_comdat): Add new parameters.
9970
        (Layout::find_kept_object): New function.
9971
        (Layout::Kept_section): New struct.
9972
        (Layout::Signatures): Change type of map range.
9973
        * object.cc (Relobj::output_section_address): New function.
9974
        (Sized_relobj::include_section_group): Add new parameters.  Change
9975
        calls to Layout::add_comdat.  Change to build table of kept comdat
9976
        groups and table mapping discarded sections to kept sections.
9977
        (Sized_relobj::include_linkonce_section): Likewise.  Add new parameter.
9978
        (Sized_relobj::do_layout): Change calls to include_section_group and
9979
        include_linkonce_section.
9980
        (Sized_relobj::do_finalize_local_symbols): Do not set local symbol
9981
        value to zero when section is discarded.
9982
        (Sized_relobj::map_to_kept_section): New function.
9983
        * object.h (Relobj::output_section_address): New function.
9984
        (Relobj::Comdat_group): New type.
9985
        (Relobj::find_comdat_group): New function.
9986
        (Relobj::Comdat_group_table): New type.
9987
        (Relobj::Kept_comdat_section): New type.
9988
        (Relobj::Kept_comdat_section_table): New type.
9989
        (Relobj::add_comdat_group): New function.
9990
        (Relobj::set_kept_comdat_section): New function.
9991
        (Relobj::get_kept_comdat_section): New function.
9992
        (Relobj::comdat_groups_): New field.
9993
        (Relobj::kept_comdat_sections_): New field.
9994
        (Symbol_value::input_value): Update comment.
9995
        (Sized_relobj::map_to_kept_section) New function.
9996
        (Sized_relobj::include_linkonce_section): Add new parameter.
9997
        * target-reloc.h (Comdat_behavior): New type.
9998
        (get_comdat_behavior): New function.
9999
        (relocate_section): Add code to map a discarded section to the
10000
        corresponding kept section when applying a relocation.
10001
 
10002
2008-04-30  Craig Silverstein  
10003
 
10004
        * dwarf_reader.cc (next_generation_count): New static var.
10005
        (Addr2line_cache_entry): New struct.
10006
        (addr2line_cache): New static var.
10007
        (Dwarf_line_info::one_addr2line): Added caching.
10008
        (Dwarf_line_info::clear_addr2line_cache): New function.
10009
        * dwarf_reader.h (Dwarf_line_info::one_addr2line): Add
10010
        cache-size parameter.
10011
        (Dwarf_line_info::one_addr2line_cache): New function.
10012
        * symtab.cc (Symbol_table::detect_odr_violations): Pass
10013
        new cache-size argument to one_addr2line(), and clear cache.
10014
 
10015
2008-04-28  Cary Coutant  
10016
 
10017
        * i386.cc (Relocate::relocate): Fix typos for R_386_PC16 and
10018
        R_386_PC8 relocations.
10019
 
10020
2008-04-23  Ian Lance Taylor  
10021
 
10022
        * object.cc (Sized_relobj::include_section_group): Check for
10023
        invalid section group.
10024
 
10025
        * object.cc (make_elf_object): Correct test for 64-bit ELF file
10026
        header size.
10027
 
10028
        * readsyms.cc (Read_symbols::do_read_symbols): Use get_view rather
10029
        than read for file header.
10030
        * archive.cc (Archive::include_member): Likewise.
10031
 
10032
2008-04-23  Paolo Bonzini  
10033
 
10034
        * aclocal.m4: Regenerate.
10035
        * configure: Regenerate.
10036
 
10037
2008-04-19  Ian Lance Taylor  
10038
 
10039
        * version.cc (version_string): Bump to 1.6.
10040
 
10041
        * testsuite/Makefile.am (many_sections_r_test): New target.
10042
        (many_sections_r_test_SOURCES): Remove.
10043
        (many_sections_r_test_DEPENDENCIES): Remove.
10044
        (many_sections_r_test_LDFLAGS): Remove.
10045
        (many_sections_r_test_LDADD): Remove.
10046
 
10047
        * object.cc (Sized_relobj::do_add_symbols): Always pass
10048
        local_symbol_count_ to add_from_relobj.
10049
 
10050
        * testsuite/Makefile.am (many_sections_check.h): Only check one in
10051
        every thousand variables.
10052
        * testsuite/Makefile.in: Rebuild.
10053
 
10054
        * object.cc (Xindex::initialize_symtab_xindex): New function.
10055
        (Xindex::read_symtab_xindex): New function.
10056
        (Xindex::sym_xindex_to_shndx): New function.
10057
        (Sized_relobj::find_symtab): Pick up SHT_SYMTAB_SHNDX section if
10058
        available.
10059
        (Sized_relobj::do_initialize_xindex): New function.
10060
        (Sized_relobj::do_read_symbols): Adjust section links.
10061
        (Sized_relobj::symbol_section_and_value): Add is_ordinary
10062
        parameter.  Change all callers.
10063
        (Sized_relobj::include_section_group): Adjust section links and
10064
        symbol section indexes.
10065
        (Sized_relobj::do_layout): Adjust section links.
10066
        (Sized_relobj::do_count_local_symbols): Adjust section links and
10067
        symbol section indexes.
10068
        (Sized_relobj::do_finalize_local_symbols): Distinguish between
10069
        ordinary and special symbols.
10070
        (Sized_relobj::write_local_symbols): Add symtab_xindex and
10071
        dynsym_xindex parameters.  Change all callers.  Adjust section
10072
        links.  Use SHN_XINDEX when needed.
10073
        (Sized_relobj::get_symbol_location_info): Adjust section links.
10074
        Don't get fooled by special symbols.
10075
        * object.h (class Xindex): Define.
10076
        (class Object): Add xindex_ parameter.  Declare virtual functoin
10077
        do_initialize_xindex.
10078
        (Object::adjust_sym_shndx): New function.
10079
        (Object::set_xindex): New protected function.
10080
        (class Symbol_value): Add is_ordinary_shndx_ field.
10081
        (Symbol_value::Symbol_value): Initialize is_ordinary_shndx_.
10082
        (Symbol_value::value): Assert ordinary section.
10083
        (Symbol_value::initialize_input_to_output_map): Likewise.
10084
        (Symbol_value::set_input_shndx): Add is_ordinary parameter.
10085
        Change all callers.
10086
        (Symbol_value::input_shndx): Add is_ordinary parameter.  Change
10087
        all callers.
10088
        (class Sized_relobj): Update declarations.
10089
        (Sized_relobj::local_symbol_input_shndx): Add is_ordinary
10090
        parameter.  Change all callers.
10091
        (Sized_relobj::adjust_shndx): New function.
10092
        * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize dynsym_shndx_
10093
        field.
10094
        (Sized_dynobj::find_dynsym_sections): Remove pdynsym_shndx
10095
        parameter.  Change all callers.  Pick up SHT_DYNSYM_SHNDX section
10096
        for SHT_DYNSYM section if available.  Set dynsym_shndx_ field.
10097
        (Sized_dynobj::read_dynsym_section): Adjust section links.
10098
        (Sized_dynobj::read_dynamic): Likewise.
10099
        (Sized_dynobj::do_read_symbols): Use dynsym_shndx_ field.  Adjust
10100
        section links.
10101
        (Sized_dynobj::do_initialize_xindex): New function.
10102
        * dynobj.h (class Sized_dynobj): Add dynsym_shndx_ field.  Declare
10103
        do_initialize_xindex.
10104
        (Sized_dynobj::adjust_shndx): New function.
10105
        * layout.cc (Layout::Layout): Initialize symtab_xindex_ and
10106
        dynsym_xindex_ fields.
10107
        (Layout::finalize): Add a call to set_section_indexes before
10108
        creating the symtab sections.
10109
        (Layout::set_section_indexes): Don't do anything if the section
10110
        already has a section index.
10111
        (Layout::create_symtab_sections): Add shnum parameter.  Change
10112
        caller.  Create .symtab_shndx section if needed.
10113
        (Layout::create_shdrs): Add shstrtab_section parameter.  Change
10114
        caller.
10115
        (Layout::allocated_output_section_count): New function.
10116
        (Layout::create_dynamic_symtab): Create .dynsym_shndx section if
10117
        needed.
10118
        * layout.h (class Layout): Add symtab_xindex_ and dynsym_xindex_
10119
        fields.  Update declarations.
10120
        (Layout::symtab_xindex): New function.
10121
        (Layout::dynsym_xindex): New function.
10122
        (class Write_symbols_task): Add layout_ field.
10123
        (Write_symbols_task::Write_symbols_task): Add layout parameter.
10124
        Change caller.
10125
        * output.cc (Output_section_headers::Output_section_headers): Add
10126
        shstrtab_section parameter.  Change all callers.
10127
        (Output_section_headers::do_sized_write): Store overflow values
10128
        for section count and section string table section index in
10129
        section header zero.
10130
        (Output_file_header::do_sized_write): Check for overflow of
10131
        section count and section string table section index.
10132
        (Output_symtab_xindex::do_write): New function.
10133
        (Output_symtab_xindex::endian_do_write): New function.
10134
        * output.h (class Output_section_headers): Add shstrtab_section_.
10135
        Update declarations.
10136
        (class Output_symtab_xindex): Define.
10137
        (Output_section::has_out_shndx): New function.
10138
        * symtab.cc (Symbol::init_fields): Initialize is_ordinary_shndx_
10139
        field.
10140
        (Symbol::init_base): Add st_shndx and is_ordinary parameters.
10141
        Change all callers.
10142
        (Sized_symbol::init): Likewise.
10143
        (Symbol::output_section): Check for ordinary symbol.
10144
        (Symbol_table::add_from_object): Remove orig_sym parameter.  Add
10145
        st_shndx, is_ordinary, and orig_st_shndx parameters.  Change all
10146
        callers.
10147
        (Symbol_table::add_from_relobj): Add symndx_offset parameter.
10148
        Change all callers.  Simplify handling of symbols from sections
10149
        not included in the link.
10150
        (Symbol_table::add_from_dynobj): Handle ordinary symbol
10151
        distinction.
10152
        (Weak_alias_sorter::operator()): Assert that symbols are
10153
        ordinary.
10154
        (Symbol_table::sized_finalize_symbol): Handle ordinary symbol
10155
        distinction.
10156
        (Symbol_table::write_globals): Add symtab_xindex and dynsym_xindex
10157
        parameters.  Change all callers.
10158
        (Symbol_table::sized_write_globals): Likewise.  Handle ordinary
10159
        symbol distinction.  Use SHN_XINDEX when needed.
10160
        (Symbol_table::write_section_symbol): Add symtab_xindex
10161
        parameter.  Change all callers.
10162
        (Symbol_table::sized_write_section_symbol): Likewise.  Use
10163
        SHN_XINDEX when needed.
10164
        * symtab.h (class Symbol): Add is_ordinary_shndx_ field.  Update
10165
        declarations.
10166
        (Symbol::shndx): Add is_ordinary parameter.  Change all callers.
10167
        (Symbol::is_defined): Check is_ordinary.
10168
        (Symbol::is_undefined, Symbol::is_weak_undefined): Likewise.
10169
        (Symbol::is_absolute, Symbol::is_common): Likewise.
10170
        (class Sized_symbol): Update declarations.
10171
        (class Symbol_table): Update declarations.
10172
        * resolve.cc (Symbol::override_base): Add st_shndx and is_ordinary
10173
        parameters.  Change all callers.
10174
        (Sized_symbol::override): Likewise.
10175
        (Symbol_table::override): Likewise.
10176
        (symbol_to_bits): Add is_ordinary parameter.  Change all callers.
10177
        (Symbol_table::resolve): Remove orig_sym parameter.  Add st_shndx,
10178
        is_ordinary, and orig_st_shndx parameters.  Change all callers.
10179
        * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Require symbol
10180
        to be in an ordinary section.
10181
        * dwarf_reader.cc (Sized_dwarf_line_info::symbol_section): Add
10182
        object and is_ordinary parameters.  Change all callers.
10183
        (Sized_dwarf_line_info::read_relocs): Add object parameter.
10184
        Change all callers.  Don't add undefined or non-ordinary symbols
10185
        to reloc_map_.
10186
        (Sized_dwarf_line_info::read_line_mappings): Add object parameter.
10187
        Change all callers.
10188
        * dwarf_reader.h (class Sized_dwarf_line_info): Update
10189
        declarations.
10190
        * ehframe.cc (Eh_frame::read_fde): Check for ordinary symbol.
10191
        * reloc.cc (Sized_relobj::do_read_relocs): Adjust section links.
10192
        (Sized_relobj::relocate_sections): Likewise.
10193
        * target-reloc.h (scan_relocs): Adjust section symbol index.
10194
        (scan_relocatable_relocs): Likewise.
10195
        * i386.cc (Scan::local): Check for ordinary symbols.
10196
        * sparc.cc (Scan::local): Likewise.
10197
        * x86_64.cc (Scan::local): Likewise.
10198
        * testsuite/binary_unittest.cc (Sized_binary_test): Update calls
10199
        to symbol_section_and_value.
10200
        * testsuite/many_sections_test.cc: New file.
10201
        * testsuite/Makefile.am (BUILT_SOURCES): Define.
10202
        (check_PROGRAMS): Add many_sections_test.
10203
        (many_sections_test_SOURCES): Define.
10204
        (many_sections_test_DEPENDENCIES): Define.
10205
        (many_sections_test_LDFLAGS): Define.
10206
        (BUILT_SOURCES): Add many_sections_define.h.
10207
        (many_sections_define.h): New target.
10208
        (BUILT_SOURCES): Add many_sections_check.h.
10209
        (many_sections_check.h): New target.
10210
        (check_PROGRAMS): Add many_sections_r_test.
10211
        (many_sections_r_test_SOURCES): Define.
10212
        (many_sections_r_test_DEPENDENCIES): Define.
10213
        (many_sections_r_test_LDFLAGS): Define.
10214
        (many_sections_r_test_LDADD): Define.
10215
        (many_sections_r_test.o): New target.
10216
        * testsuite/Makefile.in: Rebuild.
10217
 
10218
2008-04-17  Cary Coutant  
10219
 
10220
        * errors.cc (Errors::info): New function.
10221
        (gold_info): New function.
10222
        * errors.h (Errors::info): New function.
10223
        * gold.h (gold_info): New function.
10224
        * object.cc (Input_objects::add_object): Print trace output.
10225
        * options.cc (options::parse_set): New function.
10226
        (General_options::parse_wrap): Deleted.
10227
        (General_options::General_options): Deleted initializer.
10228
        * options.h (options::String_set): New typedef.
10229
        (options::parse_set): New function.
10230
        (DEFINE_set): New macro.
10231
        (General_options::wrap): Changed to use DEFINE_set. Changed
10232
        callers of any_wrap_symbols and is_wrap_symbol.
10233
        (General_options::trace, General_options::trace_symbol):
10234
        New options.
10235
        (General_options::any_wrap_symbols, General_options::is_wrap_symbol)
10236
        (General_options::wrap_symbols_): Deleted.
10237
        * symtab.cc (Symbol_table::add_from_object): Print trace output.
10238
 
10239
2008-04-17  David S. Miller  
10240
 
10241
        * options.cc (General_options::parse_V): New function.
10242
        * options.h: Add entries for -V and -Qy.
10243
 
10244
2008-04-17  Ian Lance Taylor  
10245
 
10246
        * common.cc (Symbol_table::allocate_commons): Remove options
10247
        parameter.  Change caller.
10248
        (Symbol_table::do_allocate_commons): Remove options parameter.
10249
        Change caller.  Just call do_allocate_commons_list twice.
10250
        (Symbol_table::do_allocate_commons_list): New function, broken out
10251
        of do_allocate_commons.
10252
        * common.h (class Allocate_commons_task): Remove options_ field.
10253
        Update constructor.
10254
        * symtab.cc (Symbol_table::Symbol_table): Initialize
10255
        tls_commons_.
10256
        (Symbol_table::add_from_object): Put TLS common symbols on
10257
        tls_commons_ list.
10258
        (Symbol_table::sized_finalize_symbol): Handle STT_TLS symbols
10259
        which are IN_OUTPUT_DATA.
10260
        * symtab.h (class Symbol_table): Add tls_commons_ field.  Update
10261
        allocate_commons and do_allocate_commons declarations.  Declare
10262
        do_allocate_commons_list.
10263
        * gold.cc (queue_middle_tasks): Update creation of
10264
        Allocate_commons_task to not pass options.
10265
        * testsuite/Makefile.am (INCLUDES): Add -I.. .
10266
        (TLS_TEST_C_FLAGS): New variable.
10267
        (tls_test_c_pic.o): New target.
10268
        (tls_test_shared.so): Link in tls_test_c_pic.o.
10269
        (tls_test_c_pic_ie.o): New target.
10270
        (tls_test_ie_shared.so): Link in tls_test_c_pic_ie.o.
10271
        (tls_test_DEPENDENCIES, tls_test_LDADD): Add tls_test_c.o.
10272
        (tls_test_c.o): New target.
10273
        (tls_pic_test_DEPENDENCIES): Add tls_test_c_pic.o.
10274
        (tls_pic_test_LDADD): Likewise.
10275
        (tls_shared_gd_to_ie_test_DEPENDENCIES): Add tls_test_c_pic.o.
10276
        (tls_shared_gd_to_ie_test_LDADD): Likewise.
10277
        (tls_test_c_gnu2.o): New target.
10278
        (tls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): Add
10279
        tls_test_c_gnu2.o.
10280
        (tls_shared_gnu2_gd_to_ie_test_LDADD): Likewise.
10281
        (tls_test_gnu2_shared.so): Link in tls_test_c_gnu2.o.
10282
        (tls_test_shared_nonpic.so): Link in tls_test_c.o.
10283
        * testsuite/tls_test.cc: Include "config.h".
10284
        (t_last): Call t11_last.
10285
        * testsuite/tls_test.h (t11, t11_last): Declare.
10286
        * testsuite/tls_test_c.c: New file.
10287
        * testsuite/tls_test_main.cc (thread_routine): Call t11.
10288
        * configure.ac: Check for OpenMP support.
10289
        * configure, config.in, Makefile.in: Rebuild.
10290
        * testsuite/Makefile.in: Rebuild.
10291
 
10292
2008-04-16  Cary Coutant  
10293
 
10294
        * i386.cc (Target_i386::define_tls_base_symbol): New function.
10295
        (Target_i386::tls_base_symbol_defined_): New field.
10296
        (Target_i386::Scan::local): Define _TLS_MODULE_BASE_ symbol.
10297
        (Target_i386::Scan::global): Likewise.
10298
        * symtab.cc (sized_finalize_symbol): Add check for TLS symbol.
10299
        * x86_64.cc (Target_x86_64::define_tls_base_symbol): New function.
10300
        (Target_x86_64::tls_base_symbol_defined_): New field.
10301
        (Target_x86_64::Scan::local): Define _TLS_MODULE_BASE_ symbol.
10302
        (Target_x86_64::Scan::global): Likewise.
10303
 
10304
2008-04-16  Cary Coutant  
10305
 
10306
        * symtab.h (Symbol::is_strong_undefined): Removed unused function.
10307
        (Symbol::needs_plt_entry): Allow weak undefined symbols.
10308
        (Symbol::needs_dynamic_reloc): Allow weak undefined symbols when
10309
        building shared libraries.
10310
        * testsuite/Makefile.am (weak_undef_nonpic_test): New target.
10311
        (weak_undef_file1_nonpic.o, weak_undef_file2_nonpic.o)
10312
        (weak_undef_lib_nonpic.so, alt/weak_undef_lib_nonpic.so): New targets.
10313
        * testsuite/Makefile.in: Rebuild.
10314
        * testsuite/weak_undef.h: New file.
10315
        * testsuite/weak_undef_file1.cc: Add extra test cases.
10316
        * testsuite/weak_undef_file2.cc: Likewise.
10317
        * testsuite/weak_undef_test.cc: Likewise.
10318
 
10319
2008-04-16  David S. Miller  
10320
 
10321
        * sparc.cc (Target_sparc::Scan): Change from struct to class.
10322
        Add issued_non_pic_error_ field.  Declare check_non_pic.
10323
        (Target_sparc::Scan::check_non_pic): New function.
10324
        (Target_sparc::Scan::local): Call check_non_pic as appropriate.
10325
        (Target_sparc::Scan::global): Likewise.
10326
 
10327
        * configure.ac (FN_PTRS_IN_SO_WITHOUT_PIC): Add sparc64.
10328
        * configure: Rebuild.
10329
 
10330
        * options.h (DEFINE_enable): New macro.
10331
        (new_dtags): New enable option.
10332
        (initfirst, interpose, loadfltr, nodefaultlib,
10333
        nodelete, nodlopen, nodump): New -z options.
10334
        * layout.cc (Layout:finish_dynamic_section): If new
10335
        dtags enabled, emit DT_RUNPATH.  Also, emit a
10336
        DT_FLAGS_1 containing any specified -z flags.
10337
 
10338
2008-04-16  Ian Lance Taylor  
10339
 
10340
        * copy-relocs.cc: New file.
10341
        * copy-relocs.h: New file.
10342
        * reloc.cc: Remove Copy_relocs code.
10343
        * reloc.h: Likewise.
10344
        * reloc-types.h (struct Reloc_types) [both versions]: Add
10345
        get_reloc_addend_noerror.
10346
        * output.h (class Output_data_reloc): Add
10347
        variants of add_global which take an addend which must be zero.
10348
        * i386.cc: Include "copy-relocs.h".
10349
        (class Target_i386): Change type of copy_relocs_ to variable,
10350
        update initializer.
10351
        (Target_i386::copy_reloc): Rewrite to pass to Copy_relocs class.
10352
        Change all callers.
10353
        (Target_i386::do_finalize_sections): Change handling of
10354
        copy_relocs_.
10355
        * sparc.cc: Include "copy-relocs.h".
10356
        (class Target_sparc): Change type of copy_relocs_ to variable,
10357
        update initializer.
10358
        (Target_sparc::copy_reloc): Rewrite to pass to Copy_relocs class.
10359
        Change all callers.
10360
        (Target_sparc::do_finalize_sections): Change handling of
10361
        copy_relocs_.
10362
        * x86_64.cc: Include "copy-relocs.h".
10363
        (class Target_x86_64): Change type of copy_relocs_ to variable,
10364
        update initializer.
10365
        (Target_x86_64::copy_reloc): Rewrite to pass to Copy_relocs
10366
        class.  Change all callers.
10367
        (Target_x86_64::do_finalize_sections): Change handling of
10368
        copy_relocs_.
10369
        * Makefile.am (CCFILES): Add copy-relocs.cc.
10370
        (HFILES): Add copy-relocs.h.
10371
 
10372
        * Makefile.in, aclocal.m4, testsuite/Makefile.in: Rebuild.
10373
 
10374
        * testsuite/script_test_4.sh: Permit leading zeroes.
10375
 
10376
2008-04-15  Ian Lance Taylor  
10377
 
10378
        * script-sections.cc (Script_sections::create_segments): Use
10379
        header_size_adjustment even when there is enough room for the
10380
        headers.
10381
        * testsuite/script_test_4.sh: New file.
10382
        * testsuite/script_test_4.t: New file.
10383
        * testsuite/Makefile.am (check_SCRIPTS): Add script_test_4.sh.
10384
        (check_DATA): Add script_test_4.stdout.
10385
        (MOSTLYCLEANFILES): Likewise.
10386
        (script_test_4): New target.
10387
        (script_test_4.stdout): New target.
10388
        * testsuite/Makefile.in: Rebuild.
10389
 
10390
        * sparc.cc: Add definitions for Output_data_plt_sparc class
10391
        constants.
10392
 
10393
2008-04-14  David S. Miller  
10394
 
10395
        * sparc.cc: New file.
10396
        * Makefile.am (TARGETSOURCES): Add sparc.cc
10397
        (ALL_TARGETOBJS): Add sparc.$(OBJEXT)
10398
        * configure.tgt: Document targ_extra_size and
10399
        targ_extra_big_endian.  Add entries for sparc-* and
10400
        sparc64-*.
10401
        * configure.ac: Handle targ_extra_size and
10402
        targ_extra_big_endian.
10403
        * Makefile.in: Rebuild.
10404
        * configure: Likewise.
10405
        * po/POTFILES.in: Likewise.
10406
        * po/gold.pot: Likewise.
10407
 
10408
2008-04-14  Ian Lance Taylor  
10409
 
10410
        * layout.cc (Layout::Layout): Initialize sections_are_attached_.
10411
        (Layout::get_output_section): Ignore SHF_WRITE and SHF_EXECINSTR
10412
        in the name/type/flags to section mapping.  Don't call
10413
        allocate_output_section.
10414
        (Layout::choose_output_section): Change parameter from adjust_name
10415
        to is_input_section.  Don't permit input sections after sections
10416
        are attached to segments.  Don't call allocate_output_section.
10417
        (Layout::layout_eh_frame): Call update_flags_for_input_section,
10418
        not write_enable_output_section.
10419
        (Layout::make_output_section): Don't push to
10420
        unattached_section_list_ nor call attach_to_segment.  Call
10421
        attach_section_to_segment if sections are attached.
10422
        (Layout::attach_sections_to_segments): New function.
10423
        (Layout::attach_section_to_segment): New function.
10424
        (Layout::attach_allocated_section_to_segment): Rename from
10425
        attach_to_segment.  Remove flags parameter.
10426
        (Layout::allocate_output_section): Remove function.
10427
        (Layout::write_enable_output_section): Remove function.
10428
        * layout.h (class Layout): Update for above changes.  Add new
10429
        field sections_are_attached_.
10430
        * output.h (Output_section::update_flags_for_input_section): New
10431
        function.
10432
        * output.cc (Output_section::add_input_section): Call
10433
        update_flags_for_input_section.
10434
        * gold.cc (queue_middle_tasks): Call attach_sections_to_segments.
10435
 
10436
2008-04-11  Cary Coutant  
10437
 
10438
        * i386.cc (Target_i386::got_mod_index_entry): Restore code previously
10439
        thought unnecessary.
10440
        * x86_64.cc (Target_x86_64::got_mod_index_entry): Likewise.
10441
 
10442
2008-04-11  Ian Lance Taylor  
10443
 
10444
        * output.h (class Output_section_data): Remove inline definition
10445
        of set_addralign.
10446
        * output.cc (Output_section_data::set_addralign): New function.
10447
 
10448
2008-04-11  Cary Coutant  
10449
 
10450
        Add support for TLS descriptors for i386 and x86_64.
10451
        * i386.cc (Target_i386::Relocate::tls_desc_gd_to_ie): New function.
10452
        (Target_i386::Relocate::tls_desc_gd_to_le): New function.
10453
        (Target_i386::Got_type): Add GOT_TYPE_TLS_NOFFSET and
10454
        GOT_TYPE_TLS_DESC.
10455
        (Target_i386::got_mod_index_entry): Remove unnecessary code.
10456
        (Target_i386::Scan::local): Implement R_386_TLS_GOTDESC and
10457
        R_386_TLS_DESC_CALL relocations.  Fix problem with initial-exec
10458
        relocations.
10459
        (Target_i386::Scan::global): Fix problem with GD-to-IE relaxation.
10460
        Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations;
10461
        Fix problem with initial-exec relocations.
10462
        (Target_i386::Relocate::relocate_tls): Likewise.
10463
        (Target_i386::Relocate::tls_gd_to_ie): Fix problem with GD-to-IE
10464
        relaxation.
10465
        * output.cc (Output_data_dynamic::Dynamic_entry::write): Add
10466
        support for section-plus-offset dynamic table entries.
10467
        * output.h (Output_data_dynamic::add_section_plus_offset): New function.
10468
        (Output_data_dynamic::Dynamic_entry): Add support for
10469
        section-plus-offset dynamic table entries.
10470
        (Output_data_dynamic::Classification): Likewise.
10471
        (Output_data_dynamic::classification_): Renamed offset_.
10472
        * x86_64.cc (Target_x86_64::Relocate::tls_desc_gd_to_ie): New function.
10473
        (Target_x86_64::Relocate::tls_desc_gd_to_le): New function.
10474
        (Target_x86_64::make_plt_section): New function.
10475
        (Target_x86_64::reserve_tlsdesc_entries): New function.
10476
        (Output_data_plt_x86_64::Output_data_plt_x86_64): Add new parameter.
10477
        (Output_data_plt_x86_64::reserve_tlsdesc_entry): New function.
10478
        (Output_data_plt_x86_64::has_tlsdesc_entry): New function.
10479
        (Output_data_plt_x86_64::get_tlsdesc_got_offset): New function.
10480
        (Output_data_plt_x86_64::get_tlsdesc_plt_offset): New function.
10481
        (Output_data_plt_x86_64::tlsdesc_plt_entry): New field.
10482
        (Output_data_plt_x86_64::set_final_data_size): Move out of line;
10483
        add extra PLT entry for TLS descriptors.
10484
        (Output_data_plt_x86_64::got_): New field.
10485
        (Output_data_plt_x86_64::tlsdesc_got_offset_): New field.
10486
        (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize new
10487
        fields.
10488
        (Output_data_plt_x86_64::do_write): Write extra PLT entry for TLS
10489
        descriptors.
10490
        (Target_x86_64::make_plt_entry): Factor out make_plt_section.
10491
        (Target_x86_64::got_mod_index_entry): Remove unnecessary code.
10492
        (Target_x86_64::Scan::local): Implement R_386_TLS_GOTDESC and
10493
        R_386_TLS_DESC_CALL relocations.
10494
        (Target_x86_64::Scan::global): Likewise.
10495
        (Target_x86_64::do_finalize_sections): Add dynamic table entries
10496
        for TLS descriptors.
10497
        (Relocate::relocate_tls): Fix problem with GD-to-IE relaxation.
10498
        Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations.
10499
        (Target_x86_64::Relocate::tls_gd_to_ie): Fix problem with
10500
        GD-to-IE relaxation.
10501
        * configure.ac: Export new conditional variables TLS_GNU2_DIALECT
10502
        and TLS_DESCRIPTORS.
10503
        * Makefile.in: Rebuild.
10504
        * configure: Rebuild.
10505
        * testsuite/Makefile.am (tls_shared_gd_to_ie_test): New target.
10506
        (tls_test_shared2.so): New target.
10507
        (tls_shared_gd_to_ie_test_SOURCES): New variable.
10508
        (tls_shared_gd_to_ie_test_DEPENDENCIES): New variable.
10509
        (tls_shared_gd_to_ie_test_LDFLAGS): New variable.
10510
        (tls_shared_gd_to_ie_test_LDADD): New variable.
10511
        (tls_shared_gnu2_gd_to_ie_test): New target.
10512
        (tls_test_gnu2.o, tls_test_file2_gnu2.o, tls_test_gnu2_shared2.so):
10513
        New targets.
10514
        (tls_shared_gnu2_gd_to_ie_test_SOURCES): New variable.
10515
        (ls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): New variable.
10516
        (tls_shared_gnu2_gd_to_ie_test_LDFLAGS): New variable.
10517
        (tls_shared_gnu2_gd_to_ie_test_LDADD): New variable.
10518
        (tls_shared_gnu2_test): New target.
10519
        (tls_test_gnu2_shared.so): New target.
10520
        (tls_shared_gnu2_test_SOURCES): New variable.
10521
        (tls_shared_gnu2_test_DEPENDENCIES): New variable.
10522
        (tls_shared_gnu2_test_LDFLAGS): New variable.
10523
        (tls_shared_gnu2_test_LDADD): New variable.
10524
        * testsuite/Makefile.in: Rebuild.
10525
        * testsuite/Makefile.
10526
 
10527
2008-04-11  Ian Lance Taylor  
10528
 
10529
        * testsuite/Makefile.am (justsyms_2r.o): Add dependency on
10530
        justsyms.t.
10531
        * testsuite/Makefile.in: Rebuild.
10532
 
10533
        * testsuite/script_test_2a.cc (script_test_string_a): Make 8 bytes
10534
        long.
10535
        * testsuite/script_test_2.cc (main): Adjust test.
10536
 
10537
2008-04-11  David S. Miller  
10538
            Ian Lance Taylor  
10539
 
10540
        * options.h (General_options): Add entries for '-Y' and
10541
        '-relax'.
10542
        * options.cc (General_options:finalize): If -Y was used, add those
10543
        entries to the library path instead of the default "/lib" and
10544
        "/usr/lib".
10545
 
10546
2008-04-11  David S. Miller  
10547
 
10548
        * testsuite/justsyms.t: Start at 0x100.
10549
        * testsuite/justsyms_1.cc: Adjust justsyms_string assertion.
10550
        * testsuite/script_test_2b.cc (script_test_string_b): Make 8 bytes
10551
        long.
10552
        * testsuite/script_test_2.cc: Adjust string and section length
10553
        checks.
10554
 
10555
2008-04-09  Ian Lance Taylor  
10556
 
10557
        PR gold/5996
10558
        * script-sections.cc (Sections_element::allocate_to_segment): Add
10559
        orphan parameter.
10560
        (Output_section_definition::allocate_to_segment): Likewise.
10561
        (Orphan_output_section::allocate_to_segment): Likewise.
10562
        (Script_sections::attach_sections_using_phdrs_clause): Don't
10563
        propagate non-PT_LOAD segments to orphan sections.
10564
        * testsuite/Makefile.am (script_test_3.stdout): Generate using
10565
        readelf rather than objdump.
10566
        * testsuite/script_test_3.sh: Adjust accordingly.  Test that
10567
        .interp section and PT_INTERP segment are the same size.
10568
        * testsuite/Makefile.in: Rebuild.
10569
 
10570
        * symtab.cc (Symbol_table::add_from_dynobj): Only look for weak
10571
        aliases for symbols defined in the same object.
10572
        * testsuite/Makefile.am (check_PROGRAMS): Add weak_alias_test.
10573
        (weak_alias_test_SOURCES): New variable.
10574
        (weak_alias_test_DEPENDENCIES): New variable.
10575
        (weak_alias_test_LDFLAGS): New variable.
10576
        (weak_alias_test_LDADD): New variable.
10577
        (weak_alias_test_1_pic.o, weak_alias_test_1.so): New targets.
10578
        (weak_alias_test_2_pic.o, weak_alias_test_2.so): New targets.
10579
        (weak_alias_test_3.o): New target.
10580
        (weak_alias_test_4_pic.o, weak_alias_test_4.so): New targets.
10581
        * testsuite/weak_alias_test_main.cc: New file.
10582
        * testsuite/weak_alias_test_1.cc: New file.
10583
        * testsuite/weak_alias_test_2.cc: New file.
10584
        * testsuite/weak_alias_test_3.cc: New file.
10585
 
10586
2008-04-08  Ian Lance Taylor  
10587
 
10588
        * options.h (class General_options): Add --noinhibit-exec option.
10589
        * main.cc (main): Check --noinhibit-exec.
10590
 
10591
        * options.h (class General_options): Define --wrap as a special
10592
        option.  Add wrap_symbols_ field.
10593
        (General_options::any_wrap_symbols): New function.
10594
        (General_options::is_wrap_symbol): New function.
10595
        * options.cc (General_options::parse_wrap): New function.
10596
        (General_options::General_options): Initialize wrap_symbols_.
10597
        * symtab.cc (Symbol_table::wrap_symbol): New function.
10598
        (Symbol_table::add_from_object): Handle --wrap.
10599
        * symtab.h (class Symbol_table): Declare wrap_symbol.
10600
        * target.h (Target::wrap_char): New function.
10601
        (Target::Target_info): Add wrap_char field.
10602
        * i386.cc (Target_i386::i386_info): Initialize wrap_char.
10603
        * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
10604
        * testsuite/testfile.cc (Target_test::test_target_info):
10605
        Likewise.
10606
 
10607
        * errors.cc (Errors::undefined_symbol): Mention symbol version if
10608
        there is one.
10609
 
10610
        * layout.h (class Layout): Add added_eh_frame_data_ field.
10611
        * layout.cc (Layout::Layout): Initialize new field.
10612
        (Layout::layout_eh_frame): Don't add eh_frame_data_ to .eh_frame
10613
        output section until we find a section we merged successfully.
10614
        * object.cc (Sized_relobj::check_eh_frame_flags): Don't require
10615
        that the size be non-zero.
10616
 
10617
        * merge.cc (Object_merge_map::get_output_offset): Remove inline
10618
        qualifier.
10619
 
10620
2008-04-08  Craig Silverstein  
10621
 
10622
        * configure.ac: Export new conditional variable HAVE_ZLIB.
10623
        * testsuite/Makefile.am (flagstest_o_specialfile): Condition
10624
        on HAVE_ZLIB.
10625
        (flagstest_o_specialfile_and_compress_debug_sections): Likewise.
10626
        * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
10627
 
10628
2008-04-07  Ian Lance Taylor  
10629
 
10630
        * version.cc (version_string): Set to "1.5".
10631
 
10632
        * x86_64.cc (Target_x86_64::Scan): Change from struct to class.
10633
        Add issued_non_pic_error_ field.  Declare check_non_pic.
10634
        (Target_x86_64::Scan::check_non_pic): New function.
10635
        (Target_x86_64::Scan::local): Call check_non_pic as appropriate.
10636
        (Target_x86_64::Scan::global): Likewise.
10637
 
10638
        * output.cc (Output_reloc::local_section_offset): Add
10639
        addend parameter.  Change caller.  Handle merge sections.
10640
        (Output_reloc::symbol_value): Change parameter type from
10641
        Address to Addend.  Don't add in the result of
10642
        local_section_offset, pass down the addend and use the returned
10643
        value.
10644
        * output.h (class Output_reloc): Add Addend typedef.
10645
        Update declarations of local_section_offset and symbol_value.
10646
        * testsuite/two_file_test_1.cc (t18): New function.
10647
        * testsuite/two_file_test_2.cc (f18): New function.
10648
        * testsuite/two_file_test_main.cc (main): Call t18.
10649
        * testsuite/two_file_test.h (t18, f18): Declare.
10650
 
10651
        * configure.ac: Don't test for objdump, c++filt, or readelf.
10652
        * testsuite/Makefile.am: Remove READELF and OBJDUMP_AND_CPPFILT
10653
        conditionals.
10654
        (TEST_READELF): New variable.
10655
        (TEST_OBJDUMP, TEST_CXXFILT, TEST_STRIP): New variables.
10656
        (check_PROGRAMS): Add two_file_strip_test.
10657
        (two_file_strip_test): New target.
10658
        (check_PROGRAMS): Add two_file_same_shared_strip_test.
10659
        (two_file_same_shared_strip_test_SOURCES): New variable.
10660
        (two_file_same_shared_strip_test_DEPENDENCIES): New variable.
10661
        (two_file_same_shared_strip_test_LDFLAGS): New variable.
10662
        (two_file_same_shared_strip_test_LDADD): New variable.
10663
        (two_file_shared_strip.so): New target.
10664
        (ver_test_2.syms, ver_test_4.syms): Use TEST_READELF.
10665
        (ver_test_5.syms, ver_test_7.syms): Likewise.
10666
        (ver_matching_test.stdout): Use TEST_OBJDUMP and TEST_CXXFILT.
10667
        (strip_test_3.stdout): Use TEST_OBJDUMP.
10668
        * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
10669
 
10670
2008-04-04  Cary Coutant  
10671
 
10672
        * symtab.h (Symbol::is_weak_undefined): New function.
10673
        (Symbol::is_strong_undefined): New function.
10674
        (Symbol::is_absolute): New function.
10675
        (Symbol::needs_plt_entry): Exclude weak undefined symbols.
10676
        (Symbol::needs_dynamic_reloc): Exclude weak undefined and
10677
        absolute symbols.
10678
        * testsuite/Makefile.am (check_PROGRAMS): Add weak_undef_test.
10679
        (weak_undef_test): New target.
10680
        * testsuite/Makefile.in: Rebuild.
10681
        * testsuite/weak_undef_file1.cc: New file.
10682
        * testsuite/weak_undef_file2.cc: New file.
10683
        * testsuite/weak_undef_test.cc: New file.
10684
 
10685
2008-04-03  Craig Silverstein  
10686
 
10687
        * compressed_output.h (class Output_compressed_section): Use
10688
        unsigned buffer.
10689
        * compressed_output.cc (zlib_compress): Use unsigned buffers,
10690
        add zlib header.
10691
        (zlib_compressed_suffix): Removed.
10692
        (Output_compressed_section::set_final_data_size): Use unsigned
10693
        buffers.
10694
        * testsuite/Makefile.am (flagstest_compress_debug_sections):
10695
        Fix linker invocation.
10696
        (flagstest_o_specialfile_and_compress_debug_sections):
10697
        Likewise.
10698
        * testsuite/Makefile.in: Regenerated.
10699
 
10700
2008-04-02  David S. Miller  
10701
 
10702
        *  dwarf_reader.cc (Sized_dwarf_line_info::read_header_prolog,
10703
        Sized_dwarf_line_info::process_one_opcode): Use Swap_unaligned.
10704
 
10705
2008-04-02  Craig Silverstein  
10706
 
10707
        * TODO: New file.
10708
 
10709
2008-04-02  Ian Lance Taylor  
10710
 
10711
        * fileread.cc (File_read::find_view): Add byteshift and vshifted
10712
        parameters.  Update for new key type to views_.  Change all
10713
        callers.
10714
        (File_read::read): Adjust for byteshift in returned view.
10715
        (File_read::add_view): New function, broken out of
10716
        find_and_make_view.
10717
        (File_read::make_view): New function, broken out of
10718
        find_and_make_view.
10719
        (File_read::find_or_make_view): Add offset and aligned
10720
        parameters.  Rewrite accordingly.  Change all callers.
10721
        (File_read::get_view): Add offset and aligned parameters.  Adjust
10722
        for byteshift in return value.
10723
        (File_read::get_lasting_view): Likewise.
10724
        * fileread.h (class File_read): Update declarations.
10725
        (class File_read::View): Add byteshift_ field.  Add byteshift to
10726
        constructor.  Add byteshift method.
10727
        * archive.h (Archive::clear_uncached_views): New function.
10728
        (Archive::get_view): Add aligned parameter.  Change all callers.
10729
        * object.h (Object::get_view): Add aligned parameter.  Change all
10730
        callers.
10731
        (Object::get_lasting_view): Likewise.
10732
 
10733
        * fileread.cc (File_read::release): Don't call clear_views if
10734
        there are multiple objects.
10735
        * fileread.h (File_read::clear_uncached_views): New function.
10736
        * archive.cc (Add_archive_symbols::run): Call clear_uncached_views
10737
        on the archive.
10738
 
10739
2008-03-31  Cary Coutant  
10740
 
10741
        Add thin archive support.
10742
        * archive.cc (Archive::armagt): New const.
10743
        (Archive::setup): Remove task parameter and calls to unlock.
10744
        (Archive::unlock_nested_archives): New function.
10745
        (Archive::read_header): Add nested_off parameter. Change
10746
        all callers.
10747
        (Archive::interpret_header): Likewise.
10748
        (Archive::include_all_members): Change to handle thin
10749
        archives.
10750
        (Archive::include_member): Likewise.
10751
        * archive.h (Archive::Archive): Add new parameters and
10752
        initializers.
10753
        (Archive::armagt): New const.
10754
        (Archive::setup): Remove task parameter.
10755
        (Archive::unlock_nested_archives): New function.
10756
        (Archive::read_header): Add nested_off parameter.
10757
        (Archive::interpret_header): Likewise.
10758
        (Archive::Nested_archive_table): New typedef.
10759
        (Archive::is_thin_archive_): New field.
10760
        (Archive::nested_archives_): New field.
10761
        (Archive::options_): New field.
10762
        (Archive::dirpath_): New field.
10763
        (Archive::task_): New field.
10764
        * readsyms.cc (Read_symbols::do_read_symbols): Add check
10765
        for thin archives.  Pass additional parameters to
10766
        Archive::Archive.  Unlock the archive file after calling
10767
        Archive::setup.
10768
 
10769
2008-03-29  Ian Lance Taylor  
10770
 
10771
        * symtab.cc (Symbol_table::do_define_as_constant): Don't force a
10772
        version symbol to be local.
10773
        * testsuite/ver_test_4.sh: New file.
10774
        * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_4.sh.
10775
        (check_DATA): Add ver_test_4.syms.
10776
        (ver_test_4.syms): New target.
10777
        * testsuite/Makefile.in: Rebuild.
10778
 
10779
        * output.cc
10780
        (Output_section::Input_section_sort_entry::has_priority): New
10781
        function.
10782
        (Output_section::Input_section_sort_entry::match_file_name): New
10783
        function.
10784
        (Output_section::Input_section_sort_entry::match_section_name):
10785
        Remove.
10786
        (Output_section::Input_section_sort_entry::match_section_name_prefix):
10787
        Remove.
10788
        (Output_section::Input_section_sort_entry::match_section_file):
10789
        Remove.
10790
        (Output_section::Input_section_sort_compare::operator()): Rewrite
10791
        using new Input_section_sort_entry functions.  Sort crtbegin and
10792
        crtend first.  Sort sections with no priority before sections with
10793
        a priority.
10794
        * testsuite/initpri1.c (d3): Check j != 4.
10795
        (cd5): New constructor/destructor function.
10796
        (main): Check j != 2.
10797
 
10798
        * symtab.cc (Symbol_table::add_from_object): If we don't use the
10799
        new symbol when resolving, don't call set_is_default.
10800
        * testsuite/ver_test_7.cc: New file.
10801
        * testsuite/ver_test_7.sh: New file.
10802
        * testsuite/Makefile.am (ver_test_7.so): New target.
10803
        (ver_test_7.o): New target.
10804
        (check_SCRIPTS): Add ver_test_7.sh.
10805
        (check_DATA): Add ver_test_7.syms.
10806
        (ver_test_7.syms): New target.
10807
 
10808
2008-03-28  Ian Lance Taylor  
10809
 
10810
        * layout.cc (Layout::layout): If we see an input section with a
10811
        name that needs sorting, set the must_sort flag for the output
10812
        section.
10813
        (Layout::make_output_section): If the name of the output section
10814
        indicates that it might require sorting, set the may_sort flag.
10815
        * output.h (Output_section::may_sort_attached_input_sections): New
10816
        function.
10817
        (Output_section::set_may_sort_attached_input_sections): New
10818
        function.
10819
        (Output_section::must_sort_attached_input_sections): New
10820
        function.
10821
        (Output_section::set_must_sort_attached_input_sections): New
10822
        function.
10823
        (class Output_section): Declare Input_section_sort_entry.  Define
10824
        Input_section_sort_compare.  Declare
10825
        sort_attached_input_sections.  Add new fields:
10826
        may_sort_attached_input_sections_,
10827
        must_sort_attached_input_sections_,
10828
        attached_input_sections_are_sorted_.
10829
        * output.cc (Output_section::Output_section): Initialize new
10830
        fields.
10831
        (Output_section::add_input_section): Add an entry to
10832
        input_sections_ if may_sort or must_sort are true.
10833
        (Output_section::set_final_data_size): Call
10834
        sort_attached_input_sections if necessary.
10835
        (Output_section::Input_section_sort_entry): Define new class.
10836
        (Output_section::Input_section_sort_compare::operator()): New
10837
        function.
10838
        (Output_section::sort_attached_input_sections): New function.
10839
        * configure.ac: Check whether the compiler supports constructor
10840
        priorities.  Define a CONSTRUCTOR_PRIORITY automake conditional.
10841
        * testsuite/initpri1.c: New file.
10842
        * testsuite/Makefile.am (check_PROGRAMS): Add initpri1 if
10843
        CONSTRUCTOR_PRIORITY.
10844
        (initpri1_SOURCES, initpri1_DEPENDENCIES): New variables.
10845
        (initpri1_LDFLAGS): New variable.
10846
        * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
10847
 
10848
2008-03-27  Ian Lance Taylor  
10849
 
10850
        * common.cc (Sort_commons::operator): Correct sorting algorithm.
10851
        * testsuite/common_test_1.c: New file.
10852
        * testsuite/Makefile.am (check_PROGRAMS): Add common_test_1.
10853
        (common_test_1_SOURCES): New variable.
10854
        (common_test_1_DEPENDENCIES): New variable.
10855
        (common_test_1_LDFLAGS): New variable.
10856
 
10857
        * symtab.cc (Symbol_table::add_from_object): Handle saw_undefined_
10858
        and commons_ correctly when NAME/VERSION does not override
10859
        NAME/NULL.
10860
        * testsuite/ver_test_6.c: New file.
10861
        * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_6
10862
        (ver_test_6_SOURCES, ver_test_6_DEPENDENCIES): New variables.
10863
        (ver_test_6_LDFLAGS, ver_test_6_LDADD): New variables.
10864
 
10865
2008-03-26  Ian Lance Taylor  
10866
 
10867
        * symtab.cc (Symbol_table::add_from_relobj): Don't set the version
10868
        of an undefined symbol from a version script.
10869
        * testsuite/Makefile.am (ver_test_5.so): New target.
10870
        (ver_test_5.o): New target.
10871
        (check_SCRIPTS): Add ver_test_5.sh.
10872
        (check_DATA): Add ver_test_5.syms.
10873
        (ver_test_5.syms): New target.
10874
        * testsuite/ver_test_5.cc: New file.
10875
        * testsuite/ver_test_5.script: New file.
10876
        * testsuite/ver_test_5.sh: New file.
10877
        * Makefile.in, testsuite/Makefile.in: Rebuild.
10878
 
10879
        PR gold/5986
10880
        Fix problems building gold with gcc 4.3.0.
10881
        * gold.h (TEMPLATE_ATTRIBUTE_PRINTF_4): Define.
10882
        (gold_error_at_location, gold_warning_at_location): Use it.
10883
        * configure.ac: Check whether we can compile and use a template
10884
        function with a printf attribute.
10885
        * x86_64.cc (Target_x86_64::do_code_fill): Swap out a 32-bit value
10886
        when jumping over bytes.
10887
        * object.cc: Instantiate Object::read_section_data.
10888
        * debug.h: Include 
10889
        * dwarf_reader.cc: Include 
10890
        * main.cc: Include .
10891
        * options.cc: Include .
10892
        * output.cc: Include .
10893
        * script.cc: Include .
10894
        * script.h: Include .
10895
        * symtab.cc: Include  and .
10896
        * target-select.cc: Include .
10897
        * version.cc: Include .
10898
        * testsuite/testmain.cc: Include .
10899
        * configure, config.in: Rebuild.
10900
 
10901
2008-03-25  Ian Lance Taylor  
10902
 
10903
        * options.cc: Include "../bfd/bfdver.h".
10904
        (options::help): Print bug reporting address.
10905
 
10906
        * version.cc (print_version): Adjust output for current value of
10907
        BFD_VERSION_STRING.
10908
 
10909
        * NEWS: New file.
10910
 
10911
        * options.cc (options::help): Print list of supported targets.
10912
        * target-select.h: Include .
10913
        (class Target_selector): Make machine_, size_, and is_big_endian_
10914
        fields const.  Add bfd_name_ and instantiated_target_ fields.
10915
        (Target_selector::Target_selector): Add bfd_name parameter.
10916
        (Target_selector::recognize): Make non-virtual, call
10917
        do_recognize.
10918
        (Target_selector::recognize_by_name): Make non-virtual, call
10919
        do_recognize_by_name.
10920
        (Target_selector::supported_names): New function.
10921
        (Target_selector::bfd_name): New function.
10922
        (Target_selector::do_instantiate_target): New pure virtual
10923
        function.
10924
        (Target_selector::do_recognize): New virtual function.
10925
        (Target_selector::do_recognize_by_name): New virtual function.
10926
        (Target_selector::instantiate_target): New private function.
10927
        (supported_target_names): Declare.
10928
        * target-select.cc (Target_selector::Target_selector): Update for
10929
        new parameter and fields.
10930
        (select_target_by_name): Check that the name matches before
10931
        calling recognize_by_name.
10932
        (supported_target_names): New function.
10933
        * i386.cc (class Target_selector_i386): Update Target_selector
10934
        constructor call.  Remove recognize and recognize_by_name.  Add
10935
        do_instantiate_target.
10936
        * x86_64.cc (class Target_selector_x86_64): Likewise.
10937
        * testsuite/testfile.cc (class Target_selector_test): Update for
10938
        changes to Target_selector.
10939
 
10940
        * README: Rewrite, with some notes on unsupported features.
10941
 
10942
2008-03-24  Cary Coutant  
10943
 
10944
        * i386.cc (Target_i386::Got_type): New enum declaration.
10945
        (Target_i386::Scan::local): Updated callers of Output_data_got
10946
        member functions.
10947
        (Target_i386::Scan::global): Likewise.
10948
        (Target_i386::Relocate::relocate): Likewise.
10949
        (Target_i386::Relocate::relocate_tls): Likewise.
10950
        * object.h (Got_offset_list): New class.
10951
        (Sized_relobj::local_has_got_offset): Added got_type parameter.
10952
        (Sized_relobj::local_got_offset): Likewise.
10953
        (Sized_relobj::set_local_got_offset): Likewise.
10954
        (Sized_relobj::local_has_tls_got_offset): Removed.
10955
        (Sized_relobj::local_tls_got_offset): Removed.
10956
        (Sized_relobj::set_local_tls_got_offset): Removed.
10957
        (Sized_relobj::Local_got_offsets): Changed to store a list of offsets.
10958
        * output.cc (Output_data_got::add_global): Added got_type parameter.
10959
        (Output_data_got::add_global_with_rel): Likewise.
10960
        (Output_data_got::add_global_with_rela): Likewise.
10961
        (Output_data_got::add_global_pair_with_rel): New function.
10962
        (Output_data_got::add_global_pair_with_rela): New function.
10963
        (Output_data_got::add_local): Added got_type parameter.
10964
        (Output_data_got::add_local_with_rel): Likewise.
10965
        (Output_data_got::add_local_with_rela): Likewise.
10966
        (Output_data_got::add_local_pair_with_rel): New function.
10967
        (Output_data_got::add_local_pair_with_rela): New function.
10968
        (Output_data_got::add_global_tls): Removed.
10969
        (Output_data_got::add_global_tls_with_rel): Removed.
10970
        (Output_data_got::add_global_tls_with_rela): Removed.
10971
        (Output_data_got::add_local_tls): Removed.
10972
        (Output_data_got::add_local_tls_with_rel): Removed.
10973
        (Output_data_got::add_local_tls_with_rela): Removed.
10974
        * output.h (Output_data_got::add_global): Added got_type parameter.
10975
        (Output_data_got::add_global_with_rel): Likewise.
10976
        (Output_data_got::add_global_with_rela): Likewise.
10977
        (Output_data_got::add_global_pair_with_rel): New function.
10978
        (Output_data_got::add_global_pair_with_rela): New function.
10979
        (Output_data_got::add_local): Added got_type parameter.
10980
        (Output_data_got::add_local_with_rel): Likewise.
10981
        (Output_data_got::add_local_with_rela): Likewise.
10982
        (Output_data_got::add_local_pair_with_rel): New function.
10983
        (Output_data_got::add_local_pair_with_rela): New function.
10984
        (Output_data_got::add_global_tls): Removed.
10985
        (Output_data_got::add_global_tls_with_rel): Removed.
10986
        (Output_data_got::add_global_tls_with_rela): Removed.
10987
        (Output_data_got::add_local_tls): Removed.
10988
        (Output_data_got::add_local_tls_with_rel): Removed.
10989
        (Output_data_got::add_local_tls_with_rela): Removed.
10990
        * resolve.cc (Symbol::override_base_with_special): Removed
10991
        reference to has_got_offset_ field.
10992
        * symtab.cc (Symbol::init_fields): Replaced initialization
10993
        of got_offset_ with got_offsets_.  Removed initialization
10994
        of has_got_offset_
10995
        * symtab.h (Symbol::has_got_offset): Aded got_type parameter.
10996
        (Symbol::got_offset): Likewise.
10997
        (Symbol::set_got_offset): Likewise.
10998
        (Symbol::has_tls_got_offset): Removed.
10999
        (Symbol::tls_got_offset): Removed.
11000
        (Symbol::set_tls_got_offset): Removed.
11001
        (Symbol::got_offset_): Removed.
11002
        (Symbol::tls_mod_got_offset_): Removed.
11003
        (Symbol::tls_pair_got_offset_): Removed.
11004
        (Symbol::got_offsets_): New field.
11005
        (Symbol::has_got_offset): Removed.
11006
        (Symbol::has_tls_mod_got_offset): Removed.
11007
        (Symbol::has_tls_pair_got_offset): Removed.
11008
        * x86_64.cc (Target_x86_64::Got_type): New enum declaration.
11009
        (Target_x86_64::Scan::local): Updated callers of Output_data_got
11010
        member functions.
11011
        (Target_x86_64::Scan::global): Likewise.
11012
        (Target_x86_64::Relocate::relocate): Likewise.
11013
        (Target_x86_64::Relocate::relocate_tls): Likewise.
11014
 
11015
2008-03-25  Ben Elliston  
11016
 
11017
        * yyscript.y: Fix spelling error in comment.
11018
 
11019
2008-03-24  Ian Lance Taylor  
11020
 
11021
        * options.h (class General_options): Define build_id option.
11022
        * layout.h (class Layout): Declare write_build_id, create_note,
11023
        create_build_id.  Add build_id_note_ member.
11024
        * layout.cc: Include , , ,
11025
        "libiberty.h", "md5.h", "sha1.h".
11026
        (Layout::Layout): Initialize eh_frame_data_,
11027
        eh_frame_hdr_section_, and build_id_note_.
11028
        (Layout::finalize): Call create_build_id.
11029
        (Layout::create_note): New function, broken out of
11030
        Layout::create_gold_note.
11031
        (Layout::create_gold_note): Call create_note.
11032
        (Layout::create_build_id): New function.
11033
        (Layout::write_build_id): New function.
11034
        (Close_task_runner::run): Call write_build_id.
11035
 
11036
        * x86_64.cc: Correct license to GPLv3.
11037
 
11038
2008-03-23  Ian Lance Taylor  
11039
 
11040
        * options.cc: Include "demangle.h".
11041
        (parse_optional_string): New function.
11042
        (parse_long_option): Handle takes_optional_argument.
11043
        (parse_short_option): Update dash_z initializer.  Handle
11044
        takes_optional_argument.
11045
        (General_options::General_options): Initialize do_demangle_.
11046
        (General_options::finalize): Set do_demangle_.  Handle demangling
11047
        style.
11048
        * options.h (parse_optional_string): Declare.
11049
        (struct One_option): Add optional_arg field.  Update constructor.
11050
        Update call constructor calls.  Add takes_optional_argument
11051
        function.
11052
        (DEFINE_var): Add optional_arg__ parameter.  Change all callers.
11053
        (DEFINE_optional_string): Define.
11054
        (General_options::demangle): Change from DEFINE_bool to
11055
        DEFINE_optional_string.
11056
        (General_options::no_demangle): New function.
11057
        (General_options::do_demangle): New function.
11058
        (General_options::set_do_demangle): New function.
11059
        (General_options::execstack_status_): Move definition to end of
11060
        class definition.
11061
        (General_options::static_): Likewise.
11062
        (General_options::do_demangle_): New field.
11063
        * object.cc (big_endian>::get_symbol_location_info): Call
11064
        Options::do_demangle, not Options::demangle.
11065
        * symtab.cc (demangle): Likewise.
11066
 
11067
2008-03-22  Ian Lance Taylor  
11068
 
11069
        * gold.h: Include  and 
11070
        * options.h: Include .
11071
 
11072
2008-03-21  Ian Lance Taylor  
11073
 
11074
        * Added source code to GNU binutils.

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.