Home | History | Annotate | Line # | Download | only in INSTALL
specific.html revision 1.5
      1 <html lang="en">
      2 <head>
      3 <title>Host/Target specific installation notes for GCC</title>
      4 <meta http-equiv="Content-Type" content="text/html">
      5 <meta name="description" content="Host/Target specific installation notes for GCC">
      6 <meta name="generator" content="makeinfo 4.12">
      7 <link title="Top" rel="top" href="#Top">
      8 <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
      9 <!--
     10 Copyright (C) 1988-2015 Free Software Foundation, Inc.
     11 
     12    Permission is granted to copy, distribute and/or modify this document
     13 under the terms of the GNU Free Documentation License, Version 1.3 or
     14 any later version published by the Free Software Foundation; with no
     15 Invariant Sections, the Front-Cover texts being (a) (see below), and
     16 with the Back-Cover Texts being (b) (see below).  A copy of the
     17 license is included in the section entitled "GNU Free Documentation License".
     18 
     19 (a) The FSF's Front-Cover Text is:
     20 
     21      A GNU Manual
     22 
     23 (b) The FSF's Back-Cover Text is:
     24 
     25      You have freedom to copy and modify this GNU Manual, like GNU
     26      software.  Copies published by the Free Software Foundation raise
     27      funds for GNU development.-->
     28 <meta http-equiv="Content-Style-Type" content="text/css">
     29 <style type="text/css"><!--
     30   pre.display { font-family:inherit }
     31   pre.format  { font-family:inherit }
     32   pre.smalldisplay { font-family:inherit; font-size:smaller }
     33   pre.smallformat  { font-family:inherit; font-size:smaller }
     34   pre.smallexample { font-size:smaller }
     35   pre.smalllisp    { font-size:smaller }
     36   span.sc    { font-variant:small-caps }
     37   span.roman { font-family:serif; font-weight:normal; } 
     38   span.sansserif { font-family:sans-serif; font-weight:normal; } 
     39 --></style>
     40 </head>
     41 <body>
     42 <h1 class="settitle">Host/Target specific installation notes for GCC</h1>
     43 <a name="index-Specific-1"></a><a name="index-Specific-installation-notes-2"></a><a name="index-Target-specific-installation-3"></a><a name="index-Host-specific-installation-4"></a><a name="index-Target-specific-installation-notes-5"></a>
     44 Please read this document carefully <em>before</em> installing the
     45 GNU Compiler Collection on your machine.
     46 
     47    <p>Note that this list of install notes is <em>not</em> a list of supported
     48 hosts or targets.  Not all supported hosts and targets are listed
     49 here, only the ones that require host-specific or target-specific
     50 information have to.
     51 
     52      <ul>
     53 <li><a href="#aarch64-x-x">aarch64*-*-*</a>
     54 <li><a href="#alpha-x-x">alpha*-*-*</a>
     55 <li><a href="#alpha-dec-osf51">alpha*-dec-osf5.1</a>
     56 <li><a href="#amd64-x-solaris210">amd64-*-solaris2.10</a>
     57 <li><a href="#arm-x-eabi">arm-*-eabi</a>
     58 <li><a href="#avr">avr</a>
     59 <li><a href="#bfin">Blackfin</a>
     60 <li><a href="#dos">DOS</a>
     61 <li><a href="#x-x-freebsd">*-*-freebsd*</a>
     62 <li><a href="#h8300-hms">h8300-hms</a>
     63 <li><a href="#hppa-hp-hpux">hppa*-hp-hpux*</a>
     64 <li><a href="#hppa-hp-hpux10">hppa*-hp-hpux10</a>
     65 <li><a href="#hppa-hp-hpux11">hppa*-hp-hpux11</a>
     66 <li><a href="#x-x-linux-gnu">*-*-linux-gnu</a>
     67 <li><a href="#ix86-x-linux">i?86-*-linux*</a>
     68 <li><a href="#ix86-x-solaris210">i?86-*-solaris2.10</a>
     69 <li><a href="#ia64-x-linux">ia64-*-linux</a>
     70 <li><a href="#ia64-x-hpux">ia64-*-hpux*</a>
     71 <li><a href="#x-ibm-aix">*-ibm-aix*</a>
     72 <li><a href="#iq2000-x-elf">iq2000-*-elf</a>
     73 <li><a href="#lm32-x-elf">lm32-*-elf</a>
     74 <li><a href="#lm32-x-uclinux">lm32-*-uclinux</a>
     75 <li><a href="#m32c-x-elf">m32c-*-elf</a>
     76 <li><a href="#m32r-x-elf">m32r-*-elf</a>
     77 <li><a href="#m68k-x-x">m68k-*-*</a>
     78 <li><a href="#m68k-uclinux">m68k-uclinux</a>
     79 <li><a href="#mep-x-elf">mep-*-elf</a>
     80 <li><a href="#microblaze-x-elf">microblaze-*-elf</a>
     81 <li><a href="#mips-x-x">mips-*-*</a>
     82 <li><a href="#mips-sgi-irix5">mips-sgi-irix5</a>
     83 <li><a href="#mips-sgi-irix6">mips-sgi-irix6</a>
     84 <li><a href="#nds32le-x-elf">nds32le-*-elf</a>
     85 <li><a href="#nds32be-x-elf">nds32be-*-elf</a>
     86 <li><a href="#nvptx-x-none">nvptx-*-none</a>
     87 <li><a href="#powerpc-x-x">powerpc*-*-*</a>
     88 <li><a href="#powerpc-x-darwin">powerpc-*-darwin*</a>
     89 <li><a href="#powerpc-x-elf">powerpc-*-elf</a>
     90 <li><a href="#powerpc-x-linux-gnu">powerpc*-*-linux-gnu*</a>
     91 <li><a href="#powerpc-x-netbsd">powerpc-*-netbsd*</a>
     92 <li><a href="#powerpc-x-eabisim">powerpc-*-eabisim</a>
     93 <li><a href="#powerpc-x-eabi">powerpc-*-eabi</a>
     94 <li><a href="#powerpcle-x-elf">powerpcle-*-elf</a>
     95 <li><a href="#powerpcle-x-eabisim">powerpcle-*-eabisim</a>
     96 <li><a href="#powerpcle-x-eabi">powerpcle-*-eabi</a>
     97 <li><a href="#s390-x-linux">s390-*-linux*</a>
     98 <li><a href="#s390x-x-linux">s390x-*-linux*</a>
     99 <li><a href="#s390x-ibm-tpf">s390x-ibm-tpf*</a>
    100 <li><a href="#x-x-solaris2">*-*-solaris2*</a>
    101 <li><a href="#sparc-x-x">sparc*-*-*</a>
    102 <li><a href="#sparc-sun-solaris2">sparc-sun-solaris2*</a>
    103 <li><a href="#sparc-sun-solaris210">sparc-sun-solaris2.10</a>
    104 <li><a href="#sparc-x-linux">sparc-*-linux*</a>
    105 <li><a href="#sparc64-x-solaris2">sparc64-*-solaris2*</a>
    106 <li><a href="#sparcv9-x-solaris2">sparcv9-*-solaris2*</a>
    107 <li><a href="#c6x-x-x">c6x-*-*</a>
    108 <li><a href="#tilegx-x-linux">tilegx-*-linux*</a>
    109 <li><a href="#tilegxbe-x-linux">tilegxbe-*-linux*</a>
    110 <li><a href="#tilepro-x-linux">tilepro-*-linux*</a>
    111 <li><a href="#visium-x-elf">visium-*-elf</a>
    112 <li><a href="#x-x-vxworks">*-*-vxworks*</a>
    113 <li><a href="#x86-64-x-x">x86_64-*-*</a> amd64-*-*
    114 <li><a href="#x86-64-x-solaris210">x86_64-*-solaris2.1[0-9]*</a>
    115 <li><a href="#xtensa-x-elf">xtensa*-*-elf</a>
    116 <li><a href="#xtensa-x-linux">xtensa*-*-linux*</a>
    117 <li><a href="#windows">Microsoft Windows</a>
    118 <li><a href="#x-x-cygwin">*-*-cygwin</a>
    119 <li><a href="#x-x-interix">*-*-interix</a>
    120 <li><a href="#x-x-mingw32">*-*-mingw32</a>
    121 <li><a href="#os2">OS/2</a>
    122 <li><a href="#older">Older systems</a>
    123 </ul>
    124 
    125      <ul>
    126 <li><a href="#elf">all ELF targets</a> (SVR4, Solaris 2, etc.) 
    127 </ul>
    128 
    129    <p><!-- -------- host/target specific issues start here ---------------- -->
    130 <hr /><a name="aarch64_002dx_002dx"></a>
    131 
    132 <h3 class="heading"><a name="TOC0"></a>aarch64*-*-*</h3>
    133 
    134 <p>Binutils pre 2.24 does not have support for selecting <samp><span class="option">-mabi</span></samp> and
    135 does not support ILP32.  If it is used to build GCC 4.9 or later, GCC will
    136 not support option <samp><span class="option">-mabi=ilp32</span></samp>.
    137 
    138    <p>To enable a workaround for the Cortex-A53 erratum number 835769 by default
    139 (for all CPUs regardless of -mcpu option given) at configure time use the
    140 <samp><span class="option">--enable-fix-cortex-a53-835769</span></samp> option.  This will enable the fix by
    141 default and can be explicitly disabled during compilation by passing the
    142 <samp><span class="option">-mno-fix-cortex-a53-835769</span></samp> option.  Conversely,
    143 <samp><span class="option">--disable-fix-cortex-a53-835769</span></samp> will disable the workaround by
    144 default.  The workaround is disabled by default if neither of
    145 <samp><span class="option">--enable-fix-cortex-a53-835769</span></samp> or
    146 <samp><span class="option">--disable-fix-cortex-a53-835769</span></samp> is given at configure time.
    147 
    148    <p>To enable a workaround for the Cortex-A53 erratum number 843419 by default
    149 (for all CPUs regardless of -mcpu option given) at configure time use the
    150 <samp><span class="option">--enable-fix-cortex-a53-843419</span></samp> option.  This workaround is applied at
    151 link time.  Enabling the workaround will cause GCC to pass the relevant option
    152 to the linker.  It can be explicitly disabled during compilation by passing the
    153 <samp><span class="option">-mno-fix-cortex-a53-843419</span></samp> option.  Conversely,
    154 <samp><span class="option">--disable-fix-cortex-a53-843419</span></samp> will disable the workaround by default. 
    155 The workaround is disabled by default if neither of
    156 <samp><span class="option">--enable-fix-cortex-a53-843419</span></samp> or
    157 <samp><span class="option">--disable-fix-cortex-a53-843419</span></samp> is given at configure time.
    158 
    159    <p><hr /><a name="alpha_002dx_002dx"></a>
    160 
    161 <h3 class="heading"><a name="TOC1"></a>alpha*-*-*</h3>
    162 
    163 <p>This section contains general configuration information for all
    164 alpha-based platforms using ELF (in particular, ignore this section for
    165 DEC OSF/1, Digital UNIX and Tru64 UNIX).  In addition to reading this
    166 section, please read all other sections that match your target.
    167 
    168    <p>We require binutils 2.11.2 or newer. 
    169 Previous binutils releases had a number of problems with DWARF 2
    170 debugging information, not the least of which is incorrect linking of
    171 shared libraries.
    172 
    173    <p><hr /><a name="alpha_002ddec_002dosf51"></a>
    174 
    175 <h3 class="heading"><a name="TOC2"></a>alpha*-dec-osf5.1</h3>
    176 
    177 <p>Systems using processors that implement the DEC Alpha architecture and
    178 are running the DEC/Compaq/HP Unix (DEC OSF/1, Digital UNIX, or Compaq/HP
    179 Tru64 UNIX) operating system, for example the DEC Alpha AXP systems.
    180 
    181    <p>Support for Tru64 UNIX V5.1 has been removed in GCC 4.8.  As of GCC 4.6,
    182 support for Tru64 UNIX V4.0 and V5.0 has been removed.  As of GCC 3.2,
    183 versions before <code>alpha*-dec-osf4</code> are no longer supported.  (These
    184 are the versions which identify themselves as DEC OSF/1.)
    185 
    186    <p><hr /><a name="amd64_002dx_002dsolaris210"></a>
    187 
    188 <h3 class="heading"><a name="TOC3"></a>amd64-*-solaris2.1[0-9]*</h3>
    189 
    190 <p>This is a synonym for &lsquo;<samp><span class="samp">x86_64-*-solaris2.1[0-9]*</span></samp>&rsquo;.
    191 
    192    <p><hr /><a name="arc_002dx_002delf32"></a>
    193 
    194 <h3 class="heading"><a name="TOC4"></a>arc-*-elf32</h3>
    195 
    196 <p>Use &lsquo;<samp><span class="samp">configure --target=arc-elf32 --with-cpu=</span><var>cpu</var><span class="samp"> --enable-languages="c,c++"</span></samp>&rsquo;
    197 to configure GCC, with <var>cpu</var> being one of &lsquo;<samp><span class="samp">arc600</span></samp>&rsquo;, &lsquo;<samp><span class="samp">arc601</span></samp>&rsquo;,
    198 or &lsquo;<samp><span class="samp">arc700</span></samp>&rsquo;.
    199 
    200    <p><hr /><a name="arc_002dlinux_002duclibc"></a>
    201 
    202 <h3 class="heading"><a name="TOC5"></a>arc-linux-uclibc</h3>
    203 
    204 <p>Use &lsquo;<samp><span class="samp">configure --target=arc-linux-uclibc --with-cpu=arc700 --enable-languages="c,c++"</span></samp>&rsquo; to configure GCC.
    205 
    206    <p><hr /><a name="arm_002dx_002deabi"></a>
    207 
    208 <h3 class="heading"><a name="TOC6"></a>arm-*-eabi</h3>
    209 
    210 <p>ARM-family processors.  Subtargets that use the ELF object format
    211 require GNU binutils 2.13 or newer.  Such subtargets include:
    212 <code>arm-*-netbsdelf</code>, <code>arm-*-*linux-*</code>
    213 and <code>arm-*-rtemseabi</code>.
    214 
    215    <p><hr /><a name="avr"></a>
    216 
    217 <h3 class="heading"><a name="TOC7"></a>avr</h3>
    218 
    219 <p>ATMEL AVR-family micro controllers.  These are used in embedded
    220 applications.  There are no standard Unix configurations. 
    221 See &ldquo;AVR Options&rdquo; in the main manual
    222 for the list of supported MCU types.
    223 
    224    <p>Use &lsquo;<samp><span class="samp">configure --target=avr --enable-languages="c"</span></samp>&rsquo; to configure GCC.
    225 
    226    <p>Further installation notes and other useful information about AVR tools
    227 can also be obtained from:
    228 
    229      <ul>
    230 <li><a href="http://www.nongnu.org/avr/">http://www.nongnu.org/avr/</a>
    231 <li><a href="http://www.amelek.gda.pl/avr/">http://www.amelek.gda.pl/avr/</a>
    232 </ul>
    233 
    234    <p>We <em>strongly</em> recommend using binutils 2.13 or newer.
    235 
    236    <p>The following error:
    237 <pre class="smallexample">     Error: register required
    238 </pre>
    239    <p>indicates that you should upgrade to a newer version of the binutils.
    240 
    241    <p><hr /><a name="bfin"></a>
    242 
    243 <h3 class="heading"><a name="TOC8"></a>Blackfin</h3>
    244 
    245 <p>The Blackfin processor, an Analog Devices DSP. 
    246 See &ldquo;Blackfin Options&rdquo; in the main manual
    247 
    248    <p>More information, and a version of binutils with support for this processor,
    249 is available at <a href="http://blackfin.uclinux.org">http://blackfin.uclinux.org</a>
    250 
    251    <p><hr /><a name="cr16"></a>
    252 
    253 <h3 class="heading"><a name="TOC9"></a>CR16</h3>
    254 
    255 <p>The CR16 CompactRISC architecture is a 16-bit architecture. This
    256 architecture is used in embedded applications.
    257 
    258    <p>See &ldquo;CR16 Options&rdquo; in the main manual for a list of CR16-specific options.
    259 
    260    <p>Use &lsquo;<samp><span class="samp">configure --target=cr16-elf --enable-languages=c,c++</span></samp>&rsquo; to configure
    261 GCC for building a CR16 elf cross-compiler.
    262 
    263    <p>Use &lsquo;<samp><span class="samp">configure --target=cr16-uclinux --enable-languages=c,c++</span></samp>&rsquo; to
    264 configure GCC for building a CR16 uclinux cross-compiler.
    265 
    266    <p><hr /><a name="cris"></a>
    267 
    268 <h3 class="heading"><a name="TOC10"></a>CRIS</h3>
    269 
    270 <p>CRIS is the CPU architecture in Axis Communications ETRAX system-on-a-chip
    271 series.  These are used in embedded applications.
    272 
    273    <p>See &ldquo;CRIS Options&rdquo; in the main manual
    274 for a list of CRIS-specific options.
    275 
    276    <p>There are a few different CRIS targets:
    277      <dl>
    278 <dt><code>cris-axis-elf</code><dd>Mainly for monolithic embedded systems.  Includes a multilib for the
    279 &lsquo;<samp><span class="samp">v10</span></samp>&rsquo; core used in &lsquo;<samp><span class="samp">ETRAX 100 LX</span></samp>&rsquo;. 
    280 <br><dt><code>cris-axis-linux-gnu</code><dd>A GNU/Linux port for the CRIS architecture, currently targeting
    281 &lsquo;<samp><span class="samp">ETRAX 100 LX</span></samp>&rsquo; by default. 
    282 </dl>
    283 
    284    <p>For <code>cris-axis-elf</code> you need binutils 2.11
    285 or newer.  For <code>cris-axis-linux-gnu</code> you need binutils 2.12 or newer.
    286 
    287    <p>Pre-packaged tools can be obtained from
    288 <a href="ftp://ftp.axis.com/pub/axis/tools/cris/compiler-kit/">ftp://ftp.axis.com/pub/axis/tools/cris/compiler-kit/</a>.  More
    289 information about this platform is available at
    290 <a href="http://developer.axis.com/">http://developer.axis.com/</a>.
    291 
    292    <p><hr /><a name="dos"></a>
    293 
    294 <h3 class="heading"><a name="TOC11"></a>DOS</h3>
    295 
    296 <p>Please have a look at the <a href="binaries.html">binaries page</a>.
    297 
    298    <p>You cannot install GCC by itself on MSDOS; it will not compile under
    299 any MSDOS compiler except itself.  You need to get the complete
    300 compilation package DJGPP, which includes binaries as well as sources,
    301 and includes all the necessary compilation tools and libraries.
    302 
    303    <p><hr /><a name="epiphany_002dx_002delf"></a>
    304 
    305 <h3 class="heading"><a name="TOC12"></a>epiphany-*-elf</h3>
    306 
    307 <p>Adapteva Epiphany. 
    308 This configuration is intended for embedded systems.
    309 
    310    <p><hr /><a name="x_002dx_002dfreebsd"></a>
    311 
    312 <h3 class="heading"><a name="TOC13"></a>*-*-freebsd*</h3>
    313 
    314 <p>Support for FreeBSD 1 was discontinued in GCC 3.2.  Support for
    315 FreeBSD 2 (and any mutant a.out variants of FreeBSD 3) was
    316 discontinued in GCC 4.0.
    317 
    318    <p>In order to better utilize FreeBSD base system functionality and match
    319 the configuration of the system compiler, GCC 4.5 and above as well as
    320 GCC 4.4 past 2010-06-20 leverage SSP support in libc (which is present
    321 on FreeBSD 7 or later) and the use of <code>__cxa_atexit</code> by default
    322 (on FreeBSD 6 or later).  The use of <code>dl_iterate_phdr</code> inside
    323 <samp><span class="file">libgcc_s.so.1</span></samp> and boehm-gc (on FreeBSD 7 or later) is enabled
    324 by GCC 4.5 and above.
    325 
    326    <p>We support FreeBSD using the ELF file format with DWARF 2 debugging
    327 for all CPU architectures.  You may use <samp><span class="option">-gstabs</span></samp> instead of
    328 <samp><span class="option">-g</span></samp>, if you really want the old debugging format.  There are
    329 no known issues with mixing object files and libraries with different
    330 debugging formats.  Otherwise, this release of GCC should now match
    331 more of the configuration used in the stock FreeBSD configuration of
    332 GCC.  In particular, <samp><span class="option">--enable-threads</span></samp> is now configured by
    333 default.  However, as a general user, do not attempt to replace the
    334 system compiler with this release.  Known to bootstrap and check with
    335 good results on FreeBSD 7.2-STABLE.  In the past, known to bootstrap
    336 and check with good results on FreeBSD 3.0, 3.4, 4.0, 4.2, 4.3, 4.4,
    337 4.5, 4.8, 4.9 and 5-CURRENT.
    338 
    339    <p>The version of binutils installed in <samp><span class="file">/usr/bin</span></samp> probably works
    340 with this release of GCC.  Bootstrapping against the latest GNU
    341 binutils and/or the version found in <samp><span class="file">/usr/ports/devel/binutils</span></samp> has
    342 been known to enable additional features and improve overall testsuite
    343 results.  However, it is currently known that boehm-gc (which itself
    344 is required for java) may not configure properly on FreeBSD prior to
    345 the FreeBSD 7.0 release with GNU binutils after 2.16.1.
    346 
    347    <p><hr /><a name="h8300_002dhms"></a>
    348 
    349 <h3 class="heading"><a name="TOC14"></a>h8300-hms</h3>
    350 
    351 <p>Renesas H8/300 series of processors.
    352 
    353    <p>Please have a look at the <a href="binaries.html">binaries page</a>.
    354 
    355    <p>The calling convention and structure layout has changed in release 2.6. 
    356 All code must be recompiled.  The calling convention now passes the
    357 first three arguments in function calls in registers.  Structures are no
    358 longer a multiple of 2 bytes.
    359 
    360    <p><hr /><a name="hppa_002dhp_002dhpux"></a>
    361 
    362 <h3 class="heading"><a name="TOC15"></a>hppa*-hp-hpux*</h3>
    363 
    364 <p>Support for HP-UX version 9 and older was discontinued in GCC 3.4.
    365 
    366    <p>We require using gas/binutils on all hppa platforms.  Version 2.19 or
    367 later is recommended.
    368 
    369    <p>It may be helpful to configure GCC with the
    370 <a href="./configure.html#with-gnu-as"><samp><span class="option">--with-gnu-as</span></samp></a> and
    371 <samp><span class="option">--with-as=...</span></samp> options to ensure that GCC can find GAS.
    372 
    373    <p>The HP assembler should not be used with GCC.  It is rarely tested and may
    374 not work.  It shouldn't be used with any languages other than C due to its
    375 many limitations.
    376 
    377    <p>Specifically, <samp><span class="option">-g</span></samp> does not work (HP-UX uses a peculiar debugging
    378 format which GCC does not know about).  It also inserts timestamps
    379 into each object file it creates, causing the 3-stage comparison test to
    380 fail during a bootstrap.  You should be able to continue by saying
    381 &lsquo;<samp><span class="samp">make all-host all-target</span></samp>&rsquo; after getting the failure from &lsquo;<samp><span class="samp">make</span></samp>&rsquo;.
    382 
    383    <p>Various GCC features are not supported.  For example, it does not support weak
    384 symbols or alias definitions.  As a result, explicit template instantiations
    385 are required when using C++.  This makes it difficult if not impossible to
    386 build many C++ applications.
    387 
    388    <p>There are two default scheduling models for instructions.  These are
    389 PROCESSOR_7100LC and PROCESSOR_8000.  They are selected from the pa-risc
    390 architecture specified for the target machine when configuring. 
    391 PROCESSOR_8000 is the default.  PROCESSOR_7100LC is selected when
    392 the target is a &lsquo;<samp><span class="samp">hppa1*</span></samp>&rsquo; machine.
    393 
    394    <p>The PROCESSOR_8000 model is not well suited to older processors.  Thus,
    395 it is important to completely specify the machine architecture when
    396 configuring if you want a model other than PROCESSOR_8000.  The macro
    397 TARGET_SCHED_DEFAULT can be defined in BOOT_CFLAGS if a different
    398 default scheduling model is desired.
    399 
    400    <p>As of GCC 4.0, GCC uses the UNIX 95 namespace for HP-UX 10.10
    401 through 11.00, and the UNIX 98 namespace for HP-UX 11.11 and later. 
    402 This namespace change might cause problems when bootstrapping with
    403 an earlier version of GCC or the HP compiler as essentially the same
    404 namespace is required for an entire build.  This problem can be avoided
    405 in a number of ways.  With HP cc, <samp><span class="env">UNIX_STD</span></samp> can be set to &lsquo;<samp><span class="samp">95</span></samp>&rsquo;
    406 or &lsquo;<samp><span class="samp">98</span></samp>&rsquo;.  Another way is to add an appropriate set of predefines
    407 to <samp><span class="env">CC</span></samp>.  The description for the <samp><span class="option">munix=</span></samp> option contains
    408 a list of the predefines used with each standard.
    409 
    410    <p>More specific information to &lsquo;<samp><span class="samp">hppa*-hp-hpux*</span></samp>&rsquo; targets follows.
    411 
    412    <p><hr /><a name="hppa_002dhp_002dhpux10"></a>
    413 
    414 <h3 class="heading"><a name="TOC16"></a>hppa*-hp-hpux10</h3>
    415 
    416 <p>For hpux10.20, we <em>highly</em> recommend you pick up the latest sed patch
    417 <code>PHCO_19798</code> from HP.
    418 
    419    <p>The C++ ABI has changed incompatibly in GCC 4.0.  COMDAT subspaces are
    420 used for one-only code and data.  This resolves many of the previous
    421 problems in using C++ on this target.  However, the ABI is not compatible
    422 with the one implemented under HP-UX 11 using secondary definitions.
    423 
    424    <p><hr /><a name="hppa_002dhp_002dhpux11"></a>
    425 
    426 <h3 class="heading"><a name="TOC17"></a>hppa*-hp-hpux11</h3>
    427 
    428 <p>GCC 3.0 and up support HP-UX 11.  GCC 2.95.x is not supported and cannot
    429 be used to compile GCC 3.0 and up.
    430 
    431    <p>The libffi and libjava libraries haven't been ported to 64-bit HP-UX and don't build.
    432 
    433    <p>Refer to <a href="binaries.html">binaries</a> for information about obtaining
    434 precompiled GCC binaries for HP-UX.  Precompiled binaries must be obtained
    435 to build the Ada language as it can't be bootstrapped using C.  Ada is
    436 only available for the 32-bit PA-RISC runtime.
    437 
    438    <p>Starting with GCC 3.4 an ISO C compiler is required to bootstrap.  The
    439 bundled compiler supports only traditional C; you will need either HP's
    440 unbundled compiler, or a binary distribution of GCC.
    441 
    442    <p>It is possible to build GCC 3.3 starting with the bundled HP compiler,
    443 but the process requires several steps.  GCC 3.3 can then be used to
    444 build later versions.  The fastjar program contains ISO C code and
    445 can't be built with the HP bundled compiler.  This problem can be
    446 avoided by not building the Java language.  For example, use the
    447 <samp><span class="option">--enable-languages="c,c++,f77,objc"</span></samp> option in your configure
    448 command.
    449 
    450    <p>There are several possible approaches to building the distribution. 
    451 Binutils can be built first using the HP tools.  Then, the GCC
    452 distribution can be built.  The second approach is to build GCC
    453 first using the HP tools, then build binutils, then rebuild GCC. 
    454 There have been problems with various binary distributions, so it
    455 is best not to start from a binary distribution.
    456 
    457    <p>On 64-bit capable systems, there are two distinct targets.  Different
    458 installation prefixes must be used if both are to be installed on
    459 the same system.  The &lsquo;<samp><span class="samp">hppa[1-2]*-hp-hpux11*</span></samp>&rsquo; target generates code
    460 for the 32-bit PA-RISC runtime architecture and uses the HP linker. 
    461 The &lsquo;<samp><span class="samp">hppa64-hp-hpux11*</span></samp>&rsquo; target generates 64-bit code for the
    462 PA-RISC 2.0 architecture.
    463 
    464    <p>The script config.guess now selects the target type based on the compiler
    465 detected during configuration.  You must define <samp><span class="env">PATH</span></samp> or <samp><span class="env">CC</span></samp> so
    466 that configure finds an appropriate compiler for the initial bootstrap. 
    467 When <samp><span class="env">CC</span></samp> is used, the definition should contain the options that are
    468 needed whenever <samp><span class="env">CC</span></samp> is used.
    469 
    470    <p>Specifically, options that determine the runtime architecture must be
    471 in <samp><span class="env">CC</span></samp> to correctly select the target for the build.  It is also
    472 convenient to place many other compiler options in <samp><span class="env">CC</span></samp>.  For example,
    473 <samp><span class="env">CC="cc -Ac +DA2.0W -Wp,-H16376 -D_CLASSIC_TYPES -D_HPUX_SOURCE"</span></samp>
    474 can be used to bootstrap the GCC 3.3 branch with the HP compiler in
    475 64-bit K&amp;R/bundled mode.  The <samp><span class="option">+DA2.0W</span></samp> option will result in
    476 the automatic selection of the &lsquo;<samp><span class="samp">hppa64-hp-hpux11*</span></samp>&rsquo; target.  The
    477 macro definition table of cpp needs to be increased for a successful
    478 build with the HP compiler.  _CLASSIC_TYPES and _HPUX_SOURCE need to
    479 be defined when building with the bundled compiler, or when using the
    480 <samp><span class="option">-Ac</span></samp> option.  These defines aren't necessary with <samp><span class="option">-Ae</span></samp>.
    481 
    482    <p>It is best to explicitly configure the &lsquo;<samp><span class="samp">hppa64-hp-hpux11*</span></samp>&rsquo; target
    483 with the <samp><span class="option">--with-ld=...</span></samp> option.  This overrides the standard
    484 search for ld.  The two linkers supported on this target require different
    485 commands.  The default linker is determined during configuration.  As a
    486 result, it's not possible to switch linkers in the middle of a GCC build. 
    487 This has been reported to sometimes occur in unified builds of binutils
    488 and GCC.
    489 
    490    <p>A recent linker patch must be installed for the correct operation of
    491 GCC 3.3 and later.  <code>PHSS_26559</code> and <code>PHSS_24304</code> are the
    492 oldest linker patches that are known to work.  They are for HP-UX
    493 11.00 and 11.11, respectively.  <code>PHSS_24303</code>, the companion to
    494 <code>PHSS_24304</code>, might be usable but it hasn't been tested.  These
    495 patches have been superseded.  Consult the HP patch database to obtain
    496 the currently recommended linker patch for your system.
    497 
    498    <p>The patches are necessary for the support of weak symbols on the
    499 32-bit port, and for the running of initializers and finalizers.  Weak
    500 symbols are implemented using SOM secondary definition symbols.  Prior
    501 to HP-UX 11, there are bugs in the linker support for secondary symbols. 
    502 The patches correct a problem of linker core dumps creating shared
    503 libraries containing secondary symbols, as well as various other
    504 linking issues involving secondary symbols.
    505 
    506    <p>GCC 3.3 uses the ELF DT_INIT_ARRAY and DT_FINI_ARRAY capabilities to
    507 run initializers and finalizers on the 64-bit port.  The 32-bit port
    508 uses the linker <samp><span class="option">+init</span></samp> and <samp><span class="option">+fini</span></samp> options for the same
    509 purpose.  The patches correct various problems with the +init/+fini
    510 options, including program core dumps.  Binutils 2.14 corrects a
    511 problem on the 64-bit port resulting from HP's non-standard use of
    512 the .init and .fini sections for array initializers and finalizers.
    513 
    514    <p>Although the HP and GNU linkers are both supported for the
    515 &lsquo;<samp><span class="samp">hppa64-hp-hpux11*</span></samp>&rsquo; target, it is strongly recommended that the
    516 HP linker be used for link editing on this target.
    517 
    518    <p>At this time, the GNU linker does not support the creation of long
    519 branch stubs.  As a result, it can't successfully link binaries
    520 containing branch offsets larger than 8 megabytes.  In addition,
    521 there are problems linking shared libraries, linking executables
    522 with <samp><span class="option">-static</span></samp>, and with dwarf2 unwind and exception support. 
    523 It also doesn't provide stubs for internal calls to global functions
    524 in shared libraries, so these calls can't be overloaded.
    525 
    526    <p>The HP dynamic loader does not support GNU symbol versioning, so symbol
    527 versioning is not supported.  It may be necessary to disable symbol
    528 versioning with <samp><span class="option">--disable-symvers</span></samp> when using GNU ld.
    529 
    530    <p>POSIX threads are the default.  The optional DCE thread library is not
    531 supported, so <samp><span class="option">--enable-threads=dce</span></samp> does not work.
    532 
    533    <p><hr /><a name="x_002dx_002dlinux_002dgnu"></a>
    534 
    535 <h3 class="heading"><a name="TOC18"></a>*-*-linux-gnu</h3>
    536 
    537 <p>Versions of libstdc++-v3 starting with 3.2.1 require bug fixes present
    538 in glibc 2.2.5 and later.  More information is available in the
    539 libstdc++-v3 documentation.
    540 
    541    <p><hr /><a name="ix86_002dx_002dlinux"></a>
    542 
    543 <h3 class="heading"><a name="TOC19"></a>i?86-*-linux*</h3>
    544 
    545 <p>As of GCC 3.3, binutils 2.13.1 or later is required for this platform. 
    546 See <a href="http://gcc.gnu.org/PR10877">bug 10877</a> for more information.
    547 
    548    <p>If you receive Signal 11 errors when building on GNU/Linux, then it is
    549 possible you have a hardware problem.  Further information on this can be
    550 found on <a href="http://www.bitwizard.nl/sig11/">www.bitwizard.nl</a>.
    551 
    552    <p><hr /><a name="ix86_002dx_002dsolaris210"></a>
    553 
    554 <h3 class="heading"><a name="TOC20"></a>i?86-*-solaris2.10</h3>
    555 
    556 <p>Use this for Solaris 10 or later on x86 and x86-64 systems.  Starting
    557 with GCC 4.7, there is also a 64-bit &lsquo;<samp><span class="samp">amd64-*-solaris2.1[0-9]*</span></samp>&rsquo; or
    558 &lsquo;<samp><span class="samp">x86_64-*-solaris2.1[0-9]*</span></samp>&rsquo; configuration that corresponds to
    559 &lsquo;<samp><span class="samp">sparcv9-sun-solaris2*</span></samp>&rsquo;.
    560 
    561    <p>It is recommended that you configure GCC to use the GNU assembler, in
    562 <samp><span class="file">/usr/sfw/bin/gas</span></samp>.  The versions included in Solaris 10, from GNU
    563 binutils 2.15, and Solaris 11, from GNU binutils 2.19, work fine,
    564 although the current version, from GNU binutils
    565 2.22, is known to work, too.  Recent versions of the Sun assembler in
    566 <samp><span class="file">/usr/ccs/bin/as</span></samp> work almost as well, though. 
    567 <!-- FIXME: as patch requirements? -->
    568 
    569    <p>For linking, the Sun linker, is preferred.  If you want to use the GNU
    570 linker instead, which is available in <samp><span class="file">/usr/sfw/bin/gld</span></samp>, note that
    571 due to a packaging bug the version in Solaris 10, from GNU binutils
    572 2.15, cannot be used, while the version in Solaris 11, from GNU binutils
    573 2.19, works, as does the latest version, from GNU binutils 2.22.
    574 
    575    <p>To use GNU <samp><span class="command">as</span></samp>, configure with the options
    576 <samp><span class="option">--with-gnu-as --with-as=/usr/sfw/bin/gas</span></samp>.  It may be necessary
    577 to configure with <samp><span class="option">--without-gnu-ld --with-ld=/usr/ccs/bin/ld</span></samp> to
    578 guarantee use of Sun <samp><span class="command">ld</span></samp>. 
    579 <!-- FIXME: why -without-gnu-ld -with-ld? -->
    580 
    581    <p><hr /><a name="ia64_002dx_002dlinux"></a>
    582 
    583 <h3 class="heading"><a name="TOC21"></a>ia64-*-linux</h3>
    584 
    585 <p>IA-64 processor (also known as IPF, or Itanium Processor Family)
    586 running GNU/Linux.
    587 
    588    <p>If you are using the installed system libunwind library with
    589 <samp><span class="option">--with-system-libunwind</span></samp>, then you must use libunwind 0.98 or
    590 later.
    591 
    592    <p>None of the following versions of GCC has an ABI that is compatible
    593 with any of the other versions in this list, with the exception that
    594 Red Hat 2.96 and Trillian 000171 are compatible with each other:
    595 3.1, 3.0.2, 3.0.1, 3.0, Red Hat 2.96, and Trillian 000717. 
    596 This primarily affects C++ programs and programs that create shared libraries. 
    597 GCC 3.1 or later is recommended for compiling linux, the kernel. 
    598 As of version 3.1 GCC is believed to be fully ABI compliant, and hence no
    599 more major ABI changes are expected.
    600 
    601    <p><hr /><a name="ia64_002dx_002dhpux"></a>
    602 
    603 <h3 class="heading"><a name="TOC22"></a>ia64-*-hpux*</h3>
    604 
    605 <p>Building GCC on this target requires the GNU Assembler.  The bundled HP
    606 assembler will not work.  To prevent GCC from using the wrong assembler,
    607 the option <samp><span class="option">--with-gnu-as</span></samp> may be necessary.
    608 
    609    <p>The GCC libunwind library has not been ported to HPUX.  This means that for
    610 GCC versions 3.2.3 and earlier, <samp><span class="option">--enable-libunwind-exceptions</span></samp>
    611 is required to build GCC.  For GCC 3.3 and later, this is the default. 
    612 For gcc 3.4.3 and later, <samp><span class="option">--enable-libunwind-exceptions</span></samp> is
    613 removed and the system libunwind library will always be used.
    614 
    615    <p><hr />
    616 <!-- rs6000-ibm-aix*, powerpc-ibm-aix* --><a name="x_002dibm_002daix"></a>
    617 
    618 <h3 class="heading"><a name="TOC23"></a>*-ibm-aix*</h3>
    619 
    620 <p>Support for AIX version 3 and older was discontinued in GCC 3.4. 
    621 Support for AIX version 4.2 and older was discontinued in GCC 4.5.
    622 
    623    <p>&ldquo;out of memory&rdquo; bootstrap failures may indicate a problem with
    624 process resource limits (ulimit).  Hard limits are configured in the
    625 <samp><span class="file">/etc/security/limits</span></samp> system configuration file.
    626 
    627    <p>GCC can bootstrap with recent versions of IBM XLC, but bootstrapping
    628 with an earlier release of GCC is recommended.  Bootstrapping with XLC
    629 requires a larger data segment, which can be enabled through the
    630 <var>LDR_CNTRL</var> environment variable, e.g.,
    631 
    632 <pre class="smallexample">     % LDR_CNTRL=MAXDATA=0x50000000
    633      % export LDR_CNTRL
    634 </pre>
    635    <p>One can start with a pre-compiled version of GCC to build from
    636 sources.  One may delete GCC's &ldquo;fixed&rdquo; header files when starting
    637 with a version of GCC built for an earlier release of AIX.
    638 
    639    <p>To speed up the configuration phases of bootstrapping and installing GCC,
    640 one may use GNU Bash instead of AIX <samp><span class="command">/bin/sh</span></samp>, e.g.,
    641 
    642 <pre class="smallexample">     % CONFIG_SHELL=/opt/freeware/bin/bash
    643      % export CONFIG_SHELL
    644 </pre>
    645    <p>and then proceed as described in <a href="build.html">the build instructions</a>, where we strongly recommend specifying an absolute path
    646 to invoke <var>srcdir</var>/configure.
    647 
    648    <p>Because GCC on AIX is built as a 32-bit executable by default,
    649 (although it can generate 64-bit programs) the GMP and MPFR libraries
    650 required by gfortran must be 32-bit libraries.  Building GMP and MPFR
    651 as static archive libraries works better than shared libraries.
    652 
    653    <p>Errors involving <code>alloca</code> when building GCC generally are due
    654 to an incorrect definition of <code>CC</code> in the Makefile or mixing files
    655 compiled with the native C compiler and GCC.  During the stage1 phase of
    656 the build, the native AIX compiler <strong>must</strong> be invoked as <samp><span class="command">cc</span></samp>
    657 (not <samp><span class="command">xlc</span></samp>).  Once <samp><span class="command">configure</span></samp> has been informed of
    658 <samp><span class="command">xlc</span></samp>, one needs to use &lsquo;<samp><span class="samp">make distclean</span></samp>&rsquo; to remove the
    659 configure cache files and ensure that <samp><span class="env">CC</span></samp> environment variable
    660 does not provide a definition that will confuse <samp><span class="command">configure</span></samp>. 
    661 If this error occurs during stage2 or later, then the problem most likely
    662 is the version of Make (see above).
    663 
    664    <p>The native <samp><span class="command">as</span></samp> and <samp><span class="command">ld</span></samp> are recommended for
    665 bootstrapping on AIX.  The GNU Assembler, GNU Linker, and GNU
    666 Binutils version 2.20 is the minimum level that supports bootstrap on
    667 AIX 5.  The GNU Assembler has not been updated to support AIX 6 or
    668 AIX 7.  The native AIX tools do interoperate with GCC.
    669 
    670    <p>AIX 5.3 TL10, AIX 6.1 TL05 and AIX 7.1 TL00 introduced an AIX
    671 assembler change that sometimes produces corrupt assembly files
    672 causing AIX linker errors.  The bug breaks GCC bootstrap on AIX and
    673 can cause compilation failures with existing GCC installations.  An
    674 AIX iFix for AIX 5.3 is available (APAR IZ98385 for AIX 5.3 TL10, APAR
    675 IZ98477 for AIX 5.3 TL11 and IZ98134 for AIX 5.3 TL12). AIX 5.3 TL11 SP8,
    676 AIX 5.3 TL12 SP5, AIX 6.1 TL04 SP11, AIX 6.1 TL05 SP7, AIX 6.1 TL06 SP6,
    677 AIX 6.1 TL07 and AIX 7.1 TL01 should include the fix.
    678 
    679    <p>Building <samp><span class="file">libstdc++.a</span></samp> requires a fix for an AIX Assembler bug
    680 APAR IY26685 (AIX 4.3) or APAR IY25528 (AIX 5.1).  It also requires a
    681 fix for another AIX Assembler bug and a co-dependent AIX Archiver fix
    682 referenced as APAR IY53606 (AIX 5.2) or as APAR IY54774 (AIX 5.1)
    683 
    684    <p><a name="TransferAixShobj"></a>&lsquo;<samp><span class="samp">libstdc++</span></samp>&rsquo; in GCC 3.4 increments the major version number of the
    685 shared object and GCC installation places the <samp><span class="file">libstdc++.a</span></samp>
    686 shared library in a common location which will overwrite the and GCC
    687 3.3 version of the shared library.  Applications either need to be
    688 re-linked against the new shared library or the GCC 3.1 and GCC 3.3
    689 versions of the &lsquo;<samp><span class="samp">libstdc++</span></samp>&rsquo; shared object needs to be available
    690 to the AIX runtime loader.  The GCC 3.1 &lsquo;<samp><span class="samp">libstdc++.so.4</span></samp>&rsquo;, if
    691 present, and GCC 3.3 &lsquo;<samp><span class="samp">libstdc++.so.5</span></samp>&rsquo; shared objects can be
    692 installed for runtime dynamic loading using the following steps to set
    693 the &lsquo;<samp><span class="samp">F_LOADONLY</span></samp>&rsquo; flag in the shared object for <em>each</em>
    694 multilib <samp><span class="file">libstdc++.a</span></samp> installed:
    695 
    696    <p>Extract the shared objects from the currently installed
    697 <samp><span class="file">libstdc++.a</span></samp> archive:
    698 <pre class="smallexample">     % ar -x libstdc++.a libstdc++.so.4 libstdc++.so.5
    699 </pre>
    700    <p>Enable the &lsquo;<samp><span class="samp">F_LOADONLY</span></samp>&rsquo; flag so that the shared object will be
    701 available for runtime dynamic loading, but not linking:
    702 <pre class="smallexample">     % strip -e libstdc++.so.4 libstdc++.so.5
    703 </pre>
    704    <p>Archive the runtime-only shared object in the GCC 3.4
    705 <samp><span class="file">libstdc++.a</span></samp> archive:
    706 <pre class="smallexample">     % ar -q libstdc++.a libstdc++.so.4 libstdc++.so.5
    707 </pre>
    708    <p>Eventually, the
    709 <a href="./configure.html#WithAixSoname"><samp><span class="option">--with-aix-soname=svr4</span></samp></a>
    710 configure option may drop the need for this procedure for libraries that
    711 support it.
    712 
    713    <p>Linking executables and shared libraries may produce warnings of
    714 duplicate symbols.  The assembly files generated by GCC for AIX always
    715 have included multiple symbol definitions for certain global variable
    716 and function declarations in the original program.  The warnings should
    717 not prevent the linker from producing a correct library or runnable
    718 executable.
    719 
    720    <p>AIX 4.3 utilizes a &ldquo;large format&rdquo; archive to support both 32-bit and
    721 64-bit object modules.  The routines provided in AIX 4.3.0 and AIX 4.3.1
    722 to parse archive libraries did not handle the new format correctly. 
    723 These routines are used by GCC and result in error messages during
    724 linking such as &ldquo;not a COFF file&rdquo;.  The version of the routines shipped
    725 with AIX 4.3.1 should work for a 32-bit environment.  The <samp><span class="option">-g</span></samp>
    726 option of the archive command may be used to create archives of 32-bit
    727 objects using the original &ldquo;small format&rdquo;.  A correct version of the
    728 routines is shipped with AIX 4.3.2 and above.
    729 
    730    <p>Some versions of the AIX binder (linker) can fail with a relocation
    731 overflow severe error when the <samp><span class="option">-bbigtoc</span></samp> option is used to link
    732 GCC-produced object files into an executable that overflows the TOC.  A fix
    733 for APAR IX75823 (OVERFLOW DURING LINK WHEN USING GCC AND -BBIGTOC) is
    734 available from IBM Customer Support and from its
    735 <a href="http://techsupport.services.ibm.com/">techsupport.services.ibm.com</a>
    736 website as PTF U455193.
    737 
    738    <p>The AIX 4.3.2.1 linker (bos.rte.bind_cmds Level 4.3.2.1) will dump core
    739 with a segmentation fault when invoked by any version of GCC.  A fix for
    740 APAR IX87327 is available from IBM Customer Support and from its
    741 <a href="http://techsupport.services.ibm.com/">techsupport.services.ibm.com</a>
    742 website as PTF U461879.  This fix is incorporated in AIX 4.3.3 and above.
    743 
    744    <p>The initial assembler shipped with AIX 4.3.0 generates incorrect object
    745 files.  A fix for APAR IX74254 (64BIT DISASSEMBLED OUTPUT FROM COMPILER FAILS
    746 TO ASSEMBLE/BIND) is available from IBM Customer Support and from its
    747 <a href="http://techsupport.services.ibm.com/">techsupport.services.ibm.com</a>
    748 website as PTF U453956.  This fix is incorporated in AIX 4.3.1 and above.
    749 
    750    <p>AIX provides National Language Support (NLS).  Compilers and assemblers
    751 use NLS to support locale-specific representations of various data
    752 formats including floating-point numbers (e.g., &lsquo;<samp><span class="samp">.</span></samp>&rsquo;  vs &lsquo;<samp><span class="samp">,</span></samp>&rsquo; for
    753 separating decimal fractions).  There have been problems reported where
    754 GCC does not produce the same floating-point formats that the assembler
    755 expects.  If one encounters this problem, set the <samp><span class="env">LANG</span></samp>
    756 environment variable to &lsquo;<samp><span class="samp">C</span></samp>&rsquo; or &lsquo;<samp><span class="samp">En_US</span></samp>&rsquo;.
    757 
    758    <p>A default can be specified with the <samp><span class="option">-mcpu=</span><var>cpu_type</var></samp>
    759 switch and using the configure option <samp><span class="option">--with-cpu-</span><var>cpu_type</var></samp>.
    760 
    761    <p><hr /><a name="iq2000_002dx_002delf"></a>
    762 
    763 <h3 class="heading"><a name="TOC24"></a>iq2000-*-elf</h3>
    764 
    765 <p>Vitesse IQ2000 processors.  These are used in embedded
    766 applications.  There are no standard Unix configurations.
    767 
    768    <p><hr /><a name="lm32_002dx_002delf"></a>
    769 
    770 <h3 class="heading"><a name="TOC25"></a>lm32-*-elf</h3>
    771 
    772 <p>Lattice Mico32 processor. 
    773 This configuration is intended for embedded systems.
    774 
    775    <p><hr /><a name="lm32_002dx_002duclinux"></a>
    776 
    777 <h3 class="heading"><a name="TOC26"></a>lm32-*-uclinux</h3>
    778 
    779 <p>Lattice Mico32 processor. 
    780 This configuration is intended for embedded systems running uClinux.
    781 
    782    <p><hr /><a name="m32c_002dx_002delf"></a>
    783 
    784 <h3 class="heading"><a name="TOC27"></a>m32c-*-elf</h3>
    785 
    786 <p>Renesas M32C processor. 
    787 This configuration is intended for embedded systems.
    788 
    789    <p><hr /><a name="m32r_002dx_002delf"></a>
    790 
    791 <h3 class="heading"><a name="TOC28"></a>m32r-*-elf</h3>
    792 
    793 <p>Renesas M32R processor. 
    794 This configuration is intended for embedded systems.
    795 
    796    <p><hr /><a name="m68k_002dx_002dx"></a>
    797 
    798 <h3 class="heading"><a name="TOC29"></a>m68k-*-*</h3>
    799 
    800 <p>By default,
    801 &lsquo;<samp><span class="samp">m68k-*-elf*</span></samp>&rsquo;, &lsquo;<samp><span class="samp">m68k-*-rtems</span></samp>&rsquo;,  &lsquo;<samp><span class="samp">m68k-*-uclinux</span></samp>&rsquo; and
    802 &lsquo;<samp><span class="samp">m68k-*-linux</span></samp>&rsquo;
    803 build libraries for both M680x0 and ColdFire processors.  If you only
    804 need the M680x0 libraries, you can omit the ColdFire ones by passing
    805 <samp><span class="option">--with-arch=m68k</span></samp> to <samp><span class="command">configure</span></samp>.  Alternatively, you
    806 can omit the M680x0 libraries by passing <samp><span class="option">--with-arch=cf</span></samp> to
    807 <samp><span class="command">configure</span></samp>.  These targets default to 5206 or 5475 code as
    808 appropriate for the target system when
    809 configured with <samp><span class="option">--with-arch=cf</span></samp> and 68020 code otherwise.
    810 
    811    <p>The &lsquo;<samp><span class="samp">m68k-*-netbsd</span></samp>&rsquo; and
    812 &lsquo;<samp><span class="samp">m68k-*-openbsd</span></samp>&rsquo; targets also support the <samp><span class="option">--with-arch</span></samp>
    813 option.  They will generate ColdFire CFV4e code when configured with
    814 <samp><span class="option">--with-arch=cf</span></samp> and 68020 code otherwise.
    815 
    816    <p>You can override the default processors listed above by configuring
    817 with <samp><span class="option">--with-cpu=</span><var>target</var></samp>.  This <var>target</var> can either
    818 be a <samp><span class="option">-mcpu</span></samp> argument or one of the following values:
    819 &lsquo;<samp><span class="samp">m68000</span></samp>&rsquo;, &lsquo;<samp><span class="samp">m68010</span></samp>&rsquo;, &lsquo;<samp><span class="samp">m68020</span></samp>&rsquo;, &lsquo;<samp><span class="samp">m68030</span></samp>&rsquo;,
    820 &lsquo;<samp><span class="samp">m68040</span></samp>&rsquo;, &lsquo;<samp><span class="samp">m68060</span></samp>&rsquo;, &lsquo;<samp><span class="samp">m68020-40</span></samp>&rsquo; and &lsquo;<samp><span class="samp">m68020-60</span></samp>&rsquo;.
    821 
    822    <p>GCC requires at least binutils version 2.17 on these targets.
    823 
    824    <p><hr /><a name="m68k_002dx_002duclinux"></a>
    825 
    826 <h3 class="heading"><a name="TOC30"></a>m68k-*-uclinux</h3>
    827 
    828 <p>GCC 4.3 changed the uClinux configuration so that it uses the
    829 &lsquo;<samp><span class="samp">m68k-linux-gnu</span></samp>&rsquo; ABI rather than the &lsquo;<samp><span class="samp">m68k-elf</span></samp>&rsquo; ABI. 
    830 It also added improved support for C++ and flat shared libraries,
    831 both of which were ABI changes.
    832 
    833    <p><hr /><a name="mep_002dx_002delf"></a>
    834 
    835 <h3 class="heading"><a name="TOC31"></a>mep-*-elf</h3>
    836 
    837 <p>Toshiba Media embedded Processor. 
    838 This configuration is intended for embedded systems.
    839 
    840    <p><hr /><a name="microblaze_002dx_002delf"></a>
    841 
    842 <h3 class="heading"><a name="TOC32"></a>microblaze-*-elf</h3>
    843 
    844 <p>Xilinx MicroBlaze processor. 
    845 This configuration is intended for embedded systems.
    846 
    847    <p><hr /><a name="mips_002dx_002dx"></a>
    848 
    849 <h3 class="heading"><a name="TOC33"></a>mips-*-*</h3>
    850 
    851 <p>If on a MIPS system you get an error message saying &ldquo;does not have gp
    852 sections for all it's [sic] sectons [sic]&rdquo;, don't worry about it.  This
    853 happens whenever you use GAS with the MIPS linker, but there is not
    854 really anything wrong, and it is okay to use the output file.  You can
    855 stop such warnings by installing the GNU linker.
    856 
    857    <p>It would be nice to extend GAS to produce the gp tables, but they are
    858 optional, and there should not be a warning about their absence.
    859 
    860    <p>The libstdc++ atomic locking routines for MIPS targets requires MIPS II
    861 and later.  A patch went in just after the GCC 3.3 release to
    862 make &lsquo;<samp><span class="samp">mips*-*-*</span></samp>&rsquo; use the generic implementation instead.  You can also
    863 configure for &lsquo;<samp><span class="samp">mipsel-elf</span></samp>&rsquo; as a workaround.  The
    864 &lsquo;<samp><span class="samp">mips*-*-linux*</span></samp>&rsquo; target continues to use the MIPS II routines.  More
    865 work on this is expected in future releases.
    866 
    867 <!-- If you make -with-llsc the default for another target, please also -->
    868 <!-- update the description of the -with-llsc option. -->
    869    <p>The built-in <code>__sync_*</code> functions are available on MIPS II and
    870 later systems and others that support the &lsquo;<samp><span class="samp">ll</span></samp>&rsquo;, &lsquo;<samp><span class="samp">sc</span></samp>&rsquo; and
    871 &lsquo;<samp><span class="samp">sync</span></samp>&rsquo; instructions.  This can be overridden by passing
    872 <samp><span class="option">--with-llsc</span></samp> or <samp><span class="option">--without-llsc</span></samp> when configuring GCC. 
    873 Since the Linux kernel emulates these instructions if they are
    874 missing, the default for &lsquo;<samp><span class="samp">mips*-*-linux*</span></samp>&rsquo; targets is
    875 <samp><span class="option">--with-llsc</span></samp>.  The <samp><span class="option">--with-llsc</span></samp> and
    876 <samp><span class="option">--without-llsc</span></samp> configure options may be overridden at compile
    877 time by passing the <samp><span class="option">-mllsc</span></samp> or <samp><span class="option">-mno-llsc</span></samp> options to
    878 the compiler.
    879 
    880    <p>MIPS systems check for division by zero (unless
    881 <samp><span class="option">-mno-check-zero-division</span></samp> is passed to the compiler) by
    882 generating either a conditional trap or a break instruction.  Using
    883 trap results in smaller code, but is only supported on MIPS II and
    884 later.  Also, some versions of the Linux kernel have a bug that
    885 prevents trap from generating the proper signal (<code>SIGFPE</code>).  To enable
    886 the use of break, use the <samp><span class="option">--with-divide=breaks</span></samp>
    887 <samp><span class="command">configure</span></samp> option when configuring GCC.  The default is to
    888 use traps on systems that support them.
    889 
    890    <p>The assembler from GNU binutils 2.17 and earlier has a bug in the way
    891 it sorts relocations for REL targets (o32, o64, EABI).  This can cause
    892 bad code to be generated for simple C++ programs.  Also the linker
    893 from GNU binutils versions prior to 2.17 has a bug which causes the
    894 runtime linker stubs in very large programs, like <samp><span class="file">libgcj.so</span></samp>, to
    895 be incorrectly generated.  GNU Binutils 2.18 and later (and snapshots
    896 made after Nov. 9, 2006) should be free from both of these problems.
    897 
    898    <p><hr /><a name="mips_002dsgi_002dirix5"></a>
    899 
    900 <h3 class="heading"><a name="TOC34"></a>mips-sgi-irix5</h3>
    901 
    902 <p>Support for IRIX 5 has been removed in GCC 4.6.
    903 
    904    <p><hr /><a name="mips_002dsgi_002dirix6"></a>
    905 
    906 <h3 class="heading"><a name="TOC35"></a>mips-sgi-irix6</h3>
    907 
    908 <p>Support for IRIX 6.5 has been removed in GCC 4.8.  Support for IRIX 6
    909 releases before 6.5 has been removed in GCC 4.6, as well as support for
    910 the O32 ABI.
    911 
    912    <p><hr /><a name="moxie_002dx_002delf"></a>
    913 
    914 <h3 class="heading"><a name="TOC36"></a>moxie-*-elf</h3>
    915 
    916 <p>The moxie processor.
    917 
    918    <p><hr /><a name="msp430_002dx_002delf"></a>
    919 
    920 <h3 class="heading"><a name="TOC37"></a>msp430-*-elf</h3>
    921 
    922 <p>TI MSP430 processor. 
    923 This configuration is intended for embedded systems.
    924 
    925    <p><hr /><a name="nds32le_002dx_002delf"></a>
    926 
    927 <h3 class="heading"><a name="TOC38"></a>nds32le-*-elf</h3>
    928 
    929 <p>Andes NDS32 target in little endian mode.
    930 
    931    <p><hr /><a name="nds32be_002dx_002delf"></a>
    932 
    933 <h3 class="heading"><a name="TOC39"></a>nds32be-*-elf</h3>
    934 
    935 <p>Andes NDS32 target in big endian mode.
    936 
    937    <p><hr /><a name="nvptx_002dx_002dnone"></a>
    938 
    939 <h3 class="heading"><a name="TOC40"></a>nvptx-*-none</h3>
    940 
    941 <p>Nvidia PTX target.
    942 
    943    <p>Instead of GNU binutils, you will need to install
    944 <a href="https://github.com/MentorEmbedded/nvptx-tools/">nvptx-tools</a>. 
    945 Tell GCC where to find it:
    946 <samp><span class="option">--with-build-time-tools=[install-nvptx-tools]/nvptx-none/bin</span></samp>.
    947 
    948    <p>A nvptx port of newlib is available at
    949 <a href="https://github.com/MentorEmbedded/nvptx-newlib/">nvptx-newlib</a>. 
    950 It can be automatically built together with GCC.  For this, add a
    951 symbolic link to nvptx-newlib's <samp><span class="file">newlib</span></samp> directory to the
    952 directory containing the GCC sources.
    953 
    954    <p>Use the <samp><span class="option">--disable-sjlj-exceptions</span></samp> and
    955 <samp><span class="option">--enable-newlib-io-long-long</span></samp> options when configuring.
    956 
    957    <p><hr /><a name="powerpc_002dx_002dx"></a>
    958 
    959 <h3 class="heading"><a name="TOC41"></a>powerpc-*-*</h3>
    960 
    961 <p>You can specify a default version for the <samp><span class="option">-mcpu=</span><var>cpu_type</var></samp>
    962 switch by using the configure option <samp><span class="option">--with-cpu-</span><var>cpu_type</var></samp>.
    963 
    964    <p>You will need
    965 <a href="ftp://ftp.kernel.org/pub/linux/devel/binutils">binutils 2.15</a>
    966 or newer for a working GCC.
    967 
    968    <p><hr /><a name="powerpc_002dx_002ddarwin"></a>
    969 
    970 <h3 class="heading"><a name="TOC42"></a>powerpc-*-darwin*</h3>
    971 
    972 <p>PowerPC running Darwin (Mac OS X kernel).
    973 
    974    <p>Pre-installed versions of Mac OS X may not include any developer tools,
    975 meaning that you will not be able to build GCC from source.  Tool
    976 binaries are available at
    977 <a href="http://opensource.apple.com/">http://opensource.apple.com/</a>.
    978 
    979    <p>This version of GCC requires at least cctools-590.36.  The
    980 cctools-590.36 package referenced from
    981 <a href="http://gcc.gnu.org/ml/gcc/2006-03/msg00507.html">http://gcc.gnu.org/ml/gcc/2006-03/msg00507.html</a> will not work
    982 on systems older than 10.3.9 (aka darwin7.9.0).
    983 
    984    <p><hr /><a name="powerpc_002dx_002delf"></a>
    985 
    986 <h3 class="heading"><a name="TOC43"></a>powerpc-*-elf</h3>
    987 
    988 <p>PowerPC system in big endian mode, running System V.4.
    989 
    990    <p><hr /><a name="powerpc_002dx_002dlinux_002dgnu"></a>
    991 
    992 <h3 class="heading"><a name="TOC44"></a>powerpc*-*-linux-gnu*</h3>
    993 
    994 <p>PowerPC system in big endian mode running Linux.
    995 
    996    <p><hr /><a name="powerpc_002dx_002dnetbsd"></a>
    997 
    998 <h3 class="heading"><a name="TOC45"></a>powerpc-*-netbsd*</h3>
    999 
   1000 <p>PowerPC system in big endian mode running NetBSD.
   1001 
   1002    <p><hr /><a name="powerpc_002dx_002deabisim"></a>
   1003 
   1004 <h3 class="heading"><a name="TOC46"></a>powerpc-*-eabisim</h3>
   1005 
   1006 <p>Embedded PowerPC system in big endian mode for use in running under the
   1007 PSIM simulator.
   1008 
   1009    <p><hr /><a name="powerpc_002dx_002deabi"></a>
   1010 
   1011 <h3 class="heading"><a name="TOC47"></a>powerpc-*-eabi</h3>
   1012 
   1013 <p>Embedded PowerPC system in big endian mode.
   1014 
   1015    <p><hr /><a name="powerpcle_002dx_002delf"></a>
   1016 
   1017 <h3 class="heading"><a name="TOC48"></a>powerpcle-*-elf</h3>
   1018 
   1019 <p>PowerPC system in little endian mode, running System V.4.
   1020 
   1021    <p><hr /><a name="powerpcle_002dx_002deabisim"></a>
   1022 
   1023 <h3 class="heading"><a name="TOC49"></a>powerpcle-*-eabisim</h3>
   1024 
   1025 <p>Embedded PowerPC system in little endian mode for use in running under
   1026 the PSIM simulator.
   1027 
   1028    <p><hr /><a name="powerpcle_002dx_002deabi"></a>
   1029 
   1030 <h3 class="heading"><a name="TOC50"></a>powerpcle-*-eabi</h3>
   1031 
   1032 <p>Embedded PowerPC system in little endian mode.
   1033 
   1034    <p><hr /><a name="rl78_002dx_002delf"></a>
   1035 
   1036 <h3 class="heading"><a name="TOC51"></a>rl78-*-elf</h3>
   1037 
   1038 <p>The Renesas RL78 processor. 
   1039 This configuration is intended for embedded systems.
   1040 
   1041    <p><hr /><a name="rx_002dx_002delf"></a>
   1042 
   1043 <h3 class="heading"><a name="TOC52"></a>rx-*-elf</h3>
   1044 
   1045 <p>The Renesas RX processor.  See
   1046 <a href="http://eu.renesas.com/fmwk.jsp?cnt=rx600_series_landing.jsp&fp=/products/mpumcu/rx_family/rx600_series">http://eu.renesas.com/fmwk.jsp?cnt=rx600_series_landing.jsp&fp=/products/mpumcu/rx_family/rx600_series</a>
   1047 for more information about this processor.
   1048 
   1049    <p><hr /><a name="s390_002dx_002dlinux"></a>
   1050 
   1051 <h3 class="heading"><a name="TOC53"></a>s390-*-linux*</h3>
   1052 
   1053 <p>S/390 system running GNU/Linux for S/390.
   1054 
   1055    <p><hr /><a name="s390x_002dx_002dlinux"></a>
   1056 
   1057 <h3 class="heading"><a name="TOC54"></a>s390x-*-linux*</h3>
   1058 
   1059 <p>zSeries system (64-bit) running GNU/Linux for zSeries.
   1060 
   1061    <p><hr /><a name="s390x_002dibm_002dtpf"></a>
   1062 
   1063 <h3 class="heading"><a name="TOC55"></a>s390x-ibm-tpf*</h3>
   1064 
   1065 <p>zSeries system (64-bit) running TPF.  This platform is
   1066 supported as cross-compilation target only.
   1067 
   1068    <p><hr /><!-- Please use Solaris 2 to refer to all release of Solaris, starting -->
   1069 <!-- with 2.0 until 2.6, 7, 8, etc.  Solaris 1 was a marketing name for -->
   1070 <!-- SunOS 4 releases which we don't use to avoid confusion.  Solaris -->
   1071 <!-- alone is too unspecific and must be avoided. -->
   1072 <a name="x_002dx_002dsolaris2"></a>
   1073 
   1074 <h3 class="heading"><a name="TOC56"></a>*-*-solaris2*</h3>
   1075 
   1076 <p>Support for Solaris 9 has been removed in GCC 4.10.  Support for Solaris
   1077 8 has been removed in GCC 4.8.  Support for Solaris 7 has been removed
   1078 in GCC 4.6.
   1079 
   1080    <p>Sun does not ship a C compiler with Solaris 2 before Solaris 10, though
   1081 you can download the Sun Studio compilers for free.  In Solaris 10 and
   1082 11, GCC 3.4.3 is available as <samp><span class="command">/usr/sfw/bin/gcc</span></samp>.  Solaris 11
   1083 also provides GCC 4.5.2 as <samp><span class="command">/usr/gcc/4.5/bin/gcc</span></samp>.  Alternatively,
   1084 you can install a pre-built GCC to bootstrap and install GCC.  See the
   1085 <a href="binaries.html">binaries page</a> for details.
   1086 
   1087    <p>The Solaris 2 <samp><span class="command">/bin/sh</span></samp> will often fail to configure
   1088 &lsquo;<samp><span class="samp">libstdc++-v3</span></samp>&rsquo;, &lsquo;<samp><span class="samp">boehm-gc</span></samp>&rsquo; or &lsquo;<samp><span class="samp">libjava</span></samp>&rsquo;.  We therefore
   1089 recommend using the following initial sequence of commands
   1090 
   1091 <pre class="smallexample">     % CONFIG_SHELL=/bin/ksh
   1092      % export CONFIG_SHELL
   1093 </pre>
   1094    <p class="noindent">and proceed as described in <a href="configure.html">the configure instructions</a>. 
   1095 In addition we strongly recommend specifying an absolute path to invoke
   1096 <samp><var>srcdir</var><span class="command">/configure</span></samp>.
   1097 
   1098    <p>Solaris 2 comes with a number of optional OS packages.  Some of these
   1099 are needed to use GCC fully, namely <code>SUNWarc</code>,
   1100 <code>SUNWbtool</code>, <code>SUNWesu</code>, <code>SUNWhea</code>, <code>SUNWlibm</code>,
   1101 <code>SUNWsprot</code>, and <code>SUNWtoo</code>.  If you did not install all
   1102 optional packages when installing Solaris 2, you will need to verify that
   1103 the packages that GCC needs are installed.
   1104 
   1105    <p>To check whether an optional package is installed, use
   1106 the <samp><span class="command">pkginfo</span></samp> command.  To add an optional package, use the
   1107 <samp><span class="command">pkgadd</span></samp> command.  For further details, see the Solaris 2
   1108 documentation.
   1109 
   1110    <p>Trying to use the linker and other tools in
   1111 <samp><span class="file">/usr/ucb</span></samp> to install GCC has been observed to cause trouble. 
   1112 For example, the linker may hang indefinitely.  The fix is to remove
   1113 <samp><span class="file">/usr/ucb</span></samp> from your <samp><span class="env">PATH</span></samp>.
   1114 
   1115    <p>The build process works more smoothly with the legacy Sun tools so, if you
   1116 have <samp><span class="file">/usr/xpg4/bin</span></samp> in your <samp><span class="env">PATH</span></samp>, we recommend that you place
   1117 <samp><span class="file">/usr/bin</span></samp> before <samp><span class="file">/usr/xpg4/bin</span></samp> for the duration of the build.
   1118 
   1119    <p>We recommend the use of the Sun assembler or the GNU assembler, in
   1120 conjunction with the Sun linker.  The GNU <samp><span class="command">as</span></samp>
   1121 versions included in Solaris 10, from GNU binutils 2.15, and Solaris 11,
   1122 from GNU binutils 2.19, are known to work.  They can be found in
   1123 <samp><span class="file">/usr/sfw/bin/gas</span></samp>.  Current versions of GNU binutils (2.22)
   1124 are known to work as well.  Note that your mileage may vary
   1125 if you use a combination of the GNU tools and the Sun tools: while the
   1126 combination GNU <samp><span class="command">as</span></samp> + Sun <samp><span class="command">ld</span></samp> should reasonably work,
   1127 the reverse combination Sun <samp><span class="command">as</span></samp> + GNU <samp><span class="command">ld</span></samp> may fail to
   1128 build or cause memory corruption at runtime in some cases for C++ programs. 
   1129 <!-- FIXME: still? -->
   1130 GNU <samp><span class="command">ld</span></samp> usually works as well, although the version included in
   1131 Solaris 10 cannot be used due to several bugs.  Again, the current
   1132 version (2.22) is known to work, but generally lacks platform specific
   1133 features, so better stay with Sun <samp><span class="command">ld</span></samp>.  To use the LTO linker
   1134 plugin (<samp><span class="option">-fuse-linker-plugin</span></samp>) with GNU <samp><span class="command">ld</span></samp>, GNU
   1135 binutils <em>must</em> be configured with <samp><span class="option">--enable-largefile</span></samp>.
   1136 
   1137    <p>To enable symbol versioning in &lsquo;<samp><span class="samp">libstdc++</span></samp>&rsquo; with Sun <samp><span class="command">ld</span></samp>,
   1138 you need to have any version of GNU <samp><span class="command">c++filt</span></samp>, which is part of
   1139 GNU binutils.  &lsquo;<samp><span class="samp">libstdc++</span></samp>&rsquo; symbol versioning will be disabled if no
   1140 appropriate version is found.  Sun <samp><span class="command">c++filt</span></samp> from the Sun Studio
   1141 compilers does <em>not</em> work.
   1142 
   1143    <p>Sun bug 4296832 turns up when compiling X11 headers with GCC 2.95 or
   1144 newer: <samp><span class="command">g++</span></samp> will complain that types are missing.  These headers
   1145 assume that omitting the type means <code>int</code>; this assumption worked for
   1146 C90 but is wrong for C++, and is now wrong for C99 also.
   1147 
   1148    <p>Sun bug 4927647 sometimes causes random spurious testsuite failures
   1149 related to missing diagnostic output.  This bug doesn't affect GCC
   1150 itself, rather it is a kernel bug triggered by the <samp><span class="command">expect</span></samp>
   1151 program which is used only by the GCC testsuite driver.  When the bug
   1152 causes the <samp><span class="command">expect</span></samp> program to miss anticipated output, extra
   1153 testsuite failures appear.
   1154 
   1155    <p><hr /><a name="sparc_002dx_002dx"></a>
   1156 
   1157 <h3 class="heading"><a name="TOC57"></a>sparc*-*-*</h3>
   1158 
   1159 <p>This section contains general configuration information for all
   1160 SPARC-based platforms.  In addition to reading this section, please
   1161 read all other sections that match your target.
   1162 
   1163    <p>Newer versions of the GNU Multiple Precision Library (GMP), the MPFR
   1164 library and the MPC library are known to be miscompiled by earlier
   1165 versions of GCC on these platforms.  We therefore recommend the use
   1166 of the exact versions of these libraries listed as minimal versions
   1167 in <a href="prerequisites.html">the prerequisites</a>.
   1168 
   1169    <p><hr /><a name="sparc_002dsun_002dsolaris2"></a>
   1170 
   1171 <h3 class="heading"><a name="TOC58"></a>sparc-sun-solaris2*</h3>
   1172 
   1173 <p>When GCC is configured to use GNU binutils 2.14 or later, the binaries
   1174 produced are smaller than the ones produced using Sun's native tools;
   1175 this difference is quite significant for binaries containing debugging
   1176 information.
   1177 
   1178    <p>Starting with Solaris 7, the operating system is capable of executing
   1179 64-bit SPARC V9 binaries.  GCC 3.1 and later properly supports
   1180 this; the <samp><span class="option">-m64</span></samp> option enables 64-bit code generation. 
   1181 However, if all you want is code tuned for the UltraSPARC CPU, you
   1182 should try the <samp><span class="option">-mtune=ultrasparc</span></samp> option instead, which produces
   1183 code that, unlike full 64-bit code, can still run on non-UltraSPARC
   1184 machines.
   1185 
   1186    <p>When configuring on a Solaris 7 or later system that is running a kernel
   1187 that supports only 32-bit binaries, one must configure with
   1188 <samp><span class="option">--disable-multilib</span></samp>, since we will not be able to build the
   1189 64-bit target libraries.
   1190 
   1191    <p>GCC 3.3 and GCC 3.4 trigger code generation bugs in earlier versions of
   1192 the GNU compiler (especially GCC 3.0.x versions), which lead to the
   1193 miscompilation of the stage1 compiler and the subsequent failure of the
   1194 bootstrap process.  A workaround is to use GCC 3.2.3 as an intermediary
   1195 stage, i.e. to bootstrap that compiler with the base compiler and then
   1196 use it to bootstrap the final compiler.
   1197 
   1198    <p>GCC 3.4 triggers a code generation bug in versions 5.4 (Sun ONE Studio 7)
   1199 and 5.5 (Sun ONE Studio 8) of the Sun compiler, which causes a bootstrap
   1200 failure in form of a miscompilation of the stage1 compiler by the Sun
   1201 compiler.  This is Sun bug 4974440.  This is fixed with patch 112760-07.
   1202 
   1203    <p>GCC 3.4 changed the default debugging format from Stabs to DWARF-2 for
   1204 32-bit code on Solaris 7 and later.  If you use the Sun assembler, this
   1205 change apparently runs afoul of Sun bug 4910101 (which is referenced as
   1206 an x86-only problem by Sun, probably because they do not use DWARF-2). 
   1207 A symptom of the problem is that you cannot compile C++ programs like
   1208 <samp><span class="command">groff</span></samp> 1.19.1 without getting messages similar to the following:
   1209 
   1210 <pre class="smallexample">     ld: warning: relocation error: R_SPARC_UA32: ...
   1211        external symbolic relocation against non-allocatable section
   1212        .debug_info cannot be processed at runtime: relocation ignored.
   1213 </pre>
   1214    <p class="noindent">To work around this problem, compile with <samp><span class="option">-gstabs+</span></samp> instead of
   1215 plain <samp><span class="option">-g</span></samp>.
   1216 
   1217    <p>When configuring the GNU Multiple Precision Library (GMP), the MPFR
   1218 library or the MPC library on a Solaris 7 or later system, the canonical
   1219 target triplet must be specified as the <samp><span class="command">build</span></samp> parameter on the
   1220 configure line.  This target triplet can be obtained by invoking <samp><span class="command">./config.guess</span></samp> in the toplevel source directory of GCC (and
   1221 not that of GMP or MPFR or MPC).  For example on a Solaris 9 system:
   1222 
   1223 <pre class="smallexample">     % ./configure --build=sparc-sun-solaris2.9 --prefix=xxx
   1224 </pre>
   1225    <p><hr /><a name="sparc_002dsun_002dsolaris210"></a>
   1226 
   1227 <h3 class="heading"><a name="TOC59"></a>sparc-sun-solaris2.10</h3>
   1228 
   1229 <p>There is a bug in older versions of the Sun assembler which breaks
   1230 thread-local storage (TLS).  A typical error message is
   1231 
   1232 <pre class="smallexample">     ld: fatal: relocation error: R_SPARC_TLS_LE_HIX22: file /var/tmp//ccamPA1v.o:
   1233        symbol &lt;unknown&gt;: bad symbol type SECT: symbol type must be TLS
   1234 </pre>
   1235    <p class="noindent">This bug is fixed in Sun patch 118683-03 or later.
   1236 
   1237    <p><hr /><a name="sparc_002dx_002dlinux"></a>
   1238 
   1239 <h3 class="heading"><a name="TOC60"></a>sparc-*-linux*</h3>
   1240 
   1241 <p>GCC versions 3.0 and higher require binutils 2.11.2 and glibc 2.2.4
   1242 or newer on this platform.  All earlier binutils and glibc
   1243 releases mishandled unaligned relocations on <code>sparc-*-*</code> targets.
   1244 
   1245    <p><hr /><a name="sparc64_002dx_002dsolaris2"></a>
   1246 
   1247 <h3 class="heading"><a name="TOC61"></a>sparc64-*-solaris2*</h3>
   1248 
   1249 <p>When configuring the GNU Multiple Precision Library (GMP), the MPFR
   1250 library or the MPC library, the canonical target triplet must be specified
   1251 as the <samp><span class="command">build</span></samp> parameter on the configure line.  For example
   1252 on a Solaris 9 system:
   1253 
   1254 <pre class="smallexample">     % ./configure --build=sparc64-sun-solaris2.9 --prefix=xxx
   1255 </pre>
   1256    <p>The following compiler flags must be specified in the configure
   1257 step in order to bootstrap this target with the Sun compiler:
   1258 
   1259 <pre class="smallexample">     % CC="cc -xarch=v9 -xildoff" <var>srcdir</var>/configure [<var>options</var>] [<var>target</var>]
   1260 </pre>
   1261    <p class="noindent"><samp><span class="option">-xarch=v9</span></samp> specifies the SPARC-V9 architecture to the Sun toolchain
   1262 and <samp><span class="option">-xildoff</span></samp> turns off the incremental linker.
   1263 
   1264    <p><hr /><a name="sparcv9_002dx_002dsolaris2"></a>
   1265 
   1266 <h3 class="heading"><a name="TOC62"></a>sparcv9-*-solaris2*</h3>
   1267 
   1268 <p>This is a synonym for &lsquo;<samp><span class="samp">sparc64-*-solaris2*</span></samp>&rsquo;.
   1269 
   1270    <p><hr /><a name="c6x_002dx_002dx"></a>
   1271 
   1272 <h3 class="heading"><a name="TOC63"></a>c6x-*-*</h3>
   1273 
   1274 <p>The C6X family of processors. This port requires binutils-2.22 or newer.
   1275 
   1276    <p><hr /><a name="tilegx_002d_002a_002dlinux"></a>
   1277 
   1278 <h3 class="heading"><a name="TOC64"></a>tilegx-*-linux*</h3>
   1279 
   1280 <p>The TILE-Gx processor in little endian mode, running GNU/Linux.  This
   1281 port requires binutils-2.22 or newer.
   1282 
   1283    <p><hr /><a name="tilegxbe_002d_002a_002dlinux"></a>
   1284 
   1285 <h3 class="heading"><a name="TOC65"></a>tilegxbe-*-linux*</h3>
   1286 
   1287 <p>The TILE-Gx processor in big endian mode, running GNU/Linux.  This
   1288 port requires binutils-2.23 or newer.
   1289 
   1290    <p><hr /><a name="tilepro_002d_002a_002dlinux"></a>
   1291 
   1292 <h3 class="heading"><a name="TOC66"></a>tilepro-*-linux*</h3>
   1293 
   1294 <p>The TILEPro processor running GNU/Linux.  This port requires
   1295 binutils-2.22 or newer.
   1296 
   1297    <p><hr /><a name="visium_002dx_002delf"></a>
   1298 
   1299 <h3 class="heading"><a name="TOC67"></a>visium-*-elf</h3>
   1300 
   1301 <p>CDS VISIUMcore processor. 
   1302 This configuration is intended for embedded systems.
   1303 
   1304    <p><hr /><a name="x_002dx_002dvxworks"></a>
   1305 
   1306 <h3 class="heading"><a name="TOC68"></a>*-*-vxworks*</h3>
   1307 
   1308 <p>Support for VxWorks is in flux.  At present GCC supports <em>only</em> the
   1309 very recent VxWorks 5.5 (aka Tornado 2.2) release, and only on PowerPC. 
   1310 We welcome patches for other architectures supported by VxWorks 5.5. 
   1311 Support for VxWorks AE would also be welcome; we believe this is merely
   1312 a matter of writing an appropriate &ldquo;configlette&rdquo; (see below).  We are
   1313 not interested in supporting older, a.out or COFF-based, versions of
   1314 VxWorks in GCC 3.
   1315 
   1316    <p>VxWorks comes with an older version of GCC installed in
   1317 <samp><var>$WIND_BASE</var><span class="file">/host</span></samp>; we recommend you do not overwrite it. 
   1318 Choose an installation <var>prefix</var> entirely outside <var>$WIND_BASE</var>. 
   1319 Before running <samp><span class="command">configure</span></samp>, create the directories <samp><var>prefix</var></samp>
   1320 and <samp><var>prefix</var><span class="file">/bin</span></samp>.  Link or copy the appropriate assembler,
   1321 linker, etc. into <samp><var>prefix</var><span class="file">/bin</span></samp>, and set your <var>PATH</var> to
   1322 include that directory while running both <samp><span class="command">configure</span></samp> and
   1323 <samp><span class="command">make</span></samp>.
   1324 
   1325    <p>You must give <samp><span class="command">configure</span></samp> the
   1326 <samp><span class="option">--with-headers=</span><var>$WIND_BASE</var><span class="option">/target/h</span></samp> switch so that it can
   1327 find the VxWorks system headers.  Since VxWorks is a cross compilation
   1328 target only, you must also specify <samp><span class="option">--target=</span><var>target</var></samp>. 
   1329 <samp><span class="command">configure</span></samp> will attempt to create the directory
   1330 <samp><var>prefix</var><span class="file">/</span><var>target</var><span class="file">/sys-include</span></samp> and copy files into it;
   1331 make sure the user running <samp><span class="command">configure</span></samp> has sufficient privilege
   1332 to do so.
   1333 
   1334    <p>GCC's exception handling runtime requires a special &ldquo;configlette&rdquo;
   1335 module, <samp><span class="file">contrib/gthr_supp_vxw_5x.c</span></samp>.  Follow the instructions in
   1336 that file to add the module to your kernel build.  (Future versions of
   1337 VxWorks will incorporate this module.)
   1338 
   1339    <p><hr /><a name="x86_002d64_002dx_002dx"></a>
   1340 
   1341 <h3 class="heading"><a name="TOC69"></a>x86_64-*-*, amd64-*-*</h3>
   1342 
   1343 <p>GCC supports the x86-64 architecture implemented by the AMD64 processor
   1344 (amd64-*-* is an alias for x86_64-*-*) on GNU/Linux, FreeBSD and NetBSD. 
   1345 On GNU/Linux the default is a bi-arch compiler which is able to generate
   1346 both 64-bit x86-64 and 32-bit x86 code (via the <samp><span class="option">-m32</span></samp> switch).
   1347 
   1348    <p><hr /><a name="x86_002d64_002dx_002dsolaris210"></a>
   1349 
   1350 <h3 class="heading"><a name="TOC70"></a>x86_64-*-solaris2.1[0-9]*</h3>
   1351 
   1352 <p>GCC also supports the x86-64 architecture implemented by the AMD64
   1353 processor (&lsquo;<samp><span class="samp">amd64-*-*</span></samp>&rsquo; is an alias for &lsquo;<samp><span class="samp">x86_64-*-*</span></samp>&rsquo;) on
   1354 Solaris 10 or later.  Unlike other systems, without special options a
   1355 bi-arch compiler is built which generates 32-bit code by default, but
   1356 can generate 64-bit x86-64 code with the <samp><span class="option">-m64</span></samp> switch.  Since
   1357 GCC 4.7, there is also configuration that defaults to 64-bit code, but
   1358 can generate 32-bit code with <samp><span class="option">-m32</span></samp>.  To configure and build
   1359 this way, you have to provide all support libraries like <samp><span class="file">libgmp</span></samp>
   1360 as 64-bit code, configure with <samp><span class="option">--target=x86_64-pc-solaris2.1x</span></samp>
   1361 and &lsquo;<samp><span class="samp">CC=gcc -m64</span></samp>&rsquo;.
   1362 
   1363    <p><hr /><a name="xtensa_002dx_002delf"></a>
   1364 
   1365 <h3 class="heading"><a name="TOC71"></a>xtensa*-*-elf</h3>
   1366 
   1367 <p>This target is intended for embedded Xtensa systems using the
   1368 &lsquo;<samp><span class="samp">newlib</span></samp>&rsquo; C library.  It uses ELF but does not support shared
   1369 objects.  Designed-defined instructions specified via the
   1370 Tensilica Instruction Extension (TIE) language are only supported
   1371 through inline assembly.
   1372 
   1373    <p>The Xtensa configuration information must be specified prior to
   1374 building GCC.  The <samp><span class="file">include/xtensa-config.h</span></samp> header
   1375 file contains the configuration information.  If you created your
   1376 own Xtensa configuration with the Xtensa Processor Generator, the
   1377 downloaded files include a customized copy of this header file,
   1378 which you can use to replace the default header file.
   1379 
   1380    <p><hr /><a name="xtensa_002dx_002dlinux"></a>
   1381 
   1382 <h3 class="heading"><a name="TOC72"></a>xtensa*-*-linux*</h3>
   1383 
   1384 <p>This target is for Xtensa systems running GNU/Linux.  It supports ELF
   1385 shared objects and the GNU C library (glibc).  It also generates
   1386 position-independent code (PIC) regardless of whether the
   1387 <samp><span class="option">-fpic</span></samp> or <samp><span class="option">-fPIC</span></samp> options are used.  In other
   1388 respects, this target is the same as the
   1389 <a href="#xtensa*-*-elf">&lsquo;<samp><span class="samp">xtensa*-*-elf</span></samp>&rsquo;</a> target.
   1390 
   1391    <p><hr /><a name="windows"></a>
   1392 
   1393 <h3 class="heading"><a name="TOC73"></a>Microsoft Windows</h3>
   1394 
   1395 <h4 class="subheading"><a name="TOC74"></a>Intel 16-bit versions</h4>
   1396 
   1397 <p>The 16-bit versions of Microsoft Windows, such as Windows 3.1, are not
   1398 supported.
   1399 
   1400    <p>However, the 32-bit port has limited support for Microsoft
   1401 Windows 3.11 in the Win32s environment, as a target only.  See below.
   1402 
   1403 <h4 class="subheading"><a name="TOC75"></a>Intel 32-bit versions</h4>
   1404 
   1405 <p>The 32-bit versions of Windows, including Windows 95, Windows NT, Windows
   1406 XP, and Windows Vista, are supported by several different target
   1407 platforms.  These targets differ in which Windows subsystem they target
   1408 and which C libraries are used.
   1409 
   1410      <ul>
   1411 <li>Cygwin <a href="#x-x-cygwin">*-*-cygwin</a>: Cygwin provides a user-space
   1412 Linux API emulation layer in the Win32 subsystem. 
   1413 <li>Interix <a href="#x-x-interix">*-*-interix</a>: The Interix subsystem
   1414 provides native support for POSIX. 
   1415 <li>MinGW <a href="#x-x-mingw32">*-*-mingw32</a>: MinGW is a native GCC port for
   1416 the Win32 subsystem that provides a subset of POSIX. 
   1417 <li>MKS i386-pc-mks: NuTCracker from MKS.  See
   1418 <a href="http://www.mkssoftware.com/">http://www.mkssoftware.com/</a> for more information. 
   1419 </ul>
   1420 
   1421 <h4 class="subheading"><a name="TOC76"></a>Intel 64-bit versions</h4>
   1422 
   1423 <p>GCC contains support for x86-64 using the mingw-w64
   1424 runtime library, available from <a href="http://mingw-w64.sourceforge.net/">http://mingw-w64.sourceforge.net/</a>. 
   1425 This library should be used with the target triple x86_64-pc-mingw32.
   1426 
   1427    <p>Presently Windows for Itanium is not supported.
   1428 
   1429 <h4 class="subheading"><a name="TOC77"></a>Windows CE</h4>
   1430 
   1431 <p>Windows CE is supported as a target only on Hitachi
   1432 SuperH (sh-wince-pe), and MIPS (mips-wince-pe).
   1433 
   1434 <h4 class="subheading"><a name="TOC78"></a>Other Windows Platforms</h4>
   1435 
   1436 <p>GCC no longer supports Windows NT on the Alpha or PowerPC.
   1437 
   1438    <p>GCC no longer supports the Windows POSIX subsystem.  However, it does
   1439 support the Interix subsystem.  See above.
   1440 
   1441    <p>Old target names including *-*-winnt and *-*-windowsnt are no longer used.
   1442 
   1443    <p>PW32 (i386-pc-pw32) support was never completed, and the project seems to
   1444 be inactive.  See <a href="http://pw32.sourceforge.net/">http://pw32.sourceforge.net/</a> for more information.
   1445 
   1446    <p>UWIN support has been removed due to a lack of maintenance.
   1447 
   1448    <p><hr /><a name="x_002dx_002dcygwin"></a>
   1449 
   1450 <h3 class="heading"><a name="TOC79"></a>*-*-cygwin</h3>
   1451 
   1452 <p>Ports of GCC are included with the
   1453 <a href="http://www.cygwin.com/">Cygwin environment</a>.
   1454 
   1455    <p>GCC will build under Cygwin without modification; it does not build
   1456 with Microsoft's C++ compiler and there are no plans to make it do so.
   1457 
   1458    <p>The Cygwin native compiler can be configured to target any 32-bit x86
   1459 cpu architecture desired; the default is i686-pc-cygwin.  It should be
   1460 used with as up-to-date a version of binutils as possible; use either
   1461 the latest official GNU binutils release in the Cygwin distribution,
   1462 or version 2.20 or above if building your own.
   1463 
   1464    <p><hr /><a name="x_002dx_002dinterix"></a>
   1465 
   1466 <h3 class="heading"><a name="TOC80"></a>*-*-interix</h3>
   1467 
   1468 <p>The Interix target is used by OpenNT, Interix, Services For UNIX (SFU),
   1469 and Subsystem for UNIX-based Applications (SUA).  Applications compiled
   1470 with this target run in the Interix subsystem, which is separate from
   1471 the Win32 subsystem.  This target was last known to work in GCC 3.3.
   1472 
   1473    <p><hr /><a name="x_002dx_002dmingw32"></a>
   1474 
   1475 <h3 class="heading"><a name="TOC81"></a>*-*-mingw32</h3>
   1476 
   1477 <p>GCC will build with and support only MinGW runtime 3.12 and later. 
   1478 Earlier versions of headers are incompatible with the new default semantics
   1479 of <code>extern inline</code> in <code>-std=c99</code> and <code>-std=gnu99</code> modes.
   1480 
   1481    <p><hr /><a name="older"></a>
   1482 
   1483 <h3 class="heading"><a name="TOC82"></a>Older systems</h3>
   1484 
   1485 <p>GCC contains support files for many older (1980s and early
   1486 1990s) Unix variants.  For the most part, support for these systems
   1487 has not been deliberately removed, but it has not been maintained for
   1488 several years and may suffer from bitrot.
   1489 
   1490    <p>Starting with GCC 3.1, each release has a list of &ldquo;obsoleted&rdquo; systems. 
   1491 Support for these systems is still present in that release, but
   1492 <samp><span class="command">configure</span></samp> will fail unless the <samp><span class="option">--enable-obsolete</span></samp>
   1493 option is given.  Unless a maintainer steps forward, support for these
   1494 systems will be removed from the next release of GCC.
   1495 
   1496    <p>Support for old systems as hosts for GCC can cause problems if the
   1497 workarounds for compiler, library and operating system bugs affect the
   1498 cleanliness or maintainability of the rest of GCC.  In some cases, to
   1499 bring GCC up on such a system, if still possible with current GCC, may
   1500 require first installing an old version of GCC which did work on that
   1501 system, and using it to compile a more recent GCC, to avoid bugs in the
   1502 vendor compiler.  Old releases of GCC 1 and GCC 2 are available in the
   1503 <samp><span class="file">old-releases</span></samp> directory on the <a href="../mirrors.html">GCC mirror sites</a>.  Header bugs may generally be avoided using
   1504 <samp><span class="command">fixincludes</span></samp>, but bugs or deficiencies in libraries and the
   1505 operating system may still cause problems.
   1506 
   1507    <p>Support for older systems as targets for cross-compilation is less
   1508 problematic than support for them as hosts for GCC; if an enthusiast
   1509 wishes to make such a target work again (including resurrecting any of
   1510 the targets that never worked with GCC 2, starting from the last
   1511 version before they were removed), patches
   1512 <a href="../contribute.html">following the usual requirements</a> would be
   1513 likely to be accepted, since they should not affect the support for more
   1514 modern targets.
   1515 
   1516    <p>For some systems, old versions of GNU binutils may also be useful,
   1517 and are available from <samp><span class="file">pub/binutils/old-releases</span></samp> on
   1518 <a href="http://sourceware.org/mirrors.html">sourceware.org mirror sites</a>.
   1519 
   1520    <p>Some of the information on specific systems above relates to
   1521 such older systems, but much of the information
   1522 about GCC on such systems (which may no longer be applicable to
   1523 current GCC) is to be found in the GCC texinfo manual.
   1524 
   1525    <p><hr /><a name="elf"></a>
   1526 
   1527 <h3 class="heading"><a name="TOC83"></a>all ELF targets (SVR4, Solaris 2, etc.)</h3>
   1528 
   1529 <p>C++ support is significantly better on ELF targets if you use the
   1530 <a href="./configure.html#with-gnu-ld">GNU linker</a>; duplicate copies of
   1531 inlines, vtables and template instantiations will be discarded
   1532 automatically.
   1533 
   1534    <p><hr />
   1535 <p><a href="./index.html">Return to the GCC Installation page</a>
   1536 
   1537 <!-- ***Old documentation****************************************************** -->
   1538 <!-- ***GFDL******************************************************************** -->
   1539 <!-- *************************************************************************** -->
   1540 <!-- Part 6 The End of the Document -->
   1541 </body></html>
   1542 
   1543