Commit | Line | Data |
---|---|---|
901f1d17 AM |
1 | 2011-04-18 Alan Modra <amodra@gmail.com> |
2 | ||
3 | PR ld/12365 | |
4 | PR ld/12672 | |
5 | * ldfile.c (ldfile_try_open_bfd): Don't attempt any plugin action | |
6 | when no_more_claiming. | |
7 | * ldmain.c (add_archive_element): Likewise. | |
8 | (multiple_definition): Remove plugin_multiple_definition call. | |
9 | (notice): Remove plugin_notice call. | |
10 | * ldlang.c (lang_list_insert_after, void lang_list_remove_tail): Move. | |
11 | Delete prototype. | |
12 | (plugin_insert): New static var. | |
13 | (open_input_bfds): Only rescan libs after plugin insert point. | |
14 | (lang_gc_sections): Omit plugin claimed files. | |
15 | (lang_process): Set plugin_insert. Only rescan when plugin adds | |
16 | objects. | |
17 | * plugin.h (no_more_claiming): Declare. | |
18 | (plugin_notice, plugin_multiple_definition): Don't declare. | |
19 | * plugin.c: Formatting. | |
20 | (orig_notice_all, orig_allow_multiple_defs, orig_callbacks, | |
21 | plugin_callbacks): New static vars. | |
22 | (no_more_claiming): Make global. | |
23 | (plugin_cached_allow_multiple_defs): Delete. | |
24 | (plugin_get_ir_dummy_bfd): Set SEC_EXCLUDE on dummy .text section, | |
25 | use newer bfd_make_section variant. Make COMMON section too. | |
26 | Error handling. Correct setting of gp size. | |
27 | (asymbol_from_plugin_symbol): Properly cast last arg of concat. | |
28 | (message): Likewise for ACONCAT. | |
29 | (asymbol_from_plugin_symbol): Use our COMMON section. | |
30 | (get_symbols): When report_plugin_symbols, show visibility too. | |
31 | (init_non_ironly_hash): Move. Don't test non_ironly_hash. | |
32 | (plugin_load_plugins): Save state of linker callbacks, set up to | |
33 | call plugin_notice instead. Call init_non_ironly_hash here. | |
34 | (plugin_call_all_symbols_read): Set plugin_multiple_definition in | |
35 | plugin callbacks. | |
36 | (plugin_notice): Rewrite. | |
37 | (plugin_multiple_definition): Make static, call original callback. | |
38 | ||
486329aa AM |
39 | 2011-04-15 Alan Modra <amodra@gmail.com> |
40 | ||
41 | PR ld/12672 | |
42 | * ldlang.c (enum open_bfd_mode): New. | |
43 | (open_input_bfds): Replace "force" param with "mode". Reload | |
44 | archives for rescan. Update all callers. | |
45 | (lang_process): Make another open_input_bfds pass for plugins. | |
46 | ||
db17156e KT |
47 | 2011-04-13 Kai Tietz <ktietz@redhat.com> |
48 | ||
49 | PR binutils/12658 | |
50 | * deffile.h (def_file_add_export): Add is_dup argument. | |
51 | (def_file_add_import): Likewise. | |
52 | * deffilep.y (are_names_equal): New helper. | |
53 | (cmp_export_elem): New helper. | |
54 | (find_export_in_list): Add search routine for exports. | |
55 | (def_file_add_export): Check for duplicates. | |
56 | (cmp_import_elem): New helper. | |
57 | (find_import_in_list): Add search routine for imports. | |
58 | (def_file_add_import): Check for duplicates. | |
59 | (def_exports): Handle duplicates. | |
60 | (def_imports): Likewise. | |
61 | * pe-dll.c (process_def_file_and_drectve): Likewise. | |
62 | (pe_implied_import_dll): Likewise. | |
63 | ||
ed0d9c71 NC |
64 | 2011-04-11 Chris Quenelle <chris.quenelle@oracle.com> |
65 | ||
66 | * scripttempl/elf.sc (.exception_ranges): Add new section. | |
67 | ||
0e9dfb46 NC |
68 | 2011-04-08 Hector Oron <hector.oron@gmail.com> |
69 | ||
70 | PR ld/12643 | |
71 | * configure.tgt: Add support for arm-*-gnueabihf targets. | |
72 | ||
80518809 EW |
73 | 2011-04-07 Eric B. Weddington <eric.weddington@atmel.com> |
74 | ||
75 | * Makefile.in: Regenerate. Remove stray eavrtiny10 rules. | |
76 | ||
91db4c57 JM |
77 | 2011-04-07 Joseph Myers <joseph@codesourcery.com> |
78 | ||
79 | * configure.tgt: Remove stray ;;. | |
80 | ||
8c5fc800 JM |
81 | 2011-04-06 Joseph Myers <joseph@codesourcery.com> |
82 | ||
83 | * configure.tgt (thumb-*-linux-* | thumb-*-uclinux*, | |
84 | strongarm-*-coff, strongarm-*-elf, strongarm-*-kaos*, | |
85 | thumb-*-coff, thumb-*-elf, thumb-epoc-pe, thumb-*-pe, | |
86 | xscale-*-coff, xscale-*-elf): Remove targets. | |
87 | ||
d02c4aae L |
88 | 2011-03-31 H.J. Lu <hongjiu.lu@intel.com> |
89 | ||
90 | * configure.tgt: Add elf_l1om to targ_extra_libpath for | |
91 | x86_64-*-linux-*. | |
92 | ||
93 | * emulparams/elf_l1om.sh: Remove duplicates. | |
94 | ||
ac145307 BS |
95 | 2011-03-31 Bernd Schmidt <bernds@codesourcery.com> |
96 | ||
97 | * emulparams/elf32_tic6x_le.sh (BIG_OUTPUT_FORMAT, EXTRA_EM_FILE, | |
98 | GENERATE_SHLIB_SCRIPT): New defines. | |
99 | (TEXT_START_ADDR): Define differently depending on target. | |
100 | (.got): Redefine to include "*(.dsbt)". | |
101 | (SDATA_START_SYMBOLS): Remove, replace with | |
102 | (OTHER_GOT_SYMBOLS): New. | |
103 | (OTHER_BSS_SECTIONS): Define only for ELF targets. | |
104 | * emultempl/tic6xdsbt.em: New file. | |
105 | * gen-doc.texi: Set C6X. | |
106 | * ld.texinfo: Likewise. | |
107 | (Options specific to C6X uClinux targets): New section. | |
108 | ||
c3a7b120 AM |
109 | 2011-03-29 Alan Modra <amodra@gmail.com> |
110 | ||
111 | PR ld/12613 | |
112 | * ldlex.l (lex_warn_invalid): Don't assume char is unsigned. | |
113 | ||
5b806d27 NC |
114 | 2011-03-26 John Marino <binutils@marino.st> |
115 | ||
116 | * configure.host: Update *-*-dragonfly* host entry. | |
117 | * configure.tgt: Update *-*-dragonfly* target entry. | |
118 | * ldlex.l: Prevent redefinition of YY_NO_UNPUT. | |
119 | ||
f31d24a0 JM |
120 | 2011-03-28 Joseph Myers <joseph@codesourcery.com> |
121 | ||
122 | * configure.in: Check for windows.h, not Windows.h. | |
123 | * configure: Regenerate. | |
124 | * plugin.c: Include windows.h, not Windows.h. | |
125 | ||
d0289b45 EW |
126 | 2011-03-25 Eric B. Weddington <eric.weddington@atmel.com> |
127 | ||
128 | * Makefile.in: Regenerate. | |
129 | ||
d436a15e JM |
130 | 2011-03-23 Joseph Myers <joseph@codesourcery.com> |
131 | ||
132 | * lexsup.c (parse_args): Only set report_plugin_symbols if plugins | |
133 | are enabled. Mark level as possibly unused. | |
134 | ||
8cc66334 EW |
135 | 2011-03-22 Eric B. Weddington <eric.weddington@atmel.com> |
136 | ||
137 | * Makefile.am (ALL_EMULATION_SOURCES): Add AVR XMEGA architectures. | |
138 | (eavrxmega?.c): Likewise. | |
139 | * configure.tgt (targ_extra_emuls): Likewise. | |
140 | * emulparams/avrxmega1.sh: New file. | |
141 | * emulparams/avrxmega2.sh: Likewise. | |
142 | * emulparams/avrxmega3.sh: Likewise. | |
143 | * emulparams/avrxmega4.sh: Likewise. | |
144 | * emulparams/avrxmega5.sh: Likewise. | |
145 | * emulparams/avrxmega6.sh: Likewise. | |
146 | * emulparams/avrxmega7.sh: Likewise. | |
147 | * emultempl/avrelf.em (avr_elf_${EMULATION_NAME}_before_allocation): | |
148 | Add avrxmega6, avrxmega7 to list of architectures for no stubs. | |
149 | ||
ef844a53 EW |
150 | 2011-03-21 Eric B. Weddington <eric.weddington@atmel.com> |
151 | ||
152 | * scripttempl/avr.sc: Add fuse, lock, and signature memory regions. | |
153 | ||
35fc36a8 RS |
154 | 2011-03-14 Richard Sandiford <richard.sandiford@linaro.org> |
155 | ||
156 | * emultempl/armelf.em (gld${EMULATION_NAME}_finish): Check | |
157 | eh->target_internal. | |
158 | ||
cbc704f3 RS |
159 | 2011-03-14 Richard Sandiford <richard.sandiford@linaro.org> |
160 | ||
161 | * emultempl/armelf.em (arm_elf_before_allocation): Check dynobj | |
162 | instead of dynamic_sections_created. | |
163 | ||
10be1b6a DK |
164 | 2011-03-10 Dave Korn <dave.korn.cygwin@gmail.com> |
165 | ||
166 | * plugin.c (get_symbols): Use wrapped lookup for undefined symbols. | |
167 | ||
422b6f14 DK |
168 | 2011-03-10 Dave Korn <dave.korn.cygwin@gmail.com> |
169 | ||
170 | * ldlang.c (lang_check): Don't run checks on dummy IR BFDs. | |
171 | ||
8543fde5 DK |
172 | 2011-03-10 Dave Korn <dave.korn.cygwin@gmail.com> |
173 | ||
174 | * ldlang.h (lang_input_statement_type): Add new 'claim_archive' flag, | |
175 | wrapping both it and 'claim' flag in #ifdef ENABLE_PLUGINS. | |
176 | * ldmain.c (add_archive_element): Set it if the member is claimed. | |
177 | * ldlang.c (new_afile): Initialise claim_archive and claimed members. | |
178 | (find_replacements_insert_point): New helper function. | |
179 | (lang_process): After adding and opening replacement files passed | |
180 | from plugin, splice them into correct place in statement list and | |
181 | file chains to preserve critical link order. | |
182 | (lang_list_insert_after): New helper function. | |
183 | (lang_list_remove_tail): Likewise. | |
184 | ||
cf4dc96f DK |
185 | 2011-03-10 Dave Korn <dave.korn.cygwin@gmail.com> |
186 | ||
187 | * plugin.c (IRONLY_SUFFIX): Revise to nicely human-readable form. | |
188 | (IRONLY_SUFFIX_LEN): Delete. | |
189 | (plugin_get_ir_dummy_bfd): Don't append IRONLY_SUFFIX. | |
190 | (is_ir_dummy_bfd): Don't look for suffix; check claimed flag of | |
191 | enclosing lang input statement instead. | |
192 | ||
4bf0cafb DK |
193 | 2011-03-10 Dave Korn <dave.korn.cygwin@gmail.com> |
194 | ||
195 | * emultempl/pe.em (gld_${EMULATION_NAME}_place_orphan): Preserve | |
196 | alignment of input sections when creating orphan output sections | |
197 | during relocatable link. | |
198 | * emultempl/pep.em (gld_${EMULATION_NAME}_place_orphan): Likewise. | |
199 | ||
1715a13c L |
200 | 2011-03-04 H.J. Lu <hongjiu.lu@intel.com> |
201 | ||
202 | * ld.texinfo: Document --verbose[=NUMBER]. | |
203 | ||
204 | * lexsup.c (ld_options): Update --verbose. | |
205 | (parse_args): Set report_plugin_symbols. | |
206 | ||
207 | * plugin.c (report_plugin_symbols): New. | |
208 | (get_symbols): Report plugin symbols if report_plugin_symbols | |
209 | is TRUE. | |
210 | ||
211 | * plugin.h (report_plugin_symbols): New. | |
212 | ||
f4c37f56 L |
213 | 2011-03-01 H.J. Lu <hongjiu.lu@intel.com> |
214 | ||
215 | PR ld/12529 | |
216 | * testplug.c: Don't include "filenames.h". | |
217 | (onclaim_file): Don't use filename_cmp. | |
218 | ||
42627821 KT |
219 | 2011-02-28 Kai Tietz <kai.tietz@onevision.com> |
220 | ||
221 | * emultempl/beos.em (sort_by_file_name): Use filename_(n)cmp. | |
222 | * emultempl/elf32.em (gld${EMULATION_NAME}_vercheck): | |
223 | Likewise. | |
224 | (gld${EMULATION_NAME}_stat_needed): Likewise. | |
225 | (gld${EMULATION_NAME}_check_needed): Likewise. | |
226 | * emultempl/pe.em (gld_${EMULATION_NAME}_after_open): Likewise. | |
227 | (gld_${EMULATION_NAME}_unrecognized_file): Likewise. | |
228 | * emultempl/pep.em (gld_${EMULATION_NAME}_after_open): Likewise. | |
229 | (gld_${EMULATION_NAME}_unrecognized_file): Likewise. | |
230 | * ldfile.c (ldfile_open_file): Likewise. | |
231 | * ldlang.c (wild_sort): Likewise. | |
232 | (lookup_name): Likewise. | |
233 | (check_excluded_libs): Likewise. | |
234 | * ldmisc.c (vfinfo): Likewise. | |
235 | * pe-dll.c (libnamencmp): Likewise. | |
236 | (auto_export): Likewise. | |
237 | (pe_dll_generate_implib): Likewise. | |
238 | * testplug.c (onclaim_file): Likewise. | |
239 | ||
174b85fc L |
240 | 2011-02-24 H.J. Lu <hongjiu.lu@intel.com> |
241 | ||
242 | PR ld/12507 | |
243 | * plugin.c (get_symbols): Don't check entry symbol here. | |
244 | (init_non_ironly_hash): Add entry_symbol chain into | |
245 | non_ironly_hash. | |
246 | ||
8ff09c12 L |
247 | 2011-02-24 H.J. Lu <hongjiu.lu@intel.com> |
248 | ||
249 | PR ld/12507 | |
250 | * plugin.c (get_symbols): Don't mark entry symbol IR only. | |
251 | ||
ae97b922 DA |
252 | 2011-02-18 John David Anglin <dave.anglin@nrc-cnnrc.gc.ca> |
253 | ||
254 | PR ld/12376 | |
255 | emulparams/hppalinux.sh (DATA_ADDR): Define. | |
256 | (SHLIB_DATA_ADDR): Likewise. | |
257 | ||
73f2a3d2 L |
258 | 2011-02-16 H.J. Lu <hongjiu.lu@intel.com> |
259 | ||
260 | * emulparams/elf32_x86_64.sh (LIBPATH_SUFFIX): Changed to | |
261 | x32 for x32. | |
262 | ||
fd11958c KT |
263 | 2011-02-15 Kai Tietz <kai.tietz@onevision.com> |
264 | ||
265 | * pe-dll.c (process_def_file_and_drectve): Don't strip | |
266 | leading underscore from symbol by calling bfd_find_version_for_sym. | |
267 | ||
93252b1c MF |
268 | 2011-02-14 Mike Frysinger <vapier@gentoo.org> |
269 | ||
270 | * ldlang.c (lang_vers_match): Declare a new c_sym, assign it to | |
271 | the bfd_demangle of sym, change users of sym to c_sym when not | |
272 | already demangling, and free when done. Change callers of | |
273 | cplus_demangle to bfd_demangle. | |
274 | ||
486329aa AM |
275 | 2011-02-14 Alan Modra <amodra@gmail.com> |
276 | ||
277 | * plugin.c (plugin_get_ir_dummy_bfd): Set SEC_EXCLUDE on dummy | |
278 | .text section, use newer bfd_make_section variant. Error handling. | |
279 | Correct setting of gp size. | |
280 | (asymbol_from_plugin_symbol): Properly cast last arg of concat. | |
281 | (message): Likewise for ACONCAT. | |
282 | (get_symbols): Formatting. | |
283 | ||
498cd2a0 AM |
284 | 2011-02-14 Alan Modra <amodra@gmail.com> |
285 | ||
286 | * ldmain.c (remove_output): Rename to.. | |
287 | (ld_cleanup): ..this. Call bfd_cache_close_all and plugin_call_cleanup. | |
288 | (main): Adjust. | |
289 | * plugin.c (plugin_call_cleanup): Make global. | |
290 | (plugin_load_plugins): Don't register plugin_call_cleanup with xatexit. | |
291 | * plugin.h (plugin_call_cleanup): Declare. | |
292 | ||
822ce8ee RW |
293 | 2011-02-13 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> |
294 | ||
295 | * configure: Regenerate. | |
296 | ||
09b910c6 AM |
297 | 2011-02-10 Alan Modra <amodra@gmail.com> |
298 | ||
299 | * scripttempl/armbpabi.sc: Revert 2010-11-02 H.J. Lu. | |
300 | * scripttempl/avr.sc: Likewise. | |
301 | * scripttempl/elf32cr16.sc: Likewise. | |
302 | * scripttempl/elf32crx.sc: Likewise. | |
303 | * scripttempl/elf32msp430.sc: Likewise. | |
304 | * scripttempl/elf32msp430_3.sc: Likewise. | |
305 | * scripttempl/elf32sh-symbian.sc: Likewise. | |
306 | * scripttempl/elf64hppa.sc: Likewise. | |
307 | * scripttempl/elf_chaos.sc: Likewise. | |
308 | * scripttempl/elfd10v.sc: Likewise. | |
309 | * scripttempl/elfd30v.sc: Likewise. | |
310 | * scripttempl/elfi370.sc: Likewise. | |
311 | * scripttempl/elfm68hc11.sc: Likewise. | |
312 | * scripttempl/elfm68hc12.sc: Likewise. | |
313 | * scripttempl/elfxtensa.sc: Likewise. | |
314 | * scripttempl/ip2k.sc: Likewise. | |
315 | * scripttempl/iq2000.sc: Likewise. | |
316 | * scripttempl/mep.sc: Likewise. | |
317 | * scripttempl/mmo.sc: Likewise. | |
318 | * scripttempl/v850.sc: Likewise. | |
319 | * scripttempl/xstormy16.sc: Likewise. | |
320 | * scripttempl/elf.sc: Revert 2010-10-29 H.J. Lu. | |
321 | ||
3cb62297 L |
322 | 2011-01-22 H.J. Lu <hongjiu.lu@intel.com> |
323 | ||
324 | * Makefile.am (CXX): Removed. | |
325 | ||
326 | * configure.in: Add AC_PROG_CXX. | |
327 | ||
328 | * Makefile.in: Regenerated. | |
329 | * configure: Likewise. | |
330 | ||
ed88c97e RS |
331 | 2011-01-22 Richard Sandiford <rdsandiford@googlemail.com> |
332 | ||
333 | * plugin.c (plugin_get_ir_dummy_bfd): Copy across the bfd's | |
334 | private data and GP size. | |
335 | ||
9bc8bb33 AM |
336 | 2011-01-21 Alan Modra <amodra@gmail.com> |
337 | ||
338 | * ldexp.c (fold_binary): Set result section for arithmetic and | |
339 | logical operations to NULL when both operands are in same section. | |
340 | * ld.texinfo (Expression Section): Describe this. | |
341 | ||
175b7cd4 AM |
342 | 2011-01-14 Alan Modra <amodra@gmail.com> |
343 | ||
344 | * emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Don't | |
345 | attempt to put non-alloc orphans before debug sections, just place | |
346 | them after .comment. | |
347 | ||
a05e447f AM |
348 | 2011-01-14 J. Park <grassman@gmail.com> |
349 | ||
350 | PR ld/12339 | |
351 | * ldlang.c (sort_def_symbol): Handle bfd_link_hash_warning symbols. | |
352 | ||
3ed41d59 AM |
353 | 2011-01-14 Alan Modra <amodra@gmail.com> |
354 | ||
355 | * Makefile.am: Sort emulation rules. | |
356 | (eelf32am33lin.c): Delete. | |
357 | (ALL_EMULATION_SOURCES): Sort, add missing entries. | |
358 | (ALL_64_EMULATION_SOURCES): Likewise. | |
359 | * Makefile.in: Regenerate. | |
360 | ||
2e57b2af AM |
361 | 2011-01-13 Alan Modra <amodra@gmail.com> |
362 | ||
01554a74 AM |
363 | PR ld/12356 |
364 | * ld.texinfo (Miscellaneous Commands): Describe LD_FEATURE. | |
365 | (Expression Section): Update. | |
366 | * ld.h (ld_config_type): Add sane_expr. | |
367 | * ldgram.y (ifile_p1): Add LD_FEATURE. | |
368 | * ldlex.l (LD_FEATYRE): New. | |
369 | * ldemul.c (after_parse_default): Delete code handling ld_compatibility. | |
370 | * ldexp.h (struct ldexp_control): Delete uses_defined. | |
371 | * ldexp.c: Remove all uses of uses_defined. | |
372 | (fold_name): Test config.sane_expr rather than ld_compatibility. | |
373 | (exp_fold_tree_1): Likewise. Adjust handling of assignments | |
374 | during first phase. | |
375 | * ldlang.h (ld_compatibility): Delete. | |
376 | (lang_ld_feature): Declare. | |
377 | * ldlang.c (ld_compatibility): Delete. | |
378 | (open_input_bfds): Only handle assignments for --defsym. | |
379 | (lang_ld_feature): New function. | |
380 | ||
2e57b2af AM |
381 | PR ld/12356 |
382 | * ldexp.h (exp_assop): Delete. | |
383 | (exp_assign, exp_defsym): Declare. | |
384 | * ldexp.c (exp_assop): Make static, handle all assignment variations. | |
385 | (exp_assign, exp_defsym): New functions. | |
386 | (exp_provide): Use exp_assop. | |
387 | * ldgram.y (defsym_expr): Use exp_defsym. | |
388 | * ldctor.c, * ldgram.y, * ldlang.c, * mri.c, * emultempl/beos.em, | |
389 | * emultempl/pe.em, * emultempl/pep.em, * emultempl/spuelf.em, | |
390 | * emultempl/xtensaelf.em: Update exp_assop -> exp_assign. | |
391 | ||
ea7c2e6c AM |
392 | 2011-01-12 Alan Modra <amodra@gmail.com> |
393 | ||
394 | PR ld/12380 | |
395 | * ldexp.h (enum phase_enum): Comment. Add exp_dataseg_done. | |
396 | * ldexp.c (fold_unary <DATA_SEGMENT_END>): Rearrange code. Test | |
397 | for exp_dataseg_done rather than expld.phase == lang_final_phase_enum | |
398 | to detect when we've finished sizing sections. | |
399 | (fold_binary <DATA_SEGMENT_ALIGN>): Likewise. | |
400 | (fold_binary <DATA_SEGMENT_RELRO_END>): Likewise. Also test | |
401 | that we are not inside an output section statement. | |
402 | * ldlang.c (lang_size_sections): Set exp_dataseg_done on exit if | |
403 | not exp_dataseg_relro_adjust or exp_dataseg_adjust. Don't set | |
404 | lang_final_phase_enum here. | |
405 | (lang_process): Set lang_final_phase_enum here. | |
406 | ||
f7465604 NC |
407 | 2011-01-10 Nick Clifton <nickc@redhat.com> |
408 | ||
409 | * po/da.po: Updated Danish translation. | |
410 | ||
1e915804 L |
411 | 2011-01-10 H.J. Lu <hongjiu.lu@intel.com> |
412 | ||
413 | * ldlang.c (startup_file): Removed. | |
414 | (lang_startup): Updated. | |
415 | ||
cc322803 L |
416 | 2011-01-05 H.J. Lu <hongjiu.lu@intel.com> |
417 | ||
418 | PR ld/12364 | |
419 | * plugin.c (get_symbols): Check if owner_sec->owner is NULL | |
420 | before accessing its flags field. | |
421 | ||
0db46eb4 L |
422 | 2011-01-01 H.J. Lu <hongjiu.lu@intel.com> |
423 | ||
424 | * ldver.c (ldversion): Update copyright to 2011. | |
425 | ||
9e9e0820 | 426 | For older changes see ChangeLog-2010 |
252b5132 RH |
427 | \f |
428 | Local Variables: | |
429 | mode: change-log | |
430 | left-margin: 8 | |
431 | fill-column: 74 | |
432 | version-control: never | |
433 | End: |