initial import of GCC 3.3.3, which fixes a few more bugs from the prior
3.3.3-pre snapshot we were using. visit http://gcc.gnu.org/gcc-3.3/changes.html#3.3.3 for more details.
This commit is contained in:
parent
074e4b8a74
commit
ec14d423fc
446
gnu/dist/gcc/FAQ
vendored
446
gnu/dist/gcc/FAQ
vendored
@ -1,12 +1,12 @@
|
||||
|
||||
GCC Frequently Asked Questions
|
||||
|
||||
The latest version of this document is always available at
|
||||
The latest version of this document is always available at
|
||||
[1]http://gcc.gnu.org/faq.html.
|
||||
|
||||
This FAQ tries to answer specific questions concerning GCC. For
|
||||
general information regarding C, C++, resp. Fortran please check the
|
||||
[2]comp.lang.c FAQ, [3]comp.std.c++ FAQ, and the [4]Fortran
|
||||
This FAQ tries to answer specific questions concerning GCC. For
|
||||
general information regarding C, C++, resp. Fortran please check the
|
||||
[2]comp.lang.c FAQ, [3]comp.std.c++ FAQ, and the [4]Fortran
|
||||
Information page.
|
||||
|
||||
Other GCC-related FAQs: [5]libstdc++-v3, and [6]GCJ.
|
||||
@ -34,12 +34,12 @@
|
||||
1. [24]Is there a stringstream / sstream for GCC 2.95.2?
|
||||
5. [25]Miscellaneous
|
||||
1. [26]Friend Templates
|
||||
2. [27]dynamic_cast, throw, typeid don't work with shared
|
||||
2. [27]dynamic_cast, throw, typeid don't work with shared
|
||||
libraries
|
||||
3. [28]Why do I need autoconf, bison, xgettext, automake, etc?
|
||||
4. [29]Why can't I build a shared library?
|
||||
5. [30]When building C++, the linker says my constructors,
|
||||
destructors or virtual tables are undefined, but I defined
|
||||
5. [30]When building C++, the linker says my constructors,
|
||||
destructors or virtual tables are undefined, but I defined
|
||||
them
|
||||
6. [31]Will GCC someday include an incremental linker?
|
||||
_________________________________________________________________
|
||||
@ -48,101 +48,101 @@
|
||||
|
||||
What is the relationship between GCC and EGCS?
|
||||
|
||||
In 1990/1991 gcc version 1 had reached a point of stability. For the
|
||||
targets it could support, it worked well. It had limitations inherent
|
||||
in its design that would be difficult to resolve, so a major effort
|
||||
was made to resolve those limitations and gcc version 2 was the
|
||||
In 1990/1991 gcc version 1 had reached a point of stability. For the
|
||||
targets it could support, it worked well. It had limitations inherent
|
||||
in its design that would be difficult to resolve, so a major effort
|
||||
was made to resolve those limitations and gcc version 2 was the
|
||||
result.
|
||||
|
||||
When we had gcc2 in a useful state, development efforts on gcc1
|
||||
stopped and we all concentrated on making gcc2 better than gcc1 could
|
||||
ever be. This is the kind of step forward we wanted to make with the
|
||||
When we had gcc2 in a useful state, development efforts on gcc1
|
||||
stopped and we all concentrated on making gcc2 better than gcc1 could
|
||||
ever be. This is the kind of step forward we wanted to make with the
|
||||
EGCS project when it was formed in 1997.
|
||||
|
||||
In April 1999 the Free Software Foundation officially halted
|
||||
In April 1999 the Free Software Foundation officially halted
|
||||
development on the gcc2 compiler and appointed the EGCS project as the
|
||||
official GCC maintainers. The net result was a single project which
|
||||
carries forward GCC development under the ultimate control of the
|
||||
official GCC maintainers. The net result was a single project which
|
||||
carries forward GCC development under the ultimate control of the
|
||||
[32]GCC Steering Committee.
|
||||
_________________________________________________________________
|
||||
|
||||
What is an open development model?
|
||||
|
||||
We are using a bazaar style [33][1] approach to GCC development: we
|
||||
make snapshots publicly available to anyone who wants to try them; we
|
||||
welcome anyone to join the development mailing list. All of the
|
||||
We are using a bazaar style [33][1] approach to GCC development: we
|
||||
make snapshots publicly available to anyone who wants to try them; we
|
||||
welcome anyone to join the development mailing list. All of the
|
||||
discussions on the development mailing list are available via the web.
|
||||
We're going to be making releases with a much higher frequency than
|
||||
We're going to be making releases with a much higher frequency than
|
||||
they have been made in the past.
|
||||
|
||||
In addition to weekly snapshots of the GCC development sources, we
|
||||
have the sources readable from a CVS server by anyone. Furthermore we
|
||||
are using remote CVS to allow remote maintainers write access to the
|
||||
In addition to weekly snapshots of the GCC development sources, we
|
||||
have the sources readable from a CVS server by anyone. Furthermore we
|
||||
are using remote CVS to allow remote maintainers write access to the
|
||||
sources.
|
||||
|
||||
There have been many potential GCC developers who were not able to
|
||||
participate in GCC development in the past. We want these people to
|
||||
help in any way they can; we ultimately want GCC to be the best
|
||||
There have been many potential GCC developers who were not able to
|
||||
participate in GCC development in the past. We want these people to
|
||||
help in any way they can; we ultimately want GCC to be the best
|
||||
compiler in the world.
|
||||
|
||||
A compiler is a complicated piece of software, there will still be
|
||||
strong central maintainers who will reject patches, who will demand
|
||||
documentation of implementations, and who will keep the level of
|
||||
quality as high as it is today. Code that could use wider testing may
|
||||
A compiler is a complicated piece of software, there will still be
|
||||
strong central maintainers who will reject patches, who will demand
|
||||
documentation of implementations, and who will keep the level of
|
||||
quality as high as it is today. Code that could use wider testing may
|
||||
be integrated--code that is simply ill-conceived won't be.
|
||||
|
||||
GCC is not the first piece of software to use this open development
|
||||
process; FreeBSD, the Emacs lisp repository, and the Linux kernel are
|
||||
GCC is not the first piece of software to use this open development
|
||||
process; FreeBSD, the Emacs lisp repository, and the Linux kernel are
|
||||
a few examples of the bazaar style of development.
|
||||
|
||||
With GCC, we are adding new features and optimizations at a rate that
|
||||
has not been done since the creation of gcc2; these additions
|
||||
inevitably have a temporarily destabilizing effect. With the help of
|
||||
developers working together with this bazaar style development, the
|
||||
resulting stability and quality levels will be better than we've had
|
||||
With GCC, we are adding new features and optimizations at a rate that
|
||||
has not been done since the creation of gcc2; these additions
|
||||
inevitably have a temporarily destabilizing effect. With the help of
|
||||
developers working together with this bazaar style development, the
|
||||
resulting stability and quality levels will be better than we've had
|
||||
before.
|
||||
|
||||
[1] We've been discussing different development models a lot over
|
||||
[1] We've been discussing different development models a lot over
|
||||
the past few months. The paper which started all of this introduced
|
||||
two terms: A cathedral development model versus a bazaar
|
||||
development model. The paper is written by Eric S. Raymond, it is
|
||||
called ``The Cathedral and the Bazaar''. The paper is a useful
|
||||
two terms: A cathedral development model versus a bazaar
|
||||
development model. The paper is written by Eric S. Raymond, it is
|
||||
called ``The Cathedral and the Bazaar''. The paper is a useful
|
||||
starting point for discussions.
|
||||
_________________________________________________________________
|
||||
|
||||
How do I get a bug fixed or a feature added?
|
||||
|
||||
There are lots of ways to get something fixed. The list below may be
|
||||
incomplete, but it covers many of the common cases. These are listed
|
||||
roughly in order of decreasing difficulty for the average GCC user,
|
||||
meaning someone who is not skilled in the internals of GCC, and where
|
||||
difficulty is measured in terms of the time required to fix the bug.
|
||||
No alternative is better than any other; each has its benefits and
|
||||
There are lots of ways to get something fixed. The list below may be
|
||||
incomplete, but it covers many of the common cases. These are listed
|
||||
roughly in order of decreasing difficulty for the average GCC user,
|
||||
meaning someone who is not skilled in the internals of GCC, and where
|
||||
difficulty is measured in terms of the time required to fix the bug.
|
||||
No alternative is better than any other; each has its benefits and
|
||||
disadvantages.
|
||||
* Fix it yourself. This alternative will probably bring results, if
|
||||
you work hard enough, but will probably take a lot of time, and,
|
||||
depending on the quality of your work and the perceived benefits
|
||||
of your changes, your code may or may not ever make it into an
|
||||
* Fix it yourself. This alternative will probably bring results, if
|
||||
you work hard enough, but will probably take a lot of time, and,
|
||||
depending on the quality of your work and the perceived benefits
|
||||
of your changes, your code may or may not ever make it into an
|
||||
official release of GCC.
|
||||
* [34]Report the problem to the GCC bug tracking system and hope
|
||||
that someone will be kind enough to fix it for you. While this is
|
||||
certainly possible, and often happens, there is no guarantee that
|
||||
it will. You should not expect the same response from this method
|
||||
that you would see from a commercial support organization since
|
||||
the people who read GCC bug reports, if they choose to help you,
|
||||
* [34]Report the problem to the GCC bug tracking system and hope
|
||||
that someone will be kind enough to fix it for you. While this is
|
||||
certainly possible, and often happens, there is no guarantee that
|
||||
it will. You should not expect the same response from this method
|
||||
that you would see from a commercial support organization since
|
||||
the people who read GCC bug reports, if they choose to help you,
|
||||
will be volunteering their time.
|
||||
* Hire someone to fix it for you. There are various companies and
|
||||
individuals providing support for GCC. This alternative costs
|
||||
* Hire someone to fix it for you. There are various companies and
|
||||
individuals providing support for GCC. This alternative costs
|
||||
money, but is relatively likely to get results.
|
||||
_________________________________________________________________
|
||||
|
||||
Does GCC work on my platform?
|
||||
|
||||
The host/target specific installation notes for GCC include
|
||||
information about known problems with installing or using GCC on
|
||||
particular platforms. These are included in the sources for a release
|
||||
in INSTALL/specific.html, and the [35]latest version is always
|
||||
available at the GCC web site. Reports of [36]successful builds for
|
||||
The host/target specific installation notes for GCC include
|
||||
information about known problems with installing or using GCC on
|
||||
particular platforms. These are included in the sources for a release
|
||||
in INSTALL/specific.html, and the [35]latest version is always
|
||||
available at the GCC web site. Reports of [36]successful builds for
|
||||
several versions of GCC are also available at the web site.
|
||||
_________________________________________________________________
|
||||
|
||||
@ -150,51 +150,51 @@ Does GCC work on my platform?
|
||||
|
||||
How to install multiple versions of GCC
|
||||
|
||||
It may be desirable to install multiple versions of the compiler on
|
||||
the same system. This can be done by using different prefix paths at
|
||||
It may be desirable to install multiple versions of the compiler on
|
||||
the same system. This can be done by using different prefix paths at
|
||||
configure time and a few symlinks.
|
||||
|
||||
Basically, configure the two compilers with different --prefix
|
||||
options, then build and install each compiler. Assume you want "gcc"
|
||||
Basically, configure the two compilers with different --prefix
|
||||
options, then build and install each compiler. Assume you want "gcc"
|
||||
to be the latest compiler and available in /usr/local/bin; also assume
|
||||
that you want "gcc2" to be the older gcc2 compiler and also available
|
||||
that you want "gcc2" to be the older gcc2 compiler and also available
|
||||
in /usr/local/bin.
|
||||
|
||||
The easiest way to do this is to configure the new GCC with
|
||||
--prefix=/usr/local/gcc and the older gcc2 with
|
||||
--prefix=/usr/local/gcc2. Build and install both compilers. Then make
|
||||
a symlink from /usr/local/bin/gcc to /usr/local/gcc/bin/gcc and from
|
||||
/usr/local/bin/gcc2 to /usr/local/gcc2/bin/gcc. Create similar links
|
||||
The easiest way to do this is to configure the new GCC with
|
||||
--prefix=/usr/local/gcc and the older gcc2 with
|
||||
--prefix=/usr/local/gcc2. Build and install both compilers. Then make
|
||||
a symlink from /usr/local/bin/gcc to /usr/local/gcc/bin/gcc and from
|
||||
/usr/local/bin/gcc2 to /usr/local/gcc2/bin/gcc. Create similar links
|
||||
for the "g++", "c++" and "g77" compiler drivers.
|
||||
|
||||
An alternative to using symlinks is to configure with a
|
||||
--program-transform-name option. This option specifies a sed command
|
||||
to process installed program names with. Using it you can, for
|
||||
An alternative to using symlinks is to configure with a
|
||||
--program-transform-name option. This option specifies a sed command
|
||||
to process installed program names with. Using it you can, for
|
||||
instance, have all the new GCC programs installed as "new-gcc" and the
|
||||
like. You will still have to specify different --prefix options for
|
||||
new GCC and old GCC, because it is only the executable program names
|
||||
like. You will still have to specify different --prefix options for
|
||||
new GCC and old GCC, because it is only the executable program names
|
||||
that are transformed. The difference is that you (as administrator) do
|
||||
not have to set up symlinks, but must specify additional directories
|
||||
not have to set up symlinks, but must specify additional directories
|
||||
in your (as a user) PATH. A complication with --program-transform-name
|
||||
is that the sed command invariably contains characters significant to
|
||||
the shell, and these have to be escaped correctly, also it is not
|
||||
possible to use "^" or "$" in the command. Here is the option to
|
||||
is that the sed command invariably contains characters significant to
|
||||
the shell, and these have to be escaped correctly, also it is not
|
||||
possible to use "^" or "$" in the command. Here is the option to
|
||||
prefix "new-" to the new GCC installed programs:
|
||||
|
||||
--program-transform-name='s,\\\\(.*\\\\),new-\\\\1,'
|
||||
|
||||
With the above --prefix option, that will install the new GCC programs
|
||||
into /usr/local/gcc/bin with names prefixed by "new-". You can use
|
||||
--program-transform-name if you have multiple versions of GCC, and
|
||||
into /usr/local/gcc/bin with names prefixed by "new-". You can use
|
||||
--program-transform-name if you have multiple versions of GCC, and
|
||||
wish to be sure about which version you are invoking.
|
||||
|
||||
If you use --prefix, GCC may have difficulty locating a GNU assembler
|
||||
or linker on your system, [37]GCC can not find GNU as/GNU ld explains
|
||||
If you use --prefix, GCC may have difficulty locating a GNU assembler
|
||||
or linker on your system, [37]GCC can not find GNU as/GNU ld explains
|
||||
how to deal with this.
|
||||
|
||||
Another option that may be easier is to use the --program-prefix= or
|
||||
--program-suffix= options to configure. So if you're installing GCC
|
||||
2.95.2 and don't want to disturb the current version of GCC in
|
||||
Another option that may be easier is to use the --program-prefix= or
|
||||
--program-suffix= options to configure. So if you're installing GCC
|
||||
2.95.2 and don't want to disturb the current version of GCC in
|
||||
/usr/local/bin/, you could do
|
||||
|
||||
configure --program-suffix=-2.95.2 <other configure options>
|
||||
@ -206,88 +206,88 @@ How to install multiple versions of GCC
|
||||
Dynamic linker is unable to find GCC libraries
|
||||
|
||||
This problem manifests itself by programs not finding shared libraries
|
||||
they depend on when the programs are started. Note this problem often
|
||||
manifests itself with failures in the libio/libstdc++ tests after
|
||||
they depend on when the programs are started. Note this problem often
|
||||
manifests itself with failures in the libio/libstdc++ tests after
|
||||
configuring with --enable-shared and building GCC.
|
||||
|
||||
GCC does not specify a runpath so that the dynamic linker can find
|
||||
GCC does not specify a runpath so that the dynamic linker can find
|
||||
dynamic libraries at runtime.
|
||||
|
||||
The short explanation is that if you always pass a -R option to the
|
||||
linker, then your programs become dependent on directories which may
|
||||
The short explanation is that if you always pass a -R option to the
|
||||
linker, then your programs become dependent on directories which may
|
||||
be NFS mounted, and programs may hang unnecessarily when an NFS server
|
||||
goes down.
|
||||
|
||||
The problem is not programs that do require the directories; those
|
||||
programs are going to hang no matter what you do. The problem is
|
||||
The problem is not programs that do require the directories; those
|
||||
programs are going to hang no matter what you do. The problem is
|
||||
programs that do not require the directories.
|
||||
|
||||
SunOS effectively always passed a -R option for every -L option; this
|
||||
was a bad idea, and so it was removed for Solaris. We should not
|
||||
SunOS effectively always passed a -R option for every -L option; this
|
||||
was a bad idea, and so it was removed for Solaris. We should not
|
||||
recreate it.
|
||||
|
||||
However, if you feel you really need such an option to be passed
|
||||
automatically to the linker, you may add it to the GCC specs file.
|
||||
This file can be found in the same directory that contains cc1 (run
|
||||
However, if you feel you really need such an option to be passed
|
||||
automatically to the linker, you may add it to the GCC specs file.
|
||||
This file can be found in the same directory that contains cc1 (run
|
||||
gcc -print-prog-name=cc1 to find it). You may add linker flags such as
|
||||
-R or -rpath, depending on platform and linker, to the *link or *lib
|
||||
-R or -rpath, depending on platform and linker, to the *link or *lib
|
||||
specs.
|
||||
|
||||
Another alternative is to install a wrapper script around gcc, g++ or
|
||||
ld that adds the appropriate directory to the environment variable
|
||||
Another alternative is to install a wrapper script around gcc, g++ or
|
||||
ld that adds the appropriate directory to the environment variable
|
||||
LD_RUN_PATH or equivalent (again, it's platform-dependent).
|
||||
|
||||
Yet another option, that works on a few platforms, is to hard-code the
|
||||
full pathname of the library into its soname. This can only be
|
||||
accomplished by modifying the appropriate .ml file within
|
||||
full pathname of the library into its soname. This can only be
|
||||
accomplished by modifying the appropriate .ml file within
|
||||
libstdc++/config (and also libg++/config, if you are building libg++),
|
||||
so that $(libdir)/ appears just before the library name in -soname or
|
||||
so that $(libdir)/ appears just before the library name in -soname or
|
||||
-h options.
|
||||
_________________________________________________________________
|
||||
|
||||
GCC can not find GNU as/GNU ld
|
||||
|
||||
GCC searches the PATH for an assembler and a loader, but it only does
|
||||
GCC searches the PATH for an assembler and a loader, but it only does
|
||||
so after searching a directory list hard-coded in the GCC executables.
|
||||
Since, on most platforms, the hard-coded list includes directories in
|
||||
which the system assembler and loader can be found, you may have to
|
||||
take one of the following actions to arrange that GCC uses the GNU
|
||||
Since, on most platforms, the hard-coded list includes directories in
|
||||
which the system assembler and loader can be found, you may have to
|
||||
take one of the following actions to arrange that GCC uses the GNU
|
||||
versions of those programs.
|
||||
|
||||
To ensure that GCC finds the GNU assembler (the GNU loader), which are
|
||||
required by [38]some configurations, you should configure these with
|
||||
required by [38]some configurations, you should configure these with
|
||||
the same --prefix option as you used for GCC. Then build & install GNU
|
||||
as (GNU ld) and proceed with building GCC.
|
||||
|
||||
Another alternative is to create links to GNU as and ld in any of the
|
||||
directories printed by the command `gcc -print-search-dirs | grep
|
||||
'^programs:''. The link to `ld' should be named `real-ld' if `ld'
|
||||
Another alternative is to create links to GNU as and ld in any of the
|
||||
directories printed by the command `gcc -print-search-dirs | grep
|
||||
'^programs:''. The link to `ld' should be named `real-ld' if `ld'
|
||||
already exists. If such links do not exist while you're compiling GCC,
|
||||
you may have to create them in the build directories too, within the
|
||||
you may have to create them in the build directories too, within the
|
||||
gcc directory and in all the gcc/stage* subdirectories.
|
||||
|
||||
GCC 2.95 allows you to specify the full pathname of the assembler and
|
||||
GCC 2.95 allows you to specify the full pathname of the assembler and
|
||||
the linker to use. The configure flags are `--with-as=/path/to/as' and
|
||||
`--with-ld=/path/to/ld'. GCC will try to use these pathnames before
|
||||
looking for `as' or `(real-)ld' in the standard search dirs. If, at
|
||||
configure-time, the specified programs are found to be GNU utilities,
|
||||
`--with-ld=/path/to/ld'. GCC will try to use these pathnames before
|
||||
looking for `as' or `(real-)ld' in the standard search dirs. If, at
|
||||
configure-time, the specified programs are found to be GNU utilities,
|
||||
`--with-gnu-as' and `--with-gnu-ld' need not be used; these flags will
|
||||
be auto-detected. One drawback of this option is that it won't allow
|
||||
you to override the search path for assembler and linker with
|
||||
be auto-detected. One drawback of this option is that it won't allow
|
||||
you to override the search path for assembler and linker with
|
||||
command-line options -B/path/ if the specified filenames exist.
|
||||
_________________________________________________________________
|
||||
|
||||
cpp: Usage:... Error
|
||||
|
||||
If you get an error like this when building GCC (particularly when
|
||||
building __mulsi3), then you likely have a problem with your
|
||||
If you get an error like this when building GCC (particularly when
|
||||
building __mulsi3), then you likely have a problem with your
|
||||
environment variables.
|
||||
cpp: Usage: /usr/lib/gcc-lib/i586-unknown-linux-gnulibc1/2.7.2.3/cpp
|
||||
[switches] input output
|
||||
|
||||
First look for an explicit '.' in either LIBRARY_PATH or
|
||||
GCC_EXEC_PREFIX from your environment. If you do not find an explicit
|
||||
'.', look for an empty pathname in those variables. Note that ':' at
|
||||
First look for an explicit '.' in either LIBRARY_PATH or
|
||||
GCC_EXEC_PREFIX from your environment. If you do not find an explicit
|
||||
'.', look for an empty pathname in those variables. Note that ':' at
|
||||
either the start or end of these variables is an implicit '.' and will
|
||||
cause problems.
|
||||
|
||||
@ -296,28 +296,28 @@ cpp: Usage:... Error
|
||||
|
||||
Optimizing the compiler itself
|
||||
|
||||
If you want to test a particular optimization option, it's useful to
|
||||
try bootstrapping the compiler with that option turned on. For
|
||||
If you want to test a particular optimization option, it's useful to
|
||||
try bootstrapping the compiler with that option turned on. For
|
||||
example, to test the -fssa option, you could bootstrap like this:
|
||||
make BOOT_CFLAGS="-O2 -fssa" bootstrap
|
||||
_________________________________________________________________
|
||||
|
||||
Why does libiconv get linked into jc1 on Solaris?
|
||||
|
||||
The Java front end requires iconv. If the compiler used to bootstrap
|
||||
GCC finds libiconv (because the GNU version of libiconv has been
|
||||
The Java front end requires iconv. If the compiler used to bootstrap
|
||||
GCC finds libiconv (because the GNU version of libiconv has been
|
||||
installed in the same prefix as the bootstrap compiler), but the newly
|
||||
built GCC does not find the library (because it will be installed with
|
||||
a different prefix), then a link-time error will occur when building
|
||||
jc1. This problem does not show up so often on platforms that have
|
||||
libiconv in a default location (like /usr/lib) because then both
|
||||
compilers can find a library named libiconv, even though it is a
|
||||
a different prefix), then a link-time error will occur when building
|
||||
jc1. This problem does not show up so often on platforms that have
|
||||
libiconv in a default location (like /usr/lib) because then both
|
||||
compilers can find a library named libiconv, even though it is a
|
||||
different library.
|
||||
|
||||
Using --disable-nls at configure-time does not prevent this problem
|
||||
because jc1 uses iconv even in that case. Solutions include
|
||||
temporarily removing the GNU libiconv, copying it to a default
|
||||
location such as /usr/lib/, and using --enable-languages at
|
||||
Using --disable-nls at configure-time does not prevent this problem
|
||||
because jc1 uses iconv even in that case. Solutions include
|
||||
temporarily removing the GNU libiconv, copying it to a default
|
||||
location such as /usr/lib/, and using --enable-languages at
|
||||
configure-time to disable Java.
|
||||
_________________________________________________________________
|
||||
|
||||
@ -325,11 +325,11 @@ Why does libiconv get linked into jc1 on Solaris?
|
||||
|
||||
How do I pass flags like -fnew-abi to the testsuite?
|
||||
|
||||
If you invoke runtest directly, you can use the --tool_opts option,
|
||||
If you invoke runtest directly, you can use the --tool_opts option,
|
||||
e.g:
|
||||
runtest --tool_opts "-fnew-abi -fno-honor-std" <other options>
|
||||
|
||||
Or, if you use make check you can use the make variable RUNTESTFLAGS,
|
||||
Or, if you use make check you can use the make variable RUNTESTFLAGS,
|
||||
e.g:
|
||||
make RUNTESTFLAGS="--tool_opts '-fnew-abi -fno-honor-std'" check-g++
|
||||
_________________________________________________________________
|
||||
@ -340,11 +340,11 @@ How can I run the test suite with multiple options?
|
||||
e.g:
|
||||
runtest --target_board "unix{-fPIC,-fpic,}" <other options>
|
||||
|
||||
Or, if you use make check you can use the make variable RUNTESTFLAGS,
|
||||
Or, if you use make check you can use the make variable RUNTESTFLAGS,
|
||||
e.g:
|
||||
make RUNTESTFLAGS="--target_board 'unix{-fPIC,-fpic,}'" check-gcc
|
||||
|
||||
Either of these examples will run the tests three times. Once with
|
||||
Either of these examples will run the tests three times. Once with
|
||||
-fPIC, once with -fpic, and once with no additional flags.
|
||||
|
||||
This technique is particularly useful on multilibbed targets.
|
||||
@ -363,24 +363,24 @@ Is there a stringstream / sstream for GCC 2.95.2?
|
||||
Friend Templates
|
||||
|
||||
In order to make a specialization of a template function a friend of a
|
||||
(possibly template) class, you must explicitly state that the friend
|
||||
function is a template, by appending angle brackets to its name, and
|
||||
this template function must have been declared already. Here's an
|
||||
(possibly template) class, you must explicitly state that the friend
|
||||
function is a template, by appending angle brackets to its name, and
|
||||
this template function must have been declared already. Here's an
|
||||
example:
|
||||
template <typename T> class foo {
|
||||
friend void bar(foo<T>);
|
||||
}
|
||||
|
||||
The above declaration declares a non-template function named bar, so
|
||||
it must be explicitly defined for each specialization of foo. A
|
||||
template definition of bar won't do, because it is unrelated with the
|
||||
The above declaration declares a non-template function named bar, so
|
||||
it must be explicitly defined for each specialization of foo. A
|
||||
template definition of bar won't do, because it is unrelated with the
|
||||
non-template declaration above. So you'd have to end up writing:
|
||||
void bar(foo<int>) { /* ... */ }
|
||||
void bar(foo<void>) { /* ... */ }
|
||||
|
||||
If you meant bar to be a template function, you should have
|
||||
If you meant bar to be a template function, you should have
|
||||
forward-declared it as follows. Note that, since the template function
|
||||
declaration refers to the template class, the template class must be
|
||||
declaration refers to the template class, the template class must be
|
||||
forward-declared too:
|
||||
template <typename T>
|
||||
class foo;
|
||||
@ -396,16 +396,16 @@ class foo {
|
||||
template <typename T>
|
||||
void bar(foo<T>) { /* ... */ }
|
||||
|
||||
In this case, the template argument list could be left empty, because
|
||||
it can be implicitly deduced from the function arguments, but the
|
||||
angle brackets must be present, otherwise the declaration will be
|
||||
taken as a non-template function. Furthermore, in some cases, you may
|
||||
have to explicitly specify the template arguments, to remove
|
||||
In this case, the template argument list could be left empty, because
|
||||
it can be implicitly deduced from the function arguments, but the
|
||||
angle brackets must be present, otherwise the declaration will be
|
||||
taken as a non-template function. Furthermore, in some cases, you may
|
||||
have to explicitly specify the template arguments, to remove
|
||||
ambiguity.
|
||||
|
||||
An error in the last public comment draft of the ANSI/ISO C++ Standard
|
||||
and the fact that previous releases of GCC would accept such friend
|
||||
declarations as template declarations has led people to believe that
|
||||
and the fact that previous releases of GCC would accept such friend
|
||||
declarations as template declarations has led people to believe that
|
||||
the forward declaration was not necessary, but, according to the final
|
||||
version of the Standard, it is.
|
||||
_________________________________________________________________
|
||||
@ -414,77 +414,77 @@ dynamic_cast, throw, typeid don't work with shared libraries
|
||||
|
||||
The new C++ ABI in the GCC 3.0 series uses address comparisons, rather
|
||||
than string compares, to determine type equality. This leads to better
|
||||
performance. Like other objects that have to be present in the final
|
||||
executable, these std::typeinfo_t objects have what is called vague
|
||||
linkage because they are not tightly bound to any one particular
|
||||
translation unit (object file). The compiler has to emit them in any
|
||||
translation unit that requires their presence, and then rely on the
|
||||
linking and loading process to make sure that only one of them is
|
||||
active in the final executable. With static linking all of these
|
||||
symbols are resolved at link time, but with dynamic linking, further
|
||||
performance. Like other objects that have to be present in the final
|
||||
executable, these std::typeinfo_t objects have what is called vague
|
||||
linkage because they are not tightly bound to any one particular
|
||||
translation unit (object file). The compiler has to emit them in any
|
||||
translation unit that requires their presence, and then rely on the
|
||||
linking and loading process to make sure that only one of them is
|
||||
active in the final executable. With static linking all of these
|
||||
symbols are resolved at link time, but with dynamic linking, further
|
||||
resolution occurs at load time. You have to ensure that objects within
|
||||
a shared library are resolved against objects in the executable and
|
||||
a shared library are resolved against objects in the executable and
|
||||
other shared libraries.
|
||||
* For a program which is linked against a shared library, no
|
||||
* For a program which is linked against a shared library, no
|
||||
additional precautions need taking.
|
||||
* You cannot create a shared library with the "-Bsymbolic" option,
|
||||
* You cannot create a shared library with the "-Bsymbolic" option,
|
||||
as that prevents the resolution described above.
|
||||
* If you use dlopen to explicitly load code from a shared library,
|
||||
you must do several things. First, export global symbols from the
|
||||
executable by linking it with the "-E" flag (you will have to
|
||||
specify this as "-Wl,-E" if you are invoking the linker in the
|
||||
usual manner from the compiler driver, g++). You must also make
|
||||
the external symbols in the loaded library available for
|
||||
subsequent libraries by providing the RTLD_GLOBAL flag to dlopen.
|
||||
* If you use dlopen to explicitly load code from a shared library,
|
||||
you must do several things. First, export global symbols from the
|
||||
executable by linking it with the "-E" flag (you will have to
|
||||
specify this as "-Wl,-E" if you are invoking the linker in the
|
||||
usual manner from the compiler driver, g++). You must also make
|
||||
the external symbols in the loaded library available for
|
||||
subsequent libraries by providing the RTLD_GLOBAL flag to dlopen.
|
||||
The symbol resolution can be immediate or lazy.
|
||||
|
||||
Template instantiations are another, user visible, case of objects
|
||||
Template instantiations are another, user visible, case of objects
|
||||
with vague linkage, which needs similar resolution. If you do not take
|
||||
the above precautions, you may discover that a template instantiation
|
||||
with the same argument list, but instantiated in multiple translation
|
||||
units, has several addresses, depending in which translation unit the
|
||||
address is taken. (This is not an exhaustive list of the kind of
|
||||
objects which have vague linkage and are expected to be resolved
|
||||
the above precautions, you may discover that a template instantiation
|
||||
with the same argument list, but instantiated in multiple translation
|
||||
units, has several addresses, depending in which translation unit the
|
||||
address is taken. (This is not an exhaustive list of the kind of
|
||||
objects which have vague linkage and are expected to be resolved
|
||||
during linking & loading.)
|
||||
|
||||
If you are worried about different objects with the same name
|
||||
colliding during the linking or loading process, then you should use
|
||||
namespaces to disambiguate them. Giving distinct objects with global
|
||||
linkage the same name is a violation of the One Definition Rule (ODR)
|
||||
If you are worried about different objects with the same name
|
||||
colliding during the linking or loading process, then you should use
|
||||
namespaces to disambiguate them. Giving distinct objects with global
|
||||
linkage the same name is a violation of the One Definition Rule (ODR)
|
||||
[basic.def.odr].
|
||||
|
||||
For more details about the way that GCC implements these and other C++
|
||||
features, please read the [40]ABI specification. Note the
|
||||
std::typeinfo_t objects which must be resolved all begin with "_ZTS".
|
||||
Refer to ld's documentation for a description of the "-E" &
|
||||
features, please read the [40]ABI specification. Note the
|
||||
std::typeinfo_t objects which must be resolved all begin with "_ZTS".
|
||||
Refer to ld's documentation for a description of the "-E" &
|
||||
"-Bsymbolic" flags.
|
||||
_________________________________________________________________
|
||||
|
||||
Why do I need autoconf, bison, xgettext, automake, etc?
|
||||
|
||||
If you're using diffs up dated from one snapshot to the next, or if
|
||||
you're using the CVS repository, you may need several additional
|
||||
If you're using diffs up dated from one snapshot to the next, or if
|
||||
you're using the CVS repository, you may need several additional
|
||||
programs to build GCC.
|
||||
|
||||
These include, but are not necessarily limited to autoconf, automake,
|
||||
These include, but are not necessarily limited to autoconf, automake,
|
||||
bison, and xgettext.
|
||||
|
||||
This is necessary because neither diff nor cvs keep timestamps
|
||||
correct. This causes problems for generated files as "make" may think
|
||||
This is necessary because neither diff nor cvs keep timestamps
|
||||
correct. This causes problems for generated files as "make" may think
|
||||
those generated files are out of date and try to regenerate them.
|
||||
|
||||
An easy way to work around this problem is to use the gcc_update
|
||||
script in the contrib subdirectory of GCC, which handles this
|
||||
transparently without requiring installation of any additional tools.
|
||||
An easy way to work around this problem is to use the gcc_update
|
||||
script in the contrib subdirectory of GCC, which handles this
|
||||
transparently without requiring installation of any additional tools.
|
||||
(Note: Up to and including GCC 2.95 this script was called egcs_update
|
||||
.)
|
||||
|
||||
When building from diffs or CVS or if you modified some sources, you
|
||||
When building from diffs or CVS or if you modified some sources, you
|
||||
may also need to obtain development versions of some GNU tools, as the
|
||||
production versions do not necessarily handle all features needed to
|
||||
production versions do not necessarily handle all features needed to
|
||||
rebuild GCC.
|
||||
|
||||
In general, the current versions of these tools from
|
||||
In general, the current versions of these tools from
|
||||
[41]ftp://ftp.gnu.org/gnu/ will work. At present, Autoconf 2.50 is not
|
||||
supported, and you will need to use Autoconf 2.13; work is in progress
|
||||
to fix this problem. Also look at
|
||||
@ -494,20 +494,20 @@ Why do I need autoconf, bison, xgettext, automake, etc?
|
||||
|
||||
Why can't I build a shared library?
|
||||
|
||||
When building a shared library you may get an error message from the
|
||||
When building a shared library you may get an error message from the
|
||||
linker like `assert pure-text failed:' or `DP relative code in file'.
|
||||
|
||||
This kind of error occurs when you've failed to provide proper flags
|
||||
This kind of error occurs when you've failed to provide proper flags
|
||||
to gcc when linking the shared library.
|
||||
|
||||
You can get this error even if all the .o files for the shared library
|
||||
were compiled with the proper PIC option. When building a shared
|
||||
library, gcc will compile additional code to be included in the
|
||||
library. That additional code must also be compiled with the proper
|
||||
were compiled with the proper PIC option. When building a shared
|
||||
library, gcc will compile additional code to be included in the
|
||||
library. That additional code must also be compiled with the proper
|
||||
PIC option.
|
||||
|
||||
Adding the proper PIC option (-fpic or -fPIC) to the link line which
|
||||
creates the shared library will fix this problem on targets that
|
||||
Adding the proper PIC option (-fpic or -fPIC) to the link line which
|
||||
creates the shared library will fix this problem on targets that
|
||||
support PIC in this manner. For example:
|
||||
gcc -c -fPIC myfile.c
|
||||
gcc -shared -o libmyfile.so -fPIC myfile.o
|
||||
@ -516,30 +516,30 @@ Why can't I build a shared library?
|
||||
When building C++, the linker says my constructors, destructors or virtual
|
||||
tables are undefined, but I defined them
|
||||
|
||||
The ISO C++ Standard specifies that all virtual methods of a class
|
||||
that are not pure-virtual must be defined, but does not require any
|
||||
diagnostic for violations of this rule [class.virtual]/8. Based on
|
||||
this assumption, GCC will only emit the implicitly defined
|
||||
constructors, the assignment operator, the destructor and the virtual
|
||||
table of a class in the translation unit that defines its first such
|
||||
The ISO C++ Standard specifies that all virtual methods of a class
|
||||
that are not pure-virtual must be defined, but does not require any
|
||||
diagnostic for violations of this rule [class.virtual]/8. Based on
|
||||
this assumption, GCC will only emit the implicitly defined
|
||||
constructors, the assignment operator, the destructor and the virtual
|
||||
table of a class in the translation unit that defines its first such
|
||||
non-inline method.
|
||||
|
||||
Therefore, if you fail to define this particular method, the linker
|
||||
may complain about the lack of definitions for apparently unrelated
|
||||
symbols. Unfortunately, in order to improve this error message, it
|
||||
might be necessary to change the linker, and this can't always be
|
||||
Therefore, if you fail to define this particular method, the linker
|
||||
may complain about the lack of definitions for apparently unrelated
|
||||
symbols. Unfortunately, in order to improve this error message, it
|
||||
might be necessary to change the linker, and this can't always be
|
||||
done.
|
||||
|
||||
The solution is to ensure that all virtual methods that are not pure
|
||||
are defined. Note that a destructor must be defined even if it is
|
||||
The solution is to ensure that all virtual methods that are not pure
|
||||
are defined. Note that a destructor must be defined even if it is
|
||||
declared pure-virtual [class.dtor]/7.
|
||||
_________________________________________________________________
|
||||
|
||||
Will GCC someday include an incremental linker?
|
||||
|
||||
Incremental linking is part of the linker, not the compiler. As such,
|
||||
Incremental linking is part of the linker, not the compiler. As such,
|
||||
GCC doesn't have anything to do with incremental linking. Depending on
|
||||
what platform you use, it may be possible to tell GCC to use the
|
||||
what platform you use, it may be possible to tell GCC to use the
|
||||
platform's native linker (e.g., Solaris' ild(1)).
|
||||
|
||||
References
|
||||
|
4
gnu/dist/gcc/config/ChangeLog
vendored
4
gnu/dist/gcc/config/ChangeLog
vendored
@ -1,3 +1,7 @@
|
||||
2004-02-14 Release Manager
|
||||
|
||||
* GCC 3.3.3 Released.
|
||||
|
||||
2003-10-16 Release Manager
|
||||
|
||||
* GCC 3.3.2 Released.
|
||||
|
4
gnu/dist/gcc/contrib/ChangeLog
vendored
4
gnu/dist/gcc/contrib/ChangeLog
vendored
@ -1,3 +1,7 @@
|
||||
2004-02-14 Release Manager
|
||||
|
||||
* GCC 3.3.3 Released.
|
||||
|
||||
2003-12-10 Kelley Cook <kcook@gcc.gnu.org>
|
||||
|
||||
* gcc_update (files_and_dependencies): Correct typo in the filename
|
||||
|
4
gnu/dist/gcc/contrib/regression/ChangeLog
vendored
4
gnu/dist/gcc/contrib/regression/ChangeLog
vendored
@ -1,3 +1,7 @@
|
||||
2004-02-14 Release Manager
|
||||
|
||||
* GCC 3.3.3 Released.
|
||||
|
||||
2003-10-16 Release Manager
|
||||
|
||||
* GCC 3.3.2 Released.
|
||||
|
4
gnu/dist/gcc/gcc/cp/ChangeLog
vendored
4
gnu/dist/gcc/gcc/cp/ChangeLog
vendored
@ -1,3 +1,7 @@
|
||||
2004-02-14 Release Manager
|
||||
|
||||
* GCC 3.3.3 Released.
|
||||
|
||||
2004-02-05 Giovanni Bajo <giovannibajo@gcc.gnu.org>
|
||||
|
||||
PR c++/13086
|
||||
|
446
gnu/dist/gcc/gcc/doc/cpp.info
vendored
446
gnu/dist/gcc/gcc/doc/cpp.info
vendored
@ -1,8 +1,8 @@
|
||||
This is doc/cpp.info, produced by makeinfo version 4.2 from
|
||||
doc/cpp.texi.
|
||||
Ceci est le fichier Info doc/cpp.info, produit par Makeinfo version 4.6
|
||||
à partir doc/cpp.texi.
|
||||
|
||||
Copyright (C) 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
|
||||
1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
|
||||
1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.1 or
|
||||
@ -32,7 +32,7 @@ File: cpp.info, Node: Top, Next: Overview, Up: (dir)
|
||||
|
||||
|
||||
|
||||
The C preprocessor implements the macro language used to transform C,
|
||||
The C preprocessor implements the macro language used to transform C,
|
||||
C++, and Objective-C programs before they are compiled. It can also be
|
||||
useful on its own.
|
||||
|
||||
@ -131,7 +131,7 @@ Obsolete Features
|
||||
* Obsolete once-only headers::
|
||||
|
||||
Copyright (C) 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
|
||||
1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
|
||||
1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.1 or
|
||||
@ -157,8 +157,8 @@ File: cpp.info, Node: Overview, Next: Header Files, Prev: Top, Up: Top
|
||||
Overview
|
||||
********
|
||||
|
||||
The C preprocessor, often known as "cpp", is a "macro processor"
|
||||
that is used automatically by the C compiler to transform your program
|
||||
The C preprocessor, often known as "cpp", is a "macro processor" that
|
||||
is used automatically by the C compiler to transform your program
|
||||
before compilation. It is called a macro processor because it allows
|
||||
you to define "macros", which are brief abbreviations for longer
|
||||
constructs.
|
||||
@ -216,7 +216,7 @@ File: cpp.info, Node: Initial processing, Next: Tokenization, Up: Overview
|
||||
Initial processing
|
||||
==================
|
||||
|
||||
The preprocessor performs a series of textual transformations on its
|
||||
The preprocessor performs a series of textual transformations on its
|
||||
input. These happen before all other processing. Conceptually, they
|
||||
happen in a rigid order, and the entire file is run through each
|
||||
transformation before the next one begins. CPP actually does them all
|
||||
@ -358,7 +358,7 @@ File: cpp.info, Node: Tokenization, Next: The preprocessing language, Prev: I
|
||||
Tokenization
|
||||
============
|
||||
|
||||
After the textual transformations are finished, the input file is
|
||||
After the textual transformations are finished, the input file is
|
||||
converted into a sequence of "preprocessing tokens". These mostly
|
||||
correspond to the syntactic tokens used by the C compiler, but there are
|
||||
a few differences. White space separates tokens; it is not itself a
|
||||
@ -506,11 +506,11 @@ File: cpp.info, Node: The preprocessing language, Prev: Tokenization, Up: Ove
|
||||
The preprocessing language
|
||||
==========================
|
||||
|
||||
After tokenization, the stream of tokens may simply be passed
|
||||
straight to the compiler's parser. However, if it contains any
|
||||
operations in the "preprocessing language", it will be transformed
|
||||
first. This stage corresponds roughly to the standard's "translation
|
||||
phase 4" and is what most people think of as the preprocessor's job.
|
||||
After tokenization, the stream of tokens may simply be passed straight
|
||||
to the compiler's parser. However, if it contains any operations in the
|
||||
"preprocessing language", it will be transformed first. This stage
|
||||
corresponds roughly to the standard's "translation phase 4" and is what
|
||||
most people think of as the preprocessor's job.
|
||||
|
||||
The preprocessing language consists of "directives" to be executed
|
||||
and "macros" to be expanded. Its primary capabilities are:
|
||||
@ -569,10 +569,10 @@ File: cpp.info, Node: Header Files, Next: Macros, Prev: Overview, Up: Top
|
||||
Header Files
|
||||
************
|
||||
|
||||
A header file is a file containing C declarations and macro
|
||||
definitions (*note Macros::) to be shared between several source files.
|
||||
You request the use of a header file in your program by "including"
|
||||
it, with the C preprocessing directive `#include'.
|
||||
A header file is a file containing C declarations and macro definitions
|
||||
(*note Macros::) to be shared between several source files. You request
|
||||
the use of a header file in your program by "including" it, with the C
|
||||
preprocessing directive `#include'.
|
||||
|
||||
Header files serve two purposes.
|
||||
|
||||
@ -617,8 +617,8 @@ File: cpp.info, Node: Include Syntax, Next: Include Operation, Up: Header Fil
|
||||
Include Syntax
|
||||
==============
|
||||
|
||||
Both user and system header files are included using the
|
||||
preprocessing directive `#include'. It has two variants:
|
||||
Both user and system header files are included using the preprocessing
|
||||
directive `#include'. It has two variants:
|
||||
|
||||
`#include <FILE>'
|
||||
This variant is used for system header files. It searches for a
|
||||
@ -653,8 +653,8 @@ File: cpp.info, Node: Include Operation, Next: Search Path, Prev: Include Syn
|
||||
Include Operation
|
||||
=================
|
||||
|
||||
The `#include' directive works by directing the C preprocessor to
|
||||
scan the specified file as input before continuing with the rest of the
|
||||
The `#include' directive works by directing the C preprocessor to scan
|
||||
the specified file as input before continuing with the rest of the
|
||||
current file. The output from the preprocessor contains the output
|
||||
already generated, followed by the output resulting from the included
|
||||
file, followed by the output that comes from the text after the
|
||||
@ -711,7 +711,7 @@ File: cpp.info, Node: Search Path, Next: Once-Only Headers, Prev: Include Ope
|
||||
Search Path
|
||||
===========
|
||||
|
||||
GCC looks in several different places for headers. On a normal Unix
|
||||
GCC looks in several different places for headers. On a normal Unix
|
||||
system, if you do not instruct it otherwise, it will look for headers
|
||||
requested with `#include <FILE>' in:
|
||||
|
||||
@ -779,10 +779,10 @@ File: cpp.info, Node: Once-Only Headers, Next: Computed Includes, Prev: Searc
|
||||
Once-Only Headers
|
||||
=================
|
||||
|
||||
If a header file happens to be included twice, the compiler will
|
||||
process its contents twice. This is very likely to cause an error,
|
||||
e.g. when the compiler sees the same structure definition twice. Even
|
||||
if it does not, it will certainly waste time.
|
||||
If a header file happens to be included twice, the compiler will process
|
||||
its contents twice. This is very likely to cause an error, e.g. when
|
||||
the compiler sees the same structure definition twice. Even if it does
|
||||
not, it will certainly waste time.
|
||||
|
||||
The standard way to prevent this is to enclose the entire real
|
||||
contents of the file in a conditional, like this:
|
||||
@ -821,7 +821,7 @@ File: cpp.info, Node: Computed Includes, Next: Wrapper Headers, Prev: Once-On
|
||||
Computed Includes
|
||||
=================
|
||||
|
||||
Sometimes it is necessary to select one of several different header
|
||||
Sometimes it is necessary to select one of several different header
|
||||
files to be included into your program. They might specify
|
||||
configuration parameters to be used on different sorts of operating
|
||||
systems, for instance. You could do this with a series of conditionals,
|
||||
@ -895,7 +895,7 @@ File: cpp.info, Node: Wrapper Headers, Next: System Headers, Prev: Computed I
|
||||
Wrapper Headers
|
||||
===============
|
||||
|
||||
Sometimes it is necessary to adjust the contents of a system-provided
|
||||
Sometimes it is necessary to adjust the contents of a system-provided
|
||||
header file without editing it directly. GCC's `fixincludes' operation
|
||||
does this, for example. One way to do that would be to create a new
|
||||
header file with the same name and insert it in the search path before
|
||||
@ -946,7 +946,7 @@ File: cpp.info, Node: System Headers, Prev: Wrapper Headers, Up: Header Files
|
||||
System Headers
|
||||
==============
|
||||
|
||||
The header files declaring interfaces to the operating system and
|
||||
The header files declaring interfaces to the operating system and
|
||||
runtime libraries often cannot be written in strictly conforming C.
|
||||
Therefore, GCC gives code found in "system headers" special treatment.
|
||||
All warnings, other than those generated by `#warning' (*note
|
||||
@ -989,11 +989,11 @@ File: cpp.info, Node: Macros, Next: Conditionals, Prev: Header Files, Up: To
|
||||
Macros
|
||||
******
|
||||
|
||||
A "macro" is a fragment of code which has been given a name.
|
||||
Whenever the name is used, it is replaced by the contents of the macro.
|
||||
There are two kinds of macros. They differ mostly in what they look
|
||||
like when they are used. "Object-like" macros resemble data objects
|
||||
when used, "function-like" macros resemble function calls.
|
||||
A "macro" is a fragment of code which has been given a name. Whenever
|
||||
the name is used, it is replaced by the contents of the macro. There
|
||||
are two kinds of macros. They differ mostly in what they look like
|
||||
when they are used. "Object-like" macros resemble data objects when
|
||||
used, "function-like" macros resemble function calls.
|
||||
|
||||
You may define any valid identifier as a macro, even if it is a C
|
||||
keyword. The preprocessor does not know anything about keywords. This
|
||||
@ -1022,9 +1022,9 @@ File: cpp.info, Node: Object-like Macros, Next: Function-like Macros, Up: Mac
|
||||
Object-like Macros
|
||||
==================
|
||||
|
||||
An "object-like macro" is a simple identifier which will be replaced
|
||||
by a code fragment. It is called object-like because it looks like a
|
||||
data object in code that uses it. They are most commonly used to give
|
||||
An "object-like macro" is a simple identifier which will be replaced by
|
||||
a code fragment. It is called object-like because it looks like a data
|
||||
object in code that uses it. They are most commonly used to give
|
||||
symbolic names to numeric constants.
|
||||
|
||||
You create macros with the `#define' directive. `#define' is
|
||||
@ -1124,10 +1124,10 @@ File: cpp.info, Node: Function-like Macros, Next: Macro Arguments, Prev: Obje
|
||||
Function-like Macros
|
||||
====================
|
||||
|
||||
You can also define macros whose use looks like a function call.
|
||||
These are called "function-like macros". To define a function-like
|
||||
macro, you use the same `#define' directive, but you put a pair of
|
||||
parentheses immediately after the macro name. For example,
|
||||
You can also define macros whose use looks like a function call. These
|
||||
are called "function-like macros". To define a function-like macro,
|
||||
you use the same `#define' directive, but you put a pair of parentheses
|
||||
immediately after the macro name. For example,
|
||||
|
||||
#define lang_init() c_init()
|
||||
lang_init()
|
||||
@ -1168,7 +1168,7 @@ File: cpp.info, Node: Macro Arguments, Next: Stringification, Prev: Function-
|
||||
Macro Arguments
|
||||
===============
|
||||
|
||||
Function-like macros can take "arguments", just like true functions.
|
||||
Function-like macros can take "arguments", just like true functions.
|
||||
To define a macro that uses arguments, you insert "parameters" between
|
||||
the pair of parentheses in the macro definition that make the macro
|
||||
function-like. The parameters must be valid C identifiers, separated
|
||||
@ -1261,7 +1261,7 @@ File: cpp.info, Node: Stringification, Next: Concatenation, Prev: Macro Argum
|
||||
Stringification
|
||||
===============
|
||||
|
||||
Sometimes you may want to convert a macro argument into a string
|
||||
Sometimes you may want to convert a macro argument into a string
|
||||
constant. Parameters are not replaced inside string constants, but you
|
||||
can use the `#' preprocessing operator instead. When a macro parameter
|
||||
is used with a leading `#', the preprocessor replaces it with the
|
||||
@ -1339,9 +1339,9 @@ File: cpp.info, Node: Concatenation, Next: Variadic Macros, Prev: Stringifica
|
||||
Concatenation
|
||||
=============
|
||||
|
||||
It is often useful to merge two tokens into one while expanding
|
||||
macros. This is called "token pasting" or "token concatenation". The
|
||||
`##' preprocessing operator performs token pasting. When a macro is
|
||||
It is often useful to merge two tokens into one while expanding macros.
|
||||
This is called "token pasting" or "token concatenation". The `##'
|
||||
preprocessing operator performs token pasting. When a macro is
|
||||
expanded, the two tokens on either side of each `##' operator are
|
||||
combined into a single token, which then replaces the `##' and the two
|
||||
original tokens in the macro expansion. Usually both will be
|
||||
@ -1413,9 +1413,9 @@ File: cpp.info, Node: Variadic Macros, Next: Predefined Macros, Prev: Concate
|
||||
Variadic Macros
|
||||
===============
|
||||
|
||||
A macro can be declared to accept a variable number of arguments
|
||||
much as a function can. The syntax for defining the macro is similar
|
||||
to that of a function. Here is an example:
|
||||
A macro can be declared to accept a variable number of arguments much as
|
||||
a function can. The syntax for defining the macro is similar to that of
|
||||
a function. Here is an example:
|
||||
|
||||
#define eprintf(...) fprintf (stderr, __VA_ARGS__)
|
||||
|
||||
@ -1518,7 +1518,7 @@ File: cpp.info, Node: Predefined Macros, Next: Undefining and Redefining Macro
|
||||
Predefined Macros
|
||||
=================
|
||||
|
||||
Several object-like macros are predefined; you use them without
|
||||
Several object-like macros are predefined; you use them without
|
||||
supplying their definitions. They fall into three classes: standard,
|
||||
common, and system-specific.
|
||||
|
||||
@ -1538,10 +1538,10 @@ File: cpp.info, Node: Standard Predefined Macros, Next: Common Predefined Macr
|
||||
Standard Predefined Macros
|
||||
--------------------------
|
||||
|
||||
The standard predefined macros are specified by the relevant
|
||||
language standards, so they are available with all compilers that
|
||||
implement those standards. Older compilers may not provide all of
|
||||
them. Their names all start with double underscores.
|
||||
The standard predefined macros are specified by the relevant language
|
||||
standards, so they are available with all compilers that implement
|
||||
those standards. Older compilers may not provide all of them. Their
|
||||
names all start with double underscores.
|
||||
|
||||
`__FILE__'
|
||||
This macro expands to the name of the current input file, in the
|
||||
@ -1662,15 +1662,16 @@ with `__FILE__' and `__LINE__', though.
|
||||
This macro is defined with value 1 when preprocessing assembly
|
||||
language.
|
||||
|
||||
|
||||
|
||||
File: cpp.info, Node: Common Predefined Macros, Next: System-specific Predefined Macros, Prev: Standard Predefined Macros, Up: Predefined Macros
|
||||
|
||||
Common Predefined Macros
|
||||
------------------------
|
||||
|
||||
The common predefined macros are GNU C extensions. They are
|
||||
available with the same meanings regardless of the machine or operating
|
||||
system on which you are using GNU C. Their names all start with double
|
||||
The common predefined macros are GNU C extensions. They are available
|
||||
with the same meanings regardless of the machine or operating system on
|
||||
which you are using GNU C. Their names all start with double
|
||||
underscores.
|
||||
|
||||
`__GNUC__'
|
||||
@ -1836,7 +1837,6 @@ underscores.
|
||||
being used.
|
||||
|
||||
`__LP64__'
|
||||
|
||||
`_LP64'
|
||||
These macros are defined, with value 1, if (and only if) the
|
||||
compilation is for a target where `long int' and pointer both use
|
||||
@ -1848,11 +1848,11 @@ File: cpp.info, Node: System-specific Predefined Macros, Next: C++ Named Opera
|
||||
System-specific Predefined Macros
|
||||
---------------------------------
|
||||
|
||||
The C preprocessor normally predefines several macros that indicate
|
||||
what type of system and machine is in use. They are obviously
|
||||
different on each target supported by GCC. This manual, being for all
|
||||
systems and machines, cannot tell you what their names are, but you can
|
||||
use `cpp -dM' to see them all. *Note Invocation::. All system-specific
|
||||
The C preprocessor normally predefines several macros that indicate what
|
||||
type of system and machine is in use. They are obviously different on
|
||||
each target supported by GCC. This manual, being for all systems and
|
||||
machines, cannot tell you what their names are, but you can use `cpp
|
||||
-dM' to see them all. *Note Invocation::. All system-specific
|
||||
predefined macros expand to the constant 1, so you can test them with
|
||||
either `#ifdef' or `#if'.
|
||||
|
||||
@ -1886,13 +1886,13 @@ File: cpp.info, Node: C++ Named Operators, Prev: System-specific Predefined Ma
|
||||
C++ Named Operators
|
||||
-------------------
|
||||
|
||||
In C++, there are eleven keywords which are simply alternate
|
||||
spellings of operators normally written with punctuation. These
|
||||
keywords are treated as such even in the preprocessor. They function
|
||||
as operators in `#if', and they cannot be defined as macros or
|
||||
poisoned. In C, you can request that those keywords take their C++
|
||||
meaning by including `iso646.h'. That header defines each one as a
|
||||
normal object-like macro expanding to the appropriate punctuator.
|
||||
In C++, there are eleven keywords which are simply alternate spellings
|
||||
of operators normally written with punctuation. These keywords are
|
||||
treated as such even in the preprocessor. They function as operators in
|
||||
`#if', and they cannot be defined as macros or poisoned. In C, you can
|
||||
request that those keywords take their C++ meaning by including
|
||||
`iso646.h'. That header defines each one as a normal object-like macro
|
||||
expanding to the appropriate punctuator.
|
||||
|
||||
These are the named operators and their corresponding punctuators:
|
||||
|
||||
@ -1915,9 +1915,9 @@ File: cpp.info, Node: Undefining and Redefining Macros, Next: Directives Withi
|
||||
Undefining and Redefining Macros
|
||||
================================
|
||||
|
||||
If a macro ceases to be useful, it may be "undefined" with the
|
||||
`#undef' directive. `#undef' takes a single argument, the name of the
|
||||
macro to undefine. You use the bare macro name, even if the macro is
|
||||
If a macro ceases to be useful, it may be "undefined" with the `#undef'
|
||||
directive. `#undef' takes a single argument, the name of the macro to
|
||||
undefine. You use the bare macro name, even if the macro is
|
||||
function-like. It is an error if anything appears on the line after
|
||||
the macro name. `#undef' has no effect if the name is not a macro.
|
||||
|
||||
@ -1967,9 +1967,9 @@ File: cpp.info, Node: Directives Within Macro Arguments, Next: Macro Pitfalls,
|
||||
Directives Within Macro Arguments
|
||||
=================================
|
||||
|
||||
Occasionally it is convenient to use preprocessor directives within
|
||||
the arguments of a macro. The C and C++ standards declare that
|
||||
behavior in these cases is undefined.
|
||||
Occasionally it is convenient to use preprocessor directives within the
|
||||
arguments of a macro. The C and C++ standards declare that behavior in
|
||||
these cases is undefined.
|
||||
|
||||
Versions of CPP prior to 3.2 would reject such constructs with an
|
||||
error message. This was the only syntactic difference between normal
|
||||
@ -2007,8 +2007,8 @@ File: cpp.info, Node: Macro Pitfalls, Prev: Directives Within Macro Arguments,
|
||||
Macro Pitfalls
|
||||
==============
|
||||
|
||||
In this section we describe some special rules that apply to macros
|
||||
and macro expansion, and point out certain cases in which the rules have
|
||||
In this section we describe some special rules that apply to macros and
|
||||
macro expansion, and point out certain cases in which the rules have
|
||||
counter-intuitive consequences that you must watch out for.
|
||||
|
||||
* Menu:
|
||||
@ -2027,7 +2027,7 @@ File: cpp.info, Node: Misnesting, Next: Operator Precedence Problems, Up: Mac
|
||||
Misnesting
|
||||
----------
|
||||
|
||||
When a macro is called with arguments, the arguments are substituted
|
||||
When a macro is called with arguments, the arguments are substituted
|
||||
into the macro body and the result is checked, together with the rest of
|
||||
the input file, for more macro calls. It is possible to piece together
|
||||
a macro call coming partially from the macro body and partially from the
|
||||
@ -2059,11 +2059,11 @@ File: cpp.info, Node: Operator Precedence Problems, Next: Swallowing the Semic
|
||||
Operator Precedence Problems
|
||||
----------------------------
|
||||
|
||||
You may have noticed that in most of the macro definition examples
|
||||
shown above, each occurrence of a macro argument name had parentheses
|
||||
around it. In addition, another pair of parentheses usually surround
|
||||
the entire macro definition. Here is why it is best to write macros
|
||||
that way.
|
||||
You may have noticed that in most of the macro definition examples shown
|
||||
above, each occurrence of a macro argument name had parentheses around
|
||||
it. In addition, another pair of parentheses usually surround the
|
||||
entire macro definition. Here is why it is best to write macros that
|
||||
way.
|
||||
|
||||
Suppose you define a macro as follows,
|
||||
|
||||
@ -2113,7 +2113,7 @@ File: cpp.info, Node: Swallowing the Semicolon, Next: Duplication of Side Effe
|
||||
Swallowing the Semicolon
|
||||
------------------------
|
||||
|
||||
Often it is desirable to define a macro that expands into a compound
|
||||
Often it is desirable to define a macro that expands into a compound
|
||||
statement. Consider, for example, the following macro, that advances a
|
||||
pointer (the argument `p' says where to find it) across whitespace
|
||||
characters:
|
||||
@ -2169,7 +2169,7 @@ File: cpp.info, Node: Duplication of Side Effects, Next: Self-Referential Macr
|
||||
Duplication of Side Effects
|
||||
---------------------------
|
||||
|
||||
Many C programs define a macro `min', for "minimum", like this:
|
||||
Many C programs define a macro `min', for "minimum", like this:
|
||||
|
||||
#define min(X, Y) ((X) < (Y) ? (X) : (Y))
|
||||
|
||||
@ -2228,12 +2228,12 @@ File: cpp.info, Node: Self-Referential Macros, Next: Argument Prescan, Prev:
|
||||
Self-Referential Macros
|
||||
-----------------------
|
||||
|
||||
A "self-referential" macro is one whose name appears in its
|
||||
definition. Recall that all macro definitions are rescanned for more
|
||||
macros to replace. If the self-reference were considered a use of the
|
||||
macro, it would produce an infinitely large expansion. To prevent this,
|
||||
the self-reference is not considered a macro call. It is passed into
|
||||
the preprocessor output unchanged. Let's consider an example:
|
||||
A "self-referential" macro is one whose name appears in its definition.
|
||||
Recall that all macro definitions are rescanned for more macros to
|
||||
replace. If the self-reference were considered a use of the macro, it
|
||||
would produce an infinitely large expansion. To prevent this, the
|
||||
self-reference is not considered a macro call. It is passed into the
|
||||
preprocessor output unchanged. Let's consider an example:
|
||||
|
||||
#define foo (4 + foo)
|
||||
|
||||
@ -2289,7 +2289,7 @@ File: cpp.info, Node: Argument Prescan, Next: Newlines in Arguments, Prev: Se
|
||||
Argument Prescan
|
||||
----------------
|
||||
|
||||
Macro arguments are completely macro-expanded before they are
|
||||
Macro arguments are completely macro-expanded before they are
|
||||
substituted into a macro body, unless they are stringified or pasted
|
||||
with other tokens. After substitution, the entire macro body, including
|
||||
the substituted arguments, is scanned again for macros to be expanded.
|
||||
@ -2376,7 +2376,7 @@ File: cpp.info, Node: Newlines in Arguments, Prev: Argument Prescan, Up: Macr
|
||||
Newlines in Arguments
|
||||
---------------------
|
||||
|
||||
The invocation of a function-like macro can extend over many logical
|
||||
The invocation of a function-like macro can extend over many logical
|
||||
lines. However, in the present implementation, the entire expansion
|
||||
comes out on one line. Thus line numbers emitted by the compiler or
|
||||
debugger refer to the line the invocation started on, which might be
|
||||
@ -2402,7 +2402,7 @@ File: cpp.info, Node: Conditionals, Next: Diagnostics, Prev: Macros, Up: Top
|
||||
Conditionals
|
||||
************
|
||||
|
||||
A "conditional" is a directive that instructs the preprocessor to
|
||||
A "conditional" is a directive that instructs the preprocessor to
|
||||
select whether or not to include a chunk of code in the final token
|
||||
stream passed to the compiler. Preprocessor conditionals can test
|
||||
arithmetic expressions, or whether a name is defined as a macro, or both
|
||||
@ -2443,7 +2443,7 @@ File: cpp.info, Node: Conditional Uses, Next: Conditional Syntax, Up: Conditi
|
||||
Conditional Uses
|
||||
================
|
||||
|
||||
There are three general reasons to use a conditional.
|
||||
There are three general reasons to use a conditional.
|
||||
|
||||
* A program may need to use different code depending on the machine
|
||||
or operating system it is to run on. In some cases the code for
|
||||
@ -2474,7 +2474,7 @@ File: cpp.info, Node: Conditional Syntax, Next: Deleted Code, Prev: Condition
|
||||
Conditional Syntax
|
||||
==================
|
||||
|
||||
A conditional in the C preprocessor begins with a "conditional
|
||||
A conditional in the C preprocessor begins with a "conditional
|
||||
directive": `#if', `#ifdef' or `#ifndef'.
|
||||
|
||||
* Menu:
|
||||
@ -2491,7 +2491,7 @@ File: cpp.info, Node: Ifdef, Next: If, Up: Conditional Syntax
|
||||
Ifdef
|
||||
-----
|
||||
|
||||
The simplest sort of conditional is
|
||||
The simplest sort of conditional is
|
||||
|
||||
#ifdef MACRO
|
||||
|
||||
@ -2563,7 +2563,7 @@ File: cpp.info, Node: If, Next: Defined, Prev: Ifdef, Up: Conditional Syntax
|
||||
If
|
||||
--
|
||||
|
||||
The `#if' directive allows you to test the value of an arithmetic
|
||||
The `#if' directive allows you to test the value of an arithmetic
|
||||
expression, rather than the mere existence of one macro. Its syntax is
|
||||
|
||||
#if EXPRESSION
|
||||
@ -2624,11 +2624,11 @@ File: cpp.info, Node: Defined, Next: Else, Prev: If, Up: Conditional Syntax
|
||||
Defined
|
||||
-------
|
||||
|
||||
The special operator `defined' is used in `#if' and `#elif'
|
||||
expressions to test whether a certain name is defined as a macro.
|
||||
`defined NAME' and `defined (NAME)' are both expressions whose value is
|
||||
1 if NAME is defined as a macro at the current point in the program,
|
||||
and 0 otherwise. Thus, `#if defined MACRO' is precisely equivalent to
|
||||
The special operator `defined' is used in `#if' and `#elif' expressions
|
||||
to test whether a certain name is defined as a macro. `defined NAME'
|
||||
and `defined (NAME)' are both expressions whose value is 1 if NAME is
|
||||
defined as a macro at the current point in the program, and 0
|
||||
otherwise. Thus, `#if defined MACRO' is precisely equivalent to
|
||||
`#ifdef MACRO'.
|
||||
|
||||
`defined' is useful when you wish to test more than one macro for
|
||||
@ -2659,7 +2659,7 @@ File: cpp.info, Node: Else, Next: Elif, Prev: Defined, Up: Conditional Synta
|
||||
Else
|
||||
----
|
||||
|
||||
The `#else' directive can be added to a conditional to provide
|
||||
The `#else' directive can be added to a conditional to provide
|
||||
alternative text to be used if the condition fails. This is what it
|
||||
looks like:
|
||||
|
||||
@ -2680,8 +2680,8 @@ File: cpp.info, Node: Elif, Prev: Else, Up: Conditional Syntax
|
||||
Elif
|
||||
----
|
||||
|
||||
One common case of nested conditionals is used to check for more
|
||||
than two possible alternatives. For example, you might have
|
||||
One common case of nested conditionals is used to check for more than
|
||||
two possible alternatives. For example, you might have
|
||||
|
||||
#if X == 1
|
||||
...
|
||||
@ -2725,8 +2725,8 @@ File: cpp.info, Node: Deleted Code, Prev: Conditional Syntax, Up: Conditional
|
||||
Deleted Code
|
||||
============
|
||||
|
||||
If you replace or delete a part of the program but want to keep the
|
||||
old code around for future reference, you often cannot simply comment it
|
||||
If you replace or delete a part of the program but want to keep the old
|
||||
code around for future reference, you often cannot simply comment it
|
||||
out. Block comments do not nest, so the first comment inside the old
|
||||
code will end the commenting-out. The probable result is a flood of
|
||||
syntax errors.
|
||||
@ -2753,9 +2753,9 @@ File: cpp.info, Node: Diagnostics, Next: Line Control, Prev: Conditionals, U
|
||||
Diagnostics
|
||||
***********
|
||||
|
||||
The directive `#error' causes the preprocessor to report a fatal
|
||||
error. The tokens forming the rest of the line following `#error' are
|
||||
used as the error message.
|
||||
The directive `#error' causes the preprocessor to report a fatal error.
|
||||
The tokens forming the rest of the line following `#error' are used as
|
||||
the error message.
|
||||
|
||||
You would use `#error' inside of a conditional that detects a
|
||||
combination of parameters which you know the program does not properly
|
||||
@ -2793,12 +2793,11 @@ File: cpp.info, Node: Line Control, Next: Pragmas, Prev: Diagnostics, Up: To
|
||||
Line Control
|
||||
************
|
||||
|
||||
The C preprocessor informs the C compiler of the location in your
|
||||
source code where each token came from. Presently, this is just the
|
||||
file name and line number. All the tokens resulting from macro
|
||||
expansion are reported as having appeared on the line of the source
|
||||
file where the outermost macro was used. We intend to be more accurate
|
||||
in the future.
|
||||
The C preprocessor informs the C compiler of the location in your source
|
||||
code where each token came from. Presently, this is just the file name
|
||||
and line number. All the tokens resulting from macro expansion are
|
||||
reported as having appeared on the line of the source file where the
|
||||
outermost macro was used. We intend to be more accurate in the future.
|
||||
|
||||
If you write a program which generates source code, such as the
|
||||
`bison' parser generator, you may want to adjust the preprocessor's
|
||||
@ -2872,8 +2871,8 @@ File: cpp.info, Node: Pragmas, Next: Other Directives, Prev: Line Control, U
|
||||
Pragmas
|
||||
*******
|
||||
|
||||
The `#pragma' directive is the method specified by the C standard
|
||||
for providing additional information to the compiler, beyond what is
|
||||
The `#pragma' directive is the method specified by the C standard for
|
||||
providing additional information to the compiler, beyond what is
|
||||
conveyed in the language itself. Three forms of this directive
|
||||
(commonly known as "pragmas") are specified by the 1999 C standard. A
|
||||
C compiler is free to attach any meaning it likes to other pragmas.
|
||||
@ -2963,15 +2962,16 @@ compilers. They are documented in the GCC manual.
|
||||
the current file to be treated as if it came from a system header.
|
||||
*Note System Headers::.
|
||||
|
||||
|
||||
|
||||
File: cpp.info, Node: Other Directives, Next: Preprocessor Output, Prev: Pragmas, Up: Top
|
||||
|
||||
Other Directives
|
||||
****************
|
||||
|
||||
The `#ident' directive takes one argument, a string constant. On
|
||||
some systems, that string constant is copied into a special segment of
|
||||
the object file. On other systems, the directive is ignored.
|
||||
The `#ident' directive takes one argument, a string constant. On some
|
||||
systems, that string constant is copied into a special segment of the
|
||||
object file. On other systems, the directive is ignored.
|
||||
|
||||
This directive is not part of the C standard, but it is not an
|
||||
official GNU extension either. We believe it came from System V.
|
||||
@ -2995,7 +2995,7 @@ File: cpp.info, Node: Preprocessor Output, Next: Traditional Mode, Prev: Othe
|
||||
Preprocessor Output
|
||||
*******************
|
||||
|
||||
When the C preprocessor is used with the C, C++, or Objective-C
|
||||
When the C preprocessor is used with the C, C++, or Objective-C
|
||||
compilers, it is integrated into the compiler and communicates a stream
|
||||
of binary tokens directly to the compiler's parser. However, it can
|
||||
also be used in the more conventional standalone mode, where it produces
|
||||
@ -3068,8 +3068,8 @@ File: cpp.info, Node: Traditional Mode, Next: Implementation Details, Prev: P
|
||||
Traditional Mode
|
||||
****************
|
||||
|
||||
Traditional (pre-standard) C preprocessing is rather different from
|
||||
the preprocessing specified by the standard. When GCC is given the
|
||||
Traditional (pre-standard) C preprocessing is rather different from the
|
||||
preprocessing specified by the standard. When GCC is given the
|
||||
`-traditional-cpp' option, it attempts to emulate a traditional
|
||||
preprocessor.
|
||||
|
||||
@ -3097,7 +3097,7 @@ File: cpp.info, Node: Traditional lexical analysis, Next: Traditional macros,
|
||||
Traditional lexical analysis
|
||||
============================
|
||||
|
||||
The traditional preprocessor does not decompose its input into tokens
|
||||
The traditional preprocessor does not decompose its input into tokens
|
||||
the same way a standards-conforming preprocessor does. The input is
|
||||
simply treated as a stream of text with minimal internal form.
|
||||
|
||||
@ -3159,7 +3159,7 @@ File: cpp.info, Node: Traditional macros, Next: Traditional miscellany, Prev:
|
||||
Traditional macros
|
||||
==================
|
||||
|
||||
The major difference between traditional and ISO macros is that the
|
||||
The major difference between traditional and ISO macros is that the
|
||||
former expand to text rather than to a token sequence. CPP removes all
|
||||
leading and trailing horizontal whitespace from a macro's replacement
|
||||
text before storing it, but preserves the form of internal whitespace.
|
||||
@ -3245,7 +3245,7 @@ File: cpp.info, Node: Traditional miscellany, Next: Traditional warnings, Pre
|
||||
Traditional miscellany
|
||||
======================
|
||||
|
||||
Here are some things to be aware of when using the traditional
|
||||
Here are some things to be aware of when using the traditional
|
||||
preprocessor.
|
||||
|
||||
* Preprocessing directives are recognized only when their leading
|
||||
@ -3273,7 +3273,7 @@ File: cpp.info, Node: Traditional warnings, Prev: Traditional miscellany, Up:
|
||||
Traditional warnings
|
||||
====================
|
||||
|
||||
You can request warnings about features that did not exist, or worked
|
||||
You can request warnings about features that did not exist, or worked
|
||||
differently, in traditional C with the `-Wtraditional' option. GCC
|
||||
does not warn about features of ISO C which you must use when you are
|
||||
using a conforming compiler, such as the `#' and `##' operators.
|
||||
@ -3319,7 +3319,7 @@ File: cpp.info, Node: Implementation Details, Next: Invocation, Prev: Traditi
|
||||
Implementation Details
|
||||
**********************
|
||||
|
||||
Here we document details of how the preprocessor's implementation
|
||||
Here we document details of how the preprocessor's implementation
|
||||
affects its user-visible behavior. You should try to avoid undue
|
||||
reliance on behavior described here, as it is possible that it will
|
||||
change subtly in future implementations.
|
||||
@ -3340,10 +3340,10 @@ File: cpp.info, Node: Implementation-defined behavior, Next: Implementation li
|
||||
Implementation-defined behavior
|
||||
===============================
|
||||
|
||||
This is how CPP behaves in all the cases which the C standard
|
||||
describes as "implementation-defined". This term means that the
|
||||
implementation is free to do what it likes, but must document its choice
|
||||
and stick to it.
|
||||
This is how CPP behaves in all the cases which the C standard describes
|
||||
as "implementation-defined". This term means that the implementation
|
||||
is free to do what it likes, but must document its choice and stick to
|
||||
it.
|
||||
|
||||
* The mapping of physical source file multi-byte characters to the
|
||||
execution character set.
|
||||
@ -3408,7 +3408,7 @@ File: cpp.info, Node: Implementation limits, Next: Obsolete Features, Prev: I
|
||||
Implementation limits
|
||||
=====================
|
||||
|
||||
CPP has a small number of internal limits. This section lists the
|
||||
CPP has a small number of internal limits. This section lists the
|
||||
limits which the C standard requires to be no lower than some minimum,
|
||||
and all the others we are aware of. We intend there to be as few limits
|
||||
as possible. If you encounter an undocumented or inconvenient limit,
|
||||
@ -3475,9 +3475,9 @@ File: cpp.info, Node: Obsolete Features, Next: Differences from previous versi
|
||||
Obsolete Features
|
||||
=================
|
||||
|
||||
CPP has a number of features which are present mainly for
|
||||
compatibility with older programs. We discourage their use in new code.
|
||||
In some cases, we plan to remove the feature in a future version of GCC.
|
||||
CPP has a number of features which are present mainly for compatibility
|
||||
with older programs. We discourage their use in new code. In some
|
||||
cases, we plan to remove the feature in a future version of GCC.
|
||||
|
||||
* Menu:
|
||||
|
||||
@ -3490,7 +3490,7 @@ File: cpp.info, Node: Assertions, Next: Obsolete once-only headers, Up: Obsol
|
||||
Assertions
|
||||
----------
|
||||
|
||||
"Assertions" are a deprecated alternative to macros in writing
|
||||
"Assertions" are a deprecated alternative to macros in writing
|
||||
conditionals to test what sort of computer or system the compiled
|
||||
program will run on. Assertions are usually predefined, but you can
|
||||
define them with preprocessing directives or command-line options.
|
||||
@ -3556,7 +3556,7 @@ File: cpp.info, Node: Obsolete once-only headers, Prev: Assertions, Up: Obsol
|
||||
Obsolete once-only headers
|
||||
--------------------------
|
||||
|
||||
CPP supports two more ways of indicating that a header file should be
|
||||
CPP supports two more ways of indicating that a header file should be
|
||||
read only once. Neither one is as portable as a wrapper `#ifndef', and
|
||||
we recommend you do not use them in new programs.
|
||||
|
||||
@ -3594,9 +3594,9 @@ File: cpp.info, Node: Differences from previous versions, Prev: Obsolete Featu
|
||||
Differences from previous versions
|
||||
==================================
|
||||
|
||||
This section details behavior which has changed from previous
|
||||
versions of CPP. We do not plan to change it again in the near future,
|
||||
but we do not promise not to, either.
|
||||
This section details behavior which has changed from previous versions
|
||||
of CPP. We do not plan to change it again in the near future, but we
|
||||
do not promise not to, either.
|
||||
|
||||
The "previous versions" discussed here are 2.95 and before. The
|
||||
behavior of GCC 3.0 is mostly the same as the behavior of the widely
|
||||
@ -3681,12 +3681,12 @@ File: cpp.info, Node: Invocation, Next: Environment Variables, Prev: Implemen
|
||||
Invocation
|
||||
**********
|
||||
|
||||
Most often when you use the C preprocessor you will not have to
|
||||
invoke it explicitly: the C compiler will do so automatically.
|
||||
However, the preprocessor is sometimes useful on its own. All the
|
||||
options listed here are also acceptable to the C compiler and have the
|
||||
same meaning, except that the C compiler has different rules for
|
||||
specifying the output file.
|
||||
Most often when you use the C preprocessor you will not have to invoke
|
||||
it explicitly: the C compiler will do so automatically. However, the
|
||||
preprocessor is sometimes useful on its own. All the options listed
|
||||
here are also acceptable to the C compiler and have the same meaning,
|
||||
except that the C compiler has different rules for specifying the output
|
||||
file.
|
||||
|
||||
*Note:* Whether you use the preprocessor by way of `gcc' or `cpp',
|
||||
the "compiler driver" is run first. This program's purpose is to
|
||||
@ -4209,7 +4209,7 @@ File: cpp.info, Node: Environment Variables, Next: GNU Free Documentation Lice
|
||||
Environment Variables
|
||||
*********************
|
||||
|
||||
This section describes the environment variables that affect how CPP
|
||||
This section describes the environment variables that affect how CPP
|
||||
operates. You can use them to specify directories or prefixes to use
|
||||
when searching for include files, or to control dependency output.
|
||||
|
||||
@ -4672,7 +4672,7 @@ GNU Free Documentation License
|
||||
ADDENDUM: How to use this License for your documents
|
||||
====================================================
|
||||
|
||||
To use this License in a document you have written, include a copy of
|
||||
To use this License in a document you have written, include a copy of
|
||||
the License in the document and put the following copyright and license
|
||||
notices just after the title page:
|
||||
|
||||
@ -4926,75 +4926,75 @@ Concept Index
|
||||
|
||||
|
||||
Tag Table:
|
||||
Node: Top1016
|
||||
Node: Overview2808
|
||||
Node: Initial processing6434
|
||||
Ref: trigraphs8552
|
||||
Node: Tokenization12658
|
||||
Ref: Tokenization-Footnote-119707
|
||||
Node: The preprocessing language19818
|
||||
Node: Header Files22691
|
||||
Node: Include Syntax24569
|
||||
Node: Include Operation26071
|
||||
Node: Search Path27924
|
||||
Node: Once-Only Headers31001
|
||||
Node: Computed Includes32651
|
||||
Node: Wrapper Headers35790
|
||||
Node: System Headers38209
|
||||
Node: Macros40254
|
||||
Node: Object-like Macros41392
|
||||
Node: Function-like Macros44978
|
||||
Node: Macro Arguments46588
|
||||
Node: Stringification50733
|
||||
Node: Concatenation53934
|
||||
Node: Variadic Macros57048
|
||||
Node: Predefined Macros61830
|
||||
Node: Standard Predefined Macros62413
|
||||
Node: Common Predefined Macros68319
|
||||
Node: System-specific Predefined Macros76155
|
||||
Node: C++ Named Operators78167
|
||||
Node: Undefining and Redefining Macros79122
|
||||
Node: Directives Within Macro Arguments81219
|
||||
Node: Macro Pitfalls82762
|
||||
Node: Misnesting83288
|
||||
Node: Operator Precedence Problems84389
|
||||
Node: Swallowing the Semicolon86244
|
||||
Node: Duplication of Side Effects88256
|
||||
Node: Self-Referential Macros90428
|
||||
Node: Argument Prescan92838
|
||||
Node: Newlines in Arguments96581
|
||||
Node: Conditionals97526
|
||||
Node: Conditional Uses99355
|
||||
Node: Conditional Syntax100708
|
||||
Node: Ifdef101023
|
||||
Node: If104185
|
||||
Node: Defined106598
|
||||
Node: Else107871
|
||||
Node: Elif108432
|
||||
Node: Deleted Code109712
|
||||
Node: Diagnostics110954
|
||||
Node: Line Control112571
|
||||
Node: Pragmas116374
|
||||
Node: Other Directives120642
|
||||
Node: Preprocessor Output121834
|
||||
Node: Traditional Mode125034
|
||||
Node: Traditional lexical analysis126089
|
||||
Node: Traditional macros128585
|
||||
Node: Traditional miscellany132379
|
||||
Node: Traditional warnings133369
|
||||
Node: Implementation Details135559
|
||||
Node: Implementation-defined behavior136177
|
||||
Node: Implementation limits138851
|
||||
Node: Obsolete Features141542
|
||||
Node: Assertions141989
|
||||
Node: Obsolete once-only headers144519
|
||||
Node: Differences from previous versions146243
|
||||
Node: Invocation150315
|
||||
Ref: -MF158911
|
||||
Node: Environment Variables171572
|
||||
Node: GNU Free Documentation License174525
|
||||
Node: Index of Directives196955
|
||||
Node: Option Index198335
|
||||
Node: Concept Index202086
|
||||
Node: Top1043
|
||||
Node: Overview3663
|
||||
Node: Initial processing6461
|
||||
Ref: trigraphs8576
|
||||
Node: Tokenization12682
|
||||
Ref: Tokenization-Footnote-119728
|
||||
Node: The preprocessing language19839
|
||||
Node: Header Files22709
|
||||
Node: Include Syntax24585
|
||||
Node: Include Operation26084
|
||||
Node: Search Path27934
|
||||
Node: Once-Only Headers31008
|
||||
Node: Computed Includes32655
|
||||
Node: Wrapper Headers35791
|
||||
Node: System Headers38207
|
||||
Node: Macros40249
|
||||
Node: Object-like Macros41386
|
||||
Node: Function-like Macros44969
|
||||
Node: Macro Arguments46577
|
||||
Node: Stringification50719
|
||||
Node: Concatenation53917
|
||||
Node: Variadic Macros57027
|
||||
Node: Predefined Macros61806
|
||||
Node: Standard Predefined Macros62386
|
||||
Node: Common Predefined Macros68290
|
||||
Node: System-specific Predefined Macros76122
|
||||
Node: C++ Named Operators78131
|
||||
Node: Undefining and Redefining Macros79083
|
||||
Node: Directives Within Macro Arguments81177
|
||||
Node: Macro Pitfalls82717
|
||||
Node: Misnesting83240
|
||||
Node: Operator Precedence Problems84338
|
||||
Node: Swallowing the Semicolon86190
|
||||
Node: Duplication of Side Effects88199
|
||||
Node: Self-Referential Macros90368
|
||||
Node: Argument Prescan92774
|
||||
Node: Newlines in Arguments96514
|
||||
Node: Conditionals97456
|
||||
Node: Conditional Uses99282
|
||||
Node: Conditional Syntax100632
|
||||
Node: Ifdef100944
|
||||
Node: If104103
|
||||
Node: Defined106513
|
||||
Node: Else107784
|
||||
Node: Elif108342
|
||||
Node: Deleted Code109619
|
||||
Node: Diagnostics110858
|
||||
Node: Line Control112471
|
||||
Node: Pragmas116271
|
||||
Node: Other Directives120537
|
||||
Node: Preprocessor Output121726
|
||||
Node: Traditional Mode124923
|
||||
Node: Traditional lexical analysis125975
|
||||
Node: Traditional macros128468
|
||||
Node: Traditional miscellany132259
|
||||
Node: Traditional warnings133246
|
||||
Node: Implementation Details135433
|
||||
Node: Implementation-defined behavior136048
|
||||
Node: Implementation limits138719
|
||||
Node: Obsolete Features141407
|
||||
Node: Assertions141852
|
||||
Node: Obsolete once-only headers144379
|
||||
Node: Differences from previous versions146100
|
||||
Node: Invocation150169
|
||||
Ref: -MF158763
|
||||
Node: Environment Variables171424
|
||||
Node: GNU Free Documentation License174374
|
||||
Node: Index of Directives196801
|
||||
Node: Option Index198181
|
||||
Node: Concept Index201932
|
||||
|
||||
End Tag Table
|
||||
|
105
gnu/dist/gcc/gcc/doc/cppinternals.info
vendored
105
gnu/dist/gcc/gcc/doc/cppinternals.info
vendored
@ -1,5 +1,5 @@
|
||||
This is doc/cppinternals.info, produced by makeinfo version 4.2 from
|
||||
doc/cppinternals.texi.
|
||||
Ceci est le fichier Info doc/cppinternals.info, produit par Makeinfo
|
||||
version 4.6 à partir doc/cppinternals.texi.
|
||||
|
||||
INFO-DIR-SECTION Programming
|
||||
START-INFO-DIR-ENTRY
|
||||
@ -31,8 +31,8 @@ File: cppinternals.info, Node: Top, Next: Conventions, Up: (dir)
|
||||
Cpplib--the GNU C Preprocessor
|
||||
******************************
|
||||
|
||||
The GNU C preprocessor in GCC 3.x has been completely rewritten. It
|
||||
is now implemented as a library, "cpplib", so it can be easily shared
|
||||
The GNU C preprocessor in GCC 3.x has been completely rewritten. It is
|
||||
now implemented as a library, "cpplib", so it can be easily shared
|
||||
between a stand-alone preprocessor, and a preprocessor integrated with
|
||||
the C, C++ and Objective-C front ends. It is also available for use by
|
||||
other programs, though this is not recommended as its exposed interface
|
||||
@ -68,7 +68,7 @@ File: cppinternals.info, Node: Conventions, Next: Lexer, Prev: Top, Up: Top
|
||||
Conventions
|
||||
***********
|
||||
|
||||
cpplib has two interfaces--one is exposed internally only, and the
|
||||
cpplib has two interfaces--one is exposed internally only, and the
|
||||
other is for both internal and external use.
|
||||
|
||||
The convention is that functions and types that are exposed to
|
||||
@ -94,7 +94,7 @@ The Lexer
|
||||
Overview
|
||||
========
|
||||
|
||||
The lexer is contained in the file `cpplex.c'. It is a hand-coded
|
||||
The lexer is contained in the file `cpplex.c'. It is a hand-coded
|
||||
lexer, and not implemented as a state machine. It can understand C, C++
|
||||
and Objective-C source code, and has been extended to allow reasonably
|
||||
successful preprocessing of assembly language. The lexer does not make
|
||||
@ -113,10 +113,10 @@ generating diagnostics, and for emitting the preprocessed output.
|
||||
Lexing a token
|
||||
==============
|
||||
|
||||
Lexing of an individual token is handled by `_cpp_lex_direct' and
|
||||
its subroutines. In its current form the code is quite complicated,
|
||||
with read ahead characters and such-like, since it strives to not step
|
||||
back in the character stream in preparation for handling non-ASCII file
|
||||
Lexing of an individual token is handled by `_cpp_lex_direct' and its
|
||||
subroutines. In its current form the code is quite complicated, with
|
||||
read ahead characters and such-like, since it strives to not step back
|
||||
in the character stream in preparation for handling non-ASCII file
|
||||
encodings. The current plan is to convert any such files to UTF-8
|
||||
before processing them. This complexity is therefore unnecessary and
|
||||
will be removed, so I'll not discuss it further here.
|
||||
@ -277,7 +277,7 @@ program calls cpp_destroy, probably at the end of the translation unit.
|
||||
Lexing a line
|
||||
=============
|
||||
|
||||
When the preprocessor was changed to return pointers to tokens, one
|
||||
When the preprocessor was changed to return pointers to tokens, one
|
||||
feature I wanted was some sort of guarantee regarding how long a
|
||||
returned pointer remains valid. This is important to the stand-alone
|
||||
preprocessor, the future direction of the C family front ends, and even
|
||||
@ -365,12 +365,12 @@ File: cppinternals.info, Node: Hash Nodes, Next: Macro Expansion, Prev: Lexer
|
||||
Hash Nodes
|
||||
**********
|
||||
|
||||
When cpplib encounters an "identifier", it generates a hash code for
|
||||
it and stores it in the hash table. By "identifier" we mean tokens
|
||||
with type `CPP_NAME'; this includes identifiers in the usual C sense,
|
||||
as well as keywords, directive names, macro names and so on. For
|
||||
example, all of `pragma', `int', `foo' and `__GNUC__' are identifiers
|
||||
and hashed when lexed.
|
||||
When cpplib encounters an "identifier", it generates a hash code for it
|
||||
and stores it in the hash table. By "identifier" we mean tokens with
|
||||
type `CPP_NAME'; this includes identifiers in the usual C sense, as
|
||||
well as keywords, directive names, macro names and so on. For example,
|
||||
all of `pragma', `int', `foo' and `__GNUC__' are identifiers and hashed
|
||||
when lexed.
|
||||
|
||||
Each node in the hash table contain various information about the
|
||||
identifier it represents. For example, its length and type. At any one
|
||||
@ -426,10 +426,9 @@ File: cppinternals.info, Node: Macro Expansion, Next: Token Spacing, Prev: Ha
|
||||
Macro Expansion Algorithm
|
||||
*************************
|
||||
|
||||
Macro expansion is a tricky operation, fraught with nasty corner
|
||||
cases and situations that render what you thought was a nifty way to
|
||||
optimize the preprocessor's expansion algorithm wrong in quite subtle
|
||||
ways.
|
||||
Macro expansion is a tricky operation, fraught with nasty corner cases
|
||||
and situations that render what you thought was a nifty way to optimize
|
||||
the preprocessor's expansion algorithm wrong in quite subtle ways.
|
||||
|
||||
I strongly recommend you have a good grasp of how the C and C++
|
||||
standards require macros to be expanded before diving into this
|
||||
@ -440,8 +439,8 @@ pasting are supposed to work, damage to your sanity can quickly result.
|
||||
Internal representation of macros
|
||||
=================================
|
||||
|
||||
The preprocessor stores macro expansions in tokenized form. This
|
||||
saves repeated lexing passes during expansion, at the cost of a small
|
||||
The preprocessor stores macro expansions in tokenized form. This saves
|
||||
repeated lexing passes during expansion, at the cost of a small
|
||||
increase in memory consumption on average. The tokens are stored
|
||||
contiguously in memory, so a pointer to the first one and a token count
|
||||
is all you need to get the replacement list of a macro.
|
||||
@ -461,9 +460,9 @@ changed.
|
||||
Macro expansion overview
|
||||
========================
|
||||
|
||||
The preprocessor maintains a "context stack", implemented as a
|
||||
linked list of `cpp_context' structures, which together represent the
|
||||
macro expansion state at any one time. The `struct cpp_reader' member
|
||||
The preprocessor maintains a "context stack", implemented as a linked
|
||||
list of `cpp_context' structures, which together represent the macro
|
||||
expansion state at any one time. The `struct cpp_reader' member
|
||||
variable `context' points to the current top of this stack. The top
|
||||
normally holds the unexpanded replacement list of the innermost macro
|
||||
under expansion, except when cpplib is about to pre-expand an argument,
|
||||
@ -506,7 +505,7 @@ being expanded.
|
||||
Scanning the replacement list for macros to expand
|
||||
==================================================
|
||||
|
||||
The C standard states that, after any parameters have been replaced
|
||||
The C standard states that, after any parameters have been replaced
|
||||
with their possibly-expanded arguments, the replacement list is scanned
|
||||
for nested macros. Further, any identifiers in the replacement list
|
||||
that are not expanded during this scan are never again eligible for
|
||||
@ -556,7 +555,7 @@ it a second time.
|
||||
Looking for a function-like macro's opening parenthesis
|
||||
=======================================================
|
||||
|
||||
Function-like macros only expand when immediately followed by a
|
||||
Function-like macros only expand when immediately followed by a
|
||||
parenthesis. To do this cpplib needs to temporarily disable macros and
|
||||
read the next token. Unfortunately, because of spacing issues (*note
|
||||
Token Spacing::), there can be fake padding tokens in-between, and if
|
||||
@ -576,7 +575,7 @@ context just containing the padding information if necessary.
|
||||
Marking tokens ineligible for future expansion
|
||||
==============================================
|
||||
|
||||
As discussed above, cpplib needs a way of marking tokens as
|
||||
As discussed above, cpplib needs a way of marking tokens as
|
||||
unexpandable. Since the tokens cpplib handles are read-only once they
|
||||
have been lexed, it instead makes a copy of the token and adds the flag
|
||||
`NO_EXPAND' to the copy.
|
||||
@ -599,7 +598,7 @@ File: cppinternals.info, Node: Token Spacing, Next: Line Numbering, Prev: Mac
|
||||
Token Spacing
|
||||
*************
|
||||
|
||||
First, let's look at an issue that only concerns the stand-alone
|
||||
First, let's look at an issue that only concerns the stand-alone
|
||||
preprocessor: we want to guarantee that re-reading its preprocessed
|
||||
output results in an identical token stream. Without taking special
|
||||
measures, this might not be the case because of macro substitution.
|
||||
@ -730,8 +729,8 @@ Line numbering
|
||||
Just which line number anyway?
|
||||
==============================
|
||||
|
||||
There are three reasonable requirements a cpplib client might have
|
||||
for the line number of a token passed to it:
|
||||
There are three reasonable requirements a cpplib client might have for
|
||||
the line number of a token passed to it:
|
||||
|
||||
* The source line it was lexed on.
|
||||
|
||||
@ -786,10 +785,10 @@ produce correct output.
|
||||
Representation of line numbers
|
||||
==============================
|
||||
|
||||
As mentioned above, cpplib stores with each token the line number
|
||||
that it was lexed on. In fact, this number is not the number of the
|
||||
line in the source file, but instead bears more resemblance to the
|
||||
number of the line in the translation unit.
|
||||
As mentioned above, cpplib stores with each token the line number that
|
||||
it was lexed on. In fact, this number is not the number of the line in
|
||||
the source file, but instead bears more resemblance to the number of the
|
||||
line in the translation unit.
|
||||
|
||||
The preprocessor maintains a monotonic increasing line count, which
|
||||
is incremented at every new line character (and also at the end of any
|
||||
@ -817,7 +816,7 @@ File: cppinternals.info, Node: Guard Macros, Next: Files, Prev: Line Numberin
|
||||
The Multiple-Include Optimization
|
||||
*********************************
|
||||
|
||||
Header files are often of the form
|
||||
Header files are often of the form
|
||||
|
||||
#ifndef FOO
|
||||
#define FOO
|
||||
@ -923,10 +922,10 @@ File: cppinternals.info, Node: Files, Next: Index, Prev: Guard Macros, Up: T
|
||||
File Handling
|
||||
*************
|
||||
|
||||
Fairly obviously, the file handling code of cpplib resides in the
|
||||
file `cppfiles.c'. It takes care of the details of file searching,
|
||||
opening, reading and caching, for both the main source file and all the
|
||||
headers it recursively includes.
|
||||
Fairly obviously, the file handling code of cpplib resides in the file
|
||||
`cppfiles.c'. It takes care of the details of file searching, opening,
|
||||
reading and caching, for both the main source file and all the headers
|
||||
it recursively includes.
|
||||
|
||||
The basic strategy is to minimize the number of system calls. On
|
||||
many systems, the basic `open ()' and `fstat ()' system calls can be
|
||||
@ -1018,17 +1017,17 @@ Index
|
||||
|
||||
|
||||
Tag Table:
|
||||
Node: Top910
|
||||
Node: Conventions2579
|
||||
Node: Lexer3523
|
||||
Ref: Invalid identifiers11446
|
||||
Ref: Lexing a line13395
|
||||
Node: Hash Nodes18168
|
||||
Node: Macro Expansion21050
|
||||
Node: Token Spacing30015
|
||||
Node: Line Numbering35897
|
||||
Node: Guard Macros39988
|
||||
Node: Files44786
|
||||
Node: Index48250
|
||||
Node: Top931
|
||||
Node: Conventions2597
|
||||
Node: Lexer3538
|
||||
Ref: Invalid identifiers11455
|
||||
Ref: Lexing a line13404
|
||||
Node: Hash Nodes18174
|
||||
Node: Macro Expansion21053
|
||||
Node: Token Spacing30000
|
||||
Node: Line Numbering35879
|
||||
Node: Guard Macros39964
|
||||
Node: Files44759
|
||||
Node: Index48220
|
||||
|
||||
End Tag Table
|
||||
|
1249
gnu/dist/gcc/gcc/doc/gcc.info
vendored
1249
gnu/dist/gcc/gcc/doc/gcc.info
vendored
File diff suppressed because it is too large
Load Diff
497
gnu/dist/gcc/gcc/doc/gccinstall.info
vendored
497
gnu/dist/gcc/gcc/doc/gccinstall.info
vendored
@ -1,5 +1,5 @@
|
||||
This is doc/gccinstall.info, produced by makeinfo version 4.2 from
|
||||
doc/install.texi.
|
||||
Ceci est le fichier Info doc/gccinstall.info, produit par Makeinfo
|
||||
version 4.6 à partir doc/install.texi.
|
||||
|
||||
Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
|
||||
1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
|
||||
@ -206,8 +206,8 @@ Target specification
|
||||
Options specification
|
||||
=====================
|
||||
|
||||
Use OPTIONS to override several configure time options for GCC. A
|
||||
list of supported OPTIONS follows; `configure --help' may list other
|
||||
Use OPTIONS to override several configure time options for GCC. A list
|
||||
of supported OPTIONS follows; `configure --help' may list other
|
||||
options, but those not listed below may not work and should not
|
||||
normally be used.
|
||||
|
||||
@ -263,6 +263,7 @@ normally be used.
|
||||
Specify the installation directory for G++ header files. The
|
||||
default is `PREFIX/include/g++-v3'.
|
||||
|
||||
|
||||
`--program-prefix=PREFIX'
|
||||
GCC supports some transformations of the names of its programs when
|
||||
installing them. This option prepends PREFIX to the names of
|
||||
@ -521,6 +522,7 @@ normally be used.
|
||||
aix64, pthread, softfloat, powercpu, powerpccpu, powerpcos,
|
||||
biendian, sysv, aix.
|
||||
|
||||
|
||||
`--enable-threads'
|
||||
Specify that the target supports threads. This affects the
|
||||
Objective-C compiler and runtime library, and exception handling
|
||||
@ -704,7 +706,6 @@ normally be used.
|
||||
and `valgrind' are very expensive.
|
||||
|
||||
`--enable-coverage'
|
||||
|
||||
`--enable-coverage=LEVEL'
|
||||
With this option, the compiler is built to collect self coverage
|
||||
information, every time it is run. This is for internal development
|
||||
@ -753,24 +754,37 @@ normally be used.
|
||||
someone steps forward to maintain the port.
|
||||
|
||||
Some options which only apply to building cross compilers:
|
||||
`--with-sysroot'
|
||||
`--with-sysroot=DIR'
|
||||
Tells GCC to consider DIR as the root of a tree that contains a
|
||||
(subset of) the root filesystem of the target operating system.
|
||||
Target system headers, libraries and run-time object files will be
|
||||
searched in there. The specified directory is not copied into the
|
||||
install tree, unlike the options `--with-headers' and
|
||||
`--with-libs' that this option obsoletes. The default value, in
|
||||
case `--with-sysroot' is not given an argument, is
|
||||
`${gcc_tooldir}/sys-root'. If the specified directory is a
|
||||
subdirectory of `${exec_prefix}', then it will be found relative to
|
||||
the GCC binaries if the installation tree is moved.
|
||||
|
||||
`--with-headers'
|
||||
`--with-headers=DIR'
|
||||
Specifies that target headers are available when building a cross
|
||||
compiler. The DIR argument specifies a directory which has the
|
||||
target include files. These include files will be copied into the
|
||||
`gcc' install directory. _This option with the DIR argument is
|
||||
required_ when building a cross compiler, if
|
||||
`PREFIX/TARGET/sys-include' doesn't pre-exist. If
|
||||
`PREFIX/TARGET/sys-include' does pre-exist, the DIR argument may
|
||||
be omitted. `fixincludes' will be run on these files to make them
|
||||
compatible with GCC.
|
||||
Deprecated in favor of `--with-sysroot'. Specifies that target
|
||||
headers are available when building a cross compiler. The DIR
|
||||
argument specifies a directory which has the target include files.
|
||||
These include files will be copied into the `gcc' install
|
||||
directory. _This option with the DIR argument is required_ when
|
||||
building a cross compiler, if `PREFIX/TARGET/sys-include' doesn't
|
||||
pre-exist. If `PREFIX/TARGET/sys-include' does pre-exist, the DIR
|
||||
argument may be omitted. `fixincludes' will be run on these files
|
||||
to make them compatible with GCC.
|
||||
|
||||
`--with-libs'
|
||||
`--with-libs=``DIR1 DIR2 ... DIRN'''
|
||||
Specifies a list of directories which contain the target runtime
|
||||
libraries. These libraries will be copied into the `gcc' install
|
||||
directory. If the directory list is omitted, this option has no
|
||||
effect.
|
||||
Deprecated in favor of `--with-sysroot'. Specifies a list of
|
||||
directories which contain the target runtime libraries. These
|
||||
libraries will be copied into the `gcc' install directory. If the
|
||||
directory list is omitted, this option has no effect.
|
||||
|
||||
`--with-newlib'
|
||||
Specifies that `newlib' is being used as the target C library.
|
||||
@ -839,8 +853,8 @@ documentation pre-built for the unmodified documentation in the release.
|
||||
Building a native compiler
|
||||
==========================
|
||||
|
||||
For a native build issue the command `make bootstrap'. This will
|
||||
build the entire GCC system, which includes the following steps:
|
||||
For a native build issue the command `make bootstrap'. This will build
|
||||
the entire GCC system, which includes the following steps:
|
||||
|
||||
* Build host tools necessary to build the compiler such as texinfo,
|
||||
bison, gperf.
|
||||
@ -900,7 +914,7 @@ need to disable comparison in the `Makefile'.)
|
||||
Building a cross compiler
|
||||
=========================
|
||||
|
||||
We recommend reading the crossgcc FAQ for information about building
|
||||
We recommend reading the crossgcc FAQ for information about building
|
||||
cross compilers.
|
||||
|
||||
When building a cross compiler, it is not generally possible to do a
|
||||
@ -933,9 +947,9 @@ performs the following steps:
|
||||
Building in parallel
|
||||
====================
|
||||
|
||||
You can use `make bootstrap MAKE="make -j 2" -j 2', or just `make -j
|
||||
2 bootstrap' for GNU Make 3.79 and above, instead of `make bootstrap'
|
||||
to build GCC in parallel. You can also specify a bigger number, and in
|
||||
You can use `make bootstrap MAKE="make -j 2" -j 2', or just `make -j 2
|
||||
bootstrap' for GNU Make 3.79 and above, instead of `make bootstrap' to
|
||||
build GCC in parallel. You can also specify a bigger number, and in
|
||||
most cases using a value greater than the number of processors in your
|
||||
machine will result in fewer and shorter I/O latency hits, thus
|
||||
improving overall throughput; this is especially true for slow drives
|
||||
@ -944,7 +958,7 @@ and network filesystems.
|
||||
Building the Ada compiler
|
||||
=========================
|
||||
|
||||
In order to build GNAT, the Ada compiler, you need a working GNAT
|
||||
In order to build GNAT, the Ada compiler, you need a working GNAT
|
||||
compiler (GNAT version 3.13 or later, or GCC version 3.1 or later),
|
||||
since the Ada front end is written in Ada (with some GNAT-specific
|
||||
extensions), and GNU make.
|
||||
@ -1039,7 +1053,7 @@ can be ignored.
|
||||
How can I run the test suite on selected tests?
|
||||
===============================================
|
||||
|
||||
In order to run sets of tests selectively, there are targets `make
|
||||
In order to run sets of tests selectively, there are targets `make
|
||||
check-gcc' and `make check-g++' in the `gcc' subdirectory of the object
|
||||
directory. You can also just run `make check' in a subdirectory of the
|
||||
object directory.
|
||||
@ -1066,7 +1080,7 @@ files, pipe the output of `make check' into a file and look at the
|
||||
Additional testing for Java Class Libraries
|
||||
===========================================
|
||||
|
||||
The Mauve Project provides a suite of tests for the Java Class
|
||||
The Mauve Project provides a suite of tests for the Java Class
|
||||
Libraries. This suite can be run as part of libgcj testing by placing
|
||||
the Mauve tree within the libjava testsuite at
|
||||
`libjava/testsuite/libjava.mauve/mauve', or by specifying the location
|
||||
@ -1080,7 +1094,7 @@ tree within the libjava testsuite at
|
||||
How to interpret test results
|
||||
=============================
|
||||
|
||||
The result of running the testsuite are various `*.sum' and `*.log'
|
||||
The result of running the testsuite are various `*.sum' and `*.log'
|
||||
files in the testsuite subdirectories. The `*.log' files contain a
|
||||
detailed log of the compiler invocations and the corresponding results,
|
||||
the `*.sum' files summarize the results. These summaries contain
|
||||
@ -1108,7 +1122,7 @@ problem in future releases.
|
||||
Submitting test results
|
||||
=======================
|
||||
|
||||
If you want to report the results to the GCC project, use the
|
||||
If you want to report the results to the GCC project, use the
|
||||
`contrib/test_summary' shell script. Start it in the OBJDIR with
|
||||
|
||||
SRCDIR/contrib/test_summary -p your_commentary.txt \
|
||||
@ -1293,7 +1307,7 @@ Compiler Collection on your machine.
|
||||
alpha*-*-*
|
||||
==========
|
||||
|
||||
This section contains general configuration information for all
|
||||
This section contains general configuration information for all
|
||||
alpha-based platforms using ELF (in particular, ignore this section for
|
||||
DEC OSF/1, Digital UNIX and Tru64 UNIX). In addition to reading this
|
||||
section, please read all other sections that match your target.
|
||||
@ -1305,8 +1319,8 @@ of which is incorrect linking of shared libraries.
|
||||
alpha*-dec-osf*
|
||||
===============
|
||||
|
||||
Systems using processors that implement the DEC Alpha architecture
|
||||
and are running the DEC/Compaq Unix (DEC OSF/1, Digital UNIX, or Compaq
|
||||
Systems using processors that implement the DEC Alpha architecture and
|
||||
are running the DEC/Compaq Unix (DEC OSF/1, Digital UNIX, or Compaq
|
||||
Tru64 UNIX) operating system, for example the DEC Alpha AXP systems.
|
||||
|
||||
As of GCC 3.2, versions before `alpha*-dec-osf4' are no longer
|
||||
@ -1383,7 +1397,7 @@ provide a fix shortly.
|
||||
alphaev5-cray-unicosmk*
|
||||
=======================
|
||||
|
||||
Cray T3E systems running Unicos/Mk.
|
||||
Cray T3E systems running Unicos/Mk.
|
||||
|
||||
This port is incomplete and has many known bugs. We hope to improve
|
||||
the support for this target soon. Currently, only the C front end is
|
||||
@ -1407,13 +1421,13 @@ failure.
|
||||
arc-*-elf
|
||||
=========
|
||||
|
||||
Argonaut ARC processor. This configuration is intended for embedded
|
||||
Argonaut ARC processor. This configuration is intended for embedded
|
||||
systems.
|
||||
|
||||
arm-*-aout
|
||||
==========
|
||||
|
||||
This configuration is obsoleted in GCC 3.3.
|
||||
This configuration is obsoleted in GCC 3.3.
|
||||
|
||||
Advanced RISC Machines ARM-family processors. These are often used
|
||||
in embedded applications. There are no standard Unix configurations.
|
||||
@ -1426,17 +1440,17 @@ particular configuration.
|
||||
arm-*-elf
|
||||
=========
|
||||
|
||||
This configuration is intended for embedded systems.
|
||||
This configuration is intended for embedded systems.
|
||||
|
||||
arm*-*-linux-gnu
|
||||
================
|
||||
|
||||
We require GNU binutils 2.10 or newer.
|
||||
We require GNU binutils 2.10 or newer.
|
||||
|
||||
avr
|
||||
===
|
||||
|
||||
ATMEL AVR-family micro controllers. These are used in embedded
|
||||
ATMEL AVR-family micro controllers. These are used in embedded
|
||||
applications. There are no standard Unix configurations. *Note AVR
|
||||
Options: (gcc)AVR Options, for the list of supported MCU types.
|
||||
|
||||
@ -1461,9 +1475,9 @@ tools can also be obtained from:
|
||||
c4x
|
||||
===
|
||||
|
||||
Texas Instruments TMS320C3x and TMS320C4x Floating Point Digital
|
||||
Signal Processors. These are used in embedded applications. There are
|
||||
no standard Unix configurations. *Note TMS320C3x/C4x Options:
|
||||
Texas Instruments TMS320C3x and TMS320C4x Floating Point Digital Signal
|
||||
Processors. These are used in embedded applications. There are no
|
||||
standard Unix configurations. *Note TMS320C3x/C4x Options:
|
||||
(gcc)TMS320C3x/C4x Options, for the list of supported MCU types.
|
||||
|
||||
GCC can be configured as a cross compiler for both the C3x and C4x
|
||||
@ -1478,7 +1492,7 @@ tools can also be obtained from:
|
||||
CRIS
|
||||
====
|
||||
|
||||
CRIS is the CPU architecture in Axis Communications ETRAX
|
||||
CRIS is the CPU architecture in Axis Communications ETRAX
|
||||
system-on-a-chip series. These are used in embedded applications.
|
||||
|
||||
*Note CRIS Options: (gcc)CRIS Options, for a list of CRIS-specific
|
||||
@ -1508,7 +1522,7 @@ information about this platform is available at
|
||||
DOS
|
||||
===
|
||||
|
||||
Please have a look at our binaries page.
|
||||
Please have a look at our binaries page.
|
||||
|
||||
You cannot install GCC by itself on MSDOS; it will not compile under
|
||||
any MSDOS compiler except itself. You need to get the complete
|
||||
@ -1518,15 +1532,14 @@ and includes all the necessary compilation tools and libraries.
|
||||
dsp16xx
|
||||
=======
|
||||
|
||||
A port to the AT&T DSP1610 family of processors.
|
||||
A port to the AT&T DSP1610 family of processors.
|
||||
|
||||
*-*-freebsd*
|
||||
============
|
||||
|
||||
The version of binutils installed in `/usr/bin' is known to work
|
||||
unless otherwise specified in any per-architecture notes. However,
|
||||
binutils 2.12.1 or greater is known to improve overall testsuite
|
||||
results.
|
||||
The version of binutils installed in `/usr/bin' is known to work unless
|
||||
otherwise specified in any per-architecture notes. However, binutils
|
||||
2.12.1 or greater is known to improve overall testsuite results.
|
||||
|
||||
Support for FreeBSD 1 was discontinued in GCC 3.2.
|
||||
|
||||
@ -1566,7 +1579,7 @@ least, both boehm-gc and libffi.
|
||||
h8300-hms
|
||||
=========
|
||||
|
||||
Renesas H8/300 series of processors.
|
||||
Renesas H8/300 series of processors.
|
||||
|
||||
Please have a look at our binaries page.
|
||||
|
||||
@ -1578,7 +1591,7 @@ are no longer a multiple of 2 bytes.
|
||||
hppa*-hp-hpux*
|
||||
==============
|
||||
|
||||
Support for HP-UX versions 7, 8, and 9 is obsoleted in GCC 3.3.
|
||||
Support for HP-UX versions 7, 8, and 9 is obsoleted in GCC 3.3.
|
||||
|
||||
We _highly_ recommend using gas/binutils 2.8 or newer on all hppa
|
||||
platforms; you may encounter a variety of problems when using the HP
|
||||
@ -1610,7 +1623,7 @@ default scheduling model is desired.
|
||||
hppa*-hp-hpux9
|
||||
==============
|
||||
|
||||
Support for this system is obsoleted in GCC 3.3.
|
||||
Support for this system is obsoleted in GCC 3.3.
|
||||
|
||||
The HP assembler has major problems on this platform. We've tried
|
||||
to work around the worst of the problems. However, those workarounds
|
||||
@ -1625,7 +1638,7 @@ and `SHELL' to `/bin/ksh' in your environment.
|
||||
hppa*-hp-hpux10
|
||||
===============
|
||||
|
||||
For hpux10.20, we _highly_ recommend you pick up the latest sed patch
|
||||
For hpux10.20, we _highly_ recommend you pick up the latest sed patch
|
||||
`PHCO_19798' from HP. HP has two sites which provide patches free of
|
||||
charge:
|
||||
|
||||
@ -1644,10 +1657,10 @@ be able to continue by saying `make all' after getting the failure from
|
||||
hppa*-hp-hpux11
|
||||
===============
|
||||
|
||||
GCC 3.0 and up support HP-UX 11. On 64-bit capable systems, there
|
||||
are two distinct ports. The `hppa2.0w-hp-hpux11*' port generates code
|
||||
for the 32-bit pa-risc runtime architecture. It uses the HP linker.
|
||||
The `hppa64-hp-hpux11*' port generates 64-bit code for the pa-risc 2.0
|
||||
GCC 3.0 and up support HP-UX 11. On 64-bit capable systems, there are
|
||||
two distinct ports. The `hppa2.0w-hp-hpux11*' port generates code for
|
||||
the 32-bit pa-risc runtime architecture. It uses the HP linker. The
|
||||
`hppa64-hp-hpux11*' port generates 64-bit code for the pa-risc 2.0
|
||||
architecture. The script config.guess now selects the port type based
|
||||
on the type compiler detected during configuration. You must set your
|
||||
`PATH' or define `CC' so that configure finds an appropriate compiler
|
||||
@ -1735,13 +1748,13 @@ between traditional and ISO C.
|
||||
i370-*-*
|
||||
========
|
||||
|
||||
This port is very preliminary and has many known bugs. We hope to
|
||||
have a higher-quality port for this machine soon.
|
||||
This port is very preliminary and has many known bugs. We hope to have
|
||||
a higher-quality port for this machine soon.
|
||||
|
||||
*-*-linux-gnu
|
||||
=============
|
||||
|
||||
Versions of libstdc++-v3 starting with 3.2.1 require bugfixes present
|
||||
Versions of libstdc++-v3 starting with 3.2.1 require bugfixes present
|
||||
in glibc 2.2.5 and later. More information is available in the
|
||||
libstdc++-v3 documentation.
|
||||
|
||||
@ -1762,15 +1775,15 @@ You can use glibc 2.2.3 with GCC 3.0, just do not try to recompile it.
|
||||
i?86-*-linux*aout
|
||||
=================
|
||||
|
||||
Use this configuration to generate `a.out' binaries on Linux-based
|
||||
GNU systems. This configuration is being superseded. You must use
|
||||
Use this configuration to generate `a.out' binaries on Linux-based GNU
|
||||
systems. This configuration is being superseded. You must use
|
||||
gas/binutils version 2.5.2 or later.
|
||||
|
||||
i?86-*-linux*
|
||||
=============
|
||||
|
||||
As of GCC 3.3, binutils 2.13.1 or later is required for this
|
||||
platform. See bug 10877 for more information.
|
||||
As of GCC 3.3, binutils 2.13.1 or later is required for this platform.
|
||||
See bug 10877 for more information.
|
||||
|
||||
If you receive Signal 11 errors when building on GNU/Linux, then it
|
||||
is possible you have a hardware problem. Further information on this
|
||||
@ -1779,14 +1792,13 @@ can be found on www.bitwizard.nl.
|
||||
i?86-*-sco
|
||||
==========
|
||||
|
||||
Compilation with RCC is recommended. Also, it may be a good idea to
|
||||
Compilation with RCC is recommended. Also, it may be a good idea to
|
||||
link with GNU malloc instead of the malloc that comes with the system.
|
||||
|
||||
i?86-*-sco3.2v5*
|
||||
================
|
||||
|
||||
Use this for the SCO OpenServer Release 5 family of operating
|
||||
systems.
|
||||
Use this for the SCO OpenServer Release 5 family of operating systems.
|
||||
|
||||
Unlike earlier versions of GCC, the ability to generate COFF with
|
||||
this target is no longer provided.
|
||||
@ -1828,8 +1840,8 @@ for bootstrapping this version.
|
||||
i?86-*-udk
|
||||
==========
|
||||
|
||||
This target emulates the SCO Universal Development Kit and requires
|
||||
that package be installed. (If it is installed, you will have a
|
||||
This target emulates the SCO Universal Development Kit and requires that
|
||||
package be installed. (If it is installed, you will have a
|
||||
`/udk/usr/ccs/bin/cc' file present.) It's very much like the
|
||||
`i?86-*-unixware7*' target but is meant to be used when hosting on a
|
||||
system where UDK isn't the default compiler such as OpenServer 5 or
|
||||
@ -1858,7 +1870,7 @@ tools you may have installed.
|
||||
ia64-*-linux
|
||||
============
|
||||
|
||||
IA-64 processor (also known as IPF, or Itanium Processor Family)
|
||||
IA-64 processor (also known as IPF, or Itanium Processor Family)
|
||||
running GNU/Linux.
|
||||
|
||||
The toolchain is not completely finished, so requirements will
|
||||
@ -1880,9 +1892,9 @@ are expected.
|
||||
ia64-*-hpux*
|
||||
============
|
||||
|
||||
Building GCC on this target requires the GNU Assembler. The bundled
|
||||
HP assembler will not work. To prevent GCC from using the wrong
|
||||
assembler, the option `--with-gnu-as' may be necessary.
|
||||
Building GCC on this target requires the GNU Assembler. The bundled HP
|
||||
assembler will not work. To prevent GCC from using the wrong assembler,
|
||||
the option `--with-gnu-as' may be necessary.
|
||||
|
||||
The GCC libunwind library has not been ported to HPUX. This means
|
||||
that for GCC versions 3.2.3 and earlier, `--enable-libunwind-exceptions'
|
||||
@ -1891,7 +1903,7 @@ is required to build GCC. For GCC 3.3 and later, this is the default.
|
||||
*-lynx-lynxos
|
||||
=============
|
||||
|
||||
Support for SPARC LynxOS is obsoleted in GCC 3.3.
|
||||
Support for SPARC LynxOS is obsoleted in GCC 3.3.
|
||||
|
||||
LynxOS 2.2 and earlier comes with GCC 1.x already installed as
|
||||
`/bin/gcc'. You should compile with this instead of `/bin/cc'. You
|
||||
@ -1903,7 +1915,7 @@ installed tools, which produce `a.out' format executables.
|
||||
*-ibm-aix*
|
||||
==========
|
||||
|
||||
Support for AIX versions 1, 2, and 3 is obsoleted in GCC 3.3.
|
||||
Support for AIX versions 1, 2, and 3 is obsoleted in GCC 3.3.
|
||||
|
||||
AIX Make frequently has problems with GCC makefiles. GNU Make 3.76
|
||||
or newer is recommended to build on this platform.
|
||||
@ -2004,7 +2016,7 @@ using the configure option `--with-cpu-CPU_TYPE'.
|
||||
ip2k-*-elf
|
||||
==========
|
||||
|
||||
Ubicom IP2022 micro controller. This configuration is intended for
|
||||
Ubicom IP2022 micro controller. This configuration is intended for
|
||||
embedded systems. There are no standard Unix configurations.
|
||||
|
||||
Use `configure --target=ip2k-elf --enable-languages=c' to configure
|
||||
@ -2013,13 +2025,13 @@ GCC.
|
||||
m32r-*-elf
|
||||
==========
|
||||
|
||||
Renesas M32R processor. This configuration is intended for embedded
|
||||
Renesas M32R processor. This configuration is intended for embedded
|
||||
systems.
|
||||
|
||||
m68000-hp-bsd
|
||||
=============
|
||||
|
||||
Support for this system is obsoleted in GCC 3.3.
|
||||
Support for this system is obsoleted in GCC 3.3.
|
||||
|
||||
HP 9000 series 200 running BSD. Note that the C compiler that comes
|
||||
with this system cannot compile GCC; contact <law@cygnus.com> to get
|
||||
@ -2028,19 +2040,19 @@ binaries of GCC for bootstrapping.
|
||||
m6811-elf
|
||||
=========
|
||||
|
||||
Motorola 68HC11 family micro controllers. These are used in embedded
|
||||
Motorola 68HC11 family micro controllers. These are used in embedded
|
||||
applications. There are no standard Unix configurations.
|
||||
|
||||
m6812-elf
|
||||
=========
|
||||
|
||||
Motorola 68HC12 family micro controllers. These are used in embedded
|
||||
Motorola 68HC12 family micro controllers. These are used in embedded
|
||||
applications. There are no standard Unix configurations.
|
||||
|
||||
m68k-att-sysv
|
||||
=============
|
||||
|
||||
Support for this system is obsoleted in GCC 3.3.
|
||||
Support for this system is obsoleted in GCC 3.3.
|
||||
|
||||
AT&T 3b1, a.k.a. 7300 PC. This version of GCC cannot be compiled
|
||||
with the system C compiler, which is too buggy. You will need to get a
|
||||
@ -2051,7 +2063,7 @@ available from the OSU-CIS archive, at
|
||||
m68k-crds-unos
|
||||
==============
|
||||
|
||||
Support for this system is obsoleted in GCC 3.3.
|
||||
Support for this system is obsoleted in GCC 3.3.
|
||||
|
||||
Use `configure unos' for building on Unos.
|
||||
|
||||
@ -2087,9 +2099,9 @@ library and linking from that library.
|
||||
m68k-hp-hpux
|
||||
============
|
||||
|
||||
HP 9000 series 300 or 400 running HP-UX. HP-UX version 8.0 has a
|
||||
bug in the assembler that prevents compilation of GCC. This bug
|
||||
manifests itself during the first stage of compilation, while building
|
||||
HP 9000 series 300 or 400 running HP-UX. HP-UX version 8.0 has a bug in
|
||||
the assembler that prevents compilation of GCC. This bug manifests
|
||||
itself during the first stage of compilation, while building
|
||||
`libgcc2.a':
|
||||
|
||||
_floatdisf
|
||||
@ -2135,7 +2147,7 @@ script to look like:
|
||||
m68k-ncr-*
|
||||
==========
|
||||
|
||||
Support for this system is obsoleted in GCC 3.3.
|
||||
Support for this system is obsoleted in GCC 3.3.
|
||||
|
||||
On the Tower models 4N0 and 6N0, by default a process is not allowed
|
||||
to have more than one megabyte of memory. GCC cannot compile itself
|
||||
@ -2149,7 +2161,7 @@ line to the configuration file:
|
||||
m68k-sun
|
||||
========
|
||||
|
||||
Support for this system is obsoleted in GCC 3.3.
|
||||
Support for this system is obsoleted in GCC 3.3.
|
||||
|
||||
Sun 3. We do not provide a configuration file to use the Sun FPA by
|
||||
default, because programs that establish signal handlers for floating
|
||||
@ -2158,14 +2170,14 @@ point traps inherently cannot work with the FPA.
|
||||
m68k-sun-sunos4.1.1
|
||||
===================
|
||||
|
||||
Support for this system is obsoleted in GCC 3.3.
|
||||
Support for this system is obsoleted in GCC 3.3.
|
||||
|
||||
It is reported that you may need the GNU assembler on this platform.
|
||||
|
||||
mips-*-*
|
||||
========
|
||||
|
||||
If on a MIPS system you get an error message saying "does not have gp
|
||||
If on a MIPS system you get an error message saying "does not have gp
|
||||
sections for all it's [sic] sectons [sic]", don't worry about it. This
|
||||
happens whenever you use GAS with the MIPS linker, but there is not
|
||||
really anything wrong, and it is okay to use the output file. You can
|
||||
@ -2184,8 +2196,8 @@ expected in future releases.
|
||||
mips-sgi-irix5
|
||||
==============
|
||||
|
||||
This configuration has considerable problems, which will be fixed in
|
||||
a future release.
|
||||
This configuration has considerable problems, which will be fixed in a
|
||||
future release.
|
||||
|
||||
In order to compile GCC on an SGI running IRIX 5, the
|
||||
"compiler_dev.hdr" subsystem must be installed from the IDO CD-ROM
|
||||
@ -2224,10 +2236,10 @@ vendor supplied `make' program; however, you may have success with
|
||||
mips-sgi-irix6
|
||||
==============
|
||||
|
||||
If you are using IRIX `cc' as your bootstrap compiler, you must
|
||||
ensure that the N32 ABI is in use. To test this, compile a simple C
|
||||
file with `cc' and then run `file' on the resulting object file. The
|
||||
output should look like:
|
||||
If you are using IRIX `cc' as your bootstrap compiler, you must ensure
|
||||
that the N32 ABI is in use. To test this, compile a simple C file with
|
||||
`cc' and then run `file' on the resulting object file. The output
|
||||
should look like:
|
||||
|
||||
test.o: ELF N32 MSB ...
|
||||
|
||||
@ -2310,13 +2322,13 @@ IRIX platforms.
|
||||
powerpc-*-*
|
||||
===========
|
||||
|
||||
You can specify a default version for the `-mcpu=CPU_TYPE' switch by
|
||||
You can specify a default version for the `-mcpu=CPU_TYPE' switch by
|
||||
using the configure option `--with-cpu-CPU_TYPE'.
|
||||
|
||||
powerpc-*-darwin*
|
||||
=================
|
||||
|
||||
PowerPC running Darwin (Mac OS X kernel).
|
||||
PowerPC running Darwin (Mac OS X kernel).
|
||||
|
||||
Pre-installed versions of Mac OS X may not include any developer
|
||||
tools, meaning that you will not be able to build GCC from source. Tool
|
||||
@ -2339,69 +2351,69 @@ are generally specific to Mac programming.
|
||||
powerpc-*-elf, powerpc-*-sysv4
|
||||
==============================
|
||||
|
||||
PowerPC system in big endian mode, running System V.4.
|
||||
PowerPC system in big endian mode, running System V.4.
|
||||
|
||||
powerpc-*-linux-gnu*
|
||||
====================
|
||||
|
||||
You will need binutils 2.13.90.0.10 or newer for a working GCC.
|
||||
You will need binutils 2.13.90.0.10 or newer for a working GCC.
|
||||
|
||||
powerpc-*-netbsd*
|
||||
=================
|
||||
|
||||
PowerPC system in big endian mode running NetBSD. To build the
|
||||
PowerPC system in big endian mode running NetBSD. To build the
|
||||
documentation you will need Texinfo version 4.2 (NetBSD 1.5.1 included
|
||||
Texinfo version 3.12).
|
||||
|
||||
powerpc-*-eabiaix
|
||||
=================
|
||||
|
||||
Embedded PowerPC system in big endian mode with `-mcall-aix'
|
||||
selected as the default.
|
||||
Embedded PowerPC system in big endian mode with `-mcall-aix' selected as
|
||||
the default.
|
||||
|
||||
powerpc-*-eabisim
|
||||
=================
|
||||
|
||||
Embedded PowerPC system in big endian mode for use in running under
|
||||
the PSIM simulator.
|
||||
Embedded PowerPC system in big endian mode for use in running under the
|
||||
PSIM simulator.
|
||||
|
||||
powerpc-*-eabi
|
||||
==============
|
||||
|
||||
Embedded PowerPC system in big endian mode.
|
||||
Embedded PowerPC system in big endian mode.
|
||||
|
||||
powerpcle-*-elf, powerpcle-*-sysv4
|
||||
==================================
|
||||
|
||||
PowerPC system in little endian mode, running System V.4.
|
||||
PowerPC system in little endian mode, running System V.4.
|
||||
|
||||
powerpcle-*-eabisim
|
||||
===================
|
||||
|
||||
Embedded PowerPC system in little endian mode for use in running
|
||||
under the PSIM simulator.
|
||||
Embedded PowerPC system in little endian mode for use in running under
|
||||
the PSIM simulator.
|
||||
|
||||
powerpcle-*-eabi
|
||||
================
|
||||
|
||||
Embedded PowerPC system in little endian mode.
|
||||
Embedded PowerPC system in little endian mode.
|
||||
|
||||
s390-*-linux*
|
||||
=============
|
||||
|
||||
S/390 system running Linux for S/390.
|
||||
S/390 system running Linux for S/390.
|
||||
|
||||
s390x-*-linux*
|
||||
==============
|
||||
|
||||
zSeries system (64-bit) running Linux for zSeries.
|
||||
zSeries system (64-bit) running Linux for zSeries.
|
||||
|
||||
*-*-solaris2*
|
||||
=============
|
||||
|
||||
Sun does not ship a C compiler with Solaris 2. To bootstrap and
|
||||
install GCC you first have to install a pre-built compiler, see our
|
||||
binaries page for details.
|
||||
Sun does not ship a C compiler with Solaris 2. To bootstrap and install
|
||||
GCC you first have to install a pre-built compiler, see our binaries
|
||||
page for details.
|
||||
|
||||
The Solaris 2 `/bin/sh' will often fail to configure `libstdc++-v3',
|
||||
`boehm-gc' or `libjava'. We therefore recommend to use the following
|
||||
@ -2455,7 +2467,7 @@ defined by C89).
|
||||
sparc-sun-solaris2*
|
||||
===================
|
||||
|
||||
When GCC is configured to use binutils 2.11.2 or later the binaries
|
||||
When GCC is configured to use binutils 2.11.2 or later the binaries
|
||||
produced are smaller than the ones produced using Sun's native tools;
|
||||
this difference is quite significant for binaries containing debugging
|
||||
information.
|
||||
@ -2485,11 +2497,11 @@ target libraries.
|
||||
sparc-sun-solaris2.7
|
||||
====================
|
||||
|
||||
Sun patch 107058-01 (1999-01-13) for Solaris 7/SPARC triggers a bug
|
||||
in the dynamic linker. This problem (Sun bug 4210064) affects GCC 2.8
|
||||
and later, including all EGCS releases. Sun formerly recommended
|
||||
107058-01 for all Solaris 7 users, but around 1999-09-01 it started to
|
||||
recommend it only for people who use Sun's compilers.
|
||||
Sun patch 107058-01 (1999-01-13) for Solaris 7/SPARC triggers a bug in
|
||||
the dynamic linker. This problem (Sun bug 4210064) affects GCC 2.8 and
|
||||
later, including all EGCS releases. Sun formerly recommended 107058-01
|
||||
for all Solaris 7 users, but around 1999-09-01 it started to recommend
|
||||
it only for people who use Sun's compilers.
|
||||
|
||||
Here are some workarounds to this problem:
|
||||
* Do not install Sun patch 107058-01 until after Sun releases a
|
||||
@ -2527,7 +2539,7 @@ shared version of libgcc. A typical error message is:
|
||||
sparc-sun-sunos4*
|
||||
=================
|
||||
|
||||
Support for this system is obsoleted in GCC 3.3.
|
||||
Support for this system is obsoleted in GCC 3.3.
|
||||
|
||||
A bug in the SunOS 4 linker will cause it to crash when linking
|
||||
`-fPIC' compiled objects (and will therefore not allow you to build
|
||||
@ -2545,7 +2557,7 @@ or `genoutput' manually and then retrying the `make'.
|
||||
sparc-unknown-linux-gnulibc1
|
||||
============================
|
||||
|
||||
Support for this system is obsoleted in GCC 3.3.
|
||||
Support for this system is obsoleted in GCC 3.3.
|
||||
|
||||
It has been reported that you might need binutils 2.8.1.0.23 for
|
||||
this platform, too.
|
||||
@ -2553,15 +2565,15 @@ this platform, too.
|
||||
sparc-*-linux*
|
||||
==============
|
||||
|
||||
GCC versions 3.0 and higher require binutils 2.11.2 and glibc 2.2.4
|
||||
or newer on this platform. All earlier binutils and glibc releases
|
||||
GCC versions 3.0 and higher require binutils 2.11.2 and glibc 2.2.4 or
|
||||
newer on this platform. All earlier binutils and glibc releases
|
||||
mishandled unaligned relocations on `sparc-*-*' targets.
|
||||
|
||||
sparc64-*-solaris2*
|
||||
===================
|
||||
|
||||
The following compiler flags must be specified in the configure step
|
||||
in order to bootstrap this target with the Sun compiler:
|
||||
The following compiler flags must be specified in the configure step in
|
||||
order to bootstrap this target with the Sun compiler:
|
||||
|
||||
% CC="cc -xildoff -xarch=v9" SRCDIR/configure [OPTIONS] [TARGET]
|
||||
|
||||
@ -2571,12 +2583,12 @@ specifies the SPARC-V9 architecture to the Sun linker and assembler.
|
||||
sparcv9-*-solaris2*
|
||||
===================
|
||||
|
||||
This is a synonym for sparc64-*-solaris2*.
|
||||
This is a synonym for sparc64-*-solaris2*.
|
||||
|
||||
*-*-sysv*
|
||||
=========
|
||||
|
||||
On System V release 3, you may get this error message while linking:
|
||||
On System V release 3, you may get this error message while linking:
|
||||
|
||||
ld fatal: failed to write symbol name SOMETHING
|
||||
in strings table for file WHATEVER
|
||||
@ -2603,14 +2615,22 @@ which have bugs.
|
||||
vax-dec-ultrix
|
||||
==============
|
||||
|
||||
Don't try compiling with VAX C (`vcc'). It produces incorrect code
|
||||
in some cases (for example, when `alloca' is used).
|
||||
Don't try compiling with VAX C (`vcc'). It produces incorrect code in
|
||||
some cases (for example, when `alloca' is used).
|
||||
|
||||
x86_64-*-*, amd64-*-*
|
||||
=====================
|
||||
|
||||
GCC supports the x86-64 architecture implemented by the AMD64 processor
|
||||
(amd64-*-* is an alias for x86_64-*-*) on GNU/Linux, FreeBSD and NetBSD.
|
||||
On GNU/Linux the default is a bi-arch compiler which is able to generate
|
||||
both 64-bit x86-64 and 32-bit x86 code (via the `-m32' switch).
|
||||
|
||||
xtensa-*-elf
|
||||
============
|
||||
|
||||
This target is intended for embedded Xtensa systems using the
|
||||
`newlib' C library. It uses ELF but does not support shared objects.
|
||||
This target is intended for embedded Xtensa systems using the `newlib'
|
||||
C library. It uses ELF but does not support shared objects.
|
||||
Designed-defined instructions specified via the Tensilica Instruction
|
||||
Extension (TIE) language are only supported through inline assembly.
|
||||
|
||||
@ -2624,7 +2644,7 @@ replace the default header file.
|
||||
xtensa-*-linux*
|
||||
===============
|
||||
|
||||
This target is for Xtensa systems running GNU/Linux. It supports ELF
|
||||
This target is for Xtensa systems running GNU/Linux. It supports ELF
|
||||
shared objects and the GNU C library (glibc). It also generates
|
||||
position-independent code (PIC) regardless of whether the `-fpic' or
|
||||
`-fPIC' options are used. In other respects, this target is the same
|
||||
@ -2633,7 +2653,7 @@ as the `xtensa-*-elf' target.
|
||||
Microsoft Windows (32-bit)
|
||||
==========================
|
||||
|
||||
A port of GCC 2.95.2 and 3.x is included with the Cygwin environment.
|
||||
A port of GCC 2.95.2 and 3.x is included with the Cygwin environment.
|
||||
|
||||
Current (as of early 2001) snapshots of GCC will build under Cygwin
|
||||
without modification.
|
||||
@ -2644,9 +2664,9 @@ are no plans to make it do so.
|
||||
OS/2
|
||||
====
|
||||
|
||||
GCC does not currently support OS/2. However, Andrew Zabolotny has
|
||||
been working on a generic OS/2 port with pgcc. The current code can be
|
||||
found at http://www.goof.com/pcg/os2/.
|
||||
GCC does not currently support OS/2. However, Andrew Zabolotny has been
|
||||
working on a generic OS/2 port with pgcc. The current code can be found
|
||||
at http://www.goof.com/pcg/os2/.
|
||||
|
||||
An older copy of GCC 2.8.1 is included with the EMX tools available
|
||||
at ftp://ftp.leo.org/pub/comp/os/os2/leo/devtools/emx+gcc/.
|
||||
@ -2654,10 +2674,10 @@ at ftp://ftp.leo.org/pub/comp/os/os2/leo/devtools/emx+gcc/.
|
||||
Older systems
|
||||
=============
|
||||
|
||||
GCC contains support files for many older (1980s and early 1990s)
|
||||
Unix variants. For the most part, support for these systems has not
|
||||
been deliberately removed, but it has not been maintained for several
|
||||
years and may suffer from bitrot.
|
||||
GCC contains support files for many older (1980s and early 1990s) Unix
|
||||
variants. For the most part, support for these systems has not been
|
||||
deliberately removed, but it has not been maintained for several years
|
||||
and may suffer from bitrot.
|
||||
|
||||
Starting with GCC 3.1, each release has a list of "obsoleted"
|
||||
systems. Support for these systems is still present in that release,
|
||||
@ -2696,8 +2716,8 @@ the GCC texinfo manual.
|
||||
all ELF targets (SVR4, Solaris 2, etc.)
|
||||
=======================================
|
||||
|
||||
C++ support is significantly better on ELF targets if you use the
|
||||
GNU linker; duplicate copies of inlines, vtables and template
|
||||
C++ support is significantly better on ELF targets if you use the GNU
|
||||
linker; duplicate copies of inlines, vtables and template
|
||||
instantiations will be discarded automatically.
|
||||
|
||||
|
||||
@ -3698,7 +3718,7 @@ GNU Free Documentation License
|
||||
ADDENDUM: How to use this License for your documents
|
||||
====================================================
|
||||
|
||||
To use this License in a document you have written, include a copy of
|
||||
To use this License in a document you have written, include a copy of
|
||||
the License in the document and put the following copyright and license
|
||||
notices just after the title page:
|
||||
|
||||
@ -3760,100 +3780,101 @@ Concept Index
|
||||
|
||||
|
||||
Tag Table:
|
||||
Node: Top86
|
||||
Node: Installing GCC2254
|
||||
Node: Downloading the source3747
|
||||
Node: Configuration5347
|
||||
Ref: with-gnu-as18119
|
||||
Ref: with-as19391
|
||||
Ref: with-gnu-ld20352
|
||||
Node: Building34125
|
||||
Node: Testing43369
|
||||
Node: Final install48760
|
||||
Node: Binaries53446
|
||||
Node: Specific55194
|
||||
Ref: alpha*-*-*55477
|
||||
Ref: alpha*-dec-osf*55969
|
||||
Ref: alphaev5-cray-unicosmk*59654
|
||||
Ref: arc-*-elf60604
|
||||
Ref: arm-*-aout60707
|
||||
Ref: arm-*-elf61124
|
||||
Ref: arm*-*-linux-gnu61202
|
||||
Ref: avr61280
|
||||
Ref: c4x61963
|
||||
Ref: cris62564
|
||||
Ref: dos63549
|
||||
Ref: dsp16xx63875
|
||||
Ref: *-*-freebsd*63945
|
||||
Ref: h8300-hms66115
|
||||
Ref: hppa*-hp-hpux*66470
|
||||
Ref: hppa*-hp-hpux967819
|
||||
Ref: hppa*-hp-hpux1068399
|
||||
Ref: hppa*-hp-hpux1169110
|
||||
Ref: i370-*-*73760
|
||||
Ref: *-*-linux-gnu73900
|
||||
Ref: ix86-*-linux*aout74892
|
||||
Ref: ix86-*-linux*75105
|
||||
Ref: ix86-*-sco75422
|
||||
Ref: ix86-*-sco3.2v5*75589
|
||||
Ref: ix86-*-udk77837
|
||||
Ref: ia64-*-linux79204
|
||||
Ref: ia64-*-hpux*80195
|
||||
Ref: *-lynx-lynxos80627
|
||||
Ref: *-ibm-aix*81107
|
||||
Ref: ip2k-*-elf86135
|
||||
Ref: m32r-*-elf86369
|
||||
Ref: m68000-hp-bsd86474
|
||||
Ref: m6811-elf86733
|
||||
Ref: m6812-elf86886
|
||||
Ref: m68k-att-sysv87039
|
||||
Ref: m68k-crds-unos87402
|
||||
Ref: m68k-hp-hpux88866
|
||||
Ref: m68k-ncr-*90882
|
||||
Ref: m68k-sun91280
|
||||
Ref: m68k-sun-sunos4.1.191544
|
||||
Ref: mips-*-*91711
|
||||
Ref: mips-sgi-irix592575
|
||||
Ref: mips-sgi-irix694559
|
||||
Ref: powerpc*-*-*98348
|
||||
Ref: powerpc-*-darwin*98496
|
||||
Ref: powerpc-*-elf99444
|
||||
Ref: powerpc-*-linux-gnu*99566
|
||||
Ref: powerpc-*-netbsd*99677
|
||||
Ref: powerpc-*-eabiaix99876
|
||||
Ref: powerpc-*-eabisim100003
|
||||
Ref: powerpc-*-eabi100132
|
||||
Ref: powerpcle-*-elf100211
|
||||
Ref: powerpcle-*-eabisim100344
|
||||
Ref: powerpcle-*-eabi100480
|
||||
Ref: s390-*-linux*100566
|
||||
Ref: s390x-*-linux*100637
|
||||
Ref: *-*-solaris2*100723
|
||||
Ref: sparc-sun-solaris2*103181
|
||||
Ref: sparc-sun-solaris2.7104517
|
||||
Ref: sparc-sun-sunos4*106590
|
||||
Ref: sparc-unknown-linux-gnulibc1107257
|
||||
Ref: sparc-*-linux*107458
|
||||
Ref: sparc64-*-solaris2*107686
|
||||
Ref: sparcv9-*-solaris2*108065
|
||||
Ref: #*-*-sysv*108153
|
||||
Ref: vax-dec-ultrix109117
|
||||
Ref: xtensa-*-elf109272
|
||||
Ref: xtensa-*-linux*109954
|
||||
Ref: windows110295
|
||||
Ref: os2110622
|
||||
Ref: older110948
|
||||
Ref: elf_targets113076
|
||||
Node: Old113337
|
||||
Node: Configurations116712
|
||||
Node: Cross-Compiler120912
|
||||
Node: Steps of Cross122669
|
||||
Node: Configure Cross123794
|
||||
Node: Tools and Libraries124438
|
||||
Node: Cross Headers126884
|
||||
Node: Build Cross128899
|
||||
Node: VMS Install129866
|
||||
Node: GNU Free Documentation License139406
|
||||
Node: Concept Index161819
|
||||
Node: Top1717
|
||||
Node: Installing GCC2275
|
||||
Node: Downloading the source3768
|
||||
Node: Configuration5368
|
||||
Ref: with-gnu-as18138
|
||||
Ref: with-as19410
|
||||
Ref: with-gnu-ld20371
|
||||
Node: Building34928
|
||||
Node: Testing44160
|
||||
Node: Final install49539
|
||||
Node: Binaries54225
|
||||
Node: Specific55973
|
||||
Ref: alpha*-*-*56256
|
||||
Ref: alpha*-dec-osf*56745
|
||||
Ref: alphaev5-cray-unicosmk*60427
|
||||
Ref: arc-*-elf61374
|
||||
Ref: arm-*-aout61474
|
||||
Ref: arm-*-elf61888
|
||||
Ref: arm*-*-linux-gnu61963
|
||||
Ref: avr62038
|
||||
Ref: c4x62718
|
||||
Ref: cris63316
|
||||
Ref: dos64298
|
||||
Ref: dsp16xx64621
|
||||
Ref: *-*-freebsd*64688
|
||||
Ref: h8300-hms66855
|
||||
Ref: hppa*-hp-hpux*67207
|
||||
Ref: hppa*-hp-hpux968553
|
||||
Ref: hppa*-hp-hpux1069130
|
||||
Ref: hppa*-hp-hpux1169838
|
||||
Ref: i370-*-*74486
|
||||
Ref: *-*-linux-gnu74623
|
||||
Ref: ix86-*-linux*aout75612
|
||||
Ref: ix86-*-linux*75822
|
||||
Ref: ix86-*-sco76135
|
||||
Ref: ix86-*-sco3.2v5*76299
|
||||
Ref: ix86-*-udk78544
|
||||
Ref: ia64-*-linux79908
|
||||
Ref: ia64-*-hpux*80896
|
||||
Ref: *-lynx-lynxos81325
|
||||
Ref: *-ibm-aix*81802
|
||||
Ref: ip2k-*-elf86827
|
||||
Ref: m32r-*-elf87058
|
||||
Ref: m68000-hp-bsd87160
|
||||
Ref: m6811-elf87416
|
||||
Ref: m6812-elf87566
|
||||
Ref: m68k-att-sysv87716
|
||||
Ref: m68k-crds-unos88076
|
||||
Ref: m68k-hp-hpux89537
|
||||
Ref: m68k-ncr-*91550
|
||||
Ref: m68k-sun91945
|
||||
Ref: m68k-sun-sunos4.1.192206
|
||||
Ref: mips-*-*92370
|
||||
Ref: mips-sgi-irix593231
|
||||
Ref: mips-sgi-irix695212
|
||||
Ref: powerpc*-*-*98998
|
||||
Ref: powerpc-*-darwin*99143
|
||||
Ref: powerpc-*-elf100088
|
||||
Ref: powerpc-*-linux-gnu*100207
|
||||
Ref: powerpc-*-netbsd*100315
|
||||
Ref: powerpc-*-eabiaix100511
|
||||
Ref: powerpc-*-eabisim100635
|
||||
Ref: powerpc-*-eabi100761
|
||||
Ref: powerpcle-*-elf100837
|
||||
Ref: powerpcle-*-eabisim100967
|
||||
Ref: powerpcle-*-eabi101100
|
||||
Ref: s390-*-linux*101183
|
||||
Ref: s390x-*-linux*101251
|
||||
Ref: *-*-solaris2*101334
|
||||
Ref: sparc-sun-solaris2*103789
|
||||
Ref: sparc-sun-solaris2.7105122
|
||||
Ref: sparc-sun-sunos4*107192
|
||||
Ref: sparc-unknown-linux-gnulibc1107856
|
||||
Ref: sparc-*-linux*108054
|
||||
Ref: sparc64-*-solaris2*108279
|
||||
Ref: sparcv9-*-solaris2*108655
|
||||
Ref: #*-*-sysv*108740
|
||||
Ref: vax-dec-ultrix109701
|
||||
Ref: x86_64-*-*109853
|
||||
Ref: xtensa-*-elf110181
|
||||
Ref: xtensa-*-linux*110860
|
||||
Ref: windows111198
|
||||
Ref: os2111522
|
||||
Ref: older111845
|
||||
Ref: elf_targets113970
|
||||
Node: Old114228
|
||||
Node: Configurations117603
|
||||
Node: Cross-Compiler121803
|
||||
Node: Steps of Cross123560
|
||||
Node: Configure Cross124685
|
||||
Node: Tools and Libraries125329
|
||||
Node: Cross Headers127775
|
||||
Node: Build Cross129790
|
||||
Node: VMS Install130757
|
||||
Node: GNU Free Documentation License140297
|
||||
Node: Concept Index162707
|
||||
|
||||
End Tag Table
|
||||
|
1225
gnu/dist/gcc/gcc/doc/gccint.info
vendored
1225
gnu/dist/gcc/gcc/doc/gccint.info
vendored
File diff suppressed because it is too large
Load Diff
4
gnu/dist/gcc/gcc/f/ChangeLog
vendored
4
gnu/dist/gcc/gcc/f/ChangeLog
vendored
@ -1,3 +1,7 @@
|
||||
2004-02-14 Release Manager
|
||||
|
||||
* GCC 3.3.3 Released.
|
||||
|
||||
2004-01-14 Ian Lance Taylor <ian@wasabisystems.com>
|
||||
|
||||
* README: Remove.
|
||||
|
690
gnu/dist/gcc/gcc/f/g77.1
vendored
690
gnu/dist/gcc/gcc/f/g77.1
vendored
File diff suppressed because it is too large
Load Diff
3359
gnu/dist/gcc/gcc/f/g77.info
vendored
3359
gnu/dist/gcc/gcc/f/g77.info
vendored
File diff suppressed because it is too large
Load Diff
4
gnu/dist/gcc/gcc/intl/ChangeLog
vendored
4
gnu/dist/gcc/gcc/intl/ChangeLog
vendored
@ -1,3 +1,7 @@
|
||||
2004-02-14 Release Manager
|
||||
|
||||
* GCC 3.3.3 Released.
|
||||
|
||||
2003-10-16 Release Manager
|
||||
|
||||
* GCC 3.3.2 Released.
|
||||
|
8
gnu/dist/gcc/gcc/po/ChangeLog
vendored
8
gnu/dist/gcc/gcc/po/ChangeLog
vendored
@ -1,3 +1,11 @@
|
||||
2004-02-14 Release Manager
|
||||
|
||||
* GCC 3.3.3 Released.
|
||||
|
||||
2004-02-13 Gabriel Dos Reis <gdr@integrable-solutions.net>
|
||||
|
||||
* ca.po: New file.
|
||||
|
||||
2004-02-04 Matthias Klose <doko@debian.org>
|
||||
|
||||
* de.po: Update.
|
||||
|
BIN
gnu/dist/gcc/gcc/po/ca.gmo
vendored
Normal file
BIN
gnu/dist/gcc/gcc/po/ca.gmo
vendored
Normal file
Binary file not shown.
20826
gnu/dist/gcc/gcc/po/ca.po
vendored
Normal file
20826
gnu/dist/gcc/gcc/po/ca.po
vendored
Normal file
File diff suppressed because it is too large
Load Diff
4
gnu/dist/gcc/gcc/testsuite/ChangeLog
vendored
4
gnu/dist/gcc/gcc/testsuite/ChangeLog
vendored
@ -1,3 +1,7 @@
|
||||
2004-02-14 Release Manager
|
||||
|
||||
* GCC 3.3.3 Released.
|
||||
|
||||
2004-02-05 Giovanni Bajo <giovannibajo@gcc.gnu.org>
|
||||
|
||||
PR c++/13086
|
||||
|
Loading…
Reference in New Issue
Block a user