--- gcc/INSTALL 2018/04/24 18:17:49 1.1.1.7 +++ gcc/INSTALL 2018/04/24 18:24:09 1.1.1.8 @@ -1,7 +1,7 @@ This file documents the installation of the GNU compiler. Copyright -(C) 1988, 1989, 1992 Free Software Foundation, Inc. You may copy, -distribute, and modify it freely as long as you preserve this copyright -notice and permission notice. +(C) 1988, 1989, 1992, 1994, 1995 Free Software Foundation, Inc. You +may copy, distribute, and modify it freely as long as you preserve this +copyright notice and permission notice. Installing GNU CC ***************** @@ -76,7 +76,7 @@ and includes all the necessary compilati 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 + the notes in that section before proceeding any further with the installation of GNU CC. There are four additional options you can specify independently to @@ -106,9 +106,9 @@ and includes all the necessary compilati `i386-ANY-isc', `i860-ANY-bsd', `m68k-bull-sysv', `m68k-hp-hpux', `m68k-sony-bsd', - `m68k-altos-sysv', `m68000-hp-hpux', `m68000-att-sysv', and - `mips-ANY'). On any other system, `--with-gnu-as' has no - effect. + `m68k-altos-sysv', `m68000-hp-hpux', `m68000-att-sysv', + `ANY-lynx-lynxos', and `mips-ANY'). On any other system, + `--with-gnu-as' has no effect. 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 @@ -171,11 +171,11 @@ and includes all the necessary compilati Here we spell out what files will be set up by `configure'. Normally you need not be concerned with these files. - * A symbolic link named `config.h' is made to the top-level - config file for the machine you plan to run the compiler on - (*note The Configuration File: (gcc.info)Config.). This file - is responsible for defining information about the host - machine. It includes `tm.h'. + * A file named `config.h' is created that contains a `#include' + of the top-level config file for the machine you will run the + compiler on (*note The Configuration File: + (gcc.info)Config.). This file is responsible for defining + information about the host machine. It includes `tm.h'. The top-level config file is located in the subdirectory `config'. Its name is always `xm-SOMETHING.h'; usually @@ -185,25 +185,15 @@ and includes all the necessary compilati want to set up `config.h' to contain a `#include' command which refers to the appropriate file. - * A symbolic link named `tconfig.h' is made to the top-level - config file for your target machine. This is used for - compiling certain programs to run on that machine. + * A file named `tconfig.h' is created which includes the + top-level config file for your target machine. This is used + for compiling certain programs to run on that machine. - * A symbolic link named `tm.h' is made to the + * A file named `tm.h' is created which includes the machine-description macro file for your target machine. It should be in the subdirectory `config' and its name is often `MACHINE.h'. - * A symbolic link named `md' will be made to the machine - description pattern file. It should be in the `config' - subdirectory and its name should be `MACHINE.md'; but MACHINE - is often not the same as the name used in the `tm.h' file - because the `md' files are more general. - - * A symbolic link named `aux-output.c' will be made to the - output subroutine file for your machine. It should be in the - `config' subdirectory and its name should be `MACHINE.c'. - * The command file `configure' also constructs the file `Makefile' by adding some text to the template file `Makefile.in'. The additional text comes from files in the @@ -274,7 +264,8 @@ and includes all the necessary compilati escape sequence" are normal in `genopinit.c' and perhaps some 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 + `insn-recog.c' and a warning about a comparison always being zero + in `enquire.o'. Any other compilation errors may represent bugs in the port to your machine or operating system, and should be investigated and reported. @@ -309,7 +300,7 @@ and includes all the necessary compilati 12. Recompile the compiler with itself, with this command: - make CC="stage1/xgcc -Bstage1/" CFLAGS="-g -O" + make CC="stage1/xgcc -Bstage1/" CFLAGS="-g -O2" This is called making the stage 2 compiler. @@ -332,7 +323,7 @@ and includes all the necessary compilati you have selected a `tm.h' file that expects by default that there is no such hardware, do this instead: - make CC="stage1/xgcc -Bstage1/" CFLAGS="-g -O -msoft-float" + make CC="stage1/xgcc -Bstage1/" CFLAGS="-g -O2 -msoft-float" 13. If you wish to test the compiler by compiling it with itself one more time, install any other necessary GNU tools (such as GAS or @@ -340,7 +331,7 @@ and includes all the necessary compilati `stage1' subdirectory, then do this: make stage2 - make CC="stage2/xgcc -Bstage2/" CFLAGS="-g -O" + make CC="stage2/xgcc -Bstage2/" CFLAGS="-g -O2" This is called making the stage 3 compiler. Aside from the `-B' option, the compiler options should be the same as when you made @@ -363,12 +354,12 @@ and includes all the necessary compilati 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. 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. + true on Solaris and some systems that use ELF object file format. + On some versions of Irix on SGI machines and DEC Unix (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: @@ -390,12 +381,7 @@ 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. - 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" - - 16. Install the compiler driver, the compiler's passes and run-time + 15. 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 @@ -434,12 +420,7 @@ and includes all the necessary compilati or 3, since they usually run faster than the ones compiled with some other compiler.) - 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" - - 18. If you're going to use C++, it's likely that you need to also + 16. 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 @@ -452,9 +433,9 @@ 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. + hppa1.0, hppa1.1, i370, i386, i486, i586, i860, i960, m68000, m68k, + m88k, mips, mipsel, mips64, mips64el, ns32k, powerpc, powerpcle, + 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. @@ -462,7 +443,7 @@ abbreviations are used rather than the l 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. + sequent, sgi, sony, sun, tti, unicom, wrs. The company name is meaningful only to disambiguate when the rest of the information supplied is insufficient. You can omit it, writing @@ -471,12 +452,13 @@ 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. + 386bsd, aix, acis, amigados, aos, aout, bosx, bsd, clix, coff, + ctix, cxux, dgux, dynix, ebmon, ecoff, 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, sim, solaris, sunos, sym, sysv, + udi, ultrix, unicos, uniplus, unos, vms, vsta, vxworks, winnt, + xenix. You can omit the system type; then `configure' guesses the operating system from the CPU and company. @@ -504,8 +486,8 @@ machine names: 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. + powerpcle, 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, @@ -526,7 +508,7 @@ special things you must know: 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* + Public License for the 1750A. Contact *kellogg@space.otn.dasa.de* for more details on obtaining `as1750'. A similarly licensed simulator for the 1750A is available from same address. @@ -539,16 +521,16 @@ special things you must know: GNU CC produced the same sections as the Fairchild F9450 C Compiler, namely: - `NREL' + `Normal' The program code section. - `SREL' + `Static' The read/write (RAM) data section. - `KREL' + `Konst' The read-only (ROM) constants section. - `IREL' + `Init' Initialization section (code to copy KREL to SREL). The smallest addressable unit is 16 bits (BITS_PER_UNIT is 16). @@ -556,29 +538,17 @@ special things you must know: 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.) + and are running the DEC Unix (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. + install a new version of DEC Unix, 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 @@ -589,7 +559,7 @@ special things you must know: 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 + `make compare' may fail on old versions of DEC Unix 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' @@ -744,17 +714,26 @@ special things you must know: 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-*-linuxoldld' + Use this configuration to generate a.out binaries on Linux if you + do not have gas/binutils version 2.5.2 or later installed. This is + an obsolete configuration. + +`i386-*-linuxaout' + Use this configuration to generate a.out binaries on Linux. This + configuration is being superseded. You must use gas/binutils + version 2.5.2 or later. + +`i386-*-linux' + Use this configuration to generate ELF binaries on Linux. You must + use gas/binutils version 2.5.2 or later. `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' +`i386-*-sco3.2v4' Use this configuration for SCO release 3.2 version 4. `i386-*-isc' @@ -793,6 +772,50 @@ special things you must know: See *Note Sun Install::, for information on installing GNU CC on Sun systems. +`i[345]86-*-winnt3.5' + This version requires a GAS that has not let been released. Until + it is, you can get a prebuilt binary version via anonymous ftp from + `cs.washington.edu:pub/gnat' or `cs.nyu.edu:pub/gnat'. You must + also use the Microsoft header files from the Windows NT 3.5 SDK. + Find these on the CDROM in the `/mstools/h' directory dated + 9/4/94. You must use a fixed version of Microsoft linker made + especially for NT 3.5, which is also is available on the NT 3.5 + SDK CDROM. If you do not have this linker, can you also use the + linker from Visual C/C++ 1.0 or 2.0. + + Installing GNU CC for NT builds a wrapper linker, called `ld.exe', + which mimics the behaviour of Unix `ld' in the specification of + libraries (`-L' and `-l'). `ld.exe' looks for both Unix and + Microsoft named libraries. For example, if you specify `-lfoo', + `ld.exe' will look first for `libfoo.a' and then for `foo.lib'. + + You may install GNU CC for Windows NT in one of two ways, + depending on whether or not you have a Unix-like shell and various + Unix-like utilities. + + 1. If you do not have a Unix-like shell and few Unix-like + utilities, you will use a DOS style batch script called + `configure.bat'. Invoke it as `configure winnt' from an + MSDOS console window or from the program manager dialog box. + `configure.bat' assumes you have already installed and have + in your path a Unix-like `sed' program which is used to + create a working `Makefile' from `Makefile.in'. + + `Makefile' uses the Microsoft Nmake program maintenance + utility and the Visual C/C++ V8.00 compiler to build GNU CC. + You need only have the utilities `sed' and `touch' to use + this installation method, which only automatically builds the + compiler itself. You must then examine what `fixinc.winnt' + does, edit the header files by hand and build `libgcc.a' + manually. + + 2. The second type of installation assumes you are running a + Unix-like shell, have a complete suite of Unix-like utilities + in your path, and have a previous version of GNU CC already + installed, either through building it via the above + installation method or acquiring a pre-built binary. In this + case, use the `configure' script in the normal fashion. + `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 @@ -800,6 +823,15 @@ special things you must know: problem. See the section `Installation Problems' in the GNU CC Manual. +`*-lynx-lynxos' + LynxOS 2.2 and earlier comes with GNU CC 1.x already installed as + `/bin/gcc'. You should compile with this instead of `/bin/cc'. + You can tell GNU CC to use the GNU assembler and linker, by + specifying `--with-gnu-as --with-gnu-ld' when configuring. These + will produce COFF format object files and executables; otherwise + GNU CC will use the installed tools, which produce a.out format + executables. + `m68000-hp-bsd' HP 9000 series 200 running BSD. Note that the C compiler that comes with this system cannot compile GNU CC; contact @@ -995,6 +1027,10 @@ special things you must know: option must be installed from the CD-ROM supplied from Silicon Graphics. This is found on the 2nd CD in release 4.0.1. + In order to compile GCC on an SGI running IRIX 5, the + "compiler_dev.hdr" subsystem must be installed from the IDO CD-ROM + supplied by Silicon Graphics. + `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 @@ -1032,7 +1068,7 @@ special things you must know: 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. + and use the `--with-gnu-as' configure option when configuring gcc. GNU as is distributed as part of the binutils package. `mips-sony-sysv' @@ -1084,13 +1120,15 @@ special things you must know: 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. + PTFs. Also, if you are using AIX 3.2.5 or greater and the GNU + assembler, you must have a version modified after October 16th, + 1995 in order for the GNU C compiler to build. See the file + `README.RS6000' for more details on of these problems. - Only AIX is supported on the PowerPC. GNU CC does not yet support - the 64-bit PowerPC instructions. + GNU CC does not yet support the 64-bit PowerPC instructions. - Objective C does not work on this architecture. + Objective C does not work on this architecture because it makes + assumptions that are incompatible with the calling conventions. AIX on the RS/6000 provides support (NLS) for environments outside of the United States. Compilers and assemblers use NLS to support @@ -1101,6 +1139,58 @@ special things you must know: formats that the assembler accepts. If you have this problem, set the LANG environment variable to "C" or "En_US". + Due to changes in the way that GNU CC invokes the binder (linker) + for AIX 4.1, you may now receive warnings of duplicate symbols + from the link step that were not reported before. The assembly + files generated by GNU CC for AIX have always included multiple + symbol definitions for certain global variable and function + declarations in the original program. The warnings should not + prevent the linker from producing a correct library or runnable + executable. + +`powerpc-*-elf' +`powerpc-*-sysv4' + PowerPC system in big endian mode, running System V.4. + + This configuration is currently under development. + +`powerpc-*-eabiaix' + Embedded PowerPC system in big endian mode with -mcall-aix + selected as the default. This system is currently under + development. + +`powerpc-*-eabisim' + Embedded PowerPC system in big endian mode for use in running + under the PSIM simulator. This system is currently under + development. + +`powerpc-*-eabi' + Embedded PowerPC system in big endian mode. + + This configuration is currently under development. + +`powerpcle-*-elf' +`powerpcle-*-sysv4' + PowerPC system in little endian mode, running System V.4. + + This configuration is currently under development. + +`powerpcle-*-sysv4' + Embedded PowerPC system in little endian mode. + + This system is currently under development. + +`powerpcle-*-eabisim' + Embedded PowerPC system in little endian mode for use in running + under the PSIM simulator. + + This system is currently under development. + +`powerpcle-*-eabi' + Embedded PowerPC system in little endian mode. + + This configuration is currently under development. + `vax-dec-ultrix' Don't try compiling with Vax C (`vcc'). It produces incorrect code in some cases (for example, when `alloca' is used). @@ -1346,7 +1436,7 @@ library `libgcc1.a' that does the job it To compile `libgcc1.c' with the cross-compiler itself does not work. The functions in this file are supposed to implement arithmetic -operations that GNU CC does not know how to open code, for your target +operations that GNU CC does not know how to open code for your target machine. If these functions are compiled with GNU CC itself, they will compile into infinite recursion. @@ -1372,6 +1462,12 @@ point emulator that can be used as `libg versions will contain code to do this automatically and conveniently. That depends on whether someone wants to implement it. + Some embedded targets come with all the necessary `libgcc1.a' +routines written in C or assembler. These targets build `libgcc1.a' +automatically and you do not need to do anything special for them. +Other embedded targets do not need any `libgcc1.a' routines since all +the necessary operations are supported by the hardware. + If your target system has another C compiler, you can configure GNU CC as a native compiler on that machine, build just `libgcc1.a' with `make libgcc1.a' on that machine, and use the resulting file with the @@ -1459,18 +1555,18 @@ through the step of building stage 1. I sort of `libgcc1.a', then compilation will give up at the point where it needs that file, printing a suitable error message. If you do provide `libgcc1.a', then building the compiler will automatically -compile and link a test program called `cross-test'; if you get errors -in the linking, it means that not all of the necessary routines in -`libgcc1.a' are available. - - If you are making a cross-compiler for an embedded system, and there -is no `stdio.h' header for it, then the compilation of `enquire' will -probably fail. The job of `enquire' is to run on the target machine -and figure out by experiment the nature of its floating point -representation. `enquire' records its findings in the header file -`float.h'. If you can't produce this file by running `enquire' on the -target machine, then you will need to come up with a suitable `float.h' -in some other way (or else, avoid using it in your programs). +compile and link a test program called `libgcc1-test'; if you get +errors in the linking, it means that not all of the necessary routines +in `libgcc1.a' are available. + + You must provide the header file `float.h'. One way to do this is +to compile `enquire' and run it on your target machine. The job of +`enquire' is to run on the target machine and figure out by experiment +the nature of its floating point representation. `enquire' records its +findings in the header file `float.h'. If you can't produce this file +by running `enquire' on the target machine, then you will need to come +up with a suitable `float.h' in some other way (or else, avoid using it +in your programs). Do not try to build stage 2 for a cross-compiler. It doesn't work to rebuild GNU CC as a cross-compiler using the cross-compiler, because