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.7"> 7<link title="Top" rel="top" href="#Top"> 8<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage"> 9<!-- 10Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 111999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. 12 13 Permission is granted to copy, distribute and/or modify this document 14under the terms of the GNU Free Documentation License, Version 1.2 or 15any later version published by the Free Software Foundation; with no 16Invariant Sections, the Front-Cover texts being (a) (see below), and 17with the Back-Cover Texts being (b) (see below). A copy of the 18license is included in the section entitled "GNU Free Documentation License". 19 20(a) The FSF's Front-Cover Text is: 21 22 A GNU Manual 23 24(b) The FSF's Back-Cover Text is: 25 26 You have freedom to copy and modify this GNU Manual, like GNU 27 software. Copies published by the Free Software Foundation raise 28 funds for GNU development.--> 29<meta http-equiv="Content-Style-Type" content="text/css"> 30<style type="text/css"><!-- 31 pre.display { font-family:inherit } 32 pre.format { font-family:inherit } 33 pre.smalldisplay { font-family:inherit; font-size:smaller } 34 pre.smallformat { font-family:inherit; font-size:smaller } 35 pre.smallexample { font-size:smaller } 36 pre.smalllisp { font-size:smaller } 37 span.sc { font-variant:small-caps } 38 span.roman { font-family: 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> 44Please read this document carefully <em>before</em> installing the 45GNU Compiler Collection on your machine. 46 47 <ul> 48<li><a href="#alpha*-*-*">alpha*-*-*</a> 49<li><a href="#alpha*-dec-osf*">alpha*-dec-osf*</a> 50<li><a href="#alphaev5-cray-unicosmk*">alphaev5-cray-unicosmk*</a> 51<li><a href="#arc-*-elf">arc-*-elf</a> 52<li><a href="#arm-*-aout">arm-*-aout</a> 53<li><a href="#arm-*-elf">arm-*-elf</a> 54<li><a href="#arm*-*-linux-gnu">arm*-*-linux-gnu</a> 55<li><a href="#avr">avr</a> 56<li><a href="#c4x">c4x</a> 57<li><a href="#dos">DOS</a> 58<li><a href="#dsp16xx">dsp16xx</a> 59<li><a href="#*-*-freebsd*">*-*-freebsd*</a> 60<li><a href="#h8300-hms">h8300-hms</a> 61<li><a href="#hppa*-hp-hpux*">hppa*-hp-hpux*</a> 62<li><a href="#hppa*-hp-hpux9">hppa*-hp-hpux9</a> 63<li><a href="#hppa*-hp-hpux10">hppa*-hp-hpux10</a> 64<li><a href="#hppa*-hp-hpux11">hppa*-hp-hpux11</a> 65<li><a href="#i370-*-*">i370-*-*</a> 66<li><a href="#*-*-linux-gnu">*-*-linux-gnu</a> 67<li><a href="#ix86-*-linux*aout">i?86-*-linux*aout</a> 68<li><a href="#ix86-*-linux*">i?86-*-linux*</a> 69<li><a href="#ix86-*-sco">i?86-*-sco</a> 70<li><a href="#ix86-*-sco3.2v4">i?86-*-sco3.2v4</a> 71<li><a href="#ix86-*-sco3.2v5*">i?86-*-sco3.2v5*</a> 72<li><a href="#ix86-*-udk">i?86-*-udk</a> 73<li><a href="#ix86-*-esix">i?86-*-esix</a> 74<li><a href="#ia64-*-linux">ia64-*-linux</a> 75<li><a href="#ia64-*-hpux*">ia64-*-hpux*</a> 76<li><a href="#*-lynx-lynxos">*-lynx-lynxos</a> 77<li><a href="#*-ibm-aix*">*-ibm-aix*</a> 78<li><a href="#ip2k-*-elf">ip2k-*-elf</a> 79<li><a href="#m32r-*-elf">m32r-*-elf</a> 80<li><a href="#m68000-hp-bsd">m68000-hp-bsd</a> 81<li><a href="#m6811-elf">m6811-elf</a> 82<li><a href="#m6812-elf">m6812-elf</a> 83<li><a href="#m68k-att-sysv">m68k-att-sysv</a> 84<li><a href="#m68k-crds-unos">m68k-crds-unos</a> 85<li><a href="#m68k-hp-hpux">m68k-hp-hpux</a> 86<li><a href="#m68k-ncr-*">m68k-ncr-*</a> 87<li><a href="#m68k-sun">m68k-sun</a> 88<li><a href="#m68k-sun-sunos4.1.1">m68k-sun-sunos4.1.1</a> 89<li><a href="#mips-*-*">mips-*-*</a> 90<li><a href="#mips-sgi-irix5">mips-sgi-irix5</a> 91<li><a href="#mips-sgi-irix6">mips-sgi-irix6</a> 92<li><a href="#powerpc*-*-*">powerpc*-*-*</a> powerpc-*-sysv4 93<li><a href="#powerpc-*-darwin*">powerpc-*-darwin*</a> 94<li><a href="#powerpc-*-elf">powerpc-*-elf</a> powerpc-*-sysv4 95<li><a href="#powerpc-*-linux-gnu*">powerpc-*-linux-gnu*</a> 96<li><a href="#powerpc-*-netbsd*">powerpc-*-netbsd*</a> 97<li><a href="#powerpc-*-eabiaix">powerpc-*-eabiaix</a> 98<li><a href="#powerpc-*-eabisim">powerpc-*-eabisim</a> 99<li><a href="#powerpc-*-eabi">powerpc-*-eabi</a> 100<li><a href="#powerpcle-*-elf">powerpcle-*-elf</a> powerpcle-*-sysv4 101<li><a href="#powerpcle-*-eabisim">powerpcle-*-eabisim</a> 102<li><a href="#powerpcle-*-eabi">powerpcle-*-eabi</a> 103<li><a href="#s390-*-linux*">s390-*-linux*</a> 104<li><a href="#s390x-*-linux*">s390x-*-linux*</a> 105<li><a href="#*-*-solaris2*">*-*-solaris2*</a> 106<li><a href="#sparc-sun-solaris2*">sparc-sun-solaris2*</a> 107<li><a href="#sparc-sun-solaris2.7">sparc-sun-solaris2.7</a> 108<li><a href="#sparc-sun-sunos4*">sparc-sun-sunos4*</a> 109<li><a href="#sparc-unknown-linux-gnulibc1">sparc-unknown-linux-gnulibc1</a> 110<li><a href="#sparc-*-linux*">sparc-*-linux*</a> 111<li><a href="#sparc64-*-solaris2*">sparc64-*-solaris2*</a> 112<li><a href="#sparcv9-*-solaris2*">sparcv9-*-solaris2*</a> 113<li><a href="#*-*-sysv*">*-*-sysv*</a> 114<li><a href="#vax-dec-ultrix">vax-dec-ultrix</a> 115<li><a href="#x86_64-*-*">x86_64-*-*</a> amd64-*-* 116<li><a href="#xtensa-*-elf">xtensa-*-elf</a> 117<li><a href="#xtensa-*-linux*">xtensa-*-linux*</a> 118<li><a href="#windows">Microsoft Windows</a> 119<li><a href="#os2">OS/2</a> 120<li><a href="#older">Older systems</a> 121</ul> 122 123 <ul> 124<li><a href="#elf_targets">all ELF targets</a> (SVR4, Solaris 2, etc.) 125</ul> 126 127 <p><!-- -------- host/target specific issues start here ---------------- --> 128<hr /> 129 130<h3 class="heading"><a name="TOC0"></a><a name="alpha_002a_002d_002a_002d_002a"></a>alpha*-*-*</h3> 131 132<p>This section contains general configuration information for all 133alpha-based platforms using ELF (in particular, ignore this section for 134DEC OSF/1, Digital UNIX and Tru64 UNIX). In addition to reading this 135section, please read all other sections that match your target. 136 137 <p>We require binutils 2.11.2 or newer. 138Previous binutils releases had a number of problems with DWARF 2 139debugging information, not the least of which is incorrect linking of 140shared libraries. 141 142 <p><hr /> 143 144<h3 class="heading"><a name="TOC1"></a><a name="alpha_002a_002ddec_002dosf_002a"></a>alpha*-dec-osf*</h3> 145 146<p>Systems using processors that implement the DEC Alpha architecture and 147are running the DEC/Compaq Unix (DEC OSF/1, Digital UNIX, or Compaq 148Tru64 UNIX) operating system, for example the DEC Alpha AXP systems. 149 150 <p>As of GCC 3.2, versions before <code>alpha*-dec-osf4</code> are no longer 151supported. (These are the versions which identify themselves as DEC 152OSF/1.) 153 154 <p>In Digital Unix V4.0, virtual memory exhausted bootstrap failures 155may be fixed by configuring with <span class="option">--with-gc=simple</span>, 156reconfiguring Kernel Virtual Memory and Swap parameters 157per the <span class="command">/usr/sbin/sys_check</span> Tuning Suggestions, 158or applying the patch in 159<a href="http://gcc.gnu.org/ml/gcc/2002-08/msg00822.html">http://gcc.gnu.org/ml/gcc/2002-08/msg00822.html</a>. 160 161 <p>In Tru64 UNIX V5.1, Compaq introduced a new assembler that does not 162currently (2001-06-13) work with <span class="command">mips-tfile</span>. As a workaround, 163we need to use the old assembler, invoked via the barely documented 164<span class="option">-oldas</span> option. To bootstrap GCC, you either need to use the 165Compaq C Compiler: 166 167<pre class="example"> % CC=cc <var>srcdir</var>/configure [<var>options</var>] [<var>target</var>] 168</pre> 169 <p>or you can use a copy of GCC 2.95.3 or higher built on Tru64 UNIX V4.0: 170 171<pre class="example"> % CC=gcc -Wa,-oldas <var>srcdir</var>/configure [<var>options</var>] [<var>target</var>] 172</pre> 173 <p>As of GNU binutils 2.11.2, neither GNU <span class="command">as</span> nor GNU <span class="command">ld</span> 174are supported on Tru64 UNIX, so you must not configure GCC with 175<span class="option">--with-gnu-as</span> or <span class="option">--with-gnu-ld</span>. 176 177 <p>The <span class="option">--enable-threads</span> options isn't supported yet. A patch is 178in preparation for a future release. 179 180 <p>GCC writes a <span class="samp">.verstamp</span> directive to the assembler output file 181unless it is built as a cross-compiler. It gets the version to use from 182the system header file <span class="file">/usr/include/stamp.h</span>. If you install a 183new version of DEC Unix, you should rebuild GCC to pick up the new version 184stamp. 185 186 <p>Note that since the Alpha is a 64-bit architecture, cross-compilers from 18732-bit machines will not generate code as efficient as that generated 188when the compiler is running on a 64-bit machine because many 189optimizations that depend on being able to represent a word on the 190target in an integral value on the host cannot be performed. Building 191cross-compilers on the Alpha for 32-bit machines has only been tested in 192a few cases and may not work properly. 193 194 <p><span class="samp">make compare</span> may fail on old versions of DEC Unix unless you add 195<span class="option">-save-temps</span> to <code>CFLAGS</code>. On these systems, the name of the 196assembler input file is stored in the object file, and that makes 197comparison fail if it differs between the <code>stage1</code> and 198<code>stage2</code> compilations. The option <span class="option">-save-temps</span> forces a 199fixed name to be used for the assembler input file, instead of a 200randomly chosen name in <span class="file">/tmp</span>. Do not add <span class="option">-save-temps</span> 201unless the comparisons fail without that option. If you add 202<span class="option">-save-temps</span>, you will have to manually delete the <span class="samp">.i</span> and 203<span class="samp">.s</span> files after each series of compilations. 204 205 <p>GCC now supports both the native (ECOFF) debugging format used by DBX 206and GDB and an encapsulated STABS format for use only with GDB. See the 207discussion of the <span class="option">--with-stabs</span> option of <span class="file">configure</span> above 208for more information on these formats and how to select them. 209 210 <p>There is a bug in DEC's assembler that produces incorrect line numbers 211for ECOFF format when the <span class="samp">.align</span> directive is used. To work 212around this problem, GCC will not emit such alignment directives 213while writing ECOFF format debugging information even if optimization is 214being performed. Unfortunately, this has the very undesirable 215side-effect that code addresses when <span class="option">-O</span> is specified are 216different depending on whether or not <span class="option">-g</span> is also specified. 217 218 <p>To avoid this behavior, specify <span class="option">-gstabs+</span> and use GDB instead of 219DBX. DEC is now aware of this problem with the assembler and hopes to 220provide a fix shortly. 221 222 <p><hr /> 223 224<h3 class="heading"><a name="TOC2"></a><a name="alphaev5_002dcray_002dunicosmk_002a"></a>alphaev5-cray-unicosmk*</h3> 225 226<p>Cray T3E systems running Unicos/Mk. 227 228 <p>This port is incomplete and has many known bugs. We hope to improve the 229support for this target soon. Currently, only the C front end is supported, 230and it is not possible to build parallel applications. Cray modules are not 231supported; in particular, Craylibs are assumed to be in 232<span class="file">/opt/ctl/craylibs/craylibs</span>. 233 234 <p>You absolutely <strong>must</strong> use GNU make on this platform. Also, you 235need to tell GCC where to find the assembler and the linker. The 236simplest way to do so is by providing <span class="option">--with-as</span> and 237<span class="option">--with-ld</span> to <span class="file">configure</span>, e.g. 238 239<pre class="example"> configure --with-as=/opt/ctl/bin/cam --with-ld=/opt/ctl/bin/cld \ 240 --enable-languages=c 241</pre> 242 <p>The comparison test during <span class="samp">make bootstrap</span> fails on Unicos/Mk 243because the assembler inserts timestamps into object files. You should 244be able to work around this by doing <span class="samp">make all</span> after getting this 245failure. 246 247 <p><hr /> 248 249<h3 class="heading"><a name="TOC3"></a><a name="arc_002d_002a_002delf"></a>arc-*-elf</h3> 250 251<p>Argonaut ARC processor. 252This configuration is intended for embedded systems. 253 254 <p><hr /> 255 256<h3 class="heading"><a name="TOC4"></a><a name="arm_002d_002a_002daout"></a>arm-*-aout</h3> 257 258<p>This configuration is obsoleted in GCC 3.3. 259 260 <p>Advanced RISC Machines ARM-family processors. These are often used in 261embedded applications. There are no standard Unix configurations. 262This configuration corresponds to the basic instruction sequences and will 263produce <span class="file">a.out</span> format object modules. 264 265 <p>You may need to make a variant of the file <span class="file">arm.h</span> for your particular 266configuration. 267 268 <p><hr /> 269 270<h3 class="heading"><a name="TOC5"></a><a name="arm_002d_002a_002delf"></a>arm-*-elf</h3> 271 272<p>This configuration is intended for embedded systems. 273 274 <p><hr /> 275 276<h3 class="heading"><a name="TOC6"></a><a name="arm_002a_002d_002a_002dlinux_002dgnu"></a>arm*-*-linux-gnu</h3> 277 278<p>We require GNU binutils 2.10 or newer. 279 280 <p><hr /> 281 282<h3 class="heading"><a name="TOC7"></a><a name="avr"></a>avr</h3> 283 284<p>ATMEL AVR-family micro controllers. These are used in embedded 285applications. There are no standard Unix configurations. 286See “AVR Options” in the main manual 287for the list of supported MCU types. 288 289 <p>Use <span class="samp">configure --target=avr --enable-languages="c"</span> to configure GCC. 290 291 <p>Further installation notes and other useful information about AVR tools 292can also be obtained from: 293 294 <ul> 295<li><a href="http://www.openavr.org">http://www.openavr.org</a> 296<li><a href="http://home.overta.ru/users/denisc/">http://home.overta.ru/users/denisc/</a> 297<li><a href="http://www.amelek.gda.pl/avr/">http://www.amelek.gda.pl/avr/</a> 298</ul> 299 300 <p>We <em>strongly</em> recommend using binutils 2.13 or newer. 301 302 <p>The following error: 303<pre class="example"> Error: register required 304</pre> 305 <p>indicates that you should upgrade to a newer version of the binutils. 306 307 <p><hr /> 308 309<h3 class="heading"><a name="TOC8"></a><a name="c4x"></a>c4x</h3> 310 311<p>Texas Instruments TMS320C3x and TMS320C4x Floating Point Digital Signal 312Processors. These are used in embedded applications. There are no 313standard Unix configurations. 314See “TMS320C3x/C4x Options” in the main manual 315for the list of supported MCU types. 316 317 <p>GCC can be configured as a cross compiler for both the C3x and C4x 318architectures on the same system. Use <span class="samp">configure --target=c4x 319--enable-languages="c,c++"</span> to configure. 320 321 <p>Further installation notes and other useful information about C4x tools 322can also be obtained from: 323 324 <ul> 325<li><a href="http://www.elec.canterbury.ac.nz/c4x/">http://www.elec.canterbury.ac.nz/c4x/</a> 326</ul> 327 328 <p><hr /> 329 330<h3 class="heading"><a name="TOC9"></a><a name="cris"></a>CRIS</h3> 331 332<p>CRIS is the CPU architecture in Axis Communications ETRAX system-on-a-chip 333series. These are used in embedded applications. 334 335 <p>See “CRIS Options” in the main manual 336for a list of CRIS-specific options. 337 338 <p>There are a few different CRIS targets: 339 <dl> 340<dt><code>cris-axis-aout</code><dd>Old target. Includes a multilib for the <span class="samp">elinux</span> a.out-based 341target. No multilibs for newer architecture variants. 342<br><dt><code>cris-axis-elf</code><dd>Mainly for monolithic embedded systems. Includes a multilib for the 343<span class="samp">v10</span> core used in <span class="samp">ETRAX 100 LX</span>. 344<br><dt><code>cris-axis-linux-gnu</code><dd>A GNU/Linux port for the CRIS architecture, currently targeting 345<span class="samp">ETRAX 100 LX</span> by default. 346</dl> 347 348 <p>For <code>cris-axis-aout</code> and <code>cris-axis-elf</code> you need binutils 2.11 349or newer. For <code>cris-axis-linux-gnu</code> you need binutils 2.12 or newer. 350 351 <p>Pre-packaged tools can be obtained from 352<a href="ftp://ftp.axis.com/pub/axis/tools/cris/compiler-kit/">ftp://ftp.axis.com/pub/axis/tools/cris/compiler-kit/</a>. More 353information about this platform is available at 354<a href="http://developer.axis.com/">http://developer.axis.com/</a>. 355 356 <p><hr /> 357 358<h3 class="heading"><a name="TOC10"></a><a name="dos"></a>DOS</h3> 359 360<p>Please have a look at our <a href="binaries.html">binaries page</a>. 361 362 <p>You cannot install GCC by itself on MSDOS; it will not compile under 363any MSDOS compiler except itself. You need to get the complete 364compilation package DJGPP, which includes binaries as well as sources, 365and includes all the necessary compilation tools and libraries. 366 367 <p><hr /> 368 369<h3 class="heading"><a name="TOC11"></a><a name="dsp16xx"></a>dsp16xx</h3> 370 371<p>A port to the AT&T DSP1610 family of processors. 372 373 <p><hr /> 374 375<h3 class="heading"><a name="TOC12"></a><a name="_002a_002d_002a_002dfreebsd_002a"></a>*-*-freebsd*</h3> 376 377<p>The version of binutils installed in <span class="file">/usr/bin</span> is known to work unless 378otherwise specified in any per-architecture notes. However, binutils 3792.12.1 or greater is known to improve overall testsuite results. 380 381 <p>Support for FreeBSD 1 was discontinued in GCC 3.2. 382 383 <p>For FreeBSD 2 or any mutant a.out versions of FreeBSD 3: All 384configuration support and files as shipped with GCC 2.95 are still in 385place. FreeBSD 2.2.7 has been known to bootstrap completely; however, 386it is unknown which version of binutils was used (it is assumed that it 387was the system copy in <span class="file">/usr/bin</span>) and C++ EH failures were noted. 388 389 <p>For FreeBSD using the ELF file format: DWARF 2 debugging is now the 390default for all CPU architectures. It had been the default on 391FreeBSD/alpha since its inception. You may use <span class="option">-gstabs</span> instead 392of <span class="option">-g</span>, if you really want the old debugging format. There are 393no known issues with mixing object files and libraries with different 394debugging formats. Otherwise, this release of GCC should now match more 395of the configuration used in the stock FreeBSD configuration of GCC. In 396particular, <span class="option">--enable-threads</span> is now configured by default. 397However, as a general user, do not attempt to replace the system 398compiler with this release. Known to bootstrap and check with good 399results on FreeBSD 4.8-STABLE and 5-CURRENT. In the past, known to 400bootstrap and check with good results on FreeBSD 3.0, 3.4, 4.0, 4.2, 4014.3, 4.4, 4.5-STABLE. 402 403 <p>In principle, <span class="option">--enable-threads</span> is now compatible with 404<span class="option">--enable-libgcj</span> on FreeBSD. However, it has only been built 405and tested on <span class="samp">i386-*-freebsd[45]</span> and <span class="samp">alpha-*-freebsd[45]</span>. 406The static 407library may be incorrectly built (symbols are missing at link time). 408There is a rare timing-based startup hang (probably involves an 409assumption about the thread library). Multi-threaded boehm-gc (required for 410libjava) exposes severe threaded signal-handling bugs on FreeBSD before 4114.5-RELEASE. Other CPU architectures 412supported by FreeBSD will require additional configuration tuning in, at 413the very least, both boehm-gc and libffi. 414 415 <p>Shared <span class="file">libgcc_s.so</span> is now built and installed by default. 416 417 <p><hr /> 418 419<h3 class="heading"><a name="TOC13"></a><a name="h8300_002dhms"></a>h8300-hms</h3> 420 421<p>Renesas H8/300 series of processors. 422 423 <p>Please have a look at our <a href="binaries.html">binaries page</a>. 424 425 <p>The calling convention and structure layout has changed in release 2.6. 426All code must be recompiled. The calling convention now passes the 427first three arguments in function calls in registers. Structures are no 428longer a multiple of 2 bytes. 429 430 <p><hr /> 431 432<h3 class="heading"><a name="TOC14"></a><a name="hppa_002a_002dhp_002dhpux_002a"></a>hppa*-hp-hpux*</h3> 433 434<p>Support for HP-UX versions 7, 8, and 9 is obsoleted in GCC 3.3. 435 436 <p>We <em>highly</em> recommend using gas/binutils 2.8 or newer on all hppa 437platforms; you may encounter a variety of problems when using the HP 438assembler. 439 440 <p>Specifically, <span class="option">-g</span> does not work on HP-UX (since that system 441uses a peculiar debugging format which GCC does not know about), unless you 442use GAS and GDB and configure GCC with the 443<a href="./configure.html#with-gnu-as"><span class="option">--with-gnu-as</span></a> and 444<span class="option">--with-as=...</span> options. 445 446 <p>If you wish to use the pa-risc 2.0 architecture support with a 32-bit 447runtime, you must use either the HP assembler, gas/binutils 2.11 or newer, 448or a recent 449<a href="ftp://sources.redhat.com/pub/binutils/snapshots">snapshot of gas</a>. 450 451 <p>There are two default scheduling models for instructions. These are 452PROCESSOR_7100LC and PROCESSOR_8000. They are selected from the pa-risc 453architecture specified for the target machine when configuring. 454PROCESSOR_8000 is the default. PROCESSOR_7100LC is selected when 455the target is a <span class="samp">hppa1*</span> machine. 456 457 <p>The PROCESSOR_8000 model is not well suited to older processors. Thus, 458it is important to completely specify the machine architecture when 459configuring if you want a model other than PROCESSOR_8000. The macro 460TARGET_SCHED_DEFAULT can be defined in BOOT_CFLAGS if a different 461default scheduling model is desired. 462 463 <p>More specific information to <span class="samp">hppa*-hp-hpux*</span> targets follows. 464 465 <p><hr /> 466 467<h3 class="heading"><a name="TOC15"></a><a name="hppa_002a_002dhp_002dhpux9"></a>hppa*-hp-hpux9</h3> 468 469<p>Support for this system is obsoleted in GCC 3.3. 470 471 <p>The HP assembler has major problems on this platform. We've tried to work 472around the worst of the problems. However, those workarounds may be causing 473linker crashes in some circumstances; the workarounds also probably prevent 474shared libraries from working. Use the GNU assembler to avoid these problems. 475 476 <p>The configuration scripts for GCC will also trigger a bug in the hpux9 477shell. To avoid this problem set <span class="env">CONFIG_SHELL</span> to <span class="file">/bin/ksh</span> 478and <span class="env">SHELL</span> to <span class="file">/bin/ksh</span> in your environment. 479 480 <p><hr /> 481 482<h3 class="heading"><a name="TOC16"></a><a name="hppa_002a_002dhp_002dhpux10"></a>hppa*-hp-hpux10</h3> 483 484<p>For hpux10.20, we <em>highly</em> recommend you pick up the latest sed patch 485<code>PHCO_19798</code> from HP. HP has two sites which provide patches free of 486charge: 487 488 <ul> 489<li><a href="http://us.itrc.hp.com/service/home/home.do">US, Canada, Asia-Pacific, and 490Latin-America</a><li><a href="http://europe.itrc.hp.com/service/home/home.do">http://europe.itrc.hp.com/service/home/home.do</a> Europe. 491</ul> 492 493 <p>The HP assembler on these systems is much better than the hpux9 assembler, 494but still has some problems. Most notably the assembler inserts timestamps 495into each object file it creates, causing the 3-stage comparison test to fail 496during a <span class="samp">make bootstrap</span>. You should be able to continue by 497saying <span class="samp">make all</span> after getting the failure from <span class="samp">make 498bootstrap</span>. 499 500 <p><hr /> 501 502<h3 class="heading"><a name="TOC17"></a><a name="hppa_002a_002dhp_002dhpux11"></a>hppa*-hp-hpux11</h3> 503 504<p>GCC 3.0 and up support HP-UX 11. On 64-bit capable systems, there 505are two distinct ports. The <span class="samp">hppa2.0w-hp-hpux11*</span> port generates 506code for the 32-bit pa-risc runtime architecture. It uses the HP 507linker. The <span class="samp">hppa64-hp-hpux11*</span> port generates 64-bit code for the 508pa-risc 2.0 architecture. The script config.guess now selects the port 509type based on the type compiler detected during configuration. You must 510set your <span class="env">PATH</span> or define <span class="env">CC</span> so that configure finds an appropriate 511compiler for the initial bootstrap. Different prefixes must be used if 512both ports are to be installed on the same system. 513 514 <p>It is best to explicitly configure the <span class="samp">hppa64-hp-hpux11*</span> target 515with the <span class="option">--with-ld=...</span> option. We support both the HP 516and GNU linkers for this target. The two linkers require different 517link commands. Thus, it's not possible to switch linkers during a 518GCC build. This has been been reported to occur in a unified build 519of binutils and GCC. 520 521 <p>GCC 2.95.x is not supported under HP-UX 11 and cannot be used to 522compile GCC 3.0 and up. Refer to <a href="binaries.html">binaries</a> for 523information about obtaining precompiled GCC binaries for HP-UX. 524 525 <p>You must use GNU binutils 2.11 or above with the 32-bit port. Thread 526support is not currently implemented, so <span class="option">--enable-threads</span> does 527not work. See: 528 529 <ul> 530<li><a href="http://gcc.gnu.org/ml/gcc-prs/2002-01/msg00551.html">http://gcc.gnu.org/ml/gcc-prs/2002-01/msg00551.html</a> 531<li><a href="http://gcc.gnu.org/ml/gcc-bugs/2002-01/msg00663.html">http://gcc.gnu.org/ml/gcc-bugs/2002-01/msg00663.html</a> 532</ul> 533 534 <p>GCC 3.3 and later support weak symbols on the 32-bit port using SOM 535secondary definition symbols. This feature is not enabled for earlier 536versions of HP-UX since there have been bugs in the linker support for 537secondary symbols. The HP linker patches <code>PHSS_26559</code> and 538<code>PHSS_24304</code> for HP-UX 11.00 and 11.11, respectively, correct the 539problem of linker core dumps creating C++ libraries. Earlier patches 540may work but they have not been tested. 541 542 <p>GCC 3.3 nows uses the ELF DT_INIT_ARRAY and DT_FINI_ARRAY capability 543to run initializers and finalizers on the 64-bit port. The feature 544requires CVS binutils as of January 2, 2003, or a subsequent release 545to correct a problem arising from HP's non-standard use of the .init 546and .fini sections. The 32-bit port uses the linker <span class="option">+init</span> 547and <span class="option">+fini</span> options. As with the support for secondary symbols, 548there have been bugs in the order in which these options are executed 549by the HP linker. So, again a recent linker patch is recommended. 550 551 <p>The HP assembler has many limitations and is not recommended for either 552the 32 or 64-bit ports. For example, it does not support weak symbols 553or alias definitions. As a result, explicit template instantiations 554are required when using C++. This will make it difficult if not 555impossible to build many C++ applications. You also can't generate 556debugging information when using the HP assembler with GCC. 557 558 <p>There are a number of issues to consider in selecting which linker to 559use with the 64-bit port. The GNU 64-bit linker can only create dynamic 560binaries. The <span class="option">-static</span> option causes linking with archive 561libraries but doesn't produce a truly static binary. Dynamic binaries 562still require final binding by the dynamic loader to resolve a set of 563dynamic-loader-defined symbols. The default behavior of the HP linker 564is the same as the GNU linker. However, it can generate true 64-bit 565static binaries using the <span class="option">+compat</span> option. 566 567 <p>The HP 64-bit linker doesn't support linkonce semantics. As a 568result, C++ programs have many more sections than they should. 569 570 <p>The GNU 64-bit linker has some issues with shared library support 571and exceptions. As a result, we only support libgcc in archive 572format. For similar reasons, dwarf2 unwind and exception support 573are disabled. The GNU linker also has problems creating binaries 574with <span class="option">-static</span>. It doesn't provide stubs for internal 575calls to global functions in shared libraries, so these calls 576can't be overloaded. 577 578 <p>There are several possible approaches to building the distribution. 579Binutils can be built first using the HP tools. Then, the GCC 580distribution can be built. The second approach is to build GCC 581first using the HP tools, then build binutils, then rebuild GCC. 582There have been problems with various binary distributions, so 583it is best not to start from a binary distribution. 584 585 <p>When starting with a HP compiler, it is preferable to use the ANSI 586compiler as the bundled compiler only supports traditional C. 587Bootstrapping with the bundled compiler is tested infrequently and 588problems often arise because of the subtle differences in semantics 589between traditional and ISO C. 590 591 <p>This port still is undergoing significant development. 592 593 <p><hr /> 594 595<h3 class="heading"><a name="TOC18"></a><a name="i370_002d_002a_002d_002a"></a>i370-*-*</h3> 596 597<p>This port is very preliminary and has many known bugs. We hope to 598have a higher-quality port for this machine soon. 599 600 <p><hr /> 601 602<h3 class="heading"><a name="TOC19"></a><a name="_002a_002d_002a_002dlinux_002dgnu"></a>*-*-linux-gnu</h3> 603 604<p>Versions of libstdc++-v3 starting with 3.2.1 require bugfixes present 605in glibc 2.2.5 and later. More information is available in the 606libstdc++-v3 documentation. 607 608 <p>If you use glibc 2.2 (or 2.1.9x), GCC 2.95.2 won't install 609out-of-the-box. You'll get compile errors while building <span class="samp">libstdc++</span>. 610The patch <a href="glibc-2.2.patch">glibc-2.2.patch</a>, that is to be 611applied in the GCC source tree, fixes the compatibility problems. 612 613 <p>Currently Glibc 2.2.3 (and older releases) and GCC 3.0 are out of sync 614since the latest exception handling changes for GCC. Compiling glibc 615with GCC 3.0 will give a binary incompatible glibc and therefore cause 616lots of problems and might make your system completely unusable. This 617will definitely need fixes in glibc but might also need fixes in GCC. We 618strongly advise to wait for glibc 2.2.4 and to read the release notes of 619glibc 2.2.4 whether patches for GCC 3.0 are needed. You can use glibc 6202.2.3 with GCC 3.0, just do not try to recompile it. 621 622 <p><hr /> 623 624<h3 class="heading"><a name="TOC20"></a><a name="ix86_002d_002a_002dlinux_002aaout"></a>i?86-*-linux*aout</h3> 625 626<p>Use this configuration to generate <span class="file">a.out</span> binaries on Linux-based 627GNU systems. This configuration is being superseded. You must use 628gas/binutils version 2.5.2 or later. 629 630 <p><hr /> 631 632<h3 class="heading"><a name="TOC21"></a><a name="ix86_002d_002a_002dlinux_002a"></a>i?86-*-linux*</h3> 633 634<p>As of GCC 3.3, binutils 2.13.1 or later is required for this platform. 635See <a href="http://gcc.gnu.org/PR10877">bug 10877</a> for more information. 636 637 <p>If you receive Signal 11 errors when building on GNU/Linux, then it is 638possible you have a hardware problem. Further information on this can be 639found on <a href="http://www.bitwizard.nl/sig11/">www.bitwizard.nl</a>. 640 641 <p><hr /> 642 643<h3 class="heading"><a name="TOC22"></a><a name="ix86_002d_002a_002dsco"></a>i?86-*-sco</h3> 644 645<p>Compilation with RCC is recommended. Also, it may be a good idea to 646link with GNU malloc instead of the malloc that comes with the system. 647 648 <p><hr /> 649 650<h3 class="heading"><a name="TOC23"></a><a name="ix86_002d_002a_002dsco3_002e2v5_002a"></a>i?86-*-sco3.2v5*</h3> 651 652<p>Use this for the SCO OpenServer Release 5 family of operating systems. 653 654 <p>Unlike earlier versions of GCC, the ability to generate COFF with this 655target is no longer provided. 656 657 <p>Earlier versions of GCC emitted DWARF 1 when generating ELF to allow 658the system debugger to be used. That support was too burdensome to 659maintain. GCC now emits only DWARF 2 for this target. This means you 660may use either the UDK debugger or GDB to debug programs built by this 661version of GCC. 662 663 <p>GCC is now only supported on releases 5.0.4 and later, and requires that 664you install Support Level Supplement OSS646B or later, and the latest 665version of the Supplement Graphics, Web and X11 Libraries (GWXLIBS) 666package. If you are using release 5.0.7 of OpenServer, you must have at 667least the first maintenance pack installed (this includes the relevant 668portions of OSS646 and GWXLIBS). OSS646, also known as the "Execution 669Environment Update", provides updated link editors and assemblers, as well 670as updated standard C and math libraries. The C startup modules are also 671updated to support the System V gABI draft, and GCC relies on that 672behavior. GWXLIBS provides a collection of commonly used open source 673libraries, some of which GCC depends on (such as GNU gettext and zlib). 674SCO OpenServer Release 5.0.7 has all of this built in by default, but 675GWXLIBS is significantly updated in Maintenance Pack 1. Please visit 676<a href="ftp://ftp.sco.com/pub/openserver5">ftp://ftp.sco.com/pub/openserver5</a> 677and 678<a href="ftp://ftp.sco.com/pub/openserver5/opensrc">ftp://ftp.sco.com/pub/openserver5/opensrc</a> 679for the latest versions of these (and other potentially useful) supplements. 680 681 <p>Although there is support for using the native assembler, it is recommended 682that you configure GCC to use the GNU assembler. You do this by using the 683flags <a href="./configure.html#with-gnu-as"><span class="option">--with-gnu-as</span></a>. You 684should use a modern version of GNU binutils. Version 2.14 was used for all 685testing. In general, only the <span class="option">--with-gnu-as</span> option is tested. A 686modern bintuils (as well as a plethora of other development related GNU 687utilities) can be found in the GNU Development Tools package. See the 688SCO web and ftp sites for details. That package also contains the 689currently "officially supported" version of GCC, version 2.95.3. It is 690useful for bootstrapping this version. 691 692 <p><hr /> 693 694<h3 class="heading"><a name="TOC24"></a><a name="ix86_002d_002a_002dudk"></a>i?86-*-udk</h3> 695 696<p>This target emulates the SCO Universal Development Kit and requires that 697package be installed. (If it is installed, you will have a 698<span class="file">/udk/usr/ccs/bin/cc</span> file present.) It's very much like the 699<span class="samp">i?86-*-unixware7*</span> target 700but is meant to be used when hosting on a system where UDK isn't the 701default compiler such as OpenServer 5 or Unixware 2. This target will 702generate binaries that will run on OpenServer, Unixware 2, or Unixware 7, 703with the same warnings and caveats as the SCO UDK. 704 705 <p>This target is a little tricky to build because we have to distinguish 706it from the native tools (so it gets headers, startups, and libraries 707from the right place) while making the tools not think we're actually 708building a cross compiler. The easiest way to do this is with a configure 709command like this: 710 711<pre class="example"> CC=/udk/usr/ccs/bin/cc <var>/your/path/to</var>/gcc/configure \ 712 --host=i686-pc-udk --target=i686-pc-udk --program-prefix=udk- 713</pre> 714 <p><em>You should substitute </em><span class="samp">i686</span><em> in the above command with the appropriate 715processor for your host.</em> 716 717 <p>After the usual <span class="samp">make bootstrap</span> and 718<span class="samp">make install</span>, you can then access the UDK-targeted GCC 719tools by adding <span class="command">udk-</span> before the commonly known name. For 720example, to invoke the C compiler, you would use <span class="command">udk-gcc</span>. 721They will coexist peacefully with any native-target GCC tools you may 722have installed. 723 724 <p><hr /> 725 726<h3 class="heading"><a name="TOC25"></a><a name="ia64_002d_002a_002dlinux"></a>ia64-*-linux</h3> 727 728<p>IA-64 processor (also known as IPF, or Itanium Processor Family) 729running GNU/Linux. 730 731 <p>The toolchain is not completely finished, so requirements will continue 732to change. 733GCC 3.0.1 and later require glibc 2.2.4. 734GCC 3.0.2 requires binutils from 2001-09-05 or later. 735GCC 3.0.1 requires binutils 2.11.1 or later. 736 737 <p>None of the following versions of GCC has an ABI that is compatible 738with any of the other versions in this list, with the exception that 739Red Hat 2.96 and Trillian 000171 are compatible with each other: 7403.0.2, 3.0.1, 3.0, Red Hat 2.96, and Trillian 000717. 741This primarily affects C++ programs and programs that create shared libraries. 742Because of these ABI incompatibilities, GCC 3.0.2 is not recommended for 743user programs on GNU/Linux systems built using earlier compiler releases. 744GCC 3.0.2 is recommended for compiling linux, the kernel. 745GCC 3.0.2 is believed to be fully ABI compliant, and hence no more major 746ABI changes are expected. 747 748 <p><hr /> 749 750<h3 class="heading"><a name="TOC26"></a><a name="ia64_002d_002a_002dhpux_002a"></a>ia64-*-hpux*</h3> 751 752<p>Building GCC on this target requires the GNU Assembler. The bundled HP 753assembler will not work. To prevent GCC from using the wrong assembler, 754the option <span class="option">--with-gnu-as</span> may be necessary. 755 756 <p>The GCC libunwind library has not been ported to HPUX. This means that for 757GCC versions 3.2.3 and earlier, <span class="option">--enable-libunwind-exceptions</span> 758is required to build GCC. For GCC 3.3 and later, this is the default. 759 760 <p><hr /> 761 762<h3 class="heading"><a name="TOC27"></a><a name="_002a_002dlynx_002dlynxos"></a>*-lynx-lynxos</h3> 763 764<p>Support for SPARC LynxOS is obsoleted in GCC 3.3. 765 766 <p>LynxOS 2.2 and earlier comes with GCC 1.x already installed as 767<span class="file">/bin/gcc</span>. You should compile with this instead of <span class="file">/bin/cc</span>. 768You can tell GCC to use the GNU assembler and linker, by specifying 769<span class="samp">--with-gnu-as --with-gnu-ld</span> when configuring. These will produce 770COFF format object files and executables; otherwise GCC will use the 771installed tools, which produce <span class="file">a.out</span> format executables. 772 773 <p><hr /> 774<!-- rs6000-ibm-aix*, powerpc-ibm-aix* --> 775 776<h3 class="heading"><a name="TOC28"></a><a name="_002a_002dibm_002daix_002a"></a>*-ibm-aix*</h3> 777 778<p>Support for AIX versions 1, 2, and 3 is obsoleted in GCC 3.3. 779 780 <p>AIX Make frequently has problems with GCC makefiles. GNU Make 3.76 or 781newer is recommended to build on this platform. 782 783 <p>Errors involving <code>alloca</code> when building GCC generally are due 784to an incorrect definition of <code>CC</code> in the Makefile or mixing files 785compiled with the native C compiler and GCC. During the stage1 phase of 786the build, the native AIX compiler <strong>must</strong> be invoked as <span class="command">cc</span> 787(not <span class="command">xlc</span>). Once <span class="command">configure</span> has been informed of 788<span class="command">xlc</span>, one needs to use <span class="samp">make distclean</span> to remove the 789configure cache files and ensure that <span class="env">CC</span> environment variable 790does not provide a definition that will confuse <span class="command">configure</span>. 791If this error occurs during stage2 or later, then the problem most likely 792is the version of Make (see above). 793 794 <p>The native <span class="command">as</span> and <span class="command">ld</span> are recommended for bootstrapping 795on AIX 4 and required for bootstrapping on AIX 5L. The GNU Assembler 796reports that it supports WEAK symbols on AIX 4, which causes GCC to try to 797utilize weak symbol functionality although it is not supported. The GNU 798Assembler and Linker do not support AIX 5L sufficiently to bootstrap GCC. 799The native AIX tools do interoperate with GCC. 800 801 <p>Building <span class="file">libstdc++.a</span> requires a fix for an AIX Assembler bug 802APAR IY26685 (AIX 4.3) or APAR IY25528 (AIX 5.1). 803 804 <p><span class="samp">libstdc++</span> in GCC 3.2 increments the major version number of the 805shared object and GCC installation places the <span class="file">libstdc++.a</span> 806shared library in a common location which will overwrite the GCC 3.1 807version of the shared library. Applications either need to be 808re-linked against the new shared library or the GCC 3.1 version of the 809<span class="samp">libstdc++</span> shared object needs to be available to the AIX 810runtime loader. The GCC 3.1 <span class="samp">libstdc++.so.4</span> shared object can 811be installed for runtime dynamic loading using the following steps to 812set the <span class="samp">F_LOADONLY</span> flag in the shared object for <em>each</em> 813multilib <span class="file">libstdc++.a</span> installed: 814 815 <p>Extract the shared object from each the GCC 3.1 <span class="file">libstdc++.a</span> 816archive: 817<pre class="example"> % ar -x libstdc++.a libstdc++.so.4 818</pre> 819 <p>Enable the <span class="samp">F_LOADONLY</span> flag so that the shared object will be 820available for runtime dynamic loading, but not linking: 821<pre class="example"> % strip -e libstdc++.so.4 822</pre> 823 <p>Archive the runtime-only shared object in the GCC 3.2 824<span class="file">libstdc++.a</span> archive: 825<pre class="example"> % ar -q libstdc++.a libstdc++.so.4 826</pre> 827 <p>Linking executables and shared libraries may produce warnings of 828duplicate symbols. The assembly files generated by GCC for AIX always 829have included multiple symbol definitions for certain global variable 830and function declarations in the original program. The warnings should 831not prevent the linker from producing a correct library or runnable 832executable. 833 834 <p>AIX 4.3 utilizes a “large format” archive to support both 32-bit and 83564-bit object modules. The routines provided in AIX 4.3.0 and AIX 4.3.1 836to parse archive libraries did not handle the new format correctly. 837These routines are used by GCC and result in error messages during 838linking such as “not a COFF file”. The version of the routines shipped 839with AIX 4.3.1 should work for a 32-bit environment. The <span class="option">-g</span> 840option of the archive command may be used to create archives of 32-bit 841objects using the original “small format”. A correct version of the 842routines is shipped with AIX 4.3.2 and above. 843 844 <p>Some versions of the AIX binder (linker) can fail with a relocation 845overflow severe error when the <span class="option">-bbigtoc</span> option is used to link 846GCC-produced object files into an executable that overflows the TOC. A fix 847for APAR IX75823 (OVERFLOW DURING LINK WHEN USING GCC AND -BBIGTOC) is 848available from IBM Customer Support and from its 849<a href="http://techsupport.services.ibm.com/">techsupport.services.ibm.com</a> 850website as PTF U455193. 851 852 <p>The AIX 4.3.2.1 linker (bos.rte.bind_cmds Level 4.3.2.1) will dump core 853with a segmentation fault when invoked by any version of GCC. A fix for 854APAR IX87327 is available from IBM Customer Support and from its 855<a href="http://techsupport.services.ibm.com/">techsupport.services.ibm.com</a> 856website as PTF U461879. This fix is incorporated in AIX 4.3.3 and above. 857 858 <p>The initial assembler shipped with AIX 4.3.0 generates incorrect object 859files. A fix for APAR IX74254 (64BIT DISASSEMBLED OUTPUT FROM COMPILER FAILS 860TO ASSEMBLE/BIND) is available from IBM Customer Support and from its 861<a href="http://techsupport.services.ibm.com/">techsupport.services.ibm.com</a> 862website as PTF U453956. This fix is incorporated in AIX 4.3.1 and above. 863 864 <p>AIX provides National Language Support (NLS). Compilers and assemblers 865use NLS to support locale-specific representations of various data 866formats including floating-point numbers (e.g., <span class="samp">.</span> vs <span class="samp">,</span> for 867separating decimal fractions). There have been problems reported where 868GCC does not produce the same floating-point formats that the assembler 869expects. If one encounters this problem, set the <span class="env">LANG</span> 870environment variable to <span class="samp">C</span> or <span class="samp">En_US</span>. 871 872 <p>By default, GCC for AIX 4.1 and above produces code that can be used on 873both Power or PowerPC processors. 874 875 <p>A default can be specified with the <span class="option">-mcpu=</span><var>cpu_type</var> 876switch and using the configure option <span class="option">--with-cpu-</span><var>cpu_type</var>. 877 878 <p><hr /> 879 880<h3 class="heading"><a name="TOC29"></a><a name="ip2k_002d_002a_002delf"></a>ip2k-*-elf</h3> 881 882<p>Ubicom IP2022 micro controller. 883This configuration is intended for embedded systems. 884There are no standard Unix configurations. 885 886 <p>Use <span class="samp">configure --target=ip2k-elf --enable-languages=c</span> to configure GCC. 887 888 <p><hr /> 889 890<h3 class="heading"><a name="TOC30"></a><a name="m32r_002d_002a_002delf"></a>m32r-*-elf</h3> 891 892<p>Renesas M32R processor. 893This configuration is intended for embedded systems. 894 895 <p><hr /> 896 897<h3 class="heading"><a name="TOC31"></a><a name="m68000_002dhp_002dbsd"></a>m68000-hp-bsd</h3> 898 899<p>Support for this system is obsoleted in GCC 3.3. 900 901 <p>HP 9000 series 200 running BSD. Note that the C compiler that comes 902with this system cannot compile GCC; contact <a href="mailto:law@cygnus.com">law@cygnus.com</a> 903to get binaries of GCC for bootstrapping. 904 905 <p><hr /> 906 907<h3 class="heading"><a name="TOC32"></a><a name="m6811_002delf"></a>m6811-elf</h3> 908 909<p>Motorola 68HC11 family micro controllers. These are used in embedded 910applications. There are no standard Unix configurations. 911 912 <p><hr /> 913 914<h3 class="heading"><a name="TOC33"></a><a name="m6812_002delf"></a>m6812-elf</h3> 915 916<p>Motorola 68HC12 family micro controllers. These are used in embedded 917applications. There are no standard Unix configurations. 918 919 <p><hr /> 920 921<h3 class="heading"><a name="TOC34"></a><a name="m68k_002datt_002dsysv"></a>m68k-att-sysv</h3> 922 923<p>Support for this system is obsoleted in GCC 3.3. 924 925 <p>AT&T 3b1, a.k.a. 7300 PC. This version of GCC cannot 926be compiled with the system C compiler, which is too buggy. 927You will need to get a previous version of GCC and use it to 928bootstrap. Binaries are available from the OSU-CIS archive, at 929<a href="ftp://ftp.uu.net/systems/att7300/">ftp://ftp.uu.net/systems/att7300/</a>. 930 931 <p><hr /> 932 933<h3 class="heading"><a name="TOC35"></a><a name="m68k_002dcrds_002dunos"></a>m68k-crds-unos</h3> 934 935<p>Support for this system is obsoleted in GCC 3.3. 936 937 <p>Use <span class="samp">configure unos</span> for building on Unos. 938 939 <p>The Unos assembler is named <span class="command">casm</span> instead of <span class="command">as</span>. For some 940strange reason linking <span class="file">/bin/as</span> to <span class="file">/bin/casm</span> changes the 941behavior, and does not work. So, when installing GCC, you should 942install the following script as <span class="file">as</span> in the subdirectory where 943the passes of GCC are installed: 944 945<pre class="example"> #!/bin/sh 946 casm $* 947</pre> 948 <p>The default Unos library is named <span class="file">libunos.a</span> instead of 949<span class="file">libc.a</span>. To allow GCC to function, either change all 950references to <span class="option">-lc</span> in <span class="file">gcc.c</span> to <span class="option">-lunos</span> or link 951<span class="file">/lib/libc.a</span> to <span class="file">/lib/libunos.a</span>. 952 953 <p><a name="index-_0040code_007balloca_007d_002c-for-Unos-6"></a>When compiling GCC with the standard compiler, to overcome bugs in 954the support of <code>alloca</code>, do not use <span class="option">-O</span> when making stage 2. 955Then use the stage 2 compiler with <span class="option">-O</span> to make the stage 3 956compiler. This compiler will have the same characteristics as the usual 957stage 2 compiler on other systems. Use it to make a stage 4 compiler 958and compare that with stage 3 to verify proper compilation. 959 960 <p>(Perhaps simply defining <code>ALLOCA</code> in <span class="file">x-crds</span> as described in 961the comments there will make the above paragraph superfluous. Please 962inform us of whether this works.) 963 964 <p>Unos uses memory segmentation instead of demand paging, so you will need 965a lot of memory. 5 Mb is barely enough if no other tasks are running. 966If linking <span class="file">cc1</span> fails, try putting the object files into a library 967and linking from that library. 968 969 <p><hr /> 970 971<h3 class="heading"><a name="TOC36"></a><a name="m68k_002dhp_002dhpux"></a>m68k-hp-hpux</h3> 972 973<p>HP 9000 series 300 or 400 running HP-UX. HP-UX version 8.0 has a bug in 974the assembler that prevents compilation of GCC. This 975bug manifests itself during the first stage of compilation, while 976building <span class="file">libgcc2.a</span>: 977 978<pre class="smallexample"> _floatdisf 979 cc1: warning: `-g' option not supported on this version of GCC 980 cc1: warning: `-g1' option not supported on this version of GCC 981 ./xgcc: Internal compiler error: program as got fatal signal 11 982</pre> 983 <p>A patched version of the assembler is available as the file 984<a href="ftp://altdorf.ai.mit.edu/archive/cph/hpux-8.0-assembler">ftp://altdorf.ai.mit.edu/archive/cph/hpux-8.0-assembler</a>. If you 985have HP software support, the patch can also be obtained directly from 986HP, as described in the following note: 987 988 <blockquote> 989This is the patched assembler, to patch SR#1653-010439, where the 990assembler aborts on floating point constants. 991 992 <p>The bug is not really in the assembler, but in the shared library 993version of the function “cvtnum(3c)”. The bug on “cvtnum(3c)” is 994SR#4701-078451. Anyway, the attached assembler uses the archive 995library version of “cvtnum(3c)” and thus does not exhibit the bug. 996</blockquote> 997 998 <p>This patch is also known as PHCO_4484. 999 1000 <p>In addition, if you wish to use gas, you must use 1001gas version 2.1 or later, and you must use the GNU linker version 2.1 or 1002later. Earlier versions of gas relied upon a program which converted the 1003gas output into the native HP-UX format, but that program has not been 1004kept up to date. gdb does not understand that native HP-UX format, so 1005you must use gas if you wish to use gdb. 1006 1007 <p>On HP-UX version 8.05, but not on 8.07 or more recent versions, the 1008<span class="command">fixproto</span> shell script triggers a bug in the system shell. If you 1009encounter this problem, upgrade your operating system or use BASH (the 1010GNU shell) to run <span class="command">fixproto</span>. This bug will cause the fixproto 1011program to report an error of the form: 1012 1013<pre class="example"> ./fixproto: sh internal 1K buffer overflow 1014</pre> 1015 <p>To fix this, you can also change the first line of the fixproto script 1016to look like: 1017 1018<pre class="example"> #!/bin/ksh 1019</pre> 1020 <p><hr /> 1021 1022<h3 class="heading"><a name="TOC37"></a><a name="m68k_002dncr_002d_002a"></a>m68k-ncr-*</h3> 1023 1024<p>Support for this system is obsoleted in GCC 3.3. 1025 1026 <p>On the Tower models 4<var>n</var>0 and 6<var>n</var>0, by default a process is not 1027allowed to have more than one megabyte of memory. GCC cannot compile 1028itself (or many other programs) with <span class="option">-O</span> in that much memory. 1029 1030 <p>To solve this problem, reconfigure the kernel adding the following line 1031to the configuration file: 1032 1033<pre class="smallexample"> MAXUMEM = 4096 1034</pre> 1035 <p><hr /> 1036 1037<h3 class="heading"><a name="TOC38"></a><a name="m68k_002dsun"></a>m68k-sun</h3> 1038 1039<p>Support for this system is obsoleted in GCC 3.3. 1040 1041 <p>Sun 3. We do not provide a configuration file to use the Sun FPA by 1042default, because programs that establish signal handlers for floating 1043point traps inherently cannot work with the FPA. 1044 1045 <p><hr /> 1046 1047<h3 class="heading"><a name="TOC39"></a><a name="m68k_002dsun_002dsunos4_002e1_002e1"></a>m68k-sun-sunos4.1.1</h3> 1048 1049<p>Support for this system is obsoleted in GCC 3.3. 1050 1051 <p>It is reported that you may need the GNU assembler on this platform. 1052 1053 <p><hr /> 1054 1055<h3 class="heading"><a name="TOC40"></a><a name="mips_002d_002a_002d_002a"></a>mips-*-*</h3> 1056 1057<p>If on a MIPS system you get an error message saying “does not have gp 1058sections for all it's [sic] sectons [sic]”, don't worry about it. This 1059happens whenever you use GAS with the MIPS linker, but there is not 1060really anything wrong, and it is okay to use the output file. You can 1061stop such warnings by installing the GNU linker. 1062 1063 <p>It would be nice to extend GAS to produce the gp tables, but they are 1064optional, and there should not be a warning about their absence. 1065 1066 <p>The libstdc++ atomic locking routines for MIPS targets requires MIPS II 1067and later. A patch went in just after the GCC 3.3 release to 1068make <span class="samp">mips*-*-*</span> use the generic implementation instead. You can also 1069configure for <span class="samp">mipsel-elf</span> as a workaround. The 1070<span class="samp">mips*-*-linux*</span> target continues to use the MIPS II routines. More 1071work on this is expected in future releases. 1072 1073 <p><hr /> 1074 1075<h3 class="heading"><a name="TOC41"></a><a name="mips_002dsgi_002dirix5"></a>mips-sgi-irix5</h3> 1076 1077<p>This configuration has considerable problems, which will be fixed in a 1078future release. 1079 1080 <p>In order to compile GCC on an SGI running IRIX 5, the “compiler_dev.hdr” 1081subsystem must be installed from the IDO CD-ROM supplied by Silicon 1082Graphics. It is also available for download from 1083<a href="http://www.sgi.com/developers/devtools/apis/ido.html">http://www.sgi.com/developers/devtools/apis/ido.html</a>. 1084 1085 <p><span class="samp">make compare</span> may fail on version 5 of IRIX unless you add 1086<span class="option">-save-temps</span> to <code>CFLAGS</code>. On these systems, the name of the 1087assembler input file is stored in the object file, and that makes 1088comparison fail if it differs between the <code>stage1</code> and 1089<code>stage2</code> compilations. The option <span class="option">-save-temps</span> forces a 1090fixed name to be used for the assembler input file, instead of a 1091randomly chosen name in <span class="file">/tmp</span>. Do not add <span class="option">-save-temps</span> 1092unless the comparisons fail without that option. If you do you 1093<span class="option">-save-temps</span>, you will have to manually delete the <span class="samp">.i</span> and 1094<span class="samp">.s</span> files after each series of compilations. 1095 1096 <p>If you use the MIPS C compiler to bootstrap, it may be necessary 1097to increase its table size for switch statements with the 1098<span class="option">-Wf,-XNg1500</span> option. If you use the <span class="option">-O2</span> 1099optimization option, you also need to use <span class="option">-Olimit 3000</span>. 1100 1101 <p>To enable debugging under IRIX 5, you must use GNU <span class="command">as</span> 2.11.2 1102or later, 1103and use the <span class="option">--with-gnu-as</span> configure option when configuring GCC. 1104GNU <span class="command">as</span> is distributed as part of the binutils package. 1105When using release 2.11.2, you need to apply a patch 1106<a href="http://sources.redhat.com/ml/binutils/2001-07/msg00352.html">http://sources.redhat.com/ml/binutils/2001-07/msg00352.html</a> 1107which will be included in the next release of binutils. 1108 1109 <p>When building GCC, the build process loops rebuilding <span class="command">cc1</span> over 1110and over again. This happens on <span class="samp">mips-sgi-irix5.2</span>, and possibly 1111other platforms. It has been reported that this is a known bug in the 1112<span class="command">make</span> shipped with IRIX 5.2. We recommend you use GNU 1113<span class="command">make</span> instead of the vendor supplied <span class="command">make</span> program; 1114however, you may have success with <span class="command">smake</span> on IRIX 5.2 if you do 1115not have GNU <span class="command">make</span> available. 1116 1117 <p><hr /> 1118 1119<h3 class="heading"><a name="TOC42"></a><a name="mips_002dsgi_002dirix6"></a>mips-sgi-irix6</h3> 1120 1121<p>If you are using IRIX <span class="command">cc</span> as your bootstrap compiler, you must 1122ensure that the N32 ABI is in use. To test this, compile a simple C 1123file with <span class="command">cc</span> and then run <span class="command">file</span> on the 1124resulting object file. The output should look like: 1125 1126<pre class="example"> test.o: ELF N32 MSB ... 1127</pre> 1128 <p>If you see: 1129 1130<pre class="example"> test.o: ELF 32-bit MSB ... 1131</pre> 1132 <p>or 1133 1134<pre class="example"> test.o: ELF 64-bit MSB ... 1135</pre> 1136 <p>then your version of <span class="command">cc</span> uses the O32 or N64 ABI by default. You 1137should set the environment variable <span class="env">CC</span> to <span class="samp">cc -n32</span> 1138before configuring GCC. 1139 1140 <p>If you want the resulting <span class="command">gcc</span> to run on old 32-bit systems 1141with the MIPS R4400 CPU, you need to ensure that only code for the mips3 1142instruction set architecture (ISA) is generated. While GCC 3.x does 1143this correctly, both GCC 2.95 and SGI's MIPSpro <span class="command">cc</span> may change 1144the ISA depending on the machine where GCC is built. Using one of them 1145as the bootstrap compiler may result in mips4 code, which won't run at 1146all on mips3-only systems. For the test program above, you should see: 1147 1148<pre class="example"> test.o: ELF N32 MSB mips-3 ... 1149</pre> 1150 <p>If you get: 1151 1152<pre class="example"> test.o: ELF N32 MSB mips-4 ... 1153</pre> 1154 <p>instead, you should set the environment variable <span class="env">CC</span> to <span class="samp">cc 1155-n32 -mips3</span> or <span class="samp">gcc -mips3</span> respectively before configuring GCC. 1156 1157 <p>GCC on IRIX 6 is usually built to support both the N32 and N64 ABIs. If 1158you build GCC on a system that doesn't have the N64 libraries installed, 1159you need to configure with <span class="option">--disable-multilib</span> so GCC doesn't 1160try to use them. Look for <span class="file">/usr/lib64/libc.so.1</span> to see if you 1161have the 64-bit libraries installed. 1162 1163 <p>You must <em>not</em> use GNU <span class="command">as</span> (which isn't built anyway as of 1164binutils 2.11.2) on IRIX 6 platforms; doing so will only cause problems. 1165 1166 <p>GCC does not currently support generating O32 ABI binaries in the 1167<span class="samp">mips-sgi-irix6</span> configurations. It is possible to create a GCC 1168with O32 ABI only support by configuring it for the <span class="samp">mips-sgi-irix5</span> 1169target and using a patched GNU <span class="command">as</span> 2.11.2 as documented in the 1170<a href="#mips-sgi-irix5"><span class="samp">mips-sgi-irix5</span></a> section above. Using the 1171native assembler requires patches to GCC which will be included in a 1172future release. It is 1173expected that O32 ABI support will be available again in a future release. 1174 1175 <p>The <span class="option">--enable-threads</span> option doesn't currently work, a patch is 1176in preparation for a future release. The <span class="option">--enable-libgcj</span> 1177option is disabled by default: IRIX 6 uses a very low default limit 1178(20480) for the command line length. Although libtool contains a 1179workaround for this problem, at least the N64 <span class="samp">libgcj</span> is known not 1180to build despite this, running into an internal error of the native 1181<span class="command">ld</span>. A sure fix is to increase this limit (<span class="samp">ncargs</span>) to 1182its maximum of 262144 bytes. If you have root access, you can use the 1183<span class="command">systune</span> command to do this. 1184 1185 <p>GCC does not correctly pass/return structures which are 1186smaller than 16 bytes and which are not 8 bytes. The problem is very 1187involved and difficult to fix. It affects a number of other targets also, 1188but IRIX 6 is affected the most, because it is a 64-bit target, and 4 byte 1189structures are common. The exact problem is that structures are being padded 1190at the wrong end, e.g. a 4 byte structure is loaded into the lower 4 bytes 1191of the register when it should be loaded into the upper 4 bytes of the 1192register. 1193 1194 <p>GCC is consistent with itself, but not consistent with the SGI C compiler 1195(and the SGI supplied runtime libraries), so the only failures that can 1196happen are when there are library functions that take/return such 1197structures. There are very few such library functions. Currently this 1198is known to affect <code>inet_ntoa</code>, <code>inet_lnaof</code>, 1199<code>inet_netof</code>, <code>inet_makeaddr</code>, and <code>semctl</code>. Until the 1200bug is fixed, GCC contains workarounds for the known affected functions. 1201 1202 <p>See <a href="http://freeware.sgi.com/">http://freeware.sgi.com/</a> for more 1203information about using GCC on IRIX platforms. 1204 1205 <p><hr /> 1206 1207<h3 class="heading"><a name="TOC43"></a><a name="powerpc_002a_002d_002a_002d_002a"></a>powerpc-*-*</h3> 1208 1209<p>You can specify a default version for the <span class="option">-mcpu=</span><var>cpu_type</var> 1210switch by using the configure option <span class="option">--with-cpu-</span><var>cpu_type</var>. 1211 1212 <p><hr /> 1213 1214<h3 class="heading"><a name="TOC44"></a><a name="powerpc_002d_002a_002ddarwin_002a"></a>powerpc-*-darwin*</h3> 1215 1216<p>PowerPC running Darwin (Mac OS X kernel). 1217 1218 <p>Pre-installed versions of Mac OS X may not include any developer tools, 1219meaning that you will not be able to build GCC from source. Tool 1220binaries are available at 1221<a href="http://developer.apple.com/tools/compilers.html">http://developer.apple.com/tools/compilers.html</a> (free 1222registration required). 1223 1224 <p>The default stack limit of 512K is too small, which may cause compiles 1225to fail with 'Bus error'. Set the stack larger, for instance 1226by doing <span class="samp">limit stack 800</span>. It's a good idea to use the GNU 1227preprocessor instead of Apple's <span class="file">cpp-precomp</span> during the first stage of 1228bootstrapping; this is automatic when doing <span class="samp">make bootstrap</span>, but 1229to do it from the toplevel objdir you will need to say <span class="samp">make 1230CC='cc -no-cpp-precomp' bootstrap</span>. 1231 1232 <p>The version of GCC shipped by Apple typically includes a number of 1233extensions not available in a standard GCC release. These extensions 1234are generally specific to Mac programming. 1235 1236 <p><hr /> 1237 1238<h3 class="heading"><a name="TOC45"></a><a name="powerpc_002d_002a_002delf"></a>powerpc-*-elf, powerpc-*-sysv4</h3> 1239 1240<p>PowerPC system in big endian mode, running System V.4. 1241 1242 <p><hr /> 1243 1244<h3 class="heading"><a name="TOC46"></a><a name="powerpc_002d_002a_002dlinux_002dgnu_002a"></a>powerpc-*-linux-gnu*</h3> 1245 1246<p>You will need 1247<a href="ftp://ftp.kernel.org/pub/linux/devel/binutils">binutils 2.13.90.0.10</a> 1248or newer for a working GCC. 1249 1250 <p><hr /> 1251 1252<h3 class="heading"><a name="TOC47"></a><a name="powerpc_002d_002a_002dnetbsd_002a"></a>powerpc-*-netbsd*</h3> 1253 1254<p>PowerPC system in big endian mode running NetBSD. To build the 1255documentation you will need Texinfo version 4.2 (NetBSD 1.5.1 included 1256Texinfo version 3.12). 1257 1258 <p><hr /> 1259 1260<h3 class="heading"><a name="TOC48"></a><a name="powerpc_002d_002a_002deabiaix"></a>powerpc-*-eabiaix</h3> 1261 1262<p>Embedded PowerPC system in big endian mode with <span class="option">-mcall-aix</span> selected as 1263the default. 1264 1265 <p><hr /> 1266 1267<h3 class="heading"><a name="TOC49"></a><a name="powerpc_002d_002a_002deabisim"></a>powerpc-*-eabisim</h3> 1268 1269<p>Embedded PowerPC system in big endian mode for use in running under the 1270PSIM simulator. 1271 1272 <p><hr /> 1273 1274<h3 class="heading"><a name="TOC50"></a><a name="powerpc_002d_002a_002deabi"></a>powerpc-*-eabi</h3> 1275 1276<p>Embedded PowerPC system in big endian mode. 1277 1278 <p><hr /> 1279 1280<h3 class="heading"><a name="TOC51"></a><a name="powerpcle_002d_002a_002delf"></a>powerpcle-*-elf, powerpcle-*-sysv4</h3> 1281 1282<p>PowerPC system in little endian mode, running System V.4. 1283 1284 <p><hr /> 1285 1286<h3 class="heading"><a name="TOC52"></a><a name="powerpcle_002d_002a_002deabisim"></a>powerpcle-*-eabisim</h3> 1287 1288<p>Embedded PowerPC system in little endian mode for use in running under 1289the PSIM simulator. 1290 1291 <p><hr /> 1292 1293<h3 class="heading"><a name="TOC53"></a><a name="powerpcle_002d_002a_002deabi"></a>powerpcle-*-eabi</h3> 1294 1295<p>Embedded PowerPC system in little endian mode. 1296 1297 <p><hr /> 1298 1299<h3 class="heading"><a name="TOC54"></a><a name="s390_002d_002a_002dlinux_002a"></a>s390-*-linux*</h3> 1300 1301<p>S/390 system running Linux for S/390. 1302 1303 <p><hr /> 1304 1305<h3 class="heading"><a name="TOC55"></a><a name="s390x_002d_002a_002dlinux_002a"></a>s390x-*-linux*</h3> 1306 1307<p>zSeries system (64-bit) running Linux for zSeries. 1308 1309 <p><hr /><!-- Please use Solaris 2 to refer to all release of Solaris, starting --> 1310<!-- with 2.0 until 2.6, 7, and 8. Solaris 1 was a marketing name for --> 1311<!-- SunOS 4 releases which we don't use to avoid confusion. Solaris --> 1312<!-- alone is too unspecific and must be avoided. --> 1313 1314<h3 class="heading"><a name="TOC56"></a><a name="_002a_002d_002a_002dsolaris2_002a"></a>*-*-solaris2*</h3> 1315 1316<p>Sun does not ship a C compiler with Solaris 2. To bootstrap and install 1317GCC you first have to install a pre-built compiler, see our 1318<a href="binaries.html">binaries page</a> for details. 1319 1320 <p>The Solaris 2 <span class="command">/bin/sh</span> will often fail to configure 1321<span class="file">libstdc++-v3</span>, <span class="file">boehm-gc</span> or <span class="file">libjava</span>. We therefore 1322recommend to use the following sequence of commands to bootstrap and 1323install GCC: 1324 1325<pre class="smallexample"> % CONFIG_SHELL=/bin/ksh 1326 % export CONFIG_SHELL 1327 % <var>srcdir</var>/configure [<var>options</var>] [<var>target</var>] 1328 % gmake bootstrap 1329 % gmake install 1330</pre> 1331 <p>As explained in the <a href="build.html">build</a> instructions, we recommend 1332to use GNU make, which we call <span class="command">gmake</span> here to distinguish it 1333from Sun make. 1334 1335 <p>Solaris 2 comes with a number of optional OS packages. Some of these 1336are needed to use GCC fully, namely <code>SUNWarc</code>, 1337<code>SUNWbtool</code>, <code>SUNWesu</code>, <code>SUNWhea</code>, <code>SUNWlibm</code>, 1338<code>SUNWsprot</code>, and <code>SUNWtoo</code>. If you did not install all 1339optional packages when installing Solaris 2, you will need to verify that 1340the packages that GCC needs are installed. 1341 1342 <p>To check whether an optional package is installed, use 1343the <span class="command">pkginfo</span> command. To add an optional package, use the 1344<span class="command">pkgadd</span> command. For further details, see the Solaris 2 1345documentation. 1346 1347 <p>Trying to use the linker and other tools in 1348<span class="file">/usr/ucb</span> to install GCC has been observed to cause trouble. 1349For example, the linker may hang indefinitely. The fix is to remove 1350<span class="file">/usr/ucb</span> from your <span class="env">PATH</span>. 1351 1352 <p>The build process works more smoothly with the legacy Sun tools so, if you 1353have <span class="file">/usr/xpg4/bin</span> in your <span class="env">PATH</span>, we recommend that you place 1354<span class="file">/usr/bin</span> before <span class="file">/usr/xpg4/bin</span> for the duration of the build. 1355 1356 <p>All releases of GNU binutils prior to 2.11.2 have known bugs on this 1357platform. We recommend the use of GNU binutils 2.11.2 or later, or the 1358vendor tools (Sun <span class="command">as</span>, Sun <span class="command">ld</span>). Note that your mileage 1359may vary if you use a combination of the GNU tools and the Sun tools: while 1360the combination GNU <span class="command">as</span> + Sun <span class="command">ld</span> should reasonably work, 1361the reverse combination Sun <span class="command">as</span> + GNU <span class="command">ld</span> is known to 1362cause memory corruption at runtime in some cases for C++ programs. 1363 1364 <p>The stock GNU binutils 2.15 release is broken on this platform because of a 1365single bug. It has been fixed on the 2.15 branch in the CVS repository. 1366You can obtain a working version by checking out the binutils-2_15-branch 1367from the CVS repository or applying the patch 1368<a href="http://sources.redhat.com/ml/binutils-cvs/2004-09/msg00036.html">http://sources.redhat.com/ml/binutils-cvs/2004-09/msg00036.html</a> to the 1369release. 1370 1371 <p>Sun bug 4296832 turns up when compiling X11 headers with GCC 2.95 or 1372newer: <span class="command">g++</span> will complain that types are missing. These headers assume 1373that omitting the type means <code>int</code>; this assumption worked for C89 but 1374is wrong for C++, and is now wrong for C99 also. 1375 1376 <p><span class="command">g++</span> accepts such (invalid) constructs with the option 1377<span class="option">-fpermissive</span>; it 1378will assume that any missing type is <code>int</code> (as defined by C89). 1379 1380 <p>There are patches for Solaris 2.6 (105633-56 or newer for SPARC, 1381106248-42 or newer for Intel), Solaris 7 (108376-21 or newer for SPARC, 1382108377-20 for Intel), and Solaris 8 (108652-24 or newer for SPARC, 1383108653-22 for Intel) that fix this bug. 1384 1385 <p>Sun bug 4927647 sometimes causes random spurious testsuite failures 1386related to missing diagnostic output. This bug doesn't affect GCC 1387itself, rather it is a kernel bug triggered by the <span class="command">expect</span> 1388program which is used only by the GCC testsuite driver. When the bug 1389causes the <span class="command">expect</span> program to miss anticipated output, extra 1390testsuite failures appear. 1391 1392 <p>There are patches for Solaris 8 (117350-12 or newer for SPARC, 1393117351-12 or newer for Intel) and Solaris 9 (117171-11 or newer for 1394SPARC, 117172-11 or newer for Intel) that address this problem. 1395 1396 <p><hr /> 1397 1398<h3 class="heading"><a name="TOC57"></a><a name="sparc_002dsun_002dsolaris2_002a"></a>sparc-sun-solaris2*</h3> 1399 1400<p>When GCC is configured to use binutils 2.11.2 or later the binaries 1401produced are smaller than the ones produced using Sun's native tools; 1402this difference is quite significant for binaries containing debugging 1403information. 1404 1405 <p>Sun <span class="command">as</span> 4.x is broken in that it cannot cope with long symbol names. 1406A typical error message might look similar to the following: 1407 1408<pre class="smallexample"> /usr/ccs/bin/as: "/var/tmp/ccMsw135.s", line 11041: error: 1409 can't compute value of an expression involving an external symbol. 1410</pre> 1411 <p>This is Sun bug 4237974. This is fixed with patch 108908-02 for Solaris 14122.6 and has been fixed in later (5.x) versions of the assembler, 1413starting with Solaris 7. 1414 1415 <p>Starting with Solaris 7, the operating system is capable of executing 141664-bit SPARC V9 binaries. GCC 3.1 and later properly supports 1417this; the <span class="option">-m64</span> option enables 64-bit code generation. 1418However, if all you want is code tuned for the UltraSPARC CPU, you 1419should try the <span class="option">-mtune=ultrasparc</span> option instead, which produces 1420code that, unlike full 64-bit code, can still run on non-UltraSPARC 1421machines. 1422 1423 <p>When configuring on a Solaris 7 or later system that is running a kernel 1424that supports only 32-bit binaries, one must configure with 1425<span class="option">--disable-multilib</span>, since we will not be able to build the 142664-bit target libraries. 1427 1428 <p>GCC 3.3 triggers code generation bugs in earlier versions of the GNU 1429compiler (especially GCC 3.0.x versions), which lead to the miscompilation 1430of the stage1 compiler and the subsequent failure of the bootstrap process. 1431A workaround is to use GCC 3.2.3 as an intermediary stage, i.e. to bootstrap 1432that compiler with the base compiler and then use it to bootstrap the final 1433compiler. 1434 1435 <p><hr /> 1436 1437<h3 class="heading"><a name="TOC58"></a><a name="sparc_002dsun_002dsolaris2_002e7"></a>sparc-sun-solaris2.7</h3> 1438 1439<p>Sun patch 107058-01 (1999-01-13) for Solaris 7/SPARC triggers a bug in 1440the dynamic linker. This problem (Sun bug 4210064) affects GCC 2.8 1441and later, including all EGCS releases. Sun formerly recommended 1442107058-01 for all Solaris 7 users, but around 1999-09-01 it started to 1443recommend it only for people who use Sun's compilers. 1444 1445 <p>Here are some workarounds to this problem: 1446 <ul> 1447<li>Do not install Sun patch 107058-01 until after Sun releases a 1448complete patch for bug 4210064. This is the simplest course to take, 1449unless you must also use Sun's C compiler. Unfortunately 107058-01 1450is preinstalled on some new Solaris 7-based hosts, so you may have to 1451back it out. 1452 1453 <li>Copy the original, unpatched Solaris 7 1454<span class="command">/usr/ccs/bin/as</span> into 1455<span class="command">/usr/local/lib/gcc-lib/sparc-sun-solaris2.7/3.1/as</span>, 1456adjusting the latter name to fit your local conventions and software 1457version numbers. 1458 1459 <li>Install Sun patch 106950-03 (1999-05-25) or later. Nobody with 1460both 107058-01 and 106950-03 installed has reported the bug with GCC 1461and Sun's dynamic linker. This last course of action is riskiest, 1462for two reasons. First, you must install 106950 on all hosts that 1463run code generated by GCC; it doesn't suffice to install it only on 1464the hosts that run GCC itself. Second, Sun says that 106950-03 is 1465only a partial fix for bug 4210064, but Sun doesn't know whether the 1466partial fix is adequate for GCC. Revision -08 or later should fix 1467the bug. The current (as of 2001-09-24) revision is -14, and is included in 1468the Solaris 7 Recommended Patch Cluster. 1469</ul> 1470 1471 <p>GCC 3.3 triggers a bug in version 5.0 Alpha 03/27/98 of the Sun assembler, 1472which causes a bootstrap failure when linking the 64-bit shared version of 1473libgcc. A typical error message is: 1474 1475<pre class="smallexample"> ld: fatal: relocation error: R_SPARC_32: file libgcc/sparcv9/_muldi3.o: 1476 symbol <unknown>: offset 0xffffffff7ec133e7 is non-aligned. 1477</pre> 1478 <p>This bug has been fixed in the final 5.0 version of the assembler. 1479 1480 <p><p> 1481<hr /> 1482 1483<h3 class="heading"><a name="TOC59"></a><a name="sparc_002dsun_002dsunos4_002a"></a>sparc-sun-sunos4*</h3> 1484 1485<p>Support for this system is obsoleted in GCC 3.3. 1486 1487 <p>A bug in the SunOS 4 linker will cause it to crash when linking 1488<span class="option">-fPIC</span> compiled objects (and will therefore not allow you to build 1489shared libraries). 1490 1491 <p>To fix this problem you can either use the most recent version of 1492binutils or get the latest SunOS 4 linker patch (patch ID 100170-10) 1493from Sun's patch site. 1494 1495 <p>Sometimes on a Sun 4 you may observe a crash in the program 1496<span class="command">genflags</span> or <span class="command">genoutput</span> while building GCC. This is said to 1497be due to a bug in <span class="command">sh</span>. You can probably get around it by running 1498<span class="command">genflags</span> or <span class="command">genoutput</span> manually and then retrying the 1499<span class="command">make</span>. 1500 1501 <p><hr /> 1502 1503<h3 class="heading"><a name="TOC60"></a><a name="sparc_002dunknown_002dlinux_002dgnulibc1"></a>sparc-unknown-linux-gnulibc1</h3> 1504 1505<p>Support for this system is obsoleted in GCC 3.3. 1506 1507 <p>It has been reported that you might need 1508<a href="ftp://ftp.yggdrasil.com/private/hjl">binutils 2.8.1.0.23</a> 1509for this platform, too. 1510 1511 <p><hr /> 1512 1513<h3 class="heading"><a name="TOC61"></a><a name="sparc_002d_002a_002dlinux_002a"></a>sparc-*-linux*</h3> 1514 1515<p>GCC versions 3.0 and higher require binutils 2.11.2 and glibc 2.2.4 1516or newer on this platform. All earlier binutils and glibc 1517releases mishandled unaligned relocations on <code>sparc-*-*</code> targets. 1518 1519 <p><hr /> 1520 1521<h3 class="heading"><a name="TOC62"></a><a name="sparc64_002d_002a_002dsolaris2_002a"></a>sparc64-*-solaris2*</h3> 1522 1523<p>The following compiler flags must be specified in the configure 1524step in order to bootstrap this target with the Sun compiler: 1525 1526<pre class="example"> % CC="cc -xildoff -xarch=v9" <var>srcdir</var>/configure [<var>options</var>] [<var>target</var>] 1527</pre> 1528 <p><span class="option">-xildoff</span> turns off the incremental linker, and <span class="option">-xarch=v9</span> 1529specifies the SPARC-V9 architecture to the Sun linker and assembler. 1530 1531 <p><hr /> 1532 1533<h3 class="heading"><a name="TOC63"></a><a name="sparcv9_002d_002a_002dsolaris2_002a"></a>sparcv9-*-solaris2*</h3> 1534 1535<p>This is a synonym for sparc64-*-solaris2*. 1536 1537 <p><hr /> 1538 1539<h3 class="heading"><a name="TOC64"></a><a name="_0023_002a_002d_002a_002dsysv_002a"></a>*-*-sysv*</h3> 1540 1541<p>On System V release 3, you may get this error message 1542while linking: 1543 1544<pre class="smallexample"> ld fatal: failed to write symbol name <var>something</var> 1545 in strings table for file <var>whatever</var> 1546</pre> 1547 <p>This probably indicates that the disk is full or your ulimit won't allow 1548the file to be as large as it needs to be. 1549 1550 <p>This problem can also result because the kernel parameter <code>MAXUMEM</code> 1551is too small. If so, you must regenerate the kernel and make the value 1552much larger. The default value is reported to be 1024; a value of 32768 1553is said to work. Smaller values may also work. 1554 1555 <p>On System V, if you get an error like this, 1556 1557<pre class="example"> /usr/local/lib/bison.simple: In function `yyparse': 1558 /usr/local/lib/bison.simple:625: virtual memory exhausted 1559</pre> 1560 <p class="noindent">that too indicates a problem with disk space, ulimit, or <code>MAXUMEM</code>. 1561 1562 <p>On a System V release 4 system, make sure <span class="file">/usr/bin</span> precedes 1563<span class="file">/usr/ucb</span> in <code>PATH</code>. The <span class="command">cc</span> command in 1564<span class="file">/usr/ucb</span> uses libraries which have bugs. 1565 1566 <p><hr /> 1567 1568<h3 class="heading"><a name="TOC65"></a><a name="vax_002ddec_002dultrix"></a>vax-dec-ultrix</h3> 1569 1570<p>Don't try compiling with VAX C (<span class="command">vcc</span>). It produces incorrect code 1571in some cases (for example, when <code>alloca</code> is used). 1572 1573 <p><hr /> 1574 1575<h3 class="heading"><a name="TOC66"></a><a name="x86_005f64_002d_002a_002d_002a"></a>x86_64-*-*, amd64-*-*</h3> 1576 1577<p>GCC supports the x86-64 architecture implemented by the AMD64 processor 1578(amd64-*-* is an alias for x86_64-*-*) on GNU/Linux, FreeBSD and NetBSD. 1579On GNU/Linux the default is a bi-arch compiler which is able to generate 1580both 64-bit x86-64 and 32-bit x86 code (via the <span class="option">-m32</span> switch). 1581 1582 <p><hr /> 1583 1584<h3 class="heading"><a name="TOC67"></a><a name="xtensa_002d_002a_002delf"></a>xtensa-*-elf</h3> 1585 1586<p>This target is intended for embedded Xtensa systems using the 1587<span class="samp">newlib</span> C library. It uses ELF but does not support shared 1588objects. Designed-defined instructions specified via the 1589Tensilica Instruction Extension (TIE) language are only supported 1590through inline assembly. 1591 1592 <p>The Xtensa configuration information must be specified prior to 1593building GCC. The <span class="file">gcc/config/xtensa/xtensa-config.h</span> header 1594file contains the configuration information. If you created your 1595own Xtensa configuration with the Xtensa Processor Generator, the 1596downloaded files include a customized copy of this header file, 1597which you can use to replace the default header file. 1598 1599 <p><hr /> 1600 1601<h3 class="heading"><a name="TOC68"></a><a name="xtensa_002d_002a_002dlinux_002a"></a>xtensa-*-linux*</h3> 1602 1603<p>This target is for Xtensa systems running GNU/Linux. It supports ELF 1604shared objects and the GNU C library (glibc). It also generates 1605position-independent code (PIC) regardless of whether the 1606<span class="option">-fpic</span> or <span class="option">-fPIC</span> options are used. In other 1607respects, this target is the same as the 1608<a href="#xtensa-*-elf"><span class="samp">xtensa-*-elf</span></a> target. 1609 1610 <p><hr /> 1611 1612<h3 class="heading"><a name="TOC69"></a><a name="windows"></a>Microsoft Windows (32-bit)</h3> 1613 1614<p>A port of GCC 2.95.2 and 3.x is included with the 1615<a href="http://www.cygwin.com/">Cygwin environment</a>. 1616 1617 <p>Current (as of early 2001) snapshots of GCC will build under Cygwin 1618without modification. 1619 1620 <p>GCC does not currently build with Microsoft's C++ compiler and there 1621are no plans to make it do so. 1622 1623 <p><hr /> 1624 1625<h3 class="heading"><a name="TOC70"></a><a name="os2"></a>OS/2</h3> 1626 1627<p>GCC does not currently support OS/2. However, Andrew Zabolotny has been 1628working on a generic OS/2 port with pgcc. The current code can be found 1629at <a href="http://www.goof.com/pcg/os2/">http://www.goof.com/pcg/os2/</a>. 1630 1631 <p>An older copy of GCC 2.8.1 is included with the EMX tools available at 1632<a href="ftp://ftp.leo.org/pub/comp/os/os2/leo/devtools/emx+gcc/">ftp://ftp.leo.org/pub/comp/os/os2/leo/devtools/emx+gcc/</a>. 1633 1634 <p><hr /> 1635 1636<h3 class="heading"><a name="TOC71"></a><a name="older"></a>Older systems</h3> 1637 1638<p>GCC contains support files for many older (1980s and early 16391990s) Unix variants. For the most part, support for these systems 1640has not been deliberately removed, but it has not been maintained for 1641several years and may suffer from bitrot. 1642 1643 <p>Starting with GCC 3.1, each release has a list of “obsoleted” systems. 1644Support for these systems is still present in that release, but 1645<span class="command">configure</span> will fail unless the <span class="option">--enable-obsolete</span> 1646option is given. Unless a maintainer steps forward, support for these 1647systems will be removed from the next release of GCC. 1648 1649 <p>Support for old systems as hosts for GCC can cause problems if the 1650workarounds for compiler, library and operating system bugs affect the 1651cleanliness or maintainability of the rest of GCC. In some cases, to 1652bring GCC up on such a system, if still possible with current GCC, may 1653require first installing an old version of GCC which did work on that 1654system, and using it to compile a more recent GCC, to avoid bugs in the 1655vendor compiler. Old releases of GCC 1 and GCC 2 are available in the 1656<span class="file">old-releases</span> directory on the <a href="../mirrors.html">GCC mirror sites</a>. Header bugs may generally be avoided using 1657<span class="command">fixincludes</span>, but bugs or deficiencies in libraries and the 1658operating system may still cause problems. 1659 1660 <p>Support for older systems as targets for cross-compilation is less 1661problematic than support for them as hosts for GCC; if an enthusiast 1662wishes to make such a target work again (including resurrecting any of 1663the targets that never worked with GCC 2, starting from the last CVS 1664version before they were removed), patches 1665<a href="../contribute.html">following the usual requirements</a> would be 1666likely to be accepted, since they should not affect the support for more 1667modern targets. 1668 1669 <p>For some systems, old versions of GNU binutils may also be useful, 1670and are available from <span class="file">pub/binutils/old-releases</span> on 1671<a href="http://sources.redhat.com/mirrors.html">sources.redhat.com mirror sites</a>. 1672 1673 <p>Some of the information on specific systems above relates to 1674such older systems, but much of the information 1675about GCC on such systems (which may no longer be applicable to 1676current GCC) is to be found in the GCC texinfo manual. 1677 1678 <p><hr /> 1679 1680<h3 class="heading"><a name="TOC72"></a><a name="elf_005ftargets"></a>all ELF targets (SVR4, Solaris 2, etc.)</h3> 1681 1682<p>C++ support is significantly better on ELF targets if you use the 1683<a href="./configure.html#with-gnu-ld">GNU linker</a>; duplicate copies of 1684inlines, vtables and template instantiations will be discarded 1685automatically. 1686 1687 <p><hr /> 1688<p><a href="./index.html">Return to the GCC Installation page</a> 1689 1690<!-- ***Old documentation****************************************************** --> 1691<!-- ***GFDL******************************************************************** --> 1692<!-- *************************************************************************** --> 1693<!-- Part 6 The End of the Document --> 1694</body></html> 1695 1696