]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/gcc.info-3
Makefile.in (install): Some of HEADERS come from the stl dir now.
[thirdparty/gcc.git] / gcc / gcc.info-3
CommitLineData
336b436a
JL
1This is Info file gcc.info, produced by Makeinfo version 1.68 from the
2input file gcc.texi.
3
4 This file documents the use and the internals of the GNU compiler.
5
6 Published by the Free Software Foundation 59 Temple Place - Suite 330
7Boston, MA 02111-1307 USA
8
9 Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997 Free
10Software Foundation, Inc.
11
12 Permission is granted to make and distribute verbatim copies of this
13manual provided the copyright notice and this permission notice are
14preserved on all copies.
15
16 Permission is granted to copy and distribute modified versions of
17this manual under the conditions for verbatim copying, provided also
18that the sections entitled "GNU General Public License," "Funding for
19Free Software," and "Protect Your Freedom--Fight `Look And Feel'" are
20included exactly as in the original, and provided that the entire
21resulting derived work is distributed under the terms of a permission
22notice identical to this one.
23
24 Permission is granted to copy and distribute translations of this
25manual into another language, under the above conditions for modified
26versions, except that the sections entitled "GNU General Public
27License," "Funding for Free Software," and "Protect Your Freedom--Fight
28`Look And Feel'", and this permission notice, may be included in
29translations approved by the Free Software Foundation instead of in the
30original English.
31
32\1f
33File: gcc.info, Node: Preprocessor Options, Next: Assembler Options, Prev: Optimize Options, Up: Invoking GCC
34
35Options Controlling the Preprocessor
36====================================
37
38 These options control the C preprocessor, which is run on each C
39source file before actual compilation.
40
41 If you use the `-E' option, nothing is done except preprocessing.
42Some of these options make sense only together with `-E' because they
43cause the preprocessor output to be unsuitable for actual compilation.
44
45`-include FILE'
46 Process FILE as input before processing the regular input file.
47 In effect, the contents of FILE are compiled first. Any `-D' and
48 `-U' options on the command line are always processed before
49 `-include FILE', regardless of the order in which they are
50 written. All the `-include' and `-imacros' options are processed
51 in the order in which they are written.
52
53`-imacros FILE'
54 Process FILE as input, discarding the resulting output, before
55 processing the regular input file. Because the output generated
56 from FILE is discarded, the only effect of `-imacros FILE' is to
57 make the macros defined in FILE available for use in the main
58 input.
59
60 Any `-D' and `-U' options on the command line are always processed
61 before `-imacros FILE', regardless of the order in which they are
62 written. All the `-include' and `-imacros' options are processed
63 in the order in which they are written.
64
65`-idirafter DIR'
66 Add the directory DIR to the second include path. The directories
67 on the second include path are searched when a header file is not
68 found in any of the directories in the main include path (the one
69 that `-I' adds to).
70
71`-iprefix PREFIX'
72 Specify PREFIX as the prefix for subsequent `-iwithprefix' options.
73
74`-iwithprefix DIR'
75 Add a directory to the second include path. The directory's name
76 is made by concatenating PREFIX and DIR, where PREFIX was
77 specified previously with `-iprefix'. If you have not specified a
78 prefix yet, the directory containing the installed passes of the
79 compiler is used as the default.
80
81`-iwithprefixbefore DIR'
82 Add a directory to the main include path. The directory's name is
83 made by concatenating PREFIX and DIR, as in the case of
84 `-iwithprefix'.
85
86`-isystem DIR'
87 Add a directory to the beginning of the second include path,
88 marking it as a system directory, so that it gets the same special
89 treatment as is applied to the standard system directories.
90
91`-nostdinc'
92 Do not search the standard system directories for header files.
93 Only the directories you have specified with `-I' options (and the
94 current directory, if appropriate) are searched. *Note Directory
95 Options::, for information on `-I'.
96
97 By using both `-nostdinc' and `-I-', you can limit the include-file
98 search path to only those directories you specify explicitly.
99
100`-undef'
101 Do not predefine any nonstandard macros. (Including architecture
102 flags).
103
104`-E'
105 Run only the C preprocessor. Preprocess all the C source files
106 specified and output the results to standard output or to the
107 specified output file.
108
109`-C'
110 Tell the preprocessor not to discard comments. Used with the `-E'
111 option.
112
113`-P'
114 Tell the preprocessor not to generate `#line' directives. Used
115 with the `-E' option.
116
117`-M'
118 Tell the preprocessor to output a rule suitable for `make'
119 describing the dependencies of each object file. For each source
120 file, the preprocessor outputs one `make'-rule whose target is the
121 object file name for that source file and whose dependencies are
122 all the `#include' header files it uses. This rule may be a
123 single line or may be continued with `\'-newline if it is long.
124 The list of rules is printed on standard output instead of the
125 preprocessed C program.
126
127 `-M' implies `-E'.
128
129 Another way to specify output of a `make' rule is by setting the
130 environment variable `DEPENDENCIES_OUTPUT' (*note Environment
131 Variables::.).
132
133`-MM'
134 Like `-M' but the output mentions only the user header files
135 included with `#include "FILE"'. System header files included
136 with `#include <FILE>' are omitted.
137
138`-MD'
139 Like `-M' but the dependency information is written to a file made
140 by replacing ".c" with ".d" at the end of the input file names.
141 This is in addition to compiling the file as specified--`-MD' does
142 not inhibit ordinary compilation the way `-M' does.
143
144 In Mach, you can use the utility `md' to merge multiple dependency
145 files into a single dependency file suitable for using with the
146 `make' command.
147
148`-MMD'
149 Like `-MD' except mention only user header files, not system
150 header files.
151
152`-MG'
153 Treat missing header files as generated files and assume they live
154 in the same directory as the source file. If you specify `-MG',
155 you must also specify either `-M' or `-MM'. `-MG' is not
156 supported with `-MD' or `-MMD'.
157
158`-H'
159 Print the name of each header file used, in addition to other
160 normal activities.
161
162`-AQUESTION(ANSWER)'
163 Assert the answer ANSWER for QUESTION, in case it is tested with a
164 preprocessing conditional such as `#if #QUESTION(ANSWER)'. `-A-'
165 disables the standard assertions that normally describe the target
166 machine.
167
168`-DMACRO'
169 Define macro MACRO with the string `1' as its definition.
170
171`-DMACRO=DEFN'
172 Define macro MACRO as DEFN. All instances of `-D' on the command
173 line are processed before any `-U' options.
174
175`-UMACRO'
176 Undefine macro MACRO. `-U' options are evaluated after all `-D'
177 options, but before any `-include' and `-imacros' options.
178
179`-dM'
180 Tell the preprocessor to output only a list of the macro
181 definitions that are in effect at the end of preprocessing. Used
182 with the `-E' option.
183
184`-dD'
185 Tell the preprocessing to pass all macro definitions into the
186 output, in their proper sequence in the rest of the output.
187
188`-dN'
189 Like `-dD' except that the macro arguments and contents are
190 omitted. Only `#define NAME' is included in the output.
191
192`-trigraphs'
193 Support ANSI C trigraphs. The `-ansi' option also has this effect.
194
195`-Wp,OPTION'
196 Pass OPTION as an option to the preprocessor. If OPTION contains
197 commas, it is split into multiple options at the commas.
198
199\1f
200File: gcc.info, Node: Assembler Options, Next: Link Options, Prev: Preprocessor Options, Up: Invoking GCC
201
202Passing Options to the Assembler
203================================
204
205 You can pass options to the assembler.
206
207`-Wa,OPTION'
208 Pass OPTION as an option to the assembler. If OPTION contains
209 commas, it is split into multiple options at the commas.
210
211\1f
212File: gcc.info, Node: Link Options, Next: Directory Options, Prev: Assembler Options, Up: Invoking GCC
213
214Options for Linking
215===================
216
217 These options come into play when the compiler links object files
218into an executable output file. They are meaningless if the compiler is
219not doing a link step.
220
221`OBJECT-FILE-NAME'
222 A file name that does not end in a special recognized suffix is
223 considered to name an object file or library. (Object files are
224 distinguished from libraries by the linker according to the file
225 contents.) If linking is done, these object files are used as
226 input to the linker.
227
228`-c'
229`-S'
230`-E'
231 If any of these options is used, then the linker is not run, and
232 object file names should not be used as arguments. *Note Overall
233 Options::.
234
235`-lLIBRARY'
236 Search the library named LIBRARY when linking.
237
238 It makes a difference where in the command you write this option;
239 the linker searches processes libraries and object files in the
240 order they are specified. Thus, `foo.o -lz bar.o' searches
241 library `z' after file `foo.o' but before `bar.o'. If `bar.o'
242 refers to functions in `z', those functions may not be loaded.
243
244 The linker searches a standard list of directories for the library,
245 which is actually a file named `libLIBRARY.a'. The linker then
246 uses this file as if it had been specified precisely by name.
247
248 The directories searched include several standard system
249 directories plus any that you specify with `-L'.
250
251 Normally the files found this way are library files--archive files
252 whose members are object files. The linker handles an archive
253 file by scanning through it for members which define symbols that
254 have so far been referenced but not defined. But if the file that
255 is found is an ordinary object file, it is linked in the usual
256 fashion. The only difference between using an `-l' option and
257 specifying a file name is that `-l' surrounds LIBRARY with `lib'
258 and `.a' and searches several directories.
259
260`-lobjc'
261 You need this special case of the `-l' option in order to link an
262 Objective C program.
263
264`-nostartfiles'
265 Do not use the standard system startup files when linking. The
266 standard system libraries are used normally, unless `-nostdlib' or
267 `-nodefaultlibs' is used.
268
269`-nodefaultlibs'
270 Do not use the standard system libraries when linking. Only the
271 libraries you specify will be passed to the linker. The standard
272 startup files are used normally, unless `-nostartfiles' is used.
273
274`-nostdlib'
275 Do not use the standard system startup files or libraries when
276 linking. No startup files and only the libraries you specify will
277 be passed to the linker.
278
279 One of the standard libraries bypassed by `-nostdlib' and
280 `-nodefaultlibs' is `libgcc.a', a library of internal subroutines
281 that GNU CC uses to overcome shortcomings of particular machines,
282 or special needs for some languages. (*Note Interfacing to GNU CC
283 Output: Interface, for more discussion of `libgcc.a'.) In most
284 cases, you need `libgcc.a' even when you want to avoid other
285 standard libraries. In other words, when you specify `-nostdlib'
286 or `-nodefaultlibs' you should usually specify `-lgcc' as well.
287 This ensures that you have no unresolved references to internal
288 GNU CC library subroutines. (For example, `__main', used to
289 ensure C++ constructors will be called; *note `collect2':
290 Collect2..)
291
292`-s'
293 Remove all symbol table and relocation information from the
294 executable.
295
296`-static'
297 On systems that support dynamic linking, this prevents linking
298 with the shared libraries. On other systems, this option has no
299 effect.
300
301`-shared'
302 Produce a shared object which can then be linked with other
303 objects to form an executable. Not all systems support this
304 option. You must also specify `-fpic' or `-fPIC' on some systems
305 when you specify this option.
306
307`-symbolic'
308 Bind references to global symbols when building a shared object.
309 Warn about any unresolved references (unless overridden by the
310 link editor option `-Xlinker -z -Xlinker defs'). Only a few
311 systems support this option.
312
313`-Xlinker OPTION'
314 Pass OPTION as an option to the linker. You can use this to
315 supply system-specific linker options which GNU CC does not know
316 how to recognize.
317
318 If you want to pass an option that takes an argument, you must use
319 `-Xlinker' twice, once for the option and once for the argument.
320 For example, to pass `-assert definitions', you must write
321 `-Xlinker -assert -Xlinker definitions'. It does not work to write
322 `-Xlinker "-assert definitions"', because this passes the entire
323 string as a single argument, which is not what the linker expects.
324
325`-Wl,OPTION'
326 Pass OPTION as an option to the linker. If OPTION contains
327 commas, it is split into multiple options at the commas.
328
329`-u SYMBOL'
330 Pretend the symbol SYMBOL is undefined, to force linking of
331 library modules to define it. You can use `-u' multiple times with
332 different symbols to force loading of additional library modules.
333
334\1f
335File: gcc.info, Node: Directory Options, Next: Target Options, Prev: Link Options, Up: Invoking GCC
336
337Options for Directory Search
338============================
339
340 These options specify directories to search for header files, for
341libraries and for parts of the compiler:
342
343`-IDIR'
344 Add the directory DIR to the head of the list of directories to be
345 searched for header files. This can be used to override a system
346 header file, substituting your own version, since these
347 directories are searched before the system header file
348 directories. If you use more than one `-I' option, the
349 directories are scanned in left-to-right order; the standard
350 system directories come after.
351
352`-I-'
353 Any directories you specify with `-I' options before the `-I-'
354 option are searched only for the case of `#include "FILE"'; they
355 are not searched for `#include <FILE>'.
356
357 If additional directories are specified with `-I' options after
358 the `-I-', these directories are searched for all `#include'
359 directives. (Ordinarily *all* `-I' directories are used this way.)
360
361 In addition, the `-I-' option inhibits the use of the current
362 directory (where the current input file came from) as the first
363 search directory for `#include "FILE"'. There is no way to
364 override this effect of `-I-'. With `-I.' you can specify
365 searching the directory which was current when the compiler was
366 invoked. That is not exactly the same as what the preprocessor
367 does by default, but it is often satisfactory.
368
369 `-I-' does not inhibit the use of the standard system directories
370 for header files. Thus, `-I-' and `-nostdinc' are independent.
371
372`-LDIR'
373 Add directory DIR to the list of directories to be searched for
374 `-l'.
375
376`-BPREFIX'
377 This option specifies where to find the executables, libraries,
378 include files, and data files of the compiler itself.
379
380 The compiler driver program runs one or more of the subprograms
381 `cpp', `cc1', `as' and `ld'. It tries PREFIX as a prefix for each
382 program it tries to run, both with and without `MACHINE/VERSION/'
383 (*note Target Options::.).
384
385 For each subprogram to be run, the compiler driver first tries the
386 `-B' prefix, if any. If that name is not found, or if `-B' was
387 not specified, the driver tries two standard prefixes, which are
388 `/usr/lib/gcc/' and `/usr/local/lib/gcc-lib/'. If neither of
389 those results in a file name that is found, the unmodified program
390 name is searched for using the directories specified in your
391 `PATH' environment variable.
392
393 `-B' prefixes that effectively specify directory names also apply
394 to libraries in the linker, because the compiler translates these
395 options into `-L' options for the linker. They also apply to
396 includes files in the preprocessor, because the compiler
397 translates these options into `-isystem' options for the
398 preprocessor. In this case, the compiler appends `include' to the
399 prefix.
400
401 The run-time support file `libgcc.a' can also be searched for using
402 the `-B' prefix, if needed. If it is not found there, the two
403 standard prefixes above are tried, and that is all. The file is
404 left out of the link if it is not found by those means.
405
406 Another way to specify a prefix much like the `-B' prefix is to use
407 the environment variable `GCC_EXEC_PREFIX'. *Note Environment
408 Variables::.
409
410`-specs=FILE'
411 Process FILE after the compiler reads in the standard `specs'
412 file, in order to override the defaults that the `gcc' driver
413 program uses when determining what switches to pass to `cc1',
414 `cc1plus', `as', `ld', etc. More than one `-specs='FILE can be
415 specified on the command line, and they are processed in order,
416 from left to right.
417
418\1f
419File: gcc.info, Node: Target Options, Next: Submodel Options, Prev: Directory Options, Up: Invoking GCC
420
421Specifying Target Machine and Compiler Version
422==============================================
423
424 By default, GNU CC compiles code for the same type of machine that
425you are using. However, it can also be installed as a cross-compiler,
426to compile for some other type of machine. In fact, several different
427configurations of GNU CC, for different target machines, can be
428installed side by side. Then you specify which one to use with the
429`-b' option.
430
431 In addition, older and newer versions of GNU CC can be installed side
432by side. One of them (probably the newest) will be the default, but
433you may sometimes wish to use another.
434
435`-b MACHINE'
436 The argument MACHINE specifies the target machine for compilation.
437 This is useful when you have installed GNU CC as a cross-compiler.
438
439 The value to use for MACHINE is the same as was specified as the
440 machine type when configuring GNU CC as a cross-compiler. For
441 example, if a cross-compiler was configured with `configure
442 i386v', meaning to compile for an 80386 running System V, then you
443 would specify `-b i386v' to run that cross compiler.
444
445 When you do not specify `-b', it normally means to compile for the
446 same type of machine that you are using.
447
448`-V VERSION'
449 The argument VERSION specifies which version of GNU CC to run.
450 This is useful when multiple versions are installed. For example,
451 VERSION might be `2.0', meaning to run GNU CC version 2.0.
452
453 The default version, when you do not specify `-V', is the last
454 version of GNU CC that you installed.
455
456 The `-b' and `-V' options actually work by controlling part of the
457file name used for the executable files and libraries used for
458compilation. A given version of GNU CC, for a given target machine, is
459normally kept in the directory `/usr/local/lib/gcc-lib/MACHINE/VERSION'.
460
461 Thus, sites can customize the effect of `-b' or `-V' either by
462changing the names of these directories or adding alternate names (or
463symbolic links). If in directory `/usr/local/lib/gcc-lib/' the file
464`80386' is a link to the file `i386v', then `-b 80386' becomes an alias
465for `-b i386v'.
466
467 In one respect, the `-b' or `-V' do not completely change to a
468different compiler: the top-level driver program `gcc' that you
469originally invoked continues to run and invoke the other executables
470(preprocessor, compiler per se, assembler and linker) that do the real
471work. However, since no real work is done in the driver program, it
472usually does not matter that the driver program in use is not the one
473for the specified target and version.
474
475 The only way that the driver program depends on the target machine is
476in the parsing and handling of special machine-specific options.
477However, this is controlled by a file which is found, along with the
478other executables, in the directory for the specified version and
479target machine. As a result, a single installed driver program adapts
480to any specified target machine and compiler version.
481
482 The driver program executable does control one significant thing,
483however: the default version and target machine. Therefore, you can
484install different instances of the driver program, compiled for
485different targets or versions, under different names.
486
487 For example, if the driver for version 2.0 is installed as `ogcc'
488and that for version 2.1 is installed as `gcc', then the command `gcc'
489will use version 2.1 by default, while `ogcc' will use 2.0 by default.
490However, you can choose either version with either command with the
491`-V' option.
492
493\1f
494File: gcc.info, Node: Submodel Options, Next: Code Gen Options, Prev: Target Options, Up: Invoking GCC
495
496Hardware Models and Configurations
497==================================
498
499 Earlier we discussed the standard option `-b' which chooses among
500different installed compilers for completely different target machines,
501such as Vax vs. 68000 vs. 80386.
502
503 In addition, each of these target machine types can have its own
504special options, starting with `-m', to choose among various hardware
505models or configurations--for example, 68010 vs 68020, floating
506coprocessor or none. A single installed version of the compiler can
507compile for any model or configuration, according to the options
508specified.
509
510 Some configurations of the compiler also support additional special
511options, usually for compatibility with other compilers on the same
512platform.
513
514 These options are defined by the macro `TARGET_SWITCHES' in the
515machine description. The default for the options is also defined by
516that macro, which enables you to change the defaults.
517
518* Menu:
519
520* M680x0 Options::
521* VAX Options::
522* SPARC Options::
523* Convex Options::
524* AMD29K Options::
525* ARM Options::
526* M32R/D Options::
527* M88K Options::
528* RS/6000 and PowerPC Options::
529* RT Options::
530* MIPS Options::
531* i386 Options::
532* HPPA Options::
533* Intel 960 Options::
534* DEC Alpha Options::
535* Clipper Options::
536* H8/300 Options::
537* SH Options::
538* System V Options::
539* V850 Options::
540
541\1f
542File: gcc.info, Node: M680x0 Options, Next: VAX Options, Up: Submodel Options
543
544M680x0 Options
545--------------
546
547 These are the `-m' options defined for the 68000 series. The default
548values for these options depends on which style of 68000 was selected
549when the compiler was configured; the defaults for the most common
550choices are given below.
551
552`-m68000'
553`-mc68000'
554 Generate output for a 68000. This is the default when the
555 compiler is configured for 68000-based systems.
556
557`-m68020'
558`-mc68020'
559 Generate output for a 68020. This is the default when the
560 compiler is configured for 68020-based systems.
561
562`-m68881'
563 Generate output containing 68881 instructions for floating point.
564 This is the default for most 68020 systems unless `-nfp' was
565 specified when the compiler was configured.
566
567`-m68030'
568 Generate output for a 68030. This is the default when the
569 compiler is configured for 68030-based systems.
570
571`-m68040'
572 Generate output for a 68040. This is the default when the
573 compiler is configured for 68040-based systems.
574
575 This option inhibits the use of 68881/68882 instructions that have
576 to be emulated by software on the 68040. If your 68040 does not
577 have code to emulate those instructions, use `-m68040'.
578
579`-m68060'
580 Generate output for a 68060. This is the default when the
581 compiler is configured for 68060-based systems.
582
583 This option inhibits the use of 68020 and 68881/68882 instructions
584 that have to be emulated by software on the 68060. If your 68060
585 does not have code to emulate those instructions, use `-m68060'.
586
587`-m5200'
588 Generate output for a 520X "coldfire" family cpu. This is the
589 default when the compiler is configured for 520X-based systems.
590
591`-m68020-40'
592 Generate output for a 68040, without using any of the new
593 instructions. This results in code which can run relatively
594 efficiently on either a 68020/68881 or a 68030 or a 68040. The
595 generated code does use the 68881 instructions that are emulated
596 on the 68040.
597
598`-m68020-60'
599 Generate output for a 68060, without using any of the new
600 instructions. This results in code which can run relatively
601 efficiently on either a 68020/68881 or a 68030 or a 68040. The
602 generated code does use the 68881 instructions that are emulated
603 on the 68060.
604
605`-mfpa'
606 Generate output containing Sun FPA instructions for floating point.
607
608`-msoft-float'
609 Generate output containing library calls for floating point.
610 *Warning:* the requisite libraries are not available for all m68k
611 targets. Normally the facilities of the machine's usual C
612 compiler are used, but this can't be done directly in
613 cross-compilation. You must make your own arrangements to provide
614 suitable library functions for cross-compilation. The embedded
615 targets `m68k-*-aout' and `m68k-*-coff' do provide software
616 floating point support.
617
618`-mshort'
619 Consider type `int' to be 16 bits wide, like `short int'.
620
621`-mnobitfield'
622 Do not use the bit-field instructions. The `-m68000' option
623 implies `-mnobitfield'.
624
625`-mbitfield'
626 Do use the bit-field instructions. The `-m68020' option implies
627 `-mbitfield'. This is the default if you use a configuration
628 designed for a 68020.
629
630`-mrtd'
631 Use a different function-calling convention, in which functions
632 that take a fixed number of arguments return with the `rtd'
633 instruction, which pops their arguments while returning. This
634 saves one instruction in the caller since there is no need to pop
635 the arguments there.
636
637 This calling convention is incompatible with the one normally used
638 on Unix, so you cannot use it if you need to call libraries
639 compiled with the Unix compiler.
640
641 Also, you must provide function prototypes for all functions that
642 take variable numbers of arguments (including `printf'); otherwise
643 incorrect code will be generated for calls to those functions.
644
645 In addition, seriously incorrect code will result if you call a
646 function with too many arguments. (Normally, extra arguments are
647 harmlessly ignored.)
648
649 The `rtd' instruction is supported by the 68010, 68020, 68030,
650 68040, and 68060 processors, but not by the 68000 or 5200.
651
652`-malign-int'
653`-mno-align-int'
654 Control whether GNU CC aligns `int', `long', `long long', `float',
655 `double', and `long double' variables on a 32-bit boundary
656 (`-malign-int') or a 16-bit boundary (`-mno-align-int'). Aligning
657 variables on 32-bit boundaries produces code that runs somewhat
658 faster on processors with 32-bit busses at the expense of more
659 memory.
660
661 *Warning:* if you use the `-malign-int' switch, GNU CC will align
662 structures containing the above types differently than most
663 published application binary interface specifications for the m68k.
664
665\1f
666File: gcc.info, Node: VAX Options, Next: SPARC Options, Prev: M680x0 Options, Up: Submodel Options
667
668VAX Options
669-----------
670
671 These `-m' options are defined for the Vax:
672
673`-munix'
674 Do not output certain jump instructions (`aobleq' and so on) that
675 the Unix assembler for the Vax cannot handle across long ranges.
676
677`-mgnu'
678 Do output those jump instructions, on the assumption that you will
679 assemble with the GNU assembler.
680
681`-mg'
682 Output code for g-format floating point numbers instead of
683 d-format.
684
685\1f
686File: gcc.info, Node: SPARC Options, Next: Convex Options, Prev: VAX Options, Up: Submodel Options
687
688SPARC Options
689-------------
690
691 These `-m' switches are supported on the SPARC:
692
693`-mno-app-regs'
694`-mapp-regs'
695 Specify `-mapp-regs' to generate output using the global registers
696 2 through 4, which the SPARC SVR4 ABI reserves for applications.
697 This is the default.
698
699 To be fully SVR4 ABI compliant at the cost of some performance
700 loss, specify `-mno-app-regs'. You should compile libraries and
701 system software with this option.
702
703`-mfpu'
704`-mhard-float'
705 Generate output containing floating point instructions. This is
706 the default.
707
708`-mno-fpu'
709`-msoft-float'
710 Generate output containing library calls for floating point.
711 *Warning:* the requisite libraries are not available for all SPARC
712 targets. Normally the facilities of the machine's usual C
713 compiler are used, but this cannot be done directly in
714 cross-compilation. You must make your own arrangements to provide
715 suitable library functions for cross-compilation. The embedded
716 targets `sparc-*-aout' and `sparclite-*-*' do provide software
717 floating point support.
718
719 `-msoft-float' changes the calling convention in the output file;
720 therefore, it is only useful if you compile *all* of a program with
721 this option. In particular, you need to compile `libgcc.a', the
722 library that comes with GNU CC, with `-msoft-float' in order for
723 this to work.
724
725`-mhard-quad-float'
726 Generate output containing quad-word (long double) floating point
727 instructions.
728
729`-msoft-quad-float'
730 Generate output containing library calls for quad-word (long
731 double) floating point instructions. The functions called are
732 those specified in the SPARC ABI. This is the default.
733
734 As of this writing, there are no sparc implementations that have
735 hardware support for the quad-word floating point instructions.
736 They all invoke a trap handler for one of these instructions, and
737 then the trap handler emulates the effect of the instruction.
738 Because of the trap handler overhead, this is much slower than
739 calling the ABI library routines. Thus the `-msoft-quad-float'
740 option is the default.
741
742`-mno-epilogue'
743`-mepilogue'
744 With `-mepilogue' (the default), the compiler always emits code for
745 function exit at the end of each function. Any function exit in
746 the middle of the function (such as a return statement in C) will
747 generate a jump to the exit code at the end of the function.
748
749 With `-mno-epilogue', the compiler tries to emit exit code inline
750 at every function exit.
751
752`-mno-flat'
753`-mflat'
754 With `-mflat', the compiler does not generate save/restore
755 instructions and will use a "flat" or single register window
756 calling convention. This model uses %i7 as the frame pointer and
757 is compatible with the normal register window model. Code from
758 either may be intermixed. The local registers and the input
759 registers (0-5) are still treated as "call saved" registers and
760 will be saved on the stack as necessary.
761
762 With `-mno-flat' (the default), the compiler emits save/restore
763 instructions (except for leaf functions) and is the normal mode of
764 operation.
765
766`-mno-unaligned-doubles'
767`-munaligned-doubles'
768 Assume that doubles have 8 byte alignment. This is the default.
769
770 With `-munaligned-doubles', GNU CC assumes that doubles have 8 byte
771 alignment only if they are contained in another type, or if they
772 have an absolute address. Otherwise, it assumes they have 4 byte
773 alignment. Specifying this option avoids some rare compatibility
774 problems with code generated by other compilers. It is not the
775 default because it results in a performance loss, especially for
776 floating point code.
777
778`-mv8'
779`-msparclite'
780 These two options select variations on the SPARC architecture.
781
782 By default (unless specifically configured for the Fujitsu
783 SPARClite), GCC generates code for the v7 variant of the SPARC
784 architecture.
785
786 `-mv8' will give you SPARC v8 code. The only difference from v7
787 code is that the compiler emits the integer multiply and integer
788 divide instructions which exist in SPARC v8 but not in SPARC v7.
789
790 `-msparclite' will give you SPARClite code. This adds the integer
791 multiply, integer divide step and scan (`ffs') instructions which
792 exist in SPARClite but not in SPARC v7.
793
794 These options are deprecated and will be deleted in GNU CC 2.9.
795 They have been replaced with `-mcpu=xxx'.
796
797`-mcypress'
798`-msupersparc'
799 These two options select the processor for which the code is
800 optimised.
801
802 With `-mcypress' (the default), the compiler optimizes code for the
803 Cypress CY7C602 chip, as used in the SparcStation/SparcServer 3xx
804 series. This is also appropriate for the older SparcStation 1, 2,
805 IPX etc.
806
807 With `-msupersparc' the compiler optimizes code for the SuperSparc
808 cpu, as used in the SparcStation 10, 1000 and 2000 series. This
809 flag also enables use of the full SPARC v8 instruction set.
810
811 These options are deprecated and will be deleted in GNU CC 2.9.
812 They have been replaced with `-mcpu=xxx'.
813
814`-mcpu=CPU_TYPE'
815 Set architecture type and instruction scheduling parameters for
816 machine type CPU_TYPE. Supported values for CPU_TYPE are `v7',
817 `cypress', `v8', `supersparc', `sparclite', `f930', `f934',
818 `sparclet', `tsc701', `v8plus', `v9', and `ultrasparc'.
819
820`-mtune=CPU_TYPE'
821 Set the instruction scheduling parameters for machine type
822 CPU_TYPE, but do not set the architecture type as the option
823 `-mcpu='CPU_TYPE would. The same values for `-mcpu='CPU_TYPE are
824 used for `-mtune='CPU_TYPE.
825
826`-malign-loops=NUM'
827 Align loops to a 2 raised to a NUM byte boundary. If
828 `-malign-loops' is not specified, the default is 2.
829
830`-malign-jumps=NUM'
831 Align instructions that are only jumped to to a 2 raised to a NUM
832 byte boundary. If `-malign-jumps' is not specified, the default
833 is 2.
834
835`-malign-functions=NUM'
836 Align the start of functions to a 2 raised to NUM byte boundary.
837 If `-malign-functions' is not specified, the default is 2 if
838 compiling for 32 bit sparc, and 5 if compiling for 64 bit sparc.
839
840 These `-m' switches are supported in addition to the above on the
841SPARCLET processor.
842
843`-mlittle-endian'
844 Generate code for a processor running in little-endian mode.
845
846`-mlive-g0'
847 Treat register `%g0' as a normal register. GCC will continue to
848 clobber it as necessary but will not assume it always reads as 0.
849
850`-mbroken-saverestore'
851 Generate code that does not use non-trivial forms of the `save' and
852 `restore' instructions. Early versions of the SPARCLET processor
853 do not correctly handle `save' and `restore' instructions used with
854 arguments. They correctly handle them used without arguments. A
855 `save' instruction used without arguments increments the current
856 window pointer but does not allocate a new stack frame. It is
857 assumed that the window overflow trap handler will properly handle
858 this case as will interrupt handlers.
859
860 These `-m' switches are supported in addition to the above on SPARC
861V9 processors in 64 bit environments.
862
863`-mlittle-endian'
864 Generate code for a processor running in little-endian mode.
865
866`-m32'
867`-m64'
868 Generate code for a 32 bit or 64 bit environment. The 32 bit
869 environment sets int, long and pointer to 32 bits. The 64 bit
870 environment sets int to 32 bits and long and pointer to 64 bits.
871
872`-mcmodel=medlow'
873 Generate code for the Medium/Low code model: the program must be
874 linked in the low 32 bits of the address space. Pointers are 64
875 bits. Programs can be statically or dynamically linked.
876
877`-mcmodel=medmid'
878 Generate code for the Medium/Middle code model: the program must
879 be linked in the low 44 bits of the address space, the text
880 segment must be less than 2G bytes, and data segment must be
881 within 2G of the text segment. Pointers are 64 bits.
882
883`-mcmodel=medany'
884 Generate code for the Medium/Anywhere code model: the program may
885 be linked anywhere in the address space, the text segment must be
886 less than 2G bytes, and data segment must be within 2G of the text
887 segment. Pointers are 64 bits.
888
889`-mcmodel=embmedany'
890 Generate code for the Medium/Anywhere code model for embedded
891 systems: assume a 32 bit text and a 32 bit data segment, both
892 starting anywhere (determined at link time). Register %g4 points
893 to the base of the data segment. Pointers still 64 bits.
894 Programs are statically linked, PIC is not supported.
895
896`-mstack-bias'
897`-mno-stack-bias'
898 With `-mstack-bias', GNU CC assumes that the stack pointer, and
899 frame pointer if present, are offset by -2047 which must be added
900 back when making stack frame references. Otherwise, assume no
901 such offset is present.
902
903\1f
904File: gcc.info, Node: Convex Options, Next: AMD29K Options, Prev: SPARC Options, Up: Submodel Options
905
906Convex Options
907--------------
908
909 These `-m' options are defined for Convex:
910
911`-mc1'
912 Generate output for C1. The code will run on any Convex machine.
913 The preprocessor symbol `__convex__c1__' is defined.
914
915`-mc2'
916 Generate output for C2. Uses instructions not available on C1.
917 Scheduling and other optimizations are chosen for max performance
918 on C2. The preprocessor symbol `__convex_c2__' is defined.
919
920`-mc32'
921 Generate output for C32xx. Uses instructions not available on C1.
922 Scheduling and other optimizations are chosen for max performance
923 on C32. The preprocessor symbol `__convex_c32__' is defined.
924
925`-mc34'
926 Generate output for C34xx. Uses instructions not available on C1.
927 Scheduling and other optimizations are chosen for max performance
928 on C34. The preprocessor symbol `__convex_c34__' is defined.
929
930`-mc38'
931 Generate output for C38xx. Uses instructions not available on C1.
932 Scheduling and other optimizations are chosen for max performance
933 on C38. The preprocessor symbol `__convex_c38__' is defined.
934
935`-margcount'
936 Generate code which puts an argument count in the word preceding
937 each argument list. This is compatible with regular CC, and a few
938 programs may need the argument count word. GDB and other
939 source-level debuggers do not need it; this info is in the symbol
940 table.
941
942`-mnoargcount'
943 Omit the argument count word. This is the default.
944
945`-mvolatile-cache'
946 Allow volatile references to be cached. This is the default.
947
948`-mvolatile-nocache'
949 Volatile references bypass the data cache, going all the way to
950 memory. This is only needed for multi-processor code that does
951 not use standard synchronization instructions. Making
952 non-volatile references to volatile locations will not necessarily
953 work.
954
955`-mlong32'
956 Type long is 32 bits, the same as type int. This is the default.
957
958`-mlong64'
959 Type long is 64 bits, the same as type long long. This option is
960 useless, because no library support exists for it.
961
962\1f
963File: gcc.info, Node: AMD29K Options, Next: ARM Options, Prev: Convex Options, Up: Submodel Options
964
965AMD29K Options
966--------------
967
968 These `-m' options are defined for the AMD Am29000:
969
970`-mdw'
971 Generate code that assumes the `DW' bit is set, i.e., that byte and
972 halfword operations are directly supported by the hardware. This
973 is the default.
974
975`-mndw'
976 Generate code that assumes the `DW' bit is not set.
977
978`-mbw'
979 Generate code that assumes the system supports byte and halfword
980 write operations. This is the default.
981
982`-mnbw'
983 Generate code that assumes the systems does not support byte and
984 halfword write operations. `-mnbw' implies `-mndw'.
985
986`-msmall'
987 Use a small memory model that assumes that all function addresses
988 are either within a single 256 KB segment or at an absolute
989 address of less than 256k. This allows the `call' instruction to
990 be used instead of a `const', `consth', `calli' sequence.
991
992`-mnormal'
993 Use the normal memory model: Generate `call' instructions only when
994 calling functions in the same file and `calli' instructions
995 otherwise. This works if each file occupies less than 256 KB but
996 allows the entire executable to be larger than 256 KB. This is
997 the default.
998
999`-mlarge'
1000 Always use `calli' instructions. Specify this option if you expect
1001 a single file to compile into more than 256 KB of code.
1002
1003`-m29050'
1004 Generate code for the Am29050.
1005
1006`-m29000'
1007 Generate code for the Am29000. This is the default.
1008
1009`-mkernel-registers'
1010 Generate references to registers `gr64-gr95' instead of to
1011 registers `gr96-gr127'. This option can be used when compiling
1012 kernel code that wants a set of global registers disjoint from
1013 that used by user-mode code.
1014
1015 Note that when this option is used, register names in `-f' flags
1016 must use the normal, user-mode, names.
1017
1018`-muser-registers'
1019 Use the normal set of global registers, `gr96-gr127'. This is the
1020 default.
1021
1022`-mstack-check'
1023`-mno-stack-check'
1024 Insert (or do not insert) a call to `__msp_check' after each stack
1025 adjustment. This is often used for kernel code.
1026
1027`-mstorem-bug'
1028`-mno-storem-bug'
1029 `-mstorem-bug' handles 29k processors which cannot handle the
1030 separation of a mtsrim insn and a storem instruction (most 29000
1031 chips to date, but not the 29050).
1032
1033`-mno-reuse-arg-regs'
1034`-mreuse-arg-regs'
1035 `-mno-reuse-arg-regs' tells the compiler to only use incoming
1036 argument registers for copying out arguments. This helps detect
1037 calling a function with fewer arguments than it was declared with.
1038
1039`-mno-impure-text'
1040`-mimpure-text'
1041 `-mimpure-text', used in addition to `-shared', tells the compiler
1042 to not pass `-assert pure-text' to the linker when linking a
1043 shared object.
1044
1045`-msoft-float'
1046 Generate output containing library calls for floating point.
1047 *Warning:* the requisite libraries are not part of GNU CC.
1048 Normally the facilities of the machine's usual C compiler are
1049 used, but this can't be done directly in cross-compilation. You
1050 must make your own arrangements to provide suitable library
1051 functions for cross-compilation.
1052
1053\1f
1054File: gcc.info, Node: ARM Options, Next: M32R/D Options, Prev: AMD29K Options, Up: Submodel Options
1055
1056ARM Options
1057-----------
1058
1059 These `-m' options are defined for Advanced RISC Machines (ARM)
1060architectures:
1061
1062`-mapcs-frame'
1063 Generate a stack frame that is compliant with the ARM Procedure
1064 Call Standard for all functions, even if this is not strictly
1065 necessary for correct execution of the code.
1066
1067`-mapcs-26'
1068 Generate code for a processor running with a 26-bit program
1069 counter, and conforming to the function calling standards for the
1070 APCS 26-bit option. This option replaces the `-m2' and `-m3'
1071 options of previous releases of the compiler.
1072
1073`-mapcs-32'
1074 Generate code for a processor running with a 32-bit program
1075 counter, and conforming to the function calling standards for the
1076 APCS 32-bit option. This option replaces the `-m6' option of
1077 previous releases of the compiler.
1078
1079`-mhard-float'
1080 Generate output containing floating point instructions. This is
1081 the default.
1082
1083`-msoft-float'
1084 Generate output containing library calls for floating point.
1085 *Warning:* the requisite libraries are not available for all ARM
1086 targets. Normally the facilities of the machine's usual C
1087 compiler are used, but this cannot be done directly in
1088 cross-compilation. You must make your own arrangements to provide
1089 suitable library functions for cross-compilation.
1090
1091 `-msoft-float' changes the calling convention in the output file;
1092 therefore, it is only useful if you compile *all* of a program with
1093 this option. In particular, you need to compile `libgcc.a', the
1094 library that comes with GNU CC, with `-msoft-float' in order for
1095 this to work.
1096
1097`-mlittle-endian'
1098 Generate code for a processor running in little-endian mode. This
1099 is the default for all standard configurations.
1100
1101`-mbig-endian'
1102 Generate code for a processor running in big-endian mode; the
1103 default is to compile code for a little-endian processor.
1104
1105`-mwords-little-endian'
1106 This option only applies when generating code for big-endian
1107 processors. Generate code for a little-endian word order but a
1108 big-endian byte order. That is, a byte order of the form
1109 `32107654'. Note: this option should only be used if you require
1110 compatibility with code for big-endian ARM processors generated by
1111 versions of the compiler prior to 2.8.
1112
1113`-mshort-load-bytes'
1114 Do not try to load half-words (eg `short's) by loading a word from
1115 an unaligned address. For some targets the MMU is configured to
1116 trap unaligned loads; use this option to generate code that is
1117 safe in these environments.
1118
1119`-mno-short-load-bytes'
1120 Use unaligned word loads to load half-words (eg `short's). This
1121 option produces more efficient code, but the MMU is sometimes
1122 configured to trap these instructions.
1123
1124`-mbsd'
1125 This option only applies to RISC iX. Emulate the native BSD-mode
1126 compiler. This is the default if `-ansi' is not specified.
1127
1128`-mxopen'
1129 This option only applies to RISC iX. Emulate the native
1130 X/Open-mode compiler.
1131
1132`-mno-symrename'
1133 This option only applies to RISC iX. Do not run the assembler
1134 post-processor, `symrename', after code has been assembled.
1135 Normally it is necessary to modify some of the standard symbols in
1136 preparation for linking with the RISC iX C library; this option
1137 suppresses this pass. The post-processor is never run when the
1138 compiler is built for cross-compilation.
1139
1140\1f
1141File: gcc.info, Node: M32R/D Options, Next: M88K Options, Prev: ARM Options, Up: Submodel Options
1142
1143M32R/D Options
1144--------------
1145
1146 These `-m' options are defined for Mitsubishi M32R/D architectures:
1147
1148`-mcode-model=small'
1149 Assume all objects live in the lower 16MB of memory (so that their
1150 addresses can be loaded with the `ld24' instruction), and assume
1151 all subroutines are reachable with the `bl' instruction. This is
1152 the default.
1153
1154 The addressability of a particular object can be set with the
1155 `model' attribute.
1156
1157`-mcode-model=medium'
1158 Assume objects may be anywhere in the 32 bit address space (the
1159 compiler will generate `seth/add3' instructions to load their
1160 addresses), and assume all subroutines are reachable with the `bl'
1161 instruction.
1162
1163`-mcode-model=large'
1164 Assume objects may be anywhere in the 32 bit address space (the
1165 compiler will generate `seth/add3' instructions to load their
1166 addresses), and assume subroutines may not be reachable with the
1167 `bl' instruction (the compiler will generate the much slower
1168 `seth/add3/jl' instruction sequence).
1169
1170`-msdata=none'
1171 Disable use of the small data area. Variables will be put into
1172 one of `.data', `bss', or `.rodata' (unless the `section'
1173 attribute has been specified). This is the default.
1174
1175 The small data area consists of sections `.sdata' and `.sbss'.
1176 Objects may be explicitly put in the small data area with the
1177 `section' attribute using one of these sections.
1178
1179`-msdata=sdata'
1180 Put small global and static data in the small data area, but do not
1181 generate special code to reference them.
1182
1183`-msdata=use'
1184 Put small global and static data in the small data area, and
1185 generate special instructions to reference them.
1186
1187`-G NUM'
1188 Put global and static objects less than or equal to NUM bytes into
1189 the small data or bss sections instead of the normal data or bss
1190 sections. The default value of NUM is 8. The `-msdata' option
1191 must be set to one of `sdata' or `use' for this option to have any
1192 effect.
1193
1194 All modules should be compiled with the same `-G NUM' value.
1195 Compiling with different values of NUM may or may not work; if it
1196 doesn't the linker will give an error message - incorrect code
1197 will not be generated.
1198