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