1 2021-02-18 Nelson Chu <nelson.chu@sifive.com>
3 * Makefile.am: Added cpu-riscv.h.
4 * Makefile.in: Regenerated.
5 * po/SRC-POTFILES.in: Regenerated.
6 * cpu-riscv.h: Added to support spec versions controlling.
7 Also added extern arrays and functions for cpu-riscv.c.
8 (enum riscv_spec_class): Define all spec classes here uniformly.
9 (struct riscv_spec): Added for all specs.
10 (RISCV_GET_SPEC_CLASS): Added to reduce repeated code.
11 (RISCV_GET_SPEC_NAME): Likewise.
12 (RISCV_GET_ISA_SPEC_CLASS): Added to get ISA spec class.
13 (RISCV_GET_PRIV_SPEC_CLASS): Added to get privileged spec class.
14 (RISCV_GET_PRIV_SPEC_NAME): Added to get privileged spec name.
15 * cpu-riscv.c (struct priv_spec_t): Replaced with struct riscv_spec.
16 (riscv_get_priv_spec_class): Replaced with RISCV_GET_PRIV_SPEC_CLASS.
17 (riscv_get_priv_spec_name): Replaced with RISCV_GET_PRIV_SPEC_NAME.
18 (riscv_priv_specs): Moved below.
19 (riscv_get_priv_spec_class_from_numbers): Likewise, updated.
20 (riscv_isa_specs): Moved from include/opcode/riscv.h.
21 * elfnn-riscv.c: Included cpu-riscv.h.
22 (riscv_merge_attributes): Initialize in_priv_spec and out_priv_spec.
23 * elfxx-riscv.c: Included cpu-riscv.h and opcode/riscv.h.
24 (RISCV_UNKNOWN_VERSION): Moved from include/opcode/riscv.h.
25 * elfxx-riscv.h: Removed extern functions to cpu-riscv.h.
27 2021-02-17 Alan Modra <amodra@gmail.com>
29 * wasm-module.c: Guard include of limits.h.
30 (CHAR_BIT): Provide backup define.
31 (wasm_read_leb128): Use CHAR_BIT to size "result" in bits.
32 Correct signed overflow checking.
34 2021-02-17 Nelson Chu <nelson.chu@sifive.com>
37 * elfnn-riscv.c (_bfd_riscv_elf_merge_private_bfd_data): Delay
38 copying the elf flags from input BFD to output BFD, until we have
39 checked if the input BFD has no code section or not. Also fix the
40 problem that we only check the first section rather than the entire
41 sections for input BFD.
43 2021-02-16 Alan Modra <amodra@gmail.com>
45 * libbfd.c (_bfd_read_unsigned_leb128): Avoid excessive shift.
46 (_bfd_safe_read_leb128, _bfd_read_signed_leb128): Likewise.
48 2021-02-15 Jan Beulich <jbeulich@suse.com>
50 * doc/Makefile.am: Replace "cp -p" by "$(LN_S)".
51 * doc/Makefile.in: Re-generate.
53 2021-02-15 Alan Modra <amodra@gmail.com>
55 * elf32-nds32.c (nds32_get_section_contents): Replace
56 bfd_malloc_and_get_section with bfd_get_full_section_contents.
57 (nds32_elf_relax_delete_blanks): Init contents.
58 (nds32_elf_relax_section, nds32_relax_fp_as_gp): Likewise.
60 2021-02-15 Alan Modra <amodra@gmail.com>
62 * coff-alpha.c (alpha_ecoff_get_relocated_section_contents): Use
63 bfd_get_full_section_contents.
65 2021-02-14 Alan Modra <amodra@gmail.com>
67 * elfxx-mips.c (_bfd_elf_mips_get_relocated_section_contents): Apply
68 all fixes to bfd_generic_get_relocated_section_contents since this
69 function was split out.
71 2021-02-11 Alan Modra <amodra@gmail.com>
73 * config.bfd: Remove ia64 from obsolete list.
75 2021-02-11 Alan Modra <amodra@gmail.com>
78 * elfnn-ia64.c: Revert 2017-10-14 git commit db41f6eb5234.
80 2021-02-11 Alan Modra <amodra@gmail.com>
83 * elf32-avr.c (avr_elf32_load_records_from_section): Use
84 bfd_malloc_and_get_section. Use bfd_byte* vars and remove then
87 2021-02-11 Alan Modra <amodra@gmail.com>
90 * section.c (bfd_get_section_contents): Avoid possible overflow
91 when range checking offset and count.
92 (bfd_set_section_contents): Likewise.
94 2021-02-03 Nick Alcock <nick.alcock@oracle.com>
96 * configure.ac (SHARED_LIBADD): Remove explicit -lintl population in
98 * configure: Regenerated.
100 2021-02-09 Alan Modra <amodra@gmail.com>
102 * config.bfd (arm*-*-symbianelf*): Move from obsolete to removed.
103 * configure.ac: Delete symbian entries.
104 * elf-bfd.h (enum elf_target_os): Delete is_symbian.
105 * elf32-arm.c: Remove symbian support. Formatting.
106 * targets.c: Delete symbian entries.
107 * configure: Regenerate.
109 2021-02-04 H.J. Lu <hongjiu.lu@intel.com>
112 * elf64-x86-64.c (elf_x86_64_relocate_section): Provide more
113 info when failed to convert GOTPCREL relocation.
115 2021-02-04 Nelson Chu <nelson.chu@sifive.com>
117 * elfxx-riscv.c (riscv_parse_prefixed_ext): Removed zb*.
119 2021-02-04 Alan Modra <amodra@gmail.com>
122 * elflink.c (elf_link_add_object_symbols): Don't pull in as-needed
123 libraries for IR references on pass over libraries after LTO
126 2021-02-03 Alan Modra <amodra@gmail.com>
129 * elflink.c (_bfd_elf_add_default_symbol): Revert last two changes.
130 (elf_link_add_object_symbols): Here too. Don't pull in as-needed
131 libraries when H is an indirect symbol after calling
132 _bfd_elf_add_default_symbol.
134 2021-02-03 Alan Modra <amodra@gmail.com>
137 * elflink.c (_bfd_elf_add_default_symbol): Clear override when
138 undecorated symbol will have a different version.
140 2021-02-02 Alan Modra <amodra@gmail.com>
143 * elflink.c (_bfd_elf_add_default_symbol): Add override parameter.
144 Use when handling default versioned symbol. Rename existing
145 override variable to nondef_override and use for non-default
147 (elf_link_add_object_symbols): Adjust call to suit. Don't
148 pull in as-needed libraries when override is set.
150 2021-02-01 Emery Hemingway <ehmry@posteo.net>
152 * config.bfd: Add *-*-genode* as a target for AArch64 and x86.
154 2021-02-01 Egor Vishnyakov <lenvampir@yandex.ru>
157 * elf32-rl78.c (rl78_elf_relocate_section): Fix calculation of
158 offset for the R_RL78_RH_SADDR relocation.
160 2021-01-29 Alan Modra <amodra@gmail.com>
163 * elflink.c (bfd_elf_link_record_dynamic_symbol): Don't segfault
164 on symbols defined in absolute or other special sections.
166 2021-01-28 Alan Modra <amodra@gmail.com>
169 * elflink.c (_bfd_elf_gc_mark_extra_sections): Use linker_mark to
170 prevent endless looping of linked-to sections.
172 2020-12-17 Mihails Strasuns <mihails.strasuns@intel.com>
174 * bfd-elf.h (elfcore_write_file_note): New function.
175 * elf.c (elfcore_write_file_note): New function.
177 2021-01-26 Alan Modra <amodra@gmail.com>
179 * elf32-ft32.c (ft32_reloc_type_lookup): Don't miss ft32_reloc_map[0].
181 2021-01-24 H.J. Lu <hongjiu.lu@intel.com>
184 * dwarf2.c (read_rnglists): Ignore empty range when parsing line
187 2021-01-23 H.J. Lu <hongjiu.lu@intel.com>
190 * dwarf2.c (read_rnglists): Advance rngs_ptr after
191 _bfd_safe_read_leb128 when parsing DW_RLE_offset_pair.
193 2021-01-20 Alan Modra <amodra@gmail.com>
195 * elf32-ppc.c: Delete outdated comment.
196 (TARGET_KEEP_UNUSED_SECTION_SYMBOLS): Define.
197 * elf64-ppc.c (TARGET_KEEP_UNUSED_SECTION_SYMBOLS): Define.
199 2021-01-20 Alan Modra <amodra@gmail.com>
201 * elf64-ppc.c (ppc64_elf_get_synthetic_symtab): Don't assume
202 section symbols are present.
204 2021-01-19 Alan Modra <amodra@gmail.com>
206 * elf64-ppc.c (elf_hash_entry): New inline function. Use
207 throughout to replace casts.
208 (branch_reloc_hash_match): Remove const from params.
209 (use_local_plt): New function.
210 (allocate_dynrelocs, ppc_build_one_stub, ppc_size_one_stub),
211 (build_global_entry_stubs_and_plt, ppc64_elf_relocate_section):
213 * elf32-ppc.c (use_local_plt): New function.
214 (allocate_dynrelocs, ppc_elf_relocate_section),
215 (write_global_sym_plt): Use use_local_plt.
217 2021-01-17 H.J. Lu <hongjiu.lu@intel.com>
220 * elflink.c (elf_create_symbuf): Also ignore section symbols.
222 2021-01-16 H.J. Lu <hongjiu.lu@intel.com>
225 * elfxx-x86.c (_bfd_x86_elf_link_fixup_ifunc_symbol): Don't
226 check pointer_equality_needed.
228 2021-01-15 H.J. Lu <hongjiu.lu@intel.com>
230 * elf-linker-x86.h (elf_linker_x86_params): Add
231 report_relative_reloc.
232 * elf32-i386.c (elf_i386_relocate_section): Call
233 _bfd_x86_elf_link_report_relative_reloc to report relative
234 relocations for -z report-relative-reloc.
235 (elf_i386_finish_dynamic_symbol): Likewse.
236 * elf64-x86-64.c (elf_x86_64_relocate_section): Likewse.
237 (elf_x86_64_finish_dynamic_symbol): Likewse.
238 * elfxx-x86.c (_bfd_x86_elf_link_report_relative_reloc): New
240 * elfxx-x86.h (_bfd_x86_elf_link_report_relative_reloc): New
243 2021-01-16 Alan Modra <amodra@gmail.com>
245 * compress.c (decompress_contents): Tidy inflateEnd result test.
247 2021-01-16 Alan Modra <amodra@gmail.com>
250 * elflink.c (elf_link_output_extsym): Use version 1 in
251 .gnu.version for undefined unversioned symbols.
253 2021-01-15 Nelson Chu <nelson.chu@sifive.com>
255 * elfnn-riscv.c (riscv_relax_delete_bytes): Fixed the indent that
256 caused the by previous commit accidentally.
258 2021-01-15 Nelson Chu <nelson.chu@sifive.com>
260 * elfnn-riscv.c: Indent, labels and GNU coding standards tidy,
261 also aligned the code.
263 2021-01-15 Nelson Chu <nelson.chu@sifive.com>
265 * elfnn-riscv.c (riscv_merge_attributes): Fix typos of messages.
267 2021-01-15 Nelson Chu <nelson.chu@sifive.com>
269 * elfnn-riscv.c: Comments tidy and improvement.
270 * elfxx-riscv.c: Likewise.
271 * elfxx-riscv.h: Likewise.
273 2021-01-14 H.J. Lu <hongjiu.lu@intel.com>
276 * elf32-bfin.c (bfinfdpic_relocate_section): Skip non SEC_ALLOC
277 section for R_BFIN_FUNCDESC.
279 2021-01-14 Nick Clifton <nickc@redhat.com>
281 * elf.c (elfcore_grok_win32pstatus): Check for a note type of 0.
283 2021-01-13 Alan Modra <amodra@gmail.com>
285 * Makefile.in: Regenerate.
286 * doc/Makefile.in: Regenerate.
288 2021-01-13 Alan Modra <amodra@gmail.com>
291 * section.c (struct bfd_section): Remove pattern field.
292 (BFD_FAKE_SECTION): Adjust to suit.
293 * bfd-in2.h: Regenerate.
294 * elflink.c (compare_link_order, elf_fixup_link_order): Delete.
295 (bfd_elf_final_link): Don't call elf_fixup_link_order.
297 2021-01-12 H.J. Lu <hongjiu.lu@intel.com>
300 * configure.ac: Use GNU_MAKE_JOBSERVER.
301 * aclocal.m4: Regenerated.
302 * configure: Likewise.
304 2021-01-12 H.J. Lu <hongjiu.lu@intel.com>
307 * reloc.c (bfd_perform_relocation): Adjust R_AMD64_DIR64 and
308 R_AMD64_DIR32 relocations for PE/x86-64 inputs.
310 2021-01-11 H.J. Lu <hongjiu.lu@intel.com>
313 * configure: Regenerated.
315 2021-01-11 Nick Clifton <nickc@redhat.com>
317 * po/fr.po: Updated French translation.
318 * po/pt.po: Updated Portuguese translation.
319 * po/sr.po: Updated Serbian translation.
320 * po/uk.po: Updated Ukranian translation.
322 2021-01-09 H.J. Lu <hongjiu.lu@intel.com>
324 * configure: Regenerated.
326 2021-01-09 H.J. Lu <hongjiu.lu@intel.com>
329 * elfxx-x86.c (_bfd_x86_elf_merge_gnu_properties): Handle
330 -z lam-u48 and -z lam-u57.
332 2021-01-09 Nick Clifton <nickc@redhat.com>
334 * version.m4: Change to 2.36.50.
335 * configure: Regenerate.
336 * po/bfd.pot: Regenerate.
338 2021-01-09 Nick Clifton <nickc@redhat.com>
340 * 2.36 release branch crated.
342 2021-01-08 H.J. Lu <hongjiu.lu@intel.com>
344 * elfxx-x86.c (_bfd_x86_elf_link_setup_gnu_properties): Also set
345 LAM_U57 when setting LAM_U48.
347 2021-01-08 H.J. Lu <hongjiu.lu@intel.com>
351 * elflink.c (elf_fixup_link_order): Verify that fixing up
352 SHF_LINK_ORDER doesn't increase the output section size.
354 2021-01-09 Alan Modra <amodra@gmail.com>
356 * configure: Regenerate.
358 2021-01-07 Samuel Thibault <samuel.thibault@gnu.org>
360 * configure: Regenerate.
362 2021-01-07 H.J. Lu <hongjiu.lu@intel.com>
365 * aix386-core.c (core_aix386_vec): Initialize
366 keep_unused_section_symbol to TARGET_KEEP_UNUSED_SECTION_SYMBOLS.
367 * aout-target.h (MY (vec)): Likewise.
368 * binary.c (binary_vec): Likewise.
369 * cisco-core.c (core_cisco_be_vec): Likewise.
370 (core_cisco_le_vec): Likewise.
371 * coff-alpha.c (alpha_ecoff_le_vec): Likewise.
372 * coff-i386.c (TARGET_SYM): Likewise.
373 (TARGET_SYM_BIG): Likewise.
374 * coff-ia64.c (TARGET_SYM): Likewise.
375 * coff-mips.c (mips_ecoff_le_vec): Likewise.
376 (mips_ecoff_be_vec): Likewise.
377 (mips_ecoff_bele_vec): Likewise.
378 * coff-rs6000.c (rs6000_xcoff_vec): Likewise.
379 (powerpc_xcoff_vec): Likewise.
380 * coff-sh.c (sh_coff_small_vec): Likewise.
381 (sh_coff_small_le_vec): Likewise.
382 * coff-tic30.c (tic30_coff_vec): Likewise.
383 * coff-tic54x.c (tic54x_coff0_vec): Likewise.
384 (tic54x_coff0_beh_vec): Likewise.
385 (tic54x_coff1_vec): Likewise.
386 (tic54x_coff1_beh_vec): Likewise.
387 (tic54x_coff2_vec): Likewise.
388 (tic54x_coff2_beh_vec): Likewise.
389 * coff-x86_64.c (TARGET_SYM): Likewise.
390 (TARGET_SYM_BIG): Likewise.
391 * coff64-rs6000.c (rs6000_xcoff64_vec): Likewise.
392 (rs6000_xcoff64_aix_vec): Likewise.
393 * coffcode.h (CREATE_BIG_COFF_TARGET_VEC): Likewise.
394 (CREATE_BIGHDR_COFF_TARGET_VEC): Likewise.
395 (CREATE_LITTLE_COFF_TARGET_VEC): Likewise.
396 * elfxx-target.h (TARGET_BIG_SYM): Likewise.
397 (TARGET_LITTLE_SYM): Likewise.
398 * hppabsd-core.c (core_hppabsd_vec): Likewise.
399 * hpux-core.c (core_hpux_vec): Likewise.
400 * i386msdos.c (i386_msdos_vec): Likewise.
401 * ihex.c (ihex_vec): Likewise.
402 * irix-core.c (core_irix_vec): Likewise.
403 * mach-o-target.c (TARGET_NAME): Likewise.
404 * mmo.c (mmix_mmo_vec): Likewise.
405 * netbsd-core.c (core_netbsd_vec): Likewise.
406 * osf-core.c (core_osf_vec): Likewise.
407 * pdp11.c (MY (vec)): Likewise.
408 * pef.c (pef_vec): Likewise.
409 (pef_xlib_vec): Likewise.
410 * plugin.c (plugin_vec): Likewise.
411 * ppcboot.c (powerpc_boot_vec): Likewise.
412 * ptrace-core.c (core_ptrace_vec): Likewise.
413 * sco5-core.c (core_sco5_vec): Likewise.
414 * som.c (hppa_som_vec): Likewise.
415 * srec.c (srec_vec): Likewise.
416 (symbolsrec_vec): Likewise.
417 * tekhex.c (tekhex_vec): Likewise.
418 * trad-core.c (core_trad_vec): Likewise.
419 * verilog.c (verilog_vec): Likewise.
420 * vms-alpha.c (alpha_vms_vec): Likewise.
421 * vms-lib.c (alpha_vms_lib_txt_vec): Likewise.
422 * wasm-module.c (wasm_vec): Likewise.
423 * xsym.c (sym_vec): Likewise.
424 * elf.c (ignore_section_sym): Return TRUE if BSF_SECTION_SYM_USED
426 (elf_map_symbols): Don't include ignored section symbols.
427 * elfcode.h (elf_slurp_symbol_table): Also set
428 BSF_SECTION_SYM_USED on STT_SECTION symbols.
429 * elflink.c (bfd_elf_final_link): Generated section symbols only
430 when emitting relocations or reqired.
431 * elfxx-x86.h (TARGET_KEEP_UNUSED_SECTION_SYMBOLS): New.
432 * syms.c (BSF_SECTION_SYM_USED): New.
433 * targets.c (TARGET_KEEP_UNUSED_SECTION_SYMBOLS): New.
434 (bfd_target): Add keep_unused_section_symbols.
435 (bfd_keep_unused_section_symbols): New.
436 * bfd-in2.h: Regenerated.
438 2021-01-07 Nick Clifton <nickc@redhat.com>
441 * bfdio.c (_bfd_real_fopen): For Win32 convert relative paths to
442 absolute paths and check to see if they are longer than MAX_PATH.
444 2021-01-07 Philipp Tomsich <prt@gnu.org>
446 * elfxx-riscv.c (riscv_std_z_ext_strtab): Added zihintpause.
448 2021-01-07 Claire Xenia Wolf <claire@symbioticeda.com>
449 Jim Wilson <jimw@sifive.com>
450 Andrew Waterman <andrew@sifive.com>
451 Maxim Blinov <maxim.blinov@embecosm.com>
452 Kito Cheng <kito.cheng@sifive.com>
453 Nelson Chu <nelson.chu@sifive.com>
455 * elfxx-riscv.c (riscv_std_z_ext_strtab): Added zba, zbb and zbc.
457 2021-01-06 H.J. Lu <hongjiu.lu@intel.com>
459 * elf32-bfin.c (bfin_check_relocs): Check bfd_link_hash_indirect.
460 (bfinfdpic_check_relocs): Likewise.
462 2021-01-06 Alan Modra <amodra@gmail.com>
464 * elf32-score.c (s3_bfd_score_info_to_howto): Report an error
466 * elf32-score7.c (s7_bfd_score_info_to_howto): Likewise.
468 2021-01-06 Alan Modra <amodra@gmail.com>
470 * config.bfd (sparc-*-solaris2*): Add sparc_elf32_vec.
471 (sparc64-*-solaris2*): Add sparc_elf64_vec and
474 2021-01-06 Marcus Comstedt <marcus@mc.pp.se>
476 * config.bfd: Added targets riscv64be*-*-*, riscv32be*-*-* and
477 riscvbe*-*-*. Also added riscv_elf[32|64]_be_vec.
478 * configure.ac: Handle riscv_elf[32|64]_be_vec.
479 * configure: Regenerate.
480 * elfnn-riscv.c: Include <limits.h> and define CHAR_BIT for
482 (riscv_get_insn): RISC-V instructions are always little endian, but
483 bfd_get may be used for big-endian, so add new riscv_get_insn to handle
485 (riscv_put_insn): Likewsie.
486 (riscv_is_insn_reloc): Check if we are relocaing an instruction.
487 (perform_relocation): Call riscv_is_insn_reloc to decide if we should
488 use riscv_[get|put]_insn or bfd_[get|put].
489 (riscv_zero_pcrel_hi_reloc): Use riscv_[get|put]_insn, bfd_[get|put]l32
490 or bfd_[get|put]l16 for code.
491 (riscv_elf_relocate_section): Likewise.
492 (riscv_elf_finish_dynamic_symbol): Likewise.
493 (riscv_elf_finish_dynamic_sections): Likewise.
494 (_bfd_riscv_relax_call): Likewise.
495 (_bfd_riscv_relax_lui): Likewise.
496 (_bfd_riscv_relax_align): Likewise.
497 (_bfd_riscv_relax_pc): Likewise.
498 (riscv_elf_object_p): Handled for big endian.
499 (TARGET_BIG_SYM, TARGET_BIG_NAME): Defined.
500 * targets.c: Add riscv_elf[32|64]_be_vec.
501 (_bfd_target_vector): Likewise.
503 2021-01-05 Alan Modra <amodra@gmail.com>
505 * elflink.c (bfd_elf_link_record_dynamic_symbol): Handle no_export
506 for relocatable executable.
508 2021-01-05 Alan Modra <amodra@gmail.com>
510 * vms-alpha.c (_bfd_vms_slurp_egsd): Read flags after size check.
512 2021-01-05 Nelson Chu <nelson.chu@sifive.com>
514 * elfnn-riscv.c (allocate_dynrelocs): When we are generating pde,
515 make sure gp symbol is output as a dynamic symbol.
517 2021-01-04 H.J. Lu <hongjiu.lu@intel.com>
520 * elflink.c (compare_link_order): Place unordered sections before
522 (elf_fixup_link_order): Add a link info argument. Allow mixed
523 ordered and unordered input sections for non-relocatable link.
524 Sort the consecutive bfd_indirect_link_order sections with the
525 same pattern. Change the offsets of the bfd_indirect_link_order
527 (bfd_elf_final_link): Pass info to elf_fixup_link_order.
528 * section.c (bfd_section): Add pattern.
529 (BFD_FAKE_SECTION): Initialize pattern to NULL.
530 * bfd-in2.h: Regenerated.
532 2021-01-04 Alexander Fedotov <alfedotov@gmail.com>
534 * elf32-arm.c (elf32_arm_print_private_bfd_data): Prefix hex value
535 of private flags with 0x.
536 * elfnn-aarch64.c (elfNN_aarch64_print_private_bfd_data): Likewise.
538 2021-01-04 Alan Modra <amodra@gmail.com>
541 * elflink.c (elf_link_input_bfd): Use the file base name in
542 linker generated STT_FILE symbols.
544 2021-01-04 Nelson Chu <nelson.chu@sifive.com>
546 * elfxx-riscv.c (riscv_compare_subsets): Removed static.
547 * elfxx-riscv.h: Add declaration.
548 * elfnn-riscv.c (riscv_merge_multi_letter_ext): Use
549 riscv_compare_subsets to check the orders.
550 (riscv_skip_prefix): Removed.
551 (riscv_prefix_cmp): Removed.
553 2021-01-04 Alan Modra <amodra@gmail.com>
556 * elfxx-riscv.c (riscv_parse_prefixed_ext): Free subset after
557 calculating subset version length.
559 2021-01-01 Nicolas Boulenguez <nicolas@debian.org>
561 * xcofflink.c: Correct spelling in comments.
563 2021-01-01 Alan Modra <amodra@gmail.com>
565 Update year range in copyright notice of all files.
567 For older changes see ChangeLog-2020
569 Copyright (C) 2021 Free Software Foundation, Inc.
571 Copying and distribution of this file, with or without modification,
572 are permitted in any medium without royalty provided the copyright
573 notice and this notice are preserved.
579 version-control: never