mirror of
https://github.com/pmret/gcc-papermario.git
synced 2024-11-08 11:53:01 +01:00
1233 lines
48 KiB
Plaintext
1233 lines
48 KiB
Plaintext
This is Info file gcc.info, produced by Makeinfo version 1.67 from the
|
||
input file gcc.texi.
|
||
|
||
This file documents the use and the internals of the GNU compiler.
|
||
|
||
Published by the Free Software Foundation 59 Temple Place - Suite 330
|
||
Boston, MA 02111-1307 USA
|
||
|
||
Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998
|
||
Free Software Foundation, Inc.
|
||
|
||
Permission is granted to make and distribute verbatim copies of this
|
||
manual provided the copyright notice and this permission notice are
|
||
preserved on all copies.
|
||
|
||
Permission is granted to copy and distribute modified versions of
|
||
this manual under the conditions for verbatim copying, provided also
|
||
that the sections entitled "GNU General Public License," "Funding for
|
||
Free Software," and "Protect Your Freedom--Fight `Look And Feel'" are
|
||
included exactly as in the original, and provided that the entire
|
||
resulting derived work is distributed under the terms of a permission
|
||
notice identical to this one.
|
||
|
||
Permission is granted to copy and distribute translations of this
|
||
manual into another language, under the above conditions for modified
|
||
versions, except that the sections entitled "GNU General Public
|
||
License," "Funding for Free Software," and "Protect Your Freedom--Fight
|
||
`Look And Feel'", and this permission notice, may be included in
|
||
translations approved by the Free Software Foundation instead of in the
|
||
original English.
|
||
|
||
|
||
File: gcc.info, Node: Preprocessor Options, Next: Assembler Options, Prev: Optimize Options, Up: Invoking GCC
|
||
|
||
Options Controlling the Preprocessor
|
||
====================================
|
||
|
||
These options control the C preprocessor, which is run on each C
|
||
source file before actual compilation.
|
||
|
||
If you use the `-E' option, nothing is done except preprocessing.
|
||
Some of these options make sense only together with `-E' because they
|
||
cause the preprocessor output to be unsuitable for actual compilation.
|
||
|
||
`-include FILE'
|
||
Process FILE as input before processing the regular input file.
|
||
In effect, the contents of FILE are compiled first. Any `-D' and
|
||
`-U' options on the command line are always processed before
|
||
`-include FILE', regardless of the order in which they are
|
||
written. All the `-include' and `-imacros' options are processed
|
||
in the order in which they are written.
|
||
|
||
`-imacros FILE'
|
||
Process FILE as input, discarding the resulting output, before
|
||
processing the regular input file. Because the output generated
|
||
from FILE is discarded, the only effect of `-imacros FILE' is to
|
||
make the macros defined in FILE available for use in the main
|
||
input.
|
||
|
||
Any `-D' and `-U' options on the command line are always processed
|
||
before `-imacros FILE', regardless of the order in which they are
|
||
written. All the `-include' and `-imacros' options are processed
|
||
in the order in which they are written.
|
||
|
||
`-idirafter DIR'
|
||
Add the directory DIR to the second include path. The directories
|
||
on the second include path are searched when a header file is not
|
||
found in any of the directories in the main include path (the one
|
||
that `-I' adds to).
|
||
|
||
`-iprefix PREFIX'
|
||
Specify PREFIX as the prefix for subsequent `-iwithprefix' options.
|
||
|
||
`-iwithprefix DIR'
|
||
Add a directory to the second include path. The directory's name
|
||
is made by concatenating PREFIX and DIR, where PREFIX was
|
||
specified previously with `-iprefix'. If you have not specified a
|
||
prefix yet, the directory containing the installed passes of the
|
||
compiler is used as the default.
|
||
|
||
`-iwithprefixbefore DIR'
|
||
Add a directory to the main include path. The directory's name is
|
||
made by concatenating PREFIX and DIR, as in the case of
|
||
`-iwithprefix'.
|
||
|
||
`-isystem DIR'
|
||
Add a directory to the beginning of the second include path,
|
||
marking it as a system directory, so that it gets the same special
|
||
treatment as is applied to the standard system directories.
|
||
|
||
`-nostdinc'
|
||
Do not search the standard system directories for header files.
|
||
Only the directories you have specified with `-I' options (and the
|
||
current directory, if appropriate) are searched. *Note Directory
|
||
Options::, for information on `-I'.
|
||
|
||
By using both `-nostdinc' and `-I-', you can limit the include-file
|
||
search path to only those directories you specify explicitly.
|
||
|
||
`-undef'
|
||
Do not predefine any nonstandard macros. (Including architecture
|
||
flags).
|
||
|
||
`-E'
|
||
Run only the C preprocessor. Preprocess all the C source files
|
||
specified and output the results to standard output or to the
|
||
specified output file.
|
||
|
||
`-C'
|
||
Tell the preprocessor not to discard comments. Used with the `-E'
|
||
option.
|
||
|
||
`-P'
|
||
Tell the preprocessor not to generate `#line' directives. Used
|
||
with the `-E' option.
|
||
|
||
`-M'
|
||
Tell the preprocessor to output a rule suitable for `make'
|
||
describing the dependencies of each object file. For each source
|
||
file, the preprocessor outputs one `make'-rule whose target is the
|
||
object file name for that source file and whose dependencies are
|
||
all the `#include' header files it uses. This rule may be a
|
||
single line or may be continued with `\'-newline if it is long.
|
||
The list of rules is printed on standard output instead of the
|
||
preprocessed C program.
|
||
|
||
`-M' implies `-E'.
|
||
|
||
Another way to specify output of a `make' rule is by setting the
|
||
environment variable `DEPENDENCIES_OUTPUT' (*note Environment
|
||
Variables::.).
|
||
|
||
`-MM'
|
||
Like `-M' but the output mentions only the user header files
|
||
included with `#include "FILE"'. System header files included
|
||
with `#include <FILE>' are omitted.
|
||
|
||
`-MD'
|
||
Like `-M' but the dependency information is written to a file made
|
||
by replacing ".c" with ".d" at the end of the input file names.
|
||
This is in addition to compiling the file as specified--`-MD' does
|
||
not inhibit ordinary compilation the way `-M' does.
|
||
|
||
In Mach, you can use the utility `md' to merge multiple dependency
|
||
files into a single dependency file suitable for using with the
|
||
`make' command.
|
||
|
||
`-MMD'
|
||
Like `-MD' except mention only user header files, not system
|
||
header files.
|
||
|
||
`-MG'
|
||
Treat missing header files as generated files and assume they live
|
||
in the same directory as the source file. If you specify `-MG',
|
||
you must also specify either `-M' or `-MM'. `-MG' is not
|
||
supported with `-MD' or `-MMD'.
|
||
|
||
`-H'
|
||
Print the name of each header file used, in addition to other
|
||
normal activities.
|
||
|
||
`-AQUESTION(ANSWER)'
|
||
Assert the answer ANSWER for QUESTION, in case it is tested with a
|
||
preprocessing conditional such as `#if #QUESTION(ANSWER)'. `-A-'
|
||
disables the standard assertions that normally describe the target
|
||
machine.
|
||
|
||
`-DMACRO'
|
||
Define macro MACRO with the string `1' as its definition.
|
||
|
||
`-DMACRO=DEFN'
|
||
Define macro MACRO as DEFN. All instances of `-D' on the command
|
||
line are processed before any `-U' options.
|
||
|
||
`-UMACRO'
|
||
Undefine macro MACRO. `-U' options are evaluated after all `-D'
|
||
options, but before any `-include' and `-imacros' options.
|
||
|
||
`-dM'
|
||
Tell the preprocessor to output only a list of the macro
|
||
definitions that are in effect at the end of preprocessing. Used
|
||
with the `-E' option.
|
||
|
||
`-dD'
|
||
Tell the preprocessing to pass all macro definitions into the
|
||
output, in their proper sequence in the rest of the output.
|
||
|
||
`-dN'
|
||
Like `-dD' except that the macro arguments and contents are
|
||
omitted. Only `#define NAME' is included in the output.
|
||
|
||
`-trigraphs'
|
||
Support ANSI C trigraphs. The `-ansi' option also has this effect.
|
||
|
||
`-Wp,OPTION'
|
||
Pass OPTION as an option to the preprocessor. If OPTION contains
|
||
commas, it is split into multiple options at the commas.
|
||
|
||
|
||
File: gcc.info, Node: Assembler Options, Next: Link Options, Prev: Preprocessor Options, Up: Invoking GCC
|
||
|
||
Passing Options to the Assembler
|
||
================================
|
||
|
||
You can pass options to the assembler.
|
||
|
||
`-Wa,OPTION'
|
||
Pass OPTION as an option to the assembler. If OPTION contains
|
||
commas, it is split into multiple options at the commas.
|
||
|
||
|
||
File: gcc.info, Node: Link Options, Next: Directory Options, Prev: Assembler Options, Up: Invoking GCC
|
||
|
||
Options for Linking
|
||
===================
|
||
|
||
These options come into play when the compiler links object files
|
||
into an executable output file. They are meaningless if the compiler is
|
||
not doing a link step.
|
||
|
||
`OBJECT-FILE-NAME'
|
||
A file name that does not end in a special recognized suffix is
|
||
considered to name an object file or library. (Object files are
|
||
distinguished from libraries by the linker according to the file
|
||
contents.) If linking is done, these object files are used as
|
||
input to the linker.
|
||
|
||
`-c'
|
||
`-S'
|
||
`-E'
|
||
If any of these options is used, then the linker is not run, and
|
||
object file names should not be used as arguments. *Note Overall
|
||
Options::.
|
||
|
||
`-lLIBRARY'
|
||
Search the library named LIBRARY when linking.
|
||
|
||
It makes a difference where in the command you write this option;
|
||
the linker searches processes libraries and object files in the
|
||
order they are specified. Thus, `foo.o -lz bar.o' searches
|
||
library `z' after file `foo.o' but before `bar.o'. If `bar.o'
|
||
refers to functions in `z', those functions may not be loaded.
|
||
|
||
The linker searches a standard list of directories for the library,
|
||
which is actually a file named `libLIBRARY.a'. The linker then
|
||
uses this file as if it had been specified precisely by name.
|
||
|
||
The directories searched include several standard system
|
||
directories plus any that you specify with `-L'.
|
||
|
||
Normally the files found this way are library files--archive files
|
||
whose members are object files. The linker handles an archive
|
||
file by scanning through it for members which define symbols that
|
||
have so far been referenced but not defined. But if the file that
|
||
is found is an ordinary object file, it is linked in the usual
|
||
fashion. The only difference between using an `-l' option and
|
||
specifying a file name is that `-l' surrounds LIBRARY with `lib'
|
||
and `.a' and searches several directories.
|
||
|
||
`-lobjc'
|
||
You need this special case of the `-l' option in order to link an
|
||
Objective C program.
|
||
|
||
`-nostartfiles'
|
||
Do not use the standard system startup files when linking. The
|
||
standard system libraries are used normally, unless `-nostdlib' or
|
||
`-nodefaultlibs' is used.
|
||
|
||
`-nodefaultlibs'
|
||
Do not use the standard system libraries when linking. Only the
|
||
libraries you specify will be passed to the linker. The standard
|
||
startup files are used normally, unless `-nostartfiles' is used.
|
||
|
||
`-nostdlib'
|
||
Do not use the standard system startup files or libraries when
|
||
linking. No startup files and only the libraries you specify will
|
||
be passed to the linker.
|
||
|
||
One of the standard libraries bypassed by `-nostdlib' and
|
||
`-nodefaultlibs' is `libgcc.a', a library of internal subroutines
|
||
that GNU CC uses to overcome shortcomings of particular machines,
|
||
or special needs for some languages. (*Note Interfacing to GNU CC
|
||
Output: Interface, for more discussion of `libgcc.a'.) In most
|
||
cases, you need `libgcc.a' even when you want to avoid other
|
||
standard libraries. In other words, when you specify `-nostdlib'
|
||
or `-nodefaultlibs' you should usually specify `-lgcc' as well.
|
||
This ensures that you have no unresolved references to internal
|
||
GNU CC library subroutines. (For example, `__main', used to
|
||
ensure C++ constructors will be called; *note `collect2':
|
||
Collect2..)
|
||
|
||
`-s'
|
||
Remove all symbol table and relocation information from the
|
||
executable.
|
||
|
||
`-static'
|
||
On systems that support dynamic linking, this prevents linking
|
||
with the shared libraries. On other systems, this option has no
|
||
effect.
|
||
|
||
`-shared'
|
||
Produce a shared object which can then be linked with other
|
||
objects to form an executable. Not all systems support this
|
||
option. You must also specify `-fpic' or `-fPIC' on some systems
|
||
when you specify this option.
|
||
|
||
`-symbolic'
|
||
Bind references to global symbols when building a shared object.
|
||
Warn about any unresolved references (unless overridden by the
|
||
link editor option `-Xlinker -z -Xlinker defs'). Only a few
|
||
systems support this option.
|
||
|
||
`-Xlinker OPTION'
|
||
Pass OPTION as an option to the linker. You can use this to
|
||
supply system-specific linker options which GNU CC does not know
|
||
how to recognize.
|
||
|
||
If you want to pass an option that takes an argument, you must use
|
||
`-Xlinker' twice, once for the option and once for the argument.
|
||
For example, to pass `-assert definitions', you must write
|
||
`-Xlinker -assert -Xlinker definitions'. It does not work to write
|
||
`-Xlinker "-assert definitions"', because this passes the entire
|
||
string as a single argument, which is not what the linker expects.
|
||
|
||
`-Wl,OPTION'
|
||
Pass OPTION as an option to the linker. If OPTION contains
|
||
commas, it is split into multiple options at the commas.
|
||
|
||
`-u SYMBOL'
|
||
Pretend the symbol SYMBOL is undefined, to force linking of
|
||
library modules to define it. You can use `-u' multiple times with
|
||
different symbols to force loading of additional library modules.
|
||
|
||
|
||
File: gcc.info, Node: Directory Options, Next: Target Options, Prev: Link Options, Up: Invoking GCC
|
||
|
||
Options for Directory Search
|
||
============================
|
||
|
||
These options specify directories to search for header files, for
|
||
libraries and for parts of the compiler:
|
||
|
||
`-IDIR'
|
||
Add the directory DIR to the head of the list of directories to be
|
||
searched for header files. This can be used to override a system
|
||
header file, substituting your own version, since these
|
||
directories are searched before the system header file
|
||
directories. If you use more than one `-I' option, the
|
||
directories are scanned in left-to-right order; the standard
|
||
system directories come after.
|
||
|
||
`-I-'
|
||
Any directories you specify with `-I' options before the `-I-'
|
||
option are searched only for the case of `#include "FILE"'; they
|
||
are not searched for `#include <FILE>'.
|
||
|
||
If additional directories are specified with `-I' options after
|
||
the `-I-', these directories are searched for all `#include'
|
||
directives. (Ordinarily *all* `-I' directories are used this way.)
|
||
|
||
In addition, the `-I-' option inhibits the use of the current
|
||
directory (where the current input file came from) as the first
|
||
search directory for `#include "FILE"'. There is no way to
|
||
override this effect of `-I-'. With `-I.' you can specify
|
||
searching the directory which was current when the compiler was
|
||
invoked. That is not exactly the same as what the preprocessor
|
||
does by default, but it is often satisfactory.
|
||
|
||
`-I-' does not inhibit the use of the standard system directories
|
||
for header files. Thus, `-I-' and `-nostdinc' are independent.
|
||
|
||
`-LDIR'
|
||
Add directory DIR to the list of directories to be searched for
|
||
`-l'.
|
||
|
||
`-BPREFIX'
|
||
This option specifies where to find the executables, libraries,
|
||
include files, and data files of the compiler itself.
|
||
|
||
The compiler driver program runs one or more of the subprograms
|
||
`cpp', `cc1', `as' and `ld'. It tries PREFIX as a prefix for each
|
||
program it tries to run, both with and without `MACHINE/VERSION/'
|
||
(*note Target Options::.).
|
||
|
||
For each subprogram to be run, the compiler driver first tries the
|
||
`-B' prefix, if any. If that name is not found, or if `-B' was
|
||
not specified, the driver tries two standard prefixes, which are
|
||
`/usr/lib/gcc/' and `/usr/local/lib/gcc-lib/'. If neither of
|
||
those results in a file name that is found, the unmodified program
|
||
name is searched for using the directories specified in your
|
||
`PATH' environment variable.
|
||
|
||
`-B' prefixes that effectively specify directory names also apply
|
||
to libraries in the linker, because the compiler translates these
|
||
options into `-L' options for the linker. They also apply to
|
||
includes files in the preprocessor, because the compiler
|
||
translates these options into `-isystem' options for the
|
||
preprocessor. In this case, the compiler appends `include' to the
|
||
prefix.
|
||
|
||
The run-time support file `libgcc.a' can also be searched for using
|
||
the `-B' prefix, if needed. If it is not found there, the two
|
||
standard prefixes above are tried, and that is all. The file is
|
||
left out of the link if it is not found by those means.
|
||
|
||
Another way to specify a prefix much like the `-B' prefix is to use
|
||
the environment variable `GCC_EXEC_PREFIX'. *Note Environment
|
||
Variables::.
|
||
|
||
`-specs=FILE'
|
||
Process FILE after the compiler reads in the standard `specs'
|
||
file, in order to override the defaults that the `gcc' driver
|
||
program uses when determining what switches to pass to `cc1',
|
||
`cc1plus', `as', `ld', etc. More than one `-specs='FILE can be
|
||
specified on the command line, and they are processed in order,
|
||
from left to right.
|
||
|
||
|
||
File: gcc.info, Node: Target Options, Next: Submodel Options, Prev: Directory Options, Up: Invoking GCC
|
||
|
||
Specifying Target Machine and Compiler Version
|
||
==============================================
|
||
|
||
By default, GNU CC compiles code for the same type of machine that
|
||
you are using. However, it can also be installed as a cross-compiler,
|
||
to compile for some other type of machine. In fact, several different
|
||
configurations of GNU CC, for different target machines, can be
|
||
installed side by side. Then you specify which one to use with the
|
||
`-b' option.
|
||
|
||
In addition, older and newer versions of GNU CC can be installed side
|
||
by side. One of them (probably the newest) will be the default, but
|
||
you may sometimes wish to use another.
|
||
|
||
`-b MACHINE'
|
||
The argument MACHINE specifies the target machine for compilation.
|
||
This is useful when you have installed GNU CC as a cross-compiler.
|
||
|
||
The value to use for MACHINE is the same as was specified as the
|
||
machine type when configuring GNU CC as a cross-compiler. For
|
||
example, if a cross-compiler was configured with `configure
|
||
i386v', meaning to compile for an 80386 running System V, then you
|
||
would specify `-b i386v' to run that cross compiler.
|
||
|
||
When you do not specify `-b', it normally means to compile for the
|
||
same type of machine that you are using.
|
||
|
||
`-V VERSION'
|
||
The argument VERSION specifies which version of GNU CC to run.
|
||
This is useful when multiple versions are installed. For example,
|
||
VERSION might be `2.0', meaning to run GNU CC version 2.0.
|
||
|
||
The default version, when you do not specify `-V', is the last
|
||
version of GNU CC that you installed.
|
||
|
||
The `-b' and `-V' options actually work by controlling part of the
|
||
file name used for the executable files and libraries used for
|
||
compilation. A given version of GNU CC, for a given target machine, is
|
||
normally kept in the directory `/usr/local/lib/gcc-lib/MACHINE/VERSION'.
|
||
|
||
Thus, sites can customize the effect of `-b' or `-V' either by
|
||
changing the names of these directories or adding alternate names (or
|
||
symbolic links). If in directory `/usr/local/lib/gcc-lib/' the file
|
||
`80386' is a link to the file `i386v', then `-b 80386' becomes an alias
|
||
for `-b i386v'.
|
||
|
||
In one respect, the `-b' or `-V' do not completely change to a
|
||
different compiler: the top-level driver program `gcc' that you
|
||
originally invoked continues to run and invoke the other executables
|
||
(preprocessor, compiler per se, assembler and linker) that do the real
|
||
work. However, since no real work is done in the driver program, it
|
||
usually does not matter that the driver program in use is not the one
|
||
for the specified target and version.
|
||
|
||
The only way that the driver program depends on the target machine is
|
||
in the parsing and handling of special machine-specific options.
|
||
However, this is controlled by a file which is found, along with the
|
||
other executables, in the directory for the specified version and
|
||
target machine. As a result, a single installed driver program adapts
|
||
to any specified target machine and compiler version.
|
||
|
||
The driver program executable does control one significant thing,
|
||
however: the default version and target machine. Therefore, you can
|
||
install different instances of the driver program, compiled for
|
||
different targets or versions, under different names.
|
||
|
||
For example, if the driver for version 2.0 is installed as `ogcc'
|
||
and that for version 2.1 is installed as `gcc', then the command `gcc'
|
||
will use version 2.1 by default, while `ogcc' will use 2.0 by default.
|
||
However, you can choose either version with either command with the
|
||
`-V' option.
|
||
|
||
|
||
File: gcc.info, Node: Submodel Options, Next: Code Gen Options, Prev: Target Options, Up: Invoking GCC
|
||
|
||
Hardware Models and Configurations
|
||
==================================
|
||
|
||
Earlier we discussed the standard option `-b' which chooses among
|
||
different installed compilers for completely different target machines,
|
||
such as Vax vs. 68000 vs. 80386.
|
||
|
||
In addition, each of these target machine types can have its own
|
||
special options, starting with `-m', to choose among various hardware
|
||
models or configurations--for example, 68010 vs 68020, floating
|
||
coprocessor or none. A single installed version of the compiler can
|
||
compile for any model or configuration, according to the options
|
||
specified.
|
||
|
||
Some configurations of the compiler also support additional special
|
||
options, usually for compatibility with other compilers on the same
|
||
platform.
|
||
|
||
These options are defined by the macro `TARGET_SWITCHES' in the
|
||
machine description. The default for the options is also defined by
|
||
that macro, which enables you to change the defaults.
|
||
|
||
* Menu:
|
||
|
||
* M680x0 Options::
|
||
* VAX Options::
|
||
* SPARC Options::
|
||
* Convex Options::
|
||
* AMD29K Options::
|
||
* ARM Options::
|
||
* MN10300 Options::
|
||
* M32R/D Options::
|
||
* M88K Options::
|
||
* RS/6000 and PowerPC Options::
|
||
* RT Options::
|
||
* MIPS Options::
|
||
* i386 Options::
|
||
* HPPA Options::
|
||
* Intel 960 Options::
|
||
* DEC Alpha Options::
|
||
* Clipper Options::
|
||
* H8/300 Options::
|
||
* SH Options::
|
||
* System V Options::
|
||
* V850 Options::
|
||
|
||
|
||
File: gcc.info, Node: M680x0 Options, Next: VAX Options, Up: Submodel Options
|
||
|
||
M680x0 Options
|
||
--------------
|
||
|
||
These are the `-m' options defined for the 68000 series. The default
|
||
values for these options depends on which style of 68000 was selected
|
||
when the compiler was configured; the defaults for the most common
|
||
choices are given below.
|
||
|
||
`-m68000'
|
||
`-mc68000'
|
||
Generate output for a 68000. This is the default when the
|
||
compiler is configured for 68000-based systems.
|
||
|
||
`-m68020'
|
||
`-mc68020'
|
||
Generate output for a 68020. This is the default when the
|
||
compiler is configured for 68020-based systems.
|
||
|
||
`-m68881'
|
||
Generate output containing 68881 instructions for floating point.
|
||
This is the default for most 68020 systems unless `-nfp' was
|
||
specified when the compiler was configured.
|
||
|
||
`-m68030'
|
||
Generate output for a 68030. This is the default when the
|
||
compiler is configured for 68030-based systems.
|
||
|
||
`-m68040'
|
||
Generate output for a 68040. This is the default when the
|
||
compiler is configured for 68040-based systems.
|
||
|
||
This option inhibits the use of 68881/68882 instructions that have
|
||
to be emulated by software on the 68040. If your 68040 does not
|
||
have code to emulate those instructions, use `-m68040'.
|
||
|
||
`-m68060'
|
||
Generate output for a 68060. This is the default when the
|
||
compiler is configured for 68060-based systems.
|
||
|
||
This option inhibits the use of 68020 and 68881/68882 instructions
|
||
that have to be emulated by software on the 68060. If your 68060
|
||
does not have code to emulate those instructions, use `-m68060'.
|
||
|
||
`-m5200'
|
||
Generate output for a 520X "coldfire" family cpu. This is the
|
||
default when the compiler is configured for 520X-based systems.
|
||
|
||
`-m68020-40'
|
||
Generate output for a 68040, without using any of the new
|
||
instructions. This results in code which can run relatively
|
||
efficiently on either a 68020/68881 or a 68030 or a 68040. The
|
||
generated code does use the 68881 instructions that are emulated
|
||
on the 68040.
|
||
|
||
`-m68020-60'
|
||
Generate output for a 68060, without using any of the new
|
||
instructions. This results in code which can run relatively
|
||
efficiently on either a 68020/68881 or a 68030 or a 68040. The
|
||
generated code does use the 68881 instructions that are emulated
|
||
on the 68060.
|
||
|
||
`-mfpa'
|
||
Generate output containing Sun FPA instructions for floating point.
|
||
|
||
`-msoft-float'
|
||
Generate output containing library calls for floating point.
|
||
*Warning:* the requisite libraries are not available for all m68k
|
||
targets. Normally the facilities of the machine's usual C
|
||
compiler are used, but this can't be done directly in
|
||
cross-compilation. You must make your own arrangements to provide
|
||
suitable library functions for cross-compilation. The embedded
|
||
targets `m68k-*-aout' and `m68k-*-coff' do provide software
|
||
floating point support.
|
||
|
||
`-mshort'
|
||
Consider type `int' to be 16 bits wide, like `short int'.
|
||
|
||
`-mnobitfield'
|
||
Do not use the bit-field instructions. The `-m68000' option
|
||
implies `-mnobitfield'.
|
||
|
||
`-mbitfield'
|
||
Do use the bit-field instructions. The `-m68020' option implies
|
||
`-mbitfield'. This is the default if you use a configuration
|
||
designed for a 68020.
|
||
|
||
`-mrtd'
|
||
Use a different function-calling convention, in which functions
|
||
that take a fixed number of arguments return with the `rtd'
|
||
instruction, which pops their arguments while returning. This
|
||
saves one instruction in the caller since there is no need to pop
|
||
the arguments there.
|
||
|
||
This calling convention is incompatible with the one normally used
|
||
on Unix, so you cannot use it if you need to call libraries
|
||
compiled with the Unix compiler.
|
||
|
||
Also, you must provide function prototypes for all functions that
|
||
take variable numbers of arguments (including `printf'); otherwise
|
||
incorrect code will be generated for calls to those functions.
|
||
|
||
In addition, seriously incorrect code will result if you call a
|
||
function with too many arguments. (Normally, extra arguments are
|
||
harmlessly ignored.)
|
||
|
||
The `rtd' instruction is supported by the 68010, 68020, 68030,
|
||
68040, and 68060 processors, but not by the 68000 or 5200.
|
||
|
||
`-malign-int'
|
||
`-mno-align-int'
|
||
Control whether GNU CC aligns `int', `long', `long long', `float',
|
||
`double', and `long double' variables on a 32-bit boundary
|
||
(`-malign-int') or a 16-bit boundary (`-mno-align-int'). Aligning
|
||
variables on 32-bit boundaries produces code that runs somewhat
|
||
faster on processors with 32-bit busses at the expense of more
|
||
memory.
|
||
|
||
*Warning:* if you use the `-malign-int' switch, GNU CC will align
|
||
structures containing the above types differently than most
|
||
published application binary interface specifications for the m68k.
|
||
|
||
|
||
File: gcc.info, Node: VAX Options, Next: SPARC Options, Prev: M680x0 Options, Up: Submodel Options
|
||
|
||
VAX Options
|
||
-----------
|
||
|
||
These `-m' options are defined for the Vax:
|
||
|
||
`-munix'
|
||
Do not output certain jump instructions (`aobleq' and so on) that
|
||
the Unix assembler for the Vax cannot handle across long ranges.
|
||
|
||
`-mgnu'
|
||
Do output those jump instructions, on the assumption that you will
|
||
assemble with the GNU assembler.
|
||
|
||
`-mg'
|
||
Output code for g-format floating point numbers instead of
|
||
d-format.
|
||
|
||
|
||
File: gcc.info, Node: SPARC Options, Next: Convex Options, Prev: VAX Options, Up: Submodel Options
|
||
|
||
SPARC Options
|
||
-------------
|
||
|
||
These `-m' switches are supported on the SPARC:
|
||
|
||
`-mno-app-regs'
|
||
`-mapp-regs'
|
||
Specify `-mapp-regs' to generate output using the global registers
|
||
2 through 4, which the SPARC SVR4 ABI reserves for applications.
|
||
This is the default.
|
||
|
||
To be fully SVR4 ABI compliant at the cost of some performance
|
||
loss, specify `-mno-app-regs'. You should compile libraries and
|
||
system software with this option.
|
||
|
||
`-mfpu'
|
||
`-mhard-float'
|
||
Generate output containing floating point instructions. This is
|
||
the default.
|
||
|
||
`-mno-fpu'
|
||
`-msoft-float'
|
||
Generate output containing library calls for floating point.
|
||
*Warning:* the requisite libraries are not available for all SPARC
|
||
targets. Normally the facilities of the machine's usual C
|
||
compiler are used, but this cannot be done directly in
|
||
cross-compilation. You must make your own arrangements to provide
|
||
suitable library functions for cross-compilation. The embedded
|
||
targets `sparc-*-aout' and `sparclite-*-*' do provide software
|
||
floating point support.
|
||
|
||
`-msoft-float' changes the calling convention in the output file;
|
||
therefore, it is only useful if you compile *all* of a program with
|
||
this option. In particular, you need to compile `libgcc.a', the
|
||
library that comes with GNU CC, with `-msoft-float' in order for
|
||
this to work.
|
||
|
||
`-mhard-quad-float'
|
||
Generate output containing quad-word (long double) floating point
|
||
instructions.
|
||
|
||
`-msoft-quad-float'
|
||
Generate output containing library calls for quad-word (long
|
||
double) floating point instructions. The functions called are
|
||
those specified in the SPARC ABI. This is the default.
|
||
|
||
As of this writing, there are no sparc implementations that have
|
||
hardware support for the quad-word floating point instructions.
|
||
They all invoke a trap handler for one of these instructions, and
|
||
then the trap handler emulates the effect of the instruction.
|
||
Because of the trap handler overhead, this is much slower than
|
||
calling the ABI library routines. Thus the `-msoft-quad-float'
|
||
option is the default.
|
||
|
||
`-mno-epilogue'
|
||
`-mepilogue'
|
||
With `-mepilogue' (the default), the compiler always emits code for
|
||
function exit at the end of each function. Any function exit in
|
||
the middle of the function (such as a return statement in C) will
|
||
generate a jump to the exit code at the end of the function.
|
||
|
||
With `-mno-epilogue', the compiler tries to emit exit code inline
|
||
at every function exit.
|
||
|
||
`-mno-flat'
|
||
`-mflat'
|
||
With `-mflat', the compiler does not generate save/restore
|
||
instructions and will use a "flat" or single register window
|
||
calling convention. This model uses %i7 as the frame pointer and
|
||
is compatible with the normal register window model. Code from
|
||
either may be intermixed. The local registers and the input
|
||
registers (0-5) are still treated as "call saved" registers and
|
||
will be saved on the stack as necessary.
|
||
|
||
With `-mno-flat' (the default), the compiler emits save/restore
|
||
instructions (except for leaf functions) and is the normal mode of
|
||
operation.
|
||
|
||
`-mno-unaligned-doubles'
|
||
`-munaligned-doubles'
|
||
Assume that doubles have 8 byte alignment. This is the default.
|
||
|
||
With `-munaligned-doubles', GNU CC assumes that doubles have 8 byte
|
||
alignment only if they are contained in another type, or if they
|
||
have an absolute address. Otherwise, it assumes they have 4 byte
|
||
alignment. Specifying this option avoids some rare compatibility
|
||
problems with code generated by other compilers. It is not the
|
||
default because it results in a performance loss, especially for
|
||
floating point code.
|
||
|
||
`-mv8'
|
||
`-msparclite'
|
||
These two options select variations on the SPARC architecture.
|
||
|
||
By default (unless specifically configured for the Fujitsu
|
||
SPARClite), GCC generates code for the v7 variant of the SPARC
|
||
architecture.
|
||
|
||
`-mv8' will give you SPARC v8 code. The only difference from v7
|
||
code is that the compiler emits the integer multiply and integer
|
||
divide instructions which exist in SPARC v8 but not in SPARC v7.
|
||
|
||
`-msparclite' will give you SPARClite code. This adds the integer
|
||
multiply, integer divide step and scan (`ffs') instructions which
|
||
exist in SPARClite but not in SPARC v7.
|
||
|
||
These options are deprecated and will be deleted in GNU CC 2.9.
|
||
They have been replaced with `-mcpu=xxx'.
|
||
|
||
`-mcypress'
|
||
`-msupersparc'
|
||
These two options select the processor for which the code is
|
||
optimised.
|
||
|
||
With `-mcypress' (the default), the compiler optimizes code for the
|
||
Cypress CY7C602 chip, as used in the SparcStation/SparcServer 3xx
|
||
series. This is also appropriate for the older SparcStation 1, 2,
|
||
IPX etc.
|
||
|
||
With `-msupersparc' the compiler optimizes code for the SuperSparc
|
||
cpu, as used in the SparcStation 10, 1000 and 2000 series. This
|
||
flag also enables use of the full SPARC v8 instruction set.
|
||
|
||
These options are deprecated and will be deleted in GNU CC 2.9.
|
||
They have been replaced with `-mcpu=xxx'.
|
||
|
||
`-mcpu=CPU_TYPE'
|
||
Set the instruction set, register set, and instruction scheduling
|
||
parameters for machine type CPU_TYPE. Supported values for
|
||
CPU_TYPE are `v7', `cypress', `v8', `supersparc', `sparclite',
|
||
`f930', `f934', `sparclet', `tsc701', `v9', and `ultrasparc'.
|
||
|
||
Default instruction scheduling parameters are used for values that
|
||
select an architecture and not an implementation. These are `v7',
|
||
`v8', `sparclite', `sparclet', `v9'.
|
||
|
||
Here is a list of each supported architecture and their supported
|
||
implementations.
|
||
|
||
v7: cypress
|
||
v8: supersparc
|
||
sparclite: f930, f934
|
||
sparclet: tsc701
|
||
v9: ultrasparc
|
||
|
||
`-mtune=CPU_TYPE'
|
||
Set the instruction scheduling parameters for machine type
|
||
CPU_TYPE, but do not set the instruction set or register set that
|
||
the option `-mcpu='CPU_TYPE would.
|
||
|
||
The same values for `-mcpu='CPU_TYPE are used for
|
||
`-mtune='CPU_TYPE, though the only useful values are those that
|
||
select a particular cpu implementation: `cypress', `supersparc',
|
||
`f930', `f934', `tsc701', `ultrasparc'.
|
||
|
||
`-malign-loops=NUM'
|
||
Align loops to a 2 raised to a NUM byte boundary. If
|
||
`-malign-loops' is not specified, the default is 2.
|
||
|
||
`-malign-jumps=NUM'
|
||
Align instructions that are only jumped to to a 2 raised to a NUM
|
||
byte boundary. If `-malign-jumps' is not specified, the default
|
||
is 2.
|
||
|
||
`-malign-functions=NUM'
|
||
Align the start of functions to a 2 raised to NUM byte boundary.
|
||
If `-malign-functions' is not specified, the default is 2 if
|
||
compiling for 32 bit sparc, and 5 if compiling for 64 bit sparc.
|
||
|
||
These `-m' switches are supported in addition to the above on the
|
||
SPARCLET processor.
|
||
|
||
`-mlittle-endian'
|
||
Generate code for a processor running in little-endian mode.
|
||
|
||
`-mlive-g0'
|
||
Treat register `%g0' as a normal register. GCC will continue to
|
||
clobber it as necessary but will not assume it always reads as 0.
|
||
|
||
`-mbroken-saverestore'
|
||
Generate code that does not use non-trivial forms of the `save' and
|
||
`restore' instructions. Early versions of the SPARCLET processor
|
||
do not correctly handle `save' and `restore' instructions used with
|
||
arguments. They correctly handle them used without arguments. A
|
||
`save' instruction used without arguments increments the current
|
||
window pointer but does not allocate a new stack frame. It is
|
||
assumed that the window overflow trap handler will properly handle
|
||
this case as will interrupt handlers.
|
||
|
||
These `-m' switches are supported in addition to the above on SPARC
|
||
V9 processors in 64 bit environments.
|
||
|
||
`-mlittle-endian'
|
||
Generate code for a processor running in little-endian mode.
|
||
|
||
`-m32'
|
||
`-m64'
|
||
Generate code for a 32 bit or 64 bit environment. The 32 bit
|
||
environment sets int, long and pointer to 32 bits. The 64 bit
|
||
environment sets int to 32 bits and long and pointer to 64 bits.
|
||
|
||
`-mcmodel=medlow'
|
||
Generate code for the Medium/Low code model: the program must be
|
||
linked in the low 32 bits of the address space. Pointers are 64
|
||
bits. Programs can be statically or dynamically linked.
|
||
|
||
`-mcmodel=medmid'
|
||
Generate code for the Medium/Middle code model: the program must
|
||
be linked in the low 44 bits of the address space, the text
|
||
segment must be less than 2G bytes, and data segment must be
|
||
within 2G of the text segment. Pointers are 64 bits.
|
||
|
||
`-mcmodel=medany'
|
||
Generate code for the Medium/Anywhere code model: the program may
|
||
be linked anywhere in the address space, the text segment must be
|
||
less than 2G bytes, and data segment must be within 2G of the text
|
||
segment. Pointers are 64 bits.
|
||
|
||
`-mcmodel=embmedany'
|
||
Generate code for the Medium/Anywhere code model for embedded
|
||
systems: assume a 32 bit text and a 32 bit data segment, both
|
||
starting anywhere (determined at link time). Register %g4 points
|
||
to the base of the data segment. Pointers still 64 bits.
|
||
Programs are statically linked, PIC is not supported.
|
||
|
||
`-mstack-bias'
|
||
`-mno-stack-bias'
|
||
With `-mstack-bias', GNU CC assumes that the stack pointer, and
|
||
frame pointer if present, are offset by -2047 which must be added
|
||
back when making stack frame references. Otherwise, assume no
|
||
such offset is present.
|
||
|
||
|
||
File: gcc.info, Node: Convex Options, Next: AMD29K Options, Prev: SPARC Options, Up: Submodel Options
|
||
|
||
Convex Options
|
||
--------------
|
||
|
||
These `-m' options are defined for Convex:
|
||
|
||
`-mc1'
|
||
Generate output for C1. The code will run on any Convex machine.
|
||
The preprocessor symbol `__convex__c1__' is defined.
|
||
|
||
`-mc2'
|
||
Generate output for C2. Uses instructions not available on C1.
|
||
Scheduling and other optimizations are chosen for max performance
|
||
on C2. The preprocessor symbol `__convex_c2__' is defined.
|
||
|
||
`-mc32'
|
||
Generate output for C32xx. Uses instructions not available on C1.
|
||
Scheduling and other optimizations are chosen for max performance
|
||
on C32. The preprocessor symbol `__convex_c32__' is defined.
|
||
|
||
`-mc34'
|
||
Generate output for C34xx. Uses instructions not available on C1.
|
||
Scheduling and other optimizations are chosen for max performance
|
||
on C34. The preprocessor symbol `__convex_c34__' is defined.
|
||
|
||
`-mc38'
|
||
Generate output for C38xx. Uses instructions not available on C1.
|
||
Scheduling and other optimizations are chosen for max performance
|
||
on C38. The preprocessor symbol `__convex_c38__' is defined.
|
||
|
||
`-margcount'
|
||
Generate code which puts an argument count in the word preceding
|
||
each argument list. This is compatible with regular CC, and a few
|
||
programs may need the argument count word. GDB and other
|
||
source-level debuggers do not need it; this info is in the symbol
|
||
table.
|
||
|
||
`-mnoargcount'
|
||
Omit the argument count word. This is the default.
|
||
|
||
`-mvolatile-cache'
|
||
Allow volatile references to be cached. This is the default.
|
||
|
||
`-mvolatile-nocache'
|
||
Volatile references bypass the data cache, going all the way to
|
||
memory. This is only needed for multi-processor code that does
|
||
not use standard synchronization instructions. Making
|
||
non-volatile references to volatile locations will not necessarily
|
||
work.
|
||
|
||
`-mlong32'
|
||
Type long is 32 bits, the same as type int. This is the default.
|
||
|
||
`-mlong64'
|
||
Type long is 64 bits, the same as type long long. This option is
|
||
useless, because no library support exists for it.
|
||
|
||
|
||
File: gcc.info, Node: AMD29K Options, Next: ARM Options, Prev: Convex Options, Up: Submodel Options
|
||
|
||
AMD29K Options
|
||
--------------
|
||
|
||
These `-m' options are defined for the AMD Am29000:
|
||
|
||
`-mdw'
|
||
Generate code that assumes the `DW' bit is set, i.e., that byte and
|
||
halfword operations are directly supported by the hardware. This
|
||
is the default.
|
||
|
||
`-mndw'
|
||
Generate code that assumes the `DW' bit is not set.
|
||
|
||
`-mbw'
|
||
Generate code that assumes the system supports byte and halfword
|
||
write operations. This is the default.
|
||
|
||
`-mnbw'
|
||
Generate code that assumes the systems does not support byte and
|
||
halfword write operations. `-mnbw' implies `-mndw'.
|
||
|
||
`-msmall'
|
||
Use a small memory model that assumes that all function addresses
|
||
are either within a single 256 KB segment or at an absolute
|
||
address of less than 256k. This allows the `call' instruction to
|
||
be used instead of a `const', `consth', `calli' sequence.
|
||
|
||
`-mnormal'
|
||
Use the normal memory model: Generate `call' instructions only when
|
||
calling functions in the same file and `calli' instructions
|
||
otherwise. This works if each file occupies less than 256 KB but
|
||
allows the entire executable to be larger than 256 KB. This is
|
||
the default.
|
||
|
||
`-mlarge'
|
||
Always use `calli' instructions. Specify this option if you expect
|
||
a single file to compile into more than 256 KB of code.
|
||
|
||
`-m29050'
|
||
Generate code for the Am29050.
|
||
|
||
`-m29000'
|
||
Generate code for the Am29000. This is the default.
|
||
|
||
`-mkernel-registers'
|
||
Generate references to registers `gr64-gr95' instead of to
|
||
registers `gr96-gr127'. This option can be used when compiling
|
||
kernel code that wants a set of global registers disjoint from
|
||
that used by user-mode code.
|
||
|
||
Note that when this option is used, register names in `-f' flags
|
||
must use the normal, user-mode, names.
|
||
|
||
`-muser-registers'
|
||
Use the normal set of global registers, `gr96-gr127'. This is the
|
||
default.
|
||
|
||
`-mstack-check'
|
||
`-mno-stack-check'
|
||
Insert (or do not insert) a call to `__msp_check' after each stack
|
||
adjustment. This is often used for kernel code.
|
||
|
||
`-mstorem-bug'
|
||
`-mno-storem-bug'
|
||
`-mstorem-bug' handles 29k processors which cannot handle the
|
||
separation of a mtsrim insn and a storem instruction (most 29000
|
||
chips to date, but not the 29050).
|
||
|
||
`-mno-reuse-arg-regs'
|
||
`-mreuse-arg-regs'
|
||
`-mno-reuse-arg-regs' tells the compiler to only use incoming
|
||
argument registers for copying out arguments. This helps detect
|
||
calling a function with fewer arguments than it was declared with.
|
||
|
||
`-mno-impure-text'
|
||
`-mimpure-text'
|
||
`-mimpure-text', used in addition to `-shared', tells the compiler
|
||
to not pass `-assert pure-text' to the linker when linking a
|
||
shared object.
|
||
|
||
`-msoft-float'
|
||
Generate output containing library calls for floating point.
|
||
*Warning:* the requisite libraries are not part of GNU CC.
|
||
Normally the facilities of the machine's usual C compiler are
|
||
used, but this can't be done directly in cross-compilation. You
|
||
must make your own arrangements to provide suitable library
|
||
functions for cross-compilation.
|
||
|
||
|
||
File: gcc.info, Node: ARM Options, Next: MN10300 Options, Prev: AMD29K Options, Up: Submodel Options
|
||
|
||
ARM Options
|
||
-----------
|
||
|
||
These `-m' options are defined for Advanced RISC Machines (ARM)
|
||
architectures:
|
||
|
||
`-mapcs-frame'
|
||
Generate a stack frame that is compliant with the ARM Procedure
|
||
Call Standard for all functions, even if this is not strictly
|
||
necessary for correct execution of the code.
|
||
|
||
`-mapcs-26'
|
||
Generate code for a processor running with a 26-bit program
|
||
counter, and conforming to the function calling standards for the
|
||
APCS 26-bit option. This option replaces the `-m2' and `-m3'
|
||
options of previous releases of the compiler.
|
||
|
||
`-mapcs-32'
|
||
Generate code for a processor running with a 32-bit program
|
||
counter, and conforming to the function calling standards for the
|
||
APCS 32-bit option. This option replaces the `-m6' option of
|
||
previous releases of the compiler.
|
||
|
||
`-mhard-float'
|
||
Generate output containing floating point instructions. This is
|
||
the default.
|
||
|
||
`-msoft-float'
|
||
Generate output containing library calls for floating point.
|
||
*Warning:* the requisite libraries are not available for all ARM
|
||
targets. Normally the facilities of the machine's usual C
|
||
compiler are used, but this cannot be done directly in
|
||
cross-compilation. You must make your own arrangements to provide
|
||
suitable library functions for cross-compilation.
|
||
|
||
`-msoft-float' changes the calling convention in the output file;
|
||
therefore, it is only useful if you compile *all* of a program with
|
||
this option. In particular, you need to compile `libgcc.a', the
|
||
library that comes with GNU CC, with `-msoft-float' in order for
|
||
this to work.
|
||
|
||
`-mlittle-endian'
|
||
Generate code for a processor running in little-endian mode. This
|
||
is the default for all standard configurations.
|
||
|
||
`-mbig-endian'
|
||
Generate code for a processor running in big-endian mode; the
|
||
default is to compile code for a little-endian processor.
|
||
|
||
`-mwords-little-endian'
|
||
This option only applies when generating code for big-endian
|
||
processors. Generate code for a little-endian word order but a
|
||
big-endian byte order. That is, a byte order of the form
|
||
`32107654'. Note: this option should only be used if you require
|
||
compatibility with code for big-endian ARM processors generated by
|
||
versions of the compiler prior to 2.8.
|
||
|
||
`-mshort-load-bytes'
|
||
Do not try to load half-words (eg `short's) by loading a word from
|
||
an unaligned address. For some targets the MMU is configured to
|
||
trap unaligned loads; use this option to generate code that is
|
||
safe in these environments.
|
||
|
||
`-mno-short-load-bytes'
|
||
Use unaligned word loads to load half-words (eg `short's). This
|
||
option produces more efficient code, but the MMU is sometimes
|
||
configured to trap these instructions.
|
||
|
||
`-mbsd'
|
||
This option only applies to RISC iX. Emulate the native BSD-mode
|
||
compiler. This is the default if `-ansi' is not specified.
|
||
|
||
`-mxopen'
|
||
This option only applies to RISC iX. Emulate the native
|
||
X/Open-mode compiler.
|
||
|
||
`-mno-symrename'
|
||
This option only applies to RISC iX. Do not run the assembler
|
||
post-processor, `symrename', after code has been assembled.
|
||
Normally it is necessary to modify some of the standard symbols in
|
||
preparation for linking with the RISC iX C library; this option
|
||
suppresses this pass. The post-processor is never run when the
|
||
compiler is built for cross-compilation.
|
||
|
||
|
||
File: gcc.info, Node: MN10300 Options, Next: M32R/D Options, Prev: ARM Options, Up: Submodel Options
|
||
|
||
MN10300 Options
|
||
---------------
|
||
|
||
These `-m' options are defined for Matsushita MN10300 architectures:
|
||
|
||
`-mmult-bug'
|
||
Generate code to avoid bugs in the multiply instructions for the
|
||
MN10300 processors. This is the default.
|
||
|
||
`-mno-mult-bug'
|
||
Do not generate code to avoid bugs in the multiply instructions
|
||
for the MN10300 processors.
|
||
|
||
|
||
File: gcc.info, Node: M32R/D Options, Next: M88K Options, Prev: MN10300 Options, Up: Submodel Options
|
||
|
||
M32R/D Options
|
||
--------------
|
||
|
||
These `-m' options are defined for Mitsubishi M32R/D architectures:
|
||
|
||
`-mcode-model=small'
|
||
Assume all objects live in the lower 16MB of memory (so that their
|
||
addresses can be loaded with the `ld24' instruction), and assume
|
||
all subroutines are reachable with the `bl' instruction. This is
|
||
the default.
|
||
|
||
The addressability of a particular object can be set with the
|
||
`model' attribute.
|
||
|
||
`-mcode-model=medium'
|
||
Assume objects may be anywhere in the 32 bit address space (the
|
||
compiler will generate `seth/add3' instructions to load their
|
||
addresses), and assume all subroutines are reachable with the `bl'
|
||
instruction.
|
||
|
||
`-mcode-model=large'
|
||
Assume objects may be anywhere in the 32 bit address space (the
|
||
compiler will generate `seth/add3' instructions to load their
|
||
addresses), and assume subroutines may not be reachable with the
|
||
`bl' instruction (the compiler will generate the much slower
|
||
`seth/add3/jl' instruction sequence).
|
||
|
||
`-msdata=none'
|
||
Disable use of the small data area. Variables will be put into
|
||
one of `.data', `bss', or `.rodata' (unless the `section'
|
||
attribute has been specified). This is the default.
|
||
|
||
The small data area consists of sections `.sdata' and `.sbss'.
|
||
Objects may be explicitly put in the small data area with the
|
||
`section' attribute using one of these sections.
|
||
|
||
`-msdata=sdata'
|
||
Put small global and static data in the small data area, but do not
|
||
generate special code to reference them.
|
||
|
||
`-msdata=use'
|
||
Put small global and static data in the small data area, and
|
||
generate special instructions to reference them.
|
||
|
||
`-G NUM'
|
||
Put global and static objects less than or equal to NUM bytes into
|
||
the small data or bss sections instead of the normal data or bss
|
||
sections. The default value of NUM is 8. The `-msdata' option
|
||
must be set to one of `sdata' or `use' for this option to have any
|
||
effect.
|
||
|
||
All modules should be compiled with the same `-G NUM' value.
|
||
Compiling with different values of NUM may or may not work; if it
|
||
doesn't the linker will give an error message - incorrect code
|
||
will not be generated.
|
||
|