@item MPFR Library
Necessary to build the Fortran frontend. It can be downloaded from
-@uref{http://http://www.mpfr.org/}. It is also included in the current GMP
+@uref{http://www.mpfr.org/}. It is also included in the current GMP
release (4.1.3) when configured with @option{--enable-mpfr}.
The @option{--with-mpfr} or @option{--with-mpfr-dir} configure option should
@file{libcpp}, @file{libiberty}, @file{libobjc} directories as well
as any of their subdirectories.
-The Java directory @file{libjava} requires automake 1.9.1. Every other
-directory should work with either automake 1.8.5 and automake 1.9.1, but
-most of them have been tested only with automake 1.8.5 so far.
+The Java directory @file{libjava} and the @file{libstdc++-v3} directory
+require automake 1.9.1. Every other directory should work with either
+automake 1.8.5 and automake 1.9.1, but most of them have been tested only
+with automake 1.8.5 so far.
@item gettext version 0.12 (or later)
For native builds, some of the installed programs are also installed
with the target alias in front of their name, as in
@samp{i686-pc-linux-gnu-gcc}. All of the above transformations happen
-before the target alias is prepended to the name - so, specifying
+before the target alias is prepended to the name---so, specifying
@option{--program-prefix=foo-} and @option{program-suffix=-3.1}, the
resulting binary would be installed as
@file{/usr/local/bin/i686-pc-linux-gnu-foo-gcc-3.1}.
another directory which is based on the @option{--prefix} value.)
Both the local-prefix include directory and the GCC-prefix include
-directory are part of GCC's "system include" directories. Although these
+directory are part of GCC's ``system include'' directories. Although these
two directories are not fixed, they need to be searched in the proper
order for the correct processing of the include_next directive. The
local-prefix include directory is searched before the GCC-prefix
VxWorks thread support.
@item win32
Microsoft Win32 API thread support.
+@item nks
+Novell Kernel Services thread support.
@end table
@item --with-cpu=@var{cpu}
@option{--with-cpu}, which switches will be accepted and acceptable values
of the arguments depend on the target.
+@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.
+The possibilities for @var{type} are:
+@table @code
+@item traps
+Division by zero checks use conditional traps (this is the default on
+systems that support conditional traps).
+@item breaks
+Division by zero checks use the break instruction.
+@end table
+
@item --enable-altivec
Specify that the target supports AltiVec vector enhancements. This
option will adjust the ABI for AltiVec enhancements, as well as generate
with GCC@. This is on by default when building from CVS or snapshots,
but off for releases. More control over the checks may be had by
specifying @var{list}; the categories of checks available are
-@samp{misc}, @samp{tree}, @samp{gc}, @samp{rtl}, @samp{rtlflag},
-@samp{fold}, @samp{gcac} and @samp{valgrind}. The check @samp{valgrind}
-requires the external @command{valgrind} simulator, available from
-@uref{http://valgrind.kde.org/}. The default when @var{list} is
-not specified is @samp{misc,tree,gc,rtlflag}; the checks @samp{rtl},
-@samp{gcac} and @samp{valgrind} are very expensive.
+@samp{release}, @samp{assert}, @samp{misc}, @samp{tree}, @samp{gc},
+@samp{rtl}, @samp{rtlflag}, @samp{fold}, @samp{gcac} and
+@samp{valgrind}. The @samp{release} category enables only those checks
+suitable for release builds, currently this is just @samp{assert}. The
+check @samp{valgrind} requires the external @command{valgrind}
+simulator, available from @uref{http://valgrind.kde.org/}. The checks
+@samp{rtl}, @samp{gcac} and @samp{valgrind} are very expensive. The
+default when @var{list} is not specified is
+@samp{assert,misc,tree,gc,rtlflag}. That is also the default for
+development builds, when @samp{--enable-checking} is not specified. For
+release builds the default, when @samp{--enable-checking} is not given,
+is @samp{release}. To disable all checking, @samp{--disable-checking}
+must be explicitly requested. Disabling assertions will make the
+compiler slightly faster but increase the risk of undetected internal
+errors causing wrong code to be generated.
@item --enable-coverage
@itemx --enable-coverage=@var{level}
@itemx --with-mpfr=@var{pathname}
@itemx --with-gmp-dir=@var{pathname}
@itemx --with-mpfr-dir=@var{pathname}
-If you don't have GMP (the GNU Multiple Precision library) and the MPFR
+If you don't have GMP (the GNU Multiple Precision library) and the MPFR
Libraries installed in a standard location and you want to build the Fortran
front-end, you can explicitly specify the directory where they are installed
(@samp{--with-gmp=gmpinstalldir}, @samp{--with-mpfr=mpfrinstalldir}) or where
@samp{libgcj}. If this option is unspecified or disabled, AWT
will be non-functional. Current valid values are @option{gtk} and
@option{xlib}. Multiple libraries should be separated by a
-comma (i.e. @option{--enable-java-awt=gtk,xlib}).
+comma (i.e.@: @option{--enable-java-awt=gtk,xlib}).
@item --enable-gtk-cairo
Build the cairo Graphics2D implementation on GTK.
Note that using non-standard @code{CFLAGS} can cause bootstrap to fail in
@file{libiberty}, if these trigger a warning with the new compiler. For
example using @samp{-O2 -g -mcpu=i686} on @code{i686-pc-linux-gnu} will
-cause bootstrap failure as @code{-mcpu=} is deprecated in 3.4.0 and above.
+cause bootstrap failure as @option{-mcpu=} is deprecated in 3.4.0 and above.
If you used the flag @option{--enable-languages=@dots{}} to restrict
you may encounter a variety of problems when using the HP assembler.
Specifically, @option{-g} does not work on HP-UX (since that system
-uses a peculiar debugging format which GCC does not know about), unless you
-use GAS and GDB and configure GCC with the
+uses a peculiar debugging format which GCC does not know about), unless
+you use GAS and GDB. It may be helpful to configure GCC with the
@uref{./configure.html#with-gnu-as,,@option{--with-gnu-as}} and
-@option{--with-as=@dots{}} options.
+@option{--with-as=@dots{}} options to ensure that GCC can find GAS.
If you wish to use the pa-risc 2.0 architecture support with a 32-bit
runtime, you must use either the HP assembler, or gas/binutils 2.11
TARGET_SCHED_DEFAULT can be defined in BOOT_CFLAGS if a different
default scheduling model is desired.
+As of GCC 3.5, GCC uses the UNIX 95 namespace for HP-UX 10.10
+through 11.00, and the UNIX 98 namespace for HP-UX 11.11 and later.
+This namespace change might cause problems when bootstrapping with
+an earlier version of GCC or the HP compiler as essentially the same
+namespace is required for an entire build. This problem can be avoided
+in a number of ways. With HP cc, @env{UNIX_STD} can be set to @samp{95}
+or @samp{98}. Another way is to add an appropriate set of predefines
+to @env{CC}. The description for the @option{munix=} option contains
+a list of the predefines used with each standard.
+
More specific information to @samp{hppa*-hp-hpux*} targets follows.
@html
Specifically, options that determine the runtime architecture must be
in @env{CC} to correctly select the target for the build. It is also
-convenient to place many other compiler options in @env{CC}. For example,
+convenient to place many other compiler options in @env{CC}. For example,
@env{CC="cc -Ac +DA2.0W -Wp,-H16376 -D_CLASSIC_TYPES -D_HPUX_SOURCE"}
can be used to bootstrap the GCC 3.3 branch with the HP compiler in
64-bit K&R/bundled mode. The @option{+DA2.0W} option will result in
Supplement OSS631C or later. If you are using release 5.0.7 of
OpenServer, you must have at least the first maintenance pack installed
(this includes the relevant portions of OSS646). OSS646, also known as
-the "Execution Environment Update", provides updated link editors and
+the ``Execution Environment Update'', provides updated link editors and
assemblers, as well as updated standard C and math libraries. The C
startup modules are also updated to support the System V gABI draft, and
GCC relies on that behavior. OSS631 provides a collection of commonly
testing. In general, only the @option{--with-gnu-as} option is tested.
A modern bintuils (as well as a plethora of other development related
GNU utilities) can be found in Support Level Supplement OSS658A, the
-"GNU Development Tools" package. See the SCO web and ftp sites for details.
-That package also contains the currently "officially supported" version of
+``GNU Development Tools'' package. See the SCO web and ftp sites for details.
+That package also contains the currently ``officially supported'' version of
GCC, version 2.95.3. It is useful for bootstrapping this version.
@html
IA-64 processor (also known as IPF, or Itanium Processor Family)
running GNU/Linux.
-If you are using the optional libunwind library, then you must use
-libunwind 0.96 or later.
+If you are using the installed system libunwind library with
+@option{--with-system-libunwind}, then you must use libunwind 0.98 or
+later.
None of the following versions of GCC has an ABI that is compatible
with any of the other versions in this list, with the exception that
The GCC libunwind library has not been ported to HPUX. This means that for
GCC versions 3.2.3 and earlier, @option{--enable-libunwind-exceptions}
is required to build GCC. For GCC 3.3 and later, this is the default.
+For gcc 3.4.3 and later, @option{--enable-libunwind-exceptions} is
+removed and the system libunwind library will always be used.
@html
<hr />
@samp{mips*-*-linux*} target continues to use the MIPS II routines. More
work on this is expected in future releases.
+MIPS systems check for division by zero (unless
+@option{-mno-check-zero-division} is passed to the compiler) by
+generating either a conditional trap or a break instruction. Using
+trap results in smaller code, but is only supported on MIPS II and
+later. Also, some versions of the Linux kernel have a bug that
+prevents trap from generating the proper signal (SIGFPE). To enable
+the use of break, use the @option{--with-divide=breaks}
+@command{configure} option when configuring GCC. The default is to
+use traps on systems that support them.
+
Cross-compilers for the Mips as target using the Mips assembler
currently do not work, because the auxiliary programs
@file{mips-tdump.c} and @file{mips-tfile.c} can't be compiled on
when configuring GCC@. You need to use GNU @command{ar} and @command{nm},
also distributed with GNU binutils.
+Some users have reported that @command{/bin/sh} will hang during bootstrap.
+This problem can be avoided by running the commands:
+
+@smallexample
+ % CONFIG_SHELL=/bin/ksh
+ % export CONFIG_SHELL
+@end smallexample
+
+before starting the build.
+
@html
<hr />
@end html
@file{/usr/bin} before @file{/usr/xpg4/bin} for the duration of the build.
All releases of GNU binutils prior to 2.11.2 have known bugs on this
-platform. We recommend the use of GNU binutils 2.11.2 or the vendor
-tools (Sun @command{as}, Sun @command{ld}).
+platform. We recommend the use of GNU binutils 2.11.2 or later, or the
+vendor tools (Sun @command{as}, Sun @command{ld}). Note that your mileage
+may vary if you use a combination of the GNU tools and the Sun tools: while
+the combination GNU @command{as} + Sun @command{ld} should reasonably work,
+the reverse combination Sun @command{as} + GNU @command{ld} is known to
+cause memory corruption at runtime in some cases for C++ programs.
+
+The stock GNU binutils 2.15 release is broken on this platform because of a
+single bug. It has been fixed on the 2.15 branch in the CVS repository.
+You can obtain a working version by checking out the binutils-2_15-branch
+from the CVS repository or applying the patch
+@uref{http://sources.redhat.com/ml/binutils-cvs/2004-09/msg00036.html} to the
+release.
Sun bug 4296832 turns up when compiling X11 headers with GCC 2.95 or
newer: @command{g++} will complain that types are missing. These headers assume
108377-20 for Intel), and Solaris 8 (108652-24 or newer for SPARC,
108653-22 for Intel) that fix this bug.
+Sun bug 4927647 sometimes causes random spurious testsuite failures
+related to missing diagnostic output. This bug doesn't affect GCC
+itself, rather it is a kernel bug triggered by the @command{expect}
+program which is used only by the GCC testsuite driver. When the bug
+causes the @command{expect} program to miss anticipated output, extra
+testsuite failures appear.
+
+There are patches for Solaris 8 (117350-12 or newer for SPARC,
+117351-12 or newer for Intel) and Solaris 9 (117171-11 or newer for
+SPARC, 117172-11 or newer for Intel) that address this problem.
+
@html
<hr />
@end html
the GNU compiler (especially GCC 3.0.x versions), which lead to the
miscompilation of the stage1 compiler and the subsequent failure of the
bootstrap process. A workaround is to use GCC 3.2.3 as an intermediary
-stage, i.e. to bootstrap that compiler with the base compiler and then
+stage, i.e.@: to bootstrap that compiler with the base compiler and then
use it to bootstrap the final compiler.
GCC 3.4 triggers a code generation bug in versions 5.4 (Sun ONE Studio 7)
assembler, this change apparently runs afoul of Sun bug 4910101, for
which (as of 2004-05-23) there is no fix. A symptom of the problem is
that you cannot compile C++ programs like @command{groff} 1.19.1
-without getting messages like @samp{ld: warning: relocation error:
-R_SPARC_UA32 @dots{} external symbolic relocation against
-non-allocatable section .debug_info; cannot be processed at runtime:
-relocation ignored}. To work around this problem, compile with
-@option{-gstabs+} instead of plain @option{-g}.
+without getting messages similar to the following:
+
+@smallexample
+ld: warning: relocation error: R_SPARC_UA32: @dots{}
+ external symbolic relocation against non-allocatable section
+ .debug_info cannot be processed at runtime: relocation ignored.
+@end smallexample
+
+To work around this problem, compile with @option{-gstabs+} instead of
+plain @option{-g}.
@html
<hr />