@end ifset
@c Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-@c 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+@c 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+@c 2010 Free Software Foundation, Inc.
@c *** Converted to texinfo by Dean Wakerley, dean@wakerley.com
@c IMPORTANT: whenever you modify this file, run `install.texi2html' to
systems' @command{tar} programs will also work, only try GNU
@command{tar} if you have problems.
-@item GNU Multiple Precision Library (GMP) version 4.2 (or later)
+@item GNU Multiple Precision Library (GMP) version 4.3.2 (or later)
Necessary to build GCC@. If you do not have it installed in your
library search path, you will have to configure with the
distribution is found in a subdirectory of your GCC sources named
@file{gmp}, it will be built together with GCC@.
-@item MPFR Library version 2.3.2 (or later)
+@item MPFR Library version 2.4.2 (or later)
Necessary to build GCC@. It can be downloaded from
@uref{http://www.mpfr.org/}. The @option{--with-mpfr} configure
distribution is found in a subdirectory of your GCC sources named
@file{mpfr}, it will be built together with GCC@.
+@item MPC Library version 0.8.1 (or later)
+
+Necessary to build GCC@. It can be downloaded from
+@uref{http://www.multiprecision.org/}. The @option{--with-mpc}
+configure option should be used if your MPC Library is not installed
+in your default library search path. See also @option{--with-mpc-lib}
+and @option{--with-mpc-include}. Alternatively, if an MPC source
+distribution is found in a subdirectory of your GCC sources named
+@file{mpc}, it will be built together with GCC@.
+
@item Parma Polyhedra Library (PPL) version 0.10
Necessary to build GCC with the Graphite loop optimizations.
Necessary to build libgcj, the GCJ runtime.
-@item MPC Library version 0.7.0 (or later)
+@item libelf version 0.8.12 (or later)
-Optional when building GCC@. Having this library will enable
-additional optimizations on complex numbers. It can be downloaded
-from @uref{http://www.multiprecision.org/mpc/}. The
-@option{--with-mpc} configure option should be used if your MPC
-Library is not installed in your default library search path. See
-also @option{--with-mpc-lib} and @option{--with-mpc-include}.
-Alternatively, if an MPC source distribution is found in a
-subdirectory of your GCC sources named @file{mpc}, it will be built
-together with GCC@.
+Necessary to build link-time optimization (LTO) support. It can be
+downloaded from @uref{http://www.mr511.de/software/libelf-0.8.12.tar.gz},
+though it is commonly available in several systems. The versions in
+IRIX 5 and 6 don't work since they lack @file{gelf.h}. The version in
+recent releases of Solaris 11 does work, previous ones don't yet.
+
+The @option{--with-libelf} configure option should be used if libelf is
+not installed in your default library search patch.
@end table
Necessary when modifying @file{configure.ac}, @file{aclocal.m4}, etc.@:
to regenerate @file{configure} and @file{config.in} files.
-@item automake version 1.11
+@item automake version 1.11.1
Necessary when modifying a @file{Makefile.am} file to regenerate its
associated @file{Makefile.in}.
as any of their subdirectories.
For directories that use automake, GCC requires the latest release in
-the 1.11 series, which is currently 1.11. When regenerating a directory
+the 1.11 series, which is currently 1.11.1. When regenerating a directory
to a newer version, please update all the directories using an older 1.11
to the latest released version.
GCC; we use @var{objdir} to refer to the toplevel build/object directory.
If you obtained the sources via SVN, @var{srcdir} must refer to the top
-@file{gcc} directory, the one where the @file{MAINTAINERS} can be found,
-and not its @file{gcc} subdirectory, otherwise the build will fail.
+@file{gcc} directory, the one where the @file{MAINTAINERS} file can be
+found, and not its @file{gcc} subdirectory, otherwise the build will fail.
If either @var{srcdir} or @var{objdir} is located on an automounted NFS
file system, the shell's built-in @command{pwd} command will return
phases.
First, we @strong{highly} recommend that GCC be built into a
-separate directory than the sources which does @strong{not} reside
+separate directory from the sources which does @strong{not} reside
within the source tree. This is how we generally build GCC; building
where @var{srcdir} == @var{objdir} should still work, but doesn't
get extensive testing; building where @var{objdir} is a subdirectory
@itemize @bullet
@item
GCC has code to correctly determine the correct value for @var{target}
-for nearly all native systems. Therefore, we highly recommend you not
-provide a configure target when configuring a native compiler.
+for nearly all native systems. Therefore, we highly recommend you do
+not provide a configure target when configuring a native compiler.
@item
@var{target} must be specified as @option{--target=@var{target}}
@item single
Disable thread support, should work for all platforms.
@item solaris
-Sun Solaris 2 thread support.
+Sun Solaris 2/Unix International thread support. Only use this if you
+really need to use this legacy API instead of the default, @samp{posix}.
@item vxworks
VxWorks thread support.
@item win32
Specify if the compiler should default to @option{-marm} or @option{-mthumb}.
This option is only supported on ARM targets.
+@item --with-fpmath=sse
+Specify if the compiler should default to @option{-msse2} and
+@option{-mfpmath=sse}. This option is only supported on i386 and
+x86-64 targets.
+
@item --with-divide=@var{type}
Specify how the compiler should generate code for checking for
division by zero. This option is only supported on the MIPS target.
libraries should be optimized for code space instead of code speed.
This is the default for the m32r platform.
-@item --disable-cpp
-Specify that a user visible @command{cpp} program should not be installed.
-
@item --with-cpp-install-dir=@var{dirname}
Specify that the user visible @command{cpp} program should be installed
in @file{@var{prefix}/@var{dirname}/cpp}, in addition to @var{bindir}.
+@item --enable-comdat
+Enable COMDAT group support. This is primarily used to override the
+automatically detected value.
+
@item --enable-initfini-array
Force the use of sections @code{.init_array} and @code{.fini_array}
(instead of @code{.init} and @code{.fini}) for constructors and
experimental option which may become the default in a later release.
@item --enable-maintainer-mode
-The build rules that
-regenerate the GCC master message catalog @file{gcc.pot} are normally
+The build rules that regenerate the Autoconf and Automake output files as
+well as the GCC master message catalog @file{gcc.pot} are normally
disabled. This is because it can only be rebuilt if the complete source
tree is present. If you have changed the sources and want to rebuild the
catalog, configuring with @option{--enable-maintainer-mode} will enable
@item --enable-bootstrap
In special cases, you may want to perform a 3-stage build
even if the target and host triplets are different.
-This could happen when the host can run code compiled for
+This is possible when the host can run code compiled for
the target (e.g.@: host is i686-linux, target is i486-linux).
Starting from GCC 4.2, to do this you have to configure explicitly
with @option{--enable-bootstrap}.
option enables the 32-bit target to be a bi-arch compiler, which is
useful when you want a bi-arch compiler that defaults to 32-bit, and
you are building a bi-arch or multi-arch binutils in a combined tree.
-Currently, this option only affects sparc-linux, powerpc-linux and
-x86-linux.
+On mips-linux, this will build a tri-arch compiler (ABI o32/n32/64),
+defaulted to o32.
+Currently, this option only affects sparc-linux, powerpc-linux, x86-linux
+and mips-linux.
@item --enable-secureplt
This option enables @option{-msecure-plt} by default for powerpc-linux.
generated.
@item --disable-stage1-checking
-@item --enable-stage1-checking
+@itemx --enable-stage1-checking
@itemx --enable-stage1-checking=@var{list}
If no @option{--enable-checking} option is specified the stage1
compiler will be built with @samp{yes} checking enabled, otherwise
default for a native toolchain with an assembler that accepts it and
GLIBC 2.11 or above, otherwise disabled.
+@item --enable-lto
+Enable support for link-time optimization (LTO). This is enabled by
+default if a working libelf implementation is found (see
+@option{--with-libelf}).
+
+@item --with-libelf=@var{pathname}
+@itemx --with-libelf-include=@var{pathname}
+@itemx --with-libelf-lib=@var{pathname}
+If you do not have libelf installed in a standard location and you
+want to enable support for link-time optimization (LTO), you can
+explicitly specify the directory where libelf is installed
+(@samp{--with-libelf=@var{libelfinstalldir}}). The
+@option{--with-libelf=@var{libelfinstalldir}} option is shorthand for
+@option{--with-libelf-include=@var{libelfinstalldir}/include}
+@option{--with-libelf-lib=@var{libelfinstalldir}/lib}.
+
+@item --enable-gold
+Enable support for using @command{gold} as the linker. If gold support is
+enabled together with @option{--enable-lto}, an additional directory
+@file{lto-plugin} will be built. The code in this directory is a
+plugin for gold that allows the link-time optimizer to extract object
+files with LTO information out of library archives. See
+@option{-flto} and @option{-fwhopr} for details.
@end table
@subheading Cross-Compiler-Specific Options
The following options 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
+searched in there. More specifically, this acts as if
+@option{--sysroot=@var{dir}} was added to the default options of the built
+compiler. 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
subdirectory of @option{$@{exec_prefix@}}, then it will be found relative to
the GCC binaries if the installation tree is moved.
+This option affects the system root for the compiler used to build
+target libraries (which runs on the build system) and the compiler newly
+installed with @code{make install}; it does not affect the compiler which is
+used to build GCC itself.
+
@item --with-build-sysroot
@itemx --with-build-sysroot=@var{dir}
Tells GCC to consider @var{dir} as the system root (see
can build the exception handling for libgcc.
@item --with-libs
-@itemx --with-libs=``@var{dir1} @var{dir2} @dots{} @var{dirN}''
+@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
@item --enable-aot-compile-rpm
Adds aot-compile-rpm to the list of installed scripts.
+@item --enable-browser-plugin
+Build the gcjwebplugin web browser plugin.
+
@table @code
@item ansi
Use the single-byte @code{char} and the Win32 A functions natively,
3-stage bootstrap of the compiler. This makes for an interesting problem
as parts of GCC can only be built with GCC@.
-To build a cross compiler, we first recommend building and installing a
+To build a cross compiler, we recommend first building and installing a
native compiler. You can then use the native GCC compiler to build the
cross compiler. The installed native compiler needs to be GCC version
2.95 or later.
@section Building in parallel
-GNU Make 3.79 and above, which is necessary to build GCC, support
+GNU Make 3.80 and above, which is necessary to build GCC, support
building in parallel. To activate this, you can use @samp{make -j 2}
instead of @samp{make}. You can also specify a bigger number, and
in most cases using a value greater than the number of processors in
@email{gcc@@gcc.gnu.org} detailing how the information should be changed.
If you find a bug, please report it following the
-@uref{../bugs.html,,bug reporting guidelines}.
+@uref{../bugs/,,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.7)
@item
@uref{#alpha-x-x,,alpha*-*-*}
@item
-@uref{#alpha-dec-osf,,alpha*-dec-osf*}
+@uref{#alpha-dec-osf51,,alpha*-dec-osf5.1}
@item
@uref{#arc-x-elf,,arc-*-elf}
@item
@item
@uref{#iq2000-x-elf,,iq2000-*-elf}
@item
+@uref{#lm32-x-elf,,lm32-*-elf}
+@item
+@uref{#lm32-x-uclinux,,lm32-*-uclinux}
+@item
@uref{#m32c-x-elf,,m32c-*-elf}
@item
@uref{#m32r-x-elf,,m32r-*-elf}
@item
@uref{#sparc-sun-solaris2,,sparc-sun-solaris2*}
@item
-@uref{#sparc-sun-solaris27,,sparc-sun-solaris2.7}
+@uref{#sparc-sun-solaris210,,sparc-sun-solaris2.10}
@item
@uref{#sparc-x-linux,,sparc-*-linux*}
@item
@html
<hr />
@end html
-@heading @anchor{alpha-dec-osf}alpha*-dec-osf*
+@heading @anchor{alpha-dec-osf51}alpha*-dec-osf5.1
Systems using processors that implement the DEC Alpha architecture and
-are running the DEC/Compaq Unix (DEC OSF/1, Digital UNIX, or Compaq
+are running the DEC/Compaq/HP Unix (DEC OSF/1, Digital UNIX, or Compaq/HP
Tru64 UNIX) operating system, for example the DEC Alpha AXP systems.
As of GCC 3.2, versions before @code{alpha*-dec-osf4} are no longer
supported. (These are the versions which identify themselves as DEC
-OSF/1.)
+OSF/1.) As of GCC 4.6, support for Tru64 UNIX V4.0 and V5.0 has been
+removed.
-In Digital Unix V4.0, virtual memory exhausted bootstrap failures
-may be fixed by configuring with @option{--with-gc=simple},
-reconfiguring Kernel Virtual Memory and Swap parameters
+On Tru64 UNIX, virtual memory exhausted bootstrap failures
+may be fixed by reconfiguring Kernel Virtual Memory and Swap parameters
per the @command{/usr/sbin/sys_check} Tuning Suggestions,
or applying the patch in
-@uref{http://gcc.gnu.org/ml/gcc/2002-08/msg00822.html}.
+@uref{http://gcc.gnu.org/ml/gcc/2002-08/msg00822.html}. Depending on
+the OS version used, you need a data segment size between 512 MB and
+1 GB, so simply use @command{ulimit -Sd unlimited}.
-In Tru64 UNIX V5.1, Compaq introduced a new assembler that does not
-currently (2001-06-13) work with @command{mips-tfile}. As a workaround,
-we need to use the old assembler, invoked via the barely documented
-@option{-oldas} option. To bootstrap GCC, you either need to use the
-Compaq C Compiler:
-
-@smallexample
- % CC=cc @var{srcdir}/configure [@var{options}] [@var{target}]
-@end smallexample
-
-or you can use a copy of GCC 2.95.3 or higher built on Tru64 UNIX V4.0:
-
-@smallexample
- % CC=gcc -Wa,-oldas @var{srcdir}/configure [@var{options}] [@var{target}]
-@end smallexample
-
-As of GNU binutils 2.11.2, neither GNU @command{as} nor GNU @command{ld}
+As of GNU binutils 2.20.1, neither GNU @command{as} nor GNU @command{ld}
are supported on Tru64 UNIX, so you must not configure GCC with
@option{--with-gnu-as} or @option{--with-gnu-ld}.
GCC writes a @samp{.verstamp} directive to the assembler output file
unless it is built as a cross-compiler. It gets the version to use from
the system header file @file{/usr/include/stamp.h}. If you install a
-new version of DEC Unix, you should rebuild GCC to pick up the new version
+new version of Tru64 UNIX, you should rebuild GCC to pick up the new version
stamp.
-@samp{make compare} may fail on old versions of DEC Unix unless you add
-@option{-save-temps} to @code{BOOT_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
-@code{stage2} compilations. The option @option{-save-temps} forces a
-fixed name to be used for the assembler input file, instead of a
-randomly chosen name in @file{/tmp}. Do not add @option{-save-temps}
-unless the comparisons fail without that option. If you add
-@option{-save-temps}, you will have to manually delete the @samp{.i} and
-@samp{.s} files after each series of compilations.
-
GCC now supports both the native (ECOFF) debugging format used by DBX
and GDB and an encapsulated STABS format for use only with GDB@. See the
discussion of the @option{--with-stabs} option of @file{configure} above
for more information on these formats and how to select them.
+@c FIXME: does this work at all? If so, perhaps make default.
There is a bug in DEC's assembler that produces incorrect line numbers
for ECOFF format when the @samp{.align} directive is used. To work
DBX@. DEC is now aware of this problem with the assembler and hopes to
provide a fix shortly.
+@c FIXME: still applicable?
+
@html
<hr />
@end html
@end html
@heading @anchor{ix86-x-solaris210}i?86-*-solaris2.10
Use this for Solaris 10 or later on x86 and x86-64 systems. This
-configuration is supported by GCC 4.0 and later versions only.
-
-It is recommended that you configure GCC to use the GNU assembler in
-@file{/usr/sfw/bin/gas} but the Sun linker, using the options
-@option{--with-gnu-as --with-as=/usr/sfw/bin/gas --without-gnu-ld
---with-ld=/usr/ccs/bin/ld}.
+configuration is supported by GCC 4.0 and later versions only. Unlike
+@samp{sparcv9-sun-solaris2*}, there is no corresponding 64-bit
+configuration like @samp{amd64-*-solaris2*} or @samp{x86_64-*-solaris2*}.
+@c FIXME: will there ever be?
+
+It is recommended that you configure GCC to use the GNU assembler, in
+@file{/usr/sfw/bin/gas}. The versions included in Solaris 10, from GNU
+binutils 2.15, and Solaris 11, from GNU binutils 2.19, work fine,
+although the current version, from GNU binutils
+2.20.1, is known to work, too. Recent versions of the Sun assembler in
+@file{/usr/ccs/bin/as} work almost as well, though.
+@c FIXME: as patch requirements?
+
+For linking, the Sun linker, is preferred. If you want to use the GNU
+linker instead, which is available in @file{/usr/sfw/bin/gld}, note that
+due to a packaging bug the version in Solaris 10, from GNU binutils
+2.15, cannot be used, while the version in Solaris 11, from GNU binutils
+2.19, works, as does the latest version, from GNU binutils 2.20.1.
+
+To use GNU @command{as}, configure with the options
+@option{--with-gnu-as --with-as=/usr/sfw/bin/gas}. It may be necessary
+to configure with @option{--without-gnu-ld --with-ld=/usr/ccs/bin/ld} to
+guarantee use of Sun @command{ld}.
+@c FIXME: why --without-gnu-ld --with-ld?
@html
<hr />
@html
<hr />
@end html
+@heading @anchor{lm32-x-elf}lm32-*-elf
+Lattice Mico32 processor.
+This configuration is intended for embedded systems.
+
+@html
+<hr />
+@end html
+@heading @anchor{lm32-x-uclinux}lm32-*-uclinux
+Lattice Mico32 processor.
+This configuration is intended for embedded systems running uClinux.
+
+@html
+<hr />
+@end html
@heading @anchor{m32c-x-elf}m32c-*-elf
Renesas M32C processor.
This configuration is intended for embedded systems.
@end html
@heading @anchor{mips-sgi-irix5}mips-sgi-irix5
+Support for IRIX 5 has been obsoleted in GCC 4.5, but can still be
+enabled by configuring with @option{--enable-obsolete}. Support will be
+removed in GCC 4.6.
+
In order to compile GCC on an SGI running IRIX 5, the @samp{compiler_dev.hdr}
subsystem must be installed from the IDO CD-ROM supplied by SGI@.
It is also available for download from
-@uref{ftp://ftp.sgi.com/sgi/IRIX5.3/iris-development-option-5.3.tardist}.
+@uref{http://freeware.sgi.com/ido.html}.
If you use the MIPS C compiler to bootstrap, it may be necessary
to increase its table size for switch statements with the
@option{-Wf,-XNg1500} option. If you use the @option{-O2}
optimization option, you also need to use @option{-Olimit 3000}.
+@c FIXME: verify.
+
+GCC must be configured to use GNU @command{as}. The latest version, from GNU
+binutils 2.20.1, is known to work.
To enable debugging under IRIX 5, you must use GNU binutils 2.15 or
later, and use the @option{--with-gnu-ld} @command{configure} option
-when configuring GCC@. You need to use GNU @command{ar} and @command{nm},
+when configuring GCC@.
+You need to use GNU @command{ar} and @command{nm},
also distributed with GNU binutils.
+@c FIXME: which parts of this are still true?
-Some users have reported that @command{/bin/sh} will hang during bootstrap.
-This problem can be avoided by running the commands:
+Configuring GCC with @command{/bin/sh} is @emph{extremely} slow and may
+even hang. This problem can be avoided by running @command{configure}
+like this:
@smallexample
- % CONFIG_SHELL=/bin/ksh
+ % CONFIG_SHELL=/usr/local/bin/bash
% export CONFIG_SHELL
+ % $CONFIG_SHELL @var{srcdir}/configure [@var{options}]
@end smallexample
-before starting the build.
+@noindent
+@command{/bin/ksh} doesn't work properly either.
@html
<hr />
@end html
@heading @anchor{mips-sgi-irix6}mips-sgi-irix6
+Support for IRIX 6 releases before 6.5 has been obsoleted in GCC 4.5,
+but can still be enabled by configuring with @option{--enable-obsolete}.
+Support will be removed in GCC 4.6, which will also disable support for
+the O32 ABI. It is @emph{strongly} recommended to upgrade to at least
+IRIX 6.5.18. This release introduced full ISO C99 support, though for
+the N32 and N64 ABIs only.
+
+To build and use GCC on IRIX 6, you need the IRIX Development Foundation
+(IDF) and IRIX Development Libraries (IDL). They are included with the
+IRIX 6.5 media and can be downloaded from
+@uref{http://freeware.sgi.com/idf_idl.html} for older IRIX 6 releases.
+
If you are using SGI's MIPSpro @command{cc} as your bootstrap compiler, you must
ensure that the N32 ABI is in use. To test this, compile a simple C
file with @command{cc} and then run @command{file} on the
test.o: ELF N32 MSB @dots{}
@end smallexample
+@noindent
If you see:
@smallexample
test.o: ELF 32-bit MSB @dots{}
@end smallexample
+@noindent
or
@smallexample
test.o: ELF 64-bit MSB @dots{}
@end smallexample
+@noindent
then your version of @command{cc} uses the O32 or N64 ABI by default. You
should set the environment variable @env{CC} to @samp{cc -n32}
before configuring GCC@.
test.o: ELF N32 MSB mips-3 @dots{}
@end smallexample
+@noindent
If you get:
@smallexample
test.o: ELF N32 MSB mips-4 @dots{}
@end smallexample
+@noindent
instead, you should set the environment variable @env{CC} to @samp{cc
-n32 -mips3} or @samp{gcc -mips3} respectively before configuring GCC@.
@code{memcmp}. Either add @code{-U__INLINE_INTRINSICS} to the @env{CC}
environment variable as a workaround or upgrade to MIPSpro C 7.4.1m.
-GCC on IRIX 6 is usually built to support the N32, O32 and N64 ABIs. If
+GCC on IRIX 6.5 is usually built to support the N32 and N64 ABIs. If
you build GCC on a system that doesn't have the N64 libraries installed
or cannot run 64-bit binaries,
you need to configure with @option{--disable-multilib} so GCC doesn't
-try to use them. This will disable building the O32 libraries, too.
+try to use them.
Look for @file{/usr/lib64/libc.so.1} to see if you
have the 64-bit libraries installed.
-To enable debugging for the O32 ABI, you must use GNU @command{as} from
-GNU binutils 2.15 or later. You may also use GNU @command{ld}, but
-this is not required and currently causes some problems with Ada.
+GCC must be configured with GNU @command{as}. The latest version, from GNU
+binutils 2.20.1, is known to work. On the other hand, bootstrap fails
+with GNU @command{ld} at least since GNU binutils 2.17.
The @option{--enable-libgcj}
option is disabled by default: IRIX 6 uses a very low default limit
@command{ld}. A sure fix is to increase this limit (@samp{ncargs}) to
its maximum of 262144 bytes. If you have root access, you can use the
@command{systune} command to do this.
+@c FIXME: does this work with current libtool?
@code{wchar_t} support in @samp{libstdc++} is not available for old
IRIX 6.5.x releases, @math{x < 19}. The problem cannot be autodetected
and in order to build GCC for such targets you need to configure with
@option{--disable-wchar_t}.
-See @uref{http://freeware.sgi.com/} for more
-information about using GCC on IRIX platforms.
-
@html
<hr />
@end html
@html
<hr />
@end html
+@heading @anchor{rx-x-elf}rx-*-elf
+The Renesas RX processor. See
+@uref{http://eu.renesas.com/fmwk.jsp?cnt=rx600_series_landing.jsp&fp=/products/mpumcu/rx_family/rx600_series}
+for more information about this processor.
+
+@html
+<hr />
+@end html
@heading @anchor{s390-x-linux}s390-*-linux*
S/390 system running GNU/Linux for S/390@.
@c alone is too unspecific and must be avoided.
@heading @anchor{x-x-solaris2}*-*-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 the
+Support for Solaris 7 has been obsoleted in GCC 4.5, but can still be
+enabled by configuring with @option{--enable-obsolete}. Support will be
+removed in GCC 4.6.
+
+Sun does not ship a C compiler with Solaris 2, though you can download
+the Sun Studio compilers for free from
+@uref{http://developers.sun.com/sunstudio/downloads/}. Alternatively,
+you can install a pre-built GCC to bootstrap and install GCC. See the
@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}. We therefore
+@samp{libstdc++-v3}, @samp{boehm-gc} or @samp{libjava}. We therefore
recommend using the following initial sequence of commands
@smallexample
% export CONFIG_SHELL
@end smallexample
+@noindent
and proceed as described in @uref{configure.html,,the configure instructions}.
In addition we strongly recommend specifying an absolute path to invoke
-@var{srcdir}/configure.
+@command{@var{srcdir}/configure}.
Solaris 2 comes with a number of optional OS packages. Some of these
are needed to use GCC fully, namely @code{SUNWarc},
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.
-We recommend the use of GNU binutils 2.14 or later, or the vendor tools
-(Sun @command{as}, Sun @command{ld}). Note that your mileage may vary
+We recommend the use of the Sun assembler or the GNU assembler, in
+conjunction with the Sun linker. The GNU @command{as}
+versions included in Solaris 10, from GNU binutils 2.15, and Solaris 11,
+from GNU binutils 2.19, are known to work. They can be found in
+@file{/usr/sfw/bin/gas}. Current versions of GNU binutils (2.20.1)
+are known to work as well. 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://sourceware.org/ml/binutils-cvs/2004-09/msg00036.html} to the
-release.
-
-We recommend the use of GNU binutils 2.16 or later in conjunction with GCC
-4.x, or the vendor tools (Sun @command{as}, Sun @command{ld}). However,
-for Solaris 10 and above, an additional patch is required in order for the
-GNU linker to be able to cope with a new flavor of shared libraries. You
-can obtain a working version by checking out the binutils-2_16-branch from
-the CVS repository or applying the patch
-@uref{http://sourceware.org/ml/binutils-cvs/2005-07/msg00122.html} to the
-release.
+@c FIXME: still?
+GNU @command{ld} usually works as well, although the version included in
+Solaris 10 cannot be used due to several bugs. Again, the current
+version (2.20.1) is known to work, but generally lacks platform specific
+features, so better stay with Sun @command{ld}.
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 that omitting the type means @code{int}; this assumption worked for
-C89 but is wrong for C++, and is now wrong for C99 also.
+C90 but is wrong for C++, and is now wrong for C99 also.
@command{g++} accepts such (invalid) constructs with the option
@option{-fpermissive}; it will assume that any missing type is @code{int}
-(as defined by C89).
+(as defined by C90).
-There are patches for Solaris 7 (108376-21 or newer for SPARC,
-108377-20 for Intel), and Solaris 8 (108652-24 or newer for SPARC,
+There are patches for 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
@end html
@heading @anchor{sparc-sun-solaris2}sparc-sun-solaris2*
-When GCC is configured to use binutils 2.14 or later the binaries
+When GCC is configured to use GNU binutils 2.14 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.
failure in form of a miscompilation of the stage1 compiler by the Sun
compiler. This is Sun bug 4974440. This is fixed with patch 112760-07.
-GCC 3.4 changed the default debugging format from STABS to DWARF-2 for
+GCC 3.4 changed the default debugging format from Stabs to DWARF-2 for
32-bit code on Solaris 7 and later. If you use the Sun assembler, this
change apparently runs afoul of Sun bug 4910101 (which is referenced as
an x86-only problem by Sun, probably because they do not use DWARF-2).
.debug_info cannot be processed at runtime: relocation ignored.
@end smallexample
+@noindent
To work around this problem, compile with @option{-gstabs+} instead of
plain @option{-g}.
When configuring the GNU Multiple Precision Library (GMP) or the MPFR
library on a Solaris 7 or later system, the canonical target triplet
must be specified as the @command{build} parameter on the configure
-line. This triplet can be obtained by invoking ./config.guess in
+line. This triplet can be obtained by invoking @command{./config.guess} in
the toplevel source directory of GCC (and not that of GMP or MPFR).
-For example on a Solaris 7 system:
+For example on a Solaris 9 system:
@smallexample
- % ./configure --build=sparc-sun-solaris2.7 --prefix=xxx
+ % ./configure --build=sparc-sun-solaris2.9 --prefix=xxx
@end smallexample
@html
@end html
@heading @anchor{sparc-sun-solaris27}sparc-sun-solaris2.7
+@emph{Note} that this configuration has been obsoleted in GCC 4.5, and will be
+removed in GCC 4.6.
+
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
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:
+@samp{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
+@noindent
This bug has been fixed in the final 5.0 version of the assembler.
A similar problem was reported for version Sun WorkShop 6 99/08/18 of the
symbol <unknown>: offset 0xfccd33ad is non-aligned
@end smallexample
+@noindent
This bug has been fixed in more recent revisions of the assembler.
@html
<hr />
@end html
+@heading @anchor{sparc-sun-solaris210}sparc-sun-solaris2.10
+
+There is a bug in older versions of the Sun assembler which breaks
+thread-local storage (TLS). A typical error message is
+
+@smallexample
+ld: fatal: relocation error: R_SPARC_TLS_LE_HIX22: file /var/tmp//ccamPA1v.o:
+ symbol <unknown>: bad symbol type SECT: symbol type must be TLS
+@end smallexample
+
+@noindent
+This bug is fixed in Sun patch 118683-03 or later.
+
+@html
+<hr />
+@end html
@heading @anchor{sparc-x-linux}sparc-*-linux*
GCC versions 3.0 and higher require binutils 2.11.2 and glibc 2.2.4
When configuring the GNU Multiple Precision Library (GMP) or the
MPFR library, the canonical target triplet must be specified as
the @command{build} parameter on the configure line. For example
-on a Solaris 7 system:
+on a Solaris 9 system:
@smallexample
- % ./configure --build=sparc64-sun-solaris2.7 --prefix=xxx
+ % ./configure --build=sparc64-sun-solaris2.9 --prefix=xxx
@end smallexample
The following compiler flags must be specified in the configure
% CC="cc -xarch=v9 -xildoff" @var{srcdir}/configure [@var{options}] [@var{target}]
@end smallexample
+@noindent
@option{-xarch=v9} specifies the SPARC-V9 architecture to the Sun toolchain
and @option{-xildoff} turns off the incremental linker.
@end html
@heading @anchor{sparcv9-x-solaris2}sparcv9-*-solaris2*
-This is a synonym for sparc64-*-solaris2*.
+This is a synonym for @samp{sparc64-*-solaris2*}.
@html
<hr />
GCC will build under Cygwin without modification; it does not build
with Microsoft's C++ compiler and there are no plans to make it do so.
-Cygwin can be compiled with i?86-pc-cygwin.
+The Cygwin native compiler can be configured to target any 32-bit x86
+cpu architecture desired; the default is i686-pc-cygwin. It should be
+used with as up-to-date a version of binutils as possible; use either
+the latest official GNU binutils release in the Cygwin distribution,
+or version 2.20 or above if building your own.
@html
<hr />