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