--- gcc-m68hc1x-3.3.6+3.1+dfsg.orig/gcc-3.3.6-m68hc1x-20060122.diffs +++ gcc-m68hc1x-3.3.6+3.1+dfsg/gcc-3.3.6-m68hc1x-20060122.diffs @@ -409,6 +409,15 @@ } +@@ -1580,7 +1580,7 @@ + if (redir) + { + /* Open response file. */ +- redir_handle = open (redir, O_WRONLY | O_TRUNC | O_CREAT); ++ redir_handle = open (redir, O_WRONLY | O_TRUNC | O_CREAT, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH); + + /* Duplicate the stdout and stderr file handles + so they can be restored later. */ @@ -2081,6 +2089,31 @@ scan_prog_file (prog_name, which_pass) if (nm_file_name == 0) fatal ("cannot find `nm'"); @@ -4065,10368 +4074,7 @@ extern const char *cpp_SYSROOT; -diff --exclude-from=exclude.lst -Nrup gcc-3.3.6/gcc/doc/extend.texi gcc-3.3.6-m68hc1x/gcc/doc/extend.texi ---- gcc-3.3.6/gcc/doc/extend.texi Wed Mar 17 21:13:19 2004 -+++ gcc-3.3.6-m68hc1x/gcc/doc/extend.texi Sat Nov 5 19:17:25 2005 -@@ -2528,17 +2528,35 @@ to call and return from a function. - - On 68HC11 the compiler will generate a sequence of instructions - to invoke a board-specific routine to switch the memory bank and call the --real function. The board-specific routine simulates a @code{call}. -+real function. The board-specific routine simulates a @code{call}. - At the end of a function, it will jump to a board-specific routine --instead of using @code{rts}. The board-specific return routine simulates -+instead of using @code{rts}. The board-specific return routine simulates - the @code{rtc}. - -+The @code{far} attribute must not be used when the @code{interrupt} or -+@code{trap} attributes are used. -+ - @item near - @cindex functions which do not handle memory bank switching on 68HC11/68HC12 - On 68HC11 and 68HC12 the @code{near} attribute causes the compiler to - use the normal calling convention based on @code{jsr} and @code{rts}. - This attribute can be used to cancel the effect of the @option{-mlong-calls} - option. -+ -+@item page0 -+@cindex variables in page0 section for which direct addressing mode can be used -+On 68HC11 and 68HC12, the @code{page0} attribute indicates that a global -+or static variable is put in the @code{page0} section and the compiler can -+use the direct addressing mode. On 68HC11 the compiler will be able to -+use @code{bset} and @code{bclr} on these variables. Note that the @code{page0} -+is limited to the absolute address range @code{0}..@code{0x0ff}. -+ -+@item trap -+@cindex functions which are used as trap handlers (@code{swi} or @code{trap}) -+On 68HC11 and 68HC12, the @code{trap} attribute marks the function as being -+a trap handler. It will use @code{rti} instead of @code{rts} to return -+from the function. Offset of function parameters are also adjusted to take -+into account the trap frame. - - @item dllimport - @cindex @code{__declspec(dllimport)} -diff --exclude-from=exclude.lst -Nrup gcc-3.3.6/gcc/doc/gcc.1 gcc-3.3.6-m68hc1x/gcc/doc/gcc.1 ---- gcc-3.3.6/gcc/doc/gcc.1 Tue May 3 14:41:29 2005 -+++ gcc-3.3.6-m68hc1x/gcc/doc/gcc.1 Sat Nov 5 22:34:26 2005 -@@ -1,10282 +1 @@ --.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14 --.\" --.\" Standard preamble: --.\" ======================================================================== --.de Sh \" Subsection heading --.br --.if t .Sp --.ne 5 --.PP --\fB\\$1\fR --.PP --.. --.de Sp \" Vertical space (when we can't use .PP) --.if t .sp .5v --.if n .sp --.. --.de Vb \" Begin verbatim text --.ft CW --.nf --.ne \\$1 --.. --.de Ve \" End verbatim text --.ft R --.fi --.. --.\" Set up some character translations and predefined strings. \*(-- will --.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left --.\" double quote, and \*(R" will give a right double quote. | will give a --.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to --.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' --.\" expand to `' in nroff, nothing in troff, for use with C<>. --.tr \(*W-|\(bv\*(Tr --.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' --.ie n \{\ --. ds -- \(*W- --. ds PI pi --. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch --. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch --. ds L" "" --. ds R" "" --. ds C` "" --. ds C' "" --'br\} --.el\{\ --. ds -- \|\(em\| --. ds PI \(*p --. ds L" `` --. ds R" '' --'br\} --.\" --.\" If the F register is turned on, we'll generate index entries on stderr for --.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index --.\" entries marked with X<> in POD. Of course, you'll have to process the --.\" output yourself in some meaningful fashion. --.if \nF \{\ --. de IX --. tm Index:\\$1\t\\n%\t"\\$2" --.. --. nr % 0 --. rr F --.\} --.\" --.\" For nroff, turn off justification. Always turn off hyphenation; it makes --.\" way too many mistakes in technical documents. --.hy 0 --.if n .na --.\" --.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). --.\" Fear. Run. Save yourself. No user-serviceable parts. --. \" fudge factors for nroff and troff --.if n \{\ --. ds #H 0 --. ds #V .8m --. ds #F .3m --. ds #[ \f1 --. ds #] \fP --.\} --.if t \{\ --. ds #H ((1u-(\\\\n(.fu%2u))*.13m) --. ds #V .6m --. ds #F 0 --. ds #[ \& --. ds #] \& --.\} --. \" simple accents for nroff and troff --.if n \{\ --. ds ' \& --. ds ` \& --. ds ^ \& --. ds , \& --. ds ~ ~ --. ds / --.\} --.if t \{\ --. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" --. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' --. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' --. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' --. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' --. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' --.\} --. \" troff and (daisy-wheel) nroff accents --.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' --.ds 8 \h'\*(#H'\(*b\h'-\*(#H' --.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] --.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' --.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' --.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] --.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] --.ds ae a\h'-(\w'a'u*4/10)'e --.ds Ae A\h'-(\w'A'u*4/10)'E --. \" corrections for vroff --.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' --.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' --. \" for low resolution devices (crt and lpr) --.if \n(.H>23 .if \n(.V>19 \ --\{\ --. ds : e --. ds 8 ss --. ds o a --. ds d- d\h'-1'\(ga --. ds D- D\h'-1'\(hy --. ds th \o'bp' --. ds Th \o'LP' --. ds ae ae --. ds Ae AE --.\} --.rm #[ #] #H #V #F C --.\" ======================================================================== --.\" --.IX Title "GCC 1" --.TH GCC 1 "2005-05-03" "gcc-3.3.6" "GNU" --.SH "NAME" --gcc \- GNU project C and C++ compiler --.SH "SYNOPSIS" --.IX Header "SYNOPSIS" --gcc [\fB\-c\fR|\fB\-S\fR|\fB\-E\fR] [\fB\-std=\fR\fIstandard\fR] -- [\fB\-g\fR] [\fB\-pg\fR] [\fB\-O\fR\fIlevel\fR] -- [\fB\-W\fR\fIwarn\fR...] [\fB\-pedantic\fR] -- [\fB\-I\fR\fIdir\fR...] [\fB\-L\fR\fIdir\fR...] -- [\fB\-D\fR\fImacro\fR[=\fIdefn\fR]...] [\fB\-U\fR\fImacro\fR] -- [\fB\-f\fR\fIoption\fR...] [\fB\-m\fR\fImachine-option\fR...] -- [\fB\-o\fR \fIoutfile\fR] \fIinfile\fR... --.PP --Only the most useful options are listed here; see below for the --remainder. \fBg++\fR accepts mostly the same options as \fBgcc\fR. --.SH "DESCRIPTION" --.IX Header "DESCRIPTION" --When you invoke \s-1GCC\s0, it normally does preprocessing, compilation, --assembly and linking. The ``overall options'' allow you to stop this --process at an intermediate stage. For example, the \fB\-c\fR option --says not to run the linker. Then the output consists of object files --output by the assembler. --.PP --Other options are passed on to one stage of processing. Some options --control the preprocessor and others the compiler itself. Yet other --options control the assembler and linker; most of these are not --documented here, since you rarely need to use any of them. --.PP --Most of the command line options that you can use with \s-1GCC\s0 are useful --for C programs; when an option is only useful with another language --(usually \*(C+), the explanation says so explicitly. If the description --for a particular option does not mention a source language, you can use --that option with all supported languages. --.PP --The \fBgcc\fR program accepts options and file names as operands. Many --options have multi-letter names; therefore multiple single-letter options --may \fInot\fR be grouped: \fB\-dr\fR is very different from \fB\-d\ \-r\fR. --.PP --You can mix options and other arguments. For the most part, the order --you use doesn't matter. Order does matter when you use several options --of the same kind; for example, if you specify \fB\-L\fR more than once, --the directories are searched in the order specified. --.PP --Many options have long names starting with \fB\-f\fR or with --\&\fB\-W\fR\-\-\-for example, \fB\-fforce\-mem\fR, --\&\fB\-fstrength\-reduce\fR, \fB\-Wformat\fR and so on. Most of --these have both positive and negative forms; the negative form of --\&\fB\-ffoo\fR would be \fB\-fno\-foo\fR. This manual documents --only one of these two forms, whichever one is not the default. --.SH "OPTIONS" --.IX Header "OPTIONS" --.Sh "Option Summary" --.IX Subsection "Option Summary" --Here is a summary of all the options, grouped by type. Explanations are --in the following sections. --.IP "\fIOverall Options\fR" 4 --.IX Item "Overall Options" --\&\fB\-c \-S \-E \-o\fR \fIfile\fR \fB\-pipe \-pass\-exit\-codes --\&\-x\fR \fIlanguage\fR \fB\-v \-### \-\-help \-\-target\-help \-\-version\fR --.IP "\fIC Language Options\fR" 4 --.IX Item "C Language Options" --\&\fB\-ansi \-std=\fR\fIstandard\fR \fB\-aux\-info\fR \fIfilename\fR --\&\fB\-fno\-asm \-fno\-builtin \-fno\-builtin\-\fR\fIfunction\fR --\&\fB\-fhosted \-ffreestanding \-fms\-extensions --\&\-trigraphs \-no\-integrated\-cpp \-traditional \-traditional\-cpp --\&\-fallow\-single\-precision \-fcond\-mismatch --\&\-fsigned\-bitfields \-fsigned\-char --\&\-funsigned\-bitfields \-funsigned\-char --\&\-fwritable\-strings\fR --.IP "\fI\*(C+ Language Options\fR" 4 --.IX Item " Language Options" --\&\fB\-fabi\-version=\fR\fIn\fR \fB\-fno\-access\-control \-fcheck\-new --\&\-fconserve\-space \-fno\-const\-strings \-fdollars\-in\-identifiers --\&\-fno\-elide\-constructors --\&\-fno\-enforce\-eh\-specs \-fexternal\-templates --\&\-falt\-external\-templates --\&\-ffor\-scope \-fno\-for\-scope \-fno\-gnu\-keywords --\&\-fno\-implicit\-templates --\&\-fno\-implicit\-inline\-templates --\&\-fno\-implement\-inlines \-fms\-extensions --\&\-fno\-nonansi\-builtins \-fno\-operator\-names --\&\-fno\-optional\-diags \-fpermissive --\&\-frepo \-fno\-rtti \-fstats \-ftemplate\-depth\-\fR\fIn\fR --\&\fB\-fuse\-cxa\-atexit \-fvtable\-gc \-fno\-weak \-nostdinc++ --\&\-fno\-default\-inline \-Wabi \-Wctor\-dtor\-privacy --\&\-Wnon\-virtual\-dtor \-Wreorder --\&\-Weffc++ \-Wno\-deprecated --\&\-Wno\-non\-template\-friend \-Wold\-style\-cast --\&\-Woverloaded\-virtual \-Wno\-pmf\-conversions --\&\-Wsign\-promo\fR --.IP "\fIObjective-C Language Options\fR" 4 --.IX Item "Objective-C Language Options" --\&\fB\-fconstant\-string\-class=\fR\fIclass-name\fR --\&\fB\-fgnu\-runtime \-fnext\-runtime \-gen\-decls --\&\-Wno\-protocol \-Wselector \-Wundeclared\-selector\fR --.IP "\fILanguage Independent Options\fR" 4 --.IX Item "Language Independent Options" --\&\fB\-fmessage\-length=\fR\fIn\fR --\&\fB\-fdiagnostics\-show\-location=\fR[\fBonce\fR|\fBevery-line\fR] --.IP "\fIWarning Options\fR" 4 --.IX Item "Warning Options" --\&\fB\-fsyntax\-only \-pedantic \-pedantic\-errors --\&\-w \-W \-Wall \-Waggregate\-return --\&\-Wcast\-align \-Wcast\-qual \-Wchar\-subscripts \-Wcomment --\&\-Wconversion \-Wno\-deprecated\-declarations --\&\-Wdisabled\-optimization \-Wno\-div\-by\-zero \-Werror --\&\-Wfloat\-equal \-Wformat \-Wformat=2 --\&\-Wformat\-nonliteral \-Wformat\-security --\&\-Wimplicit \-Wimplicit\-int --\&\-Wimplicit\-function\-declaration --\&\-Werror\-implicit\-function\-declaration --\&\-Wimport \-Winline \-Wno\-endif\-labels --\&\-Wlarger\-than\-\fR\fIlen\fR \fB\-Wlong\-long --\&\-Wmain \-Wmissing\-braces --\&\-Wmissing\-format\-attribute \-Wmissing\-noreturn --\&\-Wno\-multichar \-Wno\-format\-extra\-args \-Wno\-format\-y2k --\&\-Wno\-import \-Wnonnull \-Wpacked \-Wpadded --\&\-Wparentheses \-Wpointer\-arith \-Wredundant\-decls --\&\-Wreturn\-type \-Wsequence\-point \-Wshadow --\&\-Wsign\-compare \-Wstrict\-aliasing --\&\-Wswitch \-Wswitch\-default \-Wswitch\-enum --\&\-Wsystem\-headers \-Wtrigraphs \-Wundef \-Wuninitialized --\&\-Wunknown\-pragmas \-Wunreachable\-code --\&\-Wunused \-Wunused\-function \-Wunused\-label \-Wunused\-parameter --\&\-Wunused\-value \-Wunused\-variable \-Wwrite\-strings\fR --.IP "\fIC\-only Warning Options\fR" 4 --.IX Item "C-only Warning Options" --\&\fB\-Wbad\-function\-cast \-Wmissing\-declarations --\&\-Wmissing\-prototypes \-Wnested\-externs --\&\-Wstrict\-prototypes \-Wtraditional\fR --.IP "\fIDebugging Options\fR" 4 --.IX Item "Debugging Options" --\&\fB\-d\fR\fIletters\fR \fB\-dumpspecs \-dumpmachine \-dumpversion --\&\-fdump\-unnumbered \-fdump\-translation\-unit\fR[\fB\-\fR\fIn\fR] --\&\fB\-fdump\-class\-hierarchy\fR[\fB\-\fR\fIn\fR] --\&\fB\-fdump\-tree\-original\fR[\fB\-\fR\fIn\fR] --\&\fB\-fdump\-tree\-optimized\fR[\fB\-\fR\fIn\fR] --\&\fB\-fdump\-tree\-inlined\fR[\fB\-\fR\fIn\fR] --\&\fB\-feliminate\-dwarf2\-dups \-fmem\-report --\&\-fprofile\-arcs \-frandom\-seed=\fR\fIn\fR --\&\fB\-fsched\-verbose=\fR\fIn\fR \fB\-ftest\-coverage \-ftime\-report --\&\-g \-g\fR\fIlevel\fR \fB\-gcoff \-gdwarf \-gdwarf\-1 \-gdwarf\-1+ \-gdwarf\-2 --\&\-ggdb \-gstabs \-gstabs+ \-gvms \-gxcoff \-gxcoff+ --\&\-p \-pg \-print\-file\-name=\fR\fIlibrary\fR \fB\-print\-libgcc\-file\-name --\&\-print\-multi\-directory \-print\-multi\-lib --\&\-print\-prog\-name=\fR\fIprogram\fR \fB\-print\-search\-dirs \-Q --\&\-save\-temps \-time\fR --.IP "\fIOptimization Options\fR" 4 --.IX Item "Optimization Options" --\&\fB\-falign\-functions=\fR\fIn\fR \fB\-falign\-jumps=\fR\fIn\fR --\&\fB\-falign\-labels=\fR\fIn\fR \fB\-falign\-loops=\fR\fIn\fR --\&\fB\-fbranch\-probabilities \-fcaller\-saves \-fcprop\-registers --\&\-fcse\-follow\-jumps \-fcse\-skip\-blocks \-fdata\-sections --\&\-fdelayed\-branch \-fdelete\-null\-pointer\-checks --\&\-fexpensive\-optimizations \-ffast\-math \-ffloat\-store --\&\-fforce\-addr \-fforce\-mem \-ffunction\-sections --\&\-fgcse \-fgcse\-lm \-fgcse\-sm \-floop\-optimize \-fcrossjumping --\&\-fif\-conversion \-fif\-conversion2 --\&\-finline\-functions \-finline\-limit=\fR\fIn\fR \fB\-fkeep\-inline\-functions --\&\-fkeep\-static\-consts \-fmerge\-constants \-fmerge\-all\-constants --\&\-fmove\-all\-movables \-fnew\-ra \-fno\-branch\-count\-reg --\&\-fno\-default\-inline \-fno\-defer\-pop --\&\-fno\-function\-cse \-fno\-guess\-branch\-probability --\&\-fno\-inline \-fno\-math\-errno \-fno\-peephole \-fno\-peephole2 --\&\-funsafe\-math\-optimizations \-ffinite\-math\-only --\&\-fno\-trapping\-math \-fno\-zero\-initialized\-in\-bss --\&\-fomit\-frame\-pointer \-foptimize\-register\-move --\&\-foptimize\-sibling\-calls \-fprefetch\-loop\-arrays --\&\-freduce\-all\-givs \-fregmove \-frename\-registers --\&\-freorder\-blocks \-freorder\-functions --\&\-frerun\-cse\-after\-loop \-frerun\-loop\-opt --\&\-fschedule\-insns \-fschedule\-insns2 --\&\-fno\-sched\-interblock \-fno\-sched\-spec \-fsched\-spec\-load --\&\-fsched\-spec\-load\-dangerous \-fsignaling\-nans --\&\-fsingle\-precision\-constant \-fssa \-fssa\-ccp \-fssa\-dce --\&\-fstrength\-reduce \-fstrict\-aliasing \-ftracer \-fthread\-jumps --\&\-funroll\-all\-loops \-funroll\-loops --\&\-\-param\fR \fIname\fR\fB=\fR\fIvalue\fR --\&\fB\-O \-O0 \-O1 \-O2 \-O3 \-Os\fR --.IP "\fIPreprocessor Options\fR" 4 --.IX Item "Preprocessor Options" --\&\fB\-$ \-A\fR\fIquestion\fR\fB=\fR\fIanswer\fR --\&\fB\-A\-\fR\fIquestion\fR[\fB=\fR\fIanswer\fR] --\&\fB\-C \-dD \-dI \-dM \-dN --\&\-D\fR\fImacro\fR[\fB=\fR\fIdefn\fR] \fB\-E \-H --\&\-idirafter\fR \fIdir\fR --\&\fB\-include\fR \fIfile\fR \fB\-imacros\fR \fIfile\fR --\&\fB\-iprefix\fR \fIfile\fR \fB\-iwithprefix\fR \fIdir\fR --\&\fB\-iwithprefixbefore\fR \fIdir\fR \fB\-isystem\fR \fIdir\fR --\&\fB\-M \-MM \-MF \-MG \-MP \-MQ \-MT \-nostdinc \-P \-remap --\&\-trigraphs \-undef \-U\fR\fImacro\fR \fB\-Wp,\fR\fIoption\fR --.IP "\fIAssembler Option\fR" 4 --.IX Item "Assembler Option" --\&\fB\-Wa,\fR\fIoption\fR --.IP "\fILinker Options\fR" 4 --.IX Item "Linker Options" --\&\fIobject-file-name\fR \fB\-l\fR\fIlibrary\fR --\&\fB\-nostartfiles \-nodefaultlibs \-nostdlib --\&\-s \-static \-static\-libgcc \-shared \-shared\-libgcc \-symbolic --\&\-Wl,\fR\fIoption\fR \fB\-Xlinker\fR \fIoption\fR --\&\fB\-u\fR \fIsymbol\fR --.IP "\fIDirectory Options\fR" 4 --.IX Item "Directory Options" --\&\fB\-B\fR\fIprefix\fR \fB\-I\fR\fIdir\fR \fB\-I\- \-L\fR\fIdir\fR \fB\-specs=\fR\fIfile\fR --.IP "\fITarget Options\fR" 4 --.IX Item "Target Options" --\&\fB\-V\fR \fIversion\fR \fB\-b\fR \fImachine\fR --.IP "\fIMachine Dependent Options\fR" 4 --.IX Item "Machine Dependent Options" --\&\fIM680x0 Options\fR --\&\fB\-m68000 \-m68020 \-m68020\-40 \-m68020\-60 \-m68030 \-m68040 --\&\-m68060 \-mcpu32 \-m5200 \-m68881 \-mbitfield \-mc68000 \-mc68020 --\&\-mfpa \-mnobitfield \-mrtd \-mshort \-msoft\-float \-mpcrel --\&\-malign\-int \-mstrict\-align\fR --.Sp --\&\fIM68hc1x Options\fR --\&\fB\-m6811 \-m6812 \-m68hc11 \-m68hc12 \-m68hcs12 --\&\-mauto\-incdec \-minmax \-mlong\-calls \-mshort --\&\-msoft\-reg\-count=\fR\fIcount\fR --.Sp --\&\fI\s-1VAX\s0 Options\fR --\&\fB\-mg \-mgnu \-munix\fR --.Sp --\&\fI\s-1SPARC\s0 Options\fR --\&\fB\-mcpu=\fR\fIcpu-type\fR --\&\fB\-mtune=\fR\fIcpu-type\fR --\&\fB\-mcmodel=\fR\fIcode-model\fR --\&\fB\-m32 \-m64 --\&\-mapp\-regs \-mbroken\-saverestore \-mcypress --\&\-mfaster\-structs \-mflat --\&\-mfpu \-mhard\-float \-mhard\-quad\-float --\&\-mimpure\-text \-mlittle\-endian \-mlive\-g0 \-mno\-app\-regs --\&\-mno\-faster\-structs \-mno\-flat \-mno\-fpu --\&\-mno\-impure\-text \-mno\-stack\-bias \-mno\-unaligned\-doubles --\&\-msoft\-float \-msoft\-quad\-float \-msparclite \-mstack\-bias --\&\-msupersparc \-munaligned\-doubles \-mv8 --\&\-threads \-pthreads\fR --.Sp --\&\fI\s-1ARM\s0 Options\fR --\&\fB\-mapcs\-frame \-mno\-apcs\-frame --\&\-mapcs\-26 \-mapcs\-32 --\&\-mapcs\-stack\-check \-mno\-apcs\-stack\-check --\&\-mapcs\-float \-mno\-apcs\-float --\&\-mapcs\-reentrant \-mno\-apcs\-reentrant --\&\-msched\-prolog \-mno\-sched\-prolog --\&\-mlittle\-endian \-mbig\-endian \-mwords\-little\-endian --\&\-malignment\-traps \-mno\-alignment\-traps --\&\-msoft\-float \-mhard\-float \-mfpe --\&\-mthumb\-interwork \-mno\-thumb\-interwork --\&\-mcpu=\fR\fIname\fR \fB\-march=\fR\fIname\fR \fB\-mfpe=\fR\fIname\fR --\&\fB\-mstructure\-size\-boundary=\fR\fIn\fR --\&\fB\-mabort\-on\-noreturn --\&\-mlong\-calls \-mno\-long\-calls --\&\-msingle\-pic\-base \-mno\-single\-pic\-base --\&\-mpic\-register=\fR\fIreg\fR --\&\fB\-mnop\-fun\-dllimport --\&\-mpoke\-function\-name --\&\-mthumb \-marm --\&\-mtpcs\-frame \-mtpcs\-leaf\-frame --\&\-mcaller\-super\-interworking \-mcallee\-super\-interworking\fR --.Sp --\&\fI\s-1MN10200\s0 Options\fR --\&\fB\-mrelax\fR --.Sp --\&\fI\s-1MN10300\s0 Options\fR --\&\fB\-mmult\-bug \-mno\-mult\-bug --\&\-mam33 \-mno\-am33 --\&\-mno\-crt0 \-mrelax\fR --.Sp --\&\fIM32R/D Options\fR --\&\fB\-m32rx \-m32r \-mcode\-model=\fR\fImodel-type\fR --\&\fB\-msdata=\fR\fIsdata-type\fR \fB\-G\fR \fInum\fR --.Sp --\&\fIM88K Options\fR --\&\fB\-m88000 \-m88100 \-m88110 \-mbig\-pic --\&\-mcheck\-zero\-division \-mhandle\-large\-shift --\&\-midentify\-revision \-mno\-check\-zero\-division --\&\-mno\-ocs\-debug\-info \-mno\-ocs\-frame\-position --\&\-mno\-optimize\-arg\-area \-mno\-serialize\-volatile --\&\-mno\-underscores \-mocs\-debug\-info --\&\-mocs\-frame\-position \-moptimize\-arg\-area --\&\-mserialize\-volatile \-mshort\-data\-\fR\fInum\fR \fB\-msvr3 --\&\-msvr4 \-mtrap\-large\-shift \-muse\-div\-instruction --\&\-mversion\-03.00 \-mwarn\-passed\-structs\fR --.Sp --\&\fI\s-1RS/6000\s0 and PowerPC Options\fR --\&\fB\-mcpu=\fR\fIcpu-type\fR --\&\fB\-mtune=\fR\fIcpu-type\fR --\&\fB\-mpower \-mno\-power \-mpower2 \-mno\-power2 --\&\-mpowerpc \-mpowerpc64 \-mno\-powerpc --\&\-maltivec \-mno\-altivec --\&\-mpowerpc\-gpopt \-mno\-powerpc\-gpopt --\&\-mpowerpc\-gfxopt \-mno\-powerpc\-gfxopt --\&\-mnew\-mnemonics \-mold\-mnemonics --\&\-mfull\-toc \-mminimal\-toc \-mno\-fp\-in\-toc \-mno\-sum\-in\-toc --\&\-m64 \-m32 \-mxl\-call \-mno\-xl\-call \-mpe --\&\-msoft\-float \-mhard\-float \-mmultiple \-mno\-multiple --\&\-mstring \-mno\-string \-mupdate \-mno\-update --\&\-mfused\-madd \-mno\-fused\-madd \-mbit\-align \-mno\-bit\-align --\&\-mstrict\-align \-mno\-strict\-align \-mrelocatable --\&\-mno\-relocatable \-mrelocatable\-lib \-mno\-relocatable\-lib --\&\-mtoc \-mno\-toc \-mlittle \-mlittle\-endian \-mbig \-mbig\-endian --\&\-mcall\-aix \-mcall\-sysv \-mcall\-netbsd --\&\-maix\-struct\-return \-msvr4\-struct\-return --\&\-mabi=altivec \-mabi=no\-altivec --\&\-mabi=spe \-mabi=no\-spe --\&\-misel=yes \-misel=no --\&\-mprototype \-mno\-prototype --\&\-msim \-mmvme \-mads \-myellowknife \-memb \-msdata --\&\-msdata=\fR\fIopt\fR \fB\-mvxworks \-mwindiss \-G\fR \fInum\fR \fB\-pthread\fR --.Sp --\&\fIDarwin Options\fR --.Sp --\&\fB\-all_load \-allowable_client \-arch \-arch_errors_fatal --\&\-arch_only \-bind_at_load \-bundle \-bundle_loader --\&\-client_name \-compatibility_version \-current_version --\&\-dependency\-file \-dylib_file \-dylinker_install_name --\&\-dynamic \-dynamiclib \-exported_symbols_list --\&\-filelist \-flat_namespace \-force_cpusubtype_ALL --\&\-force_flat_namespace \-headerpad_max_install_names --\&\-image_base \-init \-install_name \-keep_private_externs --\&\-multi_module \-multiply_defined \-multiply_defined_unused --\&\-noall_load \-nomultidefs \-noprebind \-noseglinkedit --\&\-pagezero_size \-prebind \-prebind_all_twolevel_modules --\&\-private_bundle \-read_only_relocs \-sectalign --\&\-sectobjectsymbols \-whyload \-seg1addr --\&\-sectcreate \-sectobjectsymbols \-sectorder --\&\-seg_addr_table \-seg_addr_table_filename \-seglinkedit --\&\-segprot \-segs_read_only_addr \-segs_read_write_addr --\&\-single_module \-static \-sub_library \-sub_umbrella --\&\-twolevel_namespace \-umbrella \-undefined --\&\-unexported_symbols_list \-weak_reference_mismatches \-whatsloaded\fR --.Sp --\&\fI\s-1RT\s0 Options\fR --\&\fB\-mcall\-lib\-mul \-mfp\-arg\-in\-fpregs \-mfp\-arg\-in\-gregs --\&\-mfull\-fp\-blocks \-mhc\-struct\-return \-min\-line\-mul --\&\-mminimum\-fp\-blocks \-mnohc\-struct\-return\fR --.Sp --\&\fI\s-1MIPS\s0 Options\fR --\&\fB\-mabicalls \-march=\fR\fIcpu-type\fR \fB\-mtune=\fR\fIcpu=type\fR --\&\fB\-mcpu=\fR\fIcpu-type\fR \fB\-membedded\-data \-muninit\-const\-in\-rodata --\&\-membedded\-pic \-mfp32 \-mfp64 \-mfused\-madd \-mno\-fused\-madd --\&\-mgas \-mgp32 \-mgp64 --\&\-mgpopt \-mhalf\-pic \-mhard\-float \-mint64 \-mips1 --\&\-mips2 \-mips3 \-mips4 \-mlong64 \-mlong32 \-mlong\-calls \-mmemcpy --\&\-mmips\-as \-mmips\-tfile \-mno\-abicalls --\&\-mno\-embedded\-data \-mno\-uninit\-const\-in\-rodata --\&\-mno\-embedded\-pic \-mno\-gpopt \-mno\-long\-calls --\&\-mno\-memcpy \-mno\-mips\-tfile \-mno\-rnames \-mno\-stats --\&\-mrnames \-msoft\-float --\&\-m4650 \-msingle\-float \-mmad --\&\-mstats \-EL \-EB \-G\fR \fInum\fR \fB\-nocpp --\&\-mabi=32 \-mabi=n32 \-mabi=64 \-mabi=eabi --\&\-mfix7000 \-mno\-crt0 \-mflush\-func=\fR\fIfunc\fR \fB\-mno\-flush\-func --\&\-mbranch\-likely \-mno\-branch\-likely\fR --.Sp --\&\fIi386 and x86\-64 Options\fR --\&\fB\-mcpu=\fR\fIcpu-type\fR \fB\-march=\fR\fIcpu-type\fR --\&\fB\-mfpmath=\fR\fIunit\fR \fB\-masm=\fR\fIdialect\fR \fB\-mno\-fancy\-math\-387 --\&\-mno\-fp\-ret\-in\-387 \-msoft\-float \-msvr3\-shlib --\&\-mno\-wide\-multiply \-mrtd \-malign\-double --\&\-mpreferred\-stack\-boundary=\fR\fInum\fR --\&\fB\-mmmx \-msse \-msse2 \-msse3 \-m3dnow --\&\-mthreads \-mno\-align\-stringops \-minline\-all\-stringops --\&\-mpush\-args \-maccumulate\-outgoing\-args \-m128bit\-long\-double --\&\-m96bit\-long\-double \-mregparm=\fR\fInum\fR \fB\-momit\-leaf\-frame\-pointer --\&\-mno\-red\-zone --\&\-mcmodel=\fR\fIcode-model\fR --\&\fB\-m32 \-m64\fR --.Sp --\&\fI\s-1HPPA\s0 Options\fR --\&\fB\-march=\fR\fIarchitecture-type\fR --\&\fB\-mbig\-switch \-mdisable\-fpregs \-mdisable\-indexing --\&\-mfast\-indirect\-calls \-mgas \-mgnu\-ld \-mhp\-ld --\&\-mjump\-in\-delay \-mlinker\-opt \-mlong\-calls --\&\-mlong\-load\-store \-mno\-big\-switch \-mno\-disable\-fpregs --\&\-mno\-disable\-indexing \-mno\-fast\-indirect\-calls \-mno\-gas --\&\-mno\-jump\-in\-delay \-mno\-long\-load\-store --\&\-mno\-portable\-runtime \-mno\-soft\-float --\&\-mno\-space\-regs \-msoft\-float \-mpa\-risc\-1\-0 --\&\-mpa\-risc\-1\-1 \-mpa\-risc\-2\-0 \-mportable\-runtime --\&\-mschedule=\fR\fIcpu-type\fR \fB\-mspace\-regs \-msio \-mwsio --\&\-nolibdld \-static \-threads\fR --.Sp --\&\fIIntel 960 Options\fR --\&\fB\-m\fR\fIcpu-type\fR \fB\-masm\-compat \-mclean\-linkage --\&\-mcode\-align \-mcomplex\-addr \-mleaf\-procedures --\&\-mic\-compat \-mic2.0\-compat \-mic3.0\-compat --\&\-mintel\-asm \-mno\-clean\-linkage \-mno\-code\-align --\&\-mno\-complex\-addr \-mno\-leaf\-procedures --\&\-mno\-old\-align \-mno\-strict\-align \-mno\-tail\-call --\&\-mnumerics \-mold\-align \-msoft\-float \-mstrict\-align --\&\-mtail\-call\fR --.Sp --\&\fI\s-1DEC\s0 Alpha Options\fR --\&\fB\-mno\-fp\-regs \-msoft\-float \-malpha\-as \-mgas --\&\-mieee \-mieee\-with\-inexact \-mieee\-conformant --\&\-mfp\-trap\-mode=\fR\fImode\fR \fB\-mfp\-rounding\-mode=\fR\fImode\fR --\&\fB\-mtrap\-precision=\fR\fImode\fR \fB\-mbuild\-constants --\&\-mcpu=\fR\fIcpu-type\fR \fB\-mtune=\fR\fIcpu-type\fR --\&\fB\-mbwx \-mmax \-mfix \-mcix --\&\-mfloat\-vax \-mfloat\-ieee --\&\-mexplicit\-relocs \-msmall\-data \-mlarge\-data --\&\-mmemory\-latency=\fR\fItime\fR --.Sp --\&\fI\s-1DEC\s0 Alpha/VMS Options\fR --\&\fB\-mvms\-return\-codes\fR --.Sp --\&\fIH8/300 Options\fR --\&\fB\-mrelax \-mh \-ms \-mn \-mint32 \-malign\-300\fR --.Sp --\&\fI\s-1SH\s0 Options\fR --\&\fB\-m1 \-m2 \-m3 \-m3e --\&\-m4\-nofpu \-m4\-single\-only \-m4\-single \-m4 --\&\-m5\-64media \-m5\-64media\-nofpu --\&\-m5\-32media \-m5\-32media\-nofpu --\&\-m5\-compact \-m5\-compact\-nofpu --\&\-mb \-ml \-mdalign \-mrelax --\&\-mbigtable \-mfmovd \-mhitachi \-mnomacsave --\&\-mieee \-misize \-mpadstruct \-mspace --\&\-mprefergot \-musermode\fR --.Sp --\&\fISystem V Options\fR --\&\fB\-Qy \-Qn \-YP,\fR\fIpaths\fR \fB\-Ym,\fR\fIdir\fR --.Sp --\&\fI\s-1ARC\s0 Options\fR --\&\fB\-EB \-EL --\&\-mmangle\-cpu \-mcpu=\fR\fIcpu\fR \fB\-mtext=\fR\fItext-section\fR --\&\fB\-mdata=\fR\fIdata-section\fR \fB\-mrodata=\fR\fIreadonly-data-section\fR --.Sp --\&\fITMS320C3x/C4x Options\fR --\&\fB\-mcpu=\fR\fIcpu\fR \fB\-mbig \-msmall \-mregparm \-mmemparm --\&\-mfast\-fix \-mmpyi \-mbk \-mti \-mdp\-isr\-reload --\&\-mrpts=\fR\fIcount\fR \fB\-mrptb \-mdb \-mloop\-unsigned --\&\-mparallel\-insns \-mparallel\-mpy \-mpreserve\-float\fR --.Sp --\&\fIV850 Options\fR --\&\fB\-mlong\-calls \-mno\-long\-calls \-mep \-mno\-ep --\&\-mprolog\-function \-mno\-prolog\-function \-mspace --\&\-mtda=\fR\fIn\fR \fB\-msda=\fR\fIn\fR \fB\-mzda=\fR\fIn\fR --\&\fB\-mapp\-regs \-mno\-app\-regs --\&\-mdisable\-callt \-mno\-disable\-callt --\&\-mv850e --\&\-mv850 \-mbig\-switch\fR --.Sp --\&\fI\s-1NS32K\s0 Options\fR --\&\fB\-m32032 \-m32332 \-m32532 \-m32081 \-m32381 --\&\-mmult\-add \-mnomult\-add \-msoft\-float \-mrtd \-mnortd --\&\-mregparam \-mnoregparam \-msb \-mnosb --\&\-mbitfield \-mnobitfield \-mhimem \-mnohimem\fR --.Sp --\&\fI\s-1AVR\s0 Options\fR --\&\fB\-mmcu=\fR\fImcu\fR \fB\-msize \-minit\-stack=\fR\fIn\fR \fB\-mno\-interrupts --\&\-mcall\-prologues \-mno\-tablejump \-mtiny\-stack\fR --.Sp --\&\fIMCore Options\fR --\&\fB\-mhardlit \-mno\-hardlit \-mdiv \-mno\-div \-mrelax\-immediates --\&\-mno\-relax\-immediates \-mwide\-bitfields \-mno\-wide\-bitfields --\&\-m4byte\-functions \-mno\-4byte\-functions \-mcallgraph\-data --\&\-mno\-callgraph\-data \-mslow\-bytes \-mno\-slow\-bytes \-mno\-lsim --\&\-mlittle\-endian \-mbig\-endian \-m210 \-m340 \-mstack\-increment\fR --.Sp --\&\fI\s-1MMIX\s0 Options\fR --\&\fB\-mlibfuncs \-mno\-libfuncs \-mepsilon \-mno\-epsilon \-mabi=gnu --\&\-mabi=mmixware \-mzero\-extend \-mknuthdiv \-mtoplevel\-symbols --\&\-melf \-mbranch\-predict \-mno\-branch\-predict \-mbase\-addresses --\&\-mno\-base\-addresses \-msingle\-exit \-mno\-single\-exit\fR --.Sp --\&\fI\s-1IA\-64\s0 Options\fR --\&\fB\-mbig\-endian \-mlittle\-endian \-mgnu\-as \-mgnu\-ld \-mno\-pic --\&\-mvolatile\-asm\-stop \-mb\-step \-mregister\-names \-mno\-sdata --\&\-mconstant\-gp \-mauto\-pic \-minline\-float\-divide\-min\-latency --\&\-minline\-float\-divide\-max\-throughput --\&\-minline\-int\-divide\-min\-latency --\&\-minline\-int\-divide\-max\-throughput \-mno\-dwarf2\-asm --\&\-mfixed\-range=\fR\fIregister-range\fR --.Sp --\&\fID30V Options\fR --\&\fB\-mextmem \-mextmemory \-monchip \-mno\-asm\-optimize --\&\-masm\-optimize \-mbranch\-cost=\fR\fIn\fR \fB\-mcond\-exec=\fR\fIn\fR --.Sp --\&\fIS/390 and zSeries Options\fR --\&\fB\-mhard\-float \-msoft\-float \-mbackchain \-mno\-backchain --\&\-msmall\-exec \-mno\-small\-exec \-mmvcle \-mno\-mvcle --\&\-m64 \-m31 \-mdebug \-mno\-debug\fR --.Sp --\&\fI\s-1CRIS\s0 Options\fR --\&\fB\-mcpu=\fR\fIcpu\fR \fB\-march=\fR\fIcpu\fR \fB\-mtune=\fR\fIcpu\fR --\&\fB\-mmax\-stack\-frame=\fR\fIn\fR \fB\-melinux\-stacksize=\fR\fIn\fR --\&\fB\-metrax4 \-metrax100 \-mpdebug \-mcc\-init \-mno\-side\-effects --\&\-mstack\-align \-mdata\-align \-mconst\-align --\&\-m32\-bit \-m16\-bit \-m8\-bit \-mno\-prologue\-epilogue \-mno\-gotplt --\&\-melf \-maout \-melinux \-mlinux \-sim \-sim2 --\&\-mmul\-bug\-workaround \-mno\-mul\-bug\-workaround\fR --.Sp --\&\fI\s-1PDP\-11\s0 Options\fR --\&\fB\-mfpu \-msoft\-float \-mac0 \-mno\-ac0 \-m40 \-m45 \-m10 --\&\-mbcopy \-mbcopy\-builtin \-mint32 \-mno\-int16 --\&\-mint16 \-mno\-int32 \-mfloat32 \-mno\-float64 --\&\-mfloat64 \-mno\-float32 \-mabshi \-mno\-abshi --\&\-mbranch\-expensive \-mbranch\-cheap --\&\-msplit \-mno\-split \-munix\-asm \-mdec\-asm\fR --.Sp --\&\fIXstormy16 Options\fR --\&\fB\-msim\fR --.Sp --\&\fIXtensa Options\fR --\&\fB\-mbig\-endian \-mlittle\-endian --\&\-mdensity \-mno\-density --\&\-mmac16 \-mno\-mac16 --\&\-mmul16 \-mno\-mul16 --\&\-mmul32 \-mno\-mul32 --\&\-mnsa \-mno\-nsa --\&\-mminmax \-mno\-minmax --\&\-msext \-mno\-sext --\&\-mbooleans \-mno\-booleans --\&\-mhard\-float \-msoft\-float --\&\-mfused\-madd \-mno\-fused\-madd --\&\-mserialize\-volatile \-mno\-serialize\-volatile --\&\-mtext\-section\-literals \-mno\-text\-section\-literals --\&\-mtarget\-align \-mno\-target\-align --\&\-mlongcalls \-mno\-longcalls\fR --.Sp --\&\fI\s-1FRV\s0 Options\fR --\&\fB\-mgpr\-32 \-mgpr\-64 \-mfpr\-32 \-mfpr\-64 --\&\-mhard\-float \-msoft\-float \-malloc\-cc \-mfixed\-cc --\&\-mdword \-mno\-dword \-mdouble \-mno\-double --\&\-mmedia \-mno\-media \-mmuladd \-mno\-muladd \-mlibrary\-pic --\&\-macc\-4 \-macc\-8 \-mpack \-mno\-pack \-mno\-eflags --\&\-mcond\-move \-mno\-cond\-move \-mscc \-mno\-scc --\&\-mcond\-exec \-mno\-cond\-exec \-mvliw\-branch \-mno\-vliw\-branch --\&\-mmulti\-cond\-exec \-mno\-multi\-cond\-exec \-mnested\-cond\-exec --\&\-mno\-nested\-cond\-exec \-mtomcat\-stats --\&\-mcpu=\fR\fIcpu\fR --.IP "\fICode Generation Options\fR" 4 --.IX Item "Code Generation Options" --\&\fB\-fcall\-saved\-\fR\fIreg\fR \fB\-fcall\-used\-\fR\fIreg\fR --\&\fB\-ffixed\-\fR\fIreg\fR \fB\-fexceptions --\&\-fnon\-call\-exceptions \-funwind\-tables --\&\-fasynchronous\-unwind\-tables --\&\-finhibit\-size\-directive \-finstrument\-functions --\&\-fno\-common \-fno\-ident \-fno\-gnu\-linker --\&\-fpcc\-struct\-return \-fpic \-fPIC --\&\-freg\-struct\-return \-fshared\-data \-fshort\-enums --\&\-fshort\-double \-fshort\-wchar \-fvolatile --\&\-fvolatile\-global \-fvolatile\-static --\&\-fverbose\-asm \-fpack\-struct \-fstack\-check --\&\-fstack\-limit\-register=\fR\fIreg\fR \fB\-fstack\-limit\-symbol=\fR\fIsym\fR --\&\fB\-fargument\-alias \-fargument\-noalias --\&\-fargument\-noalias\-global \-fleading\-underscore --\&\-ftls\-model=\fR\fImodel\fR --\&\fB\-ftrapv \-fbounds\-check\fR --.Sh "Options Controlling the Kind of Output" --.IX Subsection "Options Controlling the Kind of Output" --Compilation can involve up to four stages: preprocessing, compilation --proper, assembly and linking, always in that order. The first three --stages apply to an individual source file, and end by producing an --object file; linking combines all the object files (those newly --compiled, and those specified as input) into an executable file. --.PP --For any given input file, the file name suffix determines what kind of --compilation is done: --.IP "\fIfile\fR\fB.c\fR" 4 --.IX Item "file.c" --C source code which must be preprocessed. --.IP "\fIfile\fR\fB.i\fR" 4 --.IX Item "file.i" --C source code which should not be preprocessed. --.IP "\fIfile\fR\fB.ii\fR" 4 --.IX Item "file.ii" --\&\*(C+ source code which should not be preprocessed. --.IP "\fIfile\fR\fB.m\fR" 4 --.IX Item "file.m" --Objective-C source code. Note that you must link with the library --\&\fIlibobjc.a\fR to make an Objective-C program work. --.IP "\fIfile\fR\fB.mi\fR" 4 --.IX Item "file.mi" --Objective-C source code which should not be preprocessed. --.IP "\fIfile\fR\fB.h\fR" 4 --.IX Item "file.h" --C header file (not to be compiled or linked). --.IP "\fIfile\fR\fB.cc\fR" 4 --.IX Item "file.cc" --.PD 0 --.IP "\fIfile\fR\fB.cp\fR" 4 --.IX Item "file.cp" --.IP "\fIfile\fR\fB.cxx\fR" 4 --.IX Item "file.cxx" --.IP "\fIfile\fR\fB.cpp\fR" 4 --.IX Item "file.cpp" --.IP "\fIfile\fR\fB.c++\fR" 4 --.IX Item "file.c++" --.IP "\fIfile\fR\fB.C\fR" 4 --.IX Item "file.C" --.PD --\&\*(C+ source code which must be preprocessed. Note that in \fB.cxx\fR, --the last two letters must both be literally \fBx\fR. Likewise, --\&\fB.C\fR refers to a literal capital C. --.IP "\fIfile\fR\fB.f\fR" 4 --.IX Item "file.f" --.PD 0 --.IP "\fIfile\fR\fB.for\fR" 4 --.IX Item "file.for" --.IP "\fIfile\fR\fB.FOR\fR" 4 --.IX Item "file.FOR" --.PD --Fortran source code which should not be preprocessed. --.IP "\fIfile\fR\fB.F\fR" 4 --.IX Item "file.F" --.PD 0 --.IP "\fIfile\fR\fB.fpp\fR" 4 --.IX Item "file.fpp" --.IP "\fIfile\fR\fB.FPP\fR" 4 --.IX Item "file.FPP" --.PD --Fortran source code which must be preprocessed (with the traditional --preprocessor). --.IP "\fIfile\fR\fB.r\fR" 4 --.IX Item "file.r" --Fortran source code which must be preprocessed with a \s-1RATFOR\s0 --preprocessor (not included with \s-1GCC\s0). --.IP "\fIfile\fR\fB.ads\fR" 4 --.IX Item "file.ads" --Ada source code file which contains a library unit declaration (a --declaration of a package, subprogram, or generic, or a generic --instantiation), or a library unit renaming declaration (a package, --generic, or subprogram renaming declaration). Such files are also --called \fIspecs\fR. --.IP "\fIfile\fR\fB.adb\fR" 4 --.IX Item "file.adb" --Ada source code file containing a library unit body (a subprogram or --package body). Such files are also called \fIbodies\fR. --.IP "\fIfile\fR\fB.s\fR" 4 --.IX Item "file.s" --Assembler code. --.IP "\fIfile\fR\fB.S\fR" 4 --.IX Item "file.S" --Assembler code which must be preprocessed. --.IP "\fIother\fR" 4 --.IX Item "other" --An object file to be fed straight into linking. --Any file name with no recognized suffix is treated this way. --.PP --You can specify the input language explicitly with the \fB\-x\fR option: --.IP "\fB\-x\fR \fIlanguage\fR" 4 --.IX Item "-x language" --Specify explicitly the \fIlanguage\fR for the following input files --(rather than letting the compiler choose a default based on the file --name suffix). This option applies to all following input files until --the next \fB\-x\fR option. Possible values for \fIlanguage\fR are: --.Sp --.Vb 8 --\& c c-header cpp-output --\& c++ c++-cpp-output --\& objective-c objc-cpp-output --\& assembler assembler-with-cpp --\& ada --\& f77 f77-cpp-input ratfor --\& java --\& treelang --.Ve --.IP "\fB\-x none\fR" 4 --.IX Item "-x none" --Turn off any specification of a language, so that subsequent files are --handled according to their file name suffixes (as they are if \fB\-x\fR --has not been used at all). --.IP "\fB\-pass\-exit\-codes\fR" 4 --.IX Item "-pass-exit-codes" --Normally the \fBgcc\fR program will exit with the code of 1 if any --phase of the compiler returns a non-success return code. If you specify --\&\fB\-pass\-exit\-codes\fR, the \fBgcc\fR program will instead return with --numerically highest error produced by any phase that returned an error --indication. --.PP --If you only want some of the stages of compilation, you can use --\&\fB\-x\fR (or filename suffixes) to tell \fBgcc\fR where to start, and --one of the options \fB\-c\fR, \fB\-S\fR, or \fB\-E\fR to say where --\&\fBgcc\fR is to stop. Note that some combinations (for example, --\&\fB\-x cpp-output \-E\fR) instruct \fBgcc\fR to do nothing at all. --.IP "\fB\-c\fR" 4 --.IX Item "-c" --Compile or assemble the source files, but do not link. The linking --stage simply is not done. The ultimate output is in the form of an --object file for each source file. --.Sp --By default, the object file name for a source file is made by replacing --the suffix \fB.c\fR, \fB.i\fR, \fB.s\fR, etc., with \fB.o\fR. --.Sp --Unrecognized input files, not requiring compilation or assembly, are --ignored. --.IP "\fB\-S\fR" 4 --.IX Item "-S" --Stop after the stage of compilation proper; do not assemble. The output --is in the form of an assembler code file for each non-assembler input --file specified. --.Sp --By default, the assembler file name for a source file is made by --replacing the suffix \fB.c\fR, \fB.i\fR, etc., with \fB.s\fR. --.Sp --Input files that don't require compilation are ignored. --.IP "\fB\-E\fR" 4 --.IX Item "-E" --Stop after the preprocessing stage; do not run the compiler proper. The --output is in the form of preprocessed source code, which is sent to the --standard output. --.Sp --Input files which don't require preprocessing are ignored. --.IP "\fB\-o\fR \fIfile\fR" 4 --.IX Item "-o file" --Place output in file \fIfile\fR. This applies regardless to whatever --sort of output is being produced, whether it be an executable file, --an object file, an assembler file or preprocessed C code. --.Sp --Since only one output file can be specified, it does not make sense to --use \fB\-o\fR when compiling more than one input file, unless you are --producing an executable file as output. --.Sp --If \fB\-o\fR is not specified, the default is to put an executable file --in \fIa.out\fR, the object file for \fI\fIsource\fI.\fIsuffix\fI\fR in --\&\fI\fIsource\fI.o\fR, its assembler file in \fI\fIsource\fI.s\fR, and --all preprocessed C source on standard output. --.IP "\fB\-v\fR" 4 --.IX Item "-v" --Print (on standard error output) the commands executed to run the stages --of compilation. Also print the version number of the compiler driver --program and of the preprocessor and the compiler proper. --.IP "\fB\-###\fR" 4 --.IX Item "-###" --Like \fB\-v\fR except the commands are not executed and all command --arguments are quoted. This is useful for shell scripts to capture the --driver-generated command lines. --.IP "\fB\-pipe\fR" 4 --.IX Item "-pipe" --Use pipes rather than temporary files for communication between the --various stages of compilation. This fails to work on some systems where --the assembler is unable to read from a pipe; but the \s-1GNU\s0 assembler has --no trouble. --.IP "\fB\-\-help\fR" 4 --.IX Item "--help" --Print (on the standard output) a description of the command line options --understood by \fBgcc\fR. If the \fB\-v\fR option is also specified --then \fB\-\-help\fR will also be passed on to the various processes --invoked by \fBgcc\fR, so that they can display the command line options --they accept. If the \fB\-W\fR option is also specified then command --line options which have no documentation associated with them will also --be displayed. --.IP "\fB\-\-target\-help\fR" 4 --.IX Item "--target-help" --Print (on the standard output) a description of target specific command --line options for each tool. --.IP "\fB\-\-version\fR" 4 --.IX Item "--version" --Display the version number and copyrights of the invoked \s-1GCC\s0. --.Sh "Compiling \*(C+ Programs" --.IX Subsection "Compiling Programs" --\&\*(C+ source files conventionally use one of the suffixes \fB.C\fR, --\&\fB.cc\fR, \fB.cpp\fR, \fB.c++\fR, \fB.cp\fR, or \fB.cxx\fR; --preprocessed \*(C+ files use the suffix \fB.ii\fR. \s-1GCC\s0 recognizes --files with these names and compiles them as \*(C+ programs even if you --call the compiler the same way as for compiling C programs (usually with --the name \fBgcc\fR). --.PP --However, \*(C+ programs often require class libraries as well as a --compiler that understands the \*(C+ language\-\-\-and under some --circumstances, you might want to compile programs from standard input, --or otherwise without a suffix that flags them as \*(C+ programs. --\&\fBg++\fR is a program that calls \s-1GCC\s0 with the default language --set to \*(C+, and automatically specifies linking against the \*(C+ --library. On many systems, \fBg++\fR is also --installed with the name \fBc++\fR. --.PP --When you compile \*(C+ programs, you may specify many of the same --command-line options that you use for compiling programs in any --language; or command-line options meaningful for C and related --languages; or options that are meaningful only for \*(C+ programs. --.Sh "Options Controlling C Dialect" --.IX Subsection "Options Controlling C Dialect" --The following options control the dialect of C (or languages derived --from C, such as \*(C+ and Objective\-C) that the compiler accepts: --.IP "\fB\-ansi\fR" 4 --.IX Item "-ansi" --In C mode, support all \s-1ISO\s0 C90 programs. In \*(C+ mode, --remove \s-1GNU\s0 extensions that conflict with \s-1ISO\s0 \*(C+. --.Sp --This turns off certain features of \s-1GCC\s0 that are incompatible with \s-1ISO\s0 --C90 (when compiling C code), or of standard \*(C+ (when compiling \*(C+ code), --such as the \f(CW\*(C`asm\*(C'\fR and \f(CW\*(C`typeof\*(C'\fR keywords, and --predefined macros such as \f(CW\*(C`unix\*(C'\fR and \f(CW\*(C`vax\*(C'\fR that identify the --type of system you are using. It also enables the undesirable and --rarely used \s-1ISO\s0 trigraph feature. For the C compiler, --it disables recognition of \*(C+ style \fB//\fR comments as well as --the \f(CW\*(C`inline\*(C'\fR keyword. --.Sp --The alternate keywords \f(CW\*(C`_\|_asm_\|_\*(C'\fR, \f(CW\*(C`_\|_extension_\|_\*(C'\fR, --\&\f(CW\*(C`_\|_inline_\|_\*(C'\fR and \f(CW\*(C`_\|_typeof_\|_\*(C'\fR continue to work despite --\&\fB\-ansi\fR. You would not want to use them in an \s-1ISO\s0 C program, of --course, but it is useful to put them in header files that might be included --in compilations done with \fB\-ansi\fR. Alternate predefined macros --such as \f(CW\*(C`_\|_unix_\|_\*(C'\fR and \f(CW\*(C`_\|_vax_\|_\*(C'\fR are also available, with or --without \fB\-ansi\fR. --.Sp --The \fB\-ansi\fR option does not cause non-ISO programs to be --rejected gratuitously. For that, \fB\-pedantic\fR is required in --addition to \fB\-ansi\fR. --.Sp --The macro \f(CW\*(C`_\|_STRICT_ANSI_\|_\*(C'\fR is predefined when the \fB\-ansi\fR --option is used. Some header files may notice this macro and refrain --from declaring certain functions or defining certain macros that the --\&\s-1ISO\s0 standard doesn't call for; this is to avoid interfering with any --programs that might use these names for other things. --.Sp --Functions which would normally be built in but do not have semantics --defined by \s-1ISO\s0 C (such as \f(CW\*(C`alloca\*(C'\fR and \f(CW\*(C`ffs\*(C'\fR) are not built-in --functions with \fB\-ansi\fR is used. --.IP "\fB\-std=\fR" 4 --.IX Item "-std=" --Determine the language standard. This option is currently only --supported when compiling C or \*(C+. A value for this option must be --provided; possible values are --.RS 4 --.IP "\fBc89\fR" 4 --.IX Item "c89" --.PD 0 --.IP "\fBiso9899:1990\fR" 4 --.IX Item "iso9899:1990" --.PD --\&\s-1ISO\s0 C90 (same as \fB\-ansi\fR). --.IP "\fBiso9899:199409\fR" 4 --.IX Item "iso9899:199409" --\&\s-1ISO\s0 C90 as modified in amendment 1. --.IP "\fBc99\fR" 4 --.IX Item "c99" --.PD 0 --.IP "\fBc9x\fR" 4 --.IX Item "c9x" --.IP "\fBiso9899:1999\fR" 4 --.IX Item "iso9899:1999" --.IP "\fBiso9899:199x\fR" 4 --.IX Item "iso9899:199x" --.PD --\&\s-1ISO\s0 C99. Note that this standard is not yet fully supported; see --<\fBhttp://gcc.gnu.org/gcc\-3.3/c99status.html\fR> for more information. The --names \fBc9x\fR and \fBiso9899:199x\fR are deprecated. --.IP "\fBgnu89\fR" 4 --.IX Item "gnu89" --Default, \s-1ISO\s0 C90 plus \s-1GNU\s0 extensions (including some C99 features). --.IP "\fBgnu99\fR" 4 --.IX Item "gnu99" --.PD 0 --.IP "\fBgnu9x\fR" 4 --.IX Item "gnu9x" --.PD --\&\s-1ISO\s0 C99 plus \s-1GNU\s0 extensions. When \s-1ISO\s0 C99 is fully implemented in \s-1GCC\s0, --this will become the default. The name \fBgnu9x\fR is deprecated. --.IP "\fBc++98\fR" 4 --.IX Item "c++98" --The 1998 \s-1ISO\s0 \*(C+ standard plus amendments. --.IP "\fBgnu++98\fR" 4 --.IX Item "gnu++98" --The same as \fB\-std=c++98\fR plus \s-1GNU\s0 extensions. This is the --default for \*(C+ code. --.RE --.RS 4 --.Sp --Even when this option is not specified, you can still use some of the --features of newer standards in so far as they do not conflict with --previous C standards. For example, you may use \f(CW\*(C`_\|_restrict_\|_\*(C'\fR even --when \fB\-std=c99\fR is not specified. --.Sp --The \fB\-std\fR options specifying some version of \s-1ISO\s0 C have the same --effects as \fB\-ansi\fR, except that features that were not in \s-1ISO\s0 C90 --but are in the specified version (for example, \fB//\fR comments and --the \f(CW\*(C`inline\*(C'\fR keyword in \s-1ISO\s0 C99) are not disabled. --.RE --.IP "\fB\-aux\-info\fR \fIfilename\fR" 4 --.IX Item "-aux-info filename" --Output to the given filename prototyped declarations for all functions --declared and/or defined in a translation unit, including those in header --files. This option is silently ignored in any language other than C. --.Sp --Besides declarations, the file indicates, in comments, the origin of --each declaration (source file and line), whether the declaration was --implicit, prototyped or unprototyped (\fBI\fR, \fBN\fR for new or --\&\fBO\fR for old, respectively, in the first character after the line --number and the colon), and whether it came from a declaration or a --definition (\fBC\fR or \fBF\fR, respectively, in the following --character). In the case of function definitions, a K&R\-style list of --arguments followed by their declarations is also provided, inside --comments, after the declaration. --.IP "\fB\-fno\-asm\fR" 4 --.IX Item "-fno-asm" --Do not recognize \f(CW\*(C`asm\*(C'\fR, \f(CW\*(C`inline\*(C'\fR or \f(CW\*(C`typeof\*(C'\fR as a --keyword, so that code can use these words as identifiers. You can use --the keywords \f(CW\*(C`_\|_asm_\|_\*(C'\fR, \f(CW\*(C`_\|_inline_\|_\*(C'\fR and \f(CW\*(C`_\|_typeof_\|_\*(C'\fR --instead. \fB\-ansi\fR implies \fB\-fno\-asm\fR. --.Sp --In \*(C+, this switch only affects the \f(CW\*(C`typeof\*(C'\fR keyword, since --\&\f(CW\*(C`asm\*(C'\fR and \f(CW\*(C`inline\*(C'\fR are standard keywords. You may want to --use the \fB\-fno\-gnu\-keywords\fR flag instead, which has the same --effect. In C99 mode (\fB\-std=c99\fR or \fB\-std=gnu99\fR), this --switch only affects the \f(CW\*(C`asm\*(C'\fR and \f(CW\*(C`typeof\*(C'\fR keywords, since --\&\f(CW\*(C`inline\*(C'\fR is a standard keyword in \s-1ISO\s0 C99. --.IP "\fB\-fno\-builtin\fR" 4 --.IX Item "-fno-builtin" --.PD 0 --.IP "\fB\-fno\-builtin\-\fR\fIfunction\fR" 4 --.IX Item "-fno-builtin-function" --.PD --Don't recognize built-in functions that do not begin with --\&\fB_\|_builtin_\fR as prefix. --.Sp --\&\s-1GCC\s0 normally generates special code to handle certain built-in functions --more efficiently; for instance, calls to \f(CW\*(C`alloca\*(C'\fR may become single --instructions that adjust the stack directly, and calls to \f(CW\*(C`memcpy\*(C'\fR --may become inline copy loops. The resulting code is often both smaller --and faster, but since the function calls no longer appear as such, you --cannot set a breakpoint on those calls, nor can you change the behavior --of the functions by linking with a different library. --.Sp --With the \fB\-fno\-builtin\-\fR\fIfunction\fR option --only the built-in function \fIfunction\fR is --disabled. \fIfunction\fR must not begin with \fB_\|_builtin_\fR. If a --function is named this is not built-in in this version of \s-1GCC\s0, this --option is ignored. There is no corresponding --\&\fB\-fbuiltin\-\fR\fIfunction\fR option; if you wish to enable --built-in functions selectively when using \fB\-fno\-builtin\fR or --\&\fB\-ffreestanding\fR, you may define macros such as: --.Sp --.Vb 2 --\& #define abs(n) __builtin_abs ((n)) --\& #define strcpy(d, s) __builtin_strcpy ((d), (s)) --.Ve --.IP "\fB\-fhosted\fR" 4 --.IX Item "-fhosted" --Assert that compilation takes place in a hosted environment. This implies --\&\fB\-fbuiltin\fR. A hosted environment is one in which the --entire standard library is available, and in which \f(CW\*(C`main\*(C'\fR has a return --type of \f(CW\*(C`int\*(C'\fR. Examples are nearly everything except a kernel. --This is equivalent to \fB\-fno\-freestanding\fR. --.IP "\fB\-ffreestanding\fR" 4 --.IX Item "-ffreestanding" --Assert that compilation takes place in a freestanding environment. This --implies \fB\-fno\-builtin\fR. A freestanding environment --is one in which the standard library may not exist, and program startup may --not necessarily be at \f(CW\*(C`main\*(C'\fR. The most obvious example is an \s-1OS\s0 kernel. --This is equivalent to \fB\-fno\-hosted\fR. --.IP "\fB\-fms\-extensions\fR" 4 --.IX Item "-fms-extensions" --Accept some non-standard constructs used in Microsoft header files. --.IP "\fB\-trigraphs\fR" 4 --.IX Item "-trigraphs" --Support \s-1ISO\s0 C trigraphs. The \fB\-ansi\fR option (and \fB\-std\fR --options for strict \s-1ISO\s0 C conformance) implies \fB\-trigraphs\fR. --.IP "\fB\-no\-integrated\-cpp\fR" 4 --.IX Item "-no-integrated-cpp" --Performs a compilation in two passes: preprocessing and compiling. This --option allows a user supplied \*(L"cc1\*(R", \*(L"cc1plus\*(R", or \*(L"cc1obj\*(R" via the --\&\fB\-B\fR option. The user supplied compilation step can then add in --an additional preprocessing step after normal preprocessing but before --compiling. The default is to use the integrated cpp (internal cpp) --.Sp --The semantics of this option will change if \*(L"cc1\*(R", \*(L"cc1plus\*(R", and --\&\*(L"cc1obj\*(R" are merged. --.IP "\fB\-traditional\fR" 4 --.IX Item "-traditional" --.PD 0 --.IP "\fB\-traditional\-cpp\fR" 4 --.IX Item "-traditional-cpp" --.PD --Formerly, these options caused \s-1GCC\s0 to attempt to emulate a pre-standard --C compiler. They are now only supported with the \fB\-E\fR switch. --The preprocessor continues to support a pre-standard mode. See the \s-1GNU\s0 --\&\s-1CPP\s0 manual for details. --.IP "\fB\-fcond\-mismatch\fR" 4 --.IX Item "-fcond-mismatch" --Allow conditional expressions with mismatched types in the second and --third arguments. The value of such an expression is void. This option --is not supported for \*(C+. --.IP "\fB\-funsigned\-char\fR" 4 --.IX Item "-funsigned-char" --Let the type \f(CW\*(C`char\*(C'\fR be unsigned, like \f(CW\*(C`unsigned char\*(C'\fR. --.Sp --Each kind of machine has a default for what \f(CW\*(C`char\*(C'\fR should --be. It is either like \f(CW\*(C`unsigned char\*(C'\fR by default or like --\&\f(CW\*(C`signed char\*(C'\fR by default. --.Sp --Ideally, a portable program should always use \f(CW\*(C`signed char\*(C'\fR or --\&\f(CW\*(C`unsigned char\*(C'\fR when it depends on the signedness of an object. --But many programs have been written to use plain \f(CW\*(C`char\*(C'\fR and --expect it to be signed, or expect it to be unsigned, depending on the --machines they were written for. This option, and its inverse, let you --make such a program work with the opposite default. --.Sp --The type \f(CW\*(C`char\*(C'\fR is always a distinct type from each of --\&\f(CW\*(C`signed char\*(C'\fR or \f(CW\*(C`unsigned char\*(C'\fR, even though its behavior --is always just like one of those two. --.IP "\fB\-fsigned\-char\fR" 4 --.IX Item "-fsigned-char" --Let the type \f(CW\*(C`char\*(C'\fR be signed, like \f(CW\*(C`signed char\*(C'\fR. --.Sp --Note that this is equivalent to \fB\-fno\-unsigned\-char\fR, which is --the negative form of \fB\-funsigned\-char\fR. Likewise, the option --\&\fB\-fno\-signed\-char\fR is equivalent to \fB\-funsigned\-char\fR. --.IP "\fB\-fsigned\-bitfields\fR" 4 --.IX Item "-fsigned-bitfields" --.PD 0 --.IP "\fB\-funsigned\-bitfields\fR" 4 --.IX Item "-funsigned-bitfields" --.IP "\fB\-fno\-signed\-bitfields\fR" 4 --.IX Item "-fno-signed-bitfields" --.IP "\fB\-fno\-unsigned\-bitfields\fR" 4 --.IX Item "-fno-unsigned-bitfields" --.PD --These options control whether a bit-field is signed or unsigned, when the --declaration does not use either \f(CW\*(C`signed\*(C'\fR or \f(CW\*(C`unsigned\*(C'\fR. By --default, such a bit-field is signed, because this is consistent: the --basic integer types such as \f(CW\*(C`int\*(C'\fR are signed types. --.IP "\fB\-fwritable\-strings\fR" 4 --.IX Item "-fwritable-strings" --Store string constants in the writable data segment and don't uniquize --them. This is for compatibility with old programs which assume they can --write into string constants. --.Sp --Writing into string constants is a very bad idea; ``constants'' should --be constant. --.Sh "Options Controlling \*(C+ Dialect" --.IX Subsection "Options Controlling Dialect" --This section describes the command-line options that are only meaningful --for \*(C+ programs; but you can also use most of the \s-1GNU\s0 compiler options --regardless of what language your program is in. For example, you --might compile a file \f(CW\*(C`firstClass.C\*(C'\fR like this: --.PP --.Vb 1 --\& g++ -g -frepo -O -c firstClass.C --.Ve --.PP --In this example, only \fB\-frepo\fR is an option meant --only for \*(C+ programs; you can use the other options with any --language supported by \s-1GCC\s0. --.PP --Here is a list of options that are \fIonly\fR for compiling \*(C+ programs: --.IP "\fB\-fabi\-version=\fR\fIn\fR" 4 --.IX Item "-fabi-version=n" --Use version \fIn\fR of the \*(C+ \s-1ABI\s0. Version 1 is the version of the \*(C+ --\&\s-1ABI\s0 that first appeared in G++ 3.2. Version 0 will always be the --version that conforms most closely to the \*(C+ \s-1ABI\s0 specification. --Therefore, the \s-1ABI\s0 obtained using version 0 will change as \s-1ABI\s0 bugs are --fixed. --.Sp --The default is version 1. --.IP "\fB\-fno\-access\-control\fR" 4 --.IX Item "-fno-access-control" --Turn off all access checking. This switch is mainly useful for working --around bugs in the access control code. --.IP "\fB\-fcheck\-new\fR" 4 --.IX Item "-fcheck-new" --Check that the pointer returned by \f(CW\*(C`operator new\*(C'\fR is non-null --before attempting to modify the storage allocated. This check is --normally unnecessary because the \*(C+ standard specifies that --\&\f(CW\*(C`operator new\*(C'\fR will only return \f(CW0\fR if it is declared --\&\fB\f(BIthrow()\fB\fR, in which case the compiler will always check the --return value even without this option. In all other cases, when --\&\f(CW\*(C`operator new\*(C'\fR has a non-empty exception specification, memory --exhaustion is signalled by throwing \f(CW\*(C`std::bad_alloc\*(C'\fR. See also --\&\fBnew (nothrow)\fR. --.IP "\fB\-fconserve\-space\fR" 4 --.IX Item "-fconserve-space" --Put uninitialized or runtime-initialized global variables into the --common segment, as C does. This saves space in the executable at the --cost of not diagnosing duplicate definitions. If you compile with this --flag and your program mysteriously crashes after \f(CW\*(C`main()\*(C'\fR has --completed, you may have an object that is being destroyed twice because --two definitions were merged. --.Sp --This option is no longer useful on most targets, now that support has --been added for putting variables into \s-1BSS\s0 without making them common. --.IP "\fB\-fno\-const\-strings\fR" 4 --.IX Item "-fno-const-strings" --Give string constants type \f(CW\*(C`char *\*(C'\fR instead of type \f(CW\*(C`const --char *\*(C'\fR. By default, G++ uses type \f(CW\*(C`const char *\*(C'\fR as required by --the standard. Even if you use \fB\-fno\-const\-strings\fR, you cannot --actually modify the value of a string constant, unless you also use --\&\fB\-fwritable\-strings\fR. --.Sp --This option might be removed in a future release of G++. For maximum --portability, you should structure your code so that it works with --string constants that have type \f(CW\*(C`const char *\*(C'\fR. --.IP "\fB\-fdollars\-in\-identifiers\fR" 4 --.IX Item "-fdollars-in-identifiers" --Accept \fB$\fR in identifiers. You can also explicitly prohibit use of --\&\fB$\fR with the option \fB\-fno\-dollars\-in\-identifiers\fR. (\s-1GNU\s0 C allows --\&\fB$\fR by default on most target systems, but there are a few exceptions.) --Traditional C allowed the character \fB$\fR to form part of --identifiers. However, \s-1ISO\s0 C and \*(C+ forbid \fB$\fR in identifiers. --.IP "\fB\-fno\-elide\-constructors\fR" 4 --.IX Item "-fno-elide-constructors" --The \*(C+ standard allows an implementation to omit creating a temporary --which is only used to initialize another object of the same type. --Specifying this option disables that optimization, and forces G++ to --call the copy constructor in all cases. --.IP "\fB\-fno\-enforce\-eh\-specs\fR" 4 --.IX Item "-fno-enforce-eh-specs" --Don't check for violation of exception specifications at runtime. This --option violates the \*(C+ standard, but may be useful for reducing code --size in production builds, much like defining \fB\s-1NDEBUG\s0\fR. The compiler --will still optimize based on the exception specifications. --.IP "\fB\-fexternal\-templates\fR" 4 --.IX Item "-fexternal-templates" --Cause \fB#pragma interface\fR and \fBimplementation\fR to apply to --template instantiation; template instances are emitted or not according --to the location of the template definition. --.Sp --This option is deprecated. --.IP "\fB\-falt\-external\-templates\fR" 4 --.IX Item "-falt-external-templates" --Similar to \fB\-fexternal\-templates\fR, but template instances are --emitted or not according to the place where they are first instantiated. --.Sp --This option is deprecated. --.IP "\fB\-ffor\-scope\fR" 4 --.IX Item "-ffor-scope" --.PD 0 --.IP "\fB\-fno\-for\-scope\fR" 4 --.IX Item "-fno-for-scope" --.PD --If \fB\-ffor\-scope\fR is specified, the scope of variables declared in --a \fIfor-init-statement\fR is limited to the \fBfor\fR loop itself, --as specified by the \*(C+ standard. --If \fB\-fno\-for\-scope\fR is specified, the scope of variables declared in --a \fIfor-init-statement\fR extends to the end of the enclosing scope, --as was the case in old versions of G++, and other (traditional) --implementations of \*(C+. --.Sp --The default if neither flag is given to follow the standard, --but to allow and give a warning for old-style code that would --otherwise be invalid, or have different behavior. --.IP "\fB\-fno\-gnu\-keywords\fR" 4 --.IX Item "-fno-gnu-keywords" --Do not recognize \f(CW\*(C`typeof\*(C'\fR as a keyword, so that code can use this --word as an identifier. You can use the keyword \f(CW\*(C`_\|_typeof_\|_\*(C'\fR instead. --\&\fB\-ansi\fR implies \fB\-fno\-gnu\-keywords\fR. --.IP "\fB\-fno\-implicit\-templates\fR" 4 --.IX Item "-fno-implicit-templates" --Never emit code for non-inline templates which are instantiated --implicitly (i.e. by use); only emit code for explicit instantiations. --.IP "\fB\-fno\-implicit\-inline\-templates\fR" 4 --.IX Item "-fno-implicit-inline-templates" --Don't emit code for implicit instantiations of inline templates, either. --The default is to handle inlines differently so that compiles with and --without optimization will need the same set of explicit instantiations. --.IP "\fB\-fno\-implement\-inlines\fR" 4 --.IX Item "-fno-implement-inlines" --To save space, do not emit out-of-line copies of inline functions --controlled by \fB#pragma implementation\fR. This will cause linker --errors if these functions are not inlined everywhere they are called. --.IP "\fB\-fms\-extensions\fR" 4 --.IX Item "-fms-extensions" --Disable pedantic warnings about constructs used in \s-1MFC\s0, such as implicit --int and getting a pointer to member function via non-standard syntax. --.IP "\fB\-fno\-nonansi\-builtins\fR" 4 --.IX Item "-fno-nonansi-builtins" --Disable built-in declarations of functions that are not mandated by --\&\s-1ANSI/ISO\s0 C. These include \f(CW\*(C`ffs\*(C'\fR, \f(CW\*(C`alloca\*(C'\fR, \f(CW\*(C`_exit\*(C'\fR, --\&\f(CW\*(C`index\*(C'\fR, \f(CW\*(C`bzero\*(C'\fR, \f(CW\*(C`conjf\*(C'\fR, and other related functions. --.IP "\fB\-fno\-operator\-names\fR" 4 --.IX Item "-fno-operator-names" --Do not treat the operator name keywords \f(CW\*(C`and\*(C'\fR, \f(CW\*(C`bitand\*(C'\fR, --\&\f(CW\*(C`bitor\*(C'\fR, \f(CW\*(C`compl\*(C'\fR, \f(CW\*(C`not\*(C'\fR, \f(CW\*(C`or\*(C'\fR and \f(CW\*(C`xor\*(C'\fR as --synonyms as keywords. --.IP "\fB\-fno\-optional\-diags\fR" 4 --.IX Item "-fno-optional-diags" --Disable diagnostics that the standard says a compiler does not need to --issue. Currently, the only such diagnostic issued by G++ is the one for --a name having multiple meanings within a class. --.IP "\fB\-fpermissive\fR" 4 --.IX Item "-fpermissive" --Downgrade some diagnostics about nonconformant code from errors to --warnings. Thus, using \fB\-fpermissive\fR will allow some --nonconforming code to compile. --.IP "\fB\-frepo\fR" 4 --.IX Item "-frepo" --Enable automatic template instantiation at link time. This option also --implies \fB\-fno\-implicit\-templates\fR. --.IP "\fB\-fno\-rtti\fR" 4 --.IX Item "-fno-rtti" --Disable generation of information about every class with virtual --functions for use by the \*(C+ runtime type identification features --(\fBdynamic_cast\fR and \fBtypeid\fR). If you don't use those parts --of the language, you can save some space by using this flag. Note that --exception handling uses the same information, but it will generate it as --needed. --.IP "\fB\-fstats\fR" 4 --.IX Item "-fstats" --Emit statistics about front-end processing at the end of the compilation. --This information is generally only useful to the G++ development team. --.IP "\fB\-ftemplate\-depth\-\fR\fIn\fR" 4 --.IX Item "-ftemplate-depth-n" --Set the maximum instantiation depth for template classes to \fIn\fR. --A limit on the template instantiation depth is needed to detect --endless recursions during template class instantiation. \s-1ANSI/ISO\s0 \*(C+ --conforming programs must not rely on a maximum depth greater than 17. --.IP "\fB\-fuse\-cxa\-atexit\fR" 4 --.IX Item "-fuse-cxa-atexit" --Register destructors for objects with static storage duration with the --\&\f(CW\*(C`_\|_cxa_atexit\*(C'\fR function rather than the \f(CW\*(C`atexit\*(C'\fR function. --This option is required for fully standards-compliant handling of static --destructors, but will only work if your C library supports --\&\f(CW\*(C`_\|_cxa_atexit\*(C'\fR. --.IP "\fB\-fvtable\-gc\fR" 4 --.IX Item "-fvtable-gc" --Emit special relocations for vtables and virtual function references --so that the linker can identify unused virtual functions and zero out --vtable slots that refer to them. This is most useful with --\&\fB\-ffunction\-sections\fR and \fB\-Wl,\-\-gc\-sections\fR, in order to --also discard the functions themselves. --.Sp --This optimization requires \s-1GNU\s0 as and \s-1GNU\s0 ld. Not all systems support --this option. \fB\-Wl,\-\-gc\-sections\fR is ignored without \fB\-static\fR. --.IP "\fB\-fno\-weak\fR" 4 --.IX Item "-fno-weak" --Do not use weak symbol support, even if it is provided by the linker. --By default, G++ will use weak symbols if they are available. This --option exists only for testing, and should not be used by end\-users; --it will result in inferior code and has no benefits. This option may --be removed in a future release of G++. --.IP "\fB\-nostdinc++\fR" 4 --.IX Item "-nostdinc++" --Do not search for header files in the standard directories specific to --\&\*(C+, but do still search the other standard directories. (This option --is used when building the \*(C+ library.) --.PP --In addition, these optimization, warning, and code generation options --have meanings only for \*(C+ programs: --.IP "\fB\-fno\-default\-inline\fR" 4 --.IX Item "-fno-default-inline" --Do not assume \fBinline\fR for functions defined inside a class scope. -- Note that these --functions will have linkage like inline functions; they just won't be --inlined by default. --.IP "\fB\-Wabi\fR (\*(C+ only)" 4 --.IX Item "-Wabi ( only)" --Warn when G++ generates code that is probably not compatible with the --vendor-neutral \*(C+ \s-1ABI\s0. Although an effort has been made to warn about --all such cases, there are probably some cases that are not warned about, --even though G++ is generating incompatible code. There may also be --cases where warnings are emitted even though the code that is generated --will be compatible. --.Sp --You should rewrite your code to avoid these warnings if you are --concerned about the fact that code generated by G++ may not be binary --compatible with code generated by other compilers. --.Sp --The known incompatibilities at this point include: --.RS 4 --.IP "*" 4 --Incorrect handling of tail-padding for bit\-fields. G++ may attempt to --pack data into the same byte as a base class. For example: --.Sp --.Vb 2 --\& struct A { virtual void f(); int f1 : 1; }; --\& struct B : public A { int f2 : 1; }; --.Ve --.Sp --In this case, G++ will place \f(CW\*(C`B::f2\*(C'\fR into the same byte --as\f(CW\*(C`A::f1\*(C'\fR; other compilers will not. You can avoid this problem --by explicitly padding \f(CW\*(C`A\*(C'\fR so that its size is a multiple of the --byte size on your platform; that will cause G++ and other compilers to --layout \f(CW\*(C`B\*(C'\fR identically. --.IP "*" 4 --Incorrect handling of tail-padding for virtual bases. G++ does not use --tail padding when laying out virtual bases. For example: --.Sp --.Vb 3 --\& struct A { virtual void f(); char c1; }; --\& struct B { B(); char c2; }; --\& struct C : public A, public virtual B {}; --.Ve --.Sp --In this case, G++ will not place \f(CW\*(C`B\*(C'\fR into the tail-padding for --\&\f(CW\*(C`A\*(C'\fR; other compilers will. You can avoid this problem by --explicitly padding \f(CW\*(C`A\*(C'\fR so that its size is a multiple of its --alignment (ignoring virtual base classes); that will cause G++ and other --compilers to layout \f(CW\*(C`C\*(C'\fR identically. --.IP "*" 4 --Incorrect handling of bit-fields with declared widths greater than that --of their underlying types, when the bit-fields appear in a union. For --example: --.Sp --.Vb 1 --\& union U { int i : 4096; }; --.Ve --.Sp --Assuming that an \f(CW\*(C`int\*(C'\fR does not have 4096 bits, G++ will make the --union too small by the number of bits in an \f(CW\*(C`int\*(C'\fR. --.IP "*" 4 --Empty classes can be placed at incorrect offsets. For example: --.Sp --.Vb 1 --\& struct A {}; --.Ve --.Sp --.Vb 4 --\& struct B { --\& A a; --\& virtual void f (); --\& }; --.Ve --.Sp --.Vb 1 --\& struct C : public B, public A {}; --.Ve --.Sp --G++ will place the \f(CW\*(C`A\*(C'\fR base class of \f(CW\*(C`C\*(C'\fR at a nonzero offset; --it should be placed at offset zero. G++ mistakenly believes that the --\&\f(CW\*(C`A\*(C'\fR data member of \f(CW\*(C`B\*(C'\fR is already at offset zero. --.IP "*" 4 --Names of template functions whose types involve \f(CW\*(C`typename\*(C'\fR or --template template parameters can be mangled incorrectly. --.Sp --.Vb 2 --\& template --\& void f(typename Q::X) {} --.Ve --.Sp --.Vb 2 --\& template