ARC naughtiness causing assertion fail at elf-strtab.c:302
[external/binutils.git] / bfd / ChangeLog
1 2017-02-25  Alan Modra  <amodra@gmail.com>
2
3         * elf32-arc.c (struct dynamic_sections): Delete.
4         (enum dyn_section_types): Delete.
5         (dyn_section_names): Delete.
6         (arc_create_dynamic_sections): Delete.
7         (elf_arc_finish_dynamic_sections): Don't call the above.  Don't
8         segfault on discarded .rela.plt section.
9         (elf_arc_size_dynamic_sections): Formatting.  Don't call
10         arc_create_dynamic_sections.  Don't allocate memory for sections
11         handled by the generic linker.  Correct code finding relocs in
12         read-only sections.  Set SEC_EXCLUDE on zero size .got,
13         .got.plt, and .dynbss sections.  Do set .interp for pies.
14
15 2017-02-24  Andrew Waterman  <andrew@sifive.com>
16
17         * elfnn-riscv.c (GP_NAME): New macro.
18         (riscv_global_pointer_value): Use it.
19         (_bfd_riscv_relax_lui): If symbol and global pointer are in same
20         output section, consider only that section's alignment.
21
22 2017-02-23  Maciej W. Rozycki  <macro@imgtec.com>
23
24         * elfxx-mips.h (_bfd_mips_relax_section): Remove prototype.
25         * elfxx-mips.c (_bfd_mips_relax_section): Remove function.
26         * elf64-mips.c (bfd_elf64_bfd_relax_section): Remove macro.
27         * elfn32-mips.c (bfd_elf32_bfd_relax_section): Likewise.
28
29 2017-02-23  Maciej W. Rozycki  <macro@imgtec.com>
30
31         * elfxx-mips.c (mips_elf_calculate_relocation) <R_MIPS_JALR>
32         <R_MICROMIPS_JALR>: Discard relocation if `cross_mode_jump_p'
33         or misaligned.
34
35 2017-02-23  Alan Modra  <amodra@gmail.com>
36
37         PR 20744
38         * elf32-ppc.c (ppc_elf_howto_raw): Correct dst_mask on all VLE
39         16D relocations.
40         (ppc_elf_vle_split16): Correct field mask and shift for 16D relocs.
41         (ppc_elf_relocate_section): Correct calculation for VLE SDAREL
42         relocs.
43
44 2017-02-22  Maciej W. Rozycki  <macro@imgtec.com>
45
46         PR ld/20828
47         * elflink.c (bfd_elf_size_dynamic_sections): Move symbol version
48         processing ahead of the call to `elf_gc_sweep_symbol'.
49
50 2017-02-22  Nick Clifton  <nickc@redhat.com>
51
52         PR binutils/21193
53         * opncls.c (bfd_create_gnu_debuglink_section): Give the newly
54         created section 4-byte alignment.
55
56 2017-02-22  Alan Modra  <amodra@gmail.com>
57
58         * elf64-ppc.c (ppc64_elf_finish_dynamic_sections): Don't segfault
59         on .got or .plt output section being discarded by script.
60         * elf32-ppc.c (ppc_elf_finish_dynamic_sections): Likewise.  Move
61         vxworks splt temp.
62
63 2017-02-21  Alan Modra  <amodra@gmail.com>
64
65         * elf64-alpha.c (elf64_alpha_size_dynamic_sections): Only emit
66         DT_RELA, DT_RELASZ, and DT_RELAENT when DT_RELASZ is non-zero.
67
68 2017-02-20  Alan Modra  <amodra@gmail.com>
69
70         PR 21181
71         * elflink.c (bfd_elf_final_link): Make DT_REL/DT_RELA zero
72         if DT_RELSZ/DT_RELASZ is zero.
73
74 2017-02-17  Nick Clifton  <nickc@redhat.com>
75
76         * compress.c (bfd_get_full_section_contents): Remember to reduce
77         compressed size by the sizeof the compression header when
78         decompressing the contents.
79
80 2017-02-17  Pedro Alves  <palves@redhat.com>
81
82         * srec.c (Chunk): Rename to ...
83         (_bfd_srec_len): ... this.
84         (S3Forced): Rename to ...
85         (_bfd_srec_forceS3): ... this.
86         * objcopy.c: Adjust all references.
87
88 2017-02-17  Pedro Alves  <palves@redhat.com>
89
90         * archive.c (bsd_write_armap): Rename to ...
91         (_bfd_bsd_write_armap): ... this.
92         (coff_write_armap): Rename to ...
93         (_bfd_coff_write_armap): ... this.
94         * libbfd-in.h (bsd_write_armap): Rename to ...
95         (_bfd_bsd_write_armap): ... this.
96         (coff_write_armap): Rename to ...
97         (_bfd_coff_write_armap): ... this.
98         * aout-target.h, aout-tic30.c: Adjust all users.
99         * libbfd.h: Regenerate.
100
101 2017-02-17  Pedro Alves  <palves@redhat.com>
102
103         * bfd-in.h (bfd_read, bfd_write): Adjust to rename.
104         (warn_deprecated): Rename to ...
105         (_bfd_warn_deprecated): ... this.
106         * libbfd.c (warn_deprecated): Rename to ...
107         (_bfd_warn_deprecated): ... this.
108         * bfd-in2.h: Regenerate.
109
110 2017-02-17  Pedro Alves  <palves@redhat.com>
111
112         * bfdio.c (real_ftell): Rename to ...
113         (_bfd_real_ftell): ... this.
114         (real_fseek): Rename to ...
115         (_bfd_real_fseek): ... this.
116         (real_fopen): Rename to ...
117         (_bfd_real_fopen): ... this.
118         * libbfd-in.h (real_ftell): Rename to ...
119         (_bfd_real_ftell): ... this.
120         (real_fseek): Rename to ...
121         (_bfd_real_fseek): ... this.
122         (real_fopen): Rename to ...
123         (_bfd_real_fopen): ... this.
124         * cache.c, dwarf2.c, opncls.c: Adjust all callers.
125         * libbfd.h: Regenerate.
126
127 2017-02-17  Pedro Alves  <palves@redhat.com>
128
129         * dwarf2.c, elf-attrs.c, elf32-nds32.c: Adjust all callers.
130         * libbfd.c (read_unsigned_leb128): Rename to ...
131         (_bfd_read_unsigned_leb128): ... this.
132         (read_signed_leb128): Rename to ...
133         (_bfd_read_signed_leb128): ... this.
134         (safe_read_leb128): Rename to ...
135         (_bfd_safe_read_leb128): ... this.
136         * libbfd-in.h (read_unsigned_leb128): Rename to ...
137         (_bfd_read_unsigned_leb128): ... this.
138         (read_signed_leb128): Rename to ...
139         (_bfd_read_signed_leb128): ... this.
140         (safe_read_leb128): Rename to ...
141         (_bfd_safe_read_leb128): ... this.
142         * libbfd.h: Renegerate.
143
144 2017-02-16  Andrew Burgess  <andrew.burgess@embecosm.com>
145
146         * dwarf2.c (_bfd_dwarf2_find_nearest_line): Perform symbol lookup
147         before trying to fine matching file and line information.
148
149 2017-02-16  Andrew Burgess  <andrew.burgess@embecosm.com>
150
151         * dwarf2.c (struct dwarf2_debug): Add orig_bfd member.
152         (_bfd_dwarf2_slurp_debug_info): If stashed debug information does
153         not match current bfd, then reload debug information.  Record bfd
154         we're loading debug info for in the stash.  If we have debug
155         informatin in the cache then perform section placement before
156         returning.
157
158 2017-02-16  Alan Modra  <amodra@gmail.com>
159
160         PR 21000
161         * elf-bfd.h (struct elf_backend_data): Add no_page_alias.
162         * elfxx-target.h (elf_backend_no_page_alias): Define.
163         (elfNN_bed): Init new field.
164         * elf.c (assign_file_positions_for_load_sections): If no_page_alias
165         ensure PT_LOAD segment starts on a new page.
166         * elf32-hppa.c (elf_backend_no_page_alias): Define.
167
168 2017-02-16  Alan Modra  <amodra@gmail.com>
169
170         PR 21132
171         * elf32-hppa.c (allocate_plt_static): Allocate space for relocs
172         if pic.
173
174 2017-02-16  Jiong Wang <jiong.wang@arm.com>
175
176         * bfd.c (BFD_FLAGS_SAVED): Add BFD_LINKER_CREATED.
177         * bfd-in2.h: Regenerated.
178
179 2017-02-15  H.J. Lu  <hongjiu.lu@intel.com>
180
181         PR ld/21168
182         * elf32-i386.c (elf_i386_relocate_section): Allow
183         "lea foo@GOT, %reg" in PIC.
184
185 2017-02-15  H.J. Lu  <hongjiu.lu@intel.com>
186
187         PR ld/20244
188         * elf32-i386.c (elf_i386_relocate_section): Properly get IFUNC
189         symbol name when reporting R_386_GOT32/R_386_GOT32X relocation
190         error against local IFUNC symbol without a base register for
191         PIC.
192
193 2017-02-15  Maciej W. Rozycki  <macro@imgtec.com>
194
195         * elf32-ppc.c (ppc_elf_check_relocs): Use `%H:' rather than
196         `%P: %H:' with `info->callbacks->einfo'.
197         (ppc_elf_relocate_section): Likewise.
198         * elf64-ppc.c (ppc64_elf_check_relocs): Likewise.
199         (ppc64_elf_edit_toc): Likewise.
200         (ppc64_elf_relocate_section): Likewise.
201
202 2017-02-14  Alan Modra  <amodra@gmail.com>
203
204         * elf64-ppc.c (ppc64_elf_gc_mark_dynamic_ref): Support
205         --gc-keep-exported, and test versioned field of sym rather than
206         looking for @ in name.
207
208 2017-02-13  Palmer Dabbelt  <palmer@dabbelt.com>
209
210         * elfnn-riscv.c (riscv_global_pointer_value): Change _gp to
211         __global_pointer$.
212
213 2017-02-13  Nick Clifton  <nickc@redhat.com>
214
215         PR binutils/21151
216         * dwarf2.c (_bfd_dwarf2_find_nearest_line): Check for an invalid
217         unit length field.
218
219 2017-02-07  Andrew Waterman  <andrew@sifive.com>
220
221         * elfnn-riscv.c (riscv_elf_finish_dynamic_sections): Only write PLT
222         entry size if PLT header is written.
223
224 2017-02-06  Sheldon Lobo  <sheldon.lobo@oracle.com>
225
226         Fix sparc64 dynamic relocation processing to use the dynamic
227         symbol count.
228         * elf64-sparc.c (elf64_sparc_slurp_one_reloc_table): Use 'dynamic'
229         to determine if bfd_get_symcount() or bfd_get_dynamic_symcount()
230         should be used.
231
232 2017-02-03  Nick Clifton  <nickc@redhat.com>
233
234         PR 21096
235         * coffcode.h (coff_write_object_contents): Enlarge size of
236         s_name_buf in order to avoid compile time warning about possible
237         integer truncation.
238         * elf32-nds32.c (nds32_elf_ex9_import_table): Mask off lower
239         32-bits of insn value before printing into buffer.
240
241 2017-02-02  Maciej W. Rozycki  <macro@imgtec.com>
242
243         * elfxx-mips.c (mips_elf_hash_sort_data): Add
244         `max_local_dynindx'.
245         (mips_elf_sort_hash_table): Handle it.
246         (mips_elf_sort_hash_table_f) <GGA_NONE>: For forced local
247         symbols bump up `max_local_dynindx' rather than
248         `max_non_got_dynindx'.
249
250 2017-02-02  Maciej W. Rozycki  <macro@imgtec.com>
251
252         * elfxx-mips.c (mips_elf_hash_sort_data): Convert the
253         `min_got_dynindx', `max_unref_got_dynindx' and
254         `max_non_got_dynindx' members to the `bfd_size_type' data type.
255         (mips_elf_sort_hash_table): Adjust accordingly.
256
257 2017-02-02  Maciej W. Rozycki  <macro@imgtec.com>
258
259         * elfxx-mips.c (mips_elf_sort_hash_table): Use `htab' throughout
260         to access the hash table.
261
262 2017-02-02  Maciej W. Rozycki  <macro@imgtec.com>
263
264         * elfxx-mips.c (mips_elf_sort_hash_table): Move assertion on
265         non-NULL `htab' to the beginning.
266
267 2017-02-02  Maciej W. Rozycki  <macro@imgtec.com>
268
269         * elflink.c (elf_gc_sweep): Wrap overlong line.
270
271 2017-01-30  Maciej W. Rozycki  <macro@imgtec.com>
272
273         * elfxx-mips.h (_bfd_mips_elf_insn32): Rename prototype to...
274         (_bfd_mips_elf_linker_flags): ... this.  Add another parameter.
275         * elfxx-mips.c (mips_elf_link_hash_table): Add
276         `ignore_branch_isa' member.
277         (mips_elf_perform_relocation): Do not treat an ISA mode mismatch
278         in branch relocation calculation as an error if
279         `ignore_branch_isa' has been set.
280         (_bfd_mips_elf_insn32): Rename to...
281         (_bfd_mips_elf_linker_flags): ... this.  Rename the `on'
282         parameter to `insn32' and add an `ignore_branch_isa' parameter.
283         Handle the new parameter.
284
285 2017-01-27  Hans-Peter Nilsson  <hp@axis.com>
286
287         * elf32-cris.c (elf_cris_finish_dynamic_symbol): Remove now unused
288         local variable dynobj.
289
290         PR ld/20995
291         * elf32-cris.c (elf_cris_size_dynamic_sections): Handle sdynrelro.
292         (elf_cris_adjust_dynamic_symbol): Place variables copied into the
293         executable from read-only sections into sdynrelro.
294         (elf_cris_finish_dynamic_symbol): Select sreldynrelro for
295         dynamic relocs in sdynrelro.
296         (elf_backend_want_dynrelro): Define.
297
298 2017-01-25  Sebastian Huber  <sebastian.huber@embedded-brains.de>
299
300         * config.bfd (*-*-rtemsaout*): Mark as removed.
301
302 2017-01-25  Sebastian Huber  <sebastian.huber@embedded-brains.de>
303
304         * config.bfd (powerpcle-*-rtems*): Do not mark as removed.
305         (arm-*-rtems*): Move to (arm*-*-eabi*).
306         (i[3-7]86-*-rtems*): Move to (i[3-7]86-*-elf*).
307         (m68-*-rtems*): Move to (m68*-*-elf*).
308
309 2017-01-25  Sebastian Huber  <sebastian.huber@embedded-brains.de>
310
311         * config.bfd (*-*-rtemscoff*): Mark as removed.
312
313 2017-01-24  Maciej W. Rozycki  <macro@imgtec.com>
314
315         PR ld/20828
316         * elflink.c (bfd_elf_record_link_assignment): Revert last
317         change and don't ever clear `forced_local'.  Set `mark'
318         unconditionally.
319         (elf_gc_sweep_symbol_info, elf_gc_sweep_symbol): Reorder within
320         file.
321         (elf_gc_sweep): Move the call to `elf_gc_sweep_symbol'...
322         (bfd_elf_size_dynamic_sections): ... here.
323         * elf32-ppc.c (ppc_elf_tls_setup): Don't clear `forced_local'
324         and set `mark' instead in `__tls_get_addr_opt' processing.
325         * elf64-ppc.c (ppc64_elf_tls_setup): Likewise.
326
327 2017-01-24  Alan Modra  <amodra@gmail.com>
328
329         * elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Merge two cases
330         where dynamic relocs are preferable.  Allow ifunc too.
331         (ensure_undefweak_dynamic): New function.
332         (allocate_dynrelocs): Use it here.  Move plt handling last and
333         don't make symbols dynamic, simplifying loop.  Only make undef
334         weak symbols with GOT entries dynamic.  Correct condition
335         for GOT relocs.  Handle dynamic relocs on ifuncs.  Correct
336         comments.  Remove goto.
337         (ppc_elf_relocate_section): Correct test for using dynamic
338         symbol on GOT relocs.  Rearrange test for emitting GOT relocs
339         to suit.  Set up explicit tls_index entries and implicit GOT
340         tls_index entries resolvable at link time for
341         __tls_get_addr_opt.  Simplify test to clear mem for prelink.
342         * elf64-ppc.c (allocate_got): Correct condition for GOT relocs.
343         (ensure_undefweak_dynamic): New function.
344         (allocate_dynrelocs): Use it here.  Only make undef weak symbols
345         with GOT entries dynamic.  Remove unnecessary test of
346         WILL_CALL_FINISH_DYNAMIC_SYMBOL in PLT handling.
347         (ppc64_elf_relocate_section): Correct test for using dynamic
348         symbol on GOT relocs.  Rearrange test for emitting GOT relocs
349         to suit.  Set up explicit tls_index entries and implicit GOT
350         tls_index entries resolvable at link time for __tls_get_addr_opt.
351         Simplify expression to clear mem for prelink.
352
353 2017-01-23  Yury Norov  <ynorov@caviumnetworks.com>
354
355         * elfnn-aarch64.c: Fix relaxations for ILP32 mode.
356
357 2017-01-20  Jiong Wang <jiong.wang@arm.com>
358
359         * elfnn-aarch64.c (elf_aarch64_hash_symbol): New function.
360         (elf_backend_hash_symbol): Define.
361
362 2017-01-18  Maciej W. Rozycki  <macro@imgtec.com>
363
364         PR ld/20828
365         * elflink.c (bfd_elf_record_link_assignment): Clear any
366         `forced_local' marking for DSO symbols that are not being
367         provided.
368
369 2017-01-17  Kuan-Lin Chen  <kuanlinchentw@gmail.com>
370
371         * elfnn-riscv.c (riscv_elf_object_p): New function.
372
373 2017-01-12  H.J. Lu  <hongjiu.lu@intel.com>
374
375         PR ld/21038
376         * elf64-x86-64.c (elf_x86_64_link_hash_table): Add
377         plt_bnd_eh_frame.
378         (elf_x86_64_check_relocs): Create .eh_frame section for the
379         .plt.bnd section.
380         (elf_x86_64_size_dynamic_sections): Allocate and initialize
381         .eh_frame section for the .plt.bnd section.
382         (elf_x86_64_finish_dynamic_sections): Adjust .eh_frame section
383         for the .plt.bnd section.
384
385 2017-01-12  Nick Clifton  <nickc@redhat.com>
386
387         PR binutils/20876
388         * opncls.c (find_separate_debug_file): Add include_dirs
389         parameter.  Only include the directory part of the bfd's filename
390         in search paths if include_dirs is true.  Add a couple of extra
391         locations for looking for debug files.
392         ( bfd_follow_gnu_debuglink): Update invocation of
393         find_separate_debug_file.
394         (bfd_follow_gnu_debugaltlink): Likewise.
395         (get_build_id): New function: Finds the build-id of the given bfd.
396         (get_build_id_name): New function: Computes the name of the
397         separate debug info file for a bfd, based upon its build-id.
398         (check_build_id_file): New function: Checks to see if a separate
399         debug info file exists at the given location, and that its
400         build-id matches that of the original bfd.
401         (bfd_follow_build_id_debuglink): New function: Finds a separate
402         debug info file for a given bfd by using the build-id method.
403         * dwarf2.c (_bfd_dwarf2_slurp_debug_info): Try using the build-id
404         method of locating a separate debug info file before using the
405         debuglink method.
406         * bfd-in2.h: Regenerate.
407
408 2017-01-11  H.J. Lu  <hongjiu.lu@intel.com>
409
410         PR ld/21038
411         * elf64-x86-64.c (elf_x86_64_eh_frame_bnd_plt): New.
412         (elf_x86_64_bnd_arch_bed): Use elf_x86_64_eh_frame_bnd_plt and
413         elf_x86_64_eh_frame_plt_got.
414         (elf_x86_64_size_dynamic_sections): Get unwind info from
415         elf_x86_64_bnd_arch_bed for the BND PLT.
416
417 2017-01-11  Jeremy Soller  <jackpot51@gmail.com>
418
419         * config.bfd: Add entries for i686-redox and x86_64-redox.
420
421 2017-01-10  H.J. Lu  <hongjiu.lu@intel.com>
422
423         * elf32-i386.c (elf_i386_check_relocs): Align .eh_frame section
424         to 4 bytes.
425         * elf64-x86-64.c (elf_x86_64_create_dynamic_sections): Align
426         .eh_frame section to 4 bytes for x32.
427         (elf_x86_64_check_relocs): Likewise.
428
429 2017-01-10  H.J. Lu  <hongjiu.lu@intel.com>
430
431         PR ld/20830
432         * elf32-i386.c (elf_i386_eh_frame_plt_got): New.
433         (PLT_GOT_FDE_LENGTH): Likewise.
434         (elf_i386_plt_layout): Add eh_frame_plt_got and
435         eh_frame_plt_got_size.
436         (elf_i386_plt): Updated.
437         (elf_i386_link_hash_table): Add plt_got_eh_frame.
438         (elf_i386_check_relocs): Create .eh_frame section for .plt.got.
439         (elf_i386_size_dynamic_sections): Allocate and initialize
440         .eh_frame section for .plt.got.
441         (elf_i386_finish_dynamic_sections): Adjust .eh_frame section for
442         .plt.got.
443         (elf_i386_nacl_plt): Add FIXME for eh_frame_plt_got and
444         eh_frame_plt_got_size.
445         * elf64-x86-64.c (elf_x86_64_eh_frame_plt_got): New.
446         (PLT_GOT_FDE_LENGTH): Likewise.
447         (elf_x86_64_backend_data): Add eh_frame_plt_got and
448         eh_frame_plt_got_size.
449         (elf_x86_64_arch_bed): Updated.
450         (elf_x86_64_bnd_arch_bed): Add FIXME for eh_frame_plt_got and
451         eh_frame_plt_got_size.
452         (elf_x86_64_nacl_arch_bed): Likewise.
453         (elf_x86_64_link_hash_table): Add plt_got_eh_frame.
454         (elf_x86_64_check_relocs): Create .eh_frame section for .plt.got.
455         (elf_x86_64_size_dynamic_sections): Allocate and initialize
456         .eh_frame section for .plt.got.
457         (elf_x86_64_finish_dynamic_sections): Adjust .eh_frame section
458         for .plt.got.
459
460 2017-01-10  H.J. Lu  <hongjiu.lu@intel.com>
461
462         * elf32-i386.c (elf_i386_size_dynamic_sections): Set
463         plt_eh_frame->size to eh_frame_plt_size and use eh_frame_plt.
464
465 2017-01-09  Nick Clifton  <nickc@redhat.com>
466
467         * dwarf2.c (lookup_address_in_function_table): Return early if
468         there are no functions in the given comp unit, or if the high
469         address of the last function in the comp unit is less than the
470         desired address.
471
472 2017-01-09  Nick Clifton  <nickc@redhat.com>
473
474         PR binutils/21013
475         * coffgen.c (_bfd_coff_get_external_symbols): Generate an error
476         message if there are too many symbols to load.
477
478 2017-01-04  James Clarke  <jrtc27@jrtc27.com>
479
480         * elf64-alpha.c (elf64_alpha_relax_opt_call): Don't set tsec_free
481         if relocs are cached.
482
483 2017-01-03  Rich Felker  <bugdal@aerifal.cx>
484
485         PR ld/21017
486         * elf32-microblaze.c (microblaze_elf_check_relocs): Add an entry
487         for R_MICROBLAZE_GOTOFF_64.
488
489 2017-01-03  Nick Clifton  <nickc@redhat.com>
490
491         * mach-o.c (bfd_mach_o_lookup_uuid_command): Fix compile time
492         warning about using a possibly uninitialised variable.
493
494 2017-01-02  Alan Modra  <amodra@gmail.com>
495
496         * elf32-hppa.c (ensure_undef_weak_dynamic): New function.
497         (allocate_plt_static, allocate_dynrelocs): Use it.
498
499 2017-01-02  Alan Modra  <amodra@gmail.com>
500
501         * elf-hppa.h (elf_hppa_fake_sections): Set SHF_INFO_LINK for
502         .PARISC.unwind section.
503
504 2017-01-02  Alan Modra  <amodra@gmail.com>
505
506         PR ld/20989
507         * elfxx-sparc.c (gdop_relative_offset_ok): New function.
508         (_bfd_sparc_elf_relocate_section): Use it to validate GOT
509         indirect to GOT pointer relative code edit.
510
511 2017-01-02  Alan Modra  <amodra@gmail.com>
512
513         Update year range in copyright notice of all files.
514
515 For older changes see ChangeLog-2016
516 \f
517 Copyright (C) 2017 Free Software Foundation, Inc.
518
519 Copying and distribution of this file, with or without modification,
520 are permitted in any medium without royalty provided the copyright
521 notice and this notice are preserved.
522
523 Local Variables:
524 mode: change-log
525 left-margin: 8
526 fill-column: 74
527 version-control: never
528 End: