1 2014-06-02 Alan Modra <amodra@gmail.com>
3 * emulparams/elf32bfin.sh: Rename from bfin.sh.
4 * emulparams/elf32bfinfd.sh: Update to suit.
6 * emulparams/msp430.sh: Rename from msp430all.sh. Remove
7 MSP430_NAME and msp430X vars.
8 * emulparams/msp430X.sh: New.
10 * emulparams/score3_elf.sh: Rename from scoreelf.sh. Remove
11 SCORE_NAME and score7_elf ARCH setting.
12 * emulparams/score7_elf.sh: New.
13 * Makefile.am (eelf32bfin.c, eelf32bfinfd.c): Update dependencies.
14 (emsp430.c, emsp430X.c, escore3_elf.c, escore7_elf.c): Likewise.
15 * Makefile.in: Regenerate.
16 * genscripts.sh: Delete customizer_script param.
18 2014-05-28 Hans-Peter Nilsson <hp@axis.com>
20 * Makefile.am: Change all rules with ${GENSCRIPTS}
21 invocations to be just dependencies.
22 ($(ALL_EMULATION_SOURCES) $(ALL_64_EMULATION_SOURCES))
23 (run-genscripts): New rules.
24 * Makefile.in: Regenerate.
26 2014-05-27 DJ Delorie <dj@redhat.com>
28 * ld/ldemul.h (extra_map_file_text): New field.
29 (ldemul_extra_map_file_text): Declare.
30 * ld/ldemul.c (ldemul_extra_map_file_text): Define.
31 * ld/ldlang.c (lang_map): Call it.
33 * ld/emultempl/rxelf.em: Add extra_map_file_text hook.
34 * ld/emultempl/aix.em: Add NULL extra_map_file_text hook.
35 * ld/emultempl/armcoff.em: Likewise.
36 * ld/emultempl/beos.em: Likewise.
37 * ld/emultempl/elf32.em: Likewise.
38 * ld/emultempl/generic.em: Likewise.
39 * ld/emultempl/gld960.em: Likewise.
40 * ld/emultempl/gld960c.em: Likewise.
41 * ld/emultempl/linux.em: Likewise.
42 * ld/emultempl/lnk960.em: Likewise.
43 * ld/emultempl/m68kcoff.em: Likewise.
44 * ld/emultempl/pe.em: Likewise.
45 * ld/emultempl/pep.em: Likewise.
46 * ld/emultempl/sunos.em: Likewise.
47 * ld/emultempl/ticoff.em: Likewise.
48 * ld/emultempl/vanilla.em: Likewise.
50 2014-05-24 Alan Modra <amodra@gmail.com>
52 * ldlang.c (base): Move variable to..
53 * mri.c: ..here, and make static.
54 * ldlang.h (base): Delete declaration.
56 2014-05-20 Hans-Peter Nilsson <hp@axis.com>
58 * Makefile.am (ALL_EMULATION_SOURCES): Add missing eelf32mbel_linux.c.
59 * Makefile.in: Regenerate.
61 2014-05-20 Alan Modra <amodra@gmail.com>
64 * emulparams/elf32ppccommon.sh (_SDA_BASE_, _SDA2_BASE_): Delete.
65 * emultempl/ppc32elf.em (ppc_before_allocation): Call
66 ppc_elf_maybe_strip_sdata_syms.
67 * ldlang.c (size_input_section): Correct output_offset value
68 for excluded input sections.
70 2014-05-16 John Marino <binutils@marino.st>
72 * configure.tgt: Add /lib to dragonfly NATIVE_LIB_DIRS.
74 2014-05-11 Chung-Lin Tang <cltang@codesourcery.com>
76 * emulparams/nios2linux.sh (OTHER_GOT_SYMBOLS): Wrap _gp in HIDDEN(),
77 and gp in PROVIDE_HIDDEN.
79 2014-05-10 Hans-Peter Nilsson <hp@bitrange.com>
81 * ldlang.c (lang_finish): Don't call bfd_link_hash_table_free here.
82 (output_bfd_hash_table_free_fn): New variable.
83 (open_output): Save the _bfd_link_hash_table_free function for the
84 output_bfd into output_bfd_hash_table_free_fn.
85 * ldmain.c (ld_cleanup): If set, call output_bfd_hash_table_free_fn
87 * ldlang.h (output_bfd_hash_table_free_fn): Declare.
89 2014-05-02 Alan Modra <amodra@gmail.com>
91 * emultempl/metagelf.em: Update bfd target vector naming.
92 * emultempl/nios2elf.em: Likewise.
93 * emultempl/spuelf.em: Likewise.
94 * emultempl/tic6xdsbt.em: Likewise.
96 2014-04-22 Christian Svensson <blue@cmd.nu>
98 * Makefile.am: Remove openrisc and or32 support. Add support for or1k.
99 * configure.tgt: Likewise.
100 * emulparams/elf32or1k.sh: New file.
101 * emulparams/elf32or1k_linux.sh: New file.
102 * emulparams/elf32openrisc.sh: Delete.
103 * emulparams/or32.sh: Delete.
104 * emulparams/or32elf.sh: Delete.
105 * scripttempl/or32.sc: Delete.
106 * Makefile.in: Regenerate.
108 2014-04-21 Richard Henderson <rth@redhat.com>
110 * emultempl/alphaelf.em (alpha_after_parse): Enable 2 relax passes.
112 2014-04-16 Steve Ellcey <sellcey@mips.com>
114 * emultempl/elf32.em: Include safe-ctype.h.
116 2014-04-16 Steve Ellcey <sellcey@mips.com>
118 * ldbuildid.c (generate_build_id): Add ATTRIBUTE_UNUSED to size arg.
120 2014-04-09 Nick Clifton <nickc@redhat.com>
122 * Makefile.am (default-manifest.o): Remove rule.
123 (EMUL_EXTRA_BINARIES): Delete.
124 (ALL_EMUL_EXTRA_BINARIES): Delete.
125 (ld_new_DEPENDENCIES): Remove EMUL_EXTRA_BINARIES.
126 (install-data-local): Remove EMUL_EXTRA_BINARIES.
127 * Makefile.in: Regenerate.
128 * configure.in (all_emul_extra_binaries): Delete.
129 (EMUL_EXTRA_BINARIES): Remove.
130 * configure: Regenerate.
131 * configure.tgt (target_extra_binaries): Delete.
132 * emultempl/default-manifest.rc: Delete.
133 * ld.texinfo: Remove discussion of default manifest.
134 * emulparams/i386pe.sh (DEFAULT_MANIFEST): Delete.
135 * emulparams/i386pep.sh (DEFAULT_MANIFEST): Delete.
137 2014-04-09 Alan Modra <amodra@gmail.com>
139 * emultempl/spuelf.em: Include safe-ctype.h, remove duplicate errno.h.
140 * emultempl/nds32elf.em: Include bfd_stdint.h.
141 * po/POTFILES.in: Regenerate.
143 2014-04-09 Alan Modra <amodra@gmail.com>
145 * emultempl/ppc32elf.em (no_zero_padding, ppc_finish): New functions.
146 (LDEMUL_FINISH): Define.
148 2014-04-08 Nick Clifton <nickc@redhat.com>
150 * scripttempl/pe.sc (R_RSRC): Remove default manifest.
151 * scripttempl/pep.sc (R_RSRC): Remove default manifest.
153 2014-04-08 Jon TURNEY <jon.turney@dronecode.org.uk>
155 * emultempl/elf32.em (id_note_section_size, read_hex, write_build_id):
156 Move code for parsing build-id option and calculating the build-id to...
157 * ldbuildid.c: New file.
158 * ldbuildid.h: New file.
159 * Makefile.am (CFILES, HFILES, OFILES, ld_new_SOURCES): Add new
161 * Makefile.in: Regenerate.
162 * ld.texinfo: Update --build-id description to mention COFF
164 * NEWS: Mention support for COFF build ids.
165 * emultempl/pe.em (gld${EMULATION_NAME}_handle_option):
166 (pecoff_checksum_contents, write_build_id, setup_build_id)
167 (gld_${EMULATION_NAME}_after_open): Handle and implement
169 * emultempl/pep.em: Likewise.
171 2014-04-04 Cary Coutant <ccoutant@google.com>
174 * ld.texinfo: Document optional comma following output section
175 command and overlay command.
177 2014-04-04 Alan Modra <amodra@gmail.com>
179 * ldlang.c (lang_size_sections_1 <lang_input_section_enum>): Use
180 current "fill", not "output_section_statement->fill".
182 2014-03-31 Nick Clifton <nickc@redhat.com>
185 * emultempl/elf32.em (_after_open): Create a .note.GNU-stack
186 section when performing a relocatable link with -z [no]execstack
189 2014-03-27 H.J. Lu <hongjiu.lu@intel.com>
192 * ldmain.c (symbol_warning): New function.
193 (warning_callback): Use it. Scan all input files for a reference
196 2014-03-21 Christopher Faylor <me.cygwin2013@cgf.cx>
198 * ld.texinfo: Document change in handling of --enable-auto-image-base.
199 * emultempl/pe.em (pe_auto_image_base): Set to default base.
200 (gld_${EMULATION_NAME}_list_options): Change usage message to reflect
201 optional --enable-auto-image-base argument.
202 (gld${EMULATION_NAME}_handle_option): Handle optional
203 --enable-auto-image-base argument.
204 (compute_dll_image_base): Eliminate constant. Use pe_auto_image_base.
206 2014-03-19 Nick Clifton <nickc@redhat.com>
208 * Makefile.am (default-manifest.o): Use WINDRES_FOR_TARGET.
209 * Makefile.in: Regenerate.
210 * emultempl/default-manifest.rc: Fix typo.
211 * scripttempl/pe.sc (R_RSRC): Fix default-manifest exclusion.
212 (.rsrc): Add SUBALIGN(4). Remove SORT.
213 * scripttempl/pep.sc: Likewise.
215 2014-03-17 Christopher Faylor <me.cygwin2014@cgf.cx>
217 * Makefile.am: Use host version of windres.
218 * Makefile.in: Regenerate.
220 2014-03-14 Romain Geissler <romain.geissler@amadeus.com>
221 Alan Modra <amodra@gmail.com>
223 * ldlang.h (full_name_provided): New input flag.
224 * ldlang.c (new_afile): Don't use lang_input_file_is_search_file_enum
225 for -l:namespec. Instead use lang_input_file_is_l_enum with
226 full_name_provided flag.
227 * ldlfile.c (ldfile_open_file_search): Don't complete lib name if
228 full_name_provided flag is set.
229 * emultempl/elf32.em (gld${EMULATION_NAME}_open_dynamic_archive):
230 Handle full_name_provided libraries. Tidy EXTRA_SHLIB_EXTENSION
231 support. Set DT_NEEDED for -l:namespec as namespec.
232 * emultempl/aix.em (ppc_after_open_output): Handle full_name_provided.
233 * emultempl/linux.em (gld${EMULATION_NAME}_open_dynamic_archive):
234 Don't handle full_name_provided libraries.
235 * emultempl/pe.em (gld${EMULATION_NAME}_open_dynamic_archive): Ditto.
236 * emultempl/pep.em (gld${EMULATION_NAME}_open_dynamic_archive): Ditto.
237 * emultempl/vms.em (gld${EMULATION_NAME}_open_dynamic_archive): Ditto.
239 2014-03-12 Alan Modra <amodra@gmail.com>
241 * Makefile.in: Regenerate.
243 2014-03-05 Alan Modra <amodra@gmail.com>
245 Update copyright years.
247 2014-03-04 Nick Clifton <nickc@redhat.com>
249 * Makefile.am (ALL_EMUL_EXTRA_BINARIES): Remove default-manifest.
250 * Makefile.in: Regenerate.
252 2014-02-27 Yuri Gribov <y.gribov@samsung.com>
254 * emultempl/armelf.em (OPTION_LONG_PLT): Define.
255 (PARSE_AND_LIST_LONGOPTS): Add long-plt.
256 (PARSE_AND_LIST_OPTIONS): Likewise.
257 (PARSE_AND_LIST_ARGS_CASES): Handle long-plt.
258 * ld.texinfo: Document --long-plt.
260 2014-02-27 Alan Modra <amodra@gmail.com>
262 * emulparams/elf32ppcvxworks.sh: Source plt_unwind.sh and
264 * emultempl/ppc32elf.em (ppc_after_open): Don't compile for
266 (LDEMUL_AFTER_OPEN): Don't set for vxworks.
267 (PARSE_AND_LIST_LONGOPTS, PARSE_AND_LIST_OPTIONS): Exclude
268 -secure-plt, -bss-plt and -sdata-got when vxworks.
270 2014-02-27 Nick Clifton <nickc@redhat.com>
272 * configure.in (all_emul_extra_binaries): New variable. Populated
273 by invoking configure.tgt.
274 (EMUL_EXTRA_BINARIES): New substitution.
275 * configure: Regenerate.
276 * configure.tgt (target_extra_binaries): New variable. Set to
277 default-manifest.o for Cygwin and MinGW targets.
278 * Makefile.am (EMUL_EXTRA_BINARIES): New variable. Initialised
279 by the configure script.
280 (ALL_EMUL_EXTRA_BINARIES): New variable.
281 (default-manifest.o): New rule to build the default manifest.
282 (ld_new_DEPENDENCIES): Add EMUL_EXTRA_BINARIES.
283 (install-data-local): Add EMUL_EXTRA_BINARIES.
284 * Makefile.in: Regenerate.
285 * ld.texinfo: Document default manifest support.
286 * emulparams/i386pe.sh (DEFAULT_MANIFEST): Define.
287 * emulparams/i386pep.sh (DEFAULT_MANIFEST): Define.
288 * emultempl/default-manifest.rc: New file.
289 * scripttempl/pe.sc (R_RSRC): Include DEFAULT_MANIFEST, if defined.
290 * scripttempl/pep.sc (R_RSRC): Likewise.
292 2014-02-26 Dan Mick <dan.mick@inktank.com>
295 * ldcref.c (cref_sort_array): Compare unmangled names unless
296 demanglng has been requiested.
297 (output_one_cref): Output unmangled name unless demangling has
300 2014-02-19 Igor Zamyatin <igor.zamyatin@intel.com>
301 H.J. Lu <hongjiu.lu@intel.com>
303 * emulparams/elf_x86_64.sh (TINY_READONLY_SECTION): New.
305 2014-02-19 Alan Modra <amodra@gmail.com>
307 * emultempl/ppc64elf.em (params): Init new field.
308 (ppc_create_output_section_statements): Set params.save_restore_funcs
310 (PARSE_AND_LIST_*): Add support for --save-restore-funcs and
311 --no-save-restore-funcs.
313 2014-02-17 Alan Modra <amodra@gmail.com>
315 * emultemps/ppc64elf.em (params): New static struct replacing
316 various other static vars. Adjust code throughout file.
318 2014-02-17 Alan Modra <amodra@gmail.com>
320 * emultempl/ppc32elf.em (ppc_after_open_output): Really enable
321 ppc476 workaround for ld -r.
323 2014-02-12 Alan Modra <amodra@gmail.com>
325 * emultempl/ppc32elf.em (pagesize): New static var.
326 (ppc_after_open_output): Set params.pagesize_p2 from pagesize.
327 (PARSE_AND_LIST_ARGS_CASES): Adjust to use pagesize.
329 2014-02-11 Andrew Pinski <apinski@cavium.com>
331 * emulparams/aarch64linux32.sh (LIBPATH_SUFFIX): Change to ilp32.
332 (ELF_INTERPRETER_NAME): Define.
333 * emulparams/aarch64linux32b.sh (ELF_INTERPRETER_NAME): Define.
335 2014-02-10 Alan Modra <amodra@gmail.com>
337 * po/ld.pot: Regenerate.
339 2014-02-03 Alan Modra <amodra@gmail.com>
341 * emultempl/ppc32elf.em (no_tls_get_addr_opt, emit_stub_syms)
342 plt_style): Delete. Adjust all refs to instead use..
343 (params): ..this. New variable.
344 (ppc_after_open_output): New function. Tweak params and pass to
346 (ppc_after_open): Adjust ppc_elf_select_plt_layout call.
347 (ppc_before_allocation): Adjust ppc_elf_tls_setup call. Enable
348 relaxation for ppc476 workaround.
349 (PARSE_AND_LIST_*): Add --{no-,}ppc476-workaround support.
350 (LDEMUL_CREATE_OUTPUT_SECTION_STATEMENTS): Define.
352 2014-02-02 Sebastian Huber <sebastian.huber@embedded-brains.de>
354 * ld/ld.texinfo: Change ALIGN_WITH_INPUT documentation.
355 * ld/ldlang.c (lang_size_sections_1): Add dotdelta
356 variable which reflects the VMA change due to alignment
357 requirements. Use dotdelta do change the LMA if
358 ALIGN_WITH_INPUT is requested.
360 2014-02-01 Hans-Peter Nilsson <hp@bitrange.com>
362 * emultempl/mmix-elfnmmo.em (mmix_after_allocation): Fix typo in
363 call to bfd_set_section_vma exposed by recent bfd_set_section_vma
366 2014-01-30 Sandra Loosemore <sandra@codesourcery.com>
368 * Makefile.am (enios2elf.c, enios2linux.c): Update dependencies.
369 * Makefile.in: Regenerated.
370 * emulparams/nios2elf.sh (EXTRA_EM_FILE): Set.
371 * emulparams/nios2linux.sh (EXTRA_EM_FILE): Set.
372 * emultempl/nios2elf.em: New file.
373 * gen-doc.texi (NIOSII): Set.
374 * ld.texinfo (NIOSII): Set.
376 2014-01-28 Nick Clifton <nickc@redhat.com>
378 * Makefile.am: Remove obsolete MSP430 emulations.
379 * configure.tgt: Likewise.
380 * emulparams/msp430all.sh: Likewise.
381 * Makefile.in: Regenerate.
383 2014-01-24 H.J. Lu <hongjiu.lu@intel.com>
386 * emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Improve
387 orphaned TLS section handling.
389 2014-01-24 Alan Modra <amodra@gmail.com>
391 * ldlang.c (lang_output_section_find_by_flags): Be careful to
392 test look->bfd_section->flags if available rather than
393 look->flags. Separate SEC_THREAD_LOCAL handling from
394 SEC_READONLY loop, and rewrite.
396 2014-01-22 Alan Modra <amodra@gmail.com>
398 * ldlang.c (asneeded_list_head, asneeded_list_tail): New vars.
399 (lang_init): Initialise them.
400 (lang_print_asneeded): New function.
401 (lang_process): Call lang_print_asneeded.
402 * ldlang.h (struct asneeded_minfo): New.
403 (asneeded_list_tail): Declare.
404 * ldmain.c (add_archive_element): Improve archive map heading.
405 * ldmisc.c (minfo): Stash --as-needed info.
407 2014-01-22 Alan Modra <amodra@gmail.com>
409 * ld.h (struct map_symbol_def): Move to..
411 * ldlang.c (print_assignment): Don't set expld.assign_name to dot.
413 2014-01-22 Alan Modra <amodra@gmail.com>
415 * ld.texinfo (Output Section Discarding): Mention assigning to dot
416 as a way of keeping otherwise empty sections.
417 * ldexp.c (is_dot, is_value, is_sym_value, is_dot_ne_0,
418 is_dot_plus_0, is_align_conditional): New predicates.
419 (exp_fold_tree_1): Set SEC_KEEP when assigning to dot inside an
420 output section, except for some special cases.
421 * scripttempl/elfmicroblaze.sc: Use canonical form to align at
422 end of .heap and .stack.
424 2014-01-20 Marcus Shawcroft <marcus.shawcroft@arm.com>
426 * emulparams/aarch64linuxb.sh (ELF_INTERPRETER_NAME): Define.
428 2014-01-20 Marcus Shawcroft <marcus.shawcroft@arm.com>
430 * emulparams/aarch64linux.sh (ELF_INTERPRETER_NAME): Define.
432 2014-01-20 Alan Modra <amodra@gmail.com>
434 * ldlang.h (struct lang_definedness_hash_entry): Add by_object and
435 by_script. Make iteration a single bit field.
436 (lang_track_definedness, lang_symbol_definition_iteration): Delete.
437 (lang_symbol_defined): Declare.
438 * ldlang.c (lang_statement_iteration): Expand comment a little.
439 (lang_init <lang_definedness_table>): Make it bigger.
440 (lang_track_definedness, lang_symbol_definition): Delete.
441 (lang_definedness_newfunc): Update.
442 (lang_symbol_defined): New function.
443 (lang_update_definedness): Create entries here. Do track whether
444 script definition of symbol is valid, even when also defined in
446 * ldexp.c (fold_name <DEFINED>): Update.
447 (fold_name <NAME>): Allow self-assignment for absolute symbols
448 defined in a linker script.
450 2014-01-20 Guy Martin <gmsoft@tuxicoman.be>
451 Alan Modra <amodra@gmail.com>
453 * ldlang.h (lang_output_section_get): Define.
454 * ldlang.c (lang_output_section_get): Likewise.
455 (init_os): Set the output_section userdata to the output
457 * emultempl/hppaelf.em: Use lang_output_section_get instead of
458 lang_output_section_find where applicable.
459 * emultempl/aarch64elf.em: Likewise.
460 * emultempl/aix.em: Likewise.
461 * emultempl/armelf.em: Likewise.
462 * emultempl/m68hc1xelf.em: Likewise.
463 * emultempl/metagelf.em: Likewise.
464 * emultempl/mipself.em: Likewise.
465 * emultempl/ppc64elf.em: Likewise.
466 * emultempl/spuelf.em: Likewise.
468 2014-01-17 Alan Modra <amodra@gmail.com>
470 * genscripts.sh (COMPILE_IN): Don't set if already set.
471 * emulparams/nds32elf.sh: Don't clear EMULATION_LIBPATH, set
473 * emulparams/nds32elf16m.sh: Likewise.
474 * emulparams/nds32elf_linux.sh: Likewise.
475 * emultempl/aix.em: Test COMPILE_IN value is "yes".
476 * emultempl/armcoff.em: Likewise.
477 * emultempl/elf32.em: Likewise.
478 * emultempl/generic.em: Likewise.
479 * emultempl/gld960.em: Likewise.
480 * emultempl/gld960c.em: Likewise.
481 * emultempl/linux.em: Likewise.
482 * emultempl/lnk960.em: Likewise.
483 * emultempl/m68kcoff.em: Likewise.
484 * emultempl/sunos.em: Likewise.
485 * emultempl/ticoff.em: Likewise.
487 2014-01-16 H.J. Lu <hongjiu.lu@intel.com>
490 * genscripts.sh: Don't search directory with LIBPATH_SUFFIX_SKIP
492 * emulparams/elf32_x86_64.sh (LIBPATH_SUFFIX_SKIP): Set to 64
493 for elf32_x86_64 emulation.
494 * emulparams/elf_i386.sh (LIBPATH_SUFFIX_SKIP): Set to 64
495 for elf_i386 emulation.
497 2014-01-16 Alan Modra <amodra@gmail.com>
499 * ld.h (fat_section_userdata_type, get_userdata): Move to..
500 * ldlang.h (input_section_userdata_type, get_userdata): ..here.
501 * ldlang.c (init_map_userdata): Delete. Fold into..
502 (sort_def_symbol): ..here. Don't attach input section userdata
503 to output sections or global bfd sections.
504 (lang_map): Don't pre-allocate input section userdata.
505 (init_os): Don't allocate userdata for output sections.
506 (print_all_symbols): Update.
508 2014-01-15 H.J. Lu <hongjiu.lu@intel.com>
510 * emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation):
511 Silence uninitialized warning on ehdr_start_save with older
514 2014-01-15 Alan Modra <amodra@gmail.com>
516 * emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation): Define
517 __ehdr_start before size_dynamic_sections and restore afterwards.
519 2014-01-10 Alan Modra <amodra@gmail.com>
524 * ldlang.c (lang_size_sections): Remove unneeded RELRO base
525 adjust. Tidy comments.
526 * ld.texinfo (DATA_SEGMENT_RELRO_END): Correct description.
528 2014-01-10 Hans-Peter Nilsson <hp@axis.com>
530 * emulparams/crislinux.sh (COMMONPAGESIZE): Define.
532 2014-01-08 H.J. Lu <hongjiu.lu@intel.com>
537 * ldlang.c (lang_size_sections): Properly align RELRO base.
539 2014-01-08 H.J. Lu <hongjiu.lu@intel.com>
541 * ldver.c (ldversion): Update copyright year to 2014.
543 For older changes see ChangeLog-2013
545 Copyright (C) 2014 Free Software Foundation, Inc.
547 Copying and distribution of this file, with or without modification,
548 are permitted in any medium without royalty provided the copyright
549 notice and this notice are preserved.
555 version-control: never