xref: /openbsd/gnu/usr.bin/gcc/INSTALL/specific.html (revision a67f0032)
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 &ldquo;AVR Options&rdquo; 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 &ldquo;TMS320C3x/C4x Options&rdquo; 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 &ldquo;CRIS Options&rdquo; 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&amp;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 &ldquo;large format&rdquo; 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 &ldquo;not a COFF file&rdquo;.  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 &ldquo;small format&rdquo;.  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&amp;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 &ldquo;cvtnum(3c)&rdquo;.  The bug on &ldquo;cvtnum(3c)&rdquo; is
994SR#4701-078451.  Anyway, the attached assembler uses the archive
995library version of &ldquo;cvtnum(3c)&rdquo; 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 &ldquo;does not have gp
1058sections for all it's [sic] sectons [sic]&rdquo;, 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 &ldquo;compiler_dev.hdr&rdquo;
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 &lt;unknown&gt;:  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 &ldquo;obsoleted&rdquo; 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