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