aboutsummaryrefslogtreecommitdiff
path: root/lld/MachO/Options.td
diff options
context:
space:
mode:
Diffstat (limited to 'lld/MachO/Options.td')
-rw-r--r--lld/MachO/Options.td136
1 files changed, 71 insertions, 65 deletions
diff --git a/lld/MachO/Options.td b/lld/MachO/Options.td
index 1e42542b9ac4..51c834c57238 100644
--- a/lld/MachO/Options.td
+++ b/lld/MachO/Options.td
@@ -1,8 +1,41 @@
include "llvm/Option/OptParser.td"
-def help : Flag<["-", "--"], "help">;
+// Flags that lld/MachO understands but ld64 doesn't. These take
+// '--' instead of '-' and use dashes instead of underscores, so
+// they don't collide with the ld64 compat options.
+def grp_lld : OptionGroup<"kind">, HelpText<"LLD-SPECIFIC">;
+
+def help : Flag<["-", "--"], "help">,
+ Group<grp_lld>;
def help_hidden : Flag<["--"], "help-hidden">,
- HelpText<"Display help for hidden options">;
+ HelpText<"Display help for hidden options">,
+ Group<grp_lld>;
+def color_diagnostics: Flag<["--"], "color-diagnostics">,
+ HelpText<"Alias for --color-diagnostics=always">,
+ Group<grp_lld>;
+def no_color_diagnostics: Flag<["--"], "no-color-diagnostics">,
+ HelpText<"Alias for --color-diagnostics=never">,
+ Group<grp_lld>;
+def color_diagnostics_eq: Joined<["--"], "color-diagnostics=">,
+ HelpText<"Use colors in diagnostics (default: auto)">,
+ MetaVarName<"[auto,always,never]">,
+ Group<grp_lld>;
+def reproduce: Separate<["--"], "reproduce">,
+ Group<grp_lld>;
+def reproduce_eq: Joined<["--"], "reproduce=">,
+ Alias<!cast<Separate>(reproduce)>,
+ HelpText<"Write tar file containing inputs and command to reproduce link">,
+ Group<grp_lld>;
+def version: Flag<["--"], "version">,
+ HelpText<"Display the version number and exit">,
+ Group<grp_lld>;
+def lto_legacy_pass_manager: Flag<["--"], "lto-legacy-pass-manager">,
+ HelpText<"Use the legacy pass manager in LLVM">,
+ Group<grp_lld>;
+def no_lto_legacy_pass_manager : Flag<["--"], "no-lto-legacy-pass-manager">,
+ HelpText<"Use the new pass manager in LLVM">,
+ Group<grp_lld>;
+
// This is a complete Options.td compiled from Apple's ld(1) manpage
// dated 2018-03-07 and cross checked with ld64 source code in repo
@@ -18,14 +51,12 @@ def grp_kind : OptionGroup<"kind">, HelpText<"OUTPUT KIND">;
def execute : Flag<["-"], "execute">,
HelpText<"Produce a main executable (default)">,
- Flags<[HelpHidden]>,
Group<grp_kind>;
def dylib : Flag<["-"], "dylib">,
HelpText<"Produce a shared library">,
Group<grp_kind>;
def bundle : Flag<["-"], "bundle">,
HelpText<"Produce a bundle">,
- Flags<[HelpHidden]>,
Group<grp_kind>;
def r : Flag<["-"], "r">,
HelpText<"Merge multiple object files into one, retaining relocations">,
@@ -37,7 +68,6 @@ def dylinker : Flag<["-"], "dylinker">,
Group<grp_kind>;
def dynamic : Flag<["-"], "dynamic">,
HelpText<"Link dynamically (default)">,
- Flags<[HelpHidden]>,
Group<grp_kind>;
def static : Flag<["-"], "static">,
HelpText<"Link statically">,
@@ -65,12 +95,10 @@ def l : Joined<["-"], "l">,
def weak_l : Joined<["-"], "weak-l">,
MetaVarName<"<name>">,
HelpText<"Like -l<name>, but mark library and its references as weak imports">,
- Flags<[HelpHidden]>,
Group<grp_libs>;
def weak_library : Separate<["-"], "weak_library">,
MetaVarName<"<path>">,
HelpText<"Like bare <path>, but mark library and its references as weak imports">,
- Flags<[HelpHidden]>,
Group<grp_libs>;
def reexport_l : Joined<["-"], "reexport-l">,
MetaVarName<"<name>">,
@@ -102,25 +130,20 @@ def Z : Flag<["-"], "Z">,
def syslibroot : Separate<["-"], "syslibroot">,
MetaVarName<"<rootdir>">,
HelpText<"Prepend <rootdir> to all library and framework search paths">,
- Flags<[HelpHidden]>,
Group<grp_libs>;
def search_paths_first : Flag<["-"], "search_paths_first">,
HelpText<"Search for lib<name>.dylib and lib<name>.a at each step in traversing search path (default for Xcode 4 and later)">,
- Flags<[HelpHidden]>,
Group<grp_libs>;
def search_dylibs_first : Flag<["-"], "search_dylibs_first">,
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)">,
- Flags<[HelpHidden]>,
Group<grp_libs>;
def framework : Separate<["-"], "framework">,
MetaVarName<"<name>">,
HelpText<"Search for <name>.framework/<name> on the framework search path">,
- Flags<[HelpHidden]>,
Group<grp_libs>;
def weak_framework : Separate<["-"], "weak_framework">,
MetaVarName<"<name>">,
HelpText<"Like -framework <name>, but mark framework and its references as weak imports">,
- Flags<[HelpHidden]>,
Group<grp_libs>;
def reexport_framework : Separate<["-"], "reexport_framework">,
MetaVarName<"<name>">,
@@ -135,20 +158,16 @@ def upward_framework : Separate<["-"], "upward_framework">,
def F : JoinedOrSeparate<["-"], "F">,
MetaVarName<"<dir>">,
HelpText<"Add dir to the framework search path">,
- Flags<[HelpHidden]>,
Group<grp_libs>;
def all_load : Flag<["-"], "all_load">,
HelpText<"Load all members of all static archive libraries">,
- Flags<[HelpHidden]>,
Group<grp_libs>;
def ObjC : Flag<["-"], "ObjC">,
HelpText<"Load all members of static archives that are an Objective-C class or category.">,
- Flags<[HelpHidden]>,
Group<grp_libs>;
def force_load : Separate<["-"], "force_load">,
MetaVarName<"<path>">,
HelpText<"Load all members static archive library at <path>">,
- Flags<[HelpHidden]>,
Group<grp_libs>;
def grp_content : OptionGroup<"content">, HelpText<"ADDITIONAL CONTENT">;
@@ -156,7 +175,6 @@ def grp_content : OptionGroup<"content">, HelpText<"ADDITIONAL CONTENT">;
def sectcreate : MultiArg<["-"], "sectcreate", 3>,
MetaVarName<"<segment> <section> <file>">,
HelpText<"Create <section> in <segment> from the contents of <file>">,
- Flags<[HelpHidden]>,
Group<grp_content>;
def segcreate : MultiArg<["-"], "segcreate", 3>,
MetaVarName<"<segment> <section> <file>">,
@@ -167,7 +185,6 @@ def segcreate : MultiArg<["-"], "segcreate", 3>,
def filelist : Separate<["-"], "filelist">,
MetaVarName<"<file>">,
HelpText<"Read names of files to link from <file>">,
- Flags<[HelpHidden]>,
Group<grp_content>;
def dtrace : Separate<["-"], "dtrace">,
MetaVarName<"<script>">,
@@ -184,7 +201,6 @@ def dead_strip : Flag<["-"], "dead_strip">,
def order_file : Separate<["-"], "order_file">,
MetaVarName<"<file>">,
HelpText<"Layout functions and data according to specification in <file>">,
- Flags<[HelpHidden]>,
Group<grp_opts>;
def sectorder : MultiArg<["-"], "sectorder", 3>,
MetaVarName<"<segname> <sectname> <orderfile>">,
@@ -202,6 +218,9 @@ def no_order_data : Flag<["-"], "no_order_data">,
def platform_version : MultiArg<["-"], "platform_version", 3>,
MetaVarName<"<platform> <min_version> <sdk_version>">,
HelpText<"Platform (e.g., macos, ios, tvos, watchos, bridgeos, mac-catalyst, ios-sim, tvos-sim, watchos-sim, driverkit) and version numbers">,
+ Group<grp_opts>;
+def sdk_version : Separate<["-"], "sdk_version">,
+ HelpText<"This option is undocumented in ld64">,
Flags<[HelpHidden]>,
Group<grp_opts>;
def macos_version_min : Separate<["-"], "macos_version_min">,
@@ -220,6 +239,11 @@ def ios_version_min : Separate<["-"], "ios_version_min">,
HelpText<"Oldest iOS version for which linked output is useable">,
Flags<[HelpHidden]>,
Group<grp_opts>;
+def ios_simulator_version_min : Separate<["-"], "ios_simulator_version_min">,
+ MetaVarName<"<version>">,
+ HelpText<"Oldest iOS simulator version for which linked output is useable">,
+ Flags<[HelpHidden]>,
+ Group<grp_opts>;
def iphoneos_version_min : Separate<["-"], "iphoneos_version_min">,
MetaVarName<"<version>">,
Alias<ios_version_min>,
@@ -239,7 +263,6 @@ def seg1addr : Separate<["-"], "seg1addr">,
Group<grp_opts>;
def no_implicit_dylibs : Flag<["-"], "no_implicit_dylibs">,
HelpText<"Do not optimize public dylib transitive symbol references">,
- Flags<[HelpHidden]>,
Group<grp_opts>;
def exported_symbols_order : Separate<["-"], "exported_symbols_order">,
MetaVarName<"<file>">,
@@ -284,7 +307,6 @@ def mark_dead_strippable_dylib : Flag<["-"], "mark_dead_strippable_dylib">,
def compatibility_version : Separate<["-"], "compatibility_version">,
MetaVarName<"<version>">,
HelpText<"Compatibility <version> of this library">,
- Flags<[HelpHidden]>,
Group<grp_dylib>;
def dylib_compatibility_version : Separate<["-"], "dylib_compatibility_version">,
MetaVarName<"<version>">,
@@ -295,7 +317,6 @@ def dylib_compatibility_version : Separate<["-"], "dylib_compatibility_version">
def current_version : Separate<["-"], "current_version">,
MetaVarName<"<version>">,
HelpText<"Current <version> of this library">,
- Flags<[HelpHidden]>,
Group<grp_dylib>;
def dylib_current_version : Separate<["-"], "dylib_current_version">,
MetaVarName<"<version>">,
@@ -308,11 +329,9 @@ def grp_main : OptionGroup<"main">, HelpText<"MAIN EXECUTABLE">;
def pie : Flag<["-"], "pie">,
HelpText<"Build a position independent executable (default for macOS 10.7 and later)">,
- Flags<[HelpHidden]>,
Group<grp_main>;
def no_pie : Flag<["-"], "no_pie">,
HelpText<"Do not build a position independent executable (default for macOS 10.6 and earlier)">,
- Flags<[HelpHidden]>,
Group<grp_main>;
def pagezero_size : Separate<["-"], "pagezero_size">,
MetaVarName<"<size>">,
@@ -344,7 +363,7 @@ def bundle_loader : Separate<["-"], "bundle_loader">,
def grp_object : OptionGroup<"object">, HelpText<"CREATING AN OBJECT FILE">;
def keep_private_externs : Flag<["-"], "keep_private_externs">,
- HelpText<"Do not convert private external symbols to static symbols">,
+ HelpText<"Do not convert private external symbols to static symbols (only valid with -r)">,
Flags<[HelpHidden]>,
Group<grp_object>;
def d : Flag<["-"], "d">,
@@ -406,12 +425,10 @@ def U : Separate<["-"], "U">,
def undefined : Separate<["-"], "undefined">,
MetaVarName<"<treatment>">,
HelpText<"Handle undefined symbols according to <treatment>: error, warning, suppress, or dynamic_lookup (default is error)">,
- Flags<[HelpHidden]>,
Group<grp_resolve>;
def rpath : Separate<["-"], "rpath">,
MetaVarName<"<path>">,
HelpText<"Add <path> to dyld search list for dylibs with load path prefix `@rpath/'">,
- Flags<[HelpHidden]>,
Group<grp_resolve>;
def commons : Separate<["-"], "commons">,
MetaVarName<"<treatment>">,
@@ -422,8 +439,7 @@ def commons : Separate<["-"], "commons">,
def grp_introspect : OptionGroup<"introspect">, HelpText<"INTROSPECTING THE LINKER">;
def why_load : Flag<["-"], "why_load">,
- HelpText<"Log the symbol that compels loading of each object file from a static library">,
- Flags<[HelpHidden]>,
+ HelpText<"Log why each object file is loaded from a static library">,
Group<grp_introspect>;
def whyload : Flag<["-"], "whyload">,
Alias<why_load>,
@@ -441,7 +457,6 @@ def print_statistics : Flag<["-"], "print_statistics">,
Group<grp_introspect>;
def t : Flag<["-"], "t">,
HelpText<"Log every file the linker loads: object, archive, and dylib">,
- Flags<[HelpHidden]>,
Group<grp_introspect>;
def whatsloaded : Flag<["-"], "whatsloaded">,
HelpText<"Logs only the object files the linker loads">,
@@ -456,6 +471,14 @@ def map : Separate<["-"], "map">,
HelpText<"Writes all symbols and their addresses to <path>">,
Flags<[HelpHidden]>,
Group<grp_introspect>;
+def dependency_info : Separate<["-"], "dependency_info">,
+ MetaVarName<"<path>">,
+ HelpText<"Dump dependency info">,
+ Flags<[HelpHidden]>,
+ Group<grp_introspect>;
+def save_temps : Flag<["-"], "save-temps">,
+ HelpText<"Save intermediate LTO compilation results">,
+ Group<grp_introspect>;
def grp_symtab : OptionGroup<"symtab">, HelpText<"SYMBOL TABLE OPTIMIZATIONS">;
@@ -502,9 +525,15 @@ def bitcode_symbol_map : Separate<["-"], "bitcode_symbol_map">,
def grp_rare : OptionGroup<"rare">, HelpText<"RARELY USED">;
def v : Flag<["-"], "v">,
- HelpText<"Print the linker version">,
+ HelpText<"Print the linker version and search paths and exit">,
+ Group<grp_rare>;
+def adhoc_codesign : Flag<["-"], "adhoc_codesign">,
+ HelpText<"Write an ad-hoc code signature to the output file.">,
Flags<[HelpHidden]>,
Group<grp_rare>;
+def no_adhoc_codesign : Flag<["-"], "no_adhoc_codesign">,
+ HelpText<"Do not write an ad-hoc code signature to the output file.">,
+ Group<grp_rare>;
def version_details : Flag<["-"], "version_details">,
HelpText<"Print the linker version in JSON form">,
Flags<[HelpHidden]>,
@@ -595,8 +624,7 @@ def no_application_extension : Flag<["-"], "no_application_extension">,
Flags<[HelpHidden]>,
Group<grp_rare>;
def fatal_warnings : Flag<["-"], "fatal_warnings">,
- HelpText<"Escalate warnings as errors">,
- Flags<[HelpHidden]>,
+ HelpText<"Treat warnings as errors">,
Group<grp_rare>;
def no_eh_labels : Flag<["-"], "no_eh_labels">,
HelpText<"In -r mode, suppress .eh labels in the __eh_frame section">,
@@ -663,12 +691,10 @@ def init : Separate<["-"], "init">,
def sub_library : Separate<["-"], "sub_library">,
MetaVarName<"<name>">,
HelpText<"Re-export the dylib as <name>">,
- Flags<[HelpHidden]>,
Group<grp_rare>;
def sub_umbrella : Separate<["-"], "sub_umbrella">,
MetaVarName<"<name>">,
HelpText<"Re-export the framework as <name>">,
- Flags<[HelpHidden]>,
Group<grp_rare>;
def allowable_client : Separate<["-"], "allowable_client">,
MetaVarName<"<name>">,
@@ -687,12 +713,10 @@ def umbrella : Separate<["-"], "umbrella">,
Group<grp_rare>;
def headerpad : Separate<["-"], "headerpad">,
MetaVarName<"<size>">,
- HelpText<"Allocate hex <size> extra space for future expansion of the load commands via install_name_tool">,
- Flags<[HelpHidden]>,
+ HelpText<"Allocate hex <size> extra space for future expansion of the load commands via install_name_tool (default is 0x20)">,
Group<grp_rare>;
def headerpad_max_install_names : Flag<["-"], "headerpad_max_install_names">,
HelpText<"Allocate extra space so all load-command paths can expand to MAXPATHLEN via install_name_tool">,
- Flags<[HelpHidden]>,
Group<grp_rare>;
def bind_at_load : Flag<["-"], "bind_at_load">,
HelpText<"Tell dyld to bind all symbols at load time, rather than lazily">,
@@ -835,12 +859,10 @@ def no_objc_category_merging : Flag<["-"], "no_objc_category_merging">,
def object_path_lto : Separate<["-"], "object_path_lto">,
MetaVarName<"<path>">,
HelpText<"Retain any temporary mach-o file in <path> that would otherwise be deleted during LTO">,
- Flags<[HelpHidden]>,
Group<grp_rare>;
def lto_library : Separate<["-"], "lto_library">,
MetaVarName<"<path>">,
- HelpText<"Override the default ../lib/libLTO.dylib as <path>">,
- Flags<[HelpHidden]>,
+ HelpText<"Deprecated & ignored. LLD supports LTO directly, without using an external dylib.">,
Group<grp_rare>;
def cache_path_lto : Separate<["-"], "cache_path_lto">,
MetaVarName<"<path>">,
@@ -870,6 +892,12 @@ def not_for_dyld_shared_cache : Flag<["-"], "not_for_dyld_shared_cache">,
HelpText<"Prevent system dylibs from being placed into the dylib shared cache">,
Flags<[HelpHidden]>,
Group<grp_rare>;
+def mllvm : Separate<["-"], "mllvm">,
+ HelpText<"Options to pass to LLVM">,
+ Group<grp_rare>;
+def mcpu : Separate<["-"], "mcpu">,
+ HelpText<"Processor family target for LTO code generation">,
+ Group<grp_rare>;
def grp_deprecated : OptionGroup<"deprecated">, HelpText<"DEPRECATED">;
@@ -1095,13 +1123,7 @@ def debug_snapshot : Flag<["-"], "debug_snapshot">,
Flags<[HelpHidden]>,
Group<grp_undocumented>;
def demangle : Flag<["-"], "demangle">,
- HelpText<"This option is undocumented in ld64">,
- Flags<[HelpHidden]>,
- Group<grp_undocumented>;
-def dependency_info : Flag<["-"], "dependency_info">,
- HelpText<"This option is undocumented in ld64">,
- Flags<[HelpHidden]>,
- Group<grp_undocumented>;
+ HelpText<"Demangle symbol names in diagnostics">;
def dyld_env : Flag<["-"], "dyld_env">,
HelpText<"This option is undocumented in ld64">,
Flags<[HelpHidden]>,
@@ -1208,14 +1230,6 @@ def uikitformac_version_min : Flag<["-"], "uikitformac_version_min">,
HelpText<"Alias for -maccatalyst_version_min">,
Flags<[HelpHidden]>,
Group<grp_undocumented>;
-def mcpu : Flag<["-"], "mcpu">,
- HelpText<"This option is undocumented in ld64">,
- Flags<[HelpHidden]>,
- Group<grp_undocumented>;
-def mllvm : Flag<["-"], "mllvm">,
- HelpText<"This option is undocumented in ld64">,
- Flags<[HelpHidden]>,
- Group<grp_undocumented>;
def no_compact_unwind : Flag<["-"], "no_compact_unwind">,
HelpText<"This option is undocumented in ld64">,
Flags<[HelpHidden]>,
@@ -1232,7 +1246,7 @@ def no_new_main : Flag<["-"], "no_new_main">,
HelpText<"This option is undocumented in ld64">,
Flags<[HelpHidden]>,
Group<grp_undocumented>;
-def objc_abi_version : Flag<["-"], "objc_abi_version">,
+def objc_abi_version : Separate<["-"], "objc_abi_version">,
HelpText<"This option is undocumented in ld64">,
Flags<[HelpHidden]>,
Group<grp_undocumented>;
@@ -1244,14 +1258,6 @@ def random_uuid : Flag<["-"], "random_uuid">,
HelpText<"This option is undocumented in ld64">,
Flags<[HelpHidden]>,
Group<grp_undocumented>;
-def save_temps : Flag<["-"], "save-temps">,
- HelpText<"This option is undocumented in ld64">,
- Flags<[HelpHidden]>,
- Group<grp_undocumented>;
-def sdk_version : Flag<["-"], "sdk_version">,
- HelpText<"This option is undocumented in ld64">,
- Flags<[HelpHidden]>,
- Group<grp_undocumented>;
def simulator_support : Flag<["-"], "simulator_support">,
HelpText<"This option is undocumented in ld64">,
Flags<[HelpHidden]>,