* toplev.c (lang_independent_f_options): Remove
[official-gcc.git] / gcc / doc / install.texi
blobeefbde406bf9c7a13d916f91ce07e96e8177f2fd
1 \input texinfo.tex    @c -*-texinfo-*-
2 @c @ifnothtml
3 @c %**start of header
4 @setfilename install.info
5 @settitle Installing GCC
6 @setchapternewpage odd
7 @c %**end of header
8 @c @end ifnothtml
10 @c Specify title for specific html page
11 @ifset indexhtml
12 @settitle Installing GCC
13 @end ifset
14 @ifset specifichtml
15 @settitle Host/Target specific installation notes for GCC
16 @end ifset
17 @ifset downloadhtml
18 @settitle Downloading GCC
19 @end ifset
20 @ifset configurehtml
21 @settitle Installing GCC: Configuration
22 @end ifset
23 @ifset buildhtml
24 @settitle Installing GCC: Building
25 @end ifset
26 @ifset testhtml
27 @settitle Installing GCC: Testing
28 @end ifset
29 @ifset finalinstallhtml
30 @settitle Installing GCC: Final installation
31 @end ifset
32 @ifset binarieshtml
33 @settitle Installing GCC: Binaries
34 @end ifset
36 @comment $Id: install.texi,v 1.1.2.18 2001/06/11 07:28:37 jsm28 Exp $
37 @c Copyright (C) 2001 Free Software Foundation, Inc.
38 @c *** Converted to texinfo by Dean Wakerley, dean@wakerley.com
40 @c Include everything if we're not making html
41 @ifnothtml
42 @set indexhtml
43 @set specifichtml
44 @set downloadhtml
45 @set configurehtml
46 @set buildhtml
47 @set testhtml
48 @set finalinstallhtml
49 @set binarieshtml
50 @end ifnothtml
52 @c Part 2 Summary Description and Copyright
53 @ifinfo
55 Copyright @copyright{} 2001 Free Software Foundation, Inc.
56 @end ifinfo
58 @c Part 3 Titlepage and Copyright
59 @titlepage
60 @sp 10
61 @comment The title is printed in a large font.
62 @center @titlefont{Installing GCC}
64 @c The following two commands start the copyright page.
65 @page
66 @vskip 0pt plus 1filll
67 Copyright @copyright{} 2001 Free Software Foundation, Inc.
68 @end titlepage
70 @c Part 4 Top node and Master Menu
71 @ifinfo
72 @node    Top, , , (dir)
73 @comment node-name, next,          Previous, up
75 @menu
76 * Installing GCC::  This document describes the generic installation
77                     procedure for GCC as well as detailing some target
78                     specific installation instructions. 
80 * Specific::        Host/target specific installation notes for GCC.
81 * Binaries::        Where to get pre-compiled binaries.
83 * Concept Index::   This index has two entries.
84 @end menu
85 @end ifinfo
87 @c Part 5 The Body of the Document
88 @c ***Installing GCC**********************************************************
89 @ifinfo
90 @comment node-name,     next,          previous, up
91 @node    Installing GCC, Binaries, , Top
92 @end ifinfo
93 @ifset indexhtml
94 @html
95 <h1 align="center">Installing GCC</h1>
96 @end html
97 @ifnothtml
98 @chapter Installing GCC
99 @end ifnothtml
101 The latest version of this document is always available at
102 @uref{http://gcc.gnu.org/install/,,http://gcc.gnu.org/install/}. 
104 This document describes the generic installation procedure for GCC as well
105 as detailing some target specific installation instructions. 
107 GCC includes several components that previously were separate distributions 
108 with their own installation instructions. This document supersedes all 
109 package specific installation instructions. We provide the component 
110 specific installation information in the source distribution for historical 
111 reference purposes only. 
113 @emph{Before} starting the build/install procedure please check the 
114 @ifnothtml
115 @xref{Specific, host/target specific installation notes}.
116 @end ifnothtml
117 @ifnotinfo
118 @uref{specific.html,,host/target specific installation notes}. 
119 @end ifnotinfo
120 We recommend you browse the entire generic installation instructions before 
121 you proceed.
123 The installation procedure itself is broken into five steps. 
125 @ifinfo
126 @menu
127 * Downloading the source::
128 * Configuration::
129 * Building::
130 * Testing:: (optional)
131 * Final install::
132 @end menu
133 @end ifinfo
134 @ifnotinfo
135 @enumerate
136 @item 
137 @uref{download.html,,Downloading the source}
138 @item 
139 @uref{configure.html,,Configuration} 
140 @item
141 @uref{build.html,,Building} 
142 @item 
143 @uref{test.html,,Testing} (optional) 
144 @item
145 @uref{finalinstall.html,,Final install}
146 @end enumerate
147 @end ifnotinfo
149 Please note that GCC does not support @samp{make uninstall} and probably
150 won't do so in the near future as this would open a can of worms. Instead, 
151 we suggest that you install GCC into a directory of its own and simply
152 remove that directory when you do not need that specific version of GCC
153 any longer. 
155 @html
156 <hr>
158 @end html
159 @ifhtml
160 @uref{./index.html,,Return to the GCC Installation page}
161 @end ifhtml
162 @end ifset
164 @c ***Downloading the source**************************************************
165 @ifinfo
166 @comment node-name,     next,          previous, up
167 @node    Downloading the source, Configuration, , Installing GCC
168 @end ifinfo
169 @ifset downloadhtml
170 @html
171 <h1 align="center">Downloading GCC</h1>
172 @end html
173 @ifnothtml
174 @chapter Downloading GCC
175 @end ifnothtml
176 @cindex Downloading GCC
177 @cindex Downloading the Source
179 GCC is distributed via CVS and FTP tarballs compressed with gzip or
180 bzip2. It is possible to download a full distribution or specific
181 components.
183 Please refer to our @uref{http://gcc.gnu.org/releases.html,,releases web page}
184 for information on how to obtain GCC.
186 The full distribution includes the C, C++, Objective-C, Fortran, Java,
187 and Chill compilers.  The full distribution also includes runtime libraries
188 for C++, Objective-C, Fortran, Java and Chill.  (GCC 3.0 does not
189 include Chill.  Releases before 3.0 do not include the Java runtime
190 library.)  In GCC 3.0 and later versions, GNU compiler testsuites
191 are also included in the full distribution.
193 If you choose to download specific components, you must download the core
194 gcc distribution plus any language specific distributions you wish to
195 use.  The core distribution includes the C language front-end as well as the
196 shared components. Each language has a tarball which includes the language
197 front-end as well as the language runtime (when appropriate).
199 Unpack the core distribution as well as any language specific
200 distributions in the same directory.
202 If you also intend to build binutils (either to upgrade an existing
203 installation or for use in place of the corresponding tools of your
204 OS), unpack the binutils distribution either in the same directory or
205 a separate one.  In the latter case, add symbolic links to any
206 components of the binutils you intend to build alongside the compiler
207 (bfd, binutils, gas, gprof, ld, opcodes,...) to the directory containing
208 the GCC sources.
210 @html
211 <hr>
213 @end html
214 @ifhtml
215 @uref{./index.html,,Return to the GCC Installation page}
216 @end ifhtml
217 @end ifset
219 @c ***Configuration***********************************************************
220 @ifinfo
221 @comment node-name,     next,          previous, up
222 @node    Configuration, Building, Downloading the source, Installing GCC
223 @end ifinfo
224 @ifset configurehtml
225 @html
226 <h1 align="center">Installing GCC: Configuration</h1>
227 @end html
228 @ifnothtml
229 @chapter Installing GCC: Configuration
230 @end ifnothtml
231 @cindex Configuration
232 @cindex Installing GCC: Configuration
234 Like most GNU software, GCC must be configured before it can be built.
235 This document describes the recommended configuration procedure
236 for both native and cross targets.
238 We use @var{srcdir} to refer to the toplevel source directory for
239 GCC; we use @var{objdir} to refer to the toplevel build/object directory.
241 If you obtained the sources via CVS, @var{srcdir} must refer to the top
242 @file{gcc} directory, the one where the @file{MAINTAINERS} can be found,
243 and not its @file{gcc} subdirectory, otherwise the build will fail.
245 First, we @strong{highly} recommend that GCC be built into a
246 separate directory than the sources which does @strong{not} reside
247 within the source tree.  This is how we generally build GCC; building
248 where @var{srcdir} == @var{objdir} should still work, but doesn't
249 get extensive testing; building where @var{objdir} is a subdirectory
250 of @var{srcdir} is unsupported.
252 If you have built GNU CC previously in the same directory for a
253 different target machine, do @samp{make distclean} to delete all files
254 that might be invalid.  One of the files this deletes is
255 @file{Makefile}; if @samp{make distclean} complains that @file{Makefile}
256 does not exist, it probably means that the directory is already suitably
257 clean.  However, with the recommended method of building in a separate
258 @var{objdir}, you should simply use a different @var{objdir} for each
259 target.
261 Second, when configuring a native system, either @command{cc} or
262 @command{gcc} must be in your path or you must set @env{CC} in
263 your environment before running configure.  Otherwise the configuration
264 scripts may fail.
266 To configure GCC:
268 @example
269    % mkdir @var{objdir}
270    % cd @var{objdir}
271    % @var{srcdir}/configure [@var{target}] [@var{options}]
272 @end example
275 @heading Target specification
276 @itemize @bullet
277 @item
278 GCC has code to correctly determine the correct value for @var{target}
279 for nearly all native systems.  Therefore, we highly recommend you not 
280 provide a configure target when configuring a native compiler.
282 @item
283 @var{target} must be specified as @option{--target=}@var{target}
284 when configuring a cross compiler; examples of valid targets would be 
285 i960-rtems, m68k-coff, sh-elf, etc.
287 @item
288 Specifying just @var{target} instead of @option{--target=}@var{target}
289 implies that the host defaults to @var{target}.
290 @end itemize
293 @heading Options specification
295 Use @var{options} to override several configure time options for
296 GCC.  A partial list of supported @var{options}:
298 @table @code
299 @item --prefix=@var{dirname}
300 Specify the toplevel installation
301 directory.  This is the recommended way to install the tools into a directory
302 other than the default.  The toplevel installation directory defaults to
303 @code{/usr/local}.
305 We @strong{highly} recommend against @var{dirname} being the same or a
306 subdirectory of @var{objdir} or vice versa.
308 These additional options control where certain parts of the distribution
309 are installed.  Normally you should not need to use these options.
310 @table @code
312 @item --with-gxx-include-dir=@var{dirname}
313 Specify
314 the installation directory for g++ header files.  The default is
315 @file{@var{prefix}/include/g++-v3}.
317 @end table
319 @item --with-local-prefix=@var{dirname}
320 Specify the
321 installation directory for local include files.  The default is
322 @file{/usr/local}.  Specify this option if you want the compiler to
323 search directory @file{@var{dirname}/include} for locally installed
324 header files @emph{instead} of @file{/usr/local/include}.
326 You should specify @option{--with-local-prefix} @strong{only} if your
327 site has a different convention (not @file{/usr/local}) for where to put
328 site-specific files.
330 The default value for @option{--with-local-prefix} is @file{/usr/local}
331 regardless of the value of @option{--prefix}.  Specifying
332 @option{--prefix} has no effect on which directory GCC searches for
333 local header files.  This may seem counterintuitive, but actually it is
334 logical.
336 The purpose of @option{--prefix} is to specify where to @emph{install
337 GCC}.  The local header files in @file{/usr/local/include}---if you put
338 any in that directory---are not part of GCC.  They are part of other
339 programs---perhaps many others.  (GCC installs its own header files in
340 another directory which is based on the @option{--prefix} value.)
342 @strong{Do not} specify @file{/usr} as the @option{--with-local-prefix}!
343 The directory you use for @option{--with-local-prefix} @strong{must not}
344 contain any of the system's standard header files.  If it did contain
345 them, certain programs would be miscompiled (including GNU Emacs, on
346 certain targets), because this would override and nullify the header
347 file corrections made by the @code{fixincludes} script.
349 Indications are that people who use this option use it based on mistaken
350 ideas of what it is for.  People use it as if it specified where to
351 install part of GCC.  Perhaps they make this assumption because
352 installing GCC creates the directory.
354 @item --enable-shared
355 Build shared versions of the
356 C++ runtime libraries if supported. This is the default on most
357 systems. Use @option{--disable-shared} for static libraries. Note that
358 up to the gcc version 2.95.x series, static libraries were the default
359 on all systems.
361 @item @anchor{with-gnu-as}--with-gnu-as
362 Specify that the compiler should assume that the
363 assembler it finds is the GNU assembler. However, this does not modify
364 the rules to find an assembler and will result in confusion if found
365 assembler is not actually the GNU assembler.  If you have more than one
366 assembler installed on your system, you may want to use this option in
367 connection with @option{--with-as=@file{/path/to/gas}}.
369 @item --with-as=@file{/path/to/as}
370 Specify that the
371 compiler should use the assembler pointed to by @var{pathname}, rather
372 than the one found by the standard rules to find an assembler, which
373 are:
374 @itemize @bullet
375 @item
376 Check the
377 @file{@var{exec_prefix}/lib/gcc-lib/@var{target}/@var{version}}
378 directory, where @var{exec_prefix} defaults to @var{prefix} which
379 defaults to @file{/usr/local} unless overridden by the
380 @option{--prefix=/pathname} switch described above. @var{target} is the
381 target system triple, such as @var{sparc-sun-solaris2.7}, and
382 @var{version} denotes the GCC version, such as 2.95.2.
383 @item
384 Check operating system specific directories (e.g. @file{/usr/ccs/bin} on
385 Sun Solaris).
386 @end itemize
387 Note that these rules do not check for the value of @env{PATH}. You may
388 want to use @option{--with-as} if no assembler is installed in the
389 directories listed above, or if you have multiple assemblers installed
390 and want to choose one that is not found by the above rules.
392 @item @anchor{with-gnu-ld}--with-gnu-ld
393 Same as @uref{#with-gnu-as,,@option{--with-gnu-as}}
394 but for linker.
397 @item --with-ld=@file{/path/to/ld}
398 Same as
399 @option{--with-as}, but for the linker.
401 @item --with-stabs
402 Specify that stabs debugging
403 information should be used instead of whatever format the host normally
404 uses.  Normally GCC uses the same debug format as the host system.
406 @item --enable-multilib
407 Specify that multiple target
408 libraries should be built to support different target variants, calling
409 conventions, etc.  This is the default.
411 @item --enable-threads
412 Specify that the target
413 supports threads.  This affects the Objective-C compiler and runtime
414 library, and exception handling for other languages like C++ and Java.
415 On some systems, this is the default.
417 @item --enable-threads=@var{lib}
418 Specify that
419 @var{lib} is the thread support library.  This affects the Objective-C
420 compiler and runtime library, and exception handling for other languages
421 like C++ and Java.  The possibilities for @var{lib} are:
423 @table @code
424 @item aix
425 AIX thread support.
426 @item dce
427 DCE thread support.
428 @item decosf1
429 DEC OSF/1 thread support.
430 @item irix
431 SGI IRIX thread support.
432 @item mach
433 Generic MACH thread support, known to work on NEXTSTEP.
434 @item os2
435 IBM OS/2 thread support.
436 @item posix
437 Generix POSIX thread support.
438 @item pthreads
439 Same as @samp{posix}.
440 @item single
441 Disable thread support, should work for all platforms.
442 @item solaris
443 SUN Solaris thread support.
444 @item vxworks
445 VxWorks thread support.
446 @item win32
447 Microsoft Win32 API thread support.
448 @end table
450 @item --with-cpu=@var{cpu}
451 Specify which cpu variant the
452 compiler should generate code for by default.  This is currently
453 only supported on the some ports, specifically arm, powerpc, and
454 SPARC. If configure does not recognize the model name (e.g. arm700,
455 603e, or ultrasparc) you provide, please check the configure script
456 for a complete list of supported models.
458 @item --enable-target-optspace
459 Specify that target
460 libraries should be optimized for code space instead of code speed.
461 This is the default for the m32r platform.
463 @item --enable-cpp
464 Specify that a shell script which
465 emulates traditional cpp functionality should be installed.
467 @item --enable-maintainer-mode
468 The build rules that
469 regenerate the GCC master message catalog @code{gcc.pot} are normally
470 disabled. This is because it can only be rebuilt if the complete source
471 tree is present. If you have changed the sources and want to rebuild the
472 catalog, configuring with @option{--enable-maintainer-mode} will enable
473 this. Note that you need a recent version of the @code{gettext} tools
474 to do so.
476 @item --without-fast-fixincludes
477 Specify that the
478 old, slower method of fixing the system header files should be used.
479 EGCS 1.1.x and older releases default to the slow version. GCC 2.95 and
480 newer releases will default to the fast version.
482 @item --enable-version-specific-runtime-libs
483 Specify
484 that runtime libraries should be installed in the compiler specific
485 subdirectory (@file{@var{libsubdir}}) rather than the usual places.  In
486 addition, libstdc++'s include files will be installed in
487 @file{@var{libsubdir}/include/g++} unless you overruled it by using
488 @option{--with-gxx-include-dir=}@var{dirname}.  Using this option is
489 particularly useful if you intend to use several versions of GCC in
490 parallel. This is currently supported by @option{libf2c} and
491 @option{libstdc++}.
493 @item --enable-languages=@var{lang1},@var{lang2},@dots{}
494 Specify that only a particular subset of compilers and
495 their runtime libraries should be built. For a list of valid values for
496 @var{lang}@option{x} you can issue the following command in the
497 @file{gcc} directory of your GCC source tree:@* @samp{grep language=
498 */config-lang.in}@* Currently, you can use any of the following:
499 @code{c++}, @code{f77}, @code{java} and @code{objc}.
500 @code{CHILL} is not currently maintained, and will almost
501 certainly fail to compile.  Note that this switch does not work with
502 EGCS 1.1.2 or older versions of egcs.  It is supported in GCC 2.95
503 and newer versions.@*
504 If you do not pass this flag, all languages available in the @file{gcc}
505 sub-tree will be configured.  Re-defining LANGUAGES when calling
506 @samp{make bootstrap} @strong{does not} work anymore, as those
507 language sub-directories might not have been configured!
509 @item --disable-libgcj
510 Specify that the run-time libraries
511 used by GCJ should not be built.  This is useful in case you intend
512 to use GCJ with some other run-time, or you're going to install it
513 separately, or it just happens not to build on your particular
514 machine.  In general, if the Java front-end is enabled, the GCJ
515 libraries will be enabled too, unless they're known to not work on
516 the target platform.  If GCJ is enabled but libgcj isn't built, you
517 may need to port it; in this case, before modifying the top-level
518 configure.in so that libgcj is enabled by default on this platform,
519 you may use @option{--enable-libgcj} to override the default.
521 @item --with-dwarf2
522 Specify that the compiler should
523 use DWARF2 debugging information as the default.
525 @item --enable-win32-registry
526 @itemx --enable-win32-registry=@var{KEY}
527 @itemx --disable-win32-registry
528 The @samp{--enable-win32-registry} option enables Windows-hosted GCC
529 to look up installations paths in the registry using the following key:
531 @smallexample
532 @code{HKEY_LOCAL_MACHINE\SOFTWARE\Free Software Foundation\<KEY>}
533 @end smallexample
535 <KEY> defaults to GCC version number, and can be overridden by the
536 @code{--enable-win32-registry=KEY} option. Vendors and distributors
537 who use custom installers are encouraged to provide a different key,
538 perhaps one comprised of vendor name and GCC version number, to
539 avoid conflict with existing installations. This feature is enabled
540 by default, and can be disabled by @code{--disable-win32-registry}
541 option.  This option has no effect on the other hosts.
543 @item --nfp
544 Specify that the machine does not have a floating point unit.  This
545 option only applies to @samp{m68k-sun-sunos@var{n}} and
546 @samp{m68k-isi-bsd}.  On any other system, @samp{--nfp} has no effect.
548 @item --enable-checking
549 @itemx --enable-checking=@var{list}
550 When you specify this option, the compiler is built to perform checking
551 of tree node types when referencing fields of that node, and some other
552 internal consistency checks.  This does not change the generated code,
553 but adds error checking within the compiler.  This will slow down the
554 compiler and may only work properly if you are building the compiler
555 with GNU C.  This is on by default when building from CVS or snapshots,
556 but off for releases.  More control over the checks may be had by
557 specifying @var{list}; the categories of checks available are
558 @samp{misc}, @samp{tree}, @samp{gc}, @samp{rtl} and @samp{gcac}.  The
559 default when @var{list} is not specified is @samp{misc,tree,gc}; the
560 checks @samp{rtl} and @samp{gcac} are very expensive.
562 @item --enable-nls
563 @itemx --disable-nls
564 The @samp{--enable-nls} option enables Native Language Support (NLS),
565 which lets GCC output diagnostics in languages other than American
566 English. Native Language Support is enabled by default if not doing a
567 canadian cross build. The @samp{--disable-nls} option disables NLS.
569 @item --with-included-gettext
570 If NLS is enbled, the @samp{--with-included-gettext} option causes the build
571 procedure to prefer its copy of GNU @code{gettext}.
573 @item --with-catgets
574 If NLS is enabled, and if the host lacks @code{gettext} but has the
575 inferior @code{catgets} interface, the GCC build procedure normally
576 ignores @code{catgets} and instead uses GCC's copy of the GNU
577 @code{gettext} library.  The @samp{--with-catgets} option causes the
578 build procedure to use the host's @code{catgets} in this situation.
579 @end table
581 Some options which only apply to building cross compilers:
582 @table @code
583 @item --with-headers=@var{dir}
584 Specifies a directory
585 which has target include files.
586 @emph{This options is required} when building a cross
587 compiler, if @file{@var{prefix}/@var{target}/sys-include} doesn't pre-exist.
588 These include files will be copied into the @file{gcc} install directory.
589 Fixincludes will be run on these files to make them compatible with
590 @command{gcc}.
591 @item --with-libs=``@var{dir1} @var{dir2} @dots{} @var{dirN}''
592 Specifies a list of directories which contain the target runtime
593 libraries.  These libraries will be copied into the @file{gcc} install
594 directory.
595 @item --with-newlib
596 Specifies that ``newlib'' is
597 being used as the target C library.  This causes @code{__eprintf} to be
598 omitted from libgcc.a on the assumption that it will be provided by
599 newlib.
600 @end table
602 Note that each @option{--enable} option has a corresponding
603 @option{--disable} option and that each @option{--with} option has a
604 corresponding @option{--without} option.
606 @html
607 <hr>
609 @end html
610 @ifhtml
611 @uref{./index.html,,Return to the GCC Installation page}
612 @end ifhtml
613 @end ifset
615 @c ***Building****************************************************************
616 @ifinfo
617 @comment node-name,     next,          previous, up
618 @node    Building, Testing, Configuration, Installing GCC
619 @end ifinfo
620 @ifset buildhtml
621 @html
622 <h1 align="center">Installing GCC: Building</h1>
623 @end html
624 @ifnothtml
625 @chapter Building
626 @end ifnothtml
627 @cindex Installing GCC: Building
629 Now that GCC is configured, you are ready to build the compiler and
630 runtime libraries.
632 We @strong{highly} recommend that GCC be built using GNU make;
633 other versions may work, then again they might not.
635 (For example, many broken versions of make will fail if you use the
636 recommended setup where @var{objdir} is different from @var{srcdir}.
637 Other broken versions may recompile parts of the compiler when
638 installing the compiler.)
640 Some commands executed when making the compiler may fail (return a
641 non-zero status) and be ignored by @code{make}.  These failures, which
642 are often due to files that were not found, are expected, and can safely
643 be ignored.
645 It is normal to have compiler warnings when compiling certain files.
646 Unless you are a GCC developer, you can generally ignore these warnings
647 unless they cause compilation to fail.
649 On certain old systems, defining certain environment variables such as
650 @code{CC} can interfere with the functioning of @code{make}.
652 If you encounter seemingly strange errors when trying to build the
653 compiler in a directory other than the source directory, it could be
654 because you have previously configured the compiler in the source
655 directory.  Make sure you have done all the necessary preparations.
657 If you build GCC on a BSD system using a directory stored in an old System
658 V file system, problems may occur in running @code{fixincludes} if the
659 System V file system doesn't support symbolic links.  These problems
660 result in a failure to fix the declaration of @code{size_t} in
661 @file{sys/types.h}.  If you find that @code{size_t} is a signed type and
662 that type mismatches occur, this could be the cause.
664 The solution is not to use such a directory for building GCC.
666 When building from CVS or snapshots, or if you modify parser sources,
667 you need the Bison parser generator installed.  Any version 1.25 or
668 later should work; older versions may also work.  If you do not modify
669 parser sources, releases contain the Bison-generated files and you do
670 not need Bison installed to build them.
672 When building from CVS or snapshots, or if you modify Texinfo
673 documentation, you need version 4.0 or later of Texinfo installed if you
674 want Info documentation to be regenerated.  Releases contain Info
675 documentation pre-built for the unmodified documentation in the release.
677 @section Building a native compiler
679 For a native build issue the command @samp{make bootstrap}.  This 
680 will build the entire GCC system, which includes the following steps:
682 @itemize @bullet
683 @item
684 Build host tools necessary to build the compiler such as texinfo, bison,
685 gperf.
687 @item
688 Build target tools for use by the compiler such as binutils (bfd,
689 binutils, gas, gprof, ld, and opcodes)@*
690 if they have been individually linked 
691 or moved into the top level GCC source tree before configuring.
693 @item
694 Perform a 3-stage bootstrap of the compiler.
696 @item
697 Perform a comparison test of the stage2 and stage3 compilers.
699 @item
700 Build runtime libraries using the stage3 compiler from the previous step.
702 @end itemize
704 If you are short on disk space you might consider @samp{make
705 bootstrap-lean} instead.  This is identical to @samp{make
706 bootstrap} except that object files from the stage1 and
707 stage2 of the 3-stage bootstrap of the compiler are deleted as
708 soon as they are no longer needed.
711 If you want to save additional space during the bootstrap and in
712 the final installation as well, you can build the compiler binaries
713 without debugging information with @samp{make CFLAGS='-O' LIBCFLAGS='-g
714 -O2' LIBCXXFLAGS='-g -O2 -fno-implicit-templates' bootstrap}.  This will save
715 roughly 40% of disk space both for the bootstrap and the final installation.
716 (Libraries will still contain debugging information.)
718 If you wish to use non-default flags when compiling the stage2 and
719 stage3 compile, set @code{BOOT_CFLAGS} on the command line when doing
720 @samp{make bootstrap}.  Non-default optimization flags are less well
721 tested here than the default of @samp{-g -O2}, but should still work.
722 In a few cases, you may find that you need to specify special flags such
723 as @option{-msoft-float} here to complete the bootstrap; or, if the
724 native compiler miscompiles the stage1 compiler, you may need to work
725 around this, by choosing @code{BOOT_CFLAGS} to avoid the parts of the
726 stage1 compiler that were miscompiled, or by using @samp{make
727 bootstrap4} to increase the number of stages of bootstrap.
729 If you used the flag @option{--enable-languages=...} to restrict
730 the compilers to be built, only those you've actually enabled will be
731 built. This will of course only build those runtime libraries, for
732 which the particular compiler has been built.  Please note,
733 that re-defining LANGUAGES when calling @samp{make bootstrap}
734 @strong{does not} work anymore!
736 If the comparison of stage2 and stage3 fails, this normally indicates
737 that the stage 2 compiler has compiled GCC incorrectly, and is therefore
738 a potentially serious bug which you should investigate and report.  (On
739 a few systems, meaningful comparison of object files is impossible; they
740 always appear ``different''.  If you encounter this problem, you will
741 need to disable comparison in the @file{Makefile}.)
743 @section Building a cross compiler
745 We recommend reading the
746 @uref{http://www.objsw.com/CrossGCC/,,crossgcc FAQ}
747 for information about building cross compilers.
749 When building a cross compiler, it is not generally possible to do a
750 3-stage bootstrap of the compiler.  This makes for an interesting problem
751 as parts of GCC can only be built with GCC.
753 To build a cross compiler, we first recommend building and installing a
754 native compiler.  You can then use the native GCC compiler to build the
755 cross compiler.
757 Assuming you have already installed a native copy of GCC and configured
758 your cross compiler, issue the command @samp{make}, which performs the
759 following steps:
761 @itemize @bullet
762 @item
763 Build host tools necessary to build the compiler such as texinfo, bison,
764 gperf.
766 @item
767 Build target tools for use by the compiler such as binutils (bfd,
768 binutils, gas, gprof, ld, and opcodes)
769 if they have been individually linked or moved into the top level GCC source
770 tree before configuring.
772 @item
773 Build the compiler (single stage only).
775 @item
776 Build runtime libraries using the compiler from the previous step.
777 @end itemize
779 Note that if an error occurs in any step the make process will exit.
781 @section Building in parallel
783 If you have a multiprocessor system you can use @samp{make bootstrap
784 MAKE="make -j 2" -j 2} or just @samp{make -j 2 bootstrap}
785 for GNU Make 3.79 and above instead of just @samp{make bootstrap}
786 when building GCC.  You can use a bigger number instead of two if
787 you like.  In most cases, it won't help to use a number bigger than
788 the number of processors in your machine.
790 @html
791 <hr>
793 @end html
794 @ifhtml
795 @uref{./index.html,,Return to the GCC Installation page}
796 @end ifhtml
797 @end ifset
799 @c ***Testing*****************************************************************
800 @ifinfo
801 @comment node-name,     next,          previous, up
802 @node    Testing, Final install, Building, Installing GCC
803 @end ifinfo
804 @ifset testhtml
805 @html
806 <h1 align="center">Installing GCC: Testing</h1>
807 @end html
808 @ifnothtml
809 @chapter Installing GCC: Testing
810 @end ifnothtml
811 @cindex Testing
812 @cindex Installing GCC: Testing
813 @cindex Testsuite
815 @strong{Please note that this is only applicable 
816 to current development versions of GCC and GCC 3.0 or later. 
817 GCC 2.95.x does not come with a testsuite.}
819 Before you install GCC, you might wish to run the testsuite. This
820 step is optional and may require you to download additional software.
822 First, you must have @uref{download.html,,downloaded the testsuites}. 
823 The full distribution contains testsuites; only if you downloaded the 
824 ``core'' compiler plus any front ends, you do not have the testsuites.
826 Second, you must have a @uref{http://www.gnu.org/software/dejagnu/,,current version of DejaGnu} installed;
827 dejagnu 1.3 is not sufficient.
829 Now you may need specific preparations:
831 @itemize @bullet
832 @item
833 In order to run the libio tests in GCC 2.95 and earlier versions of GCC
834 on targets which do not fully
835 support Unix/POSIX commands (e.g. Cygwin), the references to the dbz
836 directory have to be deleted from @code{libio/configure.in}.
838 @item
839 The following environment variables may need to be set appropriately, as in
840 the following example (which assumes that DejaGnu has been installed
841 under @code{/usr/local}):
843 @example
844      TCL_LIBRARY = /usr/local/share/tcl8.0
845      DEJAGNULIBS = /usr/local/share/dejagnu
846 @end example
848 On systems such as Cygwin, these paths are required to be actual
849 paths, not mounts or links; presumably this is due to some lack of
850 portability in the DejaGnu code.
852 If the directories where @command{runtest} and @command{expect} were
853 installed are in the @env{PATH}, it should not be necessary to set these
854 environment variables.
856 @end itemize
858 Finally, you can run the testsuite (which may take a long time):
859 @example
860      cd @var{objdir}; make -k check
861 @end example
863 The testing process will try to test as many components in the GCC
864 distribution as possible, including the C, C++, Objective C and Fortran
865 compilers as well as the C++ and Java runtime libraries.
867 @section How can I run the test suite on selected tests?
869 As a first possibility to cut down the number of tests that are run it is
870 possible to use @samp{make check-gcc} or @samp{make check-g++}
871 in the gcc subdirectory of the object directory. To further cut down the
872 tests the following is possible:
874 @example
875     make check-gcc RUNTESTFLAGS="execute.exp <other options>"
876 @end example
878 This will run all gcc execute tests in the testsuite.
880 @example
881     make check-g++ RUNTESTFLAGS="old-deja.exp=9805* <other options>"
882 @end example
884 This will run the g++ "old-deja" tests in the testsuite where the filename
885 matches 9805*.
887 The *.exp files are located in the testsuite directories of the GCC
888 source, the most important ones being compile.exp, execute.exp, dg.exp
889 and old-deja.exp. To get a list of the possible *.exp files, pipe the
890 output of @samp{make check} into a file and look at the
891 @samp{Running ...  .exp} lines.
893 @section How to interpret test results
895 After the testsuite has run you'll find various *.sum and *.log
896 files in the testsuite subdirectories. The *.log files contain a
897 detailed log of the compiler invocations and the corresponding
898 results, the *.sum files summarize the results. These summaries list
899 all the tests that have been run with a corresponding status code:
901 @itemize @bullet
902 @item
903 PASS: the test passed as expected
904 @item
905 XPASS: the test unexpectedly passed
906 @item
907 FAIL: the test unexpectedly failed
908 @item
909 XFAIL: the test failed as expected
910 @item
911 UNSUPPORTED: the test is not supported on this platform
912 @item
913 ERROR: the testsuite detected an error
914 @item
915 WARNING: the testsuite detected a possible problem
916 @end itemize
918 It is normal for some tests to report unexpected failures.  At the
919 current time our testing harness does not allow fine grained control
920 over whether or not a test is expected to fail.  We expect to fix this
921 problem in future releases.
924 @section Submitting test results
926 If you want to report the results to the GCC project, use the
927 @code{contrib/test_summary} shell script. Start it in the @var{objdir} with
929 @example
930     @var{srcdir}/contrib/test_summary -p your_commentary.txt -m gcc-testresults@@gcc.gnu.org |sh
931 @end example
933 This script uses the @code{Mail} program to send the results, so
934 make sure it is in your @env{PATH}. The file @file{your_commentary.txt} is
935 prepended to the testsuite summary and should contain any special
936 remarks you have on your results or your build environment. Please
937 do not edit the testsuite result block or the subject line, as these
938 messages are automatically parsed and presented at the 
939 @uref{http://gcc.gnu.org/testresults/,,GCC testresults} web
940 page.  Here you can also gather information on how specific tests
941 behave on different platforms and compare them with your results. A
942 few failing testcases are possible even on released versions and you
943 should look here first if you think your results are unreasonable.
945 @end ifset
947 @c ***Final install***********************************************************
948 @ifinfo
949 @comment node-name,     next,          previous, up
950 @node    Final install, , Testing, Installing GCC
951 @end ifinfo
952 @ifset finalinstallhtml
953 @html
954 <h1 align="center">Installing GCC: Final installation</h1>
955 @end html
956 @ifnothtml
957 @chapter Installing GCC: Final installation
958 @end ifnothtml
960 Now that GCC has been built and tested, you can install it with
961 @samp{cd @var{objdir}; make install}.
963 That step completes the installation of GCC; user level binaries can
964 be found in @file{@var{prefix}/bin} where @var{prefix} is the value you
965 specified with the @option{--prefix} to configure (or @file{/usr/local}
966 by default).
968 If you don't mind, please quickly review the 
969 @uref{http://gcc.gnu.org/gcc-3.0/buildstat.html,,build status page}.
970 If your system is not listed, send a note to
971 @uref{mailto:gcc@@gcc.gnu.org,,gcc@@gcc.gnu.org} indicating
972 that you successfully built and installed GCC.
974 Include the output from running @file{@var{srcdir}/config.guess}.  (Do
975 not send us the config.guess file itself, just the one-line output from
976 running it!)
978 If you find a bug, please report it following our
979 @uref{../bugs.html,,bug reporting guidelines}.
981 @html
982 <hr>
984 @end html
985 @ifhtml
986 @uref{./index.html,,Return to the GCC Installation page}
987 @end ifhtml
988 @end ifset
990 @c ***Binaries****************************************************************
991 @ifinfo
992 @comment node-name,     next,          previous, up
993 @node    Binaries, Specific, Installing GCC, Top
994 @end ifinfo
995 @ifset binarieshtml
996 @html
997 <h1 align="center">Installing GCC: Binaries</h1>
998 @end html
999 @ifnothtml
1000 @chapter Installing GCC: Binaries
1001 @end ifnothtml
1002 @cindex Binaries
1003 @cindex Installing GCC: Binaries
1005 We are often asked about pre-compiled versions of GCC. While we cannot
1006 provide these for all platforms, below you'll find links to binaries for
1007 various platforms where creating them by yourself is not easy due to various
1008 reasons.
1010 Please note that we did not create these binaries, nor do we
1011 support them.  If you have any problems installing them, please
1012 contact their makers.
1014 @itemize
1015 @item
1016 AIX:
1017 @itemize
1018 @item
1019 @uref{http://www-frec.bull.com/docs/download.htm,,Bull's Freeware and
1020 Shareware Archive for AIX};
1022 @item
1023 @uref{http://aixpdlib.seas.ucla.edu,,UCLA Software Library for AIX};
1024 @end itemize
1026 @item
1027 DOS - @uref{http://www.delorie.com/djgpp/,,DJGPP};
1029 @item
1030 @uref{http://hpux.cae.wisc.edu/,,HP-UX Porting Center};
1032 @item
1033 @uref{http://www.sco.com/skunkware/devtools/index.html#gcc,,SCO
1034 OpenServer/Unixware};
1036 @item
1037 Solaris (SPARC, Intel) - @uref{http://www.sunfreeware.com/,,Sunfreeware};
1039 @item
1040 SGI - @uref{http://freeware.sgi.com/,,SGI Freeware};
1042 @item
1043 Windows 95, 98, and NT:
1044 @itemize
1045 @item
1046 The @uref{http://sources.redhat.com/cygwin/,,Cygwin} project;
1047 @item
1048 @uref{http://www.xraylith.wisc.edu/~khan/software/gnu-win32/,,GNU Win32}
1049 related projects by Mumit Khan.
1050 @end itemize
1052 @item
1053 @uref{ftp://ftp.thewrittenword.com/packages/free/by-name/gcc-2.95.2/,,The
1054 Written Word} offers binaries for Solaris 2.5.1, 2.6, 2.7/SPARC, 2.7/Intel,
1055 IRIX 6.2, 6.5, Digital UNIX 4.0D, HP-UX 10.20, and HP-UX 11.00.
1057 @item
1058 Hitachi H8/300[HS] - 
1059 @uref{http://h8300-hms.sourceforge.net/,,GNU Development Tools for the 
1060 Hitachi H8/300[HS] Series}
1062 @end itemize
1064 In addition to those specific offerings, you can get a binary
1065 distribution CD-ROM from the
1066 @uref{http://www.fsf.org/order/order.html,,Free Software Foundation}. 
1067 It contains binaries for a number of platforms, and
1068 includes not only GCC, but other stuff as well. The current CD does
1069 not contain the latest version of GCC, but it should allow
1070 bootstrapping the compiler. An updated version of that disk is in the
1071 works.
1073 @html
1074 <hr>
1076 @end html
1077 @ifhtml
1078 @uref{./index.html,,Return to the GCC Installation page}
1079 @end ifhtml
1080 @end ifset
1082 @c ***Specific****************************************************************
1083 @ifinfo
1084 @comment node-name,     next,          previous, up
1085 @node    Specific, Concept Index, Binaries, Top
1086 @end ifinfo
1087 @ifset specifichtml
1088 @html
1089 <h1 align="center">Host/target specific installation notes for GCC</h1>
1090 @end html
1091 @ifnothtml
1092 @chapter Host/target specific installation notes for GCC
1093 @end ifnothtml
1094 @cindex Specific
1095 @cindex Specific installation notes
1096 @cindex Target specific installation
1097 @cindex Host specific installation
1098 @cindex Target specific installation notes
1100 Please read this document carefully @emph{before} installing the
1101 GNU Compiler Collection on your machine.
1103 @ifhtml
1104 @itemize
1105 @item
1106 @uref{#1750a-*-*,,1750a-*-*}
1107 @item
1108 @uref{#a29k,,a29k}
1109 @item
1110 @uref{#a29k-*-bsd,,a29k-*-bsd}
1111 @item
1112 @uref{#alpha*-*-*,,alpha*-*-*}
1113 @item
1114 @uref{#alpha-*-osf1,,alpha-*-osf1}
1115 @item
1116 @uref{#alpha*-dec-osf*,,alpha*-dec-osf*}
1117 @item
1118 @uref{#arc-*-elf,,arc-*-elf}
1119 @item
1120 @uref{#arm-*-aout,,arm-*-aout}
1121 @item
1122 @uref{#arm-*-elf,,arm-*-elf}
1123 @item
1124 @uref{#arm*-*-linux-gnu,,arm*-*-linux-gnu}
1125 @item
1126 @uref{#arm-*-riscix,,arm-*-riscix}
1127 @item
1128 @uref{#avr,,avr}
1129 @item
1130 @uref{#decstation-*,,decstation-*}
1131 @item
1132 @uref{#dos,,DOS}
1133 @item
1134 @uref{#dsp16xx,,dsp16xx}
1135 @item
1136 @uref{#elxsi-elxsi-bsd,,elxsi-elxsi-bsd}
1137 @item
1138 @uref{#h8300-hms,,h8300-hms}
1139 @item
1140 @uref{#hppa*-hp-hpux*,,hppa*-hp-hpux*}
1141 @item
1142 @uref{#hppa*-hp-hpux9,,hppa*-hp-hpux9}
1143 @item
1144 @uref{#hppa*-hp-hpux10,,hppa*-hp-hpux10}
1145 @item
1146 @uref{#hppa*-hp-hpux11,,hppa*-hp-hpux11}
1147 @item
1148 @uref{#*-*-freebsd*,,*-*-freebsd*}
1149 @item
1150 @uref{#i370-*-*,,i370-*-*}
1151 @item
1152 @uref{#*-*-linux-gnu,,*-*-linux-gnu}
1153 @item
1154 @uref{#ix86-*-linux*oldld,,i?86-*-linux*oldld}
1155 @item
1156 @uref{#ix86-*-linux*aout,,i?86-*-linux*aout}
1157 @item
1158 @uref{#ix86-*-linux*,,i?86-*-linux*}
1159 @item
1160 @uref{#ix86-*-sco,,i?86-*-sco}
1161 @item
1162 @uref{#ix86-*-sco3.2v4,,i?86-*-sco3.2v4}
1163 @item
1164 @uref{#ix86-*-sco3.2v5*,,i?86-*-sco3.2v5*}
1165 @item
1166 @uref{#ix86-*-solaris*,,i?86-*-solaris*}
1167 @item
1168 @uref{#ix86-*-udk,,i?86-*-udk}
1169 @item
1170 @uref{#ix86-*-isc,,i?86-*-isc}
1171 @item
1172 @uref{#ix86-*-esix,,i?86-*-esix}
1173 @item
1174 @uref{#ix86-ibm-aix,,i?86-ibm-aix}
1175 @item
1176 @uref{#ix86-sequent-bsd,,i?86-sequent-bsd}
1177 @item
1178 @uref{#ix86-sequent-ptx1*,,i?86-sequent-ptx1*, i?86-sequent-ptx2*}
1179 @item
1180 @uref{#ix86-*-sysv3*,,i?86-*-sysv3*}
1181 @item
1182 @uref{#i860-intel-osf*,,i860-intel-osf*}
1183 @item
1184 @uref{#*-lynx-lynxos,,*-lynx-lynxos}
1185 @item
1186 @uref{#*-ibm-aix*,,*-ibm-aix*}
1187 @item
1188 @uref{#m32r-*-elf,,m32r-*-elf}
1189 @item
1190 @uref{#m68000-hp-bsd,,m68000-hp-bsd}
1191 @item
1192 @uref{#m6811-elf,,m6811-elf}
1193 @item
1194 @uref{#m6812-elf,,m6812-elf}
1195 @item
1196 @uref{#m68k-altos,,m68k-altos}
1197 @item
1198 @uref{#m68k-apple-aux,,m68k-apple-aux}
1199 @item
1200 @uref{#m68k-att-sysv,,m68k-att-sysv}
1201 @item
1202 @uref{#m68k-bull-sysv,,m68k-bull-sysv}
1203 @item
1204 @uref{#m68k-crds-unox,,m68k-crds-unox}
1205 @item
1206 @uref{#m68k-hp-hpux,,m68k-hp-hpux}
1207 @item
1208 @uref{#m68k-*-nextstep*,,m68k-*-nextstep*}
1209 @item
1210 @uref{#m68k-ncr-*,,m68k-ncr-*}
1211 @item
1212 @uref{#m68k-sun,,m68k-sun}
1213 @item
1214 @uref{#m68k-sun-sunos4.1.1,,m68k-sun-sunos4.1.1}
1215 @item
1216 @uref{#m88k-*-svr3,,m88k-*-svr3}
1217 @item
1218 @uref{#m88k-*-dgux,,m88k-*-dgux}
1219 @item
1220 @uref{#m88k-tektronix-sysv3,,m88k-tektronix-sysv3}
1221 @item
1222 @uref{#mips-*-*,,mips-*-*}
1223 @item
1224 @uref{#mips-mips-bsd,,mips-mips-bsd}
1225 @item
1226 @uref{#mips-mips-riscos*,,mips-mips-riscos*}
1227 @item
1228 @uref{#mips*-sgi-irix[45],,mips*-sgi-irix[45]}
1229 @item
1230 @uref{#mips*-sgi-irix6,,mips*-sgi-irix6}
1231 @item
1232 @uref{#mips-sony-sysv,,mips-sony-sysv}
1233 @item
1234 @uref{#ns32k-encore,,ns32k-encore}
1235 @item
1236 @uref{#ns32k-*-genix,,ns32k-*-genix}
1237 @item
1238 @uref{#ns32k-sequent,,ns32k-sequent}
1239 @item
1240 @uref{#ns32k-utek,,ns32k-utek}
1241 @item
1242 @uref{#powerpc-*-elf,,powerpc-*-elf, powerpc-*-sysv4}
1243 @item
1244 @uref{#powerpc-*-linux-gnu*,,powerpc-*-linux-gnu*}
1245 @item
1246 @uref{#powerpc-*-eabiaix,,powerpc-*-eabiaix}
1247 @item
1248 @uref{#powerpc-*-eabisim,,powerpc-*-eabisim}
1249 @item
1250 @uref{#powerpc-*-eabi,,powerpc-*-eabi}
1251 @item
1252 @uref{#powerpcle-*-elf,,powerpcle-*-elf, powerpcle-*-sysv4}
1253 @item
1254 @uref{#powerpcle-*-eabisim,,powerpcle-*-eabisim}
1255 @item
1256 @uref{#powerpcle-*-eabi,,powerpcle-*-eabi}
1257 @item
1258 @uref{#powerpcle-*-winnt,,powerpcle-*-winnt, powerpcle-*-pe}
1259 @item
1260 @uref{#romp-*-aos,,romp-*-aos, romp-*-mach}
1261 @item
1262 @uref{#*-*-solaris*,,*-*-solaris*}
1263 @item
1264 @uref{#sparc-sun-*,,sparc-sun-*}
1265 @item
1266 @uref{#sparc-sun-solaris*,,sparc-sun-solaris*}
1267 @item
1268 @uref{#sparc-sun-solaris2.7,,sparc-sun-solaris2.7}
1269 @item
1270 @uref{#*-sun-solaris2.8,,*-sun-solaris2.8}
1271 @item
1272 @uref{#sunv5,,Sun V5.0 Compiler Bugs}
1273 @item
1274 @uref{#sparc-sun-sunos*,,sparc-sun-sunos*}
1275 @item
1276 @uref{#sparc-unknown-linux-gnulibc1,,sparc-unknown-linux-gnulibc1}
1277 @item
1278 @uref{#sparc64-*-*,,sparc64-*-*}
1279 @item
1280 @uref{#*-*-sysv*,,*-*-sysv*}
1281 @item
1282 @uref{#vax-dec-ultrix,,vax-dec-ultrix}
1283 @item
1284 @uref{#we32k-*-*,,we32k-*-*}
1285 @item
1286 @uref{#windows,,Microsoft Windows}
1287 @item
1288 @uref{#os2,,OS/2}
1289 @item
1290 @uref{#older,,Older systems}
1291 @end itemize
1293 @itemize
1294 @item
1295 @uref{#elf_targets,,all ELF targets} (SVR4, Solaris, etc.)
1296 @end itemize
1297 @end ifhtml
1300 @html
1301 <!-- -------- host/target specific issues start here ---------------- -->
1302 <hr>
1303 @end html
1304 @heading @anchor{1750a-*-*}1750a-*-*
1305 MIL-STD-1750A processors.
1307 The MIL-STD-1750A cross configuration produces output for
1308 @code{as1750}, an assembler/linker available under the GNU Public
1309 License for the 1750A. @code{as1750} can be obtained at
1310 @uref{ftp://ftp.fta-berlin.de/pub/crossgcc/1750gals/}.
1311 A similarly licensed simulator for
1312 the 1750A is available from same address.
1314 You should ignore a fatal error during the building of libgcc (libgcc is
1315 not yet implemented for the 1750A.)
1317 The @code{as1750} assembler requires the file @file{ms1750.inc}, which is
1318 found in the directory @file{config/1750a}.
1320 GNU CC produced the same sections as the Fairchild F9450 C Compiler,
1321 namely:
1323 @table @code
1324 @item Normal
1325 The program code section.
1327 @item Static
1328 The read/write (RAM) data section.
1330 @item Konst
1331 The read-only (ROM) constants section.
1333 @item Init
1334 Initialization section (code to copy KREL to SREL).
1335 @end table
1337 The smallest addressable unit is 16 bits (BITS_PER_UNIT is 16).  This
1338 means that type `char' is represented with a 16-bit word per character.
1339 The 1750A's "Load/Store Upper/Lower Byte" instructions are not used by
1340 GNU CC.
1342 @html
1343 </p>
1344 <hr>
1345 @end html
1346 @heading @anchor{a29k}a29k
1347 AMD Am29k-family processors.  These are normally used in embedded
1348 applications.  There are no standard Unix configurations.
1349 This configuration
1350 corresponds to AMD's standard calling sequence and binary interface
1351 and is compatible with other 29k tools.
1353 You may need to make a variant of the file @file{a29k.h} for your
1354 particular configuration.
1356 @html
1357 </p>
1358 <hr>
1359 @end html
1360 @heading @anchor{a29k-*-bsd}a29k-*-bsd
1361 AMD Am29050 used in a system running a variant of BSD Unix.
1363 @html
1364 </p>
1365 <hr>
1366 @end html
1367 @heading @anchor{alpha*-*-*}alpha*-*-*
1369 This section contains general configuration information for all
1370 alpha-based platforms using ELF (in particular, ignore this section for
1371 OSF and tru64).  In addition to reading this section, please read all
1372 other sections that match your target.
1374 We require binutils 2.11.1 (as of yet unreleased), binutils with
1375 binutils-2_11-branch tag after May 31, 2001 (as taken below), or newer.
1376 Previous binutils releases had a number of problems with DWARF2
1377 debugging information, not the least of which is incorrect linking of
1378 shared libraries.
1380 Until binutils 2.11.1 is released, these sample commands may be useful:
1382 @smallexample
1383 mkdir binutils-2.11.X; cd binutils-2.11.X
1384 cvs -d :pserver:anoncvs@@anoncvs.cygnus.com:/cvs/src \
1385   co -rbinutils-2_11-branch -P binutils
1386 mkdir obj; cd obj
1387 ../src/configure --prefix=@emph{an-absolute-path}
1388 make all check install
1389 @end smallexample
1391 When configuring gcc, provide explicit @option{--with-gnu-as}
1392 @option{--with-as=}@emph{an-absolute-path/bin/as} and
1393 @option{--with-gnu-ld} @option{--with-ld=}@emph{an-absolute-path/bin/ld}
1394 options to point into the prefix used above.
1396 @html
1397 </p>
1398 <hr>
1399 @end html
1400 @heading @anchor{alpha-*-osf1}alpha-*-osf1
1401 Systems using processors that implement the DEC Alpha architecture and
1402 are running the DEC Unix (OSF/1) operating system, for example the DEC
1403 Alpha AXP systems.CC.)
1405 GNU CC writes a @samp{.verstamp} directive to the assembler output file
1406 unless it is built as a cross-compiler.  It gets the version to use from
1407 the system header file @file{/usr/include/stamp.h}.  If you install a
1408 new version of DEC Unix, you should rebuild GCC to pick up the new version
1409 stamp.
1411 Note that since the Alpha is a 64-bit architecture, cross-compilers from
1412 32-bit machines will not generate code as efficient as that generated
1413 when the compiler is running on a 64-bit machine because many
1414 optimizations that depend on being able to represent a word on the
1415 target in an integral value on the host cannot be performed.  Building
1416 cross-compilers on the Alpha for 32-bit machines has only been tested in
1417 a few cases and may not work properly.
1419 @code{make compare} may fail on old versions of DEC Unix unless you add
1420 @samp{-save-temps} to @code{CFLAGS}.  On these systems, the name of the
1421 assembler input file is stored in the object file, and that makes
1422 comparison fail if it differs between the @code{stage1} and
1423 @code{stage2} compilations.  The option @samp{-save-temps} forces a
1424 fixed name to be used for the assembler input file, instead of a
1425 randomly chosen name in @file{/tmp}.  Do not add @samp{-save-temps}
1426 unless the comparisons fail without that option.  If you add
1427 @samp{-save-temps}, you will have to manually delete the @samp{.i} and
1428 @samp{.s} files after each series of compilations.
1430 GNU CC now supports both the native (ECOFF) debugging format used by DBX
1431 and GDB and an encapsulated STABS format for use only with GDB.  See the
1432 discussion of the @samp{--with-stabs} option of @file{configure} above
1433 for more information on these formats and how to select them.
1435 There is a bug in DEC's assembler that produces incorrect line numbers
1436 for ECOFF format when the @samp{.align} directive is used.  To work
1437 around this problem, GNU CC will not emit such alignment directives
1438 while writing ECOFF format debugging information even if optimization is
1439 being performed.  Unfortunately, this has the very undesirable
1440 side-effect that code addresses when @samp{-O} is specified are
1441 different depending on whether or not @samp{-g} is also specified.
1443 To avoid this behavior, specify @samp{-gstabs+} and use GDB instead of
1444 DBX.  DEC is now aware of this problem with the assembler and hopes to
1445 provide a fix shortly.
1447 @html
1448 </p>
1449 <hr>
1450 @end html
1451 @heading @anchor{alpha*-dec-osf*}alpha*-dec-osf*
1453 If you install a shared libstdc++ and, when you link a non-trivial C++
1454 program (for example, @file{gcc/testsuite/g++.other/delete3.C}),
1455 the linker reports a couple of errors about multiply-defined symbols
1456 (for example, @code{nothrow}, @code{__throw} and
1457 @code{terminate(void)}), you've probably got a linker bug, for
1458 which there's no known fix.  The officially recommended work-around is
1459 to remove the shared libstdc++.
1461 An alternative solution is to arrange that all symbols from
1462 @code{libgcc} get copied to the shared @code{libstdc++};
1463 see detailed solution below.  (Surprising as it may seem, this does
1464 indeed fix the problem!)  @emph{Beware} that this may bring you
1465 binary-compatibility problems in the future, if you don't use the same
1466 work-around next time you build @code{libstdc++}: if programs
1467 start to depend on @code{libstdc++} to provide symbols that used
1468 to be only in @code{libgcc}, you must arrange that
1469 @code{libstdc++} keeps providing them, otherwise the programs
1470 will have to be relinked.
1472 The magic spell is to add @code{-Wl,-all,-lgcc,-none} to the
1473 definition of macro @code{SHDEPS} in
1474 @file{libstdc++/config/dec-osf.ml} @emph{before}
1475 @file{alpha*-dec-osf*/libstdc++/Makefile} is created (a 
1476 @uref{dec-osf-shlibstdc++.patch,,patch} 
1477 that does just that is available).  If the Makefile already exists, run
1478 @file{./config.status} within directory
1479 @file{alpha*-dec-osf*/libstdc++} (and
1480 @file{alpha*-dec-osf*/ieee/libstdc++}, if it also exists).
1481 Remove any existing @file{libstdc++.so*} from such directories,
1482 and run @samp{make all-target-libstdc++} in the top-level
1483 directory, then @samp{make install-target-libstdc++}.
1485 If you have already removed the build tree, you may just remove
1486 @file{libstdc++.so.2.10.0} from the install tree and re-create
1487 it with the command 
1488 @samp{gcc -shared -o libstdc++.so.2.10.0 -Wl,-all,-lstdc++,-lgcc,-none -lm}.
1489 If the @file{ieee}
1490 sub-directory exists, repeat this command in it, with the additional
1491 flag @option{-mieee}.
1493 @html
1494 </p>
1495 <hr>
1496 @end html
1497 @heading @anchor{arc-*-elf}arc-*-elf
1498 Argonaut ARC processor.
1499 This configuration is intended for embedded systems.
1501 @html
1502 </p>
1503 <hr>
1504 @end html
1505 @heading @anchor{arm-*-aout}arm-*-aout
1506 Advanced RISC Machines ARM-family processors.  These are often used in
1507 embedded applications.  There are no standard Unix configurations.
1508 This configuration corresponds to the basic instruction sequences and will
1509 produce @file{a.out} format object modules.
1511 You may need to make a variant of the file @file{arm.h} for your particular
1512 configuration.
1514 @html
1515 </p>
1516 <hr>
1517 @end html
1518 @heading @anchor{arm-*-elf}arm-*-elf
1519 This configuration is intended for embedded systems.
1521 @html
1522 </p>
1523 <hr>
1524 @end html
1525 @heading @anchor{arm*-*-linux-gnu}arm*-*-linux-gnu
1527 We require GNU binutils 2.10 or newer.
1529 @html
1530 </p>
1531 <hr>
1532 @end html
1533 @heading @anchor{arm-*-riscix}arm-*-riscix
1534 The ARM2 or ARM3 processor running RISC iX, Acorn's port of BSD Unix.
1535 If you are running a version of RISC iX prior to 1.2 then you must
1536 specify the version number during configuration.  Note that the
1537 assembler shipped with RISC iX does not support stabs debugging
1538 information; a new version of the assembler, with stabs support
1539 included, is now available from Acorn and via ftp
1540 @uref{ftp://ftp.acorn.com/pub/riscix/as+xterm.tar.Z}.  To enable stabs
1541 debugging, pass @samp{--with-gnu-as} to configure.
1543 You will need to install GNU @file{sed} before you can run configure.
1545 @html
1546 </p>
1547 <hr>
1548 @end html
1549 @heading @anchor{avr}avr
1551 ATMEL AVR-family micro controllers.  These are used in embedded
1552 applications.  There are no standard Unix configurations.  @xref{AVR
1553 Options,, AVR Options, gcc, Using and Porting the GNU Compiler
1554 Collection (GCC)}, for the list of supported MCU types.
1556 Use @samp{configure --target=avr} 
1557 @option{--enable-languages="c"}' to configure GCC.
1559 Further installation notes and other useful information about AVR tools
1560 can also be obtained from:
1562 @itemize @bullet
1563 @item
1564 @uref{http://home.overta.ru/users/denisc,,http://home.overta.ru/users/denisc}
1565 @item
1566 @uref{http://www.itnet.pl/amelektr/avr,,http://www.itnet.pl/amelektr/avr}
1567 @end itemize
1569 We @emph{strongly} recommend using binutils 2.11 or newer.
1571 The following error:
1572 @example
1573   Error: register required
1574 @end example
1576 indicates that you should upgrade to a newer version of the binutils.
1578 @html
1579 </p>
1580 <hr>
1581 @end html
1582 @heading @anchor{decstation-*}decstation-*
1583 MIPS-based DECstations can support three different personalities:
1584 Ultrix, DEC OSF/1, and OSF/rose.  (Alpha-based DECstation products have
1585 a configuration name beginning with @samp{alpha-dec}.)  To configure GCC
1586 for these platforms use the following configurations:
1588 @table @samp
1589 @item decstation-ultrix
1590 Ultrix configuration.
1592 @item decstation-osf1
1593 Dec's version of OSF/1.
1595 @item decstation-osfrose
1596 Open Software Foundation reference port of OSF/1 which uses the
1597 OSF/rose object file format instead of ECOFF.  Normally, you
1598 would not select this configuration.
1599 @end table
1601 The MIPS C compiler needs to be told to increase its table size
1602 for switch statements with the @samp{-Wf,-XNg1500} option in
1603 order to compile @file{cp/parse.c}.  If you use the @samp{-O2}
1604 optimization option, you also need to use @samp{-Olimit 3000}.
1605 Both of these options are automatically generated in the
1606 @file{Makefile} that the shell script @file{configure} builds.
1607 If you override the @code{CC} make variable and use the MIPS
1608 compilers, you may need to add @samp{-Wf,-XNg1500 -Olimit 3000}.
1610 @html
1611 </p>
1612 <hr>
1613 @end html
1614 @heading @anchor{dos}DOS
1616 Please have a look at our @uref{binaries.html,,binaries page}.
1618 You cannot install GNU C by itself on MSDOS; it will not compile under
1619 any MSDOS compiler except itself.  You need to get the complete
1620 compilation package DJGPP, which includes binaries as well as sources,
1621 and includes all the necessary compilation tools and libraries.
1623 @html
1624 </p>
1625 <hr>
1626 @end html
1627 @heading @anchor{dsp16xx}dsp16xx
1628 A port to the AT&T DSP1610 family of processors.
1630 @html
1631 </p>
1632 <hr>
1633 @end html
1634 @heading @anchor{elxsi-elxsi-bsd}elxsi-elxsi-bsd
1635 The Elxsi's C compiler has known limitations that prevent it from
1636 compiling GNU C.  Please contact @email{mrs@@cygnus.com} for more details.
1638 @html
1639 </p>
1640 <hr>
1641 @end html
1642 @heading @anchor{h8300-hms}h8300-hms
1643 Hitachi H8/300 series of processors.
1645 Please have a look at our @uref{binaries.html,,binaries page}.
1647 The calling convention and structure layout has changed in release 2.6.
1648 All code must be recompiled.  The calling convention now passes the
1649 first three arguments in function calls in registers.  Structures are no
1650 longer a multiple of 2 bytes.
1652 @html
1653 </p>
1654 <hr>
1655 @end html
1656 @heading @anchor{hppa*-hp-hpux*}hppa*-hp-hpux*
1658 We @emph{highly} recommend using gas/binutils-2.8 or newer on all hppa
1659 platforms; you may encounter a variety of problems when using the HP 
1660 assembler.
1662 Specifically, @option{-g} does not work on HP-UX (since that system
1663 uses a peculiar debugging format which GCC does not know about), unless you
1664 use GAS and GDB and configure GCC with the
1665 @uref{./configure.html#with-gnu-as,,@option{--with-gnu-as}} and
1666 @option{--with-as=...} options.
1668 If you wish to use pa-risc 2.0 architecture support, you must use either
1669 the HP assembler, gas/binutils-2.11 or a recent
1670 @uref{ftp://sources.redhat.com/pub/binutils/snapshots,,snapshot of gas}.
1672 More specific information to hppa*-hp-hpux* targets follows.
1674 @html
1675 </p>
1676 <hr>
1677 @end html
1678 @heading @anchor{hppa*-hp-hpux9}hppa*-hp-hpux9
1680 The HP assembler has major problems on this platform.  We've tried to work
1681 around the worst of the problems.  However, those workarounds may be causing
1682 linker crashes in some circumstances; the workarounds also probably prevent
1683 shared libraries from working.  Use the GNU assembler to avoid these problems.
1686 The configuration scripts for GCC will also trigger a bug in the hpux9
1687 shell.  To avoid this problem set @env{CONFIG_SHELL} to @file{/bin/ksh}
1688 and @env{SHELL} to @file{/bin/ksh} in your environment.
1691 @html
1692 </p>
1693 <hr>
1694 @end html
1695 @heading @anchor{hppa*-hp-hpux10}hppa*-hp-hpux10
1697 For hpux10.20, we @emph{highly} recommend you pick up the latest sed patch 
1698 @code{PHCO_19798} from HP.  HP has two sites which provide patches free of 
1699 charge:
1701 @itemize @bullet
1702 @item
1703 @html
1704 <a href="http://us-support.external.hp.com">US, Canada, Asia-Pacific, and
1705 Latin-America</a>
1706 @end html
1707 @ifnothtml
1708 @uref{http://us-support.external.hp.com,,}US, Canada, Asia-Pacific, and
1709 Latin-America
1710 @end ifnothtml
1711 @item
1712 @uref{http://europe-support.external.hp.com,,Europe}
1713 @end itemize
1715 The HP assembler on these systems is much better than the hpux9 assembler,
1716 but still has some problems.  Most notably the assembler inserts timestamps
1717 into each object file it creates, causing the 3-stage comparison test to fail
1718 during a @samp{make bootstrap}.  You should be able to continue by 
1719 saying @samp{make all} after getting the failure from @samp{make 
1720 bootstrap}.
1723 @html
1724 </p>
1725 <hr>
1726 @end html
1727 @heading @anchor{hppa*-hp-hpux11}hppa*-hp-hpux11
1729 GCC 3.0 supports HP-UX 11.  You must use GNU binutils 2.11 or above on
1730 this platform.
1732 @html
1733 </p>
1734 <hr>
1735 @end html
1736 @heading @anchor{*-*-freebsd*}*-*-freebsd*
1738 The version of binutils installed in /usr/bin is known to work unless
1739 otherwise specified in any per-architecture notes.  However, binutils
1740 2.11 is known to improve overall testsuite results.
1742 For FreeBSD 1, FreeBSD 2 or any mutant a.out versions of FreeBSD 3: All
1743 configuration support and files as shipped with gcc 2.95 are still in
1744 place.  FreeBSD 2.2.7 has been known to bootstrap completely; however,
1745 it is unknown which version of binutils was used (it is assumed that it
1746 was the system copy in /usr/bin) and C++ EH failures were noted.
1748 For FreeBSD using the ELF file format: DWARF2 debugging is now the
1749 default for all CPU architectures.  It had been the default on
1750 FreeBSD/alpha since its inception.  You may use @option{-gstabs} instead
1751 of @option{-g}, if you really want the old debugging format.  There are
1752 no known issues with mixing object files and libraries with different
1753 debugging formats.  Otherwise, this release of gcc should now match more
1754 of the configuration used in the stock FreeBSD configuration of gcc.  In
1755 particular, @option{--enable-threads} is now configured by default.
1756 However, as a general user, do not attempt to replace the system
1757 compiler with this release.  Known to bootstrap and check with good
1758 results on FreeBSD 3.0, 3.4, 4.0, 4.2, 4.3 and 5-CURRENT.
1760 At this time, @option{--enable-threads} is not compatible with
1761 @option{--enable-libgcj} on FreeBSD.
1763 @html
1764 </p>
1765 <hr>
1766 @end html
1767 @heading @anchor{i370-*-*}i370-*-*
1768 This port is very preliminary and has many known bugs.  We hope to
1769 have a higher-quality port for this machine soon.
1771 @html
1772 </p>
1773 <hr>
1774 @end html
1775 @heading @anchor{*-*-linux-gnu}*-*-linux-gnu
1777 If you use glibc 2.2 (or 2.1.9x), GCC 2.95.2 won't install
1778 out-of-the-box.  You'll get compile errors while building libstdc++.
1779 The patch @uref{glibc-2.2.patch,,glibc-2.2.patch}, that is to be
1780 applied in the GCC source tree, fixes the compatibility problems.
1782 @html
1783 </p>
1784 <hr>
1785 @end html
1786 @heading @anchor{ix86-*-linux*oldld}i?86-*-linux*oldld
1787 Use this configuration to generate @file{a.out} binaries on Linux-based
1788 GNU systems if you do not have gas/binutils version 2.5.2 or later
1789 installed. This is an obsolete configuration.
1791 @html
1792 </p>
1793 <hr>
1794 @end html
1795 @heading @anchor{ix86-*-linux*aout}i?86-*-linux*aout
1796 Use this configuration to generate @file{a.out} binaries on Linux-based
1797 GNU systems. This configuration is being superseded. You must use
1798 gas/binutils version 2.5.2 or later.
1800 @html
1801 </p>
1802 <hr>
1803 @end html
1804 @heading @anchor{ix86-*-linux*}i?86-*-linux*
1806 You will need binutils-2.9.1.0.15 or newer for exception handling to work.
1808 If you receive Signal 11 errors when building on GNU/Linux, then it is
1809 possible you have a hardware problem.  Further information on this can be
1810 found on @uref{http://www.bitwizard.nl/sig11/,,www.bitwizard.nl}.
1812 @html
1813 </p>
1814 <hr>
1815 @end html
1816 @heading @anchor{ix86-*-sco}i?86-*-sco
1817 Compilation with RCC is recommended.  Also, it may be a good idea to
1818 link with GNU malloc instead of the malloc that comes with the system.
1820 @html
1821 </p>
1822 <hr>
1823 @end html
1824 @heading @anchor{ix86-*-sco3.2v4}i?86-*-sco3.2v4
1825 Use this configuration for SCO release 3.2 version 4.
1827 @html
1828 </p>
1829 <hr>
1830 @end html
1831 @heading @anchor{ix86-*-sco3.2v5*}i?86-*-sco3.2v5*
1832 Use this for the SCO OpenServer Release 5 family of operating systems.
1834 Unlike earlier versions of GCC, the ability to generate COFF with this
1835 target is no longer provided.
1837 Earlier versions of GCC emitted Dwarf-1 when generating ELF to allow
1838 the system debugger to be used.  That support was too burdensome to
1839 maintain.  GCC now emits only dwarf-2 for this target.  This means you
1840 may use either the UDK debugger or GDB to debug programs built by this
1841 version of GCC.
1843 If you are building languages other than C, you must follow the instructions
1844 about invoking @samp{make bootstrap} because the native OpenServer
1845 compiler will build a @command{cc1plus} that will not correctly parse many
1846 valid C++ programs including those in @file{libgcc.a}.  
1847 @strong{You must do a @samp{make bootstrap} if you are building with the 
1848 native compiler.}
1850 Use of the @option{-march-pentiumpro} flag can result in
1851 unrecognized opcodes when using the native assembler on OS versions before
1852 5.0.6. (Support for P6 opcodes was added to the native ELF assembler in
1853 that version.)  While it's rather rare to see these emitted by GCC yet, 
1854 errors of the basic form:
1856 @example
1857   /usr/tmp/ccaNlqBc.s:22:unknown instruction: fcomip
1858   /usr/tmp/ccaNlqBc.s:50:unknown instruction: fucomip
1859 @end example
1861 are symptoms of this problem.  You may work around this by not
1862 building affected files with that flag, by using the GNU assembler, or
1863 by using the assembler provided with the current version of the OS.
1864 Users of GNU assembler should see the note below for hazards on doing
1867 The native SCO assembler that is provided with the OS at no
1868 charge is normally required.  If, however, you must be able to use
1869 the GNU assembler (perhaps you're compiling code with asms that
1870 require GAS syntax) you may configure this package using the flags
1871 @uref{./configure.html#with-gnu-as,,@option{--with-gnu-as}}.  You must
1872 use a recent version of GNU binutils; versions past 2.9.1 seem to work
1873 well.
1875 In general, the @option{--with-gnu-as} option isn't as well tested
1876 as the native assembler.
1878 Look in @file{gcc/config/i386/sco5.h} (search for "messy") for
1879 additional OpenServer-specific flags.
1881 Systems based on OpenServer before 5.0.4 (@samp{uname -X}
1882 will tell you what you're running) require TLS597 from ftp.sco.com/TLS
1883 for C++ constructors and destructors to work right.
1885 The system linker in (at least) 5.0.4 and 5.0.5 will sometimes
1886 do the wrong thing for a construct that GCC will emit for PIC
1887 code.  This can be seen as execution testsuite failures when using
1888 -fPIC on 921215-1.c, 931002-1.c, nestfunc-1.c, and gcov-1.c.
1889 For 5.0.5, an updated linker that will cure this problem is
1890 available.  You must install both 
1891 @uref{ftp://ftp.sco.com/Supplements/rs505a/,,ftp://ftp.sco.com/Supplements/rs505a/}
1892 and @uref{ftp://ftp.sco.com/SLS/,,OSS499A}.
1894 The dynamic linker in OpenServer 5.0.5 (earlier versions may show
1895 the same problem) aborts on certain g77-compiled programs.  It's particularly
1896 likely to be triggered by building Fortran code with the @option{-fPIC} flag.
1897 Although it's conceivable that the error could be triggered by other
1898 code, only G77-compiled code has been observed to cause this abort.
1899 If you are getting core dumps immediately upon execution of your
1900 g77 program - and especially if it's compiled with -fPIC - try applying
1901 @uref{sco_osr5_g77.patch,,@file{sco_osr5_g77.patch}} to your libf2c and 
1902 rebuilding GCC.  
1903 Affected faults, when analyzed in a debugger, will show a stack
1904 backtrace with a fault occurring in @code{rtld()} and the program
1905 running as @file{/usr/lib/ld.so.1}.  This problem has been reported to SCO 
1906 engineering and will hopefully be addressed in later releases.
1909 @html
1910 </p>
1911 <hr>
1912 @end html
1913 @heading @anchor{ix86-*-solaris*}i?86-*-solaris*
1915 GCC 2.95.2, when configured to use the GNU assembler, would invoke
1916 it with the @code{-s} switch, that GNU as up to 2.9.5.0.12 does
1917 not support.  If you'd rather not use a newer GNU as nor the native
1918 assembler, you'll need the patch 
1919 @uref{x86-sol2-gas.patch,,@file{x86-sol2-gas.patch}}.
1922 @html
1923 </p>
1924 <hr>
1925 @end html
1926 @heading @anchor{ix86-*-udk}i?86-*-udk
1928 This target emulates the SCO Universal Development Kit and requires that
1929 package be installed.  (If it is installed, you will have a 
1930 @file{/udk/usr/ccs/bin/cc } file present.)  It's very much like the 
1931 @code{i?86-*-unixware7*} target
1932 but is meant to be used when hosting on a system where UDK isn't the
1933 default compiler such as OpenServer 5 or Unixware 2.  This target will
1934 generate binaries that will run on OpenServer, Unixware 2, or Unixware 7, 
1935 with the same warnings and caveats as the SCO UDK.
1937 You can stage1 with either your native compiler or with UDK.   If you
1938 don't do a full bootstrap when initially building with your native compiler
1939 you will have an utterly unusable pile of bits as your reward.
1941 This target is a little tricky to build because we have to distinguish
1942 it from the native tools (so it gets headers, startups, and libraries
1943 from the right place) while making the tools not think we're actually 
1944 building a cross compiler.   The easiest way to do this is with a configure
1945 command like this:
1947 @samp{CC=/udk/usr/ccs/bin/cc <i>/your/path/to/</i>gcc/configure 
1948 --host=i686-pc-udk --target=i686-pc-udk --program-prefix=udk-}
1950 @emph{You should substitute 'i686' in the above command with the appropriate
1951 processor for your host.}
1953 You should follow this with a @samp{make bootstrap}  then
1954 @samp{make install}.  You can then access the UDK-targeted GCC 
1955 tools by adding @command{udk-} before the commonly known name.  For
1956 example, to invoke the C compiler, you would use @command{udk-gcc}.
1957 They will coexist peacefully with any native-target GCC tools you may
1958 have installed.
1961 @html
1962 </p>
1963 <hr>
1964 @end html
1965 @heading @anchor{ix86-*-isc}i?86-*-isc
1966 It may be a good idea to link with GNU malloc instead of the malloc that
1967 comes with the system.
1969 In ISC version 4.1, @file{sed} core dumps when building
1970 @file{deduced.h}.  Use the version of @file{sed} from version 4.0.
1972 @html
1973 </p>
1974 <hr>
1975 @end html
1976 @heading @anchor{ix86-*-esix}i?86-*-esix
1977 It may be good idea to link with GNU malloc instead of the malloc that
1978 comes with the system.
1980 @html
1981 </p>
1982 <hr>
1983 @end html
1984 @heading @anchor{ix86-ibm-aix}i?86-ibm-aix
1985 You need to use GAS version 2.1 or later, and LD from
1986 GNU binutils version 2.2 or later.
1988 @html
1989 </p>
1990 <hr>
1991 @end html
1992 @heading @anchor{ix86-sequent-bsd}i?86-sequent-bsd
1993 Go to the Berkeley universe before compiling.
1995 @html
1996 </p>
1997 <hr>
1998 @end html
1999 @heading @anchor{ix86-sequent-ptx1*}i?86-sequent-ptx1*, i?86-sequent-ptx2*
2000 You must install GNU @file{sed} before running @file{configure}.
2002 @html
2003 </p>
2004 <hr>
2005 @end html
2006 @heading @anchor{#ix86-*-sysv3*}i?86-*-sysv3*
2007 The @code{fixproto} shell script may trigger a bug in the system shell.
2008 If you encounter this problem, upgrade your operating system or
2009 use BASH (the GNU shell) to run @code{fixproto}.
2012 @html
2013 </p>
2014 <hr>
2015 @end html
2016 @heading @anchor{i860-intel-osf*}i860-intel-osf*
2017 On the Intel Paragon (an i860 machine), if you are using operating
2018 system version 1.0, you will get warnings or errors about redefinition
2019 of @code{va_arg} when you build GCC.
2021 If this happens, then you need to link most programs with the library
2022 @file{iclib.a}.  You must also modify @file{stdio.h} as follows: before
2023 the lines
2025 @example
2026 #if     defined(__i860__) && !defined(_VA_LIST)
2027 #include <va_list.h>
2028 @end example
2030 @noindent
2031 insert the line
2033 @example
2034 #if __PGC__
2035 @end example
2037 @noindent
2038 and after the lines
2040 @example
2041 extern int  vprintf(const char *, va_list );
2042 extern int  vsprintf(char *, const char *, va_list );
2043 #endif
2044 @end example
2046 @noindent
2047 insert the line
2049 @example
2050 #endif /* __PGC__ */
2051 @end example
2053 These problems don't exist in operating system version 1.1.
2055 @html
2056 </p>
2057 <hr>
2058 @end html
2059 @heading @anchor{*-lynx-lynxos}*-lynx-lynxos
2060 LynxOS 2.2 and earlier comes with GNU CC 1.x already installed as
2061 @file{/bin/gcc}.  You should compile with this instead of @file{/bin/cc}.
2062 You can tell GNU CC to use the GNU assembler and linker, by specifying
2063 @samp{--with-gnu-as --with-gnu-ld} when configuring.  These will produce
2064 COFF format object files and executables;  otherwise GNU CC will use the
2065 installed tools, which produce @file{a.out} format executables.
2067 @html
2068 </p>
2069 <hr>
2070 <!-- rs6000-ibm-aix*, powerpc-ibm-aix* -->
2071 @end html
2072 @heading @anchor{*-ibm-aix*}*-ibm-aix*
2074 AIX Make frequently has problems with GCC makefiles.  GNU Make 3.76 or
2075 newer is recommended to build on this platform.
2077 Errors involving "alloca" when building GCC generally are due
2078 to an incorrect definition of @var{CC} in the Makefile or mixing files
2079 compiled with the native C compiler and GCC.  During the stage1 phase of
2080 the build, the native AIX compiler @strong{must} be invoked as "cc"
2081 (not "xlc").  Once @command{configure} has been informed of
2082 "xlc", one needs to use @samp{make distclean} to remove the
2083 configure cache files and ensure that @env{CC} environment variable
2084 does not provide a definition that will confuse @command{configure}.
2085 If this error occurs during stage2 or later, then the problem most likely
2086 is the version of Make (see above).
2088 Binutils 2.10 does not support AIX 4.3.  Binutils available from the
2089 @uref{http://www-1.ibm.com/servers/aix/products/aixos/linux/,,AIX
2090 Toolbox for Linux: GNU and Open Source tools for AIX};
2091 website does work.  Binutils 2.11 is expected to include AIX 4.3
2092 support.  The GNU Assembler is necessary for libstdc++ to build.  The
2093 AIX native ld still is recommended.  The native AIX tools do
2094 interoperate with GCC.
2096 Linking executables and shared libraries may produce warnings of
2097 duplicate symbols.  The assembly files generated by GCC for AIX always
2098 have included multiple symbol definitions for certain global variable
2099 and function declarations in the original program.  The warnings should
2100 not prevent the linker from producing a correct library or runnable
2101 executable.
2103 AIX 4.3 utilizes a "large format" archive to support both 32-bit and
2104 64-bit object modules.  The routines provided in AIX 4.3.0 and AIX 4.3.1
2105 to parse archive libraries did not handle the new format correctly.
2106 These routines are used by GCC and result in error messages during
2107 linking such as "not a COFF file".  The version of the routines shipped
2108 with AIX 4.3.1 should work for a 32-bit environment.  The @option{-g}
2109 option of the archive command may be used to create archives of 32-bit
2110 objects using the original "small format".  A correct version of the
2111 routines is shipped with AIX 4.3.2.
2113 Some versions of the AIX binder (linker) can fail with a relocation
2114 overflow severe error when the @option{-bbigtoc} option is used to link
2115 GCC-produced object files into an executable that overflows the TOC.  A fix
2116 for APAR IX75823 (OVERFLOW DURING LINK WHEN USING GCC AND -BBIGTOC) is
2117 available from IBM Customer Support and from its
2118 @uref{http://service.boulder.ibm.com/,,service.boulder.ibm.com}
2119 website as PTF U455193.
2121 The AIX 4.3.2.1 linker (bos.rte.bind_cmds Level 4.3.2.1) will dump core
2122 with a segmentation fault when invoked by any version of GCC.  A fix for
2123 APAR IX87327 is available from IBM Customer Support and from its
2124 @uref{http://service.boulder.ibm.com/,,service.boulder.ibm.com}
2125 website as PTF U461879.  This fix is incorporated in AIX 4.3.3 and above.
2127 The initial assembler shipped with AIX 4.3.0 generates incorrect object
2128 files.  A fix for APAR IX74254 (64BIT DISASSEMBLED OUTPUT FROM COMPILER FAILS
2129 TO ASSEMBLE/BIND) is available from IBM Customer Support and from its
2130 @uref{http://service.boulder.ibm.com/,,service.boulder.ibm.com}
2131 website as PTF U453956.  This fix is incorporated in AIX 4.3.1 and above.
2133 AIX provides National Language Support (NLS).  Compilers and assemblers
2134 use NLS to support locale-specific representations of various data
2135 formats including floating-point numbers (e.g., "."  vs "," for
2136 separating decimal fractions).  There have been problems reported where
2137 GCC does not produce the same floating-point formats that the assembler
2138 expects.  If one encouters this problem, set the @env{LANG}
2139 environment variable to "C" or "En_US".
2141 By default, GCC for AIX 4.1 and above produces code that can be used on
2142 both Power or PowerPC processors.
2144 You can specify a default version for the @samp{-mcpu=}@var{cpu_type}
2145 switch by using the configure option @samp{--with-cpu-}@var{cpu_type}.
2147 @html
2148 </p>
2149 <hr>
2150 @end html
2151 @heading @anchor{m32r-*-elf}m32r-*-elf
2152 Mitsubishi M32R processor.
2153 This configuration is intended for embedded systems.
2155 @html
2156 </p>
2157 <hr>
2158 @end html
2159 @heading @anchor{m68000-hp-bsd}m68000-hp-bsd
2160 HP 9000 series 200 running BSD.  Note that the C compiler that comes
2161 with this system cannot compile GNU CC; contact @email{law@@cygnus.com}
2162 to get binaries of GNU CC for bootstrapping.
2164 @html
2165 </p>
2166 <hr>
2167 @end html
2168 @heading @anchor{m6811-elf}m6811-elf
2169 Motorola 68HC11 family micro controllers.  These are used in embedded
2170 applications.  There are no standard Unix configurations.
2172 @html
2173 </p>
2174 <hr>
2175 @end html
2176 @heading @anchor{m6812-elf}m6812-elf
2177 Motorola 68HC12 family micro controllers.  These are used in embedded
2178 applications.  There are no standard Unix configurations.
2180 @html
2181 </p>
2182 <hr>
2183 @end html
2184 @heading @anchor{m68k-altos}m68k-altos
2185 Altos 3068.  You must use the GNU assembler, linker and debugger.
2186 Also, you must fix a kernel bug.  Details in the file @file{README.ALTOS}.
2188 @html
2189 </p>
2190 <hr>
2191 @end html
2192 @heading @anchor{m68k-apple-aux}m68k-apple-aux
2193 Apple Macintosh running A/UX.
2194 You may configure GCC  to use either the system assembler and
2195 linker or the GNU assembler and linker.  You should use the GNU configuration
2196 if you can, especially if you also want to use GNU C++.  You enabled
2197 that configuration with + the @samp{--with-gnu-as} and @samp{--with-gnu-ld}
2198 options to @code{configure}.
2200 Note the C compiler that comes
2201 with this system cannot compile GNU CC.  You can find binaries of GNU CC
2202 for bootstrapping on @code{jagubox.gsfc.nasa.gov}.
2203 You will also a patched version of @file{/bin/ld} there that
2204 raises some of the arbitrary limits found in the original.
2206 @html
2207 </p>
2208 <hr>
2209 @end html
2210 @heading @anchor{m68k-att-sysv}m68k-att-sysv
2211 AT&T 3b1, a.k.a. 7300 PC.  This version of GNU CC cannot
2212 be compiled with the system C compiler, which is too buggy.
2213 You will need to get a previous version of GCC and use it to
2214 bootstrap.  Binaries are available from the OSU-CIS archive, at
2215 @uref{ftp://archive.cis.ohio-state.edu/pub/att7300/}.
2217 @html
2218 </p>
2219 <hr>
2220 @end html
2221 @heading @anchor{m68k-bull-sysv}m68k-bull-sysv
2222 Bull DPX/2 series 200 and 300 with BOS-2.00.45 up to BOS-2.01. GNU CC works
2223 either with native assembler or GNU assembler. You can use
2224 GNU assembler with native coff generation by providing @samp{--with-gnu-as} to
2225 the configure script or use GNU assembler with dbx-in-coff encapsulation
2226 by providing @samp{--with-gnu-as --stabs}. For any problem with native
2227 assembler or for availability of the DPX/2 port of GAS, contact
2228 @email{F.Pierresteguy@@frcl.bull.fr}.
2230 @html
2231 </p>
2232 <hr>
2233 @end html
2234 @heading @anchor{m68k-crds-unox}m68k-crds-unox
2235 Use @samp{configure unos} for building on Unos.
2237 The Unos assembler is named @code{casm} instead of @code{as}.  For some
2238 strange reason linking @file{/bin/as} to @file{/bin/casm} changes the
2239 behavior, and does not work.  So, when installing GNU CC, you should
2240 install the following script as @file{as} in the subdirectory where
2241 the passes of GCC are installed:
2243 @example
2244 #!/bin/sh
2245 casm $*
2246 @end example
2248 The default Unos library is named @file{libunos.a} instead of
2249 @file{libc.a}.  To allow GNU CC to function, either change all
2250 references to @samp{-lc} in @file{gcc.c} to @samp{-lunos} or link
2251 @file{/lib/libc.a} to @file{/lib/libunos.a}.
2253 @cindex @code{alloca}, for Unos
2254 When compiling GNU CC with the standard compiler, to overcome bugs in
2255 the support of @code{alloca}, do not use @samp{-O} when making stage 2.
2256 Then use the stage 2 compiler with @samp{-O} to make the stage 3
2257 compiler.  This compiler will have the same characteristics as the usual
2258 stage 2 compiler on other systems.  Use it to make a stage 4 compiler
2259 and compare that with stage 3 to verify proper compilation.
2261 (Perhaps simply defining @code{ALLOCA} in @file{x-crds} as described in
2262 the comments there will make the above paragraph superfluous.  Please
2263 inform us of whether this works.)
2265 Unos uses memory segmentation instead of demand paging, so you will need
2266 a lot of memory.  5 Mb is barely enough if no other tasks are running.
2267 If linking @file{cc1} fails, try putting the object files into a library
2268 and linking from that library.
2270 @html
2271 </p>
2272 <hr>
2273 @end html
2274 @heading @anchor{m68k-hp-hpux}m68k-hp-hpux
2275 HP 9000 series 300 or 400 running HP-UX.  HP-UX version 8.0 has a bug in
2276 the assembler that prevents compilation of GNU CC.  This
2277 bug manifests itself during the first stage of compilation, while
2278 building @file{libgcc2.a}:
2280 @smallexample
2281 _floatdisf
2282 cc1: warning: `-g' option not supported on this version of GCC
2283 cc1: warning: `-g1' option not supported on this version of GCC
2284 ./xgcc: Internal compiler error: program as got fatal signal 11
2285 @end smallexample
2287 A patched version of the assembler is available as the file
2288 @uref{ftp://altdorf.ai.mit.edu/archive/cph/hpux-8.0-assembler}.  If you
2289 have HP software support, the patch can also be obtained directly from
2290 HP, as described in the following note:
2292 @quotation
2293 This is the patched assembler, to patch SR#1653-010439, where the
2294 assembler aborts on floating point constants.
2296 The bug is not really in the assembler, but in the shared library
2297 version of the function ``cvtnum(3c)''.  The bug on ``cvtnum(3c)'' is
2298 SR#4701-078451.  Anyway, the attached assembler uses the archive
2299 library version of ``cvtnum(3c)'' and thus does not exhibit the bug.
2300 @end quotation
2302 This patch is also known as PHCO_4484.
2304 In addition, if you wish to use gas @samp{--with-gnu-as} you must use
2305 gas version 2.1 or later, and you must use the GNU linker version 2.1 or
2306 later.  Earlier versions of gas relied upon a program which converted the
2307 gas output into the native HP-UX format, but that program has not been
2308 kept up to date.  gdb does not understand that native HP-UX format, so
2309 you must use gas if you wish to use gdb.
2311 On HP-UX version 8.05, but not on 8.07 or more recent versions, the
2312 @code{fixproto} shell script triggers a bug in the system shell.  If you
2313 encounter this problem, upgrade your operating system or use BASH (the
2314 GNU shell) to run @code{fixproto}.  This bug will cause the fixproto
2315 program to report an error of the form:
2317 @example
2318 ./fixproto: sh internal 1K buffer overflow
2319 @end example
2321 To fix this, you can also change the first line of the fixproto script
2322 to look like:
2324 @example
2325 #!/bin/ksh
2326 @end example
2329 @html
2330 </p>
2331 <hr>
2332 @end html
2333 @heading @anchor{m68k-*-nextstep*}m68k-*-nextstep*
2335 Current GCC versions probably do not work on version 2 of the NeXT
2336 operating system.
2338 On NeXTStep 3.0, the Objective C compiler does not work, due,
2339 apparently, to a kernel bug that it happens to trigger.  This problem
2340 does not happen on 3.1.
2342 You absolutely @strong{must} use GNU sed and GNU make on this platform.
2345 On NEXTSTEP 3.x where x < 3 the build of GCC will abort during  
2346 stage1 with an error message like this:
2348 @example
2349   _eh
2350   /usr/tmp/ccbbsZ0U.s:987:Unknown pseudo-op: .section
2351   /usr/tmp/ccbbsZ0U.s:987:Rest of line ignored. 1st junk character
2352   valued 95 (_).
2353 @end example
2355 The reason for this is the fact that NeXT's assembler for these  
2356 versions of the operating system does not support the .section  
2357 pseudo op that's needed for full C++ exception functionality.
2359 As NeXT's assembler is a derived work from GNU as, a free  
2360 replacement that does can be obtained at 
2361 @uref{ftp://ftp.next.peak.org:/next-ftp/next/apps/devtools/as.3.3.NIHS.s.tar.gz,,ftp://ftp.next.peak.org:/next-ftp/next/apps/devtools/as.3.3.NIHS.s.tar.gz}.
2363 If you try to build the integrated C++ & C++ runtime libraries on this system
2364 you will run into trouble with include files.  The way to get around this is
2365 to use the following sequence.  Note you must have write permission to
2366 the directory @var{prefix} you specified in the configuration process of GCC
2367 for this sequence to work.
2369 @example
2370   cd bld-gcc
2371   make all-texinfo all-bison all-byacc all-binutils all-gas all-ld
2372   cd gcc
2373   make bootstrap
2374   make install-headers-tar
2375   cd ..
2376   make bootstrap3
2377 @end example
2379 @html
2380 </p>
2381 <hr>
2382 @end html
2383 @heading @anchor{m68k-ncr-*}m68k-ncr-*
2384 On the Tower models 4@var{n}0 and 6@var{n}0, by default a process is not
2385 allowed to have more than one megabyte of memory.  GCC cannot compile
2386 itself (or many other programs) with @samp{-O} in that much memory.
2388 To solve this problem, reconfigure the kernel adding the following line
2389 to the configuration file:
2391 @smallexample
2392 MAXUMEM = 4096
2393 @end smallexample
2396 @html
2397 </p>
2398 <hr>
2399 @end html
2400 @heading @anchor{m68k-sun}m68k-sun
2401 Sun 3.  We do not provide a configuration file to use the Sun FPA by
2402 default, because programs that establish signal handlers for floating
2403 point traps inherently cannot work with the FPA.
2405 @html
2406 </p>
2407 <hr>
2408 @end html
2409 @heading @anchor{m68k-sun-sunos4.1.1}m68k-sun-sunos4.1.1
2411 It is reported that you may need the GNU assembler on this platform.
2414 @html
2415 </p>
2416 <hr>
2417 @end html
2418 @heading @anchor{m88k-*-svr3}m88k-*-svr3
2419 Motorola m88k running the AT&T/Unisoft/Motorola V.3 reference port.
2420 These systems tend to use the Green Hills C, revision 1.8.5, as the
2421 standard C compiler.  There are apparently bugs in this compiler that
2422 result in object files differences between stage 2 and stage 3.  If this
2423 happens, make the stage 4 compiler and compare it to the stage 3
2424 compiler.  If the stage 3 and stage 4 object files are identical, this
2425 suggests you encountered a problem with the standard C compiler; the
2426 stage 3 and 4 compilers may be usable.
2428 It is best, however, to use an older version of GNU CC for bootstrapping
2429 if you have one.
2431 @html
2432 </p>
2433 <hr>
2434 @end html
2435 @heading @anchor{m88k-*-dgux}m88k-*-dgux
2436 Motorola m88k running DG/UX.  To build 88open BCS native or cross
2437 compilers on DG/UX, specify the configuration name as
2438 @samp{m88k-*-dguxbcs} and build in the 88open BCS software development
2439 environment.  To build ELF native or cross compilers on DG/UX, specify
2440 @samp{m88k-*-dgux} and build in the DG/UX ELF development environment.
2441 You set the software development environment by issuing
2442 @samp{sde-target} command and specifying either @samp{m88kbcs} or
2443 @samp{m88kdguxelf} as the operand.
2445 If you do not specify a configuration name, @file{configure} guesses the
2446 configuration based on the current software development environment.
2448 @html
2449 </p>
2450 <hr>
2451 @end html
2452 @heading @anchor{m88k-tektronix-sysv3}m88k-tektronix-sysv3
2453 Tektronix XD88 running UTekV 3.2e.  Do not turn on
2454 optimization while building stage1 if you bootstrap with
2455 the buggy Green Hills compiler.  Also, The bundled LAI
2456 System V NFS is buggy so if you build in an NFS mounted
2457 directory, start from a fresh reboot, or avoid NFS all together.
2458 Otherwise you may have trouble getting clean comparisons
2459 between stages.
2461 @html
2462 </p>
2463 <hr>
2464 @end html
2465 @heading @anchor{mips-*-*}mips-*-*
2466 If you use the 1.31 version of the MIPS assembler (such as was shipped
2467 with Ultrix 3.1), you will need to use the -fno-delayed-branch switch
2468 when optimizing floating point code.  Otherwise, the assembler will
2469 complain when the GCC compiler fills a branch delay slot with a
2470 floating point instruction, such as @code{add.d}.
2472 If on a MIPS system you get an error message saying ``does not have gp
2473 sections for all it's [sic] sectons [sic]'', don't worry about it.  This
2474 happens whenever you use GAS with the MIPS linker, but there is not
2475 really anything wrong, and it is okay to use the output file.  You can
2476 stop such warnings by installing the GNU linker.
2478 It would be nice to extend GAS to produce the gp tables, but they are
2479 optional, and there should not be a warning about their absence.
2481 Users have reported some problems with version 2.0 of the MIPS
2482 compiler tools that were shipped with Ultrix 4.1.  Version 2.10
2483 which came with Ultrix 4.2 seems to work fine.
2485 Users have also reported some problems with version 2.20 of the
2486 MIPS compiler tools that were shipped with RISC/os 4.x.  The earlier
2487 version 2.11 seems to work fine.
2489 Some versions of the MIPS linker will issue an assertion failure
2490 when linking code that uses @code{alloca} against shared
2491 libraries on RISC-OS 5.0, and DEC's OSF/1 systems.  This is a bug
2492 in the linker, that is supposed to be fixed in future revisions.
2493 To protect against this, GCC passes @samp{-non_shared} to the
2494 linker unless you pass an explicit @samp{-shared} or
2495 @samp{-call_shared} switch.
2497 @heading @anchor{mips-mips-bsd}mips-mips-bsd
2498 MIPS machines running the MIPS operating system in BSD mode.  It's
2499 possible that some old versions of the system lack the functions
2500 @code{memcpy}, @code{memmove}, @code{memcmp}, and @code{memset}.  If your
2501 system lacks these, you must remove or undo the definition of
2502 @code{TARGET_MEM_FUNCTIONS} in @file{mips-bsd.h}.
2504 The MIPS C compiler needs to be told to increase its table size
2505 for switch statements with the @samp{-Wf,-XNg1500} option in
2506 order to compile @file{cp/parse.c}.  If you use the @samp{-O2}
2507 optimization option, you also need to use @samp{-Olimit 3000}.
2508 Both of these options are automatically generated in the
2509 @file{Makefile} that the shell script @file{configure} builds.
2510 If you override the @code{CC} make variable and use the MIPS
2511 compilers, you may need to add @samp{-Wf,-XNg1500 -Olimit 3000}.
2513 @html
2514 </p>
2515 <hr>
2516 @end html
2517 @heading @anchor{mips-mips-riscos*}mips-mips-riscos*
2518 The MIPS C compiler needs to be told to increase its table size
2519 for switch statements with the @samp{-Wf,-XNg1500} option in
2520 order to compile @file{cp/parse.c}.  If you use the @samp{-O2}
2521 optimization option, you also need to use @samp{-Olimit 3000}.
2522 Both of these options are automatically generated in the
2523 @file{Makefile} that the shell script @file{configure} builds.
2524 If you override the @code{CC} make variable and use the MIPS
2525 compilers, you may need to add @samp{-Wf,-XNg1500 -Olimit 3000}.
2527 MIPS computers running RISC-OS can support four different
2528 personalities: default, BSD 4.3, System V.3, and System V.4
2529 (older versions of RISC-OS don't support V.4).  To configure GCC
2530 for these platforms use the following configurations:
2532 @table @samp
2533 @item mips-mips-riscos@code{rev}
2534 Default configuration for RISC-OS, revision @code{rev}.
2536 @item mips-mips-riscos@code{rev}bsd
2537 BSD 4.3 configuration for RISC-OS, revision @code{rev}.
2539 @item mips-mips-riscos@code{rev}sysv4
2540 System V.4 configuration for RISC-OS, revision @code{rev}.
2542 @html
2543 </p>
2544 <hr>
2545 @end html
2546 @item mips-mips-riscos@code{rev}sysv
2547 System V.3 configuration for RISC-OS, revision @code{rev}.
2548 @end table
2550 The revision @code{rev} mentioned above is the revision of
2551 RISC-OS to use.  You must reconfigure GCC when going from a
2552 RISC-OS revision 4 to RISC-OS revision 5.  This has the effect of
2553 avoiding a linker bug.
2555 @html
2556 </p>
2557 <hr>
2558 @end html
2559 @heading @anchor{mips*-sgi-irix[45]}mips*-sgi-irix[45]
2561 In order to compile GCC on an SGI running IRIX 4, the "c.hdr.lib"
2562 option must be installed from the CD-ROM supplied from Silicon Graphics.
2563 This is found on the 2nd CD in release 4.0.1.
2565 In order to compile GCC on an SGI running IRIX 5, the "compiler_dev.hdr"
2566 subsystem must be installed from the IDO CD-ROM supplied by Silicon
2567 Graphics.
2569 @code{make compare} may fail on version 5 of IRIX unless you add
2570 @samp{-save-temps} to @code{CFLAGS}.  On these systems, the name of the
2571 assembler input file is stored in the object file, and that makes
2572 comparison fail if it differs between the @code{stage1} and
2573 @code{stage2} compilations.  The option @samp{-save-temps} forces a
2574 fixed name to be used for the assembler input file, instead of a
2575 randomly chosen name in @file{/tmp}.  Do not add @samp{-save-temps}
2576 unless the comparisons fail without that option.  If you do you
2577 @samp{-save-temps}, you will have to manually delete the @samp{.i} and
2578 @samp{.s} files after each series of compilations.
2580 The MIPS C compiler needs to be told to increase its table size
2581 for switch statements with the @samp{-Wf,-XNg1500} option in
2582 order to compile @file{cp/parse.c}.  If you use the @samp{-O2}
2583 optimization option, you also need to use @samp{-Olimit 3000}.
2584 Both of these options are automatically generated in the
2585 @file{Makefile} that the shell script @file{configure} builds.
2586 If you override the @code{CC} make variable and use the MIPS
2587 compilers, you may need to add @samp{-Wf,-XNg1500 -Olimit 3000}.
2589 On Irix version 4.0.5F, and perhaps on some other versions as well,
2590 there is an assembler bug that reorders instructions incorrectly.  To
2591 work around it, specify the target configuration
2592 @samp{mips-sgi-irix4loser}.  This configuration inhibits assembler
2593 optimization.
2595 In a compiler configured with target @samp{mips-sgi-irix4}, you can turn
2596 off assembler optimization by using the @samp{-noasmopt} option.  This
2597 compiler option passes the option @samp{-O0} to the assembler, to
2598 inhibit reordering.
2600 The @samp{-noasmopt} option can be useful for testing whether a problem
2601 is due to erroneous assembler reordering.  Even if a problem does not go
2602 away with @samp{-noasmopt}, it may still be due to assembler
2603 reordering---perhaps GNU CC itself was miscompiled as a result.
2605 To enable debugging under Irix 5, you must use GNU as 2.5 or later,
2606 and use the @samp{--with-gnu-as} configure option when configuring gcc.
2607 GNU as is distributed as part of the binutils package.
2609 You must use GAS on these platforms, as the native assembler can not handle 
2610 the code for exception handling support. Either of these messages indicates 
2611 that you are using the MIPS assembler when instead you should be using GAS:
2613 @samp{  as0: Error: ./libgcc2.c, line 1:Badly delimited numeric literal
2614   .4byte $LECIE1-$LSCIE1
2615   as0: Error: ./libgcc2.c, line 1:malformed statement}
2619 @samp{  as0: Error: /src/bld-gcc/gcc/libgcc2.c, line 1:undefined symbol in expression
2620   .word $LECIE1-$LSCIE1}
2622 These systems don't have ranlib, which various components in GCC need; you
2623 should be able to avoid this problem by installing GNU binutils, which includes
2624 a functional ranlib for this system.
2626 You may get the following warning on irix4 platforms, it can be safely
2627 ignored.
2628 @example
2629   warning: foo.o does not have gp tables for all its sections.
2630 @end example
2632 When building GCC, the build process loops rebuilding cc1 over and
2633 over again.  This happens on mips-sgi-irix5.2, and possibly other platforms.@*
2634 It has been reported that this is a known bug in the make shipped with
2635 IRIX 5.2.  We recommend you use GNU make instead of the vendor supplied
2636 make program; however, you may have success with "smake" on IRIX 5.2 if
2637 you do not have GNU make available.
2639 See @uref{http://freeware.sgi.com/,,http://freeware.sgi.com/} for more
2640 information about using GCC on IRIX platforms.
2643 @html
2644 </p>
2645 <hr>
2646 @end html
2647 @heading @anchor{mips*-sgi-irix6}mips*-sgi-irix6
2649 You must @emph{not} use GAS on irix6 platforms; doing so will only
2650 cause problems.
2652 These systems don't have ranlib, which various components in GCC need; you
2653 should be able to avoid this problem by making a dummy script called ranlib
2654 which just exits with zero status and placing it in your path.
2656 If you are using Irix cc as your bootstrap compiler, you must
2657 ensure that the N32 ABI is in use.  To test this, compile a simple C
2658 file with @command{cc} and then run @command{file} on the
2659 resulting object file.  The output should look like:
2661 @example
2662 @code{    test.o: ELF N32 MSB ...}
2663 @end example
2665 If you see:
2666 @example
2667 @code{    test.o: ELF 32-bit MSB}
2668 @end example
2670 then your version of @command{cc} uses the O32 ABI default.  You
2671 should set the environment variable @env{CC} to @samp{cc -n32}
2672 before configuring GCC.
2674 GCC does not currently support generating O32 ABI binaries in the
2675 mips-sgi-irix6 configurations.  It used to be possible to create a GCC
2676 with O32 ABI only support by configuring it for the mips-sgi-irix5
2677 target.  See the link below for details.
2679 GCC does not correctly pass/return structures which are
2680 smaller than 16 bytes and which are not 8 bytes. The problem is very
2681 involved and difficult to fix. It affects a number of other targets also,
2682 but IRIX 6 is affected the most, because it is a 64 bit target, and 4 byte
2683 structures are common. The exact problem is that structures are being padded
2684 at the wrong end, e.g. a 4 byte structure is loaded into the lower 4 bytes
2685 of the register when it should be loaded into the upper 4 bytes of the
2686 register.
2688 GCC is consistent with itself, but not consistent with the SGI C compiler
2689 (and the SGI supplied runtime libraries), so the only failures that can
2690 happen are when there are library functions that take/return such
2691 structures. There are very few such library functions. I can only recall
2692 seeing two of them: inet_ntoa, and semctl.
2694 See @uref{http://freeware.sgi.com/,,http://freeware.sgi.com/} for more
2695 information about using GCC on IRIX platforms.
2698 @html
2699 </p>
2700 <hr>
2701 @end html
2702 @heading @anchor{mips-sony-sysv}mips-sony-sysv
2703 Sony MIPS NEWS.  This works in NEWSOS 5.0.1, but not in 5.0.2 (which
2704 uses ELF instead of COFF).  Support for 5.0.2 will probably be provided
2705 soon by volunteers.  In particular, the linker does not like the
2706 code generated by GCC when shared libraries are linked in.
2709 @html
2710 </p>
2711 <hr>
2712 @end html
2713 @heading @anchor{ns32k-encore}ns32k-encore
2714 Encore ns32000 system.  Encore systems are supported only under BSD.
2716 @html
2717 </p>
2718 <hr>
2719 @end html
2720 @heading @anchor{ns32k-*-genix}ns32k-*-genix
2721 National Semiconductor ns32000 system.  Genix has bugs in @code{alloca}
2722 and @code{malloc}; you must get the compiled versions of these from GNU
2723 Emacs.
2725 @html
2726 </p>
2727 <hr>
2728 @end html
2729 @heading @anchor{ns32k-sequent}ns32k-sequent
2730 Go to the Berkeley universe before compiling.
2732 @html
2733 </p>
2734 <hr>
2735 @end html
2736 @heading @anchor{ns32k-utek}ns32k-utek
2737 UTEK ns32000 system (``merlin'').  The C compiler that comes with this
2738 system cannot compile GNU CC; contact @samp{tektronix!reed!mason} to get
2739 binaries of GNU CC for bootstrapping.
2742 @html
2743 </p>
2744 <hr>
2745 @end html
2746 @heading @anchor{powerpc-*-elf}powerpc-*-elf, powerpc-*-sysv4
2747 PowerPC system in big endian mode, running System V.4.
2749 You can specify a default version for the @samp{-mcpu=}@var{cpu_type}
2750 switch by using the configure option @samp{--with-cpu-}@var{cpu_type}.
2752 @html
2753 </p>
2754 <hr>
2755 @end html
2756 @heading @anchor{powerpc-*-linux-gnu*}powerpc-*-linux-gnu*
2758 You will need 
2759 @uref{ftp://ftp.varesearch.com/pub/support/hjl/binutils,,binutils-2.9.4.0.8} 
2760 or newer for a working GCC. It is strongly recommended to recompile binutils
2761 if you initially built it with gcc-2.7.2.x.
2763 You can specify a default version for the @samp{-mcpu=}@var{cpu_type}
2764 switch by using the configure option @samp{--with-cpu-}@var{cpu_type}.
2766 @html
2767 </p>
2768 <hr>
2769 @end html
2770 @heading @anchor{powerpc-*-eabiaix}powerpc-*-eabiaix
2771 Embedded PowerPC system in big endian mode with -mcall-aix selected as
2772 the default.
2774 You can specify a default version for the @samp{-mcpu=}@var{cpu_type}
2775 switch by using the configure option @samp{--with-cpu-}@var{cpu_type}.
2777 @html
2778 </p>
2779 <hr>
2780 @end html
2781 @heading @anchor{powerpc-*-eabisim}powerpc-*-eabisim
2782 Embedded PowerPC system in big endian mode for use in running under the
2783 PSIM simulator.
2785 You can specify a default version for the @samp{-mcpu=}@var{cpu_type}
2786 switch by using the configure option @samp{--with-cpu-}@var{cpu_type}.
2788 @html
2789 </p>
2790 <hr>
2791 @end html
2792 @heading @anchor{powerpc-*-eabi}powerpc-*-eabi
2793 Embedded PowerPC system in big endian mode.
2795 You can specify a default version for the @samp{-mcpu=}@var{cpu_type}
2796 switch by using the configure option @samp{--with-cpu-}@var{cpu_type}.
2798 @html
2799 </p>
2800 <hr>
2801 @end html
2802 @heading @anchor{powerpcle-*-elf}powerpcle-*-elf, powerpcle-*-sysv4
2803 PowerPC system in little endian mode, running System V.4.
2805 You can specify a default version for the @samp{-mcpu=}@var{cpu_type}
2806 switch by using the configure option @samp{--with-cpu-}@var{cpu_type}.
2808 @html
2809 </p>
2810 <hr>
2811 @end html
2812 @heading @anchor{powerpcle-*-eabisim}powerpcle-*-eabisim
2813 Embedded PowerPC system in little endian mode for use in running under
2814 the PSIM simulator.
2816 @html
2817 </p>
2818 <hr>
2819 @end html
2820 @heading @anchor{powerpcle-*-eabi}powerpcle-*-eabi
2821 Embedded PowerPC system in little endian mode.
2823 You can specify a default version for the @samp{-mcpu=}@var{cpu_type}
2824 switch by using the configure option @samp{--with-cpu-}@var{cpu_type}.
2826 @html
2827 </p>
2828 <hr>
2829 @end html
2830 @heading @anchor{powerpcle-*-winnt}powerpcle-*-winnt, powerpcle-*-pe
2831 PowerPC system in little endian mode running Windows NT.
2833 You can specify a default version for the @samp{-mcpu=}@var{cpu_type}
2834 switch by using the configure option @samp{--with-cpu-}@var{cpu_type}.
2836 @html
2837 </p>
2838 <hr>
2839 @end html
2840 @heading @anchor{romp-*-aos}romp-*-aos, romp-*-mach
2841 The only operating systems supported for the IBM RT PC are AOS and
2842 MACH.  GNU CC does not support AIX running on the RT.  We recommend you
2843 compile GNU CC with an earlier version of itself; if you compile GNU CC
2844 with @code{hc}, the Metaware compiler, it will work, but you will get
2845 mismatches between the stage 2 and stage 3 compilers in various files.
2846 These errors are minor differences in some floating-point constants and
2847 can be safely ignored; the stage 3 compiler is correct.
2849 @html
2850 </p>
2851 <hr>
2852 @end html
2853 @heading @anchor{*-*-solaris*}*-*-solaris*
2855 Starting with Solaris, Sun does not ship a C compiler any more. To
2856 bootstrap and install GCC you first have to install a pre-built
2857 compiler, see our @uref{binaries.html,,binaries page} for
2858 details.
2860 You must use GNU Make to build GCC on Solaris 2.  If you don't have GNU
2861 Make installed, you can use the prebuilt compiler mentioned above to
2862 build it.
2864 Sun as 4.X is broken in that it cannot cope with long symbol names.
2865 A typical error message might look similar to the following:
2867 @samp{/usr/ccs/bin/as: "/var/tmp/ccMsw135.s", line 11041: 
2868 error: can't compute value of an expression involving an external symbol.}
2870 This is Sun bug 4237974.  This is fixed with patch 108908-02 and has
2871 been fixed in later (5.x) versions of the assembler.
2873 @html
2875 <hr>
2876 @end html
2877 @heading @anchor{sparc-sun-*}sparc-sun-*
2878 Sometimes on a Sun 4 you may observe a crash in the program
2879 @code{genflags} or @code{genoutput} while building GCC.  This is said to
2880 be due to a bug in @code{sh}.  You can probably get around it by running
2881 @code{genflags} or @code{genoutput} manually and then retrying the
2882 @code{make}.
2884 @html
2886 <hr>
2887 @end html
2888 @heading @anchor{sparc-sun-solaris*}sparc-sun-solaris*
2889 On Solaris 2, executables of GCC version 2.0.2 are commonly
2890 available, but they have a bug that shows up when compiling current
2891 versions of GCC: undefined symbol errors occur during assembly if you
2892 use @samp{-g}.
2894 The solution is to compile the current version of GCC without
2895 @samp{-g}.  That makes a working compiler which you can use to recompile
2896 with @samp{-g}.
2898 Solaris 2 comes with a number of optional OS packages.  Some of these
2899 packages are needed to use GCC fully.  If you did not install all
2900 optional packages when installing Solaris, you will need to verify that
2901 the packages that GCC needs are installed.
2903 To check whether an optional package is installed, use
2904 the @code{pkginfo} command.  To add an optional package, use the
2905 @code{pkgadd} command.  For further details, see the Solaris
2906 documentation.
2908 For Solaris 2.0 and 2.1, GCC needs six packages: @samp{SUNWarc},
2909 @samp{SUNWbtool}, @samp{SUNWesu}, @samp{SUNWhea}, @samp{SUNWlibm}, and
2910 @samp{SUNWtoo}.
2912 For Solaris 2.2, GCC needs an additional seventh package: @samp{SUNWsprot}.
2914 On Solaris 2, trying to use the linker and other tools in
2915 @file{/usr/ucb} to install GCC has been observed to cause trouble.
2916 For example, the linker may hang indefinitely.  The fix is to remove
2917 @file{/usr/ucb} from your @code{PATH}.
2919 binutils 2.9.1 has known bugs on this platform. We recommend to use
2920 binutils 2.10 or the vendor tools (Sun as, Sun ld).
2922 Unfortunately, C++ shared libraries, including libstdc++, won't work
2923 properly if assembled with Sun as: the linker will complain about
2924 relocations in read-only sections, in the definition of virtual
2925 tables. Also, Sun as fails to process long symbols resulting from
2926 mangling template-heavy C++ function names.
2929 @html
2930 </p>
2931 <hr>
2932 @end html
2933 @heading @anchor{sparc-sun-solaris2.7}sparc-sun-solaris2.7
2935 Sun patch 107058-01 (1999-01-13) for SPARC Solaris 7 triggers a bug in
2936 the dynamic linker.  This problem (Sun bug 4210064) affects GCC 2.8
2937 and later, including all EGCS releases.  Sun formerly recommended
2938 107058-01 for all Solaris 7 users, but around 1999-09-01 it started to
2939 recommend it only for people who use Sun's compilers.
2940   
2941 Here are some workarounds to this problem:
2942 @itemize @bullet
2943 @item
2944 Do not install Sun patch 107058-01 until after Sun releases a
2945 complete patch for bug 4210064.  This is the simplest course to take,
2946 unless you must also use Sun's C compiler.  Unfortunately 107058-01
2947 is preinstalled on some new Solaris-based hosts, so you may have to
2948 back it out.
2949   
2950 @item
2951 Copy the original, unpatched Solaris 7
2952 @command{/usr/ccs/bin/as} into
2953 @command{/usr/local/lib/gcc-lib/sparc-sun-solaris2.7/2.95.1/as},
2954 adjusting the latter name to fit your local conventions and software
2955 version numbers.
2957 @item
2958 Install Sun patch 106950-03 (1999-05-25) or later.  Nobody with
2959 both 107058-01 and 106950-03 installed has reported the bug with GCC
2960 and Sun's dynamic linker.  This last course of action is riskiest,
2961 for two reasons.  First, you must install 106950 on all hosts that
2962 run code generated by GCC; it doesn't suffice to install it only on
2963 the hosts that run GCC itself.  Second, Sun says that 106950-03 is
2964 only a partial fix for bug 4210064, but Sun doesn't know whether the
2965 partial fix is adequate for GCC.  Revision -08 or later should fix
2966 the bug, but (as of 1999-10-06) it is still being tested.
2967 @end itemize 
2970 @html
2972 <hr>
2973 <!-- ripped from the same FAQ that I answered -->
2974 @end html
2975 @heading @anchor{*-sun-solaris2.8}*-sun-solaris2.8
2977 Sun bug 4296832 turns up when compiling X11 headers with GCC 2.95 or
2978 newer:  g++ will complain that types are missing.  These headers assume
2979 that omitting the type means 'int'; this assumption worked for C89 but
2980 is wrong for C++, and is now wrong for C99 also.
2982 g++ accepts such (illegal) constructs with the option @option{-fpermissive}; it
2983 will assume that any missing type is 'int' (as defined by C89).
2985 For Solaris 8, this is fixed by revision 24 or later of patch 108652
2986 (for SPARCs) or 108653 (for Intels).
2989 @html
2991 <hr>
2992 @end html
2993 @heading @anchor{sunv5}Sun V5.0 Compiler Bugs
2995 The Sun V5.0 compilers are known to mis-compile GCC 2.95 and GCC 2.95.1,
2996 which in turn causes GCC to fail its bootstrap comparison test.
2997 GCC 2.95.2 has a workaround.
3000 @html
3001 </p>
3002 <hr>
3003 @end html
3004 @heading @anchor{sparc-sun-sunos*}sparc-sun-sunos*
3006 A bug in the SunOS4 linker will cause it to crash when linking
3007 -fPIC compiled objects (and will therefore not allow you to build
3008 shared libraries).
3010 To fix this problem you can either use the most recent version of
3011 binutils or get the latest SunOS4 linker patch (patch ID 100170-10)
3012 from Sun's patch site.
3015 @html
3016 </p>
3017 <hr>
3018 @end html
3019 @heading @anchor{sparc-unknown-linux-gnulibc1}sparc-unknown-linux-gnulibc1
3021 It has been reported that you might need 
3022 @uref{ftp://ftp.yggdrasil.com/private/hjl,,binutils-2.8.1.0.23}
3023 for this platform, too.
3026 @html
3027 </p>
3028 <hr>
3029 @end html
3030 @heading @anchor{sparc64-*-*}sparc64-*-*
3032 GCC version 2.95 is not able to compile code correctly for
3033 @code{sparc64} targets.  Users of the Linux kernel, at least,
3034 12~can use the @code{sparc32} program to start up a new shell
3035 invocation with an environment that causes @command{configure} to
3036 recognize (via @samp{uname -a}) the system as @var{sparc-*-*} instead.
3039 @html
3040 </p>
3041 <hr>
3042 @end html
3043 @heading @anchor{#*-*-sysv*}*-*-sysv*
3044 On System V release 3, you may get this error message
3045 while linking:
3047 @smallexample
3048 ld fatal: failed to write symbol name @var{something}
3049  in strings table for file @var{whatever}
3050 @end smallexample
3052 This probably indicates that the disk is full or your ULIMIT won't allow
3053 the file to be as large as it needs to be.
3055 This problem can also result because the kernel parameter @code{MAXUMEM}
3056 is too small.  If so, you must regenerate the kernel and make the value
3057 much larger.  The default value is reported to be 1024; a value of 32768
3058 is said to work.  Smaller values may also work.
3060 On System V, if you get an error like this,
3062 @example
3063 /usr/local/lib/bison.simple: In function `yyparse':
3064 /usr/local/lib/bison.simple:625: virtual memory exhausted
3065 @end example
3067 @noindent
3068 that too indicates a problem with disk space, ULIMIT, or @code{MAXUMEM}.
3070 On a System V release 4 system, make sure @file{/usr/bin} precedes
3071 @file{/usr/ucb} in @code{PATH}.  The @code{cc} command in
3072 @file{/usr/ucb} uses libraries which have bugs.
3074 @html
3075 </p>
3076 <hr>
3077 @end html
3078 @heading @anchor{vax-dec-ultrix}vax-dec-ultrix
3079 Don't try compiling with Vax C (@code{vcc}).  It produces incorrect code
3080 in some cases (for example, when @code{alloca} is used).
3082 Meanwhile, compiling @file{cp/parse.c} with pcc does not work because of
3083 an internal table size limitation in that compiler.  To avoid this
3084 problem, compile just the GNU C compiler first, and use it to recompile
3085 building all the languages that you want to run.
3087 @html
3088 </p>
3089 <hr>
3090 @end html
3091 @heading @anchor{we32k-*-*}we32k-*-*
3092 These computers are also known as the 3b2, 3b5, 3b20 and other similar
3093 names.  (However, the 3b1 is actually a 68000.)
3095 Don't use @samp{-g} when compiling with the system's compiler.  The
3096 system's linker seems to be unable to handle such a large program with
3097 debugging information.
3099 The system's compiler runs out of capacity when compiling @file{stmt.c}
3100 in GNU CC.  You can work around this by building @file{cpp} in GNU CC
3101 first, then use that instead of the system's preprocessor with the
3102 system's C compiler to compile @file{stmt.c}.  Here is how:
3104 @smallexample
3105 mv /lib/cpp /lib/cpp.att
3106 cp cpp /lib/cpp.gnu
3107 echo '/lib/cpp.gnu -traditional $@{1+"$@@"@}' > /lib/cpp
3108 chmod +x /lib/cpp
3109 @end smallexample
3111 The system's compiler produces bad code for some of the GNU CC
3112 optimization files.  So you must build the stage 2 compiler without
3113 optimization.  Then build a stage 3 compiler with optimization.
3114 That executable should work.  Here are the necessary commands:
3116 @smallexample
3117 make LANGUAGES=c CC=stage1/xgcc CFLAGS="-Bstage1/ -g"
3118 make stage2
3119 make CC=stage2/xgcc CFLAGS="-Bstage2/ -g -O"
3120 @end smallexample
3122 You may need to raise the ULIMIT setting to build a C++ compiler,
3123 as the file @file{cc1plus} is larger than one megabyte.
3125 @html
3126 </p>
3127 <hr>
3128 @end html
3129 @heading @anchor{windows}Microsoft Windows (32 bit)
3131 A port of GCC 2.95.x is included with the 
3132 @uref{http://www.cygwin.com/,,Cygwin environment}.
3134 Current (as of early 2001) snapshots of GCC will build under Cygwin
3135 without modification.
3137 @html
3138 </p>
3139 <hr>
3140 @end html
3141 @heading @anchor{os2}OS/2
3143 GCC does not currently support OS/2.  However, Andrew Zabolotny has been
3144 working on a generic OS/2 port with pgcc.  The current code code can be found
3145 at @uref{http://www.goof.com/pcg/os2/,,http://www.goof.com/pcg/os2/}.
3147 An older copy of GCC 2.8.1 is included with the EMX tools available at 
3148 @uref{ftp://ftp.leo.org/pub/comp/os/os2/leo/devtools/emx+gcc/,,
3149 ftp://ftp.leo.org/pub/comp/os/os2/leo/devtools/emx+gcc/}.
3151 @html
3152 </p>
3153 <hr>
3154 @end html
3155 @heading @anchor{older}Older systems
3157 GCC contains support files for many older (1980s and early 
3158 1990s) Unix variants.  For the most part, support for these systems 
3159 has not been deliberately removed, but it has not been maintained for 
3160 several years and may suffer from bitrot.  Support from some systems 
3161 has been removed from GCC 3: fx80, ns32-ns-genix, pyramid, tahoe, 
3162 gmicro, spur; most of these targets had not been updated since GCC 
3163 version 1.
3165 Support for older systems as targets for cross-compilation is less 
3166 problematic than support for them as hosts for GCC; if an enthusiast 
3167 wishes to make such a target work again (including resurrecting any 
3168 of the targets that never worked with GCC 2, starting from the last 
3169 CVS version before they were removed), patches 
3170 @uref{../contribute.html,,following the usual requirements} 
3171 would be likely to be accepted, since they should not affect the 
3172 support for more modern targets.
3174 Support for old systems as hosts for GCC can cause problems if the 
3175 workarounds for compiler, library and operating system bugs affect the 
3176 cleanliness or maintainability of the rest of GCC.  In some cases, to 
3177 bring GCC up on such a system, if still possible with current GCC, may 
3178 require first installing an old version of GCC which did work on that 
3179 system, and using it to compile a more recent GCC, to avoid bugs in 
3180 the vendor compiler.  Old releases of GCC 1 and GCC 2 are available in 
3181 the old-releases directory on the 
3182 @uref{../mirrors.html,,GCC mirror sites}.  Header bugs may generally 
3183 be avoided using @command{fixincludes}, but bugs or deficiencies in
3184 libraries and the operating system may still cause problems.
3186 For some systems, old versions of GNU binutils may also be useful, 
3187 and are available from pub/binutils/old-releases on 
3188 @uref{http://sources.redhat.com/mirrors.html,,sources.redhat.com mirror sites}.
3190 Some of the information on specific systems above relates to 
3191 such older systems, but much of the information 
3192 about GCC on such systems (which may no longer be applicable to 
3193 current GCC) is to be found in the GCC texinfo manual.
3195 @html
3196 </p>
3197 <hr>
3198 @end html
3199 @heading @anchor{elf_targets}all ELF targets (SVR4, Solaris, etc.)
3201 C++ support is significantly better on ELF targets if you use the
3202 @uref{./configure.html#with-gnu-ld,,GNU linker}; duplicate copies of
3203 inlines, vtables and template instantiations will be discarded
3204 automatically.
3207 @html
3208 </p>
3209 <hr>
3211 @end html
3212 @ifhtml
3213 @uref{./index.html,,Return to the GCC Installation page}
3214 @end ifhtml
3215 @end ifset
3217 @c ***************************************************************************
3218 @c Part 6 The End of the Document
3219 @ifinfo
3220 @comment node-name,     next,          previous, up
3221 @node    Concept Index, , Specific, Top
3222 @end ifinfo
3224 @ifinfo
3225 @unnumbered Concept Index
3227 @printindex cp
3229 @contents
3230 @end ifinfo
3231 @bye