1 2015-04-14 H.J. Lu <hongjiu.lu@intel.com>
3 * ld.texinfo: Document --compress-debug-sections=.
4 * ldmain.c (main): Set BFD_COMPRESS on output_bfd if
5 COMPRESS_DEBUG is set. Set BFD_COMPRESS_GABI on output_bfd
6 for COMPRESS_DEBUG_GABI_ZLIB.
7 * lexsup.c (elf_static_list_options): Add
8 --compress-debug-sections=.
9 * emultempl/elf32.em (OPTION_COMPRESS_DEBUG): New.
10 (xtra_long): Add "compress-debug-sections".
11 (gld${EMULATION_NAME}_handle_option): Handle
12 OPTION_COMPRESS_DEBUG.
14 2015-04-14 H.J. Lu <hongjiu.lu@intel.com>
17 * ld.texinfo: Document "-z noextern-protected-data".
18 * ldmain.c (main): Initialize link_info.extern_protected_data
20 * lexsup.c (elf_shlib_list_options): Add
21 "-z [no]extern-protected-data".
22 * emulparams/elf32_x86_64.sh: Source extern_protected_data.sh.
23 * emulparams/elf_i386.sh: Likewise.
24 * emulparams/elf_i386_be.sh: Likewise.
25 * emulparams/elf_i386_chaos.sh: Likewise.
26 * emulparams/elf_i386_ldso.sh: Likewise.
27 * emulparams/elf_i386_vxworks.sh: Likewise.
28 * emulparams/elf_k1om.sh: Likewise.
29 * emulparams/elf_l1om.sh: Likewise.
30 * emulparams/elf_x86_64.sh: Source extern_protected_data.sh.
31 (PARSE_AND_LIST_OPTIONS): Renamed to ...
32 (PARSE_AND_LIST_OPTIONS_BNDPLT): This.
33 (PARSE_AND_LIST_ARGS_CASE_Z): Renamed to ...
34 (PARSE_AND_LIST_ARGS_CASE_Z_BNDPLT): This.
35 (PARSE_AND_LIST_OPTIONS): Append $PARSE_AND_LIST_OPTIONS_BNDPLT.
36 (PARSE_AND_LIST_ARGS_CASE_Z): Append
37 $PARSE_AND_LIST_ARGS_CASE_Z_BNDPLT.
38 * emulparams/extern_protected_data.sh: New file.
40 2015-04-11 H.J. Lu <hongjiu.lu@intel.com>
42 * plugin.c (plugin_load_plugins): Removed an extra ';'.
44 2015-04-10 Nick Clifton <nickc@redhat.com>
47 * ld.texinfo (--be8): Add a note about the interaction of this
48 option with the assembler's -EB option.
50 2015-04-10 Alan Modra <amodra@gmail.com>
52 * configure.ac: Set elf_list_options etc. in proper case.
53 * configure: Regenerate.
55 2015-04-10 Alan Modra <amodra@gmail.com>
58 * ldlang.c (lang_process): Add _init and _fini to gc_sym_list.
60 2015-04-09 H.J. Lu <hongjiu.lu@intel.com>
62 * emulparams/elf_x86_64.sh (BNDPLT): Removed.
63 (PARSE_AND_LIST_OPTIONS): New.
64 (PARSE_AND_LIST_ARGS_CASE_Z): Likewise.
65 * emultempl/elf32.em (gld${EMULATION_NAME}_handle_option): Remove
66 BNDPLT check. Handle PARSE_AND_LIST_ARGS_CASE_Z.
67 (gld${EMULATION_NAME}_list_options): Remove BNDPLT check.
69 2015-04-09 Nick Clifton <nickc@redhat.com>
71 * po/fr.po: Updated French translation.
73 2015-04-08 H.J. Lu <hongjiu.lu@intel.com>
75 * configure.ac (elf_list_options): Set to TRUE for
77 (elf_shlib_list_options): Likewise.
78 (elf_plt_unwind_list_options): Likewise.
79 * configure: Regenerated.
81 2015-04-08 H.J. Lu <hongjiu.lu@intel.com>
83 * emulparams/elf32bmipn32-defs.sh: Skip empty EMULATION_NAME.
85 2015-04-08 H.J. Lu <hongjiu.lu@intel.com>
87 * Makefile.am (ELF_CLFAGS): New.
88 (AM_CFLAGS): Add $(ELF_CLFAGS).
89 * configure.ac (elf_list_options): New. AC_SUBST.
90 (elf_shlib_list_options): Likewise.
91 (elf_plt_unwind_list_options): Likewise.
92 * lexsup.c (elf_shlib_list_options): New.
93 (elf_static_list_options): Likewise.
94 (elf_plt_unwind_list_options): Likewise.
95 (ld_list_options): Likewise.
96 (help): Call ld_list_options.
97 * Makefile.in: Regenerated.
98 * configure: Likewise.
99 * emulparams/plt_unwind.sh (PLT_UNWIND): New.
100 (PARSE_AND_LIST_OPTIONS): Removed.
101 * emultempl/elf32.em (gld_list_options): New.
102 (gld${EMULATION_NAME}_list_options): Define only if BNDPLT or
103 PARSE_AND_LIST_OPTIONS is defined.
104 (ld_${EMULATION_NAME}_emulation): Replace
105 gld${EMULATION_NAME}_list_options with ${gld_list_options.
107 2015-04-07 Alan Modra <amodra@gmail.com>
110 * ldlang.c (lang_size_sections): Cast shift expression.
112 2015-04-07 Alan Modra <amodra@gmail.com>
114 * emultempl/ppc32elf.em: Handle --no-pic-fixup.
115 (params): Init new field.
116 (ppc_before_allocation): Enable relaxation for pic_fixup.
118 2015-04-07 Nick Clifton <nickc@redhat.com>
120 * ld.h (struct ld_config_type): Add new field: warn_orphan.
121 * ldlex.h (enum option_values): Add OPTION_WARN_ORPHAN and
122 OPTION_NO_WARN_ORPHAN.
123 * lexsup.c (ld_options): Add --warn-orphan and --no-warn-orphan.
124 (parse_args): Handle the new options.
125 * ldemul.c (ldemul_place_orphan): If requested, generate a warning
126 message when an orphan section is placed in the output file.
127 * ld.texinfo: Document the new option.
128 * NEWS: Mention the new feature.
130 2015-04-02 Andrew Turner <andrew@freebsd.org>
132 * Makefile.am: Add FreeBSD aarch64 files.
133 * Makefile.in: Regenerate.
134 * configure.tgt: Add aarch64-*-freebsd* target triple.
135 * emulparams/aarch64fbsd.sh: New file.
136 * emulparams/aarch64fbsdb.sh: New file.
138 2015-04-01 H.J. Lu <hongjiu.lu@intel.com>
140 * emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation): Work
141 around a GCC uninitialized warning bug fixed in GCC 4.6.
143 2015-04-01 Tejas Belagod <tejas.belagod@arm.com>
145 * emultempl/aarch64elf.em
146 (aarch64_elf_create_output_section_statements): Add parameter in
147 bfd_elf${ELFSIZE}_aarch64_set_options call.
148 (OPTION_FIX_ERRATUM_843419): Define.
149 (PARSE_AND_LIST_LONGOPTS): Add fix-cortex-a53-843419.
150 (PARSE_AND_LIST_ARGS_CASES): Add OPTION_FIX_ERRATUM_843419.
152 2015-04-01 Chen Gang <gang.chen.5i5j@gmail.com>
154 * emulparams/elf32_tic6x_le.sh: Skip OTHER_BSS_SECTIONS for
155 relocating operation.
157 2015-04-01 Alan Modra <amodra@gmail.com>
160 * ldlang.c (lang_size_sections): When alignment of sections
161 results in relro base adjustment being too large, don't go lower
162 than the initial value.
163 * ldexp.c (fold_binary <DATA_SEGMENT_RELRO_END>): Comment.
164 * scripttempl/elf.sc (DATA_SEGMENT_ALIGN): Omit SEGMENT_SIZE
165 alignment when SEGMENT_SIZE is the same as MAXPAGESIZE.
167 2015-04-01 Alan Modra <amodra@gmail.com>
169 * emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation): Don't
170 init ehdr_start_save.
172 2015-04-01 Alan Modra <amodra@gmail.com>
174 * Makefile.am (eelf32ppcvxworks.c): Depend on ppc32elf.em and
176 (eelf32lppc.c, eelf32lppclinux.c, eelf32lppcnto.c, eelf32lppcsim.c,
177 eelf32ppc.c, eelf32ppc_fbsd.c, eelf32ppclinux.c, eelf32ppcnto.c,
178 eelf32ppcsim.c): Rearrange deps for consistency.
179 * Makefile.in: Regenerate.
181 2015-04-01 Ed Schouten <ed@nuxi.nl>
183 * emultempl/elf32.em (gld*_before_allocation): Zero-initialize
184 the ehdr_start_save variable.
186 2015-03-31 Ed Schouten <ed@nuxi.nl>
188 * Makefile.am (ALL_64_EMULATION_SOURCES): Add
189 eelf_x86_64_cloudabi.c.
190 (eelf_x86_64_cloudabi.c): New.
191 * configure.tgt (targ_emul): Set to elf_x86_64_cloudabi for
193 * Makefile.in: Regenerated.
194 * emulparams/elf_x86_64_cloudabi.sh: New file.
196 2015-03-31 H.J. Lu <hongjiu.lu@intel.com>
198 * configure.ac (AM_ZLIB): Removed.
199 * Makefile.in: Regenerated.
200 * config.in: Likewise.
201 * configure: Likewise.
203 2015-03-24 Marcus Shawcroft <marcus.shawcroft@arm.com>
205 * emultempl/aarch64elf.em (_aarch64_add_stub_section): Set section
208 2015-03-23 Marcus Shawcroft <marcus.shawcroft@arm.com>
210 * emultempl/aarch64elf.em
211 (elf${ELFSIZE}_aarch64_add_stub_section): Adjust layout.
213 2015-03-18 Chen Gang <gang.chen.5i5j@gmail.com>
215 * ldmain.c (main): Use %F instead of %X for einfo.
217 2015-03-02 Alan Modra <amodra@gmail.com>
219 * ld.texinfo (Options <-z nocopyreloc>): Rewrite.
221 2015-02-27 Nick Clifton <nickc@redhat.com>
224 * ldlang.c (lang_set_flags): Allow exclamation mark to reverse the
225 sense of the following memory region attribute characters.
227 2015-02-27 Alan Modra <amodra@gmail.com>
229 * Makefile.am (ALL_EMULATION_SOURCES): Sort new h8300 entries.
230 (eh8300elf_linux.c, eh8300helf_linux.c, eh8300self_linux.c,
231 eh8300sxelf_linux.c): Do not invoke genscripts here.
232 * Makefile.in: Regenerate.
234 2015-02-24 Nick Clifton <nickc@redhat.com>
236 * Makefile.am (ev850.c): Add dependency upon
237 $(srcdir)/emultempl/v850elf.em.
238 (ev850_rh850.c): Likewise.
239 * Makefile.in: Regenerate.
240 * emultempl/v850elf.em: New file.
241 * emulparams/v850.sh (EXTRA_EM_FILE): Define.
242 * emulparams/v850_rh850.sh (EXTRA_EM_FILE): Define.
243 * scripttempl/v850.sc: Add .note.renesas section.
244 * scripttempl/v850_rh850.sc: Likewise.
246 2015-02-24 Senthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com>
248 * scripttempl/avr.sc: Add new user_signatures region. Define and
249 use symbols for all region lengths.
250 * scripttempl/avrtiny.sc: Define and use symbols for all region
253 2015-01-21 Yoshinori Sato <ysato@users.sourceforge.jp>
255 * Makefile.am: (ALL_EMULATION_SOURCES): Add new emulations.
256 * Makefile.in: Regenerate.
257 * configure.tgt: Add h8300-*-linux
258 * emulparams/h8300elf_linux.sh: Add new emulation.
259 * emulparams/h8300helf_linux.sh: Likewise.
260 * emulparams/h8300self_linux.sh: Likewise.
261 * emulparams/h8300sxelf_linux.sh: Likewise.
263 2015-02-23 Nick Clifton <nickc@redhat.com>
265 * lexsup.c (parse_args): Produce a more reasonable error message
266 when -ixxx or -rxxx is the last option on the linker command line.
268 2015-02-14 H.J. Lu <hongjiu.lu@intel.com>
271 * testplug2.c (allsymbolsread_silent): New.
272 (set_register_hook): Handle allsymbolsreadsilent.
273 (onall_symbols_read): Skip a message if allsymbolsread_silent is
276 2015-02-14 Alan Modra <amodra@gmail.com>
279 * ldlang.h (struct lang_input_statement_flags): Add lto_output.
280 * ldlang.c (lang_process): Don't set loading_lto_outputs.
281 * ldfile.c (ldfile_try_open_bfd): Transfer entry flags.lto_output
283 * plugin.c (add_input_file, add_input_library): Set flags.lto_output.
285 2015-02-13 H.J. Lu <hongjiu.lu@intel.com>
287 * NEWS: Mention support for LLVM plugin.
289 2015-02-13 Alan Modra <amodra@gmail.com>
291 * ld.texinfo (Options <--defsym>): Correct cross reference.
293 2015-02-11 H.J. Lu <hongjiu.lu@intel.com>
295 * lexsup.c (ld_options): Add --[no-]map-whole-files for gold
296 option compatibility.
298 2015-02-11 H.J. Lu <hongjiu.lu@intel.com>
300 * plugin.c (message): Output "warning:" for LDPL_WARNING. Output
301 "error:" for LDPL_FATAL and LDPL_ERROR.
302 * testplug2.c (parse_option): Handle fatal, error and warning.
304 2015-02-11 H.J. Lu <hongjiu.lu@intel.com>
306 * testplug2.c (dump_tv_tag): Removed.
307 (onall_symbols_read): Return LDPS_ERR if the file descriptor isn't
309 * testplug3.c (dump_tv_tag): Removed.
310 (onclaim_file): Fix typo.
312 2015-02-11 H.J. Lu <hongjiu.lu@intel.com>
315 * Makefile.am (noinst_LTLIBRARIES): Add libldtestplug2.la and
317 (libldtestplug2_la_SOURCES): New.
318 (libldtestplug2_la_CFLAGS): Likewise.
319 (libldtestplug2_la_LDFLAGS): Likewise.
320 (libldtestplug3_la_SOURCES): New.
321 (libldtestplug3_la_CFLAGS): Likewise.
322 (libldtestplug3_la_LDFLAGS): Likewise.
323 * Makefile.in: Regenerated.
324 * testplug2.c: New file.
325 * testplug3.c: Likewise.
327 2015-02-11 H.J. Lu <hongjiu.lu@intel.com>
330 * plugin.c: Include ../bfd/plugin.h.
331 (plugin_get_ir_dummy_bfd): Call bfd_create with
332 link_info.output_bfd instead of srctemplate. Copy BFD info
333 from srctemplate only if it doesn't use BFD plugin target
335 (plugin_load_plugins): Call register_ld_plugin_object_p with
337 (plugin_maybe_claim): Renamed to ...
338 (plugin_object_p): This. Return dummy BFD target vector if
339 input is calimed by plugin library, otherwise return NULL.
340 Update plugin_format and plugin_dummy_bfd.
341 (plugin_maybe_claim): New. Use plugin_object_p.
343 2015-02-10 H.J. Lu <hongjiu.lu@intel.com>
345 * plugin.c (plugin_maybe_claim): Initialize use_mmap.
347 2015-02-10 H.J. Lu <hongjiu.lu@intel.com>
349 * plugin.c (plugin_input_file_t): Add use_mmap.
350 (plugin_pagesize): New.
351 (get_view): Use plugin_pagesize. Set use_mmap if mmap is used.
352 (plugin_load_plugins): Initialize plugin_pagesize.
353 (plugin_maybe_claim): Unmap the buffer if plugin didn't claim the
356 2015-02-10 H.J. Lu <hongjiu.lu@intel.com>
358 * plugin.c (get_view): Align offset passed to mmap.
360 2015-02-08 H.J. Lu <hongjiu.lu@intel.com>
362 * ldfile.c (ldfile_try_open_bfd): Don't call bfd_check_format
363 if plugin isn't active or there is no thing more to claim.
365 2015-02-08 H.J. Lu <hongjiu.lu@intel.com>
367 * plugin.c (plugin_maybe_claim): Check format against bfd_object
370 2015-02-07 H.J. Lu <hongjiu.lu@intel.com>
372 * plugin.c (plugin_maybe_claim): Replace entry->the_bfd with
375 2015-02-07 H.J. Lu <hongjiu.lu@intel.com>
377 * plugin.c: Include "libbfd.h".
378 (plugin_strdup): New.
379 (plugin_maybe_claim): Remove the argument of pointer to struct
380 ld_plugin_input_file. Open and handle input entry.
381 * plugin.h (plugin_maybe_claim): Updated.
382 * ldfile.c (ldfile_try_open_bfd): Call plugin_maybe_claim directly
383 without passing a pointer to struct ld_plugin_input_file.
384 * ldmain.c: Don't include "libbfd.h".
385 (add_archive_element): Call plugin_maybe_claim directly without
386 passing a pointer to struct ld_plugin_input_file.
388 2015-02-06 H.J. Lu <hongjiu.lu@intel.com>
390 * ld.texinfo: Document -z text, -z notext and -z textoff.
391 * emultempl/elf32.em (gld${EMULATION_NAME}_list_options): Add
392 -z text, -z notext and -z textoff.
394 2015-02-06 H.J. Lu <hongjiu.lu@intel.com>
396 * configure.ac: Add AC_FUNC_MMAP.
397 * config.in: Regenerated.
398 * configure: Likewise.
399 * plugin.c: Include <sys/mman.h>.
400 (MAP_FAILED): New. Defined if not defined.
401 (PROT_READ): Likewise.
402 (MAP_PRIVATE): Likewise.
403 (view_buffer_t): New.
404 (plugin_input_file_t): Add view_buffer.
405 (get_view): Try mmap and cache the view buffer.
406 (plugin_maybe_claim): Initialize view_buffer.
408 2015-02-05 H.J. Lu <hongjiu.lu@intel.com>
410 * plugin.c (release_input_file): Set fd to -1 after closing it.
411 (plugin_maybe_claim): Close fd only if fd != -1.
413 2015-02-05 H.J. Lu <hongjiu.lu@intel.com>
416 * plugin.c: Include <errno.h>.
417 (errno): New. Declare if needed.
418 (plugin_input_file_t): New.
419 (get_input_file): Implemented.
420 (get_view): Likewise.
421 (release_input_file): Likewise.
422 (add_symbols): Updated.
423 (get_symbols): Likewise.
424 (plugin_maybe_claim): Allocate a plugin_input_file_t. Close fd
425 only for a bfd_object input.
427 2015-02-02 Alan Modra <amodra@gmail.com>
429 * emultempl/ppc64elf.em (toc_section_name): New var.
430 (ppc_after_open): Set it.
431 (ppc_before_allocation): Use it.
432 (gld${EMULATION_NAME}_after_allocation): Here too.
434 2015-01-29 H.J. Lu <hongjiu.lu@intel.com>
436 * ldfile.c (ldfile_try_open_bfd): Replace plugin_active_plugins_p()
437 with link_info.lto_plugin_active.
438 * ldlang.c (lang_process): Likewise.
439 * ldmain.c (add_archive_element): Likewise.
440 * plugin.c (plugin_active_plugins_p): Removed.
441 * plugin.h (plugin_active_plugins_p): Likewise.
443 2015-01-28 H.J. Lu <hongjiu.lu@intel.com>
445 * plugin.h (plugin_get_ir_dummy_bfd): Removed. Move comments to
447 * plugin.c (plugin_get_ir_dummy_bfd): Here. Make it static.
449 2015-01-28 H.J. Lu <hongjiu.lu@intel.com>
452 * plugin.c (tv_header_tags(): Add LDPT_GET_VIEW.
453 (get_view): New function.
454 (set_tv_header): Handle LDPT_GET_VIEW.
455 * testplug.c (tag_names): Add LDPT_GET_VIEW.
457 (dump_tv_tag): Handle LDPT_GET_VIEW.
458 (parse_tv_tag): Likewise.
460 2015-01-28 Alan Modra <amodra@gmail.com>
462 * emulparams/elf64ppc.sh (INITIAL_READWRITE_SECTIONS): Define.
463 * emultempl/ppc64elf.em (params): Init new field.
464 (ppc_after_open): New function.
465 (LDEMUL_AFTER_OPEN): Define.
466 * ldlang.c (lang_final): Whitespace fix.
468 2015-01-28 James Bowman <james.bowman@ftdichip.com>
470 * Makefile.am: Add FT32 files.
471 * configure.tgt: Handle FT32 target.
472 * emulparams/elf32ft32.sh: New file.
473 * scripttempl/ft32.sc: New file.
474 * Makefile.in: Regenerate.
476 2015-01-28 Senthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com>
479 * ldexp.c (fold_name): Fold LENGTH only after
480 lang_first_phase_enum.
481 * ldgram.y (memory_spec): Don't evaluate ORIGIN and LENGTH
483 * ldlang.h (struct memory_region_struct): Add origin_exp and
485 * ldlang.c (lang_do_memory_regions): New.
486 (lang_memory_region_lookup): Initialize origin_exp and
488 (lang_process): Call lang_do_memory_regions.
490 2015-01-20 Andrew Burgess <andrew.burgess@embecosm.com>
492 * ldlang.c (print_assignment): Only evaluate the expression for a
493 PROVIDE'd assignment when the destination is being defined.
494 Display a special message for PROVIDE'd symbols that are not being
497 2015-01-20 Alan Modra <amodra@gmail.com>
499 * emulparams/elf64ppc.sh (OTHER_SDATA_SECTIONS): Use in place of..
500 (OTHER_BSS_SYMBOLS): ..this.
501 (OTHER_PLT_RELOC_SECTIONS): Don't define.
502 (OTHER_GOT_RELOC_SECTIONS): Add rela.toc1 and rela.tocbss.
503 (OTHER_READWRITE_SECTIONS): Don't define. Move .toc1 to..
504 (OTHER_RELRO_SECTIONS_2): ..here.
505 * scripttempl/elf.sc: Move SBSS too when DATA_SDATA.
507 2015-01-20 Alan Modra <amodra@gmail.com>
509 * emulparams/elf64ppc.sh (BSS_PLT): Don't define.
510 (OTHER_READWRITE_SECTIONS): Move .branch_lt to..
511 (OTHER_RELRO_SECTIONS_2): ..here.
512 (DATA_GOT, SEPARATE_GOTPLT, DATA_SDATA, DATA_PLT,
513 PLT_BEFORE_GOT): Define.
514 * scripttempl/elf.sc: Handle DATA_SDATA and DATA_GOT/DATA_PLT/
515 PLT_BEFORE_GOT combination.
516 (DATA_GOT, SDATA_GOT): Don't define if either is already defined.
518 2015-01-20 Alan Modra <amodra@gmail.com>
520 * emulparams/elf64ppc.sh (OTHER_READWRITE_SECTIONS): Move .opd to..
521 (OTHER_RELRO_SECTIONS_2): ..here, new define.
522 * scripttempl/elf.sc: Add OTHER_RELRO_SECTIONS_2.
524 2015-01-19 Alan Modra <amodra@gmail.com>
527 * ldlang.c (lang_process): Run lang_common before lang_gc_sections.
529 2015-01-14 Jiong Wang <jiong.wang@arm.com>
531 * ld-arm/elf32-reject.s: New testcase.
532 * ld-arm/elf32-reject.d: Likewise.
533 * ld-arm/elf32-reject-pie.s: Likewise.
534 * ld-arm/elf32-reject-pie.d: Likewise.
535 * ld-arm/arm-elf.exp: Run new testcases.
536 * ld-arm/ifunc-7.s: Delete f2/f4 test items.
537 * ld-arm/ifunc-7.rd: Likewise.
538 * ld-arm/ifunc-7.gd: Likewise.
539 * ld-arm/ifunc-7.dd: Likewise.
540 * ld-arm/ifunc-8.s: Likewise.
541 * ld-arm/ifunc-8.rd: Likewise.
542 * ld-arm/ifunc-8.gd: Likewise.
543 * ld-arm/ifunc-8.dd: Likewise.
545 2015-01-01 Alan Modra <amodra@gmail.com>
547 * ldver.c (ldversion): Just print current year.
549 2015-01-01 Alan Modra <amodra@gmail.com>
551 Update year range in copyright notice of all files.
553 For older changes see ChangeLog-2014
555 Copyright (C) 2015 Free Software Foundation, Inc.
557 Copying and distribution of this file, with or without modification,
558 are permitted in any medium without royalty provided the copyright
559 notice and this notice are preserved.
565 version-control: never