|
|
1.1 root 1: @c Copyright (C) 1988, 1989, 1992 Free Software Foundation, Inc.
2: @c This is part of the GCC manual.
3: @c For copying conditions, see the file gcc.texi.
4:
1.1.1.3 ! root 5: @node Invoking GCC
1.1 root 6: @chapter GNU CC Command Options
7: @cindex GNU CC command options
8: @cindex command options
9: @cindex options, GNU CC command
10:
11: When you invoke GNU CC, it normally does preprocessing, compilation,
12: assembly and linking. The ``overall options'' allow you to stop this
13: process at an intermediate stage. For example, the @samp{-c} option
14: says not to run the linker. Then the output consists of object files
15: output by the assembler.
16:
17: Other options are passed on to one stage of processing. Some options
18: control the preprocessor and others the compiler itself. Yet other
19: options control the assembler and linker; most of these are not
20: documented here, since you rarely need to use any of them.
21:
22: @cindex grouping options
23: @cindex options, grouping
24: The GNU C compiler uses a command syntax much like the Unix C compiler.
25: The @code{gcc} program accepts options and file names as operands.
26: Multiple single-letter options may @emph{not} be grouped: @samp{-dr} is
27: very different from @w{@samp{-d -r}}.
28:
29: @cindex order of options
30: @cindex options, order
31: You can mix options and other arguments. For the most part, the order
32: you use doesn't matter; @code{gcc} reorders the command-line options so
33: that the choices specified by option flags are applied to all input
34: files. Order does matter when you use several options of the same kind;
35: for example, if you specify @samp{-L} more than once, the directories
36: are searched in the order specified.
37:
38: Many options have long names starting with @samp{-f} or with
39: @samp{-W}---for example, @samp{-fforce-mem},
40: @samp{-fstrength-reduce}, @samp{-Wformat} and so on. Most of
41: these have both positive and negative forms; the negative form of
42: @samp{-ffoo} would be @samp{-fno-foo}. This manual documents
43: only one of these two forms, whichever one is not the default.
44:
45: Here is a summary of all the options, grouped by type. Explanations are
46: in the following sections.
47:
48: @table @emph
49: @item Overall Options
50: @xref{Overall Options,,Options Controlling the Kind of Output}.
51: @example
52: -c -S -E -o @var{file} -pipe -v -x @var{language}
53: @end example
54:
55: @item Language Options
56: @xref{Dialect Options,,Options Controlling Dialect}.
57: @example
58: -ansi -fbuiltin -fcond-mismatch -fno-asm
59: -fsigned-bitfields -fsigned-char
60: -funsigned-bitfields -funsigned-char -fwritable-strings
61: -traditional -traditional-cpp -trigraphs
62: @end example
63:
64: @item Warning Options
65: @xref{Warning Options,,Options to Request or Suppress Warnings}.
66: @example
67: -fsyntax-only -pedantic -pedantic-errors
68: -w -W -Wall -Waggregate-return
69: -Wcast-align -Wcast-qual -Wcomment -Wconversion -Werror
1.1.1.2 root 70: -Wformat -Wid-clash-@var{len} -Wimplicit -Wimport
71: -Winline -Wmissing-prototypes
72: -Wparentheses -Wpointer-arith -Wreturn-type -Wshadow
1.1 root 73: -Wstrict-prototypes -Wswitch -Wtraditional -Wtrigraphs
74: -Wuninitialized -Wunused -Wwrite-strings -Wchar-subscripts
75: @end example
76:
77: @item Debugging Options
78: @xref{Debugging Options,,Options for Debugging Your Program or GCC}.
79: @example
80: -a -d@var{letters} -fpretend-float
1.1.1.2 root 81: -g -g@var{level} -ggdb -gdwarf
82: -gstabs -gstabs+ -gcoff -gxcoff
1.1 root 83: -p -pg -save-temps
84: @end example
85:
86: @item Optimization Options
87: @xref{Optimize Options,,Options that Control Optimization}.
88: @example
1.1.1.3 ! root 89: -fcaller-saves -fcse-follow-jumps -fcse-skip-blocks
! 90: -fdelayed-branch -fexpensive-optimizations -ffast-math
! 91: -ffloat-store -fforce-addr -fforce-mem -finline
! 92: -finline-functions -fkeep-inline-functions
1.1 root 93: -fno-defer-pop -fno-function-cse -fomit-frame-pointer
94: -frerun-cse-after-loop -fschedule-insns -fschedule-insns2
95: -fstrength-reduce -fthread-jumps
1.1.1.3 ! root 96: -funroll-all-loops -funroll-loops
1.1 root 97: -O -O2
98: @end example
99:
100: @item Preprocessor Options
101: @xref{Preprocessor Options,,Options Controlling the Preprocessor}.
102: @example
103: -C -dD -dM -dN
104: -D@var{macro}@r{[}=@var{defn}@r{]} -E -H
105: -include @var{file} -imacros @var{file}
106: -M -MD -MM -MMD -nostdinc -P -trigraphs -U@var{macro}
107: @end example
108:
109: @item Linker Options
110: @xref{Link Options,,Options for Linking}.
111: @example
112: @var{object-file-name}
113: -l@var{library} -nostdlib -static
114: @end example
115:
116: @item Directory Options
117: @xref{Directory Options,,Options for Directory Search}.
118: @example
119: -B@var{prefix} -I@var{dir} -I- -L@var{dir}
120: @end example
121:
122: @item Target Options
123: @xref{Target Options,,Target Machine and Compiler Version}.
124: @example
125: -b @var{machine} -V @var{version}
126: @end example
127:
128: @item Machine Dependent Options
129: @xref{Submodel Options,,Hardware Models and Configurations}.
130: @example
131: @emph{M680x0 Options}
132: -m68000 -m68020 -m68881 -mbitfield -mc68000 -mc68020 -mfpa
133: -mnobitfield -mrtd -mshort -msoft-float
134:
135: @emph{VAX Options}
136: -mg -mgnu -munix
137:
138: @emph{SPARC Options}
1.1.1.2 root 139: -mforce-align -mfpu -mno-epilogue
1.1 root 140:
141: @emph{Convex Options}
142: -margcount -mc1 -mc2 -mnoargcount
143:
144: @emph{AMD29K Options}
145: -m29000 -m29050 -mbw -mdw -mkernel-registers -mlarge
146: -mnbw -mnodw -msmall -mstack-check -muser-registers
147:
148: @emph{M88K Options}
149: -m88000 -m88100 -m88110 -mbig-pic -mcheck-zero-division
150: -mhandle-large-shift -midentify-revision
151: -mno-check-zero-division -mno-ocs-debug-info
152: -mno-ocs-frame-position -mno-optimize-arg-area -mno-underscores
153: -mocs-debug-info -mocs-frame-position -moptimize-arg-area
154: -mshort-data-@var{num} -msvr3 -msvr4 -mtrap-large-shift
155: -muse-div-instruction -mversion-03.00 -mwarn-passed-structs
156:
157: @emph{RS/6000 Options}
158: -mfp-in-toc -mno-fop-in-toc
159:
160: @emph{RT Options}
161: -mcall-lib-mul -mfp-arg-in-fpregs -mfp-arg-in-gregs
162: -mfull-fp-blocks -mhc-struct-return -min-line-mul
163: -mminimum-fp-blocks -mnohc-struct-return
164:
165: @emph{MIPS Options}
166: -mcpu=@var{cpu type} -mips2 -mips3 -mint64 -mlong64 -mlonglong128
167: -mmips-as -mgas -mrnames -mno-rnames -mgpopt -mno-gpopt -mstats
168: -mno-stats -mmemcpy -mno-memcpy -mno-mips-tfile -mmips-tfile
169: -msoft-float -mhard-float -mabicalls -mno-abicalls -mhalf-pic
1.1.1.2 root 170: -mno-half-pic -G @var{num} -nocpp
171:
172: @emph{i386 Options}
173: -m486 -msoft-float
1.1 root 174: @end example
175:
176: @item Code Generation Options
177: @xref{Code Gen Options,,Options for Code Generation Conventions}.
178: @example
179: -fcall-saved-@var{reg} -fcall-used-@var{reg} -ffixed-@var{reg}
180: -fno-common -fpcc-struct-return -fpic -fPIC -fshared-data
181: -fshort-enums -fshort-double -fvolatile
182: @end example
183:
184: @end table
185:
186: @menu
187: * Overall Options:: Controlling the kind of output:
188: an executable, object files, assembler files,
189: or preprocessed source.
190: * Dialect Options:: Controlling the variant of C language compiled.
191: * Warning Options:: How picky should the compiler be?
192: * Debugging Options:: Symbol tables, measurements, and debugging dumps.
193: * Optimize Options:: How much optimization?
194: * Preprocessor Options:: Controlling header files and macro definitions.
195: Also, getting dependency information for Make.
196: * Link Options:: Specifying libraries and so on.
197: * Directory Options:: Where to find header files and libraries.
198: Where to find the compiler executable files.
199: * Target Options:: Running a cross-compiler, or an old version of GNU CC.
200: * Submodel Options:: Specifying minor hardware or convention variations,
201: such as 68010 vs 68020.
202: * Code Gen Options:: Specifying conventions for function calls, data layout
203: and register usage.
204: * Environment Variables:: Env vars that affect GNU CC.
205: @end menu
206:
207: @node Overall Options, Dialect Options, Invoking GCC, Invoking GCC
208: @section Options Controlling the Kind of Output
209:
210: Compilation can involve up to four stages: preprocessing, compilation
211: proper, assembly and linking, always in that order. The first three
212: stages apply to an individual source file, and end by producing an
213: object file; linking combines all the object files (those newly
214: compiled, and those specified as input) into an executable file.
215:
216: @cindex file name suffix
217: For any given input file, the file name suffix determines what kind of
218: compilation is done:
219:
220: @table @code
221: @item @var{file}.c
222: C source code which must be preprocessed.
223:
224: @item @var{file}.i
225: C source code which should not be preprocessed.
226:
227: @item @var{file}.m
228: Objective-C source code
229:
230: @item @var{file}.h
231: C header file (not to be compiled or linked).
232:
233: @item @var{file}.cc
234: @itemx @var{file}.cxx
235: @itemx @var{file}.C
236: C++ source code which must be preprocessed.
237:
238: @item @var{file}.s
239: Assembler code.
240:
241: @item @var{file}.S
242: Assembler code which must be preprocessed.
243:
244: @item @var{other}
245: An object file to be fed straight into linking.
246: Any file name with no recognized suffix is treated this way.
247: @end table
248:
249: You can specify the input language explicitly with the @samp{-x} option:
250:
251: @table @code
252: @item -x @var{language}
253: Specify explicitly the @var{language} for the following input files
254: (rather than choosing a default based on the file name suffix).
255: This option applies to all following input files until
256: the next @samp{-x} option. Possible values of @var{language} are
257: @samp{c}, @samp{objective-c}, @samp{c-header}, @samp{c++},
258: @samp{cpp-output}, @samp{assembler}, and @samp{assembler-with-cpp}.
259:
260: @item -x none
261: Turn off any specification of a language, so that subsequent files are
262: handled according to their file name suffixes (as they are if @samp{-x}
263: has not been used at all).
264: @end table
265:
266: If you only want some of the stages of compilation, you can use
267: @samp{-x} (or filename suffixes) to tell @code{gcc} where to start, and
268: one of the options @samp{-c}, @samp{-S}, or @samp{-E} to say where
269: @code{gcc} is to stop. Note that some combinations (for example,
270: @samp{-x cpp-output -E} instruct @code{gcc} to do nothing at all.
271:
272: @table @code
273: @item -c
274: Compile or assemble the source files, but do not link. The linking
275: stage simply is not done. The ultimate output is in the form of an
276: object file for each source file.
277:
278: By default, the object file name for a source file is made by replacing
279: the suffix @samp{.c}, @samp{.i}, @samp{.s}, etc., with @samp{.o}.
280:
281: Unrecognized input files, not requiring compilation or assembly, are
282: ignored.
283:
284: @item -S
285: Stop after the stage of compilation proper; do not assemble. The output
286: is in the form of an assembler code file for each non-assembler input
287: file specified.
288:
289: By default, the assembler file name for a source file is made by
290: replacing the suffix @samp{.c}, @samp{.i}, etc., with @samp{.s}.
291:
292: Input files that don't require compilation are ignored.
293:
294: @item -E
295: Stop after the preprocessing stage; do not run the compiler proper. The
296: output is in the form of preprocessed source code, which is sent to the
297: standard output.
298:
299: Input files which don't require preprocessing are ignored.
300:
301: @cindex output file option
302: @item -o @var{file}
303: Place output in file @var{file}. This applies regardless to whatever
304: sort of output is being produced, whether it be an executable file,
305: an object file, an assembler file or preprocessed C code.
306:
307: Since only one output file can be specified, it does not make sense to
308: use @samp{-o} when compiling more than one input file, unless you are
309: producing an executable file as output.
310:
311: If @samp{-o} is not specified, the default is to put an executable file
312: in @file{a.out}, the object file for @file{@var{source}.@var{suffix}} in
313: @file{@var{source}.o}, its assembler file in @file{@var{source}.s}, and
314: all preprocessed C source on standard output.@refill
315:
316: @item -v
317: Print (on standard error output) the commands executed to run the stages
318: of compilation. Also print the version number of the compiler driver
319: program and of the preprocessor and the compiler proper.
320:
321: @item -pipe
322: Use pipes rather than temporary files for communication between the
323: various stages of compilation. This fails to work on some systems where
324: the assembler is unable to read from a pipe; but the GNU assembler has
325: no trouble.
326: @end table
327:
328: @node Dialect Options, Warning Options, Overall Options, Invoking GCC
329: @section Options Controlling Dialect
330: @cindex dialect options
331: @cindex language dialect options
332: @cindex options, dialect
333:
334: The following options control the dialect of C that the compiler
335: accepts:
336:
337: @table @code
338: @cindex ANSI support
339: @item -ansi
340: Support all ANSI standard C programs.
341:
342: This turns off certain features of GNU C that are incompatible with ANSI
343: C, such as the @code{asm}, @code{inline} and @code{typeof} keywords, and
344: predefined macros such as @code{unix} and @code{vax} that identify the
345: type of system you are using. It also enables the undesirable and
346: rarely used ANSI trigraph feature, and disallows @samp{$} as part of
347: identifiers.
348:
349: The alternate keywords @code{__asm__}, @code{__extension__},
350: @code{__inline__} and @code{__typeof__} continue to work despite
351: @samp{-ansi}. You would not want to use them in an ANSI C program, of
352: course, but it useful to put them in header files that might be included
353: in compilations done with @samp{-ansi}. Alternate predefined macros
354: such as @code{__unix__} and @code{__vax__} are also available, with or
355: without @samp{-ansi}.
356:
357: The @samp{-ansi} option does not cause non-ANSI programs to be
358: rejected gratuitously. For that, @samp{-pedantic} is required in
359: addition to @samp{-ansi}. @xref{Warning Options}.
360:
361: The macro @code{__STRICT_ANSI__} is predefined when the @samp{-ansi}
362: option is used. Some header files may notice this macro and refrain
363: from declaring certain functions or defining certain macros that the
364: ANSI standard doesn't call for; this is to avoid interfering with any
365: programs that might use these names for other things.
366:
1.1.1.3 ! root 367: The functions @code{alloca}, @code{abort}, @code{exit}, and
! 368: @code{_exit} are not builtin functions when @samp{-ansi} is used.
! 369:
1.1 root 370: @item -fno-asm
371: Do not recognize @code{asm}, @code{inline} or @code{typeof} as a
372: keyword. These words may then be used as identifiers. You can
373: use @code{__asm__}, @code{__inline__} and @code{__typeof__} instead.
374: @samp{-ansi} implies @samp{-fno-asm}.
375:
376: @item -fno-builtin
1.1.1.3 ! root 377: Don't recognize built-in functions that do not begin with two leading
! 378: underscores. Currently, the functions affected include @code{alloca},
! 379: @code{abort}, @code{exit}, @code{_exit}, @code{abs}, @code{fabs},
! 380: @code{labs}, @code{memcpy}, @code{memcmp}, @code{strcmp},
! 381: @code{strcpy}, @code{strlen}, and @code{sqrt}.
! 382:
! 383: The @samp{-ansi} option prevents @code{alloca} and @code{_exit} from
! 384: being builtin functions.
1.1 root 385:
386: @item -trigraphs
387: Support ANSI C trigraphs. You don't want to know about this
388: brain-damage. The @samp{-ansi} option implies @samp{-trigraphs}.
389:
390: @cindex traditional C language
391: @cindex C language, traditional
392: @item -traditional
393: Attempt to support some aspects of traditional C compilers.
394: Specifically:
395:
396: @itemize @bullet
397: @item
398: All @code{extern} declarations take effect globally even if they
399: are written inside of a function definition. This includes implicit
400: declarations of functions.
401:
402: @item
403: The keywords @code{typeof}, @code{inline}, @code{signed}, @code{const}
404: and @code{volatile} are not recognized. (You can still use the
405: alternative keywords such as @code{__typeof__}, @code{__inline__}, and
406: so on.)
407:
408: @item
409: Comparisons between pointers and integers are always allowed.
410:
411: @item
412: Integer types @code{unsigned short} and @code{unsigned char} promote
413: to @code{unsigned int}.
414:
415: @item
416: Out-of-range floating point literals are not an error.
417:
418: @item
419: String ``constants'' are not necessarily constant; they are stored in
420: writable space, and identical looking constants are allocated
421: separately. (This is the same as the effect of
422: @samp{-fwritable-strings}.)
423:
424: @cindex @code{longjmp} and automatic variables
425: @item
426: All automatic variables not declared @code{register} are preserved by
427: @code{longjmp}. Ordinarily, GNU C follows ANSI C: automatic variables
428: not declared @code{volatile} may be clobbered.
429:
430: @item
431: In the preprocessor, comments convert to nothing at all, rather than
432: to a space. This allows traditional token concatenation.
433:
434: @item
435: In the preprocessor, macro arguments are recognized within string
436: constants in a macro definition (and their values are stringified,
437: though without additional quote marks, when they appear in such a
438: context). The preprocessor always considers a string constant to end
439: at a newline.
440:
441: @item
442: The predefined macro @code{__STDC__} is not defined when you use
443: @samp{-traditional}, but @code{__GNUC__} is (since the GNU extensions
444: which @code{__GNUC__} indicates are not affected by
445: @samp{-traditional}). If you need to write header files that work
446: differently depending on whether @samp{-traditional} is in use, by
447: testing both of these predefined macros you can distinguish four
448: situations: GNU C, traditional GNU C, other ANSI C compilers, and
449: other old C compilers.
450: @end itemize
451:
1.1.1.3 ! root 452: You may wish to use @samp{-fno-builtin} as well as @samp{-traditional}
! 453: if your program uses names that are normally GNU C builtin functions for
! 454: other purposes of its own.
! 455:
1.1 root 456: @item -traditional-cpp
457: Attempt to support some aspects of traditional C preprocessors.
458: This includes the last three items in the table immediately above,
459: but none of the other effects of @samp{-traditional}.
460:
461: @item -fcond-mismatch
462: Allow conditional expressions with mismatched types in the second and
463: third arguments. The value of such an expression is void.
464:
465: @item -funsigned-char
466: Let the type @code{char} be unsigned, like @code{unsigned char}.
467:
468: Each kind of machine has a default for what @code{char} should
469: be. It is either like @code{unsigned char} by default or like
470: @code{signed char} by default.
471:
472: Ideally, a portable program should always use @code{signed char} or
473: @code{unsigned char} when it depends on the signedness of an object.
474: But many programs have been written to use plain @code{char} and
475: expect it to be signed, or expect it to be unsigned, depending on the
476: machines they were written for. This option, and its inverse, let you
477: make such a program work with the opposite default.
478:
479: The type @code{char} is always a distinct type from each of
480: @code{signed char} or @code{unsigned char}, even though its behavior
481: is always just like one of those two.
482:
483: @item -fsigned-char
484: Let the type @code{char} be signed, like @code{signed char}.
485:
486: Note that this is equivalent to @samp{-fno-unsigned-char}, which is
487: the negative form of @samp{-funsigned-char}. Likewise,
488: @samp{-fno-signed-char} is equivalent to @samp{-funsigned-char}.
489:
490: @item -fsigned-bitfields
491: @itemx -funsigned-bitfields
492: @itemx -fno-signed-bitfields
493: @itemx -fno-unsigned-bitfields
494: These options control whether a bitfield is signed or unsigned, when the
495: declaration does not use either @code{signed} or @code{unsigned}. By
496: default, such a bitfield is signed, because this is consistent: the
497: basic integer types such as @code{int} are signed types.
498:
499: However, when @samp{-traditional} is used, bitfields are all unsigned
500: no matter what.
501:
502: @item -fwritable-strings
503: Store string constants in the writable data segment and don't uniquize
504: them. This is for compatibility with old programs which assume they
505: can write into string constants. @samp{-traditional} also has this
506: effect.
507:
508: Writing into string constants is a very bad idea; ``constants'' should
509: be constant.
510: @end table
511:
512: @node Warning Options, Debugging Options, Dialect Options, Invoking GCC
513: @section Options to Request or Suppress Warnings
514: @cindex options to control warnings
515: @cindex warning messages
516: @cindex messages, warning
517: @cindex suppressing warnings
518:
519: Warnings are diagnostic messages that report constructions which
520: are not inherently erroneous but which are risky or suggest there
521: may have been an error.
522:
523: You can request many specific warnings with options beginning @samp{-W},
524: for example @samp{-Wimplicit} to request warnings on implicit
525: declarations. Each of these specific warning options also has a
526: negative form beginning @samp{-Wno-} to turn off warnings;
527: for example, @samp{-Wno-implicit}. This manual lists only one of the
528: two forms, whichever is not the default.
529:
530: These options control the amount and kinds of warnings produced by GNU
531: CC:
532:
533: @table @code
534: @cindex syntax checking
535: @item -fsyntax-only
536: Check the code for syntax errors, but don't emit any output.
537:
538: @item -w
539: Inhibit all warning messages.
540:
1.1.1.2 root 541: @item -Wno_import
542: Inhibit warning messages about the use of @samp{#import}.
543:
1.1 root 544: @item -pedantic
545: Issue all the warnings demanded by strict ANSI standard C; reject
546: all programs that use forbidden extensions.
547:
548: Valid ANSI standard C programs should compile properly with or without
549: this option (though a rare few will require @samp{-ansi}). However,
550: without this option, certain GNU extensions and traditional C features
551: are supported as well. With this option, they are rejected.
552:
553: @samp{-pedantic} does not cause warning messages for use of the
554: alternate keywords whose names begin and end with @samp{__}. Pedantic
555: warnings are also disabled in the expression that follows
556: @code{__extension__}. However, only system header files should use
557: these escape routes; application programs should avoid them.
558: @xref{Alternate Keywords}.
559:
560: This option is not intended to be @i{useful}; it exists only to satisfy
561: pedants who would otherwise claim that GNU CC fails to support the ANSI
562: standard.
563:
564: Some users try to use @samp{-pedantic} to check programs for strict ANSI
565: C conformance. They soon find that it does not do quite what they want:
566: it finds some non-ANSI practices, but not all---only those for which
567: ANSI C @emph{requires} a diagnostic.
568:
569: A feature to report any failure to conform to ANSI C might be useful in
570: some instances, but would require considerable additional work and would
571: be quite different from @samp{-pedantic}. We recommend, rather, that
572: users take advantage of the extensions of GNU C and disregard the
573: limitations of other compilers. Aside from certain supercomputers and
574: obsolete small machines, there is less and less reason ever to use any
575: other C compiler other than for bootstrapping GNU CC.
576:
577: @item -pedantic-errors
578: Like @samp{-pedantic}, except that errors are produced rather than
579: warnings.
580:
581: @item -W
582: Print extra warning messages for these events:
583:
584: @itemize @bullet
585: @cindex @code{longjmp} warnings
586: @item
587: A nonvolatile automatic variable might be changed by a call to
588: @code{longjmp}. These warnings as well are possible only in
589: optimizing compilation.
590:
591: The compiler sees only the calls to @code{setjmp}. It cannot know
592: where @code{longjmp} will be called; in fact, a signal handler could
593: call it at any point in the code. As a result, you may get a warning
594: even when there is in fact no problem because @code{longjmp} cannot
595: in fact be called at the place which would cause a problem.
596:
597: @item
598: A function can return either with or without a value. (Falling
599: off the end of the function body is considered returning without
600: a value.) For example, this function would evoke such a
601: warning:
602:
603: @example
604: foo (a)
605: @{
606: if (a > 0)
607: return a;
608: @}
609: @end example
610:
611: @item
612: An expression-statement contains no side effects.
613:
614: @item
615: An unsigned value is compared against zero with @samp{>} or @samp{<=}.
616: @end itemize
617:
618: @item -Wimplicit
619: Warn whenever a function or parameter is implicitly declared.
620:
621: @item -Wreturn-type
622: Warn whenever a function is defined with a return-type that defaults
623: to @code{int}. Also warn about any @code{return} statement with no
624: return-value in a function whose return-type is not @code{void}.
625:
626: @item -Wunused
627: Warn whenever a local variable is unused aside from its declaration,
628: whenever a function is declared static but never defined, and whenever
629: a statement computes a result that is explicitly not used.
630:
631: @item -Wswitch
632: Warn whenever a @code{switch} statement has an index of enumeral type
633: and lacks a @code{case} for one or more of the named codes of that
634: enumeration. (The presence of a @code{default} label prevents this
635: warning.) @code{case} labels outside the enumeration range also
636: provoke warnings when this option is used.
637:
638: @item -Wcomment
639: Warn whenever a comment-start sequence @samp{/*} appears in a comment.
640:
641: @item -Wtrigraphs
642: Warn if any trigraphs are encountered (assuming they are enabled).
643:
644: @item -Wformat
645: Check calls to @code{printf} and @code{scanf}, etc., to make sure that
646: the arguments supplied have types appropriate to the format string
647: specified.
648:
649: @item -Wchar-subscripts
650: Warn if an array subscript has type @code{char}. This is a common cause
651: of error, as programmers often forget that this type is signed on some
652: machines.
653:
654: @item -Wuninitialized
655: An automatic variable is used without first being initialized.
656:
657: These warnings are possible only in optimizing compilation,
658: because they require data flow information that is computed only
659: when optimizing. If you don't specify @samp{-O}, you simply won't
660: get these warnings.
661:
662: These warnings occur only for variables that are candidates for
663: register allocation. Therefore, they do not occur for a variable that
664: is declared @code{volatile}, or whose address is taken, or whose size
665: is other than 1, 2, 4 or 8 bytes. Also, they do not occur for
666: structures, unions or arrays, even when they are in registers.
667:
668: Note that there may be no warning about a variable that is used only
669: to compute a value that itself is never used, because such
670: computations may be deleted by data flow analysis before the warnings
671: are printed.
672:
673: These warnings are made optional because GNU CC is not smart
674: enough to see all the reasons why the code might be correct
675: despite appearing to have an error. Here is one example of how
676: this can happen:
677:
678: @example
679: @{
680: int x;
681: switch (y)
682: @{
683: case 1: x = 1;
684: break;
685: case 2: x = 4;
686: break;
687: case 3: x = 5;
688: @}
689: foo (x);
690: @}
691: @end example
692:
693: @noindent
694: If the value of @code{y} is always 1, 2 or 3, then @code{x} is
695: always initialized, but GNU CC doesn't know this. Here is
696: another common case:
697:
698: @example
699: @{
700: int save_y;
701: if (change_y) save_y = y, y = new_y;
702: @dots{}
703: if (change_y) y = save_y;
704: @}
705: @end example
706:
707: @noindent
708: This has no bug because @code{save_y} is used only if it is set.
709:
710: Some spurious warnings can be avoided if you declare as
711: @code{volatile} all the functions you use that never return.
712: @xref{Function Attributes}.
713:
1.1.1.2 root 714: @item -Wparentheses
715: Warn if parentheses are omitted in certain contexts.
716:
1.1 root 717: @item -Wall
718: All of the above @samp{-W} options combined. These are all the
719: options which pertain to usage that we recommend avoiding and that we
720: believe is easy to avoid, even in conjunction with macros.
721: @end table
722:
723: The remaining @samp{-W@dots{}} options are not implied by @samp{-Wall}
724: because they warn about constructions that we consider reasonable to
725: use, on occasion, in clean programs.
726:
727: @table @code
728: @item -Wtraditional
729: Warn about certain constructs that behave differently in traditional and
730: ANSI C.
731:
732: @itemize @bullet
733: @item
734: Macro arguments occurring within string constants in the macro body.
735: These would substitute the argument in traditional C, but are part of
736: the constant in ANSI C.
737:
738: @item
739: A function declared external in one block and then used after the end of
740: the block.
741:
742: @item
743: A @code{switch} statement has an operand of type @code{long}.
744: @end itemize
745:
746: @item -Wshadow
747: Warn whenever a local variable shadows another local variable.
748:
749: @item -Wid-clash-@var{len}
750: Warn whenever two distinct identifiers match in the first @var{len}
751: characters. This may help you prepare a program that will compile
752: with certain obsolete, brain-damaged compilers.
753:
754: @item -Wpointer-arith
755: Warn about anything that depends on the ``size of'' a function type or
756: of @code{void}. GNU C assigns these types a size of 1, for
757: convenience in calculations with @code{void *} pointers and pointers
758: to functions.
759:
760: @item -Wcast-qual
761: Warn whenever a pointer is cast so as to remove a type qualifier from
762: the target type. For example, warn if a @code{const char *} is cast
763: to an ordinary @code{char *}.
764:
765: @item -Wcast-align
766: Warn whenever a pointer is cast such that the required alignment of the
767: target is increased. For example, warn if a @code{char *} is cast to
768: an @code{int *} on machines where integers can only be accessed at
769: two- or four-byte boundaries.
770:
771: @item -Wwrite-strings
772: Give string constants the type @code{const char[@var{length}]} so that
773: copying the address of one into a non-@code{const} @code{char *}
774: pointer will get a warning. These warnings will help you find at
775: compile time code that can try to write into a string constant, but
776: only if you have been very careful about using @code{const} in
777: declarations and prototypes. Otherwise, it will just be a nuisance;
778: this is why we did not make @samp{-Wall} request these warnings.
779:
780: @item -Wconversion
781: Warn if a prototype causes a type conversion that is different from what
782: would happen to the same argument in the absence of a prototype. This
783: includes conversions of fixed point to floating and vice versa, and
784: conversions changing the width or signedness of a fixed point argument
785: except when the same as the default promotion.
786:
787: @item -Waggregate-return
788: Warn if any functions that return structures or unions are defined or
789: called. (In languages where you can return an array, this also elicits
790: a warning.)
791:
792: @item -Wstrict-prototypes
793: Warn if a function is declared or defined without specifying the
794: argument types. (An old-style function definition is permitted without
795: a warning if preceded by a declaration which specifies the argument
796: types.)
797:
798: @item -Wmissing-prototypes
799: Warn if a global function is defined without a previous prototype
800: declaration. This warning is issued even if the definition itself
801: provides a prototype. The aim is to detect global functions that fail
802: to be declared in header files.
803:
804: @item -Wredundant-decls
805: Warn if anything is declared more than once in the same scope, even in
806: cases where multiple declaration is valid and changes nothing.
807:
808: @item -Wnested-externs
809: Warn if an @code{extern} declaration is encountered within an function.
810:
1.1.1.2 root 811: @item -Winline
812: Warn if a function can not be inlined, and either it was declared as inline,
813: or else the @samp{-finline-functions} option was given.
1.1 root 814:
815: @item -Werror
816: Make all warnings into errors.
817: @end table
818:
819: @node Debugging Options, Optimize Options, Warning Options, Invoking GCC
820: @section Options for Debugging Your Program or GNU CC
821: @cindex options, debugging
822: @cindex debugging information options
823:
824: GNU CC has various special options that are used for debugging
825: either your program or GCC:
826:
827: @table @code
828: @item -g
829: Produce debugging information in the operating system's native format
1.1.1.2 root 830: (stabs, COFF, XCOFF, or DWARF). GDB can work with this debugging
831: information.
1.1 root 832:
833: On most systems that use stabs format, @samp{-g} enables use of extra
834: debugging information that only GDB can use; this extra information
835: makes debugging work better in GDB but will probably make DBX crash or
836: refuse to read the program. If you want to control for certain whether
837: to generate the extra information, use @samp{-gstabs+} or @samp{-gstabs}
838: (see below).
839:
840: Unlike most other C compilers, GNU CC allows you to use @samp{-g} with
841: @samp{-O}. The shortcuts taken by optimized code may occasionally
842: produce surprising results: some variables you declared may not exist
843: at all; flow of control may briefly move where you did not expect it;
844: some statements may not be executed because they compute constant
845: results or their values were already at hand; some statements may
846: execute in different places because they were moved out of loops.
847:
848: Nevertheless it proves possible to debug optimized output. This makes
849: it reasonable to use the optimizer for programs that might have bugs.
850:
851: The following options are useful when GNU CC is generated with the
852: capability for more than one debugging format.
853:
854: @item -ggdb
855: Produce debugging information in the native format (if that is supported),
856: including GDB extensions if at all possible.
857:
858: @item -gstabs
859: Produce debugging information in stabs format (if that is supported),
860: without GDB extensions. This is the format used by DBX on most BSD
861: systems.
862:
863: @item -gstabs+
864: Produce debugging information in stabs format (if that is supported),
865: using GDB extensions. The use of these extensions is likely to make DBX
866: crash or refuse to read the program.
867:
868: @item -gcoff
869: Produce debugging information in COFF format (if that is supported).
870: This is the format used by SDB on COFF systems.
871:
1.1.1.2 root 872: @item -gxcoff
873: Produce debugging information in XCOFF format (if that is supported).
874: This is the format used on IBM RS/6000 systems.
875:
1.1 root 876: @item -gdwarf
877: Produce debugging information in DWARF format (if that is supported).
878: This is the format used by SDB on systems that use DWARF.
879:
880: @item -g@var{level}
881: @itemx -ggdb@var{level}
882: @itemx -gstabs@var{level}
883: @itemx -gcoff@var{level}
1.1.1.2 root 884: @itemx -gxcoff@var{level}
1.1 root 885: @itemx -gdwarf@var{level}
886: Request debugging information and also use @var{level} to specify how
887: much information. The default level is 2.
888:
889: Level 1 produces minimal information, enough for making backtraces in
890: parts of the program that you don't plan to debug. This includes
891: descriptions of functions and external variables, but no information
892: about local variables and no line numbers.
893:
894: Level 3 includes extra information, such as all the macro definitions
895: present in the program. Some debuggers support macro expansion when
896: you use @samp{-g3}.
897:
898: @cindex @code{prof}
899: @item -p
900: Generate extra code to write profile information suitable for the
901: analysis program @code{prof}.
902: @c ??? looks like -p and -pg are now equivalent. Are they? 11dec91
903:
904: @cindex @code{gprof}
905: @item -pg
906: Generate extra code to write profile information suitable for the
907: analysis program @code{gprof}.
908:
909: @cindex @code{tcov}
910: @item -a
911: Generate extra code to write profile information for basic blocks,
912: which will record the number of times each basic block is executed.
913: This data could be analyzed by a program like @code{tcov}. Note,
914: however, that the format of the data is not what @code{tcov} expects.
915: Eventually GNU @code{gprof} should be extended to process this data.
916:
917: @item -d@var{letters}
918: Says to make debugging dumps during compilation at times specified by
919: @var{letters}. This is used for debugging the compiler. The file names
920: for most of the dumps are made by appending a word to the source file
921: name (e.g. @file{foo.c.rtl} or @file{foo.c.jump}). Here are the
922: possible letters for use in @var{letters}, and their meanings:
923:
924: @table @samp
925: @item M
926: Dump all macro definitions, at the end of preprocessing, and write no
927: output.
928: @item N
929: Dump all macro names, at the end of preprocessing.
930: @item D
931: Dump all macro definitions, at the end of preprocessing, in addition to
932: normal output.
933: @item y
934: Dump debugging information during parsing, to standard error.
935: @item r
936: Dump after RTL generation, to @file{@var{file}.rtl}.
937: @item x
938: Just generate RTL for a function instead of compiling it. Usually used
939: with @samp{r}.
940: @item j
941: Dump after first jump optimization, to @file{@var{file}.jump}.
942: @item s
943: Dump after CSE (including the jump optimization that sometimes
944: follows CSE), to @file{@var{file}.cse}.
945: @item L
946: Dump after loop optimization, to @file{@var{file}.loop}.
947: @item t
948: Dump after the second CSE pass (including the jump optimization that
949: sometimes follows CSE), to @file{@var{file}.cse2}.
950: @item f
951: Dump after flow analysis, to @file{@var{file}.flow}.
952: @item c
953: Dump after instruction combination, to @file{@var{file}.combine}.
954: @item S
955: Dump after the first instruction scheduling pass, to
956: @file{@var{file}.sched}.
957: @item l
958: Dump after local register allocation, to @file{@var{file}.lreg}.
959: @item g
960: Dump after global register allocation, to @file{@var{file}.greg}.
961: @item R
962: Dump after the second instruction scheduling pass, to
963: @file{@var{file}.sched2}.
964: @item J
965: Dump after last jump optimization, to @file{@var{file}.jump2}.
966: @item d
967: Dump after delayed branch scheduling, to @file{@var{file}.dbr}.
968: @item k
969: Dump after conversion from registers to stack, to @file{@var{file}.stack}.
970: @item a
971: Produce all the dumps listed above.
972: @item m
973: Print statistics on memory usage, at the end of the run, to
974: standard error.
975: @item p
976: Annotate the assembler output with a comment indicating which
977: pattern and alternative was used.
978: @end table
979:
980: @item -fpretend-float
981: When running a cross-compiler, pretend that the target machine uses the
982: same floating point format as the host machine. This causes incorrect
983: output of the actual floating constants, but the actual instruction
984: sequence will probably be the same as GNU CC would make when running on
985: the target machine.
986:
987: @item -save-temps
988: Store the usual ``temporary'' intermediate files permanently; place them
989: in the current directory and name them based on the source file. Thus,
990: compiling @file{foo.c} with @samp{-c -save-temps} would produce files
1.1.1.2 root 991: @file{foo.i} and @file{foo.s}, as well as @file{foo.o}.
1.1 root 992: @end table
993:
994: @node Optimize Options, Preprocessor Options, Debugging Options, Invoking GCC
995: @section Options That Control Optimization
996: @cindex optimize options
997: @cindex options, optimization
998:
999: These options control various sorts of optimizations:
1000:
1001: @table @code
1002: @item -O
1003: Optimize. Optimizing compilation takes somewhat more time, and a lot
1004: more memory for a large function.
1005:
1006: Without @samp{-O}, the compiler's goal is to reduce the cost of
1007: compilation and to make debugging produce the expected results.
1008: Statements are independent: if you stop the program with a breakpoint
1009: between statements, you can then assign a new value to any variable or
1010: change the program counter to any other statement in the function and
1011: get exactly the results you would expect from the source code.
1012:
1013: Without @samp{-O}, only variables declared @code{register} are
1014: allocated in registers. The resulting compiled code is a little worse
1015: than produced by PCC without @samp{-O}.
1016:
1017: With @samp{-O}, the compiler tries to reduce code size and execution
1018: time.
1019:
1020: When @samp{-O} is specified, @samp{-fthread-jumps} and
1021: @samp{-fdelayed-branch} are turned on. On some machines other
1022: flags may also be turned on.
1023:
1024: @item -O2
1.1.1.2 root 1025: Optimize even more. Nearly all supported optimizations that do not
1026: involve a space-speed tradeoff are performed. As compared to @samp{-O},
1027: this option increases both compilation time and the performance of the
1.1 root 1028: generated code.
1029:
1.1.1.2 root 1030: @samp{-O2} turns on all @samp{-f@var{flag}} options that enable more
1031: optimization, except for @samp{-funroll-loops},
1032: @samp{-funroll-all-loops} and @samp{-fomit-frame-pointer}.
1.1 root 1033: @end table
1034:
1035: Options of the form @samp{-f@var{flag}} specify machine-independent
1036: flags. Most flags have both positive and negative forms; the negative
1037: form of @samp{-ffoo} would be @samp{-fno-foo}. In the table below,
1038: only one of the forms is listed---the one which is not the default.
1039: You can figure out the other form by either removing @samp{no-} or
1040: adding it.
1041:
1042: @table @code
1043: @item -ffloat-store
1044: Do not store floating point variables in registers. This
1045: prevents undesirable excess precision on machines such as the
1046: 68000 where the floating registers (of the 68881) keep more
1047: precision than a @code{double} is supposed to have.
1048:
1049: For most programs, the excess precision does only good, but a few
1050: programs rely on the precise definition of IEEE floating point.
1051: Use @samp{-ffloat-store} for such programs.
1052:
1053: @item -fno-defer-pop
1054: Always pop the arguments to each function call as soon as that function
1055: returns. For machines which must pop arguments after a function call,
1056: the compiler normally lets arguments accumulate on the stack for several
1057: function calls and pops them all at once.
1058:
1059: @item -fforce-mem
1060: Force memory operands to be copied into registers before doing
1061: arithmetic on them. This may produce better code by making all
1062: memory references potential common subexpressions. When they are
1063: not common subexpressions, instruction combination should
1064: eliminate the separate register-load. I am interested in hearing
1065: about the difference this makes.
1066:
1067: @item -fforce-addr
1068: Force memory address constants to be copied into registers before
1069: doing arithmetic on them. This may produce better code just as
1070: @samp{-fforce-mem} may. I am interested in hearing about the
1071: difference this makes.
1072:
1073: @item -fomit-frame-pointer
1074: Don't keep the frame pointer in a register for functions that
1075: don't need one. This avoids the instructions to save, set up and
1076: restore frame pointers; it also makes an extra register available
1077: in many functions. @strong{It also makes debugging impossible on
1078: some machines.}
1079:
1080: @ifset INTERNALS
1081: On some machines, such as the Vax, this flag has no effect, because
1082: the standard calling sequence automatically handles the frame pointer
1083: and nothing is saved by pretending it doesn't exist. The
1084: machine-description macro @code{FRAME_POINTER_REQUIRED} controls
1085: whether a target machine supports this flag. @xref{Registers}.@refill
1086: @end ifset
1087: @ifclear INTERNALS
1088: On some machines, such as the Vax, this flag has no effect, because
1089: the standard calling sequence automatically handles the frame pointer
1090: and nothing is saved by pretending it doesn't exist. The
1091: machine-description macro @code{FRAME_POINTER_REQUIRED} controls
1092: whether a target machine supports this flag. @xref{Registers,,Register
1093: Usage, gcc.info, Using and Porting GCC}.@refill
1094: @end ifclear
1095:
1.1.1.3 ! root 1096: @item -fno-inline
! 1097: Don't pay attention to the @code{inline} keyword. Normally this option
! 1098: is used to keep the compiler from expanding any functions inline.
! 1099:
1.1 root 1100: @item -finline-functions
1101: Integrate all simple functions into their callers. The compiler
1102: heuristically decides which functions are simple enough to be worth
1103: integrating in this way.
1104:
1105: If all calls to a given function are integrated, and the function is
1106: declared @code{static}, then the function is normally not output as
1107: assembler code in its own right.
1108:
1109: @item -fkeep-inline-functions
1110: Even if all calls to a given function are integrated, and the function
1111: is declared @code{static}, nevertheless output a separate run-time
1112: callable version of the function.
1113:
1114: @item -fno-function-cse
1115: Do not put function addresses in registers; make each instruction that
1116: calls a constant function contain the function's address explicitly.
1117:
1118: This option results in less efficient code, but some strange hacks
1119: that alter the assembler output may be confused by the optimizations
1120: performed when this option is not used.
1.1.1.3 ! root 1121:
! 1122: @item -ffast-math
! 1123: This option allows GCC to violate some ANSI or IEEE rules/specifications
! 1124: in the interest of optimizing code for speed. For example, it allows
! 1125: the compiler to assume arguments to the @code{sqrt} function are
! 1126: non-negative numbers.
! 1127:
! 1128: This option should never be turned on by any @samp{-O} option since
! 1129: it can result in incorrect output for programs which depend on
! 1130: an exact implementation of IEEE or ANSI rules/specifications for
! 1131: math functions.
1.1 root 1132: @end table
1133:
1.1.1.3 ! root 1134:
! 1135:
1.1 root 1136: The following options control specific optimizations. The @samp{-O2}
1137: option turns on all of these optimizations except @samp{-funroll-loops}
1138: and @samp{-funroll-all-loops}. The @samp{-O} option usually turns on
1139: the @samp{-fthread-jumps} and @samp{-fdelayed-branch} options, but
1140: specific machines may change the default optimizations.
1141:
1142: You can use the following flags in the rare cases when ``fine-tuning''
1143: of optimizations to be performed is desired.
1144:
1145: @table @code
1146: @item -fstrength-reduce
1147: Perform the optimizations of loop strength reduction and
1148: elimination of iteration variables.
1149:
1150: @item -fthread-jumps
1151: Perform optimizations where we check to see if a jump branches to a
1152: location where another comparison subsumed by the first is found. If
1153: so, the first branch is redirected to either the destination of the
1154: second branch or a point immediately following it, depending on whether
1155: the condition is known to be true or false.
1156:
1157: @item -fcse-follow-jumps
1.1.1.3 ! root 1158: In common subexpression elimination, scan through jump instructions
! 1159: when the target of the jump is not reached by any other path. For
! 1160: example, when CSE encounters an @code{if} statement with an
! 1161: @code{else} clause, CSE will follow the jump when the condition
! 1162: tested is false.
! 1163:
! 1164: @item -fcse-skip-blocks
! 1165: This is similar to @samp{-fcse-follow-jumps}, but causes CSE to
! 1166: follow jumps which conditionally skip over blocks. When CSE
! 1167: encounters a simple @code{if} statement with no else clause,
! 1168: @samp{-fcse-skip-blocks} causes CSE to follow the jump around the
! 1169: body of the @code{if}.
1.1 root 1170:
1171: @item -frerun-cse-after-loop
1172: Re-run common subexpression elimination after loop optimizations has been
1173: performed.
1174:
1175: @item -fexpensive-optimizations
1176: Perform a number of minor optimizations that are relatively expensive.
1177:
1178: @item -fdelayed-branch
1179: If supported for the target machine, attempt to reorder instructions
1180: to exploit instruction slots available after delayed branch
1181: instructions.
1182:
1183: @item -fschedule-insns
1184: If supported for the target machine, attempt to reorder instructions to
1185: eliminate execution stalls due to required data being unavailable. This
1186: helps machines that have slow floating point or memory load instructions
1187: by allowing other instructions to be issued until the result of the load
1188: or floating point instruction is required.
1189:
1190: @item -fschedule-insns2
1191: Similar to @samp{-fschedule-insns}, but requests an additional pass of
1192: instruction scheduling after register allocation has been done. This is
1193: especially useful on machines with a relatively small number of
1194: registers and where memory load instructions take more than one cycle.
1195:
1.1.1.3 ! root 1196: @item -fcaller-saves
! 1197: Enable values to be allocated in registers that will be clobbered by
! 1198: function calls, by emitting extra instructions to save and restore the
! 1199: registers around such calls. Such allocation is done only when it
! 1200: seems to result in better code than would otherwise be produced.
! 1201:
! 1202: This option is enabled by default on certain machines, usually those
! 1203: which have no call-preserved registers to use instead.
! 1204:
1.1 root 1205: @item -funroll-loops
1206: Perform the optimization of loop unrolling. This is only done for loops
1207: whose number of iterations can be determined at compile time or run time.
1208: @samp{-funroll-loop} implies @samp{-fstrength-reduce} and
1209: @samp{-frerun-cse-after-loop}.
1210:
1211: @item -funroll-all-loops
1212: Perform the optimization of loop unrolling. This is done for all loops
1213: and usually makes programs run more slowly. @samp{-funroll-all-loops}
1214: implies @samp{-fstrength-reduce} and @samp{-frerun-cse-after-loop}.
1215:
1216: @item -fno-peephole
1217: Disable any machine-specific peephole optimizations.
1218: @end table
1219:
1220: @node Preprocessor Options, Link Options, Optimize Options, Invoking GCC
1221: @section Options Controlling the Preprocessor
1222: @cindex preprocessor options
1223: @cindex options, preprocessor
1224:
1225: These options control the C preprocessor, which is run on each C source
1226: file before actual compilation.
1227:
1228: If you use the @samp{-E} option, nothing is done except preprocessing.
1229: Some of these options make sense only together with @samp{-E} because
1230: they cause the preprocessor output to be unsuitable for actual
1231: compilation.
1232:
1233: @table @code
1234: @item -include @var{file}
1235: Process @var{file} as input before processing the regular input file.
1236: In effect, the contents of @var{file} are compiled first. Any @samp{-D}
1237: and @samp{-U} options on the command line are always processed before
1238: @samp{-include @var{file}}, regardless of the order in which they are
1239: written. All the @samp{-include} and @samp{-imacros} options are
1240: processed in the order in which they are written.
1241:
1242: @item -imacros @var{file}
1243: Process @var{file} as input, discarding the resulting output, before
1244: processing the regular input file. Because the output generated from
1245: @var{file} is discarded, the only effect of @samp{-imacros @var{file}}
1246: is to make the macros defined in @var{file} available for use in the
1247: main input.
1248:
1249: Any @samp{-D} and @samp{-U} options on the command line are always
1250: processed before @samp{-imacros @var{file}}, regardless of the order in
1251: which they are written. All the @samp{-include} and @samp{-imacros}
1252: options are processed in the order in which they are written.
1253:
1254: @item -nostdinc
1255: Do not search the standard system directories for header files. Only
1256: the directories you have specified with @samp{-I} options (and the
1257: current directory, if appropriate) are searched. @xref{Directory
1258: Options}, for information on @samp{-I}.
1259:
1260: By using both @samp{-nostdinc} and @samp{-I-}, you can limit the include-file
1261: search path to only those directories you specify explicitly.
1262:
1.1.1.3 ! root 1263: @item -nostdinc++
! 1264: Do not search for header files in the C++-specific standard directories,
! 1265: but do still search the other standard directories.
! 1266: (This option is used when building @samp{libg++}.)
! 1267:
1.1 root 1268: @item -undef
1269: Do not predefine any nonstandard macros. (Including architecture flags).
1270:
1271: @item -E
1272: Run only the C preprocessor. Preprocess all the C source files
1273: specified and output the results to standard output or to the
1274: specified output file.
1275:
1276: @item -C
1277: Tell the preprocessor not to discard comments. Used with the
1278: @samp{-E} option.
1279:
1280: @item -P
1281: Tell the preprocessor not to generate @samp{#line} commands.
1282: Used with the @samp{-E} option.
1283:
1284: @cindex make
1285: @cindex dependencies, make
1286: @item -M
1287: Tell the preprocessor to output a rule suitable for @code{make}
1288: describing the dependencies of each object file. For each source file,
1289: the preprocessor outputs one @code{make}-rule whose target is the object
1290: file name for that source file and whose dependencies are all the files
1291: @samp{#include}d in it. This rule may be a single line or may be
1292: continued with @samp{\}-newline if it is long. The list of rules is
1293: printed on standard output instead of the preprocessed C program.
1294:
1295: @samp{-M} implies @samp{-E}.
1296:
1297: Another way to specify output of a @code{make} rule is by setting
1298: the environment variable @code{DEPENDENCIES_OUTPUT} (@pxref{Environment
1299: Variables}).
1300:
1301: @item -MM
1302: Like @samp{-M} but the output mentions only the user header files
1303: included with @samp{#include "@var{file}"}. System header files
1304: included with @samp{#include <@var{file}>} are omitted.
1305:
1306: @item -MD
1307: Like @samp{-M} but the dependency information is written to files with
1308: names made by replacing @samp{.c} with @samp{.d} at the end of the
1309: input file names. This is in addition to compiling the file as
1310: specified---@samp{-MD} does not inhibit ordinary compilation the way
1311: @samp{-M} does.
1312:
1313: The Mach utility @samp{md} can be used to merge the @samp{.d} files
1314: into a single dependency file suitable for using with the @samp{make}
1315: command.
1316:
1317: @item -MMD
1318: Like @samp{-MD} except mention only user header files, not system
1319: header files.
1320:
1321: @item -H
1322: Print the name of each header file used, in addition to other normal
1323: activities.
1324:
1325: @item -D@var{macro}
1326: Define macro @var{macro} with the string @samp{1} as its definition.
1327:
1328: @item -D@var{macro}=@var{defn}
1329: Define macro @var{macro} as @var{defn}. All instances of @samp{-D} on
1330: the command line are processed before any @samp{-U} options.
1331:
1332: @item -U@var{macro}
1333: Undefine macro @var{macro}. @samp{-U} options are evaluated after all
1334: @samp{-D} options, but before any @samp{-include} and @samp{-imacros}
1335: options.
1336:
1337: @item -dM
1338: Tell the preprocessor to output only a list of the macro definitions
1339: that are in effect at the end of preprocessing. Used with the @samp{-E}
1340: option.
1341:
1342: @item -dD
1343: Tell the preprocessing to pass all macro definitions into the output, in
1344: their proper sequence in the rest of the output.
1345:
1346: @item -dN
1347: Like @samp{-dD} except that the macro arguments and contents are omitted.
1348: Only @samp{#define @var{name}} is included in the output.
1349:
1350: @item -trigraphs
1351: Support ANSI C trigraphs. You don't want to know about this
1352: brain-damage. The @samp{-ansi} option also has this effect.
1353: @end table
1354:
1355: @node Link Options, Directory Options, Preprocessor Options, Invoking GCC
1356: @section Options for Linking
1357: @cindex link options
1358: @cindex options, linking
1359:
1360: These options come into play when the compiler links object files into
1361: an executable output file. They are meaningless if the compiler is
1362: not doing a link step.
1363:
1364: @table @code
1365: @cindex file names
1366: @item @var{object-file-name}
1367: A file name that does not end in a special recognized suffix is
1368: considered to name an object file or library. (Object files are
1369: distinguished from libraries by the linker according to the file
1370: contents.) If linking is done, these object files are used as input
1371: to the linker.
1372:
1373: @item -c
1374: @itemx -S
1375: @itemx -E
1376: If any of these options is used, then the linker is not run, and
1377: object file names should not be used as arguments. @xref{Overall
1378: Options}.
1379:
1380: @cindex Libraries
1381: @item -l@var{library}
1382: Search the library named @var{library} when linking.
1383:
1384: It makes a difference where in the command you write this option; the
1385: linker searches processes libraries and object files in the order they
1.1.1.2 root 1386: are specified. Thus, @samp{foo.o -lz bar.o} searches library @samp{z}
1.1 root 1387: after file @file{foo.o} but before @file{bar.o}. If @file{bar.o} refers
1388: to functions in @samp{z}, those functions may not be loaded.
1389:
1390: The linker searches a standard list of directories for the library,
1391: which is actually a file named @file{lib@var{library}.a}. The linker
1392: then uses this file as if it had been specified precisely by name.
1393:
1394: The directories searched include several standard system directories
1395: plus any that you specify with @samp{-L}.
1396:
1397: Normally the files found this way are library files---archive files
1398: whose members are object files. The linker handles an archive file by
1399: scanning through it for members which define symbols that have so far
1400: been referenced but not defined. But if the file that is found is an
1401: ordinary object file, it is linked in the usual fashion. The only
1402: difference between using an @samp{-l} option and specifying a file name
1403: is that @samp{-l} surrounds @var{library} with @samp{lib} and @samp{.a}
1404: and searches several directories.
1405:
1406: @item -nostdlib
1407: Don't use the standard system libraries and startup files when linking.
1408: Only the files you specify will be passed to the linker.
1409:
1410: @item -static
1411: On systems that support dynamic linking, this prevents linking with the shared
1412: libraries. On other systems, this
1413: option has no effect.
1414:
1415: @item -shared
1416: Produce a shared object which can then be linked with other objects to
1417: form an executable. Only a few systems support this option.
1418:
1419: @item -symbolic
1420: Bind references to global symbols when building a shared object. Warn
1421: about any unresolved references (unless overridden by the link editor
1422: option @samp{-Xlinker -z -Xlinker defs}). Only a few systems support
1423: this option.
1424:
1425: @item -Xlinker @var{option}
1426: Pass @var{option} as an option to the linker. You can use this to
1427: supply system-specific linker options which GNU CC does not know how to
1428: recognize.
1429:
1430: If you want to pass an option that takes an argument, you must use
1431: @samp{-Xlinker} twice, once for the option and once for the argument.
1432: For example, to pass @samp{-assert definitions}, you must write
1433: @samp{-Xlinker -assert -Xlinker definitions}. It does not work to write
1434: @samp{-Xlinker "-assert definitions"}, because this passes the entire
1435: string as a single argument, which is not what the linker expects.
1436: @end table
1437:
1438: @node Directory Options, Target Options, Link Options, Invoking GCC
1439: @section Options for Directory Search
1440: @cindex directory options
1441: @cindex options, directory search
1442: @cindex search path
1443:
1444: These options specify directories to search for header files, for
1445: libraries and for parts of the compiler:
1446:
1447: @table @code
1448: @item -I@var{dir}
1449: Append directory @var{dir} to the list of directories searched for
1450: include files.
1451:
1452: @item -I-
1453: Any directories you specify with @samp{-I} options before the @samp{-I-}
1454: option are searched only for the case of @samp{#include "@var{file}"};
1455: they are not searched for @samp{#include <@var{file}>}.
1456:
1457: If additional directories are specified with @samp{-I} options after
1458: the @samp{-I-}, these directories are searched for all @samp{#include}
1459: directives. (Ordinarily @emph{all} @samp{-I} directories are used
1460: this way.)
1461:
1462: In addition, the @samp{-I-} option inhibits the use of the current
1463: directory (where the current input file came from) as the first search
1464: directory for @samp{#include "@var{file}"}. There is no way to
1465: override this effect of @samp{-I-}. With @samp{-I.} you can specify
1466: searching the directory which was current when the compiler was
1467: invoked. That is not exactly the same as what the preprocessor does
1468: by default, but it is often satisfactory.
1469:
1470: @samp{-I-} does not inhibit the use of the standard system directories
1471: for header files. Thus, @samp{-I-} and @samp{-nostdinc} are
1472: independent.
1473:
1474: @item -L@var{dir}
1475: Add directory @var{dir} to the list of directories to be searched
1476: for @samp{-l}.
1477:
1478: @item -B@var{prefix}
1479: This option specifies where to find the executables, libraries and
1480: data files of the compiler itself.
1481:
1482: The compiler driver program runs one or more of the subprograms
1483: @file{cpp}, @file{cc1}, @file{as} and @file{ld}. It tries
1484: @var{prefix} as a prefix for each program it tries to run, both with and
1485: without @samp{@var{machine}/@var{version}/} (@pxref{Target Options}).
1486:
1487: For each subprogram to be run, the compiler driver first tries the
1488: @samp{-B} prefix, if any. If that name is not found, or if @samp{-B}
1489: was not specified, the driver tries two standard prefixes, which are
1.1.1.2 root 1490: @file{/usr/lib/gcc/} and @file{/usr/local/lib/gcc-lib/}. If neither of
1.1 root 1491: those results in a file name that is found, the unmodified program
1492: name is searched for using the directories specified in your
1493: @samp{PATH} environment variable.
1494:
1495: @samp{-B} prefixes that effectively specify directory names also apply
1496: to libraries in the linker, because the compiler translates these
1497: options into @samp{-L} options for the linker.
1498:
1499: The run-time support file @file{libgcc.a} can also be searched for using
1500: the @samp{-B} prefix, if needed. If it is not found there, the two
1501: standard prefixes above are tried, and that is all. The file is left
1502: out of the link if it is not found by those means.
1503:
1504: Another way to specify a prefix much like the @samp{-B} prefix is to use
1505: the environment variable @code{GCC_EXEC_PREFIX}. @xref{Environment
1506: Variables}.
1507: @end table
1508:
1509: @node Target Options, Submodel Options, Directory Options, Invoking GCC
1510: @section Specifying Target Machine and Compiler Version
1511: @cindex target options
1512: @cindex cross compiling
1513: @cindex specifying machine version
1514: @cindex specifying compiler version and target machine
1515: @cindex compiler version, specifying
1516: @cindex target machine, specifying
1517:
1518: By default, GNU CC compiles code for the same type of machine that you
1519: are using. However, it can also be installed as a cross-compiler, to
1520: compile for some other type of machine. In fact, several different
1521: configurations of GNU CC, for different target machines, can be
1522: installed side by side. Then you specify which one to use with the
1523: @samp{-b} option.
1524:
1525: In addition, older and newer versions of GNU CC can be installed side
1526: by side. One of them (probably the newest) will be the default, but
1527: you may sometimes wish to use another.
1528:
1529: @table @code
1530: @item -b @var{machine}
1531: The argument @var{machine} specifies the target machine for compilation.
1532: This is useful when you have installed GNU CC as a cross-compiler.
1533:
1534: The value to use for @var{machine} is the same as was specified as the
1535: machine type when configuring GNU CC as a cross-compiler. For
1536: example, if a cross-compiler was configured with @samp{configure
1537: i386v}, meaning to compile for an 80386 running System V, then you
1538: would specify @samp{-b i386v} to run that cross compiler.
1539:
1540: When you do not specify @samp{-b}, it normally means to compile for
1541: the same type of machine that you are using.
1542:
1543: @item -V @var{version}
1544: The argument @var{version} specifies which version of GNU CC to run.
1545: This is useful when multiple versions are installed. For example,
1546: @var{version} might be @samp{2.0}, meaning to run GNU CC version 2.0.
1547:
1548: The default version, when you do not specify @samp{-V}, is controlled
1549: by the way GNU CC is installed. Normally, it will be a version that
1550: is recommended for general use.
1551: @end table
1552:
1553: The @samp{-b} and @samp{-V} options actually work by controlling part of
1554: the file name used for the executable files and libraries used for
1555: compilation. A given version of GNU CC, for a given target machine, is
1.1.1.2 root 1556: normally kept in the directory @file{/usr/local/lib/gcc-lib/@var{machine}/@var{version}}.@refill
1.1 root 1557:
1558: It follows that sites can customize the effect of @samp{-b} or @samp{-V}
1559: either by changing the names of these directories or adding
1560: alternate names (or symbolic links). Thus, if
1.1.1.2 root 1561: @file{/usr/local/lib/gcc-lib/80386} is a link to
1562: @file{/usr/local/lib/gcc-lib/i386v}, then @samp{-b 80386} will be an alias
1.1 root 1563: for @samp{-b i386v}.@refill
1564:
1565: In one respect, the @samp{-b} or @samp{-V} do not completely change
1566: to a different compiler: the top-level driver program @code{gcc}
1567: that you originally invoked continues to run and invoke the other
1568: executables (preprocessor, compiler per se, assembler and linker)
1569: that do the real work. However, since no real work is done in the
1570: driver program, it usually does not matter that the driver program
1571: in use is not the one for the specified target and version.
1572:
1573: The only way that the driver program depends on the target machine is
1574: in the parsing and handling of special machine-specific options.
1575: However, this is controlled by a file which is found, along with the
1576: other executables, in the directory for the specified version and
1577: target machine. As a result, a single installed driver program adapts
1578: to any specified target machine and compiler version.
1579:
1580: The driver program executable does control one significant thing,
1581: however: the default version and target machine. Therefore, you can
1582: install different instances of the driver program, compiled for
1583: different targets or versions, under different names.
1584:
1585: For example, if the driver for version 2.0 is installed as @code{ogcc}
1586: and that for version 2.1 is installed as @code{gcc}, then the command
1587: @code{gcc} will use version 2.1 by default, while @code{ogcc} will use
1588: 2.0 by default. However, you can choose either version with either
1589: command with the @samp{-V} option.
1590:
1591: @node Submodel Options, Code Gen Options, Target Options, Invoking GCC
1592: @section Specifying Hardware Models and Configurations
1593: @cindex submodel options
1594: @cindex specifying hardware config
1595: @cindex hardware models and configurations, specifying
1596: @cindex machine dependent options
1597:
1598: Earlier we discussed the standard option @samp{-b} which chooses among
1599: different installed compilers for completely different target
1600: machines, such as Vax vs. 68000 vs. 80386.
1601:
1602: In addition, each of these target machine types can have its own
1603: special options, starting with @samp{-m}, to choose among various
1604: hardware models or configurations---for example, 68010 vs 68020,
1605: floating coprocessor or none. A single installed version of the
1606: compiler can compile for any model or configuration, according to the
1607: options specified.
1608:
1609: @ifset INTERNALS
1610: These options are defined by the macro @code{TARGET_SWITCHES} in the
1611: machine description. The default for the options is also defined by
1612: that macro, which enables you to change the defaults.
1613: @end ifset
1614:
1615: @menu
1616: * M680x0 Options::
1617: * VAX Options::
1618: * SPARC Options::
1619: * Convex Options::
1620: * AMD29K Options::
1621: * M88K Options::
1622: * RS/6000 Options::
1623: * RT Options::
1624: * MIPS Options::
1.1.1.2 root 1625: * i386 Options::
1.1 root 1626: @end menu
1627:
1628: @node M680x0 Options, Vax Options, Submodel Options, Submodel Options
1629: @subsection M680x0 Options
1630: @cindex M680x0 options
1631:
1632: These are the @samp{-m} options defined for the 68000 series. The default
1633: values for these options depends on which style of 68000 was selected when
1634: the compiler was configured; the defaults for the most common choices are
1635: given below.
1636:
1637: @table @code
1638: @item -m68020
1639: @itemx -mc68020
1640: Generate output for a 68020 (rather than a 68000). This is the
1641: default when the compiler is configured for 68020-based systems.
1642:
1643: @item -m68000
1644: @itemx -mc68000
1645: Generate output for a 68000 (rather than a 68020). This is the default
1646: when the compiler is configured for a 68000-based systems.
1647:
1648: @item -m68881
1649: Generate output containing 68881 instructions for floating point.
1650: This is the default for most 68020 systems unless @samp{-nfp} was
1651: specified when the compiler was configured.
1652:
1653: @item -mfpa
1654: Generate output containing Sun FPA instructions for floating point.
1655:
1656: @item -msoft-float
1657: Generate output containing library calls for floating point.
1658: @strong{Warning:} the requisite libraries are not part of GNU CC.
1659: Normally the facilities of the machine's usual C compiler are used, but
1660: this can't be done directly in cross-compilation. You must make your
1661: own arrangements to provide suitable library functions for
1662: cross-compilation.
1663:
1664: @item -mshort
1665: Consider type @code{int} to be 16 bits wide, like @code{short int}.
1666:
1667: @item -mnobitfield
1668: Do not use the bit-field instructions. @samp{-m68000} implies
1669: @samp{-mnobitfield}.
1670:
1671: @item -mbitfield
1672: Do use the bit-field instructions. @samp{-m68020} implies
1673: @samp{-mbitfield}. This is the default if you use the unmodified
1674: sources configured for a 68020.
1675:
1676: @item -mrtd
1677: Use a different function-calling convention, in which functions
1678: that take a fixed number of arguments return with the @code{rtd}
1679: instruction, which pops their arguments while returning. This
1680: saves one instruction in the caller since there is no need to pop
1681: the arguments there.
1682:
1683: This calling convention is incompatible with the one normally
1684: used on Unix, so you cannot use it if you need to call libraries
1685: compiled with the Unix compiler.
1686:
1687: Also, you must provide function prototypes for all functions that
1688: take variable numbers of arguments (including @code{printf});
1689: otherwise incorrect code will be generated for calls to those
1690: functions.
1691:
1692: In addition, seriously incorrect code will result if you call a
1693: function with too many arguments. (Normally, extra arguments are
1694: harmlessly ignored.)
1695:
1696: The @code{rtd} instruction is supported by the 68010 and 68020
1697: processors, but not by the 68000.
1698: @end table
1699:
1700: @node VAX Options, Sparc Options, M680x0 Options, Submodel Options
1701: @subsection VAX Options
1702: @cindex VAX options
1703:
1704: These @samp{-m} options are defined for the Vax:
1705:
1706: @table @code
1707: @item -munix
1708: Do not output certain jump instructions (@code{aobleq} and so on)
1709: that the Unix assembler for the Vax cannot handle across long
1710: ranges.
1711:
1712: @item -mgnu
1713: Do output those jump instructions, on the assumption that you
1714: will assemble with the GNU assembler.
1715:
1716: @item -mg
1717: Output code for g-format floating point numbers instead of d-format.
1718: @end table
1719:
1720: @node Sparc Options, Convex Options, Vax Options, Submodel Options
1721: @subsection SPARC Options
1722: @cindex SPARC options
1723:
1724: These @samp{-m} switches are supported on the Sparc:
1725:
1726: @table @code
1727: @ignore
1728: @item -mfpu
1729: Generate output containing floating point instructions. This is the
1730: default if you use the unmodified sources.
1731:
1732: @item -msoft-float
1733: Generate output containing library calls for floating point.
1734: @strong{Warning:} the requisite libraries are not part of GNU CC.
1735: Normally the facilities of the machine's usual C compiler are used, but
1736: this can't be done directly in cross-compilation. You must make your
1737: own arrangements to provide suitable library functions for
1738: cross-compilation.
1739: @end ignore
1.1.1.2 root 1740:
1741: @item -mforce-align
1742: Make sure all objects of type @code{double} are 8-byte aligned in memory
1743: and use double-word instructions to reference them.
1744:
1.1 root 1745: @item -mno-epilogue
1746: Generate separate return instructions for @code{return} statements.
1747: This has both advantages and disadvantages; I don't recall what they
1748: are.
1749: @end table
1750:
1751: @node Convex Options, AMD29K Options, SPARC Options, Submodel Options
1752: @subsection Convex Options
1753: @cindex Convex options
1754:
1755: These @samp{-m} options are defined for the Convex:
1756:
1757: @table @code
1758: @item -mc1
1759: Generate output for a C1. This is the default when the compiler is
1760: configured for a C1.
1761:
1762: @item -mc2
1763: Generate output for a C2. This is the default when the compiler is
1764: configured for a C2.
1765:
1766: @item -margcount
1767: Generate code which puts an argument count in the word preceding each
1768: argument list. Some nonportable Convex and Vax programs need this word.
1769: (Debuggers don't, except for functions with variable-length argument
1770: lists; this info is in the symbol table.)
1771:
1772: @item -mnoargcount
1773: Omit the argument count word. This is the default if you use the
1774: unmodified sources.
1775: @end table
1776:
1777: @node AMD29K Options, M88K Options, Convex Options, Submodel Options
1778: @subsection AMD29K Options
1779: @cindex AMD29K options
1780:
1781: These @samp{-m} options are defined for the AMD Am29000:
1782:
1783: @table @code
1784: @item -mdw
1785: Generate code that assumes the @code{DW} bit is set, i.e., that byte and
1786: halfword operations are directly supported by the hardware. This is the
1787: default.
1788:
1789: @item -mnodw
1790: Generate code that assumes the @code{DW} bit is not set.
1791:
1792: @item -mbw
1793: Generate code that assumes the system supports byte and halfword write
1794: operations. This is the default.
1795:
1796: @item -mnbw
1797: Generate code that assumes the systems does not support byte and
1798: halfword write operations. @samp{-mnbw} implies @samp{-mnodw}.
1799:
1800: @item -msmall
1801: Use a small memory model that assumes that all function addresses are
1802: either within a single 256 KB segment or at an absolute address of less
1803: than 256K. This allows the @code{call} instruction to be used instead
1804: of a @code{const}, @code{consth}, @code{calli} sequence.
1805:
1806: @item -mlarge
1807: Do not assume that the @code{call} instruction can be used; this is the
1808: default.
1809:
1810: @item -m29050
1811: Generate code for the Am29050.
1812:
1813: @item -m29000
1814: Generate code for the Am29000. This is the default.
1815:
1816: @item -mkernel-registers
1817: Generate references to registers @code{gr64-gr95} instead of
1818: @code{gr96-gr127}. This option can be used when compiling kernel code
1819: that wants a set of global registers disjoint from that used by
1820: user-mode code.
1821:
1822: Note that when this option is used, register names in @samp{-f} flags
1823: must use the normal, user-mode, names.
1824:
1825: @item -muser-registers
1826: Use the normal set of global registers, @code{gr96-gr127}. This is the
1827: default.
1828:
1829: @item -mstack-check
1830: Insert a call to @code{__msp_check} after each stack adjustment. This
1831: is often used for kernel code.
1832: @end table
1833:
1834: @node M88K Options, RS/6000 Options, AMD29K Options, Submodel Options
1835: @subsection M88K Options
1836: @cindex M88k options
1837:
1838: These @samp{-m} options are defined for Motorola 88K architectures:
1839:
1840: @table @code
1841: @item -m88000
1842: @kindex -m88000
1843: Generate code that works well on both the m88100 and the
1844: m88110.
1845:
1846: @item -m88100
1847: @kindex -m88100
1848: Generate code tha
1849: Generate code that works best for the m88100, but that also
1850: runs on the m88110.
1851:
1852: @item -m88110
1853: @kindex -m88110
1854: Generate code that works best for the m88110, and may not run
1855: on the m88100.
1856:
1857: @item -midentify-revision
1858: @kindex -midentify-revision
1859: @kindex ident
1860: @cindex identifying source, compiler (88k)
1861: Include an @code{ident} directive in the assembler output recording the
1862: source file name, compiler name and version, timestamp, and compilation
1863: flags used.
1864:
1865: @item -mno-underscores
1866: @kindex -mno-underscores
1867: @cindex underscores, avoiding (88k)
1868: In assembler output, emit symbol names without adding an underscore
1869: character at the beginning of each name. The default is to use an
1870: underscore as prefix on each name.
1871:
1872: @item -mocs-debug-info
1873: @itemx -mno-ocs-debug-info
1874: @kindex -mocs-debug-info
1875: @kindex -mno-ocs-debug-info
1876: @cindex OCS (88k)
1877: @cindex debugging, 88k OCS
1878: Include (or omit) additional debugging information (about registers used
1879: in each stack frame) as specified in the 88open Object Compatibility
1880: Standard, ``OCS''. This extra information allows debugging of code that
1881: has had the frame pointer eliminated. The default for DG/UX, SVr4, and
1882: Delta 88 SVr3.2 is to include this information; other 88k configurations
1883: omit this information by default.
1884:
1885: @item -mocs-frame-position
1886: @kindex -mocs-frame-position
1887: @cindex register positions in frame (88k)
1888: When emitting COFF debugging information for automatic variables and
1889: parameters stored on the stack, use the offset from the canonical frame
1890: address, which is the stack pointer (register 31) on entry to the
1891: function. The DG/UX, SVr4, Delta88 SVr3.2, and BCS configurations use
1892: @samp{-mocs-frame-position}; other 88k configurations have the default
1893: @samp{-mno-ocs-frame-position}.
1894:
1895: @item -mno-ocs-frame-position
1896: @kindex -mno-ocs-frame-position
1897: @cindex register positions in frame (88k)
1898: When emitting COFF debugging information for automatic variables and
1899: parameters stored on the stack, use the offset from the frame pointer
1900: register (register 30). When this option is in effect, the frame
1901: pointer is not eliminated when debugging information is selected by the
1902: -g switch.
1903:
1904: @item -moptimize-arg-area
1905: @itemx -mno-optimize-arg-area
1906: @kindex -moptimize-arg-area
1907: @kindex -mno-optimize-arg-area
1908: @cindex arguments in frame (88k)
1909: Control how to store function arguments in stack frames.
1910: @samp{-moptimize-arg-area} saves space, but was ruled illegal by 88open.
1911: @samp{-mno-optimize-arg-area} conforms to the 88open standards. By
1912: default GNU CC does not optimize the argument area.
1913:
1914: @item -mshort-data-@var{num}
1915: @kindex -mshort-data-@var{num}
1916: @cindex smaller data references (88k)
1917: @cindex r0-relative references (88k)
1918: Generate smaller data references by making them relative to @code{r0},
1919: which allows loading a value using a single instruction (rather than the
1920: usual two). You control which data references are affected by
1921: specifying @var{num} with this option. For example, if you specify
1922: @samp{-mshort-data-512}, then the data references affected are those
1923: involving displacements of less than 512 bytes.
1924: @samp{-mshort-data-@var{num}} is not effective for @var{num} greater
1925: than 64K.
1926:
1927: @item -msvr4
1928: @itemx -msvr3
1929: @kindex -msvr4
1930: @kindex -msvr3
1931: @cindex assembler syntax, 88k
1932: @cindex SVr4
1933: Turn on (@samp{-msvr4}) or off (@samp{-msvr3}) compiler extensions
1934: related to System V release 4 (SVr4). This controls the following:
1935:
1936: @enumerate
1937: @item
1938: Which variant of the assembler syntax to emit (which you can select
1939: independently using @samp{-mversion-03.00}).
1940: @item
1941: @samp{-msvr4} makes the C preprocessor recognize @samp{#pragma weak}
1942: that is used on System V release 4.
1943: @item
1944: @samp{-msvr4} makes GNU CC issue additional declaration directives used in
1945: SVr4.
1946: @end enumerate
1947:
1948: @samp{-msvr3} is the default for all m88K configurations except
1949: the SVr4 configuration.
1950:
1951: @item -mversion-03.00
1952: @kindex -mversion-03.00
1953: In the DG/UX configuration, there are two flavors of SVr4. This option
1954: modifies @samp{-msvr4} to select whether the hybrid-COFF or real-ELF
1955: flavor is used. All other configurations ignore this option.
1956: @c ??? which asm syntax better for GAS? option there too?
1957:
1958: @item -mno-check-zero-division
1959: @itemx -mcheck-zero-division
1.1.1.3 ! root 1960: @kindex -mno-check-zero-division
1.1 root 1961: @kindex -mcheck-zero-division
1962: @cindex zero division on 88k
1963: Early models of the 88K architecture had problems with division by zero;
1964: in particular, many of them didn't trap. Use these options to avoid
1965: including (or to include explicitly) additional code to detect division
1966: by zero and signal an exception. All GNU CC configurations for the 88K use
1967: @samp{-mcheck-zero-division} by default.
1968:
1969: @item -muse-div-instruction
1970: @kindex -muse-div-instruction
1971: @cindex divide instruction, 88k
1972: Do not emit code to check both the divisor and dividend when doing
1973: signed integer division to see if either is negative, and adjust the
1974: signs so the divide is done using non-negative numbers. Instead, rely
1975: on the operating system to calculate the correct value when the
1976: @code{div} instruction traps. This results in different behavior when
1977: the most negative number is divided by -1, but is useful when most or
1978: all signed integer divisions are done with positive numbers.
1979:
1980: @item -mtrap-large-shift
1981: @itemx -mhandle-large-shift
1982: @kindex -mtrap-large-shift
1983: @kindex -mhandle-large-shift
1984: @cindex bit shift overflow (88k)
1985: @cindex large bit shifts (88k)
1986: Include code to detect bit-shifts of more than 31 bits; respectively,
1987: trap such shifts or emit code to handle them properly. By default GNU CC
1988: makes no special provision for large bit shifts.
1989:
1990: @item -mwarn-passed-structs
1991: @kindex -mwarn-passed-structs
1992: @cindex structure passing (88k)
1993: Warn when a function passes a struct as an argument or result.
1994: Structure-passing conventions have changed during the evolution of the C
1995: language, and are often the source of portability problems. By default,
1996: GNU CC issues no such warning.
1997: @end table
1998:
1999: @node RS/6000 Options, RT Options, M88K Options, Submodel Options
2000: @subsection IBM RS/6000 Options
2001: @cindex RS/6000 Options
2002: @cindex IBM RS/6000 Options
2003:
2004: Only one pair of @samp{-m} options is defined for the IBM RS/6000:
2005:
2006: @table @code
2007: @item -mfp-in-toc
2008: @itemx -mno-fp-in-toc
2009: Control whether or not floating-point constants go in the Table of
2010: Contents (TOC), a table of all global variable and function addresses. By
2011: default GNU CC puts floating-point constants there; if the TOC overflows,
2012: @samp{-mno-fp-in-toc} will reduce the size of the TOC, which may avoid
2013: the overflow.
2014: @end table
2015:
2016: @node RT Options, MIPS Options, RS/6000 Options, Submodel Options
2017: @subsection IBM RT Options
2018: @cindex RT options
2019: @cindex IBM RT options
2020:
2021: These @samp{-m} options are defined for the IBM RT PC:
2022:
2023: @table @code
2024: @item -min-line-mul
2025: Use an in-line code sequence for integer multiplies. This is the
2026: default.
2027:
2028: @item -mcall-lib-mul
2029: Call @code{lmul$$} for integer multiples.
2030:
2031: @item -mfull-fp-blocks
2032: Generate full-size floating point data blocks, including the minimum
2033: amount of scratch space recommended by IBM. This is the default.
2034:
2035: @item -mminimum-fp-blocks
2036: Do not include extra scratch space in floating point data blocks. This
2037: results in smaller code, but slower execution, since scratch space must
2038: be allocated dynamically.
2039:
2040: @cindex @file{varargs.h} and RT PC
2041: @cindex @file{stdarg.h} and RT PC
2042: @item -mfp-arg-in-fpregs
2043: Use a calling sequence incompatible with the IBM calling convention in
2044: which floating point arguments are passed in floating point registers.
2045: Note that @code{varargs.h} and @code{stdargs.h} will not work with
2046: floating point operands if this option is specified.
2047:
2048: @item -mfp-arg-in-gregs
2049: Use the normal calling convention for floating point arguments. This is
2050: the default.
2051:
2052: @item -mhc-struct-return
2053: Return structures of more than one word in memory, rather than in a
2054: register. This provides compatibility with the MetaWare HighC (hc)
2055: compiler. Use @samp{-fpcc-struct-return} for compatibility with the
2056: Portable C Compiler (pcc).
2057:
2058: @item -mnohc-struct-return
2059: Return some structures of more than one word in registers, when
2060: convenient. This is the default. For compatibility with the
2061: IBM-supplied compilers, use either @samp{-fpcc-struct-return} or
2062: @samp{-mhc-struct-return}.
2063: @end table
2064:
1.1.1.2 root 2065: @node MIPS Options, i386 Options, RT Options, Submodel Options
1.1 root 2066: @subsection MIPS Options
2067: @cindex MIPS options
2068:
2069: These @samp{-m} options are defined for the MIPS family of computers:
2070:
2071: @table @code
2072: @item -mcpu=@var{cpu type}
2073: Assume the defaults for the machine type @var{cpu type} when
1.1.1.2 root 2074: scheduling instructions. The default @var{cpu type} is
1.1 root 2075: @samp{default}, which picks the longest cycles times for any of the
2076: machines, in order that the code run at reasonable rates on all MIPS
2077: cpu's. Other choices for @var{cpu type} are @samp{r2000},
2078: @samp{r3000}, @samp{r4000}, and @samp{r6000}. While picking a
2079: specific @var{cpu type} will schedule things appropriately for that
2080: particular chip, the compiler will not generate any code that does not
2081: meet level 1 of the MIPS ISA (instruction set architecture) without
2082: the @samp{-mips2} or @samp{-mips3} switches being used.
2083:
2084: @item -mips2
2085: Issue instructions from level 2 of the MIPS ISA (branch likely, square
2086: root instructions). The @samp{-mcpu=r4000} or @samp{-mcpu=r6000}
1.1.1.3 ! root 2087: switch must be used in conjunction with @samp{-mips2}.
1.1 root 2088:
2089: @item -mips3
2090: Issue instructions from level 3 of the MIPS ISA (64 bit instructions).
2091: You must use the @samp{-mcpu=r4000} switch along with @samp{-mips3}.
2092:
2093: @item -mint64
2094: @item -mlong64
2095: @item -mlonglong128
2096: These options don't work at present.
2097:
2098: @item -mmips-as
2099: Generate code for the MIPS assembler, and invoke @file{mips-tfile} to
2100: add normal debug information. This is the default for all
2101: platforms except for the OSF/1 reference platform, using the OSF/rose
2102: object format. If the either of the @samp{-gstabs} or @samp{-gstabs+}
2103: switches are used, the @file{mips-tfile} program will encapsulate the
2104: stabs within MIPS ECOFF.
2105:
2106: @item -mgas
2107: Generate code for the GNU assembler. This is the default on the OSF/1
2108: reference platform, using the OSF/rose object format.
2109:
2110: @item -mrnames
2111: @itemx -mno-rnames
2112: The @samp{-mrnames} switch says to output code using the MIPS software
2113: names for the registers, instead of the hardware names (ie, @var{a0}
2114: instead of @var{$4}). The GNU assembler does not support the
2115: @samp{-mrnames} switch, and the MIPS assembler will be instructed to
2116: run the MIPS C preprocessor over the source file. The
2117: @samp{-mno-rnames} switch is default.
2118:
2119: @item -mgpopt
2120: @itemx -mno-gpopt
2121: The @samp{-mgpopt} switch says to write all of the data declarations
1.1.1.2 root 2122: before the instructions in the text section, this allows the MIPS
2123: assembler to generate one word memory references instead of using two
2124: words for short global or static data items. This is on by default if
1.1 root 2125: optimization is selected.
2126:
2127: @item -mstats
2128: @itemx -mno-stats
2129: For each non-inline function processed, the @samp{-mstats} switch
2130: causes the compiler to emit one line to the standard error file to
2131: print statistics about the program (number of registers saved, stack
2132: size, etc.).
2133:
2134: @item -mmemcpy
2135: @itemx -mno-memcpy
2136: The @samp{-mmemcpy} switch makes all block moves call the appropriate
2137: string function (@samp{memcpy} or @samp{bcopy}) instead of possibly
2138: generating inline code.
2139:
2140: @item -mmips-tfile
2141: @itemx -mno-mips-tfile
2142: The @samp{-mno-mips-tfile} switch causes the compiler not
2143: postprocess the object file with the @file{mips-tfile} program,
2144: after the MIPS assembler has generated it to add debug support. If
2145: @file{mips-tfile} is not run, then no local variables will be
2146: available to the debugger. In addition, @file{stage2} and
2147: @file{stage3} objects will have the temporary file names passed to the
2148: assembler embedded in the object file, which means the objects will
1.1.1.2 root 2149: not compare the same. The @samp{-mno-mips-tfile} switch should only
2150: be used when there are bugs in the @file{mips-tfile} program that
2151: prevents compilation.
1.1 root 2152:
2153: @item -msoft-float
2154: Generate output containing library calls for floating point.
2155: @strong{Warning:} the requisite libraries are not part of GNU CC.
2156: Normally the facilities of the machine's usual C compiler are used, but
2157: this can't be done directly in cross-compilation. You must make your
2158: own arrangements to provide suitable library functions for
2159: cross-compilation.
2160:
2161: @item -mhard-float
2162: Generate output containing floating point instructions. This is the
2163: default if you use the unmodified sources.
2164:
2165: @item -mfp64
2166: Assume that the @var{FR} bit in the status word is on, and that there
2167: are 32 64-bit floating point registers, instead of 32 32-bit floating
2168: point registers. You must also specify the @samp{-mcpu=r4000} and
2169: @samp{-mips3} switches.
2170:
2171: @item -mfp32
2172: Assume that there are 32 32-bit floating point registers. This is the
2173: default.
2174:
2175: @item -mabicalls
2176: @itemx -mno-abicalls
2177: Emit the @samp{.abicalls}, @samp{.cpload}, and @samp{.cprestore}
2178: pseudo operations that some System V.4 ports use for position
2179: independent code.
2180:
2181: @item -mhalf-pic
2182: @itemx -mno-half-pic
2183: Put pointers to extern references into the data section and load them
2184: up, rather than put the references in the text section. These options
2185: do not work at present.
2186:
2187: @item -G @var{num}
2188: @cindex smaller data references (MIPS)
2189: @cindex gp-relative references (MIPS)
2190: Put global and static items less than or equal to @var{num} bytes into
2191: the small data or bss sections instead of the normal data or bss
2192: section. This allows the assembler to emit one word memory reference
2193: instructions based on the global pointer (@var{gp} or @var{$28}),
2194: instead of the normal two words used. By default, @var{num} is 8 when
2195: the MIPS assembler is used, and 0 when the GNU assembler is used. The
2196: @samp{-G @var{num}} switch is also passed to the assembler and linker.
1.1.1.2 root 2197: All modules should be compiled with the same @samp{-G @var{num}}
2198: value.
2199:
2200: @item -nocpp
2201: Tell the MIPS assembler to not run it's preprocessor over user
2202: assembler files (with a @samp{.s} suffix) when assembling them.
1.1 root 2203: @end table
2204:
2205: @ifset INTERNALS
2206: These options are defined by the macro
2207: @code{TARGET_SWITCHES} in the machine description. The default for the
2208: options is also defined by that macro, which enables you to change the
2209: defaults.
2210: @end ifset
2211:
1.1.1.2 root 2212: @node i386 Options, , MIPS Options, Submodel Options
2213: @subsection Intel 386 Options
2214: @cindex i386 Options
2215: @cindex Intel 386 Options
2216:
2217: These @samp{-m} options are defined for the i386 family of computers:
2218:
2219: @table @code
2220: @item -m486
2221: @itemx -mno486
2222: Control whether or not code is optimized for a 486 instead of an
2223: 386. Code generated for an 486 will run on a 386 and vice versa.
2224:
2225: @item -msoft-float
2226: Generate output containing library calls for floating point.
2227: @strong{Warning:} the requisite libraries are not part of GNU CC.
2228: Normally the facilities of the machine's usual C compiler are used, but
2229: this can't be done directly in cross-compilation. You must make your
2230: own arrangements to provide suitable library functions for
2231: cross-compilation.
2232:
2233: On machines where a function returnings float point results in the 80387
2234: register stack, some floating point opcodes may be emitted even if
2235: @samp{-msoft-float} is used.
2236: @end table
2237:
1.1 root 2238: @node Code Gen Options, Environment Variables, Submodel Options, Invoking GCC
2239: @section Options for Code Generation Conventions
2240: @cindex code generation conventions
2241: @cindex options, code generation
2242: @cindex run-time options
2243:
2244: These machine-independent options control the interface conventions
2245: used in code generation.
2246:
2247: Most of them have both positive and negative forms; the negative form
2248: of @samp{-ffoo} would be @samp{-fno-foo}. In the table below, only
2249: one of the forms is listed---the one which is not the default. You
2250: can figure out the other form by either removing @samp{no-} or adding
2251: it.
2252:
2253: @table @code
2254: @item -fpcc-struct-return
2255: Use the same convention for returning @code{struct} and @code{union}
2256: values that is used by the usual C compiler on your system. This
2257: convention is less efficient for small structures, and on many
2258: machines it fails to be reentrant; but it has the advantage of
2259: allowing intercallability between GNU CC-compiled code and PCC-compiled
2260: code.
2261:
2262: @item -fshort-enums
2263: Allocate to an @code{enum} type only as many bytes as it needs for the
2264: declared range of possible values. Specifically, the @code{enum} type
2265: will be equivalent to the smallest integer type which has enough room.
2266:
2267: @item -fshort-double
2268: Use the same size for @code{double} as for @code{float}.
2269:
2270: @item -fshared-data
2271: Requests that the data and non-@code{const} variables of this
2272: compilation be shared data rather than private data. The distinction
2273: makes sense only on certain operating systems, where shared data is
2274: shared between processes running the same program, while private data
2275: exists in one copy per process.
2276:
2277: @item -fno-common
2278: Allocate even uninitialized global variables in the bss section of the
2279: object file, rather than generating them as common blocks. This has the
2280: effect that if the same variable is declared (without @code{extern}) in
2281: two different compilations, you will get an error when you link them.
2282: The only reason this might be useful is if you wish to verify that the
2283: program will work on other systems which always work this way.
2284:
2285: @item -fno-ident
2286: Ignore the @samp{#ident} directive.
2287:
2288: @item -fno-gnu-linker
2289: Don't output global initializations such as C++ constructors and
2290: destructors in the form used by the GNU linker (on systems where the GNU
2291: linker is the standard method of handling them). Use this option when
2292: you want to use a ``collect'' program and a non-GNU linker.
2293:
2294: @item -finhibit-size-directive
2295: Don't output a @code{.size} assembler directive, or anything else that
2296: would cause trouble if the function is split in the middle, and the
2297: two halves are placed at locations far apart in memory. This option is
2298: used when compiling @file{crtstuff.c}; you should not need to use it
2299: for anything else.
2300:
1.1.1.3 ! root 2301: @item -fverbose-asm
! 2302: Put extra commentary information in the generated assembly code to
! 2303: make it more readable. This option is generally only of use to those
! 2304: who actually need to read the generated assembly code (perhaps while
! 2305: debugging the compiler itself).
! 2306:
1.1 root 2307: @item -fvolatile
2308: Consider all memory references through pointers to be volatile.
2309:
2310: @item -fpic
2311: @cindex global offset table
2312: If supported for the target machines, generate position-independent
2313: code, suitable for use in a shared library. All addresses will be
2314: accessed through a global offset table (GOT). If the GOT size for the
2315: linked executable exceeds a machine-specific maximum size, you will get
2316: an error message from the linker indicating that @samp{-fpic} does not
2317: work; recompile with @samp{-fPIC} instead. (These maximums are 16k on
2318: the m88k, 8k on the Sparc, and 32k on the m68k and RS/6000. The 386 has
2319: no such limit.)
2320:
2321: Position-independent code requires special support, and therefore works
2322: only on certain machines. Code generated for the IBM RS/6000 is always
2323: position-independent.
2324:
1.1.1.2 root 2325: The GNU assembler does not fully support PIC. Currently, you must use
2326: some other assembler in order for PIC to work. We would welcome
2327: volunteers to upgrade GAS to handle this; the first part of the job is
2328: to figure out what the assembler must do differently.
2329:
1.1 root 2330: @item -fPIC
2331: If supported for the target machine, emit position-independent code,
2332: suitable for dynamic linking and avoiding any limit on the size of the
2333: global offset table. This option makes a difference on the m68k, m88k
2334: and the Sparc.
2335:
2336: Position-independent code requires special support, and therefore works
2337: only on certain machines.
2338:
2339: @item -ffixed-@var{reg}
2340: Treat the register named @var{reg} as a fixed register; generated code
2341: should never refer to it (except perhaps as a stack pointer, frame
2342: pointer or in some other fixed role).
2343:
2344: @var{reg} must be the name of a register. The register names accepted
2345: are machine-specific and are defined in the @code{REGISTER_NAMES}
2346: macro in the machine description macro file.
2347:
2348: This flag does not have a negative form, because it specifies a
2349: three-way choice.
2350:
2351: @item -fcall-used-@var{reg}
2352: Treat the register named @var{reg} as an allocatable register that is
2353: clobbered by function calls. It may be allocated for temporaries or
2354: variables that do not live across a call. Functions compiled this way
2355: will not save and restore the register @var{reg}.
2356:
2357: Use of this flag for a register that has a fixed pervasive role in the
2358: machine's execution model, such as the stack pointer or frame pointer,
2359: will produce disastrous results.
2360:
2361: This flag does not have a negative form, because it specifies a
2362: three-way choice.
2363:
2364: @item -fcall-saved-@var{reg}
2365: Treat the register named @var{reg} as an allocatable register saved by
2366: functions. It may be allocated even for temporaries or variables that
2367: live across a call. Functions compiled this way will save and restore
2368: the register @var{reg} if they use it.
2369:
2370: Use of this flag for a register that has a fixed pervasive role in the
2371: machine's execution model, such as the stack pointer or frame pointer,
2372: will produce disastrous results.
2373:
2374: A different sort of disaster will result from the use of this flag for
2375: a register in which function values may be returned.
2376:
2377: This flag does not have a negative form, because it specifies a
2378: three-way choice.
2379: @end table
2380:
2381: @node Environment Variables,, Code Gen Options, Invoking GCC
2382: @section Environment Variables Affecting GNU CC
2383: @cindex environment variables
2384:
2385: This section describes several environment variables that affect how GNU
2386: CC operates. They work by specifying directories or prefixes to use
2387: when searching for various kinds of files.
2388:
2389: @ifclear INTERNALS
2390: Note that you can also specify places to search using options such as
2391: @samp{-B}, @samp{-I} and @samp{-L} (@pxref{Directory Options}). These
2392: take precedence over places specified using environment variables, which
2393: in turn take precedence over those specified by the configuration of GNU
2394: CC.
2395: @end ifclear
2396: @ifset INTERNALS
2397: Note that you can also specify places to search using options such as
2398: @samp{-B}, @samp{-I} and @samp{-L} (@pxref{Directory Options}). These
2399: take precedence over places specified using environment variables, which
2400: in turn take precedence over those specified by the configuration of GNU
2401: CC. @xref{Driver}.
2402: @end ifset
2403:
2404: @table @code
2405: @item TMPDIR
2406: @findex TMPDIR
2407: If @code{TMPDIR} is set, it specifies the directory to use for temporary
2408: files. GNU CC uses temporary files to hold the output of one stage of
2409: compilation which is to be used as input to the next stage: for example,
2410: the output of the preprocessor, which is the input to the compiler
2411: proper.
2412:
2413: @item GCC_EXEC_PREFIX
2414: @findex GCC_EXEC_PREFIX
2415: If @code{GCC_EXEC_PREFIX} is set, it specifies a prefix to use in the
2416: names of the subprograms executed by the compiler. No slash is added
2417: when this prefix is combined with the name of a subprogram, but you can
2418: specify a prefix that ends with a slash if you wish.
2419:
2420: If GNU CC cannot find the subprogram using the specified prefix, it
2421: tries looking in the usual places for the subprogram.
2422:
2423: Other prefixes specified with @samp{-B} take precedence over this prefix.
2424:
2425: This prefix is also used for finding files such as @file{crt0.o} that are
2426: used for linking.
2427:
2428: In addition, the prefix is used in an unusual way in finding the
2429: directories to search for header files. For each of the standard
1.1.1.2 root 2430: directories whose name normally begins with @samp{/usr/local/lib/gcc-lib}
1.1 root 2431: (more precisely, with the value of @code{GCC_INCLUDE_DIR}), GNU CC tries
2432: replacing that beginning with the specified prefix to produce an
2433: alternate directory name. Thus, with @samp{-Bfoo/}, GNU CC will search
2434: @file{foo/bar} where it would normally search @file{/usr/local/lib/bar}.
2435: These alternate directories are searched first; the standard directories
2436: come next.
2437:
2438: @item COMPILER_PATH
2439: @findex COMPILER_PATH
2440: The value of @code{COMPILER_PATH} is a colon-separated list of
2441: directories, much like @code{PATH}. GNU CC tries the directories thus
2442: specified when searching for subprograms, if it can't find the
2443: subprograms using @code{GCC_EXEC_PREFIX}.
2444:
2445: @item LIBRARY_PATH
2446: @findex LIBRARY_PATH
2447: The value of @code{LIBRARY_PATH} is a colon-separated list of
2448: directories, much like @code{PATH}. GNU CC tries the directories thus
2449: specified when searching for special linker files, if it can't find them
2450: using @code{GCC_EXEC_PREFIX}. Linking using GNU CC also uses these
2451: directories when searching for ordinary libraries for the @samp{-l}
2452: option (but directories specified with @samp{-L} come first).
2453:
2454: @item C_INCLUDE_PATH
1.1.1.2 root 2455: @itemx CPLUS_INCLUDE_PATH
1.1 root 2456: @itemx OBJC_INCLUDE_PATH
2457: @findex C_INCLUDE_PATH
1.1.1.2 root 2458: @findex CPLUS_INCLUDE_PATH
1.1 root 2459: @findex OBJC_INCLUDE_PATH
1.1.1.2 root 2460: @c @itemx OBJCPLUS_INCLUDE_PATH
1.1 root 2461: These environment variables pertain to particular languages. Each
2462: variable's value is a colon-separated list of directories, much like
2463: @code{PATH}. When GNU CC searches for header files, it tries the
2464: directories listed in the variable for the language you are using, after
2465: the directories specified with @samp{-I} but before the standard header
2466: file directories.
2467:
2468: @item DEPENDENCIES_OUTPUT
2469: @findex DEPENDENCIES_OUTPUT
2470: @cindex dependencies for make as output
2471: If this variable is set, its value specifies how to output dependencies
2472: for Make based on the header files processed by the compiler. This
2473: output looks much like the output from the @samp{-M} option
2474: (@pxref{Preprocessor Options}), but it goes to a separate file, and is
2475: in addition to the usual results of compilation.
2476:
2477: The value of @code{DEPENDENCIES_OUTPUT} can be just a file name, in
2478: which case the Make rules are written to that file, guessing the target
2479: name from the source file name. Or the value can have the form
2480: @samp{@var{file} @var{target}}, in which case the rules are written to
2481: file @var{file} using @var{target} as the target name.
2482: @end table
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.