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 45

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

Line No. Rev Author Line
1 27 khays
2011-06-02  Cary Coutant  
2
 
3
        PR gold/12163
4
        * gold/archive.cc (Archive::Archive): Initialize new data member.
5
        (Archive::include_all_members): Return if archive has already been
6
        included.
7
        * gold/archive.h (Archive::include_all_members_): New data member.
8
 
9
2011-06-02  Nick Clifton  
10
 
11
        * dynobj.h: Fix spelling mistake in comment.
12
        * output.cc: Likewise.
13
 
14
2011-05-31  Doug Kwan  
15
            Asier Llano
16
 
17
        PR gold/12826
18
        * arm.cc (Target_arm::tag_cpu_arch_combine): Fix handling of
19
        arch value that equals to elfcpp::MAX_TAG_CPU_ARCH.
20
        * testsuite/Makefile.am: (MOSTLYCLEANFILES): Clean up.  Remove
21
        redundant arm_exidx_test.so.
22
        * testsuite/Makefile.in: Regenerate.
23
        (check_SCRIPTS): Add pr12826.sh
24
        (check_DATA): Add pr12826.stdout
25
        (pr12826.stdout, pr12826.so, pr12826_1.o, pr12826_2.o): New rules.
26
        * testsuite/pr12826.sh: New file.
27
        * testsuite/pr12826_1.s: Ditto.
28
        * testsuite/pr12826_1.s: Ditto.
29
 
30
2011-05-30  Ian Lance Taylor  
31
 
32
        * reloc.cc (Sized_relobj_file::do_read_relocs): Ignore empty reloc
33
        sections.
34
 
35
2011-05-29  Ian Lance Taylor  
36
 
37
        PR gold/12804
38
        * testsuite/Makefile.am: Use different file name for two_file_test
39
        temporary file for each incremental test.
40
        * testsuite/Makefile.in: Rebuild.
41
 
42
2011-05-29  Ian Lance Taylor  
43
 
44
        * binary.cc (Binary_to_elf::sized_convert): Don't crash if the
45
        binary input file is empty.
46
 
47
2011-05-27  Ian Lance Taylor  
48
 
49
        * testsuite/Makefile.am (ver_test_2.so): Use -Wl,-R,.
50
        (ver_test_9.so): Likewise.
51
        * testsuite/Makefile.in: Rebuild.
52
 
53
2011-05-26 Cary Coutant  
54
 
55
        * incremental-dump.cc (dump_incremental_inputs): Print COMDAT groups.
56
        * incremental.cc (Incremental_inputs::report_input_section): Fix
57
        comment, indentation.
58
        (Incremental_inputs::report_comdat_group): New function.
59
        (Output_section_incremental_inputs::set_final_data_size): Adjust size
60
        of data for incremental input file entry.
61
        (Output_section_incremental_inputs::write_info_blocks): Write COMDAT
62
        group count, COMDAT group signatures.
63
        (Sized_incr_relobj::do_layout): Record kept COMDAT group info from
64
        an unchanged input file.
65
        * incremental.h (Incremental_object_entry::Incremental_object_entry):
66
        Initialize new data member.
67
        (Incremental_object_entry::add_comdat_group): New function.
68
        (Incremental_object_entry::get_comdat_group_count): New function.
69
        (Incremental_object_entry::get_comdat_signature_key): New function.
70
        (Incremental_object_entry::groups_): New data member.
71
        (Incremental_inputs::report_comdat_group): New function.
72
        (Incremental_input_entry_reader::get_symbol_offset): Adjust size of
73
        data for incremental input file entry.
74
        (Incremental_input_entry_reader::get_comdat_group_count): New function.
75
        (Incremental_input_entry_reader::get_input_section): Adjust size of
76
        data for incremental input file entry.
77
        (Incremental_input_entry_reader::get_global_symbol_reader): Likewise.
78
        (Incremental_input_entry_reader::get_comdat_group_signature): New
79
        function.
80
        * object.cc (Sized_relobj::include_section_group): Report kept
81
        COMDAT groups for incremental links.
82
 
83
2011-05-24  David Meyer  
84
 
85
        * dirsearch.cc (Dirsearch::find): Replace n1 and n2 parameters
86
        with name parameter.  Add found_name parameter.
87
        * fileread.cc (Input_file::find_file): Adjust code accordingly.
88
        * dirsearch.h (class Dirsearch): Update declaration.
89
 
90
2011-05-24  Ian Lance Taylor  
91
 
92
        * archive.cc (Library_base::should_include_member): Pull in object
93
        from archive if it defines the entry symbol.
94
        * parameters.cc (Parameters::entry): New function.
95
        * parameters.h (class Parameters): Declare entry.
96
        * output.h (class Output_file_header): Remove entry_ field.
97
        * output.cc (Output_file_header::Output_file_header): Remove entry
98
        parameter.  Change all callers.
99
        (Output_file_header::entry): Use parameters->entry.
100
        * gold.cc (queue_middle_tasks): Likewise.
101
        * plugin.cc (Plugin_hook::run): Likewise.
102
 
103
2011-05-24 Cary Coutant  
104
 
105
        * gold.cc (queue_initial_tasks): Pass incremental base filename
106
        to Output_file::open_base_file; don't print error message.
107
        * incremental-dump.cc (main): Adjust call to
108
        Output_file::open_for_modification.
109
        * incremental-dump.cc (main): Likewise.
110
        * incremental.cc (Incremental_inputs::report_command_line):
111
        Ignore --incremental-base option when comparing command lines.
112
        Ignore parameter when given as separate argument.
113
        * options.h (class General_options): Add --incremental-base.
114
        * output.cc (Output_file::Output_file):
115
        (Output_file::open_base_file): Add base_name and writable parameters;
116
        read base file into new file; print error message here.
117
        (Output_file::map_no_anonymous): Add writable parameter; adjust all
118
        callers.
119
        * output.h (Output_file::open_for_modification): Rename to...
120
        (Output_file::open_base_file): ...this; add base_name and
121
        writable parameters; adjust all callers.
122
        (Output_file::map_no_anonymous): Add writable parameter; adjust all
123
        callers.
124
        * testsuite/Makefile.am (incremental_test_4): Test
125
        --incremental-base.
126
        * testsuite/Makefile.in: Regenerate.
127
 
128
2011-05-24 Cary Coutant  
129
 
130
        * testsuite/Makefile.am: Add incremental_test_2, incremental_test_3,
131
        incremental_test_4.
132
        * testsuite/Makefile.in: Regenerate.
133
        * testsuite/two_file_test_1_v1.cc: New test source file.
134
        * testsuite/two_file_test_1b_v1.cc: New test source file.
135
        * testsuite/two_file_test_2_v1.cc: New test source file.
136
 
137
2011-05-24 Cary Coutant  
138
 
139
        * dynobj.h (Dynobj::do_dynobj): New function.
140
        * incremental-dump.cc (dump_incremental_inputs): Print as_needed
141
        flag and soname for shared objects.
142
        * incremental.cc (Incremental_inputs::report_object): Make
143
        either Incremental_object_entry or Incremental_dynobj_entry; add
144
        soname to string table.
145
        (Incremental_inputs::report_input_section): Add assertion.
146
        (Output_section_incremental_inputs::set_final_data_size): Adjust
147
        type of input file entry for shared libraries; adjust size of
148
        shared library info entry.
149
        (Output_section_incremental_inputs::write_input_files): Write
150
        as_needed flag for shared libraries.
151
        (Output_section_incremental_inputs::write_info_blocks): Adjust type
152
        of input file entry for shared libraries; write soname.
153
        (Sized_incr_dynobj::Sized_incr_dynobj): Read as_needed flag and
154
        soname from incremental info.
155
        * incremental.h (enum Incremental_input_flags): Add
156
        INCREMENTAL_INPUT_AS_NEEDED.
157
        (Incremental_input_entry::Incremental_input_entry): Initialize new
158
        data member.
159
        (Incremental_input_entry::set_as_needed): New function.
160
        (Incremental_input_entry::as_needed): New function.
161
        (Incremental_input_entry::do_dynobj_entry): New function.
162
        (Incremental_input_entry::as_needed_): New data member.
163
        (Incremental_object_entry::Incremental_object_entry): Don't check
164
        for shared library.
165
        (Incremental_object_entry::do_type): Likewise.
166
        (class Incremental_dynobj_entry): New class.
167
        (Incremental_input_entry_reader::as_needed): New function.
168
        (Incremental_input_entry_reader::get_soname): New function.
169
        (Incremental_input_entry_reader::get_global_symbol_count): Rewrite.
170
        (Incremental_input_entry_reader::get_output_symbol_index): Adjust
171
        size of shared library info entry.
172
        * layout.cc (Layout::finish_dynamic_section): Don't test for
173
        incremental link when adding DT_NEEDED entries.
174
        * object.h (Object::Object): Initialize new data member.
175
        (Object::dynobj): New function.
176
        (Object::set_as_needed): New function.
177
        (Object::as_needed): New function.
178
        (Object::do_dynobj): New function.
179
        (Object::as_needed_): New data member.
180
 
181
2011-05-24 Cary Coutant  
182
 
183
        * incremental-dump.cc (dump_incremental_inputs): Print dynamic reloc
184
        info; adjust display of GOT entries.
185
        * incremental.cc (Sized_incremental_binary::setup_readers): Allocate
186
        vector of input objects; remove file_status_.
187
        (Sized_incremental_binary::do_reserve_layout): Remove file_status_.
188
        (Sized_incremental_binary::do_process_got_plt): Adjust calls to
189
        got_plt reader; call target hooks to reserve GOT entries.
190
        (Output_section_incremental_inputs::set_final_data_size): Adjust size
191
        of input file info header and GOT info entry.
192
        (Output_section_incremental_inputs::write_info_blocks): Write dynamic
193
        relocation info.
194
        (Got_plt_view_info::got_descriptor): Remove.
195
        (Got_plt_view_info::sym_index): New data member.
196
        (Got_plt_view_info::input_index): New data member.
197
        (Local_got_offset_visitor::visit): Write input file index.
198
        (Global_got_offset_visitor::visit): Write 0 for input file index.
199
        (Global_symbol_visitor_got_plt::operator()): Replace got_descriptor
200
        with sym_index and input_index.
201
        (Output_section_incremental_inputs::write_got_plt): Adjust size of
202
        incremental info GOT entry; replace got_descriptor with input_index.
203
        (Sized_relobj_incr::Sized_relobj_incr): Adjust initializers; record
204
        map from input file index to object.
205
        (Sized_relobj_incr::do_layout): Replace direct data member reference
206
        with accessor function.
207
        (Sized_relobj_incr::do_for_all_local_got_entries): Move to base class.
208
        * incremental.h (Incremental_input_entry_reader::get_symbol_offset):
209
        Adjust size of input file info header.
210
        (Incremental_input_entry_reader::get_first_dyn_reloc): New function.
211
        (Incremental_input_entry_reader::get_dyn_reloc_count): New function.
212
        (Incremental_input_entry_reader::get_input_section): Adjust size of
213
        input file info header.
214
        (Incremental_got_plt_reader::Incremental_got_plt_reader): Adjust size
215
        of incremental info GOT entry.
216
        (Incremental_got_plt_reader::get_got_desc): Remove.
217
        (Incremental_got_plt_reader::get_got_symndx): New function.
218
        (Incremental_got_plt_reader::get_got_input_index): New function.
219
        (Sized_incremental_binary::Sized_incremental_binary): Remove
220
        file_status_; add input_objects_.
221
        (Sized_incremental_binary::~Sized_incremental_binary): Remove.
222
        (Sized_incremental_binary::set_file_is_unchanged): Remove.
223
        (Sized_incremental_binary::file_is_unchanged): Remove.
224
        (Sized_incremental_binary::set_input_object): New function.
225
        (Sized_incremental_binary::input_object): New function.
226
        (Sized_incremental_binary::file_status_): Remove.
227
        (Sized_incremental_binary::input_objects_): New data member.
228
        (Sized_relobj_incr): Rename Sized_incr_relobj to this; adjust all
229
        references.
230
        (Sized_relobj_incr::invalid_address): Move to base class.
231
        (Sized_relobj_incr::is_output_section_offset_invalid): Move to base
232
        class.
233
        (Sized_relobj_incr::do_output_section_offset): Likewise.
234
        (Sized_relobj_incr::do_for_all_local_got_entries): Likewise.
235
        (Sized_relobj_incr::section_offsets_): Likewise.
236
        * object.cc (Sized_relobj::do_for_all_local_got_entries): New
237
        function.
238
        (Sized_relobj_file::Sized_relobj_file): Remove local_got_offsets_.
239
        (Sized_relobj_file::layout_section): Replace refs to section_offsets_
240
        with accessor function.
241
        (Sized_relobj_file::do_layout): Likewise.
242
        (Sized_relobj_file::do_layout_deferred_sections): Likewise.
243
        (Sized_relobj_file::do_for_all_local_got_entries): Move to base class.
244
        (Sized_relobj_file::compute_final_local_value): Replace refs to
245
        section_offsets_ with accessor function.
246
        (Sized_relobj_file::do_finalize_local_symbols): Likewise.
247
        * object.h (Relobj::Relobj): Initialize new data members.
248
        (Relobj::add_dyn_reloc): New function.
249
        (Relobj::first_dyn_reloc): New function.
250
        (Relobj::dyn_reloc_count): New function.
251
        (Relobj::first_dyn_reloc_): New data member.
252
        (Relobj::dyn_reloc_count_): New data member.
253
        (Sized_relobj): Rename Sized_relobj_base to this; adjust all
254
        references.
255
        (Sized_relobj::Address): New typedef.
256
        (Sized_relobj::invalid_address): Move here from child class.
257
        (Sized_relobj::Sized_relobj): Initialize new data members.
258
        (Sized_relobj::sized_relobj): New function.
259
        (Sized_relobj::is_output_section_offset_invalid): Move here from
260
        child class.
261
        (Sized_relobj::get_output_section_offset): Likewise.
262
        (Sized_relobj::local_has_got_offset): Likewise.
263
        (Sized_relobj::local_got_offset): Likewise.
264
        (Sized_relobj::set_local_got_offset): Likewise.
265
        (Sized_relobj::do_for_all_local_got_entries): Likewise.
266
        (Sized_relobj::clear_got_offsets): New function.
267
        (Sized_relobj::section_offsets): Move here from child class.
268
        (Sized_relobj::do_output_section_offset): Likewise.
269
        (Sized_relobj::do_set_section_offset): Likewise.
270
        (Sized_relobj::Local_got_offsets): Likewise.
271
        (Sized_relobj::local_got_offsets_): Likewise.
272
        (Sized_relobj::section_offsets_): Likewise.
273
        (Sized_relobj_file): Rename Sized_relobj to this; adjust all
274
        references.
275
        (Sized_relobj_file::is_output_section_offset_invalid): Move to base
276
        class.
277
        (Sized_relobj_file::sized_relobj): New function
278
        (Sized_relobj_file::local_has_got_offset): Move to base class.
279
        (Sized_relobj_file::local_got_offset): Likewise.
280
        (Sized_relobj_file::set_local_got_offset): Likewise.
281
        (Sized_relobj_file::get_output_section_offset): Likewise.
282
        (Sized_relobj_file::do_for_all_local_got_entries): Likewise.
283
        (Sized_relobj_file::do_output_section_offset): Likewise.
284
        (Sized_relobj_file::do_set_section_offset): Likewise.
285
        (Sized_relobj_file::Local_got_offsets): Likewise.
286
        (Sized_relobj_file::local_got_offsets_): Likewise.
287
        (Sized_relobj_file::section_offsets_): Likewise.
288
        * output.cc (Output_reloc::Output_reloc): Adjust type of relobj
289
        (all constructors).
290
        (set_needs_dynsym_index): Convert relobj to derived class pointer.
291
        (Output_reloc::get_symbol_index): Likewise.
292
        (Output_reloc::local_section_offset): Likewise.
293
        (Output_reloc::get_address): Likewise.
294
        (Output_reloc::symbol_value): Likewise.
295
        (Output_data_got::reserve_slot): Move to class definition.
296
        (Output_data_got::reserve_local): New function.
297
        (Output_data_got::reserve_slot_for_global): Remove.
298
        (Output_data_got::reserve_global): New function.
299
        * output.h (Output_reloc::Output_reloc): Adjust type of relobj
300
        (all constructors, two instantiations).
301
        (Output_reloc::get_relobj): New function (two instantiations).
302
        (Output_reloc::u1_.relobj, Output_reloc::u2_.relobj): Adjust type.
303
        (Output_data_reloc_base::add): Convert relobj to derived class pointer.
304
        (Output_data_reloc::add_global): Adjust type of relobj.
305
        (Output_data_reloc::add_global_relative): Likewise.
306
        (Output_data_reloc::add_symbolless_global_addend): Likewise.
307
        (Output_data_reloc::add_local): Likewise.
308
        (Output_data_reloc::add_local_relative): Likewise.
309
        (Output_data_reloc::add_symbolless_local_addend): Likewise.
310
        (Output_data_reloc::add_local_section): Likewise.
311
        (Output_data_reloc::add_output_section): Likewise.
312
        (Output_data_reloc::add_absolute): Likewise.
313
        (Output_data_reloc::add_target_specific): Likewise.
314
        (Output_data_got::reserve_slot): Move definition here.
315
        (Output_data_got::reserve_local): New function.
316
        (Output_data_got::reserve_global): New function.
317
        * reloc.cc (Sized_relobj_file::do_read_relocs): Replace refs to
318
        section_offsets_ with accessor function.
319
        (Sized_relobj_file::write_sections): Likewise.
320
        (Sized_relobj_file::do_relocate_sections): Likewise.
321
        * target.h (Sized_target::reserve_local_got_entry): New function.
322
        (Sized_target::reserve_global_got_entry): New function.
323
        * x86_64.cc (Target_x86_64::reserve_local_got_entry): New function.
324
        (Target_x86_64::reserve_global_got_entry): New function.
325
        (Target_x86_64::init_got_plt_for_update): Create rela_dyn section.
326
 
327
2011-05-23 Cary Coutant  
328
 
329
        * gold.cc (queue_middle_tasks): Process existing GOT/PLT entries.
330
        * incremental-dump.cc (dump_incremental_inputs): Mask high-order
331
        bit when checking got_type.
332
        * incremental.cc (Sized_incremental_binary::setup_readers):
333
        Store symbol table and string table locations; initialize bit vector
334
        of file status flags.
335
        (Sized_incremental_binary::do_reserve_layout): Set bit flag for
336
        unchanged files.
337
        (Sized_incremental_binary::do_process_got_plt): New function.
338
        (Sized_incremental_binary::get_symtab_view): Use stored locations.
339
        (Output_section_incremental_inputs::set_final_data_size): Record
340
        file index for each input file.
341
        (Output_section_incremental_inputs::write_got_plt): Store file index
342
        instead of input entry offset for each GOT entry.
343
        * incremental.h
344
        (Incremental_input_entry::Incremental_input_entry): Initialize new
345
        data member.
346
        (Incremental_input_entry::set_offset): Store file index.
347
        (Incremental_input_entry::get_file_index): New function.
348
        (Incremental_input_entry::file_index_): New data member.
349
        (Incremental_binary::process_got_plt): New function.
350
        (Incremental_binary::do_process_got_plt): New function.
351
        (Sized_incremental_binary::Sized_incremental_binary): Initialize new
352
        data members.
353
        (Sized_incremental_binary::~Sized_incremental_binary): New destructor.
354
        (Sized_incremental_binary::set_file_is_unchanged): New function.
355
        (Sized_incremental_binary::file_is_unchanged): New function.
356
        (Sized_incremental_binary::do_process_got_plt): New function.
357
        (Sized_incremental_binary::file_status_): New data member.
358
        (Sized_incremental_binary::main_symtab_loc_): New data member.
359
        (Sized_incremental_binary::main_strtab_loc_): New data member.
360
        * output.cc (Output_data_got::Got_entry::write): Add case
361
        RESERVED_CODE.
362
        (Output_data_got::add_global): Call add_got_entry.
363
        (Output_data_got::add_global_plt): Likewise.
364
        (Output_data_got::add_global_with_rel): Likewise.
365
        (Output_data_got::add_global_with_rela): Likewise.
366
        (Output_data_got::add_global_pair_with_rel): Call add_got_entry_pair.
367
        (Output_data_got::add_global_pair_with_rela): Likewise.
368
        (Output_data_got::add_local): Call add_got_entry.
369
        (Output_data_got::add_local_plt): Likewise.
370
        (Output_data_got::add_local_with_rel): Likewise.
371
        (Output_data_got::add_local_with_rela): Likewise.
372
        (Output_data_got::add_local_pair_with_rel): Call add_got_entry_pair.
373
        (Output_data_got::add_local_pair_with_rela): Likewise.
374
        (Output_data_got::reserve_slot): New function.
375
        (Output_data_got::reserve_slot_for_global): New function.
376
        (Output_data_got::add_got_entry): New function.
377
        (Output_data_got::add_got_entry_pair): New function.
378
        (Output_section::add_output_section_data): Edit FIXME.
379
        * output.h
380
        (Output_section_data_build::Output_section_data_build): New
381
        constructor with size parameter.
382
        (Output_data_space::Output_data_space): Likewise.
383
        (Output_data_got::Output_data_got): Initialize new data member; new
384
        constructor with size parameter.
385
        (Output_data_got::add_constant): Call add_got_entry.
386
        (Output_data_got::reserve_slot): New function.
387
        (Output_data_got::reserve_slot_for_global): New function.
388
        (class Output_data_got::Got_entry): Add RESERVED_CODE.
389
        (Output_data_got::add_got_entry): New function.
390
        (Output_data_got::add_got_entry_pair): New function.
391
        (Output_data_got::free_list_): New data member.
392
        * target.h (Sized_target::init_got_plt_for_update): New function.
393
        (Sized_target::register_global_plt_entry): New function.
394
        * x86_64.cc (Output_data_plt_x86_64::Output_data_plt_x86_64):
395
        Initialize new data member; call init; add constructor with PLT count.
396
        (Output_data_plt_x86_64::init): New function.
397
        (Output_data_plt_x86_64::add_relocation): New function.
398
        (Output_data_plt_x86_64::reserve_slot): New function.
399
        (Output_data_plt_x86_64::free_list_): New data member.
400
        (Target_x86_64::init_got_plt_for_update): New function.
401
        (Target_x86_64::register_global_plt_entry): New function.
402
        (Output_data_plt_x86_64::add_entry): Allocate from free list for
403
        incremental updates.
404
        (Output_data_plt_x86_64::add_relocation): New function.
405
        * testsuite/object_unittest.cc (Object_test): Set default options.
406
 
407
2011-05-16  Ian Lance Taylor  
408
 
409
        * options.h (class General_options): Make -i a synonym for -r.
410
 
411
2011-05-16  Ian Lance Taylor  
412
 
413
        * testsuite/tls_test_main.cc: Use semaphores instead of mutexes.
414
 
415
2011-05-10 Cary Coutant  
416
 
417
        * object.cc (Sized_relobj::do_count_local_symbols): Check for
418
        strip_all (-s).
419
 
420
2011-05-06  Ian Lance Taylor  
421
 
422
        * layout.cc (Layout::layout): If the output section flags change,
423
        update the ordering.
424
 
425
2011-04-25 Cary Coutant  
426
 
427
        * incremental-dump.cc (dump_incremental_inputs): Print local
428
        symbol info for each input file.
429
        * incremental.cc
430
        (Output_section_incremental_inputs::set_final_data_size): Add local
431
        symbol info to input file entries in incremental info.
432
        (Output_section_incremental_inputs::write_info_blocks): Likewise.
433
        (Sized_incr_relobj::Sized_incr_relobj): Initialize new data members.
434
        (Sized_incr_relobj::do_add_symbols): Cosmetic change.
435
        (Sized_incr_relobj::do_count_local_symbols): Replace stub with
436
        implementation.
437
        (Sized_incr_relobj::do_finalize_local_symbols): Likewise.
438
        (Sized_incr_relobj::do_relocate): Write the local symbols.
439
        (Sized_incr_dynobj::do_add_symbols): Cosmetic change.
440
        * incremental.h (Incremental_inputs_reader::get_symbol_offset):
441
        Adjust size of input file header.
442
        (Incremental_inputs_reader::get_local_symbol_offset): New function.
443
        (Incremental_inputs_reader::get_local_symbol_count): New function.
444
        (Incremental_inputs_reader::get_input_section): Adjust size of input
445
        file header.
446
        (Incremental_inputs_reader::get_global_symbol_reader): Likewise.
447
        (Sized_incr_relobj::This): New typedef.
448
        (Sized_incr_relobj::sym_size): New const data member.
449
        (Sized_incr_relobj::Local_symbol): New struct.
450
        (Sized_incr_relobj::do_output_local_symbol_count): New function.
451
        (Sized_incr_relobj::do_local_symbol_offset): New function.
452
        (Sized_incr_relobj::local_symbol_count_): New data member.
453
        (Sized_incr_relobj::output_local_dynsym_count_): New data member.
454
        (Sized_incr_relobj::local_symbol_index_): New data member.
455
        (Sized_incr_relobj::local_symbol_offset_): New data member.
456
        (Sized_incr_relobj::local_dynsym_offset_): New data member.
457
        (Sized_incr_relobj::local_symbols_): New data member.
458
        * object.h (Relobj::output_local_symbol_count): New function.
459
        (Relobj::local_symbol_offset): New function.
460
        (Relobj::do_output_local_symbol_count): New function.
461
        (Relobj::do_local_symbol_offset): New function.
462
        (Sized_relobj::do_output_local_symbol_count): New function.
463
        (Sized_relobj::do_local_symbol_offset): New function.
464
 
465
2011-04-22  Vladimir Simonov  
466
 
467
        * descriptors.cc (set_close_on_exec): New function.
468
        (Descriptors::open): Use set_close_on_exec.
469
        * output.cc (S_ISLNK): Define if not defined.
470
 
471
2011-04-22 Cary Coutant  
472
 
473
        * incremental.cc (Sized_incremental_binary::setup_readers): Allocate
474
        global symbol map.
475
        (Sized_incremental_binary::do_apply_incremental_relocs): New function.
476
        (Sized_incr_relobj::do_add_symbols): Add symbols to global symbol map.
477
        (Sized_incr_relobj::do_relocate): Remap section indices in incremental
478
        relocations.
479
        (Sized_incr_dynobj::do_add_symbols): Add symbols to global symbol map.
480
        (Sized_incr_dynobj::do_for_all_global_symbols): Remove FIXME.
481
        (Sized_incr_dynobj::do_for_all_local_got_entries): Likewise.
482
        * incremental.h
483
        (Incremental_inputs_reader::global_symbol_reader_at_offset): New
484
        function.
485
        (Incremental_binary::apply_incremental_relocs): New function.
486
        (Incremental_binary::do_apply_incremental_relocs): New function.
487
        (Sized_incremental_binary::Sized_incremental_binary): Initialize new
488
        data member.
489
        (Sized_incremental_binary::add_global_symbol): New function.
490
        (Sized_incremental_binary::global_symbol): New function.
491
        (Sized_incremental_binary::do_apply_incremental_relocs): New function.
492
        (Sized_incremental_binary::symbol_map_): New data member.
493
        * layout.cc (Layout_task_runner::run): Apply incremental relocations.
494
        * target.h (Sized_target::apply_relocation): New function.
495
        * target-reloc.h (apply_relocation): New function.
496
        * x86_64.cc (Target_x86_64::apply_relocation): New function.
497
 
498
2011-04-22  Doug Kwan  
499
 
500
        * arm.cc (Arm_output_section::Arm_output_section): Set SHF_LINK_ORDER
501
        flag of a SHT_ARM_EXIDX section.
502
        * testsuite/Makefile.am (arm_exidx_test): New test rules.
503
        * testsuite/Makefile.in: Regenerate.
504
        * testsuite/arm_exidx_test.s: New file.
505
        * testsuite/arm_exidx_test.sh: Same.
506
 
507
2011-04-20 Cary Coutant  
508
 
509
        PR gold/12689
510
        * archive.h (Incremental_archive_entry::Archive_member):
511
        Initialize arg_serial_ (second constructor).
512
 
513
2011-04-17  Ian Lance Taylor  
514
 
515
        * object.cc (Relocate_info::location): Simplify location string.
516
        * errors.cc (Errors::error_at_location): Don't print program
517
        name.
518
        (Errors::warning_at_location): Likewise.
519
        (Errors::undefined_symbol): Likewise.
520
        * testsuite/debug_msg.sh: Update accordingly.
521
 
522
2011-04-14 Cary Coutant  
523
 
524
        * gold/layout.cc (Layout::symtab_section_offset): New function.
525
        * gold/layout.h (Layout::symtab_section_offset): New function.
526
        * gold/reloc.cc (Sized_relobj::do_relocate): Call it.
527
 
528
2011-04-12  Ian Lance Taylor  
529
 
530
        * configure.ac: Check for sys/mman.h and mmap.  Check for mremap
531
        with MREMAP_MAYMOVE.
532
        * output.h (class Output_file): Add map_is_allocated_ field.
533
        * output.cc: Only #include  if it exists.  If mmap is
534
        not available, provide stubs.  If mremap is not available, #define
535
        it to gold_mremap.
536
        (MREMAP_MAYMOVE): Define if not defined.
537
        (Output_file::Output_file): Initialize map_is_allocated_.
538
        (Output_file::resize): Check map_is_allocated_.
539
        (Output_file::map_anonymous): If mmap fails, use malloc.
540
        (Output_file::unmap): Don't do anything for an anonymous map.
541
        * fileread.cc: Only #include  if it exists.  If mmap
542
        is not available, provide stubs.
543
        (File_read::View::~View): Use free rather than delete[].
544
        (File_read::make_view): Use malloc rather than new[].  If mmap
545
        fails, use malloc.
546
        (File_read::find_or_make_view): Use malloc rather than new[].
547
        * gold.h: Remove HAVE_REMAP code.
548
        * mremap.c: #include .  Only #include  if it
549
        exists.  Rename mremap to gold_mremap.  If mmap is not available
550
        don't do anything.
551
        * configure, config.in: Rebuild.
552
 
553
2011-04-11  Ian Lance Taylor  
554
 
555
        * incremental.cc (Sized_incr_relobj::do_add_symbols): Always
556
        initialize local variable v.
557
 
558
2011-04-11  Cary Coutant  
559
 
560
        * archive.cc (Archive::include_member): Adjust call to
561
        report_object.
562
        (Add_archive_symbols::run): Track argument serial numbers.
563
        (Lib_group::include_member): Likewise.
564
        (Add_lib_group_symbols::run): Adjust call to report_archive_begin.
565
        * archive.h (Incremental_archive_entry::Archive_member):
566
        Initialize arg_serial_.
567
        (Archive_member::arg_serial_): New data member.
568
        * dynobj.cc (Dynobj::Dynobj): Allow input_file_ to be NULL.
569
        (Sized_dynobj::do_add_symbols): Track symbols when doing an
570
        incremental link.
571
        (Sized_dynobj::do_for_all_local_got_entries): New function.
572
        * dynobj.h: (Sized_dynobj::do_for_all_local_got_entries): New
573
        function.
574
        * fileread.cc (get_mtime): New function.
575
        * fileread.h (get_mtime): New function.
576
        * gold.cc (queue_initial_tasks): Check for incremental update.
577
        (process_incremental_input): New function.
578
        (queue_middle_tasks): Don't force valid target for incremental
579
        update.
580
        * incremental-dump.cc (find_input_containing_global): Adjust
581
        size of symbol info entry.
582
        (dump_incremental_inputs): Dump argument serial number and
583
        in_system_directory flag; bias shndx by 1; print symbol names
584
        when dumping per-file symbol lists; use new symbol info readers.
585
        * incremental.cc
586
        (Output_section_incremental_inputs:update_data_size): New function.
587
        (Sized_incremental_binary::setup_readers): Setup input readers
588
        for each input file; build maps for files added from libraries
589
        and scripts.
590
        (Sized_incremental_binary::check_input_args): New function.
591
        (Sized_incremental_binary::do_check_inputs): Build map of argument
592
        serial numbers to input arguments.
593
        (Sized_incremental_binary::do_file_has_changed): Rename
594
        do_file_is_unchanged to this; compare file modification times.
595
        (Sized_incremental_binary::do_init_layout): New function.
596
        (Sized_incremental_binary::do_reserve_layout): New function.
597
        (Sized_incremental_binary::do_get_input_reader): Remove.
598
        (Sized_incremental_binary::get_symtab_view): New function.
599
        (Incremental_checker::can_incrementally_link_output_file): Remove.
600
        (Incremental_inputs::report_command_line): Exclude --debug options.
601
        (Incremental_inputs::report_archive_begin): Add parameter; track
602
        argument serial numbers; don't put input file entry for archive
603
        before archive members.
604
        (Incremental_inputs::report_archive_end): Put input file entry
605
        for archive after archive members.
606
        (Incremental_inputs::report_object): Add parameter; track argument
607
        serial numbers and in_system_directory flag.
608
        (Incremental_inputs::report_script): Add parameter; track argument
609
        serial numbers.
610
        (Output_section_incremental_inputs::set_final_data_size): Adjust
611
        size of symbol info entry; check for forwarding symbols.
612
        (Output_section_incremental_inputs::write_input_files): Write
613
        in_system_directory flag and argument serial number.
614
        (Output_section_incremental_inputs::write_info_blocks): Map section
615
        indices between incremental info and original input file; store
616
        input section index for each symbol.
617
        (class Local_got_offset_visitor): Derive from Got_offset_list::Visitor;
618
        change operator() to visit().
619
        (class Global_got_offset_visitor): Likewise.
620
        (class Global_symbol_visitor_got_plt):
621
        (Output_section_incremental_inputs::write_got_plt): Use new visitor
622
        classes.
623
        (Sized_incr_relobj::Sized_incr_relobj): New constructor.
624
        (Sized_incr_relobj::do_read_symbols): New function.
625
        (Sized_incr_relobj::do_layout): New function.
626
        (Sized_incr_relobj::do_layout_deferred_sections): New function.
627
        (Sized_incr_relobj::do_add_symbols): New function.
628
        (Sized_incr_relobj::do_should_include_member): New function.
629
        (Sized_incr_relobj::do_for_all_global_symbols): New function.
630
        (Sized_incr_relobj::do_for_all_local_got_entries): New function.
631
        (Sized_incr_relobj::do_section_size): New function.
632
        (Sized_incr_relobj::do_section_name): New function.
633
        (Sized_incr_relobj::do_section_contents): New function.
634
        (Sized_incr_relobj::do_section_flags): New function.
635
        (Sized_incr_relobj::do_section_entsize): New function.
636
        (Sized_incr_relobj::do_section_address): New function.
637
        (Sized_incr_relobj::do_section_type): New function.
638
        (Sized_incr_relobj::do_section_link): New function.
639
        (Sized_incr_relobj::do_section_info): New function.
640
        (Sized_incr_relobj::do_section_addralign): New function.
641
        (Sized_incr_relobj::do_initialize_xindex): New function.
642
        (Sized_incr_relobj::do_get_global_symbol_counts): New function.
643
        (Sized_incr_relobj::do_read_relocs): New function.
644
        (Sized_incr_relobj::do_gc_process_relocs): New function.
645
        (Sized_incr_relobj::do_scan_relocs): New function.
646
        (Sized_incr_relobj::do_count_local_symbols): New function.
647
        (Sized_incr_relobj::do_finalize_local_symbols): New function.
648
        (Sized_incr_relobj::do_set_local_dynsym_indexes): New function.
649
        (Sized_incr_relobj::do_set_local_dynsym_offset): New function.
650
        (Sized_incr_relobj::do_relocate): New function.
651
        (Sized_incr_relobj::do_set_section_offset): New function.
652
        (Sized_incr_dynobj::Sized_incr_dynobj): New function.
653
        (Sized_incr_dynobj::do_read_symbols): New function.
654
        (Sized_incr_dynobj::do_layout): New function.
655
        (Sized_incr_dynobj::do_add_symbols): New function.
656
        (Sized_incr_dynobj::do_should_include_member): New function.
657
        (Sized_incr_dynobj::do_for_all_global_symbols): New function.
658
        (Sized_incr_dynobj::do_for_all_local_got_entries): New function.
659
        (Sized_incr_dynobj::do_section_size): New function.
660
        (Sized_incr_dynobj::do_section_name): New function.
661
        (Sized_incr_dynobj::do_section_contents): New function.
662
        (Sized_incr_dynobj::do_section_flags): New function.
663
        (Sized_incr_dynobj::do_section_entsize): New function.
664
        (Sized_incr_dynobj::do_section_address): New function.
665
        (Sized_incr_dynobj::do_section_type): New function.
666
        (Sized_incr_dynobj::do_section_link): New function.
667
        (Sized_incr_dynobj::do_section_info): New function.
668
        (Sized_incr_dynobj::do_section_addralign): New function.
669
        (Sized_incr_dynobj::do_initialize_xindex): New function.
670
        (Sized_incr_dynobj::do_get_global_symbol_counts): New function.
671
        (make_sized_incremental_object): New function.
672
        (Incremental_library::copy_unused_symbols): New function.
673
        (Incremental_library::do_for_all_unused_symbols): New function.
674
        * incremental.h (enum Incremental_input_flags): New type.
675
        (class Incremental_checker): Remove.
676
        (Incremental_input_entry::Incremental_input_entry): Add argument
677
        serial number.
678
        (Incremental_input_entry::arg_serial): New function.
679
        (Incremental_input_entry::set_is_in_system_directory): New function.
680
        (Incremental_input_entry::is_in_system_directory): New function.
681
        (Incremental_input_entry::arg_serial_): New data member.
682
        (Incremental_input_entry::is_in_system_directory_): New data member.
683
        (class Script_info): Move here from script.h.
684
        (Script_info::Script_info): Add filename parameter.
685
        (Script_info::filename): New function.
686
        (Script_info::filename_): New data member.
687
        (Incremental_script_entry::Incremental_script_entry): Add argument
688
        serial number.
689
        (Incremental_object_entry::Incremental_object_entry): Likewise.
690
        (Incremental_object_entry::add_input_section): Build list of input
691
        sections with map to original shndx.
692
        (Incremental_object_entry::get_input_section_index): New function.
693
        (Incremental_object_entry::shndx_): New data member.
694
        (Incremental_object_entry::name_key_): Rename; adjust all refs.
695
        (Incremental_object_entry::sh_size_): Rename; adjust all refs.
696
        (Incremental_archive_entry::Incremental_archive_entry): Add argument
697
        serial number.
698
        (Incremental_inputs::report_archive_begin): Likewise.
699
        (Incremental_inputs::report_object): Likewise.
700
        (Incremental_inputs::report_script): Likewise.
701
        (class Incremental_global_symbol_reader): New class.
702
        (Incremental_input_entry_reader::Incremental_input_entry_reader): Read
703
        and store flags and input file type.
704
        (Incremental_input_entry_reader::arg_serial): New function.
705
        (Incremental_input_entry_reader::type): Extract type from flags.
706
        (Incremental_input_entry_reader::is_in_system_directory): New function.
707
        (Incremental_input_entry_reader::get_input_section_count): Call
708
        accessor function for type.
709
        (Incremental_input_entry_reader::get_symbol_offset): Call accessor
710
        function for type; adjust size of global symbol entry.
711
        (Incremental_input_entry_reader::get_global_symbol_count): Call
712
        accessor function for type.
713
        (Incremental_input_entry_reader::get_object_count): Likewise.
714
        (Incremental_input_entry_reader::get_object_offset): Likewise.
715
        (Incremental_input_entry_reader::get_member_count): Likewise.
716
        (Incremental_input_entry_reader::get_unused_symbol_count): Likewise.
717
        (Incremental_input_entry_reader::get_member_offset): Likewise.
718
        (Incremental_input_entry_reader::get_unused_symbol): Likewise.
719
        (Incremental_input_entry_reader::Global_symbol_info): Remove.
720
        (Incremental_input_entry_reader::get_global_symbol_info): Remove.
721
        (Incremental_input_entry_reader::get_global_symbol_reader): New
722
        function.
723
        (Incremental_input_entry_reader::get_output_symbol_index): New
724
        function.
725
        (Incremental_input_entry_reader::type_): Remove.
726
        (Incremental_input_entry_reader::flags_): New data member.
727
        (Incremental_inputs_reader::input_file_offset): New function.
728
        (Incremental_inputs_reader::input_file_index): New function.
729
        (Incremental_inputs_reader::input_file): Call input_file_offset.
730
        (Incremental_inputs_reader::input_file_at_offset): New function.
731
        (Incremental_relocs_reader::get_r_type): Reformat.
732
        (Incremental_relocs_reader::get_r_shndx): Reformat.
733
        (Incremental_relocs_reader::get_r_offset): Reformat.
734
        (Incremental_relocs_reader::data): New function.
735
        (Incremental_binary::Incremental_binary): Initialize new data members.
736
        (Incremental_binary::check_inputs): Add cmdline parameter.
737
        (Incremental_binary::file_is_unchanged): Remove.
738
        (Input_reader::arg_serial): New function.
739
        (Input_reader::get_unused_symbol_count): New function.
740
        (Input_reader::get_unused_symbol): New function.
741
        (Input_reader::do_arg_serial): New function.
742
        (Input_reader::do_get_unused_symbol_count): New function.
743
        (Input_reader::do_get_unused_symbol): New function.
744
        (Incremental_binary::input_file_count): New function.
745
        (Incremental_binary::get_input_reader): Change signature to use
746
        index instead of filename.
747
        (Incremental_binary::file_has_changed): New function.
748
        (Incremental_binary::get_input_argument): New function.
749
        (Incremental_binary::get_library): New function.
750
        (Incremental_binary::get_script_info): New function.
751
        (Incremental_binary::init_layout): New function.
752
        (Incremental_binary::reserve_layout): New function.
753
        (Incremental_binary::output_file): New function.
754
        (Incremental_binary::do_check_inputs): New function.
755
        (Incremental_binary::do_file_is_unchanged): Remove.
756
        (Incremental_binary::do_file_has_changed): New function.
757
        (Incremental_binary::do_init_layout): New function.
758
        (Incremental_binary::do_reserve_layout): New function.
759
        (Incremental_binary::do_input_file_count): New function.
760
        (Incremental_binary::do_get_input_reader): Change signature.
761
        (Incremental_binary::input_args_map_): New data member.
762
        (Incremental_binary::library_map_): New data member.
763
        (Incremental_binary::script_map_): New data member.
764
        (Sized_incremental_binary::Sized_incremental_binary): Initialize
765
        new data members.
766
        (Sized_incremental_binary::output_section): New function.
767
        (Sized_incremental_binary::inputs_reader): Add const.
768
        (Sized_incremental_binary::symtab_reader): Add const.
769
        (Sized_incremental_binary::relocs_reader): Add const.
770
        (Sized_incremental_binary::got_plt_reader): Add const.
771
        (Sized_incremental_binary::get_symtab_view): New function.
772
        (Sized_incremental_binary::Inputs_reader): New typedef.
773
        (Sized_incremental_binary::Input_entry_reader): New typedef.
774
        (Sized_incremental_binary::do_check_inputs): Add cmdline parameter.
775
        (Sized_incremental_binary::do_file_is_unchanged): Remove.
776
        (Sized_incremental_binary::do_file_has_changed): New function.
777
        (Sized_incremental_binary::do_init_layout): New function.
778
        (Sized_incremental_binary::do_reserve_layout): New function.
779
        (Sized_input_reader::Inputs_reader): Remove.
780
        (Sized_input_reader::Input_entry_reader): Remove.
781
        (Sized_input_reader::do_arg_serial): New function.
782
        (Sized_input_reader::do_get_unused_symbol_count): New function.
783
        (Sized_input_reader::do_get_unused_symbol): New function.
784
        (Sized_incremental_binary::do_input_file_count): New function.
785
        (Sized_incremental_binary::do_get_input_reader): Change signature;
786
        use index instead of filename.
787
        (Sized_incremental_binary::section_map_): New data member.
788
        (Sized_incremental_binary::input_entry_readers_): New data member.
789
        (class Sized_incr_relobj): New class.
790
        (class Sized_incr_dynobj): New class.
791
        (make_sized_incremental_object): New function.
792
        (class Incremental_library): New class.
793
        * layout.cc (Free_list::num_lists): New static data member.
794
        (Free_list::num_nodes): New static data member.
795
        (Free_list::num_removes): New static data member.
796
        (Free_list::num_remove_visits): New static data member.
797
        (Free_list::num_allocates): New static data member.
798
        (Free_list::num_allocate_visits): New static data member.
799
        (Free_list::init): New function.
800
        (Free_list::remove): New function.
801
        (Free_list::allocate): New function.
802
        (Free_list::dump): New function.
803
        (Free_list::print_stats): New function.
804
        (Layout_task_runner::run): Resize output file for incremental updates.
805
        (Layout::Layout): Initialize new data members.
806
        (Layout::set_incremental_base): New function.
807
        (Layout::init_fixed_output_section): New function.
808
        (Layout::layout_eh_frame): Do not build .eh_frame_hdr section for
809
        incremental updates.
810
        (Layout::create_gold_note): Do not create gold note section for
811
        incremental updates.
812
        (Layout::set_segment_offsets): Do not recalculate RELRO alignment
813
        for incremental updates.
814
        (Layout::set_section_offsets): For incremental updates, allocate space
815
        from free list.
816
        (Layout::create_symtab_sections): Layout with offsets relative to
817
        start of section; for incremental updates, allocate space from free
818
        list.
819
        (Layout::create_shdrs): For incremental updates, allocate space from
820
        free list.
821
        (Layout::finish_dynamic_section): For incremental updates, do not
822
        check --as-needed (fixed in subsequent patch).
823
        * layout.h (class Free_list): New class.
824
        (Layout::set_incremental_base): New function.
825
        (Layout::incremental_base): New function.
826
        (Layout::init_fixed_output_section): New function.
827
        (Layout::allocate): New function.
828
        (Layout::incremental_base_): New data member.
829
        (Layout::free_list_): New data member.
830
        * main.cc (main): Print Free_list statistics.
831
        * object.cc (Relobj::finalize_incremental_relocs): Add
832
        clear_counts parameter; clear counts only when clear_counts is set.
833
        (Sized_relobj::Sized_relobj): Initialize new base class.
834
        (Sized_relobj::do_layout): Don't report special sections.
835
        (Sized_relobj::do_for_all_local_got_entries): New function.
836
        (Sized_relobj::write_local_symbols): Add symtab_off parameter; add
837
        symtab_off to all symbol table offsets.
838
        (Sized_relobj::do_get_global_symbol_counts): Add typename keyword.
839
        * object.h (class Got_offset_list): Move to top of file.
840
        (Object::Object): Allow case where input_file == NULL.
841
        (Object::~Object): Likewise.
842
        (Object::input_file): Assert that input_file != NULL.
843
        (Object::lock): Allow case where input_file == NULL.
844
        (Object::unlock): Likewise.
845
        (Object::is_locked): Likewise.
846
        (Object::token): Likewise.
847
        (Object::release): Likewise.
848
        (Object::is_incremental): New function.
849
        (Object::get_mtime): New function.
850
        (Object::for_all_local_got_entries): New function.
851
        (Object::clear_view_cache_marks): Allow case where input_file == NULL.
852
        (Object::set_is_in_system_directory): New function.
853
        (Object::is_in_system_directory): New function.
854
        (Object::do_is_incremental): New function.
855
        (Object::do_get_mtime): New function.
856
        (Object::do_for_all_local_got_entries): New function.
857
        (Object::is_in_system_directory_): New data member.
858
        (Relobj::finalize_incremental_relocs): Add clear_counts parameter.
859
        (class Sized_relobj_base): New class.
860
        (class Sized_relobj): Derive from Sized_relobj_base.
861
        (class Sized_relobj::Symbols): Redeclare from base class.
862
        (class Sized_relobj::local_got_offset_list): Remove.
863
        (class Sized_relobj::Output_sections): Redeclare from base class.
864
        (class Sized_relobj::do_for_all_local_got_entries): New function.
865
        (class Sized_relobj::write_local_symbols): Add offset parameter.
866
        (class Sized_relobj::local_symbol_offset_): Update comment.
867
        (class Sized_relobj::local_dynsym_offset_): Update comment.
868
        * options.cc (Input_arguments::add_file): Remove const.
869
        * options.h (Input_file_argument::Input_file_argument):
870
        Initialize arg_serial_ (all constructors).
871
        (Input_file_argument::set_arg_serial): New function.
872
        (Input_file_argument::arg_serial): New function.
873
        (Input_file_argument::arg_serial_): New data member.
874
        (Input_arguments::Input_arguments): Initialize file_count_.
875
        (Input_arguments::add_file): Remove const.
876
        (Input_arguments::number_of_input_files): New function.
877
        (Input_arguments::file_count_): New data member.
878
        (Command_line::number_of_input_files): Call
879
        Input_arguments::number_of_input_files.
880
        * output.cc (Output_segment_headers::Output_segment_headers):
881
        Set current size.
882
        (Output_section::Input_section::current_data_size): New function.
883
        (Output_section::Output_section): Initialize new data members.
884
        (Output_section::add_input_section): Don't do merge sections for
885
        an incremental link; allocate space from free list for an
886
        incremental update.
887
        (Output_section::add_output_section_data): Allocate space from
888
        free list for an incremental update.
889
        (Output_section::update_data_size): New function.
890
        (Output_section::set_fixed_layout): New function.
891
        (Output_section::reserve): New function.
892
        (Output_segment::set_section_addresses): Remove const.
893
        (Output_segment::set_section_list_addresses): Remove const; allocate
894
        space from free list for an incremental update.
895
        (Output_segment::set_offset): Adjust size of RELRO segment for an
896
        incremental update.
897
        * output.h (Output_data::current_data_size): Move here from
898
        child classes.
899
        (Output_data::pre_finalize_data_size): New function.
900
        (Output_data::update_data_size): New function.
901
        (Output_section_headers::update_data_size): new function.
902
        (Output_section_data_build::current_data_size): Move to Output_data.
903
        (Output_data_strtab::update_data_size): New function.
904
        (Output_section::current_data_size): Move to Output_data.
905
        (Output_section::set_fixed_layout): New function.
906
        (Output_section::has_fixed_layout): New function.
907
        (Output_section::reserve): New function.
908
        (Output_section::update_data_size): New function.
909
        (Output_section::has_fixed_layout_): New data member.
910
        (Output_section::free_list_): New data member.
911
        (Output_segment::set_section_addresses): Remove const.
912
        (Output_segment::set_section_list_addresses): Remove const.
913
        * plugin.cc (Sized_pluginobj::do_for_all_local_got_entries):
914
        New function.
915
        * plugin.h (Sized_pluginobj::do_for_all_local_got_entries):
916
        New function.
917
        * readsyms.cc (Read_symbols::do_read_symbols): Add library
918
        parameter when calling Add_symbols constructor; store argument
919
        serial number for members of a lib group.
920
        (Add_symbols::locks): Allow case where token == NULL.
921
        (Add_symbols::run): Report libraries denoted by --start-lib/--end-lib.
922
        (Read_member::~Read_member): New function.
923
        (Read_member::is_runnable): New function.
924
        (Read_member::locks): New function.
925
        (Read_member::run): New function.
926
        (Check_script::~Check_script): New function.
927
        (Check_script::is_runnable): New function.
928
        (Check_script::locks): New function.
929
        (Check_script::run): New function.
930
        (Check_library::~Check_library): New function.
931
        (Check_library::is_runnable): New function.
932
        (Check_library::locks): New function.
933
        (Check_library::run): New function.
934
        * readsyms.h (Add_symbols::Add_symbols): Add library parameter.
935
        (Add_symbols::library_): New data member.
936
        (class Read_member): New class.
937
        (class Check_script): New class.
938
        (class Check_library): New class.
939
        * reloc.cc (Read_relocs::is_runnable): Allow case where
940
        token == NULL.
941
        (Read_relocs::locks): Likewise.
942
        (Scan_relocs::locks): Likewise.
943
        (Relocate_task::locks): Likewise.
944
        (Sized_relobj::do_scan_relocs): Tell finalize_incremental_relocs
945
        to clear counters.
946
        (Sized_relobj::incremental_relocs_scan): Fix comment.
947
        (Sized_relobj::do_relocate): Pass output file offset to
948
        write_local_symbols.
949
        (Sized_relobj::incremental_relocs_write_reltype): Use reloc_size
950
        from class declaration.
951
        * script.cc (read_input_script): Allocate Script_info; pass
952
        argument serial number to report_script.
953
        * script.h (class Script_info): Move to incremental.h.
954
        * symtab.cc (Symbol_table::add_from_incrobj): New function.
955
        * symtab.h (Symbol_table::add_from_incrobj): New function.
956
        (Symbol_table::set_file_offset): New function.
957
 
958
2011-04-05  Cary Coutant  
959
 
960
        * incremental-dump.cc (dump_incremental_inputs): Change signature
961
        to take a Sized_incremental_binary; change caller.  Use readers
962
        in Sized_incremental_binary.
963
        * incremental.cc
964
        (Sized_incremental_binary::find_incremental_inputs_sections):
965
        Rename do_find_incremental_inputs_sections to this.
966
        (Sized_incremental_binary::setup_readers): New function.
967
        (Sized_incremental_binary::do_check_inputs): Check
968
        has_incremental_info_ flag; move setup code to setup_readers;
969
        use input readers.
970
        (Sized_incremental_binary::do_file_is_unchanged): New function.
971
        (Sized_incremental_binary::do_get_input_reader): New function.
972
        * incremental.h (class Incremental_binary): Move to end of file.
973
        (Incremental_binary::file_is_unchanged): New function.
974
        (Incremental_binary::do_file_is_unchanged): New function.
975
        (Incremental_binary::Input_reader): New class.
976
        (Incremental_binary::get_input_reader): New function.
977
        (class Sized_incremental_binary): Move to end of file.
978
        (Sized_incremental_binary::Sized_incremental_binary): Setup the
979
        input section reader classes.
980
        (Sized_incremental_binary::has_incremental_info): New function.
981
        (Sized_incremental_binary::inputs_reader): New function.
982
        (Sized_incremental_binary::symtab_reader): New function.
983
        (Sized_incremental_binary::relocs_reader): New function.
984
        (Sized_incremental_binary::got_plt_reader): New function.
985
        (Sized_incremental_binary::do_file_is_unchanged): New function.
986
        (Sized_incremental_binary::Sized_input_reader): New class.
987
        (Sized_incremental_binary::get_input_reader): New function.
988
        (Sized_incremental_binary::find_incremental_inputs_sections):
989
        Rename do_find_incremental_inputs_sections to this.
990
        (Sized_incremental_binary::setup_readers): New function.
991
        (Sized_incremental_binary::has_incremental_info_): New data member.
992
        (Sized_incremental_binary::inputs_reader_): New data member.
993
        (Sized_incremental_binary::symtab_reader_): New data member.
994
        (Sized_incremental_binary::relocs_reader_): New data member.
995
        (Sized_incremental_binary::got_plt_reader_): New data member.
996
        (Sized_incremental_binary::current_input_file_): New data member.
997
 
998
2011-04-05  Paul Pluzhnikov  
999
 
1000
        PR gold/12640
1001
        * dwarf_reader.cc (Sized_dwarf_line_info): Fix vector bounds
1002
        violation.
1003
 
1004
2011-03-30  Cary Coutant  
1005
 
1006
        * archive.cc (Archive::include_member): Adjust call to report_object.
1007
        (Add_archive_symbols::run): Add script_info to call to
1008
        report_archive_begin.
1009
        (Lib_group::include_member): Adjust call to report_object.
1010
        (Add_lib_group_symbols::run): Adjust call to report_object.
1011
        * incremental-dump.cc (dump_incremental_inputs): Remove unnecessary
1012
        blocks.  Add object count for script input files.
1013
        * incremental.cc (Incremental_inputs::report_archive_begin): Add
1014
        script_info parameter; change all callers.
1015
        (Incremental_inputs::report_object): Add script_info parameter;
1016
        change all callers.
1017
        (Incremental_inputs::report_script): Store backpointer to
1018
        incremental info entry.
1019
        (Output_section_incremental_inputs::set_final_data_size): Record
1020
        additional information for scripts.
1021
        (Output_section_incremental_inputs::write_info_blocks): Likewise.
1022
        * incremental.h (Incremental_script_entry::add_object): New function.
1023
        (Incremental_script_entry::get_object_count): New function.
1024
        (Incremental_script_entry::get_object): New function.
1025
        (Incremental_script_entry::objects_): New data member; adjust
1026
        constructor.
1027
        (Incremental_inputs::report_archive_begin): Add script_info parameter.
1028
        (Incremental_inputs::report_object): Add script_info parameter.
1029
        (Incremental_inputs_reader::get_object_count): New function.
1030
        (Incremental_inputs_reader::get_object_offset): New function.
1031
        * options.cc (Input_arguments::add_file): Return reference to
1032
        new input argument.
1033
        * options.h (Input_argument::set_script_info): New function.
1034
        (Input_argument::script_info): New function.
1035
        (Input_argument::script_info_): New data member; adjust all
1036
        constructors.
1037
        (Input_file_group::add_file): Return reference to new input argument.
1038
        (Input_file_lib::add_file): Likewise.
1039
        (Input_arguments::add_file): Likewise.
1040
        * readsyms.cc (Add_symbols::run): Adjust call to report_object.
1041
        * script.cc (Parser_closure::Parser_closure): Add script_info
1042
        parameter; adjust all callers.
1043
        (Parser_closure::script_info): New function.
1044
        (Parser_closure::script_info_): New data member.
1045
        (read_input_script): Report scripts earlier to incremental info.
1046
        (script_add_file): Set script_info in Input_argument.
1047
        (script_add_library): Likewise.
1048
        * script.h (Script_options::Script_info): Rewrite class.
1049
 
1050
2011-03-29  Cary Coutant  
1051
 
1052
        * archive.cc (Library_base::should_include_member): Move
1053
        method here from class Archive.
1054
        (Archive::Archive): Initialize base class.
1055
        (Archive::should_include_member): Move to base class.
1056
        (Archive::do_for_all_unused_symbols): New function.
1057
        (Add_archive_symbols::run): Remove redundant access to
1058
        incremental_inputs.
1059
        (Lib_group::Lib_group): Initialize base class.
1060
        (Lib_group::do_filename): New function.
1061
        (Lib_group::include_member): Pass pointer to Lib_group to
1062
        report_object.
1063
        (Lib_group::do_for_all_unused_symbols): New function.
1064
        (Add_lib_group_symbols::run): Report archive information for
1065
        incremental links.
1066
        * archive.h (class Library_base): New base class.
1067
        (class Archive): Derive from Library_base.
1068
        (Archive::filename): Move to base class.
1069
        (Archive::set_incremental_info): Likewise.
1070
        (Archive::incremental_info): Likewise.
1071
        (Archive::Should_include): Likewise.
1072
        (Archive::should_include_member): Likewise.
1073
        (Archive::Armap_entry): Remove.
1074
        (Archive::Unused_symbol_iterator): Remove.
1075
        (Archive::unused_symbols_begin): Remove.
1076
        (Archive::unused_symbols_end): Remove.
1077
        (Archive::do_filename): New function.
1078
        (Archive::do_get_mtime): New function.
1079
        (Archive::do_for_all_unused_symbols): New function.
1080
        (Archive::task_): Move to base class.
1081
        (Archive::incremental_info_): Likewise.
1082
        (class Lib_group): Derive from Library_base.
1083
        (Lib_group::do_filename): New function.
1084
        (Lib_group::do_get_mtime): New function.
1085
        (Lib_group::do_for_all_unused_symbols): New function.
1086
        (Lib_group::task_): Move to base class.
1087
        * dynobj.cc (Sized_dynobj::do_for_all_global_symbols): New
1088
        function.
1089
        * dynobj.h (Sized_dynobj::do_for_all_global_symbols): New
1090
        function.
1091
        * incremental.cc (Incremental_inputs::report_archive_begin):
1092
        Use Library_base; call library's get_mtime; add incremental inputs
1093
        entry before members.
1094
        (class Unused_symbol_visitor): New class.
1095
        (Incremental_inputs::report_archive_end): Use Library_base; use
1096
        visitor class to record unused symbols; don't add incremental inputs
1097
        entry after members.
1098
        (Incremental_inputs::report_object): Use Library_base.
1099
        * incremental.h
1100
        (Incremental_archive_entry::Incremental_archive_entry): Remove
1101
        unused Archive parameter.
1102
        (Incremental_inputs::report_archive_begin): Use Library_base.
1103
        (Incremental_inputs::report_archive_end): Likewise.
1104
        (Incremental_inputs::report_object): Likewise.
1105
        * object.cc (Sized_relobj::do_for_all_global_symbols): New
1106
        function.
1107
        * object.h (Object::for_all_global_symbols): New function.
1108
        (Object::do_for_all_global_symbols): New function.
1109
        (Sized_relobj::do_for_all_global_symbols): New function.
1110
        * plugin.cc (Sized_pluginobj::do_for_all_global_symbols):  New
1111
        function.
1112
        * plugin.h (Sized_pluginobj::do_for_all_global_symbols):  New
1113
        function.
1114
 
1115
2011-03-27  Ian Lance Taylor  
1116
 
1117
        * archive.cc (Archive::interpret_header): Return -1 if something
1118
        goes wrong.  Change callers accordingly.
1119
 
1120
2011-03-25  Cary Coutant  
1121
 
1122
        * testsuite/Makefile.am (final_layout.stdout): Use -n option with nm.
1123
        * testsuite/Makefile.in: Regenerate.
1124
 
1125
2010-03-23  Rafael Ávila de Espíndola 
1126
 
1127
        * plugin.cc (get_view): New.
1128
        (Plugin::load): Pass get_view to the plugin.
1129
        (Plugin_manager::get_view): New.
1130
 
1131
2011-03-21  Ian Lance Taylor  
1132
 
1133
        * testsuite/final_layout.sh: Rewrite to not use dc.
1134
        * testsuite/relro_test.sh: Fail if dc is not present.
1135
 
1136
2011-03-21  Sriraman Tallam  
1137
 
1138
        * testsuite/icf_safe_so_test.sh: Add #!/bin/sh to start.
1139
        Change == to -eq.
1140
        * testsuite/icf_string_merge_test.sh: Add #!/bin/sh to start.
1141
        * testsuite/icf_safe_test.sh: Add #!/bin/sh to start.
1142
        Change == to -eq.
1143
        * testsuite/icf_sht_rel_addend_test.sh: Add #!/bin/sh to start.
1144
        * testsuite/icf_preemptible_functions_test.sh: Add #!/bin/sh to start.
1145
 
1146
2011-03-14  Ian Lance Taylor  
1147
 
1148
        * script-sections.cc (Sort_output_sections::script_compare):
1149
        Rename from is_before, change return type.
1150
        (Sort_output_sections::operator()): Adjust accordingly.
1151
 
1152
2011-03-11  Jeffrey Yasskin  
1153
 
1154
        PR gold/12572
1155
        * testsuite/odr_violation2.cc: Add comment to make all error line
1156
        numbers double digits.
1157
        * testsuite/debug_msg.sh: Adjust expected errors.
1158
 
1159
2011-03-09  Jeffrey Yasskin  
1160
 
1161
        * dwarf_reader.cc (Sized_dwarf_line_info): Include all lines,
1162
        but mark earlier ones as non-canonical
1163
        (offset_to_iterator): Update search target and example
1164
        (do_addr2line): Return extra lines in a vector*
1165
        (format_file_lineno): Extract from do_addr2line
1166
        (one_addr2line): Add vector* out-param
1167
        * dwarf_reader.h (Offset_to_lineno_entry): New field recording
1168
        when a lineno entry appeared last for its instruction
1169
        (Dwarf_line_info): Add vector* out-param
1170
        * object.cc (Relocate_info): Pass NULL for the vector* out-param
1171
        * symtab.cc (Odr_violation_compare): Include the lineno in the
1172
        comparison again.
1173
        (linenos_from_loc): New. Combine the canonical line for an
1174
        address with its other lines.
1175
        (True_if_intersect): New. Helper functor to make
1176
        std::set_intersection a query.
1177
        (detect_odr_violations): Compare sets of lines instead of just
1178
        one line for each function. This became less deterministic, but
1179
        has fewer false positives.
1180
        * symtab.h: Declarations.
1181
        * testsuite/Makefile.am (odr_violation2.o): Compile with -O2 to
1182
        mix an optimized and non-optimized object in the same binary
1183
        (odr_violation2.so): Same.
1184
        * testsuite/Makefile.in: Regenerate from Makefile.am.
1185
        * testsuite/debug_msg.cc (main): Make OdrDerived classes.
1186
        * testsuite/debug_msg.sh: Update line numbers and add
1187
        assertions.
1188
        * testsuite/odr_violation1.cc: Use OdrDerived, in a
1189
        non-optimized context.
1190
        * testsuite/odr_violation2.cc: Make sure Ordering::operator()
1191
        isn't inlined, and use OdrDerived in an optimized context.
1192
        * testsuite/odr_header1.h: Defines OdrDerived, where
1193
        optimization will change the
1194
        first-instruction-in-the-destructor's file and line number.
1195
        * testsuite/odr_header2.h: Defines OdrBase.
1196
 
1197
2011-03-09  Ian Lance Taylor  
1198
 
1199
        * fileread.cc (File_read::clear_views): Don't delete the whole
1200
        file view.
1201
 
1202
2011-03-08  Ian Lance Taylor  
1203
 
1204
        PR gold/12525
1205
        * fileread.cc: #include .
1206
        (GOLD_IOV_MAX): Define.
1207
        (File_read::read_multiple): Limit number of entries by iov_max.
1208
        * fileread.h (class File_read): Always set max_readv_entries to
1209
        128.
1210
 
1211
2011-03-07  Ian Lance Taylor  
1212
 
1213
        PR gold/12525
1214
        * options.h (class General_options): Add -dy and -dn.
1215
 
1216
2011-03-02  Cary Coutant  
1217
 
1218
        * testsuite/script_test_9.t: Add TLS segment.
1219
 
1220
2011-03-02  Simon Baldwin  
1221
 
1222
        * configure.ac: Add check for gnu_indirect_function support in
1223
        the toolchain building binutils.
1224
        * configure: Rebuild.
1225
 
1226
2010-02-18  Rafael Ávila de Espíndola 
1227
 
1228
        * symtab.cc (Symbol::should_add_dynsym_entry) Return false for
1229
        plugin only symbols.
1230
        (Symbol_table::sized_finalize_symbol) Mark symbol only present
1231
        in plugin files as not needed in the symbol table.
1232
 
1233
2011-02-11  Sriraman Tallam  
1234
 
1235
        * output.cc (Output_section::add_input_section): Delay fill
1236
        generation for section ordering.
1237
 
1238
2011-02-09  Ian Lance Taylor  
1239
 
1240
        PR gold/12316
1241
        * object.h (class Sized_relobj): Remove clear_local_symbols.
1242
        * reloc.cc (Sized_relobj::do_relocate): Don't call
1243
        clear_local_symbols.
1244
 
1245
2010-02-08  Rafael Ávila de Espíndola 
1246
 
1247
        * plugin.cc (is_visible_from_outside): Return true for symbols
1248
        in the -u option.
1249
 
1250
2011-02-04  Jeffrey Yasskin  
1251
 
1252
        * symtab.cc (Odr_violation_compare::operator()): Sort by just the
1253
        filename.
1254
 
1255
2011-02-02  Sriraman Tallam  
1256
 
1257
        * icf.h (is_section_foldable_candidate): Change type of parameter
1258
        to std::string.
1259
        * icf.cc (Icf::find_identical_sections): Change type of local variable
1260
        section_name to be std::string.
1261
        (is_function_ctor_or_dtor): Change type of parameter to std::string.
1262
 
1263
2011-01-25  Ian Lance Taylor  
1264
 
1265
        * script.cc (script_add_extern): Rewrite to use
1266
        add_symbol_reference.
1267
 
1268
2011-01-25  Doug Kwan  
1269
 
1270
        * icf.cc (get_section_contents): Always lock section's object.
1271
 
1272
2011-01-24  Ian Lance Taylor  
1273
 
1274
        * options.h (class General_options): Accept
1275
        --no-detect-odr-violations.
1276
 
1277
2011-01-24  Ian Lance Taylor  
1278
 
1279
        * version.cc (version_string): Bump to 1.11.
1280
 
1281
2011-01-24  Ian Lance Taylor  
1282
 
1283
        * plugin.cc (class Plugin_rescan): Define new class.
1284
        (Plugin_manager::claim_file): Set any_claimed_.
1285
        (Plugin_manager::save_archive): New function.
1286
        (Plugin_manager::save_input_group): New function.
1287
        (Plugin_manager::all_symbols_read): Create Plugin_rescan task if
1288
        necessary.
1289
        (Plugin_manager::new_undefined_symbol): New function.
1290
        (Plugin_manager::rescan): New function.
1291
        (Plugin_manager::rescannable_defines): New function.
1292
        (Plugin_manager::add_input_file): Set any_added_.
1293
        * plugin.h (class Plugin_manager): define new fields rescannable_,
1294
        undefined_symbols_, any_claimed_, and any_added_.  Declare
1295
        Plugin_rescan as friend.  Declare new functions.
1296
        (Plugin_manager::Rescannable): Define type.
1297
        (Plugin_manager::Rescannable_list): Define type.
1298
        (Plugin_manager::Undefined_symbol_list): Define type.
1299
        (Plugin_manager::Plugin_manager): Initialize new fields.
1300
        * archive.cc (Archive::defines_symbol): New function.
1301
        (Add_archive_symbols::run): Pass archive to plugins if any.
1302
        * archive.h (class Archive): Declare defines_symbol.
1303
        * readsyms.cc (Input_group::~Input_group): New function.
1304
        (Finish_group::run): Pass input_group to plugins if any.
1305
        * readsyms.h (class Input_group): Declare destructor.
1306
        * symtab.cc (add_from_object): Pass undefined symbol to plugins if
1307
        any.
1308
 
1309
2011-01-10  Ian Lance Taylor  
1310
 
1311
        * layout.cc (Layout::layout_eh_frame): Mark a writable .eh_frame
1312
        section as relro.
1313
        (Layout::set_segment_offsets): Reset increase_relro before calling
1314
        set_section_addresses a second time.
1315
 
1316
2011-01-04  Cary Coutant  
1317
 
1318
        * script-sections.cc (Sort_output_sections::operator()): Sort TLS
1319
        sections before NOBITS sections.
1320
 
1321
2011-01-01  H.J. Lu  
1322
 
1323
        * version.cc (print_version): Update copyright to 2011.
1324
 
1325
2010-12-23  Cary Coutant  
1326
 
1327
        * output.h (Output_data_reloc::add_output_section): Pass OD instead
1328
        of OS to this->add.  Add OD parameter to second form of the function.
1329
 
1330
2010-12-20  Ian Lance Taylor  
1331
 
1332
        * dwarf_reader.cc (Sized_dwarf_line_info::read_lines): Only keep
1333
        second of two consecutive entries with same offset.
1334
 
1335
2010-12-16  Ralf Wildenhues  
1336
 
1337
        * testsuite/Makefile.am (ifuncmain2static_LDADD)
1338
        (ifuncmain2_LDADD, ifuncmain4static_LDADD, ifuncmain4_LDADD)
1339
        (ifuncmain7static_LDADD, ifuncmain7_LDADD): New empty variables,
1340
        to avoid unneeded links against $(LDADD).
1341
        * testsuite/Makefile.in: Regenerate.
1342
 
1343
2010-12-15  Ian Lance Taylor  
1344
 
1345
        PR gold/12324
1346
        * x86_64.cc (Target_x86_64::Scan::check_non_pic): Give an error
1347
        for R_X86_64_32 and R_X86_64_PC32.
1348
        * testsuite/Makefile.am (ver_matching_def.so): Depend on and use
1349
        ver_matching_def_pic.o.
1350
        (ver_matching_def_pic.o): New target.
1351
 
1352
2010-12-14  Ralf Wildenhues  
1353
 
1354
        * fileread.cc (file_counts_lock, file_counts_initialize_lock)
1355
        (total_mapped_bytes, current_mapped_bytes, maximum_mapped_bytes):
1356
        Move definition before File_read::View member definitions.
1357
        (File_read::View::~View): Initialize and hold lock before
1358
        updating current_mapped_bytes.
1359
 
1360
2010-12-14  Ralf Wildenhues  
1361
 
1362
        * dwarf_reader.cc: Remove outdated comment.
1363
        * gold-threads.cc: Fix typo in error message.
1364
        * archive.cc: Fix typos in comments.
1365
        * archive.h: Likewise.
1366
        * arm-reloc-property.cc: Likewise.
1367
        * arm-reloc-property.h: Likewise.
1368
        * arm-reloc.def: Likewise.
1369
        * arm.cc: Likewise.
1370
        * attributes.h: Likewise.
1371
        * cref.cc: Likewise.
1372
        * ehframe.cc: Likewise.
1373
        * fileread.h: Likewise.
1374
        * gold.h: Likewise.
1375
        * i386.cc: Likewise.
1376
        * icf.cc: Likewise.
1377
        * incremental.h: Likewise.
1378
        * int_encoding.cc: Likewise.
1379
        * layout.h: Likewise.
1380
        * main.cc: Likewise.
1381
        * merge.h: Likewise.
1382
        * object.cc: Likewise.
1383
        * object.h: Likewise.
1384
        * options.cc: Likewise.
1385
        * readsyms.cc: Likewise.
1386
        * reduced_debug_output.cc: Likewise.
1387
        * reloc.cc: Likewise.
1388
        * script-sections.cc: Likewise.
1389
        * sparc.cc: Likewise.
1390
        * symtab.h: Likewise.
1391
        * target-reloc.h: Likewise.
1392
        * target.cc: Likewise.
1393
        * target.h: Likewise.
1394
        * timer.cc: Likewise.
1395
        * timer.h: Likewise.
1396
        * x86_64.cc: Likewise.
1397
 
1398
2010-12-09  Cary Coutant  
1399
 
1400
        * layout.cc (Layout::layout_gnu_stack): Add warnings for executable
1401
        stack.
1402
        * layout.h (Layout::layout_gnu_stack): Add pointer to Object
1403
        parameter; change all callers.
1404
        * object.cc (Sized_relobj::do_layout): Adjust call to layout_gnu_stack.
1405
        * options.h (warn_execstack): New option.
1406
 
1407
2010-12-07  Doug Kwan  
1408
 
1409
        * arm.cc (Target_arm::Scan::get_reference_flags): Treat R_ARM_PREL31
1410
        like function call relocations.
1411
 
1412
2010-12-07  Ian Lance Taylor  
1413
 
1414
        * archive.cc (Archive::get_elf_object_for_member): Permit
1415
        punconfigured to be NULL.
1416
        (Archive::read_symbols): Pass NULL to get_elf_object_for_member.
1417
        (Archive::include_member): Pass NULL to get_elf_object_for_member
1418
        if we searched for the archive and this is the first included
1419
        object.
1420
 
1421
2010-12-01  Ian Lance Taylor  
1422
 
1423
        * dwarf_reader.h (class Sized_dwarf_line_info): Add
1424
        track_relocs_type_ field.
1425
        * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
1426
        Set track_relocs_type_.
1427
        (Sized_dwarf_line_info::process_one_opcode): Ignore the section
1428
        contents when using RELA relocs.
1429
        (Sized_dwarf_line_info::read_relocs): Add the reloc addend to
1430
        reloc_map_.
1431
        * reloc.cc (Track_relocs::next_addend): New function.
1432
        * reloc.h (class Track_relocs): Declare next_addend.
1433
 
1434
2010-12-01  Ian Lance Taylor  
1435
 
1436
        * testsuite/icf_virtual_function_folding_test.cc (class Bar): Add
1437
        virtual destructor.
1438
 
1439
2010-12-01  Ian Lance Taylor  
1440
 
1441
        * README: Update compilers known to work and fail.
1442
 
1443
2010-11-23  Matthias Klose  
1444
 
1445
        * configure.in: For --enable-gold, handle value `default' instead of
1446
        `both*'.  Always install ld as ld.bfd, install as ld if gold is
1447
        not the default.
1448
        * configure: Regenerate.
1449
 
1450
2010-11-18  Doug Kwan  
1451
 
1452
        * expression.cc (BINARY_EXPRESSION): Initialize left_alignment
1453
        and right_alignment to be zero.  Store result alignment only if it is
1454
        greater than existing alignment.
1455
 
1456
2010-11-16  Cary Coutant  
1457
 
1458
        PR gold/12220
1459
        * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
1460
        Check for ".zdebug_line".
1461
 
1462
2010-11-16  Doug Kwan  
1463
            Cary Coutant  
1464
 
1465
        * output.h (Output_segment::set_section_addresses): Pass increase_relro
1466
        by reference; adjust all callers.
1467
        * output.cc (Output_segment::set_section_addresses): Adjust references
1468
        to increase_relro. Add padding to *increase_relro when ORDER_RELRO_LAST
1469
        list is empty.
1470
        (Output_segment::set_offset): Assert if PT_GNU_RELRO segment does not
1471
        end at page boundary.
1472
 
1473
2010-11-16  Cary Coutant  
1474
 
1475
        PR gold/12220
1476
        * layout.cc (Layout::choose_output_section): Transform names of
1477
        compressed sections even when using a script with a SECTIONS clause.
1478
        (Layout::output_section_name): Remove code to transform
1479
        compressed debug section names.
1480
        * output.cc (Output_section::add_input_section): Use uncompressed
1481
        section size when tracking input sections.
1482
 
1483
2010-11-11  Richard Sandiford  
1484
 
1485
        * symtab.h (Symbol::NON_PIC_REF): Remove.
1486
        (Symbol::RELATIVE_REF, Symbol::TLS_REF): New Reference_flags.
1487
        (Symbol::FUNCTION_CALL): Renumber.  Reword comment.
1488
        (Symbol::needs_dynamic_reloc): Don't check NON_PIC_REF.
1489
        (Symbol::use_plt_offset): Take a flags argument and pass it
1490
        directly to needs_dynamic_reloc.  Restrict check for undefined
1491
        weak symbols to function calls.
1492
        * arm.cc (Target_arm::Scan::get_reference_flags): New function.
1493
        (Target_arm::Scan::global): Use it.
1494
        (Target_arm::Scan::scan_reloc_for_stub): Likewise.
1495
        (Target_arm::Relocate::relocate): Likewise.
1496
        (Target_arm::Relocate::should_apply_static_reloc): Replace flags
1497
        parameter with an r_type parameter.  Use get_reference_flags
1498
        to get the flags.
1499
        (Target_arm::Relocate::relocate): Update accordingly.
1500
        * i386.cc (Target_i386::Scan::get_reference_flags): New function.
1501
        (Target_i386::Scan::reloc_needs_plt_for_ifunc): Use it.
1502
        (Target_i386::Scan::global): Likewise.
1503
        (Target_i386::Relocate::relocate): Likewise.
1504
        (Target_i386::Relocate::should_apply_static_reloc): Replace flags
1505
        parameter with an r_type parameter.  Use get_reference_flags
1506
        to get the flags.
1507
        (Target_i386::Relocate::relocate): Update accordingly.
1508
        * powerpc.cc (Target_powerpc::Scan::get_reference_flags): New function.
1509
        (Target_powerpc::Scan::global): Use it.
1510
        (Target_powerpc::Scan::scan_reloc_for_stub): Likewise.
1511
        (Target_powerpc::Relocate::relocate): Likewise.
1512
        * sparc.cc (Target_sparc::Scan::get_reference_flags): New function.
1513
        (Target_sparc::Scan::global): Use it.
1514
        (Target_sparc::Scan::scan_reloc_for_stub): Likewise.
1515
        (Target_sparc::Relocate::relocate): Likewise.
1516
        * x86_64.cc (Target_x86_64::Scan::get_reference_flags): New function.
1517
        (Target_x86_64::Scan::reloc_needs_plt_for_ifunc): Use it.
1518
        (Target_x86_64::Scan::global): Likewise.
1519
        (Target_x86_64::Relocate::relocate): Likewise.
1520
 
1521
2010-11-08  Doug Kwan  
1522
            Cary Coutant  
1523
 
1524
        * arm.cc (Arm_exidx_merge_section::build_contents): New method.
1525
        (Arm_exidx_merge_section::section_contents_): New data member.
1526
        (Arm_input_section::Arm_input_section): Initialize original_contents_.
1527
        (Arm_input_section::~Arm_input_section): De-allocate memory.
1528
        (Arm_input_section::original_contents_): New data member.
1529
        (Arm_exidx_fixup::process_exidx_section): Pass EXIDX section contents
1530
        in parameters instead of calling Object::section_contents without
1531
        locking.
1532
        (Arm_output_section::group_section): New parameter TASK.  Pass it
1533
        to callees that need locking objects.
1534
        (Arm_output_section::fix_exidx_coverage): New parameter TASK.  Use it
1535
        to lock EXIDX input sections.  Fix a formatting issue.  Call
1536
        Arm_exidx_merged_section::build_contents to create merged section
1537
        contents.
1538
        (Arm_output_section::create_stub_group): New parameter TASK.  Use it
1539
        to lock object of stub table owner.
1540
        (Arm_exidx_input_section::Arm_exidx_input_section): Add new parameter
1541
        TEXT_SIZE to initialize data member TEXT_SIZE_.
1542
        (Arm_exidx_input_section::addralign): Fix typo in comment.
1543
        (Arm_exidx_input_section::text_size): New method.
1544
        (Target_arm::do_relax): New parameter TASK.  Pass it to callees
1545
        that require locking objects.  Lock objects before scanning for stubs
1546
        and updating local symbols.
1547
        (Arm_input_section::init): Copy contents of original
1548
        input section.
1549
        (Arm_input_section::do_write): Use saved contents of
1550
        original input section instead of calling Object::section_contents
1551
        without locking.
1552
        (Arm_exidx_cantunwind::do_fixed_endian_write): Find out text section
1553
        size without calling Object::section_size().
1554
        (Arm_exidx_merged_section::Arm_exidx_merged_section): Add sanity check
1555
        for size.  Allocate a buffer for merged EXIDX entries.
1556
        (Arm_exidx_merged_section::build_contents): New method.
1557
        (Arm_exidx_merged_section::do_write): Move merge section contents
1558
        building code to Arm_exidx_merged_section::build_contetns.  Write
1559
        out contetns in buffer instead of building it on the fly.
1560
        (Arm_relobj::make_exidx_input_section): Also pass text section size
1561
        to Arm_exidx_input_section constructor.
1562
        (Arm_relobj::do_read_symbols): Fix memory leak.  Fix a formatting issue.
1563
        (Arm_dynobj::do_read_symbols): Fix memory leak.
1564
        * layout.cc (Layout::finalize): Pass TASK to Target::relax().
1565
        * target.h: (class Task): Add forward declaration.
1566
        (Target::relax): Add new parameter TASK and pass it to
1567
        Target::do_relax().
1568
        (Target::do_relax):: New parameter TASK.  Fix a formatting issue.
1569
 
1570
2010-11-05  Cary Coutant  
1571
 
1572
        PR gold/10708
1573
        * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Hold a lock on the
1574
        object when reading from the file.
1575
        * gold.cc (queue_middle_tasks): Hold a lock on the object when doing
1576
        second layout pass.
1577
        * icf.cc (preprocess_for_unique_sections): Hold a lock on the object
1578
        when reading section contents.
1579
        (get_section_contents): Likewise.
1580
        (icf::find_identical_sections): Likewise.
1581
        * mapfile.cc (Mapfile::print_discarded_sections): Hold a lock on the
1582
        object when reading from the file.
1583
        * plugin.cc (Plugin_manager::layout_deferred_objects): Hold a lock on
1584
        the object when doing deferred section layout.
1585
 
1586
2010-11-03  Nick Clifton  
1587
 
1588
        PR gold/12001
1589
        * script.h (class Symbol_assignment: name): New member.  Returns
1590
        the name of the symbol.
1591
        * scrfipt.cc (Script_options::is_pending_assignment): New member.
1592
        Returns true if the given symbol name is on the list of
1593
        assignments wating to be processed.
1594
        * archive.cc (should_incldue_member): If the symbol is undefined,
1595
        check to see if it is on the list of symbols pending assignment.
1596
 
1597
2010-11-03  Ryan Mansfield  
1598
 
1599
        * script-sections.cc (Script_sections::find_memory_region): Check
1600
        for a NULL output section pointer.
1601
 
1602
2010-10-29  Doug Kwan  
1603
 
1604
        * arm.cc (Arm_outout_section::fix_exidx_coverage): Adjust call to
1605
        Output_section::add_relaxed_input_section.
1606
        * output.cc (Output_section::add_relaxed_input_section): Add new
1607
        arguments LAYOUT and NAME.  Set section order index.
1608
        (Output_section::convert_input_sections_in_list_to_relaxed_sections):
1609
        Copy section order index.
1610
        * output.h (Output_section::add_relaxed_input_section): Add new
1611
        arguments LAYOUT and NAME.
1612
 
1613
2010-10-29  Viktor Kutuzov  
1614
 
1615
        * testsuite/Makefile.am: Move gcctestdir/ld rule to
1616
        NATIVE_OR_CROSS_LINKER.
1617
        * testsuite/Makefile.in: Regenerate.
1618
 
1619
2010-10-20  Doug Kwan  
1620
 
1621
        * arm.cc (Arm_relobj::do_read_symbols): Warn about ARM EXIDX sections
1622
        without SHF_LINK_ORDER flags.
1623
        * layout.cc (Layout::choose_output_section): Do not filter
1624
        SHF_LINK_ORDER flag in a relocatable link.
1625
 
1626
2010-10-17  Cary Coutant  
1627
 
1628
        * output.h (Output_segment::set_section_addresses): Change function
1629
        signature.  Update all callers.
1630
        * output.cc (Output_segment::is_first_section_relro): Ignore TLS
1631
        sections.
1632
        (Output_segment::set_section_addresses): Align after last TLS
1633
        section.  Add padding before last relro section instead of after.
1634
 
1635
2010-10-17  Doug Kwan  
1636
 
1637
        * gold/arm.cc (Target_arm::got_section): Use correct order and set
1638
        GOT output section to be writable.
1639
 
1640
2010-10-14  Cary Coutant  
1641
 
1642
        * debug.h (DEBUG_INCREMENTAL): New flag.
1643
        (debug_string_to_enum): Add DEBUG_INCREMENTAL).
1644
        * gold.cc (queue_initial_tasks): Check parameters for incremental link
1645
        mode.
1646
        * incremental.cc (report_command_line): Ignore all forms of
1647
        --incremental.
1648
        * layout.cc (Layout::Layout): Check parameters for incremental link
1649
        mode.
1650
        * options.cc (General_options::parse_incremental): New function.
1651
        (General_options::parse_no_incremental): New function.
1652
        (General_options::parse_incremental_full): New function.
1653
        (General_options::parse_incremental_update): New function.
1654
        (General_options::incremental_mode_): New data member.
1655
        (General_options::finalize): Check incremental_mode_.
1656
        * options.h (General_options): Update help text for --incremental.
1657
        Add --no-incremental, --incremental-full, --incremental-update.
1658
        (General_options::Incremental_mode): New enum type.
1659
        (General_options::incremental_mode): New function.
1660
        (General_options::incremental_mode_): New data member.
1661
        * parameters.cc (Parameters::incremental_mode_): New data member.
1662
        (Parameters::set_options): Set incremental_mode_.
1663
        (Parameters::set_incremental_full): New function.
1664
        (Parameters::incremental): New function.
1665
        (Parameters::incremental_update): New function.
1666
        (set_parameters_incremental_full): New function.
1667
        * parameters.h (Parameters::set_incremental_full): New function.
1668
        (Parameters::incremental): New function.
1669
        (Parameters::incremental_update): New function.
1670
        (Parameters::incremental_mode_): New data member.
1671
        (set_parameters_incremental_full): New function.
1672
        * plugin.cc (Plugin_manager::add_input_file): Check parameters for
1673
        incremental link mode.
1674
        * reloc.cc (Sized_relobj::do_read_relocs): Likewise.
1675
        (Sized_relobj::do_relocate_sections): Likewise.
1676
        * testsuite/Makefile.am (incremental_test): Use --incremental-full
1677
        option.
1678
        * testsuite/Makefile.in: Regenerate.
1679
        * testsuite/incremental_test.sh: Filter all forms of --incremental.
1680
 
1681
2010-10-12  Viktor Kutuzov  
1682
 
1683
        * script-sections.h (class Script_sections): Make
1684
        Sections_elements typedef public.
1685
        * script-sections.cc (class Sort_output_sections): Add elements_
1686
        field.  Add constructor which sets it; change all callers.
1687
        (Sort_output_sections::is_before): New function.
1688
        (Sort_output_sections::operator()): Call is_before.
1689
        * configure.ac (NATIVE_OR_CROSS_LINKER): New automake
1690
        conditional.
1691
        * testsuite/script_test_10.sh: New test. Test script section
1692
        order.
1693
        * testsuite/script_test_10.t: Likewise.
1694
        * testsuite/script_test_10.s: Likewise.
1695
        * testsuite/Makefile.am: Wrap the cross linker tests and the
1696
        common tests into NATIVE_OR_CROSS_LINKER.
1697
        (check_SCRIPTS): Add script_test_10.sh.
1698
        (check_DATA): Add script_test_10.stdout.
1699
        (script_test_10.o, script_test_10): New targets.
1700
        (script_test_10.stdout): New target.
1701
        * configure, testsuite/Makefile.in: Regenerate.
1702
 
1703
2010-10-12  Viktor Kutuzov  
1704
 
1705
        * arm.cc (Target_arm::Scan::local): Report the unsupported reloc
1706
        error for the deprecated relocations.
1707
        (Target_arm::Scan::global): Likewise.
1708
        (Target_arm::Relocate::relocate): Likewise.
1709
 
1710
2010-10-12  Richard Sandiford  
1711
 
1712
        * fileread.cc (Input_file::find_file): Initialize *found_name
1713
        and *namep when using the fallback search for case 4.
1714
 
1715
2010-10-11  Cary Coutant  
1716
 
1717
        * options.h (class General_options): Redefine -z lazy as an alias for
1718
        the negation of -z now.
1719
 
1720
2010-10-11  Ian Lance Taylor  
1721
 
1722
        * resolve.cc (symbol_to_bits): Report the value of the unsupported
1723
        binding.
1724
 
1725
2010-10-06  Nick Clifton  
1726
 
1727
        * script-sections.cc(class Memory_region): Remove
1728
        current_lma_offset_ field.  Rename current_vma_offset_ to
1729
        current_offset_.  Add last_section_ field.
1730
        (Memory_region::get_current_vma_address): Rename to
1731
        get_current_address.
1732
        (Memory_region::get_current_lma_address): Delete.
1733
        (Memory_region::increment_vma_offset): Rename to
1734
        increment_offset.
1735
        (Memory_region::increment_lma_offset): Delete.
1736
        (Memory_region::attributes_compatible): New method.  Returns
1737
        true if the provided section is compatible with the region.
1738
        (Memory_region::get_last_section): New method.  Returns the last
1739
        section to use the region.
1740
        (Memory_region::set_last_section): New method.  Stores the last
1741
        section to use the region.
1742
        (Script_sections::block_in_region): New method.  Returns true if
1743
        a block of memory is contained within a region.
1744
        (Script_sections::find_memory_region): New method.  Locates a
1745
        memory region to be used to set a VMA or LMA address.
1746
        (Output_section_definition::set_section_addresses): Add code to
1747
        check for addresses set by memory regions.
1748
        (Output_segment::set_section_addresses): Remove memory region
1749
        walking code.
1750
        (Script_sections::create_segment): Add a warning if a header
1751
        segment is created outside of any region.
1752
        * script-sections.h (class Script_sections): Add prototypes for
1753
        find_memory_region and block_in_region methods.
1754
        * testsuite/memory_test.s: Use .long instead of .word.
1755
        * testsuite/memory_test.t: Add some more output sections.
1756
        * testsuite/memory_test.sh: Update expected output.
1757
 
1758
2010-10-02  Doug Kwan  
1759
 
1760
        * symtab.cc (Symbol_table::Symbol_table_hash::operator()): Move
1761
        defintion to symtab.h
1762
        * symtab.h (Symbol_table::Symbol_table_hash::operator()): Change
1763
        declaration to defintion.
1764
 
1765
2010-10-01  Nick Clifton  
1766
 
1767
        * expression.cc (eval): Replace dummy argument with NULL.
1768
        (eval_maybe_dot): Check for a NULL result section pointer.
1769
        (Symbol_expression::value): Likewise.
1770
        (Dot_expression::value): Likewise.
1771
        (BINARY_EXPRESSION): Likewise.
1772
        (Max_expression::value): Likewise.
1773
        (Min_expression::value): Likewise.
1774
        (Absolute_expression::value): Likewise.
1775
        (Addr_expression::value_from_output_section): Likewise.
1776
        (Loaddddr_expression::value_from_output_section): Likewise.
1777
        (Segment_start_expression::value): Likewise.
1778
        * script-sections.cc
1779
        (Sections_elememt_dot_assignment::finalize_symbols): Replace dummy
1780
        argument with NULL.
1781
        (Sections_elememt_dot_assignment::set_section_addresses):
1782
        Likewise.
1783
        (Output_data_expression::do_write_to_buffer): Likewise.
1784
        (Output_section_definition::finalize_symbols): Likewise.
1785
        (Output_section_definition::set_section_addresses): Likewise.
1786
 
1787
2010-09-30  Doug Kwan  
1788
 
1789
        * gold/testsuite/arm_branch_out_of_range.sh: Fix broken tests.
1790
 
1791
2010-09-28  Sriraman Tallam  
1792
 
1793
        * target.h (Target::can_icf_inline_merge_sections): New virtual
1794
        function.
1795
        * x86_64.cc (Target__x86_64::can_icf_inline_merge_sections): New
1796
        virtual function.
1797
        * i386.cc (Target_i386::can_icf_inline_merge_sections): New
1798
        virtual function.
1799
        * icf.cc (get_section_contents): Inline merge sections only when
1800
        target allows it.
1801
 
1802
2010-09-27  Ralf Wildenhues  
1803
 
1804
        * configure: Regenerate.
1805
 
1806
2010-09-17  Ian Lance Taylor  
1807
 
1808
        * testsuite/memory_test.sh: Adjust for change of 2010-09-10.
1809
        * testsuite/Makefile.am (memory_test.o): New target.
1810
        (memory_test): Depend on memory_test.o, gcctestdir/ld, and
1811
        memory_test.t.
1812
        * testsuite/Makefile.in: Rebuild.
1813
 
1814
2010-09-17  Doug Kwan  
1815
 
1816
        * arm.cc (Target_arm::Relocate::relocate): Ignore symbol type and
1817
        defintion if relocation uses GOT entries of the symbol.
1818
        * testsuite/icf_safe_test.sh: Fix test.
1819
        * testsuite/icf_safe_so_test.sh: Fix test.
1820
 
1821
2010-09-16  Cary Coutant  
1822
 
1823
        * script_sections.cc (class Memory_region): Remove "NULL" from
1824
        vector initializations.
1825
 
1826
2010-09-15  Cary Coutant  
1827
 
1828
        * incremental.cc (Output_section_incremental_inputs::write_info_blocks):
1829
        Resolve forwarding symbols.
1830
 
1831
2010-09-15  Doug Kwan  
1832
 
1833
        * gold/testsuite/script_test_3.t: Add ARM special sections.
1834
        * gold/testsuite/script_test_4.t: Same.
1835
        * gold/testsuite/script_test_5.t: Same.
1836
        * gold/testsuite/script_test_6.t: Same.
1837
        * gold/testsuite/script_test_7.t: Same.
1838
        * gold/testsuite/script_test_7.t: Same.
1839
        * gold/testsuite/thumb_blx_out_of_range.s: Fix instruction alignment.
1840
 
1841
2010-09-14  Cary Coutant  
1842
 
1843
        * x86_64.cc (Target_x86_64::saw_tls_block_reloc_): Remove member.
1844
        (Target_x86_64::Relocate::relocate_tls): Replace check for
1845
        saw_tls_block_reloc_ with test for executable section.
1846
 
1847
2010-09-12  Cary Coutant  
1848
 
1849
        * symtab.h (Symbol::needs_dynamic_reloc): Non-PIC calls from
1850
        position-independent executables to shared libraries need dynamic
1851
        relocations.
1852
        (Symbol::may_need_copy_reloc): Do not generate COPY relocs in
1853
        position-independent executables.
1854
        * testsuite/Makefile.am (two_file_mixed_pie_test): New test.
1855
        * testsuite/Makefile.in: Regenerate.
1856
 
1857
2010-09-10  Nick Clifton  
1858
 
1859
        PR gold/11997
1860
        * testsuite/memory_test.t: Discard any sections that are not
1861
        needed.
1862
 
1863
2010-09-09  H.J. Lu  
1864
 
1865
        PR gold/11996
1866
        * object.cc (Sized_relobj::do_finalize_local_symbols): Remove
1867
        "This::" to work around a bug in gcc 4.2.
1868
 
1869
        * testsuite/ifuncmain7.c (foo_ifunc): Add __attribute__ ((used)).
1870
 
1871
2010-09-09  Rafael Espindola  
1872
 
1873
        * layout.cc (Layout::attach_allocated_section_to_segment): Don't put
1874
        sections with different PF_X flags in the same segment.
1875
        (Layout::find_first_load_seg): Search all segments to find the first
1876
        one.
1877
        * options.h (rosegment): New.
1878
 
1879
2010-09-08  Rafael Espindola  
1880
 
1881
        * layout.cc (Layout::set_segment_offsets): Always advance to a new page.
1882
 
1883
2010-09-08  Doug Kwan  
1884
 
1885
        * arm.cc (Arm_exidx_cantunwind::do_print_to_mapfile): New method.
1886
        (Arm_relobj::do_relocate_sections): Add new parameter for output
1887
        file to match the parent.
1888
        (Target_arm::scan_reloc_section_for_stubs): Use would-be final values
1889
        of local symbols instead of input values.  Update code to track
1890
        changes in gold::relocate_section.
1891
        * object.cc (Sized_relobj::compute_final_local_value): New methods.
1892
        (Sized_relobj::compute_final_local_value_internal): New methods.
1893
        (Sized_relobj::do_finalize_local_symbols): Move code from loop
1894
        body into private version of Sized_relobj::compute_final_local_value.
1895
        Call the inline method.
1896
        * object.h (Symbol_value::Symbol_value): Define destructor.  Free
1897
        merged symbol value if there is one.
1898
        (Symbol_value::has_output_value): New method defintiion.
1899
        (Sized_relobj::Compute_final_local_value_status): New enum type.
1900
        (Sized_relobj::compute_final_local_value): New methods.
1901
        (Sized_relobj::compute_final_local_value_internal): New methods.
1902
        * Makefile.am (check_SCRIPTS): Add arm_branch_out_of_range.sh
1903
        and arm_cortex_a8.sh.
1904
        (thumb_bl_out_of_range_local, arm_cortex_a8_b_cond, arm_cortex_a8_bl,
1905
        arm_cortex_a8_blx, arm_cortex_a8_local, arm_corte_a8_local_reloc):
1906
        New tests.
1907
        * Makefile.in: Regenerate.
1908
        * testsuite/arm_bl_out_of_range.s: Update test.
1909
        * testsuite/thumb_bl_out_of_range.s: Ditto.
1910
        * testsuite/thumb_blx_out_of_range.s: Ditto.
1911
        * testsuite/arm_branch_out_of_range.sh: New file.
1912
        * testsuite/arm_cortex_a8.sh: Ditto.
1913
        * testsuite/arm_cortex_a8_b.s: Ditto.
1914
        * testsuite/arm_cortex_a8_b_cond.s: Ditto.
1915
        * testsuite/arm_cortex_a8_b_local.s: Ditto.
1916
        * testsuite/arm_cortex_a8_bl.s: Ditto.
1917
        * testsuite/arm_cortex_a8_blx.s: Ditto.
1918
        * testsuite/arm_cortex_a8_local.s: Ditto.
1919
        * testsuite/arm_cortex_a8_local_reloc.s: Ditto.
1920
        * testsuite/thumb_bl_out_of_range_local.s: Ditto.
1921
 
1922
2010-09-08  Rafael Espindola  
1923
 
1924
        * Makefile.am (memory_test.stdout): Run readelf with -W.
1925
        * Makefile.in: Regenerate.
1926
        * testsuite/memory_test.sh: Make the regexps accept both 32 and
1927
        64 bit output.
1928
 
1929
2010-09-08  Rafael Espindola  
1930
 
1931
        * script-sections.cc (Script_sections::add_memory_region): Convert
1932
        field precision to int.
1933
        * script.cc (script_set_section_region, script_set_section_region):
1934
        Convert field precision to int.
1935
 
1936
2010-09-08  Rafael Espindola  
1937
 
1938
        * arm.cc (do_finalize_sections): Create the __exidx_start and
1939
        __exdix_end symbols even when the section is missing.
1940
 
1941
2010-09-08  Nick Clifton  
1942
 
1943
        * README: Remove claim that MEMORY is not supported.
1944
        * expression.cc (script_exp_function_origin)
1945
        (script_exp_function_length): Move from here to ...
1946
        * script.cc: ... here.
1947
        (script_set_section_region, script_add_memory)
1948
        (script_parse_memory_attr, script_include_directive): New
1949
        functions.
1950
        * script-sections.cc
1951
        (class Memory_region): New class.
1952
        (class Output_section_definition): Add set_memory_region,
1953
        set_section_vma, set_section_lma and get_section_name methods.
1954
        (class Script_Sections): Add add_memory_region,
1955
        find_memory_region, find_memory_region_origin,
1956
        find_memory_region_length and set_memory_region methods.
1957
        Have set_section_addresses method walk the list of set memory
1958
        regions.
1959
        Extend the print methos to display memory regions.
1960
        * script-sections.h: Add prototypes for new methods.
1961
        Add enum for MEMORY region attributes.
1962
        * yyscript.y: Add support for parsing MEMORY regions.
1963
        * script-c.h: Add prototypes for new functions.
1964
        * testsuite/Makefile.am: Add test of MEMORY region functionality.
1965
        * testsuite/Makefile.in: Regenerate.
1966
        * testsuite/memory_test.sh: New script.
1967
        * testsuite/memory_test.s: New assembler source file.
1968
        * testsuite/memory_test.t: New linker script.
1969
 
1970
2010-08-27  Doug Kwan  
1971
 
1972
        * gold/resolve.cc (Symbol_table::should_override): Let a weak
1973
        reference override an existing dynamic weak reference.
1974
        * testsuite/Makefile.am: Add new test dyn_weak_ref.
1975
        * testsuite/Makefile.in: Regenerate.
1976
        * testsuite/dyn_weak_ref.sh: New file.
1977
        * testsuite/dyn_weak_ref_1.c: Ditto.
1978
        * testsuite/dyn_weak_ref_2.c: Ditto.
1979
 
1980
2010-08-27  Ian Lance Taylor  
1981
 
1982
        * incremental.h (class Incremental_input_entry): Add virtual
1983
        destructor.
1984
 
1985
2010-08-27  Ian Lance Taylor  
1986
 
1987
        * testsuite/start_lib_test_3.c: Mark t3 as used.
1988
 
1989
2010-08-27  Nick Clifton  
1990
 
1991
        * options.cc (version_script): Fix small typo in previous
1992
        whitespace tidyup.
1993
 
1994
2010-08-25  Nick Clifton  
1995
 
1996
        * archive.cc: Formatting fixes: Remove whitespace between
1997
        typename and following asterisk.  Remove whitespace between
1998
        function name and opening parenthesis.
1999
        * archive.h: Likewise.
2000
        * arm.cc: Likewise.
2001
        * attributes.cc: Likewise.
2002
        * attributes.h: Likewise.
2003
        * common.cc: Likewise.
2004
        * copy-relocs.cc: Likewise.
2005
        * dirsearch.h: Likewise.
2006
        * dynobj.cc: Likewise.
2007
        * ehframe.cc: Likewise.
2008
        * ehframe.h: Likewise.
2009
        * expression.cc: Likewise.
2010
        * fileread.cc: Likewise.
2011
        * fileread.h: Likewise.
2012
        * gc.h: Likewise.
2013
        * gold-threads.cc: Likewise.
2014
        * gold.cc: Likewise.
2015
        * i386.cc: Likewise.
2016
        * icf.h: Likewise.
2017
        * incremental-dump.cc: Likewise.
2018
        * incremental.cc: Likewise.
2019
        * layout.cc: Likewise.
2020
        * layout.h: Likewise.
2021
        * main.cc: Likewise.
2022
        * merge.cc: Likewise.
2023
        * merge.h: Likewise.
2024
        * object.cc: Likewise.
2025
        * object.h: Likewise.
2026
        * options.cc: Likewise.
2027
        * options.h: Likewise.
2028
        * output.cc: Likewise.
2029
        * output.h: Likewise.
2030
        * plugin.cc: Likewise.
2031
        * plugin.h: Likewise.
2032
        * powerpc.cc: Likewise.
2033
        * reloc.cc: Likewise.
2034
        * script-c.h: Likewise.
2035
        * script-sections.cc: Likewise.
2036
        * script.cc: Likewise.
2037
        * stringpool.cc: Likewise.
2038
        * symtab.cc: Likewise.
2039
        * symtab.h: Likewise.
2040
        * target.cc: Likewise.
2041
        * timer.cc: Likewise.
2042
        * timer.h: Likewise.
2043
        * version.cc: Likewise.
2044
        * x86_64.cc: Likewise.
2045
 
2046
2010-08-24  Nick Clifton  
2047
 
2048
        PR 11899
2049
        * layout.cc (segment_precedes): Sort segments by their physical
2050
        addresses, if they have been set.
2051
 
2052
2010-08-23  Cary Coutant  
2053
 
2054
        * archive.cc (Lib_group::add_symbols): Lock object before deleting its
2055
        symbols data.
2056
        (Lib_group::include_member): Unlock object after deleting its
2057
        symbols data.
2058
        * testsuite/start_lib_test_3.c: Remove all global symbols to trigger
2059
        the bug fixed here.
2060
 
2061
2010-08-19  Neil Vachharajani  
2062
            Cary Coutant  
2063
 
2064
        * gold/archive.h (Add_lib_group_symbols): Add readsyms_blocker_, adjust
2065
        constructor, and set_blocker.
2066
        * gold/archive.cc (Add_lib_group_symbols::is_runnable): Also check
2067
        readsyms_blocker_.
2068
        * gold/readsyms.cc (Read_symbols::do_lib_group): Also pass
2069
        this->this_blocker_ to Add_lib_group_symbols::set_blocker.
2070
        * testsuite/Makefile.am (start_lib_test): New test case.
2071
        * testsuite/Makefile.in: Regenerate.
2072
        * testsuite/start_lib_test_main.c: New file.
2073
        * testsuite/start_lib_test_1.c: New file.
2074
        * testsuite/start_lib_test_2.c: New file.
2075
        * testsuite/start_lib_test_3.c: New file.
2076
 
2077
2010-08-19  Ian Lance Taylor  
2078
 
2079
        * Makefile.in: Rebuild with automake 1.11.1.
2080
        * aclocal.m4: Likewise.
2081
        * testsuite/Makefile.in: Likewise.
2082
 
2083
2010-08-19  Ian Lance Taylor  
2084
 
2085
        PR 10893
2086
        * i386.cc (class Output_data_plt_i386): Update declarations.
2087
        Define Global_ifunc and Local_ifunc types.  Add global_ifuncs_ and
2088
        local_ifuncs_ fields.
2089
        (Target_i386::do_plt_section_for_global): New function.
2090
        (Target_i386::do_plt_section_for_local): New function.
2091
        (Output_data_plt_i386::Output_data_plt_i386): Add symtab
2092
        parameter; change all callers.  Initialize global_ifuncs_ and
2093
        local_ifuncs_.  If doing a static link define __rel_iplt_start and
2094
        __rel_iplt_end.
2095
        (Output_data_plt_i386::add_entry): Handle IFUNC symbols.
2096
        (Output_data_plt_i386::add_local_ifunc_entry): New function.
2097
        (Output_data_plt_i386::do_write): Fix GOT entries for IFUNC
2098
        symbols.
2099
        (Target_i386::make_plt_section): New function, broken out of
2100
        make_plt_entry.  Set sh_info field of .rel.plt to point to .plt.
2101
        (Target_i386::make_plt_entry): Call make_plt_section.
2102
        (Target_i386::make_local_ifunc_plt_entry): New function.
2103
        (Target_i386::Scan::reloc_needs_iplt_for_ifunc): New function.
2104
        (Target_i386::Scan::local): Handle IFUNC symbols.  Add
2105
        R_386_IRELATIVE to switch.
2106
        (Target_i386::Scan::global): Likewise.
2107
        (Target_i386::Relocate::relocate): Likewise.
2108
        (Target_i386::Relocatable_size_for_reloc): Add R_386_IRELATIVE to
2109
        switch.
2110
        * x86_64.cc (class Output_data_plt_x86_64): Update declarations.
2111
        (Target_x86_64::do_plt_section_for_global): New function.
2112
        (Target_x86_64::do_plt_section_for_local): New function.
2113
        (Output_data_plt_x86_64::Output_data_plt_x86_64): Add symtab
2114
        parameter; change all callers.  If doing a static link define
2115
        __rela_iplt_start and __rela_iplt_end.
2116
        (Output_data_plt_x86_64::add_entry): Handle IFUNC symbols.
2117
        (Output_data_plt_x86_64::add_local_ifunc_entry): New function.
2118
        (Target_x86_64::make_plt_section): Set sh_info field of .rel.plt
2119
        to point to .plt.
2120
        (Target_x86_64::make_local_ifunc_plt_entry): New function.
2121
        (Target_x86_64::Scan::check_non_pic): Add R_X86_64_IRELATIVE to
2122
        switch.
2123
        (Target_x86_64::Scan::reloc_needs_iplt_for_ifunc): New function.
2124
        (Target_x86_64::Scan::local): Handle IFUNC symbols.  Add
2125
        R_X86_64_IRELATIVE to switch.
2126
        (Target_x86_64::Scan::global): Likewise.
2127
        (Target_x86_64::Relocate::relocate): Likewise.
2128
        (Target_x86_64::Relocatable_size_for_reloc): Add R_X86_64_IRELATIVE to
2129
        switch.
2130
        * target.h (class Target): Add plt_section_for_global and
2131
        plt_section_for_local functions.  Add do_plt_section_for_global
2132
        and do_plt_section_for_local virtual functions.
2133
        * symtab.h (Symbol::needs_plt_entry): Handle IFUNC symbol.  Add
2134
        clarifying comments.
2135
        (Symbol::use_plt_offset): Handle IFUNC symbol.
2136
        * object.cc (Sized_relobj::Sized_relobj): Initialize
2137
        local_plt_offsets_.
2138
        (Sized_relobj::local_has_plt_offset): New function.
2139
        (Sized_relobj::local_plt_offset): New function.
2140
        (Sized_relobj::set_local_plt_offset): New function.
2141
        (Sized_relobj::do_count): Handle IFUNC symbol.
2142
        * object.h (class Symbol_value): Add is_ifunc_symbol_ field.  Take
2143
        a bit away from input_shndx_ field.  Add set_is_func_symbol and
2144
        is_ifunc_symbol functions.
2145
        (class Sized_relobj): Update declarations.  Remove Tls_got_entry
2146
        and Local_tls_got_offsets.  Define Local_plt_offsets.  Add
2147
        local_plt_offsets_ field.
2148
        (Sized_relobj::clear_local_symbols): Clear local_plt_offsets_.
2149
        * output.h (class Output_section_data): Add non-const
2150
        output_section function.
2151
        (class Output_data_got): Update declarations.
2152
        (class Output_data_got::Got_entry): Add use_plt_offset_ field.
2153
        Add use_plt_offset parameter to global and local constructors.
2154
        Change all callers.  Change local_sym_index_ field to 31 bits.
2155
        Change GSYM_CODE and CONSTANT_CODE accordingly.
2156
        * output.cc (Output_data_reloc_base::do_adjust_output_section): If
2157
        doing a static link don't set sh_link field.
2158
        (Output_data_got::Got_entry::write): Use PLT offset if
2159
        appropriate.
2160
        (Output_data_got::add_global_plt): New function.
2161
        (Output_data_got::add_local_plt): New function.
2162
        * target-reloc.h (relocate_section): Handle IFUNC symbol.
2163
        * defstd.cc (in_section): Remove entries for __rel_iplt_start,
2164
        __rel_iplt_end, __rela_iplt_start, and __rela_iplt_end.
2165
        * configure.ac: Set IFUNC automake conditional for glibc >= 2.11.
2166
        * testsuite/Makefile.am: Add a bunch of IFUNC tests, all within
2167
        IFUNC conditional.
2168
        * testsuite/ifunc-sel.h: New file.
2169
        * testsuite/ifuncmain1.c: New file.
2170
        * testsuite/ifuncmain1vis.c: New file.
2171
        * testsuite/ifuncmod1.c: New file.
2172
        * testsuite/ifuncdep2.c: New file.
2173
        * testsuite/ifuncmain2.c: New file.
2174
        * testsuite/ifuncmain3.c: New file.
2175
        * testsuite/ifuncmod3.c: New file.
2176
        * testsuite/ifuncmain4.c: New file.
2177
        * testsuite/ifuncmain5.c: New file.
2178
        * testsuite/ifuncmod5.c: New file.
2179
        * testsuite/ifuncmain6pie.c: New file.
2180
        * testsuite/ifuncmod6.c: New file.
2181
        * testsuite/ifuncmain7.c: New file.
2182
        * configure, testsuite/Makefile.in: Rebuild.
2183
 
2184
2010-08-18  Ian Lance Taylor  
2185
 
2186
        * incremental.cc
2187
        (Output_section_incremental_inputs::write_input_files): Add cast
2188
        to avoid signed/unsigned comparison warning.
2189
        (Output_section_incremental_inputs::write_info_blocks): Likewise.
2190
 
2191
2010-08-12  Cary Coutant  
2192
 
2193
        * common.cc (Sort_commons::operator()): Remove unnecessary code.
2194
 
2195
2010-08-13  Ian Lance Taylor  
2196
 
2197
        * testsuite/incremental_test_1.c: Add prototype to avoid warning.
2198
 
2199
2010-08-12  Cary Coutant  
2200
            Doug Kwan  
2201
 
2202
        * resolve.cc (Symbol_table::should_override): When a weak dynamic
2203
        defintion overrides non-weak undef, remember that the original undef
2204
        is not weak.
2205
        * symtab.cc (Symbol_table::sized_write_global): For undef without
2206
        an original weak binding, set binding to global in output.
2207
        * testsuite/Makefile.am: Add new test strong_ref_weak_def.
2208
        * testsuite/Makefile.in: Regenerate.
2209
        * testsuite/strong_ref_weak_def.sh: New file.
2210
        * testsuite/strong_ref_weak_def_1.c: Ditto.
2211
        * testsuite/strong_ref_weak_def_2.c: Ditto.
2212
 
2213
2010-08-12  Cary Coutant  
2214
 
2215
        * testsuite/incremental_test.sh: Rewrite.
2216
        * testsuite/incremental_test_1.c: Rewrite.
2217
        * testsuite/incremental_test_2.c: Rewrite.
2218
 
2219
2010-08-12  Cary Coutant  
2220
 
2221
        * arm.cc (Target_arm::got_size): Add const.
2222
        (Target_arm::got_entry_count): New function.
2223
        (Target_arm::plt_entry_count): New function.
2224
        (Target_arm::first_plt_entry_offset): New function.
2225
        (Target_arm::plt_entry_size): New function.
2226
        (Output_data_plt_arm::entry_count): New function.
2227
        (Output_data_plt_arm::first_plt_entry_offset): New function.
2228
        (Output_data_plt_arm::get_plt_entry_size): New function.
2229
        * i386.cc (Target_i386::got_size): Add const.
2230
        (Target_i386::got_entry_count): New function.
2231
        (Target_i386::plt_entry_count): New function.
2232
        (Target_i386::first_plt_entry_offset): New function.
2233
        (Target_i386::plt_entry_size): New function.
2234
        (Output_data_plt_i386::entry_count): New function.
2235
        (Output_data_plt_i386::first_plt_entry_offset): New function.
2236
        (Output_data_plt_i386::get_plt_entry_size): New function.
2237
        * incremental-dump.cc (dump_incremental_inputs): Adjust call to
2238
        find_incremental_inputs_sections.  Dump incremental_got_plt section.
2239
        * incremental.cc: Include target.h.
2240
        (Sized_incremental_binary::do_find_incremental_inputs_sections): Add
2241
        parameter.  Adjust all callers.  Find incremental_got_plt section.
2242
        (Incremental_inputs::create_data_sections): Create incremental_got_plt
2243
        section.
2244
        (Output_section_incremental_inputs::set_final_data_size): Calculate
2245
        size of incremental_got_plt section.
2246
        (Output_section_incremental_inputs::do_write): Write the
2247
        incremental_got_plt section.
2248
        (Got_plt_view_info): New struct.
2249
        (Local_got_offset_visitor): New class.
2250
        (Global_got_offset_visitor): New class.
2251
        (Global_symbol_visitor_got_plt): New class.
2252
        (Output_section_incremental_inputs::write_got_plt): New function.
2253
        * incremental.h (Incremental_binary::find_incremental_inputs_sections):
2254
        Add parameter.  Adjust all callers.
2255
        (Incremental_binary::do_find_incremental_inputs_sections): Likewise.
2256
        (Incremental_inputs::got_plt_section): New function.
2257
        (Incremental_inputs::got_plt_section_): New data member.
2258
        (Incremental_got_plt_reader): New class.
2259
        * layout.cc (Layout::create_incremental_info_sections): Add the
2260
        incremental_got_plt section.
2261
        * object.h (Got_offset_list::get_list): New function.
2262
        (Got offset_list::for_all_got_offsets): New function.
2263
        (Sized_relobj::local_got_offset_list): New function.
2264
        * powerpc.cc (Target_powerpc::got_size): Add const.
2265
        (Target_powerpc::got_entry_count): New function.
2266
        (Target_powerpc::plt_entry_count): New function.
2267
        (Target_powerpc::first_plt_entry_offset): New function.
2268
        (Target_powerpc::plt_entry_size): New function.
2269
        (Output_data_plt_powerpc::entry_count): New function.
2270
        (Output_data_plt_powerpc::first_plt_entry_offset): New function.
2271
        (Output_data_plt_powerpc::get_plt_entry_size): New function.
2272
        * sparc.cc (Target_sparc::got_size): Add const.
2273
        (Target_sparc::got_entry_count): New function.
2274
        (Target_sparc::plt_entry_count): New function.
2275
        (Target_sparc::first_plt_entry_offset): New function.
2276
        (Target_sparc::plt_entry_size): New function.
2277
        (Output_data_plt_sparc::entry_count): New function.
2278
        (Output_data_plt_sparc::first_plt_entry_offset): New function.
2279
        (Output_data_plt_sparc::get_plt_entry_size): New function.
2280
        * symtab.h (Symbol::got_offset_list): New function.
2281
        (Symbol_table::for_all_symbols): New function.
2282
        * target.h (Sized_target::got_entry_count): New function.
2283
        (Sized_target::plt_entry_count): New function.
2284
        (Sized_target::plt_entry_size): New function.
2285
        * x86_64.cc (Target_x86_64::got_size): Add const.
2286
        (Target_x86_64::got_entry_count): New function.
2287
        (Target_x86_64::plt_entry_count): New function.
2288
        (Target_x86_64::first_plt_entry_offset): New function.
2289
        (Target_x86_64::plt_entry_size): New function.
2290
        (Output_data_plt_x86_64::entry_count): New function.
2291
        (Output_data_plt_x86_64::first_plt_entry_offset): New function.
2292
        (Output_data_plt_x86_64::get_plt_entry_size): New function.
2293
 
2294
2010-08-12  Cary Coutant  
2295
 
2296
        * archive.cc: Include incremental.h.
2297
        (Archive::Archive): Initialize incremental_info_.
2298
        (Archive::include_member): Record archive members in incremental info.
2299
        (Add_archive_symbols::run): Record begin and end of an archive in
2300
        incremental info.
2301
        (Lib_group::include_member): Record objects in incremental info.
2302
        * archive.h (Incremental_archive_entry): Forward declaration.
2303
        (Archive::set_incremental_info): New member function.
2304
        (Archive::incremental_info): New member function.
2305
        (Archive::Unused_symbol_iterator): New class.
2306
        (Archive::unused_symbols_begin): New member function.
2307
        (Archive::unused_symbols_end): New member function.
2308
        (Archive::incremental_info_): New data member.
2309
        * incremental-dump.cc (find_input_containing_global): New function.
2310
        (dump_incremental_inputs): Dump new incremental info sections.
2311
        * incremental.cc: Include symtab.h.
2312
        (Output_section_incremental_inputs): New class.
2313
        (Sized_incremental_binary::do_find_incremental_inputs_sections): Support
2314
        new incremental info sections.
2315
        (Sized_incremental_binary::do_check_inputs): Likewise.
2316
        (Incremental_inputs::report_archive): Remove.
2317
        (Incremental_inputs::report_archive_begin): New function.
2318
        (Incremental_inputs::report_archive_end): New function.
2319
        (Incremental_inputs::report_object): New function.
2320
        (Incremental_inputs::finalize_inputs): Remove.
2321
        (Incremental_inputs::report_input_section): New function.
2322
        (Incremental_inputs::report_script): Rewrite.
2323
        (Incremental_inputs::finalize): Do nothing but finalize string table.
2324
        (Incremental_inputs::create_incremental_inputs_section_data): Remove.
2325
        (Incremental_inputs::sized_create_inputs_section_data): Remove.
2326
        (Incremental_inputs::create_data_sections): New function.
2327
        (Incremental_inputs::relocs_entsize): New function.
2328
        (Output_section_incremental_inputs::set_final_data_size): New function.
2329
        (Output_section_incremental_inputs::do_write): New function.
2330
        (Output_section_incremental_inputs::write_header): New function.
2331
        (Output_section_incremental_inputs::write_input_files): New function.
2332
        (Output_section_incremental_inputs::write_info_blocks): New function.
2333
        (Output_section_incremental_inputs::write_symtab): New function.
2334
        * incremental.h (Incremental_script_entry): Forward declaration.
2335
        (Incremental_object_entry): Forward declaration.
2336
        (Incremental_archive_entry): Forward declaration.
2337
        (Incremental_inputs): Forward declaration.
2338
        (Incremental_inputs_header_data): Remove.
2339
        (Incremental_inputs_header): Remove.
2340
        (Incremental_inputs_header_write): Remove.
2341
        (Incremental_inputs_entry_data): Remove.
2342
        (Incremental_inputs_entry): Remove.
2343
        (Incremental_inputs_entry_write): Remove.
2344
        (enum Incremental_input_type): Add INCREMENTAL_INPUT_ARCHIVE_MEMBER.
2345
        (Incremental_binary::find_incremental_inputs_sections): Add parameters.
2346
        (Incremental_binary::do_find_incremental_inputs_sections): Likewise.
2347
        (Sized_ncremental_binary::do_find_incremental_inputs_sections):
2348
        Likewise.
2349
        (Incremental_input_entry): New class.
2350
        (Incremental_script_entry): New class.
2351
        (Incremental_object_entry): New class.
2352
        (Incremental_archive_entry): New class.
2353
        (Incremental_inputs::Incremental_inputs): Initialize new data members.
2354
        (Incremental_inputs::report_inputs): Remove.
2355
        (Incremental_inputs::report_archive): Remove.
2356
        (Incremental_inputs::report_archive_begin): New function.
2357
        (Incremental_inputs::report_archive_end): New function.
2358
        (Incremental_inputs::report_object): Change prototype.
2359
        (Incremental_inputs::report_input_section): New function.
2360
        (Incremental_inputs::report_script): Change prototype.
2361
        (Incremental_inputs::get_reloc_count): New function.
2362
        (Incremental_inputs::set_reloc_count): New function.
2363
        (Incremental_inputs::create_data_sections): New function.
2364
        (Incremental_inputs::create_incremental_inputs_section_data): Remove.
2365
        (Incremental_inputs::inputs_section): New function.
2366
        (Incremental_inputs::symtab_section): New function.
2367
        (Incremental_inputs::relocs_section): New function.
2368
        (Incremental_inputs::get_stringpool): Add const.
2369
        (Incremental_inputs::command_line): Add const.
2370
        (Incremental_inputs::inputs): Remove.
2371
        (Incremental_inputs::command_line_key): New function.
2372
        (Incremental_inputs::input_file_count): New function.
2373
        (Incremental_inputs::input_files): New function.
2374
        (Incremental_inputs::relocs_entsize): New function.
2375
        (Incremental_inputs::sized_create_inputs_section_data): Remove.
2376
        (Incremental_inputs::finalize_inputs): Remove.
2377
        (Incremental_inputs::Input_info): Remove.
2378
        (Incremental_inputs::lock_): Remove.
2379
        (Incremental_inputs::inputs_): Change type.
2380
        (Incremental_inputs::inputs_map_): Remove.
2381
        (Incremental_inputs::current_object_entry_): New data member.
2382
        (Incremental_inputs::inputs_section_): New data member.
2383
        (Incremental_inputs::symtab_section_): New data member.
2384
        (Incremental_inputs::relocs_section_): New data member.
2385
        (Incremental_inputs::reloc_count_): New data member.
2386
        (Incremental_inputs_reader): New class.
2387
        (Incremental_symtab_reader): New class.
2388
        (Incremental_relocs_reader): New class.
2389
        * layout.cc (Layout::finalize): Move finalization of incremental info
2390
        and creation of incremental info sections to follow finalization of
2391
        symbol table.  Set offsets for postprocessing sections.
2392
        (Layout::create_incremental_info_sections): Call
2393
        Incremental_inputs::create_data_sections.  Add incremental symtab
2394
        and relocs sections.  Set sh_entsize and sh_link fields.  Arrange for
2395
        sections to layout after input sections.
2396
        * layout.h (struct Timespec): Forward declaration.
2397
        (Layout::incremental_inputs): Add const.
2398
        (Layout::create_incremental_info_sections): Add parameter.
2399
        * main.cc (main): Remove call to Incremental_inputs::report_inputs.
2400
        * object.cc: Include incremental.h.
2401
        (Relobj::finalize_incremental_relocs): New function.
2402
        (Sized_relobj::do_layout): Record input sections in incremental info.
2403
        * object.h (Object::output_section): New function.
2404
        (Object::output_section_offset): Moved from Relobj.
2405
        (Object::get_incremental_reloc_base): New function.
2406
        (Object::get_incremental_reloc_count): New function.
2407
        (Object::do_output_section): New function.
2408
        (Object::do_output_section_offset): Moved from Relobj.
2409
        (Object::do_get_incremental_reloc_base): New function.
2410
        (Object::do_get_incremental_reloc_count): New function.
2411
        (Object::Object): Initialize new data members.
2412
        (Relobj::output_section): Renamed do_output_section and moved to
2413
        protected.
2414
        (Relobj::output_section_offset): Moved to Object.
2415
        (Relobj::do_get_incremental_reloc_base): New function.
2416
        (Relobj::do_get_incremental_reloc_count): New function.
2417
        (Relobj::allocate_incremental_reloc_counts): New function.
2418
        (Relobj::count_incremental_reloc): New function.
2419
        (Relobj::finalize_incremental_relocs): New function.
2420
        (Relobj::next_incremental_reloc_index): New function.
2421
        (Relobj::reloc_counts_): New data member.
2422
        (Relobj::reloc_bases_): New data member.
2423
        (Sized_relobj::do_relocate_sections): Add parameter.  Change caller.
2424
        (Sized_relobj::relocate_sections): Add parameter.  Change all callers.
2425
        (Sized_relobj::incremental_relocs_scan): New function.
2426
        (Sized_relobj::incremental_relocs_scan_reltype): New function.
2427
        (Sized_relobj::incremental_relocs_write): New function.
2428
        (Sized_relobj::incremental_relocs_write_reltype): New function.
2429
        * plugin.cc (Plugin_manager::add_input_file): Rewrite test for
2430
        incremental link.
2431
        * readsyms.cc (Read_symbols::do_read_symbols): Move reporting of
2432
        archives and object files elsewhere.
2433
        (Add_symbols::run): Report object files here.
2434
        (Finish_group::run): Report end of archive at end of group.
2435
        * reloc.cc: Include layout.h, incremental.h.
2436
        (Sized_relobj::do_read_relocs): Need relocations for incremental link.
2437
        (Sized_relobj::do_scan_relocs): Record relocations for incremental link.
2438
        (Sized_relobj::incremental_relocs_scan): New function.
2439
        (Sized_relobj::incremental_relocs_scan_reltype): New function.
2440
        (Sized_relobj::do_relocate_sections): Write incremental relocations.
2441
        (Sized_relobj::incremental_relocs_write): New function.
2442
        (Sized_relobj::incremental_relocs_write_reltype): New function.
2443
        * script.cc (read_input_script): Rewrite test for incremental link.
2444
        Change call to Incremental_inputs::report_script.
2445
        * symtab.h (Symbol_table::first_global_index): New function.
2446
        (Symbol_table::output_count): New function.
2447
 
2448
2010-08-12  Doug Kwan  
2449
 
2450
        * arm.cc (Target_arm::merge_object_attributes): Check command line
2451
        options --no-wchar-size-warning and --no-enum-size-warning.
2452
        * options.h (General_options): Add ld-compatible options
2453
        --no-enum-size-warning and --no-wchar-size-warning.
2454
 
2455
2010-08-04  Ian Lance Taylor  
2456
 
2457
        * x86_64.cc (Target_x86_64::Scan::local): Use
2458
        R_X86_64_GNU_VTINHERIT instead of R_386_GNU_VTINHERIT and
2459
        R_X86_64_GNU_VTENTRY instead of R_386_GNU_VTENTRY.
2460
        (Target_x86_64::Scan::global): Likewise.
2461
        (Target_x86_64::Relocate::relocate): Likewise.
2462
        (Target_x86_64::Relocatable_size_for_reloc::get_size_for_reloc):
2463
        Likewise.
2464
 
2465
2010-08-03  Cary Coutant  
2466
 
2467
        * merge.cc (Output_merge_string::do_add_input_section): Count strings
2468
        to reserve space in merged_strings vector. Keep total input size
2469
        for stats.
2470
        (Output_merge_string::do_print_merge_stats): Print total input size.
2471
        * merge.h (Output_merge_string): Add input_size_ field.
2472
        * stringpool.cc (Stringpool_template::string_length): Move
2473
        implementations out of Stringpool_template class and place in
2474
        stringpool.h.
2475
        * stringpool.h (string_length): Move out of Stringpool_template.
2476
 
2477
2010-08-03  Ian Lance Taylor  
2478
 
2479
        PR 11712
2480
        * layout.cc (relaxation_loop_body): If address of load segment is
2481
        set, adjust address to include headers if possible.
2482
 
2483
2010-08-03  Ian Lance Taylor  
2484
 
2485
        * version.cc (version_string): Bump to 1.10.
2486
 
2487
2010-08-03  Ian Lance Taylor  
2488
 
2489
        PR 11805
2490
        * layout.h (enum Output_section_order): Define.
2491
        (class Layout): Update declarations.
2492
        * layout.cc (Layout::get_output_section): Add order parameter.
2493
        Remove is_interp, is_dynamic_linker_section, is_last_relro, and
2494
        is_first_non_relro parameters.  Change all callers.
2495
        (Layout::choose_output_section): Likewise.
2496
        (Layout::add_output_section_data): Likewise.
2497
        (Layout::make_output_section): Likewise.  Set order.
2498
        (Layout::default_section_order): New function.
2499
        (Layout::layout_eh_frame): Call add_output_section_to_nonload.
2500
        * output.cc (Output_section::Output_section): Initialize order_.
2501
        Don't initialize deleted fields.
2502
        (Output_segment::Output_segment): Don't initialize deleted
2503
        fields.
2504
        (Output_segment::add_output_section_to_load): New function
2505
        replacing add_output_section.  Change all callers to call this or
2506
        add_output_section_to_nonload.
2507
        (Output_segment::add_output_section_to_nonload): New function.
2508
        (Output_segment::remove_output_section): Rewrite.
2509
        (Output_segment::add_initial_output_data): Likewise.
2510
        (Output_segment::has_any_data_sections): Likewise.
2511
        (Output_segment::is_first_section_relro): Likewise.
2512
        (Output_segment::maximum_alignment): Likewise.
2513
        (Output_segment::has_dynamic_reloc): New function replacing
2514
        dynamic_reloc_count.  Change all callers.
2515
        (Output_segment::has_dynamic_reloc_list): New function replacing
2516
        dynamic_reloc_count_list.  Change all callers.
2517
        (Output_segment::set_section_addresses): Rewrite.
2518
        (Output_segment::set_offset): Rewrite.
2519
        (Output_segment::find_first_and_last_list): Remove.
2520
        (Output_segment::set_tls_offsets): Rewrite.
2521
        (Output_segment::first_section_load_address): Likewise.
2522
        (Output_segment::output_section_count): Likewise.
2523
        (Output_segment::section_with_lowest_load_address): Likewise.
2524
        (Output_segment::write_section_headers): Likewise.
2525
        (Output_segment::print_sections_to_map): Likewise.
2526
        * output.h (class Output_data): Remove dynamic_reloc_count_
2527
        field.  Add has_dynamic_reloc_ field.  Make bools into bitfields.
2528
        (Output_data::add_dynamic_reloc): Rewrite.
2529
        (Output_data::has_dynamic_reloc): New function.
2530
        (Output_data::dynamic_reloc_count): Remove.
2531
        (class Output_section): Add order_ field.  Remvoe is_relro_local_,
2532
        is_last_relro_, is_first_non_relro_, is_interp_,
2533
        is_dynamic_linker_section_ fields.  Add order and set_order
2534
        functions.  Remove is_relro_local, set_is_relro_local,
2535
        is_last_relro, set_is_last_relro, is_first_non_relro,
2536
        set_is_first_non_relro functions, is_interp, set_is_interp,
2537
        is_dynamic_linker_section, and set_is_dynamic_linker_section
2538
        functions.
2539
        (class Output_segment): Change Output_data_list from std::list to
2540
        std:;vector.  Add output_lists_ field.  Remove output_data_ and
2541
        output_bss_ fields.  Update declarations.
2542
 
2543
2010-08-02  Ian Lance Taylor  
2544
 
2545
        * arm.cc (Target_arm::gc_process_relocs): Use typename.
2546
        * powerpc.cc (Target_powerpc::gc_process_relocs): Likewise.
2547
        * sparc.cc (Target_sparc::gc_process_relocs): Likewise.
2548
 
2549
2010-08-02  Ian Lance Taylor  
2550
 
2551
        PR 11855
2552
        * script.cc (Script_options::Script_options): Initialize
2553
        symbol_definitions_ and symbol_references_.
2554
        (Script_options::add_symbol_assignment): Update
2555
        symbol_definitions_ and symbol_references_.
2556
        (Script_options::add_symbol_reference): New function.
2557
        (script_symbol): New function.
2558
        * script.h (class Script_options): Add symbol_definitions_ and
2559
        symbol_references_ fields.
2560
        (Script_options::referenced_const_iterator): New type.
2561
        (Script_options::referenced_begin): New function.
2562
        (Script_options::referenced_end): New function.
2563
        (Script_options::is_referenced): New function.
2564
        (Script_options::any_unreferenced): New function.
2565
        * script-c.h (script_symbol): Declare.
2566
        * yyscript.y (exp): Call script_symbol.
2567
        * symtab.cc: Include "script.h".
2568
        (Symbol_table::gc_mark_undef_symbols): Add layout parameter.
2569
        Change all callers.  Check symbols referenced by scripts.
2570
        (Symbol_table::add_undefined_symbols_from_command_line): Add
2571
        layout parameter.  Change all callers.
2572
        (Symbol_table::do_add_undefined_symbols_from_command_line):
2573
        Likewise.  Break out loop body.  Check symbols referenced by
2574
        scripts.
2575
        (Symbol_table::add_undefined_symbol_from_command_line): New
2576
        function broken out of
2577
        do_add_undefined_symbols_from_command_line.
2578
        * symtab.h (class Symbol_table): Update declarations.
2579
        * archive.cc: Include "layout.h".
2580
        (Archive::should_include_member): Add layout parameter.  Change
2581
        all callers.  Check for symbol mentioned in expression.
2582
        * archive.h (class Archive): Update declaration.
2583
        * object.cc (Sized_relobj::do_should_include_member): Add layout
2584
        parameter.
2585
        * object.h (Object::should_include_member): Add layout parameter.
2586
        Change all callers.
2587
        (Object::do_should_include_member): Add layout parameter.
2588
        (class Sized_relobj): Update declaration.
2589
        * dynobj.cc (Sized_dynobj::do_should_include_member): Add layout
2590
        parameter.
2591
        * dynobj.h (class Sized_dynobj): Update declaration.
2592
        * plugin.cc (Sized_pluginobj::do_should_include_member): Add
2593
        layout parameter.
2594
        * plugin.h (class Sized_pluginobj): Update declaration.
2595
 
2596
2010-08-02  Ian Lance Taylor  
2597
 
2598
        PR 11866
2599
        * output.cc (Output_segment::set_offset): Search for the first and
2600
        last sections rather than assuming that the list is in order.
2601
        (Output_segment::find_first_and_last_list): New function.
2602
        * output.h (class Output_segment): Update declarations.
2603
        * testsuite/Makefile.am (check_PROGRAMS): Add relro_strip_test.
2604
        (relro_strip_test_SOURCES): New variable.
2605
        (relro_strip_test_DEPENDENCIES): New variable.
2606
        (relro_strip_test_LDFLAGS): New variable.
2607
        (relro_strip_test_LDADD): New variable.
2608
        (relro_strip_test.so): New target.
2609
 
2610
2010-08-02  Ian Lance Taylor  
2611
 
2612
        * i386.cc (class Target_i386): Add got_tlsdesc_ field.
2613
        (Target_i386::Target_i386):: Initialize got_tlsdesc_.
2614
        (Target_i386::got_tlsdesc_section): New function.
2615
        (Target_i386::got_section): Create space for GOT entries for
2616
        TLSDESC relocations.
2617
        (Target_i386::Scan::local): Use TLSDESC GOT for unoptimized
2618
        R_386_TLS_GOTDESC.
2619
        (Target_i386::Scan::global): Likewise.
2620
        (Target_i386::Relocate::relocate_tls): Adjust GOT offset when
2621
        using TLSDESC GOT.
2622
        * x86_64.cc (class Target_x86_64): Add got_tlsdesc_ field.
2623
        (Target_x86_64::Target_x86_64):: Initialize got_tlsdesc_.
2624
        (Target_x86_64::got_tlsdesc_section): New function.
2625
        (Target_x86_64::got_section): Create space for GOT entries for
2626
        TLSDESC relocations.
2627
        (Target_x86_64::Scan::local): Use TLSDESC GOT for unoptimized
2628
        R_386_TLS_GOTDESC.
2629
        (Target_x86_64::Scan::global): Likewise.
2630
        (Target_x86_64::Relocate::relocate_tls): Adjust GOT offset when
2631
        using TLSDESC GOT.
2632
 
2633
2010-08-02  Ian Lance Taylor  
2634
 
2635
        * testsuite/final_layout.sh: Use dc to convert from hex to
2636
        decimal.
2637
 
2638
2010-07-29  Sriraman Tallam  
2639
 
2640
        * arm.cc (Target_arm::gc_process_relocs): Add template
2641
        paramter to the call to gold::gc_process_relocs.
2642
        * i386.cc (Target_i386::gc_process_relocs): Add template
2643
        paramter to the call to gold::gc_process_relocs.
2644
        * x86_64.cc (Target_x86_64::gc_process_relocs): Add template
2645
        parameter to the call to gold::gc_process_relocs.
2646
        * powerpc.cc (Target_powerpc::gc_process_relocs): Add
2647
        template parameter to the call to gold::gc_process_relocs.
2648
        * sparc.cc (Target_sparc::gc_process_relocs): Add template
2649
        paramter to the call to gold::gc_process_relocs.
2650
        * gc.h (get_embedded_addend_size): New function.
2651
        (gc_process_relocs): Save the size of the reloc for use by ICF.
2652
        * icf.cc (get_section_contents): Get the addend from the text section
2653
        for SHT_REL relocation sections.
2654
        * icf.h (Icf::Reloc_addend_size_info): New typedef.
2655
        (Icf::Reloc_info): Add new member reloc_addend_size_info.
2656
        * int_encoding.h (read_from_pointer): New overloaded function.
2657
        * testsuite/Makefile.am (icf_sht_rel_addend_test): New test.
2658
        * testsuite/icf_sht_rel_addend_test.sh: New file.
2659
        * testsuite/icf_sht_rel_addend_test_1.cc: New file.
2660
        * testsuite/icf_sht_rel_addend_test_2.cc: New file.
2661
 
2662
2010-07-28  Ralf Wildenhues  
2663
 
2664
        * configure.ac (AM_INIT_AUTOMAKE): Use parallel-tests option.
2665
        * Makefile.in: Regenerate.
2666
        * testsuite/Makefile.in: Regenerate.
2667
 
2668
2010-07-27  Jeffrey Yasskin  
2669
 
2670
        * testsuite/debug_msg.sh: Test mixed weak/strong symbol behavior.
2671
        * gold/testsuite/debug_msg.cc: Likewise.
2672
        * gold/testsuite/odr_violation1.cc
2673
        * gold/testsuite/odr_violation2.cc
2674
 
2675
2010-07-21  Cary Coutant  
2676
 
2677
        * merge.h (Output_merge_string::Merged_string): Remove object, shndx,
2678
        string, and length fields.
2679
        (Output_merge_string::Merged_strings_list): New type.
2680
        (Output_merge_string::Merged_strings_lists): New typedef.
2681
        (Output_merge_string): Replace merged_strings_ with
2682
        merged_strings_lists_.
2683
        * merge.cc (Output_merge_string::do_add_input_section): Allocate new
2684
        Merged_strings_list per input object and section.  Don't store pointer
2685
        to the string.  Don't store length with each merged string entry.
2686
        (Output_merge_string::finalize_merged_data): Loop over list of merged
2687
        strings lists.  Recompute length of each merged string.
2688
 
2689
2010-07-15  Cary Coutant  
2690
 
2691
        * plugin.cc (Plugin_finish::run): Don't call cleanup handlers from
2692
        here.
2693
 
2694
2010-07-14  Ian Lance Taylor  
2695
 
2696
        * descriptors.cc (Descriptors::open): Report correct name in error
2697
        message.
2698
 
2699
2010-07-13  Doug Kwan  
2700
 
2701
        * arm.cc (Arm_input_section::Arm_input_section): For a
2702
        SHT_ARM_EXIDX section, always keeps the input sections.
2703
        (Arm_input_section::set_exidx_section_link): New method.
2704
        (Arm_exidx_input_section::Arm_exidx_input_section): Initialize
2705
        has_errors_ to false.
2706
        (Arm_exidx_input_section::has_errors,
2707
        Arm_exidx_input_section::set_has_errors): New methods.
2708
        (Arm_exidx_input_section::has_errors_): New data member.
2709
        (Arm_relobj::get_exidx_shndx_list): New method.
2710
        (Arm_output_section::append_text_sections_to_list): Do not skip
2711
        section without SHF_EXECINSTR.
2712
        (Arm_output_section::fix_exidx_coverage): Skip input sections with
2713
        errors.
2714
        (Arm_relobj::make_exidx_input_section): Add new parameter for text
2715
        section header.  Make error messages more verbose.  Check for
2716
        a non-executable section linked to an EXIDX section.
2717
        (Arm_relobj::do_read_symbols): Remove error checking, which has been
2718
        moved to Arm_relobj::make_exidx_input_section.  Add an assertion to
2719
        check that there is no deferred EXIDX section if we exit early.
2720
        Instead of not making an EXIDX section in case of an error, make one
2721
        and set the has_errors flag of it.
2722
        (Target_arm::do_finalize_sections): Fix up links of EXIDX sections
2723
        in a relocatable link.
2724
        (Target_arm::do_relax): Look for the EXIDX output section instead of
2725
        assuming that it is called .ARM.exidx.
2726
        (Target_arm::fix_exidx_coverage): Add a new parameter for input
2727
        section list.  Do not check for SHF_EXECINSTR section flags but
2728
        skip any input section with errors.
2729
        * output.cc (Output_section::Output_section): Initialize
2730
        always_keeps_input_sections_ to false.
2731
        (Output_section::add_input_section): Check for
2732
        always_keeps_input_sections_.
2733
        *  output.h (Output_section::always_keeps_input_sections,
2734
        Output_section::set_always_keeps_input_sections): New methods.
2735
        (Output_section::always_keeps_input_sections): New data member.
2736
 
2737
2010-07-13  Rafael Espindola  
2738
 
2739
        * fileread.cc (try_extra_search_path, find_file): Move to Input_file.
2740
        * fileread.h (Input_file): Add try_extra_search_path and find_file.
2741
 
2742
2010-07-13  Philip Herron  
2743
            Ian Lance Taylor  
2744
 
2745
        * output.h (Output_section_lookup_maps::add_merge_section):
2746
        Correct check of whether value was inserted.
2747
        (Output_section_lookup_maps::add_merge_input_section): Likewise.
2748
        (Output_section_lookup_maps::add_relaxed_input_section):
2749
        Likewise.
2750
        * arm.cc (Target_arm::got_section): Remove used local os.
2751
        * i386.cc (Target_i386::got_section): Likewise.
2752
        * x86_64.cc (Target_x86_64::got_section): Likewise.
2753
        * sparc.cc (Target_sparc::got_section): Likewise.
2754
        (Target_sparc::relocate): Remove unused local have_got_offset.
2755
        * powerpc.cc (Target_powerpc::relocate): Likewise.
2756
 
2757
2010-07-13  Ian Lance Taylor  
2758
 
2759
        * compressed_output.cc (zlib_decompress): Fix signature in
2760
        !HAVE_ZLIB_H case.
2761
 
2762
        * archive.cc (Archive::include_member): Unlock an external member
2763
        of a thin archive.  Don't bother to delete an object we know is
2764
        NULL.
2765
 
2766
2010-07-12  Cary Coutant  
2767
 
2768
        * compressed_output.cc (zlib_decompress): New function.
2769
        (get_uncompressed_size): New function.
2770
        (decompress_input_section): New function.
2771
        * compressed_output.h (get_uncompressed_size): New function.
2772
        (decompress_input_section): New function.
2773
        * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info)
2774
        Handle compressed debug sections.
2775
        * layout.cc (is_compressed_debug_section): New function.
2776
        (Layout::output_section_name): Map compressed section names to
2777
        canonical names.
2778
        * layout.h (is_compressed_debug_section): New function.
2779
        (is_debug_info_section): Recognize compressed debug sections.
2780
        * merge.cc: Include compressed_output.h.
2781
        (Output_merge_data::do_add_input_section): Handle compressed
2782
        debug sections.
2783
        (Output_merge_string::do_add_input_section): Handle compressed
2784
        debug sections.
2785
        * object.cc: Include compressed_output.h.
2786
        (Sized_relobj::Sized_relobj): Initialize new data members.
2787
        (build_compressed_section_map): New function.
2788
        (Sized_relobj::do_read_symbols): Handle compressed debug sections.
2789
        * object.h (Object::section_is_compressed): New method.
2790
        (Object::do_section_is_compressed): New method.
2791
        (Sized_relobj::Compressed_section_map): New type.
2792
        (Sized_relobj::do_section_is_compressed): New method.
2793
        (Sized_relobj::compressed_sections_): New data member.
2794
        * output.cc (Output_section::add_input_section): Handle compressed
2795
        debug sections.
2796
        * reloc.cc: Include compressed_output.h.
2797
        (Sized_relobj::write_sections): Handle compressed debug sections.
2798
 
2799
2010-07-08  Cary Coutant  
2800
 
2801
        * resolve.cc (Symbol_table::resolve): Remember whether undef was
2802
        weak when resolving to a dynamic def.
2803
        (Symbol_table::should_override): Add adjust_dyndef flag; set it
2804
        for weak undef/dynamic def cases. Adjust callers.
2805
        * symtab.cc (Symbol::init_fields): Initialize undef_binding_set_ and
2806
        undef_binding_weak_.
2807
        (Symbol_table::sized_write_globals): Adjust symbol binding.
2808
        (Symbol_table::sized_write_symbol): Add binding parameter.
2809
        * symtab.h (Symbol::set_undef_binding): New method.
2810
        (Symbol::is_undef_binding_weak): New method.
2811
        (Symbol::undef_binding_set_, Symbol::undef_binding_weak_): New members.
2812
        (Symbol_table::should_override): Add new parameter.
2813
        (Symbol_table::sized_write_symbol): Add new parameter.
2814
 
2815
        * testsuite/weak_undef_file1.cc: Add new test case.
2816
        * testsuite/weak_undef_file2.cc: Fix header comment.
2817
        * testsuite/weak_undef_test.cc: Add new test case.
2818
 
2819
2010-06-29  Doug Kwan  
2820
 
2821
        * arm-reloc-property.cc (Arm_reloc_property::Arm_reloc_property):
2822
        Initialize USE_SYMBOL_.
2823
        * arm-reloc-property.h (Arm_reloc_property::uses_symbol): New method
2824
        definition.
2825
        (Arm_reloc_property::uses_symbol_): New data member declaration.
2826
        * arm.cc (Target_arm::Relocate::relocate): Exit early if relocation
2827
        uses symbol value and symbol is undefined but not weakly undefined.
2828
 
2829
2010-06-28  Rafael Espindola  
2830
 
2831
        * plugin.cc (Plugin::load): Use dlerror.
2832
 
2833
2010-06-26  Jeffrey Yaskin  
2834
 
2835
        * symtab.cc (detect_odr_violations): When reporting an ODR
2836
        violation, report an object where the symbol is defined.
2837
 
2838
2010-06-25  Doug Kwan  
2839
 
2840
        * arm.cc (Target_arm::can_check_for_functions_pointers): Return true.
2841
        (Target_arm::section_may_have_icf_unsafe_pointers): New method
2842
        definition.
2843
        (Target_arm::Scan::local_reloc_may_be_function_pointer,
2844
        Target_arm::Scan::global_reloc_may_be_function_pointer): Implement
2845
        target hook to detect function points.
2846
        (Target_arm::Scan::possible_function_pointer_reloc): New method.
2847
        * icf.h (Icf::check_section_for_function_pointers): Change type of
2848
        parameter SECTION_NAME to const reference to std::string.  Use
2849
        target hook to determine if section may have unsafe pointers.
2850
        * target.h (Target::section_may_have_icf_unsafe_pointers): New
2851
        method definition.
2852
 
2853
2010-06-21  Rafael Espindola  
2854
 
2855
        * fileread.cc (Input_file::find_fie): New
2856
        (Input_file::open): Use Input_file::find_fie.
2857
        * fileread.h (Input_file::find_fie): New
2858
        * plugin.cc (set_extra_library_path): New.
2859
        (Plugin::load): Add set_extra_library_path to the transfer vector.
2860
        (Plugin_manager::set_extra_library_path): New.
2861
        (Plugin_manager::add_input_file): Use the extra search path if set.
2862
        (set_extra_library_path(): New.
2863
        * plugin.h (Plugin_manager): Add set_extra_library_path and
2864
        extra_search_path_.
2865
 
2866
2010-06-19  Cary Coutant  
2867
 
2868
        * layout.cc (gdb_sections): Add .debug_types.
2869
        (lines_only_debug_sections): Likewise.
2870
 
2871
2010-06-18  Rafael Espindola  
2872
 
2873
        * plugin.cc (add_input_file,add_input_library)
2874
        (Plugin_manager::add_input_file): Make filename arguments const.
2875
        * plugin.h (Plugin_manager::add_input_file): Make filename arguments
2876
        const.
2877
 
2878
2010-06-16  Doug Kwan  
2879
 
2880
        * arm.cc (Target_arm::do_finalize_sections): Do not emit an
2881
        .ARM.attributes section if we have not merged any input
2882
        attributes sections.
2883
 
2884
2010-06-15  Viktor Kutuzov  
2885
 
2886
        * arm.cc: Allow combining objects with no EABI version
2887
        information.
2888
 
2889
2010-06-15  Rafael Espindola  
2890
 
2891
        * plugin.cc (Plugin_hook::run): Set in_real_elf for the start symbol.
2892
 
2893
2010-06-15  Viktor Kutuzov  
2894
 
2895
        * fileread.cc: Only #include  if HAVE_READV.
2896
        (struct iovec): Correct !HAVE_READV definition.
2897
 
2898
2010-06-10  Cary Coutant  
2899
 
2900
        * object.cc (Sized_relobj::do_layout): Defer layout for reloc sections.
2901
        (Sized_relobj::do_layout_deferred_sections): Do layout for deferred
2902
        reloc sections.
2903
        * object.h (Sized_relobj::deferred_layout_relocs_): New data member.
2904
 
2905
        PR 11683
2906
        * symtab.h (Symbol::is_placeholder): New member function.
2907
        * target-reloc.h (relocate_section): Check for placeholder symbols.
2908
 
2909
        * testsuite/Makefile.am (plugin_test_8): New test.
2910
        (plugin_test_9): New test.
2911
        * testsuite/Makefile.in: Regenerate.
2912
 
2913
2010-06-09  Nick Clifton  
2914
 
2915
        * yyscript.y (input_list_element): Allow strings prefixed with
2916
        the '-' character.  Treat these as libraries.
2917
        * script.cc (script_add_library): New function.  Adds a library
2918
        specified by "-l" found in an input script.
2919
        * script-c.h: Add prototype for script_add_library.
2920
 
2921
2010-06-07  Doug Kwan  
2922
 
2923
        * arm.cc (Target_arm::do_relax): Reserve more space for stubs.
2924
        Restrict stub-group size to be within long conditional branch
2925
        range when working around cortex-A8 erratum.
2926
 
2927
2010-06-07  Damien Diederen  
2928
 
2929
        * gold-threads.cc (Lock_impl_threads::Lock_impl_threads): Correct
2930
        #ifdef typo.
2931
 
2932
2010-06-03  Sriraman Tallam  
2933
 
2934
        PR gold/11658
2935
        * output.cc
2936
        (Output_section::Input_section_sort_entry::compare_section_ordering):
2937
        Change to return non-zero correctly.
2938
        (Output_section::Input_section_sort_section_order_index_compare
2939
        ::operator()): Change to fix ambiguity in comparisons.
2940
 
2941
2010-06-01  Sriraman Tallam  
2942
 
2943
        * gold.h (is_wildcard_string): New function.
2944
        * layout.cc (Layout::layout): Pass this pointer to add_input_section.
2945
        (Layout::layout_eh_frame): Ditto.
2946
        (Layout::find_section_order_index): New method.
2947
        (Layout::read_layout_from_file): New method.
2948
        * layout.h (Layout::find_section_order_index): New method.
2949
        (Layout::read_layout_from_file): New method.
2950
        (Layout::input_section_position_): New private member.
2951
        (Layout::input_section_glob_): New private member.
2952
        * main.cc (main): Call read_layout_from_file here.
2953
        * options.h (--section-ordering-file): New option.
2954
        * output.cc (Output_section::input_section_order_specified_): New
2955
        member.
2956
        (Output_section::Output_section): Initialize new member.
2957
        (Output_section::add_input_section): Add new parameter.
2958
        Keep input sections when --section-ordering-file is used.
2959
        (Output_section::set_final_data_size): Sort input sections when
2960
        section ordering file is specified.
2961
        (Output_section::Input_section_sort_entry): Add new parameter.
2962
        Check sorting type.
2963
        (Output_section::Input_section_sort_entry::compare_section_ordering):
2964
        New method.
2965
        (Output_section::Input_section_sort_compare::operator()): Change to
2966
        consider section_order_index.
2967
        (Output_section::Input_section_sort_init_fini_compare::operator()):
2968
        Change to consider section_order_index.
2969
        (Output_section::Input_section_sort_section_order_index_compare
2970
        ::operator()): New method.
2971
        (Output_section::sort_attached_input_sections): Change to sort
2972
        according to section order when specified.
2973
        (Output_section::add_input_section<32, true>): Add new parameter.
2974
        (Output_section::add_input_section<64, true>): Add new parameter.
2975
        (Output_section::add_input_section<32, false>): Add new parameter.
2976
        (Output_section::add_input_section<64, false>): Add new parameter.
2977
        * output.h (Output_section::add_input_section): Add new parameter.
2978
        (Output_section::input_section_order_specified): New
2979
        method.
2980
        (Output_section::set_input_section_order_specified): New method.
2981
        (Input_section::Input_section): Initialize section_order_index_.
2982
        (Input_section::section_order_index): New method.
2983
        (Input_section::set_section_order_index): New method.
2984
        (Input_section::section_order_index_): New member.
2985
        (Input_section::Input_section_sort_section_order_index_compare): New
2986
        struct.
2987
        (Output_section::input_section_order_specified_): New member.
2988
        * script-sections.cc (is_wildcard_string): Delete and move modified
2989
        method to gold.h.
2990
        (Output_section_element_input::Output_section_element_input): Modify
2991
        call to is_wildcard_string.
2992
        (Output_section_element_input::Input_section_pattern
2993
        ::Input_section_pattern): Ditto.
2994
        (Output_section_element_input::Output_section_element_input): Ditto.
2995
        * testsuite/Makefile.am (final_layout): New test case.
2996
        * testsuite/Makefile.in: Regenerate.
2997
        * testsuite/final_layout.cc: New file.
2998
        * testsuite/final_layout.sh: New file.
2999
 
3000
2010-06-01  Rafael Espindola  
3001
 
3002
        * plugin.cc (Plugin::load): Pass the output name to the plugin.
3003
 
3004
2010-06-01  Rafael Espindola  
3005
 
3006
        * plugin.cc (Sized_pluginobj::::do_add_symbols): Correctly set the
3007
        visibility of symbols.
3008
 
3009
2010-05-27  Doug Kwan  
3010
 
3011
        * object.cc (Sized_relobj::do_finalize_local_symbols): Use offset
3012
        from start of output section instead of address for a local symbol
3013
        in a merged or relaxed section when doing a relocatable link.
3014
 
3015
2010-05-26  Rafael Espindola  
3016
 
3017
       PR 11604
3018
        * gold/object.cc(Sized_relobj::do_layout_deferred_sections): Avoid
3019
        adding sections the garbage collector removed.
3020
        * gold/testsuite/Makefile.am: Add test.
3021
        * gold/testsuite/Makefile.in: Regenerate.
3022
        * gold/testsuite/plugin_test_7.sh: New.
3023
        * gold/testsuite/plugin_test_7_1.c: New.
3024
        * gold/testsuite/plugin_test_7_2.c: New.
3025
 
3026
2010-05-26  Rafael Espindola  
3027
 
3028
        * script-sections.cc (Output_section_definition::set_section_addresses):
3029
        Check for --section-start.
3030
 
3031
2010-05-26  Doug Kwan  
3032
 
3033
        * arm.cc (Arm_scan_relocatable_relocs): New class.
3034
        (Target_arm::relocate_special_relocatable): New method.
3035
        (Arm_relocate_functions::arm_branch_common): Handle relocatable link.
3036
        (Arm_relocate_functions::thumb_branch_common): Same.
3037
        (Target_arm::scan_relocatable_relocs): Use Arm_scan_relocatable_relocs
3038
        instead of Default_scan_relocatable_relocs.
3039
        * target-reloc.h (relocate_for_relocatable): Let target handle
3040
        relocation strategy Relocatable_relocs::RELOC_SPECIAL.
3041
        * target.h (Sized_target::relocate_special_relocatable): New method.
3042
 
3043
2010-05-25  Viktor Kutuzov  
3044
 
3045
        * timer.cc: Only #include  if HAVE_TIMES is defined.
3046
 
3047
2010-05-23  Doug Kwan  
3048
 
3049
        * arm.cc (Arm_input_section::do_output_offset): Use convert_types
3050
        instead of a cast.
3051
        (Target_arm::apply_cortex_a8_workaround): Rewrite a conditional branch
3052
        with a direct branch, not a conditional branch, to a stub.
3053
        * merge.cc (Output_merge_base::record_input_section): New method
3054
        defintion.
3055
        (Output_merge_data::do_add_input_section): Record input section if
3056
        keeps-input-sections flag is set.
3057
        (Output_merge_string::do_add_input_section): Ditto.
3058
        * merge.h (Output_merge_base::Output_merge_base): Initialize new data
3059
        members KEEPS_INPUT_SECTIONS_, FIRST_RELOBJ_, FIRST_SHNDX_ and
3060
        INPUT_SECTIONS_.
3061
        (Output_merge_base::keeps_input_sections,
3062
        Output_merge_base::set_keeps_input_sections,
3063
        Output_merge_base::first_relobj, Output_merge_base::first_shndx): New
3064
        method definitions.
3065
        (Output_merge_base::Input_sections): New type declaration.
3066
        (Output_merge_base::input_sections_begin,
3067
        Output_merge_base::input_sections_end,
3068
        Output_merge_base::do_set_keeps_input_sections): New method definitions.
3069
        (Output_merge_base::bool keeps_input_sections_,
3070
        Output_merge_base::first_relobj_, Output_merge_base::first_shndx_,
3071
        Output_merge_base::input_sections_): New data members.
3072
        (Output_merge_data::do_set_keeps_input_sections): New method
3073
        defintion.
3074
        (Output_merge_string::do_set_keeps_input_sections): Ditto.
3075
        * output.cc (Output_section::Input_section::relobj): Move method
3076
        defintion from class declaration to here and handle merge sections.
3077
        (Output_section::Input_section::shndx): Ditto.
3078
        (Output_section::Output_section): Remove initializations of removed
3079
        data members and initialize new data member LOOKUP_MAPS_.
3080
        (Output_section::add_input_section): Set keeps-input-sections flag
3081
        for a newly created merge output section as appropriate.  Adjust code
3082
        to use Output_section_lookup_maps class.
3083
        (Output_section::add_relaxed_input_section): Adjst code for lookup
3084
        maps code refactoring.
3085
        (Output_section::add_merge_input_section): Add a new parameter
3086
        KEEPS_INPUT_SECTION.  Adjust code to use Output_section_lookup_maps
3087
        class.  If adding input section to a newly created merge output
3088
        section fails, remove the new merge section.
3089
        (Output_section::convert_input_sections_in_list_to_relaxed_input_sections):
3090
        Adjust code for use of the Output_section_lookup_maps class.
3091
        (Output_section::find_merge_section): Ditto.
3092
        (Output_section::build_lookup_maps): New method defintion.
3093
        (Output_section::find_relaxed_input_section): Adjust code to use
3094
        Output_section_lookup_maps class.
3095
        (Output_section::get_input_sections): Export merge sections.  Adjust
3096
        code to use Output_section_lookup_maps class.
3097
        (Output_section:::add_script_input_section): Adjust code to use
3098
        Output_section_lookup_maps class.  Update lookup maps for merge
3099
        sections also.
3100
        (Output_section::discard_states): Use Output_section_lookup_maps.
3101
        (Output_section::restore_states): Same.
3102
        * output.h (Merge_section_properties): Move class defintion out of
3103
        Output_section.
3104
        (Output_section_lookup_maps): New class.
3105
        (Output_section::Input_section::is_merge_section): New method
3106
        defintion.
3107
        (Output_section::Input_section::relobj): Move defintion out of class
3108
        defintion.  Declare method only.
3109
        (Output_section::Input_section::shndx): Ditto.
3110
        (Output_section::Input_section::output_merge_base): New method defintion.
3111
        (Output_section::Input_section::u2_.pomb): New union field.
3112
        (Output_section::Merge_section_by_properties_map,
3113
        Output_section::Output_section_data_by_input_section_map,
3114
        Output_section::Ouptut_relaxed_input_section_by_input_section_map):
3115
        Remove types.
3116
        (Output_section::add_merge_input_section): Add new parameter
3117
        KEEPS_INPUT_SECTIONS.
3118
        (Output_section::build_lookup_maps): New method declaration.
3119
        (Output_section::merge_section_map_,
3120
        Output_section::merge_section_by_properties_map_,
3121
        Output_section::relaxed_input_section_map_,
3122
        Output_section::is_relaxed_input_section_map_valid_): Remove data
3123
        members.
3124
        (Output_section::lookup_maps_): New data member.
3125
 
3126
2010-05-21  Doug Kwan  
3127
 
3128
        PR gold/11619
3129
        * arm.cc (Arm_input_section::do_output_offset): Add a cast to
3130
        avoid a compilation error.
3131
 
3132
2010-05-19  Rafael Espindola  
3133
 
3134
        * script-sections.cc (Output_section_definition::allocate_to_segment):
3135
        Update the phdrs_list even when the output section is NULL.
3136
        * testsuite/Makefile.am: Add test.
3137
        * testsuite/Makefile.in: Regenerate.
3138
        * testsuite/script_test_9.cc: New.
3139
        * testsuite/script_test_9.sh: New.
3140
        * testsuite/script_test_9.t: New.
3141
 
3142
2010-05-19  Doug Kwan  
3143
 
3144
        * arm.cc (Arm_input_section::original_size): New method.
3145
        (Arm_input_section::do_addralign): Add a cast.
3146
        (Arm_input_section::do_output_offset): Remove static cast.
3147
        (Arm_input_section::original_addralign,
3148
         Arm_input_section::original_size_): Change type to uint32_t.
3149
        (Arm_input_section::init): Add safe casts for section alignment
3150
        and size.
3151
        (Arm_input_section::set_final_data_size): Do not set address and
3152
        offset of stub table.
3153
        (Arm_output_section::fix_exidx_coverage): Change use of of
3154
        Output_section::Simple_input_section to that of
3155
        Output_section::Input_section.
3156
        (Target_arm::do_relax): Set addresses and file offsets of Stub_tables
3157
        except for the first pass.
3158
        * output.cc (Output_section::get_input_sections): Change type of
3159
        input_sections to std::list.
3160
        (Output_section::add_script_input_section): Rename from
3161
        Output_section::add_simple_input_section.  Change type of SIS
3162
        parameter from Simple_input_section to Input_section.
3163
        * output.h (Output_section::Simple_input_section): Remove class.
3164
        (Output_section::Input_section): Change class visibility to public.
3165
        (Output_section::Input_section::addralign): Use stored alignments
3166
        for special input sections if set.
3167
        (Output_section::Input_section::set_addralign): New method.
3168
        (Output_section::get_input_sections): Change parameter type from
3169
        list of Simple_input_section to list of Input_section.
3170
        (Output_section::add_script_input_section): Rename from
3171
        Output_section::add_simple_input_section. Change first parameter's
3172
        type from Simple_input_section to Input_section and remove the
3173
        second and third parameters.
3174
        * script-sections.cc (Input_section::Input_section_list): Change
3175
        type to list of Output_section::Input_section/
3176
        (Input_section_info::Input_section_info): Change parameter type of
3177
        INPUT_SECTION to Output_section::Input_section.
3178
        (Input_section_info::input_section): Change return type.
3179
        (Input_section_info::input_section_): Change type to
3180
        Output_section::Input_section.
3181
        (Output_section_element_input::set_section_addresses): Adjust code
3182
        to use Output_section::Input_section instead of
3183
        Output_section::Simple_input_section.  Adjust code for renaming
3184
        of Output_section::add_simple_input_section.
3185
        (Orphan_output_section::set_section_addresses): Ditto.
3186
 
3187
2010-05-18  Ralf Wildenhues  
3188
 
3189
        * gold.h (Unordered_multimap, Unordered_map): Fix defines for
3190
        when neither HAVE_TR1_UNORDERED_MAP nor HAVE_EXT_HASH_MAP are set.
3191
 
3192
2010-05-18  Rafael Espindola  
3193
 
3194
        * options.cc (General_options::finalize): Handle -nostdlib.
3195
        * options.h (nostdlib): New option.
3196
        * script.cc (script_add_search_dir): Handle -nostdlib.
3197
 
3198
2010-05-12  Doug Kwan  
3199
 
3200
        * arm.cc (Target_arm::do_finalize_sections): Create an empty
3201
        attributes section only if there no attributes section after merging.
3202
        (Target_arm::merge_object_attributes): Move value of
3203
        Tag_MPextension_use_legacy to that of Tag_MPextension_use.
3204
        Handle Tag_DIV_use and Tag_MPextension_use_legacy.
3205
        * testsuite/Makefile.am (check_SCRIPTS): Add arm_attr_merge.sh
3206
        (check_DATA): Add arm_attr_merge_6.stdout, arm_attr_merge_6r_stdout
3207
        and arm_attr_merge_7.stdout.
3208
        (arm_attr_merge_6.stdout, arm_attr_merge_6 arm_attr_merge_6a.o
3209
        arm_attr_merge_6b.o, arm_attr_merge_6r.stdout, arm_attr_merge_6r,
3210
        arm_attr_merge_7.stdout, arm_attr_merge_7, arm_attr_merge_7a.o,
3211
        arm_attr_merge_7b.o): New rules.
3212
        (MOSTLYCLEANFILES): Add arm_attr_merge_6, arm_attr_merge_6r and
3213
        arm_attr_merge_7
3214
        * testsuite/Makefile.in: Regenerate.
3215
        * testsuite/arm_attr_merge.sh: New file.
3216
        * testsuite/arm_attr_merge_[67][ab].s: Same.
3217
 
3218
2010-05-05  Nick Clifton  
3219
 
3220
        * po/es.po: Updated Spanish translation.
3221
 
3222
2010-04-27  H.J. Lu  
3223
 
3224
        * Makefile.am (install-exec-local): Properly install gold as
3225
        default cross linker.
3226
        * Makefile.in: Regenerated.
3227
 
3228
2010-04-27  H.J. Lu  
3229
            Nick Clifton  
3230
 
3231
        * configure.ac (install_as_default): Define and set to false
3232
        unless --enable-gold or --enable-gold=both/gold has been
3233
        specified.
3234
        * configure: Regenerate.
3235
 
3236
        * Makefile.am (install-exec-local): Install the executable as
3237
        'ld.gold'.  If install_as_default is true then also install it as
3238
        'ld'.
3239
        * Makefile.in: Regenerated.
3240
 
3241
2010-04-24  Ian Lance Taylor  
3242
 
3243
        * layout.cc (Layout::layout_reloc): In relocatable link don't
3244
        combine reloc sections for grouped sections.
3245
 
3246
2010-04-23  Sriraman Tallam  
3247
 
3248
        * gc.h (gc_process_relocs): Pass information on relocs pointing to
3249
        sections that are not ordinary to icf.
3250
        * icf.cc (get_section_contents): Handle relocation pointing to section
3251
        with no object or shndx information.
3252
        * testsuite/Makefile.am: Remove icf_virtual_function_folding_test.sh
3253
        * testsuite/Makefile.in: Regenerate.
3254
        * testsuite/icf_virtual_function_folding_test.cc: Remove printf.
3255
        * testsuite/icf_virtual_function_folding_test.sh: Delete file.
3256
 
3257
2010-04-22  Ian Lance Taylor  
3258
 
3259
        * expression.cc (Expression::Expression_eval_info): Add
3260
        result_alignment_pointer field.
3261
        (Expression::eval_with_dot): Add result_alignment_pointer
3262
        parameter.  Change all callers.
3263
        (Expression::eval_maybe_dot): Likewise.
3264
        (class Binary_expression): Add alignment_pointer parameter to
3265
        left_value and right_value.  Change all callers.
3266
        (BINARY_EXPRESSION): Set result alignment.
3267
        (class Trinary_expression): Add alignment_pointer parameter to
3268
        arg2_value and arg3_value.  Change all callers.
3269
        (Trinary_cond::value): Set result alignment.
3270
        (Max_expression::value, Min_expression::value): Likewise.
3271
        (Align_expression::value): Likewise.
3272
        * script-sections.cc (class Sections_element): Add dot_alignment
3273
        parameter to set_section_addresses virtual function.  Update
3274
        instantiations.
3275
        (class Output_section_element): Likewise.
3276
        (Script_sections::create_segments): Add dot_alignment parameter.
3277
        Change all callers.
3278
        (Script_sections::create_segments_from_phdrs_clause): Likewise.
3279
        (Script_sections::set_phdrs_clause_addresses): Likewise.
3280
        * script-sections.h: Update declarations.
3281
        * script.h: Update declarations.
3282
        * output.h (Output_segment::set_minimum_p_align): Don't decrease
3283
        min_p_align.
3284
        * testsuite/script_test_3.t: Set large alignment.
3285
        * testsuite/script_test_3.sh: Make sure that at least one LOAD
3286
        segment has expected alignment.
3287
 
3288
2010-04-22  Nick Clifton  
3289
 
3290
        * po/gold.pot: Updated by the Translation project.
3291
        * po/vi.po: Updated Vietnamese translation.
3292
 
3293
2010-04-22  H.J. Lu  
3294
 
3295
        * testsuite/Makefile.am (check_PROGRAMS): Add
3296
        icf_virtual_function_folding_test.
3297
        * testsuite/Makefile.in: Regenerated.
3298
 
3299
2010-04-15  Andrew Haley  
3300
 
3301
        * options.h (merge_exidx_entries): New option.
3302
        * arm.cc (class Arm_exidx_fixup): Add new arg, merge_exidx_entries.
3303
        (class Arm_exidx_fixup::merge_exidx_entries_): New member.
3304
        (Output_section::fix_exidx_coverage): Add new arg, merge_exidx_entries.
3305
        (Target_arm::merge_exidx_entries): New function.
3306
        (process_exidx_entry): Don't merge if merge_exidx_entries_ is false.
3307
        (Arm_output_section::fix_exidx_coverage): Pass merge_exidx_entries
3308
        to Arm_exidx_fixup constructor.
3309
        Add new arg, merge_exidx_entries.
3310
        (Target_arm::fix_exidx_coverage): pass merge_exidx_entries to
3311
        Arm_output_section::fix_exidx_coverage.
3312
 
3313
2010-04-18  Sriraman Tallam  
3314
 
3315
        * icf.cc (get_section_contents): Check for preemptible functions.
3316
        Ignore addend when appropriate.
3317
        * symtab.cc (should_add_dynsym_entry): Add new parameter.  Check for
3318
        section folded.
3319
        (add_from_relobj): Check for section folded.
3320
        (set_dynsym_indexes): Fix call to should_add_dynsym_entry.
3321
        * symtab.h (should_add_dynsym_entry): Add new parameter.
3322
        * target-reloc.h (scan_relocs): Check for section folded.
3323
        * x86_64.cc (Target_x86_64::Scan::possible_function_pointer_reloc):
3324
        Check reloc types for function pointers in shared objects.
3325
        * testsuite/Makefile.am (icf_virtual_function_folding_test): New test
3326
        case.
3327
        (icf_preemptible_functions_test): New test case.
3328
        (icf_string_merge_test): New test case.
3329
        * testsuite.Makefile.in: Regenerate.
3330
        * testsuite/icf_safe_so_test.sh: Change to not fold foo_glob and
3331
        bar_glob.  Refactor code.
3332
        * testsuite/icf_preemptible_functions_test.cc: New file.
3333
        * testsuite/icf_preemptible_functions_test.sh: New file.
3334
        * testsuite/icf_string_merge_test.cc: New file.
3335
        * testsuite/icf_string_merge_test.sh: New file.
3336
        * testsuite/icf_virtual_function_folding_test.cc: New file.
3337
        * testsuite/icf_virtual_function_folding_test.sh: New file.
3338
 
3339
2010-04-14  Doug Kwan  
3340
 
3341
        * arm.cc (Arm_output_section::fix_exidx_coverage): Mark object
3342
        for local symbol recounting if we remove a section due to ICF.
3343
        * gold.cc (queue_middle_gc_tasks): Create a dummy blocker if
3344
        there are no regular objects in input.
3345
 
3346
2010-04-13  Doug Kwan  
3347
 
3348
        * arm.cc (Arm_input_section::set_final_data_size): Compute
3349
        accurate final data size instead of using current data size.
3350
 
3351
2010-04-09  Doug Kwan  
3352
 
3353
        * layout.cc (Layout::choose_output_section): Handle script section
3354
        types.
3355
        (Layout::make_output_section_for_script): Add section type parameter.
3356
        Handle script section types.
3357
        * layout.h (Layout::make_output_section_for_script): Add section
3358
        type parameter.
3359
        * output.cc (Output_section::Output_section): Initialize data member
3360
        is_noload_.
3361
        (Output_section::do_reset_address_and_file_offset): Do not set address
3362
        to 0 if section is a NOLOAD section.
3363
        * output.h (Output_section::is_noload): New method.
3364
        (Output_section::set_is_noload): Ditto.
3365
        (Output_section::is_noload_): New data member.
3366
        * script-c.h (Script_section_type): New enum type.
3367
        (struct Parser_output_section_header): Add new file section_type.
3368
        * script-sections.cc (Sections_element::output_section_name): Add
3369
        parameter for returning script section type.
3370
        (Output_section_definition::output_section_name): Ditto.
3371
        (Output_section_definition::section_type)P; New method.
3372
        (Output_section_definiton::script_section_type_name): Ditto.
3373
        (Output_section_definition::script_section_type_): New data member.
3374
        (Output_section_definition::Output_section_definition): Initialize
3375
        data member Output_section_definition::script_section_type_.
3376
        (Output_section_definition::create_sections): Pass script section type
3377
        to Layout::make_output_section_for_script.
3378
        (Output_section_definition::output_section_name): Return script
3379
        section type to caller.
3380
        (Output_section_definition::set_section_address): Do not advance
3381
        dot value and load address if section type is NOLOAD.  Set address
3382
        of NOLOAD sections regardless of section flags.
3383
        (Output_section_definition::print): Print section type if it is
3384
        not SCRIPT_SECTION_TYPE_NONE.
3385
        (Output_section_definition::section_type): New method.
3386
        (Output_section_definition::script_section_type_name): Ditto.
3387
        (Script_sections::output_section_name): Add new parameter
3388
        PSECTION_TYPE for returning script section type.  Pass it to
3389
        section elements.  Handle discard sections.
3390
        (Sort_output_sections::operator()): Handle NOLOAD sections.
3391
        * script-sections.h (Script_sections::Section_type): New enum type.
3392
        (Script_sections::output_section_name): Add a new parameter for
3393
        returning script section type.
3394
        * script.cc (script_keyword_parsecodes): Add keywords COPY, DSECT,
3395
        INFO and NOLOAD.
3396
        * yyscript.y (union): Add new field SECTION_TYPE.
3397
        (COPY, DSECT, INFO, NOLOAD): New tokens.
3398
        (opt_address_and_section_type): Change type to output_section_header.
3399
        (section_type): New non-terminal
3400
        (section_header): Handle section type.
3401
        (opt_address_and_section_type): Return section type value.
3402
 
3403
2010-04-09  H.J. Lu  
3404
 
3405
        * testsuite/plugin_common_test_1.c (foo): Add prototype.
3406
        * testsuite/plugin_common_test_2.c (foo): Likewise.
3407
 
3408
2010-04-08  Doug Kwan  
3409
 
3410
        * merge.cc (Output_merge_data::set_final_data_size): Handle empty
3411
        Output_merge_data.
3412
        * output.cc (Output_section::add_merge_input_section): Simplify
3413
        code and return status of Output_merge_base::add_input_section.
3414
        Update merge section map only if Output_merge_base::add_input_section
3415
        returns true.
3416
 
3417
2010-04-07  Doug Kwan  
3418
 
3419
        * arm.cc (Arm_relobj::scan_section_for_cortex_a8_erratum): Warn
3420
        if section is marked as containing instructions but has no mapping
3421
        symbols.
3422
        (Arm_relobj::do_count_local_symbols): Call adjust_sym_shndx to get
3423
        correct section index.
3424
        (Arm_relobj::find_linked_text_section): Ditto.
3425
 
3426
2010-04-07  Cary Coutant  
3427
 
3428
        * archive.cc (include_member): Destroy Read_symbols_data object before
3429
        releasing file.
3430
        * object.cc (Read_symbols_data::~Read_symbols_data) New destructor.
3431
        * object.h (Read_symbols_data::Read_symbols_data) New constructor.
3432
        (Read_symbols_data::~Read_symbols_data) New destructor.
3433
        (Section_relocs::Section_relocs) New constructor.
3434
        (Section_relocs::~Section_relocs) New destructor.
3435
        (Read_relocs_data::Read_relocs_data) New constructor.
3436
        (Read_relocs_data::~Read_relocs_data) New destructor.
3437
        * testsuite/binary_unittest.cc (Sized_binary_test): Set sd member
3438
        pointers to NULL after deleting.
3439
 
3440
2010-04-07  Doug Kwan  
3441
 
3442
        * arm.cc: Replace "endianity" with "endianness" in comments.
3443
        (Arm_exidx_cantunwind): Ditto.
3444
        (Arm_relobj::Arm_relobj): Initialize merge_flags_and_attribures.
3445
        (Arm_relobj::merge_flags_and_attributes): New method.
3446
        (Arm_relobj::merge_flags_and_attributes_): New data member.
3447
        (Arm_exidx_cantunwind::do_fixed_endian_write): Fix formatting.
3448
        (Arm_relobj::scan_sections_for_stubs): Ditto.
3449
        (Arm_relobj::do_read_symbols): Check to see if we really want to
3450
        merge processor-specific flags and attributes.  Exit early if
3451
        an object is empty except for section names and the undefined symbol.
3452
        (Target_arm::do_finalize_sections): Move check for ELF format to
3453
        Arm_relobj::do_read_symbols.  Merge processor specific flags and
3454
        attributes from a regular object only when we have determined that
3455
        it is aapropriate.  Do not create an .ARM.attributes section in
3456
        output if there is no regular input object.
3457
        (Target_arm::merge_processor_specific_flags): Check
3458
        --warn-mismatch before printing any error.
3459
        (Target_arm::merge_object_attributes): Ditto.
3460
        * gold.cc (queue_middle_tasks): Handle the case in which there is
3461
        no regular object in input.
3462
        * options.cc (General_options::parse_EB): New method.
3463
        (General_options::parse_EL): Same.
3464
        (General_options::General_options): Initialize endianness_.
3465
        * options.h (-EB, -EL, -no-pipeline-knowledge, -p, --warn-mismatch):
3466
        New options.
3467
        (General_options::Endianness): New enum.
3468
        (General_options::endianness): New method.
3469
        (General_options::endianness_): New data member.
3470
        * parameters.cc (Parameters::set_options): Check target endianness.
3471
        (Parameters::set_target_once): Ditto.
3472
        (Parameters::check_target_endianness): New method.
3473
        (parameters_force_valid_target): If either -EL or -EB is specified,
3474
        use it to define endianness of default target.
3475
        * parameters.h (Parameters::check_target_endianness): New method
3476
        declaration.
3477
        * target.h (class Target): Change "endianity" to "endianness"
3478
        in comments.
3479
 
3480
2010-04-07  Ralf Wildenhues  
3481
 
3482
        * configure.ac (AM_INIT_AUTOMAKE): Add option no-dist.
3483
        * configure: Regenerate.
3484
        * Makefile.in: Regenerate.
3485
        * testsuite/Makefile.in: Regenerate.
3486
 
3487
2010-04-06  Cary Coutant  
3488
 
3489
        gcc PR lto/42757
3490
        * plugin.cc (Pluginobj::get_symbol_resolution_info): Check for
3491
        prevailing definitions of common symbols.
3492
        * testsuite/plugin_test_6.sh: New test case.
3493
        * testsuite/plugin_common_test_1.c: New test case.
3494
        * testsuite/plugin_common_test_2.c: New test case.
3495
        * testsuite/Makefile.am (plugin_test_6): New test case.
3496
        * testsuite/Makefile.in: Regenerate.
3497
 
3498
2010-04-06  Nick Clifton  
3499
 
3500
        * po/vi.po: New Vietnamese translation.
3501
 
3502
2010-03-30  Doug Kwan  
3503
 
3504
        * arm.cc (Target_arm::using_thumb_only): Handle v6-M
3505
 
3506
2010-03-25  Doug Kwan  
3507
 
3508
        * gold/arm.cc (Arm_exidx_fixup::update_offset_map): Rearrange code
3509
        to avoid a conversion warning on a 32-bit host.
3510
 
3511
2010-03-24  Ian Lance Taylor  
3512
 
3513
        * testsuite/script_test_3.t: Add a TLS segment.
3514
        * testsuite/Makefile.am (check_PROGRAMS): Add
3515
        tls_phdrs_script_test.
3516
        (tls_phdrs_script_test_SOURCES): Define.
3517
        (tls_phdrs_script_test_DEPENDENCIES): Define.
3518
        (tls_phdrs_script_test_LDFLAGS): Define.
3519
        (tls_phdrs_script_test_LDADD): Define.
3520
        * testsuite/Makefile.in: Rebuild.
3521
 
3522
2010-03-23  Cary Coutant  
3523
 
3524
        * fileread.cc (find_or_make_view): Fix comment.
3525
 
3526
2010-03-23  Ian Lance Taylor  
3527
 
3528
        * script-sections.cc (class Orphan_section_placement): Define
3529
        PLACE_TLS and PLACE_TLS_BSS.
3530
        (Orphan_section_placement::Orphan_section_placement): Initialize
3531
        new places.
3532
        (Orphan_section_placement::find_place): Handle SHF_TLS sections.
3533
        * testsuite/Makefile.am (check_PROGRAMS): Add tls_script_test.
3534
        (tls_script_test_SOURCES): Define.
3535
        (tls_script_test_DEPENDENCIES): Define.
3536
        (tls_script_test_LDFLAGS): Define.
3537
        (tls_script_test_LDADD): Define.
3538
        * testsuite/Makefile.in: Rebuild.
3539
 
3540
2010-03-22  Doug Kwan  
3541
 
3542
        * arm.cc (Arm_relocate_functions::abs8,
3543
        Arm_relocate_functions::abs16): Use correct check for overflow
3544
        specified in the ARM ELF specs.
3545
        (Arm_relocate_functions): thumb_branch_common.  Handle bit 1 of branch
3546
        target of a BLX instruction specially.
3547
        (Reloc_stub::stub_type_for_reloc): Ditto.
3548
        (Relocate::relocate): Use symbolic names instead of numeric relocation
3549
        codes to report error.
3550
        (Target_arm::do_relox): Reduce default stub-group size for Cortex-A8
3551
        workaround.
3552
        * testsuite/Makefile.am (check_DATA): add thumb_blx_in_range.stdout,
3553
        thumb_blx_out_of_range.stdout, thumb2_blx_in_range.stdout and
3554
        thumb2_blx_out_of_range.stdout
3555
        (thumb_bl_out_of_range, thumb_bl_out_of_range.o,
3556
        thumb2_bl_out_of_range, thumb2_bl_out_of_range.o): Fix dependenices.
3557
        (thumb_blx_in_range.stdout, thumb_blx_in_range, thumb_blx_in_range.o,
3558
        thumb_blx_out_of_range.stdout, thumb_blx_out_of_range,
3559
        thumb_blx_out_of_range.o, thumb2_blx_in_range.stdout,
3560
        thumb2_blx_in_range, thumb2_blx_in_range.o,
3561
        thumb2_blx_out_of_range.stdout, thumb2_blx_out_of_range,
3562
        thumb2_blx_out_of_range.o): New rules.
3563
        (MOSTLYCLEANFILES): Add thumb_blx_in_range, thumb_blx_out_of_range,
3564
        thumb2_blx_in_range and thumb2_blx_out_of_range.
3565
        * testsuite/Makefile.in: Regenerate.
3566
        * arm_branch_in_range.sh: Add tests for THUMB BLX.
3567
        * testsuite/thumb_blx_in_range.s: New file.
3568
        * testsuite/thumb_blx_out_of_range.s: New file.
3569
 
3570
2010-03-22  Rafael Espindola  
3571
 
3572
        * archive.cc (Should_include): Move to archive.h.
3573
        (should_include_member): Make it a member of Archive.
3574
        (Lib_group): New.
3575
        (Add_lib_group_symbols): New.
3576
        * archive.h: Include options.h.
3577
        (Archive_member): Moved from Archive.
3578
        (Should_include): Moved from archive.cc.
3579
        (Lib_group): New.
3580
        (Add_lib_group_symbols): New.
3581
        * dynobj.cc (do_should_include_member): New.
3582
        * dynobj.h (do_should_include_member): New.
3583
        * gold.cc (queue_initial_tasks): Update call to queue.
3584
        * main.cc (main): Print lib group stats.
3585
        * object.cc (do_should_include_member): New.
3586
        * object.h: Include archive.h.
3587
        (Object::should_include_member): New.
3588
        (Object::do_should_include_member): New.
3589
        (Sized_relobj::do_should_include_member): New.
3590
        * options.cc (General_options::parse_start_lib): New.
3591
        (General_options::parse_end_lib): New.
3592
        (Input_arguments::add_file): Handle lib groups.
3593
        (Input_arguments::start_group): Check we are not in a lib.
3594
        (Input_arguments::start_lib): New.
3595
        (Input_arguments::end_lib): New.
3596
        * options.h (General_options): Add start_lib and end_lib.
3597
        (Input_argument::lib_): New.
3598
        (Input_argument::lib): New.
3599
        (Input_argument::is_lib): New.
3600
        (Input_file_lib): New.
3601
        (Input_arguments::in_lib_): New.
3602
        (Input_arguments::in_lib): New.
3603
        (Input_arguments::start_lib): New.
3604
        (Input_arguments::end_lib_): New.
3605
        * plugin.cc (Pluginobj::get_symbol_resolution_info): Mark symbols
3606
        in unused members as preempted.
3607
        (Sized_pluginobj::do_should_include_member): New.
3608
        * plugin.h (Sized_pluginobj::do_should_include_member): New.
3609
        * readsyms.cc (Read_symbols::locks): If we are just reading a member,
3610
        return the blocker.
3611
        (Read_symbols::do_whole_lib_group): New.
3612
        (Read_symbols::do_lib_group): New.
3613
        (Read_symbols::do_read_symbols): Handle lib groups.
3614
        (Read_symbols::get_name): Handle lib groups.
3615
        * readsyms.h (Read_symbols): Add an archive member pointer.
3616
        (Read_symbols::do_whole_lib_group): New.
3617
        (Read_symbols::do_lib_group): New.
3618
        (Read_symbols::member_): New.
3619
        * script.cc (read_input_script): Update call to queue_soon.
3620
 
3621
2010-03-19  Doug Kwan  
3622
 
3623
        * arm.cc (Stub_table::Stub_table): Initialize new data members
3624
        Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_.
3625
        (Stub_table::add_reloc_stub): Assign stub offset and update
3626
        Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_.
3627
        (Stub_table::reloc_stubs_size_, Stub_table::reloc_stubs_addralign_):
3628
        New data members.
3629
        (Stub_table::update_data_size_and_addralign): Use
3630
        Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_
3631
        instead of going over all reloc stubs.
3632
        (Stub_table::finalize_stubs): Do not assign reloc stub offsets.
3633
        * stringpool.cc (Stringpool_template::Stringpool_template): Initialize
3634
        Stringpool_template::offset_ to size of Stringpool_char.
3635
        (Stringpool_template::new_key_offset): Remove code to initialize
3636
        Stringpool_template::offset_.
3637
        * stringpool.h (Stringpool_template::set_no_zero_null): Set
3638
        Stringpool_template::offset_ to zero.
3639
 
3640
2010-03-15  Doug Kwan  
3641
 
3642
        * stringpool.cc (Stringpool_template::Stringpool_template): Initialize
3643
        offset_.
3644
        (Stringpool_template::new_key_offset): New method.
3645
        (Stringpool_template::add_string): Assign offsets when adding new
3646
        strings.
3647
        (Stringpool_template::set_string_offsets): Do not set string offsets
3648
        when not optimizing.
3649
        * stringpool.h (Chunked_vector::Chunked_vector): Initialize data
3650
        member size_.
3651
        (Chunked_vector::clear): Clear size_.
3652
        (Chunked_vector::reserve): Call reserve method of all Element_vectors.
3653
        (Chunked_vector::size): Return size_.
3654
        (Chunked_vector::push_back): Use size_ to find insert position.
3655
        (Chunked_vector::size_): New data member.
3656
        (Stringpool_template::set_no_zero_null): Assert string set is empty.
3657
        (Stringpool_template::new_key_offset): New method declaration.
3658
        (Stringpool_template::offset_): New data member.
3659
 
3660
2010-03-15   Rafael Espindola  
3661
 
3662
        * readsyms.cc (Read_symbols::do_read_symbols): Update calls to
3663
        Add_symbols' constructor.
3664
        * readsyms.h (Add_symbols): Remove the input_group member.
3665
 
3666
2010-03-10  Ian Lance Taylor  
3667
 
3668
        * reloc.cc (Sized_relobj::split_stack_adjust_reltype): Call the
3669
        target to ask whether a reference to a symbol requires a stack
3670
        split.
3671
        * target.h (Target::is_call_to_non_split): New function.
3672
        (Target::do_is_call_to_non_split): Declare virtual function.
3673
        * target.cc: Include "symtab.h".
3674
        (Target::do_is_call_to_non_split): New function.
3675
        * i386.cc (Target_i386::do_is_call_to_non_split): New function.
3676
 
3677
2010-03-10  Cary Coutant  
3678
 
3679
        * fileread.cc (File_read::~File_read): Don't delete whole_file_view_.
3680
        (File_read::open[1]): Remove initial mapping of whole_file_view_.
3681
        (File_read::open[2]): Add whole_file_view_ to list of views.
3682
        (File_read::make_view): Remove test of whole_file_view_.
3683
        (File_read::find_or_make_view): Create whole_file_view_ if
3684
        necessary.
3685
        (File_read::clear_views): Replace bool parameter with enum;
3686
        adjust all callers.  Don't delete views with permanent data;
3687
        do delete cached views and views from archives if
3688
        --no-keep-files-mapped is set.  Set whole_file_view_ to NULL
3689
        if clearing the corresponding view.
3690
        * fileread.h (File_read::Clear_views_mode): New enum.
3691
        (File_read::View::is_permanent_view): New method.
3692
        (File_read::clear_views): Replace bool parameter
3693
        with enum; adjust all callers.
3694
        * options.h (General_options): Change keep_files_mapped option;
3695
        add map_whole_files.
3696
        * readsyms.cc (Add_symbols::run): Delete sd_ object before
3697
        releasing the file.
3698
        * reloc.cc (Scan_relocs::run): Delete rd_ object before releasing
3699
        the file.
3700
 
3701
2010-03-10  David S. Miller  
3702
 
3703
        * sparc.cc (Target_sparc::Scan::local): Accept R_SPARC_WPLT30.
3704
 
3705
2010-03-09  Sriraman Tallam  
3706
 
3707
        * icf.cc (get_section_contents): Add '@' marker after processing the
3708
        merge reloc.
3709
 
3710
2010-03-08  Doug Kwan  
3711
 
3712
        * gold/arm.cc (Arm_exidx_fixup::update_offset_map): Fix build breakage
3713
        due to a conversion warning.
3714
        (Arm_relobj::update_output_local_symbol_count): Check for local
3715
        symbol with unset output index.
3716
 
3717
2010-03-05  Ian Lance Taylor  
3718
 
3719
        * options.h (class General_options): Add --spare-dynamic-tags.
3720
        * output.cc (Output_data_dynamic::set_final_data_size): Implement
3721
        --spare-dynamic-tags.
3722
 
3723
2010-03-05  Ian Lance Taylor  
3724
 
3725
        * incremental.cc: Include "libiberty.h".
3726
 
3727
2010-03-05  Rainer Orth  
3728
 
3729
        * dynobj.h (Verdef::Verdef): Add is_info arg, is_info member
3730
        function, is_info_ member.
3731
        * dynobj.cc (Verdef::write): Set VER_FLG_INFO if this->is_info_.
3732
        (Versions::Versions): Update caller.
3733
        (Versions::define_base_version): Likewise.
3734
        (Versions::add_def): Likewise.
3735
 
3736
2010-03-03  Sriraman Tallam  
3737
 
3738
        * i386.cc (Target_i386::can_check_for_function_pointers): New function.
3739
        (Scan::possible_function_pointer_reloc): New function.
3740
        (Scan::local_reloc_may_be_function_pointer): Change to call
3741
        possible_function_pointer_reloc.
3742
        (Scan::global_reloc_may_be_function_pointer): Ditto.
3743
        * icf.h (Icf::check_section_for_function_pointers): Change to reject
3744
        relocations in ".data.rel.ro._ZTV" section.
3745
        * testsuite/icf_safe_so_test.sh: Change to pass i386.
3746
        * testsuite/icf_safe_so_test.cc: Ditto.
3747
        * testsuite/icf_safe_test.cc: Ditto.
3748
        * testsuite/icf_safe_test.sh: Ditto.
3749
 
3750
2010-03-03  Viktor Kutuzov  
3751
            Ian Lance Taylor  
3752
 
3753
        * target-reloc.h (relocate_section): Check the symbol table index
3754
        for -1U before setting the local symbol index.
3755
        (scan_relocatable_relocs): If copying the relocation, record that
3756
        the local symbol is required.
3757
        * object.h (Symbol_value::is_output_symtab_index_set): New
3758
        function.
3759
        (Symbol_value::may_be_discarded_from_output_symtab): New
3760
        function.
3761
        (Symbol_value::has_output_symtab_entry): New function.
3762
        (Symbol_value::needs_output_symtab_entry): Remove.
3763
        (Symbol_value::output_symtab_index): Make sure the symbol index is
3764
        set.
3765
        (Symbol_value::set_output_symtab_index): Make sure the symbol
3766
        index is not set.  Make sure the new index is valid.
3767
        (Symbol_value::set_must_have_output_symtab_entry): New function.
3768
        (Symbol_value::has_output_dynsym_entry): New function.
3769
        (Symbol_value::set_output_dynsym_index): Make sure the new index
3770
        is valid.
3771
        (Sized_relobj::set_must_have_output_symtab_entry): New function.
3772
        * object.cc (Sized_relobj::do_count_local_symbols): Only discard a
3773
        local symbol if permitted.
3774
        (Sized_relobj::do_finalize_local_symbols): Call
3775
        is_output_symtab_index_set rather than needs_output_symtab_entry.
3776
        (Sized_relobj::write_local_symbols): Call has_output_symtab_entry
3777
        rather than needs_output_symtab_entry.  Call
3778
        has_output_dynsym_entry rather than needs_output_dynsym_entry.
3779
        * arm.cc (Arm_relobj::update_output_local_symbol_count): Call
3780
        is_output_symtab_index_set rather than needs_output_symtab_entry.
3781
        * testsuite/discard_locals_relocatable_test.c: New file.
3782
        * testsuite/discard_locals_test.sh: Test -r.
3783
        * testsuite/Makefile.am (check_DATA): Add
3784
        discard_locals_relocatable_test1.syms,
3785
        discard_local_relocatable_test2.syms.
3786
        (MOSTLYCLEANFILES): Likewise.  Also add
3787
        discard_locals_relocatable_test1.lout and
3788
        discard_locals_relocatable_test2.out.
3789
        (discard_locals_relocatable_test1.syms): New target.
3790
        (discard_locals_relocatable_test.o): New target.
3791
        (discard_locals_relocatable_test1.out): New target.
3792
        (discard_locals_relocatable_test2.syms): New target.
3793
        (discard_locals_relocatable_test2.out): New target.
3794
        (various): Add missing ../ld-new dependencies.
3795
        * testsuite/Makefile.in: Rebuild.
3796
 
3797
2010-03-03  Nick Clifton  
3798
 
3799
        * po/fi.po: New Finnish translation.
3800
 
3801
2010-03-01  Doug Kwan  
3802
 
3803
        * layout.cc (Layout::Layout): Force section types of .init_array*,
3804
        .preinit_array* and .fini_array* sections.
3805
        * output.cc (Output_section::Input_section_sort_entry::has_priority):
3806
        Fix check of return value of std::string::find.().
3807
        (Output_section::Input_section_sort_compare::operator()): Remove
3808
        comment about .init_array.
3809
        (Output_section::Input_section_sort_init_fini_compare::operator()):
3810
        New method.
3811
        (Output_section::sort_attached_input_sections): Handle .init_array
3812
        and .fini_array specially.
3813
        * output.h (Output_section::Inut_section_sort_compare): Update
3814
        comment.
3815
        (Output_section::Input_section_sort_init_fini_compare): New struct.
3816
 
3817
2010-02-26  Doug Kwan  
3818
 
3819
        * arm.cc (Target_arm::Relocate::reloc_is_non_pic): Treat
3820
        R_ARM_PREL31 and R_ARM_SBREL31 as position independent.
3821
        * testsuite/debug_msg.sh: Avoid matching source line number for
3822
        use of global variable undef_int.
3823
 
3824
2010-02-26  Doug Kwan  
3825
 
3826
        * arm.cc (Target_arm::scan_reloc_for_stub): Move code handling
3827
        R_ARM_V4BX to Target_arm::scan_reloc_section_for_stubs.
3828
        (Target_arm::scan_reloc_section_for_stubs): Instead of calling
3829
        scan_reloc_for_stub, do all processing of R_ARM_V4BX here.
3830
        * options.cc (General_options::General_options): Initialize member
3831
        fix_v4bx_.
3832
        * testsuite/Makefile.am (check_SCRIPTS): Add arm_fix_v4bx.sh
3833
        (check_DATA): Add arm_fix_v4bx.stdout, arm_fix_v4bx_interworking.stdout
3834
        and rm_no_fix_v4bx.stdout
3835
        (arm_fix_v4bx.stdout, arm_fix_v4bx, arm_fix_v4bx.o,
3836
        arm_fix_v4bx_interworking.stdout, arm_fix_v4bx_interworking,
3837
        arm_no_fix_v4bx.stdout, arm_no_fix_v4bx): New make rules.
3838
        (MOSTLYCLEANFILES): Add arm_fix_v4bx, arm_fix_v4bx_interworking
3839
        and arm_no_fix_v4bx.
3840
        * Makefile.in: Regenerate.
3841
        * testsuite/arm_fix_v4bx.s: New file.
3842
        * testsuite/arm_fix_v4bx.sh: Ditto.
3843
 
3844
2010-02-24  Doug Kwan  
3845
 
3846
        * arm.cc (Target_arm::got_section): Make the .got section the first
3847
        non RELRO section in the data segment.
3848
        * testsuite/script_test_5.sh: Fix match patterns to avoid matching
3849
        suffixes of section names.
3850
 
3851
2010-02-24  Doug Kwan  
3852
 
3853
        * arm.cc (Target_arm::do_finalize_sections): Skip processor specific
3854
        flags and attributes merging if an input file is a binary file.
3855
        * fileread.cc (Input_file::open): Record format of original file.
3856
        * fileread.h (Input_file::Format): New enum type.
3857
        (Input_file::Input_file): Initialize data member format_.
3858
        (Input_file::format): New method definition.
3859
        (Input_file::format_):: New data member.
3860
 
3861
2010-02-24  Doug Kwan  
3862
 
3863
        * arm.cc (Arm_output_data_got): New class.
3864
        (ARM_TCB_SIZE): New constant
3865
        (Target_arm): Use Arm_output_data_got instead of Output_data_got.
3866
        (Arm_output_section::fix_exidx_coverage): Add a parameter for layout.
3867
        If user uses a script with a SECTIONS clause, issue only a warning
3868
        for a misplaced EXIDX input section.  Otherwise, issue an error.
3869
        (Arm_relobj::do_gc_process_relocs): Exit early if we are not doing
3870
        garbage collection.
3871
        (Target_arm::got_mode_index_entry): Handle static linking.
3872
        (Target_arm::Scan::local): Ditto.
3873
        (Target_arm::Scan::global): Ditto.
3874
        (Target_arm::Relocate::relocate_tls): Handle static linking.  Fix
3875
        all incorrectly implemented relocations.
3876
        (Target_arm::fix_exidx_coverage): Pass layout to
3877
        Arm_output_section::fix_exidx_coverage.
3878
        * layout.cc (Layout::section_name_mapping): Remove trailing dots
3879
        from ".ARM.exidx." and ".ARM.extab.".
3880
 
3881
2010-02-23  Viktor Kutuzov  
3882
 
3883
        * arm.cc (Target_arm::do_finalize_sections): Create attribute
3884
        section if it does not already exist.
3885
        * attributes.cc (Attributes_section_data::Attributes_section_data):
3886
        Don't crash if size is zero.
3887
 
3888
2010-02-23  Viktor Kutuzov  
3889
            Ian Lance Taylor  
3890
 
3891
        * gold.cc (queue_middle_tasks): If no input files were opened,
3892
        exit.
3893
        * workqueue.h (Task_function::Task_function): Assert that there is
3894
        a blocker.
3895
 
3896
2010-02-22  Doug Kwan  
3897
 
3898
        * gold-threads.h (Once::~Once): Explicitly define virtual destructor.
3899
        * icf.cc (get_section_contents): Cast snprintf arguments to long long
3900
        types to avoid warnings due to different uint64_t implementations
3901
        on different hosts.
3902
 
3903
2010-02-21  Doug Kwan  
3904
 
3905
        * arm.cc (Arm_relocate_functions::arm_branch_common): Fix bug in
3906
        handling of the maximum backward branch offset.
3907
        (Arm_relocate_functions::thumb_branch_common): Ditto.
3908
        * testsuite/Makefile.am (check_SCRIPTS): Add arm_branch_in_range.sh.
3909
        (check_DATA): Add arm_bl_in_range.stdout, arm_bl_out_of_range.stdout
3910
        thumb_bl_in_range.stdout, thumb_bl_out_of_range.stdout,
3911
        thumb2_bl_in_range.stdout and thumb2_bl_out_of_range.stdout.
3912
        (arm_bl_in_range.stdout, arm_bl_in_range, arm_bl_in_range.o,
3913
        arm_bl_out_of_range.stdout, arm_bl_out_of_range,
3914
        arm_bl_out_of_range.o, thumb_bl_in_range.stdout, thumb_bl_in_range,
3915
        thumb_bl_in_range.o, thumb_bl_out_of_range.stdout,
3916
        thumb_bl_out_of_range thumb_bl_out_of_range.o,
3917
        thumb2_bl_in_range.stdout, thumb2_bl_in_range, thumb2_bl_in_range.o
3918
        thumb2_bl_out_of_range.stdout, thumb2_bl_out_of_range,
3919
        thumb2_bl_out_of_range.o): New rules.
3920
        (MOSTLYCLEANFILES): Add arm_bl_in_range, arm_bl_out_of_range,
3921
        thumb_bl_in_range, thumb_bl_out_of_range, thumb2_bl_in_range and
3922
        thumb2_bl_out_of_range
3923
        * testsuite/Makefile.in: Regenerate.
3924
        * testsuite/arm_bl_in_range.s: New file.
3925
        * testsuite/arm_bl_out_of_range.s: Ditto.
3926
        * testsuite/arm_branch_in_range.sh: Ditto.
3927
        * testsuite/arm_branch_range.t: Ditto.
3928
        * testsuite/thumb2_branch_range.t: Ditto.
3929
        * testsuite/thumb_bl_in_range.s: Ditto.
3930
        * testsuite/thumb_bl_out_of_range.s: Ditto.
3931
        * testsuite/thumb_branch_range.t: Ditto.
3932
 
3933
2010-02-20  Sriraman Tallam  
3934
 
3935
        * gc.h (gc_process_relocs): Change vectors to point to the new list.
3936
        Add reloc offset information.
3937
        * icf.cc (get_section_contents): Change iterators to point to the new
3938
        vectors. Add reloc offset information to the contents.
3939
        * icf.h (Icf::Sections_reachable_info): New typedef.
3940
        (Icf::Sections_reachable_list): New typedef.
3941
        (Icf::Offset_info): New typedef.
3942
        (Icf::Reloc_info): New struct typedef.
3943
        (Icf::Reloc_info_list): New typedef.
3944
        (Icf::symbol_reloc_list): Delete method.
3945
        (Icf::addend_reloc_list): Delete method.
3946
        (Icf::section_reloc_list): Delete method.
3947
        (Icf::reloc_info_list): New method.
3948
        (Icf::reloc_info_list_): New member.
3949
 
3950
2010-02-19  Doug Kwan  
3951
 
3952
        * arm-reloc.def: Mark R_ARM_TLS_GD32, R_ARM_TLS_LDM32,
3953
        R_ARM_TLS_LDO32, R_ARM_TLS_IE32 and R_ARM_TLS_LE32 are implemented.
3954
        * arm.cc (Arm_relocation_functions): New forward declaration.
3955
        (Target_arm::Target_arm): Initialize new data members
3956
        got_mod_index_offset_ and tls_base_symbol_defined_.
3957
        (Target_arm::Relocate::relocate_tls): New method.
3958
        (Target_arm::optimize_tls_reloc, Target_arm::define_tls_base_symbol,
3959
         Target_arm::got_mod_index_entry, Target_arm::rel_tls_desc_section):
3960
        New methods.
3961
        (Target_arm::Got_type): Add GOT_TYPE_TLS_NOFFSET, GOT_TYPE_OFFSET,
3962
        GOT_TYPE_TLS_PAIR and GOT_TYPE_TLS_DESC.
3963
        (Target_arm::got_mod_index_offset_,
3964
        Target_arm::tls_base_symbol_defined_): New data members.
3965
        (Target_arm::Scan::local, Target::Scan::global,
3966
        Target_arm::Relocate::relocate): Handle 32-bit initial TLS
3967
        relocations.
3968
 
3969
2010-02-18  Doug Kwan  
3970
 
3971
        * arm.cc (Arm_relobj::find_linked_text_section): New method.
3972
        (Arm_relobj::make_exidx_input_section): Pass section index of linked
3973
        text section as a parameter becuase some broken tools may not set
3974
        the link in section header.
3975
        (Target_arm::has_got_section): New method.
3976
        (Target_arm::scan_section_for_cortex_a8_stubs): Treat an input section
3977
        without any mapping symbol as data only.  Remove warning.
3978
        (Arm_relobj::do_read_synbols): If an EXIDX input section has no
3979
        link in its section header, try to discover the link by inspecting the
3980
        REL31 relocation at the beginning of the section.
3981
        (Target_arm::Scan::check_non_pic): Report name of offending relocation
3982
        in error message.
3983
        (Target_arm::Scan::global): Treat any reference to the symbol
3984
        _GLOBAL_OFFSET_TABLE_ as a GOT access.
3985
 
3986
2010-02-12  Sriraman Tallam  
3987
 
3988
        * arm.cc (Scan::local_reloc_may_be_function_pointer): New function.
3989
        (Scan::global_reloc_may_be_function_pointer): New function.
3990
        * sparc.cc (Scan::local_reloc_may_be_function_pointer): New function.
3991
        (Scan::global_reloc_may_be_function_pointer): New function.
3992
        * powerpc.cc (Scan::local_reloc_may_be_function_pointer): New function.
3993
        (Scan::global_reloc_may_be_function_pointer): New function.
3994
        * i386.cc (Scan::local_reloc_may_be_function_pointer): New function.
3995
        (Scan::global_reloc_may_be_function_pointer): New function.
3996
        * x86_64.cc (Scan::local_reloc_may_be_function_pointer): New function.
3997
        (Scan::global_reloc_may_be_function_pointer): New function.
3998
        (Scan::possible_function_pointer_reloc): New function.
3999
        (Target_x86_64::can_check_for_function_pointers): New function.
4000
        * gc.h (gc_process_relocs): Scan relocation types to determine if
4001
        function pointers were taken for targets that support it.
4002
        * icf.cc (Icf::find_identical_sections): Include functions for
4003
        folding in safe ICF whose pointer is not taken.
4004
        * icf.h (Secn_fptr_taken_set): New typedef.
4005
        (fptr_section_id_): New member.
4006
        (section_has_function_pointers): New function.
4007
        (set_section_has_function_pointers): New function.
4008
        (check_section_for_function_pointers): New function.
4009
        * options.h: Fix comment for safe ICF option.
4010
        * target.h (can_check_for_function_pointers): New function.
4011
        * testsuite/Makefile.am: Add icf_safe_so_test test case.
4012
        Modify icf_safe_test for X86-64.
4013
        * testsuite/Makefile.in: Regenerate.
4014
        * testsuite/icf_safe_so_test.cc: New file.
4015
        * testsuite/icf_safe_so_test.sh: New file.
4016
        * testsuite/icf_safe_test.cc (kept_func_3): New function.
4017
        (main): Change to take pointer to function kept_func_3.
4018
        * testsuite/icf_safe_test.sh (arch_specific_safe_fold): Check if safe
4019
        folding is done correctly for X86-64.
4020
 
4021
2010-02-12  David S. Miller  
4022
 
4023
        * output.h (Output_reloc::Output_reloc): Add
4024
        is_symbolless parameter.
4025
        (Output_reloc::is_symbolless): New.
4026
        (Output_reloc::is_symbolless_): New.
4027
        (Output_reloc::type_): Decrease to 29 bits.
4028
        (Output_reloc::Output_reloc): Add is_symbolless parameter.
4029
        (Output_reloc::is_symbolless): New.
4030
        (Output_data_reloc::add_global): Handle is_symbolless.
4031
        (Output_data_reloc::add_global_relative): Likewise.
4032
        (Output_data_reloc::add_local): Likewise.
4033
        (Output_data_reloc::add_local_relative): Likewise.
4034
        (Output_data_reloc::add_symbolless_global_addend): New.
4035
        (Output_data_reloc::add_symbolless_local_addend): New.
4036
        * output.cc (Output_reloc::Output_reloc): Handle
4037
        is_symbolless.
4038
        (Output_reloc::set_needs_dynsym_index): Test ->is_symbolless_
4039
        instead of ->is_relative_
4040
        (Output_reloc::write): Likewise.
4041
        (Output_reloc::get_symbol_index): Return 0 when ->is_symbolless_
4042
        (Output_reloc::write_rel): Simplify.
4043
 
4044
        * sparc.cc (Target_sparc::Scan::local): Use
4045
        ->add_symbolless_local_addend as needed.
4046
        (Target_sparc::Scan::global): Use ->add_symbolless_global_addend as
4047
        needed.  Also, emit appropriate unaligned vs. aligned dynamic reloc
4048
        based upon relocation offset.
4049
 
4050
2010-02-11  Doug Kwan  
4051
 
4052
        * arm.cc (Target_arm::Scan::local): Fix bugs in relocation handling.
4053
        (Target_arm::Scan::global): Ditto.  Also remove a comment before the
4054
        beginning of function.
4055
        (Target_arm::Relocate::relocate): Remove error messages for MOVW_ABS
4056
        and MOVT_ABS relocations.  Those are non issued in scanning.  Fix
4057
        parameter is_32bit in calls to should_apply_static_reloc.
4058
        * testsuite/Makefile.am (check_SCRIPTS): Add arm_abs_global.sh.
4059
        (check_DATA): Add arm_abs_global.stdout.
4060
        (arm_abs_lib.o, libarm_abs.so, arm_abs_global.o, arm_abs_global,
4061
        arm_abs_global.stdout): New rules.
4062
        (MOSTLLYCLEANFILES): Add arm_abs_global
4063
        * Makefile.in: Regenerate.
4064
        * testsuite/arm_abs_global.s: New file.
4065
        * testsuite/arm_abs_global.sh: Ditto.
4066
        * testsuite/arm_abs_lib.s: Ditto.
4067
 
4068
2010-02-11  Ian Lance Taylor  
4069
 
4070
        * gold.cc (queue_middle_gc_tasks): Use a separate blocker for each
4071
        Read_relocs task.
4072
        (queue_middle_tasks): Likewise, and also for Scan_relocs.  Run
4073
        Allocate_commons_task first.
4074
        * reloc.cc (Read_relocs::run): Pass next_blocker_ down to next
4075
        task, rather than symtab_lock_.
4076
        (Gc_process_relocs::~Gc_process_relocs): New function.
4077
        (Gc_process_relocs::is_runnable): Check this_blocker_.
4078
        (Gc_process_relocs::locks): Use next_blocker_ rather than
4079
        blocker_.
4080
        (Scan_relocs::~Scan_relocs): New function.
4081
        (Scan_relocs::is_runnable): Check this_blocker_ rather than
4082
        symtab_lock_.
4083
        (Scan_relocs::locks): Drop symtab_lock_ and blocker_.  Add
4084
        next_blocker_.
4085
        * reloc.h (class Read_relocs): Drop symtab_lock_ and blocker_
4086
        fields.  Add this_blocker_ and next_blocker_ fields.  Adjust
4087
        constructor accordingly.
4088
        (class Gc_process_relocs): Likewise.
4089
        (class Scan_relocs): Likewise.
4090
        * common.h (class Allocate_commons_task): Remove symtab_lock_
4091
        field, and corresponding constructor parameter.
4092
        * common.cc (Allocate_commons_tasK::is_runnable): Remove use of
4093
        symtab_lock_.
4094
        (Allocate_commons_task::locks): Likewise.
4095
 
4096
2010-02-11  Ian Lance Taylor  
4097
 
4098
        * gold-threads.h (class Once): Define.
4099
        (class Initialize_lock): Rewrite as child of Once.
4100
        * gold-threads.cc (class Once_initialize): Define.
4101
        (once_pointer_control): New static variable.
4102
        (once_pointer, once_arg): New static variables.
4103
        (c_run_once): New static function.
4104
        (Once::Once, Once::run_once, Once::internal_run): New functions.
4105
        (class Initialize_lock_once): Remove.
4106
        (initialize_lock_control): Remove.
4107
        (initialize_lock_pointer): Remove.
4108
        (initialize_lock_once): Remove.
4109
        (Initialize_lock::Initialize_lock): Move to gold-threads.h.
4110
        (Initialize_lock::initialize): Rewrite.
4111
        (Initialize_lock::do_run_once): New function.
4112
        * archive.cc (Archive::interpret_header): Only clear name if it is
4113
        not already empty.
4114
        * fileread.cc: Include "gold-threads.h"
4115
        (file_counts_lock): New static variable.
4116
        (file_counts_initialize_lock): Likewise.
4117
        (File_read::release): Only increment counts when using --stats.
4118
        Use a lock around the increment.
4119
        * parameters.cc (class Set_parameters_target_once): Define.
4120
        (set_parameters_target_once): New static variable.
4121
        (Parameters::Parameters): Move here from parameters.h.
4122
        (Parameters::set_target): Rewrite.
4123
        (Parameters::set_target_once): New function.
4124
        (Parameters::clear_target): Move here and rewrite.
4125
        * parameters.h (class Parameters): Update declarations.  Add
4126
        set_parameters_target_once_ field.
4127
        (Parameters::Parameters): Move to parameters.cc.
4128
        (Parameters::clear_target): Likewise.
4129
        * readsyms.cc (Read_symbols::do_group): Create a Start_group
4130
        task.
4131
        (Start_group::~Start_group): New function.
4132
        (Start_group::is_runnable): New function.
4133
        (Start_group::locks, Start_group::run): New functions.
4134
        (Finish_group::run): Change saw_undefined to size_t.
4135
        * readsyms.h (class Start_group): Define.
4136
        (class Finish_group): Change saw_undefined_ field to size_t.
4137
        (Finish_group::Finish_group): Remove saw_undefined and
4138
        this_blocker parameters.  Change all callers.
4139
        (Finish_group::set_saw_undefined): New function.
4140
        (Finish_group::set_blocker): New function.
4141
        * symtab.h (class Symbol_table): Change saw_undefined to return
4142
        size_t.  Change saw_undefined_ field to size_t.
4143
        * target-select.cc (Set_target_once::do_run_once): New function.
4144
        (Target_selector::Target_selector): Initialize set_target_once_
4145
        field.  Don't initialize lock_ and initialize_lock_ fields.
4146
        (Target_selector::instantiate_target): Rewrite.
4147
        (Target_selector::set_target): New function.
4148
        * target-select.h (class Set_target_once): Define.
4149
        (class Target_selector): Update declarations.  Make
4150
        Set_target_once a friend.  Remove lock_ and initialize_lock_
4151
        fields.  Add set_target_once_ field.
4152
 
4153
2010-02-10  Ian Lance Taylor  
4154
 
4155
        * dirsearch.cc (Dirsearch::initialize): Add all blockers before
4156
        queueing any tasks.
4157
        * gold.cc (queue_middle_gc_tasks): Likewise.  Fix final blocker.
4158
        (queue_middle_tasks): Add all blockers before queueing any tasks.
4159
        (queue_final_tasks): Likewise.
4160
        * token.h (Task_token::add_blockers): New function.
4161
        * object.h (Input_objects::number_of_relobjs): New function.
4162
 
4163
2010-02-10  Ian Lance Taylor  
4164
 
4165
        * i386.cc (Relocate::relocate_tls): A local symbol is final if not
4166
        shared, not if not position independent.
4167
        * x86_64.cc (Relocate::relocate_tls): Likewise.
4168
        * testsuite/Makefile.am (check_PROGRAMS): Add tls_pie_pic_test.
4169
        (tls_pie_pic_test): New target.
4170
        * testsuite/Makefile.in: Rebuild.
4171
 
4172
        * testsuite/Makefile.am (check_PROGRAMS): Add tls_pie_test.
4173
        (tls_test_main_pie.o, tls_test_pie.o): New targets.
4174
        (tls_test_file2_pie.o, tls_test_c_pie.o, tls_pie_test): Likewise.
4175
        * testsuite/Makefile.in: Rebuild.
4176
 
4177
2010-02-09  David S. Miller  
4178
 
4179
        * sparc.cc (Target_sparc::Scan::local): Do not emit relocs other than
4180
        R_SPARC_RELATIVE using ->add_local_relative().
4181
        (Target_sparc::Scan::global): Likewise for ->add_global_relative().
4182
 
4183
        * output.h (Output_data_dynamic::add_section_size): New method
4184
        that takes two Output_data objects.
4185
        (Output_data_dynamic::Dynamic_entry): Create storage for secondary
4186
        entry param.  Handle it in initializers.
4187
        * output.cc (Output_data_dynamic::Dynamic_entry::write): For
4188
        DYNAMIC_SECTION_SIZE, add in second object size if non-NULL.
4189
        * layout.h (Layout::add_target_dynamic_tags): Add dynrel_includes_plt
4190
        arg.
4191
        * layout.cc (Layout::add_target_dynamic_tags): If dynrel_includes_plt,
4192
        and .rela.plt exists, set DT_REL{,A}SZ to sum of .rela.dyn and .rela.plt
4193
        * arm.cc (Target_arm::do_finalize_sections): Update to pass false
4194
        for dynrel_includes_plt.
4195
        * i386.cc (Target_i386::do_finalize_sections): Likewise.
4196
        * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
4197
        * sparc.cc (Target_sparc::make_plt_entry): Force .rela.dyn to be output
4198
        before .rela.plt
4199
        (Target_sparc::do_finalize_sections): Update to pass true for
4200
        dynrel_includes_plt.
4201
        * powerpc.cc (Target_powerpc::make_plt_entry): Force .rela.dyn to be
4202
        output before .rela.plt
4203
        (Target_powerpc::do_finalize_sections): Update to pass true for
4204
        dynrel_includes_plt when 32-bit.
4205
 
4206
2010-02-08  Doug Kwan  
4207
 
4208
        * arm.cc (Arm_relobj::simple_input_section_output_address): New
4209
        method.
4210
        (Arm_relobj::section_needs_cortex_a8_stub_scanning,
4211
        Arm_relobj::scan_section_for_cortex_a8_stubs,
4212
        Arm_relobj::do_relocation_section): Instead of calling
4213
        Output_section::output_address, use faster
4214
        Arm_relobj::simple_input_section_output_address.
4215
 
4216
2010-02-08  David S. Miller  
4217
 
4218
        * sparc.cc (Target_sparc::Relocate::relocate): If relocation offset is
4219
        unaligned for R_SPARC_16, R_SPARC_32, or R_SPARC_64, use the unaligned
4220
        relocation helper function.
4221
 
4222
        * sparc.cc (Target_sparc::Scan::local): Handle R_SPARC_GOTDATA_OP*
4223
        just like R_SPARC_GOT{10,13,22}.
4224
        (Target_sparc::Scan::local): Likewise.
4225
        (Target_sparc::Relocate:relocate): Likewise.
4226
 
4227
2010-02-06  Ian Lance Taylor  
4228
 
4229
        * configure.ac: Rewrite targetobjs duplicate removal code to use
4230
        only shell constructs.
4231
        * configure: Rebuild.
4232
 
4233
2010-02-05  Doug Kwan  
4234
 
4235
        PR 11247
4236
        * arm.cc (Arm_relobj::section_is_scannable): New method.
4237
        (Arm_relobj::section_needs_reloc_stub_scanning): Use it.
4238
        (Arm_relobj::section_needs_cortex_a8_stub_scanning): Same.
4239
 
4240
2010-02-04  Doug Kwan  
4241
 
4242
        PR 11247
4243
        * arm-reloc-property.cc (cstdio): Include.
4244
        * configure.ac (targetobjs): Remove duplicates.
4245
        * configure: Regenerate.
4246
        * resolve.cc (Symbol_table::resolve): Explicit instantiate both
4247
        big and little endian version for a given address size.
4248
 
4249
2010-02-03  Doug Kwan  
4250
 
4251
        * arm-reloc-property.cc
4252
        (Arm_reloc_property_table::reloc_name_in_error_message): New method
4253
        definition.
4254
        * arm-reloc-property.h
4255
        (Arm_reloc_property_table::get_implemented_static_reloc_property):
4256
        New method definition.
4257
        (Arm_reloc_property_table::reloc_name_in_error_message): New method
4258
        declaration.
4259
        * arm-reloc.def (THM_MOVT_ABS, THM_MOVT_PREL, THM_MOVT_BREL): Change
4260
        overflow to N.
4261
        (GOT_PREL): Change implemented to Y.
4262
        * arm.cc (Target_arm::reloc_uses_thumb_bit): Remove method.
4263
        (Target_arm::Relocate::reloc_needs_sym_origin): Remove method.
4264
        (Arm_relocate_functions::movw_abs_nc): Remove method.
4265
        (Arm_relocate_functions::movt_abs): Ditto.
4266
        (Arm_relocate_functions::thm_movw_abs_nc): Ditto.
4267
        (Arm_relocate_functions::thm_movt_abs): Ditto.
4268
        (Arm_relocate_functions::movw_rel_nc): Ditto.
4269
        (Arm_relocate_functions::movw_rel): Ditto.
4270
        (Arm_relocate_functions::movt_rel): Ditto.
4271
        (Arm_relocate_functions:thm_movw_rel_nc): Ditto.
4272
        (Arm_relocate_functions:thm_movw_rel): Ditto.
4273
        (Arm_relocate_functions:thm_movt_rel): Ditto.
4274
        (Arm_relocate_functions::movw, Arm_relocate_functions::movt,
4275
        (Arm_relocate_functions::thm_movw, Arm_relocate_functions::thm_movt):
4276
        New method definitions.
4277
        (Arm_relocation_functions::arm_grp_alu): Add assertion for group index.
4278
        (Arm_relocation_functions::arm_grp_ldr): Ditto.
4279
        (Arm_relocation_functions::arm_grp_ldrs): Ditto.
4280
        (Arm_relocation_functions::arm_grp_ldc): Ditto.
4281
        (Target_arm::Relocate::relocate): Check for non-static or
4282
        unimplemented relocation code and exit early.  Change calls to
4283
        Target_arm::reloc_uses_thumb_bit and
4284
        Target_arm::Reloc::reloc_needs_sym_origin to use relocation property
4285
        instead.  Refactor code to handle similar relocations to increase
4286
        code sharing.  Remove check for unsupported relocation code in switch
4287
        statement.
4288
        (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Use
4289
        relocation property table to find out size.  Change error message to
4290
        print out the name of a relocation code instead of the numeric value.
4291
        (Target_arm::scan_reloc_for_stub): Use relocation property table
4292
        instead of calling Target_arm::reloc_uses_thumb_bit().
4293
 
4294
2010-02-02  Doug Kwan  
4295
 
4296
        * arm.cc (Target_arm::relocate_section): Do view adjustment for all
4297
        types of relaxed input section.
4298
 
4299
2010-02-02  Doug Kwan  
4300
 
4301
        * Makefile.am (HFILES): Add arm-reloc-property.h.
4302
        (DEFFILES): New.
4303
        (TARGETSOURCES): Add arm-reloc-property.cc
4304
        (ALL_TARGETOBJS): Add arm-reloc-property.$(OBJEXT)
4305
        (libgold_a_SOURCES): $(DEFFILES)
4306
        * Makefile.in: Regenerate.
4307
        * arm-reloc-property.cc: New file.
4308
        * arm-reloc-property.h: New file.
4309
        * arm-reloc.def: New file.
4310
        * arm.cc: Update comments.
4311
        (arm-reloc-property.h): New included header.
4312
        (arm_reloc_property_table): New global variable.
4313
        (Target_arm::do_select_as_default_target): New method definition.
4314
        * configure.tgt (armeb*-*-*,armbe*-*-*,arm*-*-*): Add
4315
        arm-reloc-property to targ_extra_obj.
4316
        * parameters.cc (set_parameters_target): Call
4317
        Target::select_as_default_target().
4318
        * target.h (Target::select_as_default_target): New method definition.
4319
        (Target::do_select_as_default_target): Same.
4320
 
4321
2010-02-01  Doug Kwan  
4322
 
4323
        * arm.cc (Arm_exidx_fixup::Arm_exidx_fixup): Initialize
4324
        first_output_text_section_.
4325
        (Arm_exidx_fixup::first_output_text_section): New method definition.
4326
        (Arm_exidx_fixup::first_output_text_section_): New data member.
4327
        (Arm_exidx_fixup::process_exidx_section): Record the first text
4328
        output section seen.
4329
        (Arm_output_section::fix_exidx_coverage): Set correct linked section
4330
        and entsize in output section header.
4331
 
4332
2010-01-29  Viktor Kutuzov  
4333
 
4334
        * gold/arm.cc: Added support for the ARM relocations: R_ARM_THM_PC8,
4335
        R_ARM_THM_PC12, R_ARM_THM_ALU_PREL_11_0.
4336
        (Arm_relocate_functions::thm_alu11): New Method.
4337
        (Arm_relocate_functions::thm_pc8): New Method.
4338
        (Arm_relocate_functions::thm_pc12): New Method.
4339
        (Target_arm::Scan::local): Handle the relocations.
4340
        (Target_arm::Scan::global): Likewise.
4341
        (Target_arm::Relocate::relocate): Likewise.
4342
        (Target_arm:Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
4343
 
4344
2010-01-29  Doug Kwan  
4345
 
4346
        * arm.cc (Target_arm::Scan::global): General PLTs for the same set
4347
        of relocation types as ld.
4348
 
4349
2010-01-29  Doug Kwan  
4350
 
4351
        * arm.cc (Arm_relocate_functions::arm_branch_common) Change visibility
4352
        to public.
4353
        (Arm_relocate_functions::thumb_branch_common): Ditto.
4354
        (Arm_relocate_functions::thm_call, Arm_relocate_functions::thm_jump24,
4355
        Arm_relocate_functions::thm_xpc22, Arm_relocate_functions::plt32,
4356
        Arm_relocate_functions::xpc25, Arm_relocate_functions::call,
4357
        Arm_relocate_functions::jump24): Remove.
4358
        (Target_arm::Relocate::relocate): Adjust code to call
4359
        Arm_relocation_functions::arm_branch_common and
4360
        Arm_relocation_functions::thumb_branch_common instead of their removed
4361
        wrappers.  Merge switch-cases together to reduce source code size.
4362
 
4363
2010-01-29  Doug Kwan  
4364
 
4365
        * arm.cc (Arm_relobj::Arm_relobj): Initialize new data member
4366
        output_local_symbol_count_needs_update_.
4367
        (Arm_relobj::output_local_symbol_count_needs_update,
4368
         Arm_relobj::set_output_local_symbol_count_needs_update,
4369
         Arm_relobj::update_output_local_symbol_count): New methods.
4370
        (Arm_relobj::output_local_symbol_count_needs_update_): New data
4371
        member.
4372
        (Arm_exidx_cantunwind::do_fixed_endian_write): Write address
4373
        of pointed function as in a R_ARM_PREL31 relocation.
4374
        (Arm_output_section::fix_exidx_coverage): Mark objects
4375
        for output local symbol count updating.
4376
        (Target_arm::do_relax): Update output local symbol counts in objects
4377
        if necessary.
4378
        * object.h (Sized_relobj::set_output_local_symbol_count): New method.
4379
 
4380
2010-01-29  Viktor Kutuzov  
4381
 
4382
        * arm.cc: Added support for the ARM relocations:
4383
        R_ARM_MOVW_BREL_NC, R_ARM_MOVT_BREL, R_ARM_MOVW_BREL,
4384
        R_ARM_THM_MOVW_BREL_NC, R_ARM_THM_MOVT_BREL, R_ARM_THM_MOVW_BREL.
4385
        (Arm_relocate_functions::movw_rel_nc): Renamed (was
4386
        movw_prel_nc).
4387
        (Arm_relocate_functions::movw_rel): New method.
4388
        (Arm_relocate_functions::movt_rel): Renamed (was movt_prel).
4389
        (Arm_relocate_functions::thm_movw_rel_nc): Renamed (was
4390
        thm_movw_prel_nc).
4391
        (Arm_relocate_functions::thm_movw_rel): New method.
4392
        (Arm_relocate_functions::thm_movt_rel): Renamed (was
4393
        thm_movt_prel).
4394
        (Target_arm::Scan::local): Handle MOVW_BREL/MOVT_BREL
4395
        relocations.
4396
        (Target_arm::Scan::global): Likewise.
4397
        (Target_arm::Relocate::relocate): Likewise.
4398
        (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
4399
        Likewise.
4400
 
4401
2010-01-27  Viktor Kutuzov  
4402
 
4403
        * arm.cc: Added support for ARM group relocations.
4404
        (Target_arm::reloc_needs_sym_origin): New method.
4405
        (Arm_relocate_functions::calc_grp_kn): New method.
4406
        (Arm_relocate_functions::calc_grp_residual): New method.
4407
        (Arm_relocate_functions::calc_grp_gn): New method.
4408
        (Arm_relocate_functions::arm_grp_alu): New Method.
4409
        (Arm_relocate_functions::arm_grp_ldr): New Method.
4410
        (Arm_relocate_functions::arm_grp_ldrs): New Method.
4411
        (Arm_relocate_functions::arm_grp_ldc): New Method.
4412
        (Target_arm::Scan::local): Handle the ARM group relocations.
4413
        (Target_arm::Scan::global): Likewise.
4414
        (Target_arm::Relocate::relocate): Likewise.
4415
        (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
4416
        Likewise.
4417
 
4418
2010-01-26  Doug Kwan  
4419
 
4420
        * arm.cc (set): Include.
4421
        (class Arm_exidx_fixup): Change type of last_input_section_ to const
4422
        pointer type.
4423
        (Arm_output_section::Text_section_list): New type.
4424
        (Arm_output_section::append_text_sections_to_list): New method.
4425
        (Arm_output_section::fix_exidx_coverage): Ditto.
4426
        (Arm_relobj::Arm_relobj): Initialize exidx_section_map_.
4427
        (Arm_relobj::convert_input_section_to_relaxed_section): Use
4428
        Relobj::set_section_offset() instead of
4429
        Sized_relobj::invalidate_section_offset().
4430
        (Arm_relobj::section_needs_reloc_stub_scanning): Add an extra
4431
        parameter for section headers. Ignore relocation sections for
4432
        unallocated sections and EXIDX sections.
4433
        (Target_arm::fix_exidx_coverage): New method.
4434
        (Target_arm::output_section_address_less_than): New type.
4435
        (Arm_exidx_fixup::add_exidx_cantunwind_as_needed): Use index of the
4436
        linked text section instead of the EXIDX section.
4437
        (Arm_output_section::create_stub_group): Add an assertion to check
4438
        that this is not an EXIDX output section.
4439
        (Arm_output_section::append_text_sections_to_list): New method.
4440
        (Arm_output_section::fix_exidx_coverage): Ditto.
4441
        (Arm_relobj::scan_sections_for_stubs): Adjust call to
4442
        Arm_relobj::section_needs_reloc_stub_scanning.
4443
        (Target_arm::do_relax): Fix EXIDX output section coverage in the
4444
        first pass.
4445
        (Target_arm::fix_exidx_coverage): New method.
4446
        * object.h (Relobj::set_output_section): New method.
4447
        (Sized_relobj::invalidate_section_offset): Remove method.
4448
        (Sized_relobj::do_invalidate_section_offset): Remove method.
4449
        (Sized_relobj::do_set_section_offset): Handle offset value -1.
4450
 
4451
2010-01-25  Doug Kwan  
4452
 
4453
        * arm.cc (Arm_exidx_merged_section::do_output_offset):
4454
        Fix warning due to signed and unsigned comparison on a 32-bit host.
4455
 
4456
2010-01-22  Doug Kwan  
4457
 
4458
        * arm.cc (Target_arm::do_relax): Record an output section for section
4459
        offset adjustment it contains any stub table that has changed.
4460
        * layout.cc (Layout::clean_up_after_relaxation): Adjust section
4461
        offsets in an output section if necessary.
4462
        * output.cc (Output_section::Output_section): Initialize
4463
        section_offsets_need_adjustments_.
4464
        (Output_section::add_input_section_for_script): Renamed to
4465
        Output_section::add_simple_input_section.
4466
        (Output_section::save_states): Add a comment.
4467
        (Output_section::discard_states): New method defintion.
4468
        (Output_section::adjust_section_offsets): Same.
4469
        * output.h (Output_section::add_input_section_for_script): Renamed to
4470
        Output_section::add_simple_input_section.
4471
        (Output_section::discard_states): New method declaration.
4472
        (Output_section::adjust_section_offsets): Same.
4473
        (Output_section::section_offsets_need_adjustment,
4474
        Output_section::set_section_offsets_need_adjustment): New method
4475
        definitions.
4476
        (Output_section::section_offsets_need_adjustment_): New data member.
4477
        * script-sections.cc
4478
        (Output_section_element_input::set_section_address): Adjust code for
4479
        renaming of Output_section::add_input_section_for_script.
4480
        (Orphan_output_section::set_section_address): Same.
4481
 
4482
2010-01-22  Viktor Kutuzov  
4483
 
4484
        * gold/arm.cc (Target_arm): Updated fix_v4bx method and usage of
4485
        Fix_v4bx enum values .
4486
        * gold/options.h (General_options): New option definitions.
4487
        (General_options::fix_v4bx): New method.
4488
        (General_options::Fix_v4bx): New enum.
4489
        * gold/options.cc (General_options::parse_fix_v4bx): New method.
4490
        (General_options::parse_fix_v4bx_interworking): New method.
4491
 
4492
2010-01-22  Doug Kwan  
4493
 
4494
        * arm.cc (Arm_exidx_fixup): New class.
4495
 
4496
2010-01-21  Doug Kwan  
4497
 
4498
        * arm.cc (Arm_exidx_cantunwind, Arm_exidx_merged_section): New
4499
        classes.
4500
        (Arm_exidx_section_offset_map): New type.
4501
 
4502
2010-01-21  Doug Kwan  
4503
 
4504
        * arm.cc (Arm_exidx_input_section): New class.
4505
        (Arm_relobj::exidx_input_section_by_link,
4506
        Arm_relobj::exidx_input_section_by_shndx,
4507
        Arm_relobj::make_exidx_input_section): New methods.
4508
        (read_arm_attributes_section): Remove.
4509
        (Arm_relobj::do_read_symbols): Look for ARM.exidx sections and record
4510
        information about them.
4511
        (Arm_dynobj::do_read_symbols): Move code in read_arm_attributes_section
4512
        to here.
4513
 
4514
2010-01-20  Doug Kwan  
4515
 
4516
        * arm.cc (Target_arm::Arm_input_section_map): Change key type from
4517
        Input_section_specifier to Section_id.
4518
        (Target_arm::new_arm_input_section: Adjust code for change of key
4519
        type.
4520
        (Target_arm::find_arm_input_section): Ditto.
4521
        * gc.h (object.h): Include for Section_id nand Section_id_hash.
4522
        (Section_id): Remove.
4523
        (Garbage_collection::Section_id_hash): Remove.
4524
        * icf.h (object.h): Include for Section_id nand Section_id_hash.
4525
        (Section_id): Remove.
4526
        (Icf::Section_id_hash): Remove.
4527
        * object.h (Section_id, Const_section_id, Section_id_hash,
4528
        Const_section_id_hash): New type definitions.
4529
        * output.cc (Output_section::add_relaxed_input_section): Change to
4530
        use Const_section_id instead of Input_section_specifier as key type.
4531
        (Output_section::add_merge_input_section): Ditto.
4532
        (Output_section::build_relaxation_map): Change to use Section_id
4533
        instead of Input_section_specifier as key type.
4534
        (Output_section::convert_input_sections_in_list_to_relaxed_sections):
4535
        Ditto.
4536
        (Output_section::convert_input_sections_to_relaxed_sections): Change
4537
        to use Const_section_id instead of Input_section_specifier as key type.
4538
        (Output_section::find_merge_section): Ditto.
4539
        (Output_section::find_relaxed_input_section): Ditto.
4540
        * output.h (Input_section_specifier): Remove class.
4541
        (Output_section::Output_section_data_by_input_section_map): Change
4542
        key type to Const_section_id.
4543
        (Output_section::Output_relaxed_input_section_by_input_section_map):
4544
        Ditto.
4545
        (Output_section::Relaxation_map): Change key type to Section_id.
4546
 
4547
2010-01-20  Viktor Kutuzov  
4548
 
4549
        * gold/arm.cc: Added support for R_ARM_V4BX relocation
4550
        (class Arm_v4bx_stub): New class.
4551
        (DEF_STUBS): Updated definition to support v4_veneer_bx.
4552
        (Stub_factory::make_arm_v4bx_stub): New method.
4553
        (Stub_factory::elf32_arm_stub_v4_veneer_bx): New veneer template.
4554
        (Stub_table::empty): Handle v4bx stubs.
4555
        (Stub_table::add_arm_v4bx_stub): New method.
4556
        (Stub_table::find_arm_v4bx_stub): New method.
4557
        (Arm_relocate_functions::v4bx): New method.
4558
        (Target_arm::fix_v4bx): New method.
4559
        (Target_arm::Target_arm): Handle R_ARM_V4BX.
4560
        (Stub_table::relocate_stubs): Likewise.
4561
        (Stub_table::do_write): Likewise.
4562
        (Stub_table::update_data_size_and_addralign): Likewise.
4563
        (Stub_table::finalize_stubs):  Likewise.
4564
        (Target_arm::Scan::local): Likewise.
4565
        (Target_arm::Scan::global): Likewise.
4566
        (Target_arm::do_finalize_sections): Likewise.
4567
        (Target_arm::Relocate::relocate): Likewise.
4568
        (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
4569
        Likewise.
4570
        (Target_arm::scan_reloc_for_stub): Likewise.
4571
        (Target_arm::scan_reloc_section_for_stubs): Likewise.
4572
 
4573
2010-01-19  Ian Lance Taylor  
4574
 
4575
        * output.cc (Output_section_headers::do_sized_write): Write large
4576
        segment count to sh_info field.
4577
        (Output_file_header::do_sized_write): For large segment count,
4578
        write PN_XNUM to e_phnum field.
4579
 
4580
2010-01-15  Viktor Kutuzov  
4581
 
4582
        * arm.cc (Arm_relocate_functions::thm_jump6): New function.
4583
        (Arm_relocate_functions::thm_jump8): New function.
4584
        (Arm_relocate_functions::thm_jump11): New function.
4585
        (Target_arm::Scan::local): Handle R_ARM_THM_JUMP6, R_ARM_THM_JUMP8,
4586
        R_ARM_THM_JUMP11.
4587
        (Target_arm::Scan::global): Likewise.
4588
        (Target_arm::Relocate::relocate): Likewise.
4589
        (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
4590
        Likewise.
4591
 
4592
2010-01-14  Doug Kwan  
4593
 
4594
        * arm.cc (map, utility): Include headers.
4595
        (Target_arm::apply_cortex_a8_workaround): New method.
4596
        (Arm_relobj::do_relocate_sections): Apply any Cortex-A8 workaround.
4597
        (Target_arm::Scan::local): Handle R_ARM_THM_JUMP24, R_ARM_THM_JUMP19.
4598
        (Target_arm::Scan::global): R_ARM_THM_JUMP19.
4599
        (Target_arm::do_finalize_sections): Set fix_cortex_a8_ according to
4600
        the --[no-]fix-cortex-a8 command line options.
4601
        (Target_arm::Relocate::relocate): Handle R_ARM_JUMP19.
4602
        (Target_arm::relocate_stub): Use addend in instruction template.
4603
        * options.h (DEFINE_bool): Set the user-set flag.
4604
        (General_options): Add --[no-]-fix-cortex options.
4605
        * output.cc (Output_section::convert_input_sections_to_relaxed_sections)
4606
        : Update fast look-up map after conversion.
4607
 
4608
2010-01-14  Sriraman Tallam  
4609
 
4610
        * object.cc (Sized_relobj::do_layout): Change to call layout_gnu_stack
4611
        in the first pass of do_layout.
4612
 
4613
2010-01-13  Doug Kwan  
4614
 
4615
        * arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
4616
        Arm_relobj::scan_sections_for_stubs): Rearrange code to avoid an
4617
        apparent compiler problem of not folding static constant integral
4618
        data members of elfcpp::Elf_sizes<32>.
4619
 
4620
2010-01-13  Doug Kwan  
4621
 
4622
        * arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
4623
        Arm_relobj::section_needs_cortex_a8_stub_scanning,
4624
        Arm_relobj::scan_section_for_cortex_a8_erratum,
4625
        Arm_relobj::scan_span_for_cortex_a8_erratum): New methods.
4626
        (Arm_relobj::scan_sections_for_stubs): Move code deciding what
4627
        sections to scan for relocation stubs into a new method
4628
        Arm_relobj::section_needs_reloc_stub_scanning.  Handle both
4629
        relocation and Cortex-A8 stub scanning.
4630
        (Target_arm::do_relax): Force stubs to be after stubbed sections
4631
        if fixing the Cortex-A8 erratum.  Remove all Cortex-A8 stubs at
4632
        the beginning of a new relaxation pass.  Update a comment.
4633
        (Target_arm::scan_span_for_cortex_a8_erratum): New method definition.
4634
 
4635
2010-01-12  Ian Lance Taylor  
4636
 
4637
        * target-reloc.h (visibility_error): New inline function.
4638
        (relocate_section): Call visibility_error.
4639
        * testsuite/Makefile.am (check_DATA): Add protected_3.err.
4640
        (MOSTLYCLEANFILES): Likewise.
4641
        (protected_4_pic.o, protected_3.err): New targets.
4642
        * testsuite/protected_4.cc: New file.
4643
 
4644
2010-01-12  Doug Kwan  
4645
 
4646
        * arm.cc (Cortex_a8_reloc): New class.
4647
        (Target_arm::Target_arm): Initialize new data members fix_cortex_a8_
4648
        and cortex_a8_relocs_info_.
4649
        (Target_arm::fix_cortex_a8): New method definition.
4650
        (Target_arm::Cortex_a8_relocs_info): New type.
4651
        (Target_arm::fix_cortex_a8_, Target_arm::cortex_a8_relocs_info_):
4652
        New data member declarations.
4653
        (Target_arm::scan_reloc_for_stub): Record information about
4654
        relocations for THUMB branches that might be exempted from the
4655
        Cortex-A8 workaround.
4656
        (Target_arm::do_relax): Clear all Cortex-A8 relocation information
4657
        at the beginning of a relaxation pass.
4658
 
4659
2010-01-12  Doug Kwan  
4660
 
4661
        * arm.cc (Arm_relobj::mapping_symbols_info_): New data member.
4662
        (Arm_relobj::Mapping_symbol_position,
4663
         Arm_reloj::Mapping_symbol_position_less,
4664
         Arm_relobj::Mapping_symbols_info): New types.
4665
        (Target_arm::is_mapping_symbol_name): New method definition.
4666
        (Arm_relobj::do_count_local_symbols): Save information about mapping
4667
        symbols.
4668
 
4669
2010-01-11  Doug Kwan  
4670
 
4671
        * arm.cc (Arm_relocate_functions::thumb32_branch_offset,
4672
        Arm_relocate_functions::thumb32_branch_upper,
4673
        Arm_relocate_functions::thumb32_branch_lower,
4674
        Arm_relocate_functions::thumb32_cond_branch_offset,
4675
        Arm_relocate_functions::thumb32_cond_branch_upper,
4676
        Arm_relocate_functions::thumb32_cond_branch_lower,
4677
        Arm_relocate_functions::thm_jump19): New methods to handle THUMB
4678
        branch offset encoding.
4679
        (Arm_relocate_functions::thumb_branch_common): Use new branch
4680
        offset encoding methods to avoid code duplication.
4681
        (Stub_template::Stub_template) Handle THUMB16_SPECIAL_TYPE.
4682
        (Stub_addend_reader::operator()): Use new branch encoding method
4683
        to avoid code duplication.
4684
 
4685
2010-01-11  Doug Kwan  
4686
 
4687
        * arm.cc (Arm_relobj::do_gc_process_relocs): New method.
4688
        (Target_arm::do_finalize_sections): Define special EXIDX section
4689
        symbols only if referenced.
4690
        * gc.h (Garbage_collection::add_reference): New method.
4691
        (gc_process_relocs): Use Garbage_collection::add_reference to avoid
4692
        code duplication.
4693
 
4694
2010-01-11  Ian Lance Taylor  
4695
 
4696
        * script.cc (Version_script_info::build_expression_list_lookup):
4697
        Change complaing about duplicate wildcard match from error to
4698
        warning.
4699
 
4700
        * script.cc (class Lazy_demangler): Recreate--revert part of patch
4701
        of 2009-12-30.
4702
        (Version_script_info::Version_script_info): Initialize globs_,
4703
        default_version_, default_is_global_, and exact_.  Don't
4704
        initialize globals_ or locals_.
4705
        (Version_script_info::build_lookup_tables): Build local symbols
4706
        first.
4707
        (Version_script_info::unquote): New function.
4708
        (Version_script_info::add_exact_match): New function.
4709
        (Version_script_info::build_expression_list_lookup): Remove lookup
4710
        parameter.  Add is_global parameter.  Change all callers.  Handle
4711
        wildcard pattern specially.  Unquote pattern.  Call
4712
        add_exact_match.
4713
        (Version_script_info::get_name_to_match): New function.
4714
        (Version_script_info::get_symbol_version): New function.
4715
        (Version_script_info::get_symbol_version_helper): Remove.
4716
        (Version_script_info::check_unmatched_names): Call unquote.
4717
        * script.h (class Version_script_info): Change get_symbol_version
4718
        to be non-inline and add is_global parameter; change all callers.
4719
        Rewrite symbol_is_local.  Update declarations.  Define struct
4720
        Version_tree_match, Exact, Globs.  Don't define struct Lookup.
4721
        Remove globals_ and locals_ members.  Add exact_, globs_,
4722
        default_version_, is_global_.
4723
        (Version_script_info::Glob): Remove pattern, add expression and
4724
        is_global.  Update constructor.  Change all callers.
4725
        * dynobj.cc (Versions::finalize): Mark the version symbol as the
4726
        default version.
4727
        (Versions::symbol_section_contents): If a symbol is undefined, or
4728
        defined in a dynamic object, set the version index to
4729
        VER_NDX_LOCAL.
4730
        * symtab.cc (Symbol_table::add_from_relobj): Don't call
4731
        symbol_is_local.
4732
        (Symbol_table::add_from_pluginobj): Likewise.
4733
        * testsuite/ver_matching_test.sh: blaza1 and blaza go into V2.
4734
 
4735
2010-01-11  Doug Kwan  
4736
 
4737
        * Makefile.am (incremental_dump_DEPENDENCIES): Add libintl dependency.
4738
        (incremental_dump_LDADD): Add linking option for libintl.
4739
        * Makefile.in: Regenerate.
4740
 
4741
2010-01-11  H.J. Lu  
4742
 
4743
        PR gold/11144
4744
        * testsuite/Makefile.am (dynamic_list.stdout): Use --dyn-syms
4745
        instead of -Ds.
4746
        * testsuite/Makefile.in: Regenerated.
4747
 
4748
2010-01-10  Doug Kwan  
4749
 
4750
        * options.h (DEFINE_var): Use parentheses around argument varname__
4751
        in macro body to avoid any unintended subsequent substitutions.
4752
 
4753
2010-01-10  Ian Lance Taylor  
4754
 
4755
        * resolve.cc (Symbol_table::resolve): Add symbols to list of ODR
4756
        candidates before doing symbol resolution.
4757
 
4758
        * resolve.cc (Symbol_table::resolve): Add symbols to the list of
4759
        ODR candidates if only one is weak.
4760
 
4761
2010-01-08  Ian Lance Taylor  
4762
 
4763
        * script.cc (Version_script_info::build_expression_list_lookup):
4764
        Don't warn about ambiguous version, just record the ambiguity.
4765
        (Version_script_info::get_symbol_version_helper): Give error if
4766
        version is ambiguous.
4767
 
4768
2010-01-08  Doug Kwan  
4769
 
4770
        * arm.cc (Stub_table::Stub_table): Initalize cortex_a8_stubs_,
4771
          prev_data_size_ and prev_addralign_.  Remove initializer for
4772
          deleted data member has_been_changed_.
4773
          (Stub_table::empty): Look at both reloc_stubs_ and cortex_a8_stubs_
4774
          to determine if the table is empty.
4775
          (Stub_table::has_been_changed, Stub_table_set_has_been_changed):
4776
          Remove.
4777
          (Stub_table::add_reloc_stub): Define method in class definition
4778
          instead of just declaring it there.
4779
          (Stub_table::add_cortex_a8_stub): New method definition.
4780
          (Stub_table::update_data_size_and_addralign): Ditto.
4781
          (Stub_table::finalize_stubs): Ditto.
4782
          (Stub_table::apply_cortex_a8_workaround_to_address_range): Ditto.
4783
          (Stub_table::do_addralign_): Return address alignment in the
4784
          (Stub_table::do_reset_address_and_file_offset): Define method in
4785
          class definition instead of declaring it there.  Set current data
4786
          size to be the data size of the previous pass.
4787
          (Stub_table::set_final_data_size): Use current data size as the
4788
          final data size.
4789
          (Stub_table::relocate_stub): Change parameter type of stub from
4790
          Reloc_stub pointer to Stub pointer.
4791
          (Stub_table::addralign_, Stub_table::has_been_changed_): Remove.
4792
          (Stub_table::Cortex_a8_stub_list): New typedef.
4793
          (Stub_table::cortex_a8_stubs_, Stub_table::prev_data_size_,
4794
           Stub_table::prev_addralign_): New data member.
4795
          (Arm_relobj::Arm_relobj): Initialize data member
4796
          section_has_cortex_a8_workaround_.
4797
          (Arm_relobj::section_has_cortex_a8_workaround,
4798
           Arm_relobj::mark_section_for_cortex_a8_workaround): New method
4799
           definitions.
4800
          (Arm_relobj::section_has_cortex_a8_workaround_): New data member
4801
          declarations.
4802
          (Target_arm::relocate_stub): Change parameter type of stub from
4803
          Reloc_stub pointer to Stub pointer.
4804
          (Insn_template::size, Insn_template::alignment): Handle
4805
          THUMB16_SPECIAL_TYPE.
4806
          (Stub_table::remove_all_cortex_a8_stubs, Stub_table::finalize_stubs,
4807
           Stub_table::update_data_size_and_addralign,
4808
           Stub_table::apply_cortex_a8_workaround_to_address_range): New method
4809
          definitions.
4810
          (Stub_table::relocate_stubs): Handle Cortex-A8 stubs.
4811
          (Stub_table::do_write): Ditto.
4812
          (Target_arm::do_relax): Adjust code for changes in Stub_table.
4813
 
4814
2010-01-08  Ian Lance Taylor  
4815
 
4816
        PR 11108
4817
        * symtab.h (class Symbol): Remove fields is_target_special_ and
4818
        has_plt_offset_.  Add field is_defined_in_discarded_section_.
4819
        (Symbol::is_defined_in_discarded_section): New function.
4820
        (Symbol::set_is_defined_in_discarded_section): New function.
4821
        (Symbol::has_plt_offset): Rewrite.
4822
        (Symbol::set_plt_offset): Verify that new offset is not -1U.
4823
        * symtab.cc (Symbol::init_fields): Initialize plt_offset_ to -1U.
4824
        Don't initialize is_target_special_ or has_plt_offset_.
4825
        Initialize is_defined_in_discarded_section_.
4826
        (Symbol_table::add_from_relobj): If appropriate, set
4827
        is_defined_in_discarded_section.
4828
        * resolve.cc (Symbol::override_base_with_special): Don't test
4829
        is_target_special_.  Change has_plt_offset_ to has_plt_offset().
4830
        * target-reloc.h (relocate_section): Do special handling for
4831
        symbols defined in discarded sections for global symbols as well
4832
        as local symbols.
4833
 
4834
2010-01-08  Ian Lance Taylor  
4835
 
4836
        * dynobj.cc (big_endian>::find_dynsym_sections): Set pi to NULL in
4837
        the SHT_SYMTAB case.
4838
 
4839
2010-01-08  Ian Lance Taylor  
4840
 
4841
        * object.cc (Sized_relobj::do_layout): Don't get confused if
4842
        layout_eh_frame returns NULL.
4843
 
4844
2010-01-08  Ian Lance Taylor  
4845
 
4846
        PR 11084
4847
        * dynobj.cc (Sized_dynobj::find_dynsym_sections): If there is no
4848
        dynamic symbol table, use the normal symbol table.
4849
        (Sized_dynobj::do_read_symbols): Remove assertion about type of
4850
        symbol table.
4851
 
4852
2010-01-08  Ian Lance Taylor  
4853
 
4854
        PR 11072
4855
        * layout.cc (Layout::include_section): Remove .gnu_debuglink
4856
        sections.
4857
 
4858
2010-01-08  H.J. Lu  
4859
 
4860
        * version.cc (print_version): Change to "Copyright 2010".
4861
 
4862
2010-01-08  Ian Lance Taylor  
4863
 
4864
        PR 10287
4865
        PR 11063
4866
        * i386.cc (class Target_i386): Change return type of plt_section
4867
        to be non-const.
4868
        (class Output_data_plt_i386): Add tls_desc_rel_ field.
4869
        (Output_data_plt_i386::Output_data_plt_i386): Initialize
4870
        tls_desc_rel_ field.
4871
        (Output_data_plt_i386::rel_tls_desc): New function.
4872
        (Target_i386::rel_tls_desc_section): New function.
4873
        (Target_i386::Scan::local): Rewrite R_386_TLS_GOTDESC handling.
4874
        (Target_i386::Scan::global): For R_386_TLS_GOTDESC put
4875
        R_386_TLS_DESC reloc in rel_tls_desc_section.
4876
        * x86_64.cc (class Target_x86_64): Add tlsdesc_reloc_info_ field.
4877
        Define struct Tlsdesc_info.
4878
        (Target_x86_64::Target_x86_64): Initialize tlsdesc_reloc_info_.
4879
        (Target_x86_64::do_reloc_symbol_index): New function.
4880
        (Target_x86_64::add_tlsdesc_info): New function.
4881
        (class Output_data_plt_x86_64): Add tlsdesc_rel_ field.
4882
        (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize
4883
        tlsdesc_rel_ field.
4884
        (Output_data_plt_x86_64::rela_plt): Rename from rel_plt.  Change
4885
        all callers.
4886
        (Output_data_plt_x86_64::rela_tlsdesc): New function.
4887
        (Target_x86_64::rela_tlsdesc_section): New function.
4888
        (Target_x86_64::Scan::local): Rewrite R_X86_64_GOTPC32_TLSDESC
4889
        handling.
4890
        (Target_x86_64::Scan::global): For R_X86_64_GOTPC32_TLSDESC put
4891
        (Target_x86_64::do_reloc_addend): New function.
4892
        R_X86_64_TLSDESC reloc in rela_tlsdesc_section.
4893
        * output.h (class Output_reloc) [SHT_REL]: Add new constructor
4894
        declarations.  Define TARGET_CODE.  Add arg field to u1_ union.
4895
        (Output_reloc::type): New function.
4896
        (Output_reloc::is_local_section_symbol): Check for TARGET_CODE.
4897
        (Output_reloc::is_target_specific): New function.
4898
        (Output_reloc::target_arg): New function.
4899
        (class Output_reloc) [SHT_RELA]: Add four new constructors for
4900
        absolute relocs and target specific relocs.
4901
        (class Output_data_reloc) [SHT_REL]: Add add_absolute and
4902
        add_target_specific.
4903
        (class Output_data_reloc) [SHT_RELA]: Likewise.
4904
        * output.cc (Output_reloc::Output_reloc): Add four new versions
4905
        for absolute relocs and target specific relocs.
4906
        (Output_reloc::set_needs_dynsym_index): Add TARGET_CODE case.
4907
        (Output_reloc::get_symbol_index): Likewise.
4908
        (Output_reloc::local_section_offset): Check that local_sym_index_
4909
        is not TARGET_CODE or 0.
4910
        (Output_reloc::symbol_value): Likewise.
4911
        (Output_reloc::write) [SHT_RELA]: Call target for target specific
4912
        reloc.
4913
        * target.h (class Target): Add reloc_symbol_index and reloc_addend
4914
        functions.  Add do_reloc_symbol_index and do_reloc_addend virtual
4915
        functions.
4916
        * layout.cc (add_target_dynamic_tags): Use output section for
4917
        DT_PLTRELSZ and DT_JMPREL.
4918
 
4919
2010-01-07  Ian Lance Taylor  
4920
 
4921
        PR 11061
4922
        * output.h (class Output_reloc) [SHT_RELA]: Add is_relative
4923
        function.
4924
        (class Output_data_reloc_generic): Define.
4925
        (class Output_data_reloc_base): Change base class to
4926
        Output_data_reloc_generic.  Change add() method to call
4927
        bump_relative_reloc_count for a relative reloc.  Remove
4928
        sort_relocs_ field.
4929
        * output.cc (Output_data_reloc_base::do_write): Change sort_reloc_
4930
        to sort_relocs().
4931
        * layout.cc (Layout::add_target_dynamic_tags): Change dyn_rel to
4932
        Output_data_reloc_generic*.  Add DT_RELCOUNT/DT_RELACOUNT tag if
4933
        appropriate.
4934
        * layout.h (class Layout): Update declaration.
4935
 
4936
2010-01-07  Ian Lance Taylor  
4937
 
4938
        * output.h (class Output_data): Add const version of
4939
        output_section and do_output_section.
4940
        (class Output_section_data): Add const version of
4941
        do_output_section.
4942
        (class Output_section): Likewise.
4943
        * layout.cc (Layout::add_target_dynamic_tags): New function.
4944
        * layout.h (class Layout): Update declarations.
4945
        * arm.cc (Target_arm::do_finalize_sections): Use
4946
        add_target_dynamic_tags.
4947
        * i386.cc (Target_i386::do_finalize_sections): Likewise.
4948
        * powerpc.cc (Target_powerpc::do_finalize_sections): Likewise.
4949
        * sparc.cc (Target_sparc::do_finalize_sections): Likewise.
4950
        * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
4951
 
4952
2010-01-07  Ian Lance Taylor  
4953
 
4954
        PR 11042
4955
        * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Mark the dynamic
4956
        object as needed.
4957
 
4958
2010-01-07  Dmitry Gorbachev  
4959
            Ian Lance Taylor  
4960
 
4961
        PR 11019
4962
        * object.cc: Instantiate Xindex::initialize_symtab_xindex and
4963
        Xindex::read_symtab_xindex.
4964
 
4965
2010-01-07  Doug Kwan  
4966
 
4967
        * arm.cc (Insn_template::Type): New enum value THUMB16_SPECIAL_TYPE.
4968
        (Insn_template::thumb16_bcond_insn): New method declaration.
4969
        (Insn_template): Fix spelling.
4970
        (Stub::thumb16_special): New method declaration.
4971
        (Stub::do_write): Define virtual method which was previously pure
4972
        virtual.
4973
        (Stub::do_thumb16_special): New method declaration.
4974
        (Stub::do_fixed_endian_write): New template member.
4975
        (Reloc_stub::do_write): Remove.
4976
        (Reloc_stub::do_fixed_endian_write): Remove.
4977
        (Cortex_a8_stub): New class definition.
4978
        (Stub_factory::make_cortex_a8_stub): New method definition.
4979
        (Stub_factory::Stub_factory): Add missing static storage class
4980
        qualifier for elf32_arm_stub_a8_veneer_blx.
4981
 
4982
2010-01-07  Ian Lance Taylor  
4983
 
4984
        PR 10980
4985
        * options.h (class General_options): Add --warn-unresolved-symbols
4986
        and --error-unresolved-symbols.
4987
        * errors.cc (Errors::undefined_symbol): Implement
4988
        --warn-unresolved-symbols.
4989
 
4990
        * options.h (class General_options): Add -z text and -z textoff.
4991
        * layout.cc (Layout::finish_dynamic_section): Implement -z text.
4992
 
4993
2010-01-06  Sriraman Tallam  
4994
 
4995
        * gc.h (Garbage_collection::Cident_section_map): New typedef.
4996
        (Garbage_collection::cident_sections): New function.
4997
        (Garbage_collection::add_cident_section): New function.
4998
        (Garbage_collection::cident_sections_): New member.
4999
        (gc_process_relocs): Add references to sections whose names are C
5000
        identifiers.
5001
        * gold.h (cident_section_start_prefix): New constant.
5002
        (cident_section_stop_prefix): New constant.
5003
        (is_cident): New function.
5004
        * layout.cc (Layout::define_section_symbols): Replace string constants
5005
        with the newly defined constants.
5006
        * object.cc (Sized_relobj::do_layout): Track sections whose names are
5007
        C identifiers.
5008
        * testsuite/Makefile.am: Add gc_orphan_section_test.
5009
        * testsuite/Makefile.in: Regenerate.
5010
        * testsuite/gc_orphan_section_test.cc: New file.
5011
        * testsuite/gc_orphan_section_test.sh: New file.
5012
 
5013
2010-01-06  Ian Lance Taylor  
5014
 
5015
        PR 10980
5016
        * options.h (class General_options): Add --warn-shared-textrel.
5017
        * layout.cc (Layout::finish_dynamic_section): Implement
5018
        --warn-shared-textrel.
5019
 
5020
        PR 10980
5021
        * options.h (class General_options): Add --warn-multiple-gp.
5022
 
5023
2010-01-06  Viktor Kutuzov  
5024
 
5025
        * Makefile.am (incremental_dump_DEPENDENCIES): Remove
5026
        $(THREADSLIB) and $(LIBDL).
5027
        * Makefile.in: Rebuild.
5028
 
5029
2010-01-06  Ian Lance Taylor  
5030
 
5031
        PR 10980
5032
        * options.cc (General_options::parse_section_start): New function.
5033
        (General_options::section_start): New function.
5034
        (General_options::General_options): Initialize all members.
5035
        * options.h: Include 
5036
        (class General_options): Add --section-start.  Add section_starts_
5037
        member.
5038
        * layout.cc (Layout::attach_allocated_section_to_segment): If
5039
        --section-start was used, set the address of the segment.  Remove
5040
        local sort_sections.
5041
        (Layout::relaxation_loop_body): If the address of the load segment
5042
        has been set by --section-start, don't use it.
5043
        * output.h (Output_segment::update_flags_for_output_section): New
5044
        function.
5045
        * output.cc (Output_segment::add_output_section): Call
5046
        update_flags_for_output_section.
5047
 
5048
2010-01-05  Ian Lance Taylor  
5049
 
5050
        PR 10980
5051
        * options.h (class General_options): Add --undefined-version.
5052
        * script.cc (struct Version_expression): Add was_matched_by_symbol
5053
        field.
5054
        (Version_script_info::matched_symbol): New function.
5055
        (Version_script_info::get_symbol_version_helper): Call
5056
        matched_symbol.
5057
        (Version_script_info::check_unmatched_names): New function.
5058
        * script.h (class Version_script_info): Update declarations.
5059
        * gold.cc (queue_middle_tasks): Handle --no-undefined-version.
5060
 
5061
        * options.h (class General_options): Use DEFINE_bool_alias for
5062
        allow_multiple_definition.
5063
        * resolve.cc (Symbol_table::should_override): Don't test
5064
        allow_multiple_definition.
5065
 
5066
        PR 10980
5067
        * options.h (class General_options): Add --cref.
5068
        * main.cc (main): Print cref table if --cref.  Don't close mapfile
5069
        until after printing cref table.
5070
        * cref.cc: Include "symtab.h".
5071
        (class Cref_inputs): Define Cref_table_compare and Cref_table.
5072
        (Cref_table_compare::operator()): New function.
5073
        (Cref_inputs::gather_cref): New function.
5074
        (filecol): New static const.
5075
        (Cref_inputs::print_cref): New function.
5076
        (Cref::print_cref): New function.
5077
        * cref.h: Include .
5078
        (class Cref): Update declarations.
5079
        * mapfile.h (Mapfile::file): New function.
5080
        * object.h (class Object): Define Symbols.  Declare virtual
5081
        do_get_global_symbols.
5082
        (Object::get_global_symbols): New function.
5083
        * object.cc (Input_objects::add_object): Pass object to cref_ if
5084
        --cref.
5085
        (Input_objects::archive_start): Likewise.
5086
        (Input_objects::archive_stop): Likewise.
5087
        (Input_objects::print_cref): New function.
5088
        * dynobj.h (Sized_dynobj::do_get_global_symbols): New function.
5089
        * dynobj.cc (big_endian>::do_add_symbols): Create symbols_ if
5090
        --cref.
5091
        * plugin.cc (Sized_pluginobj::do_get_global_symbols): New
5092
        function.
5093
        * plugin.h (class Sized_pluginobj): Update declarations.
5094
 
5095
2010-01-05  Ian Lance Taylor  
5096
 
5097
        * symtab.cc (Symbol_table::add_from_object): Rename def parameter
5098
        to is_default_version.  Rename insdef to insdefault.
5099
        (Symbol_table::add_from_relobj): Rename def to is_default_version
5100
        and local to is_forced_local.
5101
        (Symbol_table::add_from_pluginobj): Likewise.
5102
        (Symbol_table::add_from_dynobj): Likewise.
5103
        (Symbol_table::define_special_symbol): Rename insdef to
5104
        insdefault.
5105
 
5106
2010-01-04  Ian Lance Taylor  
5107
 
5108
        PR 10980
5109
        * options.h (class General_options): Add
5110
        --allow-multiple-definition and -z muldefs.
5111
        * resolve.cc (Symbol_table::should_override): Don't warn about a
5112
        multiple symbol definition if --allow-multiple-definition or -z
5113
        muldefs.
5114
 
5115
        PR 10980
5116
        * options.h (class General_options): Add --add-needed and
5117
        --copy-dt-needed-entries.  Tweak --as-needed help entry.
5118
        * object.cc (Input_objects::check_dynamic_dependencies): Give an
5119
        error if --copy-dt-needed-entries aka --add-needed is used and
5120
        would cause a change in behaviour.
5121
 
5122
        PR 10980
5123
        * options.h (class General_options): Add -G as a short version of
5124
        --shared.  Add no-op options -assert, -g, and -i.
5125
 
5126
2010-01-04  Sriraman Tallam  
5127
 
5128
        * gc.h (gc_process_relocs): Call is_section_foldable_candidate to
5129
        check for .text or .gnu.linkonce.t sections.
5130
        * icf.cc (Icf::find_identical_sections): Ditto.
5131
        Change the detection for mangled function name within the section
5132
        name.
5133
        * icf.h (is_section_foldable_candidate): New function.
5134
 
5135
2009-12-30  Ian Lance Taylor  
5136
 
5137
        PR 10980
5138
        * options.h (class General_options): Permit two dashes with
5139
        --retain-symbols-file.
5140
 
5141
2009-12-30  Ian Lance Taylor  
5142
 
5143
        PR 10979
5144
        * layout.cc (Layout::relaxation_loop_body): If -Ttext was used,
5145
        don't put the file header and segment headers in the text
5146
        segment.
5147
 
5148
        PR 10979
5149
        * common.cc (Sort_commons::operator()): Stabilize sort when both
5150
        entries are NULL.
5151
        (Symbol_table::do_allocate_commons_list): When allocating common
5152
        symbols, skip a symbol which is no longer common.
5153
        * symtab.h (Symbol::is_common): Test whether the symbol comes from
5154
        an object before checking its type.
5155
        * testsuite/common_test_2.c: New file.
5156
        * testsuite/common_test_3.c: New file.
5157
        * testsuite/Makefile.am (check_PROGRAMS): Add common_test_2.
5158
        (common_test_2_SOURCES, common_test_2_DEPENDENCIES): Define.
5159
        (common_test_2_LDFLAGS, common_test_2_LDADD): Define.
5160
        (common_test_2_pic.o, common_test_2.so): New targets.
5161
        (common_test_3_pic.o, common_test_3.so): New targets.
5162
        * testsuite/Makefile.in: Rebuild.
5163
 
5164
        PR 10979
5165
        * script.cc (read_input_script): If we see a new SECTIONS clause,
5166
        and we have added an input section, give an error.
5167
        * layout.h (class Layout): Add have_added_input_section function.
5168
        Add have_added_input_section_ field.
5169
        * layout.cc (Layout::Layout): Initialize
5170
        have_added_input_section_.
5171
        (Layout::layout): Set have_added_input_section_.
5172
        (Layout::layout_eh_frame): Likewise.
5173
 
5174
2009-12-30  Ian Lance Taylor  
5175
 
5176
        PR 10931
5177
        * options.h (class General_options): Add --sort-common option.
5178
        * symtab.h (class Symbol_table): Define Sort_commons_order enum.
5179
        * common.cc (Sort_common): Add sort_order parameter to
5180
        constructor.  Add sort_order_ field.
5181
        (Sort_commons::operator): Check sort_order_.
5182
        (Symbol_table::allocate_commons): Determine the sort order.
5183
        (Symbol_table::do_allocate_commons): Add sort_order parameter.
5184
        Change all callers.
5185
        (Symbol_table::do_allocate_commons_list): Likewise.
5186
 
5187
2009-12-30  Ian Lance Taylor  
5188
 
5189
        PR 10916
5190
        * symtab.cc (Symbol_table::add_from_relobj): When not exporting
5191
        symbols from this object, don't change the visibility of an
5192
        undefined symbol.
5193
        * testsuite/exclude_libs_test_1.c (lib1_ref): New function.
5194
 
5195
2009-12-30  Ian Lance Taylor  
5196
 
5197
        PR 10861
5198
        * script.h (class Version_script_info): Define Language enum.
5199
        Update declarations.  Define Glob, Exact, and Lookup types.  Add
5200
        new fields globals_, locals_, and is_finalized_.
5201
        * script.cc: Various formatting fixes.
5202
        (class Parser_closure): Change language_stack_ from a vector of
5203
        std::string to one of Version_script_info::Language.  Adjust all
5204
        uses accordingly.
5205
        (class Lazy_demangler): Remove.
5206
        (struct Version_expression): Change language from std::string to
5207
        Version_script_info::Language.
5208
        (Version_script_info::Version_script_info): New function.
5209
        (Version_script_info::~Version_script_info): Don't call clear.
5210
        (Version_script_info::finalize): New function.
5211
        (Version_script_info::build_lookup_tables): New function.
5212
        (Version_script_info::build_expression_list_lookup): New
5213
        function.
5214
        (Version_script_info::get_symbol_version_helper): Rewrite to use
5215
        lookup tables.
5216
        (Version_script_info::print_expression_list): Adjust to use
5217
        Version_script_info::Language.
5218
        (script_push_lex_into_version_mode): Check that the version script
5219
        has not been finalized.
5220
        (version_script_push_lang): Change language string to
5221
        Version_script_info::Language.
5222
        * options.cc (Command_line::version_script): New function.
5223
        * options.h (class General_options): Add finalize_dynamic_list
5224
        function.  Change version_script from declaration to definition.
5225
        * testsuite/ver_test_4.script: Remove duplicate def of t2_2.
5226
        * testsuite/version_script.map: Remove duplicate def of foo.
5227
        * testsuite/Makefile.am (ver_matching_def.so): Depend upon
5228
        version_script.map.
5229
        * testsuite/Makefile.in: Rebuild.
5230
 
5231
2009-12-30  Ian Lance Taylor  
5232
 
5233
        PR 10843
5234
        * target-reloc.h (relocate_for_relocatable): When copying a reloc,
5235
        if the input symbol index is 0, make the output symbol index 0.
5236
 
5237
2009-12-30  Ian Lance Taylor  
5238
 
5239
        PR 10670
5240
        * options.h (class General_options): Add -x/--discard-all.
5241
        * object.cc (Sized_relobj::do_count_local_symbols): Handle
5242
        --discard-all.  If the local symbol needs a dynamic entry, check
5243
        that before handling --discard-locals.
5244
 
5245
2009-12-30  Ian Lance Taylor  
5246
 
5247
        PR 10450
5248
        * output.cc (Output_segment::Output_segment): If PT_TLS, set the
5249
        flags to PF_R.
5250
        (Output_segment::add_output_section): Don't change the flags if
5251
        the type is PT_TLS.
5252
 
5253
        PR 10450
5254
        * dynobj.cc (Dynobj::create_gnu_hash_table): Add symbols to the
5255
        GNU hash table if they need a dynamic value.  Otherwise, don't add
5256
        them if they are defined in a dynamic object or are forced local.
5257
 
5258
2009-12-29  Ian Lance Taylor  
5259
 
5260
        PR 10450
5261
        * layout.cc (Layout::create_dynamic_symtab): Only set entsize of
5262
        .gnu.hash table for a 32-bit target.
5263
 
5264
        PR 10450
5265
        * symtab.h (Symbol::needs_dynsym_entry): A symbol in both a
5266
        regular and a dynamic object only needs a dynamic symbol table
5267
        entry if it is externally visible.
5268
 
5269
        PR 10450
5270
        * i386.cc (class Target_i386): Initialize global_offset_table_ in
5271
        constructor.  Add global_offset_table_ field.
5272
        (Target_i386::got_section): Set global_offset_table_.
5273
        (Target_i386::do_finalize_sections): Set global_offset_table_
5274
        size.
5275
        * x86_64.cc (class Target_x86_64): Initialize global_offset_table_
5276
        in constructor.  Add global_offset_table_ field.
5277
        (Target_x86_64::got_section): Set global_offset_table_.
5278
        (Target_x86_64::do_finalize_sections): Set global_offset_table_
5279
        size.
5280
 
5281
        * layout.cc (Layout::Layout): Initialize increase_relro_.
5282
        (Layout::get_output_section): Add is_relro, is_last_relro, and
5283
        is_first_non_relro parameters.  Change all callers.
5284
        (Layout::choose_output_section): Likewise.
5285
        (Layout::add_output_section_data): Likewise.
5286
        (Layout::make_output_section): Likewise.
5287
        (Layout::set_segment_offsets): Clear increase_relro when using a
5288
        linker script.
5289
        * layout.h (class Layout): Add increase_relro method.  Add
5290
        increase_relro_ field.  Update declarations.
5291
        * output.cc (Output_section::Output_section): Initialize
5292
        is_last_relro_ and is_first_non_relro_.
5293
        (Output_segment::add_output_section): Group relro sections is
5294
        do_sort is true.  Handle is_last_relro and is_first_non_relro.
5295
        (Output_segment::maximum_alignment): Remove relro handling.
5296
        (Output_segment::set_section_addresses): Add increase_relro
5297
        parameter.  Change all callers.  Add initial alignment to align
5298
        relro sections on separate page.  Remove old relro handling.
5299
        (Output_segment::set_section_list_addresses): Remove in_relro
5300
        parameter.  Change all callers.
5301
        (Output_segment::set_offset): Add increase parameter.  Change all
5302
        callers.  Remove old relro handling.
5303
        * output.h (class Output_section): Add new methods: is_last_relro,
5304
        set_is_last_relro, is_first_non_relro, set_is_first_non_relro.
5305
        Add is_last_relro_ and is_first_non_relro_ fields.
5306
        * i386.cc (Target_i386::got_section): Don't call set_is_relro.
5307
        Create separate .got.plt section.  Call increase_relro.
5308
        * x86_64.cc (Target_x86_64::got_section): Likewise.
5309
        * testsuite/relro_script_test.t: Add .got.plt.
5310
 
5311
        PR 10450
5312
        * layout.cc (Layout::Layout): Initialize dynamic_symbol_ field.
5313
        (Layout::create_initial_dynamic_sections): Set dynamic_symbol_.
5314
        (Layout::finalize): Call set_dynamic_symbol_size.
5315
        (Layout::set_dynamic_symbol_size): New function.
5316
        * layout.h (class Layout): Add dynamic_symbol_ field.  Declare
5317
        set_dynamic_symbol_size.
5318
 
5319
        PR 10450
5320
        * output.h (class Output_section): Add is_entsize_zero_ field.
5321
        * output.cc (Output_section::Output_section): Initialize
5322
        is_entsize_zero_.
5323
        (Output_section::set_entsize): If two different entsizes are
5324
        requested, force it to zero.
5325
        (Output_section::add_input_section): Set flags for .debug_str
5326
        before updating section flags.  Set entsize.
5327
        (Output_section::update_flags_for_input_section): Set SHF_MERGE
5328
        and SHF_STRING if all input sections have those flags.
5329
 
5330
2009-12-29   Rafael Espindola  
5331
 
5332
        * main.cc (main): Fix the sys time reporting.
5333
        * workqueue.cc (Workqueue::find_and_run_task): Fix the sys time
5334
        reporting.
5335
 
5336
2009-12-29  Sriraman Tallam  
5337
 
5338
        * options.cc (General_options::parse_version): Allow -v to exit
5339
        without an error if there is nothing to link.
5340
 
5341
2009-12-29  Ian Lance Taylor  
5342
 
5343
        * configure.ac: Set the MCMODEL_MEDIUM conditional to false if
5344
        using a version of gcc before 4.1.
5345
        * configure: Rebuild.
5346
 
5347
2009-12-28  Chris Demetriou  
5348
 
5349
        * attributes.cc (Output_attributes_section_data::do_write): Use
5350
        std::vector::front rather than std::vector::data.
5351
 
5352
2009-12-28  Ian Lance Taylor  
5353
 
5354
        * symtab.h (class Symbol_table): Add enum Defined.
5355
        * resolve.cc (Symbol_table::should_override): Add defined
5356
        parameter.  Change all callers.  Test whether object is NULL
5357
        before calling a method on it.
5358
        (Symbol_table::report_resolve_problem): Add defined parameter.
5359
        Change all callers.
5360
        (Symbol_table::should_override_with_special): Likewise.
5361
        * symtab.cc (Symbol_table::define_in_output_data): Add defined
5362
        parameter.  Change all callers.
5363
        (Symbol_table::do_define_in_output_data): Likewise.
5364
        (Symbol_table::define_in_output_segment): Likewise.
5365
        (Symbol_table::do_define_in_output_segment): Likewise.
5366
        (Symbol_table::define_as_constant): Likewise.
5367
        (Symbol_table::do_define_as_constant): Likewise.
5368
        * script.h (class Symbol_assignment): Add is_defsym parameter to
5369
        constructor; change all callers.
5370
        * script.cc (Script_options::add_symbol_assignment): Add is_defsym
5371
        parameter.  Change all callers.  Add is_defsym_ field.
5372
        (class Parser_closure): Add parsing_defsym parameter to
5373
        constructor; change all callers.  Add parsing_defsym accessor
5374
        function.  Add parsing_defsym_ field.
5375
 
5376
2009-12-28  Ian Lance Taylor  
5377
 
5378
        * gold.cc (queue_middle_tasks): Fix formatting.
5379
        * object.cc (Relobj::is_section_name_included): Likewise.
5380
 
5381
2009-12-23  Ian Lance Taylor  
5382
 
5383
        * i386.cc (Target_i386::do_calls_non_split): Recognize
5384
        -fsplit-stack prologue for a function with a static chain.
5385
        * x86_64.cc (Target_x86_64::do_calls_non_split): Recognize
5386
        -fsplit-stack prologue when using %r11.
5387
 
5388
2009-12-21  Sriraman Tallam  
5389
 
5390
        * options.cc (General_options::parse_version): Make -v continue and do
5391
        the link like GNU ld does.
5392
 
5393
2009-12-17  Rafael Avila de Espindola  
5394
 
5395
        * Makefile.am (CCFILES): Add timer.cc.
5396
        (HFILES): Add timer.h.
5397
        * configure.ac: Check for sysconf and times.
5398
        * main.cc: include timer.h.
5399
        (main): Use Timer instead of get_run_time.
5400
        * timer.cc: New.
5401
        * timer.h: New.
5402
        * workqueue.cc: include timer.h.
5403
        (Workqueue::find_and_run_task):
5404
        Report user, sys and wall time.
5405
        * Makefile.in: Regenerate.
5406
        * config.in: Regenerate.
5407
        * configure: Regenerate.
5408
 
5409
2009-12-16  Doug Kwan  
5410
 
5411
        * arm.cc (Arm_relobj::scan_sections_for_stubs): Exclude ICF-eliminated
5412
        sections.
5413
        * object.cc (Sized_relobj::do_finalize_local_symbols): Handle
5414
        relaxed input sections.
5415
        * output.cc (Output_section::find_relaxed_input_section): Change
5416
        return type to Output_relaxed_input_section pointer.  Adjust code
5417
        for new type of relaxed_input_section_map_.
5418
        * output.h (Output_section::find_relaxed_input_section): Change
5419
        return type to Output_relaxed_input_section pointer.
5420
        (Output_section::Output_relaxed_input_section_by_input_section_map):
5421
        New type.
5422
        (Output_section::relaxed_input_section_map_): Change type to
5423
        Output_section::Output_relaxed_input_section_by_input_section_map.
5424
        * symtab.cc (Symbol_table::compute_final_value): Handle relaxed
5425
        input section.
5426
 
5427
2009-12-15  Ian Lance Taylor  
5428
 
5429
        * layout.cc (Layout::create_shstrtab): Only write out after input
5430
        sections if we are compressing debug sections.
5431
 
5432
2009-12-15  Ian Lance Taylor  
5433
 
5434
        * archive.cc (Archive::add_symbols): Only look up a symbol without
5435
        a version if there is, in fact, a version.
5436
 
5437
2009-12-14  Ian Lance Taylor  
5438
 
5439
        Revert -Wshadow changes, all changes from:
5440
        2009-12-11  Doug Kwan  
5441
        2009-12-11  Nick Clifton  
5442
        * configure.ac: Remove -Wshadow when setting WARN_CXXFLAGS.
5443
 
5444
2009-12-11  Doug Kwan  
5445
 
5446
        * arm.cc (Target_arm::do_finalize_sections): Fix build breakage
5447
        due to -Wshadow.
5448
        * attributes.cc (Object_attribute::size): Ditto.
5449
        (Attributes_section_data::size): Ditto.
5450
        (Attributes_section_data::Attributes_section_data): Ditto.
5451
        (Output_attributes_section_data::do_write): Ditto.
5452
        * attributes.h (Object_attribute::set_type): Ditto.
5453
        * testsuite/tls_test_main.cc (safe_lock, safe_unlock): Ditto.
5454
 
5455
2009-12-11  Nick Clifton  
5456
 
5457
        * archive.cc: Fix shadowed variable warnings.
5458
        * arm.cc: Likewise.
5459
        * compressed_output.cc: Likewise.
5460
        * compressed_output.h: Likewise.
5461
        * configure: Likewise.
5462
        * dwarf_reader.cc: Likewise.
5463
        * dynobj.cc: Likewise.
5464
        * dynobj.h: Likewise.
5465
        * ehframe.cc: Likewise.
5466
        * ehframe.h: Likewise.
5467
        * errors.cc: Likewise.
5468
        * expression.cc: Likewise.
5469
        * fileread.cc: Likewise.
5470
        * fileread.h: Likewise.
5471
        * freebsd.h: Likewise.
5472
        * i386.cc: Likewise.
5473
        * icf.cc: Likewise.
5474
        * incremental.h: Likewise.
5475
        * layout.cc: Likewise.
5476
        * layout.h: Likewise.
5477
        * mapfile.cc: Likewise.
5478
        * merge.cc: Likewise.
5479
        * merge.h: Likewise.
5480
        * object.cc: Likewise.
5481
        * object.h: Likewise.
5482
        * options.h: Likewise.
5483
        * output.cc: Likewise.
5484
        * output.h: Likewise.
5485
        * parameters.cc: Likewise.
5486
        * plugin.cc: Likewise.
5487
        * powerpc.cc: Likewise.
5488
        * reduced_debug_output.cc: Likewise.
5489
        * reduced_debug_output.h: Likewise.
5490
        * reloc.cc: Likewise.
5491
        * reloc.h: Likewise.
5492
        * resolve.cc: Likewise.
5493
        * script-sections.cc: Likewise.
5494
        * script.cc: Likewise.
5495
        * script.h: Likewise.
5496
        * sparc.cc: Likewise.
5497
        * symtab.cc: Likewise.
5498
        * symtab.h: Likewise.
5499
        * target-select.cc: Likewise.
5500
        * target-select.h: Likewise.
5501
        * token.h: Likewise.
5502
        * workqueue.cc: Likewise.
5503
        * workqueue.h: Likewise.
5504
        * x86_64.cc: Likewise.
5505
 
5506
2009-12-10  Doug Kwan  
5507
 
5508
        * arm.cc (attributes.h): New include.
5509
        (Arm_relobj::Arm_relobj): Initialize attributes_section_data_.
5510
        (Arm_relobj::~Arm_relobj): Delete object pointed by
5511
        attributes_section_data_.
5512
        (Arm_relobj::attributes_section_data): New method definition.
5513
        (Arm_relobj::attributes_section_data_): New data member declaration.
5514
        (Arm_dynobj::Arm_dynobj): Initialize attributes_section_data_.
5515
        (Arm_dynobj::~Arm_dynobj): Delete object pointed by
5516
        attributes_section_data_.
5517
        (Arm_dynobj::attributes_section_data): New method definition.
5518
        (Arm_dynobj::attributes_section_data_): New data member declaration.
5519
        (Target_arm::Target_arm): Initialize attributes_section_data_.  Change
5520
        initialization value of may_use_blx_ to false.
5521
        (Target_arm::using_thumb2, Target_arm::using_thumb_only,
5522
        Target_arm::may_use_arm_nop, Target_arm::may_use_thumb2_nop): Use
5523
        object attributes to compute results instead of hard-coding.
5524
        (Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order,
5525
        Target_arm::get_secondary_compatible_arch,
5526
        Target_arm::set_secondary_compatible_arch
5527
        Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name,
5528
        Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes):
5529
        New method declarations.
5530
        (Target_arm::get_aeabi_object_attribute): New method definition.
5531
        (Target_arm::attributes_section_data_): New data member declaration.
5532
        (read_arm_attributes_section): New template definition.
5533
        (Arm_relobj::do_read_symbols): Read attributes section if it exists.
5534
        (Arm_dynobj::do_read_symbols): Ditto.
5535
        (Target_arm::do_finalize_sections): Merge attributes sections from
5536
        input.  Check for BLX use after attributes section merging.
5537
        Fix __exidx_start and __exidx_end visibility.  Create an
5538
        .ARM.attributes section if necessary.
5539
        (Target_arm::get_secondary_compatible_arch,
5540
        Target_arm::set_secondary_compatible_arch,
5541
        Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name,
5542
        Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes,
5543
        Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order):
5544
        New method definitions.
5545
 
5546
2009-12-09  Ian Lance Taylor  
5547
 
5548
        * plugin.cc (Plugin::load): Don't cast from void* to a function
5549
        pointer.
5550
 
5551
2009-12-09  Ian Lance Taylor  
5552
 
5553
        * dynobj.cc (Sized_dynobj::do_read_symbols): Clear version
5554
        information fields.
5555
 
5556
2009-12-09  H.J. Lu  
5557
 
5558
        * testsuite/Makefile.am (two_file_shared_1_pic_2_test_DEPENDENCIES):
5559
        Replace two_file_shared_1.so with two_file_shared_2.so.
5560
        * testsuite/Makefile.in: Regenerated.
5561
 
5562
2009-12-08  Doug Kwan  
5563
 
5564
        * Makefile.am (CCFILES): Add attributes.cc and int_encoding.cc.
5565
        (HFILES): Add attributes.h and int_encoding.h.
5566
        * Makefile.in: Regenerate.
5567
        * dwarf_reader.cc (read_unsigned_LEB_128, read_signed_LEB_128): Move
5568
        function definitions to int_encoding.cc
5569
        * dwarf_reader.h (read_unsigned_LEB_128, read_signed_LEB_128): Move
5570
        prototypes to int_encoding.h
5571
        * reduced_debug_output.cc (int_encoding.h): New include.
5572
        (write_unsigned_LEB_128, get_length_as_unsigned_LEB_128): Move
5573
        function definitions to int_encoding.cc
5574
        (insert_into_vector, read_from_pointer): Move template definitions to
5575
        int_encoding.h
5576
        * attributes.cc: New file.
5577
        * attributes.h: New file.
5578
        * int_encoding.cc: New file.
5579
        * int_encoding.h: New file.
5580
 
5581
2009-12-07  Rafael Avila de Espindola  
5582
 
5583
        PR gold/11055
5584
        * incremental-dump.cc (dump_incremental_inputs): New.
5585
        (main): Use dump_incremental_inputs.
5586
 
5587
2009-12-07  H.J. Lu  
5588
 
5589
        PR gold/10893
5590
        * i386.cc (Target_i386::Scan::globa): Use is_func instead of
5591
        checking elfcpp::STT_FUNC.
5592
        (Target_i386::Relocate::relocate): Likewise.
5593
        * x86_64.cc (Target_x86_64::Scan::global): Likewise.
5594
 
5595
        * symtab.cc (Symbol_table::sized_write_symbol): Turn IFUNC
5596
        symbols from shared libraries into normal FUNC symbols.
5597
 
5598
        * symtab.h (Symbol): Add is_func and use it.
5599
 
5600
2009-12-05  Doug Kwan  
5601
 
5602
        * arm.cc (Target_arm::arm_info): Initialize new fields
5603
        attributes_section and attributes_vendor.
5604
        * i386.cc (Target_i386::i386_info): Same.
5605
        * object.cc (Sized_relobj::do_layout): Skip attribute section.
5606
        * gold/powerpc.cc (Target_powerpc::powerpc_info): Initialize new
5607
        fields attributes_section and attributes_vendor.
5608
        * sparc.cc (Target_sparc::sparc_info): Same.
5609
        * target.h (Target::attributes_section, Target::attributes_vendor,
5610
        Target::is_attributes_section, Target::attribute_arg_type,
5611
        Target::attributes_order): New method definitions.
5612
        (Target::Target_info::attributes_section,
5613
        Target::Target_info::attributes_vendor): New fields.
5614
        (Target::do_attribute_arg_type, Target::do_attributes_order): New
5615
        virtual method definitions.
5616
        * x86_64.cc (Target_x86_64::x86_64_info): Initialize new fields
5617
        attributes_section and attributes_vendor.
5618
        * testsuite/testfile.cc (Target_test::test_target_info): Same.
5619
 
5620
2009-12-05  Doug Kwan  
5621
 
5622
        * arm.cc: Update comments about interworking and stub generation.
5623
        (Target_arm::Relocate::reloc_is_non_pic): Update list of relocations
5624
        considered as non-PIC.
5625
        (Arm_relocate_functions::base_abs): Fix formatting.
5626
        (Arm_relocate_functions::got_prel): Fix comment.  Change interface
5627
        of function to use GOT entry address instead of offset.
5628
        (Target_arm::Scan::global): Issue an error if a symbol would need a
5629
        PLT does not get one because it is untyped.  Remove code to create
5630
        dynamic symbols for relative branches.
5631
        (Target_arm::Relocate::relocate: Use 0 instead of false since function
5632
        takes unsigned integer instead of boolean.
5633
 
5634
2009-12-05  H.J. Lu  
5635
 
5636
        * testsuite/Makefile.am (constructor_test_LDADD): New. Empty.
5637
        (two_file_test_LDADD): Likewise.
5638
        (common_test_1_LDADD): Likewise.
5639
        (exception_test_LDADD) Likewise.
5640
        (weak_test_LDADD): Likewise.
5641
        (many_sections_test_LDADD): Likewise.
5642
        (initpri1_LDADD): Likewise.
5643
        (script_test_1_LDADD): Likewise.
5644
        (script_test_2_LDADD): Likewise.
5645
        (justsyms_LDADD): Likewise.
5646
        (binary_test_LDADD): Likewise.
5647
        (large_LDADD): Likewise.
5648
        * testsuite/Makefile.in: Regenerated.
5649
 
5650
2009-12-04  H.J. Lu  
5651
 
5652
        * resolve.cc (symbol_to_bits): Treat STB_GNU_UNIQUE as STB_GLOBAL.
5653
        (Symbol_table::override_with_special): Likewise.
5654
        (Symbol_table::add_from_object): Likewise.
5655
 
5656
2009-12-04  Rafael Avila de Espindola  
5657
 
5658
        * incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
5659
        Don't set the data_offset twice.
5660
 
5661
2009-12-04  Rafael Avila de Espindola  
5662
 
5663
        * testsuite/Makefile.in: Regenerate.
5664
 
5665
2009-12-03  Doug Kwan  
5666
 
5667
        * arm.cc: Remove comment about missing .ARM.exidx section symbols.
5668
        (Target_arm::do_finalize_sections): Add parameter for symbol table
5669
        pointer.  Add __exidx_start and __exidx_end symbols as appropriate.
5670
        * i386.cc (Target_i386::do_finalize_sections): Add an additional
5671
        parameter for symbol table pointer.
5672
        * layout.cc (Layout::finalize): Call Target::finalize_sections with
5673
        an additional parameter for a pointer to symbol table.
5674
        * powerpc.cc (Target_powerpc::do_finalize_sections): Add an additional
5675
        parameter for a symbol table pointer.
5676
        * sparc.cc (Target_sparc::do_finalize_sections): Ditto.
5677
        * target.h (Target::finalize_sections, Target::do_finalize_sections):
5678
        Ditto.
5679
        * x86_64.cc (Target_x86_64::do_finalize_sections): Add an additional
5680
        parameter for a symbol table pointer.
5681
 
5682
2009-12-03  Rafael Avila de Espindola  
5683
 
5684
        * incremental.cc (Incremental_inputs_header)
5685
        (Incremental_inputs_header_write, Incremental_inputs_entry)
5686
        (Incremental_inputs_entry_write): Move ...
5687
        * incremental.h (Incremental_inputs_header)
5688
        (Incremental_inputs_header_write, Incremental_inputs_entry)
5689
        (Incremental_inputs_entry_write): here.
5690
 
5691
2009-12-02  Rafael Avila de Espindola  
5692
 
5693
        * incremental.cc (make_sized_incremental_binary): Set the target.
5694
        Error if it is incompatible.
5695
        * output.h (Output_file): Add filename method.
5696
 
5697
2009-12-02  Rafael Avila de Espindola  
5698
 
5699
        * incremental.cc (Incremental_inputs_entry): Remove unused argument
5700
        from the get_* methods.
5701
 
5702
2009-12-02  Rafael Avila de Espindola  
5703
 
5704
        * incremental-dump.cc (main): Check that the offeset of a script is 0.
5705
        * incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
5706
        Write 0 for the data_offset of scripts.
5707
 
5708
2009-12-02  Rafael Avila de Espindola  
5709
 
5710
        * testsuite/Makefile.am: Add the incremental_test.sh test.
5711
        * testsuite/incremental_test.sh: New.
5712
        * testsuite/incremental_test_1.c: New.
5713
        * testsuite/incremental_test_2.c: New.
5714
 
5715
2009-12-01  Rafael Avila de Espindola  
5716
 
5717
       * incremental-dump.cc (main): Fix typos.
5718
 
5719
2009-11-27  Rafael Avila de Espindola  
5720
 
5721
        PR gold/11025
5722
        * incremental-dump.cc (main): Use llu to print 64 bit values.
5723
 
5724
2009-11-26  Per Øyvind Karlsen 
5725
            H.J. Lu  
5726
 
5727
        * Makefile.am (incremental_dump_DEPENDENCIES): Add $(THREADSLIB)
5728
        $(LIBDL).
5729
        (incremental_dump_LDADD): Likewise.
5730
        * Makefile.in: Regenerated.
5731
 
5732
2009-11-25  Doug Kwan  
5733
 
5734
        Revert:
5735
 
5736
        2009-11-25  Doug Kwan  
5737
 
5738
                * arm.cc (Target_arm::Target_arm): Move method definition
5739
                outside of class definition.  Add code to handle
5740
                --target1-rel, --target1-abs and --target2= options.
5741
                (Target_arm::get_reloc_reloc_type): Change method to be
5742
                non-static and const.
5743
                (Target_arm::target1_is_rel_, Target_arm::target2_reloc_):
5744
                New data member declaration.
5745
                (Target_arm::Scan::local, Target_arm::Scan::global,
5746
                Target_arm::Relocate::relocate,
5747
                Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
5748
                Adjust call to Target_arm::get_real_reloc_type.
5749
                (Target_arm::get_real_reloc_type): Use command line options
5750
                to determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
5751
                * options.h (--target1-rel, --target1-abs, --target2): New
5752
                ARM-only options.
5753
 
5754
2009-11-25  Doug Kwan  
5755
 
5756
        * arm.cc (Target_arm::Target_arm): Move method definition outside of
5757
        class definition.  Add code to handle --target1-rel, --target1-abs
5758
        and --target2= options.
5759
        (Target_arm::get_reloc_reloc_type): Change method to be non-static
5760
        and const.
5761
        (Target_arm::target1_is_rel_, Target_arm::target2_reloc_): New data
5762
        member declaration.
5763
        (Target_arm::Scan::local, Target_arm::Scan::global,
5764
        Target_arm::Relocate::relocate,
5765
        Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Adjust
5766
        call to Target_arm::get_real_reloc_type.
5767
        (Target_arm::get_real_reloc_type): Use command line options to
5768
        determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
5769
        * options.h (--target1-rel, --target1-abs, --target2): New ARM-only
5770
        options.
5771
 
5772
2009-11-25  Doug Kwan  
5773
 
5774
        * arm.cc (Target_arm::may_use_thumb2_nop): New method definition.
5775
        (Arm_relocate_functions::thumb_branch_common): New metod declaration.
5776
        (Arm_relocate_functions::abs12, Arm_relocate_functions::abs16): Fix
5777
        formatting.
5778
        (Arm_relocate_functions::thm_call): Replace body with a call to
5779
        Arm_relocate_functions::thumb_branch_common.
5780
        (Arm_relocate_functions::thm_jump24,
5781
        Arm_relocate_functions::thm_xpc22): New method definitions.
5782
        (Arm_relocate_functions::thumb_branch_common): New method definition.
5783
        (Reloc_stub::stbu_type_for_reloc): Fix incorrect uses of bit-wise-or
5784
        operator.
5785
        (Target_arm::Relocate::relocate): Adjust call to thm_call.
5786
        Add code to handle R_ARM_THM_XPC22 and R_ARM_THM_JUMP24.
5787
 
5788
2009-11-24  Rafael Avila de Espindola  
5789
 
5790
        * Makefile.am: Build incremental-dump
5791
        * Makefile.in: Regenerate.
5792
        * incremental-dump.cc: New.
5793
        * incremental.cc (Incremental_inputs_header_data,
5794
        Incremental_inputs_entry_data): Move to incremental.h
5795
        * incremental.h: (Incremental_inputs_header_data,
5796
        Incremental_inputs_entry_data): Move from incremental.cc
5797
 
5798
2009-11-24  Rafael Avila de Espindola  
5799
 
5800
        * incremental.cc (Incremental_inputs_header,
5801
        Incremental_inputs_header_write, Incremental_inputs_entry,
5802
        Incremental_inputs_entry_write): Add a typedef with the data type.
5803
 
5804
2009-11-24  Rafael Avila de Espindola  
5805
 
5806
        * incremental.cc (Incremental_inputs_header,
5807
        Incremental_inputs_header_write, Incremental_inputs_entry,
5808
        Incremental_inputs_entry_write): Update comment about which
5809
        type has the filed descriptions.
5810
 
5811
2009-11-15  Doug Kwan  
5812
 
5813
        * arm.cc (Target_arm::may_use_arm_nop): New method definition.
5814
        (Arm_relocate_functions::arm_branch_common): Change method defintion
5815
        in class definition to a method declaration and update list of formal
5816
        parameters.
5817
        (Arm_relocate_functions::plt32, Arm_relocate_functions::call,
5818
        Arm_relocation_functions::jump24): Adjust call to
5819
        Arm_relocate_functions::arm_branch_common.  Update list of formal
5820
        parameters.
5821
        (Arm_relocate_functions::xpc25): New method definition.
5822
        (Arm_relocate_functions::arm_branch_common): Move method defintion
5823
        out from class definition.  Use stubs for mode-switching and extending
5824
        branch ranges.
5825
        (Target_arm::Relocate::relocate): Handle weakly-undefined symbols
5826
        specially.  Change code to enable use of stubs in ARM branches.
5827
 
5828
2009-11-10  Doug Kwan  
5829
 
5830
        * arm.cc (Arm_relobj::do_relocate_sections): Remove options parameter
5831
        in method declaration.
5832
        (Target_arm::relocate_stub): New method declaration.
5833
        (Target_arm::default_target): Change to return a pointer instead of
5834
        a const reference.
5835
        (Reloc_stub::stub_type_for_reloc): Adjust for the change in
5836
        Target_arm::default_target.
5837
        (Arm_Relobj::do_relocate_sections): Remove options paramater in
5838
        method definition.
5839
        (Target_arm::relocate_section): Adjust view.
5840
        (Target_arm::relocate_stub): New method definition.
5841
 
5842
2009-11-10  Doug Kwan  
5843
 
5844
        * i386.cc (Target_i386::do_calls_non_split): Add a cast to avoid
5845
        a format warning.
5846
        * incremental.cc (open_incremental_binary): Initialized local
5847
        variables to avoid warnings.
5848
        * object.cc (make_elf_object): Ditto.
5849
        * x86_64.cc (Target_x86_64::do_calls_non_split): Add a cast to avoid
5850
        a format warning.
5851
 
5852
009-11-09  H.J. Lu  
5853
 
5854
        PR gold/10930
5855
        * testsuite/plugin_test.c: Include "config.h".
5856
 
5857
2009-11-09  Doug Kwan  
5858
 
5859
        * arm.cc (Target_arm::fake_relnum_for_stubs): New constant.
5860
        (arm_symbol_value): Remove.
5861
        (Arm_relocate_functions::arm_branch_common,
5862
        Arm_relocate_functions::abs8, Arm_relocate_functions::thm_abs5,
5863
        Arm_relocate_functions::abs12, Arm_relocate_functions::abs16,
5864
        Arm_relocate_functions::abs32, Arm_relocate_functions::rel32,
5865
        Arm_relocate_functions::thm_call, Arm_relocate_functions::plt32,
5866
        Arm_relocate_functions::call, Arm_relocate_functions::jump24,
5867
        Arm_relocate_functions::prel31, Arm_relocate_functions::mov_abs_nc,
5868
        Arm_relocate_functions::movt_abs, Arm_relocate_functions::movw_abs_nc,
5869
        Arm_relocate_functions::thm_mobw_abs_nc,
5870
        Arm_relocate_functions::thm_mov_abs,
5871
        Arm_relocate_functions::movw_prel_nc,
5872
        Arm_relocate_functions::thm_movt_abs,
5873
        Arm_relocate_functions::movt_prel,
5874
        Arm_relocate_functions::thm_movw_prel_nc,
5875
        Arm_relocate_functions::thm_movt_prel): Adjust callers of the above.
5876
        (Target_arm::Relocate::relocate): Only decompose address into two
5877
        parts if relocation type uses the thumb-bit and pass the actual
5878
        bit instead of a flag indicating that the thumb-bit is used.  Adjust
5879
        calls to methods in Arm_relocate_functions for this change.
5880
 
5881
2009-11-08  Ian Lance Taylor  
5882
 
5883
        PR 10925
5884
        * reloc.cc: Instantiate
5885
        Sized_relobj::initialize_input_to_output_maps and
5886
        Sized_relobj:free_input_to_output_maps.
5887
 
5888
2009-11-06  Ian Lance Taylor  
5889
 
5890
        PR 10876
5891
        * defstd.cc (in_segment): Set only_if_ref true for "end".
5892
 
5893
2009-11-06  Doug Kwan  
5894
 
5895
        * arm.cc (class Reloc_stub): Correct a comment.
5896
        (Target_arm::Target_arm): Initialize arm_input_section_map_.
5897
        (Target_arm::scan_section_for_stubs): New method declaration.
5898
        (Target_arm::do_make_elf_object, Target_arm::do_make_output_section):
5899
        Change methods from private to protected.
5900
        (Target_arm::do_may_relax): New method definition.
5901
        (Target_arm::do_relax, Target_arm::group_sections,
5902
        Target_arm::scan_reloc_for_stub,
5903
        Target_arm::scan_reloc_section_for_stubs): New method declarations.
5904
        (Target_arm::arm_input_section_map_): New data member declaration.
5905
        (Target_arm::scan_reloc_for_stub,
5906
        Target_arm::scan_reloc_section_for_stubs,
5907
        Target_arm::scan_section_for_stubs, Target_arm::group_sections,
5908
        Target_arm::do_relax): New method definitions.
5909
 
5910
2009-11-06  Mikolaj Zalewski  
5911
 
5912
        * configure.ac: Check for (struct stat)::st_mtim
5913
        * fileread.cc (File_read::get_mtime): Use st_mtim if available.
5914
        * config.in: Regenerate.
5915
        * configure: Regenerate.
5916
 
5917
2009-11-05  Ian Lance Taylor  
5918
 
5919
        PR 10910
5920
        * output.cc (Output_segment::add_output_section): Add missing
5921
        return statement.
5922
 
5923
2009-11-04  Ian Lance Taylor  
5924
 
5925
        PR 10880
5926
        * object.h (class Object): Add is_needed and set_is_needed
5927
        methods.  Add is_needed_ field.  Make bool fields into bitfields.
5928
        * symtab.cc (Symbol_table::set_dynsym_indexes): If a symbol is
5929
        defined in a dynamic object and referenced by a regular object,
5930
        set is_needed for the dynamic object.
5931
        * layout.cc (Layout::finish_dynamic_section): Don't add DT_NEEDED
5932
        if the file is marked with as_needed and it is not needed.
5933
 
5934
2009-11-04  Ian Lance Taylor  
5935
 
5936
        PR 10887
5937
        * arm.cc (Target_arm::do_finalize_sections): Don't add dynamic
5938
        tags if data is discarded by linker script.
5939
        * i386.cc (Target_i386::do_finalize_sections): Likewise.
5940
        * powerpc.cc (Target_powerpc::do_finalize_sections): Likewise.
5941
        * sparc.cc (Target_sparc::do_finalize_sections): Likewise.
5942
        * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
5943
 
5944
2009-11-04  Ian Lance Taylor  
5945
 
5946
        * layout.cc (Layout::get_output_section): Add is_interp and
5947
        is_dynamic_linker_section parameters.  Change all callers.
5948
        (Layout::choose_output_section): Likewise.
5949
        (Layout::make_output_section): Likewise.
5950
        (Layout::add_output_section_data): Add is_dynamic_linker_section
5951
        parameter.  Change all callers.
5952
        * layout.h (class Layout): Update declarations.
5953
        * output.h (class Output_section): Add is_interp, set_is_interp,
5954
        is_dynamic_linker_section, set_is_dynamic_linker_section methods.
5955
        Add is_interp_, is_dynamic_linker_section_ fields.  Change
5956
        generate_code_fills_at_write_ to a bitfield.
5957
        * output.cc (Output_section::Output_sections): Initialize new
5958
        fields.
5959
        (Output_segment::add_output_section): Add do_sort parameter.
5960
        Change all callers.
5961
 
5962
2009-11-03  Ian Lance Taylor  
5963
 
5964
        PR 10860
5965
        * options.h (class General_options): Add --warn-common.
5966
        * resolve.cc (Symbol_table::resolve): Handle --warn-common when
5967
        merging two common symbols.
5968
        (Symbol_table::should_override): Handle --warn-common when merging
5969
        a common symbol with a defined symbol.  Use report_resolve_problem
5970
        for multiple definitions.
5971
        (Symbol_table::report_resolve_problem): New function.
5972
        * symtab.h (class Symbol_table): Declare report_resolve_problem.
5973
 
5974
2009-11-03  Doug Kwan  
5975
 
5976
        * arm.cc (Target_arm::Target_arm): Initialize stub_tables_ and
5977
        stub_factory_.
5978
        (Target_arm::stub_factory): New method definition.
5979
        (Target_arm::new_arm_input_section,
5980
        Target_arm::find_arm_input_section, Target_arm::new_stub_table,
5981
        Target_arm::reloc_uses_thumb_bit): New method declarations.
5982
        (Target_arm::Stub_table_list, Target_arm::Arm_input_section_map):
5983
        New type definitions.
5984
        (Target_arm::stub_tables_, Target_arm::stub_factory_): New data
5985
        member declarations.
5986
        (Target_arm::reloc_uses_thumb_bit, Target_arm::new_arm_input_section,
5987
        Target_arm::find_arm_input_section, Target_arm::new_stub_table):
5988
        New method definitions.
5989
 
5990
2009-11-03  Ian Lance Taylor  
5991
 
5992
        * options.h (class General_options): Add --warn_constructors.
5993
 
5994
2009-11-03  Ian Lance Taylor  
5995
 
5996
        PR 10893
5997
        * defstd.cc (in_section): Add entries for __rel_iplt_start,
5998
        __rel_iplt_end, __rela_iplt_start, __rela_iplt_end, and __stack.
5999
 
6000
2009-11-03  Ian Lance Taylor  
6001
 
6002
        PR 10895
6003
        * po/Make-in ($(srcdir)/$(PACKAGE).pot): Pass -C and
6004
        --msgid-bugs-address.
6005
        (install-pdf): New target.
6006
        (install-data_yes): Look up one directory to find mkinstalldirs.
6007
 
6008
2009-11-03  H.J. Lu  
6009
 
6010
        * po/Make-in (.po.gmo): Don't generate .gmo files in source
6011
        tree.
6012
 
6013
2009-10-30  Doug Kwan  
6014
 
6015
        * arm.cc (Stub_addend_reader): Fix bug in previouls check-in.
6016
 
6017
2009-10-30  Doug Kwan  
6018
 
6019
        * arm.cc (Stub_addend_reader): New struct template definition
6020
        and partial specializations.
6021
        (Stub_addend_reader::operator()): New method definition for a
6022
        partially specialized template.
6023
 
6024
2009-10-30  Doug Kwan  
6025
 
6026
        * arm.cc (Arm_relobj::processor_specific_flags): New method
6027
        definition.
6028
        (Arm_relobj::do_read_symbols): New method declaration.
6029
        (Arm_relobj::processor_specific_flags_): New data member declaration.
6030
        (Arm_dynobj): New class definition.
6031
        (Target_arm::do_finalize_sections): Add input_objects parameter.
6032
        (Target_arm::do_adjust_elf_header): New method declaration.
6033
        (Target_arm::are_eabi_versions_compatible,
6034
        (Target_arm::merge_processor_specific_flags): New method declaration.
6035
        (Target_arm::do_make_elf_object): New overloaded method definitions
6036
        and declaration.
6037
        (Arm_relobj::do_read_symbols): New method definition.
6038
        (Arm_dynobj::do_read_symbols): Ditto.
6039
        (Target_arm::do_finalize_sections): Add input_objects parameters.
6040
        Merge processor-specific flags from all input objects.
6041
        (Target_arm::are_eabi_versions_compatible,
6042
        Target_arm::merge_processor_specific_flags,
6043
        Target_arm::do_adjust_elf_header, Target_arm::do_make_elf_object):
6044
        New method definitions.
6045
        * i386.cc (Target_i386::do_finalize_sections): Add unnamed
6046
        Input_objects pointer type parameter.
6047
        * layout.cc (Layout::finalize): Pass input objects to target's.
6048
        finalize_sections function.
6049
        * output.cc (Output_file_header::do_sized_write): Set ELF file
6050
        header's processor-specific flags.
6051
        * powerpc.cc (Target_powerpc::do_finalize_sections): Add unnamed
6052
        Input_objects pointer type parameter.
6053
        * sparc.cc (Target_sparc::do_finalize_sections): Same.
6054
        * target.h (Input_objects): New forward class declaration.
6055
        (Target::processor_specific_flags,
6056
        Target::are_processor_specific_flags_sect): New method definitions.
6057
        (Target::finalize_sections): Add input_objects parameter.
6058
        (Target::Target): Initialize processor_specific_flags_ and
6059
        are_processor_specific_flags_set_.
6060
        (Target::do_finalize_sections): Add unnamed Input_objects pointer type
6061
        parameter.
6062
        (Target::set_processor_specific_flags): New method definition.
6063
        (Target::processor_specific_flags_,
6064
        Target::are_processor_specific_flags_set_): New data member
6065
        declarations.
6066
        * x86_64.cc (Target_x86_64::do_finalize_sections): Add unnamed
6067
        Input_objects pointer type parameter.
6068
 
6069
2009-10-30  Doug Kwan  
6070
 
6071
        * arm.cc: Use Arm_address instead of elfcpp::Elf_types<32>::Elf_Addr.
6072
 
6073
2009-10-28  Ian Lance Taylor  
6074
 
6075
        * object.h (class Relobj): Drop options parameter from
6076
        gc_process_relocs, scan_relocs, relocate, do_gc_process_relocs,
6077
        do_scan_relocs, do_relocate.  Change all callers.
6078
        (class Sized_relobj): Drop options parameters from
6079
        do_gc_process_relocs, do_scan_relocs, do_relocate,
6080
        do_relocate_sections, relocate_sections, emit_relocs_scan,
6081
        emit_relocs_scan_reltype.  Change all callers.
6082
        (struct Relocate_info): Remove options field and all references to
6083
        it.
6084
        * reloc.h (class Read_relocs): Remove options constructor
6085
        parameter and options_ field.  Change all callers.
6086
        (class Gc_process_relocs, class Scan_relocs): Likewise.
6087
        (class Relocate_task): Likewise.
6088
        * target-reloc.h (scan_relocs): Remove options parameter.  Change
6089
        all callers.
6090
        (scan_relocatable_relocs): Likewise.
6091
        * target.h (class Sized_target): Remove options parameter from
6092
        gc_process_relocs, scan_relocs, scan_relocatable_relocs.  Change
6093
        all callers.
6094
        * gc.h (gc_process_relocs): Remove options parameter.  Change all
6095
        callers.
6096
        * arm.cc: Update functions to remove options parameters.
6097
        * i386.cc: Likewise.
6098
        * powerpc.cc: Likewise.
6099
        * sparc.cc: Likewise.
6100
        * x86_64.cc: Likewise.
6101
        * testsuite/testfile.cc: Likewise.
6102
 
6103
2009-10-28  Doug Kwan  
6104
 
6105
        * arm.cc (Arm_relobj): New class definition.
6106
        (Arm_relobj::scan_sections_for_stubs,
6107
        Arm_relobj::do_count_local_symbols, Arm_relobj::do_relocate_sections):
6108
        New method definitions.
6109
 
6110
2009-10-28  Cary Coutant  
6111
 
6112
        * plugin.h (Plugin::Plugin): Initialize cleanup_done_.
6113
        (Plugin::cleanup_done_): New member.
6114
        (Plugin_manager::Plugin_manager): Remove cleanup_done_.
6115
        (Plugin_manager::cleanup_done_): Remove.
6116
        (Plugin_manager::add_input_file): Edit error message.
6117
        * plugin.cc (Plugin::cleanup): Test and set cleanup_done_.
6118
        (Plugin_manager::cleanup): Remove use of cleanup_done_.
6119
 
6120
2009-10-27  Mikolaj Zalewski  
6121
 
6122
        * fileread.cc: (File_read::View::~View): Use the new
6123
        data_ownership_ filed.
6124
        (File_read::~File_read): Dispose the new whole_file_view_.
6125
        (File_read::open): Mmap the whole file if needed.
6126
        (File_read::open): Use whole_file_view_ instead of contents_.
6127
        (File_read::find_view): Use whole_file_view_ if applicable.
6128
        (File_read::do_read): Use whole_file_view_ instead of contents_.
6129
        (File_read::make_view): Use whole_file_view_ instead of contents_,
6130
        update File_read::View::View call.
6131
        (File_read::find_or_make_view): Update File_read::View::View
6132
        call.
6133
        * fileread.h: (File_read::File_read): Initialize whole_file_view_,
6134
        remove contents_
6135
        (File_read::View::Data_ownership): New enum.
6136
        (File_read::View::View): Replace bool mapped_ with Data_ownership
6137
        argument.
6138
        (File_read::View::mapped_): Remove (replaced by data_ownership_).
6139
        (File_read::View::data_ownership_): New field.
6140
        (File_read::contents_): Remove (replaced by whole_file_view_).
6141
        (File_read::whole_file_view_): New field.
6142
        * options.h (class General_options): Add --keep-files-mapped.
6143
 
6144
2009-10-27  Cary Coutant  
6145
 
6146
        * symtab.cc (add_from_pluginobj): Pass correct value for is_ordinary.
6147
        * testsuite/Makefile.am (plugin_test_5): New test case.
6148
        * testsuite/Makefile.in: Regenerate.
6149
 
6150
2009-10-25  Doug Kwan  
6151
 
6152
        * object.h (Sized_relobj::View_size, Sized_relobj::Views): Change
6153
        from private to protected to allow access by child class.
6154
        (Sized_relobj::do_relocate_sections): New method declaration.
6155
        (Sized_relobj::relocate_sections): Virtualize.
6156
        * reloc.cc (Sized_relobj::do_relocate_sections): Rename from
6157
        Sized_relobj::relocate_sections.  Instantiate template explicitly
6158
        for different target sizes and endianity.
6159
 
6160
2009-10-24  Doug Kwan  
6161
 
6162
        * arm.cc (Arm_output_section, Arm_relobj): Forward class declarations.
6163
        (Arm_input_section::as_arm_input_section): New method.
6164
        (Arm_output_section): New class definition.
6165
        (Arm_output_section::create_stub_group,
6166
        Arm_output_section::group_sections): New method definitions.
6167
 
6168
2009-10-22  Doug Kwan  
6169
 
6170
        * arm.cc (Arm_input_section): New class definition.
6171
        (Arm_input_section::init, Arm_input_section:do_write,
6172
        Arm_input_section::set_final_data_size,
6173
        Arm_input_section::do_reset_address_and_file_offset): New method
6174
        definitions.
6175
 
6176
2009-10-21  Doug Kwan  
6177
 
6178
        * arm.cc (Stub_table, Arm_input_section): New forward class
6179
        declarations.
6180
        (Stub_table): New class defintion.
6181
        (Stub_table::add_reloc_stub, Stub_table::relocate_stubs
6182
        Stub_table::do_reset_address_and_file_offset, Stub_table::do_write):
6183
        New method definition.
6184
 
6185
2009-10-21  Doug Kwan  
6186
 
6187
        * arm.cc: Update copyright comments.
6188
        (Target_arm): New forward class template declaration.
6189
        (Arm_address): New type.
6190
        (ARM_MAX_FWD_BRANCH_OFFSET, ARM_MAX_BWD_BRANCH_OFFSET,
6191
        THM_MAX_FWD_BRANCH_OFFSET, THM_MAX_BWD_BRANCH_OFFSET,
6192
        THM2_MAX_FWD_BRANCH_OFFSET, THM2_MAX_BWD_BRANCH_OFFSET): New
6193
        constants.
6194
        (Insn_template): Same.
6195
        (DEF_STUBS): New macro.
6196
        (Stub_type): New enum type.
6197
        (Stub_template): New class definition.
6198
        (Stub): Same.
6199
        (Reloc_stub): Same.
6200
        (Stub_factory): Same.
6201
        (Target_arm::Target_arm): Initialize may_use_blx_ and
6202
        should_force_pic_veneer_.
6203
        (Target_arm::may_use_blx, Target_arm::set_may_use_blx,
6204
        Target_arm::should_force_pic_veneer,
6205
        Target_arm::set_should_force_pic_veneer, Target_arm::using_thumb2,
6206
        Target_arm::using_thumb_only, Target_arm:;default_target): New
6207
        method defintions.
6208
        (Target_arm::may_use_blx_, Target_arm::should_force_pic_veneer_):
6209
        New data member declarations.
6210
        (Insn_template::size, Insn_template::alignment): New method defintions.
6211
        (Stub_template::Stub_template): New method definition.
6212
        (Reloc_stub::Key::name, Reloc_stub::stub_type_for_reloc,
6213
        Reloc_stub::do_fixed_endian_write, Reloc_stub::do_write): Same.
6214
        (Stub_factory::Stub_factory): New method definition.
6215
        * gold.h (string_hash): New template.
6216
        * output.h (Input_section_specifier::hash_value): Use
6217
        gold::string_hash.
6218
        (Input_section_specifier::string_hash): Remove.
6219
        * stringpool.cc (Stringpool_template::string_hash): Use
6220
        gold::string_hash.
6221
 
6222
2009-10-20  Doug Kwan  
6223
 
6224
        * object.cc (Sized_relobj::do_finalize_local_symbols): Handle section
6225
        symbols of relaxed input sections.
6226
        * output.h (Output_section::find_relaxed_input_section): Make
6227
        method public.
6228
 
6229
2009-10-16  Doug Kwan  
6230
 
6231
        * dynobj.cc (Versions::Versions): Initialize version_script_.
6232
        Only insert base version symbol definition for a shared object
6233
        if version script defines any version versions.
6234
        (Versions::define_base_version): New method definition.
6235
        (Versions::add_def): Check that base version is not needed.
6236
        (Versions::add_need): Define base version lazily.
6237
        * dynobj.h (Versions::define_base_version): New method declaration.
6238
        (Versions::needs_base_version_): New data member declaration.
6239
        * testsuite/Makefile.am (check_SCRIPTS): Add no_version_test.sh
6240
        (check_DATA): Add no_version_test.stdout.
6241
        (libno_version_test.so, no_version_test.o no_version_test.stdout):
6242
        New make rules.
6243
        * testsuite/Makefile.in: Regenerate.
6244
        * testsuite/no_version_test.c: New file.
6245
        * testsuite/no_version_test.sh: Ditto.
6246
 
6247
2009-10-16  Doug Kwan  
6248
 
6249
        * expression.cc (class Segment_start_expression): New class definition.
6250
        (Segment_start_expression::value): New method definition.
6251
        (script_exp_function_segment_start): Return a new
6252
        Segment_start_expression.
6253
        * gold/script-c.h (script_saw_segment_start_expression): New function
6254
        prototype.
6255
        * script-sections.cc (Script_sections::Script_sections): Initialize
6256
        SAW_SEGMENT_START_EXPRESSION_ to false.
6257
        (Script_sections::set_section_addresses): Use -Ttext, -Tdata
6258
        and -Tbbs options to specify section addresses if given in
6259
        command line and no SEGMENT_START expression is seen in a script.
6260
        * script-sections.h (Script_sections::saw_segment_start_expression,
6261
        Script_sections::set_saw_segment_start_expression): New method
6262
        definition.
6263
        (Script_sections::saw_segment_start_expression_): New data member
6264
        declaration.
6265
        * script.cc (script_saw_segment_start_expression): New function.
6266
        * yyscript.y (SEGMENT_START): Call script_saw_segment_start_expression.
6267
        * testsuite/Makefile.am (check_SCRIPTS): Add script_test_6.sh,
6268
        script_test_7.sh and script_test_8.sh.
6269
        (check_DATA): Add script_test_6.stdout, script_test_7.stdout and
6270
        script_test_8.stdout.
6271
        (MOSTLYCLEANFILES): Add script_test_6, script_test_7 and script_test_8.
6272
        (script_test_6, script_test_6.stdout, script_test_7,
6273
        script_test_7.stdout, script_test_8, script_test_8.stdout): New rules.
6274
        * Makefile.in: Regenerate.
6275
        * testsuite/script_test_6.sh: New file.
6276
        * testsuite/script_test_6.t: Same.
6277
        * testsuite/script_test_7.sh: Same.
6278
        * testsuite/script_test_7.t: Same.
6279
        * testsuite/script_test_8.sh: Same.
6280
 
6281
2009-10-16  Doug Kwan  
6282
 
6283
        * output.cc (Output_segment::set_section_list_address): Cast
6284
        expressions to unsigned long long type to avoid format warnings.
6285
 
6286
2009-10-15  Ian Lance Taylor  
6287
 
6288
        * script.cc (Script_options::add_symbol_assignment): Always add a
6289
        dot assignment to script_sections_.
6290
        * script-sections.cc (Script_sections::add_dot_assignment):
6291
        Initialize if necessary.
6292
 
6293
        * layout.cc (Layout::relaxation_loop_body): Don't crash if we see
6294
        program headers with no load segment if there is a linker script.
6295
 
6296
        * layout.cc (Layout::set_segment_offsets): Align the file offset
6297
        to the segment aligment for -N or -n with no load segment.
6298
        * output.cc (Output_segment::add_output_section): Don't crash if
6299
        the first section is a TLS section.
6300
        (Output_segment::set_section_list_addresses): Print an error
6301
        message if the address moves backward in a linker script.
6302
        * script-sections.cc
6303
        (Output_section_element_input::set_section_addresses): Don't
6304
        increase *dot_value for a SHF_TLS/SHT_NOBITS section.
6305
        (Orphan_output_section::set_section_addresses): Likewise.
6306
 
6307
2009-10-15  Doug Kwan  
6308
 
6309
        * layout.cc (Layout::finish_dynamic_section): Generate tags
6310
        DT_FINI_ARRAY, DT_FINI_ARRAYSZ, DT_INIT_ARRAY, DT_INIT_ARRAYSZ,
6311
        DT_PREINIT_ARRAY, DT_PREINIT_ARRAYSZ as needed. If -Bsymbolic is
6312
        used, add DT_SYMBOLIC and set DF_SYMBOLIC in DT_FLAGS.
6313
 
6314
2009-10-14  Ian Lance Taylor  
6315
 
6316
        * object.h (class Relocate_info): Add reloc_shdr and data_shdr
6317
        fields.
6318
        * object.cc (Sized_relobj::relocate_sections): Set reloc_shdr and
6319
        data_shdr fields of relinfo.
6320
        * i386.cc (class Target_i386::Relocate): Remove ldo_addrs_ field.
6321
        (Target_i386::Relocate::relocate_tls): Don't call fix_up_ldo.  For
6322
        R_386_TLS_LDO_32, adjust based on section flags.
6323
        (Target_i386::Relocate::fix_up_ldo): Remove.
6324
 
6325
2009-10-13  Ian Lance Taylor  
6326
 
6327
        Add support for -pie.
6328
        * options.h (class General_options): Add -pie and
6329
        --pic-executable.
6330
        (General_options::output_is_position_independent): Test -pie.
6331
        (General_options::output_is_executable): Return true if not shared
6332
        and not relocatable.
6333
        (General_options::output_is_pie): Remove.
6334
        * options.cc (General_options::finalize): Reject incompatible uses
6335
        of -pie.
6336
        * gold.cc (queue_middle_tasks): A -pie link is not static.
6337
        * symtab.h (Symbol::needs_plt_entry): Return false if -pie.
6338
        * symtab.cc (Symbol::final_value_is_known): Return false if
6339
        output_is_position_independent.
6340
        * layout.cc (Layout::set_segment_offsets): Start at address 0 if
6341
        output_is_position_independent.
6342
        * output.cc (Output_file_header::do_sized_write): Use ET_DYN if
6343
        output_is_position_independent.
6344
        * i386.cc (Output_data_plt_i386::do_write): Use the PIC PLT if
6345
        output_is_position_independent.
6346
        * testsuite/Makefile.am (check_PROGRAMS): Add basic_pie_test and
6347
        two_file_pie_test.
6348
        (basic_pie_test.o, basic_pie_test): New targets.
6349
        (two_file_test_1_pie.o, two_file_test_1b_pie.o): New targets.
6350
        (two_file_test_2_pie.o, two_file_test_main_pie.o): New targets.
6351
        (two_file_pie_test): New target.
6352
        * testsuite/Makefile.in: Rebuild.
6353
        * README: Remove note saying that -pie is not supported.
6354
 
6355
2009-10-13  Bernhard Reutner-Fischer  
6356
 
6357
        * options.h (class General_options): Add -init and -fini.
6358
        * layout.cc (Layout::finish_dynamic_section): Emit
6359
        given init and fini functions.
6360
 
6361
2009-10-13  Sriraman Tallam  
6362
 
6363
        * gc.h (gc_process_relocs): Check if icf is enabled using new
6364
        function.
6365
        * gold.cc (queue_initial_tasks): Likewise.
6366
        (queue_middle_tasks): Likewise.
6367
        * object.cc (do_layout): Likewise.
6368
        * symtab.cc (is_section_folded): Likewise.
6369
        * main.cc (main): Likewise.
6370
        * reloc.cc (Read_relocs::run): Likewise.
6371
        (Sized_relobj::do_scan_relocs): Likewise.
6372
        * icf.cc (is_function_ctor_or_dtor): New function.
6373
        (Icf::find_identical_sections): Check if function is ctor or dtor when
6374
        safe icf is chosen.
6375
        * options.h (General_options::icf): Change option to be an enum.
6376
        (Icf_status): New enum.
6377
        (icf_enabled): New method.
6378
        (icf_safe_folding): New method.
6379
        (set_icf_status): New method.
6380
        (icf_status_): New variable.
6381
        * (options.cc) (General_options::finalize): Set icf_status_.
6382
        * testsuite/Makefile.am: Add commands to build icf_safe_test. Modify
6383
        icf_test and icf_keep_unique_test to use the --icf enum flag.
6384
        * testsuite/icf_safe_test.sh: New file.
6385
        * testsuite/icf_safe_test.cc: New file.
6386
 
6387
2009-10-12  Sriraman Tallam  
6388
 
6389
        * symtab.h: Check for GOLD_SYMTAB_H before header includes. Remove
6390
        includes to gc.h and icf.h.
6391
        * arm.cc: Include gc.h.
6392
        * gold.cc: Likewise.
6393
        * i386.cc: Likewise.
6394
        * powerpc.cc: Likewise.
6395
        * sparc.cc: Likewise.
6396
        * x86_64.cc: Likewise.
6397
        * gc.h: Include icf.h.
6398
 
6399
2009-10-11  Ian Lance Taylor  
6400
 
6401
        * plugin.cc: Include "gold.h" before other header files.
6402
 
6403
2009-10-10  Chris Demetriou  
6404
 
6405
        * options.h (Input_file_argument::Input_file_type): New enum.
6406
        (Input_file_argument::is_lib_): Replace with...
6407
        (Input_file_argument::type_): New member.
6408
        (Input_file_argument::Input_file_argument): Take Input_file_type
6409
        'type' rather than boolean 'is_lib' as second argument.
6410
        (Input_file_argument::is_lib): Use type_.
6411
        (Input_file_argument::is_searched_file): New function.
6412
        (Input_file_argument::may_need_search): Handle is_searched_file.
6413
        * options.cc (General_options::parse_library): Support -l:filename.
6414
        (General_options::parse_just_symbols): Update for Input_file_argument
6415
        changes.
6416
        (Command_line::process): Likewise.
6417
        * archive.cc (Archive::get_file_and_offset): Likewise.
6418
        * plugin.cc (Plugin_manager::release_input_file): Likewise.
6419
        * script.cc (read_script_file, script_add_file): Likewise.
6420
        * fileread.cc (Input_file::Input_file): Likewise.
6421
        (Input_file::will_search_for): Handle is_searched_file.
6422
        (Input_file::open): Likewise.
6423
        * readsyms.cc (Read_symbols::get_name): Likewise.
6424
        * testsuite/Makefile.am (searched_file_test): New test.
6425
        * testsuite/Makefile.in: Regenerate.
6426
        * testsuite/searched_file_test.cc: New file.
6427
        * testsuite/searched_file_test_lib.cc: New file.
6428
 
6429
2009-10-09  Andrew Pinski  
6430
            Ian Lance Taylor  
6431
 
6432
        * descriptor.cc: Include  and "binary-io.h".
6433
        (Descriptors::open): Open the files in binary mode always.
6434
        * script.cc (Lex::get_token): Treat \r as whitespace.
6435
 
6436
2009-10-09  Ian Lance Taylor  
6437
 
6438
        * testsuite/retain_symbols_file_test.sh: Don't test for __tcf_0.
6439
 
6440
2009-10-09  Andrew Pinski  
6441
            Ian Lance Taylor  
6442
 
6443
        * configure.ac: Check for readv function also.
6444
        * fileread.cc (readv): Define if not HAVE_READV.
6445
        * fileread.h (File_read:: max_readv_entries): Set to 1 if readv
6446
        does not exist.
6447
        * config.in: Regenerate.
6448
        * configure: Regenerate.
6449
 
6450
2009-10-09  Doug Kwan  
6451
 
6452
        * layout.cc (Layout::make_output_section): Call target hook to make
6453
        ordinary output section.
6454
        (Layout::finalize): Adjust parameter list of call the
6455
        Target::may_relax().
6456
        * layout.h (class Layout::section_list): New method.
6457
        * merge.h (Output_merge_base::entsize): Change visibility to public.
6458
        (Output_merge_base::is_string, Output_merge_base::do_is_string):
6459
        New methods.
6460
        (Output_merge_string::do_is_string): New method.
6461
        * object.cc (Sized_relobj::do_setup): renamed from
6462
        Sized_relobj::set_up.
6463
        * object.h (Sized_relobj::adjust_shndx,
6464
        Sized_relobj::initializ_input_to_output_maps,
6465
        Sized_relobj::free_input_to_output_maps): Change visibilities to
6466
        protected.
6467
        (Sized_relobj::setup): Virtualize.
6468
        (Sized_relobj::do_setup): New method declaration.
6469
        (Sized_relobj::invalidate_section_offset,
6470
        Sized_relobj::do_invalidate_section_offset): New method decfinitions.
6471
        (Sized_relobj::elf_file, Sized_relobj::local_values): New methods.
6472
        * options.cc (parse_int): New function.
6473
        * options.h (parse_int): New declaration.
6474
        (DEFINE_int): New macro.
6475
        (stub_group_size): New option.
6476
        * output.cc (Output_section::Output_section): Initialize memebers
6477
        merge_section_map_, merge_section_by_properties_map_,
6478
        relaxed_input_section_map_, is_relaxed_input_section_map_valid_.
6479
        (Output_section::add_input_section): Handled deferred code-fill
6480
        generation and remove an old comment.
6481
        (Output_section::add_relaxed_input_section): New method definition.
6482
        (Output_section::add_merge_input_section): Use merge section by
6483
        properties map to speed to search.  Update merge section maps
6484
        as appropriate.
6485
        (Output_section::build_relaxation_map): New method definition.
6486
        (Output_section::convert_input_sections_in_list_to_relaxed_sections):
6487
        Same.
6488
        (Output_section::relax_input_section): Renamed to
6489
        Output_section::convert_input_sections_to_relaxed_sections and change
6490
        interface to take a vector of pointers to relaxed sections.
6491
        (Output_section::find_merge_section,
6492
        Output_section::find_relaxed_input_section): New method definitions.
6493
        (Output_section::is_input_address_mapped,
6494
        Output_section::output_offset, Output_section::output_address):
6495
        Use output section data maps to speed up searching.
6496
        (Output_section::find_starting_output_address): Add comments.
6497
        (Output_section::do_write,
6498
        Output_section::write_to_postprocessing_buffer): Do code-fill
6499
        generation as appropriate.
6500
        (Output_section::get_input_sections): Invalidate relaxed input section
6501
        map.
6502
        (Output_section::restore_states): Adjust type of checkpoint .
6503
        Invalidate relaxed input section map.
6504
        * output.h (Output_merge_base): New class declaration.
6505
        (Input_section_specifier): New class defintion.
6506
        (class Output_relaxed_input_section) Change base class to
6507
        Output_section_data_build.
6508
        (Output_relaxed_input_section::Output_relaxed_input_section): Adjust
6509
        base class initializer.
6510
        (Output_section::add_relaxed_input_section): New method declaration.
6511
        (Output_section::Input_section): Change visibility to protected.
6512
        (Output_section::Input_section::relobj,
6513
        Output_section::Input_section::shndx): Handle relaxed input sections.
6514
        Output_section::input_sections) Change visibility to protected.  Also
6515
        define overload to return a non-const pointer.
6516
        (Output_section::Merge_section_properties): New class defintion.
6517
        (Output_section::Merge_section_by_properties_map,
6518
        Output_section::Output_section_data_by_input_section_map,
6519
        Output_section::Relaxation_map): New types.
6520
        (Output_section::relax_input_section): Rename method to
6521
        Output_section::convert_input_sections_to_relaxed_sections and change
6522
        interface to take a vector of relaxed section pointers.
6523
        (Output_section::find_merge_section,
6524
        Output_section::find_relaxed_input_section,
6525
        Output_section::build_relaxation_map,
6526
        Output_section::convert_input_sections_in_list_to_relaxed_sections):
6527
        New method declarations.
6528
        (Output_section::merge_section_map_
6529
        Output_section::merge_section_by_properties_map_,
6530
        Output_section::relaxed_input_section_map_,
6531
        Output_section::is_relaxed_input_section_map_valid_,
6532
        Output_section::generate_code_fills_at_write_): New data members.
6533
        * script-sections.cc
6534
        (Output_section_element_input::set_section_addresses): Call
6535
        current_data_size and addralign methods of relaxed input sections.
6536
        (Orphan_output_section::set_section_addresses): Call current_data_size
6537
        and addralign methods of relaxed input sections.
6538
        * symtab.cc (Symbol_table::compute_final_value): Extract template
6539
        from the body of Symbol_table::sized_finalize_symbol.
6540
        (Symbol_table::sized_finalized_symbol): Call
6541
        Symbol_table::compute_final_value.
6542
        * symtab.h (Symbol_table::Compute_final_value_status): New enum type.
6543
        (Symbol_table::compute_final_value): New templated method declaration.
6544
        * target.cc (Target::do_make_output_section): New method defintion.
6545
        * target.h (Target::make_output_section): New method declaration.
6546
        (Target::relax): Add more parameters for input objects, symbol table
6547
        and layout.  Adjust call to do_relax.
6548
        (Target::do_make_output_section): New method declaration.
6549
        (Target::do_relax): Add parameters for input objects, symbol table
6550
        and layout.
6551
 
6552
2009-10-09  Andrew Pinski  
6553
 
6554
        * pread.c: Include stdio.h.
6555
 
6556
2009-10-09  Andrew Pinski  
6557
 
6558
        * plugin.cc: Don't include dlfcn.h when ENABLE_PLUGINS is not
6559
        defined.
6560
 
6561
2009-10-09  Andrew Pinski  
6562
 
6563
        * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
6564
        Change read_shndx type to unsigned int.
6565
        (Sized_dwarf_line_info::read_lines): Change shndx type to unsigned
6566
        int.
6567
        (Sized_dwarf_line_info::read_line_mappings): Likewise.
6568
        * dwarf_reader.h (Sized_dwarf_line_info::Sized_dwarf_line_info):
6569
        Change read_shndx type to unsigned int.
6570
        (Sized_dwarf_line_info::read_lines): Change shndx type to unsigned
6571
        int.
6572
        (Sized_dwarf_line_info::read_line_mappings): Likewise.
6573
        * layout.cc (Layout::create_symtab_sections): Cast the result of
6574
        local_symcount * symsize to off_t in the gold_assert.
6575
 
6576
2009-10-09  Viktor Kutuzov  
6577
 
6578
        * arm.cc (Target_arm::relocate::reloc_is_non_pic): Return true for
6579
        R_ARM_THM_ABS5, R_ARM_ABS8, R_ARM_ABS12, R_ARM_ABS16,
6580
        R_ARM_BASE_ABS.
6581
        (Arm_relocate_functions::abs8): Remove has_thumb_bit parameter.
6582
        (Arm_relocate_functions::thm_abs5): New function.
6583
        (Arm_relocate_functions::abs12): New function.
6584
        (Arm_relocate_functions::abs16): New function.
6585
        (Arm_relocate_functions::base_abs): New function.
6586
        (Scan::check_non_pic): Handle R_ARM_ABS32_NOI.
6587
        (Scan::local): Remove special handling of R_ARM_ABS8.  Handle
6588
        R_ARM_ABS32_NOI, R_ARM_THM_ABS5, R_ARM_ABS12, R_ARM_ABS16, and
6589
        R_ARM_BASE_ABS.
6590
        (Scan::global): Likewise.
6591
        (Relocate::relocate): Handle R_ARM_ABS12, R_ARM_ABS16,
6592
        R_ARM_ABS32_NOI, R_ARM_THM_ABS5, and R_ARM_BASE_ABS.
6593
        (Relocatable_size_for_reloc::get_size_for_reloc): Handle
6594
        R_ARM_ABS16, R_ARM_THM_ABS5, R_ARM_ABS32_NOI, R_ARM_ABS12, and
6595
        R_ARM_BASE_ABS.
6596
 
6597
2009-10-09  Viktor Kutuzov  
6598
 
6599
        * arm.cc (Arm_relocate_functions::movw_prel_nc): New function.
6600
        (Arm_relocate_functions::movt_prel): New function.
6601
        (Arm_relocate_functions::thm_movw_prel_nc): New function.
6602
        (Arm_relocate_functions::thm_movt_prel): New function.
6603
        (Scan::local): Handle R_ARM_MOVW_PREL_NC, R_ARM_MOVT_PREL,
6604
        R_ARM_THM_MOVW_PREL_NC, and R_ARM_THM_MOVT_PREL.
6605
        (Scan::global, Relocate::relocate): Likewise.
6606
        (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
6607
 
6608
2009-10-09  Mikolaj Zalewski  
6609
 
6610
        * gold.cc: (queue_initial_tasks): Pass incremental_inputs to
6611
        Incremental_checker.
6612
        * incremental.cc: (INCREMENTAL_LINK_VERSION): Change type to
6613
        unsigned int.
6614
        (class Incremental_inputs_header): New class.
6615
        (Incremental_inputs_header_writer): Edit comment.
6616
        (Incremental_inputs_entry): New class.
6617
        (Incremental_inputs_entry_writer): Edit comment.
6618
        (Sized_incremental_binary::do_find_incremental_inputs_section):
6619
        Add *strtab_shndx parameter, fill it.
6620
        (Sized_incremental_binary::do_check_inputs): New method.
6621
        (Incremental_checker::can_incrementally_link_output_file): Use
6622
        Sized_incremental_binary::check_inputs.
6623
        (Incremental_inputs::report_command_line): Save command line in
6624
        command_line_.
6625
        * incremental.h:
6626
        (Incremental_binary::find_incremental_inputs_section): New
6627
        method.
6628
        (Incremental_binary::do_find_incremental_inputs_section): Add
6629
        strtab_shndx parameter.
6630
        (Incremental_binary::do_check_inputs): New pure virtual method.
6631
        (Sized_incremental_binary::do_check_inputs): Declare.
6632
        (Incremental_checker::Incremental_checker): Add incremental_inputs
6633
        parameter, use it to initialize incremental_inputs_.
6634
        (Incremental_checker::incremental_inputs_): New field.
6635
        (Incremental_checker::command_line): New method.
6636
        (Incremental_checker::inputs): New method.
6637
        (Incremental_checker::command_line_): New field.
6638
 
6639
2009-10-09  Mikolaj Zalewski  
6640
 
6641
        * incremental.cc: Include  and "target-select.h".
6642
        (vexplain_no_incremental): New function.
6643
        (explain_no_incremental): New function.
6644
        (Incremental_binary::error): New method.
6645
        (Sized_incremental_binary::do_find_incremental_inputs_section): New
6646
        method.
6647
        (make_sized_incremental_binary): New function.
6648
        (open_incremental_binary): New function.
6649
        (can_incrementally_link_file): Add checks if output is ELF and has
6650
        inputs section.
6651
        * incremental.h: Include "elfcpp_file.h" and "output.h".
6652
        (Incremental_binary): New class.
6653
        (Sized_incremental_binary): New class.
6654
        (open_incremental_binary): Declare.
6655
        * object.cc (is_elf_object): Use
6656
        elfcpp::Elf_recognizer::is_elf_file.
6657
        (make_elf_object): Use elfcpp::Elf_recognizer::is_valid_header.
6658
        * output.h (Output_file::filesize): New method.
6659
 
6660
2009-10-07  Viktor Kutuzov  
6661
 
6662
        * arm.cc (Arm_relocate_functions::extract_arm_movw_movt_addend):
6663
        New function.
6664
        (Arm_relocate_functions::insert_val_arm_movw_movt): New function.
6665
        (Arm_relocate_functions::extract_thumb_movw_movt_addend): New
6666
        function.
6667
        (Arm_relocate_functions::insert_val_thumb_movw_movt): New
6668
        function.
6669
        (Arm_relocate_functions::movw_abs_nc): New function.
6670
        (Arm_relocate_functions::movt_abs): New function.
6671
        (Arm_relocate_functions::thm_movw_abs_nc): New function.
6672
        (Arm_relocate_functions::thm_movt_abs): New function.
6673
        (Scan::local): Handle R_ARM_MOVW_ABS_NC, R_ARM_MOVT_ABS,
6674
        R_ARM_THM_MOVW_ABS_NC, R_ARM_THM_MOVT_ABS.
6675
        (Scan::global): Likewise.
6676
        (Relocate::relocate): Likewise.
6677
        (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
6678
 
6679
2009-10-07  Viktor Kutuzov  
6680
 
6681
        * arm.cc (Arm_relocate_functions::got_prel) New function.
6682
        (Scan::local, Scan::global): Handle R_ARM_GOT_PREL.
6683
        (Relocate::relocate): Likewise.
6684
        (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
6685
 
6686
2009-10-06  Ian Lance Taylor  
6687
 
6688
        * options.h (class General_options): Define
6689
        split_stack_adjust_size parameter.
6690
        * object.h (class Object): Add uses_split_stack_ and
6691
        has_no_split_stack_ fields.  Add uses_split_stack and
6692
        has_no_split_stack accessor functions.  Declare
6693
        handle_split_stack_section.
6694
        (class Reloc_symbol_changes): Define.
6695
        (class Sized_relobj): Define Function_offsets.  Declare
6696
        split_stack_adjust, split_stack_adjust_reltype, and
6697
        find_functions.
6698
        * object.cc (Object::handle_split_stack_section): New function.
6699
        (Sized_relobj::do_layout): Call handle_split_stack_section.
6700
        * dynobj.cc (Sized_dynobj::do_layout): Call
6701
        handle_split_stack_section.
6702
        * reloc.cc (Sized_relobj::relocate_sections): Call
6703
        split_stack_adjust for executable sections in split_stack
6704
        objects.  Pass reloc_map to relocate_section.
6705
        (Sized_relobj::split_stack_adjust): New function.
6706
        (Sized_relobj::split_stack_adjust_reltype): New function.
6707
        (Sized_relobj::find_functions): New function.
6708
        * target-reloc.h: Include "object.h".
6709
        (relocate_section): Add reloc_symbol_changes parameter.  Change
6710
        all callers.
6711
        * target.h (class Target): Add calls_non_split method.  Declare
6712
        do_calls_non_split virtual method.  Declare match_view and
6713
        set_view_to_nop.
6714
        * target.cc: Include "elfcpp.h".
6715
        (Target::do_calls_non_split): New function.
6716
        (Target::match_view): New function.
6717
        (Target::set_view_to_nop): New function.
6718
        * gold.cc (queue_middle_tasks): Give an error if mixing
6719
        split-stack and non-split-stack objects with -r.
6720
        * i386.cc (Target_i386::relocate_section): Add
6721
        reloc_symbol_changes parameter.
6722
        (Target_i386::do_calls_non_split): New function.
6723
        * x86_64.cc (Target_x86_64::relocate_section): Add
6724
        reloc_symbol_changes parameter.
6725
        (Target_x86_64::do_calls_non_split): New function.
6726
        * arm.cc (Target_arm::relocate_section): Add reloc_symbol_changes
6727
        parameter.
6728
        * powerpc.cc (Target_powerpc::relocate_section): Add
6729
        reloc_symbol_changes parameter.
6730
        * sparc.cc (Target_sparc::relocate_section): Add
6731
        reloc_symbol_changes parameter.
6732
        * configure.ac: Call AM_CONDITIONAL for the default target.
6733
        * configure: Rebuild.
6734
        * testsuite/Makefile.am (TEST_AS): New variable.
6735
        (check_SCRIPTS): Add split_i386.sh and split_x86_64.sh.
6736
        (check_DATA): Add split_i386 and split_x86_64 files.
6737
        (SPLIT_DEFSYMS): Define.
6738
        (split_i386_[1234n].o): New targets.
6739
        (split_i386_[124]): New targets.
6740
        (split_i386_[1234r].stdout): New targets.
6741
        (split_x86_64_[1234n].o): New targets.
6742
        (split_x86_64_[124]): New targets.
6743
        (split_x86_64_[1234r].stdout): New targets.
6744
        (MOSTLYCLEANFILES): Add new executables.
6745
        * testsuite/split_i386.sh: New file.
6746
        * testsuite/split_x86_64.sh: New file.
6747
        * testsuite/split_i386_1.s: New file.
6748
        * testsuite/split_i386_2.s: New file.
6749
        * testsuite/split_i386_3.s: New file.
6750
        * testsuite/split_i386_4.s: New file.
6751
        * testsuite/split_i386_n.s: New file.
6752
        * testsuite/split_x86_64_1.s: New file.
6753
        * testsuite/split_x86_64_2.s: New file.
6754
        * testsuite/split_x86_64_3.s: New file.
6755
        * testsuite/split_x86_64_4.s: New file.
6756
        * testsuite/split_x86_64_n.s: New file.
6757
        * testsuite/testfile.cc (Target_test): Update relocation_section
6758
        function.
6759
        * testsuite/Makefile.in: Rebuild.
6760
 
6761
2009-10-06  Ian Lance Taylor  
6762
 
6763
        * i386.cc (class Target_i386::Relocate): Add ldo_addrs_ field.
6764
        (Target_i386::Relocate::relocate_tls): Call fix_up_ldo before
6765
        changing local_dynamic_type_ from LOCAL_DYNAMIC_NONE.  When
6766
        handling R_386_TLS_LDO_32, if local_dynamic_type_ is NONE, push
6767
        the address on ldo_addrs_.
6768
        (Target_i386::Relocate::fix_up_ldo): New function.
6769
 
6770
2009-10-06   Rafael Espindola  
6771
 
6772
        * plugin.cc (add_input_library): New.
6773
        (Plugin::load): Add add_input_library to tv.
6774
        (Plugin_manager::add_input_file): Add the is_lib argument.
6775
        (add_input_file): Update call to Plugin_manager::add_input_file.
6776
        (add_input_library): New.
6777
        * plugin.h (Plugin_manager::add_input_file): Add the is_lib argument.
6778
 
6779
2009-09-30  Doug Kwan  
6780
 
6781
        * arm.cc (Target_arm::may_need_copy_reloc): Check for THUMB function
6782
        symbol and call Symbol::may_need_copy_reloc to determine if
6783
        a copy reloc is needed.
6784
        * copy-relocs.cc (Copy_relocs::need_copy_reloc): Return false if -z
6785
        nocopyreloc is given in command line.
6786
        (Copy_relocs::emit_copy_reloc): Assert that -z nocopyreloc is not
6787
        given in command line.
6788
        * i386.cc (Target_i386::may_need_copy_reloc): Remove.
6789
        (Target_i386::Scan::global): Use Symbol::may_need_copy_reloc instead
6790
        of the removed Target_i386::may_need_copy_reloc.
6791
        * options.h (copyreloc): New option with default value false.
6792
        * powerpc.cc (Target_powerpc::may_need_copy_reloc): Remove.
6793
        (Target_powerpc::Scan::global): Use Symbol::may_need_copy_reloc
6794
        instead of the removed Target_powerpc::may_need_copy_reloc.
6795
        * sparc.cc (Target_powerpc::may_need_copy_reloc): Remove.
6796
        (Target_sparc::Scan::global): Use Symbol::may_need_copy_reloc
6797
        instead of the removed Target_sparc::may_need_copy_reloc.
6798
        * symtab.h (Symbol::may_need_copy_reloc): New method definition.
6799
        * x86_64.cc (Target_powerpc::may_need_copy_reloc): Remove.
6800
        (Target_x86_64::Scan::global): Use Symbol::may_need_copy_reloc
6801
        instead of the removed Target_x86_64::may_need_copy_reloc.
6802
 
6803
2009-09-30  Ian Lance Taylor  
6804
 
6805
        * object.h (class Object): Remove target_ field, and target,
6806
        sized_target, and set_target methods.
6807
        (Object::sized_target): Remove.
6808
        (class Sized_relobj): Update declarations.  Remove sized_target.
6809
        * object.cc (Sized_relobj::setup): Remove target parameter.
6810
        Change all callers.
6811
        (Input_objects::add_object): Don't do anything with the target.
6812
        (make_elf_sized_object): Add punconfigured parameter.  Change all
6813
        callers.  Set or test parameter target.
6814
        * dynobj.cc (Sized_dynobj::target): Remove target parameter.
6815
        Change all callers.
6816
        * parameters.cc (Parameters::set_target): Change parameter type to
6817
        be non-const.
6818
        (Parameters::default_target): Remove.
6819
        (set_parameters_target): Change parameter type to be non-const.
6820
        (parameters_force_valid_target): New function.
6821
        (parameters_clear_target): New function.
6822
        * parameters.h (class Parameters): Update declarations.  Remove
6823
        default_target method.  Add sized_target and clear_target
6824
        methods.  Change target_ to be non-const.
6825
        (set_parameters_target): Update declaration.
6826
        (parameters_force_valid_target): Declare.
6827
        (parameters_clear_target): Declare.
6828
        * readsyms.cc (Read_symbols::do_read_symbols): Pass punconfigured
6829
        as NULL if we aren't searching.
6830
        (Add_symbols::run): Don't check for compatible target.
6831
        * fileread.cc (Input_file::open_binary): Call
6832
        parameters_force_valid_target.
6833
        * gold.cc (queue_middle_tasks): Likewise.
6834
        * plugin.cc (make_sized_plugin_object): Likewise.  Don't call
6835
        set_target on object.
6836
        * dynobj.h (class Sized_dynobj): Update declarations.
6837
        * archive.cc (Archive::get_elf_object_for_member): Return NULL if
6838
        make_elf_object returns NULL.
6839
        (Archive::include_member): Don't check whether object target is
6840
        compatible.
6841
        * output.cc (Output_section::add_input_section): Get target from
6842
        parameters.
6843
        (Output_section::relax_input_section): Likewise.
6844
        * reloc.cc (Sized_relobj::do_gc_process_relocs): Get target from
6845
        parameters.
6846
        (Sized_relobj::do_scan_relocs): Likewise.
6847
        (Sized_relobj::relocate_sections): Likewise.
6848
        * resolve.cc (Symbol_table::resolve): Likewise.
6849
        * symtab.cc (Symbol_table::wrap_symbol): Likewise.  Remove object
6850
        parameter.  Change all callers.
6851
        (Symbol_table::add_from_object): Get target from parameters.
6852
        (Symbol_table::add_from_relobj): Don't check object target.
6853
        (Symbol_table::add_from_dynobj): Likewise.
6854
        (Symbol_table::define_special_symbol): Get target from
6855
        parameters.
6856
        * symtab.h (class Symbol_table): Update declaration.
6857
        * testsuite/binary_unittest.cc (gold_testsuite): Remove target
6858
        parameter.  Change all callers.  Clear parameter target.
6859
        (Binary_test): Test target here.
6860
        * testsuite/object_unittest.cc (gold_testsuite): Remove
6861
        target_test_pointer parameter.  Change all callers.
6862
        (Object_test): Test target here.
6863
 
6864
2009-09-26  Ian Lance Taylor  
6865
 
6866
        * testsuite/initpri1.c: Don't try to use constructor priorities if
6867
        compiling with gcc before 4.3.
6868
 
6869
2009-09-22  Mikolaj Zalewski  
6870
 
6871
        * testsuite/retain_symbols_file_test.sh (check_present): Change
6872
        output file name to retain_symbols_file_test.stdout.
6873
        (check_absent): Likewise.
6874
 
6875
2009-09-18  Craig Silverstein  
6876
 
6877
        * object.cc (Sized_relobj::do_count): Test should_retain_symbol map.
6878
        * options.cc: Include  and .
6879
        (General_options::finalize): Parse -retain-symbols-file tag.
6880
        * options.h: New flag.
6881
        (General_options): New method should_retain_symbol, new
6882
        variable symbols_to_retain.
6883
        * symtab.cc (Symbol_table::sized_finalize_symbol): Test
6884
        should_retain_symbol map.
6885
        * testsuite/Makefile.am (retain_symbols_file_test): New test.
6886
        * testsuite/Makefile.in: Regenerate.
6887
        * testsuite/retain_symbols_file_test.sh: New file.
6888
 
6889
2009-09-18  Nick Clifton  
6890
 
6891
        * po/es.po: Updated Spanish translation.
6892
 
6893
2009-09-17  Doug Kwan  
6894
 
6895
        * debug.h (DEBUG_RELAXATION): New constant.
6896
        (DEBUG_ALL): Add DEBUG_RELAXATION.
6897
        (debug_string_to_enum): Add relaxation debug option.
6898
        * layout.cc
6899
        (Layout::Relaxation_debug_check::check_output_data_for_reset_values,
6900
        Layout::Relaxation_debug_check::read_sections,
6901
        Layout::Relaxation_debug_check::read_sections): New method definitions.
6902
        (Layout::Layout): Initialize data members
6903
        record_output_section_data_from_scrips_,
6904
        script_output_section_data_list_ and relaxation_debug_check_.
6905
        (Layout::save_segments, Layout::restore_segments,
6906
        Layout::clean_up_after_relaxation, Layout::prepare_for_relaxation,
6907
        Layout::relaxation_loop_body): New method definitions.
6908
        (Layout::finalize): Support relaxation.  Move section layout code to
6909
        Layout::relaxation_loop_body.
6910
        (Layout::set_asection_address_from_script): Move code for orphan
6911
        section placement out.
6912
        (Layout::place_orphan_sections_in_script): New method definition.
6913
        * layout.h (Output_segment_headers, Output_file_header):
6914
        New forward class declarations.
6915
        (Layout::~Layout): Define.
6916
        (Layout::new_output_section_data_from_script): New method definition.
6917
        (Layout::place_orphan_sections_in_script): New method declaration.
6918
        (Layout::Segment_states): New type declaration.
6919
        (Layout::save_segments, Layout::restore_segments,
6920
        Layout::clean_up_after_relaxation, Layout::prepare_for_relaxation,
6921
        Layout::relaxation_loop_body): New method declarations.
6922
        (Layout::Output_section_data_list): New type declaration.
6923
        (Layout::Relaxation_debug_check): New class definition.
6924
        (Layout::record_output_section_data_from_script_,
6925
        Layout::script_output_section_data_list_, Layout::segment_states_,
6926
        Layout::relaxation_debug_check_): New data members.
6927
        * output.cc: (Output_section_headers::do_size): New method definition.
6928
        (Output_section_headers::Output_section_headers): Move size
6929
        computation to Output_section_headers::do_size.
6930
        (Output_segment_headers::do_size): New method definition.
6931
        (Output_file_header::Output_file_header): Move size computation to
6932
        Output_file_header::do_size and call it.
6933
        (Output_file_header::do_size): New method definition.
6934
        (Output_data_group::Output_data_group): Adjust call to
6935
        Output_section_data.
6936
        (Output_data_dynamic::set_final_data_size): Add DT_NULL tag only once.
6937
        (Output_symtab_xindex::do_write): Add array bound check.
6938
        (Output_section::Input_section::print_to_mapfile): Handle
6939
        RELAXED_INPUT_SECTION_CODE.
6940
        (Output_section::Output_section): Initialize data member checkpoint_.
6941
        (Output_section::~Output_section): Delete checkpoint object pointed
6942
        by checkpoint_.
6943
        (Output_section::add_input_section): Always add an Input_section if
6944
        relaxing.
6945
        (Output_section::add_merge_input_section): Add assert.
6946
        (Output_section::relax_input_section): New method definition.
6947
        (Output_section::set_final_data_size): Set load address to zero for
6948
        an unallocated section.
6949
        (Output_section::do_address_and_file_offset_have_reset_values):
6950
        New method definition.
6951
        (Output_section::Input_section_sort_enty::Input_section_sort_enty):
6952
        Handle relaxed input section.
6953
        (Output_section::sort_attached_input_sections): Checkpoint input
6954
        section list lazily.
6955
        (Output_section::get_input_sections): Change type of input_sections to
6956
        list of Simple_input_section pointers.  Checkpoint input section list
6957
        lazily.  Also handle relaxed input sections.
6958
        (Output_section::add_input_section_for_script): Take a reference to
6959
        a Simple_input_section object instead of Relobj pointer and section
6960
        index as parameter.  Handle relaxed input sections.
6961
        (Output_section::save_states, Output_section::restore_states): New
6962
        method definitions.
6963
        * output.h (Output_data::Output_data): Initialize is_data_size_fixed_.
6964
        (Output_data::is_data_size_fixed): New method definition.
6965
        (Output_data::reset_addresss_and_file_offset): Do not reset data size
6966
        if it is fixed.
6967
        (Output_data::address_and_file_offset_have_reset_values): New method
6968
        definition.
6969
        (Output_data::do_address_and_file_offset_have_reset_values): New method
6970
        definition.
6971
        (Output_data::set_data_size): Check that data size is not fixed.
6972
        (Output_data::fix_data_size): New method definition.
6973
        (Output_data::is_data_size_fixed_): New data member.
6974
        (Output_section_headers::set_final_data_size): New method definition.
6975
        (Output_section_headers::do_size): New method declaration.
6976
        (Output_segment_headers::set_final_data_size): New method definition.
6977
        (Output_segment_headers::do_size): New method declaration.
6978
        (Output_file_header::set_final_data_size)::New method definition.
6979
        (Output_file_header::do_size)::New method declaration.
6980
        (Output_section_data::Output_section_data): Add new parameter
6981
        is_data_size_fixed and use it to fix data size.
6982
        (Output_data_const::Output_data_const): Adjust call to base class
6983
        constructor and fix data size.
6984
        (Output_data_const_buffer::Output_data_const_buffer): Adjust call to
6985
        base class constructor and fix data size.
6986
        (Output_data_fixed_space::Output_data_fixed_space): Adjust call to
6987
        base class constructor and fix data size.
6988
        (Output_data_zero_fill::Output_data_zero_fill): Adjust call to base
6989
        class constructor and fix data size.
6990
        (Output_data_group::set_final_data_size): New method definition.
6991
        (Output_data_dynamic::Dynamic_entry::tag): New method definition.
6992
        (Output_symtab_xindex::Output_symtab_xindex): Adjust call to base
6993
        class constructor and fix data size.
6994
        (Output_relaxed_input_section): New class definition.
6995
        (Output_section::Simple_input_section): New class definition.
6996
        (Output_section::get_input_sections): Adjust parameter list.
6997
        (Output_section::add_input_section_for_script): Same.
6998
        (Output_section::save_states, Output_section::restore_states,
6999
        Output_section::do_address_and_file_offset_have_reset_values,
7000
        (Output_section::Input_section::Input_section): Handle
7001
        RELAXED_INPUT_SECTION_CODE.  Add new overload for
7002
        Output_relaxed_input_section.
7003
        (Output_section::Input_section::is_input_section,
7004
        Output_section::Input_section::set_output_section): Handle relaxed
7005
        input section.
7006
        (Output_section::Input_section::is_relaxed_input_section,
7007
        Output_section::Input_section::output_section_data,
7008
        Output_section::Input_section::relaxed_input_section): New method
7009
        definitions.
7010
        (Output_section::Input_section::RELAXED_INPUT_SECTION_CODE): New enum
7011
        value.
7012
        (Output_section::Input_section::u1_): Update comments.
7013
        (Output_section::Input_section::u2_): Add new union member poris.
7014
        (Output_section::Checkpoint_output_section): New classs definition.
7015
        (Output_section::relax_input_section): New method declaration.
7016
        (Output_section::checkpoint_): New data member.
7017
        (Output_segment): Update comments.
7018
        (Output_segment::Output_segment): Un-privatize copy constructor.
7019
        (Output_segment::operator=): Un-privatize.
7020
        * script-sections.cc (Output_section_element::Input_section_list):
7021
        Change element type to Output_section::Simple_input_section.
7022
        (Output_section_element_dot_assignment::set_section_addresses):
7023
        Register output section data for relaxation clean up.
7024
        (Output_data_exression::Output_data_expression): Adjust call to base
7025
        constructor to fix data size.
7026
        (Output_section_element_data::set_section_addresses): Register
7027
        Output_data_expression object for relaxation clean up.
7028
        (struct Input_section_info): Replace Relobj pointer and section index
7029
        pair with Output_section::Simple_input_section and Convert struct to a
7030
        class.
7031
        (Input_section_sorter::operator()): Adjust access to
7032
        Input_section_info data member to use accessors.
7033
        (Output_section_element_input::set_section_addresses): Use layout
7034
        parameter.  Adjust code to use Output_section::Simple_input_section
7035
        and Input_secction_info classes.  Register filler for relaxation
7036
        clean up.
7037
        (Orphan_output_section::set_section_addresses): Replace Relobj pointer
7038
        and section index pair with Output_section::Simple_input_section
7039
        class.  Adjust code accordingly.
7040
        (Phdrs_element::release_segment): New method definition.
7041
        (Script_sections::attach_sections_using_phdrs_clause): Do not modify
7042
        segment list.
7043
        (Script_sections::release_segments): New method definition.
7044
        * gold/script-sections.h (Script_sections::release_segments): New
7045
        method declaration.
7046
        * gold/target.h (Target::may_relax, Target::relax,
7047
        Target::do_may_relax, Target::do_relax): New method definitions.
7048
 
7049
2009-09-17  Viktor Kutuzov  
7050
 
7051
        * arm.cc (has_signed_unsigned_overflow): New function.
7052
        (Arm_relocate_functions::abs8): New function.
7053
        (Target_arm::Scan::local): Handle R_ARM_ABS8.
7054
        (Target_arm::Scan::global): Likewise.
7055
        (Target_arm::relocate::relocate): Likewise.
7056
        (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
7057
        Likewise.
7058
 
7059
2009-09-16  Cary Coutant  
7060
 
7061
        * testsuite/Makefile.am (MOSTLYCLEANFILES): Add more generated files.
7062
        * testsuite/Makefile.in: Regenerate.
7063
 
7064
2009-09-11  Nick Clifton  
7065
 
7066
        * po/gold.pot: Updated by the Translation project.
7067
 
7068
2009-09-08  Cary Coutant  
7069
 
7070
        * output.cc (Output_file::open): Add execute permission to empty file.
7071
        * testsuite/Makefile.am (permission_test): New test.
7072
        * testsuite/Makefile.in: Regenerate.
7073
 
7074
2009-09-02  Ian Lance Taylor  
7075
 
7076
        * output.cc (Output_file::resize): Call map_no_anonymous rather
7077
        than map.
7078
 
7079
2009-09-01  Mikolaj Zalewski  
7080
 
7081
        * gold.cc: Include "incremental.h".
7082
        (queue_initial_tasks): Call Incremental_checker methods.
7083
        * incremental.cc: Include "output.h".
7084
        (Incremental_checker::can_incrementally_link_output_file): New
7085
        method.
7086
        * incremental.h (Incremental_checker): New class.
7087
 
7088
        * output.cc (Output_file::open_for_modification): New method.
7089
        (Output_file::map_anonymous): Changed return type to bool.  Record
7090
        map in base_ field.
7091
        (Output_file::map_no_anonymous): New method, broken out of map.
7092
        (Output_file::map): Use map_no_anonymous and map_anonymous.
7093
        * output.h (class Output_file): Update declarations.
7094
 
7095
2009-08-24  Cary Coutant  
7096
 
7097
        * options.h (Command_line::Pre_options): New class.
7098
        (Command_line::pre_options): New member.
7099
        * options.cc (gold::options::ready_to_register): New variable.
7100
        (One_option::register_option): Do nothing if not registering options.
7101
        Assert if same short option registered twice.
7102
        (General_options::General_options): Turn off option registration when
7103
        done constructing.
7104
        (Command_line::Pre_options::Pre_options): New constructor.
7105
 
7106
2009-08-24  Cary Coutant  
7107
 
7108
        * options.h (General_options::no_keep_memory): Remove incorrect
7109
        short option.
7110
 
7111
2009-08-24  Ralf Wildenhues  
7112
 
7113
        * Makefile.am (am__skiplex, am__skipyacc): New.
7114
        * Makefile.in: Regenerate.
7115
 
7116
2009-08-22  Ralf Wildenhues  
7117
 
7118
        * Makefile.am (AM_CPPFLAGS): Renamed from ...
7119
        (INCLUDES): ... this.
7120
        * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add -Wno-portability.
7121
        (AM_CPPFLAGS): Renamed from ...
7122
        (INCLUDE): ... this.
7123
        * Makefile.in, testsuite/Makefile.in: Regenerate.
7124
 
7125
        * Makefile.in: Regenerate.
7126
        * aclocal.m4: Likewise.
7127
        * config.in: Likewise.
7128
        * configure: Likewise.
7129
        * testsuite/Makefile.in: Likewise.
7130
 
7131
        * Makefile.am (AUTOMAKE_OPTIONS): Add foreign.
7132
        * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add foreign.
7133
        * Makefile.in: Regenerate.
7134
        * testsuite/Makefile.in: Regenerate.
7135
 
7136
2009-08-19  Cary Coutant  
7137
 
7138
        * resolve.cc (Symbol_table::resolve): Don't complain about defined
7139
        symbols in shared libraries overridden by hidden or internal symbols
7140
        in the main program.
7141
 
7142
2009-08-19  Chris Demetriou  
7143
 
7144
        * testsuite/debug_msg.sh: Match .* rather than ${srcdir} when
7145
        checking source file names in error messages.
7146
 
7147
2009-08-18  Doug Kwan  
7148
 
7149
        * dynobj.cc (Sized_dynobj::setup): Take a Target object instead of
7150
        an elcpp::Ehdr as parameter.  Adjust call to set_target.
7151
        * dynobj.h (Sized_dynobj::setup): Take a Target object instead of
7152
        an elfcpp::Ehdr as parameter.
7153
        * object.cc (Object::set_target): Remove the version that looks up
7154
        a target and sets it.
7155
        (Sized_relobj::setup): Take a Target object instead of
7156
        an elfcpp::Ehdr as parameter.  Adjust call to set_target.
7157
        (make_elf_sized_object): Find target and ask target to
7158
        make an ELF object.
7159
        * object.h: (Object::set_target): Remove the version that looks up
7160
        a target and sets it.
7161
        (Sized_relobj::setup): Take a Target object instead of
7162
        an elfcpp:Ehdr as parameter.
7163
        * target.cc: Include dynobj.h.
7164
        (Target::do_make_elf_object_implementation): New.
7165
        (Target::do_make_elf_object): New.
7166
        * target.h (Target::make_elf_object): New template declaration.
7167
        (Target::do_make_elf_object): New method declarations.
7168
        (Target::do_make_elf_object_implementation): New template declaration.
7169
 
7170
2009-08-14  Ian Lance Taylor  
7171
 
7172
        * gold.h (FUNCTION_NAME): Define.
7173
        (gold_unreachable): Use FUNCTION_NAME.
7174
 
7175
2009-08-12  Sriraman Tallam  
7176
 
7177
        * icf.cc (Icf::find_identical_sections): Issue a warning when a
7178
        symbol in the --keep-unique list is not found.
7179
 
7180
2009-08-12  Sriraman Tallam  
7181
 
7182
        * icf.cc (Icf::find_identical_sections): Unfold symbols that have
7183
        been maked as --keep-unique.
7184
        (Icf::unfold_section): New function.
7185
        * icf.h (Icf::unfold_section): New function.
7186
        * options.h (General_options::keep_unique): New option.
7187
        * testsuite/Makefile.am: Add commands to build icf_keep_unique_test.
7188
        * testsuite/Makefile.in: Regenerate.
7189
        * testsuite/icf_keep_unique_test.sh: New file.
7190
        * testsuite/icf_keep_unique_test.cc: New file.
7191
 
7192
2009-08-12  Cary Coutant  
7193
 
7194
        PR 10471
7195
        * resolve.cc (Symbol_table::resolve): Check for references from
7196
        dynamic objects to hidden and internal symbols.
7197
        * testsuite/Makefile.am (hidden_test.sh): New test.
7198
        * testsuite/Makefile.in: Regenerate.
7199
        * testsuite/hidden_test.sh: New script.
7200
        * testsuite/hidden_test_1.c: New test source.
7201
        * testsuite/hidden_test_main.c: New test source.
7202
 
7203
2009-08-11  Doug Kwan  
7204
 
7205
        * arm.cc: Update comments.
7206
        (Target_arm::do_finalize_sections): Add a special PT_ARM_EXIDX
7207
        segment to locate the .ARM.exidx section if present.
7208
 
7209
2009-08-09  Doug Kwan  
7210
 
7211
        * dynobj.h (Sized_dynobj::do_section_entsize): Revert the previous
7212
        patch.
7213
 
7214
2009-08-07  Sriraman Tallam  
7215
        * dynobj.h (Sized_dynobj::do_section_entsize): Add return to avoid
7216
        compiler warnings.
7217
 
7218
2009-08-06  Sriraman Tallam  
7219
 
7220
        * x86_64.cc (Target_x86_64::Relocate::relocate_tls): Check for a
7221
        valid tls_segment only for non-debug-section relocations.
7222
        * testsuite/Makefile.am: Add gc_tls_test.
7223
        * testsuite/Makefile.in: Regenerate.
7224
        * testsuite/gc_tls_test.cc: New file.
7225
        * testsuite/gc_tls_test.sh: New file.
7226
 
7227
2009-08-05  Sriraman Tallam  
7228
 
7229
        * icf.cc: New file.
7230
        * icf.h: New file.
7231
        * Makefile.am (CCFILES): Add icf.cc.
7232
        (HFILES): Add icf.h
7233
        * Makefile.in: Regenerate.
7234
        * dynobj.h (Sized_dynobj::do_section_entsize): New function.
7235
        * gc.h (gc_process_relocs): Populate lists used by icf to contain
7236
        section, symbol and addend information for the relocs.
7237
        * gold.cc (queue_middle_tasks): Call identical code folding.
7238
        * gold.h: Add defines for multimap.
7239
        * layout.cc (Layout::create_symtab_sections): Add symtab as parameter
7240
        to the call of finalize_local_symbols.
7241
        * main.cc (main): Create object of class Icf.
7242
        * object.cc (Sized_relobj::do_layout): Allow this function to be
7243
        called twice during icf.
7244
        (Sized_relobj::do_finalize_local_symbols): Fold symbols corresponding
7245
        to sections marked as identical by icf.
7246
        (Sized_relobj::do_section_flags): Get section_flags from Symbols_data
7247
        when available.
7248
        (Sized_relobj::do_section_entsize): New function.
7249
        * object.h (Object::section_entsize): New function.
7250
        (Object::do_section_entsize): New pure virtual function.
7251
        (Relobj::finalize_local_symbols): Add new parameter.
7252
        (Relobj::do_section_entsize): New function.
7253
        * options.h (General_options::icf): New option.
7254
        (General_options::icf_iterations): New option.
7255
        (General_options::print_icf_sections): New option.
7256
        * plugin.cc (Sized_pluginobj::do_section_entsize): New function.
7257
        * plugin.h (Sized_pluginobj::do_section_entsize): New function.
7258
        * reloc.cc (Read_relocs::run): Delay scanning relocs when doing
7259
        icf.
7260
        * symtab.cc (Symbol_table::is_section_folded): New function.
7261
        (Symbol_table::sized_finalize_symbol):  Fold symbols corresponding
7262
        to sections marked as identical by icf.
7263
        * symtab.h (Symbol_table::set_icf): New function.
7264
        (Symbol_table::icf): New function.
7265
        (Symbol_table::is_section_folded): New function.
7266
        (Symbol_table::icf_): New data member.
7267
        * target-reloc.h (relocate_section): Ignore sections folded by icf.
7268
        * testsuite/Makefile.am: Add commands to build icf_test.
7269
        * testsuite/Makefile.in: Regenerate.
7270
        * testsuite/icf_test.sh: New file.
7271
        * testsuite/icf_test.cc: New file.
7272
 
7273
2009-07-24  Chris Demetriou  
7274
 
7275
        * layout.cc (is_compressible_debug_section): Fix incorrect
7276
        comment about compressed section names.
7277
 
7278
2009-07-20  Ian Lance Taylor  
7279
 
7280
        PR 10419
7281
        * x86_64.cc (Target_x86_64::do_code_fill): Correct nop sequences.
7282
 
7283
2009-07-16  Ian Lance Taylor  
7284
 
7285
        PR 10400
7286
        * layout.h: #include .
7287
        (class Kept_section): Change from struct to class.  Add accessors
7288
        and setters.  Add section size to Comdat_group mapping.  Change
7289
        Comdat_group to std::map.  Add is_comdat_ field.  Add
7290
        linkonce_size field in union.
7291
        (class Layout): Update declaration of find_or_add_kept_section.
7292
        Don't declare find_kept_object.
7293
        * layout.cc (Layout::find_or_add_kept_section): Remove candidate
7294
        parameter.  Add object, shndx, is_comdat, and is_group_name
7295
        parameters.  Change all callers.  Adjust for new Kept_section.
7296
        (Layout::find_kept_object): Remove.
7297
        * object.cc (Sized_relobj::include_section_group): Update use of
7298
        Kept_section.  Rename secnum to shndx.  Only record
7299
        Kept_comdat_section if sections are the same size.
7300
        (Sized_relobj::include_linkonce_section): Update use of
7301
        Kept_section.  Only record Kept_comdat_section if sections are the
7302
        same size.  Set size of linkonce section.
7303
        (Sized_relobj::map_to_kept_section): Update call to
7304
        get_kept_comdat_section.
7305
        * object.h (class Sized_relobj): Rename fields in
7306
        Kept_comdat_section to drop trailing underscores; change object
7307
        field to Relobj*.  Change Kept_comdat_section_table to store
7308
        struct rather than pointer.
7309
        (Sized_relobj::set_kept_comdat_section): Remove kept parameter.
7310
        Add kept_object and kept_shndx parameters.  Change all callers.
7311
        (Sized_relobj::get_kept_comdat_section): Change return type to
7312
        bool.  Add kept_object and kept_shndx parameters.  Change all
7313
        callers.
7314
        * plugin.cc (Pluginobj::include_comdat_group): Update call to
7315
        Layout::find_or_add_kept_section.
7316
 
7317
2009-07-09  Ian Lance Taylor  
7318
 
7319
        * merge.cc (Object_merge_map::initialize_input_to_output_map):
7320
        Reserve space in the hash table.
7321
 
7322
2009-07-06  Mikolaj Zalewski  
7323
 
7324
        * fileread.cc (File_read::get_mtime): New method.
7325
        * fileread.h (Timespec): New structure.
7326
        (File_read::get_mtime): New method.
7327
        * incremental.cc (Incremental_inputs_entry_data::timestamp_usec):
7328
        Renamed from timestamp_nsec.
7329
        (Incremental_inputs_entry_write::timestamp_sec): Fix argument to
7330
        Elf_Xword.
7331
        (Incremental_inputs_entry_write::timestamp_usec): Renamed from
7332
        timestamp_nsec.
7333
        (Incremental_inputs::report_archive): Save mtime; style fix.
7334
        (Incremental_inputs::report_obejct): Save mtime; style fix.
7335
        (Incremental_inputs::report_script): Save mtime; style fix.
7336
        (Incremental_inputs::finalize_inputs): Style fix.
7337
        (Incremental_inputs::finalize): Style fix.
7338
        (Incremental_inputs::create_input_section_data): Store inputs
7339
        mtime.
7340
        * incremental.h (Incremental_inputs::report_script): Add mtime
7341
        argument.
7342
        (Incremental_inputs::Input_info::Input_info): Intialize only one
7343
        union member.
7344
        (Incremental_inputs::Input_info::archive): Move to nameless
7345
        union.
7346
        (Incremental_inputs::Input_info::obejct): Move to nameless union.
7347
        (Incremental_inputs::Input_info::script): Move to nameless union.
7348
        (Incremental_inputs::mtime): New field.
7349
        * script.cc (read_input_script): Pass file mtime to
7350
        Incremental_input.
7351
        * script.h (Script_info::inputs): Style fix.
7352
 
7353
2009-07-01  Ian Lance Taylor  
7354
 
7355
        * freebsd.h (Target_freebsd::do_adjust_elf_header): Use size
7356
        instead of 32.
7357
 
7358
2009-06-24  Ian Lance Taylor  
7359
 
7360
        PR 10156
7361
        * layout.cc (Layout::choose_output_section): If we find an
7362
        existing section, update the flags.
7363
        (Layout::create_notes): New function, broken out of
7364
        Layout::finalize.
7365
        (Layout::finalize): Don't create note sections.
7366
        (Layout::create_note): Don't crash if linker script discards
7367
        section.
7368
        (Layout::create_gold_note): Likewise.
7369
        (Layout::create_build_id): Likewise.  Don't set
7370
        after_input_sections on the section.
7371
        (Layout::create_executable_stack_info): Remove target parameter.
7372
        Change caller.
7373
        * layout.h (class Layout): Declare create_notes.  Update
7374
        declaration of create_executable_stack_info.
7375
        * gold.cc (queue_middle_tasks): Call create_notes.
7376
        * output.cc (Output_section::update_flags_for_input_section): Move
7377
        here from output.h.  If SHF_ALLOC flag is newly set, mark address
7378
        invalid.
7379
        * output.h (Output_data::mark_address_invalid): New function.
7380
        (class Output_section): Only declare, not define,
7381
        update_flags_for_input_section.  Remove set_flags.
7382
 
7383
2009-06-24  Ian Lance Taylor  
7384
 
7385
        * script-sections.cc (Output_section_definition::
7386
        set_section_addresses): Rename shadowing local load_address to
7387
        laddr.
7388
 
7389
2009-06-24  Ian Lance Taylor  
7390
 
7391
        PR 10244
7392
        * reloc.cc (relocate_sections): Skip empty relocation sections.
7393
 
7394
2009-06-23  Ian Lance Taylor  
7395
 
7396
        PR 10156
7397
        * layout.cc (Layout::create_note): Use choose_output_section
7398
        rather than make_output_section.
7399
 
7400
2009-06-23  Ian Lance Taylor  
7401
 
7402
        PR 10237
7403
        * options.cc (General_options::parse_V): Set printed_version_.
7404
        (General_options::General_options): Initialize printed_version_.
7405
        * options.h (class General_options): Add printed_version_ field.
7406
        * gold.cc (queue_initial_tasks): If there are no input files,
7407
        don't give a fatal error if we printed the version information.
7408
        (queue_middle_tasks): If using -r with a shared object, give a
7409
        fatal error rather than an ordinary error.
7410
 
7411
2009-06-23  Ian Lance Taylor  
7412
 
7413
        PR 10219
7414
        * layout.cc (Layout::Layout): Initialize have_stabstr_section_.
7415
        (Layout::make_output_section): Set have_stabstr_section_ if we see
7416
        a .stab*str section.
7417
        (Layout::finalize): Call link_stabs_sections.
7418
        (Layout::link_stabs_sections): New file.
7419
        * layout.h (class Layout): Add have_stabstr_section_ field.
7420
        Declare link_stabs_sections.
7421
 
7422
2009-06-23  Doug Kwan  
7423
 
7424
        * Makefile.am (libgold_a_LIBADD): New.
7425
        (ld_new_DEPENDENCIES, ld_new_LDADD): Remove LIBOBJS
7426
        * Makefile.in: Regenerate.
7427
        * config.in (HAVE_DECL_MEMMEM, HAVE_DECL_STRNDUP): New.
7428
        * configure: Regenerate.
7429
        * configure.ac (AC_CHECK_DECLS): Add strndup and memmem.
7430
        * fileread.cc: Include sys/state.h
7431
        * gold.h: Declare memmem and strndup if found missing.
7432
        * gold_reloc.h: Include byteswap.h if HAVE_BYTESWAP_H is defined.
7433
 
7434
2009-06-23  Ian Lance Taylor  
7435
 
7436
        * configure.ac: Call AC_CHECK_DECLS using C, not C++.
7437
        * configure: Rebuild.
7438
 
7439
2009-06-23  Ian Lance Taylor  
7440
 
7441
        PR 10147
7442
        * object.cc (Object::section_contents): Don't try to get a view if
7443
        the section has length zero.
7444
        (Object::handle_gnu_warning_section): If the section is empty, use
7445
        the name of the section as the warning.
7446
 
7447
2009-06-23  Ian Lance Taylor  
7448
 
7449
        PR 10133
7450
        * stringpool.h (class Stringpool_template): Add optimize_ field.
7451
        (Stringpool_template::set_optimize): New function.
7452
        * stringpool.cc (Stringpool_template::Stringpool_template):
7453
        Initialize optimize_ field.
7454
        (Stringpool_template::set_string_offsets): Test local optimize
7455
        fild rather than parameter.
7456
        * layout.cc (Layout::Layout): Call set_optimize on the section
7457
        name stringpool.
7458
 
7459
2009-06-22  Ian Lance Taylor  
7460
 
7461
        PR 10030
7462
        * yyscript.y: Parse TARGET.
7463
        * script.cc (script_set_target): New function.
7464
        * script-c.h (script_set_target): Declare.
7465
        * options.cc (General_options::string_to_object_format): Rename
7466
        from string_to_object_format in anonymous namespace.  Change
7467
        callers.
7468
        * options.h (class General_options): Declare
7469
        string_to_object_format.
7470
 
7471
2009-06-22  Ian Lance Taylor  
7472
 
7473
        * script-sections.cc (Script_sections::create_segments): Don't put
7474
        program headers in a PT_LOAD segment if -n or -N.
7475
 
7476
2009-06-22  Ian Lance Taylor  
7477
 
7478
        PR 10141
7479
        * options.h (class General_options): Add -z lazy and -z now.  Sort
7480
        -z options into alphabetical order.
7481
        * layout.cc (Layout::finish_dynamic_section): Handle -z now.
7482
 
7483
2009-06-21  Ian Lance Taylor  
7484
 
7485
        * layout.cc (Layout::make_output_section): Call
7486
        Target::new_output_section.
7487
        (Layout::attach_allocated_section_to_segment): Put large section
7488
        sections in a separate load segment with the large segment flag
7489
        set.
7490
        (Layout::segment_precedes): Sort large data segments after other
7491
        load segments.
7492
        (align_file_offset): New static function.
7493
        (Layout::set_segment_offsets): Use align_file_offset.
7494
        * output.h (class Output_section): Add is_small_section_ and
7495
        is_large_section_ fields.
7496
        (Output_section::is_small_section): New function.
7497
        (Output_section::set_is_small_section):  New function.
7498
        (Output_section::is_large_section): New function.
7499
        (Output_section::set_is_large_section): New function.
7500
        (Output_section::is_large_data_section): New function.
7501
        (class Output_segment): Add is_large_data_segment_ field.
7502
        (Output_segment::is_large_data_segment): New function.
7503
        (Output_segment::set_is_large_data_segment): New function.
7504
        * output.cc (Output_section::Output_section): Initialize new
7505
        fields.
7506
        (Output_segment::Output_segment): Likewise.
7507
        (Output_segment::add_output_section): Add assertion that large
7508
        data sections always go in large data segments.  Force small data
7509
        sections to the end of the list of data sections.  Force small BSS
7510
        sections to the start of the list of BSS sections.  For large BSS
7511
        sections to the end of the list of BSS sections.
7512
        * symtab.h (class Symbol): Declare is_common_shndx.
7513
        (Symbol::is_defined): Check Symbol::is_common_shndx.
7514
        (Symbol::is_common): Likewise.
7515
        (class Symbol_table): Define enum Commons_section_type.  Update
7516
        declarations.  Add small_commons_ and large_commons_ fields.
7517
        * symtab.cc (Symbol::is_common_shndx): New function.
7518
        (Symbol_table::Symbol_table): Initialize new fields.
7519
        (Symbol_table::add_from_object): Put small and large common
7520
        symbols in the right list.
7521
        (Symbol_table::sized_finalized_symbol): Check
7522
        Symbol::is_common_shndx.
7523
        (Symbol_table::sized_write_globals): Likewise.
7524
        * common.cc (Symbol_table::do_allocate_commons): Allocate new
7525
        common symbol lists.  Don't call do_allocate_commons_list if the
7526
        list is empty.
7527
        (Symbol_table::do_allocate_commons_list): Remove is_tls
7528
        parameter.  Add comons_section_type parameter.  Change all
7529
        callers.  Handle small and large common symbols.
7530
        * object.cc (Sized_relobj::do_finalize_local_symbols): Check
7531
        Symbol::is_common_shndx.
7532
        * resolve.cc (symbol_to_bits): Likewise.
7533
        * target.h (Target::small_common_shndx): New function.
7534
        (Target::small_common_section_flags): New function.
7535
        (Target::large_common_shndx): New function.
7536
        (Target::large_common_section_flags): New function.
7537
        (Target::new_output_section): New function.
7538
        (Target::Target_info): Add small_common_shndx, large_common_shndx,
7539
        small_common_section_flags, and large_common_section_flags
7540
        fields.
7541
        (Target::do_new_output_section): New virtual function.
7542
        * arm.cc (Target_arm::arm_info): Initialize new fields.
7543
        * i386.cc (Target_i386::i386_info): Likewise.
7544
        * powerpc.cc (Target_powerpc::powerpc_info) [all versions]:
7545
        Likewise.
7546
        * sparc.c (Target_sparc::sparc_info) [all versions]: Likewise.
7547
        * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
7548
        (Target_x86_64::do_new_output_section): New function.
7549
        * configure.ac: Define conditional MCMODEL_MEDIUM.
7550
        * testsuite/Makefile.am (check_PROGRAMS): Add large.
7551
        (large_SOURCES, large_CFLAGS, large_DEPENDENCIES): Define.
7552
        (large_LDFLAGS): Define.
7553
        * testsuite/large.c: New file.
7554
        * testsuite/testfile.cc (Target_test::test_target_info):
7555
        Initialize new fields.
7556
        * configure, testsuite/Makefile.in: Rebuild.
7557
 
7558
2009-06-05  Doug Kwan  
7559
 
7560
        * Makefile.am (CCFILES): Add target.cc.
7561
        * Makefile.in: Regenerate.
7562
        * i386.cc (class Target_i386): Define new virtual method to
7563
        override do_is_local_label_name in parent.
7564
        * object.cc (Sized_relobj::do_count_local_symbols): Discard
7565
        local symbols if --discard-locals or -X is given.
7566
        * options.h (class General_options): Declare new options
7567
        '--discard-locals' and '-X' for discarding locals.
7568
        * target.h (class Target): Define new methods is_local_label_name.
7569
        Declare new virtual method do_is_local_label_name.
7570
        * target.cc: New file.
7571
        * testsuite/Makefile.am (check_PROGRAMS): Add discard_locals_test.
7572
        (check_SCRIPTS): Add discard_locals_test.sh.
7573
        (check_DATA): Add discard_local_tests.syms.
7574
        (discard_locals_test_SOURCES, discard_locals_test_LDFLAGS): Define.
7575
        (discard_local_tests.syms, discard_locals_test.o): New make rules.
7576
        * testsuite/Makefile.in: Regenerate.
7577
        * testsuite/discard_locals_test.c: New file.
7578
        * testsuite/discard_locals_test.sh: Same.
7579
 
7580
2009-06-05  Doug Kwan  
7581
 
7582
        * object.cc (Sized_relobj::Sized_relobj): Initialize
7583
        discarded_eh_frame_shndx_ to -1U.
7584
        (Sized_relobj::do_layout): Record index of a discard .eh_frame
7585
        section.
7586
        (Sized_relobj::do_count_local_symbols): Skip local symbols in
7587
        a discarded .eh_frame section.
7588
        (Sized_relobj::do_finalize_local_symbols): Ditto.
7589
        * object.h (class Sized_relobj): Declare new member
7590
        discarded_eh_frame_shndx_.
7591
        * testsuite/Makefile.am (check_PROGRAMS): Add local_labels_test.
7592
        (local_labels_test.o, local_labels_test): New rules.
7593
        * testsuite/Makefile.in: Regenerate.
7594
 
7595
2009-06-04  Doug Kwan  
7596
 
7597
        * layout.cc (Layout::section_name_mapping): Add mapping for
7598
        special ARM sections.
7599
 
7600
2009-06-03  Doug Kwan  
7601
 
7602
        * arm.cc (utils::sign_extend): Reverse test in gold_assert.
7603
        (utils::has_overflow): Same.
7604
 
7605
2009-06-03  Ian Lance Taylor  
7606
 
7607
        * layout.cc (Layout::section_name_mapping): New array, replacing
7608
        Layout::linkonce_mapping.
7609
        (Layout::section_name_mapping_count): New variable, replacing
7610
        Layout::linkonce_mapping_count.
7611
        (Layout::linkonce_output_name): Remove.
7612
        (Layout::output_section_name): Rewrite.
7613
        * layout.h (class Layout): Rename Linkonce_mapping to
7614
        Section_name_mapping, linkonce_mapping to section_name_mapping,
7615
        linkonce_mapping_count to section_name_mapping_count.  Don't
7616
        declare linkonce_output_name.
7617
 
7618
2009-06-03  Doug Kwan  
7619
 
7620
        * gold/arm.cc (namespace utils): New.
7621
        (Target_arm::reloc_is_non_pic): Define new method.
7622
        (class Arm_relocate_functions): New.
7623
        (Target_arm::Relocate::relocate): Handle relocation types used by
7624
        Android.
7625
 
7626
2009-06-03  Ian Lance Taylor  
7627
 
7628
        * arm.cc (Target_arm::scan::global): Use || instead of |.
7629
 
7630
2009-06-02  Doug Kwan  
7631
 
7632
        * gold/arm.cc (Target_arm::Scan::Scan):  Initialize
7633
        issued_non_pic_error_.
7634
        (class Target_arm::Scan): Declare new method check_non_pic.
7635
        Define new method symbol_needs_plt_entry.
7636
        Declare new data member issued_non_pic_error_.
7637
        (class Target_arm::Relocate): Declare new method
7638
        should_apply_static_reloc.
7639
        (Target_arm::may_need_copy_reloc): Handle STT_ARM_TFUNC.
7640
        (Target_arm::Scan::check_non_pic): Define new method.
7641
        (Target_arm::Scan::local): Handle a small subset of reloc types used
7642
        by Android.
7643
        (Target_arm::Scan::local): Same.
7644
        (Target_arm::Relocate::should_apply_statci_reloc): Define new method.
7645
 
7646
2009-05-31  Mikolaj Zalewski  
7647
 
7648
        * incremental.cc (Incremental_inputs::report_command_line): Filter
7649
        out --incremental-* options.
7650
 
7651
2009-05-29  Doug Kwan  
7652
 
7653
        * gold/arm.cc (Output_data_plt_arm): Forward declaration for new
7654
        template class.
7655
        (class Target_arm): Update comment.
7656
        (Target_arm::Target_arm): Initialize new data members GOT_,
7657
        PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_ and DYNBSS_.
7658
        Declare new methods Target_arm::got_section, Target_arm::make_plt_entry
7659
        and Target_arm::rel_dyn_section.
7660
        Declare new_enum Target_arm::Got_type.
7661
        Declare new data members GOT_, PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_
7662
        and DYNBSS_.
7663
        Update commments for member do_dynsym_value.
7664
        (Target_arm::got_size, Target_arm::plt_section,
7665
        Target_arm::may_need_copy_reloc and Target_arm::copy_reloc): Define
7666
        new methods inside class defintion.
7667
        (Target_arm::got_section): Define new method.
7668
        (Target_arm::rel_dyn_section): Same.
7669
        (Output_data_plt_arm): New template class.
7670
        (Output_data_plt_arm::Output_data_plt_arm): Define constructor.
7671
        (Output_data_plt_arm:do_adjust_output_section): Define new method.
7672
        (Output_data_plt_arm::add_entry): Same.
7673
        (Output_data_plt_arm::first_plt_entry): Define new
7674
        static data member for PLT instruction template.
7675
        (Output_data_plt_arm::plt_entry): Same.
7676
        (Output_data_plt_arm::do_write): Define new method.
7677
        (Target_arm::make_plt_entry): Same.
7678
        (Target_arm::do_finalize_sections): Same.
7679
        (Target_arm::do_dynsym_value): Same.
7680
 
7681
2009-05-28  Doug Kwan  
7682
 
7683
        * Makefile.am (TARGETSOURCES): Add arm.cc.
7684
        (ALL_TARGETOBJECTS): Add arm.$(OBJEXT)
7685
        * Makefile.in: Regenerate.
7686
        * arm.cc: New file.
7687
        * configure.tgt: Add armbe*-*-*, armeb*-*-* and arm*-*-* targets.
7688
 
7689
2009-05-26  Doug Kwan  
7690
 
7691
        * options.cc (General_options::parse_exclude_libs).  Fix a comment.
7692
        (General_options::check_excluded_libs): Strip off directories in
7693
        archive name before matching like GNU ld does.
7694
        * testsuite/Makefile.am (MOSTLYCLEANFILES,
7695
        exclude_libs_test_DEPENDENCIES): Add alt/libexclude_libs_test_3.a
7696
        (exclude_libs_test_LDFLAGS): Add linker option
7697
        -Wl,--exclude-libs,libexclude_libs_test_3
7698
        (exclude_libs_test_LADD): Add alt/libexclude_libs_test_3.a as
7699
        an explicit archive without using -l.
7700
        (alt/libexclude_libs_test_3.a): New make rule.
7701
        * testsuite/Makefile.in: Regenerate.
7702
        * testsuite/exclude_libs_test.c : Declare lib3_default().
7703
        (main): Call it.
7704
        * exclude_libs_test.sh: Add tests for alt/exclude_libs_test_3.a.
7705
        * exclude_libs_test_3.c: New file.
7706
 
7707
2009-05-26  Nick Clifton  
7708
 
7709
        * po/id.po: New Indonesian translation.
7710
        * po/gold.pot: Updated template file.
7711
 
7712
2009-05-22  Sriraman Tallam  
7713
 
7714
        * testsuite/Makefile.am: Add -ffunction-sections to compile
7715
        gc_comdat_test files.  Add -Wl,--gc-sections to build
7716
        gc_comdat_test.
7717
        * testsuite/Makefile.in: Regenerate.
7718
        * testsuite/gc_comdat_test.sh: Fix the condition around grep.
7719
 
7720
2009-05-21  Sriraman Tallam  
7721
 
7722
        * object.cc (Sized_relobj::map_to_kept_section): Return NULL if the
7723
        kept comdat section was garbage collected.
7724
        * testsuite/Makefile.am: Add test gc_comdat_test.sh.
7725
        * testsuite/Makefile.in: Regenerate.
7726
        * testsuite/gc_comdat_test.sh: New file.
7727
        * testsuite/gc_comdat_test_1.cc: New file.
7728
        * testsuite/gc_comdat_test_2.cc: New file.
7729
 
7730
2009-05-19  Doug Kwan  
7731
 
7732
        * archive.cc (Archive::Archive): Move constructor from archive.h
7733
        to here.  Initialize no_export_.
7734
        (Archive::get_elf_object_for_member): Set no_export flag of object.
7735
        * archive.h (Archive::Archive): Move constructor body to
7736
        archive.cc.
7737
        (Archive::no_export): New method.
7738
        (Archive::no_export_): New field.
7739
        * object.h (Object::Object): Initialize no_export_ to false.
7740
        (Object::no_export, Object::set_no_export): New methods.
7741
        (Object::no_export_): New field.
7742
        * options.cc (General_options::parse_exclude_libs): New method.
7743
        (General_options::check_excluded_libs) Same.
7744
        * options.h (exclude_libs): New option.
7745
        (General_options::check_excluded_libs): New method declaration.
7746
        (General_options::excluded_libs_): New field.
7747
        * symtab.cc (Symbol_table::add_from_relobj): Hide symbols with
7748
        default or protected visibility if an object has no-export flag set.
7749
        testsuite/Makefile.am (check_PROGRAMS): Add exclude_libs_test.
7750
        (check_SCRIPTS): Add exclude_libs_test.sh.
7751
        (check_DATA): Add exclude_libs_test.syms.
7752
        (MOSTLYCLEANFILES): Add exclude_libs_test.syms,
7753
        libexclude_libs_test_1.a and libexclude_libs_test_2.a.
7754
        (exclude_libs_test_SOURCES, exclude_libs_test_DEPENDENCIES,
7755
        exclude_libs_test_LDFLAGS and exclude_libs_test_LDADD): Define.
7756
        (exclude_libs_test.syms, libexclude_libs_test_1.a,
7757
        libexclude_libs_test_2.a): New rules.
7758
        * testsuite/Makefile.in: Regenerate.
7759
        * testsuite/exclude_libs_test.c: New file.
7760
        * testsuite/exclude_libs_test.sh: Ditto.
7761
        * testsuite/exclude_libs_test_1.c: Ditto.
7762
        * testsuite/exclude_libs_test_2.c: Ditto.
7763
 
7764
2009-05-15  Ian Lance Taylor  
7765
 
7766
        * configure.ac: Check for declarations for cases where libiberty.h
7767
        checks HAVE_DECL_xxx.
7768
        * configure, config.in: Rebuild.
7769
 
7770
2009-05-15  Mikolaj Zalewski  
7771
 
7772
        * gold.h (Incremental_argument_list): Remove (invalid) forward
7773
        declaration.
7774
        * incremental.cc (Incremental_inputs::report_achive): New method.
7775
        (Incremental_inputs::report_object): New method.
7776
        (Incremental_inputs::report_script): New method.
7777
        (Incremental_inputs::finalize_inputs): New method.
7778
        (Incremental_inputs::finalize): Call finalize_inputs().
7779
        (Incremental_inputs::sized_create_incremental_inputs_section_data):
7780
        Create inputs entries.
7781
        * incremental.h (Incremental_input_type): New enum.
7782
        (Incremental_inputs::Incremental_input): Initialize new fields.
7783
        (Incremental_inputs::report_inputs): New method.
7784
        (Incremental_inputs::report_achive): New method.
7785
        (Incremental_inputs::report_object): New method.
7786
        (Incremental_inputs::report_script): New method.
7787
        (Incremental_inputs::finalize_inputs): New method.
7788
        (Incremental_inputs::Input_info): New struct.
7789
        (Incremental_inputs::Input_info_map): New typedef.
7790
        (Incremental_inputs::lock_): New field.
7791
        (Incremental_inputs::Inputs_): New field.
7792
        (Incremental_inputs::Inputs_map): New field.
7793
        * main.cc (main): Call Incremental_input::report_inputs.
7794
        * options.h (Input_argument_list): Typedef moved from
7795
        Input_arguments.
7796
        (Input_file_group::Files): Remove, use ::Input_argument_list.
7797
        (Input_file_group::Input_argument_list): Remove, use
7798
        ::Input_argument_list.
7799
        * plugin.cc (Plugin_manager::add_input_file): Add error in
7800
        incremental build.
7801
        * read_syms.cc (do_read_syms): Call Incremental_input::report_*
7802
        functions.
7803
        * script.cc (read_input_script): Call
7804
        Incremental_input::report_script.
7805
        * script.h (Script_info): New class.
7806
 
7807
2009-04-27  Ian Lance Taylor  
7808
 
7809
        * x86_64.cc (do_adjust_output_section): Set entsize to
7810
        plt_entry_size.
7811
 
7812
2009-04-23  Elliott Hughes  
7813
 
7814
        * output.cc (Output_file::close): After short writes, continue
7815
        writing from the correct offset in the buffer being written.
7816
 
7817
2009-04-23  Chris Demetriou  
7818
 
7819
        * configure.ac (HAVE_TR1_UNORDERED_MAP_REHASH): New define.
7820
        * configure: Regenerate.
7821
        * config.in: Regenerate.
7822
        * gold.h: Avoid std::tr1::unordered_map and std::tr1::unordered_set
7823
        if HAVE_TR1_UNORDERED_MAP_REHASH is not defined.
7824
 
7825
2009-04-21  Mikolaj Zalewski  
7826
 
7827
        * incremental.cc (Incremental_inputs_header_data): Renamed from
7828
        Incremental_input_header_data.
7829
        (Incremental_inputs_header_data::data_size): New field.
7830
        (Incremental_inputs_header_data::put_input_file_count): Renamed
7831
        from input_file_count.
7832
        (Incremental_inputs_header_data::put_command_line_offset): Renamed
7833
        from command_line_offset.
7834
        (Incremental_inputs_header_data::put_reserved): Renamed from
7835
        put_reserved.
7836
        (Incremental_inputs_entry_data): Renamed from
7837
        Incremental_input_entry_data.
7838
        (Incremental_inputs_entry_data::data_size): New field.
7839
        (Incremental_inputs::report_command_line): New method.
7840
        (Incremental_inputs::finalize): New method.
7841
        (Incremental_inputs::create_incremental_inputs_data): New method.
7842
        (Incremental_inputs::sized_create_incremental_inputs_data): New method.
7843
        * incremental.h: New file.
7844
        * layout.cc (Layout::Layout): Handle new incremental_inputs_.
7845
       (Layout::finalize): Create incremental inputs section in
7846
        incremental builds.
7847
       (Layout::create_incremental_info_sections): New method.
7848
        * layout.h (Layout::incremental_inputs): New method.
7849
       (Layout::create_incremental_info_sections): New method.
7850
       (Layout::incremental_inputs_): New field.
7851
        * main.cc (main): Notify Incremental_input of the command line.
7852
 
7853
2009-04-01  Ian Lance Taylor  
7854
            Mikolaj Zalewski  
7855
 
7856
        * gold.h (reserve_unordered_map): Define, three versions, one for
7857
        each version of Unordered_map.
7858
        * layout.cc (Layout::Layout): Remove options parameter.  Add
7859
        number_of_input_files parameter.  Don't initialize options_.
7860
        Initialize number_of_input_files_ and resized_signatures_.  Move
7861
        sections_are_attached_.
7862
        (Layout::layout_group): Reserve space for group_signatures_.
7863
        (Layout::find_or_add_kept_section): Change name parameter to be a
7864
        reference.  Resize signatures_ map when it gets large enough.
7865
        (Layout::layout_eh_frame): Use parameters->options() instead of
7866
        this->options_.
7867
        (Layout::make_output_section): Likewise.
7868
        (Layout::attach_allocated_section_to_segment): Likewise.
7869
        (Layout::finalize, Layout::create_executable_stack): Likewise.
7870
        (Layout::set_segment_offsets, Layout::create_interp): Likewise.
7871
        (Layout::finish_dynamic_section, Layout::write_binary): Likewise.
7872
        * layout.h (class Layout): Update declarations.  Remove options_
7873
        field.  Add number_of_input_files_ and resized_signatures_
7874
        fields.  Move sections_are_attached_ field.
7875
        * main.cc (main): Pass number of input files to Layout
7876
        constructor.  Don't pass options.
7877
 
7878
2009-03-30  Ian Lance Taylor  
7879
 
7880
        * ffsll.c (ffsll): Correct implementation.
7881
 
7882
2009-03-27  Ian Lance Taylor  
7883
 
7884
        * ffsll.c: New file.
7885
        * configure.ac: Call AC_REPLACE_FUNCS on ffsll.
7886
        * gold.h (ffsll): Declare if HAVE_FFSLL is not defined.
7887
        * ftruncate.c (ftruncate): Declare before definition.
7888
        * mremap.c (mremap): Likewise.
7889
        * pread.c (pread): Likewise.
7890
        * configure, Makefile.in, config.in: Rebuild.
7891
 
7892
        * mremap.c: New file.
7893
        * configure.ac: Call AC_REPLACE_FUNCS on mremap.
7894
        * gold.h (MREMAP_MAYMOVE): Define if HAVE_MREMAP is not defined.
7895
        (mremap): Declare if HAVE_MREMAP is not defined.
7896
        * configure, Makefile.in, config.in: Rebuild.
7897
 
7898
2009-03-27  Cary Coutant  
7899
 
7900
        * powerpc.cc (Target_powerpc::check_non_pic): Assert that output is
7901
        position independent.
7902
        * sparc.cc (Target_sparc::check_non_pic): Likewise.
7903
        * x86_64.cc (Target_x86_64::check_non_pic): Likewise.
7904
 
7905
2009-03-24  Cary Coutant  
7906
 
7907
        * symtab.h (needs_plt_entry): Check for unsatisfied reference from
7908
        an executable.
7909
        (needs_dynamic_reloc): Likewise.
7910
 
7911
2009-03-24  Ian Lance Taylor  
7912
 
7913
        * yyscript.y (file_cmd): Recognize EXTERN.
7914
        (extern_name_list, extern_name_list_body): New nonterminals.
7915
        * script.cc (script_add_extern): Define.
7916
        * script-c.h (script_add_extern): Declare.
7917
 
7918
2009-03-24  Rafael Avila de Espindola  
7919
 
7920
        * object.cc (is_elf_object): Define.
7921
        * object.h (is_elf_object): Declare.
7922
        * archive.cc (Archive::get_elf_object_for_member): Call
7923
        is_elf_object.
7924
        * readsyms.cc (Read_symbols::do_read_symbols): Likewise.
7925
 
7926
2009-03-24  Elliott Hughes  
7927
 
7928
        * output.cc (Output_file::map_anonymous): Define.
7929
        (Output_file::map): Use map_anonymous.  If the regular mmap fails,
7930
        try an anonymous one.  Report the size if the mmap fails.
7931
        * output.h (class Output_file): Declare map_anonymous.
7932
 
7933
2009-03-24  Ian Lance Taylor  
7934
 
7935
        * target-select.cc (instantiate_target): Don't acquire the lock if
7936
        the instantiated_target_ field has already been set.
7937
 
7938
2009-03-23  Ian Lance Taylor  
7939
 
7940
        * gold-threads.h (class Initialize_lock): Define.
7941
        * gold-threads.cc (class Initialize_lock_once): Define.
7942
        (initialize_lock_control): New static variable.
7943
        (initialize_lock_pointer): New static variable.
7944
        (initialize_lock_once): New static function.
7945
        (Initialize_lock::Initialize_lock): Define.
7946
        (Initialize_lock::initialize): Define.
7947
        * target-select.h: Include "gold-threads.h".
7948
        (class Target_selector): Add lock_ and initialize_lock_ fields.
7949
        Don't define instantiate_target, just declare it.
7950
        * target-select.cc (Target_selector::Target_selector): Initialize
7951
        new fields.
7952
        (Target_selector::instantiate_target): Define.
7953
        * descriptors.h: Include "gold-threads.h".
7954
        (class Descriptors): Add initialize_lock_ field.
7955
        * descriptors.cc (Descriptors::Descriptors): Initialize new
7956
        field.
7957
        (Descriptors::open): Use initialize_lock_ field
7958
        * errors.h (class Errors): Add initialize_lock_ field.
7959
        * errors.cc (Errors::Errors): Initialize new field.
7960
        (Errors::initialize_lock): Use initialize_lock_ field.
7961
        * powerpc.cc (class Target_selector_powerpc): Remove
7962
        instantiated_target_ field.  In do_recognize call
7963
        instantiate_target rather than do_instantiate_target.  In
7964
        do_instantiate_target just allocate a new target.
7965
        * sparc.cc (class Target_selector_sparc): Likewise.
7966
 
7967
        * freebsd.h: New file.
7968
        * i386.cc: Include "freebsd.h".
7969
        (Target_i386): Derive from Target_freebsd rather than
7970
        Sized_target.
7971
        (Target_selector_i386): Derive from Target_selector_freebsd rather
7972
        than Target_selector.
7973
        * x86_64.cc: Include "freebsd.h".
7974
        (Target_x86_64): Derive from Target_freebsd rather than
7975
        Sized_target.
7976
        (Target_selector_x86_64): Derive from Target_selector_freebsd
7977
        rather than Target_selector.
7978
        * target.h (class Target): Add adjust_elf_header and
7979
        do_adjust_elf_header.
7980
        * output.cc (Output_file_header:: do_sized_write): Call target
7981
        adjust_elf_header routine.
7982
        * configure.tgt: Set targ_osabi.
7983
        * configure.ac: Define GOLD_DEFAULT_OSABI.
7984
        * parameters.cc (Parameters::default_target): Pass
7985
        GOLD_DEFAULT_OSABI to select_target.
7986
        * target-select.h (class Target_selector): Make instantiate_target
7987
        protected rather than private.
7988
        * Makefile.am (HFILES): Add freebsd.h.
7989
        * configure, Makefile.in, config.in: Rebuild.
7990
 
7991
        * merge.cc (do_add_input_section): Correct pend value.  Change
7992
        message about last entry not being null terminated from error to
7993
        warning.
7994
 
7995
2009-03-20  Mikolaj Zalewski  
7996
 
7997
        * incremental.cc: New file.
7998
        * Makefile.am (CCFILES): Add incremental.cc.
7999
        * Makefile.in: Rebuild.
8000
 
8001
2009-03-19  Paul Pluzhnikov  
8002
 
8003
        * layout.cc (Layout::output_section_name): Preserve names
8004
        of '.note.' sections.
8005
 
8006
2009-03-19  Ian Lance Taylor  
8007
 
8008
        * descriptors.cc (Descriptors::open): Check that the options are
8009
        valid before using them.
8010
 
8011
2009-03-18  Ian Lance Taylor  
8012
 
8013
        * script-sections.h: Include .
8014
        (class Script_sections): Change Sections_elements from std::vector
8015
        to std::list.  Typedef public Elements_iterator.  Add
8016
        orphan_section_placement_, data_segment_align_start_, and
8017
        saw_data_segment_align_ fields.  Remove data_segment_align_index_
8018
        field.
8019
        * script-sections.cc (class Orphan_section_placement): New class.
8020
        (class Sections_element): Add virtual functions is_relro and
8021
        orphan_section_init.  Remove virtual function place_orphan_here.
8022
        (class Output_section_definition): Add is_relro and
8023
        orphan_section_init.  Remove place_orphan_here.
8024
        (class Orphan_output_section): Likewise.
8025
        (Script_sections::Script_sections): Update for field changes.
8026
        (Script_sections::data_segment_align): Set saw_data_segment_align_
8027
        and data_segment_align_start_, not data_segment_align_index.
8028
        (Script_sections::data_segment_relro_end): Check
8029
        saw_data_segment_align_.  Use data_segment_align_start_ rather
8030
        than data_segment_align_index_.
8031
        (Script_sections::place_orphan): Rewrite to use
8032
        Orphan_section_placement.
8033
 
8034
2009-03-17  Ian Lance Taylor  
8035
 
8036
        * archive.cc (Archive::add_symbols): Check for a version attached
8037
        to the symbol name in the archive map.
8038
        * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_11.
8039
        (ver_test_11_SOURCES, ver_test_11_DEPENDENCIES): Define.
8040
        (ver_test_11_LDFLAGS, ver_test_11_LDADD): Define.
8041
        (ver_test_11.a): New target.
8042
        * testsuite/Makefile.in: Rebuild.
8043
 
8044
        * configure.ac: Check for chsize and posix_fallocate.  Replace
8045
        ftruncate.
8046
        * ftruncate.c: New file, from gnulib.
8047
        * output.cc (posix_fallocate): Define dummy version if not
8048
        HAVE_POSIX_FALLOCATE.
8049
        (Output_file::map): Call posix_fallocate rather than lseek and
8050
        write.
8051
        * gold.h (ftruncate): Declare if not HAVE_FTRUNCATE.
8052
        * configure, Makefile.in, config.in: Rebuild.
8053
 
8054
2009-03-17  Paul Pluzhnikov  
8055
 
8056
        * layout.h (Layout::create_note): Add section_name parameter.
8057
        * layout.cc (Layout::create_note): Likewise.
8058
        (Layout::create_build_id, Layout::create_gold_note): Fix callers.
8059
 
8060
2009-03-17  Ian Lance Taylor  
8061
 
8062
        * descriptors.cc: Include "options.h".
8063
        (FD_CLOEXEC, O_CLOEXEC): Define if not defined.
8064
        (Descriptors::open): Always use O_CLOEXEC when opening a new
8065
        descriptor.  If we have a plugin, and O_CLOEXEC was not defined,
8066
        then set FD_CLOEXEC.
8067
 
8068
        * sparc.cc (class Target_sparc): Add has_got_section.
8069
        (Target_sparc::Scan::global): If we see _GLOBAL_OFFSET_TABLE_,
8070
        make sure we have a GOT section.
8071
 
8072
        * sparc.cc (optimize_tls_reloc): Recognize R_SPARC_TLS_IE_ADD.
8073
        (Target_sparc::Scan::local): Likewise.
8074
        (Target_sparc::Scan::global): Likewise.
8075
        (Target_sparc::Relocate::relocate): Likewise.
8076
        (Target_sparc::Relocate::relocate_tls): Likewise.
8077
 
8078
        * symtab.cc (Symbol_table::define_default_version): New function,
8079
        broken out of add_from_object.
8080
        (Symbol_table::add_from_object): Call define_default_version.
8081
        (Symbol_table::define_special_symbol): Add resolve_oldsym
8082
        parameter.  Change all callers.  If the version for a symbol comes
8083
        from a version script, resolve it with the symbol with the same
8084
        name with no version.  Also add the symbol without a version if
8085
        appropriate.
8086
        (do_define_in_output_data): If resolving with oldsym, don't delete
8087
        sym.
8088
        (do_define_in_output_segment): Likewise.
8089
        (do_define_as_constant): Likewise.
8090
        * symtab.h (class Symbol_table): Update declarations.
8091
 
8092
2009-03-13  Ian Lance Taylor  
8093
 
8094
        * readsyms.cc (Read_symbols::incompatible_warning): New function.
8095
        (Read_symbols::requeue): New function.
8096
        (Read_symbols::do_read_symbols): If make_elf_object fails because
8097
        the target type is not configured, and the file was searched for,
8098
        issue a warning and retry with the next directory.
8099
        (Add_symbols::run): If the file has an incompatible format, and
8100
        it was searched for, requeue the Read_symbols task.  On error,
8101
        release the object.
8102
        * readsyms.h (class Read_symbols): Add dirindex_ field.  Add
8103
        dirindex parameter to constructor.  Change all callers.  Declare
8104
        incompatible_warning and requeue.
8105
        (class Add_symbols): Add dirpath_, dirindex_, mapfile_,
8106
        input_argument_ and input_group_ fields.  Add them to
8107
        constructor.  Change all callers.
8108
        (class Read_script): Add dirindex_ field.  Add it to constructor.
8109
        Change all callers.
8110
        * archive.cc (Archive::setup): Remove input_objects parameter.
8111
        Change all callers.
8112
        (Archive::get_file_and_offset): Likewise.
8113
        (Archive::read_all_symbols): Likewise.
8114
        (Archive::read_symbols): Likewise.
8115
        (Archive::get_elf_object_for_member): Remove input_objects
8116
        parameter.  Add punconfigured parameter.  Change all callers.
8117
        (Archive::add_symbols): Change return type to bool.  Check return
8118
        value of include_member.
8119
        (Archive::include_all_members): Likewise.
8120
        (Archive::include_member): Change return type to bool.  Return
8121
        false if first included object has incompatible target.  Set
8122
        included_member_ field.
8123
        (Add_archive_symbols::run): If add_symbols returns false, requeue
8124
        Read_symbols task.
8125
        * archive.h (class Archive): Add included_member_ field.
8126
        Initialize it in constructor.  Add input_file and searched_for
8127
        methods.  Update declarations.
8128
        (class Add_archive_symbols): Add dirpath_, dirindex_, and
8129
        input_argument_ fields.  Add them to constructor.  Change all
8130
        callers.
8131
        * script.cc: Include "target-select.h".
8132
        (class Parser_closure): Add skip_on_incompatible_target_ and
8133
        found_incompatible_target_ fields.  Add
8134
        skip_on_incompatible_target parameter to constructor.  Change all
8135
        callers.  Add methods skip_on_incompatible_target,
8136
        clear_skip_on_incompatible_target, found_incompatible_target, and
8137
        set_found_incompatible_target.
8138
        (read_input_script): Add dirindex parameter.  Change all callers.
8139
        If parser finds an incompatible target, requeue Read_symbols
8140
        task.
8141
        (script_set_symbol): Clear skip_on_incompatible_target in
8142
        closure.
8143
        (script_add_assertion, script_parse_option): Likewise.
8144
        (script_start_sections, script_add_phdr): Likewise.
8145
        (script_check_output_format): New function.
8146
        * script.h (read_input_script): Update declaration.
8147
        * script-c.h (script_check_output_format): Declare.
8148
        * yyscript.y (file_cmd): Handle OUTPUT_FORMAT.
8149
        (ignore_cmd): Remove OUTPUT_FORMAT.
8150
        * fileread.cc (Input_file::Input_file): Add explicit this.
8151
        (Input_file::will_search_for): New function.
8152
        (Input_file::open): Add pindex parameter.  Change all callers.
8153
        * fileread.h (class Input_file): Add input_file_argument method.
8154
        Declare will_search_for.  Update declarations.
8155
        * object.cc (make_elf_object): Add punconfigured parameter.
8156
        Change all callers.
8157
        * object.h (class Object): Make input_file public.  Add
8158
        searched_for method.
8159
        (make_elf_object): Update declaration.
8160
        * dirsearch.cc (Dirsearch::find): Add pindex parameter.  Use it to
8161
        restart search.
8162
        * dirsearch.h (class Dirsearch): Update declaration.
8163
        * options.h (class General_options): Add --warn-search-mismatch.
8164
        * parameters.cc (Parameters::is_compatible_target): New function.
8165
        * parameters.h (class Parameters): Declare is_compatible_target.
8166
        * workqueue.cc (Workqueue::add_blocker): New function.
8167
        * workqueue.h (class Workqueue): Declare add_blocker.
8168
 
8169
        * fileread.cc (Input_file::open): Remove options parameter.
8170
        Change all callers.
8171
        (Input_file::open_binary): Likewise.
8172
        * script.cc (read_input_script): Likewise.
8173
        * readsyms.h (class Read_symbols): Remove options_ field.  Remove
8174
        options parameter from constructor.  Change all callers.
8175
        (class Read_script): Likewise.
8176
        * fileread.h (class Input_file): Update declarations.
8177
        * script.h (read_input_script): Update declaration.
8178
 
8179
2009-03-10  Nick Clifton  
8180
 
8181
        * po/es.po: New Spanish translation.
8182
 
8183
2009-03-06  Cary Coutant  
8184
 
8185
        * options.cc (parse_short_option): Keep dash_z from registering itself.
8186
 
8187
2009-03-03  Ian Lance Taylor  
8188
 
8189
        PR 9918
8190
        * target-reloc.h (relocate_section): Pass output_section to
8191
        relocate.
8192
        * i386.cc (Target_i386::should_apply_static_reloc): Add
8193
        output_section parameter.  Change all callers.
8194
        (Target_i386::Relocate::relocate): Add output_section parameter.
8195
        * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
8196
        * sparc.cc (Target_sparc::Relocate::relocate): Likewise.
8197
        * powerpc.cc (Target_powerpc::Relocate::relocate): Likewise.
8198
        * testsuite/two_file_shared.sh: New script.
8199
        * testsuite/Makefile.am (check_SCRIPTS): Add two_file_shared.sh.
8200
        (check_DATA): Add two_file_shared.dbg.
8201
        (two_file_shared.dbg): New target.
8202
        * testsuite/Makefile.in: Rebuild.
8203
 
8204
2009-03-01  Ian Lance Taylor  
8205
 
8206
        * configure.ac: Check for byteswap.h.
8207
        * configure: Rebuild.
8208
        * config.in: Rebuild.
8209
 
8210
2009-03-01  Mikolaj Zalewski  
8211
 
8212
        * layout.cc (Layout::find_or_add_kept_section): New function.
8213
        (Layout::add_comdat): Removed.
8214
        * layout.h (struct Kept_section): Move out of class Layout.
8215
        Remove trailing underscores from field names.  Add group_sections
8216
        field.  Rename group_ field to is_group.  Change all uses.
8217
        (class Layout): Declare find_or_add_kept_section, not add_comdat.
8218
        * object.cc (Sized_relobj::Sized_relobj): Don't initialize
8219
        comdat_groups_ field.
8220
        (Sized_relobj::include_section_group): Use
8221
        find_or_add_kept_section and Kept_section::group_sections.
8222
        (Sized_relobj::include_linkonce_section): Likewise.
8223
        * object.cc (class Sized_relobj): Don't define Comdat_group or
8224
        Comdat_group_table.  Remove find_comdat_group and
8225
        add_comdat_group.  Remove comdat_groups_ field.
8226
        * plugin.cc (include_comdat_group): Use
8227
        Layout::find_or_add_kept_section.
8228
 
8229
2009-02-28  Ian Lance Taylor  
8230
 
8231
        * README: --gc-sections and map files are now supported.  Document
8232
        some build requirements.
8233
 
8234
        PR 6992
8235
        * symtab.cc (Symbol_table::sized_write_section_symbol): In a
8236
        relocatable link set the value of the section symbol to zero.
8237
        * object.cc (Sized_relobj::do_finalize_local_symbols): In a
8238
        relocatable link don't include the section address in the local
8239
        symbol value.
8240
 
8241
2009-02-27  Ian Lance Taylor  
8242
 
8243
        PR 6811
8244
        * options.h (class Search_directory): Add is_system_directory.
8245
        (class General_options): Declare is_in_system_directory.
8246
        * options.cc (get_relative_sysroot): Make static.
8247
        (get_default_sysroot): Make static.
8248
        (General_optoins::is_in_system_directory): New function.
8249
        * fileread.cc (Input_file::is_in_system_directory): New function.
8250
        * fileread.h (class Input_file): Declare is_in_system_directory.
8251
        * object.h (class Object): Add is_in_system_directory.
8252
        (class Input_objects): Remove system_library_directory_ field.
8253
        * object.cc (Input_objects::add_object): Don't set
8254
        system_library_directory_.
8255
        (input_objects::found_in_system_library_directory): Remove.
8256
        * symtab.cc (Symbol_table::write_globals): Remove input_objects
8257
        parameter.  Change all callers.
8258
        (Symbol_table::sized_write_globals): Likewise.
8259
        (Symbol_table::warn_about_undefined_dynobj_symbol): Likewise.
8260
        Call Object::is_in_system_directory.
8261
        * symtab.h (class Symbol_table): Update declarations.
8262
 
8263
        PR 5990
8264
        * descriptors.h (Open_descriptor): Add is_on_stack field.
8265
        * descriptors.cc (Descriptors::open): If the descriptor is on the
8266
        top of the stack, remove it.  Initialize is_on_stack field.
8267
        (Descriptors::release): Only add pod to stack if it is not on the
8268
        stack already.
8269
        (Descriptors::close_some_descriptor): Clear stack_next and
8270
        is_on_stack fields.
8271
 
8272
        PR 7091
8273
        * output.cc (Output_section::find_starting_output_address): Rename
8274
        from starting_output_address; add PADDR parameter; change return
8275
        type.
8276
        * output.h (class Output_section): Declare
8277
        find_starting_output_address instead of starting_output_address.
8278
        * object.cc (Sized_relobj::do_finalize_local_symbols): Handle a
8279
        section symbol for which we can't find a merge section.
8280
 
8281
        PR 9836
8282
        * symtab.cc (Symbol_table::add_from_object): If the visibility is
8283
        hidden or internal, force the symbol to be local.
8284
        * resolve.cc (Symbol::override_visibility): Define.
8285
        (Symbol::override_base): Use override_visibility.
8286
        (Symbol_table::resolve): Likewise.
8287
        (Symbol::override_base_with_special): Likewise.
8288
        (Symbol_table::override_with_special): If the visibility is hidden
8289
        or internal, force the symbol to be local.
8290
        * symtab.h (class Symbol): Add set_visibility and
8291
        override_visibility.
8292
        * testsuite/ver_test_1.sh: New file.
8293
        * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_1.sh.
8294
        (check_DATA): Add ver_test_1.syms.
8295
        (ver_test_1.syms): New target.
8296
        * testsuite/Makefile.in: Rebuild.
8297
 
8298
2009-02-25  Cary Coutant  
8299
 
8300
        * layout.cc (Layout::choose_output_section): Don't rename sections
8301
        when using a linker script that has a SECTIONS clause.
8302
        * Makefile.in: Regenerate.
8303
 
8304
        * testsuite/Makefile.am (script_test_5.sh): New test case.
8305
        * testsuite/Makefile.in: Regenerate.
8306
        * testsuite/script_test_5.cc: New file.
8307
        * testsuite/script_test_5.sh: New file.
8308
        * testsuite/script_test_5.t: New file.
8309
 
8310
2009-02-13  Rafael Avila de Espindola  
8311
 
8312
        * archive.cc (Archive::include_member): Update calls to add_symbols.
8313
        * dynobj.cc (Sized_dynobj::make_version_map): Add
8314
        the Layout argument.
8315
        * dynobj.h (do_add_symbols): Add the Layout argument.
8316
        * object.cc (Sized_relobj::do_add_symbols): Add the
8317
        Layout argument.
8318
        * object.h (Object::add_symbols): Add the Layout argument.
8319
        (Object::do_add_symbols): Add the Layout argument.
8320
        (Sized_relobj::do_add_symbols): Add the Layout argument.
8321
        * plugin.cc (Sized_pluginobj::do_add_symbols):
8322
        Unify the two versions.
8323
        (Add_plugin_symbols): Remove.
8324
        * plugin.h (Pluginobj::add_symbols, Pluginobj::do_add_symbols): Remove.
8325
        (Sized_pluginobj::do_add_symbols): Unify the two versions.
8326
        (Add_plugin_symbols): Remove.
8327
        * readsyms.cc (Read_symbols::do_read_symbols): Update call to
8328
        Add_symbols. Use Add_symbols instead of Add_plugin_symbols.
8329
        (Add_symbols::run): Make it work with Pulginobj.
8330
 
8331
2009-02-06  Ian Lance Taylor  
8332
 
8333
        * object.cc (Sized_relobj::do_layout): Make info message start
8334
        with lower case letter.
8335
 
8336
2009-02-06  Mikolaj Zalewski  
8337
 
8338
        * binary.cc: Fix file comment.
8339
 
8340
        * options.h (enum Incremental_disposition): Define.
8341
        (class General_options): Add new options: --incremental,
8342
        --incremental_changed, --incremental_unchanged,
8343
        --incremental_unknown.  Add incremental_disposition_ and
8344
        implicit_incremental_ fields.
8345
        (General_options::incremental_disposition): New function.
8346
        (class Position_dependent_options): Add incremental_disposition
8347
        option.
8348
        (Position_dependent_options::copy_from_options): Set incremental
8349
        dispositions.
8350
        * options.cc (General_options::parse_incremental_changed): New
8351
        function.
8352
        (General_options::parse_incremental_unchanged): New function.
8353
        (General_options::parse_incremental_unknown): New function.
8354
        (General_options::General_options): Initialize new fields
8355
        incremental_disposition_ and implicit_incremental_.
8356
        (General_options::finalize): Check for uasge of --incremental-*
8357
        without --incremental.
8358
 
8359
2009-02-06  Chris Demetriou  
8360
 
8361
        * gold.h (gold_undefined_symbol): Change to take only a Symbol
8362
        pointer and to report location as the file name associated with
8363
        the symbol.
8364
        (gold_undefined_symbol_at_location): New function to replace the
8365
        old gold_undefined_symbol functionality.
8366
        * target-reloc.h (relocate_section): Update to use
8367
        gold_undefined_symbol_at_location.
8368
        * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
8369
        Call gold_undefined_symbol function rather than gold_error.
8370
        * errors.h (Errors::undefined_symbol): Take location as a
8371
        string, rather than calculating it from a relocation.
8372
        * errors.cc (Errors::fatal): Print "fatal error:" before the
8373
        formatted message.
8374
        (Errors::error, Errors::error_at_location): Print "error: "
8375
        before the formatted message.
8376
        (Errors::undefined_symbol): Take location as a string, rather
8377
        than calculating it from a relocation.
8378
        (gold_undefined_symbol_at_location): New function akin to
8379
        old gold_undefined_symbol, calculates location from relocation.
8380
        (gold_undefined_symbol): Change to take only a Symbol pointer
8381
        and to report location as the file name associated with the symbol.
8382
        * testsuite/debug_msg.sh: Update for changed error messages.
8383
        * testsuite/undef_symbol.sh: Likewise.
8384
 
8385
2009-02-04  Duncan Sands  
8386
 
8387
        PR 9812
8388
        * reduced_debug_output.h
8389
        (Output_reduced_debug_abbrev_section::failed): Use format for
8390
        gold_warning.
8391
        (Output_reduced_debug_info_section::faild): Likewise.
8392
 
8393
2009-01-31  Mikolaj Zalewski  
8394
 
8395
        * script.cc (Lazy_demangler): New class.
8396
        (Version_script_info::get_symbol_version_helper): Demangle a
8397
        symbol only once.
8398
 
8399
2009-01-29  Cary Coutant  
8400
 
8401
        * i386.cc (Target_i386::Relocate::relocate): Recognize non-PIC calls
8402
        to __tls_get_addr.
8403
        * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
8404
 
8405
2009-01-28  Ian Lance Taylor  
8406
 
8407
        * version.cc (version_string): Bump to 1.9.
8408
 
8409
        * gold.h: Include  and .
8410
        * version.cc: Include .
8411
        * object.cc (Sized_relobj::do_layout): Initialize gc_sd to avoid a
8412
        warning.
8413
        * reduced_debug_output.cc (insert_into_vector): Rename from
8414
        Insert_into_vector; change all callers.  Use Swap_unaligned to
8415
        avoid aliasing issue; remove union since it is unnecessary.
8416
 
8417
2009-01-27  Sriraman Tallam  
8418
 
8419
        * Makefile.am (CCFILES): Add gc.cc.
8420
        (HFILES): Add gc.h.
8421
        * Makefile.in: Regenerate.
8422
        * gold.cc (Gc_runner): New class.
8423
        (queue_initial_tasks): Call garbage collection related tasks
8424
        when corresponding options are invoked.
8425
        (queue_middle_gc_tasks): New function.
8426
        (queue_middle_tasks): Reorder tasks to allow relocs to be read and
8427
        processed early before laying out sections during garbage collection.
8428
        * gold.h (queue_middle_gc_tasks): New function.
8429
        (is_prefix_of): Move from "layout.cc".
8430
        * i386.cc (Target_i386::gc_process_relocs): New function.
8431
        * layout.cc (is_prefix_of): Remove. Move to "gold.h"
8432
        * main.cc (main): Create object of class "Garbage_collection".
8433
        * object.cc (Relobj::copy_symbols_data): New function.
8434
        (Relobj::is_section_name_included): New function.
8435
        (Sized_relobj::do_layout): Allow this function to be called twice
8436
        during garbage collection and defer layout of section during the
8437
        first call.
8438
        * object.h (Relobj::get_symbols_data): New function.
8439
        (Relobj::is_section_name_included): New function.
8440
        (Relobj::copy_symbols_data): New function.
8441
        (Relobj::set_symbols_data): New function.
8442
        (Relobj::get_relocs_data): New function.
8443
        (Relobj::set_relocs_data): New function.
8444
        (Relobj::is_output_section_offset_invalid): New pure virtual function.
8445
        (Relobj::gc_process_relocs): New function.
8446
        (Relobj::do_gc_process_relocs): New pure virtual function.
8447
        (Relobj::sd_): New data member.
8448
        (Sized_relobj::is_output_section_offset_invalid): New function.
8449
        (Sized_relobj::do_gc_process_relocs): New function.
8450
        * options.h (General_options::gc_sections): Modify to not be a no-op.
8451
        (General_options::print_gc_sections): New option.
8452
        * plugin.cc (Plugin_finish::run): Remove function call to
8453
        Plugin_manager::layout_deferred_objects.  Move it to "gold.cc".
8454
        * powerpc.cc (Target_powerpc::gc_process_relocs): New function.
8455
        * reloc.cc (Read_relocs::run): Add task to process relocs and
8456
        determine unreferenced sections when doing garbage collection.
8457
        (Gc_process_relocs): New class.
8458
        (Sized_relobj::do_gc_process_relocs): New function.
8459
        (Sized_relobj::do_scan_relocs): Don't try to scan the relocs for
8460
        sections that are garbage collected.
8461
        * reloc.h (Gc_process_relocs): New class.
8462
        * sparc.cc (Target_sparc::gc_process_relocs): New function.
8463
        * symtab.cc (Symbol::should_add_dynsym_entry): Do not add entries for
8464
        symbols whose corresponding sections are garbage collected.
8465
        (Symbol_table::Symbol_table): Add new parameter for the garbage
8466
        collection object.
8467
        (Symbol_table::gc_mark_undef_symbols): New function.
8468
        (Symbol_table::gc_mark_symbol_for_shlib): New function.
8469
        (Symbol_table::gc_mark_dyn_syms): New function.
8470
        (Symbol_table::resolve): Do not treat symbols seen in dynamic objects
8471
        as garbage.
8472
        (Symbol_table::add_from_object): Likewise.
8473
        (Symbol_table::add_from_relobj): When building shared objects, do not
8474
        treat externally visible symbols as garbage.
8475
        (Symbol_table::sized_finalize_symbol): Do not check dynamic symbol
8476
        table information for static and relocatable links.
8477
        * symtab.h (Symbol_table::set_gc): New function.
8478
        (Symbol_table::gc): New function.
8479
        (Symbol_table::gc_mark_undef_symbols): New function.
8480
        (Symbol_table::gc_mark_symbol_for_shlib): New function.
8481
        (Symbol_table::gc_mark_dyn_syms): New function.
8482
        (Symbol_table::gc_): New data member.
8483
        * target.h (Sized_target::gc_process_relocs): New pure virtual
8484
        function.
8485
        * x86_64.cc (Target_x86_64::gc_process_relocs): New function.
8486
        * testsuite/testfile.cc (Target_test::gc_process_relocs): New function.
8487
 
8488
2009-01-20  Chris Faylor 
8489
 
8490
        * options.h (General_options::gc_sections): Define as a no-op for now.
8491
        (General_options::no_keep_memory): Ditto.
8492
        (General_options::Bshareable): Define.
8493
        * options.cc (General_options::finalize): Honor -Bshareable.
8494
 
8495
2009-01-20  Andreas Schwab  
8496
 
8497
        * powerpc.cc (Powerpc_relocate_functions::rel16_ha): Don't try to
8498
        read the value in the contents, since we don't use it.  Use the
8499
        template endianness when writing.
8500
        (Relocate::relocate): Use it for R_PPC_REL16_HA.
8501
 
8502
2009-01-19  Andreas Schwab  
8503
 
8504
        * configure.tgt (powerpc64-*): Fix targ_obj.
8505
 
8506
2009-01-15  Ian Lance Taylor  
8507
 
8508
        * object.cc (Sized_relobj::write_local_symbols): Don't write out
8509
        local symbols when stripping all symbols.
8510
 
8511
2009-01-14  Cary Coutant  
8512
 
8513
        * output.cc (Output_reloc): Add explicit instantiations.
8514
 
8515
2009-01-14  Cary Coutant  
8516
 
8517
        * archive.cc (Archive::get_elf_object_for_member): Remove call
8518
        to File_read::claim_for_plugin.
8519
        * descriptors.cc (Descriptors::open): Remove reference to
8520
        is_claimed.
8521
        (Descriptors::claim_for_plugin): Remove.
8522
        * descriptors.h (Descriptors::claim_for_plugin): Remove.
8523
        (Descriptors::is_claimed): Remove.
8524
        (claim_descriptor_for_plugin): Remove.
8525
        * fileread.cc (File_read::claim_for_plugin): Remove.
8526
        * fileread.h (File_read::claim_for_plugin): Remove.
8527
        (File_read::descriptor): Reopen descriptor if necessary.
8528
        * plugin.cc  (Plugin::load): Add two new APIs to transfer vector.
8529
        (Plugin_manager::all_symbols_read): Add task parameter. Change
8530
        all callers.
8531
        (Plugin_manager::get_input_file): New function.
8532
        (Plugin_manager::release_input_file): New function.
8533
        (Pluginobj::Pluginobj): Add filesize parameter and initialize
8534
        corresponding data member.
8535
        (Sized_pluginobj::Sized_pluginobj): Add filesize parameter
8536
        and pass to base constructor. Change all callers.
8537
        (get_input_file, release_input_file): New functions.
8538
        (make_sized_plugin_object): Add filesize parameter. Change all callers.
8539
        * plugin.h (Plugin_manager::Plugin_manager): Initialize task_ member.
8540
        (Plugin_manager::all_symbols_read): Add task parameter.
8541
        (Plugin_manager::get_input_file): New function.
8542
        (Plugin_manager::release_input_file): New function.
8543
        (Plugin_manager::task_): New data member.
8544
        (Pluginobj::Pluginobj): Add filesize parameter.
8545
        (Pluginobj::filename): New function.
8546
        (Pluginobj::descriptor): New function.
8547
        (Pluginobj::filesize): New function.
8548
        (Pluginobj::filesize_): New data member.
8549
        (Sized_pluginobj::Sized_pluginobj): Add filesize parameter.
8550
        * readsyms.cc (Read_symbols::do_read_symbols): Remove call to
8551
        File_read::claim_for_plugin; use Object::unlock to unlock the file.
8552
 
8553
        * testsuite/Makefile.am (plugin_test_4): New test case for plugins
8554
        with archive libraries.
8555
        * testsuite/Makefile.in: Regenerate.
8556
        * testsuite/plugin_test.c (struct sym_info): New type.
8557
        (get_input_file, release_input_file): New static variables.
8558
        (onload): Capture new transfer vector entries.
8559
        (claim_file_hook): Stop reading at end of file according to filesize.
8560
        Factor out parsing of readelf output into separate function.
8561
        (all_symbols_read_hook): Exercise get_input_file and release_input_file
8562
        APIs and get the source file name from the symbol table.  Convert
8563
        source file name to corresponding object file name.  Print info
8564
        message when adding new input files.
8565
        (parse_readelf_line): New function.
8566
        * testsuite/plugin_test_1.sh: Add checks for new info messages.
8567
        * testsuite/plugin_test_2.sh: Likewise.
8568
        * testsuite/plugin_test_3.sh: Likewise.
8569
        * testsuite/plugin_test_4.sh: New test case.
8570
 
8571
2009-01-07  Ian Lance Taylor  
8572
 
8573
        * version.cc (version_string): Bump to 1.8.
8574
 
8575
2008-12-23  Cary Coutant  
8576
 
8577
        * gold.cc (gold_exit): Call plugin cleanup handlers on exit.
8578
        * plugin.cc (Plugin_manager::finish): Rename as
8579
        layout_deferred_objects.  Move cleanup to separate function.
8580
        (Plugin_manager::cleanup): New function.
8581
        (Plugin_finish::run): Call layout_deferred_objects and cleanup
8582
        separately.
8583
        * plugin.h (Plugin_manager::finish): Rename as
8584
        layout_deferred_objects.
8585
        (Plugin_manager::cleanup): New function.
8586
        (Plugin_manager::cleanup_done): New field.
8587
 
8588
2008-12-23  Cary Coutant  
8589
 
8590
        * plugin.cc (is_visible_from_outside): New function.
8591
        (Pluginobj::get_symbol_resolution_info): Call is_visible_from_outside
8592
        so we don't return "IR only" status for exported symbols or -r links.
8593
 
8594
        * testsuite/Makefile.am (plugin_test_3): New test case.
8595
        * testsuite/Makefile.in: Regenerate.
8596
        * testsuite/plugin_test_3.sh: New file.
8597
 
8598
2008-12-22  Cary Coutant  
8599
 
8600
        * object.cc (Sized_relobj::layout_section): New function.
8601
        (Sized_relobj::do_layout): Defer layout of input sections until after
8602
        plugin has provided replacement files.
8603
        (Sized_relobj::do_layout_deferred_sections): New function.
8604
        * object.h (Relobj::set_section_offset): Remove virtual keyword.
8605
        (Relobj::layout_deferred_sections): New function.
8606
        (Relobj::do_layout_deferred_sections): New function.
8607
        (Sized_relobj::do_layout_deferred_sections): New function.
8608
        (Sized_relobj::layout_section): New function.
8609
        (Sized_relobj::Deferred_layout): New structure.
8610
        (Sized_relobj::deferred_layout_): New field.
8611
        * plugin.cc (Plugin_manager::finish): Renamed, was cleanup.
8612
        Change all callers.  Layout deferred sections.
8613
        (class Plugin_finish): Renamed, was Plugin_cleanup.  Change all
8614
        references.
8615
        (Plugin_hook::run): Move code from do_plugin_hook inline.
8616
        (Plugin_hook::do_plugin_hook): Remove.
8617
        * plugin.h (Plugin_manager::Plugin_manager): Add missing initializers.
8618
        (Plugin_manager::finish): Renamed, was cleanup.
8619
        (Plugin_manager::should_defer_layout): New function.
8620
        (Plugin_manager::add_deferred_layout_object): New function.
8621
        (Plugin_manager::Deferred_layout_list): New type.
8622
        (Plugin_manager::deferred_layout_objects_): New field.
8623
        (Plugin_hook::do_plugin_hook): Remove.
8624
 
8625
2008-12-17  Ian Lance Taylor  
8626
 
8627
        * options.h (class General_options): Add --no case for
8628
        --export-dynamic.
8629
 
8630
2008-12-16  Cary Coutant  
8631
 
8632
        * plugin.cc (Plugin::load): Move LDPT_MESSAGE to front of transfer
8633
        vector.
8634
        (Plugin_manager::claim_file): Create plugin object even if
8635
        plugin did not call the add_symbols callback.
8636
        (Plugin_obj::get_symbol_resolution_info): Guard against plugin
8637
        asking for more symbols than were added.
8638
        * testsuite/Makefile.am (plugin_test_1): Add test case with
8639
        no global symbols.
8640
        (empty.syms): New target.
8641
        * testsuite/Makefile.in: Regenerate.
8642
        * testsuite/plugin_test.c (claim_file_hook): Add new debug
8643
        message. Don't call add_symbols if no globals.
8644
        (all_symbols_read_hook): Don't provide replacement for empty
8645
        claimed file.
8646
 
8647
2008-12-12  Ian Lance Taylor  
8648
 
8649
        * target-reloc.h (Default_scan_relocatable_relocs): Only discard
8650
        r_type == 0 for a local symbol with r_sym == 0.
8651
        (scan_relocatable_relocs): Pass r_sym to
8652
        local_non_section_strategy.
8653
        * reloc.cc (Emit_relocs_strategy::local_non_section_strategy): Add
8654
        r_sym parameter.
8655
 
8656
        * configure.ac: Update test for TLS descriptors: they are
8657
        supported as of glibc 2.9.
8658
        * configure: Rebuild.
8659
 
8660
2008-12-11  Ian Lance Taylor  
8661
 
8662
        PR 7091
8663
        * target-reloc.h (Default_scan_relocatable_relocs): For each
8664
        function, map r_type == 0 to RELOC_DISCARD.
8665
 
8666
2008-12-10  Cary Coutant  
8667
 
8668
        * layout.cc (Layout::add_comdat): Allow COMDAT group from a replacement
8669
        object to override a kept COMDAT group from a plugin object.
8670
 
8671
2008-12-09  Ian Lance Taylor  
8672
 
8673
        PR 7088
8674
        * yyscript.y (file_cmd): Handle INPUT.
8675
 
8676
        * testsuite/initpri1.c: Change all declarations to be full
8677
        prototypes by adding void, to avoid compiler warnings.
8678
 
8679
2008-12-05  Rafael Avila de Espindola  
8680
 
8681
        * options.cc (General_options::parse_plugin_opt): New.
8682
        (General_options::add_plugin): The argument now is just the filename.
8683
        (General_options::add_plugin_option): New.
8684
        * options.h (plugin_opt): New.
8685
        (add_plugin): Change argument name.
8686
        (add_plugin_option): New.
8687
        * plugin.cc (Plugin::load): Don't parse the plugin option.
8688
        * plugin.h (Plugin::Plugin): Rename argument. Init filename_.
8689
        (Plugin::add_option): New.
8690
        (Plugin::args_): Change type.
8691
        (Plugin::filename_): New.
8692
        (Plugin_manager::add_plugin_option): New.
8693
        * testsuite/Makefile.am (plugin_test_1): Use new syntax.
8694
        * testsuite/Makefile.in: Regenerate.
8695
 
8696
2008-12-05  Cary Coutant  
8697
 
8698
        * layout.cc (Layout::include_section): Check for SHF_EXCLUDE.
8699
        Handle --strip-lto-sections option.
8700
        * options.h (strip_lto_sections): New option.
8701
 
8702
2008-12-01  Cary Coutant  
8703
 
8704
        * plugin.cc (ld_plugin_message): Change format parameter to const.
8705
        Fix mismatch between new[] and delete.
8706
 
8707
2008-11-14  Cary Coutant  
8708
 
8709
        * reloc.cc (Sized_relobj::do_read_relocs): Use constant invalid_address
8710
        instead of -1U.
8711
 
8712
2008-11-05  Craig Silverstein  
8713
 
8714
        * options.cc (General_options::parse_dynamic_list): New function.
8715
        * options.h (General_options): New flags dynamic_list,
8716
        dynamic_list_data, dynamic_list_cpp_new, and
8717
        dynamic_list_cpp_typeinfo.  New variable dynamic_list_.
8718
        (General_options::in_dynamic_list): New function.
8719
        * script.cc (Lex::Mode): New enum DYNAMIC_LIST.
8720
        (Lex::can_start_name): Add support for DYNAMIC_LIST mode.
8721
        (Lex::can_continue_name): Likewise.
8722
        (yylex): Likewise.
8723
        (read_script_file): New parameter script_options.
8724
        (read_dynamic_list): New function.
8725
        (Script_options::define_dynamic_list): New function.
8726
        (dynamic_list_keyword_parsecodes): New variable.
8727
        (dynamic_list_keywords): New variable.
8728
        * script.h (Script_options::define_dynamic_list): New function
8729
        prototype.
8730
        (read_dynamic_list): New function prototype.
8731
        * symtab.cc (strprefix): New macro.
8732
        (Symbol::should_add_dynsym_entry): Support dynamic_list,
8733
        dynamic_list_data, dynamic_list_cpp_new, and
8734
        dynamic_list_cpp_typeinfo.
8735
        * yyscript.y (PARSING_DYNAMIC_LIST): New token.
8736
        (dynamic_list_expr): New rule.
8737
        (dynamic_list_nodes): Likewise.
8738
        (dynamic_list_node): Likewise.
8739
        * testsuite/Makefile.am (dynamic_list): New test.
8740
        * testsuite/Makefile.in: Regenerated.
8741
        * testsuite/dynamic_list.t: New file.
8742
        * testsuite/dynamic_list.sh: New file.
8743
 
8744
2008-11-05  Craig Silverstein  
8745
 
8746
        * testsuite/tls_test_c.c: Add prototype for t11 and t11_last.
8747
        * testsuite/tls_test_c.c (t11): Add explicit "void" to prototype.
8748
        (t11_last): Likewise.
8749
        * testsuite/ver_test_6.c (main): Likewise.
8750
 
8751
2008-10-07  Cary Coutant  
8752
 
8753
        * options.c (General_options::finalize): Add check for -static and
8754
        -shared.
8755
        * gold.cc (queue_middle_tasks): Assert that list of dynamic objects
8756
        is not empty.
8757
 
8758
2008-10-02  Cary Coutant  
8759
 
8760
        * plugin.cc (make_sized_plugin_object): Fix conditional
8761
        compilation to work when not all targets are enabled.
8762
 
8763
2008-09-29  Cary Coutant  
8764
 
8765
        * archive.cc (Archive::get_file_and_offset): Use filename instead
8766
        of name to get library path.
8767
        (Archive::include_member): Unlock external member of a thin archive.
8768
 
8769
        * testsuite/Makefile.am (TEST_AR): New variable.
8770
        (thin_archive_test_1): New test.
8771
        (thin_archive_test_2): New test.
8772
        * testsuite/Makefile.in: Regenerate.
8773
        * testsuite/thin_archive_main.cc: New file.
8774
        * testsuite/thin_archive_test_1.cc: New file.
8775
        * testsuite/thin_archive_test_2.cc: New file.
8776
        * testsuite/thin_archive_test_3.cc: New file.
8777
        * testsuite/thin_archive_test_4.cc: New file.
8778
 
8779
2008-09-29  Cary Coutant  
8780
 
8781
        * mapfile.cc (Mapfile::print_input_section): Change -1U to -1ULL.
8782
        * object.cc (Sized_relobj::do_layout): Use constant invalid_address
8783
        instead of -1U.
8784
        (Sized_relobj::do_finalize_local_symbols): Likewise.
8785
        (Sized_relobj::map_to_kept_section): Likewise.
8786
        * object.h (Sized_relobj::invalid_address): New constant.
8787
        (Sized_relobj::do_output_section_offset): Check for invalid_address
8788
        and return -1ULL.
8789
        * output.cc (Output_reloc::local_section_offset): Use constant
8790
        invalid_address instead of -1U.
8791
        (Output_reloc::get_address): Likewise.
8792
        (Output_section::output_address): Change -1U to -1ULL.
8793
        * output.h (Output_reloc::invalid_address): New constant.
8794
        * reloc.cc (Sized_relobj::write_sections): Use constant
8795
        invalid_address instead of -1U.
8796
        (Sized_relobj::relocate_sections): Likewise.
8797
        * symtab.cc (Symbol_table::sized_finalize_symbol): Handle symbol
8798
        values for merge sections.
8799
        * target-reloc.h (relocate_for_relocatable): Use constant
8800
        invalid_address instead of -1U.
8801
 
8802
2008-09-19  Cary Coutant  
8803
 
8804
        Add plugin functionality for link-time optimization (LTO).
8805
        * configure.ac (plugins): Add --enable-plugins option.
8806
        * configure: Regenerate.
8807
        * config.in: Regenerate.
8808
        * Makefile.am (LIBDL): New variable.
8809
        (CCFILES): Add plugin.cc.
8810
        (HFILES): Add plugin.h.
8811
        (ldadd_var): Add LIBDL.
8812
        * Makefile.in: Regenerate.
8813
 
8814
        * archive.cc: Include "plugin.h".
8815
        (Archive::setup): Don't preread archive symbols when using a plugin.
8816
        (Archive::get_file_and_offset): Add memsize parameter.  Change callers.
8817
        (Archive::get_elf_object_for_member): Call plugin hooks for claiming
8818
        files.
8819
        (Archive::include_member): Add symbols from plugin objects.
8820
        * archive.h (Archive::get_file_and_offset): Add memsize parameter.
8821
        * descriptors.cc (Descriptors::open): Check for file descriptors
8822
        abandoned by plugins.
8823
        (Descriptors::claim_for_plugin): New function.
8824
        * descriptors.h (Descriptors::claim_for_plugin): New function.
8825
        (Open_descriptor::is_claimed): New field.
8826
        (claim_descriptor_for_plugin): New function.
8827
        * fileread.cc (File_read::claim_for_plugin): New function.
8828
        * fileread.h (File_read::claim_for_plugin): New function.
8829
        (File_read::descriptor): New function.
8830
        * gold.cc: Include "plugin.h".
8831
        (queue_initial_tasks): Add task to call plugin hooks for generating
8832
        new object files.
8833
        * main.cc: Include "plugin.h".
8834
        (main): Load plugin libraries.
8835
        * object.h (Pluginobj): Declare.
8836
        (Object::pluginobj): New function.
8837
        (Object::do_pluginobj): New function.
8838
        (Object::set_target): New function.
8839
        * options.cc: Include "plugin.h".
8840
        (General_options::parse_plugin): New function.
8841
        (General_options::General_options): Initialize plugins_ field.
8842
        (General_options::add_plugin): New function.
8843
        * options.h (Plugin_manager): Declare.
8844
        (General_options): Add --plugin option.
8845
        (General_options::has_plugins): New function.
8846
        (General_options::plugins): New function.
8847
        (General_options::add_plugin): New function.
8848
        (General_options::plugins_): New field.
8849
        * plugin.cc: New file.
8850
        * plugin.h: New file.
8851
        * readsyms.cc: Include "plugin.h".
8852
        (Read_symbols::do_read_symbols): Check for archive before checking
8853
        for ELF file.  Call plugin hooks to claim files.
8854
        * resolve.cc (Symbol_table::resolve): Record when symbol is referenced
8855
        from a real object file; force override when processing replacement
8856
        files.
8857
        * symtab.cc (Symbol::init_fields): Initialize in_real_elf_ field.
8858
        (Symbol::init_base_object): Likewise.
8859
        (Symbol::init_base_output_data): Likewise.
8860
        (Symbol::init_base_output_segment): Likewise.
8861
        (Symbol::init_base_constant): Likewise.
8862
        (Symbol::init_base_undefined): Likewise.
8863
        (Symbol::output_section): Assert that object is not a plugin.
8864
        (Symbol_table::add_from_pluginobj): New function.
8865
        (Symbol_table::sized_finalize_symbol): Treat symbols from plugins as
8866
        undefined.
8867
        (Symbol_table::sized_write_globals): Likewise.
8868
        (Symbol_table::add_from_pluginobj): Instantiate template.
8869
        * symtab.h (Sized_pluginobj): Declare.
8870
        (Symbol::in_real_elf): New function.
8871
        (Symbol::set_in_real_elf): New function.
8872
        (Symbol::in_real_elf_): New field.
8873
        (Symbol_table::add_from_pluginobj): New function.
8874
 
8875
        * testsuite/Makefile.am (AM_CFLAGS): New variable.
8876
        (LIBDL): New variable.
8877
        (LDADD): Add LIBDL.
8878
        (check_PROGRAMS): Add plugin_test_1 and plugin_test_2.
8879
        (check_SCRIPTS): Add plugin_test_1.sh and plugin_test_2.sh.
8880
        (check_DATA): Add plugin_test_1.err and plugin_test_2.err.
8881
        (MOSTLYCLEANFILES): Likewise.
8882
        * testsuite/Makefile.in: Regenerate.
8883
        * testsuite/plugin_test.c: New file.
8884
        * testsuite/plugin_test_1.sh: New file.
8885
        * testsuite/plugin_test_2.sh: New file.
8886
 
8887
2008-09-16  Ian Lance Taylor  
8888
 
8889
        * target-reloc.h (relocate_section): Check whether a symbol is
8890
        defined by the ABI before reporting an undefined symbol error.
8891
        * target.h (Target::is_defined_by_abi): Make parameter const.
8892
        (Target::do_is_defined_by_abi): Likewise.
8893
        * i386.cc (Target_i386::do_is_defined_by_abi): Likewise.
8894
        * powerpc.cc (Target_powerpc::do_is_defined_by_abi): Likewise.
8895
        * sparc.cc (Target_sparc::do_is_defined_by_abi): Likewise.
8896
        * x86_64.cc (Target_x86_64::do_is_defined_by_abi): Likewise.
8897
        * testsuite/Makefile.am (tls_test_shared.so): Add -Wl,-z,defs.
8898
        * testsuite/Makefile.in: Rebuild.
8899
 
8900
        * fileread.cc (make_view): Add casts to avoid warning.
8901
 
8902
2008-09-16  Alexandre Oliva  
8903
 
8904
        * i386.cc (Target_i386::define_tls_base_symbol): Update comments.
8905
        * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
8906
 
8907
2008-09-16  Alexandre Oliva  
8908
 
8909
        * options.h (General_options::output_is_executable): New.
8910
        (General_options::output_is_pie): New.
8911
        * i386.cc (Target_i386::define_tls_base_symbol): Use SEGMENT_START
8912
        for shared libraries.
8913
        * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
8914
 
8915
2008-09-11  Chris Demetriou  
8916
 
8917
        * options.h (origin): New -z option.
8918
        * layout.cc (Layout:finish_dynamic_section): If "-z origin"
8919
        is specified, set DF_ORIGIN in DT_FLAGS and set DF_1_ORIGIN
8920
        in DT_FLAGS_1.
8921
 
8922
2008-09-05  Cary Coutant  
8923
 
8924
        * fileread.cc (File_read::make_view): Add check for attempt to map
8925
        beyond end of file.
8926
 
8927
2008-09-05  Cary Coutant  
8928
 
8929
        * symtab.cc (Symbol_table::add_from_dynobj): Fix typos in
8930
        explicit instantiations.
8931
 
8932
2008-08-28  Kris Van Hees  
8933
 
8934
        PR gold/6858
8935
        * options.cc (General_options::finalize): Allow undefined symbols
8936
        in shlibs if linking -shared.
8937
 
8938
        PR gold/6859
8939
        * symtab.cc (Symbol::init_base_undefined): Mark explicitly undefined
8940
        symbols as not needing a dynsym entry.
8941
 
8942
2008-08-20  Craig Silverstein  
8943
 
8944
        * fileread.cc (File_read::open): Do not lock the file unless it
8945
        was successfully opened.
8946
 
8947
2008-08-14  Cary Coutant  
8948
 
8949
        * x86_64.cc (Target_x86_64::Relocate::relocat_tls):
8950
        Use addend for DTPOFF32, DTPOFF64, and TPOFF32 relocs.
8951
        * testsuite/tls_test.cc (struct int128): 128-bit struct
8952
        for testing TLS relocs with non-zero addend.
8953
        (v12): New TLS variable.
8954
        (t12): New test.
8955
        (t_last): Add check for v12.
8956
        * testsuite/tls_test.h (t12): New function.
8957
        * testsuite/tls_test_main.cc (thread_routine): Call new test.
8958
 
8959
2008-08-13  Ian Lance Taylor  
8960
 
8961
        * layout.cc (Layout::attach_allocated_section_to_segment): Don't
8962
        set tls_segment_ or relro_segment_.
8963
        (Layout::make_output_segment): Set tls_segment_ and relro_segment_
8964
        when appropriate.
8965
        * output.h (Output_section::clear_is_relro): New function.
8966
        * output.cc (Output_segment::add_output_section): Handle SHF_TLS
8967
        sections specially even when output_data_ is empty.
8968
        (Output_segment::maximum_alignment): When first section is relro,
8969
        only force alignment for PT_LOAD segments.
8970
        * script.cc (script_data_segment_align): New function.
8971
        (script_data_segment_relro_end): New function.
8972
        * script-c.h (script_data_segment_align): Declare.
8973
        (script_data_segment_relro_end): Declare.
8974
        * script-sections.h (class Script_sections): Declare
8975
        data_segment_align and data_segment_relro_end.  Add fields
8976
        segment_align_index_ and saw_relro_end_.
8977
        * script-sections.cc (class Sections_element): Add set_is_relro
8978
        virtual function.  Add new bool* parameter to place_orphan_here.
8979
        Add get_output_section virtual function.
8980
        (class Output_section_definition): Add set_is_relro.  Add new
8981
        bool* parameter to place_orphan_here.  Add get_output_section.
8982
        Add is_relro_ field.
8983
        (Output_section_definition::Output_section_definition): Initialize
8984
        evaluated_address_, evaluated_load_address, evaluated_addralign_,
8985
        and is_relro_ fields.
8986
        (Output_section_definition::place_orphan_here): Add is_relro
8987
        parameter.
8988
        (Output_section_definition::set_section_addresses): Set relro for
8989
        output section.
8990
        (Output_section_definition::alternate_constraint): Likewise.
8991
        (class Orphan_output_section): Add new bool* parameter to
8992
        place_orphan_here.  Add get_output_section.
8993
        (Orphan_output_section::place_orphan_here): Add is_relro
8994
        parameter.
8995
        (Script_sections::Script_sections): Initialize
8996
        data_segment_align_index_ and saw_relro_end_.
8997
        (Script_sections::data_segment_align): New function.
8998
        (Script_sections::data_segment_relro_end): New function.
8999
        (Script_sections::place_orphan): Set or clear is_relro.
9000
        (Script_sections::set_section_addresses): Force alignment of first
9001
        TLS section.
9002
        * yyscript.y (exp): Call script_data_segment_align and
9003
        script_data_segment_relro_end.
9004
        * testsuite/relro_script_test.t: New file.
9005
        * testsuite/relro_test.cc (using_script): Declare.
9006
        (t1, t2): Test using_script.
9007
        * testsuite/Makefile.am (check_PROGRAMS): Add relro_script_test.
9008
        (relro_script_test_SOURCES): Define.
9009
        (relro_script_test_DEPENDENCIES): Define.
9010
        (relro_script_test_LDFLAGS): Define.
9011
        (relro_script_test_LDADD): Define.
9012
        (relro_script_test.so): New target.
9013
        * testsuite/Makefile.in: Rebuild.
9014
 
9015
2008-08-06  Cary Coutant 
9016
 
9017
        * archive.cc (Archive::total_archives, Archive::total_members)
9018
        (Archive::total_members_loaded): New variables.
9019
        (Archive::setup): Add parameter.  Add option to preread
9020
        archive symbols.
9021
        (Archive::read_armap): Add counter.
9022
        (Archive::get_file_and_offset): New function.
9023
        (Archive::get_elf_object_for_member): New function.
9024
        (Archive::read_all_symbols): New function.
9025
        (Archive::read_symbols): New function.
9026
        (Archive::add_symbols): Add counters.
9027
        (Archive::include_all_members): Use armap to find members if it's
9028
        already built.
9029
        (Archive::include_member): Skip reading symbols if already read.
9030
        Factored code into Archive::get_file_and_offset and
9031
        Archive::get_elf_object_for_member.  Changed call to
9032
        Mapfile::report_include_archive_member.
9033
        (Archive::print_stats): New function.
9034
        * archive.h: Declare Object and Read_symbols_data classes.
9035
        (Archive::Archive): Add initializers for new members.
9036
        (Archive::setup): Add parameter.
9037
        (Archive::print_stats): New function.
9038
        (Archive::total_archives, Archive::total_members)
9039
        (Archive::total_members_loaded): New variables.
9040
        (Archive::get_file_and_offset): New function.
9041
        (Archive::get_elf_object_for_member): New function.
9042
        (Archive::read_all_symbols): New function.
9043
        (Archive::read_symbols): New function.
9044
        (Archive::Archive_member): New class.
9045
        (Archive::members_): New member.
9046
        (Archive::num_members_): New member.
9047
        * main.cc: Include archive.h.
9048
        (main): Call Archive::print_stats.
9049
        * mapfile.cc (Mapfile::report_include_archive_member): Delete
9050
        archive parameter; member_name is now the fully-decorated name.
9051
        * mapfile.h (Mapfile::report_include_archive_member): Likewise.
9052
        * options.h: (General_options): Add --preread-archive-symbols option.
9053
        * readsyms.cc (Read_symbols::do_read_symbols): Change call to
9054
        Archive::setup.
9055
 
9056
2008-08-04  Ian Lance Taylor  
9057
 
9058
        * symtab.h (Symbol::use_plt_offset): New function.
9059
        * i386.cc (Relocate::relocate): Call Symbol::use_plt_offset.
9060
        * powerpc.cc (Relocate::relocate): Likewise.
9061
        * sparc.cc (Relocate::relocate): Likewise.
9062
        * x86_64.cc (Relocate::relocate): Likewise.
9063
        * testsuite/weak_plt.sh: New test.
9064
        * testsuite/weak_plt_main.cc: New test.
9065
        * testsuite/weak_plt_shared.cc: New test.
9066
        * testsuite/Makefile.am (check_SCRIPTS): Add weak_plt.sh.
9067
        (check_PROGRAMS): Add weak_plt.
9068
        (check_DATA): Add weak_plt_shared.so.
9069
        (weak_plt_main_pic.o, weak_plt): New targets.
9070
        (weak_plt_shared_pic.o, weak_plt_shared.so): New targets.
9071
        * testsuite/Makefile.in: Rebuild.
9072
 
9073
        * testsuite/Makefile.am (weak_alias_test_1.so): Depend upon
9074
        gcctestdir/ld.
9075
        (weak_alias_test_2.so, weak_alias_test_4.so): Likewise.
9076
        * testsuite/Makefile.in: Rebuild.
9077
 
9078
2008-08-04  Alan Modra  
9079
 
9080
        * Makefile.am (POTFILES.in): Set LC_ALL=C.
9081
        * Makefile.in: Regenerate.
9082
        * po/POTFILES.in: Regenerate.
9083
 
9084
2008-07-29  Ian Lance Taylor  
9085
 
9086
        * script.cc (Script_options::finalize_symbols): Finalize SECTIONS
9087
        symbols before other symbols.
9088
        * testsuite/script_test_2.cc (test_addr): Declare.
9089
        (test_addr_alias): Declare.
9090
        (main): Check that test_addr and test_addr_alias have the right
9091
        values.
9092
        * testsuite/script_test_2.t: Define test_addr_alias and
9093
        test_addr.
9094
 
9095
2008-07-24  Ian Lance Taylor  
9096
 
9097
        PR 5990
9098
        * descriptors.cc: New file.
9099
        * descriptors.h: New file.
9100
        * gold-threads.h (class Hold_optional_lock): New class.
9101
        * fileread.cc: Include "descriptors.h".
9102
        (File_read::~File_read): Release descriptor rather than closing
9103
        it.
9104
        (File_read::open) [file]: Call open_descriptor rather than open.
9105
        Set is_descriptor_opened_.
9106
        (File_read::open) [memory]: Assert that descriptor is not open.
9107
        (File_read::reopen_descriptor): New function.
9108
        (File_read::release): Release descriptor.
9109
        (File_read::do_read): Make non-const.  Reopen descriptor.
9110
        (File_read::read): Make non-const.
9111
        (File_read::make_view): Reopen descriptor.
9112
        (File_read::do_readv): Likewise.
9113
        * fileread.h (class File_read): Add is_descriptor_opened_ field.
9114
        Update declarations.
9115
        * layout.cc: Include "descriptors.h".
9116
        (Layout::create_build_id): Use open_descriptor rather than open.
9117
        * output.cc: Include "descriptors.h".
9118
        (Output_file::open): Use open_descriptor rather than open.
9119
        * archive.cc (Archive::const_iterator): Change Archive to be
9120
        non-const.
9121
        (Archive::begin, Archive::end): Make non-const.
9122
        (Archive::count_members): Likewise.
9123
        * archive.h (class Archive): Update declarations.
9124
        * object.h (Object::read): Make non-const.
9125
        * Makefile.am (CCFILES): Add descriptors.cc.
9126
        (HFILES): Add descriptors.h.
9127
        * Makefile.in: Rebuild.
9128
 
9129
        PR 6716
9130
        * gold.h: Always include .  Add Solaris workarounds
9131
        following code in binutils/sysdep.h.
9132
 
9133
        PR 6048
9134
        * ehframe.cc (Eh_frame::add_ehframe_input_section): Check whether
9135
        this->eh_frame_hdr_ is NULL before using it.
9136
 
9137
        * dynobj.cc (Versions::Versions): Update comment.
9138
 
9139
        * dynobj.cc (Versions::Versions): If there is an soname, use it as
9140
        the base version name.
9141
 
9142
        * stringpool.cc (Stringpool_template::add_with_length): Set key to
9143
        array size plus one.
9144
        (Stringpool_template::set_string_offsets): Subtract one from key
9145
        before using it as an array index.
9146
        (Stringpool_template::get_offset_with_length): Likewise.
9147
        (Stringpool_template::write_to_buffer): Likewise.
9148
        * stringpool.h (Stringpool_template::get_offset_from_key):
9149
        Likewise.
9150
 
9151
2008-07-23  Ian Lance Taylor  
9152
 
9153
        PR 6658
9154
        * object.h (Merged_symbol_value::value): Do our best to handle a
9155
        negative addend.
9156
 
9157
        PR 6647
9158
        * script.cc (Version_script_info::get_versions): Don't add empty
9159
        version tag to return value.
9160
        (Version_script_info::get_symbol_version_helper): Change return
9161
        type to bool.  Add pversion parameter.  Change all callers.
9162
        (script_register_vers_node): Don't require a non-NULL tag.
9163
        * script.h (class Version_script_info): Update declarations.
9164
        (Version_script_info::get_symbol_version): Change return type to
9165
        bool.  Add version parameter.  Change all callers.
9166
        * symtab.cc (Sized_symbol::add_from_relobj): Rework version
9167
        handling.  Handle an empty version from a version script.
9168
        (Symbol_table::define_special_symbol): Likewise.
9169
        * testsuite/ver_test_10.script: New file.
9170
        * testsuite/ver_test_10.sh: New file.
9171
        * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_10.sh.
9172
        (check_DATA): Add ver_test_10.syms.
9173
        (ver_test_10.syms, ver_test_10.so): New target.
9174
        * testsuite/Makefile.in: Rebuild.
9175
 
9176
2008-07-23  Simon Baldwin  
9177
 
9178
        * symtab.cc (Symbol_table::sized_write_symbol): Only set st_size
9179
        to zero for undefined symbols from dynamic libraries.
9180
 
9181
2008-07-23  Ian Lance Taylor  
9182
 
9183
        * symtab.cc (Symbol_table::resolve): Remove version parameter.
9184
        Change all callers.
9185
        * symtab.h (class Symbol_table): Update declaration.
9186
        * testsuite/ver_test_9.cc: New file.
9187
        * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_9.
9188
        (ver_test_9_SOURCES, ver_test_9_DEPENDENCIES): Define.
9189
        (ver_test_9_LDFLAGS, ver_test_9_LDADD): Define.
9190
        (ver_test_9.so, ver_test_9.o): New targets.
9191
        * testsuite/Makefile.in: Rebuild.
9192
 
9193
2008-07-22  Ian Lance Taylor  
9194
 
9195
        * options.h (class General_options): Define --check-sections.
9196
        * layout.cc (Layout::set_segment_offsets): Handle
9197
        --check-sections.
9198
 
9199
        * options.h (class General_options): Define -n/--nmagic and
9200
        -N/--omagic.
9201
        * options.cc (General_options::finalize): For -n/--nmagic or
9202
        -N/--omagic, set -static.
9203
        * layout.cc (Layout::attach_allocated_section_to_segment): If
9204
        -N/--omagic, don't put read-only and read-write sections in
9205
        different segments.
9206
        (Layout::find_first_load_seg): If -N/--omagic, don't insist on
9207
        finding a read-only segment.
9208
        (Layout::set_segment_offsets): If -N/--omagic or -n/--nmagic,
9209
        don't set the minimum segment alignment to the common page size,
9210
        and don't set the file offset to the address modulo the page size.
9211
        * script-sections.cc (Script_sections::create_segments): If
9212
        -n/--omagic, don't put read-only and read-write sections in
9213
        different segments.
9214
 
9215
        * cref.cc: New file.
9216
        * cref.h: New file.
9217
        * options.h (class General_options): Add --print-symbol-counts.
9218
        * main.cc (main): Issue defined symbol report if requested.
9219
        * archive.cc (Archive::interpret_header): Make into a const member
9220
        function.
9221
        (Archive::add_symbols): Call Input_objects::archive_start and
9222
        archive_stop.
9223
        (Archive::const_iterator): Define new class.
9224
        (Archive::begin, Archive::end): New functions.
9225
        (Archive::include_all_members): Rewrite to use iterator.
9226
        (Archive::count_members): New function.
9227
        * archive.h (class Archive): Update declarations.
9228
        (Archive::filename): New function.
9229
        * object.cc: Include "cref.h".
9230
        (Sized_relobj::Sized_relobj): Initialize defined_count_.
9231
        (Sized_relobj::do_get_global_symbol_counts): New function.
9232
        (Input_objects::add_object): Add object to cross-referencer.
9233
        (Input_objects::archive_start): New function.
9234
        (Input_objects::archive_stop): New function.
9235
        (Input_objects::print_symbol_counts): New function.
9236
        * object.h: Declare Cref and Archive.
9237
        (Object::get_global_symbol_counts): New function.
9238
        (Object::do_get_global_symbol_counts): New pure virtual function.
9239
        (class Sized_relobj): Add defined_count_ field.  Update
9240
        declarations.
9241
        (class Input_objects): Add cref_ field.  Update constructor.
9242
        Update declarations.
9243
        * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize symbols_ and
9244
        defined_count_.
9245
        (Sized_dynobj::do_add_symbols): Allocate symbols_ if printing
9246
        symbol counts.
9247
        (Sized_dynobj::do_get_global_symbol_counts): New function.
9248
        * dynobj.h (class Sized_dynobj): Add fields symbols_ and
9249
        defined_count_.  Update declarations.  Define Symbols typedef.
9250
        * symtab.cc (Symbol_table::add_from_relobj): Add defined
9251
        parameter.  Change all callers.
9252
        (Symbol_table::add_from_dynobj): Add sympointers and defined
9253
        parameters.  Change all callers.
9254
        * symtab.h (class Symbol_table): Update declarations.
9255
        * Makefile.am (CCFILES): Add cref.cc.
9256
        (HFILES): Add cref.h.
9257
        * Makefile.in: Rebuild.
9258
 
9259
2008-07-22  Simon Baldwin  
9260
 
9261
        * symtab.cc (Symbol_table::sized_write_symbol): Set symbol size
9262
        to zero when writing undefined symbols.
9263
 
9264
2008-07-22  Ian Lance Taylor  
9265
 
9266
        * output.cc (Output_section::add_input_section): Don't try to
9267
        merge empty merge sections.
9268
 
9269
2008-07-21  Craig Silverstein  
9270
 
9271
        * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
9272
        Include symbol version in error message.
9273
 
9274
2008-07-20  Chris Demetriou  
9275
 
9276
        * configure.ac (gold_cv_c_random_seed): New configured variable.
9277
        (RANDOM_SEED_CFLAGS): New substituted variable.
9278
        * Makefile.am (AM_CFLAGS, AM_CXXFLAGS): Add $(RANDOM_SEED_CFLAGS).
9279
        * configure: Rebuild.
9280
        * Makefile.in: Likewise.
9281
        * testsuite/Makefile.in: Likewise.
9282
 
9283
2008-07-18  Ian Lance Taylor  
9284
 
9285
        * symtab.cc (Symbol_table::add_from_object): Rewrite the case
9286
        where we see NAME/NULL and NAME/VERSION  as separate symbols.
9287
        * testsuite/ver_test_main.cc (main): Call t4.
9288
        (t4, t4_2a): Define.
9289
        * testsuite/ver_test_2.cc (t4_2): Define.
9290
        * testsuite/ver_test_2.script: Put t4_2a in VER2.
9291
        * testsuite/ver_test_4.cc (t4_2a): Define.
9292
        * testsuite/ver_test_4.script: Put t4_2a in VER2.
9293
        * testsuite/ver_test.h (t4, t4_2, t4_2a): Declare.
9294
 
9295
2008-07-17  Ian Lance Taylor  
9296
 
9297
        * dynobj.cc (Versions::add_def): If we give an error about a
9298
        missing version, go ahead and create the version anyhow.
9299
 
9300
2008-07-10  Ian Lance Taylor  
9301
 
9302
        Handle output sections with more than 0x7fffffff bytes.
9303
        * object.h (class Relobj): Change map_to_output_ to
9304
        output_sections_, and just keep a section pointer.  Change all
9305
        uses.  Move comdat group support to Sized_relobj.
9306
        (Relobj::is_section_specially_mapped): Remove.
9307
        (Relobj::output_section): Remove poff parameter.  Change all
9308
        callers.
9309
        (Relobj::output_section_offset): New function.
9310
        (Relobj::set_section_offset): Rewrite.
9311
        (Relobj::map_to_output): Remove.
9312
        (Relobj::output_sections): New function.
9313
        (Relobj::do_output_section_offset): New pure virtual function.
9314
        (Relobj::do_set_section_offset): Likewise.
9315
        (class Sized_relobj): Add section_offsets_ field.  Add comdat
9316
        group support from Relobj.  Update declarations.
9317
        (Sized_relobj::get_output_section_offset): New function.
9318
        (Sized_relobj::do_output_section_offset): New function.
9319
        (Sized_relobj::do_set_section_offset): New function.
9320
        * object.cc (Relobj::output_section_address): Remove.
9321
        (Sized_relobj::Sized_relobj): Initialize new fields.
9322
        (Sized_relobj::include_section_group): Cast find_kept_object to
9323
        Sized_relobj.
9324
        (Sized_relobj::include_linkonce_section): Likewise.
9325
        (Sized_relobj::do_layout): Use separate arrays for output section
9326
        and output offset.
9327
        (Sized_relobj::do_count_local_symbols): Change map_to_output to
9328
        output_sections.
9329
        (Sized_relobj::do_finalize_local_symbols): Change map_to_output to
9330
        output_sections and section_offsets.
9331
        (Sized_relobj::write_local_symbols): Likewise.
9332
        (map_to_kept_section): Compute output address directly.
9333
        * reloc.cc (Sized_relobj::do_read_relocs): Change map_to_output to
9334
        output_sections and section_offsets.
9335
        (Sized_relobj::write_sections): Likewise.
9336
        (Sized_relobj::relocate_sections): Likewise.
9337
        * symtab.cc (sized_finalize_symbol): Use output_section_offset.
9338
        * output.h (class Output_reloc): Update declarations.  Change
9339
        u2_.relobj to Sized_relobj*.
9340
        (class Output_data_reloc): Change add functions to use
9341
        Sized_relobj*.
9342
        * output.cc (Output_reloc::Output_reloc): Change relobj to
9343
        Sized_relobj*.
9344
        (Output_reloc::local_section_offset): Change return type to
9345
        Elf_Addr.  Use get_output_section_offset.
9346
        (Output_reloc::get_address): Likewise.
9347
        (Output_section::is_input_address_mapped): Don't call
9348
        is_section_specially_mapped.
9349
        (Output_section::output_offset): Likewise.
9350
        (Output_section::output_address): Likewise.
9351
        (Output_section::starting_output_address): Likewise.
9352
        * copy-relocs.cc (Copy_relocs::copy_reloc): Change object
9353
        parameter to Sized_relobj*.
9354
        (Copy_relocs::need_copy_reloc): Likewise.
9355
        (Copy_relocs::save): Likewise.
9356
        * copy-relocs.h (class Copy_relocs): Update declarations.
9357
        (class Copy_relocs::Copy_reloc_entry): Change constructor to use
9358
        Sized_relobj*.  Change relobj_ field to Sized_relobj*.
9359
        * target-reloc.h (relocate_for_relocatable): Change
9360
        offset_in_output_section type to Elf_Addr.  Change code that uses
9361
        it as well.
9362
        * layout.cc (Layout::layout): Always set *off.
9363
        * mapfile.cc (Mapfile::print_input_section): Use
9364
        output_section_offset.
9365
        * i386.cc (Target_i386::copy_reloc): Change object parameter to
9366
        Sized_relobj*.
9367
        * powerpc.cc (Target_powerpc::copy_reloc): Likewise.
9368
        * sparc.cc (Target_sparc::copy_reloc): Likewise.
9369
        * x86_64.cc (Target_x86_64::copy_reloc): Likewise.
9370
 
9371
2008-07-03  Ian Lance Taylor  
9372
 
9373
        * layout.cc (Layout::include_section): Do not discard unrecognized
9374
        SHT_STRTAB sections.
9375
 
9376
2008-06-30  Craig Silverstein  
9377
 
9378
        * script.cc (Lex::can_continue_name): Make '?' allowable in
9379
        version-script names.
9380
        * testsuite/version_script.map: Change glob pattern to use '?'
9381
 
9382
2008-06-30  Manish Singh  
9383
 
9384
        PR 6585
9385
        * symtab.cc (Symbol_table::add_undefined_symbols_from_command_line):
9386
        Correct typo.
9387
 
9388
2008-06-30  Ian Lance Taylor  
9389
 
9390
        PR 6660
9391
        PR 6682
9392
        * powerpc.cc (Powerpc_relocate_functions::addr16_ha) [both
9393
        versions]: Don't try to read the value in the contents, since we
9394
        don't use it.  Use the template endianness when writing.
9395
 
9396
2008-06-25  Cary Coutant  
9397
 
9398
        * fileread.cc (File_read::make_view): Assert on zero-length view.
9399
        * object.cc (Sized_relobj::do_read_symbols): Don't try to read
9400
        symbol table when there are no symbols to read.
9401
 
9402
2008-06-23  Craig Silverstein  
9403
 
9404
        * version.cc (version_string): Bump to 1.7
9405
 
9406
2008-06-18  Craig Silverstein  
9407
 
9408
        * powerpc.cc (Powerpc_relocate_functions::addr16_ha): cast
9409
        constant 0xFFFF to type Valtype.
9410
        (Powerpc_relocate_functions::rel16_ha): Likewise.
9411
 
9412
2008-06-17  Ian Lance Taylor  
9413
 
9414
        * output.h (Output_section::Input_section): Initialize p2align_ to
9415
        zero for Output_section_data constructors.
9416
        (Output_section::Input_section::addralign): If not an input
9417
        section, return the alignment of the Output_section_data.
9418
        * testsuite/copy_test.cc: New file.
9419
        * testsuite/copy_test_1.cc: New file.
9420
        * testsuite/copy_test_2.cc: New file.
9421
        * testsuite/Makefile.am (check_PROGRAMS): Add copy_test.
9422
        (copy_test_SOURCES, copy_test_DEPENDENCIES): New variables.
9423
        (copy_test_LDFLAGS, copy_test_LDADD): New variables.
9424
        (copy_test_1_pic.o, copy_test_1.so): New targets.
9425
        (copy_test_2_pic.o, copy_test_2.so): New targets.
9426
        * testsuite/Makefile.in: Rebuild.
9427
 
9428
        * script-sections.cc (Script_sections::place_orphan): Initialize
9429
        local variable exact.
9430
 
9431
2008-06-13  David Edelsohn  
9432
 
9433
        * powerpc.cc (Output_data_plt_powerpc::do_write): 8 + 4 = 0xC.
9434
 
9435
2008-06-12  David Edelsohn  
9436
            David S. Miller  
9437
 
9438
        * powerpc.cc: New file.
9439
        * Makefile.am (TARGETSOURCES): Add powerpc.cc
9440
        (ALL_TARGETOBJS): Add powerpc.$(OBJEXT)
9441
        * configure.tgt: Add entries for powerpc-* and powerpc64-*.
9442
        * Makefile.in: Rebuild.
9443
 
9444
2008-06-09  Ian Lance Taylor  
9445
 
9446
        * testsuite/relro_test.cc: Include , , and
9447
        .
9448
        (throwing, orig_terminate): New static variables.
9449
        (terminate_handler): New static function.
9450
        (t2): Set terminate handler.
9451
 
9452
2008-06-05  Kris Van Hees  
9453
 
9454
        PR 6584
9455
        * binary.cc (Binary_to_elf::sized_convert): Fix .data
9456
        alignment.
9457
 
9458
2008-05-30  Cary Coutant  
9459
 
9460
        * archive.cc (Archive::include_all_members) Correct to step
9461
        over symbol table and extended name table in thin archives.
9462
 
9463
2008-05-29  Kris Van Hees  
9464
 
9465
        PR 6407
9466
        * target-reloc.h (relocate_for_relocatable): Fix new_offset
9467
        calculation.
9468
 
9469
2008-05-28  Caleb Howe  
9470
 
9471
        * reduced_debug_output.cc: New file.
9472
        * reduced_debug_output.h: New file.
9473
        * options.h (class General_options): Add --strip-debug-non-line.
9474
        * options.cc (General_options::finalize): Add strip_debug_non_line
9475
        to the strip heirarchy.
9476
        * layout.h (class Layout): Add debug_abbrev_ and debug_info_
9477
        fields.
9478
        * layout.cc: Include "reduced_debug_output.h".
9479
        (Layout::Layout): Initialize new fields.
9480
        (line_only_debug_sections): New static array.
9481
        (is_lines_only_debug_sections): New static inline function.
9482
        (Layout::include_section): Handle --strip-debug-non-line.
9483
        (Layout::make_output_section): If --strip-debug-non-line, build
9484
        new output sections for .debug_abbrev and .debug_info.
9485
        * dwarf_reader.cc (read_unsigned_LEB_128): Move to namespace
9486
        gold.  Warn about possible overflow.
9487
        (read_signed_LEB_128): Likewise.
9488
        * dwarf_reader.h: (read_unsigned_LEB_128): Declare.
9489
        (read_signed_LEB_128): Declare.
9490
        * Makefile.am (CCFILES): Add reduced_debug_output.cc.
9491
        (HFILES): Add reduced_debug_output.h.
9492
        * Makefile.in: Rebuild.
9493
 
9494
2008-05-21  Ian Lance Taylor  
9495
 
9496
        * mapfile.cc: New file.
9497
        * mapfile.h: New file.
9498
        * options.h (class General_options): Add -M/--print-map and -Map.
9499
        * options.cc (General_options::finalize): Make -M equivalent to
9500
        -Map -.
9501
        * main.cc: Include  and "mapfile.h".
9502
        (main): Open mapfile if requested.
9503
        * gold.cc (class Middle_runner): Add mapfile_ field.  Update
9504
        constructor.  Change caller.
9505
        (queue_initial_tasks): Add mapfile parameter.  Change caller.
9506
        (queue_middle_tasks): Likewise.
9507
        * gold.h (queue_initial_tasks, queue_middle_tasks): Update
9508
        declarations.
9509
        * archive.cc: Include "mapfile.h".
9510
        (Archive::add_symbols): Add mapfile parameter.  Change all
9511
        callers.  Pass mapfile, symbol, and reason to include_member.
9512
        (Archive::include_all_members): Add mapfile parameter.  Change all
9513
        callers.
9514
        (Archive::include_member): Add mapfile, sym, and why parameters.
9515
        Change all callers.  Report inclusion to map file.
9516
        * archive.h: Include "fileread.h".
9517
        (class Archive): Update declarations.
9518
        (Archive::file): New const method.
9519
        (class Add_archive_symbols): Add mapfile_ field.  Update
9520
        constructor.  Change all callers.
9521
        * readsyms.h (class Read_symbols): Likewise.
9522
        (class Finish_group): Likewise.
9523
        (class Read_script): Likewise.
9524
        * common.cc: Include "mapfile.h".
9525
        (Symbol_table::allocate_commons): Add mapfile parameter.  Change
9526
        all callers.
9527
        (Symbol_table::do_allocate_commons): Likewise.
9528
        (Symbol_table::do_allocate_commons_list): Likewise.  Report common
9529
        symbol allocation to mapfile.
9530
        * common.h (class Allocate_commons_task): Add mapfile_ field.
9531
        Update constructor.  Change all callers.
9532
        * symtab.h (class Symbol_table): Update declarations.
9533
        * layout.cc: Include "mapfile.h".
9534
        (Layout_task_runner::run): Print information to mapfile.
9535
        (Layout::create_gold_note): Change Output_data_fixed_space to
9536
        Output_data_zero_fill.
9537
        (Layout::create_build_id): Likewise.
9538
        (Layout::print_to_mapfile): New function.
9539
        * layout.h (class Layout_task_runner): Add mapfile_ field.  Update
9540
        constructor.  Change caller.
9541
        (class Layout): Declare print_to_mapfile.
9542
        * output.cc (Output_section::Input_section::print_to_mapfile): New
9543
        function.
9544
        (Output_section::add_input_section): If producing a map, always
9545
        add to input_sections_ list.
9546
        (Output_section::do_print_to_mapfile): New function.
9547
        (Output_segment::print_sections_to_mapfile): New function.
9548
        (Output_segment::print_section_list_to_mapfile): New function.
9549
        * output.h: Include "mapfile.h".
9550
        (Output_data::print_to_mapfile): New function.
9551
        (Output_data::do_print_to_mapfile): New virtual function.
9552
        (Output_segment_headers::do_print_to_mapfile): New function.
9553
        (Output_file_header::do_print_to_mapfile): New function.
9554
        (Output_data_const::do_print_to_mapfile): New function.
9555
        (class Output_data_const_buffer): Add map_name_ field.  Update
9556
        constructor.  Change all callers.  Add do_print_to_mapfile
9557
        function.
9558
        (class Output_data_fixed_space): Likewise.
9559
        (class Output_data_space): Likewise.
9560
        (class Output_data_zero_fill): New class.
9561
        (Output_data_strtab::do_print_to_mapfile): New function.
9562
        (Output_data_reloc_base::do_print_to_mapfile): New function.
9563
        (Output_relocatable_relocs::do_print_to_mapfile): New function.
9564
        (Output_data_group::do_print_to_mapfile): New function.
9565
        (Output_data_got::do_print_to_mapfile): New function.
9566
        (Output_data_dynamic::do_print_to_mapfile): New function.
9567
        (Output_symtab_xindex::do_print_to_mapfile): New function.
9568
        (class Output_section): Declare do_print_to_mapflie.  Declare
9569
        print_to_mapfile in Input_section.
9570
        (class Output_segment): Declare new functions.
9571
        * object.h (Sized_relobj::symbol_count): New function.
9572
        * script-sections.cc
9573
        (Output_section_element_dot_assignment::set_section_addresses):
9574
        Change Output_data_fixed_space to Output_data_zero_fill.
9575
        (Output_data_expression::do_print_to_mapfile): New function.
9576
        * script.cc (read_input_script): Add mapfile parameter.  Change
9577
        all callers.
9578
        * script.h (read_input_script): Update declaration.
9579
        * ehframe.h (Eh_frame_hdr::do_print_to_mapfile): New function.
9580
        (Eh_frame::do_print_to_mapfile): New function.
9581
        * merge.h (Output_merge_data::do_print_to_mapfile): New function.
9582
        (Output_merge_string::do_print_to_mapfile): New function.
9583
        * i386.cc (Output_data_plt_i386::do_print_to_mapfile): New
9584
        function.
9585
        * sparc.cc (Output_data_plt_sparc::do_print_to_mapfile): New
9586
        function.
9587
        * x86_64.cc (Output_data_plt_x86_64::do_print_to_mapfile): New
9588
        function.
9589
        * Makefile.am (CCFILES): Add mapfile.cc.
9590
        (HFILES): Add mapfile.h.
9591
        * Makefile.in: Rebuild.
9592
 
9593
2008-05-19  Ian Lance Taylor  
9594
 
9595
        * options.h (class General_options): Add -z relro.
9596
        * layout.cc (Layout::Layout): Initialize relro_segment_.
9597
        (Layout::add_output_section_data): Return the output section.
9598
        (Layout::make_output_section): Rcognize relro sections and mark
9599
        them appropriately.
9600
        (Layout::attach_allocated_section_to_segment): Put relro sections
9601
        in a PT_GNU_RELRO segment.
9602
        (Layout::create_initial_dynamic_sections): Mark the .dynamic
9603
        section as relro.
9604
        (Layout::segment_precedes): Sort PT_GNU_RELRO segments after
9605
        PT_TLS segments.
9606
        (Layout::linkonce_mapping): Map d.rel.ro.local to
9607
        .data.rel.ro.local.
9608
        (Layout::output_section_name): Us .data.rel.ro.local for any
9609
        section which begins with that.
9610
        * layout.h (class Layout): Update add_output_section_data
9611
        declaration.  Add relro_segment_ field.
9612
        * output.cc (Output_section::Output_section): Initialize is_relro_
9613
        and is_relro_local_ fields.
9614
        (Output_segment::add_output_section): Group relro sections.
9615
        (Output_segment::is_first_section_relro): New function.
9616
        (Output_segment::maximum_alignment): If there is a relro section,
9617
        align the segment to the common page size.
9618
        (Output_segment::set_section_addresses): Track whether we are
9619
        looking at relro sections.  If the last section is a relro
9620
        section, align to the common page size.
9621
        (Output_segment::set_section_list_addresses): Add in_relro
9622
        parameter.  Change all callers.  Align to the page size when
9623
        moving from relro to non-relro section.
9624
        (Output_segment::set_offset): Align memsz of a PT_GNU_RELRO
9625
        segment.
9626
        * output.h (class Output_section): Add is_relro_ and
9627
        is_relro_local_ fields.
9628
        (Output_section::is_relro): New function.
9629
        (Output_section::set_is_relro): New function.
9630
        (Output_section::is_relro_local): New function.
9631
        (Output_section::set_is_relro_local): New function.
9632
        (class Output_segment): Update declarations.
9633
        * i386.cc (Target_i386::got_section): Mark .got section as relro.
9634
        * sparc.cc (Target_sparc::got_section): Likewise.
9635
        * x86_64.cc (Target_x86_64::got_section): Likewise.
9636
        * testsuite/relro_test_main.cc: New file.
9637
        * testsuite/relro_test.cc: New file.
9638
        * testsuite/Makefile.am (check_PROGRAMS): Add relro_test.
9639
        (relro_test_SOURCES, relro_test_DEPENDENCIES): New variables.
9640
        (relro_test_LDFLAGS, relro_test_LDADD): New variables.
9641
        (relro_test.so, relro_test_pic.o): New targets.
9642
        * testsuite/Makefile.in: Rebuild.
9643
 
9644
2008-05-16  Ian Lance Taylor  
9645
 
9646
        * output.cc (Output_segment::add_output_section): Remove front
9647
        parameter.
9648
        * output.h (class Output_segment): Remove
9649
        add_initial_output_section and overloaded add_output_section.
9650
        Update declaration of remaining add_output_section.
9651
        * layout.cc (Layout::create_interp): Call add_output_section
9652
        rather than add_initial_output_section.
9653
        (Layout::finish_dynamic_section): Likewise.
9654
 
9655
        * i386.cc (Target_i386::Relocate::relocate_tls): Set dynamic type
9656
        for TLS_GOTDESC and TLS_DESC_CALL.  Only optimize TLS_LDO_32 if we
9657
        know the dynamic type.
9658
        * x86_64.cc (Target_x86_64::Relocate): Add saw_tls_block_reloc_
9659
        field.  Initialize it in constructor.
9660
        (Target_x86_64::Relocate::relocate_tls): Record that we saw a TLS
9661
        block reloc for TLSGD, GOTPC32_TLSDESC, TLSDESC_CALL, and TLSLD.
9662
        Only optimize DTPOFF32 and DTPOFF64 if we have seen a TLS block
9663
        reloc.
9664
 
9665
        * output.cc (Output_reloc::get_address): Change return type to
9666
        Elf_Addr.
9667
        * output.h (class Output_reloc): Update get_address declaration.
9668
        * x86_64.cc (Output_data_plt_x86_64::do_write): Use 64-bit types
9669
        for section addresses.
9670
 
9671
2008-05-09  Ian Lance Taylor  
9672
 
9673
        PR 6493
9674
        * gold.cc (gold_nomem): Use return value of write.
9675
 
9676
2008-05-08  Ian Lance Taylor  
9677
 
9678
        * symtab.c (Symbol::init_base_output_data): Add version
9679
        parameter.  Change all callers.
9680
        (Symbol::init_base_output_segment): Likewise.
9681
        (Symbol::init_base_constant): Likewise.
9682
        (Symbol::init_base_undefined): Likewise.
9683
        (Sized_symbol::init_output_data): Likewise.
9684
        (Sized_symbol::init_output_segment): Likewise.
9685
        (Sized_symbol::init_constant): Likewise.
9686
        (Sized_symbol::init_undefined): Likewise.
9687
        (Symbol_table::do_define_in_output_data): If the new symbol has a
9688
        version, mark it as the default.
9689
        (Symbol_table::do_define_in_output_segment): Likewise.
9690
        (Symbol_table::do_define_as_constant): Likewise.
9691
        * symtab.h (class Symbol): Update declarations.
9692
        (class Sized_symbol): Likewise.
9693
        * resolve.cc (Symbol::override_version): New function.
9694
        (Symbol::override_base): Call override_version.
9695
        (Symbol::override_base_with_special): Likewise.
9696
        * testsuite/ver_script_8.script: New file.
9697
        * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_8.
9698
        (ver_test_8_SOURCES, ver_test_8_DEPENDENCIES): Define.
9699
        (ver_test_8_LDFLAGS, ver_test_8_LDADD): Define.
9700
        (ver_test_8_1.so, ver_test_8_2.so): New targets.
9701
 
9702
2008-05-06  Ian Lance Taylor  
9703
 
9704
        PR 6049
9705
        * options.h (DEFINE_set): Add VARNAME_begin and VARNAME_end
9706
        functions.
9707
        (class General_options): Remove existing --undefined, and add
9708
        --no-undefined instead.  Add new --undefined as synonym for -u.
9709
        * archive.cc (Archive::add_symbols): Check whether symbol was
9710
        named with -u.
9711
        * gold.cc (queue_middle_tasks): Add -u symbols to symbol table.
9712
        * symtab.h (class Symbol): Rename CONSTANT to IS_CONSTANT; change
9713
        all uses.  Add IS_UNDEFINED.  Update declarations to split
9714
        different versions of init_base.  Declare init_base_undefined.
9715
        (Symbol::is_defined): Handle IS_UNDEFINED.
9716
        (Symbol::is_undefined): Likewise.
9717
        (Symbol::is_weak_undefined): Call is_undefined.
9718
        (Symbol::is_absolute): Handle IS_CONSTANT.
9719
        (class Sized_symbol): Update declarations to split different
9720
        versions of init.  Declare init_undefined.
9721
        (class Symbol_table): Declare new functions.
9722
        * symtab.cc (Symbol::init_base_object): Rename from init_base.
9723
        Change all callers.
9724
        (Symbol::init_base_output_data): Likewise.
9725
        (Symbol::init_base_output_segment): Likewise.
9726
        (Symbol::init_base_constant): Likewise.
9727
        (Symbol::init_base_undefined): New function.
9728
        (Sized_symbol::init_object): Rename from init.  Change all
9729
        callers.
9730
        (Sized_symbol::init_output_data): Likewise.
9731
        (Sized_symbol::init_output_segment): Likewise.
9732
        (Sized_symbol::init_constant): Likewise.
9733
        (Sized_symbol::init_undefined): New function.
9734
        (Symbol_table::add_undefined_symbols_from_command_line): New
9735
        function.
9736
        (Symbol_table::do_add_undefined_symbols_from_command_line): New
9737
        function.
9738
        (Symbol::final_value_is_known): Handle IS_UNDEFINED.
9739
        (Symbol::output_section): Likewise.
9740
        (Symbol::set_output_section): Likewise.
9741
        (Symbol_table::sized_finalize_symbol): Likewise.
9742
        (Symbol_table::sized_write_globals): Likewise.
9743
        * resolve.cc (Symbol_table::should_override): Likewise.
9744
        (Symbol::override_base_with_special): Likewise.
9745
 
9746
        * symtab.cc (Symbol_table::add_from_dynobj): If we see a protected
9747
        symbol, change it to have default visibility.
9748
        * testsuite/protected_1.cc: New file.
9749
        * testsuite/protected_2.cc: New file.
9750
        * testsuite/protected_3.cc: New file.
9751
        * testsuite/protected_main_1.cc: New file.
9752
        * testsuite/protected_main_2.cc: New file.
9753
        * testsuite/protected_main_3.cc: New file.
9754
        * testsuite/Makefile.am (check_PROGRAMS): Add protected_1.
9755
        (protected_1_SOURCES, protected_1_DEPENDENCIES): Define.
9756
        (protected_1_LDFLAGS, protected_1_LDADD): Define.
9757
        (protected_1.so): New target.
9758
        (protected_1_pic.o, protected_2_pic.o): New targets.
9759
        (protected_3_pic.o): New target.
9760
        (check_PROGRAMS): Add protected_2.
9761
        (protected_2_SOURCES, protected_2_DEPENDENCIES): Define.
9762
        (protected_2_LDFLAGS, protected_2_LDADD): Define.
9763
        * testsuite/Makefile.in: Rebuild.
9764
 
9765
        * options.h (DEFINE_var): Add set_user_set_##varname__.
9766
        (DEFINE_bool_alias): New macro.
9767
        (class General_options): Define -Bstatic using DEFINE_bool_alias
9768
        rather than DEFINE_special.  Add --undefined as an alias for -z
9769
        defs.
9770
        * options.cc (General_options::parse_Bstatic): Remove.
9771
 
9772
        * options.h (class General_options): Add --fatal-warnings.
9773
        * main.cc (main): Implement --fatal-warnings.
9774
        * errors.h (Errors::warning_count): New function.
9775
 
9776
        * options.h (class General_options): Add -Bsymbolic-functions.
9777
        * symtab.h (Symbol::is_preemptible): Check for
9778
        -Bsymbolic-functions.
9779
 
9780
2008-05-05  Ian Lance Taylor  
9781
 
9782
        * options.h (DEFINE_bool): For DASH_Z, create the negative option
9783
        as noVARNAME rather than no-VARNAME.
9784
        (class General_options): Add option -z combreloc.
9785
        * output.h (class Output_reloc) [SHT_REL]: Declare compare and
9786
        get_address.
9787
        (Output_reloc::sort_before) [SHT_REL]: New function.
9788
        (Output_reloc::sort_before) [SHT_RELA]: New function.
9789
        (class Output_data_reloc_base): Add sort_relocs_ field.  Define
9790
        Sort_relocs_comparison.
9791
        (Output_data_reloc_base::Output_data_reloc_base): Add sort_relocs
9792
        parameter.  Change all callers.
9793
        (Output_data_reloc::Output_data_reloc) [both versions]: Add
9794
        sort_relocs parameter.  Change all callers.
9795
        * output.cc (Output_reloc::get_address): New function, broken out
9796
        of write_rel.
9797
        (Output_reloc::write_rel): Call it.
9798
        (Output_reloc::compare): New function.
9799
        (Output_data_reloc_base::do_write): Optionally sort relocs.
9800
 
9801
        * configure.ac: If targ_extra_obj is set, link it in.
9802
        * configure.tgt: Initialize all variables.
9803
        (x86_64*): Set targ_extra_obj and targ_extra_size.
9804
        * configure: Rebuild.
9805
 
9806
        * object.cc (Sized_relobj::include_section_group): Adjust section
9807
        indexes read from group data.  Build vector to pass to
9808
        layout_group.
9809
        * layout.cc (Layout::layout_group): Add flags and shndxes
9810
        parameters.  Remove contents parameter.  Change caller.  Update
9811
        explicit instantiations.
9812
        * layout.h (class Layout): Update layout_group declaration.
9813
        * output.cc (Output_data_group::Output_data_group): Add flags and
9814
        input_shndxes parameters.  Remove contents parameter.  Change
9815
        caller.
9816
        (Output_data_group::do_write): Change input_sections_ to
9817
        input_shndxes_.
9818
        * output.h (class Output_data_group): Update constructor
9819
        declaration.  Rename input_sections_ to input_shndxes_.
9820
        * testsuite/many_sections_test.cc: Add template.
9821
 
9822
2008-04-30  Cary Coutant  
9823
 
9824
        * target-reloc.h (relocate_section): Fix dead-pointer bug.
9825
 
9826
        * layout.cc (Layout::include_section): Refactored check for debug
9827
        info section.
9828
        (Layout::add_comdat): Add new parameters.  Change type
9829
        of signature parameter.  Add object and shndx to signatures table.
9830
        (Layout::find_kept_object): New function.
9831
        * layout.h: Include .
9832
        (Layout::is_debug_info_section): New function.
9833
        (Layout::add_comdat): Add new parameters.
9834
        (Layout::find_kept_object): New function.
9835
        (Layout::Kept_section): New struct.
9836
        (Layout::Signatures): Change type of map range.
9837
        * object.cc (Relobj::output_section_address): New function.
9838
        (Sized_relobj::include_section_group): Add new parameters.  Change
9839
        calls to Layout::add_comdat.  Change to build table of kept comdat
9840
        groups and table mapping discarded sections to kept sections.
9841
        (Sized_relobj::include_linkonce_section): Likewise.  Add new parameter.
9842
        (Sized_relobj::do_layout): Change calls to include_section_group and
9843
        include_linkonce_section.
9844
        (Sized_relobj::do_finalize_local_symbols): Do not set local symbol
9845
        value to zero when section is discarded.
9846
        (Sized_relobj::map_to_kept_section): New function.
9847
        * object.h (Relobj::output_section_address): New function.
9848
        (Relobj::Comdat_group): New type.
9849
        (Relobj::find_comdat_group): New function.
9850
        (Relobj::Comdat_group_table): New type.
9851
        (Relobj::Kept_comdat_section): New type.
9852
        (Relobj::Kept_comdat_section_table): New type.
9853
        (Relobj::add_comdat_group): New function.
9854
        (Relobj::set_kept_comdat_section): New function.
9855
        (Relobj::get_kept_comdat_section): New function.
9856
        (Relobj::comdat_groups_): New field.
9857
        (Relobj::kept_comdat_sections_): New field.
9858
        (Symbol_value::input_value): Update comment.
9859
        (Sized_relobj::map_to_kept_section) New function.
9860
        (Sized_relobj::include_linkonce_section): Add new parameter.
9861
        * target-reloc.h (Comdat_behavior): New type.
9862
        (get_comdat_behavior): New function.
9863
        (relocate_section): Add code to map a discarded section to the
9864
        corresponding kept section when applying a relocation.
9865
 
9866
2008-04-30  Craig Silverstein  
9867
 
9868
        * dwarf_reader.cc (next_generation_count): New static var.
9869
        (Addr2line_cache_entry): New struct.
9870
        (addr2line_cache): New static var.
9871
        (Dwarf_line_info::one_addr2line): Added caching.
9872
        (Dwarf_line_info::clear_addr2line_cache): New function.
9873
        * dwarf_reader.h (Dwarf_line_info::one_addr2line): Add
9874
        cache-size parameter.
9875
        (Dwarf_line_info::one_addr2line_cache): New function.
9876
        * symtab.cc (Symbol_table::detect_odr_violations): Pass
9877
        new cache-size argument to one_addr2line(), and clear cache.
9878
 
9879
2008-04-28  Cary Coutant  
9880
 
9881
        * i386.cc (Relocate::relocate): Fix typos for R_386_PC16 and
9882
        R_386_PC8 relocations.
9883
 
9884
2008-04-23  Ian Lance Taylor  
9885
 
9886
        * object.cc (Sized_relobj::include_section_group): Check for
9887
        invalid section group.
9888
 
9889
        * object.cc (make_elf_object): Correct test for 64-bit ELF file
9890
        header size.
9891
 
9892
        * readsyms.cc (Read_symbols::do_read_symbols): Use get_view rather
9893
        than read for file header.
9894
        * archive.cc (Archive::include_member): Likewise.
9895
 
9896
2008-04-23  Paolo Bonzini  
9897
 
9898
        * aclocal.m4: Regenerate.
9899
        * configure: Regenerate.
9900
 
9901
2008-04-19  Ian Lance Taylor  
9902
 
9903
        * version.cc (version_string): Bump to 1.6.
9904
 
9905
        * testsuite/Makefile.am (many_sections_r_test): New target.
9906
        (many_sections_r_test_SOURCES): Remove.
9907
        (many_sections_r_test_DEPENDENCIES): Remove.
9908
        (many_sections_r_test_LDFLAGS): Remove.
9909
        (many_sections_r_test_LDADD): Remove.
9910
 
9911
        * object.cc (Sized_relobj::do_add_symbols): Always pass
9912
        local_symbol_count_ to add_from_relobj.
9913
 
9914
        * testsuite/Makefile.am (many_sections_check.h): Only check one in
9915
        every thousand variables.
9916
        * testsuite/Makefile.in: Rebuild.
9917
 
9918
        * object.cc (Xindex::initialize_symtab_xindex): New function.
9919
        (Xindex::read_symtab_xindex): New function.
9920
        (Xindex::sym_xindex_to_shndx): New function.
9921
        (Sized_relobj::find_symtab): Pick up SHT_SYMTAB_SHNDX section if
9922
        available.
9923
        (Sized_relobj::do_initialize_xindex): New function.
9924
        (Sized_relobj::do_read_symbols): Adjust section links.
9925
        (Sized_relobj::symbol_section_and_value): Add is_ordinary
9926
        parameter.  Change all callers.
9927
        (Sized_relobj::include_section_group): Adjust section links and
9928
        symbol section indexes.
9929
        (Sized_relobj::do_layout): Adjust section links.
9930
        (Sized_relobj::do_count_local_symbols): Adjust section links and
9931
        symbol section indexes.
9932
        (Sized_relobj::do_finalize_local_symbols): Distinguish between
9933
        ordinary and special symbols.
9934
        (Sized_relobj::write_local_symbols): Add symtab_xindex and
9935
        dynsym_xindex parameters.  Change all callers.  Adjust section
9936
        links.  Use SHN_XINDEX when needed.
9937
        (Sized_relobj::get_symbol_location_info): Adjust section links.
9938
        Don't get fooled by special symbols.
9939
        * object.h (class Xindex): Define.
9940
        (class Object): Add xindex_ parameter.  Declare virtual functoin
9941
        do_initialize_xindex.
9942
        (Object::adjust_sym_shndx): New function.
9943
        (Object::set_xindex): New protected function.
9944
        (class Symbol_value): Add is_ordinary_shndx_ field.
9945
        (Symbol_value::Symbol_value): Initialize is_ordinary_shndx_.
9946
        (Symbol_value::value): Assert ordinary section.
9947
        (Symbol_value::initialize_input_to_output_map): Likewise.
9948
        (Symbol_value::set_input_shndx): Add is_ordinary parameter.
9949
        Change all callers.
9950
        (Symbol_value::input_shndx): Add is_ordinary parameter.  Change
9951
        all callers.
9952
        (class Sized_relobj): Update declarations.
9953
        (Sized_relobj::local_symbol_input_shndx): Add is_ordinary
9954
        parameter.  Change all callers.
9955
        (Sized_relobj::adjust_shndx): New function.
9956
        * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize dynsym_shndx_
9957
        field.
9958
        (Sized_dynobj::find_dynsym_sections): Remove pdynsym_shndx
9959
        parameter.  Change all callers.  Pick up SHT_DYNSYM_SHNDX section
9960
        for SHT_DYNSYM section if available.  Set dynsym_shndx_ field.
9961
        (Sized_dynobj::read_dynsym_section): Adjust section links.
9962
        (Sized_dynobj::read_dynamic): Likewise.
9963
        (Sized_dynobj::do_read_symbols): Use dynsym_shndx_ field.  Adjust
9964
        section links.
9965
        (Sized_dynobj::do_initialize_xindex): New function.
9966
        * dynobj.h (class Sized_dynobj): Add dynsym_shndx_ field.  Declare
9967
        do_initialize_xindex.
9968
        (Sized_dynobj::adjust_shndx): New function.
9969
        * layout.cc (Layout::Layout): Initialize symtab_xindex_ and
9970
        dynsym_xindex_ fields.
9971
        (Layout::finalize): Add a call to set_section_indexes before
9972
        creating the symtab sections.
9973
        (Layout::set_section_indexes): Don't do anything if the section
9974
        already has a section index.
9975
        (Layout::create_symtab_sections): Add shnum parameter.  Change
9976
        caller.  Create .symtab_shndx section if needed.
9977
        (Layout::create_shdrs): Add shstrtab_section parameter.  Change
9978
        caller.
9979
        (Layout::allocated_output_section_count): New function.
9980
        (Layout::create_dynamic_symtab): Create .dynsym_shndx section if
9981
        needed.
9982
        * layout.h (class Layout): Add symtab_xindex_ and dynsym_xindex_
9983
        fields.  Update declarations.
9984
        (Layout::symtab_xindex): New function.
9985
        (Layout::dynsym_xindex): New function.
9986
        (class Write_symbols_task): Add layout_ field.
9987
        (Write_symbols_task::Write_symbols_task): Add layout parameter.
9988
        Change caller.
9989
        * output.cc (Output_section_headers::Output_section_headers): Add
9990
        shstrtab_section parameter.  Change all callers.
9991
        (Output_section_headers::do_sized_write): Store overflow values
9992
        for section count and section string table section index in
9993
        section header zero.
9994
        (Output_file_header::do_sized_write): Check for overflow of
9995
        section count and section string table section index.
9996
        (Output_symtab_xindex::do_write): New function.
9997
        (Output_symtab_xindex::endian_do_write): New function.
9998
        * output.h (class Output_section_headers): Add shstrtab_section_.
9999
        Update declarations.
10000
        (class Output_symtab_xindex): Define.
10001
        (Output_section::has_out_shndx): New function.
10002
        * symtab.cc (Symbol::init_fields): Initialize is_ordinary_shndx_
10003
        field.
10004
        (Symbol::init_base): Add st_shndx and is_ordinary parameters.
10005
        Change all callers.
10006
        (Sized_symbol::init): Likewise.
10007
        (Symbol::output_section): Check for ordinary symbol.
10008
        (Symbol_table::add_from_object): Remove orig_sym parameter.  Add
10009
        st_shndx, is_ordinary, and orig_st_shndx parameters.  Change all
10010
        callers.
10011
        (Symbol_table::add_from_relobj): Add symndx_offset parameter.
10012
        Change all callers.  Simplify handling of symbols from sections
10013
        not included in the link.
10014
        (Symbol_table::add_from_dynobj): Handle ordinary symbol
10015
        distinction.
10016
        (Weak_alias_sorter::operator()): Assert that symbols are
10017
        ordinary.
10018
        (Symbol_table::sized_finalize_symbol): Handle ordinary symbol
10019
        distinction.
10020
        (Symbol_table::write_globals): Add symtab_xindex and dynsym_xindex
10021
        parameters.  Change all callers.
10022
        (Symbol_table::sized_write_globals): Likewise.  Handle ordinary
10023
        symbol distinction.  Use SHN_XINDEX when needed.
10024
        (Symbol_table::write_section_symbol): Add symtab_xindex
10025
        parameter.  Change all callers.
10026
        (Symbol_table::sized_write_section_symbol): Likewise.  Use
10027
        SHN_XINDEX when needed.
10028
        * symtab.h (class Symbol): Add is_ordinary_shndx_ field.  Update
10029
        declarations.
10030
        (Symbol::shndx): Add is_ordinary parameter.  Change all callers.
10031
        (Symbol::is_defined): Check is_ordinary.
10032
        (Symbol::is_undefined, Symbol::is_weak_undefined): Likewise.
10033
        (Symbol::is_absolute, Symbol::is_common): Likewise.
10034
        (class Sized_symbol): Update declarations.
10035
        (class Symbol_table): Update declarations.
10036
        * resolve.cc (Symbol::override_base): Add st_shndx and is_ordinary
10037
        parameters.  Change all callers.
10038
        (Sized_symbol::override): Likewise.
10039
        (Symbol_table::override): Likewise.
10040
        (symbol_to_bits): Add is_ordinary parameter.  Change all callers.
10041
        (Symbol_table::resolve): Remove orig_sym parameter.  Add st_shndx,
10042
        is_ordinary, and orig_st_shndx parameters.  Change all callers.
10043
        * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Require symbol
10044
        to be in an ordinary section.
10045
        * dwarf_reader.cc (Sized_dwarf_line_info::symbol_section): Add
10046
        object and is_ordinary parameters.  Change all callers.
10047
        (Sized_dwarf_line_info::read_relocs): Add object parameter.
10048
        Change all callers.  Don't add undefined or non-ordinary symbols
10049
        to reloc_map_.
10050
        (Sized_dwarf_line_info::read_line_mappings): Add object parameter.
10051
        Change all callers.
10052
        * dwarf_reader.h (class Sized_dwarf_line_info): Update
10053
        declarations.
10054
        * ehframe.cc (Eh_frame::read_fde): Check for ordinary symbol.
10055
        * reloc.cc (Sized_relobj::do_read_relocs): Adjust section links.
10056
        (Sized_relobj::relocate_sections): Likewise.
10057
        * target-reloc.h (scan_relocs): Adjust section symbol index.
10058
        (scan_relocatable_relocs): Likewise.
10059
        * i386.cc (Scan::local): Check for ordinary symbols.
10060
        * sparc.cc (Scan::local): Likewise.
10061
        * x86_64.cc (Scan::local): Likewise.
10062
        * testsuite/binary_unittest.cc (Sized_binary_test): Update calls
10063
        to symbol_section_and_value.
10064
        * testsuite/many_sections_test.cc: New file.
10065
        * testsuite/Makefile.am (BUILT_SOURCES): Define.
10066
        (check_PROGRAMS): Add many_sections_test.
10067
        (many_sections_test_SOURCES): Define.
10068
        (many_sections_test_DEPENDENCIES): Define.
10069
        (many_sections_test_LDFLAGS): Define.
10070
        (BUILT_SOURCES): Add many_sections_define.h.
10071
        (many_sections_define.h): New target.
10072
        (BUILT_SOURCES): Add many_sections_check.h.
10073
        (many_sections_check.h): New target.
10074
        (check_PROGRAMS): Add many_sections_r_test.
10075
        (many_sections_r_test_SOURCES): Define.
10076
        (many_sections_r_test_DEPENDENCIES): Define.
10077
        (many_sections_r_test_LDFLAGS): Define.
10078
        (many_sections_r_test_LDADD): Define.
10079
        (many_sections_r_test.o): New target.
10080
        * testsuite/Makefile.in: Rebuild.
10081
 
10082
2008-04-17  Cary Coutant  
10083
 
10084
        * errors.cc (Errors::info): New function.
10085
        (gold_info): New function.
10086
        * errors.h (Errors::info): New function.
10087
        * gold.h (gold_info): New function.
10088
        * object.cc (Input_objects::add_object): Print trace output.
10089
        * options.cc (options::parse_set): New function.
10090
        (General_options::parse_wrap): Deleted.
10091
        (General_options::General_options): Deleted initializer.
10092
        * options.h (options::String_set): New typedef.
10093
        (options::parse_set): New function.
10094
        (DEFINE_set): New macro.
10095
        (General_options::wrap): Changed to use DEFINE_set. Changed
10096
        callers of any_wrap_symbols and is_wrap_symbol.
10097
        (General_options::trace, General_options::trace_symbol):
10098
        New options.
10099
        (General_options::any_wrap_symbols, General_options::is_wrap_symbol)
10100
        (General_options::wrap_symbols_): Deleted.
10101
        * symtab.cc (Symbol_table::add_from_object): Print trace output.
10102
 
10103
2008-04-17  David S. Miller  
10104
 
10105
        * options.cc (General_options::parse_V): New function.
10106
        * options.h: Add entries for -V and -Qy.
10107
 
10108
2008-04-17  Ian Lance Taylor  
10109
 
10110
        * common.cc (Symbol_table::allocate_commons): Remove options
10111
        parameter.  Change caller.
10112
        (Symbol_table::do_allocate_commons): Remove options parameter.
10113
        Change caller.  Just call do_allocate_commons_list twice.
10114
        (Symbol_table::do_allocate_commons_list): New function, broken out
10115
        of do_allocate_commons.
10116
        * common.h (class Allocate_commons_task): Remove options_ field.
10117
        Update constructor.
10118
        * symtab.cc (Symbol_table::Symbol_table): Initialize
10119
        tls_commons_.
10120
        (Symbol_table::add_from_object): Put TLS common symbols on
10121
        tls_commons_ list.
10122
        (Symbol_table::sized_finalize_symbol): Handle STT_TLS symbols
10123
        which are IN_OUTPUT_DATA.
10124
        * symtab.h (class Symbol_table): Add tls_commons_ field.  Update
10125
        allocate_commons and do_allocate_commons declarations.  Declare
10126
        do_allocate_commons_list.
10127
        * gold.cc (queue_middle_tasks): Update creation of
10128
        Allocate_commons_task to not pass options.
10129
        * testsuite/Makefile.am (INCLUDES): Add -I.. .
10130
        (TLS_TEST_C_FLAGS): New variable.
10131
        (tls_test_c_pic.o): New target.
10132
        (tls_test_shared.so): Link in tls_test_c_pic.o.
10133
        (tls_test_c_pic_ie.o): New target.
10134
        (tls_test_ie_shared.so): Link in tls_test_c_pic_ie.o.
10135
        (tls_test_DEPENDENCIES, tls_test_LDADD): Add tls_test_c.o.
10136
        (tls_test_c.o): New target.
10137
        (tls_pic_test_DEPENDENCIES): Add tls_test_c_pic.o.
10138
        (tls_pic_test_LDADD): Likewise.
10139
        (tls_shared_gd_to_ie_test_DEPENDENCIES): Add tls_test_c_pic.o.
10140
        (tls_shared_gd_to_ie_test_LDADD): Likewise.
10141
        (tls_test_c_gnu2.o): New target.
10142
        (tls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): Add
10143
        tls_test_c_gnu2.o.
10144
        (tls_shared_gnu2_gd_to_ie_test_LDADD): Likewise.
10145
        (tls_test_gnu2_shared.so): Link in tls_test_c_gnu2.o.
10146
        (tls_test_shared_nonpic.so): Link in tls_test_c.o.
10147
        * testsuite/tls_test.cc: Include "config.h".
10148
        (t_last): Call t11_last.
10149
        * testsuite/tls_test.h (t11, t11_last): Declare.
10150
        * testsuite/tls_test_c.c: New file.
10151
        * testsuite/tls_test_main.cc (thread_routine): Call t11.
10152
        * configure.ac: Check for OpenMP support.
10153
        * configure, config.in, Makefile.in: Rebuild.
10154
        * testsuite/Makefile.in: Rebuild.
10155
 
10156
2008-04-16  Cary Coutant  
10157
 
10158
        * i386.cc (Target_i386::define_tls_base_symbol): New function.
10159
        (Target_i386::tls_base_symbol_defined_): New field.
10160
        (Target_i386::Scan::local): Define _TLS_MODULE_BASE_ symbol.
10161
        (Target_i386::Scan::global): Likewise.
10162
        * symtab.cc (sized_finalize_symbol): Add check for TLS symbol.
10163
        * x86_64.cc (Target_x86_64::define_tls_base_symbol): New function.
10164
        (Target_x86_64::tls_base_symbol_defined_): New field.
10165
        (Target_x86_64::Scan::local): Define _TLS_MODULE_BASE_ symbol.
10166
        (Target_x86_64::Scan::global): Likewise.
10167
 
10168
2008-04-16  Cary Coutant  
10169
 
10170
        * symtab.h (Symbol::is_strong_undefined): Removed unused function.
10171
        (Symbol::needs_plt_entry): Allow weak undefined symbols.
10172
        (Symbol::needs_dynamic_reloc): Allow weak undefined symbols when
10173
        building shared libraries.
10174
        * testsuite/Makefile.am (weak_undef_nonpic_test): New target.
10175
        (weak_undef_file1_nonpic.o, weak_undef_file2_nonpic.o)
10176
        (weak_undef_lib_nonpic.so, alt/weak_undef_lib_nonpic.so): New targets.
10177
        * testsuite/Makefile.in: Rebuild.
10178
        * testsuite/weak_undef.h: New file.
10179
        * testsuite/weak_undef_file1.cc: Add extra test cases.
10180
        * testsuite/weak_undef_file2.cc: Likewise.
10181
        * testsuite/weak_undef_test.cc: Likewise.
10182
 
10183
2008-04-16  David S. Miller  
10184
 
10185
        * sparc.cc (Target_sparc::Scan): Change from struct to class.
10186
        Add issued_non_pic_error_ field.  Declare check_non_pic.
10187
        (Target_sparc::Scan::check_non_pic): New function.
10188
        (Target_sparc::Scan::local): Call check_non_pic as appropriate.
10189
        (Target_sparc::Scan::global): Likewise.
10190
 
10191
        * configure.ac (FN_PTRS_IN_SO_WITHOUT_PIC): Add sparc64.
10192
        * configure: Rebuild.
10193
 
10194
        * options.h (DEFINE_enable): New macro.
10195
        (new_dtags): New enable option.
10196
        (initfirst, interpose, loadfltr, nodefaultlib,
10197
        nodelete, nodlopen, nodump): New -z options.
10198
        * layout.cc (Layout:finish_dynamic_section): If new
10199
        dtags enabled, emit DT_RUNPATH.  Also, emit a
10200
        DT_FLAGS_1 containing any specified -z flags.
10201
 
10202
2008-04-16  Ian Lance Taylor  
10203
 
10204
        * copy-relocs.cc: New file.
10205
        * copy-relocs.h: New file.
10206
        * reloc.cc: Remove Copy_relocs code.
10207
        * reloc.h: Likewise.
10208
        * reloc-types.h (struct Reloc_types) [both versions]: Add
10209
        get_reloc_addend_noerror.
10210
        * output.h (class Output_data_reloc): Add
10211
        variants of add_global which take an addend which must be zero.
10212
        * i386.cc: Include "copy-relocs.h".
10213
        (class Target_i386): Change type of copy_relocs_ to variable,
10214
        update initializer.
10215
        (Target_i386::copy_reloc): Rewrite to pass to Copy_relocs class.
10216
        Change all callers.
10217
        (Target_i386::do_finalize_sections): Change handling of
10218
        copy_relocs_.
10219
        * sparc.cc: Include "copy-relocs.h".
10220
        (class Target_sparc): Change type of copy_relocs_ to variable,
10221
        update initializer.
10222
        (Target_sparc::copy_reloc): Rewrite to pass to Copy_relocs class.
10223
        Change all callers.
10224
        (Target_sparc::do_finalize_sections): Change handling of
10225
        copy_relocs_.
10226
        * x86_64.cc: Include "copy-relocs.h".
10227
        (class Target_x86_64): Change type of copy_relocs_ to variable,
10228
        update initializer.
10229
        (Target_x86_64::copy_reloc): Rewrite to pass to Copy_relocs
10230
        class.  Change all callers.
10231
        (Target_x86_64::do_finalize_sections): Change handling of
10232
        copy_relocs_.
10233
        * Makefile.am (CCFILES): Add copy-relocs.cc.
10234
        (HFILES): Add copy-relocs.h.
10235
 
10236
        * Makefile.in, aclocal.m4, testsuite/Makefile.in: Rebuild.
10237
 
10238
        * testsuite/script_test_4.sh: Permit leading zeroes.
10239
 
10240
2008-04-15  Ian Lance Taylor  
10241
 
10242
        * script-sections.cc (Script_sections::create_segments): Use
10243
        header_size_adjustment even when there is enough room for the
10244
        headers.
10245
        * testsuite/script_test_4.sh: New file.
10246
        * testsuite/script_test_4.t: New file.
10247
        * testsuite/Makefile.am (check_SCRIPTS): Add script_test_4.sh.
10248
        (check_DATA): Add script_test_4.stdout.
10249
        (MOSTLYCLEANFILES): Likewise.
10250
        (script_test_4): New target.
10251
        (script_test_4.stdout): New target.
10252
        * testsuite/Makefile.in: Rebuild.
10253
 
10254
        * sparc.cc: Add definitions for Output_data_plt_sparc class
10255
        constants.
10256
 
10257
2008-04-14  David S. Miller  
10258
 
10259
        * sparc.cc: New file.
10260
        * Makefile.am (TARGETSOURCES): Add sparc.cc
10261
        (ALL_TARGETOBJS): Add sparc.$(OBJEXT)
10262
        * configure.tgt: Document targ_extra_size and
10263
        targ_extra_big_endian.  Add entries for sparc-* and
10264
        sparc64-*.
10265
        * configure.ac: Handle targ_extra_size and
10266
        targ_extra_big_endian.
10267
        * Makefile.in: Rebuild.
10268
        * configure: Likewise.
10269
        * po/POTFILES.in: Likewise.
10270
        * po/gold.pot: Likewise.
10271
 
10272
2008-04-14  Ian Lance Taylor  
10273
 
10274
        * layout.cc (Layout::Layout): Initialize sections_are_attached_.
10275
        (Layout::get_output_section): Ignore SHF_WRITE and SHF_EXECINSTR
10276
        in the name/type/flags to section mapping.  Don't call
10277
        allocate_output_section.
10278
        (Layout::choose_output_section): Change parameter from adjust_name
10279
        to is_input_section.  Don't permit input sections after sections
10280
        are attached to segments.  Don't call allocate_output_section.
10281
        (Layout::layout_eh_frame): Call update_flags_for_input_section,
10282
        not write_enable_output_section.
10283
        (Layout::make_output_section): Don't push to
10284
        unattached_section_list_ nor call attach_to_segment.  Call
10285
        attach_section_to_segment if sections are attached.
10286
        (Layout::attach_sections_to_segments): New function.
10287
        (Layout::attach_section_to_segment): New function.
10288
        (Layout::attach_allocated_section_to_segment): Rename from
10289
        attach_to_segment.  Remove flags parameter.
10290
        (Layout::allocate_output_section): Remove function.
10291
        (Layout::write_enable_output_section): Remove function.
10292
        * layout.h (class Layout): Update for above changes.  Add new
10293
        field sections_are_attached_.
10294
        * output.h (Output_section::update_flags_for_input_section): New
10295
        function.
10296
        * output.cc (Output_section::add_input_section): Call
10297
        update_flags_for_input_section.
10298
        * gold.cc (queue_middle_tasks): Call attach_sections_to_segments.
10299
 
10300
2008-04-11  Cary Coutant  
10301
 
10302
        * i386.cc (Target_i386::got_mod_index_entry): Restore code previously
10303
        thought unnecessary.
10304
        * x86_64.cc (Target_x86_64::got_mod_index_entry): Likewise.
10305
 
10306
2008-04-11  Ian Lance Taylor  
10307
 
10308
        * output.h (class Output_section_data): Remove inline definition
10309
        of set_addralign.
10310
        * output.cc (Output_section_data::set_addralign): New function.
10311
 
10312
2008-04-11  Cary Coutant  
10313
 
10314
        Add support for TLS descriptors for i386 and x86_64.
10315
        * i386.cc (Target_i386::Relocate::tls_desc_gd_to_ie): New function.
10316
        (Target_i386::Relocate::tls_desc_gd_to_le): New function.
10317
        (Target_i386::Got_type): Add GOT_TYPE_TLS_NOFFSET and
10318
        GOT_TYPE_TLS_DESC.
10319
        (Target_i386::got_mod_index_entry): Remove unnecessary code.
10320
        (Target_i386::Scan::local): Implement R_386_TLS_GOTDESC and
10321
        R_386_TLS_DESC_CALL relocations.  Fix problem with initial-exec
10322
        relocations.
10323
        (Target_i386::Scan::global): Fix problem with GD-to-IE relaxation.
10324
        Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations;
10325
        Fix problem with initial-exec relocations.
10326
        (Target_i386::Relocate::relocate_tls): Likewise.
10327
        (Target_i386::Relocate::tls_gd_to_ie): Fix problem with GD-to-IE
10328
        relaxation.
10329
        * output.cc (Output_data_dynamic::Dynamic_entry::write): Add
10330
        support for section-plus-offset dynamic table entries.
10331
        * output.h (Output_data_dynamic::add_section_plus_offset): New function.
10332
        (Output_data_dynamic::Dynamic_entry): Add support for
10333
        section-plus-offset dynamic table entries.
10334
        (Output_data_dynamic::Classification): Likewise.
10335
        (Output_data_dynamic::classification_): Renamed offset_.
10336
        * x86_64.cc (Target_x86_64::Relocate::tls_desc_gd_to_ie): New function.
10337
        (Target_x86_64::Relocate::tls_desc_gd_to_le): New function.
10338
        (Target_x86_64::make_plt_section): New function.
10339
        (Target_x86_64::reserve_tlsdesc_entries): New function.
10340
        (Output_data_plt_x86_64::Output_data_plt_x86_64): Add new parameter.
10341
        (Output_data_plt_x86_64::reserve_tlsdesc_entry): New function.
10342
        (Output_data_plt_x86_64::has_tlsdesc_entry): New function.
10343
        (Output_data_plt_x86_64::get_tlsdesc_got_offset): New function.
10344
        (Output_data_plt_x86_64::get_tlsdesc_plt_offset): New function.
10345
        (Output_data_plt_x86_64::tlsdesc_plt_entry): New field.
10346
        (Output_data_plt_x86_64::set_final_data_size): Move out of line;
10347
        add extra PLT entry for TLS descriptors.
10348
        (Output_data_plt_x86_64::got_): New field.
10349
        (Output_data_plt_x86_64::tlsdesc_got_offset_): New field.
10350
        (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize new
10351
        fields.
10352
        (Output_data_plt_x86_64::do_write): Write extra PLT entry for TLS
10353
        descriptors.
10354
        (Target_x86_64::make_plt_entry): Factor out make_plt_section.
10355
        (Target_x86_64::got_mod_index_entry): Remove unnecessary code.
10356
        (Target_x86_64::Scan::local): Implement R_386_TLS_GOTDESC and
10357
        R_386_TLS_DESC_CALL relocations.
10358
        (Target_x86_64::Scan::global): Likewise.
10359
        (Target_x86_64::do_finalize_sections): Add dynamic table entries
10360
        for TLS descriptors.
10361
        (Relocate::relocate_tls): Fix problem with GD-to-IE relaxation.
10362
        Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations.
10363
        (Target_x86_64::Relocate::tls_gd_to_ie): Fix problem with
10364
        GD-to-IE relaxation.
10365
        * configure.ac: Export new conditional variables TLS_GNU2_DIALECT
10366
        and TLS_DESCRIPTORS.
10367
        * Makefile.in: Rebuild.
10368
        * configure: Rebuild.
10369
        * testsuite/Makefile.am (tls_shared_gd_to_ie_test): New target.
10370
        (tls_test_shared2.so): New target.
10371
        (tls_shared_gd_to_ie_test_SOURCES): New variable.
10372
        (tls_shared_gd_to_ie_test_DEPENDENCIES): New variable.
10373
        (tls_shared_gd_to_ie_test_LDFLAGS): New variable.
10374
        (tls_shared_gd_to_ie_test_LDADD): New variable.
10375
        (tls_shared_gnu2_gd_to_ie_test): New target.
10376
        (tls_test_gnu2.o, tls_test_file2_gnu2.o, tls_test_gnu2_shared2.so):
10377
        New targets.
10378
        (tls_shared_gnu2_gd_to_ie_test_SOURCES): New variable.
10379
        (ls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): New variable.
10380
        (tls_shared_gnu2_gd_to_ie_test_LDFLAGS): New variable.
10381
        (tls_shared_gnu2_gd_to_ie_test_LDADD): New variable.
10382
        (tls_shared_gnu2_test): New target.
10383
        (tls_test_gnu2_shared.so): New target.
10384
        (tls_shared_gnu2_test_SOURCES): New variable.
10385
        (tls_shared_gnu2_test_DEPENDENCIES): New variable.
10386
        (tls_shared_gnu2_test_LDFLAGS): New variable.
10387
        (tls_shared_gnu2_test_LDADD): New variable.
10388
        * testsuite/Makefile.in: Rebuild.
10389
        * testsuite/Makefile.
10390
 
10391
2008-04-11  Ian Lance Taylor  
10392
 
10393
        * testsuite/Makefile.am (justsyms_2r.o): Add dependency on
10394
        justsyms.t.
10395
        * testsuite/Makefile.in: Rebuild.
10396
 
10397
        * testsuite/script_test_2a.cc (script_test_string_a): Make 8 bytes
10398
        long.
10399
        * testsuite/script_test_2.cc (main): Adjust test.
10400
 
10401
2008-04-11  David S. Miller  
10402
            Ian Lance Taylor  
10403
 
10404
        * options.h (General_options): Add entries for '-Y' and
10405
        '-relax'.
10406
        * options.cc (General_options:finalize): If -Y was used, add those
10407
        entries to the library path instead of the default "/lib" and
10408
        "/usr/lib".
10409
 
10410
2008-04-11  David S. Miller  
10411
 
10412
        * testsuite/justsyms.t: Start at 0x100.
10413
        * testsuite/justsyms_1.cc: Adjust justsyms_string assertion.
10414
        * testsuite/script_test_2b.cc (script_test_string_b): Make 8 bytes
10415
        long.
10416
        * testsuite/script_test_2.cc: Adjust string and section length
10417
        checks.
10418
 
10419
2008-04-09  Ian Lance Taylor  
10420
 
10421
        PR gold/5996
10422
        * script-sections.cc (Sections_element::allocate_to_segment): Add
10423
        orphan parameter.
10424
        (Output_section_definition::allocate_to_segment): Likewise.
10425
        (Orphan_output_section::allocate_to_segment): Likewise.
10426
        (Script_sections::attach_sections_using_phdrs_clause): Don't
10427
        propagate non-PT_LOAD segments to orphan sections.
10428
        * testsuite/Makefile.am (script_test_3.stdout): Generate using
10429
        readelf rather than objdump.
10430
        * testsuite/script_test_3.sh: Adjust accordingly.  Test that
10431
        .interp section and PT_INTERP segment are the same size.
10432
        * testsuite/Makefile.in: Rebuild.
10433
 
10434
        * symtab.cc (Symbol_table::add_from_dynobj): Only look for weak
10435
        aliases for symbols defined in the same object.
10436
        * testsuite/Makefile.am (check_PROGRAMS): Add weak_alias_test.
10437
        (weak_alias_test_SOURCES): New variable.
10438
        (weak_alias_test_DEPENDENCIES): New variable.
10439
        (weak_alias_test_LDFLAGS): New variable.
10440
        (weak_alias_test_LDADD): New variable.
10441
        (weak_alias_test_1_pic.o, weak_alias_test_1.so): New targets.
10442
        (weak_alias_test_2_pic.o, weak_alias_test_2.so): New targets.
10443
        (weak_alias_test_3.o): New target.
10444
        (weak_alias_test_4_pic.o, weak_alias_test_4.so): New targets.
10445
        * testsuite/weak_alias_test_main.cc: New file.
10446
        * testsuite/weak_alias_test_1.cc: New file.
10447
        * testsuite/weak_alias_test_2.cc: New file.
10448
        * testsuite/weak_alias_test_3.cc: New file.
10449
 
10450
2008-04-08  Ian Lance Taylor  
10451
 
10452
        * options.h (class General_options): Add --noinhibit-exec option.
10453
        * main.cc (main): Check --noinhibit-exec.
10454
 
10455
        * options.h (class General_options): Define --wrap as a special
10456
        option.  Add wrap_symbols_ field.
10457
        (General_options::any_wrap_symbols): New function.
10458
        (General_options::is_wrap_symbol): New function.
10459
        * options.cc (General_options::parse_wrap): New function.
10460
        (General_options::General_options): Initialize wrap_symbols_.
10461
        * symtab.cc (Symbol_table::wrap_symbol): New function.
10462
        (Symbol_table::add_from_object): Handle --wrap.
10463
        * symtab.h (class Symbol_table): Declare wrap_symbol.
10464
        * target.h (Target::wrap_char): New function.
10465
        (Target::Target_info): Add wrap_char field.
10466
        * i386.cc (Target_i386::i386_info): Initialize wrap_char.
10467
        * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
10468
        * testsuite/testfile.cc (Target_test::test_target_info):
10469
        Likewise.
10470
 
10471
        * errors.cc (Errors::undefined_symbol): Mention symbol version if
10472
        there is one.
10473
 
10474
        * layout.h (class Layout): Add added_eh_frame_data_ field.
10475
        * layout.cc (Layout::Layout): Initialize new field.
10476
        (Layout::layout_eh_frame): Don't add eh_frame_data_ to .eh_frame
10477
        output section until we find a section we merged successfully.
10478
        * object.cc (Sized_relobj::check_eh_frame_flags): Don't require
10479
        that the size be non-zero.
10480
 
10481
        * merge.cc (Object_merge_map::get_output_offset): Remove inline
10482
        qualifier.
10483
 
10484
2008-04-08  Craig Silverstein  
10485
 
10486
        * configure.ac: Export new conditional variable HAVE_ZLIB.
10487
        * testsuite/Makefile.am (flagstest_o_specialfile): Condition
10488
        on HAVE_ZLIB.
10489
        (flagstest_o_specialfile_and_compress_debug_sections): Likewise.
10490
        * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
10491
 
10492
2008-04-07  Ian Lance Taylor  
10493
 
10494
        * version.cc (version_string): Set to "1.5".
10495
 
10496
        * x86_64.cc (Target_x86_64::Scan): Change from struct to class.
10497
        Add issued_non_pic_error_ field.  Declare check_non_pic.
10498
        (Target_x86_64::Scan::check_non_pic): New function.
10499
        (Target_x86_64::Scan::local): Call check_non_pic as appropriate.
10500
        (Target_x86_64::Scan::global): Likewise.
10501
 
10502
        * output.cc (Output_reloc::local_section_offset): Add
10503
        addend parameter.  Change caller.  Handle merge sections.
10504
        (Output_reloc::symbol_value): Change parameter type from
10505
        Address to Addend.  Don't add in the result of
10506
        local_section_offset, pass down the addend and use the returned
10507
        value.
10508
        * output.h (class Output_reloc): Add Addend typedef.
10509
        Update declarations of local_section_offset and symbol_value.
10510
        * testsuite/two_file_test_1.cc (t18): New function.
10511
        * testsuite/two_file_test_2.cc (f18): New function.
10512
        * testsuite/two_file_test_main.cc (main): Call t18.
10513
        * testsuite/two_file_test.h (t18, f18): Declare.
10514
 
10515
        * configure.ac: Don't test for objdump, c++filt, or readelf.
10516
        * testsuite/Makefile.am: Remove READELF and OBJDUMP_AND_CPPFILT
10517
        conditionals.
10518
        (TEST_READELF): New variable.
10519
        (TEST_OBJDUMP, TEST_CXXFILT, TEST_STRIP): New variables.
10520
        (check_PROGRAMS): Add two_file_strip_test.
10521
        (two_file_strip_test): New target.
10522
        (check_PROGRAMS): Add two_file_same_shared_strip_test.
10523
        (two_file_same_shared_strip_test_SOURCES): New variable.
10524
        (two_file_same_shared_strip_test_DEPENDENCIES): New variable.
10525
        (two_file_same_shared_strip_test_LDFLAGS): New variable.
10526
        (two_file_same_shared_strip_test_LDADD): New variable.
10527
        (two_file_shared_strip.so): New target.
10528
        (ver_test_2.syms, ver_test_4.syms): Use TEST_READELF.
10529
        (ver_test_5.syms, ver_test_7.syms): Likewise.
10530
        (ver_matching_test.stdout): Use TEST_OBJDUMP and TEST_CXXFILT.
10531
        (strip_test_3.stdout): Use TEST_OBJDUMP.
10532
        * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
10533
 
10534
2008-04-04  Cary Coutant  
10535
 
10536
        * symtab.h (Symbol::is_weak_undefined): New function.
10537
        (Symbol::is_strong_undefined): New function.
10538
        (Symbol::is_absolute): New function.
10539
        (Symbol::needs_plt_entry): Exclude weak undefined symbols.
10540
        (Symbol::needs_dynamic_reloc): Exclude weak undefined and
10541
        absolute symbols.
10542
        * testsuite/Makefile.am (check_PROGRAMS): Add weak_undef_test.
10543
        (weak_undef_test): New target.
10544
        * testsuite/Makefile.in: Rebuild.
10545
        * testsuite/weak_undef_file1.cc: New file.
10546
        * testsuite/weak_undef_file2.cc: New file.
10547
        * testsuite/weak_undef_test.cc: New file.
10548
 
10549
2008-04-03  Craig Silverstein  
10550
 
10551
        * compressed_output.h (class Output_compressed_section): Use
10552
        unsigned buffer.
10553
        * compressed_output.cc (zlib_compress): Use unsigned buffers,
10554
        add zlib header.
10555
        (zlib_compressed_suffix): Removed.
10556
        (Output_compressed_section::set_final_data_size): Use unsigned
10557
        buffers.
10558
        * testsuite/Makefile.am (flagstest_compress_debug_sections):
10559
        Fix linker invocation.
10560
        (flagstest_o_specialfile_and_compress_debug_sections):
10561
        Likewise.
10562
        * testsuite/Makefile.in: Regenerated.
10563
 
10564
2008-04-02  David S. Miller  
10565
 
10566
        *  dwarf_reader.cc (Sized_dwarf_line_info::read_header_prolog,
10567
        Sized_dwarf_line_info::process_one_opcode): Use Swap_unaligned.
10568
 
10569
2008-04-02  Craig Silverstein  
10570
 
10571
        * TODO: New file.
10572
 
10573
2008-04-02  Ian Lance Taylor  
10574
 
10575
        * fileread.cc (File_read::find_view): Add byteshift and vshifted
10576
        parameters.  Update for new key type to views_.  Change all
10577
        callers.
10578
        (File_read::read): Adjust for byteshift in returned view.
10579
        (File_read::add_view): New function, broken out of
10580
        find_and_make_view.
10581
        (File_read::make_view): New function, broken out of
10582
        find_and_make_view.
10583
        (File_read::find_or_make_view): Add offset and aligned
10584
        parameters.  Rewrite accordingly.  Change all callers.
10585
        (File_read::get_view): Add offset and aligned parameters.  Adjust
10586
        for byteshift in return value.
10587
        (File_read::get_lasting_view): Likewise.
10588
        * fileread.h (class File_read): Update declarations.
10589
        (class File_read::View): Add byteshift_ field.  Add byteshift to
10590
        constructor.  Add byteshift method.
10591
        * archive.h (Archive::clear_uncached_views): New function.
10592
        (Archive::get_view): Add aligned parameter.  Change all callers.
10593
        * object.h (Object::get_view): Add aligned parameter.  Change all
10594
        callers.
10595
        (Object::get_lasting_view): Likewise.
10596
 
10597
        * fileread.cc (File_read::release): Don't call clear_views if
10598
        there are multiple objects.
10599
        * fileread.h (File_read::clear_uncached_views): New function.
10600
        * archive.cc (Add_archive_symbols::run): Call clear_uncached_views
10601
        on the archive.
10602
 
10603
2008-03-31  Cary Coutant  
10604
 
10605
        Add thin archive support.
10606
        * archive.cc (Archive::armagt): New const.
10607
        (Archive::setup): Remove task parameter and calls to unlock.
10608
        (Archive::unlock_nested_archives): New function.
10609
        (Archive::read_header): Add nested_off parameter. Change
10610
        all callers.
10611
        (Archive::interpret_header): Likewise.
10612
        (Archive::include_all_members): Change to handle thin
10613
        archives.
10614
        (Archive::include_member): Likewise.
10615
        * archive.h (Archive::Archive): Add new parameters and
10616
        initializers.
10617
        (Archive::armagt): New const.
10618
        (Archive::setup): Remove task parameter.
10619
        (Archive::unlock_nested_archives): New function.
10620
        (Archive::read_header): Add nested_off parameter.
10621
        (Archive::interpret_header): Likewise.
10622
        (Archive::Nested_archive_table): New typedef.
10623
        (Archive::is_thin_archive_): New field.
10624
        (Archive::nested_archives_): New field.
10625
        (Archive::options_): New field.
10626
        (Archive::dirpath_): New field.
10627
        (Archive::task_): New field.
10628
        * readsyms.cc (Read_symbols::do_read_symbols): Add check
10629
        for thin archives.  Pass additional parameters to
10630
        Archive::Archive.  Unlock the archive file after calling
10631
        Archive::setup.
10632
 
10633
2008-03-29  Ian Lance Taylor  
10634
 
10635
        * symtab.cc (Symbol_table::do_define_as_constant): Don't force a
10636
        version symbol to be local.
10637
        * testsuite/ver_test_4.sh: New file.
10638
        * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_4.sh.
10639
        (check_DATA): Add ver_test_4.syms.
10640
        (ver_test_4.syms): New target.
10641
        * testsuite/Makefile.in: Rebuild.
10642
 
10643
        * output.cc
10644
        (Output_section::Input_section_sort_entry::has_priority): New
10645
        function.
10646
        (Output_section::Input_section_sort_entry::match_file_name): New
10647
        function.
10648
        (Output_section::Input_section_sort_entry::match_section_name):
10649
        Remove.
10650
        (Output_section::Input_section_sort_entry::match_section_name_prefix):
10651
        Remove.
10652
        (Output_section::Input_section_sort_entry::match_section_file):
10653
        Remove.
10654
        (Output_section::Input_section_sort_compare::operator()): Rewrite
10655
        using new Input_section_sort_entry functions.  Sort crtbegin and
10656
        crtend first.  Sort sections with no priority before sections with
10657
        a priority.
10658
        * testsuite/initpri1.c (d3): Check j != 4.
10659
        (cd5): New constructor/destructor function.
10660
        (main): Check j != 2.
10661
 
10662
        * symtab.cc (Symbol_table::add_from_object): If we don't use the
10663
        new symbol when resolving, don't call set_is_default.
10664
        * testsuite/ver_test_7.cc: New file.
10665
        * testsuite/ver_test_7.sh: New file.
10666
        * testsuite/Makefile.am (ver_test_7.so): New target.
10667
        (ver_test_7.o): New target.
10668
        (check_SCRIPTS): Add ver_test_7.sh.
10669
        (check_DATA): Add ver_test_7.syms.
10670
        (ver_test_7.syms): New target.
10671
 
10672
2008-03-28  Ian Lance Taylor  
10673
 
10674
        * layout.cc (Layout::layout): If we see an input section with a
10675
        name that needs sorting, set the must_sort flag for the output
10676
        section.
10677
        (Layout::make_output_section): If the name of the output section
10678
        indicates that it might require sorting, set the may_sort flag.
10679
        * output.h (Output_section::may_sort_attached_input_sections): New
10680
        function.
10681
        (Output_section::set_may_sort_attached_input_sections): New
10682
        function.
10683
        (Output_section::must_sort_attached_input_sections): New
10684
        function.
10685
        (Output_section::set_must_sort_attached_input_sections): New
10686
        function.
10687
        (class Output_section): Declare Input_section_sort_entry.  Define
10688
        Input_section_sort_compare.  Declare
10689
        sort_attached_input_sections.  Add new fields:
10690
        may_sort_attached_input_sections_,
10691
        must_sort_attached_input_sections_,
10692
        attached_input_sections_are_sorted_.
10693
        * output.cc (Output_section::Output_section): Initialize new
10694
        fields.
10695
        (Output_section::add_input_section): Add an entry to
10696
        input_sections_ if may_sort or must_sort are true.
10697
        (Output_section::set_final_data_size): Call
10698
        sort_attached_input_sections if necessary.
10699
        (Output_section::Input_section_sort_entry): Define new class.
10700
        (Output_section::Input_section_sort_compare::operator()): New
10701
        function.
10702
        (Output_section::sort_attached_input_sections): New function.
10703
        * configure.ac: Check whether the compiler supports constructor
10704
        priorities.  Define a CONSTRUCTOR_PRIORITY automake conditional.
10705
        * testsuite/initpri1.c: New file.
10706
        * testsuite/Makefile.am (check_PROGRAMS): Add initpri1 if
10707
        CONSTRUCTOR_PRIORITY.
10708
        (initpri1_SOURCES, initpri1_DEPENDENCIES): New variables.
10709
        (initpri1_LDFLAGS): New variable.
10710
        * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
10711
 
10712
2008-03-27  Ian Lance Taylor  
10713
 
10714
        * common.cc (Sort_commons::operator): Correct sorting algorithm.
10715
        * testsuite/common_test_1.c: New file.
10716
        * testsuite/Makefile.am (check_PROGRAMS): Add common_test_1.
10717
        (common_test_1_SOURCES): New variable.
10718
        (common_test_1_DEPENDENCIES): New variable.
10719
        (common_test_1_LDFLAGS): New variable.
10720
 
10721
        * symtab.cc (Symbol_table::add_from_object): Handle saw_undefined_
10722
        and commons_ correctly when NAME/VERSION does not override
10723
        NAME/NULL.
10724
        * testsuite/ver_test_6.c: New file.
10725
        * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_6
10726
        (ver_test_6_SOURCES, ver_test_6_DEPENDENCIES): New variables.
10727
        (ver_test_6_LDFLAGS, ver_test_6_LDADD): New variables.
10728
 
10729
2008-03-26  Ian Lance Taylor  
10730
 
10731
        * symtab.cc (Symbol_table::add_from_relobj): Don't set the version
10732
        of an undefined symbol from a version script.
10733
        * testsuite/Makefile.am (ver_test_5.so): New target.
10734
        (ver_test_5.o): New target.
10735
        (check_SCRIPTS): Add ver_test_5.sh.
10736
        (check_DATA): Add ver_test_5.syms.
10737
        (ver_test_5.syms): New target.
10738
        * testsuite/ver_test_5.cc: New file.
10739
        * testsuite/ver_test_5.script: New file.
10740
        * testsuite/ver_test_5.sh: New file.
10741
        * Makefile.in, testsuite/Makefile.in: Rebuild.
10742
 
10743
        PR gold/5986
10744
        Fix problems building gold with gcc 4.3.0.
10745
        * gold.h (TEMPLATE_ATTRIBUTE_PRINTF_4): Define.
10746
        (gold_error_at_location, gold_warning_at_location): Use it.
10747
        * configure.ac: Check whether we can compile and use a template
10748
        function with a printf attribute.
10749
        * x86_64.cc (Target_x86_64::do_code_fill): Swap out a 32-bit value
10750
        when jumping over bytes.
10751
        * object.cc: Instantiate Object::read_section_data.
10752
        * debug.h: Include 
10753
        * dwarf_reader.cc: Include 
10754
        * main.cc: Include .
10755
        * options.cc: Include .
10756
        * output.cc: Include .
10757
        * script.cc: Include .
10758
        * script.h: Include .
10759
        * symtab.cc: Include  and .
10760
        * target-select.cc: Include .
10761
        * version.cc: Include .
10762
        * testsuite/testmain.cc: Include .
10763
        * configure, config.in: Rebuild.
10764
 
10765
2008-03-25  Ian Lance Taylor  
10766
 
10767
        * options.cc: Include "../bfd/bfdver.h".
10768
        (options::help): Print bug reporting address.
10769
 
10770
        * version.cc (print_version): Adjust output for current value of
10771
        BFD_VERSION_STRING.
10772
 
10773
        * NEWS: New file.
10774
 
10775
        * options.cc (options::help): Print list of supported targets.
10776
        * target-select.h: Include .
10777
        (class Target_selector): Make machine_, size_, and is_big_endian_
10778
        fields const.  Add bfd_name_ and instantiated_target_ fields.
10779
        (Target_selector::Target_selector): Add bfd_name parameter.
10780
        (Target_selector::recognize): Make non-virtual, call
10781
        do_recognize.
10782
        (Target_selector::recognize_by_name): Make non-virtual, call
10783
        do_recognize_by_name.
10784
        (Target_selector::supported_names): New function.
10785
        (Target_selector::bfd_name): New function.
10786
        (Target_selector::do_instantiate_target): New pure virtual
10787
        function.
10788
        (Target_selector::do_recognize): New virtual function.
10789
        (Target_selector::do_recognize_by_name): New virtual function.
10790
        (Target_selector::instantiate_target): New private function.
10791
        (supported_target_names): Declare.
10792
        * target-select.cc (Target_selector::Target_selector): Update for
10793
        new parameter and fields.
10794
        (select_target_by_name): Check that the name matches before
10795
        calling recognize_by_name.
10796
        (supported_target_names): New function.
10797
        * i386.cc (class Target_selector_i386): Update Target_selector
10798
        constructor call.  Remove recognize and recognize_by_name.  Add
10799
        do_instantiate_target.
10800
        * x86_64.cc (class Target_selector_x86_64): Likewise.
10801
        * testsuite/testfile.cc (class Target_selector_test): Update for
10802
        changes to Target_selector.
10803
 
10804
        * README: Rewrite, with some notes on unsupported features.
10805
 
10806
2008-03-24  Cary Coutant  
10807
 
10808
        * i386.cc (Target_i386::Got_type): New enum declaration.
10809
        (Target_i386::Scan::local): Updated callers of Output_data_got
10810
        member functions.
10811
        (Target_i386::Scan::global): Likewise.
10812
        (Target_i386::Relocate::relocate): Likewise.
10813
        (Target_i386::Relocate::relocate_tls): Likewise.
10814
        * object.h (Got_offset_list): New class.
10815
        (Sized_relobj::local_has_got_offset): Added got_type parameter.
10816
        (Sized_relobj::local_got_offset): Likewise.
10817
        (Sized_relobj::set_local_got_offset): Likewise.
10818
        (Sized_relobj::local_has_tls_got_offset): Removed.
10819
        (Sized_relobj::local_tls_got_offset): Removed.
10820
        (Sized_relobj::set_local_tls_got_offset): Removed.
10821
        (Sized_relobj::Local_got_offsets): Changed to store a list of offsets.
10822
        * output.cc (Output_data_got::add_global): Added got_type parameter.
10823
        (Output_data_got::add_global_with_rel): Likewise.
10824
        (Output_data_got::add_global_with_rela): Likewise.
10825
        (Output_data_got::add_global_pair_with_rel): New function.
10826
        (Output_data_got::add_global_pair_with_rela): New function.
10827
        (Output_data_got::add_local): Added got_type parameter.
10828
        (Output_data_got::add_local_with_rel): Likewise.
10829
        (Output_data_got::add_local_with_rela): Likewise.
10830
        (Output_data_got::add_local_pair_with_rel): New function.
10831
        (Output_data_got::add_local_pair_with_rela): New function.
10832
        (Output_data_got::add_global_tls): Removed.
10833
        (Output_data_got::add_global_tls_with_rel): Removed.
10834
        (Output_data_got::add_global_tls_with_rela): Removed.
10835
        (Output_data_got::add_local_tls): Removed.
10836
        (Output_data_got::add_local_tls_with_rel): Removed.
10837
        (Output_data_got::add_local_tls_with_rela): Removed.
10838
        * output.h (Output_data_got::add_global): Added got_type parameter.
10839
        (Output_data_got::add_global_with_rel): Likewise.
10840
        (Output_data_got::add_global_with_rela): Likewise.
10841
        (Output_data_got::add_global_pair_with_rel): New function.
10842
        (Output_data_got::add_global_pair_with_rela): New function.
10843
        (Output_data_got::add_local): Added got_type parameter.
10844
        (Output_data_got::add_local_with_rel): Likewise.
10845
        (Output_data_got::add_local_with_rela): Likewise.
10846
        (Output_data_got::add_local_pair_with_rel): New function.
10847
        (Output_data_got::add_local_pair_with_rela): New function.
10848
        (Output_data_got::add_global_tls): Removed.
10849
        (Output_data_got::add_global_tls_with_rel): Removed.
10850
        (Output_data_got::add_global_tls_with_rela): Removed.
10851
        (Output_data_got::add_local_tls): Removed.
10852
        (Output_data_got::add_local_tls_with_rel): Removed.
10853
        (Output_data_got::add_local_tls_with_rela): Removed.
10854
        * resolve.cc (Symbol::override_base_with_special): Removed
10855
        reference to has_got_offset_ field.
10856
        * symtab.cc (Symbol::init_fields): Replaced initialization
10857
        of got_offset_ with got_offsets_.  Removed initialization
10858
        of has_got_offset_
10859
        * symtab.h (Symbol::has_got_offset): Aded got_type parameter.
10860
        (Symbol::got_offset): Likewise.
10861
        (Symbol::set_got_offset): Likewise.
10862
        (Symbol::has_tls_got_offset): Removed.
10863
        (Symbol::tls_got_offset): Removed.
10864
        (Symbol::set_tls_got_offset): Removed.
10865
        (Symbol::got_offset_): Removed.
10866
        (Symbol::tls_mod_got_offset_): Removed.
10867
        (Symbol::tls_pair_got_offset_): Removed.
10868
        (Symbol::got_offsets_): New field.
10869
        (Symbol::has_got_offset): Removed.
10870
        (Symbol::has_tls_mod_got_offset): Removed.
10871
        (Symbol::has_tls_pair_got_offset): Removed.
10872
        * x86_64.cc (Target_x86_64::Got_type): New enum declaration.
10873
        (Target_x86_64::Scan::local): Updated callers of Output_data_got
10874
        member functions.
10875
        (Target_x86_64::Scan::global): Likewise.
10876
        (Target_x86_64::Relocate::relocate): Likewise.
10877
        (Target_x86_64::Relocate::relocate_tls): Likewise.
10878
 
10879
2008-03-25  Ben Elliston  
10880
 
10881
        * yyscript.y: Fix spelling error in comment.
10882
 
10883
2008-03-24  Ian Lance Taylor  
10884
 
10885
        * options.h (class General_options): Define build_id option.
10886
        * layout.h (class Layout): Declare write_build_id, create_note,
10887
        create_build_id.  Add build_id_note_ member.
10888
        * layout.cc: Include , , ,
10889
        "libiberty.h", "md5.h", "sha1.h".
10890
        (Layout::Layout): Initialize eh_frame_data_,
10891
        eh_frame_hdr_section_, and build_id_note_.
10892
        (Layout::finalize): Call create_build_id.
10893
        (Layout::create_note): New function, broken out of
10894
        Layout::create_gold_note.
10895
        (Layout::create_gold_note): Call create_note.
10896
        (Layout::create_build_id): New function.
10897
        (Layout::write_build_id): New function.
10898
        (Close_task_runner::run): Call write_build_id.
10899
 
10900
        * x86_64.cc: Correct license to GPLv3.
10901
 
10902
2008-03-23  Ian Lance Taylor  
10903
 
10904
        * options.cc: Include "demangle.h".
10905
        (parse_optional_string): New function.
10906
        (parse_long_option): Handle takes_optional_argument.
10907
        (parse_short_option): Update dash_z initializer.  Handle
10908
        takes_optional_argument.
10909
        (General_options::General_options): Initialize do_demangle_.
10910
        (General_options::finalize): Set do_demangle_.  Handle demangling
10911
        style.
10912
        * options.h (parse_optional_string): Declare.
10913
        (struct One_option): Add optional_arg field.  Update constructor.
10914
        Update call constructor calls.  Add takes_optional_argument
10915
        function.
10916
        (DEFINE_var): Add optional_arg__ parameter.  Change all callers.
10917
        (DEFINE_optional_string): Define.
10918
        (General_options::demangle): Change from DEFINE_bool to
10919
        DEFINE_optional_string.
10920
        (General_options::no_demangle): New function.
10921
        (General_options::do_demangle): New function.
10922
        (General_options::set_do_demangle): New function.
10923
        (General_options::execstack_status_): Move definition to end of
10924
        class definition.
10925
        (General_options::static_): Likewise.
10926
        (General_options::do_demangle_): New field.
10927
        * object.cc (big_endian>::get_symbol_location_info): Call
10928
        Options::do_demangle, not Options::demangle.
10929
        * symtab.cc (demangle): Likewise.
10930
 
10931
2008-03-22  Ian Lance Taylor  
10932
 
10933
        * gold.h: Include  and 
10934
        * options.h: Include .
10935
 
10936
2008-03-21  Ian Lance Taylor  
10937
 
10938
        * 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.