Index: gcc/gcc/doc/install.texi |
diff --git a/gcc/gcc/doc/install.texi b/gcc/gcc/doc/install.texi |
index 56fd99bba3fa7c0b8f2dbe23805a085c979be318..0331ca32e083ae3328abfa6e7e9ec9595472a28e 100644 |
--- a/gcc/gcc/doc/install.texi |
+++ b/gcc/gcc/doc/install.texi |
@@ -45,7 +45,8 @@ |
@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 |
@@ -302,7 +303,7 @@ Necessary (only on some platforms) to untar the source code. Many |
systems' @command{tar} programs will also work, only try GNU |
@command{tar} if you have problems. |
-@item GNU Multiple Precision Library (GMP) version 4.1 (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 |
@@ -311,21 +312,25 @@ and @option{--with-gmp-include}. Alternatively, if a GMP source |
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 version of MPFR that is bundled with |
-GMP 4.1.x contains numerous bugs. Although GCC may appear to function |
-with the buggy versions of MPFR, there are a few bugs that will not be |
-fixed when using this version. It is strongly recommended to upgrade |
-to the recommended version of MPFR. |
- |
-The @option{--with-mpfr} configure option should be used if your MPFR |
-Library is not installed in your default library search path. See also |
-@option{--with-mpfr-lib} and @option{--with-mpfr-include}. |
-Alternatively, if a MPFR source distribution is found in a subdirectory |
-of your GCC sources named @file{mpfr}, it will be built together with |
-GCC@. |
+@uref{http://www.mpfr.org/}. The @option{--with-mpfr} configure |
+option should be used if your MPFR Library is not installed in your |
+default library search path. See also @option{--with-mpfr-lib} and |
+@option{--with-mpfr-include}. Alternatively, if a MPFR source |
+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 |
@@ -350,18 +355,28 @@ not installed in your default library search path. |
Necessary to build libgcj, the GCJ runtime. |
-@end table |
+@item libelf version 0.8.12 (or later) |
+ |
+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 |
+Solaris 2 does work. |
+The @option{--with-libelf} configure option should be used if libelf is |
+not installed in your default library search patch. |
+ |
+@end table |
@heading Tools/packages necessary for modifying GCC |
@table @asis |
-@item autoconf version 2.59 |
-@itemx GNU m4 version 1.4 (or later) |
+@item autoconf version 2.64 |
+@itemx GNU m4 version 1.4.6 (or later) |
Necessary when modifying @file{configure.ac}, @file{aclocal.m4}, etc.@: |
to regenerate @file{configure} and @file{config.in} files. |
-@item automake version 1.9.6 |
+@item automake version 1.11.1 |
Necessary when modifying a @file{Makefile.am} file to regenerate its |
associated @file{Makefile.in}. |
@@ -372,8 +387,8 @@ file. Specifically this applies to the @file{gcc}, @file{intl}, |
as any of their subdirectories. |
For directories that use automake, GCC requires the latest release in |
-the 1.9.x series, which is currently 1.9.6. When regenerating a directory |
-to a newer version, please update all the directories using an older 1.9.x |
+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. |
@item gettext version 0.14.5 (or later) |
@@ -470,7 +485,7 @@ the GCC-specific entry point. You can download a suitable jar from |
@itemx antlr binary |
If you wish to build the @command{gjdoc} binary in libjava, you will |
-need to have a @file{antlr.jar} library available. The library is |
+need to have an @file{antlr.jar} library available. The library is |
searched in system locations but can be configured with |
@option{--with-antlr-jar=} instead. When configuring with |
@option{--enable-java-maintainer-mode}, you will need to have one of |
@@ -531,11 +546,11 @@ components of the binutils you intend to build alongside the compiler |
(@file{bfd}, @file{binutils}, @file{gas}, @file{gprof}, @file{ld}, |
@file{opcodes}, @dots{}) to the directory containing the GCC sources. |
-Likewise, the GMP and MPFR libraries can be automatically built together |
-with GCC. Unpack the GMP and/or MPFR source distributions in the |
-directory containing the GCC sources and rename their directories to |
-@file{gmp} and @file{mpfr}, respectively (or use symbolic links with the |
-same name). |
+Likewise the GMP, MPFR and MPC libraries can be automatically built |
+together with GCC. Unpack the GMP, MPFR and/or MPC source |
+distributions in the directory containing the GCC sources and rename |
+their directories to @file{gmp}, @file{mpfr} and @file{mpc}, |
+respectively (or use symbolic links with the same name). |
@html |
<hr /> |
@@ -566,8 +581,8 @@ We use @var{srcdir} to refer to the toplevel source directory for |
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 |
@@ -578,7 +593,7 @@ variable to an automounter-aware @command{pwd} command, e.g., |
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 |
@@ -647,13 +662,13 @@ The default value refers to the FSF's GCC bug tracker. |
@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}} |
when configuring a cross compiler; examples of valid targets would be |
-m68k-coff, sh-elf, etc. |
+m68k-elf, sh-elf, etc. |
@item |
Specifying just @var{target} instead of @option{--target=@var{target}} |
@@ -709,25 +724,42 @@ The default is @file{@var{exec-prefix}/libexec}. |
Specify the installation directory for the shared libgcc library. The |
default is @file{@var{libdir}}. |
+@item --datarootdir=@var{dirname} |
+Specify the root of the directory tree for read-only architecture-independent |
+data files referenced by GCC@. The default is @file{@var{prefix}/share}. |
+ |
@item --infodir=@var{dirname} |
Specify the installation directory for documentation in info format. |
-The default is @file{@var{prefix}/info}. |
+The default is @file{@var{datarootdir}/info}. |
@item --datadir=@var{dirname} |
Specify the installation directory for some architecture-independent |
-data files referenced by GCC@. The default is @file{@var{prefix}/share}. |
+data files referenced by GCC@. The default is @file{@var{datarootdir}}. |
+ |
+@item --docdir=@var{dirname} |
+Specify the installation directory for documentation files (other |
+than Info) for GCC@. The default is @file{@var{datarootdir}/doc}. |
+ |
+@item --htmldir=@var{dirname} |
+Specify the installation directory for HTML documentation files. |
+The default is @file{@var{docdir}}. |
+ |
+@item --pdfdir=@var{dirname} |
+Specify the installation directory for PDF documentation files. |
+The default is @file{@var{docdir}}. |
@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 manpages |
+@file{@var{datarootdir}/man}. (Note that the manual pages are only extracts |
+from 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.) |
@item --with-gxx-include-dir=@var{dirname} |
Specify |
-the installation directory for G++ header files. The default is |
-@file{@var{prefix}/include/c++/@var{version}}. |
+the installation directory for G++ header files. The default depends |
+on other configuration options, and differs between cross and native |
+configurations. |
@end table |
@@ -988,6 +1020,57 @@ sysv, aix. |
@end table |
+@item --with-multilib-list=@var{list} |
+@itemx --without-multilib-list |
+Specify what multilibs to build. |
+Currently only implemented for sh*-*-*. |
+ |
+@var{list} is a comma separated list of CPU names. These must be of the |
+form @code{sh*} or @code{m*} (in which case they match the compiler option |
+for that processor). The list should not contain any endian options - |
+these are handled by @option{--with-endian}. |
+ |
+If @var{list} is empty, then there will be no multilibs for extra |
+processors. The multilib for the secondary endian remains enabled. |
+ |
+As a special case, if an entry in the list starts with a @code{!} |
+(exclamation point), then it is added to the list of excluded multilibs. |
+Entries of this sort should be compatible with @samp{MULTILIB_EXCLUDES} |
+(once the leading @code{!} has been stripped). |
+ |
+If @option{--with-multilib-list} is not given, then a default set of |
+multilibs is selected based on the value of @option{--target}. This is |
+usually the complete set of libraries, but some targets imply a more |
+specialized subset. |
+ |
+Example 1: to configure a compiler for SH4A only, but supporting both |
+endians, with little endian being the default: |
+@smallexample |
+--with-cpu=sh4a --with-endian=little,big --with-multilib-list= |
+@end smallexample |
+ |
+Example 2: to configure a compiler for both SH4A and SH4AL-DSP, but with |
+only little endian SH4AL: |
+@smallexample |
+--with-cpu=sh4a --with-endian=little,big --with-multilib-list=sh4al,!mb/m4al |
+@end smallexample |
+ |
+@item --with-endian=@var{endians} |
+Specify what endians to use. |
+Currently only implemented for sh*-*-*. |
+ |
+@var{endians} may be one of the following: |
+@table @code |
+@item big |
+Use big endian exclusively. |
+@item little |
+Use little endian exclusively. |
+@item big,little |
+Use big endian by default. Provide a multilib for little endian. |
+@item little,big |
+Use little endian by default. Provide a multilib for big endian. |
+@end table |
+ |
@item --enable-threads |
Specify that the target |
supports threads. This affects the Objective-C compiler and runtime |
@@ -1036,7 +1119,8 @@ RTEMS thread support. |
@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 |
@@ -1065,8 +1149,8 @@ Specify which cpu variant the compiler should generate code for by default. |
This option is only supported on some targets, including ARM, i386, M68k, |
PowerPC, and SPARC@. The @option{--with-cpu-32} and |
@option{--with-cpu-64} options specify separate default CPUs for |
-32-bit and 64-bit modes; these options are only supported for i386 and |
-x86-64. |
+32-bit and 64-bit modes; these options are only supported for i386, |
+x86-64 and PowerPC. |
@item --with-schedule=@var{cpu} |
@itemx --with-arch=@var{cpu} |
@@ -1088,6 +1172,11 @@ of the arguments depend on the target. |
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. |
@@ -1113,6 +1202,14 @@ not provide them. |
On MIPS targets, make @option{-mno-llsc} the default when no |
@option{-mllsc} option is passed. |
+@item --with-synci |
+On MIPS targets, make @option{-msynci} the default when no |
+@option{-mno-synci} option is passed. |
+ |
+@item --without-synci |
+On MIPS targets, make @option{-mno-synci} the default when no |
+@option{-msynci} option is passed. This is the default. |
+ |
@item --with-mips-plt |
On MIPS targets, make use of copy relocations and PLTs. |
These features are extensions to the traditional |
@@ -1132,13 +1229,14 @@ Specify that 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 |
@@ -1147,9 +1245,13 @@ opposite effect. If neither option is specified, the configure script |
will try to guess whether the @code{.init_array} and |
@code{.fini_array} sections are supported and, if they are, use them. |
+@item --enable-build-with-cxx |
+Build GCC using a C++ compiler rather than a C compiler. This is an |
+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 |
@@ -1165,7 +1267,7 @@ this process, you can configure with @option{--disable-bootstrap}. |
@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}. |
@@ -1255,8 +1357,10 @@ powerpc-linux for powerpc64-linux, only generates 32-bit code. This |
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. |
@@ -1340,7 +1444,7 @@ increase the risk of undetected internal errors causing wrong code to be |
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 |
@@ -1442,17 +1546,24 @@ When neither of these configure options are used, the default will be |
@itemx --with-mpfr=@var{pathname} |
@itemx --with-mpfr-include=@var{pathname} |
@itemx --with-mpfr-lib=@var{pathname} |
-If you do not have GMP (the GNU Multiple Precision library) and the |
-MPFR Libraries installed in a standard location and you want to build |
-GCC, you can explicitly specify the directory where they are installed |
-(@samp{--with-gmp=@var{gmpinstalldir}}, |
-@samp{--with-mpfr=@var{mpfrinstalldir}}). The |
+@itemx --with-mpc=@var{pathname} |
+@itemx --with-mpc-include=@var{pathname} |
+@itemx --with-mpc-lib=@var{pathname} |
+If you do not have GMP (the GNU Multiple Precision library), the MPFR |
+library and/or the MPC library installed in a standard location and |
+you want to build GCC, you can explicitly specify the directory where |
+they are installed (@samp{--with-gmp=@var{gmpinstalldir}}, |
+@samp{--with-mpfr=@var{mpfrinstalldir}}, |
+@samp{--with-mpc=@var{mpcinstalldir}}). The |
@option{--with-gmp=@var{gmpinstalldir}} option is shorthand for |
@option{--with-gmp-lib=@var{gmpinstalldir}/lib} and |
@option{--with-gmp-include=@var{gmpinstalldir}/include}. Likewise the |
@option{--with-mpfr=@var{mpfrinstalldir}} option is shorthand for |
@option{--with-mpfr-lib=@var{mpfrinstalldir}/lib} and |
-@option{--with-mpfr-include=@var{mpfrinstalldir}/include}. If these |
+@option{--with-mpfr-include=@var{mpfrinstalldir}/include}, also the |
+@option{--with-mpc=@var{mpcinstalldir}} option is shorthand for |
+@option{--with-mpc-lib=@var{mpcinstalldir}/lib} and |
+@option{--with-mpc-include=@var{mpcinstalldir}/include}. If these |
shorthand assumptions are not correct, you can use the explicit |
include and lib options directly. |
@@ -1485,22 +1596,84 @@ linking with a shared copy of PPL, you probably do not need this |
option; shared library dependencies will cause the linker to search |
for the standard C++ library automatically. |
+@item --with-stage1-ldflags=@var{flags} |
+This option may be used to set linker flags to be used when linking |
+stage 1 of GCC. These are also used when linking GCC if configured with |
+@option{--disable-bootstrap}. By default no special flags are used. |
+ |
+@item --with-stage1-libs=@var{libs} |
+This option may be used to set libraries to be used when linking stage 1 |
+of GCC. These are also used when linking GCC if configured with |
+@option{--disable-bootstrap}. The default is the argument to |
+@option{--with-host-libstdcxx}, if specified. |
+ |
+@item --with-boot-ldflags=@var{flags} |
+This option may be used to set linker flags to be used when linking |
+stage 2 and later when bootstrapping GCC. By default no special flags |
+are used. |
+ |
+@item --with-boot-libs=@var{libs} |
+This option may be used to set libraries to be used when linking stage 2 |
+and later when bootstrapping GCC. The default is the argument to |
+@option{--with-host-libstdcxx}, if specified. |
+ |
@item --with-debug-prefix-map=@var{map} |
Convert source directory names using @option{-fdebug-prefix-map} when |
building runtime libraries. @samp{@var{map}} is a space-separated |
list of maps of the form @samp{@var{old}=@var{new}}. |
+@item --enable-linker-build-id |
+Tells GCC to pass @option{--build-id} option to the linker for all final |
+links (links performed without the @option{-r} or @option{--relocatable} |
+option), if the linker supports it. If you specify |
+@option{--enable-linker-build-id}, but your linker does not |
+support @option{--build-id} option, a warning is issued and the |
+@option{--enable-linker-build-id} option is ignored. The default is off. |
+ |
+@item --enable-gnu-unique-object |
+@itemx --disable-gnu-unique-object |
+Tells GCC to use the gnu_unique_object relocation for C++ template |
+static data members and inline function local statics. Enabled by |
+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 |
@@ -1508,6 +1681,11 @@ 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 |
@@ -1540,7 +1718,7 @@ compiler. When crossing to GNU/Linux, you need the headers so GCC |
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 |
@@ -1559,7 +1737,7 @@ that will be used while building GCC itself. This option can be useful |
if the directory layouts are different between the system you are building |
GCC on, and the system where you will deploy it. |
-For example, on a @option{ia64-hp-hpux} system, you may have the GNU |
+For example, on an @samp{ia64-hp-hpux} system, you may have the GNU |
assembler and linker in @file{/usr/bin}, and the native tools in a |
different path, and build a toolchain that expects to find the |
native tools in @file{/usr/bin}. |
@@ -1740,6 +1918,9 @@ not specified, then the Python modules are installed in $(prefix)/share/python. |
@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, |
@@ -1928,7 +2109,7 @@ bootstrapped, you can use @code{CFLAGS_FOR_TARGET} to modify their |
compilation flags, as for non-bootstrapped target libraries. |
Again, if the native compiler miscompiles the stage1 compiler, you may |
need to work around this by avoiding non-working parts of the stage1 |
-compiler. Use @code{STAGE1_LIBCFLAGS} to this end. |
+compiler. Use @code{STAGE1_TFLAGS} to this end. |
If you used the flag @option{--enable-languages=@dots{}} to restrict |
the compilers to be built, only those you've actually enabled will be |
@@ -1952,6 +2133,76 @@ the one you are building on: for example, you could build a |
@code{powerpc64-unknown-linux-gnu} host. In this case, pass |
@option{--enable-bootstrap} to the configure script. |
+@code{BUILD_CONFIG} can be used to bring in additional customization |
+to the build. It can be set to a whitespace-separated list of names. |
+For each such @code{NAME}, top-level @file{config/@code{NAME}.mk} will |
+be included by the top-level @file{Makefile}, bringing in any settings |
+it contains. The default @code{BUILD_CONFIG} can be set using the |
+configure option @option{--with-build-config=@code{NAME}...}. Some |
+examples of supported build configurations are: |
+ |
+@table @asis |
+@item @samp{bootstrap-O1} |
+Removes any @option{-O}-started option from @code{BOOT_CFLAGS}, and adds |
+@option{-O1} to it. @samp{BUILD_CONFIG=bootstrap-O1} is equivalent to |
+@samp{BOOT_CFLAGS='-g -O1'}. |
+ |
+@item @samp{bootstrap-O3} |
+Analogous to @code{bootstrap-O1}. |
+ |
+@item @samp{bootstrap-debug} |
+Verifies that the compiler generates the same executable code, whether |
+or not it is asked to emit debug information. To this end, this |
+option builds stage2 host programs without debug information, and uses |
+@file{contrib/compare-debug} to compare them with the stripped stage3 |
+object files. If @code{BOOT_CFLAGS} is overridden so as to not enable |
+debug information, stage2 will have it, and stage3 won't. This option |
+is enabled by default when GCC bootstrapping is enabled, if |
+@code{strip} can turn object files compiled with and without debug |
+info into identical object files. In addition to better test |
+coverage, this option makes default bootstraps faster and leaner. |
+ |
+@item @samp{bootstrap-debug-big} |
+Rather than comparing stripped object files, as in |
+@code{bootstrap-debug}, this option saves internal compiler dumps |
+during stage2 and stage3 and compares them as well, which helps catch |
+additional potential problems, but at a great cost in terms of disk |
+space. It can be specified in addition to @samp{bootstrap-debug}. |
+ |
+@item @samp{bootstrap-debug-lean} |
+This option saves disk space compared with @code{bootstrap-debug-big}, |
+but at the expense of some recompilation. Instead of saving the dumps |
+of stage2 and stage3 until the final compare, it uses |
+@option{-fcompare-debug} to generate, compare and remove the dumps |
+during stage3, repeating the compilation that already took place in |
+stage2, whose dumps were not saved. |
+ |
+@item @samp{bootstrap-debug-lib} |
+This option tests executable code invariance over debug information |
+generation on target libraries, just like @code{bootstrap-debug-lean} |
+tests it on host programs. It builds stage3 libraries with |
+@option{-fcompare-debug}, and it can be used along with any of the |
+@code{bootstrap-debug} options above. |
+ |
+There aren't @code{-lean} or @code{-big} counterparts to this option |
+because most libraries are only build in stage3, so bootstrap compares |
+would not get significant coverage. Moreover, the few libraries built |
+in stage2 are used in stage3 host programs, so we wouldn't want to |
+compile stage2 libraries with different options for comparison purposes. |
+ |
+@item @samp{bootstrap-debug-ckovw} |
+Arranges for error messages to be issued if the compiler built on any |
+stage is run without the option @option{-fcompare-debug}. This is |
+useful to verify the full @option{-fcompare-debug} testing coverage. It |
+must be used along with @code{bootstrap-debug-lean} and |
+@code{bootstrap-debug-lib}. |
+ |
+@item @samp{bootstrap-time} |
+Arranges for the run time of each program started by the GCC driver, |
+built in any stage, to be logged to @file{time.log}, in the top level of |
+the build tree. |
+ |
+@end table |
@section Building a cross compiler |
@@ -1959,7 +2210,7 @@ When building a cross compiler, it is not generally possible to do a |
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. |
@@ -2039,7 +2290,7 @@ compilation options. Check your target's definition of |
@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 |
@@ -2453,7 +2704,7 @@ incomplete or out of date. Send a note to |
@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) |
@@ -2574,15 +2825,6 @@ The @uref{http://gcc.gnu.org/wiki/GFortranBinaries,,GFortran Wiki} has |
links to GNU Fortran binaries for several platforms. |
@end itemize |
-In addition to those specific offerings, you can get a binary |
-distribution CD-ROM from the |
-@uref{http://www.gnu.org/order/order.html,,Free Software Foundation}. |
-It contains binaries for a number of platforms, and |
-includes not only GCC, but other stuff as well. The current CD does |
-not contain the latest version of GCC, but it should allow |
-bootstrapping the compiler. An updated version of that disk is in the |
-works. |
- |
@html |
<hr /> |
<p> |
@@ -2625,8 +2867,6 @@ information are. |
@uref{#arc-x-elf,,arc-*-elf} |
@item |
@uref{#arm-x-elf,,arm-*-elf} |
-@uref{#arm-x-coff,,arm-*-coff} |
-@uref{#arm-x-aout,,arm-*-aout} |
@item |
@uref{#avr,,avr} |
@item |
@@ -2648,6 +2888,8 @@ information are. |
@item |
@uref{#ix86-x-linux,,i?86-*-linux*} |
@item |
+@uref{#ix86-x-solaris289,,i?86-*-solaris2.[89]} |
+@item |
@uref{#ix86-x-solaris210,,i?86-*-solaris2.10} |
@item |
@uref{#ia64-x-linux,,ia64-*-linux} |
@@ -2658,6 +2900,10 @@ information are. |
@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} |
@@ -2670,6 +2916,8 @@ information are. |
@item |
@uref{#m68k-uclinux,,m68k-uclinux} |
@item |
+@uref{#mep-x-elf,,mep-*-elf} |
+@item |
@uref{#mips-x-x,,mips-*-*} |
@item |
@uref{#mips-sgi-irix5,,mips-sgi-irix5} |
@@ -2708,6 +2956,8 @@ information are. |
@item |
@uref{#sparc-sun-solaris27,,sparc-sun-solaris2.7} |
@item |
+@uref{#sparc-sun-solaris210,,sparc-sun-solaris2.10} |
+@item |
@uref{#sparc-x-linux,,sparc-*-linux*} |
@item |
@uref{#sparc64-x-solaris2,,sparc64-*-solaris2*} |
@@ -2728,7 +2978,7 @@ information are. |
@item |
@uref{#x-x-interix,,*-*-interix} |
@item |
-@uref{#x-x-mingw,,*-*-mingw} |
+@uref{#x-x-mingw32,,*-*-mingw32} |
@item |
@uref{#os2,,OS/2} |
@item |
@@ -2763,61 +3013,38 @@ shared libraries. |
@end html |
@heading @anchor{alpha-dec-osf}alpha*-dec-osf* |
Systems using processors that implement the DEC Alpha architecture and |
-are running the DEC/Compaq Unix (DEC OSF/1, Digital UNIX, or Compaq |
+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.5, support for Tru64 UNIX V4.0 and V5.0 has been |
+obsoleted, but can still be enabled by configuring with |
+@option{--enable-obsolete}. Support will be removed in GCC 4.6. |
-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}. |
- |
-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 |
+@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}. |
-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 |
@@ -2831,6 +3058,8 @@ To avoid this behavior, specify @option{-gstabs+} and use GDB instead of |
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 |
@@ -2850,21 +3079,6 @@ and @code{arm-*-rtems}. |
@html |
<hr /> |
@end html |
-@heading @anchor{arm-x-coff}arm-*-coff |
-ARM-family processors. Note that there are two different varieties |
-of PE format subtarget supported: @code{arm-wince-pe} and |
-@code{arm-pe} as well as a standard COFF target @code{arm-*-coff}. |
- |
-@html |
-<hr /> |
-@end html |
-@heading @anchor{arm-x-aout}arm-*-aout |
-ARM-family processors. These targets support the AOUT file format: |
-@code{arm-*-aout}, @code{arm-*-netbsd}. |
- |
-@html |
-<hr /> |
-@end html |
@heading @anchor{avr}avr |
ATMEL AVR-family micro controllers. These are used in embedded |
@@ -2994,48 +3208,37 @@ and includes all the necessary compilation tools and libraries. |
@end html |
@heading @anchor{x-x-freebsd}*-*-freebsd* |
-The version of binutils installed in @file{/usr/bin} probably works with |
-this release of GCC@. However, on FreeBSD 4, bootstrapping against the |
-latest FSF binutils is known to improve overall testsuite results; and, |
-on FreeBSD/alpha, using binutils 2.14 or later is required to build libjava. |
- |
-Support for FreeBSD 1 was discontinued in GCC 3.2. |
- |
-Support for FreeBSD 2 will be discontinued after GCC 3.4. The |
-following was true for GCC 3.1 but the current status is unknown. |
-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 |
-place. FreeBSD 2.2.7 has been known to bootstrap completely; however, |
-it is unknown which version of binutils was used (it is assumed that it |
-was the system copy in @file{/usr/bin}) and C++ EH failures were noted. |
- |
-For FreeBSD using the ELF file format: DWARF 2 debugging is now the |
-default for all CPU architectures. It had been the default on |
-FreeBSD/alpha since its inception. You may use @option{-gstabs} instead |
-of @option{-g}, if you really want the old debugging format. There are |
+Support for FreeBSD 1 was discontinued in GCC 3.2. Support for |
+FreeBSD 2 (and any mutant a.out variants of FreeBSD 3) was |
+discontinued in GCC 4.0. |
+ |
+In GCC 4.5, we enabled the use of @code{dl_iterate_phdr} inside boehm-gc on |
+FreeBSD 7 or later. In order to better match the configuration of the |
+FreeBSD system compiler: We also enabled the check to see if libc |
+provides SSP support (which it does on FreeBSD 7), the use of |
+@code{dl_iterate_phdr} inside @file{libgcc_s.so.1} (on FreeBSD 7 or later) |
+and the use of @code{__cxa_atexit} by default (on FreeBSD 6 or later). |
+ |
+We support FreeBSD using the ELF file format with DWARF 2 debugging |
+for all CPU architectures. You may use @option{-gstabs} instead of |
+@option{-g}, if you really want the old debugging format. There are |
no known issues with mixing object files and libraries with different |
-debugging formats. Otherwise, this release of GCC should now match more |
-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 4.9-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, 4.8-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-*-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 |
-assumption about the thread library). Multi-threaded boehm-gc (required for |
-libjava) exposes severe threaded signal-handling bugs on FreeBSD before |
-4.5-RELEASE@. Other CPU architectures |
-supported by FreeBSD will require additional configuration tuning in, at |
-the very least, both boehm-gc and libffi. |
- |
-Shared @file{libgcc_s.so} is now built and installed by default. |
+debugging formats. Otherwise, this release of GCC should now match |
+more 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 7.2-STABLE@. 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, 4.8, 4.9 and 5-CURRENT@. |
+ |
+The version of binutils installed in @file{/usr/bin} probably works |
+with this release of GCC@. Bootstrapping against the latest GNU |
+binutils and/or the version found in @file{/usr/ports/devel/binutils} has |
+been known to enable additional features and improve overall testsuite |
+results. However, it is currently known that boehm-gc (which itself |
+is required for java) may not configure properly on FreeBSD prior to |
+the FreeBSD 7.0 release with GNU binutils after 2.16.1. |
@html |
<hr /> |
@@ -3265,14 +3468,52 @@ found on @uref{http://www.bitwizard.nl/sig11/,,www.bitwizard.nl}. |
@html |
<hr /> |
@end html |
+@heading @anchor{ix86-x-solaris289}i?86-*-solaris2.[89] |
+The Sun assembler in Solaris 8 and 9 has several bugs and limitations. |
+While GCC works around them, several features are missing, so it is |
+@c FIXME: which ones? |
+recommended to use the GNU assembler instead. There is no bundled |
+version, but the current version, from GNU binutils 2.20.1, is known to |
+work. |
+ |
+Solaris~2/x86 doesn't support the execution of SSE/SSE2 instructions |
+before Solaris~9 4/04, even if the CPU supports them. Programs will |
+receive @code{SIGILL} if they try. The fix is available both in |
+Solaris~9 Update~6 and kernel patch 112234-12 or newer. There is no |
+corresponding patch for Solaris 8. To avoid this problem, |
+@option{-march} defaults to @samp{pentiumpro} on Solaris 8 and 9. If |
+you have the patch installed, you can configure GCC with an appropriate |
+@option{--with-arch} option, but need GNU @command{as} for SSE2 support. |
+ |
+@html |
+<hr /> |
+@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 /> |
@@ -3314,11 +3555,26 @@ removed and the system libunwind library will always be used. |
@end html |
@heading @anchor{x-ibm-aix}*-ibm-aix* |
Support for AIX version 3 and older was discontinued in GCC 3.4. |
+Support for AIX version 4.2 and older was discontinued in GCC 4.5. |
``out of memory'' bootstrap failures may indicate a problem with |
process resource limits (ulimit). Hard limits are configured in the |
@file{/etc/security/limits} system configuration file. |
+GCC can bootstrap with recent versions of IBM XLC, but bootstrapping |
+with an earlier release of GCC is recommended. Bootstrapping with XLC |
+requires a larger data segment, which can be enabled through the |
+@var{LDR_CNTRL} environment variable, e.g., |
+ |
+@smallexample |
+ % LDR_CNTRL=MAXDATA=0x50000000 |
+ % export LDR_CNTRL |
+@end smallexample |
+ |
+One can start with a pre-compiled version of GCC to build from |
+sources. One may delete GCC's ``fixed'' header files when starting |
+with a version of GCC built for an earlier release of AIX. |
+ |
To speed up the configuration phases of bootstrapping and installing GCC, |
one may use GNU Bash instead of AIX @command{/bin/sh}, e.g., |
@@ -3348,16 +3604,14 @@ If this error occurs during stage2 or later, then the problem most likely |
is the version of Make (see above). |
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@. |
+on AIX@. The GNU Assembler, GNU Linker, and GNU Binutils version 2.20 |
+is required to bootstrap on AIX 5@. 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). It also requires a |
fix for another AIX Assembler bug and a co-dependent AIX Archiver fix |
-referenced as APAR IY53606 (AIX 5.2) or a APAR IY54774 (AIX 5.1) |
+referenced as APAR IY53606 (AIX 5.2) or as APAR IY54774 (AIX 5.1) |
@samp{libstdc++} in GCC 3.4 increments the major version number of the |
shared object and GCC installation places the @file{libstdc++.a} |
@@ -3434,9 +3688,6 @@ GCC does not produce the same floating-point formats that the assembler |
expects. If one encounters this problem, set the @env{LANG} |
environment variable to @samp{C} or @samp{En_US}. |
-By default, GCC for AIX 4.1 and above produces code that can be used on |
-both Power or PowerPC processors. |
- |
A default can be specified with the @option{-mcpu=@var{cpu_type}} |
switch and using the configure option @option{--with-cpu-@var{cpu_type}}. |
@@ -3450,6 +3701,20 @@ applications. There are no standard Unix configurations. |
@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. |
@@ -3479,7 +3744,7 @@ applications. There are no standard Unix configurations. |
<hr /> |
@end html |
@heading @anchor{m68k-x-x}m68k-*-* |
-By default, @samp{m68k-*-aout}, @samp{m68k-*-coff*}, |
+By default, |
@samp{m68k-*-elf*}, @samp{m68k-*-rtems}, @samp{m68k-*-uclinux} and |
@samp{m68k-*-linux} |
build libraries for both M680x0 and ColdFire processors. If you only |
@@ -3512,6 +3777,14 @@ both of which were ABI changes. However, you can still use the |
original ABI by configuring for @samp{m68k-uclinuxoldabi} or |
@samp{m68k-@var{vendor}-uclinuxoldabi}. |
+ |
+@html |
+<hr /> |
+@end html |
+@heading @anchor{mep-x-elf}mep-*-elf |
+Toshiba Media embedded Processor. |
+This configuration is intended for embedded systems. |
+ |
@html |
<hr /> |
@end html |
@@ -3575,36 +3848,61 @@ made after Nov. 9, 2006) should be free from both of these problems. |
@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 |
@@ -3614,18 +3912,21 @@ resulting object file. The output should look like: |
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@. |
@@ -3642,12 +3943,14 @@ all on @samp{mips3}-only systems. For the test program above, you should see: |
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@. |
@@ -3663,9 +3966,9 @@ try to use them. This will disable building the O32 libraries, too. |
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 |
@@ -3675,14 +3978,19 @@ to build despite this, running into an internal error of the native |
@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 |
+@heading @anchor{moxie-x-elf}moxie-*-elf |
+The moxie processor. See @uref{http://moxielogic.org/} for more |
+information about this processor. |
@html |
<hr /> |
@@ -3767,6 +4075,14 @@ Embedded PowerPC system in little endian mode. |
@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@. |
@@ -3792,12 +4108,18 @@ supported as cross-compilation target only. |
@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 |
@@ -3805,9 +4127,10 @@ recommend using the following initial sequence of commands |
% 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}, |
@@ -3830,37 +4153,30 @@ 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. |
-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, |
@@ -3882,7 +4198,7 @@ SPARC, 117172-11 or newer for Intel) that address this problem. |
@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. |
@@ -3912,10 +4228,10 @@ and 5.5 (Sun ONE Studio 8) of the Sun compiler, which causes a bootstrap |
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 |
-a x86-only problem by Sun, probably because they do not use DWARF-2). |
+an x86-only problem by Sun, probably because they do not use DWARF-2). |
A symptom of the problem is that you cannot compile C++ programs like |
@command{groff} 1.19.1 without getting messages similar to the following: |
@@ -3925,13 +4241,14 @@ ld: warning: relocation error: R_SPARC_UA32: @dots{} |
.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: |
@@ -3944,6 +4261,9 @@ For example on a Solaris 7 system: |
@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 |
@@ -3981,13 +4301,14 @@ the Solaris 7 Recommended Patch Cluster. |
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 |
@@ -3999,11 +4320,28 @@ ld: fatal: relocation error: R_SPARC_DISP32: |
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 |
@@ -4032,6 +4370,7 @@ step in order to bootstrap this target with the Sun compiler: |
% 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. |
@@ -4040,7 +4379,7 @@ 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 /> |
@@ -4141,7 +4480,7 @@ and which C libraries are used. |
Linux API emulation layer in the Win32 subsystem. |
@item Interix @uref{#x-x-interix,,*-*-interix}: The Interix subsystem |
provides native support for POSIX. |
-@item MinGW @uref{#x-x-mingw,,*-*-mingw}: MinGW is a native GCC port for |
+@item MinGW @uref{#x-x-mingw32,,*-*-mingw32}: MinGW is a native GCC port for |
the Win32 subsystem that provides a subset of POSIX. |
@item MKS i386-pc-mks: NuTCracker from MKS. See |
@uref{http://www.mkssoftware.com/} for more information. |
@@ -4185,7 +4524,11 @@ Ports of GCC are included with the |
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 /> |
@@ -4211,15 +4554,6 @@ of @code{extern inline} in @code{-std=c99} and @code{-std=gnu99} modes. |
@html |
<hr /> |
@end html |
-@heading @anchor{os2}OS/2 |
- |
-GCC does not currently support OS/2. However, Andrew Zabolotny has been |
-working on a generic OS/2 port with pgcc. The current code can be found |
-at @uref{http://www.goof.com/pcg/os2/,,http://www.goof.com/pcg/os2/}. |
- |
-@html |
-<hr /> |
-@end html |
@heading @anchor{older}Older systems |
GCC contains support files for many older (1980s and early |