@c Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
@c 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-@c 2010 Free Software Foundation, Inc.
+@c 2010, 2011 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
@c Part 2 Summary Description and Copyright
@copying
Copyright @copyright{} 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997,
-1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-2008 Free Software Foundation, Inc.
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010 Free Software Foundation, Inc.
@sp 1
Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.2 or
+under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, the Front-Cover texts being (a) (see below), and
with the Back-Cover Texts being (b) (see below). A copy of the
systems' @command{tar} programs will also work, only try GNU
@command{tar} if you have problems.
+@item Perl version 5.6.1 (or later)
+
+Necessary when targetting Darwin, building @samp{libstdc++},
+and not using @option{--disable-symvers}.
+Necessary when targetting Solaris 2 with Sun @command{ld} and not using
+@option{--disable-symvers}. The bundled @command{perl} in Solaris@tie{}8
+and up works.
+
+Necessary when regenerating @file{Makefile} dependencies in libiberty.
+Necessary when regenerating @file{libiberty/functions.texi}.
+Necessary when generating manpages from Texinfo manuals.
+Used by various scripts to generate some files included in SVN (mainly
+Unicode-related and rarely changing) from source tables.
+
+@item @command{jar}, or InfoZIP (@command{zip} and @command{unzip})
+
+Necessary to build libgcj, the GCJ runtime.
+
+@end table
+
+Several support libraries are necessary to build GCC, some are required,
+others optional. While any sufficiently new version of required tools
+usually work, library requirements are generally stricter. Newer
+versions may work in some cases, but it's safer to use the exact
+versions documented. We appreciate bug reports about problems with
+newer versions, though.
+
+@table @asis
@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
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
+@item Parma Polyhedra Library (PPL) version 0.11
Necessary to build GCC with the Graphite loop optimizations.
It can be downloaded from @uref{http://www.cs.unipr.it/ppl/Download/}.
The @option{--with-ppl} configure option should be used if PPL is not
installed in your default library search path.
-@item CLooG-PPL version 0.15
+@item CLooG-PPL version 0.15 or CLooG 0.16
-Necessary to build GCC with the Graphite loop optimizations. It can
-be downloaded from @uref{ftp://gcc.gnu.org/pub/gcc/infrastructure/}.
-The code in @file{cloog-ppl-0.15.tar.gz} comes from a branch of CLooG
-available from @uref{http://repo.or.cz/w/cloog-ppl.git}. CLooG-PPL
-should be configured with @option{--with-ppl}.
-
-The @option{--with-cloog} configure option should be used if CLooG is
-not installed in your default library search path.
-
-@item @command{jar}, or InfoZIP (@command{zip} and @command{unzip})
-
-Necessary to build libgcj, the GCJ runtime.
+Necessary to build GCC with the Graphite loop optimizations. There
+are two versions available. CLooG-PPL 0.15 as well as CLooG 0.16.
+The former is the default right now. It can be downloaded from
+@uref{ftp://gcc.gnu.org/pub/gcc/infrastructure/} as
+@file{cloog-ppl-0.15.tar.gz}.
-@item libelf version 0.8.12 (or later)
+CLooG 0.16 support is still in testing stage, but will be the
+default in future GCC releases. It is also available at
+@uref{ftp://gcc.gnu.org/pub/gcc/infrastructure/} as
+@file{cloog-0.16.1.tar.gz}. To use it add the additional configure
+option @option{--enable-cloog-backend=isl}. Even if CLooG 0.16
+does not use PPL, PPL is still required for Graphite.
-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.
+In both cases @option{--with-cloog} configure option should be used
+if CLooG is not installed in your default library search path.
@end table
Necessary to access the SVN repository. Public releases and weekly
snapshots of the development sources are also available via FTP@.
-@item Perl version 5.6.1 (or later)
-
-Necessary when regenerating @file{Makefile} dependencies in libiberty.
-Necessary when regenerating @file{libiberty/functions.texi}.
-Necessary when generating manpages from Texinfo manuals.
-Necessary when targetting Darwin, building libstdc++,
-and not using @option{--disable-symvers}.
-Used by various scripts to generate some files included in SVN (mainly
-Unicode-related and rarely changing) from source tables.
-
@item GNU diffutils version 2.7 (or later)
Useful when submitting patches for the GCC source code.
To configure GCC:
@smallexample
- % mkdir @var{objdir}
- % cd @var{objdir}
- % @var{srcdir}/configure [@var{options}] [@var{target}]
+% mkdir @var{objdir}
+% cd @var{objdir}
+% @var{srcdir}/configure [@var{options}] [@var{target}]
@end smallexample
@heading Distributor options
will be built. Package names currently recognized in the GCC tree are
@samp{libgcc} (also known as @samp{gcc}), @samp{libstdc++} (not
@samp{libstdc++-v3}), @samp{libffi}, @samp{zlib}, @samp{boehm-gc},
-@samp{ada}, @samp{libada}, @samp{libjava} and @samp{libobjc}.
+@samp{ada}, @samp{libada}, @samp{libjava}, @samp{libgo}, and @samp{libobjc}.
Note @samp{libiberty} does not support shared libraries at all.
Use @option{--disable-shared} to build only static libraries. Note that
Some targets provide finer-grained control over which multilibs are built
(e.g., @option{--disable-softfloat}):
@table @code
-@item arc-*-elf*
-biendian.
-
@item arm-*-*
fpu, 26bit, underscore, interwork, biendian, nofmult.
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
+--with-cpu=sh4a --with-endian=little,big \
+--with-multilib-list=sh4al,!mb/m4al
@end smallexample
@item --with-endian=@var{endians}
causes GCC to use the same thread primitives as Ada uses. This option
is necessary when using both Ada and the back end exception handling,
which is the default for most Ada targets.
-@item mach
-Generic MACH thread support, known to work on NeXTSTEP@. (Please note
-that the file needed to support this configuration, @file{gthr-mach.h}, is
-missing and thus this setting will cause a known bootstrap failure.)
+@item lynx
+LynxOS thread support.
+@item mipssde
+MIPS SDE thread support.
+@item nks
+Novell Kernel Services thread support.
@item no
This is an alias for @samp{single}.
@item posix
RTEMS thread support.
@item single
Disable thread support, should work for all platforms.
-@item solaris
-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 tpf
+TPF thread support.
@item vxworks
VxWorks thread support.
@item win32
Microsoft Win32 API thread support.
-@item nks
-Novell Kernel Services thread support.
@end table
@item --enable-tls
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-fpmath=@var{isa}
+This options sets @option{-mfpmath=sse} by default and specifies the default
+ISA for floating-point arithmetics. You can select either @samp{sse} which
+enables @option{-msse2} or @samp{avx} which enables @option{-mavx} by default.
+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
only available on systems with GNU libc. When enabled, this will cause
@option{-fuse-cxa-atexit} to be passed by default.
+@item --enable-indirect-function
+Define if you want to enable the @code{ifunc} attribute. This option is
+currently only available on systems with GNU libc on certain targets.
+
@item --enable-target-optspace
Specify that target
libraries should be optimized for code space instead of code speed.
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
grep language= */config-lang.in
@end smallexample
Currently, you can use any of the following:
-@code{all}, @code{ada}, @code{c}, @code{c++}, @code{fortran}, @code{java},
-@code{objc}, @code{obj-c++}.
+@code{all}, @code{ada}, @code{c}, @code{c++}, @code{fortran},
+@code{go}, @code{java}, @code{objc}, @code{obj-c++}.
Building the Ada compiler has special requirements, see below.
If you do not pass this flag, or specify the option @code{all}, then all
default languages available in the @file{gcc} sub-tree will be configured.
-Ada and Objective-C++ are not default languages; the rest are.
-Re-defining @code{LANGUAGES} when calling @samp{make} @strong{does not}
-work anymore, as those language sub-directories might not have been
-configured!
+Ada, Go and Objective-C++ are not default languages; the rest are.
@item --enable-stage1-languages=@var{lang1},@var{lang2},@dots{}
Specify that a particular subset of compilers and their runtime
Specify that the run-time libraries for stack smashing protection
should not be built.
+@item --disable-libquadmath
+Specify that the GCC quad-precision math library should not be built.
+On some systems, the library is required to be linkable when building
+the Fortran front end, unless @option{--disable-libquadmath-support}
+is used.
+
+@item --disable-libquadmath-support
+Specify that the Fortran front end and @code{libgfortran} do not add
+support for @code{libquadmath} on systems supporting it.
+
@item --disable-libgomp
Specify that the run-time libraries used by GOMP should not be built.
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}, 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
+@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}, 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.
+include and lib options directly. You might also need to ensure the
+shared libraries can be found by the dynamic linker when building and
+using GCC, for example by setting the runtime shared library path
+variable (@env{LD_LIBRARY_PATH} on GNU/Linux and Solaris systems).
+
+These flags are applicable to the host platform only. When building
+a cross compiler, they will not be used to configure target libraries.
@item --with-ppl=@var{pathname}
@itemx --with-ppl-include=@var{pathname}
If you do not have PPL (the Parma Polyhedra Library) and the CLooG
libraries installed in a standard location and you want to build GCC,
you can explicitly specify the directory where they are installed
-(@samp{--with-ppl=@var{pplinstalldir}},
-@samp{--with-cloog=@var{clooginstalldir}}). The
-@option{--with-ppl=@var{pplinstalldir}} option is shorthand for
-@option{--with-ppl-lib=@var{pplinstalldir}/lib} and
-@option{--with-ppl-include=@var{pplinstalldir}/include}. Likewise the
-@option{--with-cloog=@var{clooginstalldir}} option is shorthand for
-@option{--with-cloog-lib=@var{clooginstalldir}/lib} and
-@option{--with-cloog-include=@var{clooginstalldir}/include}. If these
+(@samp{--with-ppl=@/@var{pplinstalldir}},
+@samp{--with-cloog=@/@var{clooginstalldir}}). The
+@option{--with-ppl=@/@var{pplinstalldir}} option is shorthand for
+@option{--with-ppl-lib=@/@var{pplinstalldir}/lib} and
+@option{--with-ppl-include=@/@var{pplinstalldir}/include}. Likewise the
+@option{--with-cloog=@/@var{clooginstalldir}} option is shorthand for
+@option{--with-cloog-lib=@/@var{clooginstalldir}/lib} and
+@option{--with-cloog-include=@/@var{clooginstalldir}/include}. If these
shorthand assumptions are not correct, you can use the explicit
include and lib options directly.
+These flags are applicable to the host platform only. When building
+a cross compiler, they will not be used to configure target libraries.
+
@item --with-host-libstdcxx=@var{linker-args}
If you are linking with a static copy of PPL, you can use this option
to specify how the linker should find the standard C++ library used
@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.
+stage 2 and later when bootstrapping GCC. If neither --with-boot-libs
+nor --with-host-libstdcxx is set to a value, then the default is
+@samp{-static-libstdc++ -static-libgcc}.
@item --with-boot-libs=@var{libs}
This option may be used to set libraries to be used when linking stage 2
GLIBC 2.11 or above, otherwise disabled.
@item --enable-lto
+@itemx --disable-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.
+default, and may be disabled using @option{--disable-lto}.
+
+@item --with-plugin-ld=@var{pathname}
+Enable an alternate linker to be used at link-time optimization (LTO)
+link time when @option{-fuse-linker-plugin} is enabled.
+This linker should have plugin support such as gold starting with
+version 2.20 or GNU ld starting with version 2.21.
+See @option{-fuse-linker-plugin} for details.
@end table
@subheading Cross-Compiler-Specific Options
@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.
+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. More specifically, this acts as if
@option{--sysroot=@var{dir}} was added to the default options of the built
@end table
+@subsubheading Overriding @command{configure} test results
+
+Sometimes, it might be necessary to override the result of some
+@command{configure} test, for example in order to ease porting to a new
+system or work around a bug in a test. The toplevel @command{configure}
+script provides three variables for this:
+
+@table @code
+
+@item build_configargs
+@cindex @code{build_configargs}
+The contents of this variable is passed to all build @command{configure}
+scripts.
+
+@item host_configargs
+@cindex @code{host_configargs}
+The contents of this variable is passed to all host @command{configure}
+scripts.
+
+@item target_configargs
+@cindex @code{target_configargs}
+The contents of this variable is passed to all target @command{configure}
+scripts.
+
+@end table
+
+In order to avoid shell and @command{make} quoting issues for complex
+overrides, you can pass a setting for @env{CONFIG_SITE} and set
+variables in the site file.
+
@html
<hr />
<p>
debugging information.)
@smallexample
- make BOOT_CFLAGS='-O' bootstrap
+make BOOT_CFLAGS='-O' bootstrap
@end smallexample
You can place non-default optimization flags into @code{BOOT_CFLAGS}; they
@item @samp{bootstrap-O3}
Analogous to @code{bootstrap-O1}.
+@item @samp{bootstrap-lto}
+Enables Link-Time Optimization for host tools during bootstrapping.
+@samp{BUILD_CONFIG=bootstrap-lto} is equivalent to adding
+@option{-flto} to @samp{BOOT_CFLAGS}.
+
@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
@section Building the Ada compiler
In order to build GNAT, the Ada compiler, you need a working GNAT
-compiler (GCC version 3.4 or later).
+compiler (GCC version 4.0 or later).
This includes GNAT tools such as @command{gnatmake} and
@command{gnatlink}, since the Ada front end is written in Ada and
uses some GNAT-specific extensions.
assumes that DejaGnu has been installed under @file{/usr/local}):
@smallexample
- TCL_LIBRARY = /usr/local/share/tcl8.0
- DEJAGNULIBS = /usr/local/share/dejagnu
+TCL_LIBRARY = /usr/local/share/tcl8.0
+DEJAGNULIBS = /usr/local/share/dejagnu
@end smallexample
(On systems such as Cygwin, these paths are required to be actual
Finally, you can run the testsuite (which may take a long time):
@smallexample
- cd @var{objdir}; make -k check
+cd @var{objdir}; make -k check
@end smallexample
This will test various components of GCC, such as compiler
testsuite is to use
@smallexample
- make check-gcc RUNTESTFLAGS="execute.exp @var{other-options}"
+make check-gcc RUNTESTFLAGS="execute.exp @var{other-options}"
@end smallexample
Likewise, in order to run only the @command{g++} ``old-deja'' tests in
the testsuite with filenames matching @samp{9805*}, you would use
@smallexample
- make check-g++ RUNTESTFLAGS="old-deja.exp=9805* @var{other-options}"
+make check-g++ RUNTESTFLAGS="old-deja.exp=9805* @var{other-options}"
@end smallexample
The @file{*.exp} files are located in the testsuite directories of the GCC
work outside the makefiles. For example,
@smallexample
- make check-g++ RUNTESTFLAGS="--target_board=unix/-O3/-fmerge-constants"
+make check-g++ RUNTESTFLAGS="--target_board=unix/-O3/-fmerge-constants"
@end smallexample
will run the standard @command{g++} testsuites (``unix'' is the target name
with a syntax similar to the brace expansion of popular shells:
@smallexample
- @dots{}"--target_board=arm-sim\@{-mhard-float,-msoft-float\@}\@{-O1,-O2,-O3,\@}"
+@dots{}"--target_board=arm-sim\@{-mhard-float,-msoft-float\@}\@{-O1,-O2,-O3,\@}"
@end smallexample
(Note the empty option caused by the trailing comma in the final group.)
target, as if you had specified all possible combinations yourself:
@smallexample
- --target_board=arm-sim/-mhard-float/-O1
- --target_board=arm-sim/-mhard-float/-O2
- --target_board=arm-sim/-mhard-float/-O3
- --target_board=arm-sim/-mhard-float
- --target_board=arm-sim/-msoft-float/-O1
- --target_board=arm-sim/-msoft-float/-O2
- --target_board=arm-sim/-msoft-float/-O3
- --target_board=arm-sim/-msoft-float
+--target_board=arm-sim/-mhard-float/-O1
+--target_board=arm-sim/-mhard-float/-O2
+--target_board=arm-sim/-mhard-float/-O3
+--target_board=arm-sim/-mhard-float
+--target_board=arm-sim/-msoft-float/-O1
+--target_board=arm-sim/-msoft-float/-O2
+--target_board=arm-sim/-msoft-float/-O3
+--target_board=arm-sim/-msoft-float
@end smallexample
They can be combined as many times as you wish, in arbitrary ways. This
list:
@smallexample
- @dots{}"--target_board=unix/-Wextra\@{-O3,-fno-strength\@}\@{-fomit-frame,\@}"
+@dots{}"--target_board=unix/-Wextra\@{-O3,-fno-strength\@}\@{-fomit-frame,\@}"
@end smallexample
will generate four combinations, all involving @samp{-Wextra}.
special makefile target:
@smallexample
- make -j@var{N} check-@var{testsuite}//@var{test-target}/@var{option1}/@var{option2}/@dots{}
+make -j@var{N} check-@var{testsuite}//@var{test-target}/@var{option1}/@var{option2}/@dots{}
@end smallexample
For example,
@smallexample
- make -j3 check-gcc//sh-hms-sim/@{-m1,-m2,-m3,-m3e,-m4@}/@{,-nofpu@}
+make -j3 check-gcc//sh-hms-sim/@{-m1,-m2,-m3,-m3e,-m4@}/@{,-nofpu@}
@end smallexample
will run three concurrent ``make-gcc'' testsuites, eventually testing all
@file{contrib/test_summary} shell script. Start it in the @var{objdir} with
@smallexample
- @var{srcdir}/contrib/test_summary -p your_commentary.txt \
- -m gcc-testresults@@gcc.gnu.org |sh
+@var{srcdir}/contrib/test_summary -p your_commentary.txt \
+ -m gcc-testresults@@gcc.gnu.org |sh
@end smallexample
This script uses the @command{Mail} program to send the results, so
Now that GCC has been built (and optionally tested), you can install it with
@smallexample
-cd @var{objdir}; make install
+cd @var{objdir} && make install
@end smallexample
We strongly recommend to install into a target directory where there is
make DESTDIR=@var{path-to-rootdir} install
@end smallexample
-@noindent where @var{path-to-rootdir} is the absolute path of
+@noindent
+where @var{path-to-rootdir} is the absolute path of
a directory relative to which all installation paths will be
interpreted. Note that the directory specified by @code{DESTDIR}
need not exist yet; it will be created if necessary.
not as a bug, because it gives slightly more control to the packagers
using the @code{DESTDIR} feature.
+You can install stripped programs and libraries with
+
+@smallexample
+make install-strip
+@end smallexample
+
If you are bootstrapping a released version of GCC then please
quickly review the build status page for your release, available from
@uref{http://gcc.gnu.org/buildstat.html}.
HP-UX:
@itemize
@item
-@uref{http://hpux.cs.utah.edu/,,HP-UX Porting Center};
+@uref{http://hpux.connect.org.uk/,,HP-UX Porting Center};
@item
@uref{ftp://sunsite.informatik.rwth-aachen.de/pub/packages/gcc_hpux/,,Binaries for HP-UX 11.00 at Aachen University of Technology}.
@end itemize
@item
-Motorola 68HC11/68HC12---@uref{http://www.gnu-m68hc11.org,,GNU
-Development Tools for the Motorola 68HC11/68HC12}.
-
-@item
@uref{http://www.sco.com/skunkware/devtools/index.html#gcc,,SCO
OpenServer/Unixware}.
@item
-Solaris 2 (SPARC, Intel)---@uref{http://www.sunfreeware.com/,,Sunfreeware}.
+Solaris 2 (SPARC, Intel):
+@itemize
+@item
+@uref{http://www.sunfreeware.com/,,Sunfreeware}
@item
-SGI---@uref{http://freeware.sgi.com/,,SGI Freeware}.
+@uref{http://www.blastwave.org/,,Blastwave}
+
+@item
+@uref{http://www.opencsw.org/,,OpenCSW}
+
+@item
+@uref{http://jupiterrise.com/tgcware/,,TGCware}
+@end itemize
+
+@item
+SGI IRIX:
+@itemize
+@item
+@uref{http://nekochan.net/,,Nekoware}
+
+@item
+@uref{http://jupiterrise.com/tgcware/,,TGCware}
+@end itemize
@item
Microsoft Windows:
@item
@uref{#alpha-x-x,,alpha*-*-*}
@item
-@uref{#alpha-dec-osf,,alpha*-dec-osf*}
-@item
-@uref{#arc-x-elf,,arc-*-elf}
+@uref{#alpha-dec-osf51,,alpha*-dec-osf5.1}
@item
@uref{#arm-x-elf,,arm-*-elf}
@item
@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}
@item
@uref{#m32r-x-elf,,m32r-*-elf}
@item
-@uref{#m6811-elf,,m6811-elf}
-@item
-@uref{#m6812-elf,,m6812-elf}
-@item
@uref{#m68k-x-x,,m68k-*-*}
@item
@uref{#m68k-uclinux,,m68k-uclinux}
@item
@uref{#mep-x-elf,,mep-*-elf}
@item
+@uref{#microblaze-x-elf,,microblaze-*-elf}
+@item
@uref{#mips-x-x,,mips-*-*}
@item
@uref{#mips-sgi-irix5,,mips-sgi-irix5}
@item
@uref{#x-x-solaris2,,*-*-solaris2*}
@item
-@uref{#sparc-sun-solaris2,,sparc-sun-solaris2*}
+@uref{#sparc-x-x,,sparc*-*-*}
@item
-@uref{#sparc-sun-solaris27,,sparc-sun-solaris2.7}
+@uref{#sparc-sun-solaris2,,sparc-sun-solaris2*}
@item
@uref{#sparc-sun-solaris210,,sparc-sun-solaris2.10}
@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/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.) 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.
+OSF/1.) As of GCC 4.6, support for Tru64 UNIX V4.0 and V5.0 has been
+removed.
On Tru64 UNIX, virtual memory exhausted bootstrap failures
may be fixed by reconfiguring Kernel Virtual Memory and Swap parameters
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.20.1, neither GNU @command{as} nor GNU @command{ld}
+As of GNU binutils 2.21, 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}.
@html
<hr />
@end html
-@heading @anchor{arc-x-elf}arc-*-elf
-Argonaut ARC processor.
-This configuration is intended for embedded systems.
-
-@html
-<hr />
-@end html
@heading @anchor{arm-x-elf}arm-*-elf
ARM-family processors. Subtargets that use the ELF object format
require GNU binutils 2.13 or newer. Such subtargets include:
The following error:
@smallexample
- Error: register required
+Error: register required
@end smallexample
indicates that you should upgrade to a newer version of the binutils.
or newer. For @code{cris-axis-linux-gnu} you need binutils 2.12 or newer.
Pre-packaged tools can be obtained from
-@uref{ftp://ftp.axis.com/pub/axis/tools/cris/compiler-kit/}. More
+@uref{ftp://ftp.axis.com/@/pub/@/axis/@/tools/@/cris/@/compiler-kit/}. More
information about this platform is available at
@uref{http://developer.axis.com/}.
@html
<hr />
@end html
-@heading @anchor{crx}CRX
-
-The CRX CompactRISC architecture is a low-power 32-bit architecture with
-fast context switching and architectural extensibility features.
-
-@ifnothtml
-@xref{CRX Options,, CRX Options, gcc, Using and Porting the GNU Compiler
-Collection (GCC)},
-@end ifnothtml
-
-@ifhtml
-See ``CRX Options'' in the main manual for a list of CRX-specific options.
-@end ifhtml
-
-Use @samp{configure --target=crx-elf --enable-languages=c,c++} to configure
-GCC@ for building a CRX cross-compiler. The option @samp{--target=crx-elf}
-is also used to build the @samp{newlib} C library for CRX.
-
-It is also possible to build libstdc++-v3 for the CRX architecture. This
-needs to be done in a separate step with the following configure settings:
-@samp{gcc/libstdc++-v3/configure --host=crx-elf --with-newlib
---enable-sjlj-exceptions --enable-cxx-flags='-fexceptions -frtti'}
-
-@html
-<hr />
-@end html
@heading @anchor{dos}DOS
Please have a look at the @uref{binaries.html,,binaries page}.
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).
+In order to better utilize FreeBSD base system functionality and match
+the configuration of the system compiler, GCC 4.5 and above as well as
+GCC 4.4 past 2010-06-20 leverage SSP support in libc (which is present
+on FreeBSD 7 or later) and the use of @code{__cxa_atexit} by default
+(on FreeBSD 6 or later). The use of @code{dl_iterate_phdr} inside
+@file{libgcc_s.so.1} and boehm-gc (on FreeBSD 7 or later) is enabled
+by GCC 4.5 and above.
We support FreeBSD using the ELF file format with DWARF 2 debugging
for all CPU architectures. You may use @option{-gstabs} instead of
@heading @anchor{hppa-hp-hpux10}hppa*-hp-hpux10
For hpux10.20, we @emph{highly} recommend you pick up the latest sed patch
-@code{PHCO_19798} from HP@. HP has two sites which provide patches free of
-charge:
-
-@itemize @bullet
-@item
-@html
-<a href="http://us.itrc.hp.com/service/home/home.do">US, Canada, Asia-Pacific, and
-Latin-America</a>
-@end html
-@ifnothtml
-@uref{http://us.itrc.hp.com/service/home/home.do,,} US, Canada, Asia-Pacific,
-and Latin-America.
-@end ifnothtml
-@item
-@uref{http://europe.itrc.hp.com/service/home/home.do,,} Europe.
-@end itemize
+@code{PHCO_19798} from HP@.
The C++ ABI has changed incompatibly in GCC 4.0. COMDAT subspaces are
used for one-only code and data. This resolves many of the previous
@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.21, is known to
+work.
+
+Solaris@tie{}2/x86 doesn't support the execution of SSE/SSE2 instructions
+before Solaris@tie{}9 4/04, even if the CPU supports them. Programs will
+receive @code{SIGILL} if they try. The fix is available both in
+Solaris@tie{}9 Update@tie{}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. Unlike
@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
+2.21, 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?
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.
+2.19, works, as does the latest version, from GNU binutils 2.21.
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
+@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?
@var{LDR_CNTRL} environment variable, e.g.,
@smallexample
- % LDR_CNTRL=MAXDATA=0x50000000
- % export LDR_CNTRL
+% LDR_CNTRL=MAXDATA=0x50000000
+% export LDR_CNTRL
@end smallexample
One can start with a pre-compiled version of GCC to build from
one may use GNU Bash instead of AIX @command{/bin/sh}, e.g.,
@smallexample
- % CONFIG_SHELL=/opt/freeware/bin/bash
- % export CONFIG_SHELL
+% CONFIG_SHELL=/opt/freeware/bin/bash
+% export CONFIG_SHELL
@end smallexample
and then proceed as described in @uref{build.html,,the build
Extract the shared objects from the currently installed
@file{libstdc++.a} archive:
@smallexample
- % ar -x libstdc++.a libstdc++.so.4 libstdc++.so.5
+% ar -x libstdc++.a libstdc++.so.4 libstdc++.so.5
@end smallexample
Enable the @samp{F_LOADONLY} flag so that the shared object will be
available for runtime dynamic loading, but not linking:
@smallexample
- % strip -e libstdc++.so.4 libstdc++.so.5
+% strip -e libstdc++.so.4 libstdc++.so.5
@end smallexample
Archive the runtime-only shared object in the GCC 3.4
@file{libstdc++.a} archive:
@smallexample
- % ar -q libstdc++.a libstdc++.so.4 libstdc++.so.5
+% ar -q libstdc++.a libstdc++.so.4 libstdc++.so.5
@end smallexample
Linking executables and shared libraries may produce warnings of
@html
<hr />
@end html
-@heading @anchor{m6811-elf}m6811-elf
-Motorola 68HC11 family micro controllers. These are used in embedded
-applications. There are no standard Unix configurations.
-
-@html
-<hr />
-@end html
-@heading @anchor{m6812-elf}m6812-elf
-Motorola 68HC12 family micro controllers. These are used in embedded
-applications. There are no standard Unix configurations.
-
-@html
-<hr />
-@end html
@heading @anchor{m68k-x-x}m68k-*-*
By default,
@samp{m68k-*-elf*}, @samp{m68k-*-rtems}, @samp{m68k-*-uclinux} and
@samp{m68000}, @samp{m68010}, @samp{m68020}, @samp{m68030},
@samp{m68040}, @samp{m68060}, @samp{m68020-40} and @samp{m68020-60}.
+GCC requires at least binutils version 2.17 on these targets.
+
@html
<hr />
@end html
GCC 4.3 changed the uClinux configuration so that it uses the
@samp{m68k-linux-gnu} ABI rather than the @samp{m68k-elf} ABI.
It also added improved support for C++ and flat shared libraries,
-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}.
+both of which were ABI changes.
@html
@html
<hr />
@end html
+@heading @anchor{microblaze-x-elf}microblaze-*-elf
+Xilinx MicroBlaze processor.
+This configuration is intended for embedded systems.
+
+@html
+<hr />
+@end html
@heading @anchor{mips-x-x}mips-*-*
If on a MIPS system you get an error message saying ``does not have gp
sections for all it's [sic] sectons [sic]'', don't worry about it. This
@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{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},
-also distributed with GNU binutils.
-@c FIXME: which parts of this are still true?
-
-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=/usr/local/bin/bash
- % export CONFIG_SHELL
- % $CONFIG_SHELL @var{srcdir}/configure [@var{options}]
-@end smallexample
-
-@noindent
-@command{/bin/ksh} doesn't work properly either.
+Support for IRIX 5 has been removed in GCC 4.6.
@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
+Support for IRIX 6 releases before 6.5 has been removed in GCC 4.6, as
+well as 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
+To build and use GCC on IRIX 6.5, 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.
+IRIX 6.5 media.
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
@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.
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
+binutils 2.21, 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}
Pre-installed versions of Mac OS X may not include any developer tools,
meaning that you will not be able to build GCC from source. Tool
binaries are available at
-@uref{http://developer.apple.com/darwin/projects/compiler/} (free
-registration required).
+@uref{http://opensource.apple.com/}.
This version of GCC requires at least cctools-590.36. The
cctools-590.36 package referenced from
@c alone is too unspecific and must be avoided.
@heading @anchor{x-x-solaris2}*-*-solaris2*
-Support for Solaris 7 has been obsoleted in GCC 4.5, but can still be
+Support for Solaris 8 has been obsoleted in GCC 4.7, but can still be
enabled by configuring with @option{--enable-obsolete}. Support will be
-removed in GCC 4.6.
+removed in GCC 4.8. Support for Solaris 7 has been 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,
+the Sun Studio compilers for free. Alternatively,
you can install a pre-built GCC to bootstrap and install GCC. See the
@uref{binaries.html,,binaries page} for details.
recommend using the following initial sequence of commands
@smallexample
- % CONFIG_SHELL=/bin/ksh
- % export CONFIG_SHELL
+% CONFIG_SHELL=/bin/ksh
+% export CONFIG_SHELL
@end smallexample
@noindent
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)
+@file{/usr/sfw/bin/gas}. Current versions of GNU binutils (2.21)
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,
@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
+version (2.21) is known to work, but generally lacks platform specific
features, so better stay with Sun @command{ld}.
+To enable symbol versioning in @samp{libstdc++} with Sun @command{ld},
+you need to have any version of GNU @command{c++filt}, which is part of
+GNU binutils. @samp{libstdc++} symbol versioning will be disabled if no
+appropriate version is found. Sun @command{c++filt} from the Sun Studio
+compilers does @emph{not} work.
+
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
@option{-fpermissive}; it will assume that any missing type is @code{int}
(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
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.
+Solaris@tie{}8 provides an alternate implementation of the thread libraries,
+@samp{libpthread} and @samp{libthread}. They are required for TLS
+support and have been made the default in Solaris@tie{}9, so they are always
+used on Solaris@tie{}8.
+
+Thread-local storage (TLS) is supported in Solaris@tie{}8 and 9, but requires
+some patches. The @samp{libthread} patches provide the
+@code{__tls_get_addr} (SPARC, 64-bit x86) resp.@ @code{___tls_get_addr}
+(32-bit x86) functions. On Solaris@tie{}8, you need 108993-26 or newer on
+SPARC, 108994-26 or newer on Intel. On Solaris@tie{}9, the necessary support
+on SPARC is present since FCS, while 114432-05 or newer is required on
+Intel. Additionally, on Solaris@tie{}8, patch 109147-14 or newer on SPARC or
+109148-22 or newer on Intel are required for the Sun @command{ld} and
+runtime linker (@command{ld.so.1}) support. Again, Solaris@tie{}9/SPARC
+works since FCS, while 113986-02 is required on Intel. The linker
+patches must be installed even if GNU @command{ld} is used. Sun
+@command{as} in Solaris@tie{}8 and 9 doesn't support the necessary
+relocations, so GNU @command{as} must be used. The @command{configure}
+script checks for those prerequisites and automatically enables TLS
+support if they are met. Although those minimal patch versions should
+work, it is recommended to use the latest patch versions which include
+additional bug fixes.
+
+@html
+<hr />
+@end html
+@heading @anchor{sparc-x-x}sparc*-*-*
+
+This section contains general configuration information for all
+SPARC-based platforms. In addition to reading this section, please
+read all other sections that match your target.
+
+Newer versions of the GNU Multiple Precision Library (GMP), the MPFR
+library and the MPC library are known to be miscompiled by earlier
+versions of GCC on these platforms. We therefore recommend the use
+of the exact versions of these libraries listed as minimal versions
+in @uref{prerequisites.html,,the prerequisites}.
+
@html
<hr />
@end html
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 @command{./config.guess} in
-the toplevel source directory of GCC (and not that of GMP or MPFR).
-For example on a Solaris 7 system:
-
-@smallexample
- % ./configure --build=sparc-sun-solaris2.7 --prefix=xxx
-@end smallexample
-
-@html
-<hr />
-@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
-107058-01 for all Solaris 7 users, but around 1999-09-01 it started to
-recommend it only for people who use Sun's compilers.
-
-Here are some workarounds to this problem:
-@itemize @bullet
-@item
-Do not install Sun patch 107058-01 until after Sun releases a
-complete patch for bug 4210064. This is the simplest course to take,
-unless you must also use Sun's C compiler. Unfortunately 107058-01
-is preinstalled on some new Solaris 7-based hosts, so you may have to
-back it out.
-
-@item
-Copy the original, unpatched Solaris 7
-@command{/usr/ccs/bin/as} into
-@command{/usr/local/libexec/gcc/sparc-sun-solaris2.7/3.4/as},
-adjusting the latter name to fit your local conventions and software
-version numbers.
-
-@item
-Install Sun patch 106950-03 (1999-05-25) or later. Nobody with
-both 107058-01 and 106950-03 installed has reported the bug with GCC
-and Sun's dynamic linker. This last course of action is riskiest,
-for two reasons. First, you must install 106950 on all hosts that
-run code generated by GCC; it doesn't suffice to install it only on
-the hosts that run GCC itself. Second, Sun says that 106950-03 is
-only a partial fix for bug 4210064, but Sun doesn't know whether the
-partial fix is adequate for GCC@. Revision -08 or later should fix
-the bug. The current (as of 2004-05-23) revision is -24, and is included in
-the Solaris 7 Recommended Patch Cluster.
-@end itemize
-
-GCC 3.3 triggers a bug in version 5.0 Alpha 03/27/98 of the Sun assembler,
-which causes a bootstrap failure when linking the 64-bit shared version of
-@samp{libgcc}. A typical error message is:
+When configuring the GNU Multiple Precision Library (GMP), the MPFR
+library or the MPC 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 target triplet can be obtained by invoking @command{./config.guess} in the toplevel source directory of GCC (and
+not that of GMP or MPFR or MPC). For example on a Solaris 9 system:
@smallexample
-ld: fatal: relocation error: R_SPARC_32: file libgcc/sparcv9/_muldi3.o:
- symbol <unknown>: offset 0xffffffff7ec133e7 is non-aligned.
+% ./configure --build=sparc-sun-solaris2.9 --prefix=xxx
@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
-Sun assembler, which causes a bootstrap failure with GCC 4.0.0:
-
-@smallexample
-ld: fatal: relocation error: R_SPARC_DISP32:
- file .libs/libstdc++.lax/libsupc++convenience.a/vterminate.o:
- 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
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
step in order to bootstrap this target with the Sun compiler:
@smallexample
- % CC="cc -xarch=v9 -xildoff" @var{srcdir}/configure [@var{options}] [@var{target}]
+% CC="cc -xarch=v9 -xildoff" @var{srcdir}/configure [@var{options}] [@var{target}]
@end smallexample
@noindent
with this target run in the Interix subsystem, which is separate from
the Win32 subsystem. This target was last known to work in GCC 3.3.
-For more information, see @uref{http://www.interix.com/}.
-
@html
<hr />
@end html