Revise -mdisable-fpregs option and add new -msoft-mult option
[official-gcc.git] / gcc / config / darwin.opt
blobd1d1f816912b292c5e7461ae4042ef47fbd6b033
1 ; Processor-independent options for Darwin.
3 ; Copyright (C) 2005-2021 Free Software Foundation, Inc.
5 ; This file is part of GCC.
7 ; GCC is free software; you can redistribute it and/or modify it under
8 ; the terms of the GNU General Public License as published by the Free
9 ; Software Foundation; either version 3, or (at your option) any later
10 ; version.
12 ; GCC is distributed in the hope that it will be useful, but WITHOUT ANY
13 ; WARRANTY; without even the implied warranty of MERCHANTABILITY or
14 ; FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
15 ; for more details.
17 ; You should have received a copy of the GNU General Public License
18 ; along with GCC; see the file COPYING3.  If not see
19 ; <http://www.gnu.org/licenses/>.
21 ; We have a lot of Driver options, many of which are obsolete or very very
22 ; rarely used so, to keep this file easier to manage:
24 ; Please place all Non-driver options first (in alphabetical order), followed
25 ; by Driver-only options.
27 ; Non-driver options.
29 dependency-file
30 C ObjC C++ ObjC++ Separate Alias(MF) MissingArgError(missing filename after %qs)
32 fapple-kext
33 Target C++ Var(flag_apple_kext)
34 Generate code for darwin loadable kernel extensions.
36 iframework
37 Target RejectNegative C ObjC C++ ObjC++ Joined Separate
38 -iframework <dir>       Add <dir> to the end of the system framework include path.
40 mconstant-cfstrings
41 Target Var(darwin_constant_cfstrings) Init(1)
42 Generate compile-time CFString objects.
44 Wnonportable-cfstrings
45 Target Var(darwin_warn_nonportable_cfstrings) Init(1) Warning
46 Warn if constant CFString objects contain non-portable characters.
48 ; Use new-style pic stubs if this is true, x86 only so far.
49 matt-stubs
50 Target Var(darwin_macho_att_stub) Init(1)
51 Generate AT&T-style stubs for Mach-O.
53 mdynamic-no-pic
54 Target Common Mask(MACHO_DYNAMIC_NO_PIC)
55 Generate code suitable for executables (NOT shared libs).
57 mfix-and-continue
58 Target Var(darwin_fix_and_continue)
59 Generate code suitable for fast turn around debugging.
61 mkernel
62 Target Var(flag_mkernel)
63 Generate code for the kernel or loadable kernel extensions.
65 ; The Init here is for the convenience of GCC developers, so that cc1
66 ; and cc1plus don't crash if no -mmacosx-version-min is passed.  The
67 ; driver will always pass a -mmacosx-version-min, so in normal use the
68 ; Init is never used.
69 mmacosx-version-min=
70 Target RejectNegative Joined Var(darwin_macosx_version_min) Init(DEF_MIN_OSX_VERSION)
71 The earliest macOS version on which this program will run.
73 ; Really, only relevant to PowerPC which has a 4 byte bool by default.
74 mone-byte-bool
75 Target RejectNegative Var(darwin_one_byte_bool)
76 Set sizeof(bool) to 1.
78 msymbol-stubs
79 Target Var(darwin_symbol_stubs) Init(0)
80 Force generation of external symbol indirection stubs.
82 ; Some code-gen may be improved / adjusted if the linker is sufficiently modern.
83 mtarget-linker=
84 Target RejectNegative Joined Alias(mtarget-linker)
86 mtarget-linker
87 Target RejectNegative Joined Separate Var(darwin_target_linker) Init(LD64_VERSION)
88 -mtarget-linker <version>       Specify that ld64 <version> is the toolchain linker for the current invocation.
90 ; Driver options.
92 all_load
93 Driver RejectNegative
94 Load all members of archive libraries, rather than only those that satisfy undefined symbols.
96 allowable_client
97 Driver RejectNegative Separate
98 -allowable_client <name>        The output dylib is private to the client <name>.
100 arch
101 Driver RejectNegative Separate
102 -arch <name>    Generate output for architecture <name>.
104 arch_errors_fatal
105 Driver RejectNegative
106 Mismatches between file architecture and one specified by \"-arch\" are errors instead of warnings.
108 asm_macosx_version_min=
109 Driver RejectNegative Joined
110 The earliest macOS version on which this program will run (formatted for the assembler).
112 bind_at_load
113 Driver RejectNegative
114 Generate an output executable that binds symbols on load, rather than lazily.
116 bundle
117 Driver RejectNegative
118 Generate a Mach-O bundle (file type MH_BUNDLE).
120 bundle_loader
121 Driver RejectNegative Separate
122 -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.
124 client_name
125 Driver RejectNegative Separate
126 -client_name <name>     Enable the executable being built to link against a private dylib (using allowable_client).
128 compatibility_version
129 Driver RejectNegative Separate
130 -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.
132 current_version
133 Driver RejectNegative Separate
134 -current_version <number>       Set the current version for the library to <number>.
136 dead_strip
137 Driver RejectNegative
138 Remove code and data that is unreachable from any exported symbol (including the entry point).
140 dylib_file
141 Driver RejectNegative Separate
142 -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\"
144 dylinker
145 Driver RejectNegative
146 Produce a Mach-O dylinker (file type MH_DYLINKER), only used for building dyld.
148 dylinker_install_name
149 Driver RejectNegative Separate
150 -dylinker_install_name <path>   Only used for building dyld.
152 dynamic
153 Driver RejectNegative
154 The default (and opposite of -static), implied by user mode executables, shared libraries and bundles.
156 dynamiclib
157 Driver RejectNegative
158 Produce a Mach-O shared library (file type MH_DYLIB), synonym for \"-shared\".
160 exported_symbols_list
161 Driver RejectNegative Separate
162 -exported_symbols_list <filename>       Export global symbols in <filename> in linked output file; any symbols not mentioned will be treated as \"hidden\".
164 filelist
165 Driver RejectNegative Separate
166 Supply a list of objects to be linked from a file, rather than the command line.
168 findirect-virtual-calls
169 Driver RejectNegative
170 Used for generating code for some older kernel revisions.
172 flat_namespace
173 Driver RejectNegative
174 Ignore the normal two-level namespace; resolve symbols in command line order and do not record which library provided the resolved symbol.
176 force_cpusubtype_ALL
177 Driver RejectNegative
178 For the assembler (and linker) permit any architecture sub-variant to be used without error.
180 force_flat_namespace
181 Driver RejectNegative
182 Set 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.
184 framework
185 Driver RejectNegative Separate
186 -framework <name>       The linker should search for the framework <name> in the framework search path.
188 fterminated-vtables
189 Driver RejectNegative
190 Used for generating code for some older kernel revisions.
192 gfull
193 Driver RejectNegative
194 Abbreviation for \"-g -fno-eliminate-unused-debug-symbols\".
196 gused
197 Driver RejectNegative
198 Abbreviation for \"-g -feliminate-unused-debug-symbols\".
200 headerpad_max_install_names
201 Driver RejectNegative
202 Automatically adds space for longer path names in load commands (up to MAXPATHLEN).
204 image_base
205 Driver RejectNegative Separate
206 -image_base <address>   Specify <address> as the base address for a dylib or bundle.
208 init
209 Driver RejectNegative Separate
210 -init <symbol_name>     The symbol <symbol_name> will be used as the first initialiser for a dylib.
212 install_name
213 Driver RejectNegative Separate
214 -install_name <name>    Set the install name for a dylib.
216 keep_private_externs
217 Driver RejectNegative
218 Usually \"private extern\" (hidden) symbols are made local when linking, this command suppresses that such that they remain exported.
220 multi_module
221 Driver RejectNegative
222 (Obsolete after 10.4) Multi modules are ignored at runtime since macOS 10.4.
224 multiply_defined
225 Driver RejectNegative Separate
226 (Obsolete after 10.4) -multiply_defined <treatment>     Provided a mechanism for warning about symbols defined in multiple dylibs.
228 multiply_defined_unused
229 Driver RejectNegative Separate
230 (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.
232 no_dead_strip_inits_and_terms
233 Driver RejectNegative
234 (Obsolete) Current linkers never dead-strip these items, so the option is not needed.
236 nofixprebinding
237 Driver RejectNegative
238 (Obsolete after 10.3.9) Set MH_NOPREFIXBINDING, in an executable.
240 nomultidefs
241 Driver RejectNegative
242 (Obsolete after 10.4)   Set MH_NOMULTIDEFS in an umbrella framework.
244 noprebind
245 Driver RejectNegative Negative(prebind)
246 (Obsolete) LD_PREBIND is no longer supported.
248 noseglinkedit
249 Driver RejectNegative Negative(seglinkedit)
250 (Obsolete) This is the default.
252 object
253 Driver RejectNegative
255 pagezero_size
256 Driver RejectNegative Separate
257 -pagezero_size <size>   Allows setting the page 0 size to 4kb when required.
259 prebind
260 Driver RejectNegative Negative(noprebind)
261 (Obsolete) LD_PREBIND is no longer supported.
263 prebind_all_twolevel_modules
264 Driver RejectNegative
265 (Obsolete) LD_PREBIND is no longer supported.
267 preload
268 Driver RejectNegative
269 Produces a Mach-O file suitable for embedded/ROM use.
271 private_bundle
272 Driver RejectNegative
273 (Obsolete) Allowed linking to proceed with \"-flat_namespace\" when a linked bundle contained a symbol also exported from the main executable.
275 pthread
276 Driver RejectNegative
278 rdynamic
279 Driver RejectNegative
280 Synonym for \"-export-dynamic\" for linker versions that support it.
282 read_only_relocs
283 Driver RejectNegative Separate
284 -read_only_relocs <treatment>   Allow relocations in read-only pages (not recommended).
286 sectalign
287 Driver RejectNegative Separate Args(3)
288 -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.
290 sectcreate
291 Driver RejectNegative Separate Args(3)
292 -sectcreate <segname> <sectname> <file> Create section <sectname> in segment <segname> from the contents of <file>.
294 sectobjectsymbols
295 Driver RejectNegative Separate Args(2)
296 (Obsolete) -sectobjectsymbols <segname> <sectname>      Setting a local symbol at the start of a section is no longer supported.
298 sectorder
299 Driver RejectNegative Separate Args(3)
300 (Obsolete) -sectorder <segname> <sectname> <orderfile>  Replaced by a more general option \"-order_file\".
302 seg_addr_table
303 Driver RejectNegative Separate
304 -seg_addr_table <file>  Specify the base addresses for dynamic libraries; <file> contains a line for each library.
306 ; This is only usable by the ld_classic linker.
307 seg_addr_table_filename
308 Driver RejectNegative Separate
309 (Obsolete, ld_classic only) -seg_addr_table_filename <path>.
311 seg1addr
312 Driver RejectNegative Separate
313 Synonym for \"image_base\".
315 segaddr
316 Driver RejectNegative Separate Args(2)
317 -segaddr <name> <address>       Set the base address of segment <name> to <address> which must be aligned to a page boundary (currently 4kb).
319 ; This is only usable by the ld_classic linker.
320 segcreate
321 Driver RejectNegative Separate Args(3)
322 (Obsolete, ld_classic only) -sectcreate <segname> <sectname> <file>     Allowed creation of a section from a file.
324 seglinkedit
325 Driver RejectNegative Negative(noseglinkedit)
326 (Obsolete) Object files with LINKEDIT sections are no longer supported.
328 segprot
329 Driver RejectNegative Separate Args(3)
330 -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\".
332 segs_read_only_addr
333 Driver RejectNegative Separate
334 -segs_read_only_addr <address>  Specify that <address> is the base address of the read-only segments of a dylib.
336 segs_read_write_addr
337 Driver RejectNegative Separate
338 -segs_read_write_addr <address> Specify that <address> is the base address address of the read-write segments of a dylib.
340 single_module
341 Driver RejectNegative
342 (Obsolete)      This is the default.
344 sub_library
345 Driver RejectNegative Separate
346 -sub_library <name>     Library named <name> will be re-exported (only useful for dylibs).
348 sub_umbrella
349 Driver RejectNegative Separate
350 -sub_umbrella <name>    Framework named <name> will be re-exported (only useful for dylibs).
352 twolevel_namespace
353 Driver RejectNegative
354 This is the default.
356 twolevel_namespace_hints
357 Driver RejectNegative
358 Add extra information to the executable that can speed up dynamic loading (provided that dependent libraries are unchanged).
360 umbrella
361 Driver RejectNegative
362 -umbrella <framework>   The specified framework will be re-exported.
364 undefined
365 Driver RejectNegative Separate
366 -undefined <treatment>  Specify the handling for undefined symbols (default is error).
368 unexported_symbols_list
369 Driver RejectNegative Separate
370 -unexported_symbols_list <filename>     Do not export the global symbols listed in <filename>.
372 weak_reference_mismatches
373 Driver RejectNegative Separate
374 -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.
376 whatsloaded
377 Driver RejectNegative
378 Logs which object files the linker loads.
380 whyload
381 Driver RejectNegative
382 Logs which symbol(s) caused an object to be loaded.
384 ;(Obsolete, ignored)    Strip symbols starting with "L", this is the default.
386 Driver RejectNegative
389 Driver RejectNegative Joined
390 (Obsolete, ignored)     Old support similar to \"-whyload\".
392 Mach
393 Driver RejectNegative
394 (Obsolete and unhandled by ld64, ignored)       ld should produce an executable (only handled by ld_classic).