x86: Move x86-specific linker options to elf_linker_x86_params
[deliverable/binutils-gdb.git] / ld / ChangeLog
1 2019-04-06 H.J. Lu <hongjiu.lu@intel.com>
2
3 * Makefile.am (ELF_X86_DEPS): Add $(srcdir)/emultempl/elf-x86.em.
4 (eelf_i386_sol2.c): Also depend on
5 $(srcdir)/emultempl/solaris2-x86.em.
6 (eelf_x86_64_sol2.c): Likewise.
7 * Makefile.in: Regenerated.
8 * emulparams/call_nop.sh: Set x86-specific linker options via
9 params.
10 * emulparams/cet.sh: Likewise.
11 * emulparams/reloc_overflow.sh: Likewise.
12 * emulparams/elf32_x86_64.sh (EXTRA_EM_FILE): New. Set to
13 "elf-x86".
14 * emulparams/elf_i386.sh: Likewise.
15 * emulparams/elf_i386_be.sh: Likewise.
16 * emulparams/elf_i386_chaos.sh: Likewise.
17 * emulparams/elf_i386_ldso.sh: Likewise.
18 * emulparams/elf_i386_vxworks.sh: Likewise.
19 * emulparams/elf_iamcu.sh: Likewise.
20 * emulparams/elf_k1om.sh: Likewise.
21 * emulparams/elf_l1om.sh: Likewise.
22 * emulparams/elf_x86_64.sh: Likewise.
23 * emulparams/elf_i386_sol2.sh (EXTRA_EM_FILE): Changed to
24 "solaris2-x86".
25 * emulparams/elf_x86_64_sol2.sh: Likewise.
26 * emultempl/elf-x86.em: New file.
27 * emultempl/solaris2-x86.em: Likewise.
28 * emultempl/elf32.em (gld${EMULATION_NAME}_before_parse): Don't
29 set link_info.call_nop_byte.
30
31 2019-04-05 Alan Modra <amodra@gmail.com>
32
33 * testsuite/ld-powerpc/tlsexe32.d: Remove trailing spaces.
34 * testsuite/ld-powerpc/tlsopt5.d: Likewise.
35 * testsuite/ld-powerpc/tlsopt5_32.d: Likewise.
36
37 2019-04-03 Alan Modra <amodra@gmail.com>
38
39 PR 24411
40 ldlex.l (SYMBOLNAMECHAR1): Don't match '/'.
41 (<EXPRESSION>"/DISCARD/"): New.
42
43 2019-04-03 Alan Modra <amodra@gmail.com>
44
45 * ldlex.l: Formatting.
46 (CMDFILENAMECHAR, CMDFILENAMECHAR1): Delete.
47 (FILENAMECHAR1, SYMBOLNAMECHAR1, FILENAMECHAR, WILDCHAR),
48 (NOCFILENAMECHAR): Remove duplicate chars. Reorder.
49 (SYMBOLCHARN): Likewise. Rename to SYMBOLNAMECHAR.
50 (<INPUTLIST>"$SYSROOT"..): Delete rule.
51
52 2019-03-29 Max Filippov <jcmvbkbc@gmail.com>
53
54 * testsuite/ld-xtensa/relax-undef-weak-pie-export-dynamic.d: New
55 test definition.
56 * testsuite/ld-xtensa/xtensa.exp
57 (relax-undef-weak-pie-export-dynamic): Add new test.
58
59 2019-03-26 Martin Liska <mliska@suse.cz>
60
61 * plugin.c (get_symbols): Add lto_kind_str, lto_resolution_str,
62 lto_visibility_str and use then to inform about plugin-symbols.
63 * testsuite/ld-plugin/plugin-12.d: Adjust expected pattern.
64
65 2019-03-25 Tamar Christina <tamar.christina@arm.com>
66
67 * testsuite/ld-arm/jump-reloc-veneers-cond-long.d: Update disassembly.
68 * testsuite/ld-arm/jump-reloc-veneers-long.d: Update disassembly.
69
70 2019-03-21 Sudakshina Das <sudi.das@arm.com>
71
72 * testsuite/ld-aarch64/aarch64-elf.exp: Add new test.
73 * testsuite/ld-aarch64/bti-plt-1.s: Add .ifdef for PAC note section.
74 * testsuite/ld-aarch64/bti-plt-6.d: Update warning.
75 * testsuite/ld-aarch64/bti-plt-7.d: Likewise.
76 * testsuite/ld-aarch64/bti-warn.d: New test.
77
78 2019-03-21 Alan Modra <amodra@gmail.com>
79
80 * testsuite/ld-elf/fini2.s: Reduce alignment.
81 * testsuite/ld-elf/fini3.s: Likewise.
82 * testsuite/ld-elf/finin.s: Likewise.
83 * testsuite/ld-elf/init2.s: Likewise.
84 * testsuite/ld-elf/init3.s: Likewise.
85 * testsuite/ld-elf/initn.s: Likewise.
86 * testsuite/ld-elf/pr14156a.d: Don't xfail m68hc1*-* or xgate-*.
87 * testsuite/ld-elf/pr14156b.d: Don't xfail xgate-*.
88
89 2019-03-21 Alan Modra <amodra@gmail.com>
90
91 * scripttempl/alpha.sc, * scripttempl/armbpabi.sc,
92 * scripttempl/crisaout.sc, * scripttempl/elf32cr16.sc,
93 * scripttempl/elf32crx.sc, * scripttempl/elf32xc16x.sc,
94 * scripttempl/elf32xc16xl.sc, * scripttempl/elf32xc16xs.sc,
95 * scripttempl/elf64hppa.sc, * scripttempl/elf_chaos.sc,
96 * scripttempl/elfarc.sc, * scripttempl/elfarcv2.sc,
97 * scripttempl/elfd30v.sc, * scripttempl/elfm68hc11.sc,
98 * scripttempl/elfm68hc12.sc, * scripttempl/elfm9s12z.sc,
99 * scripttempl/elfmicroblaze.sc, * scripttempl/elfxgate.sc,
100 * scripttempl/elfxtensa.sc, * scripttempl/epiphany_4x4.sc,
101 * scripttempl/ft32.sc, * scripttempl/i386beos.sc,
102 * scripttempl/iq2000.sc, * scripttempl/mcorepe.sc,
103 * scripttempl/mep.sc, * scripttempl/mips.sc, * scripttempl/moxie.sc,
104 * scripttempl/pe.sc, * scripttempl/pep.sc, * scripttempl/ppcpe.sc,
105 * scripttempl/tic4xcoff.sc, * scripttempl/tic80coff.sc,
106 * scripttempl/v850.sc, * scripttempl/v850_rh850.sc,
107 * scripttempl/visium.sc, * scripttempl/xstormy16.sc: Add KEEP and
108 SORT_NONE to .init and .fini wildcards.
109 * scripttempl/elf32xc16x.sc,
110 * scripttempl/elf32xc16xl.sc,
111 * scripttempl/elf32xc16xs.sc: Add .fini wildcard.
112 * scripttempl/elf_chaos.sc: Add .init output section.
113 * scripttempl/elfd30v.sc: Remove duplicate .init.
114 * scripttempl/elfm68hc11.sc, * scripttempl/elfm68hc12.sc,
115 * scripttempl/elfm9s12z.sc, * scripttempl/elfxgate.sc: Remove
116 duplicate .init, and add .fini wildcard.
117 * scripttempl/ppcpe.sc (INIT, FINI): Delete.
118 * ldlang.c (update_wild_statements): Special case .init and
119 .fini in the wildcard, not the output section.
120
121 2019-03-21 Alan Modra <amodra@gmail.com>
122
123 * emulparams/elf32lm32fd.sh (DYNAMIC_LINK): Undef.
124
125 2019-03-21 Alan Modra <amodra@gmail.com>
126
127 * ldlang.c (lang_size_sections_1): Set SEC_KEEP on
128 create_object_symbols_section.
129 * testsuite/ld-elf/pr22319.d: Don't xfail dlx.
130
131 2019-03-18 Alan Modra <amodra@gmail.com>
132
133 * testsuite/ld-elf/merge.d: Remove csky from xfails, add moxie.
134 * testsuite/ld-elf/pr21884.d: Remove csky from xfails.
135 * testsuite/ld-elf/shared.exp: Add csky to list not xfailing pr22374.
136 * testsuite/ld-unique/pr21529.d: Remove csky from xfails
137
138 2019-03-15 Nick Clifton <nickc@redhat.com>
139
140 PR 24262
141 * ld.texi (-plugin): Correct the path used to locate linker
142 plugins.
143
144 2019-03-13 Sudakshina Das <sudi.das@arm.com>
145
146 * NEWS: Document --pac-plt.
147 * emultempl/aarch64elf.em (OPTION_PAC_PLT): New.
148 (PARSE_AND_LIST_LONGOPTS, PARSE_AND_LIST_OPTIONS): Add pac-plt.
149 (PARSE_AND_LIST_ARGS_CASES): Handle OPTION_PAC_PLT.
150 * testsuite/ld-aarch64/aarch64-elf.exp: Add the following tests.
151 * testsuite/ld-aarch64/bti-pac-plt-1.d: New test.
152 * testsuite/ld-aarch64/bti-pac-plt-2.d: New test.
153 * testsuite/ld-aarch64/pac-plt-1.d: New test.
154 * testsuite/ld-aarch64/pac-plt-2.d: New test.
155 * testsuite/ld-aarch64/bti-plt-1.s: Add .ifndef directive.
156
157 2019-03-13 Sudakshina Das <sudi.das@arm.com>
158 Szabolcs Nagy <szabolcs.nagy@arm.com>
159
160 * NEWS: Document --force-bti.
161 * emultempl/aarch64elf.em (plt_type, bti_type, OPTION_FORCE_BTI): New.
162 (PARSE_AND_LIST_SHORTOPTS, PARSE_AND_LIST_OPTIONS): Add force-bti.
163 (PARSE_AND_LIST_ARGS_CASES): Handle OPTION_FORCE_BTI.
164 * testsuite/ld-aarch64/aarch64-elf.exp: Add all the tests below.
165 * testsuite/ld-aarch64/bti-plt-1.d: New test.
166 * testsuite/ld-aarch64/bti-plt-1.s: New test.
167 * testsuite/ld-aarch64/bti-plt-2.d: New test.
168 * testsuite/ld-aarch64/bti-plt-3.d: New test.
169 * testsuite/ld-aarch64/bti-plt-4.d: New test.
170 * testsuite/ld-aarch64/bti-plt-5.d: New test.
171 * testsuite/ld-aarch64/bti-plt-6.d: New test.
172 * testsuite/ld-aarch64/bti-plt-7.d: New test.
173 * testsuite/ld-aarch64/bti-plt-so.s: New test.
174 * testsuite/ld-aarch64/bti-plt.ld: New test.
175
176 2019-03-13 Sudakshina Das <sudi.das@arm.com>
177
178 * NEWS: Document GNU_PROPERTY_AARCH64_FEATURE_1_BTI and
179 GNU_PROPERTY_AARCH64_FEATURE_1_PAC.
180 * testsuite/ld-aarch64/aarch64-elf.exp: Add run commands for new tests.
181 * testsuite/ld-aarch64/property-bti-pac1.d: New test.
182 * testsuite/ld-aarch64/property-bti-pac1.s: New test.
183 * testsuite/ld-aarch64/property-bti-pac2.d: New test.
184 * testsuite/ld-aarch64/property-bti-pac2.s: New test.
185 * testsuite/ld-aarch64/property-bti-pac3.d: New test.
186
187 2019-03-13 H.J. Lu <hongjiu.lu@intel.com>
188
189 PR ld/24322
190 * testsuite/ld-i386/i386.exp: Run PR ld/24322 tests.
191 * testsuite/ld-x86-64/x86-64.exp: Likewise.
192 * testsuite/ld-i386/pr24322a.d: New file.
193 * testsuite/ld-i386/pr24322b.d: Likewise.
194 * testsuite/ld-x86-64/pr24322a-x32.d: Likewise.
195 * testsuite/ld-x86-64/pr24322a.d: Likewise.
196 * testsuite/ld-x86-64/pr24322b-x32.d: Likewise.
197 * testsuite/ld-x86-64/pr24322b.d: Likewise.
198 * testsuite/ld-x86-64/pr24322a.s: Likewise.
199 * testsuite/ld-x86-64/pr24322b.s: Likewise.
200 * testsuite/ld-x86-64/pr24322c.s: Likewise.
201
202 2019-03-06 Nick Bowler <nbowler@draconx.ca>
203
204 PR 24289
205 * ldexp.c (fold_name): Allow lookups of the LENGTH and ORIGIN
206 attributes during the first phase.
207
208 2019-03-01 Andreas Krebbel <krebbel@linux.ibm.com>
209
210 This reverts commit 5a12586d44fa8d5dfc74cbca4f2f36a273a16335.
211 2019-01-14 Maamoun Tarsha <maamountk@hotmail.com>
212
213 PR 20113
214 * emulparams/elf64_s390.sh (SEPARATE_GOTPLT): Define.
215 * emulparams/elf_s390.sh (SEPARATE_GOTPLT): Define.
216 * testsuite/ld-s390/gotreloc_31-1.dd: Update expected output.
217 * testsuite/ld-s390/tlsbin.dd: Likewise.
218 * testsuite/ld-s390/tlsbin.rd: Likewise.
219 * testsuite/ld-s390/tlsbin.sd: Likewise.
220 * testsuite/ld-s390/tlsbin_64.dd: Likewise.
221 * testsuite/ld-s390/tlsbin_64.rd: Likewise.
222 * testsuite/ld-s390/tlsbin_64.sd: Likewise.
223 * testsuite/ld-s390/tlspic.dd: Likewise.
224 * testsuite/ld-s390/tlspic.rd: Likewise.
225 * testsuite/ld-s390/tlspic.sd: Likewise.
226 * testsuite/ld-s390/tlspic_64.dd: Likewise.
227 * testsuite/ld-s390/tlspic_64.rd: Likewise.
228 * testsuite/ld-s390/tlspic_64.sd: Likewise.
229 * testsuite/ld-s390/s390.exp: Skip s390 tests for tpf targets.
230
231 2019-02-27 H.J. Lu <hongjiu.lu@intel.com>
232
233 PR ld/24276
234 * testsuite/ld-i386/i386.exp: Run PR ld/24276 test.
235 * testsuite/ld-x86-64/x86-64.exp: Likewise.
236 * testsuite/ld-i386/pr24276.dso: New file.
237 * testsuite/ld-i386/pr24276.warn: Likewise.
238 * testsuite/ld-x86-64/pr24276.dso: Likewise.
239 * testsuite/ld-x86-64/pr24276.warn: Likewise.
240
241 2019-02-20 Eric Tsai <erictsai@cadence.com>
242
243 * testsuite/ld-xtensa/call_overflow.d: New test definition.
244 * testsuite/ld-xtensa/call_overflow1.s: New test source.
245 * testsuite/ld-xtensa/call_overflow2.s: New test source.
246 * testsuite/ld-xtensa/call_overflow3.s: New test source.
247 * testsuite/ld-xtensa/xtensa.exp: Add call_overflow test.
248
249 2019-02-14 Thomas Schwinge <thomas@codesourcery.com>
250
251 * testsuite/ld-elf/elf.exp: Remove Hurd XFAILs.
252
253 2019-02-12 Nick Clifton <nickc@redhat.com>
254
255 * po/fr.po: Updated French translation.
256
257 2019-02-09 Vineet Gupta <vgupta@synopsys.com>
258
259 * emultempl/arclinux.em: Delete special INIT/FINI handling.
260
261 2019-02-07 Nick Clifton <nickc@redhat.com>
262
263 PR 24175
264 * ld.texi (Options): Add missing word to the description of the
265 --start-group option.
266
267 2019-02-06 Alan Modra <amodra@gmail.com>
268
269 PR ld/24008
270 * testsuite/ld-scripts/pr24008.d: Pass with extra target
271 defined symbols.
272
273 2019-02-05 H.J. Lu <hongjiu.lu@intel.com>
274
275 PR ld/24151
276 * testsuite/ld-x86-64/pr24151a-x32.d: New file.
277 * testsuite/ld-x86-64/pr24151a.d: Likewise.
278 * testsuite/ld-x86-64/pr24151a.s: Likewise.
279 * testsuite/ld-x86-64/x86-64.exp: Run pr24151a and pr24151a-x32.
280
281 2019-01-31 Alan Modra <amodra@gmail.com>
282
283 * NEWS: Mention -t change.
284 * ld.texi (--trace/-t): Expand documentation a little.
285
286 2019-01-29 H.J. Lu <hongjiu.lu@intel.com>
287
288 PR ld/24008
289 * testsuite/ld-scripts/defined.exp: Run pr24008.
290 * testsuite/ld-scripts/pr24008.d: New file.
291 * testsuite/ld-scripts/pr24008.map: Likewise.
292 * testsuite/ld-scripts/pr24008.s: Likewise.
293 * testsuite/ld-scripts/pr24008.t: Likewise.
294
295 2019-01-29 Eric Botcazou <ebotcazou@adacore.com>
296
297 * testsuite/ld-ifunc/ifunc.exp: Skip pr23169 on SPARC.
298
299 2019-01-28 Alan Modra <amodra@gmail.com>
300
301 PR 24008
302 * ldexp.h (lang_phase_type): Add lang_fixed_phase_enum.
303 * ldexp.c (fold_name): Move expld.assign_name check later to
304 avoid an extra lookup.
305 (exp_fold_tree_1): When lang_fixed_phase_enum, don't change symbol
306 values, and don't clear expld.assign_name.
307 * ldlang.c (lang_map): Set expld.phase to lang_fixed_phase_enum.
308 (print_assignment): Resolve entire assignment expression.
309 Don't access symbol u.def unless symbol is defined.
310
311 2019-01-25 Nick Clifton <nickc@redhat.com>
312
313 * po/bg.po: Updated Bulgarian translation.
314
315 2019-01-23 Sebastian Huber <sebastian.huber@embedded-brains.de>
316
317 * ld.texi (--wrap): Add warning that LTO may make this feature
318 ineffective.
319
320 2019-01-21 Nick Clifton <nickc@redhat.com>
321
322 * po/uk.po: Updated Ukranian translation.
323 * po/pr_BR.po: Updated Brazilian Portuguese translation.
324
325 2019-01-21 Nick Clifton <nickc@redhat.com>
326
327 PR 24108
328 * testsuite/ld-riscv-elf/attr-merge-arch-failed-01.d: Update
329 expected error message.
330
331 2019-01-19 Nick Clifton <nickc@redhat.com>
332
333 * configure: Regenerate.
334 * po/ld.pot: Regenerate.
335
336 2018-06-24 Nick Clifton <nickc@redhat.com>
337
338 2.32 branch created.
339
340 2019-01-16 Kito Cheng <kito@andestech.com>
341
342 * testsuite/ld-elf/orphan-region.d: XFAIL for RISC-V, because add new
343 section.
344 * testsuite/ld-riscv-elf/ld-riscv-elf.exp: Add new tests.
345 * testsuite/ld-riscv-elf/attr-merge-arch-01.d: New test.
346 * testsuite/ld-riscv-elf/attr-merge-arch-01a.s: Likewise.
347 * testsuite/ld-riscv-elf/attr-merge-arch-01b.s: Likewise.
348 * testsuite/ld-riscv-elf/attr-merge-arch-02.d: Likewise.
349 * testsuite/ld-riscv-elf/attr-merge-arch-02a.s: Likewise.
350 * testsuite/ld-riscv-elf/attr-merge-arch-02b.s: Likewise.
351 * testsuite/ld-riscv-elf/attr-merge-arch-03.d: Likewise.
352 * testsuite/ld-riscv-elf/attr-merge-arch-03a.s: Likewise.
353 * testsuite/ld-riscv-elf/attr-merge-arch-03b.s: Likewise.
354 * testsuite/ld-riscv-elf/attr-merge-arch-failed-01.d: Likewise.
355 * testsuite/ld-riscv-elf/attr-merge-arch-failed-01a.s: Likewise.
356 * testsuite/ld-riscv-elf/attr-merge-arch-failed-01b.s: Likewise.
357 * testsuite/ld-riscv-elf/attr-merge-priv-spec-a.s: Likewise.
358 * testsuite/ld-riscv-elf/attr-merge-priv-spec-b.s: Likewise.
359 * testsuite/ld-riscv-elf/attr-merge-priv-spec.d: Likewise.
360 * testsuite/ld-riscv-elf/attr-merge-stack-align-a.s: Likewise.
361 * testsuite/ld-riscv-elf/attr-merge-stack-align-b.s: Likewise.
362 * testsuite/ld-riscv-elf/attr-merge-stack-align-failed-a.s: Likewise.
363 * testsuite/ld-riscv-elf/attr-merge-stack-align-failed-b.s: Likewise.
364 * testsuite/ld-riscv-elf/attr-merge-stack-align-failed.d: Likewise.
365 * testsuite/ld-riscv-elf/attr-merge-stack-align.d: Likewise.
366 * testsuite/ld-riscv-elf/attr-merge-strict-align-01.d: Likewise.
367 * testsuite/ld-riscv-elf/attr-merge-strict-align-01a.s: Likewise.
368 * testsuite/ld-riscv-elf/attr-merge-strict-align-01b.s: Likewise.
369 * testsuite/ld-riscv-elf/attr-merge-strict-align-02.d: Likewise.
370 * testsuite/ld-riscv-elf/attr-merge-strict-align-02a.s: Likewise.
371 * testsuite/ld-riscv-elf/attr-merge-strict-align-02b.s: Likewise.
372 * testsuite/ld-riscv-elf/attr-merge-strict-align-03.d: Likewise.
373 * testsuite/ld-riscv-elf/attr-merge-strict-align-03a.s: Likewise.
374 * testsuite/ld-riscv-elf/attr-merge-strict-align-03b.s: Likewise.
375 * testsuite/ld-riscv-elf/attr-merge-strict-align-04.d: Likewise.
376 * testsuite/ld-riscv-elf/attr-merge-strict-align-04a.s: Likewise.
377 * testsuite/ld-riscv-elf/attr-merge-strict-align-04b.s: Likewise.
378 * testsuite/ld-riscv-elf/attr-merge-strict-align-05.d: Likewise.
379 * testsuite/ld-riscv-elf/attr-merge-strict-align-05a.s: Likewise.
380 * testsuite/ld-riscv-elf/attr-merge-strict-align-05b.s: Likewise.
381
382 2019-01-14 Maamoun Tarsha <maamountk@hotmail.com>
383
384 PR 20113
385 * emulparams/elf64_s390.sh (SEPARATE_GOTPLT): Define.
386 * emulparams/elf_s390.sh (SEPARATE_GOTPLT): Define.
387 * testsuite/ld-s390/gotreloc_31-1.dd: Update expected output.
388 * testsuite/ld-s390/tlsbin.dd: Likewise.
389 * testsuite/ld-s390/tlsbin.rd: Likewise.
390 * testsuite/ld-s390/tlsbin.sd: Likewise.
391 * testsuite/ld-s390/tlsbin_64.dd: Likewise.
392 * testsuite/ld-s390/tlsbin_64.rd: Likewise.
393 * testsuite/ld-s390/tlsbin_64.sd: Likewise.
394 * testsuite/ld-s390/tlspic.dd: Likewise.
395 * testsuite/ld-s390/tlspic.rd: Likewise.
396 * testsuite/ld-s390/tlspic.sd: Likewise.
397 * testsuite/ld-s390/tlspic_64.dd: Likewise.
398 * testsuite/ld-s390/tlspic_64.rd: Likewise.
399 * testsuite/ld-s390/tlspic_64.sd: Likewise.
400 * testsuite/ld-s390/s390.exp: Skip s390 tests for tpf targets.
401
402 2019-01-14 Sebastian Huber <sebastian.huber@embedded-brains.de>
403
404 * ld.texi (--wrap): Add example to emphasise that only undefined
405 references are replaced by the linker.
406
407 2019-01-09 Nick Clifton <nickc@redhat.com>
408
409 * po/es.po: Updated Spanish translation.
410
411 2019-01-09 Andrew Paprocki <andrew@ishiboo.com>
412
413 * configure: Regenerate.
414
415 2019-01-08 Alan Modra <amodra@gmail.com>
416
417 * testsuite/ld-elf/sec64k.exp: Use . rather than $objdir in
418 generated source file names.
419 * testsuite/ld-m68k/m68k-got.exp: Likewise.
420
421 2019-01-01 Alan Modra <amodra@gmail.com>
422
423 Update year range in copyright notice of all files.
424
425 For older changes see ChangeLog-2018
426 \f
427 Copyright (C) 2019 Free Software Foundation, Inc.
428
429 Copying and distribution of this file, with or without modification,
430 are permitted in any medium without royalty provided the copyright
431 notice and this notice are preserved.
432
433 Local Variables:
434 mode: change-log
435 left-margin: 8
436 fill-column: 74
437 version-control: never
438 End:
This page took 0.049862 seconds and 4 git commands to generate.