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