Add support for thin archives.
[deliverable/binutils-gdb.git] / bfd / ChangeLog
CommitLineData
a8da6403
NC
12008-03-27 Cary Coutant <ccoutant@google.com>
2
3 Add support for thin archives.
4 * archive.c (_bfd_find_nested_archive): New function.
5 (get_extended_arelt_filename): Add origin parameter.
6 (_bfd_generic_read_ar_hdr_mag): Deal with extended name
7 combined with a file offset.
8 (append_relative_path): New function.
9 (_bfd_get_elt_at_filepos): Deal with external members and
10 nested archives.
11 (bfd_generic_openr_next_archived_file): Thin archives.
12 (bfd_generic_archive_p): Recognize new magic string.
13 (adjust_relative_path): New function.
14 (_bfd_construct_extended_name_table): Construct extended
15 names for thin archive members.
16 (_bfd_write_archive_contents): Emit new magic string, skip
17 copying files for thin archives.
18 * bfd-in.h (bfd_is_thin_archive): New macro.
19 * bfd.c (struct bfd): New fields for thin archives.
20 * libbfd-in.h (struct areltdata): New field for thin archives.
21 * opncls.c (bfd_close): Delete BFDs for nested archives.
22
c35e54f4
BS
232008-03-25 Bernd Schmidt <bernd.schmidt@analog.com>
24
25 * elf32-bfin.c (bfin_final_link_relocate): New function, wrapper around
26 _bfd_final_link_relocate that also handles R_pcrel24 relocs.
27 (bfinfdpic_relocate_section, bfin_relocate_section): Use it.
28
3348747a
NS
292008-03-25 Nathan Sidwell <nathan@codesourcery.com>
30
31 * elf32-arm.c (elf32_arm_final_link_relocate): Skip dynamic relocs
32 in vxworks tls_vars sections.
33 (allocate_dynrelocs, elf32_arm_size_dynamic_sections): Likewise.
34 * elf32-i386.c (allocate_dynrelocs,
35 elf_i386_size_dynamic_sections, elf_i386_relocate_section): Likewise.
36 * elf32-ppc.c (allocate_dynrelocs, ppc_elf_size_dynamic_sections,
37 ppc_elf_relocate_section): Likewise.
38 * elf32-sh.c (allocate_dynrelocs, sh_elf_size_dynamic_sections,
39 sh_elf_relocate_section): Likewise.
40 * elfxx-sparc.c (allocate_dynrelocs,
41 _bfd_sparc_elf_size_dynamic_sections,
42 _bfd_sparc_elf_relocate_section): Likewise.
43
a1f3c56e
AN
442008-03-21 Adam Nemet <anemet@caviumnetworks.com>
45
46 * elf.c (_bfd_elf_print_private_bfd_data): Use bfd_fprintf_vma to
47 print the values from the dynamic section.
48
51e38d68
RS
492008-03-20 Richard Sandiford <rsandifo@nildram.co.uk>
50
51 * elfxx-mips.c (MIPS_ELF_GNU_GOT1_MASK): New macro.
52 (_bfd_mips_elf_finish_dynamic_sections): Use it instead of 0x80000000.
53
c65be8d7
AM
542008-03-20 Alan Modra <amodra@bigpond.net.au>
55
56 * elf32-spu.c (spu_elf_create_sections): Remove output_bfd parameter.
57 (spu_elf_find_overlays, spu_elf_size_stubs): Likewise
58 (process_stubs, discover_functions, build_call_tree): Likewise.
59 (spu_elf_stack_analysis): Likewise.
60 (spu_elf_check_vma): Likewise. Move.
61 (struct call_info): Make "is_tail" a bitfield.
62 (insert_callee): Clear fun->start and set fun->is_func if we find
63 a non-tail call.
64 * elf32-spu.h (spu_elf_create_sections): Update prototype.
65 (spu_elf_find_overlays, spu_elf_size_stubs, spu_elf_check_vma): Ditto.
66
58c85be7
RW
672008-03-17 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
68
69 * aclocal.m4: Regenerate.
70 * configure: Likewise.
71 * Makefile.in: Likewise.
72
41bed6dd
L
732008-03-16 H.J. Lu <hongjiu.lu@intel.com>
74
75 PR ld/5789
76 PR ld/5943
77 * elf32-i386.c (elf_i386_relocate_section): Issue an error
78 for R_386_GOTOFF relocaton against undefined hidden/internal
79 symbols when building a shared object.
80
81 * elf64-x86-64.c (elf64_x86_64_relocate_section): Issue an
82 error for R_X86_64_PC8/R_X86_64_PC16/R_X86_64_PC32
83 relocaton against undefined hidden/internal symbols when
84 building a shared object.
85 (elf64_x86_64_finish_dynamic_symbol): Return FALSE when symbol
86 is referenced locally, but isn't defined in a regular file.
87
6ad2759d
L
882008-03-15 H.J. Lu <hongjiu.lu@intel.com>
89
90 * bfd-in.h (BFD_NO_FLAGS, HAS_RELOC, EXEC_P, HAS_LINENO,
91 HAS_DEBUG, HAS_SYMS, HAS_LOCALS, DYNAMIC, WP_TEXT, D_PAGED,
92 BFD_IS_RELAXABLE, BFD_TRADITIONAL_FORMAT, BFD_IN_MEMORY,
93 HAS_LOAD_PAGE, BFD_LINKER_CREATED): Moved to ...
94 * bfd.c: Here.
95
96 * bfd.c (bfd): Change cacheable, target_defaulted, opened_once,
97 mtime_set, no_export, output_has_begun and has_armap to bit
98 field.
99
100 * bfd-in2.h: Regenerated.
101
c04ea773
DJ
1022008-03-14 Daniel Jacobowitz <dan@codesourcery.com>
103
104 * cache.c (close_one): Remove mtime hack.
105
0f2830ff
L
1062008-03-14 H.J. Lu <hongjiu.lu@intel.com>
107
108 PR ld/5913
109 * elfxx-ia64.c (elfNN_ia64_tprel_base): Remove BFD_ASSERT.
110 (elfNN_ia64_dtprel_base): Likewise.
111 (elfNN_ia64_relocate_section): Go to missing_tls_sec if
112 tls_sec is NULL before calling elfNN_ia64_tprel_base or
113 elfNN_ia64_dtprel_base. Report unsupported TLS relocations.
114
fdba2fcd
AM
1152008-03-14 Alan Modra <amodra@bigpond.net.au>
116
117 * elf32-spu.c (process_stubs, spu_elf_relocate_section): Move
118 common code to..
119 (maybe_needs_stub): ..here, a new function that also omits stubs
120 for .eh_frame, and..
121 (needs_ovl_stub): ..here. Create stubs for labels in code section
122 referenced by switch jump table.
123 (spu_elf_find_overlays): Set htab->ovly_load and htab->ovly_return.
124 (enum _insn_type): Delete.
125 (enum _stub_type): New.
126 (count_stub, build_stub): Adjust.
127 (allocate_spuear_stubs, build_spuear_stubs): Adjust.
128
72de5009
AM
1292008-03-13 Alan Modra <amodra@bigpond.net.au>
130
131 * elf.c (_bfd_elf_make_section_from_shdr): Remove unnecessary cast.
132 (_bfd_elf_assign_file_position_for_section): Simplify align.
133 (_bfd_elf_init_reloc_shdr): Ensure shift expression wide enough
134 for sh_addralign.
135 (elf_fake_sections, swap_out_syms): Likewise.
136 * elflink.c (bfd_elf_final_link): Likewise.
137
50e7d84b
AM
1382008-03-13 Alan Modra <amodra@bigpond.net.au>
139
140 * Makefile.am: Run "make dep-am".
141 * Makefile.in: Regenerate.
142 * po/SRC-POTFILES.in: Regenerate.
143
2774f1a6
BS
1442008-03-12 Bernd Schmidt <bernd.schmidt@analog.com>
145
146 From Jie Zhang <jie.zhang@analog.com>
147 * elf32-bfin.c (struct bfinfdpic_relocs_info): Make got17m4,
148 gothilo, fd, fdgot17m4, fdgothilo, fdgoff17m4, fdgoffhilo,
149 gotoff, call and sym not bitfields.
150 (bfinfdpic_gc_sweep_hook): New function; update the relocation
151 information for the relocations of the section being removed.
152 (bfinfdpic_check_relocs): Accumulate the number of relocations
153 which set got17m4, gothilo, fd, fdgot17m4, fdgothilo, fdgoff17m4,
154 fdgoffhilo, gotoff, call and sym fields.
155 (elf_backend_gc_sweep_hook): Redefine for FD-PIC.
156
4fbb74a6
AM
1572008-03-12 Alan Modra <amodra@bigpond.net.au>
158
159 PR 5900
160 * elf-bfd.h: Include elf/internal.h after elf/external.h.
161 * elfcode.h (elf_swap_symbol_in): Map reserved shndx range.
162 (elf_swap_symbol_out): Adjust SHN_XINDEX test.
163 (elf_swap_ehdr_out): Mask SHN_LORESERVE and SHN_XINDEX to values
164 seen in external structs.
165 (valid_section_index_p): Delete.
166 (elf_object_p): Don't increment section numbers over reserved range.
167 Simplify test for valid sh_link, sh_info and e_shstrndx fields.
168 (elf_write_shdrs_and_ehdr): Mask SHN_LORESERVE and SHN_XINDEX to values
169 seen in external structs. Don't increment section numbers over
170 reserved range.
171 * elf.c (bfd_elf_sym_name): Remove redundant tests on st_shndx.
172 (bfd_section_from_shdr): Likewise.
173 (group_signature): Range check before accessing elf_elfsections.
174 (_bfd_elf_setup_sections): Likewise.
175 (bfd_section_from_shdr): Likewise.
176 (bfd_section_from_shdr): Don't increment section number over
177 reserved sections.
178 (assign_file_positions_for_non_load_sections): Likewise.
179 (assign_file_positions_except_relocs): Likewise.
180 (_bfd_elf_write_object_contents): Likewise.
181 (assign_section_numbers): Likewise. Adjust for changed SHN_*.
182 (prep_headers): Delete unused variable.
183 * elflink.c (bfd_elf_link_record_local_dynamic_symbol): Adjust
184 for changed SHN_* values.
185 (check_dynsym, elf_link_input_bfd): Likewise.
186 (bfd_elf_final_link): Likewise. Don't skip over reserved section
187 range.
188 (elf_fixup_link_order): Check that sh_link field is valid.
189 * elf-hppa.h (elf_hppa_add_symbol_hook): Make "index" unsigned.
190 * elf32-arm.c (elf32_arm_gc_mark_extra_sections): Range check before
191 accesssing elf_elfsections.
192 * elf32-avr.c (elf32_avr_size_stubs): Likewise.
193 * elf32-hppa.c (elf32_hppa_size_stubs): Likewise.
194 * elf32-m68hc1x.c (elf32_m68hc11_size_stubs): Likewise.
195 * elf64-hppa.c (elf64_hppa_check_relocs): Adjust for changed
196 SHN_* defines. Test for SHN_BAD return from
197 _bfd_elf_section_from_bfd_section
198
cb33740c
AM
1992008-03-12 Alan Modra <amodra@bigpond.net.au>
200
201 * elf-bfd.h (_bfd_elf_section_from_bfd_section): Update prototype.
202 * elf.c (_bfd_elf_section_from_bfd_section): Return unsigned int,
203 SHN_BAD on error.
204 (_bfd_elf_print_private_bfd_data): Test for SHN_BAD result from
205 _bfd_elf_section_from_bfd_section, not -1.
206 (swap_out_syms): Likewise.
207 * elflink.c (elf_link_add_object_symbols): Likewise.
208 (bfd_elf_get_bfd_needed_list): Likewise.
209 (bfd_elf_match_symbols_in_sections): Likewise.
210 (elf_link_add_object_symbols): Don't bother testing for symbols
211 using normal sections before calling bfd_section_from_elf_index.
212 (elf_link_input_bfd, bfd_elf_final_link): Likewise.
213 (bfd_elf_reloc_symbol_deleted_p): Likewise.
214 * elfcode.h (elf_slurp_symbol_table): Likewise.
215 * elf32-spu.c (get_sym_h): Likewise.
216 * elf32-xtensa.c (get_elf_r_symndx_section): Likewise.
217 * elf64-ppc.c (opd_entry_value, get_sym_h, ppc64_elf_edit_toc): Ditto.
218 * elf64-sh64.c (sh_elf64_get_relocated_section_contents): Likewise.
219
5f5fb9ec
AM
2202008-03-11 Alan Modra <amodra@bigpond.net.au>
221
222 * elf32-spu.c (spu_elf_relocate_section): Test identical conditions
223 to those in process_stubs for overlay symbols.
224
b1cc4aeb
PB
2252008-03-09 Paul Brook <paul@codesourcery.com>
226
227 * elf32-arm.c (elf32_arm_merge_eabi_attributes): Handle new
228 Tag_VFP_arch values.
229
12a0a0fd
PB
2302008-03-08 Paul Brook <paul@codesourcery.com>
231
232 * elf32-arm.c (insert_thumb_branch): Rewrite.
233 (elf32_thumb_to_arm_stub): Use new insert_thumb_branch.
234
39623e12
PB
2352008-03-07 Paul Brook <paul@codesourcery.com>
236
237 * elf32-arm.c (elf32_arm_howto_table_1): Fix bitmasks for MOVW and
238 MOVT relocations.
239 (elf32_arm_final_link_relocate): Fix off by one MOVW/MOVT sign
240 extension.
241 (elf32_arm_relocate_section): Handle MOVW and MOVT
242 relocations. Improve safety check for other weird relocations.
243 (elf32_arm_check_relocs): Only set h->needs_plt for branch/call
244 relocations.
245
77cba8a3 2462008-03-03 Bob Wilson <bob.wilson@acm.org>
50e7d84b 247
77cba8a3
BW
248 * xtensa-isa.c (xtensa_isa_num_pipe_stages): Make max_stage static and
249 only compute its value once.
50e7d84b 250
4a628337
AM
2512008-03-03 Alan Modra <amodra@bigpond.net.au>
252
253 * elf32-spu.c (struct got_entry): Add "addend" field.
254 (count_stub, build_stub): Use a new stub if relocation addend
255 differs from existing stubs for this symbol.
256 (process_stubs): Deal with addends.
257 (spu_elf_relocate_section, spu_elf_output_symbol_hook): Likewise.
258
d95edcac
L
2592008-03-02 H.J. Lu <hongjiu.lu@intel.com>
260
261 PR ld/5789
262 * elflink.c (_bfd_elf_symbol_refs_local_p): Always return true
263 for hidden and local symbols.
264
89200bf8
AM
2652008-03-03 Alan Modra <amodra@bigpond.net.au>
266
267 * elf32-ppc.c (allocate_dynrelocs): Discard relocs on
268 undefined symbols with internal or hidden visibility.
269 (ppc_elf_relocate_section): Likewise. Use SYMBOL_CALLS_LOCAL
270 rather than SYMBOL_REFERENCES_LOCAL on branches. Don't
271 return immediately on dynamic reloc error.
272
176a0d42
AM
2732008-03-01 Alan Modra <amodra@bigpond.net.au>
274
275 * elf64-ppc.c (build_plt_stub): Add relocs on plt call stubs
276 if emitrelocations.
277 (get_relocs): New function, split out from..
278 (ppc_build_one_stub): ..here. Add relocs on plt_branch stubs if
279 emitrelocations. Remove indx temp.
280 (ppc_size_one_stub): Count new stub relocs.
281 (ppc64_elf_size_stubs): Count new glink reloc.
282 (ppc64_elf_build_stubs): Emit glink reloc if emitrelocations.
283 (ppc64_elf_finish_dynamic_sections): Output glink relocs.
284 * elf32-ppc.c (ppc_elf_finish_dynamic_sections): Describe non-pic
285 glink code.
286
911f096e
AM
2872008-02-28 Alan Modra <amodra@bigpond.net.au>
288
289 * elf32-spu.c (mark_functions_via_relocs): Don't assume that
290 the "->start" pointer reaches to function origin, so that we
291 can handle functions split over more than two sections.
292 (build_call_tree): Likewise.
293 (pasted_function): Don't attempt to set fun->start back to the
294 function origin, just go back one section.
295
ad9563d6
CM
2962008-02-27 Catherine Moore <clm@codesourcery.com>
297
298 * elf.c ( _bfd_elf_print_private_bfd_data): Call
299 elf_backend_get_target_dtag if defined.
300 * elf32-mips.c (elf_backend_get_target_dtag): Define.
301 * elf64-mips.c: Likewise.
302 * elfn32-mips.c: Likewise.
303 * elfxx-mips.c (_bfd_mips_elf_get_target_dtag): New.
304 * elfxx-mips.h (_bfd_mips_elf_get_target_dtag): Declare.
305 * elf-bfd.h (elf_backend_get_target_dtag): Add prototype.
306 * elfxx-target.h (elf_backend_get_target_dtag): Add default.
911f096e 307 (elf_backend_data): Add elf_backend_get_target_dtag.
ad9563d6 308
625af618
AM
3092008-02-26 Alan Modra <amodra@bigpond.net.au>
310
311 * elf32-ppc.c (ppc_elf_check_relocs): Set pointer_equality_needed
312 for R_PPC_REL32 syms. Don't set non_got_ref on branch reloc syms,
313 and assume branch relocs are not dynamic when non-shared.
314 (readonly_dynrelocs): New function, split out from..
315 (maybe_set_textrel): ..here, renamed from old readonly_dynrelocs.
316 (ppc_elf_adjust_dynamic_symbol): For symbols generating plt entries,
317 clear non_got_ref..
318 (allocate_dynrelocs): ..and don't set u.def for undefined weak.
319 Do allow dynamic relocs on undefined symbols.
320 (ppc_elf_adjust_dynamic_symbol): Use readonly_dynrelocs.
321 (ppc_elf_relocate_section): Mirror dynamic reloc changes in
322 check_relocs.
323 (ppc_elf_finish_dynamic_symbol): Don't give a warning on weak
324 plt symbols needing pointer_equality_needed.
325
1cd81501
AM
3262008-02-23 Alan Modra <amodra@bigpond.net.au>
327
328 * elf32-ppc.c (ppc_elf_check_relocs): Revert non_got_ref change.
329
0eb4a168
AM
3302008-02-23 Alan Modra <amodra@bigpond.net.au>
331
332 * elf32-ppc.c (ppc_elf_copy_indirect_symbol): Copy
333 pointer_equality_needed.
334 (ppc_elf_check_relocs): Split out non-branch relocs from others
335 that might emit dynamic relocs. Set pointer_equality_needed
336 for their symbols. Don't set non_got_ref on branch reloc symbols.
337 (ppc_elf_hash_symbol): New function.
338 (elf_backend_hash_symbol): Define.
339 (ppc_elf_finish_dynamic_symbol): Handle pointer_equality_needed.
340 Error if pointer_equality_needed on weak plt symbol.
341
3ae181ee
L
3422008-02-22 H.J. Lu <hongjiu.lu@intel.com>
343
344 PR ld/5788
345 * elflink.c (elf_create_symbuf): Correct buffer size and
346 position.
347
34b5e0b2
NC
3482008-02-22 Nick Clifton <nickc@redhat.com>
349
350 PR 868
3ae181ee 351 * dwarf2.c: Revert previous patch. All of the allocate memory is
34b5e0b2 352 on an obstack which will be freed at some other time.
0eb4a168 353
515ef31d
NC
3542008-02-20 Nick Clifton <nickc@redhat.com>
355
356 PR 868
357 * libbfd.c (bfd_realloc_or_free): New function. Performs like
358 bfd_realloc, but if the (re)allocation fails, the pointer is
359 freed.
360 * libbfd-in.h: Prototype.
361 * libbfd.h: Regenerate.
362 * bfdio.c (bfd_bwrite): Use the new function.
363 (bfd_seek): Likewise.
364 * bfdwin.c:(bfd_get_file_window): Likewise.
365 * elf-strtab.c (_bfd_elf_strtab_add): Likewise.
366 * elf32-ppc.c (ppc_elf_relax_section): Likewise.
367 * elf32-xtensa.c (vsprintf_msg): Likewise.
368 * mach-o.c (bfd_mach_o_core_fetch_environment): Likewise.
369 * stabs.c (_bfd_link_seciton_stabs): Likewise.
370 * vms-misc.c (_bfd_vms_get_record): Likewise.
371 * vms-tir.c (check_section): Likewise.
372 * vms.c (vms_new_section_hook): Likewise.
373 * elf32-arm.c (elf32_arm_section_map_add): Check that the
374 allocation of sec_data->map succeeded before using it.
375 * elflink.c (elf_link_output_sym): Do not overwrite finfo->
376 symshndxbuf until it is known that the reallocation succeeded.
377
b42bf1e0
NC
3782008-02-20 Diogo de Carvalho Kraemer <diogo@kraemer.eng.br>
379 Nick Clifton <nickc@redhat.com>
380
381 PR 868
382 * dwarf2.c (read_abbrevs): Free the abbreviation table if we run
383 out of memory.
384 (decode_line_info): Free the line_info_table before returning a
385 failure result.
386 (_bfd_dwarf2_cleanup_debug_info): Free the abbreviation table.
387 Free the line table. Free the function table. Free the variable
388 table.
389
0a40daed
MK
3902008-02-17 Mark Kettenis <kettenis@gnu.org>
391
392 * elf.c (swap_out_syms): Avoid preprocessing directive within
393 macro arg.
394
3f001e84
JK
3952008-02-17 Jan Kratochvil <jan.kratochvil@redhat.com>
396
397 * elf.c (assign_file_positions_for_load_sections): Set the type of
398 PT_NOTE sections to SHT_NOTE.
399
37da76e8
AM
4002008-02-17 Ulrich Weigand <uweigand@de.ibm.com>
401
402 * simple.c (bfd_simple_get_relocated_section_contents): Set
403 link_info.output_bfd.
404
d74e4b29
NS
4052008-02-16 Nathan Sidwell <nathan@codesourcery.com>
406
407 * dwarf2.c (find_line): Don't trust debug information after an
408 unparseable compilation unit.
409
f856272b
AM
4102008-02-15 Alan Modra <amodra@bigpond.net.au>
411
412 PR 5765
413 * section.c (SEC_LINK_DUPLICATES): Correct. Renumber following flags.
414 * bfd-in2.h: Regenerate.
415
0c8d6e5c
AM
4162008-02-15 Alan Modra <amodra@bigpond.net.au>
417
418 * elf-bfd.h (enum elf_object_id): Add HPPA_ELF_TDATA.
419 * elf.c (bfd_elf_allocate_object): Don't check for already allocated
420 tdata.
421 * elf32-hppa.c (elf32_hppa_mkobject): New function.
422 (bfd_elf32_mkobject): Define.
423 * elf32-ppc.c (is_ppc_elf_target): Delete. Replace all uses with..
424 (is_ppc_elf): ..this new macro.
425 * elf64-ppc.c (is_ppc64_elf_target): Delete. Replace all uses with..
426 (is_ppc64_elf): ..this new macro.
427
f13a99db
AM
4282008-02-15 Alan Modra <amodra@bigpond.net.au>
429
430 * elflink.c: Replace all accesses to hash->creator field with
431 output_bfd->xvec.
432 * cofflink.c: Likewise.
433 * coff-h8300.c: Likewise.
434 * ecoff.c: Likewise.
435 * elf32-m68hc1x.c: Likewise.
436 * elf32-ppc.c: Likewise.
437 * elf64-alpha.c: Likewise.
438 * elf64-ppc.c: Likewise.
439 * elf64-sparc.c: Likewise.
440 * elfxx-mips.c: Likewise.
441 * i386linux.c: Likewise.
442 * m68klinux.c: Likewise.
443 * sparclinux.c: Likewise.
444 * sunos.c: Likewise.
445 * xcofflink.c: Likewise.
446 * linker.c: Likewise.
447 (_bfd_link_hash_table_init): Don't store creator.
448
e81819a5
NC
4492008-02-14 Peter Jones <pjones@redhat.com>
450
451 * efi-rtdrv-ia32.c: New file.
452 * efi-bsdrv-ia32.c: New file.
453 * efi-rtdrv-ia64.c: New file.
454 * efi-bsdrv-ia64.c: New file.
455 * efi-rtdrv-x86_64.c: New file.
456 * efi-bsdrv-x86_64.c: New file.
457 * peicode.h (pe_bfd_object_p): Add support for boot service and
458 runtime service drivers.
459 * libpei.h: Add macros for EFI formats, and rename the efi application
460 format macros to disambiguate.
461 * targets.c: Add bfd_target _vec externs.
462 (_bfd_tar): Add EFI _vec entries.
463 * config.bfd: Add EFI vectors into the selection routines.
464 * configure.in: add EFI _vec entries.
465 * configure: Regenerate.
466 * Makefile.am: Add EFI files.
467 * Makefile.in: Regenerate.
468
ab1579fd
NS
4692008-02-14 Nathan Sidwell <nathan@codesourcery.com>
470
471 * dwarf1.c (struct dwarf1_debug): Add syms member.
472 (alloc_dwarf1_unit, alloc_dwarf1_func): Check for out of memory.
473 (parse_line_table, _bfd_dwarf1_find_nearest_line): Relocate
474 section contents, check for out of memory.
475
476 * dwarf1.c (struct dwarf1_debug): Change data pointers to bfd_byte.
477 (parse_die): Change data pointers to bfd_byte.
478 (parse_line_table, parse_functions_in_unit): Likewise.
479
d40f3da9
AM
4802008-02-14 Alan Modra <amodra@bigpond.net.au>
481
482 * elflink.c (compute_bucket_count): Warning fixes.
483
f15557e4
DD
4842008-02-12 DJ Delorie <dj@redhat.com>
485
486 * elf32-iq2000.c (iq2000_elf_relocate_section): Adjust addend of
487 relocation pointing to local symbol in merged section.
488
489 * elf32-iq2000.c (iq2000_elf_relocate_offset16): New.
490 (iq2000_elf_relocate_section): Call it.
491
0ffa91dd
NC
4922008-02-12 Nick Clifton <nickc@redhat.com>
493
494 PR ld/5692
495 * elf-bfd.h (enum elf_object_id): New enum, used to identify
496 target specific extensions to the elf_obj_tdata structure.
497 (struct elf_obj_tdata): New field 'object_id'.
498 (elf_object_id, elf_program_header_size, elf_symtab_hdr): New
499 macros for accessing fields in the elf_obj_tdata structure.
500 (bfd_elf_mkobject): Rename to bfd_elf_make_generic_object.
501 (bfd_elf_allocate_object): New function.
502 * elf.c (bfd_elf_mkobject): Rename to bfd_elf_make_generic_object
503 and implement by calling bfd_elf_allocate_object.
504 (bfd_elf_allocate_object): New function: Allocates an
505 elf_obj_tdata structure, possibly with a target specific
506 extension.
507 * elfxx-target.h (bfd_elfNN_mkobject): Use
508 bfd_elf_make_generic_object as the default value.
509 * elf32-arm.c (elf32_arm_obj_tdata): Rename to elf_arm_obj_tdata
510 for consistency with other, similar structures.
511 (is_arm_elf): New macro. Checks a BFD to make sure that is an ARM
512 ELF bfd.
513 (elf32_arm_mkobject): Call bfd_elf_allocate_object.
514 (bfd_elf32_arm_vfp11_erratum_scan): Use is_arm_elf macro to check
515 the bfd being processed.
516 (bfd_elf32_arm_vfp11_fix_veneer_locations): Likewise.
517 (bfd_elf32_arm_set_target_relocs): Likewise.
518 (bfd_elf32_arm_final_link_relocate): Likewise.
519 (bfd_elf32_arm_copy_private_bfd_data): Likewise.
520 (bfd_elf32_arm_merge_eabi_attributes): Likewise.
521 (bfd_elf32_arm_merge_private_bfd_data): Likewise.
522 (bfd_elf32_arm_check_relocs): Likewise.
523 (bfd_elf32_arm_gc_mark_extra_sections): Likewise.
524 (bfd_elf32_arm_size_dynamic_sections): Likewise.
525 (bfd_elf32_arm_process_before_allocation): Use elf_symtab_hdr.
526 (bfd_elf32_arm_init_maps): Likewise.
527 (bfd_elf32_arm_final_link_relocate): Likewise.
528 (bfd_elf32_arm_relocate_section): Likewise.
529 (bfd_elf32_arm_gc_sweep_hook): Likewise.
530 (bfd_elf32_arm_check_relocs): Likewise.
531 (bfd_elf32_arm_size_dynamic_sections): Likewise.
532 * elf32-i386.c (elf_i386_mkobject): Call bfd_elf_allocate_object.
533 (is_i386_elf): New macro. Checks a BFD to make sure that is an x86
534 ELF bfd.
535 (elf_i386_check_relocs): Use is_i386_elf macro to check the bfd
536 being processed.
537 (elf_i386_size_dynamic_sections): Likewise.
538 (elf_i386_relocate_section): Likewise.
539 (elf_i386_check_relocs): Use elf_symtab_hdr.
540 (elf_i386_gc_sweep_hook): Likewise.
541 (elf_i386_size_dynamic_sections): Likewise.
542 (elf_i386_relocate_section): Likewise.
543 * elf32-ppc.c (ppc_elf_mkobject): Call bfd_elf_allocate_object.
544 (elf_create_pointer_linker_section): Use is_ppc_elf_target to
545 verify that the bfd before accessing target specific fields.
546 (ppc_elf_check_relocs): Likewise.
547 (elf_finish_pointer_linker_section): Likewise.
548 (elf_create_pointer_linker_section): Use elf_symtab_hdr.
549 (ppc_elf_check_relocs): Likewise.
550 (ppc_elf_gc_sweep_hook): Likewise.
551 (ppc_elf_tls_optimize): Likewise.
552 (ppc_elf_size_dynamic_sections): Likewise.
553 (ppc_elf_relax_section): Likewise.
554 (ppc_elf_relocate_section): Likewise.
555 * elf32-s390.c (struct elf_s390_obj_tdata): Add a comment
556 reminding programmers to keep this structure in sync with the one
557 defined in elf64-s390.c.
558 (elf_s390_mkobject): Call bfd_elf_allocate_object.
559 (is_s390_elf): New macro. Checks a BFD to make sure that is an s390
560 ELF bfd.
561 (elf_s390_check_relocs): Use is_s390_elf macro to check the bfd
562 being processed.
563 (elf_s390_size_dynamic_sections): Likewise.
564 (elf_s390_relocate_section): Likewise.
565 (elf_s390_check_relocs): Use elf_symtab_hdr.
566 (elf_s390_gc_sweep_hook): Likewise.
567 (elf_s390_size_dynamic_sections): Likewise.
0eb4a168 568 (elf_s390_relocate_section): Likewise.
0ffa91dd
NC
569 * elf32-sh.c (sh_elf_mkobject): Call bfd_elf_allocate_object.
570 (is_sh_elf): New macro. Checks a BFD to make sure that is an SH
571 ELF bfd.
572 (sh_elf_size_dynamic_sections): Use is_sh_elf macro to check the
573 bfd being processed.
574 (sh_elf_relocate_section): Likewise.
575 (sh_elf_check_relocs): Likewise.
576 (sh_elf_copy_private_data): Likewise.
577 (sh_elf_relax_section): Use elf_symtab_hdr.
578 (sh_elf_size_dynamic_sections): Likewise.
579 (sh_elf_relocate_section): Likewise.
580 (sh_elf_get_relocated_section_contents): Likewise.
581 (sh_elf_gc_sweep_hook): Likewise.
582 (sh_elf_check_relocs): Likewise.
583 * elf64-alpha.c (elf64_alpha_mkobject): Call bfd_elf_allocate_object.
584 (is_alpha_elf): New macro. Checks a BFD to make sure that is an
585 Alpha ELF bfd.
586 (elf64_alpha_create_got_section): Use is_alpha_elf macro to check
587 the bfd being processed.
588 (elf64_alpha_create_dynamic_section): Likewise.
589 (elf64_alpha_check_relocs): Likewise.
590 (elf64_alpha_size_got_sections): Likewise.
591 (elf64_alpha_relax_section): Likewise.
592 (elf64_alpha_relocate_section): Likewise.
593 (elf64_alpha_final_link): Likewise.
594 (elf64_alpha_check_relocs): Use elf_symtab_hdr.
595 (elf64_alpha_relax_section): Likewise.
596 (elf64_alpha_relocate_section_r): Likewise.
597 (elf64_alpha_relocate_section): Likewise.
598 * elf64-ppc.c (ppc64_elf_mkobject): Call bfd_elf_allocate_object.
599 (ppc64_elf_check_relocs): Use is_ppc64_elf_target to check the bfd
600 being processed.
601 (opd_entry_value): Likewise.
602 (allocate_dynrelocs): Likewise.
603 (ppc64_elf_relocate_section): Likewise.
604 (ppc64_elf_check_relocs): Use elf_symtab_hdr.
605 (opd_entry_value): Likewise.
606 (ppc64_elf_gc_sweep_hook): Likewise.
607 (get_sym_h): Likewise.
608 (ppc64_elf_edit_opd): Likewise.
609 (ppc64_elf_tls_optimize): Likewise.
610 (ppc64_elf_edit_toc): Likewise.
611 (ppc64_elf_size_dynamic_sections): Likewise.
612 (toc_adjusting_stub_needed): Likewise.
613 (ppc64_elf_size_stubs): Likewise.
614 (ppc64_elf_relocate_section): Likewise.
615 * elf64-s390.c (struct elf_s390_obj_tdata): Add a comment
616 reminding programmers to keep this structure in sync with the one
617 defined in elf32-s390.c.
618 (elf_s390_mkobject): Call bfd_elf_allocate_object.
619 (is_s390_elf): New macro. Checks a BFD to make sure that is an s390
620 ELF bfd.
621 (elf_s390_check_relocs): Use is_s390_elf macro to check the bfd
622 being processed.
623 (elf_s390_size_dynamic_sections): Likewise.
0eb4a168 624 (elf_s390_relocate_section): Likewise.
0ffa91dd
NC
625 (elf_s390_check_relocs): Use elf_symtab_hdr.
626 (elf_s390_gc_sweep_hook): Likewise.
627 (elf_s390_size_dynamic_sections): Likewise.
628 (elf_s390_relocate_section): Likewise.
629 * elf64-x86_64.c (elf64_x86_64_mkobject): Call bfd_elf_allocate_object.
630 (is_x86_64_elf): New macro. Checks a BFD to make sure that is an
631 x86_64 ELF bfd.
632 (elf64_x86_64_check_relocs): Use is_x86_64_elf macro to check the bfd
633 being processed.
634 (elf64_x86_64_size_dynamic_sections): Likewise.
635 (elf64_x86_64_relocate_section): Likewise.
636 (elf64_x86_64_check_relocs): Use elf_symtab_hdr.
637 (elf64_x86_64_gc_sweep_hook): Likewise.
638 (elf64_x86_64_size_dynamic_sections): Likewise.
639 (elf64_x86_64_relocate_section): Likewise.
640 * elfxx-sparc.c (_bfd_sparc_elf_mkobject): Call bfd_elf_allocate_object.
641 (is_sparc_elf): New macro. Checks a BFD to make sure that is a Sparc
642 ELF bfd.
643 (_bfd_sparc_elf_check_relocs): Use is_sparc_elf macro to check the
644 bfd being processed.
645 (_bfd_sparc_elf_gc_sweep_hook): Likewise.
646 (_bfd_sparc_elf_size_dynamic_sections): Likewise.
647 (_bfd_sparc_elf_check_relocs): Use elf_symtab_hdr.
648 (_bfd_sparc_elf_gc_sweep_hook): Likewise.
649 (_bfd_sparc_elf_size_dynamic_sections): Likewise.
0eb4a168 650 (_bfd_sparc_elf_relocate_section): Likewise.
0ffa91dd 651
be4291f1
AM
6522008-02-12 Alan Modra <amodra@bigpond.net.au>
653
654 PR 5303, 5755
655 * arange-set.c: Delete.
656 * arange-set.h: Delete.
657 * dwarf2.c: Revert 2007-09-21 changes.
658 * Makefile.am: Likewise.
659 * Makefile.in: Regenerate.
660 * po/SRC-POTFILES.in: Regenerate.
661
7a84e3da
BS
6622008-02-11 Bernd Schmidt <bernd.schmidt@analog.com>
663
664 * elf32-bfin.c (bfin_relocate_section): Set up dynobj before using it
665 if necessary.
666 (elf32_bfin_merge_private_bfd_data): Simplify, and ensure object type
667 mismatches are detected.
668
ca889129
BS
669 * elf32-bfin.c (bfinfdpic_relocate_section): Take more care not to
670 emit invalid relocs or rofixup entries for deleted .eh_frame entries.
671
662ed161
DJ
6722008-02-11 Daniel Jacobowitz <dan@codesourcery.com>
673
674 * cache.c (cache_bread): Set bfd_error_file_truncated if EOF
675 was reached.
676 * srec.c (srec_scan): Calculate the checksum. Complain on mismatch.
677
2e444bea
AM
6782008-02-07 Alan Modra <amodra@bigpond.net.au>
679
680 * elf32-spu.c (spu_elf_size_stubs): Revert 2008-01-28 doubling
681 of _ovly_buf_table size.
682 (spu_elf_build_stubs): Use low bit of .size as "present" bit.
683 Adjust initialisations relating to _ovly_buf_table.
684
d9ab3f29 6852008-02-04 Bob Wilson <bob.wilson@acm.org>
0eb4a168 686
d9ab3f29
BW
687 * elf32-xtensa (elf_xtensa_relocate_section): After finding an invalid
688 relocation, do not continue processing it. Ignore R_XTENSA_ASM_EXPAND
689 relocations against dynamic symbols.
690 (elf_xtensa_finish_dynamic_sections): Do not fail if there is no
691 .xt.lit section.
0eb4a168 692
bb8541b9
L
6932008-02-04 Kai Tietz <kai.tietz@onevision.com>
694 H.J. Lu <hongjiu.lu@intel.com>
695
696 PR 5715
697 * warning.m4: Enable -Wno-format by default when using gcc on
698 mingw.
699 * configure: Regenerated.
700
6f179bd0
AN
7012008-02-04 Adam Nemet <anemet@caviumnetworks.com>
702
703 * archures.c: Update copyright.
704 (bfd_mach_mips_octeon): New macro.
705 * bfd-in2.h: Regenerate.
706 * elfxx-mips.c (_bfd_elf_mips_mach): Handle Octeon.
707 (mips_set_isa_flags): Likewise.
708 (mips_mach_extensions): Add Octeon.
709 * cpu-mips.c: Update copyright.
710 (I_mipsocteon): New enum constant.
711 (arch_info_struct): Add Octeon.
712
d16c7321
AM
7132008-02-04 Alan Modra <amodra@bigpond.net.au>
714
715 * elf32-spu.c (spu_elf_relocate_section): Correct return type.
716 Return error status on unexpected relocation errors.
717
e44a2c9c
AM
7182008-02-04 Alan Modra <amodra@bigpond.net.au>
719
720 PR ld/5692
721 * elf.c (bfd_elf_get_elf_syms): Revert 2008-01-31. Instead abort
722 on non-ELF input.
723 * elf32-arm.c (elf32_arm_size_dynamic_sections): Skip glue
724 processing on non-ELF input.
725
f8a52b59
BW
7262008-01-31 Marc Gauthier <marc@tensilica.com>
727
728 * config.bfd (xtensa*-*-*): Recognize processor variants.
729
b7c368d0
NC
7302008-01-31 Nick Clifton <nickc@redhat.com>
731
732 PR ld/5692
733 * elf.c (bfd_elf_get_elf_syms): Check the return value of
734 get_elf_backend_data.
735
00b2bfc1
NC
7362008-01-28 Fabian Groffen <grobian@gentoo.org>
737
738 * config.bfd (x86_64-*-solaris2): Add support for this target.
739
47f6dab9
AM
7402008-01-28 Alan Modra <amodra@bigpond.net.au>
741
742 Rewrite SPU overlay handling code. Put overlay calls stubs in the
743 overlays where possible. Use a faster call stub, or optionally at
744 compile time, a more compact stub. Double size of _ovly_buf_table
745 so that low bit of _ovly_table.buf can be used as a "present" bit.
746 Reserve an extra _ovly_table entry for index zero.
747 * elf32-spu.c: (struct spu_link_hash_table): Delete a number of fields,
748 add new ones.
749 (struct got_entry): New.
750 (struct spu_stub_hash_entry): Delete.
751 (stub_hash_newfunc, spu_elf_link_hash_table_free): Delete.
752 (spu_elf_link_hash_table_create): Adjust for struct changes.
753 (spu_stub_name): Delete.
754 (spu_elf_find_overlays): Don't track sections from overlay regions.
755 Instead set ovl_buf number in spu elf section data. Error if
756 overlays in one region don't start at the same address. Adjust
757 for struct _spu_elf_section_data changes.
758 (SIZEOF_STUB1, SIZEOF_STUB2, ILA_79, ILA_78): Delete.
759 (OVL_STUB_SIZE, BRSL, LNOP, ILA): Define.
760 (needs_ovl_stub): Adjust for struct _spu_elf_section_data changes.
761 (enum _insn_type): New.
762 (count_stub, build_stub): New functions.
763 (allocate_spuear_stubs): Use count_stub.
764 (build_spuear_stubs): Use build_stub.
765 (populate_stubs, sort_stubs): Delete.
766 (process_stubs): New function.
767 (write_one_stub): Delete.
768 (spu_elf_size_stubs, spu_elf_build_stubs): Rewrite.
769 (alloc_stack_info): Adjust for struct _spu_elf_section_data changes.
770 (maybe_insert_function, check_function_ranges): Likewise.
771 (find_function, pasted_function, build_call_tree): Likewise.
772 (spu_elf_stack_analysis, spu_elf_modify_segment_map): Likewise.
773 (spu_elf_modify_program_headers): Likewise.
774 (interesting_section): Detect stub sections differently. Delete
775 htab param, adjust all callers.
776 (spu_elf_relocate_section): Rewrite stub handling.
777 (spu_elf_output_symbol_hook): Likewise.
778 (bfd_elf32_bfd_link_hash_table_free): Delete.
779 * elf32-spu.h (struct _spu_elf_section_data): Move input-only and
780 output-only fields into a union. Add ovl_buf.
781 (spu_elf_size_stubs, spu_elf_build_stubs): Update prototypes.
782
c006d697
DD
7832008-01-25 DJ Delorie <dj@redhat.com>
784
785 * elf32-m32c.c (_bfd_m32c_elf_eh_frame_address_size): New.
786
6e3d6dc1
NC
7872008-01-25 Kai Tietz <kai.tietz@onevision.com>
788
789 * bfd-in.h: Add mingw I64 support.
790 * bfd-in2.h: Regenerated.
791 * bfd.c: (bfd_get_sign_extend_vma): Add pe-x86-64 and pei-x86-64.
792
fbb3bb98
AM
7932008-01-21 Alan Modra <amodra@bigpond.net.au>
794
795 PR 4453
796 * format.c (bfd_check_format_matches): Don't accept archives as
797 fully matching unless they have a map.
798
297d8443
AM
7992008-01-21 Alan Modra <amodra@bigpond.net.au>
800
801 * elflink.c (_bfd_elf_link_output_relocs): Correct error return.
802
66cd82b5
AM
8032008-01-21 Alan Modra <amodra@bigpond.net.au>
804
805 * ecoff.c (_bfd_ecoff_archive_p): Delete.
806 * libecoff.h (_bfd_ecoff_archive_p): Delete.
807 * coff-alpha.c (ecoffalpha_little_vec): Use bfd_generic_archive_p.
808 * coff-mips.c (ecoff_little_vec, ecoff_big_vec): Likewise.
809 (ecoff_biglittle_vec): Likewise.
810
85f7a9cb
AM
8112008-01-19 Alan Modra <amodra@bigpond.net.au>
812
813 PR 5646
814 * elf64-ppc.c (ppc64_elf_tls_optimize): Ensure htab->tls_get_addr
815 non-NULL before dereferencing.
816
74f0fb50
AM
8172008-01-15 Alan Modra <amodra@bigpond.net.au>
818
819 PR 5604
820 * elf-bfd.h (struct elf_backend_data): Add gc_keep. Remove param
821 names from others.
822 (_bfd_elf_gc_keep): Declare.
823 * elfxx-target.h (elf_backend_gc_keep): Define.
824 (elfNN_bed): Init new field.
825 * elflink.c (_bfd_elf_gc_keep): New function.
826 (bfd_elf_gc_sections): Call gc_keep.
827 * elf64-ppc.c (elf_backend_gc_keep): Define.
828 (struct _ppc64_elf_section_data): Move .opd related fields to
829 a struct so they don't occupy the same storage. Adjust accesses
830 throughout file.
831 (ppc64_elf_gc_keep): New function, split out from..
832 (ppc64_elf_gc_mark_hook): ..here. Don't call _bfd_elf_gc_mark
833 to mark .opd section, just set gc_mark.
834 (ppc64_elf_edit_opd): Remove no_opd_opt parm. Don't set opd->adjust
835 unless we are changing .opd. Test non-NULL opd->adjust at all
836 accesses throughout file.
837 * elf64-ppc.h (ppc64_elf_edit_opd): Update prototype.
838
787daa7a
AM
8392008-01-15 Alan Modra <amodra@bigpond.net.au>
840
841 * bfd-in.h (BFD_HOST_LONG_LONG): Delete.
842 * bfd-in2.h: Regenerate.
843
7dda2462
TG
8442008-01-11 Tristan Gingold <gingold@adacore.com>
845 Eric Botcazou <ebotcazou@adacore.com>
846
847 * elf32-ppc.c (ppc_elf_gc_sweep_hook): Exit early if generating a
848 relocatable.
849 * elf32-arm.c (elf32_arm_gc_sweep_hook): Likewise.
850 * elf32-cris.c (cris_elf_gc_sweep_hook): Likewise.
851 * elf32-hppa.c (elf32_hppa_gc_sweep_hook): Likewise.
852 * elf32-i386.c (elf_i386_gc_sweep_hook): Likewise.
853 * elf32-m32r.c (m32r_elf_gc_sweep_hook): Likewise.
854 * elf32-m68k.c (elf_m68k_gc_sweep_hook): Likewise.
855 * elf32-s390.c (elf_s390_gc_sweep_hook): Likewise.
856 * elf32-sh.c (sh_elf_gc_sweep_hook): Likewise.
857 * elf32-vax.c (elf_vax_gc_sweep_hook): Likewise.
858 * elf32-xtensa.c (elf_xtensa_gc_sweep_hook): Likewise.
859 * elf64-x86-64.c (elf64_x86_64_gc_sweep_hook): Likewise.
860 * elf64-s390.c (elf_s390_gc_sweep_hook): Likewise.
861 * elf64-ppc.c (ppc64_elf_gc_sweep_hook): Likewise.
862 * elfxx-mips.c (_bfd_mips_elf_gc_sweep_hook): Likewise.
863 * elfxx-sparc.c (_bfd_sparc_elf_gc_sweep_hook): Likewise.
864 * elflink.c (bfd_elf_gc_sections): Do not punt on relocatable output
865 or executable output with relocations.
866
d2e2e649
NC
8672008-01-09 Nick Clifton <nickc@redhat.com>
868
869 PR gas/5552
870 * elf32-fr30.c (fr30_elf_howto_table): Set partial_inplace field
871 to FALSE for all relocs.
872
184d07da
RS
8732008-01-09 Richard Sandiford <rsandifo@nildram.co.uk>
874
875 PR ld/5526
876 * elf-bfd.h (eh_cie_fde): Add u.cie.u.full_cie and u.cie.merged
877 fields. Rename u.cie.u.merged to u.cie.u.merged_with.
878 (eh_frame_sec_info): Add a cies field.
879 (eh_frame_hdr_info): Add a merge_cies field.
880 * elf-eh-frame.c (cie): Add a reloc_index member to the personality
881 union.
882 (_bfd_elf_begin_eh_frame_parsing): Set hdr_info->merge_cies instead
883 of hdr_info->cies.
884 (_bfd_elf_parse_eh_frame): Remove tmp_cie. Ccreate an array of
885 cie structures in all cases and use it instead of extended_cies.
886 If merging, store the cie array in sec_info->cies and point each
887 CIE's eh_fde_cie at the associated element. Do not try to
888 calculate the value of the personality routine here; record the
889 offset of the relocation instead. Do not merge CIEs here.
890 (_bfd_elf_end_eh_frame_parsing): Do not free hdr_info->cies here...
891 (_bfd_elf_discard_section_eh_frame_hdr): ...do it here instead.
892 (_bfd_elf_gc_mark_fdes): Mark the original (unmerged) CIE.
893 (find_merged_cie): New function.
894 (_bfd_elf_gc_mark_fdes): Use it. Free sec_info->cies.
895
780b2360
NC
8962008-01-07 Nick Clifton <nickc@redhat.com>
897
898 PR binutils/5535
899 * vms.c (vms_close_and_cleanup): Check for the presence of a
900 vms_private_data_struct before examining any of its fields.
901
ace79388
L
9022008-01-07 H.J. Lu <hongjiu.lu@intel.com>
903
904 PR ld/5522
905 * elflink.c (elf_link_input_bfd): Don't write out a section if
906 its output section is marked with SEC_NEVER_LOAD.
907
6c7ac64e 908For older changes see ChangeLog-2007
56882138
AM
909\f
910Local Variables:
911mode: change-log
912left-margin: 8
913fill-column: 74
914version-control: never
915End:
This page took 0.454267 seconds and 4 git commands to generate.