--- gcc/INSTALL 2018/04/24 18:10:47 1.1.1.6 +++ gcc/INSTALL 2018/04/24 18:17:49 1.1.1.7 @@ -6,7 +6,11 @@ notice and permission notice. Installing GNU CC ***************** - Here is the procedure for installing GNU CC on a Unix system. + Here is the procedure for installing GNU CC on a Unix system. See +*Note VMS Install::, for VMS systems. In this section we assume you +compile in the same directory that contains the source files; see *Note +Other Dir::, to find out how to compile in a separate directory on Unix +systems. You cannot install GNU C by itself on MSDOS; it will not compile under any MSDOS compiler except itself. You need to get the complete @@ -24,22 +28,30 @@ and includes all the necessary compilati `/usr/ucb' in `PATH'. The `cc' command in `/usr/ucb' uses libraries which have bugs. - 3. Specify the host and target machine configurations. You do this by - running the file `configure' with appropriate arguments. + 3. Specify the host, build and target machine configurations. You do + this by running the file `configure'. + + The "build" machine is the system which you are using, the "host" + machine is the system where you want to run the resulting compiler + (normally the build machine), and the "target" machine is the + system for which you want the compiler to generate code. If you are building a compiler to produce code for the machine it - runs on, specify just one machine type, with the `--target' - option; the host type will default to be the same as the target. - (For information on building a cross-compiler, see *Note - Cross-Compiler::.) Here is an example: - - configure --target=sparc-sun-sunos4.1 - - If you run `configure' without specifying configuration arguments, - `configure' tries to guess the type of host you are on, and uses - that configuration type for both host and target. So you don't - need to specify a configuration, for building a native compiler, - unless `configure' cannot figure out what your configuration is. + runs on (a native compiler), you normally do not need to specify + any operands to `configure'; it will try to guess the type of + machine you are on and use that as the build, host and target + machines. So you don't need to specify a configuration when + building a native compiler unless `configure' cannot figure out + what your configuration is or guesses wrong. + + In those cases, specify the build machine's "configuration name" + with the `--build' option; the host and target will default to be + the same as the build machine. (If you are building a + cross-compiler, see *Note Cross-Compiler::.) + + Here is an example: + + ./configure --build=sparc-sun-sunos4.1 A configuration name may be canonical or it may be more or less abbreviated. @@ -62,64 +74,10 @@ and includes all the necessary compilati irrelevant, and will be ignored. So you might as well specify the version if you know it. - Here are the possible CPU types: - - a29k, alpha, arm, cN, clipper, elxsi, h8300, hppa1.0, hppa1.1, - i370, i386, i486, i860, i960, m68000, m68k, m88k, mips, - ns32k, pyramid, romp, rs6000, sh, sparc, sparclite, vax, - we32k. - - Here are the recognized company names. As you can see, customary - abbreviations are used rather than the longer official names. - - alliant, altos, apollo, att, bull, cbm, convergent, convex, - crds, dec, dg, dolphin, elxsi, encore, harris, hitachi, hp, - ibm, intergraph, isi, mips, motorola, ncr, next, ns, omron, - plexus, sequent, sgi, sony, sun, tti, unicom. - - The company name is meaningful only to disambiguate when the rest - of the information supplied is insufficient. You can omit it, - writing just `CPU-SYSTEM', if it is not needed. For example, - `vax-ultrix4.2' is equivalent to `vax-dec-ultrix4.2'. - - Here is a list of system types: - - aix, acis, aos, bsd, clix, ctix, dgux, dynix, genix, hpux, - isc, linux, luna, lynxos, mach, minix, newsos, osf, osfrose, - riscos, sco, solaris, sunos, sysv, ultrix, unos, vms. - - You can omit the system type; then `configure' guesses the - operating system from the CPU and company. - - You can add a version number to the system type; this may or may - not make a difference. For example, you can write `bsd4.3' or - `bsd4.4' to distinguish versions of BSD. In practice, the version - number is most needed for `sysv3' and `sysv4', which are often - treated differently. - - If you specify an impossible combination such as `i860-dg-vms', - then you may get an error message from `configure', or it may - ignore part of the information and do the best it can with the - rest. `configure' always prints the canonical name for the - alternative that it used. - - Often a particular model of machine has a name. Many machine - names are recognized as aliases for CPU/company combinations. - Thus, the machine name `sun3', mentioned above, is an alias for - `m68k-sun'. Sometimes we accept a company name as a machine name, - when the name is popularly used for a particular machine. Here is - a table of the known machine names: - - 3300, 3b1, 3bN, 7300, altos3068, altos, apollo68, att-7300, - balance, convex-cN, crds, decstation-3100, decstation, delta, - encore, fx2800, gmicro, hp7NN, hp8NN, hp9k2NN, hp9k3NN, - hp9k7NN, hp9k8NN, iris4d, iris, isi68, m3230, magnum, merlin, - miniframe, mmax, news-3600, news800, news, next, pbd, pc532, - pmax, ps2, risc-news, rtpc, sun2, sun386i, sun386, sun3, - sun4, symmetry, tower-32, tower. - - Remember that a machine name specifies both the cpu type and the - company name. + See *Note Configurations::, for a list of supported configuration + names and notes on many of the configurations. You should check + the notes in that section before proceding any further with the + installation of GNU CC. There are four additional options you can specify independently to describe variant hardware and software configurations. These are @@ -152,9 +110,9 @@ and includes all the necessary compilati `mips-ANY'). On any other system, `--with-gnu-as' has no effect. - On the systems listed above (except for the HP-PA and for ISC - on the 386), if you use GAS, you should also use the GNU - linker (and specify `--with-gnu-ld'). + On the systems listed above (except for the HP-PA, for ISC on + the 386, and for `mips-sgi-irix5.*'), if you use GAS, you + should also use the GNU linker (and specify `--with-gnu-ld'). `--with-gnu-ld' Specify the option `--with-gnu-ld' if you plan to use the GNU @@ -189,6 +147,14 @@ and includes all the necessary compilati debugging information supports C++ well; ordinary COFF debugging information does not. + `--with-stabs' is also meaningful on 386 systems running + SVR4. It selects use of stabs debugging information embedded + in ELF output. The C++ compiler currently (2.6.0) does not + support the DWARF debugging information normally used on 386 + SVR4 platforms; stabs provide a workable alternative. This + requires gas and gdb, as the normal SVR4 tools can not + generate or interpret stabs. + `--nfp' On certain systems, you must specify whether the machine has a floating point unit. These systems include @@ -196,284 +162,11 @@ and includes all the necessary compilati `--nfp' currently has no effect, though perhaps there are other systems where it could usefully make a difference. - If you want to install your own homemade configuration files, you - can use `local' as the company name to access them. If you use - configuration `CPU-local', the configuration name without the cpu - prefix is used to form the configuration file names. - - Thus, if you specify `m68k-local', configuration uses files - `local.md', `local.h', `local.c', `xm-local.h', `t-local', and - `x-local', all in the directory `config/m68k'. - - Here is a list of configurations that have special treatment or - special things you must know: - - `alpha-*-osf1' - Systems using processors that implement the DEC Alpha - architecture and are running the OSF/1 operating system, for - example the DEC Alpha AXP systems. (VMS on the Alpha is not - currently supported by GNU CC.) - - Objective C and C++ do not yet work on the Alpha. We hope to - support C++ in version 2.6. - - GNU CC writes a `.verstamp' directive to the assembler output - file unless it is built as a cross-compiler. It gets the - version to use from the system header file - `/usr/include/stamp.h'. If you install a new version of - OSF/1, you should rebuild GCC to pick up the new version - stamp. - - Note that since the Alpha is a 64-bit architecture, - cross-compilers from 32-bit machines will not generate as - efficient code as that generated when the compiler is running - on a 64-bit machine because many optimizations that depend on - being able to represent a word on the target in an integral - value on the host cannot be performed. Building - cross-compilers on the Alpha for 32-bit machines has only - been tested in a few cases and may not work properly. - - `make compare' may fail on some versions of OSF/1 unless you - add `-save-temps' to `CFLAGS'. The same problem occurs on - Irix version 5.1.1. On these systems, the name of the - assembler input file is stored in the object file, and that - makes comparison fail if it differs between the `stage1' and - `stage2' compilations. The option `-save-temps' forces a - fixed name to be used for the assembler input file, instead - of a randomly chosen name in `/tmp'. - - GNU CC now supports both the native (ECOFF) debugging format - used by DBX and GDB and an encapsulated STABS format for use - only with GDB. See the discussion of the `--with-stabs' - option of `configure' above for more information on these - formats and how to select them. - - There is a bug in DEC's assembler that produces incorrect - line numbers for ECOFF format when the `.align' directive is - used. To work around this problem, GNU CC will not emit such - alignment directives even if optimization is being performed - if it is writing ECOFF format debugging information. - Unfortunately, this has the very undesirable side-effect that - code addresses when `-O' is specified are different depending - on whether or not `-g' is also specified. - - To avoid this behavior, specify `-gstabs+' and use GDB - instead of DBX. DEC is now aware of this problem with the - assembler and hopes to provide a fix shortly. - - `a29k' - AMD Am29k-family processors. These are normally used in - embedded applications. There are no standard Unix - configurations. This configuration corresponds to AMD's - standard calling sequence and binary interface and is - compatible with other 29k tools. - - You may need to make a variant of the file `a29k.h' for your - particular configuration. - - `a29k-*-bsd' - AMD Am29050 used in a system running a variant of BSD Unix. - - `elxsi-elxsi-bsd' - The Elxsi's C compiler has known limitations that prevent it - from compiling GNU C. Please contact `mrs@cygnus.com' for - more details. - - `hppa*-*-*' - Using GAS is highly recommended for all HP-PA configurations. - See *Note PA Install:: for the special procedures needed to - compile GNU CC for the HP-PA. - - `i386-*-sco' - Compilation with RCC is recommended. Also, it may be a good - idea to link with GNU malloc instead of the malloc that comes - with the system. - - `i386-*-sco3.2.4' - Use this configuration for SCO release 3.2 version 4. - - `i386-*-isc' - It may be good idea to link with GNU malloc instead of the - malloc that comes with the system. - - `i386-*-esix' - It may be good idea to link with GNU malloc instead of the - malloc that comes with the system. - - `i386-ibm-aix' - You need to use GAS version 2.1 or later, and and LD from GNU - binutils version 2.2 or later. - - `i386-sequent' - Go to the Berkeley universe before compiling. In addition, - you probably need to create a file named `string.h' - containing just one line: `#include '. - - `i386-sun-sunos4' - You may find that you need another version of GNU CC to begin - bootstrapping with, since the current version when built with - the system's own compiler seems to get an infinite loop - compiling part of `libgcc2.c'. GNU CC version 2 compiled - with GNU CC (any version) seems not to have this problem. - - `i860-intel-osf1' - This is the Paragon. If you have version 1.0 of the - operating system, you need to take special steps to build GNU - CC due to peculiarities of the system. Newer system versions - have no problem. See the section `Installation Problems' in - the GNU CC Manual. - - `m68000-att' - AT&T 3b1, a.k.a. 7300 PC. Special procedures are needed to - compile GNU CC with this machine's standard C compiler, due - to bugs in that compiler. *Note 3b1 Install::. You can - bootstrap it more easily with previous versions of GNU CC if - you have them. - - `m68000-hp-bsd' - HP 9000 series 200 running BSD. Note that the C compiler - that comes with this system cannot compile GNU CC; contact - `law@cs.utah.edu' to get binaries of GNU CC for bootstrapping. - - `m68k-altos' - Altos 3068. You must use the GNU assembler, linker and - debugger. Also, you must fix a kernel bug. Details in the - file `README.ALTOS'. - - `m68k-bull-sysv' - Bull DPX/2 series 200 and 300 with BOS-2.00.45 up to - BOS-2.01. GNU CC works either with native assembler or GNU - assembler. You can use GNU assembler with native coff - generation by providing `--gas' to the configure script or - use GNU assembler with dbx-in-coff encapsulation by providing - `--gas --stabs'. For any problem with native assembler or for - availability of the DPX/2 port of GAS, contact - `F.Pierresteguy@frcl.bull.fr'. - - `m68k-hp-hpux' - HP 9000 series 300 or 400 running HP-UX. HP-UX version 8.0 - has a bug in the assembler that prevents compilation of GNU - CC. To fix it, get patch PHCO_0800 from HP. - - In addition, `--gas' does not currently work with this - configuration. Changes in HP-UX have broken the library - conversion tool and the linker. - - `m68k-sun' - Sun 3. We do not provide a configuration file to use the Sun - FPA by default, because programs that establish signal - handlers for floating point traps inherently cannot work with - the FPA. - - `m88k-*-svr3' - Motorola m88k running the AT&T/Unisoft/Motorola V.3 reference - port. These systems tend to use the Green Hills C, revision - 1.8.5, as the standard C compiler. There are apparently bugs - in this compiler that result in object files differences - between stage 2 and stage 3. If this happens, make the stage - 4 compiler and compare it to the stage 3 compiler. If the - stage 3 and stage 4 object files are identical, this suggests - you encountered a problem with the standard C compiler; the - stage 3 and 4 compilers may be usable. - - It is best, however, to use an older version of GNU CC for - bootstrapping if you have one. - - `m88k-*-dgux' - Motorola m88k running DG/UX. To build native or cross - compilers on DG/UX, you must first change to the 88open BCS - software development environment. This is done by issuing - this command: - - eval `sde-target m88kbcs` - - `m88k-tektronix-sysv3' - Tektronix XD88 running UTekV 3.2e. Do not turn on - optimization while building stage1 if you bootstrap with the - buggy Green Hills compiler. Also, The bundled LAI System V - NFS is buggy so if you build in an NFS mounted directory, - start from a fresh reboot, or avoid NFS all together. - Otherwise you may have trouble getting clean comparisons - between stages. - - `mips-mips-bsd' - MIPS machines running the MIPS operating system in BSD mode. - It's possible that some old versions of the system lack the - functions `memcpy', `memcmp', and `memset'. If your system - lacks these, you must remove or undo the definition of - `TARGET_MEM_FUNCTIONS' in `mips-bsd.h'. - - `mips-sgi-*' - Silicon Graphics MIPS machines running IRIX. In order to - compile GCC on an SGI the "c.hdr.lib" option must be - installed from the CD-ROM supplied from Silicon Graphics. - This is found on the 2nd CD in release 4.0.1. - - `mips-sony-sysv' - Sony MIPS NEWS. This works in NEWSOS 5.0.1, but not in 5.0.2 - (which uses ELF instead of COFF). Support for 5.0.2 will - probably be provided soon by volunteers. In particular, the - linker does not like the code generated by GCC when shared - libraries are linked in. - - `ns32k-encore' - Encore ns32000 system. Encore systems are supported only - under BSD. - - `ns32k-*-genix' - National Semiconductor ns32000 system. Genix has bugs in - `alloca' and `malloc'; you must get the compiled versions of - these from GNU Emacs. - - `ns32k-sequent' - Go to the Berkeley universe before compiling. In addition, - you probably need to create a file named `string.h' - containing just one line: `#include '. - - `ns32k-utek' - UTEK ns32000 system ("merlin"). The C compiler that comes - with this system cannot compile GNU CC; contact - `tektronix!reed!mason' to get binaries of GNU CC for - bootstrapping. - - `romp-*-aos' - `romp-*-mach' - The only operating systems supported for the IBM RT PC are - AOS and MACH. GNU CC does not support AIX running on the RT. - We recommend you compile GNU CC with an earlier version of - itself; if you compile GNU CC with `hc', the Metaware - compiler, it will work, but you will get mismatches between - the stage 2 and stage 3 compilers in various files. These - errors are minor differences in some floating-point constants - and can be safely ignored; the stage 3 compiler is correct. - - `rs6000-*-aix' - *Read the file `README.RS6000' for information on how to get - a fix for problems in the IBM assembler that interfere with - GNU CC.* You must either obtain the new assembler or avoid - using the `-g' switch. Note that `Makefile.in' uses `-g' by - default when compiling `libgcc2.c'. - - The PowerPC and POWER2 architectures are now supported, but - have not been extensively tested due to lack of appropriate - systems. Only AIX is supported on the PowerPC. - - Objective C does not work on this architecture. - - XLC version 1.3.0.0 will miscompile `jump.c'. XLC version - 1.3.0.1 or later fixes this problem. We do not yet have a - PTF number for this fix. - - `vax-dec-ultrix' - Don't try compiling with Vax C (`vcc'). It produces - incorrect code in some cases (for example, when `alloca' is - used). - - Meanwhile, compiling `cp-parse.c' with pcc does not work - because of an internal table size limitation in that - compiler. To avoid this problem, compile just the GNU C - compiler first, and use it to recompile building all the - languages that you want to run. + The `configure' script searches subdirectories of the source + directory for other compilers that are to be integrated into GNU + CC. The GNU compiler for C++, called G++ is in a subdirectory + named `cp'. `configure' inserts rules into `Makefile' to build + all of those compilers. Here we spell out what files will be set up by `configure'. Normally you need not be concerned with these files. @@ -523,15 +216,23 @@ and includes all the necessary compilati `--prefix=DIR' when you run `configure'. Here DIR is a directory name to use instead of `/usr/local' for all purposes with one exception: the directory `/usr/local/include' is searched for - header files no matter where you install the compiler. + header files no matter where you install the compiler. To override + this name, use the `--local-prefix' option below. 5. Specify `--local-prefix=DIR' if you want the compiler to search - directory `DIR/include' for header files *instead* of - `/usr/local/include'. (This is for systems that have different - conventions for where to put site-specific things.) + directory `DIR/include' for locally installed header files + *instead* of `/usr/local/include'. - Unless you have a convention other than `/usr/local' for - site-specific files, it is a bad idea to specify `--local-prefix'. + You should specify `--local-prefix' *only* if your site has a + different convention (not `/usr/local') for where to put + site-specific files. + + *Do not* specify `/usr' as the `--local-prefix'! The directory + you use for `--local-prefix' *must not* contain any of the + system's standard header files. If it did contain them, certain + programs would be miscompiled (including GNU Emacs, on certain + targets), because this would override and nullify the header file + corrections made by the `fixincludes' script. 6. Make sure the Bison parser generator is installed. (This is unnecessary if the Bison output files `c-parse.c' and `cexp.c' are @@ -564,12 +265,16 @@ and includes all the necessary compilati In general, you can specify the languages to build by typing the argument `LANGUAGES="LIST"', where LIST is one or more words from - the list `c', `c++', and `objective-c'. + the list `c', `c++', and `objective-c'. If you have any + additional GNU compilers as subdirectories of the GNU CC source + directory, you may also specify their names in this list. Ignore any warnings you may see about "statement not reached" in `insn-emit.c'; they are normal. Also, warnings about "unknown escape sequence" are normal in `genopinit.c' and perhaps some - other files. Any other compilation errors may represent bugs in + other files. Likewise, you should ignore warnings about "constant + is so large that it is unsigned" in `insn-emit.c' and + `insn-recog.c'. Any other compilation errors may represent bugs in the port to your machine or operating system, and should be investigated and reported. @@ -579,13 +284,6 @@ and includes all the necessary compilati expression space; then you need to break up the statement where the problem happens. - If you are building with a previous GNU C compiler, do not use - `CC=gcc' on the make command or by editing the Makefile. Instead, - use a full pathname to specify the compiler, such as - `CC=/usr/local/bin/gcc'. This is because make might execute the - `gcc' in the current directory before all of the compiler - components have been built. - 9. If you are building a cross-compiler, stop here. *Note Cross-Compiler::. @@ -652,13 +350,25 @@ and includes all the necessary compilati the languages to build by typing the argument `LANGUAGES="LIST"', as described above. - Then compare the latest object files with the stage 2 object + If you do not have to install any additional GNU tools, you may + use the command + + make bootstrap LANGUAGES=LANGUAGE-LIST BOOT_CFLAGS=OPTION-LIST + + instead of making `stage1', `stage2', and performing the two + compiler builds. + + 14. Then compare the latest object files with the stage 2 object files--they ought to be identical, aside from time stamps (if any). On some systems, meaningful comparison of object files is impossible; they always appear "different." This is currently true on Solaris and probably on all systems that use ELF object - file format. Some other systems where this is so are listed below. + file format. On some versions of Irix on SGI machines and OSF/1 + on Alpha systems, you will not be able to compare the files + without specifying `-save-temps'; see the description of + individual systems above to see if you get comparison failures. + You may have similar problems on other systems. Use this command to compare the files: @@ -680,19 +390,12 @@ and includes all the necessary compilati If you have built the compiler with the `-mno-mips-tfile' option on MIPS machines, you will not be able to compare the files. - The Alpha stores file names of internal temporary files in the - object files and `make compare' does not know how to ignore them, - so normally you cannot compare on the Alpha. However, if you use - the `-save-temps' option when compiling *both* stage 2 and stage - 3, this causes the same file names to be used in both stages; then - you can do the comparison. - - 14. Build the Objective C library (if you have built the Objective C + 15. Build the Objective C library (if you have built the Objective C compiler). Here is the command to do this: make objc-runtime CC="stage2/xgcc -Bstage2/" CFLAGS="-g -O" - 15. Install the compiler driver, the compiler's passes and run-time + 16. Install the compiler driver, the compiler's passes and run-time support with `make install'. Use the same value for `CC', `CFLAGS' and `LANGUAGES' that you used when compiling the files that are being installed. One reason this is necessary is that @@ -731,18 +434,721 @@ and includes all the necessary compilati or 3, since they usually run faster than the ones compiled with some other compiler.) - 16. Install the Objective C library (if you are installing the + 17. Install the Objective C library (if you are installing the Objective C compiler). Here is the command to do this: make install-libobjc CC="stage2/xgcc -Bstage2/" CFLAGS="-g -O" - 17. If you're going to use C++, it's likely that you need to also + 18. If you're going to use C++, it's likely that you need to also install the libg++ distribution. It should be available from the same place where you got the GNU C distribution. Just as GNU C does not distribute a C runtime library, it also does not include a C++ run-time library. All I/O functionality, special class libraries, etc., are available in the libg++ distribution. +Configurations Supported by GNU CC +================================== + + Here are the possible CPU types: + + 1750a, a29k, alpha, arm, cN, clipper, dsp16xx, elxsi, h8300, + hppa1.0, hppa1.1, i370, i386, i486, i860, i960, m68000, m68k, m88k, + mips, ns32k, powerpc, pyramid, romp, rs6000, sh, sparc, sparclite, + sparc64, vax, we32k. + + Here are the recognized company names. As you can see, customary +abbreviations are used rather than the longer official names. + + acorn, alliant, altos, apollo, att, bull, cbm, convergent, convex, + crds, dec, dg, dolphin, elxsi, encore, harris, hitachi, hp, ibm, + intergraph, isi, mips, motorola, ncr, next, ns, omron, plexus, + sequent, sgi, sony, sun, tti, unicom. + + The company name is meaningful only to disambiguate when the rest of +the information supplied is insufficient. You can omit it, writing +just `CPU-SYSTEM', if it is not needed. For example, `vax-ultrix4.2' +is equivalent to `vax-dec-ultrix4.2'. + + Here is a list of system types: + + 386bsd, aix, acis, amigados, aos, aout, bosx, bsd, clix, ctix, + cxux, dgux, dynix, ebmon, elf, esix, freebsd, hms, genix, gnu, + gnu/linux, hiux, hpux, iris, irix, isc, luna, lynxos, mach, minix, + msdos, mvs, netbsd, newsos, nindy, ns, osf, osfrose, ptx, riscix, + riscos, rtu, sco, solaris, sunos, sym, sysv, ultrix, unicos, + uniplus, unos, vms, vxworks, xenix. + +You can omit the system type; then `configure' guesses the operating +system from the CPU and company. + + You can add a version number to the system type; this may or may not +make a difference. For example, you can write `bsd4.3' or `bsd4.4' to +distinguish versions of BSD. In practice, the version number is most +needed for `sysv3' and `sysv4', which are often treated differently. + + If you specify an impossible combination such as `i860-dg-vms', then +you may get an error message from `configure', or it may ignore part of +the information and do the best it can with the rest. `configure' +always prints the canonical name for the alternative that it used. GNU +CC does not support all possible alternatives. + + Often a particular model of machine has a name. Many machine names +are recognized as aliases for CPU/company combinations. Thus, the +machine name `sun3', mentioned above, is an alias for `m68k-sun'. +Sometimes we accept a company name as a machine name, when the name is +popularly used for a particular machine. Here is a table of the known +machine names: + + 3300, 3b1, 3bN, 7300, altos3068, altos, apollo68, att-7300, + balance, convex-cN, crds, decstation-3100, decstation, delta, + encore, fx2800, gmicro, hp7NN, hp8NN, hp9k2NN, hp9k3NN, hp9k7NN, + hp9k8NN, iris4d, iris, isi68, m3230, magnum, merlin, miniframe, + mmax, news-3600, news800, news, next, pbd, pc532, pmax, powerpc, + ps2, risc-news, rtpc, sun2, sun386i, sun386, sun3, sun4, symmetry, + tower-32, tower. + +Remember that a machine name specifies both the cpu type and the company +name. If you want to install your own homemade configuration files, +you can use `local' as the company name to access them. If you use +configuration `CPU-local', the configuration name without the cpu prefix +is used to form the configuration file names. + + Thus, if you specify `m68k-local', configuration uses files +`m68k.md', `local.h', `m68k.c', `xm-local.h', `t-local', and `x-local', +all in the directory `config/m68k'. + + Here is a list of configurations that have special treatment or +special things you must know: + +`1750a-*-*' + MIL-STD-1750A processors. + + Starting with GCC 2.6.1, the MIL-STD-1750A cross configuration no + longer supports the Tektronix Assembler, but instead produces + output for `as1750', an assembler/linker available under the GNU + Public License for the 1750A. Contact *okellogg@salyko.cube.net* + for more details on obtaining `as1750'. A similarly licensed + simulator for the 1750A is available from same address. + + You should ignore a fatal error during the building of libgcc + (libgcc is not yet implemented for the 1750A.) + + The `as1750' assembler requires the file `ms1750.inc', which is + found in the directory `config/1750a'. + + GNU CC produced the same sections as the Fairchild F9450 C + Compiler, namely: + + `NREL' + The program code section. + + `SREL' + The read/write (RAM) data section. + + `KREL' + The read-only (ROM) constants section. + + `IREL' + Initialization section (code to copy KREL to SREL). + + The smallest addressable unit is 16 bits (BITS_PER_UNIT is 16). + This means that type `char' is represented with a 16-bit word per + character. The 1750A's "Load/Store Upper/Lower Byte" instructions + are not used by GNU CC. + + There is a problem with long argument lists to functions. The + compiler aborts if the sum of space needed by all arguments + exceeds 14 words. This is because the arguments are passed in + registers (R0..R13) not on the stack, and there is a problem with + passing further arguments (i.e. beyond those in R0..R13) via the + stack. + + If efficiency is less important than using long argument lists, you + can change the definition of the `FUNCTION_ARG' macro in + `config/1750/1750a.h' to always return zero. If you do that, GNU + CC will pass all parameters on the stack. + +`alpha-*-osf1' + Systems using processors that implement the DEC Alpha architecture + and are running the OSF/1 operating system, for example the DEC + Alpha AXP systems. (VMS on the Alpha is not currently supported + by GNU CC.) + + GNU CC writes a `.verstamp' directive to the assembler output file + unless it is built as a cross-compiler. It gets the version to + use from the system header file `/usr/include/stamp.h'. If you + install a new version of OSF/1, you should rebuild GCC to pick up + the new version stamp. + + Note that since the Alpha is a 64-bit architecture, + cross-compilers from 32-bit machines will not generate code as + efficient as that generated when the compiler is running on a + 64-bit machine because many optimizations that depend on being + able to represent a word on the target in an integral value on the + host cannot be performed. Building cross-compilers on the Alpha + for 32-bit machines has only been tested in a few cases and may + not work properly. + + `make compare' may fail on old versions of OSF/1 unless you add + `-save-temps' to `CFLAGS'. On these systems, the name of the + assembler input file is stored in the object file, and that makes + comparison fail if it differs between the `stage1' and `stage2' + compilations. The option `-save-temps' forces a fixed name to be + used for the assembler input file, instead of a randomly chosen + name in `/tmp'. Do not add `-save-temps' unless the comparisons + fail without that option. If you add `-save-temps', you will have + to manually delete the `.i' and `.s' files after each series of + compilations. + + GNU CC now supports both the native (ECOFF) debugging format used + by DBX and GDB and an encapsulated STABS format for use only with + GDB. See the discussion of the `--with-stabs' option of + `configure' above for more information on these formats and how to + select them. + + There is a bug in DEC's assembler that produces incorrect line + numbers for ECOFF format when the `.align' directive is used. To + work around this problem, GNU CC will not emit such alignment + directives while writing ECOFF format debugging information even + if optimization is being performed. Unfortunately, this has the + very undesirable side-effect that code addresses when `-O' is + specified are different depending on whether or not `-g' is also + specified. + + To avoid this behavior, specify `-gstabs+' and use GDB instead of + DBX. DEC is now aware of this problem with the assembler and + hopes to provide a fix shortly. + +`arm' + Advanced RISC Machines ARM-family processors. These are often + used in embedded applications. There are no standard Unix + configurations. This configuration corresponds to the basic + instruction sequences and will produce a.out format object modules. + + You may need to make a variant of the file `arm.h' for your + particular configuration. + +`arm-*-riscix' + The ARM2 or ARM3 processor running RISC iX, Acorn's port of BSD + Unix. If you are running a version of RISC iX prior to 1.2 then + you must specify the version number during configuration. Note + that the assembler shipped with RISC iX does not support stabs + debugging information; a new version of the assembler, with stabs + support included, is now available from Acorn. + +`a29k' + AMD Am29k-family processors. These are normally used in embedded + applications. There are no standard Unix configurations. This + configuration corresponds to AMD's standard calling sequence and + binary interface and is compatible with other 29k tools. + + You may need to make a variant of the file `a29k.h' for your + particular configuration. + +`a29k-*-bsd' + AMD Am29050 used in a system running a variant of BSD Unix. + +`decstation-*' + DECstations can support three different personalities: Ultrix, DEC + OSF/1, and OSF/rose. To configure GCC for these platforms use the + following configurations: + + `decstation-ultrix' + Ultrix configuration. + + `decstation-osf1' + Dec's version of OSF/1. + + `decstation-osfrose' + Open Software Foundation reference port of OSF/1 which uses + the OSF/rose object file format instead of ECOFF. Normally, + you would not select this configuration. + + The MIPS C compiler needs to be told to increase its table size + for switch statements with the `-Wf,-XNg1500' option in order to + compile `cp/parse.c'. If you use the `-O2' optimization option, + you also need to use `-Olimit 3000'. Both of these options are + automatically generated in the `Makefile' that the shell script + `configure' builds. If you override the `CC' make variable and + use the MIPS compilers, you may need to add `-Wf,-XNg1500 -Olimit + 3000'. + +`elxsi-elxsi-bsd' + The Elxsi's C compiler has known limitations that prevent it from + compiling GNU C. Please contact `mrs@cygnus.com' for more details. + +`dsp16xx' + A port to the AT&T DSP1610 family of processors. + +`h8300-*-*' + The calling convention and structure layout has changed in release + 2.6. All code must be recompiled. The calling convention now + passes the first three arguments in function calls in registers. + Structures are no longer a multiple of 2 bytes. + +`hppa*-*-*' + There are two variants of this CPU, called 1.0 and 1.1, which have + different machine descriptions. You must use the right one for + your machine. All 7NN machines and 8N7 machines use 1.1, while + all other 8NN machines use 1.0. + + The easiest way to handle this problem is to use `configure hpNNN' + or `configure hpNNN-hpux', where NNN is the model number of the + machine. Then `configure' will figure out if the machine is a 1.0 + or 1.1. Use `uname -a' to find out the model number of your + machine. + + `-g' does not work on HP-UX, since that system uses a peculiar + debugging format which GNU CC does not know about. However, `-g' + will work if you also use GAS and GDB in conjunction with GCC. We + highly recommend using GAS for all HP-PA configurations. + + You should be using GAS-2.3 (or later) along with GDB-4.12 (or + later). These can be retrieved from all the traditional GNU ftp + archive sites. + + Build GAS and install the resulting binary as: + + /usr/local/lib/gcc-lib/CONFIGURATION/GCCVERSION/as + + where CONFIGURATION is the configuration name (perhaps + `hpNNN-hpux') and GCCVERSION is the GNU CC version number. Do + this *before* starting the build process, otherwise you will get + errors from the HPUX assembler while building `libgcc2.a'. The + command + + make install-dir + + will create the necessary directory hierarchy so you can install + GAS before building GCC. + + To enable debugging, configure GNU CC with the `--with-gnu-as' + option before building. + + It has been reported that GNU CC produces invalid assembly code for + 1.1 machines running HP-UX 8.02 when using the HP assembler. + Typically the errors look like this: + as: bug.s @line#15 [err#1060] + Argument 0 or 2 in FARG upper + - lookahead = ARGW1=FR,RTNVAL=GR + as: foo.s @line#28 [err#1060] + Argument 0 or 2 in FARG upper + - lookahead = ARGW1=FR + + You can check the version of HP-UX you are running by executing + the command `uname -r'. If you are indeed running HP-UX 8.02 on + a PA and using the HP assembler then configure GCC with + "hpNNN-hpux8.02". + +`i370-*-*' + This port is very preliminary and has many known bugs. We hope to + have a higher-quality port for this machine soon. + +`i386-*-gnu/linux' + Bash-1.12 has a bug that causes configure to fail. The symptom is + that the c++ subdirectory, `cp', is not configured. Bash-1.14 and + later work fine. + +`i386-*-sco' + Compilation with RCC is recommended. Also, it may be a good idea + to link with GNU malloc instead of the malloc that comes with the + system. + +`i386-*-sco3.2.4' + Use this configuration for SCO release 3.2 version 4. + +`i386-*-isc' + It may be a good idea to link with GNU malloc instead of the + malloc that comes with the system. + + In ISC version 4.1, `sed' core dumps when building `deduced.h'. + Use the version of `sed' from version 4.0. + +`i386-*-esix' + It may be good idea to link with GNU malloc instead of the malloc + that comes with the system. + +`i386-ibm-aix' + You need to use GAS version 2.1 or later, and and LD from GNU + binutils version 2.2 or later. + +`i386-sequent-bsd' + Go to the Berkeley universe before compiling. In addition, you + probably need to create a file named `string.h' containing just + one line: `#include '. + +`i386-sequent-ptx1*' + Sequent DYNIX/ptx 1.x. + +`i386-sequent-ptx2*' + Sequent DYNIX/ptx 2.x. + +`i386-sun-sunos4' + You may find that you need another version of GNU CC to begin + bootstrapping with, since the current version when built with the + system's own compiler seems to get an infinite loop compiling part + of `libgcc2.c'. GNU CC version 2 compiled with GNU CC (any + version) seems not to have this problem. + + See *Note Sun Install::, for information on installing GNU CC on + Sun systems. + +`i860-intel-osf1' + This is the Paragon. If you have version 1.0 of the operating + system, you need to take special steps to build GNU CC due to + peculiarities of the system. Newer system versions have no + problem. See the section `Installation Problems' in the GNU CC + Manual. + +`m68000-hp-bsd' + HP 9000 series 200 running BSD. Note that the C compiler that + comes with this system cannot compile GNU CC; contact + `law@cs.utah.edu' to get binaries of GNU CC for bootstrapping. + +`m68k-altos' + Altos 3068. You must use the GNU assembler, linker and debugger. + Also, you must fix a kernel bug. Details in the file + `README.ALTOS'. + +`m68k-att-sysv' + AT&T 3b1, a.k.a. 7300 PC. Special procedures are needed to + compile GNU CC with this machine's standard C compiler, due to + bugs in that compiler. You can bootstrap it more easily with + previous versions of GNU CC if you have them. + + Installing GNU CC on the 3b1 is difficult if you do not already + have GNU CC running, due to bugs in the installed C compiler. + However, the following procedure might work. We are unable to + test it. + + 1. Comment out the `#include "config.h"' line on line 37 of + `cccp.c' and do `make cpp'. This makes a preliminary version + of GNU cpp. + + 2. Save the old `/lib/cpp' and copy the preliminary GNU cpp to + that file name. + + 3. Undo your change in `cccp.c', or reinstall the original + version, and do `make cpp' again. + + 4. Copy this final version of GNU cpp into `/lib/cpp'. + + 5. Replace every occurrence of `obstack_free' in the file + `tree.c' with `_obstack_free'. + + 6. Run `make' to get the first-stage GNU CC. + + 7. Reinstall the original version of `/lib/cpp'. + + 8. Now you can compile GNU CC with itself and install it in the + normal fashion. + +`m68k-bull-sysv' + Bull DPX/2 series 200 and 300 with BOS-2.00.45 up to BOS-2.01. GNU + CC works either with native assembler or GNU assembler. You can use + GNU assembler with native coff generation by providing + `--with-gnu-as' to the configure script or use GNU assembler with + dbx-in-coff encapsulation by providing `--with-gnu-as --stabs'. + For any problem with native assembler or for availability of the + DPX/2 port of GAS, contact `F.Pierresteguy@frcl.bull.fr'. + +`m68k-crds-unox' + Use `configure unos' for building on Unos. + + The Unos assembler is named `casm' instead of `as'. For some + strange reason linking `/bin/as' to `/bin/casm' changes the + behavior, and does not work. So, when installing GNU CC, you + should install the following script as `as' in the subdirectory + where the passes of GCC are installed: + + #!/bin/sh + casm $* + + The default Unos library is named `libunos.a' instead of `libc.a'. + To allow GNU CC to function, either change all references to + `-lc' in `gcc.c' to `-lunos' or link `/lib/libc.a' to + `/lib/libunos.a'. + + When compiling GNU CC with the standard compiler, to overcome bugs + in the support of `alloca', do not use `-O' when making stage 2. + Then use the stage 2 compiler with `-O' to make the stage 3 + compiler. This compiler will have the same characteristics as the + usual stage 2 compiler on other systems. Use it to make a stage 4 + compiler and compare that with stage 3 to verify proper + compilation. + + (Perhaps simply defining `ALLOCA' in `x-crds' as described in the + comments there will make the above paragraph superfluous. Please + inform us of whether this works.) + + Unos uses memory segmentation instead of demand paging, so you + will need a lot of memory. 5 Mb is barely enough if no other + tasks are running. If linking `cc1' fails, try putting the object + files into a library and linking from that library. + +`m68k-hp-hpux' + HP 9000 series 300 or 400 running HP-UX. HP-UX version 8.0 has a + bug in the assembler that prevents compilation of GNU CC. To fix + it, get patch PHCO_4484 from HP. + + In addition, if you wish to use gas `--with-gnu-as' you must use + gas version 2.1 or later, and you must use the GNU linker version + 2.1 or later. Earlier versions of gas relied upon a program which + converted the gas output into the native HP/UX format, but that + program has not been kept up to date. gdb does not understand + that native HP/UX format, so you must use gas if you wish to use + gdb. + +`m68k-sun' + Sun 3. We do not provide a configuration file to use the Sun FPA + by default, because programs that establish signal handlers for + floating point traps inherently cannot work with the FPA. + + See *Note Sun Install::, for information on installing GNU CC on + Sun systems. + +`m88k-*-svr3' + Motorola m88k running the AT&T/Unisoft/Motorola V.3 reference port. + These systems tend to use the Green Hills C, revision 1.8.5, as the + standard C compiler. There are apparently bugs in this compiler + that result in object files differences between stage 2 and stage + 3. If this happens, make the stage 4 compiler and compare it to + the stage 3 compiler. If the stage 3 and stage 4 object files are + identical, this suggests you encountered a problem with the + standard C compiler; the stage 3 and 4 compilers may be usable. + + It is best, however, to use an older version of GNU CC for + bootstrapping if you have one. + +`m88k-*-dgux' + Motorola m88k running DG/UX. To build 88open BCS native or cross + compilers on DG/UX, specify the configuration name as + `m88k-*-dguxbcs' and build in the 88open BCS software development + environment. To build ELF native or cross compilers on DG/UX, + specify `m88k-*-dgux' and build in the DG/UX ELF development + environment. You set the software development environment by + issuing `sde-target' command and specifying either `m88kbcs' or + `m88kdguxelf' as the operand. + + If you do not specify a configuration name, `configure' guesses the + configuration based on the current software development + environment. + +`m88k-tektronix-sysv3' + Tektronix XD88 running UTekV 3.2e. Do not turn on optimization + while building stage1 if you bootstrap with the buggy Green Hills + compiler. Also, The bundled LAI System V NFS is buggy so if you + build in an NFS mounted directory, start from a fresh reboot, or + avoid NFS all together. Otherwise you may have trouble getting + clean comparisons between stages. + +`mips-mips-bsd' + MIPS machines running the MIPS operating system in BSD mode. It's + possible that some old versions of the system lack the functions + `memcpy', `memcmp', and `memset'. If your system lacks these, you + must remove or undo the definition of `TARGET_MEM_FUNCTIONS' in + `mips-bsd.h'. + + The MIPS C compiler needs to be told to increase its table size + for switch statements with the `-Wf,-XNg1500' option in order to + compile `cp/parse.c'. If you use the `-O2' optimization option, + you also need to use `-Olimit 3000'. Both of these options are + automatically generated in the `Makefile' that the shell script + `configure' builds. If you override the `CC' make variable and + use the MIPS compilers, you may need to add `-Wf,-XNg1500 -Olimit + 3000'. + +`mips-mips-riscos*' + The MIPS C compiler needs to be told to increase its table size + for switch statements with the `-Wf,-XNg1500' option in order to + compile `cp/parse.c'. If you use the `-O2' optimization option, + you also need to use `-Olimit 3000'. Both of these options are + automatically generated in the `Makefile' that the shell script + `configure' builds. If you override the `CC' make variable and + use the MIPS compilers, you may need to add `-Wf,-XNg1500 -Olimit + 3000'. + + MIPS computers running RISC-OS can support four different + personalities: default, BSD 4.3, System V.3, and System V.4 (older + versions of RISC-OS don't support V.4). To configure GCC for + these platforms use the following configurations: + + `mips-mips-riscos`rev'' + Default configuration for RISC-OS, revision `rev'. + + `mips-mips-riscos`rev'bsd' + BSD 4.3 configuration for RISC-OS, revision `rev'. + + `mips-mips-riscos`rev'sysv4' + System V.4 configuration for RISC-OS, revision `rev'. + + `mips-mips-riscos`rev'sysv' + System V.3 configuration for RISC-OS, revision `rev'. + + The revision `rev' mentioned above is the revision of RISC-OS to + use. You must reconfigure GCC when going from a RISC-OS revision + 4 to RISC-OS revision 5. This has the effect of avoiding a linker + bug. + +`mips-sgi-*' + In order to compile GCC on an SGI running IRIX 4, the "c.hdr.lib" + option must be installed from the CD-ROM supplied from Silicon + Graphics. This is found on the 2nd CD in release 4.0.1. + + `make compare' may fail on version 5 of IRIX unless you add + `-save-temps' to `CFLAGS'. On these systems, the name of the + assembler input file is stored in the object file, and that makes + comparison fail if it differs between the `stage1' and `stage2' + compilations. The option `-save-temps' forces a fixed name to be + used for the assembler input file, instead of a randomly chosen + name in `/tmp'. Do not add `-save-temps' unless the comparisons + fail without that option. If you do you `-save-temps', you will + have to manually delete the `.i' and `.s' files after each series + of compilations. + + The MIPS C compiler needs to be told to increase its table size + for switch statements with the `-Wf,-XNg1500' option in order to + compile `cp/parse.c'. If you use the `-O2' optimization option, + you also need to use `-Olimit 3000'. Both of these options are + automatically generated in the `Makefile' that the shell script + `configure' builds. If you override the `CC' make variable and + use the MIPS compilers, you may need to add `-Wf,-XNg1500 -Olimit + 3000'. + + On Irix version 4.0.5F, and perhaps on some other versions as well, + there is an assembler bug that reorders instructions incorrectly. + To work around it, specify the target configuration + `mips-sgi-irix4loser'. This configuration inhibits assembler + optimization. + + In a compiler configured with target `mips-sgi-irix4', you can turn + off assembler optimization by using the `-noasmopt' option. This + compiler option passes the option `-O0' to the assembler, to + inhibit reordering. + + The `-noasmopt' option can be useful for testing whether a problem + is due to erroneous assembler reordering. Even if a problem does + not go away with `-noasmopt', it may still be due to assembler + reordering--perhaps GNU CC itself was miscompiled as a result. + + To enable debugging under Irix 5, you must use GNU as 2.5 or later, + and use the -with-gnu-as configure option when configuring gcc. + GNU as is distributed as part of the binutils package. + +`mips-sony-sysv' + Sony MIPS NEWS. This works in NEWSOS 5.0.1, but not in 5.0.2 + (which uses ELF instead of COFF). Support for 5.0.2 will probably + be provided soon by volunteers. In particular, the linker does + not like the code generated by GCC when shared libraries are + linked in. + +`ns32k-encore' + Encore ns32000 system. Encore systems are supported only under + BSD. + +`ns32k-*-genix' + National Semiconductor ns32000 system. Genix has bugs in `alloca' + and `malloc'; you must get the compiled versions of these from GNU + Emacs. + +`ns32k-sequent' + Go to the Berkeley universe before compiling. In addition, you + probably need to create a file named `string.h' containing just + one line: `#include '. + +`ns32k-utek' + UTEK ns32000 system ("merlin"). The C compiler that comes with + this system cannot compile GNU CC; contact `tektronix!reed!mason' + to get binaries of GNU CC for bootstrapping. + +`romp-*-aos' +`romp-*-mach' + The only operating systems supported for the IBM RT PC are AOS and + MACH. GNU CC does not support AIX running on the RT. We + recommend you compile GNU CC with an earlier version of itself; if + you compile GNU CC with `hc', the Metaware compiler, it will work, + but you will get mismatches between the stage 2 and stage 3 + compilers in various files. These errors are minor differences in + some floating-point constants and can be safely ignored; the stage + 3 compiler is correct. + +`rs6000-*-aix' +`powerpc-*-aix' + Various early versions of each release of the IBM XLC compiler + will not bootstrap GNU CC. Symptoms include differences between + the stage2 and stage3 object files, and errors when compiling + `libgcc.a' or `enquire'. Known problematic releases include: + xlc-1.2.1.8, xlc-1.3.0.0 (distributed with AIX 3.2.5), and + xlc-1.3.0.19. Both xlc-1.2.1.28 and xlc-1.3.0.24 (PTF 432238) are + known to produce working versions of GNU CC, but most other recent + releases correctly bootstrap GNU CC. Also, releases of AIX prior + to AIX 3.2.4 include a version of the IBM assembler which does not + accept debugging directives: assembler updates are available as + PTFs. See the file `README.RS6000' for more details on both of + these problems. + + Only AIX is supported on the PowerPC. GNU CC does not yet support + the 64-bit PowerPC instructions. + + Objective C does not work on this architecture. + + AIX on the RS/6000 provides support (NLS) for environments outside + of the United States. Compilers and assemblers use NLS to support + locale-specific representations of various objects including + floating-point numbers ("." vs "," for separating decimal + fractions). There have been problems reported where the library + linked with GNU CC does not produce the same floating-point + formats that the assembler accepts. If you have this problem, set + the LANG environment variable to "C" or "En_US". + +`vax-dec-ultrix' + Don't try compiling with Vax C (`vcc'). It produces incorrect code + in some cases (for example, when `alloca' is used). + + Meanwhile, compiling `cp/parse.c' with pcc does not work because of + an internal table size limitation in that compiler. To avoid this + problem, compile just the GNU C compiler first, and use it to + recompile building all the languages that you want to run. + +`sparc-sun-*' + See *Note Sun Install::, for information on installing GNU CC on + Sun systems. + +`vax-dec-vms' + See *Note VMS Install::, for details on how to install GNU CC on + VMS. + +`we32k-*-*' + These computers are also known as the 3b2, 3b5, 3b20 and other + similar names. (However, the 3b1 is actually a 68000; see *Note + Configurations::.) + + Don't use `-g' when compiling with the system's compiler. The + system's linker seems to be unable to handle such a large program + with debugging information. + + The system's compiler runs out of capacity when compiling `stmt.c' + in GNU CC. You can work around this by building `cpp' in GNU CC + first, then use that instead of the system's preprocessor with the + system's C compiler to compile `stmt.c'. Here is how: + + mv /lib/cpp /lib/cpp.att + cp cpp /lib/cpp.gnu + echo '/lib/cpp.gnu -traditional ${1+"$@"}' > /lib/cpp + chmod +x /lib/cpp + + The system's compiler produces bad code for some of the GNU CC + optimization files. So you must build the stage 2 compiler without + optimization. Then build a stage 3 compiler with optimization. + That executable should work. Here are the necessary commands: + + make LANGUAGES=c CC=stage1/xgcc CFLAGS="-Bstage1/ -g" + make stage2 + make CC=stage2/xgcc CFLAGS="-Bstage2/ -g -O" + + You may need to raise the ULIMIT setting to build a C++ compiler, + as the file `cc1plus' is larger than one megabyte. + Compilation in a Separate Directory =================================== @@ -777,7 +1183,7 @@ do differently: invoke it. But if you want to be sure, you can specify the source directory with the `--srcdir' option, like this: - ../gcc/configure --srcdir=../gcc sun3 + ../gcc/configure --srcdir=../gcc OTHER OPTIONS The directory you specify with `--srcdir' need not be the same as the one that `configure' is found in. @@ -804,8 +1210,8 @@ all. point emulator with which these can work, but each target machine description needs to be updated to take advantage of it. - * Cross-compilation between machines of different word sizes has not - really been addressed yet. + * Cross-compilation between machines of different word sizes is + somewhat problematic and sometimes does not work. Since GNU CC generates assembler code, you probably need a cross-assembler that GNU CC can run, in order to produce object files. @@ -842,13 +1248,13 @@ Configuring a Cross-Compiler ---------------------------- To build GNU CC as a cross-compiler, you start out by running -`configure'. You must specify two different configurations, the host -and the target. Use the `--host=HOST' option for the host and -`--target=TARGET' to specify the target type. For example, here is how -to configure for a cross-compiler that runs on a hypothetical Intel 386 -system and produces code for an HP 68030 system running BSD: +`configure'. Use the `--target=TARGET' to specify the target type. If +`configure' was unable to correctly identify the system you are running +on, also specify the `--build=BUILD' option. For example, here is how +to configure for a cross-compiler that produces code for an HP 68030 +system running BSD on a system that `configure' can correctly identify: - configure --target=m68k-hp-bsd4.3 --host=i386-bozotheclone-bsd4.3 + ./configure --target=m68k-hp-bsd4.3 Tools and Libraries for a Cross-Compiler ---------------------------------------- @@ -973,7 +1379,7 @@ cross-compiler. To do this, execute the machine: cd TARGET-BUILD-DIR - configure --host=sparc --target=sun3 + ./configure --host=sparc --target=sun3 make libgcc1.a And then this on the host machine: @@ -1078,59 +1484,6 @@ must specify a 68030 as the host when yo To install the cross-compiler, use `make install', as usual. -Installing on the HP Precision Architecture -=========================================== - - There are two variants of this CPU, called 1.0 and 1.1, which have -different machine descriptions. You must use the right one for your -machine. All 7NN machines and 8N7 machines use 1.1, while all other -8NN machines use 1.0. - - The easiest way to handle this problem is to use `configure hpNNN' -or `configure hpNNN-hpux', where NNN is the model number of the -machine. Then `configure' will figure out if the machine is a 1.0 or -1.1. Use `uname -a' to find out the model number of your machine. - - `-g' does not work on HP-UX, since that system uses a peculiar -debugging format which GNU CC does not know about. There are -preliminary versions of GAS and GDB for the HP-PA which do work with -GNU CC for debugging. You can get them by anonymous ftp from -`jaguar.cs.utah.edu' `dist' subdirectory. You would need to install -GAS in the file - - /usr/local/lib/gcc-lib/CONFIGURATION/GCCVERSION/as - -where CONFIGURATION is the configuration name (perhaps `hpNNN-hpux') -and GCCVERSION is the GNU CC version number. Do this *before* starting -the build process, otherwise you will get errors from the HPUX -assembler while building `libgcc2.a'. The command - - make install-dir - -will create the necessary directory hierarchy so you can install GAS -before building GCC. - - If you obtained GAS before October 6, 1992 it is highly recommended -you get a new one to avoid several bugs which have been discovered -recently. - - To enable debugging, configure GNU CC with the `--gas' option before -building. - - It has been reported that GNU CC produces invalid assembly code for -1.1 machines running HP-UX 8.02 when using the HP assembler. Typically -the errors look like this: - as: bug.s @line#15 [err#1060] - Argument 0 or 2 in FARG upper - - lookahead = ARGW1=FR,RTNVAL=GR - as: foo.s @line#28 [err#1060] - Argument 0 or 2 in FARG upper - - lookahead = ARGW1=FR - - You can check the version of HP-UX you are running by executing the -command `uname -r'. If you are indeed running HP-UX 8.02 on a PA and -using the HP assembler then configure GCC with "hpNNN-hpux8.02". - Installing GNU CC on the Sun ============================ @@ -1143,16 +1496,6 @@ you compile `libgcc.a'. If this option with a special startup file and would not link properly without special pains. - The GNU compiler does not really support the Super SPARC processor -that is used in SPARC Station 10 and similar class machines. You can -get code that runs by specifying `sparc' as the cpu type; however, its -performance is not very good, and may vary widely according to the -compiler version and optimization options used. This is because the -instruction scheduling parameters designed for the Sparc are not correct -for the Super SPARC. Implementing scheduling parameters for the Super -SPARC might be a good project for someone who is willing to learn a -great deal about instruction scheduling in GNU CC. - There is a bug in `alloca' in certain versions of the Sun library. To avoid this bug, install the binaries of GNU CC that were compiled by GNU CC. They use `alloca' as a built-in function and never the one in @@ -1165,68 +1508,6 @@ it by using the following command to com make CC="TERMCAP=x OBJS=x LIBFUNCS=x STAGESTUFF=x cc" -Installing GNU CC on the 3b1 -============================ - - Installing GNU CC on the 3b1 is difficult if you do not already have -GNU CC running, due to bugs in the installed C compiler. However, the -following procedure might work. We are unable to test it. - - 1. Comment out the `#include "config.h"' line on line 37 of `cccp.c' - and do `make cpp'. This makes a preliminary version of GNU cpp. - - 2. Save the old `/lib/cpp' and copy the preliminary GNU cpp to that - file name. - - 3. Undo your change in `cccp.c', or reinstall the original version, - and do `make cpp' again. - - 4. Copy this final version of GNU cpp into `/lib/cpp'. - - 5. Replace every occurrence of `obstack_free' in the file `tree.c' - with `_obstack_free'. - - 6. Run `make' to get the first-stage GNU CC. - - 7. Reinstall the original version of `/lib/cpp'. - - 8. Now you can compile GNU CC with itself and install it in the normal - fashion. - -Installing GNU CC on Unos -========================= - - Use `configure unos' for building on Unos. - - The Unos assembler is named `casm' instead of `as'. For some -strange reason linking `/bin/as' to `/bin/casm' changes the behavior, -and does not work. So, when installing GNU CC, you should install the -following script as `as' in the subdirectory where the passes of GCC -are installed: - - #!/bin/sh - casm $* - - The default Unos library is named `libunos.a' instead of `libc.a'. -To allow GNU CC to function, either change all references to `-lc' in -`gcc.c' to `-lunos' or link `/lib/libc.a' to `/lib/libunos.a'. - - When compiling GNU CC with the standard compiler, to overcome bugs in -the support of `alloca', do not use `-O' when making stage 2. Then use -the stage 2 compiler with `-O' to make the stage 3 compiler. This -compiler will have the same characteristics as the usual stage 2 -compiler on other systems. Use it to make a stage 4 compiler and -compare that with stage 3 to verify proper compilation. - - (Perhaps simply defining `ALLOCA' in `x-crds' as described in the -comments there will make the above paragraph superfluous. Please -inform us of whether this works.) - - Unos uses memory segmentation instead of demand paging, so you will -need a lot of memory. 5 Mb is barely enough if no other tasks are -running. If linking `cc1' fails, try putting the object files into a -library and linking from that library. - Installing GNU CC on VMS ======================== @@ -1432,106 +1713,6 @@ edit the file `tm.h' (created by `vmscon `QSORT_WORKAROUND' is always defined when GNU CC is compiled with VAX C, to avoid a problem in case `gcclib.olb' is not yet available. -Installing GNU CC on the WE32K -============================== - - These computers are also known as the 3b2, 3b5, 3b20 and other -similar names. (However, the 3b1 is actually a 68000; see *Note 3b1 -Install::.) - - Don't use `-g' when compiling with the system's compiler. The -system's linker seems to be unable to handle such a large program with -debugging information. - - The system's compiler runs out of capacity when compiling `stmt.c' -in GNU CC. You can work around this by building `cpp' in GNU CC first, -then use that instead of the system's preprocessor with the system's C -compiler to compile `stmt.c'. Here is how: - - mv /lib/cpp /lib/cpp.att - cp cpp /lib/cpp.gnu - echo '/lib/cpp.gnu -traditional ${1+"$@"}' > /lib/cpp - chmod +x /lib/cpp - - The system's compiler produces bad code for some of the GNU CC -optimization files. So you must build the stage 2 compiler without -optimization. Then build a stage 3 compiler with optimization. That -executable should work. Here are the necessary commands: - - make LANGUAGES=c CC=stage1/xgcc CFLAGS="-Bstage1/ -g" - make stage2 - make CC=stage2/xgcc CFLAGS="-Bstage2/ -g -O" - - You may need to raise the ULIMIT setting to build a C++ compiler, as -the file `cc1plus' is larger than one megabyte. - -Installing GNU CC on the MIPS -============================= - - See *Note Installation:: about whether to use either of the options -`--with-stabs' or `--with-gnu-as'. - - The MIPS C compiler needs to be told to increase its table size for -switch statements with the `-Wf,-XNg1500' option in order to compile -`cp-parse.c'. If you use the `-O2' optimization option, you also need -to use `-Olimit 3000'. Both of these options are automatically -generated in the `Makefile' that the shell script `configure' builds. -If you override the `CC' make variable and use the MIPS compilers, you -may need to add `-Wf,-XNg1500 -Olimit 3000'. - - MIPS computers running RISC-OS can support four different -personalities: default, BSD 4.3, System V.3, and System V.4 (older -versions of RISC-OS don't support V.4). To configure GCC for these -platforms use the following configurations: - -`mips-mips-riscos`rev'' - Default configuration for RISC-OS, revision `rev'. - -`mips-mips-riscos`rev'bsd' - BSD 4.3 configuration for RISC-OS, revision `rev'. - -`mips-mips-riscos`rev'sysv4' - System V.4 configuration for RISC-OS, revision `rev'. - -`mips-mips-riscos`rev'sysv' - System V.3 configuration for RISC-OS, revision `rev'. - - The revision `rev' mentioned above is the revision of RISC-OS to -use. You must reconfigure GCC when going from a RISC-OS revision 4 to -RISC-OS revision 5. This has the effect of avoiding a linker bug. - - DECstations can support three different personalities: Ultrix, DEC -OSF/1, and OSF/rose. To configure GCC for these platforms use the -following configurations: - -`decstation-ultrix' - Ultrix configuration. - -`decstation-osf1' - Dec's version of OSF/1. - -`decstation-osfrose' - Open Software Foundation reference port of OSF/1 which uses the - OSF/rose object file format instead of ECOFF. Normally, you would - not select this configuration. - - On Irix version 4.0.5F, and perhaps on some other versions as well, -there is an assembler bug that reorders instructions incorrectly. To -work around it, specify the target configuration `mips-sgi-irix4loser'. -This configuration inhibits assembler optimization. - - You can turn off assembler optimization in a compiler configured with -target `mips-sgi-irix4' using the `-noasmopt' option. This compiler -option passes the option `-O0' to the assembler, to inhibit reordering. - - The `-noasmopt' option can be useful for testing whether a problem -is due to erroneous assembler reordering. Even if a problem does not go -away with `-noasmopt', it may still be due to assembler -reordering--perhaps GNU CC itself was miscompiled as a result. - - We know this is inconvenient, but it's the best that can be done at -the last minute. - `collect2' ========== @@ -1548,20 +1729,28 @@ links the program a second time includin The actual calls to the constructors are carried out by a subroutine called `__main', which is called (automatically) at the beginning of -the body of `main' (provided `main' was compiled with GNU CC). +the body of `main' (provided `main' was compiled with GNU CC). Calling +`__main' is necessary, even when compiling C code, to allow linking C +and C++ object code together. (If you use `-nostdlib', you get an +unresolved reference to `__main', since it's defined in the standard +GCC library. Include `-lgcc' at the end of your compiler command line +to resolve this reference.) The program `collect2' is installed as `ld' in the directory where the passes of the compiler are installed. When `collect2' needs to find the *real* `ld', it tries the following file names: - * `gld' in the directories listed in the compiler's search + * `real-ld' in the directories listed in the compiler's search directories. - * `gld' in the directories listed in the environment variable `PATH'. + * `real-ld' in the directories listed in the environment variable + `PATH'. - * `real-ld' in the compiler's search directories. + * The file specified in the `REAL_LD_FILE_NAME' configuration macro, + if specified. - * `real-ld' in `PATH'. + * `ld' in the compiler's search directories, except that `collect2' + will not execute itself recursively. * `ld' in `PATH'. @@ -1571,36 +1760,25 @@ that you specify with `-B'. Cross-compilers search a little differently: - * `gld' in the compiler's search directories. - - * `TARGET-gld' in `PATH'. - * `real-ld' in the compiler's search directories. * `TARGET-real-ld' in `PATH'. + * The file specified in the `REAL_LD_FILE_NAME' configuration macro, + if specified. + + * `ld' in the compiler's search directories. + * `TARGET-ld' in `PATH'. - `collect2' does not search for `ld' using the compiler's search -directories, because if it did, it would find itself--not the real -`ld'--and this could lead to infinite recursion. However, the -directory where `collect2' is installed might happen to be in `PATH'. -That could lead `collect2' to invoke itself anyway. when looking for -`ld'. - - To prevent this, `collect2' explicitly avoids running `ld' using the -file name under which `collect2' itself was invoked. In fact, it -remembers up to two such names--in case one copy of `collect2' finds -another copy (or version) of `collect2' installed as `ld' in a second -place in the search path. - - If two file names to avoid are not sufficient, you may still -encounter an infinite recursion of `collect2' processes. When this -happens. check all the files installed as `ld' in any of the -directories searched, and straighten out the situation. + `collect2' explicitly avoids running `ld' using the file name under +which `collect2' itself was invoked. In fact, it remembers up a list +of such names--in case one copy of `collect2' finds another copy (or +version) of `collect2' installed as `ld' in a second place in the +search path. - (In a future version, we will probably change `collect2' to avoid -any reinvocation of a file from which any parent `collect2' was run.) + `collect2' searches for the utilities `nm' and `strip' using the +same algorithm as above for `ld'. Standard Header File Directories ================================