110d565efSmrg; Processor-independent options for Darwin. 210d565efSmrg 3*ec02198aSmrg; Copyright (C) 2005-2020 Free Software Foundation, Inc. 410d565efSmrg; 510d565efSmrg; This file is part of GCC. 610d565efSmrg; 710d565efSmrg; GCC is free software; you can redistribute it and/or modify it under 810d565efSmrg; the terms of the GNU General Public License as published by the Free 910d565efSmrg; Software Foundation; either version 3, or (at your option) any later 1010d565efSmrg; version. 1110d565efSmrg; 1210d565efSmrg; GCC is distributed in the hope that it will be useful, but WITHOUT ANY 1310d565efSmrg; WARRANTY; without even the implied warranty of MERCHANTABILITY or 1410d565efSmrg; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 1510d565efSmrg; for more details. 1610d565efSmrg; 1710d565efSmrg; You should have received a copy of the GNU General Public License 1810d565efSmrg; along with GCC; see the file COPYING3. If not see 1910d565efSmrg; <http://www.gnu.org/licenses/>. 2010d565efSmrg 21c7a68eb7Smrg; We have a lot of Driver options, many of which are obsolete or very very 22c7a68eb7Smrg; rarely used so, to keep this file easier to manage: 2310d565efSmrg 24c7a68eb7Smrg; Please place all Non-driver options first (in alphabetical order), followed 25c7a68eb7Smrg; by Driver-only options. 2610d565efSmrg 27c7a68eb7Smrg; Non-driver options. 2810d565efSmrg 2910d565efSmrgdependency-file 3010d565efSmrgC ObjC C++ ObjC++ Separate Alias(MF) MissingArgError(missing filename after %qs) 3110d565efSmrg 32c7a68eb7Smrgfapple-kext 33c7a68eb7SmrgTarget Report C++ Var(flag_apple_kext) 34c7a68eb7SmrgGenerate code for darwin loadable kernel extensions. 3510d565efSmrg 36c7a68eb7Smrgiframework 37c7a68eb7SmrgTarget RejectNegative C ObjC C++ ObjC++ Joined Separate 38c7a68eb7Smrg-iframework <dir> Add <dir> to the end of the system framework include path. 3910d565efSmrg 4010d565efSmrgmconstant-cfstrings 4110d565efSmrgTarget Report Var(darwin_constant_cfstrings) Init(1) 4210d565efSmrgGenerate compile-time CFString objects. 4310d565efSmrg 4410d565efSmrgWnonportable-cfstrings 4510d565efSmrgTarget Report Var(darwin_warn_nonportable_cfstrings) Init(1) Warning 4610d565efSmrgWarn if constant CFString objects contain non-portable characters. 4710d565efSmrg 4810d565efSmrg; Use new-style pic stubs if this is true, x86 only so far. 4910d565efSmrgmatt-stubs 5010d565efSmrgTarget Report Var(darwin_macho_att_stub) Init(1) 5110d565efSmrgGenerate AT&T-style stubs for Mach-O. 5210d565efSmrg 5310d565efSmrgmdynamic-no-pic 5410d565efSmrgTarget Common Report Mask(MACHO_DYNAMIC_NO_PIC) 5510d565efSmrgGenerate code suitable for executables (NOT shared libs). 5610d565efSmrg 5710d565efSmrgmfix-and-continue 5810d565efSmrgTarget Report Var(darwin_fix_and_continue) 5910d565efSmrgGenerate code suitable for fast turn around debugging. 6010d565efSmrg 61c7a68eb7Smrgmkernel 62c7a68eb7SmrgTarget Report Var(flag_mkernel) 63c7a68eb7SmrgGenerate code for the kernel or loadable kernel extensions. 64c7a68eb7Smrg 6510d565efSmrg; The Init here is for the convenience of GCC developers, so that cc1 6610d565efSmrg; and cc1plus don't crash if no -mmacosx-version-min is passed. The 6710d565efSmrg; driver will always pass a -mmacosx-version-min, so in normal use the 6810d565efSmrg; Init is never used. 6910d565efSmrgmmacosx-version-min= 70c7a68eb7SmrgTarget RejectNegative Joined Report Var(darwin_macosx_version_min) Init(DEF_MIN_OSX_VERSION) 71*ec02198aSmrgThe earliest macOS version on which this program will run. 7210d565efSmrg 73c7a68eb7Smrg; Really, only relevant to PowerPC which has a 4 byte bool by default. 7410d565efSmrgmone-byte-bool 7510d565efSmrgTarget RejectNegative Report Var(darwin_one_byte_bool) 7610d565efSmrgSet sizeof(bool) to 1. 7710d565efSmrg 78c7a68eb7Smrgmsymbol-stubs 79c7a68eb7SmrgTarget Report Var(darwin_symbol_stubs) Init(0) 80c7a68eb7SmrgForce generation of external symbol indirection stubs. 8110d565efSmrg 82c7a68eb7Smrg; Some code-gen may be improved / adjusted if the linker is sufficiently modern. 83c7a68eb7Smrgmtarget-linker= 84c7a68eb7SmrgTarget RejectNegative Joined Report Alias(mtarget-linker) 8510d565efSmrg 86c7a68eb7Smrgmtarget-linker 87c7a68eb7SmrgTarget RejectNegative Joined Separate Report Var(darwin_target_linker) Init(LD64_VERSION) 88*ec02198aSmrg-mtarget-linker <version> Specify that ld64 <version> is the toolchain linker for the current invocation. 8910d565efSmrg 90c7a68eb7Smrg; Driver options. 91c7a68eb7Smrg 92c7a68eb7Smrgall_load 93*ec02198aSmrgDriver RejectNegative 94*ec02198aSmrgLoad all members of archive libraries, rather than only those that satisfy undefined symbols. 95c7a68eb7Smrg 96c7a68eb7Smrgallowable_client 97*ec02198aSmrgDriver RejectNegative Separate 98*ec02198aSmrg-allowable_client <name> The output dylib is private to the client <name>. 99c7a68eb7Smrg 100c7a68eb7Smrgarch 101c7a68eb7SmrgDriver RejectNegative Separate 102*ec02198aSmrg-arch <name> Generate output for architecture <name>. 103c7a68eb7Smrg 104c7a68eb7Smrgarch_errors_fatal 105*ec02198aSmrgDriver RejectNegative 106*ec02198aSmrgMismatches between file architecture and one specified by \"-arch\" are errors instead of warnings. 107c7a68eb7Smrg 108c7a68eb7Smrgasm_macosx_version_min= 109c7a68eb7SmrgDriver RejectNegative Joined 110*ec02198aSmrgThe earliest macOS version on which this program will run (formatted for the assembler). 111c7a68eb7Smrg 112c7a68eb7Smrgbind_at_load 113*ec02198aSmrgDriver RejectNegative 114*ec02198aSmrgGenerate an output executable that binds symbols on load, rather than lazily. 115c7a68eb7Smrg 116c7a68eb7Smrgbundle 117*ec02198aSmrgDriver RejectNegative 118*ec02198aSmrgGenerate a Mach-O bundle (file type MH_BUNDLE). 119c7a68eb7Smrg 120c7a68eb7Smrgbundle_loader 121*ec02198aSmrgDriver RejectNegative Separate 122*ec02198aSmrg-bundle_loader <executable> Treat <executable> (that will be loading this bundle) as if it was one of the dynamic libraries the bundle is linked against for symbol resolution. 123c7a68eb7Smrg 124c7a68eb7Smrgclient_name 125c7a68eb7SmrgDriver RejectNegative Separate 126*ec02198aSmrg-client_name <name> Enable the executable being built to link against a private dylib (using allowable_client). 127c7a68eb7Smrg 128c7a68eb7Smrgcompatibility_version 129c7a68eb7SmrgDriver RejectNegative Separate 130*ec02198aSmrg-compatibility_version <number> Set the version for the client interface. Client programs must record a value less than or equal to <number>, or the binding will fail at runtime. 131c7a68eb7Smrg 132c7a68eb7Smrgcurrent_version 133c7a68eb7SmrgDriver RejectNegative Separate 134*ec02198aSmrg-current_version <number> Set the current version for the library to <number>. 135c7a68eb7Smrg 136c7a68eb7Smrgdead_strip 137*ec02198aSmrgDriver RejectNegative 138*ec02198aSmrgRemove code and data that is unreachable from any exported symbol (including the entry point). 139c7a68eb7Smrg 140c7a68eb7Smrgdylib_file 141*ec02198aSmrgDriver RejectNegative Separate 142*ec02198aSmrg-dylib_file install_name:file_name This allows linking of a dylib with \"install_name\" but to be found in a different install position \"file_name\" 143c7a68eb7Smrg 144c7a68eb7Smrgdylinker 145c7a68eb7SmrgDriver RejectNegative 146c7a68eb7SmrgProduce a Mach-O dylinker (file type MH_DYLINKER), only used for building dyld. 147c7a68eb7Smrg 148c7a68eb7Smrgdylinker_install_name 149c7a68eb7SmrgDriver RejectNegative Separate 150c7a68eb7Smrg-dylinker_install_name <path> Only used for building dyld. 151c7a68eb7Smrg 152c7a68eb7Smrgdynamic 153*ec02198aSmrgDriver RejectNegative 154c7a68eb7SmrgThe default (and opposite of -static), implied by user mode executables, shared libraries and bundles. 155c7a68eb7Smrg 156c7a68eb7Smrgdynamiclib 157*ec02198aSmrgDriver RejectNegative 158*ec02198aSmrgProduce a Mach-O shared library (file type MH_DYLIB), synonym for \"-shared\". 159c7a68eb7Smrg 160c7a68eb7Smrgexported_symbols_list 161*ec02198aSmrgDriver RejectNegative Separate 162*ec02198aSmrg-exported_symbols_list <filename> Export global symbols in <filename> in linked output file; any symbols not mentioned will be treated as \"hidden\". 163c7a68eb7Smrg 164c7a68eb7Smrgfilelist 165c7a68eb7SmrgDriver RejectNegative Separate 166*ec02198aSmrgSupply a list of objects to be linked from a file, rather than the command line. 167c7a68eb7Smrg 168c7a68eb7Smrgfindirect-virtual-calls 169c7a68eb7SmrgDriver RejectNegative 170c7a68eb7SmrgUsed for generating code for some older kernel revisions. 171c7a68eb7Smrg 172c7a68eb7Smrgflat_namespace 173*ec02198aSmrgDriver RejectNegative 174c7a68eb7SmrgIgnore the normal two-level namespace; resolve symbols in command line order and do not record which library provided the resolved symbol. 175c7a68eb7Smrg 176c7a68eb7Smrgforce_cpusubtype_ALL 177*ec02198aSmrgDriver RejectNegative 178c7a68eb7SmrgFor the assembler (and linker) permit any architecture sub-variant to be used without error. 179c7a68eb7Smrg 180c7a68eb7Smrgforce_flat_namespace 181*ec02198aSmrgDriver RejectNegative 182*ec02198aSmrgSet the output object such that, on loading, dyld will ignore any two-level namespace information and resolve symbols in the discovery order for loaded libs. 183c7a68eb7Smrg 184c7a68eb7Smrgframework 185c7a68eb7SmrgDriver RejectNegative Separate 186*ec02198aSmrg-framework <name> The linker should search for the framework <name> in the framework search path. 187c7a68eb7Smrg 188c7a68eb7Smrgfterminated-vtables 189c7a68eb7SmrgDriver RejectNegative 190c7a68eb7SmrgUsed for generating code for some older kernel revisions. 191c7a68eb7Smrg 192c7a68eb7Smrggfull 193c7a68eb7SmrgDriver RejectNegative 194*ec02198aSmrgAbbreviation for \"-g -fno-eliminate-unused-debug-symbols\". 195c7a68eb7Smrg 196c7a68eb7Smrggused 197c7a68eb7SmrgDriver RejectNegative 198*ec02198aSmrgAbbreviation for \"-g -feliminate-unused-debug-symbols\". 199c7a68eb7Smrg 200c7a68eb7Smrgheaderpad_max_install_names 201c7a68eb7SmrgDriver RejectNegative 202*ec02198aSmrgAutomatically adds space for longer path names in load commands (up to MAXPATHLEN). 203c7a68eb7Smrg 204c7a68eb7Smrgimage_base 205*ec02198aSmrgDriver RejectNegative Separate 206*ec02198aSmrg-image_base <address> Specify <address> as the base address for a dylib or bundle. 207c7a68eb7Smrg 208c7a68eb7Smrginit 209*ec02198aSmrgDriver RejectNegative Separate 210*ec02198aSmrg-init <symbol_name> The symbol <symbol_name> will be used as the first initialiser for a dylib. 211c7a68eb7Smrg 212c7a68eb7Smrginstall_name 213*ec02198aSmrgDriver RejectNegative Separate 214c7a68eb7Smrg-install_name <name> Set the install name for a dylib. 215c7a68eb7Smrg 216c7a68eb7Smrgkeep_private_externs 217c7a68eb7SmrgDriver RejectNegative 218c7a68eb7SmrgUsually \"private extern\" (hidden) symbols are made local when linking, this command suppresses that such that they remain exported. 219c7a68eb7Smrg 220c7a68eb7Smrgmulti_module 221*ec02198aSmrgDriver RejectNegative 222*ec02198aSmrg(Obsolete after 10.4) Multi modules are ignored at runtime since macOS 10.4. 223c7a68eb7Smrg 224c7a68eb7Smrgmultiply_defined 225*ec02198aSmrgDriver RejectNegative Separate 226c7a68eb7Smrg(Obsolete after 10.4) -multiply_defined <treatment> Provided a mechanism for warning about symbols defined in multiple dylibs. 227c7a68eb7Smrg 228c7a68eb7Smrgmultiply_defined_unused 229*ec02198aSmrgDriver RejectNegative Separate 230c7a68eb7Smrg(Obsolete after 10.4) -multiply_defined_unused <treatment> Provided a mechanism for warning about symbols defined in the current executable also being defined in linked dylibs. 231c7a68eb7Smrg 232c7a68eb7Smrgno_dead_strip_inits_and_terms 233*ec02198aSmrgDriver RejectNegative 234*ec02198aSmrg(Obsolete) Current linkers never dead-strip these items, so the option is not needed. 235*ec02198aSmrg 236*ec02198aSmrgnodefaultexport 237*ec02198aSmrgDriver RejectNegative 238*ec02198aSmrgDo not add a default symbol exports to modules or dynamic libraries. 239c7a68eb7Smrg 240c7a68eb7Smrgnofixprebinding 241c7a68eb7SmrgDriver RejectNegative 242*ec02198aSmrg(Obsolete after 10.3.9) Set MH_NOPREFIXBINDING, in an executable. 243c7a68eb7Smrg 244c7a68eb7Smrgnomultidefs 245c7a68eb7SmrgDriver RejectNegative 246c7a68eb7Smrg(Obsolete after 10.4) Set MH_NOMULTIDEFS in an umbrella framework. 247c7a68eb7Smrg 248c7a68eb7Smrgnoprebind 249c7a68eb7SmrgDriver RejectNegative Negative(prebind) 250c7a68eb7Smrg(Obsolete) LD_PREBIND is no longer supported. 251c7a68eb7Smrg 252c7a68eb7Smrgnoseglinkedit 253c7a68eb7SmrgDriver RejectNegative Negative(seglinkedit) 254c7a68eb7Smrg(Obsolete) This is the default. 255c7a68eb7Smrg 256c7a68eb7Smrgobject 257c7a68eb7SmrgDriver RejectNegative 258c7a68eb7Smrg 259c7a68eb7Smrgpagezero_size 260c7a68eb7SmrgDriver RejectNegative Separate 261*ec02198aSmrg-pagezero_size <size> Allows setting the page 0 size to 4kb when required. 262c7a68eb7Smrg 263c7a68eb7Smrgprebind 264c7a68eb7SmrgDriver RejectNegative Negative(noprebind) 265c7a68eb7Smrg(Obsolete) LD_PREBIND is no longer supported. 266c7a68eb7Smrg 267c7a68eb7Smrgprebind_all_twolevel_modules 268c7a68eb7SmrgDriver RejectNegative 269c7a68eb7Smrg(Obsolete) LD_PREBIND is no longer supported. 270c7a68eb7Smrg 271c7a68eb7Smrgpreload 272c7a68eb7SmrgDriver RejectNegative 273c7a68eb7SmrgProduces a Mach-O file suitable for embedded/ROM use. 274c7a68eb7Smrg 275c7a68eb7Smrgprivate_bundle 276c7a68eb7SmrgDriver RejectNegative 277c7a68eb7Smrg(Obsolete) Allowed linking to proceed with \"-flat_namespace\" when a linked bundle contained a symbol also exported from the main executable. 278c7a68eb7Smrg 279c7a68eb7Smrgpthread 280c7a68eb7SmrgDriver RejectNegative 281c7a68eb7Smrg 282c7a68eb7Smrgrdynamic 283c7a68eb7SmrgDriver RejectNegative 284c7a68eb7SmrgSynonym for \"-export-dynamic\" for linker versions that support it. 285c7a68eb7Smrg 286c7a68eb7Smrgread_only_relocs 287c7a68eb7SmrgDriver RejectNegative Separate 288*ec02198aSmrg-read_only_relocs <treatment> Allow relocations in read-only pages (not recommended). 289c7a68eb7Smrg 290c7a68eb7Smrgsectalign 291c7a68eb7SmrgDriver RejectNegative Separate Args(3) 292*ec02198aSmrg-sectalign <segname> <sectname> <value> Set section <sectname> in segment <segname> to have alignment <value> which must be an integral power of two expressed in hexadecimal form. 293c7a68eb7Smrg 294c7a68eb7Smrgsectcreate 295c7a68eb7SmrgDriver RejectNegative Separate Args(3) 296*ec02198aSmrg-sectcreate <segname> <sectname> <file> Create section <sectname> in segment <segname> from the contents of <file>. 297c7a68eb7Smrg 298c7a68eb7Smrgsectobjectsymbols 299c7a68eb7SmrgDriver RejectNegative Separate Args(2) 300c7a68eb7Smrg(Obsolete) -sectobjectsymbols <segname> <sectname> Setting a local symbol at the start of a section is no longer supported. 301c7a68eb7Smrg 302c7a68eb7Smrgsectorder 303c7a68eb7SmrgDriver RejectNegative Separate Args(3) 304*ec02198aSmrg(Obsolete) -sectorder <segname> <sectname> <orderfile> Replaced by a more general option \"-order_file\". 305c7a68eb7Smrg 306c7a68eb7Smrgseg_addr_table 307*ec02198aSmrgDriver RejectNegative Separate 308*ec02198aSmrg-seg_addr_table <file> Specify the base addresses for dynamic libraries; <file> contains a line for each library. 309c7a68eb7Smrg 310c7a68eb7Smrg; This is only usable by the ld_classic linker. 311c7a68eb7Smrgseg_addr_table_filename 312*ec02198aSmrgDriver RejectNegative Separate 313*ec02198aSmrg(Obsolete, ld_classic only) -seg_addr_table_filename <path>. 314c7a68eb7Smrg 315c7a68eb7Smrgseg1addr 316c7a68eb7SmrgDriver RejectNegative Separate 317*ec02198aSmrgSynonym for \"image_base\". 318c7a68eb7Smrg 319c7a68eb7Smrgsegaddr 320*ec02198aSmrgDriver RejectNegative Separate Args(2) 321*ec02198aSmrg-segaddr <name> <address> Set the base address of segment <name> to <address> which must be aligned to a page boundary (currently 4kb). 322c7a68eb7Smrg 323c7a68eb7Smrg; This is only usable by the ld_classic linker. 324c7a68eb7Smrgsegcreate 325c7a68eb7SmrgDriver RejectNegative Separate Args(3) 326*ec02198aSmrg(Obsolete, ld_classic only) -sectcreate <segname> <sectname> <file> Allowed creation of a section from a file. 327c7a68eb7Smrg 328c7a68eb7Smrgseglinkedit 329c7a68eb7SmrgDriver RejectNegative Negative(noseglinkedit) 330c7a68eb7Smrg(Obsolete) Object files with LINKEDIT sections are no longer supported. 331c7a68eb7Smrg 332c7a68eb7Smrgsegprot 333c7a68eb7SmrgDriver RejectNegative Separate Args(3) 334*ec02198aSmrg-segprot <segname> <max_prot> <init_prot> The virtual memory protections for segment <segname> have maximum and initial values <max_prot> and <init_prot> respectively. The specified values may contain \"r\", \"w\", \"x\" or \"-\" the latter meaning \"no access\". 335c7a68eb7Smrg 336c7a68eb7Smrgsegs_read_only_addr 337*ec02198aSmrgDriver RejectNegative Separate 338*ec02198aSmrg-segs_read_only_addr <address> Specify that <address> is the base address of the read-only segments of a dylib. 339c7a68eb7Smrg 340c7a68eb7Smrgsegs_read_write_addr 341*ec02198aSmrgDriver RejectNegative Separate 342*ec02198aSmrg-segs_read_write_addr <address> Specify that <address> is the base address address of the read-write segments of a dylib. 343c7a68eb7Smrg 344c7a68eb7Smrgsingle_module 345*ec02198aSmrgDriver RejectNegative 346c7a68eb7Smrg(Obsolete) This is the default. 347c7a68eb7Smrg 348c7a68eb7Smrgsub_library 349c7a68eb7SmrgDriver RejectNegative Separate 350*ec02198aSmrg-sub_library <name> Library named <name> will be re-exported (only useful for dylibs). 351c7a68eb7Smrg 352c7a68eb7Smrgsub_umbrella 353c7a68eb7SmrgDriver RejectNegative Separate 354*ec02198aSmrg-sub_umbrella <name> Framework named <name> will be re-exported (only useful for dylibs). 355c7a68eb7Smrg 356c7a68eb7Smrgtwolevel_namespace 357c7a68eb7SmrgDriver RejectNegative 358*ec02198aSmrgThis is the default. 359c7a68eb7Smrg 360c7a68eb7Smrgtwolevel_namespace_hints 361c7a68eb7SmrgDriver RejectNegative 362*ec02198aSmrgAdd extra information to the executable that can speed up dynamic loading (provided that dependent libraries are unchanged). 363c7a68eb7Smrg 364c7a68eb7Smrgumbrella 365*ec02198aSmrgDriver RejectNegative 366c7a68eb7Smrg-umbrella <framework> The specified framework will be re-exported. 367c7a68eb7Smrg 368c7a68eb7Smrgundefined 369c7a68eb7SmrgDriver RejectNegative Separate 370c7a68eb7Smrg-undefined <treatment> Specify the handling for undefined symbols (default is error). 371c7a68eb7Smrg 372c7a68eb7Smrgunexported_symbols_list 373*ec02198aSmrgDriver RejectNegative Separate 374*ec02198aSmrg-unexported_symbols_list <filename> Do not export the global symbols listed in <filename>. 375c7a68eb7Smrg 376c7a68eb7Smrgweak_reference_mismatches 377*ec02198aSmrgDriver RejectNegative Separate 378c7a68eb7Smrg-weak_reference_mismatches <treatment> Specifies what to do if a symbol import conflicts between file (weak in one and not in another) the default is to treat the symbol as non-weak. 379c7a68eb7Smrg 380c7a68eb7Smrgwhatsloaded 381c7a68eb7SmrgDriver RejectNegative 382*ec02198aSmrgLogs which object files the linker loads. 383c7a68eb7Smrg 384c7a68eb7Smrgwhyload 385c7a68eb7SmrgDriver RejectNegative 386c7a68eb7SmrgLogs which symbol(s) caused an object to be loaded. 387c7a68eb7Smrg 388c7a68eb7Smrg;(Obsolete, ignored) Strip symbols starting with "L", this is the default. 38910d565efSmrgX 390c7a68eb7SmrgDriver RejectNegative 391c7a68eb7Smrg 392c7a68eb7Smrgy 393c7a68eb7SmrgDriver RejectNegative Joined 394*ec02198aSmrg(Obsolete, ignored) Old support similar to \"-whyload\". 395c7a68eb7Smrg 396c7a68eb7SmrgMach 397c7a68eb7SmrgDriver RejectNegative 398c7a68eb7Smrg(Obsolete and unhandled by ld64, ignored) ld should produce an executable (only handled by ld_classic). 399