aboutsummaryrefslogtreecommitdiff
path: root/gcc/doc/install.texi
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/doc/install.texi')
-rw-r--r--gcc/doc/install.texi677
1 files changed, 410 insertions, 267 deletions
diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi
index fd518693f5a..978d34ac551 100644
--- a/gcc/doc/install.texi
+++ b/gcc/doc/install.texi
@@ -40,7 +40,7 @@
@end ifset
@c Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-@c 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+@c 1999, 2000, 2001, 2002, 2004 Free Software Foundation, Inc.
@c *** Converted to texinfo by Dean Wakerley, dean@wakerley.com
@c Include everything if we're not making html
@@ -58,12 +58,12 @@
@end ifnothtml
@c Part 2 Summary Description and Copyright
-@macro copyrightnotice
+@copying
Copyright @copyright{} 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
@sp 1
Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1 or
+under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no
Invariant Sections, the Front-Cover texts being (a) (see below), and
with the Back-Cover Texts being (b) (see below). A copy of the
@@ -79,9 +79,9 @@ Free Documentation License}''.
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
funds for GNU development.
-@end macro
+@end copying
@ifinfo
-@copyrightnotice{}
+@insertcopying
@end ifinfo
@c Part 3 Titlepage and Copyright
@@ -93,7 +93,7 @@ Free Documentation License}''.
@c The following two commands start the copyright page.
@page
@vskip 0pt plus 1filll
-@copyrightnotice{}
+@insertcopying
@end titlepage
@c Part 4 Top node and Master Menu
@@ -197,7 +197,7 @@ not yet been merged into the main part of this manual.
@ifhtml
@uref{./index.html,,Return to the GCC Installation page}
-@copyrightnotice{}
+@insertcopying
@end ifhtml
@end ifset
@@ -281,7 +281,7 @@ file system, the shell's built-in @command{pwd} command will return
temporary pathnames. Using these can lead to various sorts of build
problems. To avoid this issue, set the @env{PWDCMD} environment
variable to an automounter-aware @command{pwd} command, e.g.,
-@command{pawd} or @command{amq -w}, during the configuration and build
+@command{pawd} or @samp{amq -w}, during the configuration and build
phases.
First, we @strong{highly} recommend that GCC be built into a
@@ -346,7 +346,7 @@ implies that the host defaults to @var{target}.
@heading Options specification
Use @var{options} to override several configure time options for
-GCC@. A list of supported @var{options} follows; @command{configure
+GCC@. A list of supported @var{options} follows; @samp{configure
--help} may list other options, but those not listed below may not
work and should not normally be used.
@@ -358,7 +358,10 @@ other than the default. The toplevel installation directory defaults to
@file{/usr/local}.
We @strong{highly} recommend against @var{dirname} being the same or a
-subdirectory of @var{objdir} or vice versa.
+subdirectory of @var{objdir} or vice versa. If specifying a directory
+beneath a user's home directory tree, some shells will not expand
+@var{dirname} correctly if it contains the @samp{~} metacharacter; use
+@env{$HOME} instead.
These additional options control where certain parts of the distribution
are installed. Normally you should not need to use these options.
@@ -391,8 +394,7 @@ data files referenced by GCC@. The default is @file{@var{prefix}/share}.
@item --mandir=@var{dirname}
Specify the installation directory for manual pages. The default is
@file{@var{prefix}/man}. (Note that the manual pages are only extracts from
-the full GCC manuals, which are provided in Texinfo format. The
-@command{g77} manpage is unmaintained and may be out of date; the others
+the full GCC manuals, which are provided in Texinfo format. The manpages
are derived by an automatic conversion process from parts of the full
manual.)
@@ -555,27 +557,25 @@ The following systems are the only ones where it makes a difference
whether you use the GNU assembler. On any other system,
@option{--with-gnu-as} has no effect.
-@itemize bullet
+@itemize @bullet
@item @samp{hppa1.0-@var{any}-@var{any}}
@item @samp{hppa1.1-@var{any}-@var{any}}
@item @samp{i386-@var{any}-sysv}
-@item @samp{i386-@var{any}-isc}
-@item @samp{i860-@var{any}-bsd}
@item @samp{m68k-bull-sysv}
@item @samp{m68k-hp-hpux}
-@item @samp{m68k-sony-bsd}
-@item @samp{m68k-altos-sysv}
@item @samp{m68000-hp-hpux}
@item @samp{m68000-att-sysv}
@item @samp{@var{any}-lynx-lynxos}
@item @samp{mips-@var{any}}
+@item @samp{sparc-sun-solaris2.@var{any}}
+@item @samp{sparc64-@var{any}-solaris2.@var{any}}
@end itemize
-On the systems listed above (except for the HP-PA, for ISC on the
-386, and for @samp{mips-sgi-irix5.*}), if you use the GNU assembler,
+On the systems listed above (except for the HP-PA, the SPARC, for ISC on
+the 386, and for @samp{mips-sgi-irix5.*}), if you use the GNU assembler,
you should also use the GNU linker (and specify @option{--with-gnu-ld}).
-@item --with-as=@var{pathname}
+@item @anchor{with-as}--with-as=@var{pathname}
Specify that the
compiler should use the assembler pointed to by @var{pathname}, rather
than the one found by the standard rules to find an assembler, which
@@ -600,12 +600,11 @@ and want to choose one that is not found by the above rules.
@item @anchor{with-gnu-ld}--with-gnu-ld
Same as @uref{#with-gnu-as,,@option{--with-gnu-as}}
-but for linker.
-
+but for the linker.
@item --with-ld=@var{pathname}
-Same as
-@option{--with-as}, but for the linker.
+Same as @uref{#with-as,,@option{--with-as}}
+but for the linker.
@item --with-stabs
Specify that stabs debugging
@@ -720,8 +719,8 @@ Specify which cpu variant the
compiler should generate code for by default. This is currently
only supported on some ports, specifically arm, powerpc, and
SPARC@. If configure does not recognize the model name (e.g.@: arm700,
-603e, or ultrasparc) you provide, please check the configure script
-for a complete list of supported models.
+603e, or ultrasparc) you provide, please check the
+@file{gcc/config.gcc} script for a complete list of supported models.
@item --enable-altivec
Specify that the target supports AltiVec vector enhancements. This
@@ -822,8 +821,8 @@ option. This option has no effect on the other hosts.
@item --nfp
Specify that the machine does not have a floating point unit. This
-option only applies to @samp{m68k-sun-sunos@var{n}} and
-@samp{m68k-isi-bsd}. On any other system, @option{--nfp} has no effect.
+option only applies to @samp{m68k-sun-sunos@var{n}}. On any other
+system, @option{--nfp} has no effect.
@item --enable-checking
@itemx --enable-checking=@var{list}
@@ -835,13 +834,15 @@ compiler and may only work properly if you are building the compiler
with GCC@. This is on by default when building from CVS or snapshots,
but off for releases. More control over the checks may be had by
specifying @var{list}; the categories of checks available are
-@samp{misc}, @samp{tree}, @samp{gc}, @samp{rtl}, @samp{rtlflag} and
-@samp{gcac}. The
-default when @var{list} is not specified is @samp{misc,tree,gc,rtlflag}; the
-checks @samp{rtl} and @samp{gcac} are very expensive.
+@samp{misc}, @samp{tree}, @samp{gc}, @samp{rtl}, @samp{rtlflag},
+@samp{gcac} and @samp{valgrind}. The check @samp{valgrind} requires the
+external @command{valgrind} simulator, available from
+@uref{http://developer.kde.org/~sewardj/}. The default when @var{list} is
+not specified is @samp{misc,tree,gc,rtlflag}; the checks @samp{rtl},
+@samp{gcac} and @samp{valgrind} are very expensive.
@item --enable-coverage
-@item --enable-coverage=@var{level}
+@itemx --enable-coverage=@var{level}
With this option, the compiler is built to collect self coverage
information, every time it is run. This is for internal development
purposes, and only works when the compiler is being built with gcc. The
@@ -890,8 +891,22 @@ forward to maintain the port.
Some options which only apply to building cross compilers:
@table @code
+@item --with-sysroot
+@itemx --with-sysroot=@var{dir}
+Tells GCC to consider @var{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 @option{--with-headers} and
+@option{--with-libs} that this option obsoletes. The default value,
+in case @option{--with-sysroot} is not given an argument, is
+@option{$@{gcc_tooldir@}/sys-root}. If the specified directory is a
+subdirectory of @option{$@{exec_prefix@}}, then it will be found relative to
+the GCC binaries if the installation tree is moved.
+
@item --with-headers
@itemx --with-headers=@var{dir}
+Deprecated in favor of @option{--with-sysroot}.
Specifies that target headers are available when building a cross compiler.
The @var{dir} argument specifies a directory which has the target include
files. These include files will be copied into the @file{gcc} install
@@ -902,6 +917,7 @@ pre-exist, the @var{dir} argument may be omitted. @command{fixincludes}
will be run on these files to make them compatible with GCC.
@item --with-libs
@itemx --with-libs=``@var{dir1} @var{dir2} @dots{} @var{dirN}''
+Deprecated in favor of @option{--with-sysroot}.
Specifies a list of directories which contain the target runtime
libraries. These libraries will be copied into the @file{gcc} install
directory. If the directory list is omitted, this option has no
@@ -951,7 +967,7 @@ Other broken versions may recompile parts of the compiler when
installing the compiler.)
Some commands executed when making the compiler may fail (return a
-nonzero status) and be ignored by @code{make}. These failures, which
+nonzero status) and be ignored by @command{make}. These failures, which
are often due to files that were not found, are expected, and can safely
be ignored.
@@ -983,7 +999,7 @@ parser sources, releases contain the Bison-generated files and you do
not need Bison installed to build them.
When building from CVS or snapshots, or if you modify Texinfo
-documentation, you need version 4.1 or later of Texinfo installed if you
+documentation, you need version 4.2 or later of Texinfo installed if you
want Info documentation to be regenerated. Releases contain Info
documentation pre-built for the unmodified documentation in the release.
@@ -1097,12 +1113,13 @@ Note that if an error occurs in any step the make process will exit.
@section Building in parallel
-If you have a multiprocessor system you can use @samp{make bootstrap
-MAKE="make -j 2" -j 2} or just @samp{make -j 2 bootstrap}
-for GNU Make 3.79 and above instead of just @samp{make bootstrap}
-when building GCC@. You can use a bigger number instead of two if
-you like. In most cases, it won't help to use a number bigger than
-the number of processors in your machine.
+You can use @samp{make bootstrap MAKE="make -j 2" -j 2}, or just
+@samp{make -j 2 bootstrap} for GNU Make 3.79 and above, instead of
+@samp{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 and network filesystems.
@section Building the Ada compiler
@@ -1185,6 +1202,9 @@ Before you install GCC, we encourage you to run the testsuites and to
compare your results with results from a similar configuration that have
been submitted to the
@uref{http://gcc.gnu.org/ml/gcc-testresults/,,gcc-testresults mailing list}.
+Some of these archived results are linked from the build status lists
+at @uref{http://gcc.gnu.org/buildstat.html}, although not everyone who
+reports a successful build runs the testsuites and submits the results.
This step is optional and may require you to download additional software,
but it can give you confidence in your new GCC installation or point out
problems before you install and start using your new GCC.
@@ -1195,68 +1215,57 @@ These are part of the full distribution, but if you downloaded the
separately.
Second, you must have the testing tools installed. This includes
-a @uref{http://www.gnu.org/software/dejagnu/,,current version of DejaGnu};
-dejagnu 1.3 is not sufficient.
-It also includes Tcl and Expect; the DejaGnu site has links to these.
-
-Now you may need specific preparations:
+@uref{http://www.gnu.org/software/dejagnu/,,DejaGnu} 1.4.1 or 1.4.3
+and later, Tcl, and Expect; the DejaGnu site has links to these.
-@itemize @bullet
-
-@item
-The following environment variables may need to be set appropriately, as in
-the following example (which assumes that DejaGnu has been installed
-under @file{/usr/local}):
+If the directories where @command{runtest} and @command{expect} were
+installed are not in the @env{PATH}, you may need to set the following
+environment variables appropriately, as in the following example (which
+assumes that DejaGnu has been installed under @file{/usr/local}):
@example
TCL_LIBRARY = /usr/local/share/tcl8.0
DEJAGNULIBS = /usr/local/share/dejagnu
@end example
-On systems such as Cygwin, these paths are required to be actual
+(On systems such as Cygwin, these paths are required to be actual
paths, not mounts or links; presumably this is due to some lack of
-portability in the DejaGnu code.
-
-If the directories where @command{runtest} and @command{expect} were
-installed are in the @env{PATH}, it should not be necessary to set these
-environment variables.
+portability in the DejaGnu code.)
-@end itemize
Finally, you can run the testsuite (which may take a long time):
@example
cd @var{objdir}; make -k check
@end example
-The testing process will try to test as many components in the GCC
-distribution as possible, including the C, C++, Objective-C and Fortran
-compilers as well as the C++ and Java runtime libraries.
-
-While running the testsuite, DejaGnu might emit messages resembling
+This will test various components of GCC, such as compiler
+front ends and runtime libraries. While running the testsuite, DejaGnu
+might emit some harmless messages resembling
@samp{WARNING: Couldn't find the global config file.} or
-@samp{WARNING: Couldn't find tool init file}.
-These messages are harmless and do not affect the validity of the tests.
+@samp{WARNING: Couldn't find tool init file} that can be ignored.
@section How can I run the test suite on selected tests?
-As a first possibility to cut down the number of tests that are run it is
-possible to use @samp{make check-gcc} or @samp{make check-g++}
-in the @file{gcc} subdirectory of the object directory. To further cut down the
-tests the following is possible:
+In order to run sets of tests selectively, there are targets
+@samp{make check-gcc} and @samp{make check-g++}
+in the @file{gcc} subdirectory of the object directory. You can also
+just run @samp{make check} in a subdirectory of the object directory.
+
+
+A more selective way to just run all @command{gcc} execute tests in the
+testsuite is to use
@example
make check-gcc RUNTESTFLAGS="execute.exp @var{other-options}"
@end example
-This will run all @command{gcc} execute tests in the testsuite.
+Likewise, in order to run only the @command{g++} ``old-deja'' tests in
+the testsuite with filenames matching @samp{9805*}, you would use
@example
make check-g++ RUNTESTFLAGS="old-deja.exp=9805* @var{other-options}"
@end example
-This will run the @command{g++} ``old-deja'' tests in the testsuite where the filename
-matches @samp{9805*}.
-
The @file{*.exp} files are located in the testsuite directories of the GCC
source, the most important ones being @file{compile.exp},
@file{execute.exp}, @file{dg.exp} and @file{old-deja.exp}.
@@ -1264,9 +1273,9 @@ To get a list of the possible @file{*.exp} files, pipe the
output of @samp{make check} into a file and look at the
@samp{Running @dots{} .exp} lines.
-To run only the tests for a library, run @samp{make check} from the
-the library's testsuite in a subdirectory of the object directory:
-@file{libstdc++-v3/testsuite} or @file{libcgj/testsuite}.
+The Java runtime tests can be executed via @samp{make check}
+in the @file{@var{target}/libjava/testsuite} directory in
+the build tree.
@section Additional testing for Java Class Libraries
@@ -1277,13 +1286,18 @@ testsuite at @file{libjava/testsuite/libjava.mauve/mauve}, or by
specifying the location of that tree when invoking @samp{make}, as in
@samp{make MAUVEDIR=~/mauve check}.
+@uref{http://www-124.ibm.com/developerworks/oss/cvs/jikes/~checkout~/jacks/jacks.html,,Jacks}
+is a free test suite that tests Java compiler front ends. This suite
+can be run as part of libgcj testing by placing the Jacks tree within
+the libjava testsuite at @file{libjava/testsuite/libjava.jacks/jacks}.
+
@section How to interpret test results
-After the testsuite has run you'll find various @file{*.sum} and @file{*.log}
+The result of running the testsuite are various @file{*.sum} and @file{*.log}
files in the testsuite subdirectories. The @file{*.log} files contain a
detailed log of the compiler invocations and the corresponding
-results, the @file{*.sum} files summarize the results. These summaries list
-all the tests that have been run with a corresponding status code:
+results, the @file{*.sum} files summarize the results. These summaries
+contain status codes for all tests:
@itemize @bullet
@item
@@ -1323,12 +1337,7 @@ make sure it is in your @env{PATH}. The file @file{your_commentary.txt} is
prepended to the testsuite summary and should contain any special
remarks you have on your results or your build environment. Please
do not edit the testsuite result block or the subject line, as these
-messages are automatically parsed and presented at the
-@uref{http://gcc.gnu.org/testresults/,,GCC testresults} web
-page. Here you can also gather information on how specific tests
-behave on different platforms and compare them with your results. A
-few failing testcases are possible even on released versions and you
-should look here first if you think your results are unreasonable.
+messages may be automatically processed.
@html
<hr />
@@ -1368,6 +1377,34 @@ in @file{@var{libdir}} (normally @file{@var{prefix}/lib}); internal
parts of the compiler in @file{@var{libdir}/gcc-lib}; documentation in
info format in @file{@var{infodir}} (normally @file{@var{prefix}/info}).
+When installing cross-compilers, GCC's executables
+are not only installed into @file{@var{bindir}}, that
+is, @file{@var{exec-prefix}/bin}, but additionally into
+@file{@var{exec-prefix}/@var{target-alias}/bin}, if that directory
+exists. Typically, such @dfn{tooldirs} hold target-specific
+binutils, including assembler and linker.
+
+Installation into a temporary staging area or into a @command{chroot}
+jail can be achieved with the command
+
+@example
+make DESTDIR=@var{path-to-rootdir} install
+@end example
+
+@noindent where @var{path-to-rootdir} is the absolute path of
+a directory relative to which all installation paths will be
+interpreted. Note that the directory specified by @code{DESTDIR}
+need not exist yet; it will be created if necessary.
+
+There is a subtle point with tooldirs and @code{DESTDIR}:
+If you relocate a cross-compiler installation with
+e.g.@: @samp{DESTDIR=@var{rootdir}}, then the directory
+@file{@var{rootdir}/@var{exec-prefix}/@var{target-alias}/bin} will
+be filled with duplicated GCC executables only if it already exists,
+it will not be created otherwise. This is regarded as a feature,
+not as a bug, because it gives slightly more control to the packagers
+using the @code{DESTDIR} feature.
+
If you built a released version of GCC using @samp{make bootstrap} then please
quickly review the build status page for your release, available from
@uref{http://gcc.gnu.org/buildstat.html}.
@@ -1434,7 +1471,7 @@ If you find a bug, please report it following our
@uref{../bugs.html,,bug reporting guidelines}.
If you want to print the GCC manuals, do @samp{cd @var{objdir}; make
-dvi}. You will need to have @command{texi2dvi} (version at least 4.1)
+dvi}. You will need to have @command{texi2dvi} (version at least 4.2)
and @TeX{} installed. This creates a number of @file{.dvi} files in
subdirectories of @file{@var{objdir}}; these may be converted for
printing with programs such as @command{dvips}. You can also
@@ -1487,8 +1524,8 @@ AIX:
DOS---@uref{http://www.delorie.com/djgpp/,,DJGPP}.
@item
-Hitachi H8/300[HS]---@uref{http://h8300-hms.sourceforge.net/,,GNU
-Development Tools for the Hitachi H8/300[HS] Series}.
+Renesas H8/300[HS]---@uref{http://h8300-hms.sourceforge.net/,,GNU
+Development Tools for the Renesas H8/300[HS] Series}.
@item
HP-UX:
@@ -1501,11 +1538,15 @@ HP-UX:
@end itemize
@item
+Motorola 68HC11/68HC12---@uref{http://www.gnu-m68hc11.org,,GNU
+Development Tools for the Motorola 68HC11/68HC12}.
+
+@item
@uref{http://www.sco.com/skunkware/devtools/index.html#gcc,,SCO
OpenServer/Unixware}.
@item
-Sinix/Reliant Unix---@uref{ftp://ftp.siemens.de/sni/mr/pd/gnu/gcc,,Siemens}.
+Sinix/Reliant Unix---@uref{ftp://ftp.fujitsu-siemens.com/pub/pd/gnu/gcc/,,Siemens}.
@item
Solaris 2 (SPARC, Intel)---@uref{http://www.sunfreeware.com/,,Sunfreeware}.
@@ -1514,7 +1555,7 @@ Solaris 2 (SPARC, Intel)---@uref{http://www.sunfreeware.com/,,Sunfreeware}.
SGI---@uref{http://freeware.sgi.com/,,SGI Freeware}.
@item
-Windows 95, 98, and NT:
+Microsoft Windows:
@itemize
@item
The @uref{http://sources.redhat.com/cygwin/,,Cygwin} project;
@@ -1523,10 +1564,14 @@ The @uref{http://www.mingw.org/,,MinGW} project.
@end itemize
@item
-@uref{ftp://ftp.thewrittenword.com/packages/free/by-name/,,The
-Written Word} offers binaries for Solaris 2.5.1, 2.6, 2.7/SPARC, 2.7/Intel,
-IRIX 6.2, 6.5, Digital UNIX 4.0D, HP-UX 10.20, and HP-UX 11.00.
-
+@uref{ftp://ftp.thewrittenword.com/packages/by-name/,,The
+Written Word} offers binaries for
+AIX 4.3.2.
+IRIX 6.5,
+Digital UNIX 4.0D and 5.1,
+GNU/Linux (i386),
+HP-UX 10.20, 11.00, and 11.11, and
+Solaris/SPARC 2.5.1, 2.6, 2.7, 8, and 9,
@end itemize
In addition to those specific offerings, you can get a binary
@@ -1622,6 +1667,8 @@ GNU Compiler Collection on your machine.
@item
@uref{#ia64-*-linux,,ia64-*-linux}
@item
+@uref{#ia64-*-hpux*,,ia64-*-hpux*}
+@item
@uref{#*-lynx-lynxos,,*-lynx-lynxos}
@item
@uref{#*-ibm-aix*,,*-ibm-aix*}
@@ -1676,8 +1723,6 @@ GNU Compiler Collection on your machine.
@item
@uref{#powerpcle-*-eabi,,powerpcle-*-eabi}
@item
-@uref{#powerpcle-*-winnt,,powerpcle-*-winnt, powerpcle-*-pe}
-@item
@uref{#s390-*-linux*,,s390-*-linux*}
@item
@uref{#s390x-*-linux*,,s390x-*-linux*}
@@ -1694,7 +1739,7 @@ GNU Compiler Collection on your machine.
@item
@uref{#sparc-*-linux*,,sparc-*-linux*}
@item
-@uref{#sparc64-*-*,,sparc64-*-*}
+@uref{#sparc64-*-solaris2*,,sparc64-*-solaris2*}
@item
@uref{#sparcv9-*-solaris2*,,sparcv9-*-solaris2*}
@item
@@ -1702,6 +1747,8 @@ GNU Compiler Collection on your machine.
@item
@uref{#vax-dec-ultrix,,vax-dec-ultrix}
@item
+@uref{#x86_64-*-*,,x86_64-*-*, amd64-*-*}
+@item
@uref{#xtensa-*-elf,,xtensa-*-elf}
@item
@uref{#xtensa-*-linux*,,xtensa-*-linux*}
@@ -1792,7 +1839,7 @@ target in an integral value on the host cannot be performed. Building
cross-compilers on the Alpha for 32-bit machines has only been tested in
a few cases and may not work properly.
-@code{make compare} may fail on old versions of DEC Unix unless you add
+@samp{make compare} may fail on old versions of DEC Unix unless you add
@option{-save-temps} to @code{CFLAGS}. On these systems, the name of the
assembler input file is stored in the object file, and that makes
comparison fail if it differs between the @code{stage1} and
@@ -1858,6 +1905,8 @@ This configuration is intended for embedded systems.
<hr />
@end html
@heading @anchor{arm-*-aout}arm-*-aout
+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.
This configuration corresponds to the basic instruction sequences and will
@@ -1904,9 +1953,9 @@ can also be obtained from:
@item
@uref{http://www.openavr.org,,http://www.openavr.org}
@item
-@uref{http://home.overta.ru/users/denisc,,http://home.overta.ru/users/denisc}
+@uref{http://home.overta.ru/users/denisc/,,http://home.overta.ru/users/denisc/}
@item
-@uref{http://www.amelek.gda.pl/avr,,http://www.amelek.gda.pl/avr}
+@uref{http://www.amelek.gda.pl/avr/,,http://www.amelek.gda.pl/avr/}
@end itemize
We @emph{strongly} recommend using binutils 2.13 or newer.
@@ -2013,7 +2062,7 @@ The version of binutils installed in @file{/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.
-FreeBSD 1 is no longer supported in GCC 3.2.
+Support for FreeBSD 1 was discontinued in GCC 3.2.
For FreeBSD 2 or any mutant a.out versions of FreeBSD 3: All
configuration support and files as shipped with GCC 2.95 are still in
@@ -2031,22 +2080,19 @@ of the configuration used in the stock FreeBSD configuration of GCC. In
particular, @option{--enable-threads} is now configured by default.
However, as a general user, do not attempt to replace the system
compiler with this release. Known to bootstrap and check with good
-results on FreeBSD 3.0, 3.4, 4.0, 4.2, 4.3, 4.4, 4.5-STABLE and 5-CURRENT@.
+results on FreeBSD 4.8-STABLE and 5-CURRENT@. In the past, known to
+bootstrap and check with good results on FreeBSD 3.0, 3.4, 4.0, 4.2,
+4.3, 4.4, 4.5-STABLE@.
In principle, @option{--enable-threads} is now compatible with
@option{--enable-libgcj} on FreeBSD@. However, it has only been built
-and tested on @samp{i386-*-freebsd4.5} and @samp{alpha-*-freebsd5.0}.
+and tested on @samp{i386-*-freebsd[45]} and @samp{alpha-*-freebsd[45]}.
The static
library may be incorrectly built (symbols are missing at link time).
There is a rare timing-based startup hang (probably involves an
-assupmtion about the thread library). Multi-threaded boehm-gc (required for
+assumption about the thread library). Multi-threaded boehm-gc (required for
libjava) exposes severe threaded signal-handling bugs on FreeBSD before
-4.5-RELEASE. The alpha port may not fully bootstrap without some manual
-intervention: @command{gcjh} will crash with a floating-point exception while
-generating @file{java/lang/Double.h} (just copy the version built on
-@samp{i386-*-freebsd*} and rerun the top-level @command{gmake} with no
-arguments and it
-should properly complete the bootstrap). Other CPU architectures
+4.5-RELEASE@. Other CPU architectures
supported by FreeBSD will require additional configuration tuning in, at
the very least, both boehm-gc and libffi.
@@ -2056,7 +2102,7 @@ Shared @file{libgcc_s.so} is now built and installed by default.
<hr />
@end html
@heading @anchor{h8300-hms}h8300-hms
-Hitachi H8/300 series of processors.
+Renesas H8/300 series of processors.
Please have a look at our @uref{binaries.html,,binaries page}.
@@ -2069,6 +2115,7 @@ longer a multiple of 2 bytes.
<hr />
@end html
@heading @anchor{hppa*-hp-hpux*}hppa*-hp-hpux*
+Support for HP-UX versions 7, 8, and 9 is obsoleted in GCC 3.3.
We @emph{highly} recommend using gas/binutils 2.8 or newer on all hppa
platforms; you may encounter a variety of problems when using the HP
@@ -2103,6 +2150,7 @@ More specific information to @samp{hppa*-hp-hpux*} targets follows.
<hr />
@end html
@heading @anchor{hppa*-hp-hpux9}hppa*-hp-hpux9
+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 may be causing
@@ -2127,15 +2175,15 @@ charge:
@itemize @bullet
@item
@html
-<a href="http://us-support.external.hp.com">US, Canada, Asia-Pacific, and
+<a href="http://us.itrc.hp.com/service/home/home.do">US, Canada, Asia-Pacific, and
Latin-America</a>
@end html
@ifnothtml
-@uref{http://us-support.external.hp.com,,}US, Canada, Asia-Pacific, and
-Latin-America
+@uref{http://us.itrc.hp.com/service/home/home.do,,} US, Canada, Asia-Pacific,
+and Latin-America.
@end ifnothtml
@item
-@uref{http://europe-support.external.hp.com,,Europe}
+@uref{http://europe.itrc.hp.com/service/home/home.do,,} Europe.
@end itemize
The HP assembler on these systems is much better than the hpux9 assembler,
@@ -2154,11 +2202,23 @@ bootstrap}.
GCC 3.0 and up support HP-UX 11. On 64-bit capable systems, there
are two distinct ports. The @samp{hppa2.0w-hp-hpux11*} port generates
code for the 32-bit pa-risc runtime architecture. It uses the HP
-linker and is currently the default selected by config.guess. The
-optional @samp{hppa64-hp-hpux11*} port generates 64-bit code for the
-pa-risc 2.0 architecture. It must be explicitly selected using the
-@samp{--host=hppa64-hp-hpux11*} configure option. Different prefixes
-must be used if both ports are to be installed on the same system.
+linker. The @samp{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 @env{PATH} or define @env{CC} so that configure finds an appropriate
+compiler for the initial bootstrap. Different prefixes must be used if
+both ports are to be installed on the same system.
+
+It is best to explicitly configure the @samp{hppa64-hp-hpux11*} target
+with the @option{--with-ld=@dots{}} option. We support both the HP
+and GNU linkers for this target. The two linkers require different
+link commands. Thus, it's not possible to switch linkers during a
+GCC build. This has been been reported to occur in a unified build
+of binutils and GCC.
+
+GCC 2.95.x is not supported under HP-UX 11 and cannot be used to
+compile GCC 3.0 and up. Refer to @uref{binaries.html,,binaries} for
+information about obtaining precompiled GCC binaries for HP-UX.
You must use GNU binutils 2.11 or above with the 32-bit port. Thread
support is not currently implemented, so @option{--enable-threads} does
@@ -2169,17 +2229,49 @@ not work. See:
@item @uref{http://gcc.gnu.org/ml/gcc-bugs/2002-01/msg00663.html}
@end itemize
-GCC 2.95.x is not supported under HP-UX 11 and cannot be used to
-compile GCC 3.0 and up. Refer to @uref{binaries.html,,binaries} for
-information about obtaining precompiled GCC binaries for HP-UX.
-
-GNU binutils 2.13 or later is recommended with the 64-bit port.
-The HP assembler has many limitations and is not recommended. For
-example, it does not support weak symbols or alias definitions.
-As a result, explicit template instantiations are required when
-using C++. Either the HP or GNU linker can be used but it may be
-necessary to use the GNU linker when dwarf2 exception support is
-implemented.
+GCC 3.3 and later support weak symbols on the 32-bit port using SOM
+secondary definition symbols. This feature is not enabled for earlier
+versions of HP-UX since there have been bugs in the linker support for
+secondary symbols. The HP linker patches @code{PHSS_26559} and
+@code{PHSS_24304} for HP-UX 11.00 and 11.11, respectively, correct the
+problem of linker core dumps creating C++ libraries. Earlier patches
+may work but they have not been tested.
+
+GCC 3.3 nows uses the ELF DT_INIT_ARRAY and DT_FINI_ARRAY capability
+to run initializers and finalizers on the 64-bit port. The feature
+requires CVS binutils as of January 2, 2003, or a subsequent release
+to correct a problem arising from HP's non-standard use of the .init
+and .fini sections. The 32-bit port uses the linker @option{+init}
+and @option{+fini} options. As with the support for secondary symbols,
+there have been bugs in the order in which these options are executed
+by the HP linker. So, again a recent linker patch is recommended.
+
+The HP assembler has many limitations and is not recommended for either
+the 32 or 64-bit ports. For example, it does not support weak symbols
+or alias definitions. As a result, explicit template instantiations
+are required when using C++. This will make it difficult if not
+impossible to build many C++ applications. You also can't generate
+debugging information when using the HP assembler with GCC.
+
+There are a number of issues to consider in selecting which linker to
+use with the 64-bit port. The GNU 64-bit linker can only create dynamic
+binaries. The @option{-static} option causes linking with archive
+libraries but doesn't produce a truly static binary. Dynamic binaries
+still require final binding by the dynamic loader to resolve a set of
+dynamic-loader-defined symbols. The default behavior of the HP linker
+is the same as the GNU linker. However, it can generate true 64-bit
+static binaries using the @option{+compat} option.
+
+The HP 64-bit linker doesn't support linkonce semantics. As a
+result, C++ programs have many more sections than they should.
+
+The GNU 64-bit linker has some issues with shared library support
+and exceptions. As a result, we only support libgcc in archive
+format. For similar reasons, dwarf2 unwind and exception support
+are disabled. The GNU linker also has problems creating binaries
+with @option{-static}. It doesn't provide stubs for internal
+calls to global functions in shared libraries, so these calls
+can't be overloaded.
There are several possible approaches to building the distribution.
Binutils can be built first using the HP tools. Then, the GCC
@@ -2208,23 +2300,20 @@ have a higher-quality port for this machine soon.
@end html
@heading @anchor{*-*-linux-gnu}*-*-linux-gnu
+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.
+
If you use glibc 2.2 (or 2.1.9x), GCC 2.95.2 won't install
out-of-the-box. You'll get compile errors while building @samp{libstdc++}.
The patch @uref{glibc-2.2.patch,,glibc-2.2.patch}, that is to be
applied in the GCC source tree, fixes the compatibility problems.
-@html
-@end html
-
-@html
-<p>
-@end html
-
Currently Glibc 2.2.3 (and older releases) and GCC 3.0 are out of sync
since the latest exception handling changes for GCC@. Compiling glibc
with GCC 3.0 will give a binary incompatible glibc and therefore cause
-lots of problems and might make your system completly unusable. This
-will definitly need fixes in glibc but might also need fixes in GCC@. We
+lots of problems and might make your system completely unusable. This
+will definitely need fixes in glibc but might also need fixes in GCC@. We
strongly advise to wait for glibc 2.2.4 and to read the release notes of
glibc 2.2.4 whether patches for GCC 3.0 are needed. You can use glibc
2.2.3 with GCC 3.0, just do not try to recompile it.
@@ -2242,7 +2331,8 @@ gas/binutils version 2.5.2 or later.
@end html
@heading @anchor{ix86-*-linux*}i?86-*-linux*
-You will need binutils 2.9.1.0.15 or newer for exception handling to work.
+As of GCC 3.3, binutils 2.13.1 or later is required for this platform.
+See @uref{http://gcc.gnu.org/PR10877,,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 can be
@@ -2258,12 +2348,6 @@ link with GNU malloc instead of the malloc that comes with the system.
@html
<hr />
@end html
-@heading @anchor{ix86-*-sco3.2v4}i?86-*-sco3.2v4
-Use this configuration for SCO release 3.2 version 4.
-
-@html
-<hr />
-@end html
@heading @anchor{ix86-*-sco3.2v5*}i?86-*-sco3.2v5*
Use this for the SCO OpenServer Release 5 family of operating systems.
@@ -2276,64 +2360,34 @@ maintain. GCC now emits only DWARF 2 for this target. This means you
may use either the UDK debugger or GDB to debug programs built by this
version of GCC@.
-Use of the @option{-march=pentiumpro} flag can result in
-unrecognized opcodes when using the native assembler on OS versions before
-5.0.6. (Support for P6 opcodes was added to the native ELF assembler in
-that version.) While it's rather rare to see these emitted by GCC yet,
-errors of the basic form:
-
-@example
- /usr/tmp/ccaNlqBc.s:22:unknown instruction: fcomip
- /usr/tmp/ccaNlqBc.s:50:unknown instruction: fucomip
-@end example
-
-are symptoms of this problem. You may work around this by not
-building affected files with that flag, by using the GNU assembler, or
-by using the assembler provided with the current version of the OS@.
-Users of GNU assembler should see the note below for hazards on doing
-so.
-
-The native SCO assembler that is provided with the OS at no
-charge is normally required. If, however, you must be able to use
-the GNU assembler (perhaps you're compiling code with asms that
-require GAS syntax) you may configure this package using the flags
-@uref{./configure.html#with-gnu-as,,@option{--with-gnu-as}}. You must
-use a recent version of GNU binutils; versions past 2.9.1 seem to work
-well.
-
-In general, the @option{--with-gnu-as} option isn't as well tested
-as the native assembler.
-
-Look in @file{gcc/config/i386/sco5.h} (search for ``messy'') for
-additional OpenServer-specific flags.
-
-Systems based on OpenServer before 5.0.4 (@samp{uname -X}
-will tell you what you're running) require TLS597 from
-@uref{ftp://ftp.sco.com/TLS/,,ftp://ftp.sco.com/TLS/}
-for C++ constructors and destructors to work right.
-
-The system linker in (at least) 5.0.4 and 5.0.5 will sometimes
-do the wrong thing for a construct that GCC will emit for PIC
-code. This can be seen as execution testsuite failures when using
-@option{-fPIC} on @file{921215-1.c}, @file{931002-1.c}, @file{nestfunc-1.c}, and @file{gcov-1.c}.
-For 5.0.5, an updated linker that will cure this problem is
-available. You must install both
-@uref{ftp://ftp.sco.com/Supplements/rs505a/,,ftp://ftp.sco.com/Supplements/rs505a/}
-and @uref{ftp://ftp.sco.com/SLS/,,OSS499A}.
-
-The dynamic linker in OpenServer 5.0.5 (earlier versions may show
-the same problem) aborts on certain G77-compiled programs. It's particularly
-likely to be triggered by building Fortran code with the @option{-fPIC} flag.
-Although it's conceivable that the error could be triggered by other
-code, only G77-compiled code has been observed to cause this abort.
-If you are getting core dumps immediately upon execution of your
-G77 program---and especially if it's compiled with @option{-fPIC}---try applying
-@uref{sco_osr5_g77.patch,,@file{sco_osr5_g77.patch}} to your @samp{libf2c} and
-rebuilding GCC@.
-Affected faults, when analyzed in a debugger, will show a stack
-backtrace with a fault occurring in @code{rtld()} and the program
-running as @file{/usr/lib/ld.so.1}. This problem has been reported to SCO
-engineering and will hopefully be addressed in later releases.
+GCC is now only supported on releases 5.0.4 and later, and requires that
+you install Support Level Supplement OSS646B or later, and the latest
+version of the Supplement Graphics, Web and X11 Libraries (GWXLIBS)
+package. If you are using release 5.0.7 of OpenServer, you must have at
+least the first maintenance pack installed (this includes the relevant
+portions of OSS646 and GWXLIBS). OSS646, also known as the "Execution
+Environment Update", provides updated link editors and assemblers, as well
+as updated standard C and math libraries. The C startup modules are also
+updated to support the System V gABI draft, and GCC relies on that
+behavior. GWXLIBS provides a collection of commonly used open source
+libraries, some of which GCC depends on (such as GNU gettext and zlib).
+SCO OpenServer Release 5.0.7 has all of this built in by default, but
+GWXLIBS is significantly updated in Maintenance Pack 1. Please visit
+@uref{ftp://ftp.sco.com/pub/openserver5,,ftp://ftp.sco.com/pub/openserver5}
+and
+@uref{ftp://ftp.sco.com/pub/openserver5/opensrc,,ftp://ftp.sco.com/pub/openserver5/opensrc}
+for the latest versions of these (and other potentially useful) supplements.
+
+Although there is support for using the native assembler, it is recommended
+that you configure GCC to use the GNU assembler. You do this by using the
+flags @uref{./configure.html#with-gnu-as,,@option{--with-gnu-as}}. You
+should use a modern version of GNU binutils. Version 2.14 was used for all
+testing. In general, only the @option{--with-gnu-as} option is tested. A
+modern bintuils (as well as a plethora of other development related GNU
+utilities) can be found in the GNU Development Tools package. See the
+SCO web and ftp sites for details. That package also contains the
+currently "officially supported" version of GCC, version 2.95.3. It is
+useful for bootstrapping this version.
@html
@@ -2399,7 +2453,21 @@ ABI changes are expected.
@html
<hr />
@end html
+@heading @anchor{ia64-*-hpux*}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 @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, @option{--enable-libunwind-exceptions}
+is required to build GCC. For GCC 3.3 and later, this is the default.
+
+@html
+<hr />
+@end html
@heading @anchor{*-lynx-lynxos}*-lynx-lynxos
+Support for SPARC LynxOS is obsoleted in GCC 3.3.
+
LynxOS 2.2 and earlier comes with GCC 1.x already installed as
@file{/bin/gcc}. You should compile with this instead of @file{/bin/cc}.
You can tell GCC to use the GNU assembler and linker, by specifying
@@ -2412,6 +2480,7 @@ installed tools, which produce @file{a.out} format executables.
<!-- rs6000-ibm-aix*, powerpc-ibm-aix* -->
@end html
@heading @anchor{*-ibm-aix*}*-ibm-aix*
+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.
@@ -2427,11 +2496,12 @@ does not provide a definition that will confuse @command{configure}.
If this error occurs during stage2 or later, then the problem most likely
is the version of Make (see above).
-The GNU Assembler incorrectly reports that it supports WEAK symbols on
-AIX which causes GCC to try to utilize weak symbol functionality although
-it is not supported on the platform. The native @command{as} and
-@command{ld} still are recommended. The native AIX tools do
-interoperate with GCC@.
+The native @command{as} and @command{ld} are recommended for bootstrapping
+on AIX 4 and required for bootstrapping on AIX 5L. The GNU Assembler
+reports that it supports WEAK symbols on AIX 4, which causes GCC to try to
+utilize weak symbol functionality although it is not supported. The GNU
+Assembler and Linker do not support AIX 5L sufficiently to bootstrap GCC.
+The native AIX tools do interoperate with GCC@.
Building @file{libstdc++.a} requires a fix for an AIX Assembler bug
APAR IY26685 (AIX 4.3) or APAR IY25528 (AIX 5.1).
@@ -2530,13 +2600,15 @@ Use @samp{configure --target=ip2k-elf --enable-languages=c} to configure GCC@.
<hr />
@end html
@heading @anchor{m32r-*-elf}m32r-*-elf
-Mitsubishi M32R processor.
+Renesas M32R processor.
This configuration is intended for embedded systems.
@html
<hr />
@end html
@heading @anchor{m68000-hp-bsd}m68000-hp-bsd
+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 @email{law@@cygnus.com}
to get binaries of GCC for bootstrapping.
@@ -2559,19 +2631,23 @@ applications. There are no standard Unix configurations.
<hr />
@end html
@heading @anchor{m68k-att-sysv}m68k-att-sysv
+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 previous version of GCC and use it to
bootstrap. Binaries are available from the OSU-CIS archive, at
-@uref{ftp://archive.cis.ohio-state.edu/pub/att7300/}.
+@uref{ftp://ftp.uu.net/systems/att7300/}.
@html
<hr />
@end html
@heading @anchor{m68k-crds-unos}m68k-crds-unos
+Support for this system is obsoleted in GCC 3.3.
+
Use @samp{configure unos} for building on Unos.
-The Unos assembler is named @code{casm} instead of @code{as}. For some
+The Unos assembler is named @command{casm} instead of @command{as}. For some
strange reason linking @file{/bin/as} to @file{/bin/casm} changes the
behavior, and does not work. So, when installing GCC, you should
install the following script as @file{as} in the subdirectory where
@@ -2645,9 +2721,9 @@ kept up to date. gdb does not understand that native HP-UX format, so
you must use gas if you wish to use gdb.
On HP-UX version 8.05, but not on 8.07 or more recent versions, the
-@code{fixproto} shell script triggers a bug in the system shell. If you
+@command{fixproto} shell script triggers a bug in the system shell. If you
encounter this problem, upgrade your operating system or use BASH (the
-GNU shell) to run @code{fixproto}. This bug will cause the fixproto
+GNU shell) to run @command{fixproto}. This bug will cause the fixproto
program to report an error of the form:
@example
@@ -2666,6 +2742,8 @@ to look like:
<hr />
@end html
@heading @anchor{m68k-ncr-*}m68k-ncr-*
+Support for this system is obsoleted in GCC 3.3.
+
On the Tower models 4@var{n}0 and 6@var{n}0, by default a process is not
allowed to have more than one megabyte of memory. GCC cannot compile
itself (or many other programs) with @option{-O} in that much memory.
@@ -2682,6 +2760,8 @@ MAXUMEM = 4096
<hr />
@end html
@heading @anchor{m68k-sun}m68k-sun
+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
point traps inherently cannot work with the FPA@.
@@ -2690,6 +2770,8 @@ point traps inherently cannot work with the FPA@.
<hr />
@end html
@heading @anchor{m68k-sun-sunos4.1.1}m68k-sun-sunos4.1.1
+Support for this system is obsoleted in GCC 3.3.
+
It is reported that you may need the GNU assembler on this platform.
@@ -2707,6 +2789,16 @@ stop such warnings by installing the GNU linker.
It would be nice to extend GAS to produce the gp tables, but they are
optional, and there should not be a warning about their absence.
+The libstdc++ atomic locking routines for MIPS targets requires MIPS II
+and later. A patch went in just after the GCC 3.3 release to
+make @samp{mips*-*-*} use the generic implementation instead. You can also
+configure for @samp{mipsel-elf} as a workaround. The
+@samp{mips*-*-linux*} target continues to use the MIPS II routines. More
+work on this is expected in future releases.
+
+@html
+<hr />
+@end html
@heading @anchor{mips-sgi-irix5}mips-sgi-irix5
This configuration has considerable problems, which will be fixed in a
@@ -2717,7 +2809,7 @@ subsystem must be installed from the IDO CD-ROM supplied by Silicon
Graphics. It is also available for download from
@uref{http://www.sgi.com/developers/devtools/apis/ido.html,,http://www.sgi.com/developers/devtools/apis/ido.html}.
-@code{make compare} may fail on version 5 of IRIX unless you add
+@samp{make compare} may fail on version 5 of IRIX unless you add
@option{-save-temps} to @code{CFLAGS}. On these systems, the name of the
assembler input file is stored in the object file, and that makes
comparison fail if it differs between the @code{stage1} and
@@ -2862,32 +2954,23 @@ switch by using the configure option @option{--with-cpu-@var{cpu_type}}.
@heading @anchor{powerpc-*-darwin*}powerpc-*-darwin*
PowerPC running Darwin (Mac OS X kernel).
-GCC 3.0 does not support Darwin, but 3.1 and later releases will work.
-
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
binaries are available at
-@uref{http://www.opensource.apple.com/projects/darwin} (free
+@uref{http://developer.apple.com/tools/compilers.html} (free
registration required).
-Versions of the assembler prior to ``cctools-364'' cannot handle the
-4-argument form of @code{rlwinm} and related mask-using instructions. Darwin
-1.3 (Mac OS X 10.0) uses cctools-353 for instance. To get cctools-364,
-check out @file{cctools} with tag @samp{Apple-364}, build it, and
-install the assembler as @file{usr/bin/as}. See
-@uref{http://www.opensource.apple.com/tools/cvs/docs.html} for details.
-
-Also, the default stack limit of 512K is too small, and a bootstrap will
-typically fail when self-compiling @file{expr.c}. Set the stack to 800K
-or more, for instance by doing @samp{limit stack 800}. It's also
-convenient to use the GNU preprocessor instead of Apple's during the
-first stage of bootstrapping; this is automatic when doing @samp{make
-bootstrap}, but to do it from the toplevel objdir you will need to say
-@samp{make CC='cc -no-cpp-precomp' bootstrap}.
+The default stack limit of 512K is too small, which may cause compiles
+to fail with 'Bus error'. Set the stack larger, for instance
+by doing @samp{limit stack 800}. It's a good idea to use the GNU
+preprocessor instead of Apple's @file{cpp-precomp} during the first stage of
+bootstrapping; this is automatic when doing @samp{make bootstrap}, but
+to do it from the toplevel objdir you will need to say @samp{make
+CC='cc -no-cpp-precomp' bootstrap}.
-Note that the version of GCC shipped by Apple typically includes a
-number of extensions not available in a standard GCC release. These
-extensions are generally specific to Mac programming.
+The version of GCC shipped by Apple typically includes a number of
+extensions not available in a standard GCC release. These extensions
+are generally specific to Mac programming.
@html
<hr />
@@ -2909,7 +2992,7 @@ or newer for a working GCC@.
@end html
@heading @anchor{powerpc-*-netbsd*}powerpc-*-netbsd*
PowerPC system in big endian mode running NetBSD@. To build the
-documentation you will need Texinfo version 4.1 (NetBSD 1.5.1 included
+documentation you will need Texinfo version 4.2 (NetBSD 1.5.1 included
Texinfo version 3.12).
@html
@@ -2954,12 +3037,6 @@ Embedded PowerPC system in little endian mode.
@html
<hr />
@end html
-@heading @anchor{powerpcle-*-winnt}powerpcle-*-winnt, powerpcle-*-pe
-PowerPC system in little endian mode running Windows NT@.
-
-@html
-<hr />
-@end html
@heading @anchor{s390-*-linux*}s390-*-linux*
S/390 system running Linux for S/390@.
@@ -2983,12 +3060,24 @@ GCC you first have to install a pre-built compiler, see our
@uref{binaries.html,,binaries page} for details.
The Solaris 2 @command{/bin/sh} will often fail to configure
-@file{libstdc++-v3}, @file{boehm-gc} or
-@file{libjava}. If you encounter this problem, set @env{CONFIG_SHELL} to
-@command{/bin/ksh} in your environment before running @command{configure}.
+@file{libstdc++-v3}, @file{boehm-gc} or @file{libjava}. We therefore
+recommend to use the following sequence of commands to bootstrap and
+install GCC:
+
+@smallexample
+ % CONFIG_SHELL=/bin/ksh
+ % export CONFIG_SHELL
+ % @var{srcdir}/configure [@var{options}] [@var{target}]
+ % gmake bootstrap
+ % gmake install
+@end smallexample
+
+As explained in the @uref{build.html,,build} instructions, we recommend
+to use GNU make, which we call @command{gmake} here to distinguish it
+from Sun make.
Solaris 2 comes with a number of optional OS packages. Some of these
-packages are needed to use GCC fully, namely @code{SUNWarc},
+are needed to use GCC fully, namely @code{SUNWarc},
@code{SUNWbtool}, @code{SUNWesu}, @code{SUNWhea}, @code{SUNWlibm},
@code{SUNWsprot}, and @code{SUNWtoo}. If you did not install all
optional packages when installing Solaris 2, you will need to verify that
@@ -3004,9 +3093,24 @@ Trying to use the linker and other tools in
For example, the linker may hang indefinitely. The fix is to remove
@file{/usr/ucb} from your @env{PATH}.
+The build process works more smoothly with the legacy Sun tools so, if you
+have @file{/usr/xpg4/bin} in your @env{PATH}, we recommend that you place
+@file{/usr/bin} before @file{/usr/xpg4/bin} for the duration of the build.
+
All releases of GNU binutils prior to 2.11.2 have known bugs on this
-platform. We recommend the use of GNU binutils 2.11.2 or the vendor
-tools (Sun @command{as}, Sun @command{ld}).
+platform. We recommend the use of GNU binutils 2.11.2 or later, or the
+vendor tools (Sun @command{as}, Sun @command{ld}). Note that your mileage
+may vary if you use a combination of the GNU tools and the Sun tools: while
+the combination GNU @command{as} + Sun @command{ld} should reasonably work,
+the reverse combination Sun @command{as} + GNU @command{ld} is known to
+cause memory corruption at runtime in some cases for C++ programs.
+
+The stock GNU binutils 2.15 release is broken on this platform because of a
+single bug. It has been fixed on the 2.15 branch in the CVS repository.
+You can obtain a working version by checking out the binutils-2_15-branch
+from the CVS repository or applying the patch
+@uref{http://sources.redhat.com/ml/binutils-cvs/2004-09/msg00036.html} to the
+release.
Sun bug 4296832 turns up when compiling X11 headers with GCC 2.95 or
newer: @command{g++} will complain that types are missing. These headers assume
@@ -3022,6 +3126,17 @@ There are patches for Solaris 2.6 (105633-56 or newer for SPARC,
108377-20 for Intel), and Solaris 8 (108652-24 or newer for SPARC,
108653-22 for Intel) that fix this bug.
+Sun bug 4927647 sometimes causes random spurious testsuite failures
+related to missing diagnostic output. This bug doesn't affect GCC
+itself, rather it is a kernel bug triggered by the @command{expect}
+program which is used only by the GCC testsuite driver. When the bug
+causes the @command{expect} program to miss anticipated output, extra
+testsuite failures appear.
+
+There are patches for Solaris 8 (117350-12 or newer for SPARC,
+117351-12 or newer for Intel) and Solaris 9 (117171-11 or newer for
+SPARC, 117172-11 or newer for Intel) that address this problem.
+
@html
<hr />
@end html
@@ -3057,6 +3172,13 @@ that supports only 32-bit binaries, one must configure with
@option{--disable-multilib}, since we will not be able to build the
64-bit target libraries.
+GCC 3.3 triggers code generation bugs in earlier versions of the GNU
+compiler (especially GCC 3.0.x versions), which lead to the miscompilation
+of the stage1 compiler and the subsequent failure of the bootstrap process.
+A workaround is to use GCC 3.2.3 as an intermediary stage, i.e. to bootstrap
+that compiler with the base compiler and then use it to bootstrap the final
+compiler.
+
@html
<hr />
@end html
@@ -3097,12 +3219,23 @@ the bug. The current (as of 2001-09-24) revision is -14, and is included in
the Solaris 7 Recommended Patch Cluster.
@end itemize
+GCC 3.3 triggers a bug in version 5.0 Alpha 03/27/98 of the Sun assembler,
+which causes a bootstrap failure when linking the 64-bit shared version of
+libgcc. A typical error message is:
+
+@smallexample
+ld: fatal: relocation error: R_SPARC_32: file libgcc/sparcv9/_muldi3.o:
+ symbol <unknown>: offset 0xffffffff7ec133e7 is non-aligned.
+@end smallexample
+
+This bug has been fixed in the final 5.0 version of the assembler.
@html
<p>
<hr />
@end html
@heading @anchor{sparc-sun-sunos4*}sparc-sun-sunos4*
+Support for this system is obsoleted in GCC 3.3.
A bug in the SunOS 4 linker will cause it to crash when linking
@option{-fPIC} compiled objects (and will therefore not allow you to build
@@ -3122,6 +3255,7 @@ be due to a bug in @command{sh}. You can probably get around it by running
<hr />
@end html
@heading @anchor{sparc-unknown-linux-gnulibc1}sparc-unknown-linux-gnulibc1
+Support for this system is obsoleted in GCC 3.3.
It has been reported that you might need
@uref{ftp://ftp.yggdrasil.com/private/hjl,,binutils 2.8.1.0.23}
@@ -3141,18 +3275,7 @@ releases mishandled unaligned relocations on @code{sparc-*-*} targets.
@html
<hr />
@end html
-@heading @anchor{sparc64-*-*}sparc64-*-*
-
-GCC version 2.95 is not able to compile code correctly for
-@code{sparc64} targets. Users of the Linux kernel, at least,
-can use the @code{sparc32} program to start up a new shell
-invocation with an environment that causes @command{configure} to
-recognize (via @samp{uname -a}) the system as @samp{sparc-*-*} instead.
-
-@html
-<hr />
-@end html
-@heading @anchor{sparcv9-*-solaris2*}sparcv9-*-solaris2*
+@heading @anchor{sparc64-*-solaris2*}sparc64-*-solaris2*
The following compiler flags must be specified in the configure
step in order to bootstrap this target with the Sun compiler:
@@ -3162,7 +3285,14 @@ step in order to bootstrap this target with the Sun compiler:
@end example
@option{-xildoff} turns off the incremental linker, and @option{-xarch=v9}
-specifies the v9 architecture to the Sun linker and assembler.
+specifies the SPARC-V9 architecture to the Sun linker and assembler.
+
+@html
+<hr />
+@end html
+@heading @anchor{sparcv9-*-solaris2*}sparcv9-*-solaris2*
+
+This is a synonym for sparc64-*-solaris2*.
@html
<hr />
@@ -3195,19 +3325,29 @@ On System V, if you get an error like this,
that too indicates a problem with disk space, ulimit, or @code{MAXUMEM}.
On a System V release 4 system, make sure @file{/usr/bin} precedes
-@file{/usr/ucb} in @code{PATH}. The @code{cc} command in
+@file{/usr/ucb} in @code{PATH}. The @command{cc} command in
@file{/usr/ucb} uses libraries which have bugs.
@html
<hr />
@end html
@heading @anchor{vax-dec-ultrix}vax-dec-ultrix
-Don't try compiling with VAX C (@code{vcc}). It produces incorrect code
+Don't try compiling with VAX C (@command{vcc}). It produces incorrect code
in some cases (for example, when @code{alloca} is used).
@html
<hr />
@end html
+@heading @anchor{x86_64-*-*}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 @option{-m32} switch).
+
+@html
+<hr />
+@end html
@heading @anchor{xtensa-*-elf}xtensa-*-elf
This target is intended for embedded Xtensa systems using the
@@ -3240,12 +3380,15 @@ respects, this target is the same as the
@end html
@heading @anchor{windows}Microsoft Windows (32-bit)
-A port of GCC 2.95.x is included with the
+A port of GCC 2.95.2 and 3.x is included with the
@uref{http://www.cygwin.com/,,Cygwin environment}.
Current (as of early 2001) snapshots of GCC will build under Cygwin
without modification.
+GCC does not currently build with Microsoft's C++ compiler and there
+are no plans to make it do so.
+
@html
<hr />
@end html