Mercurial > hg > CbC > CbC_gcc
diff gcc/doc/install.texi @ 67:f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
author | nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 22 Mar 2011 17:18:12 +0900 |
parents | b7f97abdc517 |
children | 04ced10e8804 |
line wrap: on
line diff
--- a/gcc/doc/install.texi Tue May 25 18:58:51 2010 +0900 +++ b/gcc/doc/install.texi Tue Mar 22 17:18:12 2011 +0900 @@ -72,11 +72,11 @@ @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 @@ -332,7 +332,7 @@ 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/}. @@ -340,32 +340,28 @@ 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 - -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 CLooG-PPL version 0.15 or CLooG 0.16 + +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}. + +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. + +In both cases @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. -@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 version in -IRIX 6.5 doesn't work since it lacks @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 @@ -456,8 +452,13 @@ 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++, +Necessary when targetting Darwin, building @samp{libstdc++}, and not using @option{--disable-symvers}. +Necessary when targetting Solaris 2 with Sun @command{ld}, building +@samp{libstdc++}, and not using @option{--disable-symvers}. A helper +scripts needs @samp{Glob.pm}, which is missing from @command{perl} 5.005 +included in Solaris@tie{}8. The bundled @command{perl} in Solaris@tie{}9 and up +works. Used by various scripts to generate some files included in SVN (mainly Unicode-related and rarely changing) from source tables. @@ -629,9 +630,9 @@ 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 @@ -890,7 +891,7 @@ 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 @@ -1052,7 +1053,8 @@ 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} @@ -1172,10 +1174,11 @@ 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 @@ -1224,6 +1227,10 @@ 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. @@ -1306,15 +1313,12 @@ 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 @@ -1341,6 +1345,16 @@ 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. @@ -1553,19 +1567,25 @@ 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} @@ -1576,17 +1596,20 @@ 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 @@ -1609,8 +1632,9 @@ @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 @@ -1638,28 +1662,16 @@ 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 @@ -1668,8 +1680,8 @@ @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 @@ -1979,6 +1991,36 @@ @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> @@ -2091,7 +2133,7 @@ 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 @@ -2150,6 +2192,11 @@ @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 @@ -2301,7 +2348,7 @@ @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. @@ -2387,8 +2434,8 @@ 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 @@ -2398,7 +2445,7 @@ 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 @@ -2422,14 +2469,14 @@ 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 @@ -2447,7 +2494,7 @@ 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 @@ -2459,7 +2506,7 @@ 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.) @@ -2467,21 +2514,21 @@ 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}. @@ -2494,13 +2541,13 @@ 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 @@ -2559,8 +2606,8 @@ @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 @@ -2591,7 +2638,7 @@ 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 @@ -2627,7 +2674,8 @@ 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. @@ -2641,6 +2689,12 @@ 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}. @@ -2777,25 +2831,41 @@ 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 +@uref{http://www.blastwave.org/,,Blastwave} + +@item +@uref{http://www.opencsw.org/,,OpenCSW} @item -SGI---@uref{http://freeware.sgi.com/,,SGI Freeware}. +@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: @@ -2888,6 +2958,8 @@ @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} @@ -2916,6 +2988,8 @@ @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} @@ -2950,6 +3024,8 @@ @item @uref{#x-x-solaris2,,*-*-solaris2*} @item +@uref{#sparc-x-x,,sparc*-*-*} +@item @uref{#sparc-sun-solaris2,,sparc-sun-solaris2*} @item @uref{#sparc-sun-solaris210,,sparc-sun-solaris2.10} @@ -3103,7 +3179,7 @@ The following error: @smallexample - Error: register required +Error: register required @end smallexample indicates that you should upgrade to a newer version of the binutils. @@ -3156,7 +3232,7 @@ 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/}. @@ -3183,8 +3259,11 @@ 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'} + +@smallexample +gcc/libstdc++-v3/configure --host=crx-elf --with-newlib \ + --enable-sjlj-exceptions --enable-cxx-flags='-fexceptions -frtti' +@end smallexample @html <hr /> @@ -3207,12 +3286,13 @@ 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 @@ -3306,22 +3386,7 @@ @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 @@ -3463,6 +3528,26 @@ @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@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 @@ -3485,8 +3570,8 @@ 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 +@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? @@ -3542,8 +3627,8 @@ @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 @@ -3554,8 +3639,8 @@ 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 @@ -3603,19 +3688,19 @@ 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 @@ -3763,6 +3848,13 @@ @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 @@ -3950,8 +4042,7 @@ 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 @@ -4058,8 +4149,8 @@ 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 @@ -4104,6 +4195,12 @@ version (2.20.1) 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 @@ -4127,6 +4224,44 @@ 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 @@ -4179,15 +4314,14 @@ 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 9 system: +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 - % ./configure --build=sparc-sun-solaris2.9 --prefix=xxx +% ./configure --build=sparc-sun-solaris2.9 --prefix=xxx @end smallexample @html @@ -4227,14 +4361,14 @@ on a Solaris 9 system: @smallexample - % ./configure --build=sparc64-sun-solaris2.9 --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 @@ -4407,8 +4541,6 @@ 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