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