[lld-macho] Handle command-line option -sectcreate SEG SECT FILE
[lldb.git] / lld / MachO / Options.td
1 include "llvm/Option/OptParser.td"
2
3 def help : Flag<["-", "--"], "help">;
4 def help_hidden : Flag<["--"], "help-hidden">,
5   HelpText<"Display help for hidden options">;
6
7 // This is a complete Options.td compiled from Apple's ld(1) manpage
8 // dated 2018-03-07 and cross checked with ld64 source code in repo
9 // https://github.com/apple-opensource/ld64 at git tag "512.4" dated
10 // 2018-03-18.
11
12 // Flags<[HelpHidden]> marks options that are not yet ported to lld,
13 // and serve as a scoreboard for annotating our progress toward
14 // implementing ld64 options in lld. As you add implementions to
15 // Driver.cpp, please remove the hidden flag here.
16
17 def grp_kind : OptionGroup<"kind">, HelpText<"OUTPUT KIND">;
18
19 def execute : Flag<["-"], "execute">,
20      HelpText<"Produce a main executable (default)">,
21      Flags<[HelpHidden]>,
22      Group<grp_kind>;
23 def dylib : Flag<["-"], "dylib">,
24      HelpText<"Produce a shared library">,
25      Group<grp_kind>;
26 def bundle : Flag<["-"], "bundle">,
27      HelpText<"Produce a bundle">,
28      Flags<[HelpHidden]>,
29      Group<grp_kind>;
30 def r : Flag<["-"], "r">,
31      HelpText<"Merge multiple object files into one, retaining relocations">,
32      Flags<[HelpHidden]>,
33      Group<grp_kind>;
34 def dylinker : Flag<["-"], "dylinker">,
35      HelpText<"Produce a dylinker only used when building dyld">,
36      Flags<[HelpHidden]>,
37      Group<grp_kind>;
38 def dynamic : Flag<["-"], "dynamic">,
39      HelpText<"Link dynamically (default)">,
40      Flags<[HelpHidden]>,
41      Group<grp_kind>;
42 def static : Flag<["-"], "static">,
43      HelpText<"Link statically">,
44      Flags<[HelpHidden]>,
45      Group<grp_kind>;
46 def preload : Flag<["-"], "preload">,
47      HelpText<"Produce an unsegmented binary for embedded systems">,
48      Flags<[HelpHidden]>,
49      Group<grp_kind>;
50 def arch : Separate<["-"], "arch">,
51      MetaVarName<"<arch_name>">,
52      HelpText<"The architecture (e.g. ppc, ppc64, i386, x86_64)">,
53      Group<grp_kind>;
54 def o : Separate<["-"], "o">,
55      MetaVarName<"<path>">,
56      HelpText<"The name of the output file (default: `a.out')">,
57      Group<grp_kind>;
58
59 def grp_libs : OptionGroup<"libs">, HelpText<"LIBRARIES">;
60
61 def l : Joined<["-"], "l">,
62      MetaVarName<"<name>">,
63      HelpText<"Search for lib<name>.dylib or lib<name>.a on the library search path">,
64      Group<grp_libs>;
65 def weak_l : Joined<["-"], "weak-l">,
66      MetaVarName<"<name>">,
67      HelpText<"Like -l<name>, but mark library and its references as weak imports">,
68      Flags<[HelpHidden]>,
69      Group<grp_libs>;
70 def weak_library : Separate<["-"], "weak_library">,
71      MetaVarName<"<path>">,
72      HelpText<"Like bare <path>, but mark library and its references as weak imports">,
73      Flags<[HelpHidden]>,
74      Group<grp_libs>;
75 def reexport_l : Joined<["-"], "reexport-l">,
76      MetaVarName<"<name>">,
77      HelpText<"Like -l<name>, but export all symbols of <name> from newly created library">,
78      Flags<[HelpHidden]>,
79      Group<grp_libs>;
80 def reexport_library : Separate<["-"], "reexport_library">,
81      MetaVarName<"<path>">,
82      HelpText<"Like bare <path>, but export all symbols of <path> from newly created library">,
83      Flags<[HelpHidden]>,
84      Group<grp_libs>;
85 def upward_l : Joined<["-"], "upward-l">,
86      MetaVarName<"<name>">,
87      HelpText<"Like -l<name>, but specify dylib as an upward dependency">,
88      Flags<[HelpHidden]>,
89      Group<grp_libs>;
90 def upward_library : Separate<["-"], "upward_library">,
91      MetaVarName<"<path>">,
92      HelpText<"Like bare <path>, but specify dylib as an upward dependency">,
93      Flags<[HelpHidden]>,
94      Group<grp_libs>;
95 def L : JoinedOrSeparate<["-"], "L">,
96      MetaVarName<"<dir>">,
97      HelpText<"Add dir to the library search path">,
98      Group<grp_libs>;
99 def Z : Flag<["-"], "Z">,
100      HelpText<"Remove standard directories from the library and framework search paths">,
101      Group<grp_libs>;
102 def syslibroot : Separate<["-"], "syslibroot">,
103      MetaVarName<"<rootdir>">,
104      HelpText<"Prepend <rootdir> to all library and framework search paths">,
105      Flags<[HelpHidden]>,
106      Group<grp_libs>;
107 def search_paths_first : Flag<["-"], "search_paths_first">,
108      HelpText<"Search for lib<name>.dylib and lib<name>.a at each step in traversing search path (default for Xcode 4 and later)">,
109      Flags<[HelpHidden]>,
110      Group<grp_libs>;
111 def search_dylibs_first : Flag<["-"], "search_dylibs_first">,
112      HelpText<"Search for lib<name>.dylib on first pass, then for lib<name>.a on second pass through search path (default for Xcode 3 and earlier)">,
113      Flags<[HelpHidden]>,
114      Group<grp_libs>;
115 def framework : Separate<["-"], "framework">,
116      MetaVarName<"<name>">,
117      HelpText<"Search for <name>.framework/<name> on the framework search path">,
118      Flags<[HelpHidden]>,
119      Group<grp_libs>;
120 def weak_framework : Separate<["-"], "weak_framework">,
121      MetaVarName<"<name>">,
122      HelpText<"Like -framework <name>, but mark framework and its references as weak imports">,
123      Flags<[HelpHidden]>,
124      Group<grp_libs>;
125 def reexport_framework : Separate<["-"], "reexport_framework">,
126      MetaVarName<"<name>">,
127      HelpText<"Like -framework <name>, but export all symbols of <name> from the newly created library">,
128      Flags<[HelpHidden]>,
129      Group<grp_libs>;
130 def upward_framework : Separate<["-"], "upward_framework">,
131      MetaVarName<"<name>">,
132      HelpText<"Like -framework <name>, but specify the framework as an upward dependency">,
133      Flags<[HelpHidden]>,
134      Group<grp_libs>;
135 def F : JoinedOrSeparate<["-"], "F">,
136      MetaVarName<"<dir>">,
137      HelpText<"Add dir to the framework search path">,
138      Flags<[HelpHidden]>,
139      Group<grp_libs>;
140 def all_load : Flag<["-"], "all_load">,
141      HelpText<"Load all members of all static archive libraries">,
142      Flags<[HelpHidden]>,
143      Group<grp_libs>;
144 def ObjC : Flag<["-"], "ObjC">,
145      HelpText<"Load all members of static archives that are an Objective-C class or category.">,
146      Flags<[HelpHidden]>,
147      Group<grp_libs>;
148 def force_load : Separate<["-"], "force_load">,
149      MetaVarName<"<path>">,
150      HelpText<"Load all members static archive library at <path>">,
151      Flags<[HelpHidden]>,
152      Group<grp_libs>;
153
154 def grp_content : OptionGroup<"content">, HelpText<"ADDITIONAL CONTENT">;
155
156 def sectcreate : MultiArg<["-"], "sectcreate", 3>,
157      MetaVarName<"<segment> <section> <file>">,
158      HelpText<"Create <section> in <segment> from the contents of <file>">,
159      Group<grp_content>;
160 def segcreate : MultiArg<["-"], "segcreate", 3>,
161      MetaVarName<"<segment> <section> <file>">,
162      Alias<sectcreate>,
163      HelpText<"Alias for -sectcreate">,
164      Flags<[HelpHidden]>,
165      Group<grp_content>;
166 def filelist : Separate<["-"], "filelist">,
167      MetaVarName<"<file>">,
168      HelpText<"Read names of files to link from <file>">,
169      Flags<[HelpHidden]>,
170      Group<grp_content>;
171 def dtrace : Separate<["-"], "dtrace">,
172      MetaVarName<"<script>">,
173      HelpText<"Enable DTrace static probes according to declarations in <script>">,
174      Flags<[HelpHidden]>,
175      Group<grp_content>;
176
177 def grp_opts : OptionGroup<"opts">, HelpText<"OPTIMIZATIONS">;
178
179 def dead_strip : Flag<["-"], "dead_strip">,
180      HelpText<"Remove unreachable functions and data">,
181      Flags<[HelpHidden]>,
182      Group<grp_opts>;
183 def order_file : Separate<["-"], "order_file">,
184      MetaVarName<"<file>">,
185      HelpText<"Layout functions and data according to specification in <file>">,
186      Flags<[HelpHidden]>,
187      Group<grp_opts>;
188 def sectorder : MultiArg<["-"], "sectorder", 3>,
189      MetaVarName<"<segname> <sectname> <orderfile>">,
190      HelpText<"Replaced by more general -order_file option">,
191      Flags<[HelpHidden]>,
192      Group<grp_opts>;
193 def no_order_inits : Flag<["-"], "no_order_inits">,
194      HelpText<"Disable default reordering of initializer and terminator functions">,
195      Flags<[HelpHidden]>,
196      Group<grp_opts>;
197 def no_order_data : Flag<["-"], "no_order_data">,
198      HelpText<"Disable default reordering of global data accessed at launch time">,
199      Flags<[HelpHidden]>,
200      Group<grp_opts>;
201 def platform_version : MultiArg<["-"], "platform_version", 3>,
202      MetaVarName<"<platform> <min_version> <sdk_version>">,
203      HelpText<"Platform (e.g., macos, ios, tvos, watchos, bridgeos, mac-catalyst, ios-sim, tvos-sim, watchos-sim, driverkit) and version numbers">,
204      Flags<[HelpHidden]>,
205      Group<grp_opts>;
206 def macos_version_min : Separate<["-"], "macos_version_min">,
207      MetaVarName<"<version>">,
208      HelpText<"Oldest macOS version for which linked output is useable">,
209      Flags<[HelpHidden]>,
210      Group<grp_opts>;
211 def macosx_version_min : Separate<["-"], "macosx_version_min">,
212      MetaVarName<"<version>">,
213      Alias<macos_version_min>,
214      HelpText<"Alias for -macos_version_min">,
215      Flags<[HelpHidden]>,
216      Group<grp_opts>;
217 def ios_version_min : Separate<["-"], "ios_version_min">,
218      MetaVarName<"<version>">,
219      HelpText<"Oldest iOS version for which linked output is useable">,
220      Flags<[HelpHidden]>,
221      Group<grp_opts>;
222 def iphoneos_version_min : Separate<["-"], "iphoneos_version_min">,
223      MetaVarName<"<version>">,
224      Alias<ios_version_min>,
225      HelpText<"Alias for -ios_version_min">,
226      Flags<[HelpHidden]>,
227      Group<grp_opts>;
228 def image_base : Separate<["-"], "image_base">,
229      MetaVarName<"<address>">,
230      HelpText<"Preferred hex load address for a dylib or bundle.">,
231      Flags<[HelpHidden]>,
232      Group<grp_opts>;
233 def seg1addr : Separate<["-"], "seg1addr">,
234      MetaVarName<"<address>">,
235      Alias<image_base>,
236      HelpText<"Alias for -image_base">,
237      Flags<[HelpHidden]>,
238      Group<grp_opts>;
239 def no_implicit_dylibs : Flag<["-"], "no_implicit_dylibs">,
240      HelpText<"Do not optimize public dylib transitive symbol references">,
241      Flags<[HelpHidden]>,
242      Group<grp_opts>;
243 def exported_symbols_order : Separate<["-"], "exported_symbols_order">,
244      MetaVarName<"<file>">,
245      HelpText<"Specify frequently-used symbols in <file> to optimize symbol exports">,
246      Flags<[HelpHidden]>,
247      Group<grp_opts>;
248 def no_zero_fill_sections : Flag<["-"], "no_zero_fill_sections">,
249      HelpText<"Explicitly store zeroed data in the final image">,
250      Flags<[HelpHidden]>,
251      Group<grp_opts>;
252 def merge_zero_fill_sections : Flag<["-"], "merge_zero_fill_sections">,
253      HelpText<"Merge all zeroed data into the __zerofill section">,
254      Flags<[HelpHidden]>,
255      Group<grp_opts>;
256 def no_branch_islands : Flag<["-"], "no_branch_islands">,
257      HelpText<"Disable infra for branches beyond the maximum branch distance.">,
258      Flags<[HelpHidden]>,
259      Group<grp_opts>;
260
261 def grp_dylib : OptionGroup<"dylib">, HelpText<"DYNAMIC LIBRARIES (DYLIB)">;
262
263 def install_name : Separate<["-"], "install_name">,
264      MetaVarName<"<name>">,
265      HelpText<"Set an internal install path in a dylib">,
266      Group<grp_dylib>;
267 def dylib_install_name : Separate<["-"], "dylib_install_name">,
268      MetaVarName<"<name>">,
269      Alias<install_name>,
270      HelpText<"Alias for -install_name">,
271      Flags<[HelpHidden]>,
272      Group<grp_dylib>;
273 def dylinker_install_name : Separate<["-"], "dylinker_install_name">,
274      MetaVarName<"<name>">,
275      Alias<install_name>,
276      HelpText<"Alias for -install_name">,
277      Flags<[HelpHidden]>,
278      Group<grp_dylib>;
279 def mark_dead_strippable_dylib : Flag<["-"], "mark_dead_strippable_dylib">,
280      HelpText<"Clients can discard this dylib if it is unreferenced">,
281      Flags<[HelpHidden]>,
282      Group<grp_dylib>;
283 def compatibility_version : Separate<["-"], "compatibility_version">,
284      MetaVarName<"<version>">,
285      HelpText<"Compatibility <version> of this library">,
286      Flags<[HelpHidden]>,
287      Group<grp_dylib>;
288 def dylib_compatibility_version : Separate<["-"], "dylib_compatibility_version">,
289      MetaVarName<"<version>">,
290      Alias<compatibility_version>,
291      HelpText<"Alias for -compatibility_version">,
292      Flags<[HelpHidden]>,
293      Group<grp_dylib>;
294 def current_version : Separate<["-"], "current_version">,
295      MetaVarName<"<version>">,
296      HelpText<"Current <version> of this library">,
297      Flags<[HelpHidden]>,
298      Group<grp_dylib>;
299 def dylib_current_version : Separate<["-"], "dylib_current_version">,
300      MetaVarName<"<version>">,
301      Alias<current_version>,
302      HelpText<"Alias for -current_version">,
303      Flags<[HelpHidden]>,
304      Group<grp_dylib>;
305
306 def grp_main : OptionGroup<"main">, HelpText<"MAIN EXECUTABLE">;
307
308 def pie : Flag<["-"], "pie">,
309      HelpText<"Build a position independent executable (default for macOS 10.7 and later)">,
310      Flags<[HelpHidden]>,
311      Group<grp_main>;
312 def no_pie : Flag<["-"], "no_pie">,
313      HelpText<"Do not build a position independent executable (default for macOS 10.6 and earlier)">,
314      Flags<[HelpHidden]>,
315      Group<grp_main>;
316 def pagezero_size : Separate<["-"], "pagezero_size">,
317      MetaVarName<"<size>">,
318      HelpText<"Size of unreadable segment at address zero is hex <size> (default is 4KB on 32-bit and 4GB on 64-bit)">,
319      Flags<[HelpHidden]>,
320      Group<grp_main>;
321 def stack_size : Separate<["-"], "stack_size">,
322      MetaVarName<"<size>">,
323      HelpText<"Maximum hex stack size for the main thread in a program. (default is 8MB)">,
324      Flags<[HelpHidden]>,
325      Group<grp_main>;
326 def allow_stack_execute : Flag<["-"], "allow_stack_execute">,
327      HelpText<"Mark stack segment as executable">,
328      Flags<[HelpHidden]>,
329      Group<grp_main>;
330 def export_dynamic : Flag<["-"], "export_dynamic">,
331      HelpText<"Preserve all global symbols during LTO">,
332      Flags<[HelpHidden]>,
333      Group<grp_main>;
334
335 def grp_bundle : OptionGroup<"bundle">, HelpText<"CREATING A BUNDLE">;
336
337 def bundle_loader : Separate<["-"], "bundle_loader">,
338      MetaVarName<"<executable>">,
339      HelpText<"Resolve undefined symbols from <executable>">,
340      Flags<[HelpHidden]>,
341      Group<grp_bundle>;
342
343 def grp_object : OptionGroup<"object">, HelpText<"CREATING AN OBJECT FILE">;
344
345 def keep_private_externs : Flag<["-"], "keep_private_externs">,
346      HelpText<"Do not convert private external symbols to static symbols">,
347      Flags<[HelpHidden]>,
348      Group<grp_object>;
349 def d : Flag<["-"], "d">,
350      HelpText<"Force tentative into real definitions for common symbols">,
351      Flags<[HelpHidden]>,
352      Group<grp_object>;
353
354 def grp_resolve : OptionGroup<"resolve">, HelpText<"SYMBOL RESOLUTION">;
355
356 def exported_symbols_list : Separate<["-"], "exported_symbols_list">,
357      MetaVarName<"<file>">,
358      HelpText<"Symbols specified in <file> remain global, while others become private externs">,
359      Flags<[HelpHidden]>,
360      Group<grp_resolve>;
361 def exported_symbol : Separate<["-"], "exported_symbol">,
362      MetaVarName<"<symbol>">,
363      HelpText<"<symbol> remains global, while others become private externs">,
364      Flags<[HelpHidden]>,
365      Group<grp_resolve>;
366 def unexported_symbols_list : Separate<["-"], "unexported_symbols_list">,
367      MetaVarName<"<file>">,
368      HelpText<"Global symbols specified in <file> become private externs">,
369      Flags<[HelpHidden]>,
370      Group<grp_resolve>;
371 def unexported_symbol : Separate<["-"], "unexported_symbol">,
372      MetaVarName<"<symbol>">,
373      HelpText<"Global <symbol> becomes private extern">,
374      Flags<[HelpHidden]>,
375      Group<grp_resolve>;
376 def reexported_symbols_list : Separate<["-"], "reexported_symbols_list">,
377      MetaVarName<"<file>">,
378      HelpText<"Symbols from dependent dylibs specified in <file> are reexported by this dylib">,
379      Flags<[HelpHidden]>,
380      Group<grp_resolve>;
381 def alias : MultiArg<["-"], "alias", 2>,
382      MetaVarName<"<symbol_name> <alternate_name>">,
383      HelpText<"Create a symbol alias with default global visibility">,
384      Flags<[HelpHidden]>,
385      Group<grp_resolve>;
386 def alias_list : Separate<["-"], "alias_list">,
387      MetaVarName<"<file>">,
388      HelpText<"Create symbol aliases specified in <file>">,
389      Flags<[HelpHidden]>,
390      Group<grp_resolve>;
391 def flat_namespace : Flag<["-"], "flat_namespace">,
392      HelpText<"Resolve symbols from all dylibs, both direct & transitive. Do not record source libraries: dyld must re-search at runtime and use the first definition found">,
393      Flags<[HelpHidden]>,
394      Group<grp_resolve>;
395 def u : Separate<["-"], "u">,
396      MetaVarName<"<symbol>">,
397      HelpText<"Require that <symbol> be defined for the link to succeed">,
398      Flags<[HelpHidden]>,
399      Group<grp_resolve>;
400 def U : Separate<["-"], "U">,
401      MetaVarName<"<symbol>">,
402      HelpText<"Allow <symbol> to have no definition">,
403      Flags<[HelpHidden]>,
404      Group<grp_resolve>;
405 def undefined : Separate<["-"], "undefined">,
406      MetaVarName<"<treatment>">,
407      HelpText<"Handle undefined symbols according to <treatment>: error, warning, suppress, or dynamic_lookup (default is error)">,
408      Flags<[HelpHidden]>,
409      Group<grp_resolve>;
410 def rpath : Separate<["-"], "rpath">,
411      MetaVarName<"<path>">,
412      HelpText<"Add <path> to dyld search list for dylibs with load path prefix `@rpath/'">,
413      Flags<[HelpHidden]>,
414      Group<grp_resolve>;
415 def commons : Separate<["-"], "commons">,
416      MetaVarName<"<treatment>">,
417      HelpText<"Resolve tentative definitions in dylibs according to <treatment>: ignore_dylibs, use_dylibs, error (default is ignore_dylibs)">,
418      Flags<[HelpHidden]>,
419      Group<grp_resolve>;
420
421 def grp_introspect : OptionGroup<"introspect">, HelpText<"INTROSPECTING THE LINKER">;
422
423 def why_load : Flag<["-"], "why_load">,
424      HelpText<"Log the symbol that compels loading of each object file from a static library">,
425      Flags<[HelpHidden]>,
426      Group<grp_introspect>;
427 def whyload : Flag<["-"], "whyload">,
428      Alias<why_load>,
429      HelpText<"Alias for -why_load">,
430      Flags<[HelpHidden]>,
431      Group<grp_introspect>;
432 def why_live : Separate<["-"], "why_live">,
433      MetaVarName<"<symbol>">,
434      HelpText<"Log a chain of references to <symbol>, for use with -dead_strip">,
435      Flags<[HelpHidden]>,
436      Group<grp_introspect>;
437 def print_statistics : Flag<["-"], "print_statistics">,
438      HelpText<"Log the linker's memory and CPU usage">,
439      Flags<[HelpHidden]>,
440      Group<grp_introspect>;
441 def t : Flag<["-"], "t">,
442      HelpText<"Log every file the linker loads: object, archive, and dylib">,
443      Flags<[HelpHidden]>,
444      Group<grp_introspect>;
445 def whatsloaded : Flag<["-"], "whatsloaded">,
446      HelpText<"Logs only the object files the linker loads">,
447      Flags<[HelpHidden]>,
448      Group<grp_introspect>;
449 def order_file_statistics : Flag<["-"], "order_file_statistics">,
450      HelpText<"Logs information about -order_file">,
451      Flags<[HelpHidden]>,
452      Group<grp_introspect>;
453 def map : Separate<["-"], "map">,
454      MetaVarName<"<path>">,
455      HelpText<"Writes all symbols and their addresses to <path>">,
456      Flags<[HelpHidden]>,
457      Group<grp_introspect>;
458 def dependency_info : Separate<["-"], "dependency_info">,
459      MetaVarName<"<path>">,
460      HelpText<"Dump dependency info">,
461      Flags<[HelpHidden]>,
462      Group<grp_introspect>;
463
464 def grp_symtab : OptionGroup<"symtab">, HelpText<"SYMBOL TABLE OPTIMIZATIONS">;
465
466 def S : Flag<["-"], "S">,
467      HelpText<"Strip debug information (STABS or DWARF) from the output">,
468      Flags<[HelpHidden]>,
469      Group<grp_symtab>;
470 def x : Flag<["-"], "x">,
471      HelpText<"Exclude non-global symbols from the output symbol table">,
472      Flags<[HelpHidden]>,
473      Group<grp_symtab>;
474 def non_global_symbols_strip_list : Separate<["-"], "non_global_symbols_strip_list">,
475      MetaVarName<"<path>">,
476      HelpText<"Specify in <path> the non-global symbols that should be removed from the output symbol table">,
477      Flags<[HelpHidden]>,
478      Group<grp_symtab>;
479 def non_global_symbols_no_strip_list : Separate<["-"], "non_global_symbols_no_strip_list">,
480      MetaVarName<"<path>">,
481      HelpText<"Specify in <path> the non-global symbols that should remain in the output symbol table">,
482      Flags<[HelpHidden]>,
483      Group<grp_symtab>;
484 def oso_prefix : Separate<["-"], "oso_prefix">,
485      MetaVarName<"<path>">,
486      HelpText<"Remove the prefix <path> from OSO symbols in the debug map">,
487      Flags<[HelpHidden]>,
488      Group<grp_symtab>;
489
490 def grp_bitcode : OptionGroup<"bitcode">, HelpText<"BITCODE BUILD FLOW">;
491
492 def bitcode_bundle : Flag<["-"], "bitcode_bundle">,
493      HelpText<"Generate an embedded bitcode bundle in the __LLVM,__bundle section of the output">,
494      Flags<[HelpHidden]>,
495      Group<grp_bitcode>;
496 def bitcode_hide_symbols : Flag<["-"], "bitcode_hide_symbols">,
497      HelpText<"With -bitcode_bundle, hide all non-exported symbols from output bitcode bundle.">,
498      Flags<[HelpHidden]>,
499      Group<grp_bitcode>;
500 def bitcode_symbol_map : Separate<["-"], "bitcode_symbol_map">,
501      MetaVarName<"<path>">,
502      HelpText<"Write the bitcode symbol reverse mapping to file <path>, or if a directory, to <path>/UUID.bcsymbolmap">,
503      Flags<[HelpHidden]>,
504      Group<grp_bitcode>;
505
506 def grp_rare : OptionGroup<"rare">, HelpText<"RARELY USED">;
507
508 def v : Flag<["-"], "v">,
509      HelpText<"Print the linker version">,
510      Flags<[HelpHidden]>,
511      Group<grp_rare>;
512 def version_details : Flag<["-"], "version_details">,
513      HelpText<"Print the linker version in JSON form">,
514      Flags<[HelpHidden]>,
515      Group<grp_rare>;
516 def no_weak_imports : Flag<["-"], "no_weak_imports">,
517      HelpText<"Fail if any symbols are weak imports, allowed to be NULL at runtime">,
518      Flags<[HelpHidden]>,
519      Group<grp_rare>;
520 def no_deduplicate : Flag<["-"], "no_deduplicate">,
521      HelpText<"Omit the deduplication pass">,
522      Flags<[HelpHidden]>,
523      Group<grp_rare>;
524 def verbose_deduplicate : Flag<["-"], "verbose_deduplicate">,
525      HelpText<"Print function names eliminated by deduplication and the total size of code savings">,
526      Flags<[HelpHidden]>,
527      Group<grp_rare>;
528 def no_inits : Flag<["-"], "no_inits">,
529      HelpText<"Fail if the output contains static initializers">,
530      Flags<[HelpHidden]>,
531      Group<grp_rare>;
532 def no_warn_inits : Flag<["-"], "no_warn_inits">,
533      HelpText<"Suppress warnings for static initializers in the output">,
534      Flags<[HelpHidden]>,
535      Group<grp_rare>;
536 def debug_variant : Flag<["-"], "debug_variant">,
537      HelpText<"Suppress warnings germane to binaries shipping to customers">,
538      Flags<[HelpHidden]>,
539      Group<grp_rare>;
540 def unaligned_pointers : Separate<["-"], "unaligned_pointers">,
541      MetaVarName<"<treatment>">,
542      HelpText<"Handle unaligned pointers in __DATA segments according to <treatment>: warning, error, or suppress (default for arm64e is error, otherwise suppress)">,
543      Flags<[HelpHidden]>,
544      Group<grp_rare>;
545 def dirty_data_list : Separate<["-"], "dirty_data_list">,
546      MetaVarName<"<path>">,
547      HelpText<"Specify data symbols in <path> destined for the __DATA_DIRTY segment">,
548      Flags<[HelpHidden]>,
549      Group<grp_rare>;
550 def max_default_common_align : Separate<["-"], "max_default_common_align">,
551      MetaVarName<"<boundary>">,
552      HelpText<"Reduce maximum alignment for common symbols to a hex power-of-2 <boundary>">,
553      Flags<[HelpHidden]>,
554      Group<grp_rare>;
555 def move_to_rw_segment : MultiArg<["-"], "move_to_rw_segment", 2>,
556      MetaVarName<"<segment> <path>">,
557      HelpText<"Move data symbols listed in <path> to another <segment>">,
558      Flags<[HelpHidden]>,
559      Group<grp_rare>;
560 def move_to_ro_segment : MultiArg<["-"], "move_to_ro_segment", 2>,
561      MetaVarName<"<segment> <path>">,
562      HelpText<"Move code symbols listed in <path> to another <segment>">,
563      Flags<[HelpHidden]>,
564      Group<grp_rare>;
565 def rename_section : MultiArg<["-"], "rename_section", 4>,
566      MetaVarName<"<from_segment> <from_section> <to_segment> <to_section>">,
567      HelpText<"Rename <from_segment>/<from_section> as <to_segment>/<to_section>">,
568      Flags<[HelpHidden]>,
569      Group<grp_rare>;
570 def rename_segment : MultiArg<["-"], "rename_segment", 2>,
571      MetaVarName<"<from_segment> <to_segment>">,
572      HelpText<"Rename <from_segment> as <to_segment>">,
573      Flags<[HelpHidden]>,
574      Group<grp_rare>;
575 def trace_symbol_layout : Flag<["-"], "trace_symbol_layout">,
576      HelpText<"Show where and why symbols move, as specified by -move_to_ro_segment, -move_to_rw_segment, -rename_section, and -rename_segment">,
577      Flags<[HelpHidden]>,
578      Group<grp_rare>;
579 def section_order : MultiArg<["-"], "section_order", 2>,
580      MetaVarName<"<segment> <sections>">,
581      HelpText<"With -preload, specify layout sequence of colon-separated <sections> in <segment>">,
582      Flags<[HelpHidden]>,
583      Group<grp_rare>;
584 def segment_order : Separate<["-"], "segment_order">,
585      MetaVarName<"<colon_separated_segment_list>">,
586      HelpText<"With -preload, specify layout sequence of colon-separated <segments>">,
587      Flags<[HelpHidden]>,
588      Group<grp_rare>;
589 def allow_heap_execute : Flag<["-"], "allow_heap_execute">,
590      HelpText<"On i386, allow any page to execute code">,
591      Flags<[HelpHidden]>,
592      Group<grp_rare>;
593 def application_extension : Flag<["-"], "application_extension">,
594      HelpText<"Designate the linker output as safe for use in an application extension">,
595      Flags<[HelpHidden]>,
596      Group<grp_rare>;
597 def no_application_extension : Flag<["-"], "no_application_extension">,
598      HelpText<"Designate the linker output as unsafe for use in an application extension">,
599      Flags<[HelpHidden]>,
600      Group<grp_rare>;
601 def fatal_warnings : Flag<["-"], "fatal_warnings">,
602      HelpText<"Escalate warnings as errors">,
603      Flags<[HelpHidden]>,
604      Group<grp_rare>;
605 def no_eh_labels : Flag<["-"], "no_eh_labels">,
606      HelpText<"In -r mode, suppress .eh labels in the __eh_frame section">,
607      Flags<[HelpHidden]>,
608      Group<grp_rare>;
609 def warn_compact_unwind : Flag<["-"], "warn_compact_unwind">,
610      HelpText<"Warn for each FDE that cannot compact into the __unwind_info section and must remain in the __eh_frame section">,
611      Flags<[HelpHidden]>,
612      Group<grp_rare>;
613 def warn_weak_exports : Flag<["-"], "warn_weak_exports">,
614      HelpText<"Warn if the linked image contains weak external symbols">,
615      Flags<[HelpHidden]>,
616      Group<grp_rare>;
617 def no_weak_exports : Flag<["-"], "no_weak_exports">,
618      HelpText<"Fail if the linked image contains weak external symbols">,
619      Flags<[HelpHidden]>,
620      Group<grp_rare>;
621 def objc_gc_compaction : Flag<["-"], "objc_gc_compaction">,
622      HelpText<"Mark the Objective-C image as compatible with compacting garbage collection">,
623      Flags<[HelpHidden]>,
624      Group<grp_rare>;
625 def objc_gc : Flag<["-"], "objc_gc">,
626      HelpText<"Verify that all code was compiled with -fobjc-gc or -fobjc-gc-only">,
627      Flags<[HelpHidden]>,
628      Group<grp_rare>;
629 def objc_gc_only : Flag<["-"], "objc_gc_only">,
630      HelpText<"Verify that all code was compiled with -fobjc-gc-only">,
631      Flags<[HelpHidden]>,
632      Group<grp_rare>;
633 def dead_strip_dylibs : Flag<["-"], "dead_strip_dylibs">,
634      HelpText<"Remove dylibs that are unreachable by the entry point or exported symbols">,
635      Flags<[HelpHidden]>,
636      Group<grp_rare>;
637 def allow_sub_type_mismatches : Flag<["-"], "allow_sub_type_mismatches">,
638      HelpText<"Permit mixing objects compiled for different ARM CPU subtypes">,
639      Flags<[HelpHidden]>,
640      Group<grp_rare>;
641 def no_uuid : Flag<["-"], "no_uuid">,
642      HelpText<"Do not generate the LC_UUID load command">,
643      Flags<[HelpHidden]>,
644      Group<grp_rare>;
645 def root_safe : Flag<["-"], "root_safe">,
646      HelpText<"Set the MH_ROOT_SAFE bit in the mach-o header">,
647      Flags<[HelpHidden]>,
648      Group<grp_rare>;
649 def setuid_safe : Flag<["-"], "setuid_safe">,
650      HelpText<"Set the MH_SETUID_SAFE bit in the mach-o header">,
651      Flags<[HelpHidden]>,
652      Group<grp_rare>;
653 def interposable : Flag<["-"], "interposable">,
654      HelpText<"Indirects access to all to exported symbols in a dylib">,
655      Flags<[HelpHidden]>,
656      Group<grp_rare>;
657 def multi_module : Flag<["-"], "multi_module">,
658      Alias<interposable>,
659      HelpText<"Alias for -interposable">,
660      Flags<[HelpHidden]>,
661      Group<grp_rare>;
662 def init : Separate<["-"], "init">,
663      MetaVarName<"<symbol>">,
664      HelpText<"Run <symbol> as the first initializer in a dylib">,
665      Flags<[HelpHidden]>,
666      Group<grp_rare>;
667 def sub_library : Separate<["-"], "sub_library">,
668      MetaVarName<"<name>">,
669      HelpText<"Re-export the dylib as <name>">,
670      Flags<[HelpHidden]>,
671      Group<grp_rare>;
672 def sub_umbrella : Separate<["-"], "sub_umbrella">,
673      MetaVarName<"<name>">,
674      HelpText<"Re-export the framework as <name>">,
675      Flags<[HelpHidden]>,
676      Group<grp_rare>;
677 def allowable_client : Separate<["-"], "allowable_client">,
678      MetaVarName<"<name>">,
679      HelpText<"Specify <name> of a dylib or framework that is allowed to link to this dylib">,
680      Flags<[HelpHidden]>,
681      Group<grp_rare>;
682 def client_name : Separate<["-"], "client_name">,
683      MetaVarName<"<name>">,
684      HelpText<"Specifies a <name> this client should match with the -allowable_client <name> in a dependent dylib">,
685      Flags<[HelpHidden]>,
686      Group<grp_rare>;
687 def umbrella : Separate<["-"], "umbrella">,
688      MetaVarName<"<<name>>">,
689      HelpText<"Re-export this dylib through the umbrella framework <name>a">,
690      Flags<[HelpHidden]>,
691      Group<grp_rare>;
692 def headerpad : Separate<["-"], "headerpad">,
693      MetaVarName<"<size>">,
694      HelpText<"Allocate hex <size> extra space for future expansion of the load commands via install_name_tool">,
695      Group<grp_rare>;
696 def headerpad_max_install_names : Flag<["-"], "headerpad_max_install_names">,
697      HelpText<"Allocate extra space so all load-command paths can expand to MAXPATHLEN via install_name_tool">,
698      Flags<[HelpHidden]>,
699      Group<grp_rare>;
700 def bind_at_load : Flag<["-"], "bind_at_load">,
701      HelpText<"Tell dyld to bind all symbols at load time, rather than lazily">,
702      Flags<[HelpHidden]>,
703      Group<grp_rare>;
704 def force_flat_namespace : Flag<["-"], "force_flat_namespace">,
705      HelpText<"Tell dyld to use a flat namespace on this executable and all its dependent dylibs & bundles">,
706      Flags<[HelpHidden]>,
707      Group<grp_rare>;
708 def segalign : Separate<["-"], "segalign">,
709      MetaVarName<"<boundary>">,
710      HelpText<"Align all segments to hex power-of-2 <boundary>">,
711      Flags<[HelpHidden]>,
712      Group<grp_rare>;
713 def sectalign : MultiArg<["-"], "sectalign", 3>,
714      MetaVarName<"<segment> <section> <boundary>">,
715      HelpText<"Align <section> within <segment> to hex power-of-2 <boundary>">,
716      Flags<[HelpHidden]>,
717      Group<grp_rare>;
718 def stack_addr : Separate<["-"], "stack_addr">,
719      MetaVarName<"<address>">,
720      HelpText<"Initialize stack pointer to hex <address> rounded to a page boundary">,
721      Flags<[HelpHidden]>,
722      Group<grp_rare>;
723 def segprot : MultiArg<["-"], "segprot", 3>,
724      MetaVarName<"<segment> <max> <init>">,
725      HelpText<"Specifies the <max> and <init> virtual memory protection of <segment> as r/w/x/-seg_addr_table path Specify hex base addresses and dylib install names on successive lines in <path>. This option is obsolete">,
726      Flags<[HelpHidden]>,
727      Group<grp_rare>;
728 def segs_read_write_addr : Separate<["-"], "segs_read_write_addr">,
729      MetaVarName<"<address>">,
730      HelpText<"This option is obsolete">,
731      Flags<[HelpHidden]>,
732      Group<grp_rare>;
733 def segs_read_only_addr : Separate<["-"], "segs_read_only_addr">,
734      MetaVarName<"<address>">,
735      HelpText<"This option is obsolete">,
736      Flags<[HelpHidden]>,
737      Group<grp_rare>;
738 def segaddr : MultiArg<["-"], "segaddr", 2>,
739      MetaVarName<"<segment> <address>">,
740      HelpText<"Specify the starting hex <address> at a 4KiB page boundary for <segment>">,
741      Flags<[HelpHidden]>,
742      Group<grp_rare>;
743 def seg_page_size : MultiArg<["-"], "seg_page_size", 2>,
744      MetaVarName<"<segment> <size>">,
745      HelpText<"Specifies the page <size> for <segment>. Segment size will be a multiple of its page size">,
746      Flags<[HelpHidden]>,
747      Group<grp_rare>;
748 def dylib_file : Separate<["-"], "dylib_file">,
749      MetaVarName<"<install_path:current_path>">,
750      HelpText<"Specify <current_path> as different from where a dylib normally resides at <install_path>">,
751      Flags<[HelpHidden]>,
752      Group<grp_rare>;
753 def prebind : Flag<["-"], "prebind">,
754      HelpText<"This option is obsolete">,
755      Flags<[HelpHidden]>,
756      Group<grp_rare>;
757 def weak_reference_mismatches : Separate<["-"], "weak_reference_mismatches">,
758      MetaVarName<"<treatment>">,
759      HelpText<"Resolve symbol imports of conflicting weakness according to <treatment> as weak, non-weak, or error (default is non-weak)">,
760      Flags<[HelpHidden]>,
761      Group<grp_rare>;
762 def read_only_relocs : Separate<["-"], "read_only_relocs">,
763      MetaVarName<"<treatment>">,
764      HelpText<"Handle relocations that modify read-only pages according to <treatment> of warning, error, or suppress (i.e., allow)">,
765      Flags<[HelpHidden]>,
766      Group<grp_rare>;
767 def force_cpusubtype_ALL : Flag<["-"], "force_cpusubtype_ALL">,
768      HelpText<"Mark binary as runnable on any PowerPC, ignoring any PowerPC cpu requirements encoded in the object files">,
769      Flags<[HelpHidden]>,
770      Group<grp_rare>;
771 def no_arch_warnings : Flag<["-"], "no_arch_warnings">,
772      HelpText<"Suppresses warnings about inputs whose architecture does not match the -arch option">,
773      Flags<[HelpHidden]>,
774      Group<grp_rare>;
775 def arch_errors_fatal : Flag<["-"], "arch_errors_fatal">,
776      HelpText<"Escalate to errors any warnings about inputs whose architecture does not match the -arch option">,
777      Flags<[HelpHidden]>,
778      Group<grp_rare>;
779 def e : Separate<["-"], "e">,
780      MetaVarName<"<symbol>">,
781      HelpText<"Make <symbol> the entry point of an executable (default is \"start\" from crt1.o)">,
782      Group<grp_rare>;
783 def w : Flag<["-"], "w">,
784      HelpText<"Suppress all warnings">,
785      Flags<[HelpHidden]>,
786      Group<grp_rare>;
787 def final_output : Separate<["-"], "final_output">,
788      MetaVarName<"<name>">,
789      HelpText<"Specify the dylib install name if -install_name is not used--used by compiler driver for multiple -arch arguments">,
790      Flags<[HelpHidden]>,
791      Group<grp_rare>;
792 def arch_multiple : Flag<["-"], "arch_multiple">,
793      HelpText<"Augment error and warning messages with the architecture name">,
794      Flags<[HelpHidden]>,
795      Group<grp_rare>;
796 def twolevel_namespace_hints : Flag<["-"], "twolevel_namespace_hints">,
797      HelpText<"This option is obsolete">,
798      Flags<[HelpHidden]>,
799      Group<grp_rare>;
800 def dot : Separate<["-"], "dot">,
801      MetaVarName<"<path>">,
802      HelpText<"Write a graph of symbol dependencies to <path> as a .dot file viewable with GraphViz">,
803      Flags<[HelpHidden]>,
804      Group<grp_rare>;
805 def keep_relocs : Flag<["-"], "keep_relocs">,
806      HelpText<"Retain section-based relocation records in the output, which are ignored at runtime by dyld">,
807      Flags<[HelpHidden]>,
808      Group<grp_rare>;
809 def warn_stabs : Flag<["-"], "warn_stabs">,
810      HelpText<"Warn when bad stab symbols inside a BINCL/EINCL prevent optimization">,
811      Flags<[HelpHidden]>,
812      Group<grp_rare>;
813 def warn_commons : Flag<["-"], "warn_commons">,
814      HelpText<"Warn when a tentative definition in an object file matches an external symbol in a dylib, which often means \"extern\" is missing from a variable declaration in a header file">,
815      Flags<[HelpHidden]>,
816      Group<grp_rare>;
817 def read_only_stubs : Flag<["-"], "read_only_stubs">,
818      HelpText<"On i386, make the __IMPORT segment of a final linked image read-only">,
819      Flags<[HelpHidden]>,
820      Group<grp_rare>;
821 def slow_stubs : Flag<["-"], "slow_stubs">,
822      HelpText<"This option is obsolete">,
823      Flags<[HelpHidden]>,
824      Group<grp_rare>;
825 def interposable_list : Separate<["-"], "interposable_list">,
826      MetaVarName<"<path>">,
827      HelpText<"Access global symbols listed in <path> indirectly">,
828      Flags<[HelpHidden]>,
829      Group<grp_rare>;
830 def no_function_starts : Flag<["-"], "no_function_starts">,
831      HelpText<"Do not creates a compressed table of function start addresses">,
832      Flags<[HelpHidden]>,
833      Group<grp_rare>;
834 def no_objc_category_merging : Flag<["-"], "no_objc_category_merging">,
835      HelpText<"Do not merge Objective-C categories into their classes">,
836      Flags<[HelpHidden]>,
837      Group<grp_rare>;
838 def object_path_lto : Separate<["-"], "object_path_lto">,
839      MetaVarName<"<path>">,
840      HelpText<"Retain any temporary mach-o file in <path> that would otherwise be deleted during LTO">,
841      Flags<[HelpHidden]>,
842      Group<grp_rare>;
843 def lto_library : Separate<["-"], "lto_library">,
844      MetaVarName<"<path>">,
845      HelpText<"Override the default ../lib/libLTO.dylib as <path>">,
846      Flags<[HelpHidden]>,
847      Group<grp_rare>;
848 def cache_path_lto : Separate<["-"], "cache_path_lto">,
849      MetaVarName<"<path>">,
850      HelpText<"Use <path> as a directory for the incremental LTO cache">,
851      Flags<[HelpHidden]>,
852      Group<grp_rare>;
853 def prune_interval_lto : Separate<["-"], "prune_interval_lto">,
854      MetaVarName<"<seconds>">,
855      HelpText<"Prune the incremental LTO cache after <seconds> (-1 disables pruning)">,
856      Flags<[HelpHidden]>,
857      Group<grp_rare>;
858 def prune_after_lto : Separate<["-"], "prune_after_lto">,
859      MetaVarName<"<seconds>">,
860      HelpText<"Remove LTO cache entries after <seconds>">,
861      Flags<[HelpHidden]>,
862      Group<grp_rare>;
863 def max_relative_cache_size_lto : Separate<["-"], "max_relative_cache_size_lto">,
864      MetaVarName<"<percent>">,
865      HelpText<"Limit the incremental LTO cache growth to <percent> of free disk, space">,
866      Flags<[HelpHidden]>,
867      Group<grp_rare>;
868 def page_align_data_atoms : Flag<["-"], "page_align_data_atoms">,
869      HelpText<"Distribute global variables on separate pages so page used/dirty status can guide creation of an order file to cluster commonly used/dirty globals">,
870      Flags<[HelpHidden]>,
871      Group<grp_rare>;
872 def not_for_dyld_shared_cache : Flag<["-"], "not_for_dyld_shared_cache">,
873      HelpText<"Prevent system dylibs from being placed into the dylib shared cache">,
874      Flags<[HelpHidden]>,
875      Group<grp_rare>;
876
877 def grp_deprecated : OptionGroup<"deprecated">, HelpText<"DEPRECATED">;
878
879 def lazy_framework : Separate<["-"], "lazy_framework">,
880      MetaVarName<"<name>">,
881      HelpText<"This option is deprecated and is now an alias for -framework.">,
882      Flags<[HelpHidden]>,
883      Group<grp_deprecated>;
884 def lazy_library : Separate<["-"], "lazy_library">,
885      MetaVarName<"<path>">,
886      HelpText<"This option is deprecated and is now an alias for regular linking">,
887      Flags<[HelpHidden]>,
888      Group<grp_deprecated>;
889 def lazy_l : Joined<["-"], "lazy-l">,
890      MetaVarName<"<name>">,
891      HelpText<"This option is deprecated and is now an alias for -l<path>.">,
892      Flags<[HelpHidden]>,
893      Group<grp_deprecated>;
894 def single_module : Flag<["-"], "single_module">,
895      HelpText<"Unnecessary option: this is already the default">,
896      Flags<[HelpHidden]>,
897      Group<grp_deprecated>;
898 def no_dead_strip_inits_and_terms : Flag<["-"], "no_dead_strip_inits_and_terms">,
899      HelpText<"Unnecessary option: initialization and termination are roots of the dead strip graph, so never dead stripped">,
900      Flags<[HelpHidden]>,
901      Group<grp_deprecated>;
902 def noall_load : Flag<["-"], "noall_load">,
903      HelpText<"Unnecessary option: this is already the default">,
904      Flags<[HelpHidden]>,
905      Group<grp_deprecated>;
906
907 def grp_obsolete : OptionGroup<"obsolete">, HelpText<"OBSOLETE">;
908
909 def y : Joined<["-"], "y">,
910      MetaVarName<"<symbol>">,
911      HelpText<"This option is obsolete in ld64">,
912      Flags<[HelpHidden]>,
913      Group<grp_obsolete>;
914 def sectobjectsymbols : MultiArg<["-"], "sectobjectsymbols", 2>,
915      MetaVarName<"<segname> <sectname>">,
916      HelpText<"This option is obsolete in ld64">,
917      Flags<[HelpHidden]>,
918      Group<grp_obsolete>;
919 def nofixprebinding : Flag<["-"], "nofixprebinding">,
920      HelpText<"This option is obsolete in ld64">,
921      Flags<[HelpHidden]>,
922      Group<grp_obsolete>;
923 def noprebind_all_twolevel_modules : Flag<["-"], "noprebind_all_twolevel_modules">,
924      HelpText<"This option is obsolete in ld64">,
925      Flags<[HelpHidden]>,
926      Group<grp_obsolete>;
927 def prebind_all_twolevel_modules : Flag<["-"], "prebind_all_twolevel_modules">,
928      HelpText<"This option is obsolete in ld64">,
929      Flags<[HelpHidden]>,
930      Group<grp_obsolete>;
931 def prebind_allow_overlap : Flag<["-"], "prebind_allow_overlap">,
932      HelpText<"This option is obsolete in ld64">,
933      Flags<[HelpHidden]>,
934      Group<grp_obsolete>;
935 def noprebind : Flag<["-"], "noprebind">,
936      HelpText<"This option is obsolete in ld64">,
937      Flags<[HelpHidden]>,
938      Group<grp_obsolete>;
939 def sect_diff_relocs : Separate<["-"], "sect_diff_relocs">,
940      MetaVarName<"<treatment>">,
941      HelpText<"This option is obsolete in ld64">,
942      Flags<[HelpHidden]>,
943      Group<grp_obsolete>;
944 def A : Separate<["-"], "A">,
945      MetaVarName<"<basefile>">,
946      HelpText<"This option is obsolete in ld64">,
947      Flags<[HelpHidden]>,
948      Group<grp_obsolete>;
949 def b : Flag<["-"], "b">,
950      HelpText<"This option is obsolete in ld64">,
951      Flags<[HelpHidden]>,
952      Group<grp_obsolete>;
953 def Sn : Flag<["-"], "Sn">,
954      HelpText<"This option is obsolete in ld64">,
955      Flags<[HelpHidden]>,
956      Group<grp_obsolete>;
957 def Si : Flag<["-"], "Si">,
958      HelpText<"This option is obsolete in ld64">,
959      Flags<[HelpHidden]>,
960      Group<grp_obsolete>;
961 def Sp : Flag<["-"], "Sp">,
962      HelpText<"This option is obsolete in ld64">,
963      Flags<[HelpHidden]>,
964      Group<grp_obsolete>;
965 def X : Flag<["-"], "X">,
966      HelpText<"This option is obsolete in ld64">,
967      Flags<[HelpHidden]>,
968      Group<grp_obsolete>;
969 def s : Flag<["-"], "s">,
970      HelpText<"This option is obsolete in ld64">,
971      Flags<[HelpHidden]>,
972      Group<grp_obsolete>;
973 def m : Flag<["-"], "m">,
974      HelpText<"This option is obsolete in ld64">,
975      Flags<[HelpHidden]>,
976      Group<grp_obsolete>;
977 def Y : Separate<["-"], "Y">,
978      MetaVarName<"<number>">,
979      HelpText<"This option is obsolete in ld64">,
980      Flags<[HelpHidden]>,
981      Group<grp_obsolete>;
982 def nomultidefs : Flag<["-"], "nomultidefs">,
983      HelpText<"This option is obsolete in ld64">,
984      Flags<[HelpHidden]>,
985      Group<grp_obsolete>;
986 def multiply_defined_unused : Separate<["-"], "multiply_defined_unused">,
987      MetaVarName<"<treatment>">,
988      HelpText<"This option is obsolete in ld64">,
989      Flags<[HelpHidden]>,
990      Group<grp_obsolete>;
991 def multiply_defined : Separate<["-"], "multiply_defined">,
992      MetaVarName<"<treatment>">,
993      HelpText<"This option is obsolete in ld64">,
994      Flags<[HelpHidden]>,
995      Group<grp_obsolete>;
996 def private_bundle : Flag<["-"], "private_bundle">,
997      HelpText<"This option is obsolete in ld64">,
998      Flags<[HelpHidden]>,
999      Group<grp_obsolete>;
1000 def seg_addr_table_filename : Separate<["-"], "seg_addr_table_filename">,
1001      MetaVarName<"<path>">,
1002      HelpText<"This option is obsolete in ld64">,
1003      Flags<[HelpHidden]>,
1004      Group<grp_obsolete>;
1005 def sectorder_detail : Flag<["-"], "sectorder_detail">,
1006      HelpText<"This option is obsolete in ld64">,
1007      Flags<[HelpHidden]>,
1008      Group<grp_obsolete>;
1009 def no_compact_linkedit : Flag<["-"], "no_compact_linkedit">,
1010      HelpText<"This option is obsolete in ld64">,
1011      Flags<[HelpHidden]>,
1012      Group<grp_obsolete>;
1013 def dependent_dr_info : Flag<["-"], "dependent_dr_info">,
1014      HelpText<"This option is obsolete in ld64">,
1015      Flags<[HelpHidden]>,
1016      Group<grp_obsolete>;
1017 def no_dependent_dr_info : Flag<["-"], "no_dependent_dr_info">,
1018      HelpText<"This option is obsolete in ld64">,
1019      Flags<[HelpHidden]>,
1020      Group<grp_obsolete>;
1021 def seglinkedit : Flag<["-"], "seglinkedit">,
1022      HelpText<"This option is obsolete in ld64">,
1023      Flags<[HelpHidden]>,
1024      Group<grp_obsolete>;
1025 def noseglinkedit : Flag<["-"], "noseglinkedit">,
1026      HelpText<"This option is obsolete in ld64">,
1027      Flags<[HelpHidden]>,
1028      Group<grp_obsolete>;
1029 def fvmlib : Flag<["-"], "fvmlib">,
1030      HelpText<"This option is obsolete in ld64">,
1031      Flags<[HelpHidden]>,
1032      Group<grp_obsolete>;
1033 def run_init_lazily : Flag<["-"], "run_init_lazily">,
1034      HelpText<"This option is obsolete in ld64">,
1035      Flags<[HelpHidden]>,
1036      Group<grp_obsolete>;
1037
1038 def grp_undocumented : OptionGroup<"undocumented">, HelpText<"UNDOCUMENTED">;
1039
1040 def add_ast_path : Flag<["-"], "add_ast_path">,
1041      HelpText<"This option is undocumented in ld64">,
1042      Flags<[HelpHidden]>,
1043      Group<grp_undocumented>;
1044 def add_linker_option : Flag<["-"], "add_linker_option">,
1045      HelpText<"This option is undocumented in ld64">,
1046      Flags<[HelpHidden]>,
1047      Group<grp_undocumented>;
1048 def add_source_version : Flag<["-"], "add_source_version">,
1049      HelpText<"This option is undocumented in ld64">,
1050      Flags<[HelpHidden]>,
1051      Group<grp_undocumented>;
1052 def no_source_version : Flag<["-"], "no_source_version">,
1053      HelpText<"This option is undocumented in ld64">,
1054      Flags<[HelpHidden]>,
1055      Group<grp_undocumented>;
1056 def add_split_seg_info : Flag<["-"], "add_split_seg_info">,
1057      HelpText<"This option is undocumented in ld64">,
1058      Flags<[HelpHidden]>,
1059      Group<grp_undocumented>;
1060 def allow_dead_duplicates : Flag<["-"], "allow_dead_duplicates">,
1061      HelpText<"This option is undocumented in ld64">,
1062      Flags<[HelpHidden]>,
1063      Group<grp_undocumented>;
1064 def allow_simulator_linking_to_macosx_dylibs : Flag<["-"], "allow_simulator_linking_to_macosx_dylibs">,
1065      HelpText<"This option is undocumented in ld64">,
1066      Flags<[HelpHidden]>,
1067      Group<grp_undocumented>;
1068 def bitcode_process_mode : Flag<["-"], "bitcode_process_mode">,
1069      HelpText<"This option is undocumented in ld64">,
1070      Flags<[HelpHidden]>,
1071      Group<grp_undocumented>;
1072 def bitcode_verify : Flag<["-"], "bitcode_verify">,
1073      HelpText<"This option is undocumented in ld64">,
1074      Flags<[HelpHidden]>,
1075      Group<grp_undocumented>;
1076 def classic_linker : Flag<["-"], "classic_linker">,
1077      HelpText<"This option is undocumented in ld64">,
1078      Flags<[HelpHidden]>,
1079      Group<grp_undocumented>;
1080 def data_const : Flag<["-"], "data_const">,
1081      HelpText<"This option is undocumented in ld64">,
1082      Flags<[HelpHidden]>,
1083      Group<grp_undocumented>;
1084 def no_data_const : Flag<["-"], "no_data_const">,
1085      HelpText<"This option is undocumented in ld64">,
1086      Flags<[HelpHidden]>,
1087      Group<grp_undocumented>;
1088 def data_in_code_info : Flag<["-"], "data_in_code_info">,
1089      HelpText<"This option is undocumented in ld64">,
1090      Flags<[HelpHidden]>,
1091      Group<grp_undocumented>;
1092 def no_data_in_code_info : Flag<["-"], "no_data_in_code_info">,
1093      HelpText<"This option is undocumented in ld64">,
1094      Flags<[HelpHidden]>,
1095      Group<grp_undocumented>;
1096 def debug_snapshot : Flag<["-"], "debug_snapshot">,
1097      HelpText<"This option is undocumented in ld64">,
1098      Flags<[HelpHidden]>,
1099      Group<grp_undocumented>;
1100 def demangle : Flag<["-"], "demangle">,
1101      HelpText<"This option is undocumented in ld64">,
1102      Flags<[HelpHidden]>,
1103      Group<grp_undocumented>;
1104 def dyld_env : Flag<["-"], "dyld_env">,
1105      HelpText<"This option is undocumented in ld64">,
1106      Flags<[HelpHidden]>,
1107      Group<grp_undocumented>;
1108 def encryptable : Flag<["-"], "encryptable">,
1109      HelpText<"This option is undocumented in ld64">,
1110      Flags<[HelpHidden]>,
1111      Group<grp_undocumented>;
1112 def executable_path : Flag<["-"], "executable_path">,
1113      HelpText<"This option is undocumented in ld64">,
1114      Flags<[HelpHidden]>,
1115      Group<grp_undocumented>;
1116 def fixup_chains : Flag<["-"], "fixup_chains">,
1117      HelpText<"This option is undocumented in ld64">,
1118      Flags<[HelpHidden]>,
1119      Group<grp_undocumented>;
1120 def fixup_chains_section : Flag<["-"], "fixup_chains_section">,
1121      HelpText<"This option is undocumented in ld64">,
1122      Flags<[HelpHidden]>,
1123      Group<grp_undocumented>;
1124 def flto_codegen_only : Flag<["-"], "flto-codegen-only">,
1125      HelpText<"This option is undocumented in ld64">,
1126      Flags<[HelpHidden]>,
1127      Group<grp_undocumented>;
1128 def force_load_swift_libs : Flag<["-"], "force_load_swift_libs">,
1129      HelpText<"This option is undocumented in ld64">,
1130      Flags<[HelpHidden]>,
1131      Group<grp_undocumented>;
1132 def force_symbol_not_weak : Flag<["-"], "force_symbol_not_weak">,
1133      HelpText<"This option is undocumented in ld64">,
1134      Flags<[HelpHidden]>,
1135      Group<grp_undocumented>;
1136 def force_symbols_coalesce_list : Flag<["-"], "force_symbols_coalesce_list">,
1137      HelpText<"This option is undocumented in ld64">,
1138      Flags<[HelpHidden]>,
1139      Group<grp_undocumented>;
1140 def force_symbols_not_weak_list : Flag<["-"], "force_symbols_not_weak_list">,
1141      HelpText<"This option is undocumented in ld64">,
1142      Flags<[HelpHidden]>,
1143      Group<grp_undocumented>;
1144 def force_symbols_weak_list : Flag<["-"], "force_symbols_weak_list">,
1145      HelpText<"This option is undocumented in ld64">,
1146      Flags<[HelpHidden]>,
1147      Group<grp_undocumented>;
1148 def force_symbol_weak : Flag<["-"], "force_symbol_weak">,
1149      HelpText<"This option is undocumented in ld64">,
1150      Flags<[HelpHidden]>,
1151      Group<grp_undocumented>;
1152 def function_starts : Flag<["-"], "function_starts">,
1153      HelpText<"This option is undocumented in ld64">,
1154      Flags<[HelpHidden]>,
1155      Group<grp_undocumented>;
1156 def i : Flag<["-"], "i">,
1157      HelpText<"This option is undocumented in ld64">,
1158      Flags<[HelpHidden]>,
1159      Group<grp_undocumented>;
1160 def ignore_auto_link : Flag<["-"], "ignore_auto_link">,
1161      HelpText<"This option is undocumented in ld64">,
1162      Flags<[HelpHidden]>,
1163      Group<grp_undocumented>;
1164 def ignore_optimization_hints : Flag<["-"], "ignore_optimization_hints">,
1165      HelpText<"This option is undocumented in ld64">,
1166      Flags<[HelpHidden]>,
1167      Group<grp_undocumented>;
1168 def init_offsets : Flag<["-"], "init_offsets">,
1169      HelpText<"This option is undocumented in ld64">,
1170      Flags<[HelpHidden]>,
1171      Group<grp_undocumented>;
1172 def keep_dwarf_unwind : Flag<["-"], "keep_dwarf_unwind">,
1173      HelpText<"This option is undocumented in ld64">,
1174      Flags<[HelpHidden]>,
1175      Group<grp_undocumented>;
1176 def no_keep_dwarf_unwind : Flag<["-"], "no_keep_dwarf_unwind">,
1177      HelpText<"This option is undocumented in ld64">,
1178      Flags<[HelpHidden]>,
1179      Group<grp_undocumented>;
1180 def kext : Flag<["-"], "kext">,
1181      HelpText<"This option is undocumented in ld64">,
1182      Flags<[HelpHidden]>,
1183      Group<grp_undocumented>;
1184 def kext_objects_dir : Flag<["-"], "kext_objects_dir">,
1185      HelpText<"This option is undocumented in ld64">,
1186      Flags<[HelpHidden]>,
1187      Group<grp_undocumented>;
1188 def no_kext_objects : Flag<["-"], "no_kext_objects">,
1189      HelpText<"This option is undocumented in ld64">,
1190      Flags<[HelpHidden]>,
1191      Group<grp_undocumented>;
1192 def kexts_use_stubs : Flag<["-"], "kexts_use_stubs">,
1193      HelpText<"This option is undocumented in ld64">,
1194      Flags<[HelpHidden]>,
1195      Group<grp_undocumented>;
1196 def maccatalyst_version_min : Flag<["-"], "maccatalyst_version_min">,
1197      HelpText<"This option is undocumented in ld64">,
1198      Flags<[HelpHidden]>,
1199      Group<grp_undocumented>;
1200 def iosmac_version_min : Flag<["-"], "iosmac_version_min">,
1201      Alias<maccatalyst_version_min>,
1202      HelpText<"Alias for -maccatalyst_version_min">,
1203      Flags<[HelpHidden]>,
1204      Group<grp_undocumented>;
1205 def uikitformac_version_min : Flag<["-"], "uikitformac_version_min">,
1206      Alias<maccatalyst_version_min>,
1207      HelpText<"Alias for -maccatalyst_version_min">,
1208      Flags<[HelpHidden]>,
1209      Group<grp_undocumented>;
1210 def mcpu : Flag<["-"], "mcpu">,
1211      HelpText<"This option is undocumented in ld64">,
1212      Flags<[HelpHidden]>,
1213      Group<grp_undocumented>;
1214 def mllvm : Flag<["-"], "mllvm">,
1215      HelpText<"This option is undocumented in ld64">,
1216      Flags<[HelpHidden]>,
1217      Group<grp_undocumented>;
1218 def no_compact_unwind : Flag<["-"], "no_compact_unwind">,
1219      HelpText<"This option is undocumented in ld64">,
1220      Flags<[HelpHidden]>,
1221      Group<grp_undocumented>;
1222 def no_dtrace_dof : Flag<["-"], "no_dtrace_dof">,
1223      HelpText<"This option is undocumented in ld64">,
1224      Flags<[HelpHidden]>,
1225      Group<grp_undocumented>;
1226 def no_encryption : Flag<["-"], "no_encryption">,
1227      HelpText<"This option is undocumented in ld64">,
1228      Flags<[HelpHidden]>,
1229      Group<grp_undocumented>;
1230 def no_new_main : Flag<["-"], "no_new_main">,
1231      HelpText<"This option is undocumented in ld64">,
1232      Flags<[HelpHidden]>,
1233      Group<grp_undocumented>;
1234 def objc_abi_version : Flag<["-"], "objc_abi_version">,
1235      HelpText<"This option is undocumented in ld64">,
1236      Flags<[HelpHidden]>,
1237      Group<grp_undocumented>;
1238 def pause : Flag<["-"], "pause">,
1239      HelpText<"This option is undocumented in ld64">,
1240      Flags<[HelpHidden]>,
1241      Group<grp_undocumented>;
1242 def random_uuid : Flag<["-"], "random_uuid">,
1243      HelpText<"This option is undocumented in ld64">,
1244      Flags<[HelpHidden]>,
1245      Group<grp_undocumented>;
1246 def save_temps : Flag<["-"], "save-temps">,
1247      HelpText<"This option is undocumented in ld64">,
1248      Flags<[HelpHidden]>,
1249      Group<grp_undocumented>;
1250 def sdk_version : Flag<["-"], "sdk_version">,
1251      HelpText<"This option is undocumented in ld64">,
1252      Flags<[HelpHidden]>,
1253      Group<grp_undocumented>;
1254 def simulator_support : Flag<["-"], "simulator_support">,
1255      HelpText<"This option is undocumented in ld64">,
1256      Flags<[HelpHidden]>,
1257      Group<grp_undocumented>;
1258 def snapshot_dir : Flag<["-"], "snapshot_dir">,
1259      HelpText<"This option is undocumented in ld64">,
1260      Flags<[HelpHidden]>,
1261      Group<grp_undocumented>;
1262 def source_version : Flag<["-"], "source_version">,
1263      HelpText<"This option is undocumented in ld64">,
1264      Flags<[HelpHidden]>,
1265      Group<grp_undocumented>;
1266 def text_exec : Flag<["-"], "text_exec">,
1267      HelpText<"This option is undocumented in ld64">,
1268      Flags<[HelpHidden]>,
1269      Group<grp_undocumented>;
1270 def threaded_starts_section : Flag<["-"], "threaded_starts_section">,
1271      HelpText<"This option is undocumented in ld64">,
1272      Flags<[HelpHidden]>,
1273      Group<grp_undocumented>;
1274 def twolevel_namespace : Flag<["-"], "twolevel_namespace">,
1275      HelpText<"This option is undocumented in ld64">,
1276      Flags<[HelpHidden]>,
1277      Group<grp_undocumented>;
1278 def verbose_optimization_hints : Flag<["-"], "verbose_optimization_hints">,
1279      HelpText<"This option is undocumented in ld64">,
1280      Flags<[HelpHidden]>,
1281      Group<grp_undocumented>;
1282 def version_load_command : Flag<["-"], "version_load_command">,
1283      HelpText<"This option is undocumented in ld64">,
1284      Flags<[HelpHidden]>,
1285      Group<grp_undocumented>;
1286
1287 def grp_ignored : OptionGroup<"ignored">, HelpText<"IGNORED">;
1288
1289 def M : Flag<["-"], "M">,
1290      HelpText<"This option is ignored in ld64">,
1291      Flags<[HelpHidden]>,
1292      Group<grp_ignored>;
1293 def new_linker : Flag<["-"], "new_linker">,
1294      HelpText<"This option is ignored in ld64">,
1295      Flags<[HelpHidden]>,
1296      Group<grp_ignored>;